From d2c757e6a454fe7821cd4519540b61c54fe9a222 Mon Sep 17 00:00:00 2001 From: Mike Tolkachev Date: Fri, 2 Aug 2024 19:26:21 +0200 Subject: [PATCH] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 74190fbbbd831cdf0f5b430471427c5611512775 Merge: e6b45ad 5fe7f05 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon May 13 15:51:31 2024 +0200 Merge pull request #259 from LedgerHQ/opreturn Allow up to 5 data pushes in OP_RETURN outputs commit 5fe7f05a063530ce6848fc194627ff712d78305b Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon May 13 14:17:03 2024 +0200 Tightened standardness checks, added more unit tests; added more comments commit a8759a628d5d48662dfa23da0eb3bbfc033393c3 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon May 6 18:41:11 2024 +0200 Update ragger snapshots commit 22358c802fe1de27c16c0a96b4e5e4358c9b6d5d Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon May 6 17:20:51 2024 +0200 Bump version 2.2.3 and update CHANGELOG commit fe4658eaa5bc025fef33531297a1d424b7ae0328 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon May 6 17:08:33 2024 +0200 Add testcases with OP_RETURN with 5 push opcodes (and delete testcase that is now supported) commit 76af9753344765e4e80989184b828ccccb25b96a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon May 6 16:22:46 2024 +0200 Allow up to 5 data pushes in OP_RETURN outputs commit e6b45adc71e7d00028e6d51132564493af37fd7e Merge: 5fd382d 69187bf Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Apr 8 10:56:16 2024 +0200 Merge pull request #255 from LedgerHQ/release-2.2.2 Prepare release 2.2.2 commit 69187bf44146fc887bcde5bc3da0fd1b6bce0502 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Apr 5 17:14:13 2024 +0200 Update with the changes of the 2.2.2 commit db1e275b959660f51dc157d23720709533d31646 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Apr 8 10:24:56 2024 +0200 Update ragger snapshots commit acdd4fcb0a621f4800d91958ebb4614225ec79e3 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Apr 5 17:13:50 2024 +0200 Bump version to 2.2.2 commit 9946f4604d2fb2bd752948e8b6ab6a0679458c91 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Apr 5 17:18:39 2024 +0200 Update (c) notices commit 5fd382d1da76913a75b7580dd8375ac5499e1b15 Merge: 0a905b1 efe8138 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Apr 8 10:02:48 2024 +0200 Merge pull request #252 from LedgerHQ/improve-ux-wording Improve wording of 'Sign transaction' UX flows. commit efe81389308654bc0dc244bfab3e721dd61b425e Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Apr 5 11:53:04 2024 +0200 Update speculos automation for JS library tests commit 4348199b42aabebe1f7e408b33976ffb96d755cd Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Apr 5 09:21:48 2024 +0200 Update ragger snapshots commit 822dc3cc990b5692ce0650e2759cfaf7aee539e2 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Apr 5 11:21:39 2024 +0200 Fix some wrong comments in UI code commit c7b2c3f2f0ceca9615500aa05f14bb69594dc69b Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Apr 5 09:21:30 2024 +0200 Update tests and ragger instructions for new UX wording commit 27aebbd9fb4fe65ce93c4b6f15ed80ec0da74769 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Apr 5 09:19:59 2024 +0200 Change wording of the transaction signature UX flows - "Approve" after each output becomes "Continue" - The " Confirm transaction" screen is removed (except for self-transfers) - The final "Accept and send" becomes "Sign transaction" commit 0a905b14e8b88109cf1aaca0e25d6cb2d4f7f055 Merge: 1ddabaf 87eb2f2 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Apr 4 15:16:27 2024 +0200 Merge pull request #250 from LedgerHQ/unspend_xpub Mark unspendable pubkeys as 'dummy' during wallet registration commit 87eb2f2a4c0287c61952c7cb71a9586bf516e76b Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Apr 4 11:55:18 2024 +0200 Add venv to .gitignore commit 161bda82adcf42bd1148afb4f67cb68a147158ba Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Apr 4 09:23:06 2024 +0200 Add/update ragger snapshots commit 1e778611c306343fcd4aa6025092969af8d0821d Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Apr 3 15:57:42 2024 +0200 Add test with unspendable taproot keypath during wallet registration commit 29b166b2ddd2f148752a1b9fe01c40fd46185793 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Apr 3 14:41:00 2024 +0200 Detect unspendable pubkeys during wallet policy registration commit 1ddabaf211b6f196b903430e42ced6dd74d4d400 Merge: 031719b f4d38ed Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Apr 3 17:12:12 2024 +0200 Merge pull request #249 from LedgerHQ/missing-return-checks Add return value checks for hash functions from the sdk commit f4d38edfcf4a2da5e55ff9813fe7d61abc6677c8 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Apr 3 16:11:22 2024 +0200 Include return value in LEDGER_ASSERTS failures commit 60a1a72349e1a7b25c12ae30e7a6ebfc33afebff Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Mar 27 16:38:15 2024 +0100 Add return value checks for hash functions from the sdk commit 031719b0271fba1bf41b6c5ed9417c90d87f88e6 Merge: 680590c f81498f Author: Sarah Gliner <105934250+sgliner-ledger@users.noreply.github.com> Date: Wed Apr 3 15:45:05 2024 +0200 Merge pull request #238 from LedgerHQ/ragger-tests Ragger tests commit f81498f371729f036104b041d784dc74fab287e6 Author: Sarah GLINER Date: Thu Mar 28 15:28:13 2024 +0100 Readme: update for tests commit a364ba5b8a94ba0086f2cf5c70c76ffc3365369c Author: Sarah GLINER Date: Thu Mar 7 17:49:52 2024 +0100 CI: use reusable workflow for ragger tests commit 64b59a06171deea7ed41951a85c0ed921a3796b2 Author: Sarah GLINER Date: Wed Mar 6 15:36:26 2024 +0100 tests: add screenshots commit de026877c718310dcd9e7a631ba46c0d03de57d7 Author: Sarah GLINER Date: Mon Mar 11 15:57:32 2024 +0100 tests: udpdate with ragger client commit c392aa12664b6e53fad818e5ea2f42d6cb556dd6 Author: Sarah GLINER Date: Thu Jan 25 10:55:40 2024 +0100 gitignore: ignore snapshots-tmp folder commit 3a9b7649e5b8ea800b14e89b875054b5fb537d8f Author: Sarah GLINER Date: Mon Jul 10 16:59:44 2023 +0200 requirements.txt: add ragger commit 8f9ba77f636662103d5eb34fa0942aa5d5d49d8b Author: Sarah GLINER Date: Thu Mar 7 10:54:44 2024 +0100 ragger_bitcoin: add ragger client commit d57c9f0719451b9093b29b5efbe507ec311c266c Author: Sarah GLINER Date: Wed Mar 6 10:42:14 2024 +0100 test_e2e: set change output to have repeatable flows commit fbf5ebd95d4c4f8bd642105126f64aa4b7ab29f5 Author: Sarah GLINER Date: Thu Feb 29 17:02:35 2024 +0100 sign_psbt: fix typo commit 680590c4d755acc365de9f73b9054d5892311e60 Merge: d32ce5f dd70eba Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Mar 27 08:56:40 2024 +0000 Merge pull request #247 from LedgerHQ/bitcoin-test-name Stax: Change homescreen Bitcoin Test to Bitcoin Testnet commit dd70eba899aac6a66d8a38ab4cad7ce4b1d76221 Author: Sarah GLINER Date: Fri Mar 22 10:40:21 2024 +0100 Stax: Change homescreen Bitcoin Test to Bitcoin Testnet commit d32ce5f0f75cb2966ff9c7e8503da87fdaed82bc Merge: f3dc84a 9ecf4f0 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Mar 20 09:36:31 2024 +0000 Merge pull request #246 from LedgerHQ/sig_deser_fix Fix wrong deserialization of yielded signatures for keypath spends in Rust client commit 9ecf4f076bc27d906dcb1ea577ac14b68cf65a91 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Mar 20 10:08:06 2024 +0100 Bump rust client version to 0.4.1 commit 35e72b0f3b8db6ed15109624e509207adff745cd Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Mar 20 09:57:52 2024 +0100 Fix wrong deserialization of yielded signatures for keypath spends commit f3dc84a729bd4442f0f451c40baf7f3e368d48a0 Merge: 2cf708e 6e49bd9 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Mar 19 08:56:45 2024 +0000 Merge pull request #244 from LedgerHQ/merge_master_develop Merge master to develop commit 6e49bd9d6786dc7603ac1c87c7d052353bd54cc5 Merge: 5424897 2cf708e Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Mar 19 08:24:11 2024 +0000 Merge branch 'develop' into merge_master_develop commit 54248972b782fbfe45e2fbbc361d2b7407349471 Merge: 0dd6dad 9abd877 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 18 16:57:54 2024 +0000 Merge pull request #243 from LedgerHQ/wrong_tapleaf_hash Fix tapleaf hash computation commit 9abd877d5e325f2e0ea2ef9197bd8e1efb2db6f9 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 18 17:23:25 2024 +0100 Bump version 2.2.1; update CHANGELOG commit 017c1a46750dba6b6642335fe8cd4a042a8e4288 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 18 17:12:46 2024 +0100 Fix key derivation in tapleaf hash computation commit 6489520ff04868c1bfd0262ff531c992dd504065 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 18 17:10:05 2024 +0100 Test for the wrong tapleaf hash computation commit 2cf708eed10207cc2d836a3bdb16a0255138d09f Merge: fbdc1fc fbab288 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 18 09:17:22 2024 +0000 Merge pull request #242 from pgrange/fix_python_client_exemple FIX python exemple commit fbab28876185f6ba298331c666110ce6f6187a3d Author: Pascal Grange Date: Wed Mar 13 16:47:28 2024 +0100 FIX python exemple `/**` at the end of a key is not allowed in a policy. commit fbdc1fcaaa189ab14382ec57a313b0cc701ed9a2 Merge: 73b3984 5c1141e Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 11 15:09:37 2024 +0100 Merge pull request #241 from LedgerHQ/check_pubkey_version Check pubkey version commit 5c1141ea27f118adf45717b902dbfe24119fc5f9 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 11 11:34:12 2024 +0100 Fix outdated docs commit f15ad85b830c1c3847c76b8d67df4296ec71f512 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 11 11:27:12 2024 +0100 Reject xpubs with the wrong BIP32 version during wallet policy registration commit a9ca537501a2f1b9c2242c177e24f22386087b83 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 11 11:25:07 2024 +0100 Add failing test with an external pubkey with the wrong pubkey version commit 73b398465d67b7aa72eadf3ade82f9728ebaf9fa Merge: 205a65a 5bcea87 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 11 10:27:16 2024 +0100 Merge pull request #237 from LedgerHQ/count_keys Refactor `count_distinct_keys_info` commit 5bcea873f6f0bc9d6abe7f7f732d3f1d6f97b575 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 11 10:25:42 2024 +0100 Nit from PR review commit 7585b2a717d6ad9e5800c231365e9685b3d2028f Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Feb 26 16:02:13 2024 +0100 Clarify TODO about path restrictions in Makefile commit a9b533dbc1f895e9fb6fecef7f556d9e69106da0 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Feb 26 15:49:40 2024 +0100 Refactor count_distinct_keys_info Adding a call to get_key_placeholder_by_index outside of the loop makes the code a lot more readable, and the extra call is not expensive enough to worry. commit 205a65a67069976efdc158bd94859e9af9f3e5b0 Merge: 4c95b0a 1d46674 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Feb 23 13:11:10 2024 +0100 Merge pull request #231 from LedgerHQ/xch/simplify-cx-calls src: Use new standalone SDK hashing functions commit 1d46674e4caf7b36bebababf877c0482049e1fab Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Feb 23 11:14:54 2024 +0100 Lint, and remove unused import commit e9772660eb2928f8fd54e754c54794146f85687f Author: Xavier Chapron Date: Wed Feb 21 14:58:18 2024 +0100 src: Use new standalone SDK hashing functions commit 4c95b0a55a54d4332433d4dbf9ef81c03475600d Merge: fc8aacf 594ecfb Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Feb 22 15:10:47 2024 +0100 Merge pull request #229 from LedgerHQ/sw5515 Handle 0x5515 status word in python client library commit 594ecfbf79536d5ccb236c36239000108f4bb711 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Feb 19 10:29:33 2024 +0100 Fix test on the status words commit 729b07fce2369baf47f457d7aa7b7197d089c862 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Feb 19 10:07:08 2024 +0100 Map both 0x5515 0x6982 to SecurityStatusNotSatisfiedError commit 2e9ea2a204451e334c4af6360aad264c88593f51 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Feb 19 09:41:23 2024 +0100 Fix wrong type annotation commit 11ae481752223265cc07bd937b8f5f9933bd5378 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Feb 19 09:41:03 2024 +0100 Add .venv folders to .gitignore commit fc8aacf41c90df31df780c9a3f51003aecfa7a5e Merge: 1b83e00 f5ce807 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Feb 21 11:57:36 2024 +0100 Merge pull request #226 from LedgerHQ/message-clear-sign Message clear sign commit f5ce80727cdfa10e98df5d048370030cad4f292a Author: Sarah GLINER Date: Mon Feb 12 12:07:12 2024 +0100 bagl_custom_streaming: decrease_streaming_index instead of reset commit ea93ac686a0869dd8fc1a1321036471aa42199b2 Author: Sarah GLINER Date: Mon Feb 12 12:07:09 2024 +0100 bagl: trick ui to display arrows for sign_message commit 8c046faf4f1bef616602446fe1bcd3025405a878 Author: Sarah GLINER Date: Fri Feb 9 12:14:03 2024 +0100 Tests: add test for sign message clear-signing commit c0f18d3ec2a939e771e7423fa40610aded3826ec Author: Sarah GLINER Date: Wed Feb 7 16:21:45 2024 +0100 sign_message: implement streaming clear-signing for readable messages commit e3f96b8a86dd749bad32b3d37df0f1559c997d74 Author: Sarah GLINER Date: Fri Feb 9 15:11:51 2024 +0100 bagl_custom_streaming: apply lint commit bd6a86773bb157e287076ecc34fe790ca31b7b8c Author: Sarah GLINER Date: Wed Feb 7 16:05:21 2024 +0100 bagl: add custom flow for streaming commit 77f5e918ae9b7438bcda214db80677625c6aa54e Author: Sarah GLINER Date: Tue Jan 9 16:18:08 2024 +0100 clean: remove useless lock check done by the SDK commit 1b83e00f9a260a5d682c274733583ef61d9d6b0f Merge: 34ba07a aa89c63 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Feb 15 10:39:37 2024 +0100 Merge pull request #227 from LedgerHQ/client-address-verification Client address verification in Python library commit aa89c639769edf7f6d384b8dbf2722867f60b03a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Feb 13 10:13:40 2024 +0100 Bump Python client version to 0.3.0 commit 16d7a202ac7f14704352da4920e7a3033c2eb384 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Feb 13 10:08:10 2024 +0100 Delete unused parts of embit commit 826d4c68059d9a2c682564c6ac63046f407c6bb4 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Feb 13 09:46:10 2024 +0100 Add support for "0" and "1" miniscript fragments in local embit clone commit 7144238f25e28c42448dca2fbded153eb00cda74 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Feb 12 16:55:05 2024 +0100 Delete local clone of bip380 commit e9ffc8d2ca6584cfa1f2f656e3d51cad9e428ecf Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Feb 12 16:54:07 2024 +0100 Use embit for client-side cross-validation of the generated addresses commit 34ba07a209d69ba10e9cb84dcf7b0bdd7818deca Merge: 0dd6dad 36f8f0b Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Feb 7 11:01:07 2024 +0100 Merge pull request #225 from LedgerHQ/appsuffix Add APPVERSION_SUFFIX in Makefile commit 36f8f0b5847f9ff8d9893657452323c77eecc55a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Feb 7 10:52:11 2024 +0100 Add APPVERSION_SUFFIX in Makefile commit 0dd6dadc5d86c850fe3dc9639f37a2d108f884b2 Merge: 4bf0556 a01fe0e Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Feb 6 17:39:25 2024 +0100 Merge pull request #224 from LedgerHQ/nanos_missing_pic Missing PIC when accessing nvram commit a01fe0e9c559feb45c867b9d221e85d7bd23aeb9 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Feb 6 17:22:04 2024 +0100 Missing PIC when accessing nvram commit 4bf0556f65f1ffc7232da3260197ca56f5989655 Merge: e5944dd bdcbe1b Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Feb 6 09:54:00 2024 +0100 Merge pull request #223 from LedgerHQ/legacy-crash Avoid app crashing on certain malformed PSBTs on legacy inputs commit bdcbe1bfe14e33b950345071a5d06508adf60002 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Feb 5 14:18:51 2024 +0100 Avoid sending a status word twice on failure, which would cause an app crash commit aac2e7a5f4c84398d0dac4df46e4379b5e2f143a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Feb 5 14:09:58 2024 +0100 Make sure that legacy inputs do not have witness-utxo in the psbt commit e5944dd4f49ed71e8672947b623b1145794b9a8a Merge: 59bd68a afc0d34 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 29 14:40:52 2024 +0100 Merge pull request #218 from LedgerHQ/release Prepare release 2.2.0 commit afc0d347dffedbd0cca5913a69b8537c191367de Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 22 13:55:56 2024 +0100 Bump version to 2.2.0. Update CHANGELOG commit 59bd68a49a6a21d66aba37b43bf8c1440d549faf Merge: 3fb299d 9d11ff8 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 29 14:21:38 2024 +0100 Merge pull request #221 from LedgerHQ/test_fixes Fix test with 512 inputs commit 9d11ff827b0d4bd39bbccda952af26f346e1b24a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 29 11:38:00 2024 +0100 Make clang static analyzer happy commit fbacb20fa90daeaaaa1cd43840f0281252951755 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 29 11:21:40 2024 +0100 Fix test with 512 inputs (make sure to avoid the high fee warning) commit db5c6d86f62db7f72885dd1d4e7d9ab7ce9b526c Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 29 10:55:38 2024 +0100 Fix txmaker incorrectly filling the psbt for taproot transactions commit 3fb299d48c7a7bf9474c067db8556d2adebec397 Merge: 34fe636 323bf42 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 29 14:09:43 2024 +0100 Merge pull request #222 from LedgerHQ/fix-processing Display: Fix processing screen not showing on nano devices commit 323bf42cb9a49ef1f999de125e981bfde679c709 Author: Sarah GLINER Date: Mon Jan 29 12:16:37 2024 +0100 Display: Fix processing screen not showing on nano devices commit 34fe6369c7f07f304d239a45b58376f6ec9e0fcf Merge: 192391c 805200a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jan 17 16:55:27 2024 +0100 Merge pull request #217 from edouardparis/client_rs-bitcoin-0.31 Use rust-bitcoin 0.31 and change version for v0.4.0 commit 805200ace316d18f12ccd66aca2bc1a259835015 Author: edouardparis Date: Wed Jan 17 11:29:23 2024 +0100 ledger_bitcoin_client v0.4.0 commit 8b7c38dec1b6ead6a95a2505a42438ade977cba0 Author: edouardparis Date: Wed Jan 17 11:28:12 2024 +0100 bump rust-bitcoin 0.31 commit 192391cc1d8d705fd8e52435819ee4668028ceca Merge: d6b3f56 0aec12c Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jan 17 15:20:32 2024 +0100 Merge pull request #216 from LedgerHQ/policy-nvram Save descriptor template to NVRAM during signing on Nano S; general data structure refactoring commit 0aec12c9a2ae3300749c1fd8628e8e9611917a6c Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jan 17 14:53:46 2024 +0100 Nits from code review commit efa7077680880bc4805578a3eb793f36dfb8398a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Dec 14 10:00:18 2023 +0100 Increase the memory limit for descriptor templates; add test for a larger miniscript policy exercising the limit on Nano S commit 3b2422eeb717ed4c9b23f9411f7a6a87beb5c981 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Jan 11 09:51:27 2024 +0100 Add nullness checks when using r_policy_node_scriptlist commit 3e62ba88b3741b26f22bfa980ccd9d66f04dbaa7 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Jan 11 09:42:06 2024 +0100 Removed untyped versions of relative pointers; improved docs, and updated unit tests commit 2631e00c725ee916d5131b2203148d3793e82c48 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jan 10 19:16:14 2024 +0100 Add null pointer check per clang static analyzer commit 55a905be292d89d55f0985b4d65044c3302f5a44 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jan 10 18:07:56 2024 +0100 Refactored policy_node_tree_t to use relative pointers commit 8d7357254998732f2fc68769650c6111faa5fb89 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jan 10 17:06:12 2024 +0100 Generalized and strenghtened relative pointers; refactored policy_node_scriptlist_t to use relative pointers commit 1bd378ab20363e5a4a226548e8d69703808e73f1 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jan 10 14:27:20 2024 +0100 Refactor: added generic macro to define types and helpers for relative pointers commit c129849ed79a5da2fef77ab0b200aeb6adb9071e Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jan 10 11:38:49 2024 +0100 Use relative pointers for key placeholders in policy; better type for pointers to scripts commit 0a6142ab9e45efa43f8d04197d69370ca30f52b2 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jan 9 14:08:39 2024 +0100 Move parsed wallet policy into nvram during signing on Nano S, in order to free memory commit d6b3f56bb0957c55a127c250074028d1d4d125c7 Merge: 82c084a 26a0818 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Dec 14 13:28:00 2023 +0100 Merge pull request #215 from LedgerHQ/sdk-updates Updates for newer SDK commit 26a0818524766bbaa07b8f61ceedae80fbf55ac1 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Dec 14 10:41:20 2023 +0100 Mark cx_sha256_update usages as 'never-failing' commit 1d8a0070ef15be04c48705cca9630aa32af650c1 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Dec 14 10:15:20 2023 +0100 Updates for newer SDK commit 82c084a1557817a09ddb243905b835cdc26663ac Merge: 835245e 1bd7607 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Dec 5 13:53:53 2023 +0000 Merge pull request #212 from LedgerHQ/shallowclone Shallow clone in custom image builder commit 1bd76072c4e5488d4feceb965dac8b2e2a63edf8 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Dec 5 14:36:25 2023 +0100 Shallow clone in custom image builder commit 835245ee9dd93f7f8aa6f2bdf16a7002059cb94d Merge: f4271f5 b6a5224 Author: François Beutin <101576048+fbeutin-ledger@users.noreply.github.com> Date: Fri Dec 1 16:57:57 2023 +0100 Merge pull request #211 from LedgerHQ/add/manifest `ledger_app.toml` manifest commit b6a522410408130c8020b6f1a8c73751445a6799 Author: Lucas PASCAL Date: Fri Dec 1 16:42:30 2023 +0100 [add] ledger_app.toml manifest commit f4271f527b69a48f74f3e8a7e3c2a4b42c0c0ce5 Merge: 207d24a f6d5f85 Author: Sarah Gliner <105934250+sgliner-ledger@users.noreply.github.com> Date: Wed Nov 15 18:02:28 2023 +0100 Merge pull request #204 from LedgerHQ/spinner-for-stax-swap swap: do not display spinner commit f6d5f85baec7b6223d4392c99f6ffff88f910293 Author: Sarah GLINER Date: Wed Nov 15 16:50:09 2023 +0100 swap: do not display spinner commit 207d24a725c177c0ff894a31cbe15f12b978743b Merge: 71f7dbe 1a03d51 Author: Sarah Gliner <105934250+sgliner-ledger@users.noreply.github.com> Date: Mon Nov 13 18:41:54 2023 +0100 Merge pull request #203 from LedgerHQ/swap-improvements Swap improvements commit 1a03d51128fce425c0e1ed231dbfa3310bc280d9 Author: Sarah GLINER Date: Mon Nov 13 13:51:39 2023 +0100 SwapError: use 0x6B00 for error status commit c25f89316fd108126f1dc6ac48f4955c65832694 Author: Sarah GLINER Date: Fri Nov 10 18:07:13 2023 +0100 sonarcloud: update workflow commit 0d5bd796190684750e9a7ebe84db9bb0a7eb80d0 Author: Sarah GLINER Date: Mon Nov 6 18:37:38 2023 +0100 swap: use dedicated error code and exit appropriately commit 71f7dbe2f8a4f62e9502a58e859a4d605f5905b6 Merge: 19d45e6 eaf496b Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Nov 10 15:27:59 2023 +0000 Merge pull request #155 from LedgerHQ/tapminiscript Tapminiscript commit eaf496b4c655a70d37867a7d7a21daf042516fbd Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Nov 10 13:59:59 2023 +0000 Nits from code review commit 84daf9b1f33840277ce1339ef0d7d6aa6d0e4459 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Nov 6 11:47:57 2023 +0000 Typos and formatting commit a8002f0587f4f64801fb17710631894093c8bf0a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Nov 2 16:38:03 2023 +0100 Increase maximum depth of the supported taptrees on non-NanoS devices; generalize corresponding test so that it adapts to the different limits commit 1015fc317ae2e4323531f231beb2677e1a95bc06 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jun 27 13:14:43 2023 +0200 Adapt miniscript unit tests to tapscript commit 4cb7dd70e7b1014d0b83ce83042e306a94c04cf5 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Apr 18 11:49:39 2023 +0200 Add set of tests on generated address for miniscripts covering all fragments commit 47e4f5ed9d639429739e685fbb94b6036c57ae47 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Apr 25 17:36:37 2023 +0200 Add tapminiscript tests commit 61077317e9af12e50982fd29ecfaef05bfa55604 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Nov 6 17:06:51 2023 +0000 Check immediately for possible error result of parse_token commit 20bca76d25a49bb8678c833648678de70bca440e Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Apr 25 17:25:50 2023 +0200 Support for tapminiscript commit 19d45e6ee0766b3ea849a03b1d112fd10f5681a5 Merge: 3dab7df a8fce7c Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Nov 3 16:09:26 2023 +0100 Merge pull request #199 from LedgerHQ/speculos-bitcoin Use image compiled the latest bitcoin-core instead of a custom fork commit a8fce7cdf4fed3c04b8805796df9e58f8cec504a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Nov 2 09:41:22 2023 +0100 Compile bitcoin-core from github instead of using a fixed release commit a743e0c9d55f52bd7d5586ce736863d177167445 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Oct 31 10:32:47 2023 +0100 Reverts 343492d6910deb48a836130a9807a69c1e165723 Now that bitcoin-core has full miniscript support, we no longer need to use a custom branch for e2e tests. commit 3dab7df84f36b12adfd377a1d4a46db5735c981e Merge: e549192 abc4c75 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Oct 31 19:54:14 2023 +0800 Merge pull request #200 from LedgerHQ/fix-ci Fix ci commit abc4c75ba4329a6feabad5148a48d2843d5bc575 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Oct 31 11:57:33 2023 +0100 Delete deprecated function commit 2505266aa7e254ef0c1ffae487c7e28ee6910b66 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Oct 31 10:40:00 2023 +0100 Delete UNUSED() macro from Makefile, as it is defined in the sdk commit e549192a89e3cce0613a7834e17e16f822dcdebd Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Oct 19 15:07:28 2023 +0800 Update README.md to mention the Rust client library commit d9f644e7a68121c6db64fdda8482bf1071e30280 Merge: a27fc18 22b6fed Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Oct 6 15:19:19 2023 +0200 Merge pull request #196 from LedgerHQ/feewarning Warn if fees are above 10% of total amount commit 22b6fed04f08bbd9bd38b87b94ae20a5bf49a7ba Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Oct 6 10:58:27 2023 +0200 Remove other OCR workarounds that are no longer necessary Also reverts 50487ed03b9c78a7b00096df414f3b0355931d28. commit 896f0dc695c843fcec8cf8cb023775ed699a61cf Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Oct 6 09:51:49 2023 +0200 Remove broken NanoX OCR workaround in test commit 1e7404b78411f461a923fdcaca9a7226117c0bac Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Oct 6 09:30:57 2023 +0200 Nits from code review commit f8d363727f2345bd20cf26ce442166c1a7a6d744 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Sep 22 10:41:46 2023 +0000 Warn if fees are above 10% of total amount commit a27fc18d7887135cb57823d222be93094dde8ef5 Merge: c95993b 56f39db Author: Sarah Gliner <105934250+sgliner-ledger@users.noreply.github.com> Date: Wed Aug 30 11:27:49 2023 +0200 Merge pull request #194 from LedgerHQ/fix-swap-screen Fix swap screen commit 56f39db8eb9a882cadeafdc2427f9eb028fc762d Author: Sarah GLINER Date: Mon Aug 28 10:08:50 2023 +0200 ci-workflows: increase timeout commit 16eb6cb88211312491b8f7fc8ae6fd134217d1b6 Author: Sarah GLINER Date: Wed Aug 23 16:31:45 2023 +0200 tests: fixes for stax commit 3c9779e658482ab5400ed65763c22b245e83f1ff Author: Sarah GLINER Date: Wed Aug 23 15:29:32 2023 +0200 Tests: temporary fix for broken LNX OCR commit d4c59ed98e885de554d2d8919cd6e7988a861f24 Author: Sarah GLINER Date: Tue Aug 22 11:42:56 2023 +0200 sign_psbt: do not display in swap mode commit c95993beaf7211d312ce49c7d6ce13259e56e6f8 Merge: b4905a4 e23604e Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Aug 10 12:04:31 2023 +0200 Merge pull request #193 from edouardparis/fix-client-rs-example fix ledger_hwi example: no duplicate keys in wallet policy commit e23604e14b90426f72c7cb81a6945ff5cfea1163 Author: edouard Date: Thu Aug 10 11:42:16 2023 +0200 bitcoin_client_rs v0.3.2 commit d08e38b677d918017cbea24d139afec31b8fc66d Author: edouard Date: Thu Aug 10 11:30:35 2023 +0200 fix ledger_hwi example: no duplicate keys in wallet policy commit b4905a4b6c1267f630dccb6eb9ae141c9a8c5fae Merge: 39aeae4 487dfeb Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Aug 3 09:24:40 2023 +0200 Merge pull request #191 from fametrano/patch-1 do not initialize Decimal from float commit 487dfebceddb62f5ea81156b2d33502e4ae93e77 Author: Ferdinando M. Ametrano Date: Wed Aug 2 23:21:40 2023 +0200 do not initialize Decimal from float this avoid warnings and prefer explicit proper initialization commit 39aeae41fcc87216085967e056756cfbbe5ceeb1 Merge: 0fd12af 795ce4a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Aug 3 09:15:42 2023 +0200 Merge pull request #190 from LedgerHQ/xch/cleanup-makefile Makefile: Cleanup following recent change in the SDK commit 795ce4a8a328190b88456b9470d90839337b0abb Author: Xavier Chapron Date: Wed Aug 2 15:52:04 2023 +0200 Makefile: Cleanup following recent change in the SDK commit 0fd12aff1cf4f624a7ba2d9c0723b2dc3e0d5d0a Merge: ab32733 89ab751 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Jul 28 11:21:58 2023 +0200 Merge pull request #189 from bitcoinerlab/new-improved-validation Replace PR #184: Validate Generated Addresses Against Expected Ones in JS Client Library commit 89ab75164584aced526498c011e1d29b16e59f10 Author: José Luis Landabaso Díaz Date: Wed Jul 26 22:45:38 2023 +0200 Fix typo commit 3e79af496ef2c104d2fdaa535ad695432ecc9c07 Author: José Luis Landabaso Díaz Date: Thu Jul 20 08:07:55 2023 +0200 Fix issue with key replacement in address derivation Revised the key replacement logic in the `validateAddress` function to prevent misinterpretation of key indices. The loop now iterates in reverse order to avoid scenarios where, for example, @10 is mistakenly replaced as @1, leaving an extra 0. This change ensures that the correct keys are replaced when deriving the wallet address. commit bd527178127c20740392b07c0acda3c68417dd42 Author: José Luis Landabaso Díaz Date: Thu Jul 20 07:36:45 2023 +0200 Addressed review comments: validate addresses at getWalletAddress and end of registerWallet; validateAddress replaces validatePolicy; bumped package version; correctly deal with format (added a test using this format); Fixed incomplete keys in registerWallet test commit 0868aa1b9256dc980e603cab6edbadf2554cce19 Author: José Luis Landabaso Díaz Date: Mon Jul 17 11:19:46 2023 +0200 Address #171: Compare generated addresses with expected ones commit ab32733d64cfd6ab0d6c25617681c22be0dd5fea Merge: a1fe503 73c385f Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jul 24 17:13:07 2023 +0200 Merge pull request #188 from LedgerHQ/checkkeys Verify that the number of keys in policy being registered is correct commit 73c385fee97c041fffe09f5163c0df5ba79a6866 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jul 24 15:16:21 2023 +0200 Verify that the number of keys in policy being registered is correct commit a1fe503105658b4b0e0e40e833a623f992f0385d Merge: f56c276 f5f86a2 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jul 19 15:10:15 2023 +0200 Merge pull request #187 from edouardparis/client_rs-fix-wallet-get_descriptor fix wallet get_descriptor commit f5f86a2ff11db80905a4fcf27655c8050dd834cb Author: edouard Date: Wed Jul 19 14:59:32 2023 +0200 bitcoin_client_rs: v0.3.1 commit e8d8ca480870adc1c8cb6b691d13b6ad673fdf47 Author: edouard Date: Wed Jul 19 14:55:43 2023 +0200 fix wallet.get_descriptor: incorrect key path Encountered this bug while registering a policy with multiple keys in a multipath descriptor. commit f56c2767c1dba718a3c14f33e45b9989204f92b9 Merge: b48582a 31f2845 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jul 19 13:32:39 2023 +0200 Merge pull request #186 from LedgerHQ/update-icon Update icon commit 31f2845543ec5eaa51f3d190e7ac459fd2fb9639 Author: Sarah GLINER Date: Mon Jul 17 17:43:58 2023 +0200 nbgl: Add safeguard for content height commit 983e3eba22e3dd69d91feb2794ceb69eadd51590 Author: Sarah GLINER Date: Mon Jul 17 09:44:31 2023 +0200 icons: update with new design for stax commit b48582ae03995dcf96df6c5d7bd2189af408b18a Merge: 238c9ff b152076 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jul 19 13:31:41 2023 +0200 Merge pull request #185 from LedgerHQ/unserialized_pubkeys Improve pubkey memory management commit b152076662b62faf523529bd8bba7057c218051c Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jul 18 09:56:28 2023 +0200 Add mock for crypto_get_checksum in order to fix wallet.c unit tests commit 12c94a4abcbef60ced49674f7b96e99427907665 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jul 17 17:23:48 2023 +0200 Verify xpub checksum after decoding commit aa7f6e5235a56372f8957ea856db2cd16cdb4371 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jul 17 16:46:04 2023 +0200 Represent xpubs in binary rather than base58-serialized commit 238c9ff794ebcefb50841e99a83cc7b6d5c0da55 Merge: f292967 4d71452 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jul 18 10:30:27 2023 +0200 Merge pull request #183 from edouardparis/bitcoin-0.30 bump bitcoin-0.30 and miniscript-10.0 commit 4d71452ee6d4e6ae064781f0725518a26cecc1d6 Author: edouard Date: Tue Jul 11 14:58:10 2023 +0200 bitcoin_client_rs: v0.3.0 commit f581abf9d0eaa2d15ac47d9d51ba24baec1cf6b1 Author: edouard Date: Wed Jul 12 10:05:10 2023 +0200 fix std import in wallet commit e3b502e61cd553e12d961e26c490a8ccebcc1bbf Author: edouard Date: Mon Jul 10 20:17:46 2023 +0200 bump bitcoin-0.30 and miniscript-10.0 commit f292967c2d4e6a611c08d33c469e915bd12f3f42 Merge: 0cf8c4d da36777 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Jul 13 10:39:38 2023 +0200 Merge pull request #182 from LedgerHQ/standardwallets Improve and refactor logic for standard wallet checking commit da36777af4d286f982409efd2d1e392e7d34efae Merge: 17b84ab 0cf8c4d Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Jul 13 10:33:45 2023 +0200 Merge branch 'develop' into standardwallets commit 17b84ab78d07922281f06818bb7dc0c2b65833ca Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jul 10 10:42:49 2023 +0200 Update docs for wallet policies, particularly for taproot scripts commit 8318c44ea9176179957da2d73337d4e6fe81d223 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Jul 7 17:39:30 2023 +0200 Improve and refactor standardness check for wallet policies commit b9595360bd0b1aecd1a1067149fe6be8b0f97cc4 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Jul 6 16:38:33 2023 +0200 Rename 'canonical wallet' to 'default wallet' for consistency with the docs commit 0cf8c4d3ad06c157aef33dbafee06c03573058cb Merge: dbf79fa 203b5d6 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Jul 7 17:47:33 2023 +0200 Merge pull request #181 from kewde/patch-1 fix: repo in package.json commit 2eb138c2fafa2a9e84049f9cb4bb269dcee9c856 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Jul 6 15:58:57 2023 +0200 Add additional tests for non-standard policies in get_wallet_address commit 203b5d67cc67c06dd96c5213694cadd0fd39fc96 Author: Kewde Date: Fri Jul 7 17:38:25 2023 +0200 fix: repo in package.json commit dbf79fa2a9c9bb25965d6258ed1d509e3ae7eea6 Merge: 1f1a2e5 5801629 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jul 4 09:25:23 2023 +0200 Merge pull request #179 from LedgerHQ/fbe/add_spinner_at_exchange_start Add a spinner when starting in Exchange mode on Stax commit 58016296852af3512090ed6aecca219bfeeb4f48 Author: Francois Beutin Date: Mon Jul 3 18:57:28 2023 +0200 Add a spinner when starting in Exchange mode on Stax commit 1f1a2e55dd5d683097e359a916336421a5f53697 Merge: 656087b 07504f4 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jun 27 14:59:32 2023 +0200 Merge pull request #178 from LedgerHQ/depth-error Always check return value of state_stack_push commit 07504f4eb3df3e8f309cb9136576326c31fafd2c Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jun 27 14:38:14 2023 +0200 Add __attribute__((warn_unused_result)) to most functions in policy.c/policy.h; added an additional missing return value check commit c30d0d7f0ee87511d657339ff524c785f5e64130 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jun 27 14:07:20 2023 +0200 Always check return value of state_stack_push commit 656087b6418963137d76b6a095c17c3c74ee7a08 Merge: e70166b b2055a5 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jun 26 15:23:46 2023 +0200 Merge pull request #176 from LedgerHQ/revert-175-revert-170-fbe/return_in_exchange_after_swap Reinstate "Return in Exchange after a valid swap" commit e70166b5493d5e907e2a8b12523c1b4022afdc0a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jun 26 14:59:39 2023 +0200 Bump version 0.2.2 for both the Python and JS client libraries commit b2055a521c696d64a9b8d55f5fa6a51ef88236e6 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jun 26 10:26:30 2023 +0200 Revert "Revert "Return in Exchange after a valid swap"" commit f83a4e77fec41827cd2590a648662e4219aead75 Merge: d8f8b1a 36c6911 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jun 21 14:39:44 2023 +0200 Merge pull request #174 from LedgerHQ/release-2.1.3 Bump version 2.1.3; update CHANGELOG commit 36c6911e997902e575b2975faa87f252165af3ca Merge: c585930 d8f8b1a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jun 21 14:03:20 2023 +0200 Merge branch 'develop' into release-2.1.3 commit d8f8b1a23db495715b7b4a9d470747faf3c7bb6f Merge: 2338428 695b019 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jun 21 14:02:17 2023 +0200 Merge pull request #175 from LedgerHQ/revert-170-fbe/return_in_exchange_after_swap Revert "Return in Exchange after a valid swap" commit 695b0194bb823168804d074441d4e253514ef961 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jun 21 13:54:00 2023 +0200 Revert "Return in Exchange after a valid swap" commit c585930450853d792c2d3e529925418a4fa50f73 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jun 21 11:55:18 2023 +0200 Bump version 2.1.3; update CHANGELOG commit 233842877b2b3a2b6aae6dc94a1e01bbc26ee627 Merge: 00d55dd ea2e273 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jun 21 11:39:42 2023 +0200 Merge pull request #173 from LedgerHQ/109-selftransfers Add special wording for self-transfers commit ea2e273154028f349a2613425ea142c72af0d223 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jun 21 10:03:13 2023 +0200 Avoid code duplication for self-transfers UI commit b22692b7cc2c8d743ea211886bceedb17010344a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jun 19 13:28:25 2023 +0200 Add special wording for self-transfers commit 00d55ddaad64be655f4c5095afe0c117ebb730b9 Merge: f1d379a 10bd373 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jun 19 13:30:50 2023 +0200 Merge pull request #172 from LedgerHQ/164-opreturn Allow naked OP_RETURN outputs commit 10bd3732d1837e5bfc3866cefd9d9ad937d54ea2 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jun 19 10:22:14 2023 +0200 Allow naked OP_RETURN outputs commit f1d379a67bce4a6f0589a4768c9a1359533ced13 Merge: d1c950b 375277b Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jun 19 10:25:36 2023 +0200 Merge pull request #166 from LedgerHQ/client-check-address Compare generated addresses with the expected ones in the client library commit 375277b1a85bbc705b326c75a220d5216991ae40 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jun 14 10:04:41 2023 +0200 Reject policies with "thresh(1," in the JS client commit 5feaa063ba97cbd26786c1115144a9f2e15a5b86 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jun 13 16:49:23 2023 +0200 Document paranoid_client feature commit 5b6c1414aeea9d6cc0bd2ae6ccc19723e86e4340 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jun 13 15:53:04 2023 +0200 Compare addresses with rust-miniscript in the Rust client library commit 601695d828c4fcdbcdf31c0636c601ccbdd7c386 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon May 29 14:50:52 2023 +0200 Fix typing issue with bs58check commit 278637ecf34ace8d81cd14aefed53b7dd29c640a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon May 29 15:46:23 2023 +0200 Update embit and bip32 in test suites commit dc8fd4ff0ea2a88f6835dfa4ca4f3fed014b53ee Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon May 29 14:29:41 2023 +0200 Compare generated addresses with the expected ones in the client library commit d1c950bd271b0ba07176548a7ee21cd82c85f3e7 Merge: 7a1b984 356ad47 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jun 14 10:05:58 2023 +0200 Merge pull request #170 from LedgerHQ/fbe/return_in_exchange_after_swap Return in Exchange after a valid swap commit 356ad4715bd876467a91f879ad403f4ffca37d12 Author: Francois Beutin Date: Tue Jun 13 15:56:03 2023 +0200 Return the Swap status to Exchange commit dc5abbede15aed38840246cb1865ea30b947f8dd Author: Francois Beutin Date: Tue Jun 13 15:35:44 2023 +0200 Update Exchange API file commit 7a1b984174816ec4ca04e08dc96f59764cbd74b1 Merge: 68e888a a866e3f Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jun 12 15:10:11 2023 +0200 Merge pull request #169 from fionn/typing Declare type annotations commit a866e3f1a71be7d16d7c2328d4189f693463f953 Author: Fionn Fitzmaurice Date: Fri Jun 9 19:02:04 2023 +0800 Declare type annotations The Python module is statically typed, but does not export the type information. This adds the py.typed marker as per PEP 561. commit 68e888aaeb5af711fdd606bcc1be2938a1476a98 Merge: 805cc10 34e1d77 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed May 31 10:58:00 2023 +0200 Merge pull request #139 from edouardparis/add-tapscript-signature-to-client_rs Add tapscript signature to rust client commit 34e1d77799d350eafc063be499fa7b0e707dbfd6 Author: edouard Date: Tue May 30 12:37:40 2023 +0200 fix: clippy warnings commit 92d482258bfd2df55011a0b37786c26476007708 Author: edouard Date: Mon Apr 3 15:36:35 2023 +0200 Add tapscript signature to rust client commit 805cc105ca99c02e465a4384eb0e83839e1a5537 Merge: f50fb73 1894450 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue May 30 13:04:06 2023 +0200 Merge pull request #167 from LedgerHQ/xch/crypto-readability Clean Makefile and drop all TRY/CATCH around crypto functions commit f50fb7368bb6281bf0d2c23d605b88fb817dd90e Merge: 8389ff5 2b6b842 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue May 30 11:21:48 2023 +0200 Merge pull request #162 from LedgerHQ/fix-thresh Fixes for thresh fragment commit 2b6b8423fb2c125a95093a7daa419670f0541735 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri May 26 14:17:06 2023 +0200 Fix comment in and_n specs; fix calculation for 'o' for or_c commit 1894450e433b8bee42718efbf0689e074cee7fed Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue May 30 10:38:26 2023 +0200 Rewrite functions in crypto.c using throwing functions with their _no_throw equivalent commit d23603fbb301e45bcaa8bc93e84c8f749ee96c4f Author: Xavier Chapron Date: Mon May 29 17:34:47 2023 +0200 src: crypto.c: Remove the need for TRY/FINALLY block when using crypto_derive_symmetric_key commit 2ca624822e63a2625a9c2977b7fece26b28e0632 Author: Xavier Chapron Date: Mon May 29 17:22:08 2023 +0200 src: crypto.c: Replace crypto_derive_private_key by equivalent bip32_derive_init_privkey_256 commit 4bc0dcb475ccf2703dd0ef2fcf2a9134dd3f50bc Author: Xavier Chapron Date: Mon May 29 17:15:13 2023 +0200 src: crypto.c: Simplify crypto_ecdsa_sign_sha256_hash_with_key() commit daa18285edaa8815d4fd19f4d3ea4f1a6769af19 Author: Xavier Chapron Date: Mon May 29 16:36:21 2023 +0200 src: crypto.c: Simplify crypto_get_compressed_pubkey_at_path() commit 54b2831c6cb5f724aedab952dca5da59606d8097 Author: Xavier Chapron Date: Mon May 29 16:36:00 2023 +0200 Makefile: Enable lib_standard_app crypto_helpers.c usage commit 6846a91cabbaaadd13f98347a6271d93163a7277 Author: Xavier Chapron Date: Mon May 29 12:08:27 2023 +0200 Makefile: Revamp the Makefile using SDK Makefile.standard_app features This commit doesn't affect generated `bin/app.apdu` (same sha256sum). commit 8389ff5fef5c341dc0459e9a3082dd3b11519e8f Merge: 2531a8d 3e66f6e Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri May 26 18:18:48 2023 +0200 Merge pull request #163 from LedgerHQ/check-return-value Check return value of crypto_derive_private_key commit 3e66f6e16558fd93991f0fd9f1fc2e9715a85c07 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri May 26 17:12:21 2023 +0200 Check return value of crypto_derive_private_key commit 141e58b0be5139657a5419bc0e1ab82f41df673a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri May 26 10:07:14 2023 +0200 Fix encoding of thresh when n == 1 commit 960c2ab7d9c89e48a592d65cb1ad2dadb40db654 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri May 26 09:40:21 2023 +0200 thresh has the 'd' and 'u' properties commit e5701a54c41a78575c4d99fd720088eb66ff2696 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri May 26 09:38:18 2023 +0200 Add test for a complicated vault setup commit 2531a8dc04693cdc07a695a750426d8146129a05 Merge: cd83daf 1f1c6c9 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu May 25 10:19:15 2023 +0200 Merge pull request #161 from LedgerHQ/152-signing-performance Avoid duplicate work on non-Stax devices commit 1f1c6c99445406903d6d3b651a98bebebdb78cf8 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed May 24 14:41:38 2023 +0200 Only perform the dry-run for the outputs on Stax commit e8f053e932f89b584440f50f1c84ca12fdf8787a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed May 24 13:50:47 2023 +0200 Update (c) notice, and improved dashboard wording for testnet app on Stax commit 16a2999c68cde7bc16927c97f1df401a6cd63f01 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed May 24 11:49:10 2023 +0200 Refactor state related to outputs; remove unused variable; slightly simplify read_outputs commit cd83dafbe2cb2ed3bac27a141f2a399daa9c7477 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed May 10 16:28:43 2023 +0200 Update CHANGELOG for version 2.1.2 commit 477361a53fddeedabf42a6fbf16a313b12a73f90 Merge: f45d8cc d6e1ba0 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri May 5 14:18:26 2023 +0200 Merge pull request #160 from LedgerHQ/add-guidelines-enforcer Add guidelines enforcer to CI commit d6e1ba0c2069786d43bdde47789e0464909b27ac Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri May 5 09:55:26 2023 +0200 Add --curve and --path_slip21 params commit bc4bf10d172b70f09bd9c39be53bcbfd787bc349 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu May 4 13:49:19 2023 +0200 Fix clang-analyzer issues commit dc59e4bae77a9bc9f29b4f0dd8734fe0d3475641 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu May 4 12:02:19 2023 +0200 Add guidelines enforcer to CI commit f45d8ccf5c00fc5cae3670424cd8b33b17ff64a6 Merge: 64fc633 05014fa Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue May 2 15:12:18 2023 +0200 Merge pull request #158 from LedgerHQ/fbe/reset_BSS Reset BSS at start in swap mode commit 05014fa02457e7e9dcb99f21a127f05bb24c7d2d Author: Francois Beutin Date: Tue May 2 13:37:10 2023 +0200 Reset BSS at start in swap mode commit 64fc633e2ea3f2aec75a1bef71686ef23edc93ba Merge: 308f51b 63d2ee0 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Apr 26 11:59:54 2023 +0200 Merge pull request #157 from LedgerHQ/fbe/add_ragger_test_filter Only run Swap tests related to Bitcoin commit 63d2ee0d5d4b05a68f73484567d216161d4b2bbe Author: Francois Beutin Date: Wed Apr 26 11:23:28 2023 +0200 Only run Swap tests related to Bitcoin commit 308f51b88fa1a63a872e51cdf122e37cbed4e3f8 Merge: 4be654f bdc48a2 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Apr 25 17:52:51 2023 +0200 Merge pull request #156 from LedgerHQ/fbe/exchange_reusable_workflow Add a workflow triggering the Exchange tests with the current Bitcoin branch commit bdc48a2baef0c79d8d44ae5b33fa01512bc07a64 Author: Francois Beutin Date: Tue Apr 25 17:39:15 2023 +0200 Add a workflow triggering the Exchange tests with the current Bitcoin branch commit 4be654ff5eec7d82cd7db1ecae53bd5839e49bd2 Merge: 83d5c28 068566c Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Apr 21 17:07:31 2023 +0200 Merge pull request #142 from LedgerHQ/fix-addr-idx Check bound on address index in get_wallet_address commit 83d5c28eba29e278595abc3fc0f93525a1998a6a Merge: 0981826 a2f1632 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Apr 21 17:03:01 2023 +0200 Merge pull request #148 from LedgerHQ/fix-ux-glitch Fix get_extended_pubkey and get_wallet_address not returning to dashboard commit a2f1632102cd94c0556e85719f5a3da866322b06 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Apr 21 16:39:05 2023 +0200 Fix get_extended_pubkey and get_wallet_address not returning to dashboard when done commit 0981826f093ebfc8a4b451d291d1f07c461600c1 Merge: 1271309 22298b8 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Apr 20 09:43:37 2023 +0200 Merge pull request #147 from bitcoinerlab/new-synced-branch javascript: Improve usability for 3rd parties: update README, expose types, and remove unused dependency commit 22298b8710b03e5de6abee41fb06f95d640941e6 Author: José Luis Landabaso Díaz Date: Wed Apr 19 16:27:41 2023 +0200 Expose PartialSignature for usage by 3rd parties commit c8de9256c21d0157689caa07f489e051d680174c Author: José Luis Landabaso Díaz Date: Wed Apr 19 16:07:07 2023 +0200 Remove unused dependency tiny-secp256k1 from package.json commit 6e80438eb4708c0fa0e2947b7820e95364beeaf4 Author: José Luis Landabaso Díaz Date: Wed Apr 19 16:05:30 2023 +0200 docs: Add official npm package information to bitcoin_client_js/README.md commit 12713094dabacc0afed5865be8b8ae37754ae247 Merge: 979a5f4 aca46bb Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Apr 19 14:56:47 2023 +0200 Merge pull request #146 from LedgerHQ/pytest-timeout Add a default 5-min test timeout in ci commit aca46bb04680e15df5d2f06ef86ce994dc3c2737 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Apr 19 09:36:38 2023 +0200 Add a default 5-min test timeout in ci tests (except for very long tests, that are disabled by default) commit 979a5f49c8f0e7bca50e5225ee80e453750634b0 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Apr 18 16:36:04 2023 +0200 Slight refactoring of contains_a commit 4e0ffda9f99896fbad1c065c937336eecc59f1b9 Merge: f9673ef 8ff2f30 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Apr 18 16:06:08 2023 +0200 Merge pull request #141 from LedgerHQ/paranoidclient Reject policies that are not correctly implemented in certain app versions commit 8ff2f30cf742f42aed63b97809e31b7fa81380fe Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Apr 18 15:30:56 2023 +0200 Bump python client to 0.2.1 and update CHANGELOG; bump js client to 0.2.1; bump rust client to 0.1.3 commit a09c8fea95367bd2e3a489926ea7f8ebcca5316a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Apr 17 14:29:32 2023 +0200 Update rust library to reject policies with 'a:' fragments in releases before 2.1.2 commit 2b937270bc8dab8e6d37d3a1bc2d4cfa8910d8e0 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Apr 17 12:05:52 2023 +0200 Test retrieving app name and version commit 5c6f03012a1201b68a6e175792a2e65151ab881f Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Apr 17 11:41:06 2023 +0200 Update js library to reject policies with 'a:' fragments in releases before 2.1.2 commit 9b0d1e134313ff4c0a1d64b0d5ba006ad5b3ce77 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Apr 17 11:09:34 2023 +0200 Update python library to reject policies with 'a:' fragments in releases before 2.1.2. commit f9673ef7dc5f4b4bcde4f62e44e1c7df4dc803de Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Apr 7 17:14:51 2023 +0200 Fix generated Script for miniscript a: wrapper; added test commit 068566c2a298b5fa50546eb2f28d85f4eb4b97b4 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Apr 4 17:28:27 2023 +0200 Check bound on address index in get_wallet_address commit 250b3270d67e2975d8103123226a3dd91be32cf5 Merge: a4603e1 2c8a1f5 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Apr 3 10:12:33 2023 +0200 Merge pull request #137 from LedgerHQ/fixpy Fix import in python client commit 2c8a1f5acbb85ea70c38cbca7fd4cea40cfa41b6 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Apr 3 09:57:54 2023 +0200 Delete unused file commit 145fe262e2afcfaa732f68054307708df18da8ff Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Apr 3 09:56:52 2023 +0200 Fix botched import commit a4603e110b8fb4131863a61bd17bc886334f7a35 Merge: b2c6247 52e0d52 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Mar 31 17:49:48 2023 +0200 Merge pull request #136 from LedgerHQ/prepare-release Update changelog for version 2.1.2 commit 52e0d5256cc1acf6adb3840ef11f0791be7acfc7 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Mar 31 17:27:12 2023 +0200 Update changelog for version 2.1.2 commit b2c624769c3b863b38dd133e8facabb3d7b5b76c Merge: 192031a 4b199ce Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Mar 31 16:17:32 2023 +0200 Merge pull request #133 from LedgerHQ/p1p2 Relax p1 to use it as an optional feature bitmap commit 4b199cef7deba7789298ed99b78b0ea4898d71de Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Mar 31 14:52:21 2023 +0200 Add explicit constant for the protocol version; renamed p2 to protocol_version in all the handlers commit f46675a8f4596f566950bcadb547d7701f7fde16 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Mar 21 11:56:11 2023 +0100 Don't enforce p1=0 commit cffb0fc8f4d0e2cde7b1029b3c5d835438afe85f Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Mar 21 11:31:45 2023 +0100 Test that the app correctly responds with WRONG_P1P2 if p2 > 1 commit 192031a0558dd784f69797ee21af5721a2825a10 Merge: 9d340ea 21e2a3c Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Mar 31 14:25:43 2023 +0200 Merge pull request #128 from LedgerHQ/nonwitnessutxo Allow signing wrapped segwit inputs with missing non-witness-utxo commit 21e2a3c3e54e65dc7e8764861db8edf7a3e60f4f Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 27 10:40:12 2023 +0200 Update automation for Stax commit c16a01b54be86b6716b55ffe0c3e2d47d58ea096 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Mar 8 16:47:00 2023 +0100 Allow signing (with warning) for wrapped segwit inputs with missing non-witness-utxo commit 9d340ea2c221bd4b0d9840e847da439a93f4ff62 Merge: 2dcd5f4 5c184c5 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Mar 31 14:09:49 2023 +0200 Merge pull request #126 from LedgerHQ/stax-over-tapscript Stax over tapscript commit 2dcd5f4962c8a576fbbf93699212718ebc2e9951 Merge: 6de8d1c 07d337f Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 27 10:16:01 2023 +0200 Merge pull request #135 from LedgerHQ/put_back_blake2_ripemd Put back blake2 ripemd commit 07d337f8afdf76c07aa169ffd20907245d4377a0 Author: Thomas Joly Date: Mon Mar 27 09:59:24 2023 +0200 Put back blake2 and ripemd hash algo This reverts commit 8824e8b75a79e22635c2440e3b357a5e996f8555. commit 6de8d1c879af01ff1c1a793319219fe257299ef8 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Mar 23 14:48:36 2023 +0100 Missing GET_MASTER_FINGERPRINT in APDU summary table commit e3603e8f975e2e1dff0c27816157d5a3fe9b8b5f Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Mar 21 10:53:06 2023 +0100 Dependency no longer needed, and it now supports PSBTv0 commit 02af4fc5c6c36eb7213d5458551d74f44e4a5f8e Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Mar 21 09:33:10 2023 +0100 Typo in comment commit 2238330034239f312eb320e1a59380e36e61b0dc Merge: d847eff d4b6b1d Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 20 12:00:22 2023 +0100 Merge pull request #132 from LedgerHQ/js-update Update JS library commit d4b6b1df3a96b3d4253fa081d1b4635a5453ea39 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Mar 15 15:23:26 2023 +0100 Nit from review commit d847eff6cf93529fcedd563355ed36de346115f2 Merge: e2befab ff44a4f Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Mar 15 14:15:34 2023 +0100 Merge pull request #131 from LedgerHQ/remove-min-fees Disable relayfee minimums in e2e tests to simplify tx broadcast commit 7f44f6bd242d449e2f75c1205d9dfad959cb2b2c Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Mar 14 15:01:04 2023 +0100 Update code example commit b9ff506963d6ceab73ccf29c6b88358e88c57c7f Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Mar 14 15:00:34 2023 +0100 Allow the psbt to be passed as a raw Buffer, or base64-encoded string in signPsbt commit 53dfd1727ab55182f9e365747b26b862e48b7b8b Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Mar 14 14:45:24 2023 +0100 Allow PsbtV2.deserialize to correctly parse PSBTs of version 0, and automatically convert them to PsbtV2 commit 81fa67ae8266616c88c957d52c394981631e4fa9 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 13 16:34:40 2023 +0100 Fix typo in comment commit be3f3bd4a6fc2dcfc2235e8a515fa0a1d3297266 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 13 15:36:26 2023 +0100 Fix test name, not matching the actual descriptor template commit b2f449659a4ca9f46391bce09a7d021cc37c8140 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 13 15:35:46 2023 +0100 Bump version commit 336ab149fa58270c130655ab58c31acdf73b9d32 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 13 15:35:00 2023 +0100 Breaking change in JS library: signPsbt now returns tuples of (index, PartialSignature). Added corresponding test. commit ff44a4f07a43dbb521502c433aa9a812f9df34dd Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 13 11:56:24 2023 +0100 Disable relayfee minimums in e2e tests to simplify tx broadcast commit 5c184c57f73e541843a3621a447ff1144e2fa3ab Author: Sarah GLINER Date: Thu Mar 9 15:11:41 2023 +0100 tests: linting python commit fb27fb65d8e567ecac1318fa72c15521cb5735c2 Author: Sarah GLINER Date: Mon Mar 6 10:41:11 2023 +0100 tests_mainnet: no dashboard tests for stax commit 738e1cbcb9b66fafe3a0d41dcca55cb97dc1721d Author: Sarah GLINER Date: Fri Mar 3 16:52:49 2023 +0100 Bump version commit f04c918fc570021bb8b7fd77c0e350ce8971a515 Author: Sarah GLINER Date: Thu Mar 2 16:29:20 2023 +0100 CI: add stax to workflows commit 9a649b0ece2b1864bda2641145366aaa19c9f905 Author: Sarah GLINER Date: Wed Mar 1 19:53:15 2023 +0100 Tests: add type to model argument commit 03605d99f32c79581e4f952e57b9b950216417c0 Author: Sarah GLINER Date: Wed Mar 1 19:35:45 2023 +0100 tests: adapt tests for stax commit 6fd07fdbd5d1fe53924bec85c1c47b02205ee501 Author: Sarah GLINER Date: Thu Nov 10 10:15:11 2022 +0100 test_get_wallet_address_v1: add tests for ui commit e14dc225cc86dd911bf51490fade4fd92d70a3f0 Author: Sarah GLINER Date: Wed Mar 1 20:07:54 2023 +0100 sign_psbt: add missing SEND_SW for error cases commit b38758a40a6416d8b3dbedf92a5b71b5ab25126b Author: Sarah GLINER Date: Mon Feb 27 10:20:13 2023 +0100 display.c: do not set ui state as dirty while showing displaying pubkey and wallet address commit ae7977a800ab0b9885019be9962a70d3fa9354d2 Author: Sarah GLINER Date: Tue Dec 13 10:40:42 2022 +0100 nbgl: add notifications after processing commit 96518192ca0a4be1f8a343cb1d1e7e317fb36cdf Author: Sarah GLINER Date: Mon Dec 12 11:20:37 2022 +0100 processing_screen: do not redraw processing screen if it is already displayed commit db2612cbfb93d29edb23ceba9530de7cb9cb32b4 Author: Sarah GLINER Date: Tue Nov 29 11:09:28 2022 +0100 fix: clear processing screen flag commit e6af113cfdbb6b69f4c5e7c79f55086a9b8a4248 Author: Sarah GLINER Date: Mon Feb 27 10:30:47 2023 +0100 sign_psbt: parse all outputs to get total count of external outputs and add corresponding ui commit 98182403e1c5618a67fd510e4f9ebfe0be6095f1 Author: Sarah GLINER Date: Wed Nov 9 12:08:36 2022 +0100 display_bagl: removed unused legacy address flow commit 74b14015388c946b116fca5f4307b96d32677d7c Author: Sarah GLINER Date: Thu Nov 10 11:20:48 2022 +0100 display: independant files for nbgl and bagl commit bf9b0b182d256c478d37d5413319e84b1d60ddaf Author: Sarah GLINER Date: Thu Nov 10 11:30:14 2022 +0100 menu: independant files for nbgl and bagl commit e2befab3ac59febeaa62970b19aba5732d1c3fb1 Merge: 7eb2678 8824e8b Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 6 10:39:05 2023 +0100 Merge pull request #125 from LedgerHQ/depreciate_ripemd ripemd160 has been deprecated in the sdk commit 8824e8b75a79e22635c2440e3b357a5e996f8555 Author: Thomas Joly Date: Mon Feb 27 17:52:40 2023 +0100 add implementation of ripemd160 only for the LNS commit 6d8f6fa600d6a468a0c10e9bf3831d54d699797c Author: Thomas Joly Date: Mon Feb 27 17:24:50 2023 +0100 ripemd160 has been depreciated commit 3d8237ab1f9f4c0c9795053f33311c518eb49fe6 Author: Sarah GLINER Date: Thu Feb 23 18:31:40 2023 +0100 io: add nbgl flow commit 99e72b62d3bed34a63c8eb68c46f7d760e5cdb5d Author: Sarah GLINER Date: Thu Feb 23 18:31:37 2023 +0100 stax: compile with new graphical lib commit 7eb2678c6c01a7b3d8b057f2e64b1e73278d0d7e Merge: e5d88b4 b6c3bd9 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Feb 24 10:50:23 2023 +0100 Merge pull request #122 from bitcoinerlab/Expose_DefaultDescriptorTemplate Expose DefaultDescriptorTemplate commit 8c4682a14b0c5dd8bb5fc10af000b5ddf9fab14b Author: Sarah GLINER Date: Thu Feb 23 17:08:22 2023 +0100 Icons: add stax icons commit ed89ffce721d838473aaa4d396cb7be22ac5a342 Author: Sarah GLINER Date: Thu Feb 23 16:51:16 2023 +0100 clean: remove duplicated testnet logos commit 6b44ccf061d8d9e8b5a7da2bb84b1534452cf70c Author: Sarah GLINER Date: Thu Feb 23 15:21:14 2023 +0100 .gitignore: ignore build folder commit b6c3bd906fb9de82f4545dd0454a007090aaec35 Author: José Luis Landabaso Díaz Date: Tue Feb 21 12:07:16 2023 +0100 Expose DefaultDescriptorTemplate commit e5d88b4e627f762e8a983af9103aa5c7f088175f Merge: 3465192 1f1f88e Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Feb 21 10:52:27 2023 +0100 Merge pull request #113 from LedgerHQ/python-tapscript Improve tapscript support in Python library commit 1f1f88e301d89f49891762a960a1537d209141e6 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Feb 6 16:17:33 2023 +0100 Add PartialSignature dataclass to returned value of sign_psbt; bump python client version commit 346519201bee7eec0a3b06489b67faa0d3b60ea6 Merge: 1a63e92 1562513 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Feb 20 14:32:14 2023 +0100 Merge pull request #90 from LedgerHQ/tapscript Tapscripts support commit 156251309b387223cd0ce4d02c82967e2a499946 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Feb 20 10:58:45 2023 +0100 Change key_derivation_length type to uint8_t for consistency commit 1c934f7fd6427cb938ebf8f477dba0fb244020d6 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Feb 20 10:45:49 2023 +0100 Address comments from PR review commit 89d71835eb579296052ff2593d3e18042e5d3e92 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Feb 10 09:57:29 2023 +0100 Missing error code response on failed policy registration commit 0bc3881e9b107e77b0534d2a8ceadc235904cb36 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Feb 6 11:27:55 2023 +0100 Increase wallet policy in-memory size limit on Nano X/S+; add test with a complex taptree with 8 tapleaves commit 5ecbc8fc6db49e94f9c12507bd9bfe97c060a140 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jan 24 17:09:04 2023 +0100 Add a depth limit of 4 for taptrees; increase memory of check_merkle_tree_sorted to support psbts for such scripts commit 88445a69842455755814ae246128c247c9547d1d Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jan 24 14:45:23 2023 +0100 Document yielded format during sign_psbt for tapscript spends commit 0805a8016bb5f273ed8e88283d8e6f836cc37812 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jan 18 11:09:53 2023 +0100 Added buffer_is_cur_aligned utility function, and unit tests commit f03ad3cf0eb12be0878d12e441ae5f8c3be5d9d6 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jan 17 17:33:57 2023 +0100 Optimize call_get_merkle_preimage's memory usage by optionally using the cxram section commit 8c6106195c203daf3bca93e77db0cb6565973d73 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jan 17 13:38:35 2023 +0100 Move segwit hashes computation from sign_transaction_input to sign_transaction sign_transactions has more available stack, and this is anyway only redundant for legacy transactions. The slowdown is likely too small to be measurable in practice, therefore it is a good tradeoff for the improved stack utilization. commit 9ef7c37e52d7429d0f9279c1e9d15fe9c179efc6 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jan 17 13:20:18 2023 +0100 Avoid TRY/CATCH block in sign_sighash_schnorr_and_yield commit 0c61c234728e32b31b291955c7d84563371b41d6 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 16 17:56:06 2023 +0100 Take taptree hash computation out of sign_sighash_schnorr_and_yield commit 7a0bfece41ac6bc4aa2c06a9f7a3bed809d99791 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 16 17:25:29 2023 +0100 Refactor sign_sighash_schnorr_and_yield and optimize memory usage commit 56fa3f5a42c6deada43ec91e3d502696a3e56a40 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 16 16:13:03 2023 +0100 Don't request chain_code unnecessarily commit 0fd62121aba5e808a7b842a1bb7f360290a20d5e Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 16 15:33:10 2023 +0100 'redeemScript' variable in segwit transactions was unnecessarily large commit f04facb074930dfe22ad0970e3e75ab33e9f834e Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 16 13:59:18 2023 +0100 Memory saving trick in sign_sighash_schnorr_and_yield commit aaa524537fc6402bff0c8a05383ef4f3d9fbf377 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 16 11:42:16 2023 +0100 Factor out part of compute_taptree_hash without inlining to optimize stack usage commit 58d8c657047b26302f5a369d031a99932bb51c59 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 16 11:26:28 2023 +0100 Delete stale line, we're not actually computing again total input/output amounts at signing time commit f77f1f89e0715f584ff2222a083d9be5ba70abef Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jan 11 13:30:15 2023 +0100 Memory optimizations commit 93e890f9b9713b110944420d266327d1d8be51c6 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jan 11 11:33:09 2023 +0100 Add initial e2e tests with tapscripts commit 49da6f719ced326eb5a1097f9d8b2811af3ced05 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jan 11 11:32:09 2023 +0100 Broadcast signed transactions in miniscript e2e tests; only sign with the required number of keys commit 594a2f501497aee78ea9b63af120f9ecc8968499 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jan 11 11:13:56 2023 +0100 Fix tapscripts signing commit 9b8c3b516c047c31ed8f1f80e7d9f7ec0868c332 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Dec 15 18:32:59 2022 +0100 Refactored call_get_wallet_script into two separate get_wallet_script and get_wallet_internal_script_hash; saves a lot of memory commit ab4fea071de6339b73174776675e66cb9ae49528 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Dec 12 17:47:43 2022 +0100 Correct tweaking of internal key when there is a taptree commit 367207f1361ffa46fc67695b376a2db26bf622f9 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jan 4 16:57:28 2023 +0100 Added streaming version of extract_bip32_derivation that works for arbitrary size commit 1d097071b54c9e0c57be84eefdbea85e40aad559 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Dec 12 16:17:02 2022 +0100 Ensure that some stack variables are initialized commit 5269446ec990da873e7b38ce28fbfcaca39ffd75 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Dec 12 14:44:07 2022 +0100 Remove unused import commit 855436458324a51aab56fcf0f9d0f7ce1643c6cf Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Dec 12 14:45:13 2022 +0100 Test that both SIGHASH_DEFAULT and omitted sighash type produce 64-byte signatures in taproot inputs commit 2097b1950e258995650ad64cddc5919e6310687a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Dec 9 17:14:55 2022 +0100 Sign taproot inputs with SIGHASH_DEFAULT if not specified in the psbt commit 6b43370369a17f970d61510abdf4bd09b59e1468 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Dec 8 18:29:59 2022 +0100 Initial signing support for tapscripts commit 87f8789f7f2ecaadeb2e787a97bfc31e2041d549 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Dec 6 23:09:59 2022 +0100 Generalized psbt bip32 paths parsing to work for tapscripts commit 786381503052bcc9e706a6ae58b059a9668e31b7 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Dec 6 17:15:59 2022 +0100 Generalized get_key_placeholder_by_index for taproot trees commit 3c1ae54abae8aca0427189d81a3a93db52afd2e7 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Dec 2 11:08:00 2022 +0100 Add tapscript policy and address generation commit 3f2c3a2c1f774d797b20fd775d45785474e6bbd9 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Nov 30 13:18:41 2022 +0100 Fix test_register_wallet_invalid_names commit 12e5f03709a18e651e162483d780c30beb06fcac Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Nov 29 17:19:46 2022 +0100 Rename ptr_node_t to the more generic ptr_rel_t; rename node_ptr to resolve_ptr commit b4daa27a46d962e57867fa0c7748dd8816d64a68 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Nov 29 16:59:09 2022 +0100 Add unit tests for parsing tr descriptors commit 920df9c59271f6115742d777563d24a4c55a4c87 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Nov 29 11:46:40 2022 +0100 Avoid some code duplication in wallet policy unit tests commit 13c1df7f8f06d071b70e05d585be68b82d37bcb6 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Nov 29 10:58:19 2022 +0100 Add parsing of tr(KP,TREE) descriptors commit 1a63e92ad5e3801f0caa98ff7b1606fd0eb701cd Merge: a12a2bf 1e53b66 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Feb 16 13:16:42 2023 +0100 Merge pull request #116 from bitcoinerlab/import-from-bitcoinjs JS client: Allow importing from bitcoinjs-lib commit 1e53b663302e27234a6d6334a70d92d7593342ce Author: José Luis Landabaso Díaz Date: Thu Feb 16 09:40:01 2023 +0100 Make bip32 path conversion more robust commit a12a2bfaaa5ea1d069f2122d1037c2585ad97ab1 Merge: bafa1e9 3d065aa Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Feb 15 13:41:07 2023 +0100 Merge pull request #120 from LedgerHQ/fix-ci CI: do not specify sdk version when running speculos commit 3d065aae7af0cc926498118754b515bbd712d80b Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Feb 15 13:22:08 2023 +0100 CI: do not specify sdk version when running speculos (it's now autodetected) commit bafa1e94cfdc116c7757d0687472143bad646df6 Merge: a1f4bfb 1d0755f Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Feb 15 11:18:20 2023 +0100 Merge pull request #119 from LedgerHQ/fix-ci Fix JS tests in CI commit 1d0755f4c7f8b36f9a54d90fc1352e02c415de6d Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Feb 14 10:06:58 2023 +0100 Add --model parameter when running speculos in the JS tests commit a1f4bfb0d982a960cfae626f58a1b9e52b1d1a37 Merge: 871ad24 adfc4db Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Feb 14 09:23:06 2023 +0100 Merge pull request #118 from startup-dreamer/typofix fix a typo commit adfc4db4fd2d52eb05f16a6c9cb8e2552345bdee Author: startup-dreamer Date: Tue Feb 14 01:55:31 2023 +0530 fix a typo commit c76b9a05ad891cbd0a43641c4e13e361514197be Author: José Luis Landabaso Díaz Date: Fri Feb 10 10:25:11 2023 +0100 Return the 'this' object in fromBitcoinJS to allow chaining commit 322bcfdb15649b154a82831d7b6f97c009583ee0 Author: José Luis Landabaso Díaz Date: Fri Feb 10 10:18:01 2023 +0100 Add support for importing BitcoinJS Psbt for Ledger signing commit 11e3c561ca286d8b3080d1f9b4835e63552b12f4 Author: José Luis Landabaso Díaz Date: Thu Feb 9 20:16:02 2023 +0100 Change amount type from Buffer to number in setInputWitnessUtxo / getInputWitnessUtxo commit 871ad247a44a473d85c0696725552cc4f886d484 Author: Jose-Luis Landabaso Date: Wed Feb 8 14:29:18 2023 +0100 Allow setting PSBT_IN_WITNESS_SCRIPT (#114) * Add setInputWitnessScript and getInputWitnessScript methods * Fix setInputWitnessScript --------- Co-authored-by: José Luis Landabaso Díaz commit f8dcfff6051d4b326a00792a6a7bde933309ce54 Merge: eb34a3e e7089dd Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Feb 6 16:42:54 2023 +0100 Merge pull request #108 from LedgerHQ/fix-jslib Fix bug in serializeMap; add basic (de)serialization test commit e7089dd1d16ea0d56d234a71c4ca8de392ed7694 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 30 11:35:39 2023 +0100 Fix bug in serializeMap; add basic (de)serialization test commit eb34a3eb101071e9978a432941757f9e7c963d4a Merge: 0bf134e 6eb8ea7 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Jan 27 09:55:41 2023 +0100 Merge pull request #107 from LedgerHQ/master Sync `develop` with `master` commit 6eb8ea73e5b732613004dca2996ebb91e6df3360 Merge: 51dbb1a 686fab8 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Jan 27 09:40:43 2023 +0100 Merge pull request #102 from LedgerHQ/allow-unhardened More permissive xpub exports commit 686fab8d662f899943775247ebbe5ab139768665 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 23 16:32:14 2023 +0100 Bump version 2.1.1; update CHANGELOG commit fa63628b6914c86f1d3123399a2f59b6068b6214 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 23 14:11:32 2023 +0100 Increase limit for BIP32 derivations to 8 (instead of 6) commit c9658e33f4cb6d48c01332f5b353e5e6788f1224 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 23 13:58:08 2023 +0100 Slightly loosen path permissions in GET_EXTENDED_PUBKEY: - Allow m/45'/coin_type'/account' - Always allow unhardened children of allowed paths commit 0bf134ede80c20ef4130084925815528a01bd463 Merge: 938ba25 54fba13 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Jan 12 09:31:51 2023 +0100 Merge pull request #98 from LedgerHQ/update-js-readme Update code example commit 54fba130545f7348c8b766626a0ac7fe04e6bd23 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Jan 12 09:15:24 2023 +0100 Update code example commit 938ba25938ec182193fb16aaded8a8d8a9d95617 Merge: 35db660 c2bdcd2 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 9 16:50:53 2023 +0100 Merge pull request #96 from LedgerHQ/add-missing-dep Add missing dependency commit c2bdcd2cbf9500004579b6f3a85610130259635d Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 9 16:37:39 2023 +0100 Bump python library version to 0.1.2; update CHANGELOG commit 4d70c809d55369e314fdb169203e8a0f5bdee0c9 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jan 9 16:35:03 2023 +0100 Add 'packaging' to requirements; set minimum python version to 3.7 commit 35db660f29c12447870dfd379f7ab0e3aaf0fa2a Merge: 92ff905 a4e5988 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jan 3 15:45:13 2023 +0100 Merge pull request #95 from LedgerHQ/update-wallet-policy-docs Update wallet policy docs with miniscript support commit a4e5988efcfbea04a9302936f6161e86e7373b0f Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jan 3 15:44:01 2023 +0100 Quite a few policies are supported, at this point commit 5a80a821e7f563a2d2e645aaed21d36d434aba28 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jan 3 15:15:45 2023 +0100 Update wallet policy docs with miniscript support (and few other improvements) commit 92ff9050c26b6545f53c216fefe8cb082d3f25fb Merge: b13985f 659f545 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jan 3 15:25:06 2023 +0100 Merge pull request #94 from LedgerHQ/fix-ci Fix CI workflows for CodeQL and Sonarcloud commit b13985fe1bf42ed9f6f1a98543fe0fe8ee587247 Merge: 95aabb8 39a376d Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jan 3 14:13:58 2023 +0100 Merge pull request #91 from edouardparis/client_rs-add-missing-commands Add missing commands to bitcoin_client_rs commit 659f54587c7503de39ea52c86b489b1dfe6a4861 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jan 3 13:47:16 2023 +0100 Adding missing packages to build unit tests commit 69d36ca3a1aedbb9552c4796f0457397e5b64841 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jan 3 13:26:49 2023 +0100 Workaround for tzdata installation hanging the CI commit 5544f7c7553b9207fba6808e82489425a5e47283 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jan 3 10:56:02 2023 +0100 Use ledger-app-builder-legacy for CodeQL and Sonarcloud commit 95aabb830d051afc1214758732900477d39a3836 Merge: 90788ca a0017ba Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jan 3 09:15:27 2023 +0100 Merge pull request #92 from edouardparis/fix-client-sign_message-error-field fix bitcoin_client: wrong sign_message error ins commit 39a376dee365c6481bdfc5072656da35b41a7079 Author: edouard Date: Wed Dec 28 17:01:32 2022 +0100 bitcoin_client_rs: 0.1.2 This version does not break the current API and only introduces two missing commands. commit ff223c4c5a6a67fe4a18fcc8e0aa2093571a7297 Author: edouard Date: Tue Dec 27 17:41:46 2022 +0100 Add command sign_message commit a0017ba9e8ceeb4e4032e124ef6b7b64a23c2994 Author: edouard Date: Tue Dec 27 16:45:04 2022 +0100 fix bitcoin_client: wrong sign_message error ins commit 5b8a0ee60549a6bbe667de7e3b62b71bfc09a488 Author: edouard Date: Tue Dec 27 16:15:14 2022 +0100 Add get_version command commit 299145b6b124bb0a0fe5b9c6e41b0dc2abd2519d Author: edouard Date: Tue Dec 27 15:09:08 2022 +0100 Make interpreter optional in client make_request method Some commands like get_master_fingerprint or get_extended_pubkey do not require an interpreter. As argument to the make_request method, the object is made optional in order to remove unnecessary allocation. commit 90788ca6c77b3744baaa593cf64fd50014385b81 Merge: d5eea05 d364c16 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Dec 8 17:29:08 2022 +0100 Merge pull request #89 from edouardparis/client_rs-fix-non-witness-utxo client_rs: sign psbt with non-witness-utxo returns incorrect data commit d364c16e3e8a75676441396e368fbc650f1e4672 Author: edouard Date: Wed Dec 7 11:30:07 2022 +0100 client_rs: bump version 0.1.1 commit 30b7cf4702328f38ba4bc4c67f5d24dc20fc49e4 Author: edouard Date: Wed Dec 7 11:00:11 2022 +0100 fix: store 1 byte array in queue in get_preimage command commit d017b2e33779b789fa5b04fd4199289c6be4eed1 Author: edouard Date: Wed Dec 7 09:50:21 2022 +0100 fix client_rs tests: check correct order of apdu exchanges The exchanges were replicated by an Hashmap that was returning the stored response for a given request without enforcing the order. This commit makes use of AtomicUsize to enforce it in the TransportReplayer This commit reveals the sign_psbt failing test. commit ae65976a6fb75ae8651701fa80b1cedb3191c4a8 Author: edouard Date: Tue Dec 6 14:28:43 2022 +0100 ledger_hwi: add sign command commit 4ba3169716ed0c03086aee9b624bbad09fe8b52f Author: edouard Date: Tue Dec 6 12:27:15 2022 +0100 client_rs: add sign_psbt test case commit d5eea051d610af682124d00b4f98bf174d5dad54 Merge: b84412e a3eb300 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Nov 28 11:38:26 2022 +0100 Merge pull request #87 from edouardparis/fix-bitcoin-client-rs-msrv fix bitcoin_client_rs msrv commit a3eb300897de97e180e7dd97afd1fcdff6045060 Author: edouard Date: Mon Nov 28 11:33:40 2022 +0100 fix bitcoin_client_rs msrv Clap used by ledger_hwi seems to be the limiting factor. Version 1.60 is stable. commit b84412ef67b568f00e2fc8574952dd22677e9ecc Merge: 51dbb1a d636730 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Nov 28 10:40:54 2022 +0100 Merge pull request #76 from edouardparis/bitcoin_client_rs New bitcoin_client in rust commit d63673024003256bb41905eb181908872b7d07b0 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Nov 25 13:35:03 2022 +0100 Add CI workflow for Rust client library commit 1df9fc81b85e1607c4d029d844a900c73768fed7 Author: edouard Date: Sun Nov 27 15:12:13 2022 +0100 Use bitcoin Varint instead of in house methods commit 307da9f3992f3b878339d0ab7f65af2269eaf279 Author: edouard Date: Wed Nov 2 16:09:19 2022 +0100 fix ledger_hwi: strip hash from desc template commit 124c1ef70d709d85dcad8ed71c15f5c813b01b7c Author: edouard Date: Thu Oct 27 12:19:02 2022 +0200 fix speculos default port commit cee5e61c5c51c9461c54bb473287f342c2d77d30 Author: edouard Date: Wed Oct 26 16:11:45 2022 +0200 Add more commands to ledger_hwi example commit 35fae029661492d23651d0429d58e904b386afc8 Author: edouard Date: Thu Oct 13 10:24:35 2022 +0200 Add sign_psbt command commit d9c3d477ce9f0133d01d5d441533fd77cde1dbfd Author: edouard Date: Wed Oct 12 17:40:21 2022 +0200 Added get_wallet_address command commit 792817e9428a9dbb81a71d03b427eb66d28e8857 Author: edouard Date: Tue Oct 11 09:58:15 2022 +0200 Added get_master_fingerprint command commit 621a2750709d3a2ec77a7527f9edf9d3d539e508 Author: edouard Date: Sun Oct 9 19:17:05 2022 +0200 Add register_wallet method to client commit 04266d6821c3dbf931b0e01130cf7312264c830a Author: edouard Date: Fri Oct 7 12:15:36 2022 +0200 Add wallet policy module commit cb208e6e7a12aeb87b7814ef9b6b6275f560a47c Author: edouard Date: Tue Oct 4 12:31:46 2022 +0200 Add client commands to interpreter commit 1cdb3769e2b32c6d3192757c8eb134f3ce272cc7 Author: edouard Date: Sun Oct 2 22:35:34 2022 +0200 Add merkle module commit 36f3f37326f4d35a768746a025640862adb01069 Author: edouard Date: Thu Sep 29 13:49:18 2022 +0200 Added rust client library commit 51dbb1a5e9a84c3b091577670afea2eb3d248cd0 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Nov 24 11:36:41 2022 +0100 Allow interaction with swap to continue even when an invalid APDU is sent first commit dd81561b3210823a13553e8489229d2cefb89339 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Nov 23 14:18:21 2022 +0100 Update docs on wallet policy name commit f2d8230113dc8c9d09f4ab47d8a1fe6ddbb73c76 Merge: 313188f 9e9801f Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Nov 16 13:38:26 2022 +0100 Merge pull request #85 from LedgerHQ/prepare-release Prepare release 2.1.0 commit 9e9801f09275e4493d5b0c90cd7501219b160d68 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Nov 16 12:23:57 2022 +0100 Bump version to 2.1.0; update CHANGELOG. Miniscript release <3 commit 313188f732a6f9743fa9de32d488f4b3af33f45f Merge: a4a624d 027f7d5 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Nov 9 11:03:22 2022 +0100 Merge pull request #82 from LedgerHQ/electrum-cryptokey Whitelist m/4541509h/1112098098h for xpub export commit 027f7d5966f798702282d8d1ed1702e0b6ca620b Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Nov 9 10:10:46 2022 +0100 Whitelist m/4541509h/1112098098h for xpub export commit a4a624da0b85c86d8f5fa35014018a8c87887a56 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Oct 27 23:08:56 2022 +0200 Bump version 2.1.0-rc3 commit 9efa8b3585c7767c993fb77c5a595ed914842bdb Merge: 5c39d58 8ef34d1 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Oct 27 15:57:53 2022 +0200 Merge pull request #79 from LedgerHQ/improve-python-client Various improvements to the python client commit 8ef34d147e5f3b067e2d074b7859a11bcbf1e9a0 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Oct 27 09:59:50 2022 +0200 Generalize get_internal_xpub so that it also works for empty path commit bed18a7be4ce8e33dcd143928e749f0b313afb67 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Oct 26 17:06:43 2022 +0200 Bump library version; update changelog commit 6b2978cf96eb0cd8bb4ca9dbcd5d4830197576f4 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Oct 26 16:46:43 2022 +0200 Added new 'path' parameter to TransportClient constructor when using the 'hid' interface commit e808caebff39591ed108387a270d13b5505d4dd1 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Oct 25 11:38:24 2022 +0200 Move version into __version__ module attribute commit 9e45c9b39340f0a333c1e7b9dad9c8f789c20448 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Oct 25 10:22:04 2022 +0200 Allow the psbt parameter of sign_psbt to be a string or bytes array commit 2923b822613f24420548a4138ad53e17a3bc5519 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Oct 25 10:14:28 2022 +0200 Remove stale print; improve test_sign_psbt_miniscript_multikey commit c7e1a5f3b51c6dc7b6f9d01cdaa1f685b65548cd Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Oct 20 09:53:26 2022 +0200 Fix typo in comment commit 5c39d58416899fefb5ca3ea7782bd694f9de6b62 Merge: c1808ce 731b357 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Oct 26 13:41:35 2022 +0200 Merge pull request #80 from LedgerHQ/fix-policy-registration Allow registering unusual p2pkh or p2wpkh policies commit 731b357ef372ef64814efd087b698fddc8a4b989 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Oct 25 15:29:34 2022 +0200 Update codecov-action in CI commit 1b6ff0a9e1907f27b01c869c4f7ade0709a55a6a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Oct 26 13:09:25 2022 +0200 Allow registering unusual p2pkh or p2wpkh policies; minor refactoring of registration tests commit c1808cef12bc0106417155dbcf73c5d750ef19b5 Merge: dac3de1 f739afc Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Oct 20 09:22:13 2022 +0200 Merge pull request #77 from LedgerHQ/swap-fixes Swap fixes commit f739afc01113de462293cafd45c521f49c88251b Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Oct 20 09:11:44 2022 +0200 Fix missing return commit 4fb02f5b0f17685b12af4b80c22e1a3939085136 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Oct 17 16:04:51 2022 +0200 Bump rc version commit 3b4c8182f19fcd6e8f89a693c33d019b23dd0611 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Oct 17 16:03:51 2022 +0200 Enabled GET_EXTENDED_PUBKEY and GET_WALLET_ADDRESS during swap commit dac3de135fbcb6975fd8b4dfe83cfd75f0a25d15 Merge: c4f973e 78a028d Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Oct 5 15:40:27 2022 +0200 Merge pull request #73 from LedgerHQ/cleanup-lib Improvements to python client commit 78a028d1ea898b18a05bdeb7ece55937d0ea1be3 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Oct 4 17:05:37 2022 +0200 Fix confusion between protocol version and wallet policy version commit d8b563a7450ce95692dcf4c7d6cd8e5b00d0f1d3 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Oct 4 10:57:55 2022 +0200 Test pubkeys also for the legacy app (computed by the library) commit 90d13e162b4a21d48e411505f3b4bda1c316ac0e Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Oct 4 10:51:32 2022 +0200 Return each signature's pubkey when using the legacy client commit bcee3083ccf502e5fe194a1bb230f0c4e02b4104 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Oct 4 10:49:40 2022 +0200 Small improvements to code style; fixed typo in legacy client commit c4f973ef3ee88d8a14c1b1cbea83f361fcc9ff84 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Oct 3 14:30:49 2022 +0200 Fix typo in comment commit 84a72ff6f4f8987d70c7907656d601f227d9d732 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Sep 21 17:18:49 2022 +0200 Add -rc suffix to version number commit 057d9a41cbdbde59694c74e4d16d84032bee0e48 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Sep 19 11:54:45 2022 +0200 Fix incompatibility with swap libcall arguments (introduced in 3fe021f1) commit 1a5d95c9c8c874a8113c9bb2f0d622f7d343eea4 Merge: 636c6c2 9c56518 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Sep 19 11:08:27 2022 +0200 Merge pull request #72 from LedgerHQ/legacylib Update python client library to support the the Bitcoin Legacy app releases commit 636c6c2db6225fb65b0c02ff79207c276880436e Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Sep 16 10:06:54 2022 +0200 Remove codeql and sonarcloud workflows from 'experimental' branch commit 9c565186feff3bff3ccb0892185f38e434482f43 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Sep 15 17:13:42 2022 +0200 Update python client library to support the the Bitcoin Legacy app releases commit 217ae7e0e7c56ccc9fa95602ed2a963aa4ac0d9b Merge: 9119cae 0a3ee65 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Sep 15 16:40:11 2022 +0200 Merge pull request #71 from LedgerHQ/experimental Merge all recent developments commit 0a3ee6583300fe8f1049db61fb16219cd9369dac Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Sep 15 15:05:41 2022 +0200 Revert "Enable CI workflows on the 'experimental' branch" This reverts commit ee9983492b992fdfb63238bac65dae2958d90285. commit 7f40a8ded01b8486543929ab3a1d0e7f9e10f760 Merge: 34274d9 ecaefe9 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Sep 12 10:26:13 2022 +0200 Merge pull request #67 from LedgerHQ/ripemd160 Add fallback implementation for ripemd160 when missing in hashlib commit 34274d95630e9d6f79aa27c2a8aa34e886d5bf5b Merge: bbe535c b7f0bc9 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Sep 9 13:13:14 2022 +0200 Merge pull request #69 from LedgerHQ/debug1 Add missing import when DEBUG=1 commit b7f0bc9b27f7147083087c1cd066943facf296c7 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Sep 9 12:07:45 2022 +0200 Add missing import when DEBUG=1 commit ecaefe9ea3f59720f58c11aef29235b1f682278f Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Sep 8 23:15:16 2022 +0200 Update minimum version of python-bip32 to 3.3 commit 651b48835eac26f99f19cfd39ee8860c86b29bed Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Sep 7 11:33:28 2022 +0200 Add fallback implementation for ripemd160 when missing in hashlib commit bbe535c3ee9331c13c4d2f9f5a84f48dd67e0919 Merge: e07e8d6 41bee86 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Sep 7 15:49:58 2022 +0200 Merge pull request #68 from LedgerHQ/fix-ux-interruptions Fixes UX interruptions not working on NanoS+ commit 41bee869f91dabad09f6253d88893a6d5cd1619f Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Sep 7 15:24:00 2022 +0200 Fixes UX interruptions not working on NanoS+ commit e07e8d64436ad3fbe864a96884c8581df6cd5b47 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Aug 29 17:04:20 2022 +0200 Remove unused old ui code commit 9f6750d2decf881e172a1d49c3b04622b2444824 Merge: c278ebe cfe3922 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Aug 29 13:31:53 2022 +0200 Merge pull request #64 from LedgerHQ/jslibupdate Update JS client libraries; update python lib and app code to wallet policies naming commit cfe39224ededda89130f5589e841ea1771da47e1 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Aug 22 14:33:45 2022 +0200 Updated app code to use the "wallet policy" naming convention commit 3cd118f75917a66ae2cecc59759ad653608a79cb Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Aug 22 15:31:36 2022 +0200 Add test with legacy app to CI commit da2422d3b8f0fca07f90f41cada3af48dd4121f6 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Aug 22 15:54:21 2022 +0200 Bump pyton library version commit 51f8e423b7cc00ad2ee53aa29b0c54d912777293 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Aug 22 14:02:52 2022 +0200 Updated python client to use the "wallet policy" naming convention commit 2e114a38c2e7b5a1e256f48d84b9b37935db1e08 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Aug 22 13:05:23 2022 +0200 Fixed outdated comment commit 0d5043c3fb8b0693e4f2eeac67059d1bea0efe0f Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Aug 22 11:30:21 2022 +0200 Add code comment for signPsbt's return value commit b6c6b1ef6b5dbfa631a6a3480cd42fc91a433a9f Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Aug 19 11:06:06 2022 +0200 Update JS client library to new protocol version commit c278ebe6b8ce869baf069187ddfdb1b2d15fbf21 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Aug 19 09:46:48 2022 +0200 Remove unnecessary imports commit 49a9e1da67ac25d1a78c53cc1938992065d20126 Merge: 037d865 fab5772 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Aug 18 11:51:33 2022 +0200 Merge pull request #62 from LedgerHQ/blocking-ux Refactor UX calls to be blocking; simplify dispatcher commit fab57724f7d0aa6a1b40fa2bf5566c72275ad15c Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Aug 18 11:40:16 2022 +0200 Removed redundant handler header files commit 037d8658edf3dcc51e56a72d48b2f9f72ab7a945 Merge: ee3f0fa 4cea667 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Aug 17 15:58:13 2022 +0200 Merge pull request #61 from LedgerHQ/thepurge Removes the legacy app support and all the altcoins commit ee3f0fa64ccd94182874461054f4a6995c1059a1 Merge: ee99834 8cde217 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Aug 17 15:46:05 2022 +0200 Merge pull request #31 from LedgerHQ/miniscript Miniscript support commit 2ea3ded018602a46a3a9135a35eec42100ece609 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Aug 16 11:59:36 2022 +0200 Refactored common code in sign_sighash_ecdsa_and_yield and sign_sighash_schnorr_and_yield commit 8d0b8a02acdd3e5fb3a39c15a7d3e82cc2bc24eb Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Aug 12 15:35:14 2022 +0200 Remove obsolete dispatcher feature of command processors commit 89a62be41a1cbf8e6ac28a2444d6a00a203ae330 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Aug 12 14:40:53 2022 +0200 Further refactoring and stack optimizations commit 41c375c058a814b0122fd96f584dc6e3ca4a3c08 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Jul 22 10:59:26 2022 +0200 Refactored apdu handlers to be stateless commit d170a3cbbb26b2af4aa6e6ad6ef346056fa497df Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Jul 21 17:57:45 2022 +0200 Simplified dispatcher by removing features that are no longer used commit 4db34a0cdad347cbc8d6cb2cae8f4d5f5238f6c0 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Jul 21 17:15:39 2022 +0200 Refactor UX calls to work with blocking calls commit 4cea667db827957e9f2248a5c401fce2704c1882 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Aug 9 16:00:15 2022 +0200 Add codeql and sonarcloud workflows to 'experimental' branch commit 1605b850f5126a50395c801fc76145c24af87dd5 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Aug 9 15:53:38 2022 +0200 Removed unused constants commit e4ecd453f20ba06ffb49e0b35310a3827a9355bb Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Aug 9 15:53:20 2022 +0200 Removed unused G_app_mode commit 3fe021f17ad4e2fa264824cde89c7b628873daf2 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jul 13 14:39:21 2022 +0200 Deleted everything legacy commit 8cde217b35c6ec7a32976f4d49b263fb2974d214 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Aug 9 14:14:30 2022 +0200 Fix mistake in computation of u flag for and_b commit b20ffa070ca4643bee46b2838c2017ae94a9421e Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Aug 9 14:13:43 2022 +0200 Improvements related to allowed descriptors: - Make sure that miniscript is disabled within sh(wsh()) descriptors - Fix checks for sortedmulti validity rules commit 14d558d39fe406deec7f8f71bc5fa97be699acb4 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Aug 9 11:33:16 2022 +0200 Minor fixes from code review commit 0815461c61f78bb47f61f6916cab42653d17ccef Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jul 12 17:33:58 2022 +0200 Allow larger policies on non-NanoS devices commit 27971d68ae441aeba295bf7ea7bc5a35e267f28c Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jul 12 12:03:10 2022 +0200 Fixed small issues from sonarcloud commit 76cd7e07ab4a914a147725e963f844519c685a6e Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jul 11 16:51:27 2022 +0200 Minor refactoring of handler_sign_psbt to reduce stack footprint commit ccae0aaa44e83f18a9035465b751669be289c66b Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jul 11 15:29:49 2022 +0200 Added collision detection to keys matching the fingerprint; refactored checks for internal inputs/outputs commit a6820250d26e20c8e1ebc221f29293eefdedaeae Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jul 6 17:14:18 2022 +0200 Save some global memory for wallet UI flows commit 281572b6cde86a2e6484d67d187ebd40face0985 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jul 6 15:46:45 2022 +0200 Memory optimization for the wallet policy abstract syntax tree: use relative pointers for child nodes instead of absolute ones commit 256289937f30dbb5e1caa7c05c7c3546aecdd38d Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jul 5 15:54:33 2022 +0200 Added checks for miniscript policy sanity during wallet policy registration; added tests commit 451dee420356fbf62c667cdbeb71bee3e8ca9a34 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Jul 1 17:24:34 2022 +0200 Added computations for max ops and stack items, and enabled corresponding unit tests commit 342c1ff6f53cb578d5df97babf472c57682e6902 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Jun 30 09:26:34 2022 +0200 Added miniscript script size calculation commit 4362aece5c2739645ca2e5f444901d263bb1a65c Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jun 29 15:56:42 2022 +0200 Added detection of timelock mixing for miniscript, and unit tests commit 3f1e54ee7b71b19ecf5bd8e909ec9c0dd53d9421 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jun 29 09:12:23 2022 +0200 Updated miniscript tests from upstream, and added more tests commit 8176e33502a66ebc09780f4b774b09069eeffe88 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jun 28 16:21:31 2022 +0200 Added function to verify if a miniscript has signatures, and whether is malleable; enabled corresponding tests commit 814a24459a8328d46572295bd4375cfd6b439430 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Jun 24 15:21:46 2022 +0200 Minor refactoring of wallet code checking wallet policy hmac commit ce40d121b2436f487a7a89d7d8008f6e627b751d Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jun 21 17:38:47 2022 +0200 Fix broken sighash_default test after rebase commit 291abc26ae1214063104375b777ec4ecf73b0440 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jun 13 17:55:03 2022 +0200 Add support for the notation; reworked psbt pubkey identification logic to work with general key placeholders commit 898b1f261f8d47608ecabb188629f95aef0b5a0f Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jun 20 14:35:58 2022 +0200 Refactored callback mechanism in get_merkleized_map and check_merkle_tree_sorted; deleted useless callback logic from the dispatcher commit 141a8314cff58c1dd3efa397c3310b8786707b3b Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Jun 17 09:29:09 2022 +0200 Fix incorrect output of CTxOut.__repl__ commit 343492d6910deb48a836130a9807a69c1e165723 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Jun 10 16:56:18 2022 +0200 Use custom bitcoin-core image (to be reverted once bitcoin-core supports miniscript) commit 202367259fb31d3b695eaa4ee2cd59ccd160666d Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Jun 10 14:43:52 2022 +0200 Added registration and signing support for policies with multiple internal keys. Added tests for multisig and miniscript. commit 570063d189df85c78db973656c925ca11bbf1dca Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Jun 9 14:28:36 2022 +0200 Allow external keys with no key origin information in policies commit 29eca27e40632c1cb2e9e275ce95d91fc8106f6e Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue May 31 17:49:29 2022 +0200 Refactor common code for wallet policy parsing commit 28b80a92a9d6377ae56a701d0d6429e1e60d6c74 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue May 31 14:41:53 2022 +0200 Delete unused variables commit 6a6f08fedfc8ea63d399796cd6fb19b3f4cc6cd6 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue May 31 10:41:42 2022 +0200 Support wallet names up to 64 characters. Other changes: - updated UX for wallet register/show address/spend from wallet, separating the action from the wallet name step - wallet name is now paginated if long - deleted redundant MAX_WALLET_POLICY_NAME_LENGTH constant - added a test with a wallet with a long name commit 24f7228b41b90b397ad2fbc60c43e1c3edc5eb1a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed May 25 15:13:34 2022 +0200 Added support for multi/sortedmulti up to 16 keys, while reducing memory usage commit dc72d398a8ee17c5f439be3fb3e501f7ffb799fe Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri May 20 11:44:25 2022 +0200 Initial (partial) support to wallet policies V2 in app and python lib; added tests to ensure backwards compatibility commit 16e1e330455e664452621e9c36aaa03e7503919b Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu May 19 15:17:51 2022 +0200 Updated new specs to a subset of Wallet Policies; moved v0 specs to separate folder commit 1fb1eeb329a08f2b3758307417757f38df99165b Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue May 17 16:02:28 2022 +0200 Make miniscript compiler commands static commit 24da119c767a4047831b05d46cac850643c08d6a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Apr 27 11:24:33 2022 +0200 Make sure miniscript is not allowed within sh commit d051f05c2aa7e4b2bfa1c7f73fb4af377311b564 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Apr 26 17:17:21 2022 +0200 Added missing docs in wallet.h; removed stale TODO commit e5f8f2365f736972ef37937add394429a64f87ca Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Apr 26 11:18:09 2022 +0200 Added unit tests for buffer_peek_n commit 98fe940a022b67ddc349fa59c1f550f8a6f459c4 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Apr 22 18:02:17 2022 +0200 Removed some old TODOs that are already addressed, and re-enabled disabled test commit 17225f2cc19903cb558195b81a592e5002998db3 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Fri Apr 22 17:30:49 2022 +0200 Improvement in types; changed types for thresholds and key index to int16_t to reduce memry size of nodes using them commit c77fa88ff062496bd26fce59eb3d2c004819ce1d Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Apr 21 18:54:37 2022 +0200 Added type checking to miniscript parser; added unit tests for miniscript parsing and types commit 507845b2837c7ef23b711e91d5b4d74655ffcbe4 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Thu Apr 21 18:54:07 2022 +0200 Change miniscript of decaying 3of3 due to change in miniscript type properties commit cee50455ff3fcf3515b6b7cad091ab1efdb7580a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Apr 5 16:18:05 2022 +0200 Added one more valid and one invalid testcase with [sorted]multi() commit b09de348de05c0bc7b4b6eb0d3b5816d37a0b75f Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Apr 5 14:47:22 2022 +0200 Various small code improvements commit c115ba1f211125081d73bebdfac3a9f17b5c4850 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Apr 5 11:41:00 2022 +0200 Avoid compilation problems with the debug helpers commit 037ae5546ffc70a418b1f27cf1515f2667b5b71d Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Apr 5 10:56:31 2022 +0200 Refactor common code to parse child scripts commit fffb089ce546bc95eaf6151aaa135a5cda1fb029 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Apr 5 10:10:02 2022 +0200 Improved validity checks for descriptors commit 8d604fee1921131b338696d61b323eebcb8fdea7 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Mar 30 17:50:54 2022 +0200 Initial full implementation of miniscript operators commit 9586d29979ada20003a3a1b87dcbc7559c9d04a7 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Apr 4 14:41:03 2022 +0200 Add debug macro to simplify error returns with message on debug builds commit b1a4973d74fe676ffc8c170298fc45f1b9020c4d Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Mar 29 09:04:21 2022 +0200 Removed function to compute signing pubkey commit 31eb992e15fcc21eb31fb8df0ed1c9cee3e8732c Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 28 18:00:38 2022 +0200 Bump app version to 2.1.0; upgrade python client to version 1 of the protocol; default to the legacy client below version 2.1 of the python client commit a880eef6e5ad07a491e5a9a99c2810cb8104936b Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Mar 28 14:58:09 2022 +0200 Use p2 as protocol version; upgrade protocol version 1 to include the pubkey in the YIELD message during signing commit ee9983492b992fdfb63238bac65dae2958d90285 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jul 13 09:35:50 2022 +0200 Enable CI workflows on the 'experimental' branch commit d0f98d031f121954e0fc5cdd9c614eaddddb888b Author: Sarah GLINER Date: Mon Jun 27 20:02:06 2022 +0200 tests: add tests for all sighash types commit de3e8fba206b38bc1a7ea88f489b0bae212def1c Author: Sarah GLINER Date: Thu Jun 30 14:39:21 2022 +0200 sign_psbt: segwitv0 supports all sighash types commit 0acde7b448b892316e75e25587a643c5efa78a14 Author: Sarah GLINER Date: Tue Jun 21 14:33:09 2022 +0200 sign_psbt: add step to check sighash in input validation commit b2f405229cf5b6027a6bd9caf9a57b06b13bfd5f Author: Sarah GLINER Date: Tue Jun 21 12:15:23 2022 +0200 sign_psbt: add alert_nondefault_sighash to input validation commit 2f684ed14ef0b562b2f581ebd5d1f53f89e59852 Author: Sarah GLINER Date: Tue Jun 21 12:14:28 2022 +0200 display: add warning flow for non-default sighash commit 4b343b182449e304aa06ef7be47bd2ef611dff63 Author: Sarah GLINER Date: Tue Jun 21 14:35:00 2022 +0200 sign_psbt: add SIGHASH_SINGLE implementation commit b25a77201a48eae30feafe0f1209e6dac3c461b6 Author: Sarah GLINER Date: Mon Jun 27 14:25:04 2022 +0200 sign_psbt: fix signature for ANYONE_CAN_PAY commit 9119caeb08e5e93fc8ea9c4f883bb1734eb6c190 Merge: 860bcee ee04542 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jul 5 15:56:04 2022 +0200 Merge pull request #60 from mlafon-ledger/test_ql Add CodeQL Workflow commit ee04542a344ab064283c74aa0e56586fe9961041 Author: Marion LAFON Date: Wed Jun 29 14:03:13 2022 +0200 CodeQL analysis commit 860bcee519bcaa7dc28c9b5c4f1f17e4db584f23 Merge: f3a6b0a 3cb47b8 Author: Sarah Gliner <105934250+sgliner-ledger@users.noreply.github.com> Date: Mon Jul 4 15:47:37 2022 +0200 Merge pull request #59 from LedgerHQ/fix-speculos Fix speculos commit 3cb47b8914e041c985f5300a26e732425a35b405 Author: Sarah GLINER Date: Mon Jul 4 11:09:26 2022 +0200 CI: enable manual build of speculos-bitcoin image commit d4f40ccdbb70bcde22ebbb5cbcd2ff5ba2e2cf44 Author: Sarah GLINER Date: Fri Jul 1 18:07:32 2022 +0200 CI: update sdk version for nano s+ commit f3a6b0a020766cababcebe50879477023433a9c5 Merge: 17bf761 c1a20ba Author: Sarah Gliner <105934250+sgliner-ledger@users.noreply.github.com> Date: Wed Jun 15 10:56:37 2022 +0200 Merge pull request #56 from LedgerHQ/sighash-default-support Sighash default support commit c1a20ba2f83fb0557482e46cd1d69e09eab5596f Author: Sarah GLINER Date: Fri Jun 10 11:43:59 2022 +0200 Add test for taproot with SIGHASH_DEFAULT commit 07253bdd434abf5a1778532afc42695416a0ab62 Author: Sarah GLINER Date: Wed Jun 15 09:06:49 2022 +0200 Add SIGHASH_DEFAULT suport commit 17bf76197e3438fb6f22bd0f98942daa1aee6f23 Merge: 7907438 7592255 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed Jun 8 17:41:09 2022 +0200 Merge branch 'update-zec-consensus-branch-id' into develop commit 79074382f9ac2562ac09004493ff6ed6e3f1ed8c Merge: 61d1b9a 4b91ed2 Author: Sarah Gliner <105934250+sgliner-ledger@users.noreply.github.com> Date: Wed Jun 8 16:59:45 2022 +0200 Merge pull request #53 from LedgerHQ/all-nano-on-ci All nano on ci commit 4b91ed236d7c3c7dbc8b7b324c99b4676db9f085 Author: Sarah GLINER Date: Tue Jun 7 09:49:47 2022 +0200 Add caveats file to document workaround for Speculos OCR problems commit 50487ed03b9c78a7b00096df414f3b0355931d28 Author: Sarah GLINER Date: Mon Jun 6 09:37:21 2022 +0200 Tests: workaround to fix speculos OCR for NanoX/SP commit ae75c70e6ffba05917c1838aeb0f2e53fe4154fa Author: Sarah GLINER Date: Mon Jun 6 16:41:30 2022 +0200 Tests: address parsing is now compatible with NanoX/SP commit ea72e04b26c39a0c334ec6c65b92c208348ffca5 Author: Sarah GLINER Date: Fri May 20 15:54:43 2022 +0200 Added tests for all different models commit a3c193a691c1dda469fef121a4577a7b9f23b7a1 Author: Sarah GLINER Date: Fri May 20 15:46:00 2022 +0200 Added model and sdk as cli arguments for speculos in test_utils fixtures commit 0b0ac8ef072598c0e6ad99e6bf1269725bd14f1e Author: Sarah GLINER Date: Fri May 20 10:32:29 2022 +0200 Added nano X and nano S+ to ci compilation commit 7592255d8028ca04819453ac682644f3729cac36 Author: Sarah GLINER Date: Tue Jun 7 11:56:07 2022 +0200 Update consensus branch id to NU5 commit 61d1b9a19f0dfce4fabd2ab1ce6822100f59101f Merge: 2334da1 1826e0d Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jun 7 10:23:20 2022 +0200 Merge pull request #55 from LedgerHQ/fix-swap-state-2 Fix erroneous zeroing of G_swap_state fields after initialization commit 1826e0dc36e6027e2c4f678b46a8ff55f5ae68e7 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue Jun 7 10:13:38 2022 +0200 Fix erroneous zeroing of G_swap_state fields after initialization commit 2334da1d45ec2e1929da8c7c8930d9f3ad7243b3 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jun 6 14:56:26 2022 +0200 Remove unnecessary space in UX string commit 8e8282f30565778dabb57fa1e4dda9296567f33b Merge: f3a1e08 1c4ad4a Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jun 6 14:46:22 2022 +0200 Merge pull request #52 from LedgerHQ/nonwitnessutxo Support signing of segwit inputs with missing non-witness-utxo commit 1c4ad4a4f1b623932f7afaf4f3406e621301b62b Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jun 6 14:05:29 2022 +0200 Bump version 2.0.6; updated CHANGELOG commit 503cde1db9b3fe0ca0f1e7ead376a8ae212be7ab Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jun 6 14:00:59 2022 +0200 Allow signing segwitv0 transactions with missing non-witness-utxo commit 3b679c9dacc17cc77589a1c2a8ec714209364ffa Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jun 6 10:57:03 2022 +0200 Added test with segwit transaction and missing non-witness-utxo commit f3a1e08c03a7cbcf5f903d519db564d13f108713 Merge: e0f25de 1a2ae84 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon Jun 6 11:29:41 2022 +0200 Merge pull request #51 from LedgerHQ/fix/overlaping_globals Copying global parameters, as they could formerly be overridden commit 1a2ae84065da5b414f5598b9e00313eb122f3900 Author: Lucas PASCAL Date: Mon Jun 6 11:21:58 2022 +0200 [fix] Copying global parameters, as they could formerly be overridden commit e0f25de0e96f54e397e4487a38effc8f5feb57b1 Merge: 567f011 d934f49 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon May 30 11:03:01 2022 +0200 Merge pull request #48 from LedgerHQ/externalinputs Fix signing with external inputs; added corresponding test commit d934f49a898f016d8666a1f05a1b0f75b8dba424 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Mon May 30 10:38:13 2022 +0200 Fix signing with external inputs; added corresponding test commit 567f011adcb3bd1ff5c21d4d51be1351c570b00c Merge: 8afa588 1f95791 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue May 10 12:56:49 2022 +0100 Merge pull request #39 from tjulien-ledger/develop hydra icon fix commit 1f95791e0034b91ab2a57de18b3b373a34162a0f Author: tjulien-ledger Date: Tue May 10 13:46:57 2022 +0200 hydra icon fix commit 8afa58817afc9c20430d9d6f5686b6b4c1c802e3 Merge: 5d7e41a 2aaaa4d Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Wed May 4 10:01:36 2022 +0200 Merge pull request #36 from LedgerHQ/fix-legacy-quirks Fix legacy quirks commit 2aaaa4d286bcc5c872fd7e1e2f86c11e7375eacc Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue May 3 16:22:29 2022 +0200 Bump version 2.0.5 commit 4f84aece45576265b390b689fac1929198b38879 Author: Salvatore Ingala <6681844+bigspider@users.noreply.github.com> Date: Tue May 3 16:01:18 2022 +0200 Add 0xF0 to the CLAs that are sent to the legacy app, as some client libraries are breaking because they rely on deprecated/undocumented behavior --- .github/workflows/Dockerfile | 28 +- .../workflows/build_and_functional_tests.yml | 34 + .github/workflows/builder-image-workflow.yml | 4 +- .github/workflows/ci-workflow.yml | 136 +- .github/workflows/codeql-workflow.yml | 47 + .github/workflows/guidelines-enforcer.yml | 22 + .github/workflows/sonarcloud.yml | 74 +- .github/workflows/swap-ci-workflow.yml | 16 + .gitignore | 11 +- CHANGELOG.md | 100 + Makefile | 355 +- README.md | 2 +- bitcoin_client/.gitignore | 3 +- bitcoin_client/CHANGELOG.md | 30 + bitcoin_client/README.md | 18 +- bitcoin_client/ledger_bitcoin/__init__.py | 18 +- .../ledger_bitcoin/btchip/btchipHelpers.py | 4 +- bitcoin_client/ledger_bitcoin/client.py | 127 +- bitcoin_client/ledger_bitcoin/client_base.py | 50 +- .../ledger_bitcoin/client_command.py | 4 +- .../ledger_bitcoin/client_legacy.py | 63 +- .../ledger_bitcoin/command_builder.py | 14 +- bitcoin_client/ledger_bitcoin/common.py | 24 +- bitcoin_client/ledger_bitcoin/descriptor.py | 633 --- bitcoin_client/ledger_bitcoin/embit/LICENSE | 21 + bitcoin_client/ledger_bitcoin/embit/README.md | 5 + .../ledger_bitcoin/embit}/__init__.py | 0 bitcoin_client/ledger_bitcoin/embit/base.py | 116 + bitcoin_client/ledger_bitcoin/embit/base58.py | 79 + bitcoin_client/ledger_bitcoin/embit/bech32.py | 146 + bitcoin_client/ledger_bitcoin/embit/bip32.py | 309 ++ .../ledger_bitcoin/embit/compact.py | 41 + .../embit/descriptor/__init__.py | 3 + .../embit/descriptor/arguments.py | 515 +++ .../ledger_bitcoin/embit/descriptor/base.py | 22 + .../embit/descriptor/checksum.py | 56 + .../embit/descriptor/descriptor.py | 384 ++ .../ledger_bitcoin/embit/descriptor/errors.py | 17 + .../embit/descriptor/miniscript.py | 1070 ++++++ .../embit/descriptor/taptree.py | 151 + bitcoin_client/ledger_bitcoin/embit/ec.py | 263 ++ bitcoin_client/ledger_bitcoin/embit/hashes.py | 41 + bitcoin_client/ledger_bitcoin/embit/misc.py | 70 + .../ledger_bitcoin/embit/networks.py | 76 + bitcoin_client/ledger_bitcoin/embit/script.py | 212 + .../ledger_bitcoin/embit/util/__init__.py | 6 + .../embit/util/ctypes_secp256k1.py | 1202 ++++++ .../ledger_bitcoin/embit/util/key.py | 597 +++ .../ledger_bitcoin/embit/util/py_ripemd160.py | 407 ++ .../ledger_bitcoin/embit/util/py_secp256k1.py | 384 ++ .../ledger_bitcoin/embit/util/secp256k1.py | 12 + .../exception/device_exception.py | 4 +- .../ledger_bitcoin/exception/errors.py | 4 + bitcoin_client/ledger_bitcoin/psbt.py | 19 +- .../ledger_bitcoin/py.typed | 0 bitcoin_client/ledger_bitcoin/ripemd.py | 115 + .../ledger_bitcoin/segwit_addr.py | 62 +- bitcoin_client/ledger_bitcoin/transport.py | 263 ++ bitcoin_client/ledger_bitcoin/tx.py | 2 +- bitcoin_client/ledger_bitcoin/wallet.py | 75 +- bitcoin_client/pyproject.toml | 2 +- bitcoin_client/setup.cfg | 8 +- bitcoin_client/tests/requirements.txt | 5 +- bitcoin_client/tests/test_client_legacy.py | 13 + .../test_get_wallet_address_legacyapp.py | 20 +- bitcoin_client/tests/test_ripemd160.py | 24 + .../tests/test_sign_psbt_legacyapp.py | 89 +- bitcoin_client_js/README.md | 43 +- bitcoin_client_js/package.json | 11 +- .../src/__tests__/appClient.test.ts | 215 +- .../automations/register_wallet_accept.json | 2 +- .../automations/sign_message_accept.json | 2 +- .../automations/sign_with_wallet_accept.json | 4 +- .../src/__tests__/psbtv2.test.ts | 33 + bitcoin_client_js/src/index.ts | 17 +- bitcoin_client_js/src/lib/appClient.ts | 217 +- bitcoin_client_js/src/lib/bip32.ts | 4 +- bitcoin_client_js/src/lib/clientCommands.ts | 9 + bitcoin_client_js/src/lib/policy.ts | 23 +- bitcoin_client_js/src/lib/psbtv2.ts | 176 +- bitcoin_client_rs/.gitignore | 3 + bitcoin_client_rs/CONTRIBUTING.md | 39 + bitcoin_client_rs/Cargo.toml | 36 + bitcoin_client_rs/README.md | 73 + .../examples/ledger_hwi/Cargo.toml | 19 + .../examples/ledger_hwi/README.md | 6 + .../examples/ledger_hwi/src/main.rs | 231 ++ .../examples/ledger_hwi/src/transport.rs | 109 + bitcoin_client_rs/src/apdu.rs | 135 + bitcoin_client_rs/src/async_client.rs | 388 ++ bitcoin_client_rs/src/client.rs | 366 ++ bitcoin_client_rs/src/command.rs | 148 + bitcoin_client_rs/src/error.rs | 21 + bitcoin_client_rs/src/interpreter.rs | 315 ++ bitcoin_client_rs/src/lib.rs | 15 + bitcoin_client_rs/src/merkle.rs | 223 ++ bitcoin_client_rs/src/psbt.rs | 863 +++++ bitcoin_client_rs/src/wallet.rs | 392 ++ bitcoin_client_rs/tests/client.rs | 370 ++ .../tests/data/get_extended_pubkey.json | 45 + .../tests/data/get_wallet_address.json | 61 + .../tests/data/register_wallet.json | 89 + bitcoin_client_rs/tests/data/sign_psbt.json | 1303 +++++++ bitcoin_client_rs/tests/utils/mod.rs | 89 + .../test_sign_psbt_with_sighash_types.ipynb | 936 +++++ doc/bitcoin.md | 45 +- doc/merkle.md | 2 +- doc/v0/bitcoin.md | 417 ++ doc/v0/wallet.md | 125 + doc/wallet.md | 183 +- glyphs/Bitcoin_64px.bmp | Bin 0 -> 674 bytes glyphs/blue_badge_bitcoin.gif | Bin 362 -> 0 bytes glyphs/blue_badge_bitcoin_cash.gif | Bin 1420 -> 0 bytes glyphs/blue_badge_bitcoin_gold.gif | Bin 1420 -> 0 bytes glyphs/blue_badge_bitcoin_testnet.gif | Bin 362 -> 0 bytes glyphs/blue_badge_dash.gif | Bin 338 -> 0 bytes glyphs/blue_badge_digibyte.gif | Bin 369 -> 0 bytes glyphs/blue_badge_dogecoin.gif | Bin 363 -> 0 bytes glyphs/blue_badge_komodo.gif | Bin 386 -> 0 bytes glyphs/blue_badge_lbry.gif | Bin 375 -> 0 bytes glyphs/blue_badge_litecoin.gif | Bin 336 -> 0 bytes glyphs/blue_badge_peercoin.gif | Bin 361 -> 0 bytes glyphs/blue_badge_pivx.gif | Bin 344 -> 0 bytes glyphs/blue_badge_qtum.gif | Bin 445 -> 0 bytes glyphs/blue_badge_ravencoin.gif | Bin 1082 -> 0 bytes glyphs/blue_badge_resistance.gif | Bin 339 -> 0 bytes glyphs/blue_badge_stealth.gif | Bin 1460 -> 0 bytes glyphs/blue_badge_stratis.gif | Bin 363 -> 0 bytes glyphs/blue_badge_transaction.gif | Bin 339 -> 0 bytes glyphs/blue_badge_vertcoin.gif | Bin 1399 -> 0 bytes glyphs/blue_badge_viacoin.gif | Bin 362 -> 0 bytes glyphs/blue_badge_warning.gif | Bin 320 -> 0 bytes glyphs/blue_badge_zcash.gif | Bin 339 -> 0 bytes glyphs/blue_icon_toggle_reset.gif | Bin 225 -> 0 bytes glyphs/blue_icon_toggle_set.gif | Bin 227 -> 0 bytes glyphs/nanos_badge_bitcoin_cash.gif | Bin 68 -> 0 bytes glyphs/nanos_badge_bitcoin_gold.gif | Bin 68 -> 0 bytes glyphs/nanos_badge_bitcoin_private.gif | Bin 1134 -> 0 bytes glyphs/nanos_badge_dash.gif | Bin 74 -> 0 bytes glyphs/nanos_badge_digibyte.gif | Bin 1130 -> 0 bytes glyphs/nanos_badge_dogecoin.gif | Bin 75 -> 0 bytes glyphs/nanos_badge_komodo.gif | Bin 77 -> 0 bytes glyphs/nanos_badge_lbry.gif | Bin 68 -> 0 bytes glyphs/nanos_badge_litecoin.gif | Bin 75 -> 0 bytes glyphs/nanos_badge_nix.gif | Bin 1134 -> 0 bytes glyphs/nanos_badge_peercoin.gif | Bin 75 -> 0 bytes glyphs/nanos_badge_pivx.gif | Bin 1133 -> 0 bytes glyphs/nanos_badge_qtum.gif | Bin 1132 -> 0 bytes glyphs/nanos_badge_ravencoin.gif | Bin 65 -> 0 bytes glyphs/nanos_badge_resistance.gif | Bin 74 -> 0 bytes glyphs/nanos_badge_stealth.gif | Bin 1135 -> 0 bytes glyphs/nanos_badge_stratis.gif | Bin 76 -> 0 bytes glyphs/nanos_badge_vertcoin.gif | Bin 1131 -> 0 bytes glyphs/nanos_badge_viacoin.gif | Bin 1132 -> 0 bytes glyphs/nanos_badge_xsn.gif | Bin 1132 -> 0 bytes glyphs/nanos_badge_zcash.gif | Bin 74 -> 0 bytes glyphs/nanos_badge_zcoin.gif | Bin 4098 -> 0 bytes glyphs/nanos_badge_zencash.gif | Bin 1134 -> 0 bytes icons/bitcoin_cash.png | Bin 1636 -> 0 bytes icons/bitcoin_gold.png | Bin 1788 -> 0 bytes icons/bitcoin_private.png | Bin 2353 -> 0 bytes icons/bitcoin_testnet.png | Bin 1639 -> 0 bytes icons/blue_app_bitcoin.gif | Bin 449 -> 0 bytes icons/blue_app_bitcoin_cash.gif | Bin 446 -> 0 bytes icons/blue_app_bitcoin_gold.gif | Bin 431 -> 0 bytes icons/blue_app_bitcoin_private.gif | Bin 445 -> 0 bytes icons/blue_app_bitcoin_testnet.gif | Bin 449 -> 0 bytes icons/blue_app_dash.gif | Bin 389 -> 0 bytes icons/blue_app_digibyte.gif | Bin 408 -> 0 bytes icons/blue_app_dogecoin.gif | Bin 427 -> 0 bytes icons/blue_app_firo.gif | Bin 1017 -> 0 bytes icons/blue_app_gamecredits.gif | Bin 1611 -> 0 bytes icons/blue_app_horizen.gif | Bin 654 -> 0 bytes icons/blue_app_komodo.gif | Bin 466 -> 0 bytes icons/blue_app_lbry.gif | Bin 1747 -> 0 bytes icons/blue_app_litecoin.gif | Bin 373 -> 0 bytes icons/blue_app_nix.gif | Bin 594 -> 0 bytes icons/blue_app_peercoin.gif | Bin 436 -> 0 bytes icons/blue_app_pivx.gif | Bin 395 -> 0 bytes icons/blue_app_qtum.gif | Bin 590 -> 0 bytes icons/blue_app_ravencoin.gif | Bin 1618 -> 0 bytes icons/blue_app_resistance.gif | Bin 1947 -> 0 bytes icons/blue_app_stealth.gif | Bin 498 -> 0 bytes icons/blue_app_stratis.gif | Bin 456 -> 0 bytes icons/blue_app_vertcoin.gif | Bin 397 -> 0 bytes icons/blue_app_viacoin.gif | Bin 433 -> 0 bytes icons/blue_app_xrhodium.gif | Bin 913 -> 0 bytes icons/blue_app_xsn.gif | Bin 1984 -> 0 bytes icons/blue_app_zcash.gif | Bin 399 -> 0 bytes icons/blue_app_zclassic.gif | Bin 509 -> 0 bytes icons/dash.png | Bin 1848 -> 0 bytes icons/digibyte.png | Bin 1968 -> 0 bytes icons/dogecoin.png | Bin 1683 -> 0 bytes icons/firo.png | Bin 3498 -> 0 bytes icons/gamecredits.png | Bin 2031 -> 0 bytes icons/horizen.png | Bin 3269 -> 0 bytes icons/komodo.png | Bin 2400 -> 0 bytes icons/lbry.png | Bin 2273 -> 0 bytes icons/litecoin.png | Bin 1539 -> 0 bytes icons/nanos_app_bitcoin_cash.gif | Bin 1131 -> 0 bytes icons/nanos_app_bitcoin_gold.gif | Bin 1131 -> 0 bytes icons/nanos_app_bitcoin_lite.gif | Bin 1131 -> 0 bytes icons/nanos_app_bitcoin_private.gif | Bin 1131 -> 0 bytes icons/nanos_app_bitcoin_testnet.gif | Bin 1131 -> 0 bytes icons/nanos_app_bitcoin_testnet_lib.gif | Bin 1131 -> 0 bytes icons/nanos_app_bitcoin_testnet_lite.gif | Bin 1131 -> 0 bytes icons/nanos_app_dash.gif | Bin 69 -> 0 bytes icons/nanos_app_digibyte.gif | Bin 1124 -> 0 bytes icons/nanos_app_dogecoin.gif | Bin 70 -> 0 bytes icons/nanos_app_firo.gif | Bin 72 -> 0 bytes icons/nanos_app_gamecredits.gif | Bin 1128 -> 0 bytes icons/nanos_app_horizen.gif | Bin 66 -> 0 bytes icons/nanos_app_hydra.gif | Bin 76 -> 0 bytes icons/nanos_app_hydra_testnet.gif | Bin 76 -> 0 bytes icons/nanos_app_komodo.gif | Bin 76 -> 0 bytes icons/nanos_app_lbry.gif | Bin 1129 -> 0 bytes icons/nanos_app_liquid_headless.gif | Bin 1128 -> 0 bytes icons/nanos_app_liquid_regtest.gif | Bin 1128 -> 0 bytes icons/nanos_app_liquid_regtest_headless.gif | Bin 1128 -> 0 bytes icons/nanos_app_litecoin.gif | Bin 67 -> 0 bytes icons/nanos_app_nix.gif | Bin 1131 -> 0 bytes icons/nanos_app_peercoin.gif | Bin 67 -> 0 bytes icons/nanos_app_pivx.gif | Bin 1128 -> 0 bytes icons/nanos_app_qtum.gif | Bin 1128 -> 0 bytes icons/nanos_app_ravencoin.gif | Bin 62 -> 0 bytes icons/nanos_app_resistance.gif | Bin 1128 -> 0 bytes icons/nanos_app_stealth.gif | Bin 1134 -> 0 bytes icons/nanos_app_stratis.gif | Bin 71 -> 0 bytes icons/nanos_app_vertcoin.gif | Bin 1122 -> 0 bytes icons/nanos_app_viacoin.gif | Bin 1129 -> 0 bytes icons/nanos_app_xrhodium.gif | Bin 82 -> 0 bytes icons/nanos_app_xsn.gif | Bin 648 -> 0 bytes icons/nanos_app_zcash.gif | Bin 67 -> 0 bytes icons/nanos_app_zclassic.gif | Bin 1130 -> 0 bytes icons/nanox_app_bitcoin_cash.gif | Bin 1122 -> 0 bytes icons/nanox_app_bitcoin_gold.gif | Bin 1122 -> 0 bytes icons/nanox_app_bitcoin_private.gif | Bin 1122 -> 0 bytes icons/nanox_app_bitcoin_testnet.gif | Bin 1122 -> 0 bytes icons/nanox_app_bitcoin_testnet_lib.gif | Bin 1122 -> 0 bytes icons/nanox_app_dash.gif | Bin 67 -> 0 bytes icons/nanox_app_digibyte.gif | Bin 1115 -> 0 bytes icons/nanox_app_dogecoin.gif | Bin 68 -> 0 bytes icons/nanox_app_firo.gif | Bin 70 -> 0 bytes icons/nanox_app_gamecredits.gif | Bin 1118 -> 0 bytes icons/nanox_app_horizen.gif | Bin 72 -> 0 bytes icons/nanox_app_hydra.gif | Bin 73 -> 0 bytes icons/nanox_app_hydra_testnet.gif | Bin 73 -> 0 bytes icons/nanox_app_komodo.gif | Bin 72 -> 0 bytes icons/nanox_app_lbry.gif | Bin 1119 -> 0 bytes icons/nanox_app_liquid_headless.gif | Bin 1122 -> 0 bytes icons/nanox_app_liquid_regtest.gif | Bin 1122 -> 0 bytes icons/nanox_app_liquid_regtest_headless.gif | Bin 1122 -> 0 bytes icons/nanox_app_litecoin.gif | Bin 65 -> 0 bytes icons/nanox_app_nix.gif | Bin 1122 -> 0 bytes icons/nanox_app_peercoin.gif | Bin 65 -> 0 bytes icons/nanox_app_pivx.gif | Bin 1118 -> 0 bytes icons/nanox_app_qtum.gif | Bin 1119 -> 0 bytes icons/nanox_app_ravencoin.gif | Bin 73 -> 0 bytes icons/nanox_app_stealth.gif | Bin 1123 -> 0 bytes icons/nanox_app_stratis.gif | Bin 68 -> 0 bytes icons/nanox_app_vertcoin.gif | Bin 1112 -> 0 bytes icons/nanox_app_viacoin.gif | Bin 1118 -> 0 bytes icons/nanox_app_xrhodium.gif | Bin 79 -> 0 bytes icons/nanox_app_xsn.gif | Bin 646 -> 0 bytes icons/nanox_app_zcash.gif | Bin 65 -> 0 bytes icons/nanox_app_zclassic.gif | Bin 1120 -> 0 bytes icons/nix.png | Bin 5640 -> 0 bytes icons/peercoin.png | Bin 2406 -> 0 bytes icons/pivx.png | Bin 1662 -> 0 bytes icons/qtum.png | Bin 3361 -> 0 bytes icons/ravencoin.png | Bin 5301 -> 0 bytes icons/resistance.png | Bin 19575 -> 0 bytes icons/stax_app_bitcoin.gif | Bin 0 -> 347 bytes icons/stax_app_liquid.gif | Bin 0 -> 362 bytes icons/stealth.png | Bin 1860 -> 0 bytes icons/stratis.png | Bin 1982 -> 0 bytes icons/vertcoin.png | Bin 1917 -> 0 bytes icons/viacoin.png | Bin 1884 -> 0 bytes icons/xrhodium.png | Bin 3062 -> 0 bytes icons/xsn.png | Bin 1334 -> 0 bytes icons/zcash.png | Bin 1487 -> 0 bytes icons/zclassic.png | Bin 2652 -> 0 bytes ledger_app.toml | 8 + ragger_bitcoin/README.md | 1 + ragger_bitcoin/__init__.py | 5 + ragger_bitcoin/pyproject.toml | 19 + ragger_bitcoin/ragger_bitcoin.py | 221 ++ ragger_bitcoin/ragger_instructions.py | 98 + ragger_bitcoin/setup.cfg | 26 + src/boilerplate/apdu_parser.c | 2 +- src/boilerplate/dispatcher.c | 134 +- src/boilerplate/dispatcher.h | 85 +- src/boilerplate/io.c | 38 +- src/boilerplate/io.h | 2 + src/boilerplate/sw.h | 5 + src/commands.h | 40 - src/common/base58.c | 2 +- src/common/bip32.c | 57 +- src/common/bip32.h | 55 +- src/common/buffer.c | 10 +- src/common/buffer.h | 29 +- src/common/format.c | 2 +- src/common/merkle.c | 54 +- src/common/read.c | 2 +- src/common/script.c | 165 +- src/common/script.h | 38 +- src/common/varint.c | 2 +- src/common/wallet.c | 3398 ++++++++++++----- src/common/wallet.h | 635 +-- src/common/write.c | 2 +- src/constants.h | 45 +- src/crypto.c | 375 +- src/crypto.h | 93 +- src/cxram_stash.c | 3 +- src/debug-helpers/debug.c | 13 +- src/debug-helpers/debug.h | 25 + src/globals.h | 5 - src/handler/get_extended_pubkey.c | 130 +- src/handler/get_extended_pubkey.h | 20 - src/handler/get_master_fingerprint.c | 12 +- src/handler/get_master_fingerprint.h | 17 - src/handler/get_wallet_address.c | 425 +-- src/handler/get_wallet_address.h | 82 - src/handler/handlers.h | 10 + src/handler/lib/check_merkle_tree_sorted.c | 12 +- src/handler/lib/check_merkle_tree_sorted.h | 22 +- src/handler/lib/get_merkle_leaf_element.c | 2 +- src/handler/lib/get_merkle_leaf_hash.c | 4 +- src/handler/lib/get_merkle_leaf_index.c | 2 +- src/handler/lib/get_merkle_preimage.c | 25 +- src/handler/lib/get_merkleized_map.c | 9 +- src/handler/lib/get_merkleized_map.h | 8 +- src/handler/lib/get_merkleized_map_value.c | 2 +- .../lib/get_merkleized_map_value_hash.c | 2 +- src/handler/lib/get_preimage.c | 9 +- src/handler/lib/policy.c | 2107 ++++++++-- src/handler/lib/policy.h | 226 +- src/handler/lib/psbt_parse_rawtx.c | 2 +- src/handler/lib/stream_merkle_leaf_element.c | 2 +- src/handler/lib/stream_merkleized_map_value.c | 2 +- src/handler/lib/stream_preimage.c | 9 +- src/handler/liquid_get_blinding_key.c | 19 +- src/handler/liquid_get_blinding_key.h | 3 + src/handler/liquid_get_master_blinding_key.c | 19 +- src/handler/liquid_get_master_blinding_key.h | 3 + src/handler/liquid_sign_pset.c | 17 - src/handler/register_wallet.c | 370 +- src/handler/register_wallet.h | 43 - src/handler/sign_message.c | 232 +- src/handler/sign_message.h | 38 - src/handler/sign_psbt.c | 2986 +++++++++------ src/handler/sign_psbt.h | 128 - .../sign_psbt/compare_wallet_script_at_path.c | 22 +- .../sign_psbt/compare_wallet_script_at_path.h | 1 + .../sign_psbt/extract_bip32_derivation.c | 120 + .../sign_psbt/extract_bip32_derivation.h | 17 + .../sign_psbt/get_fingerprint_and_path.c | 90 - .../sign_psbt/get_fingerprint_and_path.h | 32 - src/handler/sign_psbt/is_in_out_internal.c | 112 - src/handler/sign_psbt/is_in_out_internal.h | 24 - .../sign_psbt/update_hashes_with_map_value.c | 2 +- .../sign_psbt/update_hashes_with_map_value.h | 2 +- src/liquid/blech32.h | 3 + src/liquid/liquid.c | 4 +- src/liquid/liquid.h | 3 + src/liquid/liquid_asset_metadata.c | 3 + src/liquid/liquid_asset_metadata.h | 2 + src/liquid/liquid_assets.h | 7 +- src/liquid/liquid_hash_wrappers.h | 3 + src/liquid/liquid_proofs.h | 3 + src/liquid/liquid_wallet.c | 630 +++ src/liquid/liquid_wallet.h | 84 + src/main.c | 110 +- src/main.h | 10 - src/swap/btchip_bcd.c | 5 +- src/swap/handle_check_address.c | 17 +- src/swap/handle_get_printable_amount.c | 1 + src/swap/handle_get_printable_amount.h | 2 +- src/swap/handle_swap_sign_transaction.c | 13 +- src/swap/handle_swap_sign_transaction.h | 2 + src/swap/swap_lib_calls.h | 62 +- src/ui/bagl_custom_streaming.c | 265 ++ src/ui/display.c | 998 +---- src/ui/display.h | 235 +- src/ui/display_bagl.c | 547 +++ src/ui/display_nbgl.c | 668 ++++ src/ui/display_utils.h | 21 + src/ui/menu.c | 72 +- src/ui/menu.h | 12 +- src/ui/menu_bagl.c | 87 + src/ui/menu_nbgl.c | 61 + test_utils/__init__.py | 48 +- test_utils/fixtures.py | 17 +- test_utils/requirements.txt | 2 +- test_utils/ripemd.py | 115 + test_utils/txmaker.py | 52 +- tests-legacy/README.md | 49 - tests-legacy/automations/accept.json | 21 - tests-legacy/automations/reject.json | 21 - .../bitcoin_client/bitcoin_base_cmd.py | 345 -- tests-legacy/bitcoin_client/bitcoin_cmd.py | 244 -- .../bitcoin_client/bitcoin_cmd_builder.py | 387 -- tests-legacy/bitcoin_client/bitcoin_utils.py | 68 - .../bitcoin_client/exception/__init__.py | 64 - .../exception/device_exception.py | 53 - .../bitcoin_client/exception/errors.py | 118 - tests-legacy/bitcoin_client/hwi/base58.py | 110 - .../bitcoin_client/hwi/serialization.py | 524 --- tests-legacy/bitcoin_client/utils.py | 55 - tests-legacy/clean_tests.sh | 4 - tests-legacy/conftest.py | 92 - .../data/many-to-many/p2pkh/apdu_debug.log | 446 --- tests-legacy/data/many-to-many/p2pkh/tx.json | 25 - .../many-to-many/p2sh-p2wpkh/apdu_debug.log | 359 -- .../data/many-to-many/p2sh-p2wpkh/tx.json | 19 - .../data/many-to-many/p2wpkh/apdu_debug.log | 415 -- tests-legacy/data/many-to-many/p2wpkh/tx.json | 19 - .../data/one-to-many/p2pkh/apdu_debug.log | 168 - tests-legacy/data/one-to-many/p2pkh/tx.json | 19 - .../one-to-many/p2sh-p2wpkh/apdu_debug.log | 191 - .../data/one-to-many/p2sh-p2wpkh/tx.json | 19 - .../data/one-to-many/p2wpkh/apdu_debug.log | 207 - tests-legacy/data/one-to-many/p2wpkh/tx.json | 19 - .../data/one-to-one/p2pkh/apdu_debug.log | 159 - tests-legacy/data/one-to-one/p2pkh/tx.json | 19 - .../one-to-one/p2sh-p2wpkh/apdu_debug.log | 199 - .../data/one-to-one/p2sh-p2wpkh/tx.json | 19 - .../data/one-to-one/p2wpkh/apdu_debug.log | 188 - tests-legacy/data/one-to-one/p2wpkh/tx.json | 19 - tests-legacy/prepare_tests_lib.sh | 12 - tests-legacy/prepare_tests_native.sh | 9 - tests-legacy/requirements.txt | 4 - tests-legacy/setup.cfg | 20 - tests-legacy/test_get_coin_version.py | 9 - tests-legacy/test_get_pubkey.py | 42 - tests-legacy/test_get_random.py | 15 - tests-legacy/test_get_trusted_inputs.py | 174 - tests-legacy/test_sign.py | 89 - tests-legacy/utils/__init__.py | 10 - tests/README.md | 15 +- tests/automations/register_wallet_accept.json | 22 +- tests/automations/register_wallet_reject.json | 6 +- tests/automations/sign_message_accept.json | 21 +- tests/automations/sign_message_reject.json | 28 +- .../sign_with_default_wallet_accept.json | 24 +- ...gn_with_default_wallet_accept_highfee.json | 37 + ...ault_wallet_accept_nondefault_sighash.json | 35 + ..._wallet_missing_nonwitnessutxo_accept.json | 35 + .../automations/sign_with_wallet_accept.json | 26 +- ...gn_with_wallet_external_inputs_accept.json | 24 +- ..._wallet_missing_nonwitnessutxo_accept.json | 45 + tests/bitcoin.conf | 4 +- tests/conftest.py | 70 +- tests/instructions.py | 358 ++ .../sighash-all-anyone-can-pay-sign.psbt | 1 + tests/psbt/sighash/sighash-all-sign.psbt | 1 + .../sighash-none-anyone-can-pay-sign.psbt | 1 + tests/psbt/sighash/sighash-none-sign.psbt | 1 + .../sighash/sighash-single-3-ins-2-outs.psbt | 1 + .../sighash-single-anyone-can-pay-sign.psbt | 1 + tests/psbt/sighash/sighash-single-sign.psbt | 1 + tests/psbt/sighash/sighash-unsupported.psbt | 1 + tests/psbt/singlesig/tr-1to2-sighash-all.psbt | 1 + .../singlesig/tr-1to2-sighash-default.psbt | 1 + .../singlesig/tr-1to2-sighash-omitted.psbt | 1 + tests/psbt/singlesig/tr-1to2.psbt | 1 - tests/requirements.txt | 6 +- tests/setup_script.sh | 9 + .../snapshots/nanos/test_dashboard/00000.png | Bin 0 -> 466 bytes .../snapshots/nanos/test_dashboard/00001.png | Bin 0 -> 323 bytes .../snapshots/nanos/test_dashboard/00002.png | Bin 0 -> 327 bytes .../snapshots/nanos/test_dashboard/00003.png | Bin 0 -> 274 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 378 bytes .../00002.png | Bin 0 -> 362 bytes .../00003.png | Bin 0 -> 427 bytes .../00004.png | Bin 0 -> 493 bytes .../00005.png | Bin 0 -> 496 bytes .../00006.png | Bin 0 -> 531 bytes .../00007.png | Bin 0 -> 485 bytes .../00008.png | Bin 0 -> 498 bytes .../00009.png | Bin 0 -> 496 bytes .../00010.png | Bin 0 -> 387 bytes .../00011.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 378 bytes .../00002.png | Bin 0 -> 309 bytes .../00003.png | Bin 0 -> 427 bytes .../00000.png | Bin 0 -> 476 bytes .../00001.png | Bin 0 -> 511 bytes .../00002.png | Bin 0 -> 523 bytes .../00003.png | Bin 0 -> 511 bytes .../00004.png | Bin 0 -> 510 bytes .../00005.png | Bin 0 -> 499 bytes .../00006.png | Bin 0 -> 392 bytes .../00007.png | Bin 0 -> 341 bytes .../00008.png | Bin 0 -> 340 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 378 bytes .../00002.png | Bin 0 -> 309 bytes .../00003.png | Bin 0 -> 427 bytes .../44'/1'/0'_0_0/00000.png | Bin 0 -> 370 bytes .../44'/1'/0'_0_0/00001.png | Bin 0 -> 302 bytes .../44'/1'/0'_0_0/00002.png | Bin 0 -> 468 bytes .../44'/1'/0'_0_0/00003.png | Bin 0 -> 514 bytes .../44'/1'/0'_0_0/00004.png | Bin 0 -> 492 bytes .../44'/1'/0'_0_0/00005.png | Bin 0 -> 515 bytes .../44'/1'/0'_0_0/00006.png | Bin 0 -> 504 bytes .../44'/1'/0'_0_0/00007.png | Bin 0 -> 501 bytes .../44'/1'/0'_0_0/00008.png | Bin 0 -> 432 bytes .../44'/1'/0'_0_0/00009.png | Bin 0 -> 341 bytes .../44'/1'/10'_0_0/00000.png | Bin 0 -> 370 bytes .../44'/1'/10'_0_0/00001.png | Bin 0 -> 304 bytes .../44'/1'/10'_0_0/00002.png | Bin 0 -> 468 bytes .../44'/1'/10'_0_0/00003.png | Bin 0 -> 515 bytes .../44'/1'/10'_0_0/00004.png | Bin 0 -> 499 bytes .../44'/1'/10'_0_0/00005.png | Bin 0 -> 486 bytes .../44'/1'/10'_0_0/00006.png | Bin 0 -> 508 bytes .../44'/1'/10'_0_0/00007.png | Bin 0 -> 485 bytes .../44'/1'/10'_0_0/00008.png | Bin 0 -> 423 bytes .../44'/1'/10'_0_0/00009.png | Bin 0 -> 341 bytes .../44'/1'/2'/1/42_0_0/00000.png | Bin 0 -> 370 bytes .../44'/1'/2'/1/42_0_0/00001.png | Bin 0 -> 342 bytes .../44'/1'/2'/1/42_0_0/00002.png | Bin 0 -> 504 bytes .../44'/1'/2'/1/42_0_0/00003.png | Bin 0 -> 481 bytes .../44'/1'/2'/1/42_0_0/00004.png | Bin 0 -> 482 bytes .../44'/1'/2'/1/42_0_0/00005.png | Bin 0 -> 486 bytes .../44'/1'/2'/1/42_0_0/00006.png | Bin 0 -> 508 bytes .../44'/1'/2'/1/42_0_0/00007.png | Bin 0 -> 508 bytes .../44'/1'/2'/1/42_0_0/00008.png | Bin 0 -> 393 bytes .../44'/1'/2'/1/42_0_0/00009.png | Bin 0 -> 341 bytes .../48'/1'/4'/1'/0/7_0_0/00000.png | Bin 0 -> 370 bytes .../48'/1'/4'/1'/0/7_0_0/00001.png | Bin 0 -> 342 bytes .../48'/1'/4'/1'/0/7_0_0/00002.png | Bin 0 -> 479 bytes .../48'/1'/4'/1'/0/7_0_0/00003.png | Bin 0 -> 514 bytes .../48'/1'/4'/1'/0/7_0_0/00004.png | Bin 0 -> 495 bytes .../48'/1'/4'/1'/0/7_0_0/00005.png | Bin 0 -> 508 bytes .../48'/1'/4'/1'/0/7_0_0/00006.png | Bin 0 -> 495 bytes .../48'/1'/4'/1'/0/7_0_0/00007.png | Bin 0 -> 500 bytes .../48'/1'/4'/1'/0/7_0_0/00008.png | Bin 0 -> 440 bytes .../48'/1'/4'/1'/0/7_0_0/00009.png | Bin 0 -> 341 bytes .../49'/1'/1'/1/3_0_0/00000.png | Bin 0 -> 370 bytes .../49'/1'/1'/1/3_0_0/00001.png | Bin 0 -> 312 bytes .../49'/1'/1'/1/3_0_0/00002.png | Bin 0 -> 468 bytes .../49'/1'/1'/1/3_0_0/00003.png | Bin 0 -> 505 bytes .../49'/1'/1'/1/3_0_0/00004.png | Bin 0 -> 504 bytes .../49'/1'/1'/1/3_0_0/00005.png | Bin 0 -> 509 bytes .../49'/1'/1'/1/3_0_0/00006.png | Bin 0 -> 510 bytes .../49'/1'/1'/1/3_0_0/00007.png | Bin 0 -> 487 bytes .../49'/1'/1'/1/3_0_0/00008.png | Bin 0 -> 418 bytes .../49'/1'/1'/1/3_0_0/00009.png | Bin 0 -> 341 bytes .../84'/1'/2'/0/10_0_0/00000.png | Bin 0 -> 370 bytes .../84'/1'/2'/0/10_0_0/00001.png | Bin 0 -> 342 bytes .../84'/1'/2'/0/10_0_0/00002.png | Bin 0 -> 486 bytes .../84'/1'/2'/0/10_0_0/00003.png | Bin 0 -> 489 bytes .../84'/1'/2'/0/10_0_0/00004.png | Bin 0 -> 483 bytes .../84'/1'/2'/0/10_0_0/00005.png | Bin 0 -> 512 bytes .../84'/1'/2'/0/10_0_0/00006.png | Bin 0 -> 516 bytes .../84'/1'/2'/0/10_0_0/00007.png | Bin 0 -> 511 bytes .../84'/1'/2'/0/10_0_0/00008.png | Bin 0 -> 390 bytes .../84'/1'/2'/0/10_0_0/00009.png | Bin 0 -> 341 bytes .../86'/1'/4'/1/12_0_0/00000.png | Bin 0 -> 370 bytes .../86'/1'/4'/1/12_0_0/00001.png | Bin 0 -> 347 bytes .../86'/1'/4'/1/12_0_0/00002.png | Bin 0 -> 485 bytes .../86'/1'/4'/1/12_0_0/00003.png | Bin 0 -> 499 bytes .../86'/1'/4'/1/12_0_0/00004.png | Bin 0 -> 500 bytes .../86'/1'/4'/1/12_0_0/00005.png | Bin 0 -> 505 bytes .../86'/1'/4'/1/12_0_0/00006.png | Bin 0 -> 481 bytes .../86'/1'/4'/1/12_0_0/00007.png | Bin 0 -> 525 bytes .../86'/1'/4'/1/12_0_0/00008.png | Bin 0 -> 439 bytes .../86'/1'/4'/1/12_0_0/00009.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 413 bytes .../00001.png | Bin 0 -> 393 bytes .../00002.png | Bin 0 -> 515 bytes .../00003.png | Bin 0 -> 523 bytes .../00004.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 466 bytes .../00001.png | Bin 0 -> 532 bytes .../00002.png | Bin 0 -> 345 bytes .../00003.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 505 bytes .../00001.png | Bin 0 -> 481 bytes .../00002.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 442 bytes .../00001.png | Bin 0 -> 407 bytes .../00002.png | Bin 0 -> 427 bytes .../00003.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 515 bytes .../00001.png | Bin 0 -> 547 bytes .../00002.png | Bin 0 -> 548 bytes .../00003.png | Bin 0 -> 543 bytes .../00004.png | Bin 0 -> 539 bytes .../00005.png | Bin 0 -> 527 bytes .../00006.png | Bin 0 -> 546 bytes .../00007.png | Bin 0 -> 416 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 442 bytes .../00001.png | Bin 0 -> 445 bytes .../00002.png | Bin 0 -> 406 bytes .../00003.png | Bin 0 -> 440 bytes .../00004.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 515 bytes .../00001.png | Bin 0 -> 547 bytes .../00002.png | Bin 0 -> 548 bytes .../00003.png | Bin 0 -> 543 bytes .../00004.png | Bin 0 -> 539 bytes .../00005.png | Bin 0 -> 527 bytes .../00006.png | Bin 0 -> 546 bytes .../00007.png | Bin 0 -> 416 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 442 bytes .../00001.png | Bin 0 -> 444 bytes .../00002.png | Bin 0 -> 406 bytes .../00003.png | Bin 0 -> 470 bytes .../00004.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 515 bytes .../00001.png | Bin 0 -> 547 bytes .../00002.png | Bin 0 -> 548 bytes .../00003.png | Bin 0 -> 543 bytes .../00004.png | Bin 0 -> 539 bytes .../00005.png | Bin 0 -> 527 bytes .../00006.png | Bin 0 -> 546 bytes .../00007.png | Bin 0 -> 416 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 442 bytes .../00001.png | Bin 0 -> 392 bytes .../00002.png | Bin 0 -> 410 bytes .../00003.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 515 bytes .../00001.png | Bin 0 -> 547 bytes .../00002.png | Bin 0 -> 548 bytes .../00003.png | Bin 0 -> 543 bytes .../00004.png | Bin 0 -> 539 bytes .../00005.png | Bin 0 -> 527 bytes .../00006.png | Bin 0 -> 546 bytes .../00007.png | Bin 0 -> 416 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 442 bytes .../00001.png | Bin 0 -> 393 bytes .../00002.png | Bin 0 -> 534 bytes .../00003.png | Bin 0 -> 440 bytes .../00004.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 521 bytes .../00001.png | Bin 0 -> 532 bytes .../00002.png | Bin 0 -> 558 bytes .../00003.png | Bin 0 -> 531 bytes .../00004.png | Bin 0 -> 519 bytes .../00005.png | Bin 0 -> 533 bytes .../00006.png | Bin 0 -> 551 bytes .../00007.png | Bin 0 -> 459 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 520 bytes .../00001.png | Bin 0 -> 536 bytes .../00002.png | Bin 0 -> 552 bytes .../00003.png | Bin 0 -> 535 bytes .../00004.png | Bin 0 -> 537 bytes .../00005.png | Bin 0 -> 542 bytes .../00006.png | Bin 0 -> 541 bytes .../00007.png | Bin 0 -> 462 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 442 bytes .../00001.png | Bin 0 -> 393 bytes .../00002.png | Bin 0 -> 518 bytes .../00003.png | Bin 0 -> 399 bytes .../00004.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 521 bytes .../00001.png | Bin 0 -> 532 bytes .../00002.png | Bin 0 -> 558 bytes .../00003.png | Bin 0 -> 531 bytes .../00004.png | Bin 0 -> 519 bytes .../00005.png | Bin 0 -> 533 bytes .../00006.png | Bin 0 -> 551 bytes .../00007.png | Bin 0 -> 492 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 520 bytes .../00001.png | Bin 0 -> 536 bytes .../00002.png | Bin 0 -> 552 bytes .../00003.png | Bin 0 -> 535 bytes .../00004.png | Bin 0 -> 537 bytes .../00005.png | Bin 0 -> 542 bytes .../00006.png | Bin 0 -> 541 bytes .../00007.png | Bin 0 -> 483 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 442 bytes .../00001.png | Bin 0 -> 393 bytes .../00002.png | Bin 0 -> 515 bytes .../00003.png | Bin 0 -> 467 bytes .../00004.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 522 bytes .../00001.png | Bin 0 -> 555 bytes .../00002.png | Bin 0 -> 556 bytes .../00003.png | Bin 0 -> 552 bytes .../00004.png | Bin 0 -> 535 bytes .../00005.png | Bin 0 -> 554 bytes .../00006.png | Bin 0 -> 556 bytes .../00007.png | Bin 0 -> 456 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 518 bytes .../00001.png | Bin 0 -> 549 bytes .../00002.png | Bin 0 -> 536 bytes .../00003.png | Bin 0 -> 545 bytes .../00004.png | Bin 0 -> 556 bytes .../00005.png | Bin 0 -> 545 bytes .../00006.png | Bin 0 -> 516 bytes .../00007.png | Bin 0 -> 504 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 442 bytes .../00001.png | Bin 0 -> 393 bytes .../00002.png | Bin 0 -> 515 bytes .../00003.png | Bin 0 -> 431 bytes .../00004.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 522 bytes .../00001.png | Bin 0 -> 555 bytes .../00002.png | Bin 0 -> 556 bytes .../00003.png | Bin 0 -> 552 bytes .../00004.png | Bin 0 -> 535 bytes .../00005.png | Bin 0 -> 554 bytes .../00006.png | Bin 0 -> 556 bytes .../00007.png | Bin 0 -> 483 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 518 bytes .../00001.png | Bin 0 -> 549 bytes .../00002.png | Bin 0 -> 536 bytes .../00003.png | Bin 0 -> 545 bytes .../00004.png | Bin 0 -> 556 bytes .../00005.png | Bin 0 -> 545 bytes .../00006.png | Bin 0 -> 516 bytes .../00007.png | Bin 0 -> 530 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 442 bytes .../00001.png | Bin 0 -> 393 bytes .../00002.png | Bin 0 -> 528 bytes .../00003.png | Bin 0 -> 446 bytes .../00004.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 529 bytes .../00001.png | Bin 0 -> 560 bytes .../00002.png | Bin 0 -> 565 bytes .../00003.png | Bin 0 -> 570 bytes .../00004.png | Bin 0 -> 534 bytes .../00005.png | Bin 0 -> 516 bytes .../00006.png | Bin 0 -> 553 bytes .../00007.png | Bin 0 -> 497 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 531 bytes .../00001.png | Bin 0 -> 531 bytes .../00002.png | Bin 0 -> 535 bytes .../00003.png | Bin 0 -> 522 bytes .../00004.png | Bin 0 -> 547 bytes .../00005.png | Bin 0 -> 532 bytes .../00006.png | Bin 0 -> 525 bytes .../00007.png | Bin 0 -> 462 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 442 bytes .../00001.png | Bin 0 -> 393 bytes .../00002.png | Bin 0 -> 528 bytes .../00003.png | Bin 0 -> 399 bytes .../00004.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 529 bytes .../00001.png | Bin 0 -> 560 bytes .../00002.png | Bin 0 -> 565 bytes .../00003.png | Bin 0 -> 570 bytes .../00004.png | Bin 0 -> 534 bytes .../00005.png | Bin 0 -> 516 bytes .../00006.png | Bin 0 -> 553 bytes .../00007.png | Bin 0 -> 529 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 531 bytes .../00001.png | Bin 0 -> 531 bytes .../00002.png | Bin 0 -> 535 bytes .../00003.png | Bin 0 -> 522 bytes .../00004.png | Bin 0 -> 547 bytes .../00005.png | Bin 0 -> 532 bytes .../00006.png | Bin 0 -> 525 bytes .../00007.png | Bin 0 -> 482 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 442 bytes .../00001.png | Bin 0 -> 393 bytes .../00002.png | Bin 0 -> 528 bytes .../00003.png | Bin 0 -> 446 bytes .../00004.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 442 bytes .../00001.png | Bin 0 -> 393 bytes .../00002.png | Bin 0 -> 528 bytes .../00003.png | Bin 0 -> 446 bytes .../00004.png | Bin 0 -> 341 bytes .../00005.png | Bin 0 -> 340 bytes .../00000.png | Bin 0 -> 442 bytes .../00001.png | Bin 0 -> 393 bytes .../00002.png | Bin 0 -> 528 bytes .../00003.png | Bin 0 -> 399 bytes .../00004.png | Bin 0 -> 341 bytes .../00005.png | Bin 0 -> 340 bytes .../00000.png | Bin 0 -> 442 bytes .../00001.png | Bin 0 -> 435 bytes .../00002.png | Bin 0 -> 451 bytes .../00003.png | Bin 0 -> 409 bytes .../00004.png | Bin 0 -> 480 bytes .../00005.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 529 bytes .../00001.png | Bin 0 -> 560 bytes .../00002.png | Bin 0 -> 565 bytes .../00003.png | Bin 0 -> 570 bytes .../00004.png | Bin 0 -> 534 bytes .../00005.png | Bin 0 -> 516 bytes .../00006.png | Bin 0 -> 553 bytes .../00007.png | Bin 0 -> 497 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 531 bytes .../00001.png | Bin 0 -> 531 bytes .../00002.png | Bin 0 -> 535 bytes .../00003.png | Bin 0 -> 522 bytes .../00004.png | Bin 0 -> 547 bytes .../00005.png | Bin 0 -> 532 bytes .../00006.png | Bin 0 -> 525 bytes .../00007.png | Bin 0 -> 462 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 442 bytes .../00001.png | Bin 0 -> 485 bytes .../00002.png | Bin 0 -> 444 bytes .../00003.png | Bin 0 -> 519 bytes .../00004.png | Bin 0 -> 513 bytes .../00005.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 519 bytes .../00001.png | Bin 0 -> 549 bytes .../00002.png | Bin 0 -> 540 bytes .../00003.png | Bin 0 -> 544 bytes .../00004.png | Bin 0 -> 555 bytes .../00005.png | Bin 0 -> 538 bytes .../00006.png | Bin 0 -> 523 bytes .../00007.png | Bin 0 -> 502 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 532 bytes .../00001.png | Bin 0 -> 564 bytes .../00002.png | Bin 0 -> 570 bytes .../00003.png | Bin 0 -> 570 bytes .../00004.png | Bin 0 -> 535 bytes .../00005.png | Bin 0 -> 517 bytes .../00006.png | Bin 0 -> 553 bytes .../00007.png | Bin 0 -> 495 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 538 bytes .../00001.png | Bin 0 -> 537 bytes .../00002.png | Bin 0 -> 539 bytes .../00003.png | Bin 0 -> 522 bytes .../00004.png | Bin 0 -> 571 bytes .../00005.png | Bin 0 -> 538 bytes .../00006.png | Bin 0 -> 538 bytes .../00007.png | Bin 0 -> 464 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 442 bytes .../00001.png | Bin 0 -> 448 bytes .../00002.png | Bin 0 -> 402 bytes .../00003.png | Bin 0 -> 480 bytes .../00004.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 531 bytes .../00001.png | Bin 0 -> 539 bytes .../00002.png | Bin 0 -> 537 bytes .../00003.png | Bin 0 -> 529 bytes .../00004.png | Bin 0 -> 547 bytes .../00005.png | Bin 0 -> 553 bytes .../00006.png | Bin 0 -> 466 bytes .../00007.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 531 bytes .../00001.png | Bin 0 -> 531 bytes .../00002.png | Bin 0 -> 535 bytes .../00003.png | Bin 0 -> 522 bytes .../00004.png | Bin 0 -> 547 bytes .../00005.png | Bin 0 -> 532 bytes .../00006.png | Bin 0 -> 525 bytes .../00007.png | Bin 0 -> 462 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 442 bytes .../00001.png | Bin 0 -> 486 bytes .../00002.png | Bin 0 -> 452 bytes .../00003.png | Bin 0 -> 465 bytes .../00004.png | Bin 0 -> 416 bytes .../00005.png | Bin 0 -> 528 bytes .../00006.png | Bin 0 -> 446 bytes .../00007.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 529 bytes .../00001.png | Bin 0 -> 560 bytes .../00002.png | Bin 0 -> 565 bytes .../00003.png | Bin 0 -> 570 bytes .../00004.png | Bin 0 -> 534 bytes .../00005.png | Bin 0 -> 516 bytes .../00006.png | Bin 0 -> 553 bytes .../00007.png | Bin 0 -> 497 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 531 bytes .../00001.png | Bin 0 -> 531 bytes .../00002.png | Bin 0 -> 535 bytes .../00003.png | Bin 0 -> 522 bytes .../00004.png | Bin 0 -> 547 bytes .../00005.png | Bin 0 -> 532 bytes .../00006.png | Bin 0 -> 525 bytes .../00007.png | Bin 0 -> 462 bytes .../00008.png | Bin 0 -> 341 bytes .../00000.png | Bin 0 -> 432 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 347 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 322 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 432 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 347 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 311 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 432 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 347 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 322 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 347 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 322 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 347 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 311 bytes .../00001.png | Bin 0 -> 413 bytes .../test_sighash_all_sign_psbt_0_0/00000.png | Bin 0 -> 370 bytes .../test_sighash_all_sign_psbt_0_0/00001.png | Bin 0 -> 347 bytes .../test_sighash_all_sign_psbt_0_0/00002.png | Bin 0 -> 485 bytes .../test_sighash_all_sign_psbt_0_0/00003.png | Bin 0 -> 490 bytes .../test_sighash_all_sign_psbt_0_0/00004.png | Bin 0 -> 389 bytes .../test_sighash_all_sign_psbt_0_0/00005.png | Bin 0 -> 326 bytes .../test_sighash_all_sign_psbt_0_1/00000.png | Bin 0 -> 322 bytes .../test_sighash_all_sign_psbt_0_1/00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 432 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 347 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 322 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 432 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 347 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 311 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 432 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 347 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 322 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 432 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 347 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 322 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 432 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 347 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 311 bytes .../00001.png | Bin 0 -> 413 bytes .../test_sighash_none_sign_psbt_0_0/00000.png | Bin 0 -> 432 bytes .../test_sighash_none_sign_psbt_0_0/00001.png | Bin 0 -> 427 bytes .../test_sighash_none_sign_psbt_0_0/00002.png | Bin 0 -> 326 bytes .../test_sighash_none_sign_psbt_1_0/00000.png | Bin 0 -> 370 bytes .../test_sighash_none_sign_psbt_1_0/00001.png | Bin 0 -> 347 bytes .../test_sighash_none_sign_psbt_1_0/00002.png | Bin 0 -> 485 bytes .../test_sighash_none_sign_psbt_1_0/00003.png | Bin 0 -> 490 bytes .../test_sighash_none_sign_psbt_1_0/00004.png | Bin 0 -> 389 bytes .../test_sighash_none_sign_psbt_1_0/00005.png | Bin 0 -> 326 bytes .../test_sighash_none_sign_psbt_1_1/00000.png | Bin 0 -> 322 bytes .../test_sighash_none_sign_psbt_1_1/00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 324 bytes .../00002.png | Bin 0 -> 493 bytes .../00003.png | Bin 0 -> 499 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 325 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 432 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 324 bytes .../00002.png | Bin 0 -> 493 bytes .../00003.png | Bin 0 -> 499 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 325 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 432 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 324 bytes .../00002.png | Bin 0 -> 493 bytes .../00003.png | Bin 0 -> 499 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 325 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 432 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 324 bytes .../00002.png | Bin 0 -> 493 bytes .../00003.png | Bin 0 -> 499 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 325 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 432 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 324 bytes .../00002.png | Bin 0 -> 493 bytes .../00003.png | Bin 0 -> 499 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 325 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 432 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 324 bytes .../00002.png | Bin 0 -> 493 bytes .../00003.png | Bin 0 -> 499 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 325 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 432 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 347 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 322 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 432 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 347 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 311 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 432 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 347 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 322 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 432 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 347 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 322 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 432 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 349 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 311 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 432 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 347 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 311 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 432 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 347 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 322 bytes .../00001.png | Bin 0 -> 413 bytes .../test_sighash_unsupported_0_0/00000.png | Bin 0 -> 370 bytes .../test_sighash_unsupported_0_0/00001.png | Bin 0 -> 347 bytes .../test_sighash_unsupported_0_0/00002.png | Bin 0 -> 485 bytes .../test_sighash_unsupported_0_0/00003.png | Bin 0 -> 490 bytes .../test_sighash_unsupported_0_0/00004.png | Bin 0 -> 389 bytes .../test_sighash_unsupported_0_0/00005.png | Bin 0 -> 326 bytes .../test_sighash_unsupported_0_1/00000.png | Bin 0 -> 322 bytes .../test_sighash_unsupported_0_1/00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 347 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 322 bytes .../00001.png | Bin 0 -> 413 bytes .../nanos/test_sign_message_0_0/00000.png | Bin 0 -> 368 bytes .../nanos/test_sign_message_0_0/00001.png | Bin 0 -> 309 bytes .../nanos/test_sign_message_0_1/00000.png | Bin 0 -> 430 bytes .../nanos/test_sign_message_0_1/00001.png | Bin 0 -> 451 bytes .../nanos/test_sign_message_0_1/00002.png | Bin 0 -> 476 bytes .../nanos/test_sign_message_0_1/00003.png | Bin 0 -> 479 bytes .../nanos/test_sign_message_0_1/00004.png | Bin 0 -> 421 bytes .../nanos/test_sign_message_0_1/00005.png | Bin 0 -> 403 bytes .../test_sign_message_accept_0_0/00000.png | Bin 0 -> 368 bytes .../test_sign_message_accept_0_0/00001.png | Bin 0 -> 313 bytes .../test_sign_message_accept_0_1/00000.png | Bin 0 -> 437 bytes .../test_sign_message_accept_0_1/00001.png | Bin 0 -> 403 bytes .../00000.png | Bin 0 -> 368 bytes .../00001.png | Bin 0 -> 316 bytes .../00000.png | Bin 0 -> 458 bytes .../00001.png | Bin 0 -> 462 bytes .../00002.png | Bin 0 -> 478 bytes .../00003.png | Bin 0 -> 485 bytes .../00004.png | Bin 0 -> 493 bytes .../00005.png | Bin 0 -> 487 bytes .../00006.png | Bin 0 -> 433 bytes .../00007.png | Bin 0 -> 318 bytes .../00000.png | Bin 0 -> 456 bytes .../00001.png | Bin 0 -> 462 bytes .../00002.png | Bin 0 -> 464 bytes .../00003.png | Bin 0 -> 474 bytes .../00004.png | Bin 0 -> 465 bytes .../00005.png | Bin 0 -> 500 bytes .../00006.png | Bin 0 -> 462 bytes .../00007.png | Bin 0 -> 318 bytes .../00000.png | Bin 0 -> 444 bytes .../00001.png | Bin 0 -> 437 bytes .../00002.png | Bin 0 -> 479 bytes .../00003.png | Bin 0 -> 466 bytes .../00004.png | Bin 0 -> 461 bytes .../00005.png | Bin 0 -> 492 bytes .../00006.png | Bin 0 -> 473 bytes .../00007.png | Bin 0 -> 405 bytes .../00008.png | Bin 0 -> 318 bytes .../00000.png | Bin 0 -> 468 bytes .../00001.png | Bin 0 -> 472 bytes .../00002.png | Bin 0 -> 473 bytes .../00003.png | Bin 0 -> 497 bytes .../00004.png | Bin 0 -> 457 bytes .../00005.png | Bin 0 -> 471 bytes .../00006.png | Bin 0 -> 450 bytes .../00007.png | Bin 0 -> 318 bytes .../00000.png | Bin 0 -> 468 bytes .../00001.png | Bin 0 -> 446 bytes .../00002.png | Bin 0 -> 403 bytes .../00000.png | Bin 0 -> 368 bytes .../00001.png | Bin 0 -> 316 bytes .../00000.png | Bin 0 -> 529 bytes .../00001.png | Bin 0 -> 511 bytes .../00002.png | Bin 0 -> 526 bytes .../00003.png | Bin 0 -> 492 bytes .../00004.png | Bin 0 -> 407 bytes .../00000.png | Bin 0 -> 368 bytes .../00001.png | Bin 0 -> 316 bytes .../00000.png | Bin 0 -> 540 bytes .../00001.png | Bin 0 -> 519 bytes .../00002.png | Bin 0 -> 525 bytes .../00003.png | Bin 0 -> 497 bytes .../00004.png | Bin 0 -> 407 bytes .../00000.png | Bin 0 -> 368 bytes .../00001.png | Bin 0 -> 309 bytes .../00002.png | Bin 0 -> 529 bytes .../00003.png | Bin 0 -> 511 bytes .../00004.png | Bin 0 -> 526 bytes .../00005.png | Bin 0 -> 492 bytes .../00006.png | Bin 0 -> 407 bytes .../00007.png | Bin 0 -> 340 bytes .../test_sign_message_reject_0_0/00000.png | Bin 0 -> 368 bytes .../test_sign_message_reject_0_0/00001.png | Bin 0 -> 309 bytes .../test_sign_message_reject_0_0/00002.png | Bin 0 -> 450 bytes .../test_sign_message_reject_0_0/00003.png | Bin 0 -> 403 bytes .../test_sign_message_reject_0_0/00004.png | Bin 0 -> 340 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 432 bytes .../00002.png | Bin 0 -> 468 bytes .../00003.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 319 bytes .../00002.png | Bin 0 -> 502 bytes .../00003.png | Bin 0 -> 499 bytes .../00004.png | Bin 0 -> 324 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 323 bytes .../00001.png | Bin 0 -> 413 bytes .../test_sign_psbt_highfee_0_0/00000.png | Bin 0 -> 370 bytes .../test_sign_psbt_highfee_0_0/00001.png | Bin 0 -> 331 bytes .../test_sign_psbt_highfee_0_0/00002.png | Bin 0 -> 473 bytes .../test_sign_psbt_highfee_0_0/00003.png | Bin 0 -> 515 bytes .../test_sign_psbt_highfee_0_0/00004.png | Bin 0 -> 370 bytes .../test_sign_psbt_highfee_0_0/00005.png | Bin 0 -> 326 bytes .../test_sign_psbt_highfee_1_0/00000.png | Bin 0 -> 452 bytes .../test_sign_psbt_highfee_1_0/00001.png | Bin 0 -> 326 bytes .../test_sign_psbt_highfee_1_1/00000.png | Bin 0 -> 335 bytes .../test_sign_psbt_highfee_1_1/00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 434 bytes .../00002.png | Bin 0 -> 387 bytes .../00003.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 319 bytes .../00002.png | Bin 0 -> 499 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 351 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 312 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 393 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 352 bytes .../00002.png | Bin 0 -> 511 bytes .../00003.png | Bin 0 -> 491 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 329 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 393 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 398 bytes .../00001.png | Bin 0 -> 354 bytes .../00002.png | Bin 0 -> 407 bytes .../00003.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 352 bytes .../00002.png | Bin 0 -> 511 bytes .../00003.png | Bin 0 -> 491 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 329 bytes .../00001.png | Bin 0 -> 413 bytes .../test_sign_psbt_multisig_wsh_0_0/00000.png | Bin 0 -> 419 bytes .../test_sign_psbt_multisig_wsh_0_0/00001.png | Bin 0 -> 393 bytes .../test_sign_psbt_multisig_wsh_0_0/00002.png | Bin 0 -> 326 bytes .../test_sign_psbt_multisig_wsh_1_0/00000.png | Bin 0 -> 370 bytes .../test_sign_psbt_multisig_wsh_1_0/00001.png | Bin 0 -> 369 bytes .../test_sign_psbt_multisig_wsh_1_0/00002.png | Bin 0 -> 473 bytes .../test_sign_psbt_multisig_wsh_1_0/00003.png | Bin 0 -> 515 bytes .../test_sign_psbt_multisig_wsh_1_0/00004.png | Bin 0 -> 370 bytes .../test_sign_psbt_multisig_wsh_1_0/00005.png | Bin 0 -> 326 bytes .../test_sign_psbt_multisig_wsh_2_0/00000.png | Bin 0 -> 340 bytes .../test_sign_psbt_multisig_wsh_2_0/00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 393 bytes .../00002.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 369 bytes .../00002.png | Bin 0 -> 473 bytes .../00003.png | Bin 0 -> 515 bytes .../00004.png | Bin 0 -> 370 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 340 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 339 bytes .../00002.png | Bin 0 -> 479 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 376 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 293 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 339 bytes .../00002.png | Bin 0 -> 479 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 376 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 293 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 333 bytes .../00002.png | Bin 0 -> 506 bytes .../00003.png | Bin 0 -> 509 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 307 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 333 bytes .../00002.png | Bin 0 -> 506 bytes .../00003.png | Bin 0 -> 509 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 307 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 333 bytes .../00002.png | Bin 0 -> 506 bytes .../00003.png | Bin 0 -> 509 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 307 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 333 bytes .../00002.png | Bin 0 -> 506 bytes .../00003.png | Bin 0 -> 509 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 307 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 351 bytes .../00002.png | Bin 0 -> 473 bytes .../00003.png | Bin 0 -> 515 bytes .../00004.png | Bin 0 -> 370 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 323 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 351 bytes .../00002.png | Bin 0 -> 473 bytes .../00003.png | Bin 0 -> 515 bytes .../00004.png | Bin 0 -> 370 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 323 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 324 bytes .../00002.png | Bin 0 -> 493 bytes .../00003.png | Bin 0 -> 499 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 325 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 324 bytes .../00002.png | Bin 0 -> 493 bytes .../00003.png | Bin 0 -> 499 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 325 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 327 bytes .../00002.png | Bin 0 -> 487 bytes .../00003.png | Bin 0 -> 477 bytes .../00004.png | Bin 0 -> 508 bytes .../00005.png | Bin 0 -> 443 bytes .../00006.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 321 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 398 bytes .../00001.png | Bin 0 -> 354 bytes .../00002.png | Bin 0 -> 407 bytes .../00003.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 327 bytes .../00002.png | Bin 0 -> 487 bytes .../00003.png | Bin 0 -> 477 bytes .../00004.png | Bin 0 -> 508 bytes .../00005.png | Bin 0 -> 443 bytes .../00006.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 321 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 327 bytes .../00002.png | Bin 0 -> 487 bytes .../00003.png | Bin 0 -> 477 bytes .../00004.png | Bin 0 -> 508 bytes .../00005.png | Bin 0 -> 443 bytes .../00006.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 321 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 322 bytes .../00002.png | Bin 0 -> 479 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 376 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 384 bytes .../00001.png | Bin 0 -> 337 bytes .../00002.png | Bin 0 -> 479 bytes .../00003.png | Bin 0 -> 491 bytes .../00004.png | Bin 0 -> 409 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 317 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 322 bytes .../00002.png | Bin 0 -> 479 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 376 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 384 bytes .../00001.png | Bin 0 -> 337 bytes .../00002.png | Bin 0 -> 479 bytes .../00003.png | Bin 0 -> 491 bytes .../00004.png | Bin 0 -> 409 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 317 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 388 bytes .../00001.png | Bin 0 -> 331 bytes .../00002.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 322 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 311 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 322 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 311 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 322 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 311 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 322 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 311 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 435 bytes .../00002.png | Bin 0 -> 451 bytes .../00003.png | Bin 0 -> 409 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 339 bytes .../00002.png | Bin 0 -> 507 bytes .../00003.png | Bin 0 -> 481 bytes .../00004.png | Bin 0 -> 383 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 314 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 410 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 316 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 322 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 384 bytes .../00001.png | Bin 0 -> 353 bytes .../00002.png | Bin 0 -> 470 bytes .../00003.png | Bin 0 -> 477 bytes .../00004.png | Bin 0 -> 495 bytes .../00005.png | Bin 0 -> 463 bytes .../00006.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 386 bytes .../00001.png | Bin 0 -> 333 bytes .../00002.png | Bin 0 -> 506 bytes .../00003.png | Bin 0 -> 509 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 386 bytes .../00001.png | Bin 0 -> 366 bytes .../00002.png | Bin 0 -> 466 bytes .../00003.png | Bin 0 -> 500 bytes .../00004.png | Bin 0 -> 358 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 382 bytes .../00001.png | Bin 0 -> 324 bytes .../00002.png | Bin 0 -> 493 bytes .../00003.png | Bin 0 -> 499 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 319 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 410 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 316 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 322 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 384 bytes .../00001.png | Bin 0 -> 333 bytes .../00002.png | Bin 0 -> 506 bytes .../00003.png | Bin 0 -> 509 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 386 bytes .../00001.png | Bin 0 -> 366 bytes .../00002.png | Bin 0 -> 466 bytes .../00003.png | Bin 0 -> 500 bytes .../00004.png | Bin 0 -> 358 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 386 bytes .../00001.png | Bin 0 -> 324 bytes .../00002.png | Bin 0 -> 493 bytes .../00003.png | Bin 0 -> 499 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 319 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 410 bytes .../00001.png | Bin 0 -> 427 bytes .../00002.png | Bin 0 -> 316 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 322 bytes .../00002.png | Bin 0 -> 485 bytes .../00003.png | Bin 0 -> 490 bytes .../00004.png | Bin 0 -> 389 bytes .../00005.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 384 bytes .../00001.png | Bin 0 -> 353 bytes .../00002.png | Bin 0 -> 470 bytes .../00003.png | Bin 0 -> 477 bytes .../00004.png | Bin 0 -> 495 bytes .../00005.png | Bin 0 -> 463 bytes .../00006.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 386 bytes .../00001.png | Bin 0 -> 333 bytes .../00002.png | Bin 0 -> 506 bytes .../00003.png | Bin 0 -> 509 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 386 bytes .../00001.png | Bin 0 -> 324 bytes .../00002.png | Bin 0 -> 493 bytes .../00003.png | Bin 0 -> 499 bytes .../00004.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 319 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 306 bytes .../00002.png | Bin 0 -> 373 bytes .../00003.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 309 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 306 bytes .../00002.png | Bin 0 -> 421 bytes .../00003.png | Bin 0 -> 478 bytes .../00004.png | Bin 0 -> 487 bytes .../00005.png | Bin 0 -> 461 bytes .../00006.png | Bin 0 -> 464 bytes .../00007.png | Bin 0 -> 467 bytes .../00008.png | Bin 0 -> 486 bytes .../00009.png | Bin 0 -> 480 bytes .../00010.png | Bin 0 -> 447 bytes .../00011.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 309 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 306 bytes .../00002.png | Bin 0 -> 421 bytes .../00003.png | Bin 0 -> 478 bytes .../00004.png | Bin 0 -> 487 bytes .../00005.png | Bin 0 -> 461 bytes .../00006.png | Bin 0 -> 464 bytes .../00007.png | Bin 0 -> 467 bytes .../00008.png | Bin 0 -> 486 bytes .../00009.png | Bin 0 -> 480 bytes .../00010.png | Bin 0 -> 447 bytes .../00011.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 309 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 319 bytes .../00002.png | Bin 0 -> 381 bytes .../00003.png | Bin 0 -> 343 bytes .../00004.png | Bin 0 -> 346 bytes .../00005.png | Bin 0 -> 416 bytes .../00006.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 310 bytes .../00001.png | Bin 0 -> 413 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 319 bytes .../00002.png | Bin 0 -> 381 bytes .../00003.png | Bin 0 -> 343 bytes .../00004.png | Bin 0 -> 346 bytes .../00005.png | Bin 0 -> 416 bytes .../00006.png | Bin 0 -> 326 bytes .../00000.png | Bin 0 -> 310 bytes .../00001.png | Bin 0 -> 413 bytes .../snapshots/nanosp/test_dashboard/00000.png | Bin 0 -> 537 bytes .../snapshots/nanosp/test_dashboard/00001.png | Bin 0 -> 345 bytes .../snapshots/nanosp/test_dashboard/00002.png | Bin 0 -> 350 bytes .../snapshots/nanosp/test_dashboard/00003.png | Bin 0 -> 295 bytes .../00000.png | Bin 0 -> 493 bytes .../00001.png | Bin 0 -> 404 bytes .../00002.png | Bin 0 -> 402 bytes .../00003.png | Bin 0 -> 488 bytes .../00004.png | Bin 0 -> 1009 bytes .../00005.png | Bin 0 -> 963 bytes .../00006.png | Bin 0 -> 490 bytes .../00007.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 493 bytes .../00001.png | Bin 0 -> 404 bytes .../00002.png | Bin 0 -> 343 bytes .../00003.png | Bin 0 -> 488 bytes .../00000.png | Bin 0 -> 976 bytes .../00001.png | Bin 0 -> 972 bytes .../00002.png | Bin 0 -> 477 bytes .../00003.png | Bin 0 -> 364 bytes .../00004.png | Bin 0 -> 366 bytes .../00000.png | Bin 0 -> 493 bytes .../00001.png | Bin 0 -> 404 bytes .../00002.png | Bin 0 -> 343 bytes .../00003.png | Bin 0 -> 488 bytes .../44'/1'/0'_0_0/00000.png | Bin 0 -> 395 bytes .../44'/1'/0'_0_0/00001.png | Bin 0 -> 344 bytes .../44'/1'/0'_0_0/00002.png | Bin 0 -> 960 bytes .../44'/1'/0'_0_0/00003.png | Bin 0 -> 1016 bytes .../44'/1'/0'_0_0/00004.png | Bin 0 -> 500 bytes .../44'/1'/0'_0_0/00005.png | Bin 0 -> 364 bytes .../44'/1'/10'_0_0/00000.png | Bin 0 -> 395 bytes .../44'/1'/10'_0_0/00001.png | Bin 0 -> 347 bytes .../44'/1'/10'_0_0/00002.png | Bin 0 -> 975 bytes .../44'/1'/10'_0_0/00003.png | Bin 0 -> 953 bytes .../44'/1'/10'_0_0/00004.png | Bin 0 -> 517 bytes .../44'/1'/10'_0_0/00005.png | Bin 0 -> 364 bytes .../44'/1'/2'/1/42_0_0/00000.png | Bin 0 -> 395 bytes .../44'/1'/2'/1/42_0_0/00001.png | Bin 0 -> 382 bytes .../44'/1'/2'/1/42_0_0/00002.png | Bin 0 -> 949 bytes .../44'/1'/2'/1/42_0_0/00003.png | Bin 0 -> 984 bytes .../44'/1'/2'/1/42_0_0/00004.png | Bin 0 -> 473 bytes .../44'/1'/2'/1/42_0_0/00005.png | Bin 0 -> 364 bytes .../48'/1'/4'/1'/0/7_0_0/00000.png | Bin 0 -> 395 bytes .../48'/1'/4'/1'/0/7_0_0/00001.png | Bin 0 -> 385 bytes .../48'/1'/4'/1'/0/7_0_0/00002.png | Bin 0 -> 974 bytes .../48'/1'/4'/1'/0/7_0_0/00003.png | Bin 0 -> 993 bytes .../48'/1'/4'/1'/0/7_0_0/00004.png | Bin 0 -> 520 bytes .../48'/1'/4'/1'/0/7_0_0/00005.png | Bin 0 -> 364 bytes .../49'/1'/1'/1/3_0_0/00000.png | Bin 0 -> 395 bytes .../49'/1'/1'/1/3_0_0/00001.png | Bin 0 -> 354 bytes .../49'/1'/1'/1/3_0_0/00002.png | Bin 0 -> 959 bytes .../49'/1'/1'/1/3_0_0/00003.png | Bin 0 -> 989 bytes .../49'/1'/1'/1/3_0_0/00004.png | Bin 0 -> 517 bytes .../49'/1'/1'/1/3_0_0/00005.png | Bin 0 -> 364 bytes .../84'/1'/2'/0/10_0_0/00000.png | Bin 0 -> 395 bytes .../84'/1'/2'/0/10_0_0/00001.png | Bin 0 -> 372 bytes .../84'/1'/2'/0/10_0_0/00002.png | Bin 0 -> 959 bytes .../84'/1'/2'/0/10_0_0/00003.png | Bin 0 -> 1012 bytes .../84'/1'/2'/0/10_0_0/00004.png | Bin 0 -> 462 bytes .../84'/1'/2'/0/10_0_0/00005.png | Bin 0 -> 364 bytes .../86'/1'/4'/1/12_0_0/00000.png | Bin 0 -> 395 bytes .../86'/1'/4'/1/12_0_0/00001.png | Bin 0 -> 382 bytes .../86'/1'/4'/1/12_0_0/00002.png | Bin 0 -> 967 bytes .../86'/1'/4'/1/12_0_0/00003.png | Bin 0 -> 991 bytes .../86'/1'/4'/1/12_0_0/00004.png | Bin 0 -> 520 bytes .../86'/1'/4'/1/12_0_0/00005.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 481 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 734 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 758 bytes .../00001.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 678 bytes .../00001.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 448 bytes .../00002.png | Bin 0 -> 865 bytes .../00003.png | Bin 0 -> 891 bytes .../00004.png | Bin 0 -> 953 bytes .../00005.png | Bin 0 -> 858 bytes .../00006.png | Bin 0 -> 968 bytes .../00007.png | Bin 0 -> 985 bytes .../00008.png | Bin 0 -> 479 bytes .../00009.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1018 bytes .../00001.png | Bin 0 -> 1017 bytes .../00002.png | Bin 0 -> 732 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1067 bytes .../00001.png | Bin 0 -> 1034 bytes .../00002.png | Bin 0 -> 593 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1059 bytes .../00001.png | Bin 0 -> 1072 bytes .../00002.png | Bin 0 -> 620 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 480 bytes .../00002.png | Bin 0 -> 491 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1013 bytes .../00001.png | Bin 0 -> 1012 bytes .../00002.png | Bin 0 -> 725 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 575 bytes .../00002.png | Bin 0 -> 511 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1013 bytes .../00001.png | Bin 0 -> 1012 bytes .../00002.png | Bin 0 -> 725 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 577 bytes .../00002.png | Bin 0 -> 540 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1013 bytes .../00001.png | Bin 0 -> 1012 bytes .../00002.png | Bin 0 -> 725 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 472 bytes .../00002.png | Bin 0 -> 474 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1013 bytes .../00001.png | Bin 0 -> 1012 bytes .../00002.png | Bin 0 -> 725 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 686 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1009 bytes .../00001.png | Bin 0 -> 990 bytes .../00002.png | Bin 0 -> 749 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1013 bytes .../00001.png | Bin 0 -> 1027 bytes .../00002.png | Bin 0 -> 755 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 622 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1009 bytes .../00001.png | Bin 0 -> 990 bytes .../00002.png | Bin 0 -> 782 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1013 bytes .../00001.png | Bin 0 -> 1027 bytes .../00002.png | Bin 0 -> 773 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 683 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1023 bytes .../00001.png | Bin 0 -> 1047 bytes .../00002.png | Bin 0 -> 750 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1005 bytes .../00001.png | Bin 0 -> 1058 bytes .../00002.png | Bin 0 -> 773 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 644 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1023 bytes .../00001.png | Bin 0 -> 1047 bytes .../00002.png | Bin 0 -> 779 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1005 bytes .../00001.png | Bin 0 -> 1058 bytes .../00002.png | Bin 0 -> 793 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 683 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1041 bytes .../00001.png | Bin 0 -> 1035 bytes .../00002.png | Bin 0 -> 784 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1019 bytes .../00001.png | Bin 0 -> 1026 bytes .../00002.png | Bin 0 -> 734 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 633 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1041 bytes .../00001.png | Bin 0 -> 1035 bytes .../00002.png | Bin 0 -> 812 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1019 bytes .../00001.png | Bin 0 -> 1026 bytes .../00002.png | Bin 0 -> 760 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 683 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 683 bytes .../00003.png | Bin 0 -> 364 bytes .../00004.png | Bin 0 -> 366 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 633 bytes .../00003.png | Bin 0 -> 364 bytes .../00004.png | Bin 0 -> 366 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 726 bytes .../00002.png | Bin 0 -> 544 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1041 bytes .../00001.png | Bin 0 -> 1035 bytes .../00002.png | Bin 0 -> 784 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1019 bytes .../00001.png | Bin 0 -> 1026 bytes .../00002.png | Bin 0 -> 734 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 662 bytes .../00002.png | Bin 0 -> 728 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1002 bytes .../00001.png | Bin 0 -> 1055 bytes .../00002.png | Bin 0 -> 769 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1047 bytes .../00001.png | Bin 0 -> 1041 bytes .../00002.png | Bin 0 -> 796 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1028 bytes .../00001.png | Bin 0 -> 1030 bytes .../00002.png | Bin 0 -> 737 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 586 bytes .../00002.png | Bin 0 -> 544 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1004 bytes .../00001.png | Bin 0 -> 1034 bytes .../00002.png | Bin 0 -> 543 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1019 bytes .../00001.png | Bin 0 -> 1026 bytes .../00002.png | Bin 0 -> 734 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 862 bytes .../00002.png | Bin 0 -> 504 bytes .../00003.png | Bin 0 -> 683 bytes .../00004.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1041 bytes .../00001.png | Bin 0 -> 1035 bytes .../00002.png | Bin 0 -> 784 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1019 bytes .../00001.png | Bin 0 -> 1026 bytes .../00002.png | Bin 0 -> 734 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 468 bytes .../test_sighash_all_sign_psbt_0_0/00000.png | Bin 0 -> 418 bytes .../test_sighash_all_sign_psbt_0_0/00001.png | Bin 0 -> 400 bytes .../test_sighash_all_sign_psbt_0_0/00002.png | Bin 0 -> 772 bytes .../test_sighash_all_sign_psbt_0_0/00003.png | Bin 0 -> 349 bytes .../test_sighash_all_sign_psbt_0_1/00000.png | Bin 0 -> 379 bytes .../test_sighash_all_sign_psbt_0_1/00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 468 bytes .../test_sighash_none_sign_psbt_0_0/00000.png | Bin 0 -> 467 bytes .../test_sighash_none_sign_psbt_0_0/00001.png | Bin 0 -> 488 bytes .../test_sighash_none_sign_psbt_0_0/00002.png | Bin 0 -> 349 bytes .../test_sighash_none_sign_psbt_1_0/00000.png | Bin 0 -> 418 bytes .../test_sighash_none_sign_psbt_1_0/00001.png | Bin 0 -> 400 bytes .../test_sighash_none_sign_psbt_1_0/00002.png | Bin 0 -> 772 bytes .../test_sighash_none_sign_psbt_1_0/00003.png | Bin 0 -> 349 bytes .../test_sighash_none_sign_psbt_1_1/00000.png | Bin 0 -> 379 bytes .../test_sighash_none_sign_psbt_1_1/00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 402 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../test_sighash_unsupported_0_0/00000.png | Bin 0 -> 418 bytes .../test_sighash_unsupported_0_0/00001.png | Bin 0 -> 400 bytes .../test_sighash_unsupported_0_0/00002.png | Bin 0 -> 772 bytes .../test_sighash_unsupported_0_0/00003.png | Bin 0 -> 349 bytes .../test_sighash_unsupported_0_1/00000.png | Bin 0 -> 379 bytes .../test_sighash_unsupported_0_1/00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../nanosp/test_sign_message_0_0/00000.png | Bin 0 -> 415 bytes .../nanosp/test_sign_message_0_0/00001.png | Bin 0 -> 350 bytes .../nanosp/test_sign_message_0_1/00000.png | Bin 0 -> 698 bytes .../nanosp/test_sign_message_0_1/00001.png | Bin 0 -> 576 bytes .../nanosp/test_sign_message_0_1/00002.png | Bin 0 -> 446 bytes .../test_sign_message_accept_0_0/00000.png | Bin 0 -> 415 bytes .../test_sign_message_accept_0_0/00001.png | Bin 0 -> 347 bytes .../test_sign_message_accept_0_1/00000.png | Bin 0 -> 462 bytes .../test_sign_message_accept_0_1/00001.png | Bin 0 -> 446 bytes .../00000.png | Bin 0 -> 415 bytes .../00001.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 753 bytes .../00001.png | Bin 0 -> 810 bytes .../00002.png | Bin 0 -> 460 bytes .../00003.png | Bin 0 -> 340 bytes .../00000.png | Bin 0 -> 720 bytes .../00001.png | Bin 0 -> 790 bytes .../00002.png | Bin 0 -> 488 bytes .../00003.png | Bin 0 -> 340 bytes .../00000.png | Bin 0 -> 703 bytes .../00001.png | Bin 0 -> 766 bytes .../00002.png | Bin 0 -> 571 bytes .../00003.png | Bin 0 -> 340 bytes .../00000.png | Bin 0 -> 750 bytes .../00001.png | Bin 0 -> 778 bytes .../00002.png | Bin 0 -> 479 bytes .../00003.png | Bin 0 -> 340 bytes .../00000.png | Bin 0 -> 598 bytes .../00001.png | Bin 0 -> 446 bytes .../00000.png | Bin 0 -> 415 bytes .../00001.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 918 bytes .../00001.png | Bin 0 -> 558 bytes .../00002.png | Bin 0 -> 457 bytes .../00000.png | Bin 0 -> 415 bytes .../00001.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 917 bytes .../00001.png | Bin 0 -> 553 bytes .../00002.png | Bin 0 -> 457 bytes .../00000.png | Bin 0 -> 415 bytes .../00001.png | Bin 0 -> 350 bytes .../00002.png | Bin 0 -> 918 bytes .../00003.png | Bin 0 -> 558 bytes .../00004.png | Bin 0 -> 457 bytes .../00005.png | Bin 0 -> 366 bytes .../test_sign_message_reject_0_0/00000.png | Bin 0 -> 415 bytes .../test_sign_message_reject_0_0/00001.png | Bin 0 -> 350 bytes .../test_sign_message_reject_0_0/00002.png | Bin 0 -> 476 bytes .../test_sign_message_reject_0_0/00003.png | Bin 0 -> 446 bytes .../test_sign_message_reject_0_0/00004.png | Bin 0 -> 366 bytes .../00000.png | Bin 0 -> 482 bytes .../00001.png | Bin 0 -> 635 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 377 bytes .../00002.png | Bin 0 -> 707 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 381 bytes .../00001.png | Bin 0 -> 468 bytes .../test_sign_psbt_highfee_0_0/00000.png | Bin 0 -> 418 bytes .../test_sign_psbt_highfee_0_0/00001.png | Bin 0 -> 392 bytes .../test_sign_psbt_highfee_0_0/00002.png | Bin 0 -> 767 bytes .../test_sign_psbt_highfee_0_0/00003.png | Bin 0 -> 349 bytes .../test_sign_psbt_highfee_1_0/00000.png | Bin 0 -> 526 bytes .../test_sign_psbt_highfee_1_0/00001.png | Bin 0 -> 349 bytes .../test_sign_psbt_highfee_1_1/00000.png | Bin 0 -> 393 bytes .../test_sign_psbt_highfee_1_1/00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 482 bytes .../00001.png | Bin 0 -> 536 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 377 bytes .../00002.png | Bin 0 -> 781 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 363 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 482 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 409 bytes .../00002.png | Bin 0 -> 689 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 381 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 482 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 428 bytes .../00001.png | Bin 0 -> 385 bytes .../00002.png | Bin 0 -> 438 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 409 bytes .../00002.png | Bin 0 -> 689 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 381 bytes .../00001.png | Bin 0 -> 468 bytes .../test_sign_psbt_multisig_wsh_0_0/00000.png | Bin 0 -> 482 bytes .../test_sign_psbt_multisig_wsh_0_0/00001.png | Bin 0 -> 465 bytes .../test_sign_psbt_multisig_wsh_0_0/00002.png | Bin 0 -> 349 bytes .../test_sign_psbt_multisig_wsh_1_0/00000.png | Bin 0 -> 418 bytes .../test_sign_psbt_multisig_wsh_1_0/00001.png | Bin 0 -> 428 bytes .../test_sign_psbt_multisig_wsh_1_0/00002.png | Bin 0 -> 767 bytes .../test_sign_psbt_multisig_wsh_1_0/00003.png | Bin 0 -> 349 bytes .../test_sign_psbt_multisig_wsh_2_0/00000.png | Bin 0 -> 394 bytes .../test_sign_psbt_multisig_wsh_2_0/00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 482 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 428 bytes .../00002.png | Bin 0 -> 767 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 394 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 395 bytes .../00002.png | Bin 0 -> 780 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 345 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 395 bytes .../00002.png | Bin 0 -> 780 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 345 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 394 bytes .../00002.png | Bin 0 -> 724 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 356 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 394 bytes .../00002.png | Bin 0 -> 724 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 356 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 394 bytes .../00002.png | Bin 0 -> 724 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 356 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 394 bytes .../00002.png | Bin 0 -> 724 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 356 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 410 bytes .../00002.png | Bin 0 -> 767 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 376 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 410 bytes .../00002.png | Bin 0 -> 767 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 376 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 917 bytes .../00003.png | Bin 0 -> 504 bytes .../00004.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 372 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 428 bytes .../00001.png | Bin 0 -> 385 bytes .../00002.png | Bin 0 -> 438 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 917 bytes .../00003.png | Bin 0 -> 504 bytes .../00004.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 372 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 917 bytes .../00003.png | Bin 0 -> 504 bytes .../00004.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 372 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 387 bytes .../00002.png | Bin 0 -> 780 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 426 bytes .../00001.png | Bin 0 -> 395 bytes .../00002.png | Bin 0 -> 804 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 368 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 387 bytes .../00002.png | Bin 0 -> 780 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 426 bytes .../00001.png | Bin 0 -> 395 bytes .../00002.png | Bin 0 -> 804 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 368 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 427 bytes .../00001.png | Bin 0 -> 384 bytes .../00002.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 372 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 364 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 372 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 364 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 372 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 364 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 372 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 364 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 482 bytes .../00001.png | Bin 0 -> 726 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 787 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 375 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 453 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 338 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 372 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 426 bytes .../00001.png | Bin 0 -> 409 bytes .../00002.png | Bin 0 -> 898 bytes .../00003.png | Bin 0 -> 521 bytes .../00004.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 427 bytes .../00001.png | Bin 0 -> 394 bytes .../00002.png | Bin 0 -> 724 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 425 bytes .../00001.png | Bin 0 -> 418 bytes .../00002.png | Bin 0 -> 751 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 430 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 374 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 453 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 338 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 372 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 426 bytes .../00001.png | Bin 0 -> 394 bytes .../00002.png | Bin 0 -> 724 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 427 bytes .../00001.png | Bin 0 -> 418 bytes .../00002.png | Bin 0 -> 751 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 425 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 374 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 453 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 338 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 372 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 426 bytes .../00001.png | Bin 0 -> 409 bytes .../00002.png | Bin 0 -> 898 bytes .../00003.png | Bin 0 -> 521 bytes .../00004.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 427 bytes .../00001.png | Bin 0 -> 394 bytes .../00002.png | Bin 0 -> 724 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 425 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 374 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 360 bytes .../00002.png | Bin 0 -> 414 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 357 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 360 bytes .../00002.png | Bin 0 -> 841 bytes .../00003.png | Bin 0 -> 833 bytes .../00004.png | Bin 0 -> 845 bytes .../00005.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 357 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 360 bytes .../00002.png | Bin 0 -> 841 bytes .../00003.png | Bin 0 -> 833 bytes .../00004.png | Bin 0 -> 845 bytes .../00005.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 357 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 377 bytes .../00002.png | Bin 0 -> 519 bytes .../00003.png | Bin 0 -> 471 bytes .../00004.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 363 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 377 bytes .../00002.png | Bin 0 -> 519 bytes .../00003.png | Bin 0 -> 471 bytes .../00004.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 363 bytes .../00001.png | Bin 0 -> 468 bytes .../snapshots/nanox/test_dashboard/00000.png | Bin 0 -> 537 bytes .../snapshots/nanox/test_dashboard/00001.png | Bin 0 -> 345 bytes .../snapshots/nanox/test_dashboard/00002.png | Bin 0 -> 350 bytes .../snapshots/nanox/test_dashboard/00003.png | Bin 0 -> 295 bytes .../00000.png | Bin 0 -> 493 bytes .../00001.png | Bin 0 -> 404 bytes .../00002.png | Bin 0 -> 402 bytes .../00003.png | Bin 0 -> 488 bytes .../00004.png | Bin 0 -> 1009 bytes .../00005.png | Bin 0 -> 963 bytes .../00006.png | Bin 0 -> 490 bytes .../00007.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 493 bytes .../00001.png | Bin 0 -> 404 bytes .../00002.png | Bin 0 -> 343 bytes .../00003.png | Bin 0 -> 488 bytes .../00000.png | Bin 0 -> 976 bytes .../00001.png | Bin 0 -> 972 bytes .../00002.png | Bin 0 -> 477 bytes .../00003.png | Bin 0 -> 364 bytes .../00004.png | Bin 0 -> 366 bytes .../00000.png | Bin 0 -> 493 bytes .../00001.png | Bin 0 -> 404 bytes .../00002.png | Bin 0 -> 343 bytes .../00003.png | Bin 0 -> 488 bytes .../44'/1'/0'_0_0/00000.png | Bin 0 -> 395 bytes .../44'/1'/0'_0_0/00001.png | Bin 0 -> 344 bytes .../44'/1'/0'_0_0/00002.png | Bin 0 -> 960 bytes .../44'/1'/0'_0_0/00003.png | Bin 0 -> 1016 bytes .../44'/1'/0'_0_0/00004.png | Bin 0 -> 500 bytes .../44'/1'/0'_0_0/00005.png | Bin 0 -> 364 bytes .../44'/1'/10'_0_0/00000.png | Bin 0 -> 395 bytes .../44'/1'/10'_0_0/00001.png | Bin 0 -> 347 bytes .../44'/1'/10'_0_0/00002.png | Bin 0 -> 975 bytes .../44'/1'/10'_0_0/00003.png | Bin 0 -> 953 bytes .../44'/1'/10'_0_0/00004.png | Bin 0 -> 517 bytes .../44'/1'/10'_0_0/00005.png | Bin 0 -> 364 bytes .../44'/1'/2'/1/42_0_0/00000.png | Bin 0 -> 395 bytes .../44'/1'/2'/1/42_0_0/00001.png | Bin 0 -> 382 bytes .../44'/1'/2'/1/42_0_0/00002.png | Bin 0 -> 949 bytes .../44'/1'/2'/1/42_0_0/00003.png | Bin 0 -> 984 bytes .../44'/1'/2'/1/42_0_0/00004.png | Bin 0 -> 473 bytes .../44'/1'/2'/1/42_0_0/00005.png | Bin 0 -> 364 bytes .../48'/1'/4'/1'/0/7_0_0/00000.png | Bin 0 -> 395 bytes .../48'/1'/4'/1'/0/7_0_0/00001.png | Bin 0 -> 385 bytes .../48'/1'/4'/1'/0/7_0_0/00002.png | Bin 0 -> 974 bytes .../48'/1'/4'/1'/0/7_0_0/00003.png | Bin 0 -> 993 bytes .../48'/1'/4'/1'/0/7_0_0/00004.png | Bin 0 -> 520 bytes .../48'/1'/4'/1'/0/7_0_0/00005.png | Bin 0 -> 364 bytes .../49'/1'/1'/1/3_0_0/00000.png | Bin 0 -> 395 bytes .../49'/1'/1'/1/3_0_0/00001.png | Bin 0 -> 354 bytes .../49'/1'/1'/1/3_0_0/00002.png | Bin 0 -> 959 bytes .../49'/1'/1'/1/3_0_0/00003.png | Bin 0 -> 989 bytes .../49'/1'/1'/1/3_0_0/00004.png | Bin 0 -> 517 bytes .../49'/1'/1'/1/3_0_0/00005.png | Bin 0 -> 364 bytes .../84'/1'/2'/0/10_0_0/00000.png | Bin 0 -> 395 bytes .../84'/1'/2'/0/10_0_0/00001.png | Bin 0 -> 372 bytes .../84'/1'/2'/0/10_0_0/00002.png | Bin 0 -> 959 bytes .../84'/1'/2'/0/10_0_0/00003.png | Bin 0 -> 1012 bytes .../84'/1'/2'/0/10_0_0/00004.png | Bin 0 -> 462 bytes .../84'/1'/2'/0/10_0_0/00005.png | Bin 0 -> 364 bytes .../86'/1'/4'/1/12_0_0/00000.png | Bin 0 -> 395 bytes .../86'/1'/4'/1/12_0_0/00001.png | Bin 0 -> 382 bytes .../86'/1'/4'/1/12_0_0/00002.png | Bin 0 -> 967 bytes .../86'/1'/4'/1/12_0_0/00003.png | Bin 0 -> 991 bytes .../86'/1'/4'/1/12_0_0/00004.png | Bin 0 -> 520 bytes .../86'/1'/4'/1/12_0_0/00005.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 481 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 734 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 758 bytes .../00001.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 678 bytes .../00001.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 448 bytes .../00002.png | Bin 0 -> 865 bytes .../00003.png | Bin 0 -> 891 bytes .../00004.png | Bin 0 -> 953 bytes .../00005.png | Bin 0 -> 858 bytes .../00006.png | Bin 0 -> 968 bytes .../00007.png | Bin 0 -> 985 bytes .../00008.png | Bin 0 -> 479 bytes .../00009.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1018 bytes .../00001.png | Bin 0 -> 1017 bytes .../00002.png | Bin 0 -> 732 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1067 bytes .../00001.png | Bin 0 -> 1034 bytes .../00002.png | Bin 0 -> 593 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1059 bytes .../00001.png | Bin 0 -> 1072 bytes .../00002.png | Bin 0 -> 620 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 480 bytes .../00002.png | Bin 0 -> 491 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1013 bytes .../00001.png | Bin 0 -> 1012 bytes .../00002.png | Bin 0 -> 725 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 575 bytes .../00002.png | Bin 0 -> 511 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1013 bytes .../00001.png | Bin 0 -> 1012 bytes .../00002.png | Bin 0 -> 725 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 577 bytes .../00002.png | Bin 0 -> 540 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1013 bytes .../00001.png | Bin 0 -> 1012 bytes .../00002.png | Bin 0 -> 725 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 472 bytes .../00002.png | Bin 0 -> 474 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1013 bytes .../00001.png | Bin 0 -> 1012 bytes .../00002.png | Bin 0 -> 725 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 686 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1009 bytes .../00001.png | Bin 0 -> 990 bytes .../00002.png | Bin 0 -> 749 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1013 bytes .../00001.png | Bin 0 -> 1027 bytes .../00002.png | Bin 0 -> 755 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 622 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1009 bytes .../00001.png | Bin 0 -> 990 bytes .../00002.png | Bin 0 -> 782 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1013 bytes .../00001.png | Bin 0 -> 1027 bytes .../00002.png | Bin 0 -> 773 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 683 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1023 bytes .../00001.png | Bin 0 -> 1047 bytes .../00002.png | Bin 0 -> 750 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1005 bytes .../00001.png | Bin 0 -> 1058 bytes .../00002.png | Bin 0 -> 773 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 644 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1023 bytes .../00001.png | Bin 0 -> 1047 bytes .../00002.png | Bin 0 -> 779 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1005 bytes .../00001.png | Bin 0 -> 1058 bytes .../00002.png | Bin 0 -> 793 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 683 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1041 bytes .../00001.png | Bin 0 -> 1035 bytes .../00002.png | Bin 0 -> 784 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1019 bytes .../00001.png | Bin 0 -> 1026 bytes .../00002.png | Bin 0 -> 734 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 633 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1041 bytes .../00001.png | Bin 0 -> 1035 bytes .../00002.png | Bin 0 -> 812 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1019 bytes .../00001.png | Bin 0 -> 1026 bytes .../00002.png | Bin 0 -> 760 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 683 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 683 bytes .../00003.png | Bin 0 -> 364 bytes .../00004.png | Bin 0 -> 366 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 633 bytes .../00003.png | Bin 0 -> 364 bytes .../00004.png | Bin 0 -> 366 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 726 bytes .../00002.png | Bin 0 -> 544 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1041 bytes .../00001.png | Bin 0 -> 1035 bytes .../00002.png | Bin 0 -> 784 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1019 bytes .../00001.png | Bin 0 -> 1026 bytes .../00002.png | Bin 0 -> 734 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 662 bytes .../00002.png | Bin 0 -> 728 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1002 bytes .../00001.png | Bin 0 -> 1055 bytes .../00002.png | Bin 0 -> 769 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1047 bytes .../00001.png | Bin 0 -> 1041 bytes .../00002.png | Bin 0 -> 796 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1028 bytes .../00001.png | Bin 0 -> 1030 bytes .../00002.png | Bin 0 -> 737 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 586 bytes .../00002.png | Bin 0 -> 544 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1004 bytes .../00001.png | Bin 0 -> 1034 bytes .../00002.png | Bin 0 -> 543 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1019 bytes .../00001.png | Bin 0 -> 1026 bytes .../00002.png | Bin 0 -> 734 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 479 bytes .../00001.png | Bin 0 -> 862 bytes .../00002.png | Bin 0 -> 504 bytes .../00003.png | Bin 0 -> 683 bytes .../00004.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1041 bytes .../00001.png | Bin 0 -> 1035 bytes .../00002.png | Bin 0 -> 784 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 1019 bytes .../00001.png | Bin 0 -> 1026 bytes .../00002.png | Bin 0 -> 734 bytes .../00003.png | Bin 0 -> 364 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 468 bytes .../test_sighash_all_sign_psbt_0_0/00000.png | Bin 0 -> 418 bytes .../test_sighash_all_sign_psbt_0_0/00001.png | Bin 0 -> 400 bytes .../test_sighash_all_sign_psbt_0_0/00002.png | Bin 0 -> 772 bytes .../test_sighash_all_sign_psbt_0_0/00003.png | Bin 0 -> 349 bytes .../test_sighash_all_sign_psbt_0_1/00000.png | Bin 0 -> 379 bytes .../test_sighash_all_sign_psbt_0_1/00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 468 bytes .../test_sighash_none_sign_psbt_0_0/00000.png | Bin 0 -> 467 bytes .../test_sighash_none_sign_psbt_0_0/00001.png | Bin 0 -> 488 bytes .../test_sighash_none_sign_psbt_0_0/00002.png | Bin 0 -> 349 bytes .../test_sighash_none_sign_psbt_1_0/00000.png | Bin 0 -> 418 bytes .../test_sighash_none_sign_psbt_1_0/00001.png | Bin 0 -> 400 bytes .../test_sighash_none_sign_psbt_1_0/00002.png | Bin 0 -> 772 bytes .../test_sighash_none_sign_psbt_1_0/00003.png | Bin 0 -> 349 bytes .../test_sighash_none_sign_psbt_1_1/00000.png | Bin 0 -> 379 bytes .../test_sighash_none_sign_psbt_1_1/00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 402 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 370 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 467 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../test_sighash_unsupported_0_0/00000.png | Bin 0 -> 418 bytes .../test_sighash_unsupported_0_0/00001.png | Bin 0 -> 400 bytes .../test_sighash_unsupported_0_0/00002.png | Bin 0 -> 772 bytes .../test_sighash_unsupported_0_0/00003.png | Bin 0 -> 349 bytes .../test_sighash_unsupported_0_1/00000.png | Bin 0 -> 379 bytes .../test_sighash_unsupported_0_1/00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../nanox/test_sign_message_0_0/00000.png | Bin 0 -> 415 bytes .../nanox/test_sign_message_0_0/00001.png | Bin 0 -> 350 bytes .../nanox/test_sign_message_0_1/00000.png | Bin 0 -> 698 bytes .../nanox/test_sign_message_0_1/00001.png | Bin 0 -> 576 bytes .../nanox/test_sign_message_0_1/00002.png | Bin 0 -> 446 bytes .../test_sign_message_accept_0_0/00000.png | Bin 0 -> 415 bytes .../test_sign_message_accept_0_0/00001.png | Bin 0 -> 347 bytes .../test_sign_message_accept_0_1/00000.png | Bin 0 -> 462 bytes .../test_sign_message_accept_0_1/00001.png | Bin 0 -> 446 bytes .../00000.png | Bin 0 -> 415 bytes .../00001.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 753 bytes .../00001.png | Bin 0 -> 810 bytes .../00002.png | Bin 0 -> 460 bytes .../00003.png | Bin 0 -> 340 bytes .../00000.png | Bin 0 -> 720 bytes .../00001.png | Bin 0 -> 790 bytes .../00002.png | Bin 0 -> 488 bytes .../00003.png | Bin 0 -> 340 bytes .../00000.png | Bin 0 -> 703 bytes .../00001.png | Bin 0 -> 766 bytes .../00002.png | Bin 0 -> 571 bytes .../00003.png | Bin 0 -> 340 bytes .../00000.png | Bin 0 -> 750 bytes .../00001.png | Bin 0 -> 778 bytes .../00002.png | Bin 0 -> 479 bytes .../00003.png | Bin 0 -> 340 bytes .../00000.png | Bin 0 -> 598 bytes .../00001.png | Bin 0 -> 446 bytes .../00000.png | Bin 0 -> 415 bytes .../00001.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 918 bytes .../00001.png | Bin 0 -> 558 bytes .../00002.png | Bin 0 -> 457 bytes .../00000.png | Bin 0 -> 415 bytes .../00001.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 917 bytes .../00001.png | Bin 0 -> 553 bytes .../00002.png | Bin 0 -> 457 bytes .../00000.png | Bin 0 -> 415 bytes .../00001.png | Bin 0 -> 350 bytes .../00002.png | Bin 0 -> 918 bytes .../00003.png | Bin 0 -> 558 bytes .../00004.png | Bin 0 -> 457 bytes .../00005.png | Bin 0 -> 366 bytes .../test_sign_message_reject_0_0/00000.png | Bin 0 -> 415 bytes .../test_sign_message_reject_0_0/00001.png | Bin 0 -> 350 bytes .../test_sign_message_reject_0_0/00002.png | Bin 0 -> 476 bytes .../test_sign_message_reject_0_0/00003.png | Bin 0 -> 446 bytes .../test_sign_message_reject_0_0/00004.png | Bin 0 -> 366 bytes .../00000.png | Bin 0 -> 482 bytes .../00001.png | Bin 0 -> 635 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 377 bytes .../00002.png | Bin 0 -> 707 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 381 bytes .../00001.png | Bin 0 -> 468 bytes .../test_sign_psbt_highfee_0_0/00000.png | Bin 0 -> 418 bytes .../test_sign_psbt_highfee_0_0/00001.png | Bin 0 -> 392 bytes .../test_sign_psbt_highfee_0_0/00002.png | Bin 0 -> 767 bytes .../test_sign_psbt_highfee_0_0/00003.png | Bin 0 -> 349 bytes .../test_sign_psbt_highfee_1_0/00000.png | Bin 0 -> 526 bytes .../test_sign_psbt_highfee_1_0/00001.png | Bin 0 -> 349 bytes .../test_sign_psbt_highfee_1_1/00000.png | Bin 0 -> 393 bytes .../test_sign_psbt_highfee_1_1/00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 482 bytes .../00001.png | Bin 0 -> 536 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 377 bytes .../00002.png | Bin 0 -> 781 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 363 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 482 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 409 bytes .../00002.png | Bin 0 -> 689 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 381 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 482 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 428 bytes .../00001.png | Bin 0 -> 385 bytes .../00002.png | Bin 0 -> 438 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 409 bytes .../00002.png | Bin 0 -> 689 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 381 bytes .../00001.png | Bin 0 -> 468 bytes .../test_sign_psbt_multisig_wsh_0_0/00000.png | Bin 0 -> 482 bytes .../test_sign_psbt_multisig_wsh_0_0/00001.png | Bin 0 -> 465 bytes .../test_sign_psbt_multisig_wsh_0_0/00002.png | Bin 0 -> 349 bytes .../test_sign_psbt_multisig_wsh_1_0/00000.png | Bin 0 -> 418 bytes .../test_sign_psbt_multisig_wsh_1_0/00001.png | Bin 0 -> 428 bytes .../test_sign_psbt_multisig_wsh_1_0/00002.png | Bin 0 -> 767 bytes .../test_sign_psbt_multisig_wsh_1_0/00003.png | Bin 0 -> 349 bytes .../test_sign_psbt_multisig_wsh_2_0/00000.png | Bin 0 -> 394 bytes .../test_sign_psbt_multisig_wsh_2_0/00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 482 bytes .../00001.png | Bin 0 -> 465 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 428 bytes .../00002.png | Bin 0 -> 767 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 394 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 395 bytes .../00002.png | Bin 0 -> 780 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 345 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 395 bytes .../00002.png | Bin 0 -> 780 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 345 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 394 bytes .../00002.png | Bin 0 -> 724 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 356 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 394 bytes .../00002.png | Bin 0 -> 724 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 356 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 394 bytes .../00002.png | Bin 0 -> 724 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 356 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 394 bytes .../00002.png | Bin 0 -> 724 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 356 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 410 bytes .../00002.png | Bin 0 -> 767 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 376 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 410 bytes .../00002.png | Bin 0 -> 767 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 376 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 917 bytes .../00003.png | Bin 0 -> 504 bytes .../00004.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 372 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 428 bytes .../00001.png | Bin 0 -> 385 bytes .../00002.png | Bin 0 -> 438 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 917 bytes .../00003.png | Bin 0 -> 504 bytes .../00004.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 372 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 917 bytes .../00003.png | Bin 0 -> 504 bytes .../00004.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 372 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 387 bytes .../00002.png | Bin 0 -> 780 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 426 bytes .../00001.png | Bin 0 -> 395 bytes .../00002.png | Bin 0 -> 804 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 368 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 387 bytes .../00002.png | Bin 0 -> 780 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 426 bytes .../00001.png | Bin 0 -> 395 bytes .../00002.png | Bin 0 -> 804 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 368 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 427 bytes .../00001.png | Bin 0 -> 384 bytes .../00002.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 372 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 364 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 372 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 364 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 372 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 364 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 372 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 364 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 482 bytes .../00001.png | Bin 0 -> 726 bytes .../00002.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 400 bytes .../00002.png | Bin 0 -> 787 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 375 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 453 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 338 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 372 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 426 bytes .../00001.png | Bin 0 -> 409 bytes .../00002.png | Bin 0 -> 898 bytes .../00003.png | Bin 0 -> 521 bytes .../00004.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 427 bytes .../00001.png | Bin 0 -> 394 bytes .../00002.png | Bin 0 -> 724 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 425 bytes .../00001.png | Bin 0 -> 418 bytes .../00002.png | Bin 0 -> 751 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 430 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 374 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 453 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 338 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 372 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 426 bytes .../00001.png | Bin 0 -> 394 bytes .../00002.png | Bin 0 -> 724 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 427 bytes .../00001.png | Bin 0 -> 418 bytes .../00002.png | Bin 0 -> 751 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 425 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 374 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 453 bytes .../00001.png | Bin 0 -> 488 bytes .../00002.png | Bin 0 -> 338 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 372 bytes .../00002.png | Bin 0 -> 772 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 426 bytes .../00001.png | Bin 0 -> 409 bytes .../00002.png | Bin 0 -> 898 bytes .../00003.png | Bin 0 -> 521 bytes .../00004.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 427 bytes .../00001.png | Bin 0 -> 394 bytes .../00002.png | Bin 0 -> 724 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 425 bytes .../00001.png | Bin 0 -> 374 bytes .../00002.png | Bin 0 -> 701 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 374 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 360 bytes .../00002.png | Bin 0 -> 414 bytes .../00003.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 357 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 360 bytes .../00002.png | Bin 0 -> 841 bytes .../00003.png | Bin 0 -> 833 bytes .../00004.png | Bin 0 -> 845 bytes .../00005.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 357 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 360 bytes .../00002.png | Bin 0 -> 841 bytes .../00003.png | Bin 0 -> 833 bytes .../00004.png | Bin 0 -> 845 bytes .../00005.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 357 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 377 bytes .../00002.png | Bin 0 -> 519 bytes .../00003.png | Bin 0 -> 471 bytes .../00004.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 363 bytes .../00001.png | Bin 0 -> 468 bytes .../00000.png | Bin 0 -> 418 bytes .../00001.png | Bin 0 -> 377 bytes .../00002.png | Bin 0 -> 519 bytes .../00003.png | Bin 0 -> 471 bytes .../00004.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 363 bytes .../00001.png | Bin 0 -> 468 bytes tests/snapshots/stax/test_dashboard/00000.png | Bin 0 -> 12035 bytes tests/snapshots/stax/test_dashboard/00001.png | Bin 0 -> 10225 bytes tests/snapshots/stax/test_dashboard/00002.png | Bin 0 -> 12035 bytes .../00000.png | Bin 0 -> 8682 bytes .../00001.png | Bin 0 -> 8871 bytes .../00002.png | Bin 0 -> 7357 bytes .../00003.png | Bin 0 -> 22588 bytes .../00004.png | Bin 0 -> 8741 bytes .../00000.png | Bin 0 -> 8682 bytes .../00001.png | Bin 0 -> 8871 bytes .../00002.png | Bin 0 -> 6392 bytes .../00003.png | Bin 0 -> 23741 bytes .../00004.png | Bin 0 -> 8741 bytes .../00000.png | Bin 0 -> 8682 bytes .../00001.png | Bin 0 -> 8871 bytes .../00002.png | Bin 0 -> 6392 bytes .../00003.png | Bin 0 -> 23741 bytes .../00004.png | Bin 0 -> 8741 bytes .../44'/1'/0'_0_0/00000.png | Bin 0 -> 8682 bytes .../44'/1'/0'_0_0/00001.png | Bin 0 -> 6251 bytes .../44'/1'/0'_0_0/00002.png | Bin 0 -> 23641 bytes .../44'/1'/0'_0_0/00003.png | Bin 0 -> 8741 bytes .../44'/1'/10'_0_0/00000.png | Bin 0 -> 8682 bytes .../44'/1'/10'_0_0/00001.png | Bin 0 -> 6245 bytes .../44'/1'/10'_0_0/00002.png | Bin 0 -> 24073 bytes .../44'/1'/10'_0_0/00003.png | Bin 0 -> 8741 bytes .../44'/1'/2'/1/42_0_0/00000.png | Bin 0 -> 8682 bytes .../44'/1'/2'/1/42_0_0/00001.png | Bin 0 -> 6519 bytes .../44'/1'/2'/1/42_0_0/00002.png | Bin 0 -> 22612 bytes .../44'/1'/2'/1/42_0_0/00003.png | Bin 0 -> 8741 bytes .../48'/1'/4'/1'/0/7_0_0/00000.png | Bin 0 -> 8682 bytes .../48'/1'/4'/1'/0/7_0_0/00001.png | Bin 0 -> 6974 bytes .../48'/1'/4'/1'/0/7_0_0/00002.png | Bin 0 -> 24180 bytes .../48'/1'/4'/1'/0/7_0_0/00003.png | Bin 0 -> 8741 bytes .../49'/1'/1'/1/3_0_0/00000.png | Bin 0 -> 8682 bytes .../49'/1'/1'/1/3_0_0/00001.png | Bin 0 -> 6672 bytes .../49'/1'/1'/1/3_0_0/00002.png | Bin 0 -> 23512 bytes .../49'/1'/1'/1/3_0_0/00003.png | Bin 0 -> 8741 bytes .../84'/1'/2'/0/10_0_0/00000.png | Bin 0 -> 8682 bytes .../84'/1'/2'/0/10_0_0/00001.png | Bin 0 -> 7007 bytes .../84'/1'/2'/0/10_0_0/00002.png | Bin 0 -> 22832 bytes .../84'/1'/2'/0/10_0_0/00003.png | Bin 0 -> 8741 bytes .../86'/1'/4'/1/12_0_0/00000.png | Bin 0 -> 8682 bytes .../86'/1'/4'/1/12_0_0/00001.png | Bin 0 -> 6923 bytes .../86'/1'/4'/1/12_0_0/00002.png | Bin 0 -> 23486 bytes .../86'/1'/4'/1/12_0_0/00003.png | Bin 0 -> 8741 bytes .../00000.png | Bin 0 -> 8928 bytes .../00001.png | Bin 0 -> 15123 bytes .../00002.png | Bin 0 -> 8478 bytes .../00000.png | Bin 0 -> 9271 bytes .../00001.png | Bin 0 -> 14119 bytes .../00000.png | Bin 0 -> 9271 bytes .../00001.png | Bin 0 -> 12710 bytes .../00000.png | Bin 0 -> 8281 bytes .../00001.png | Bin 0 -> 7076 bytes .../00002.png | Bin 0 -> 21458 bytes .../00003.png | Bin 0 -> 8552 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7679 bytes .../00002.png | Bin 0 -> 26008 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7695 bytes .../00002.png | Bin 0 -> 24546 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7768 bytes .../00002.png | Bin 0 -> 24260 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8281 bytes .../00001.png | Bin 0 -> 10593 bytes .../00002.png | Bin 0 -> 8552 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7679 bytes .../00002.png | Bin 0 -> 25568 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8281 bytes .../00001.png | Bin 0 -> 11620 bytes .../00002.png | Bin 0 -> 8552 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7679 bytes .../00002.png | Bin 0 -> 25568 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8281 bytes .../00001.png | Bin 0 -> 12203 bytes .../00002.png | Bin 0 -> 8552 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7679 bytes .../00002.png | Bin 0 -> 25568 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8281 bytes .../00001.png | Bin 0 -> 9984 bytes .../00002.png | Bin 0 -> 8552 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7679 bytes .../00002.png | Bin 0 -> 25568 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8281 bytes .../00001.png | Bin 0 -> 12966 bytes .../00002.png | Bin 0 -> 8552 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7788 bytes .../00002.png | Bin 0 -> 25864 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7579 bytes .../00002.png | Bin 0 -> 25559 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8281 bytes .../00001.png | Bin 0 -> 12429 bytes .../00002.png | Bin 0 -> 8552 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7788 bytes .../00002.png | Bin 0 -> 26109 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7579 bytes .../00002.png | Bin 0 -> 25859 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8281 bytes .../00001.png | Bin 0 -> 12760 bytes .../00002.png | Bin 0 -> 8552 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7788 bytes .../00002.png | Bin 0 -> 26361 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7579 bytes .../00002.png | Bin 0 -> 27253 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8281 bytes .../00001.png | Bin 0 -> 12343 bytes .../00002.png | Bin 0 -> 8552 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7788 bytes .../00002.png | Bin 0 -> 26685 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7579 bytes .../00002.png | Bin 0 -> 27487 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8281 bytes .../00001.png | Bin 0 -> 13000 bytes .../00002.png | Bin 0 -> 8552 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7788 bytes .../00002.png | Bin 0 -> 27050 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7579 bytes .../00002.png | Bin 0 -> 26008 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8281 bytes .../00001.png | Bin 0 -> 12627 bytes .../00002.png | Bin 0 -> 8552 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7788 bytes .../00002.png | Bin 0 -> 27282 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7579 bytes .../00002.png | Bin 0 -> 26298 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8281 bytes .../00001.png | Bin 0 -> 13000 bytes .../00002.png | Bin 0 -> 8552 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7976 bytes .../00002.png | Bin 0 -> 25704 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7775 bytes .../00002.png | Bin 0 -> 26008 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8281 bytes .../00001.png | Bin 0 -> 13000 bytes .../00002.png | Bin 0 -> 8552 bytes .../00000.png | Bin 0 -> 8281 bytes .../00001.png | Bin 0 -> 12627 bytes .../00002.png | Bin 0 -> 8552 bytes .../00000.png | Bin 0 -> 8281 bytes .../00001.png | Bin 0 -> 14186 bytes .../00002.png | Bin 0 -> 8552 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7788 bytes .../00002.png | Bin 0 -> 27050 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7579 bytes .../00002.png | Bin 0 -> 26008 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8281 bytes .../00001.png | Bin 0 -> 15648 bytes .../00002.png | Bin 0 -> 8552 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7679 bytes .../00002.png | Bin 0 -> 27253 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7695 bytes .../00002.png | Bin 0 -> 27050 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7627 bytes .../00002.png | Bin 0 -> 26008 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8281 bytes .../00001.png | Bin 0 -> 12477 bytes .../00002.png | Bin 0 -> 8552 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7749 bytes .../00002.png | Bin 0 -> 23881 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7579 bytes .../00002.png | Bin 0 -> 26008 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8281 bytes .../00001.png | Bin 0 -> 18006 bytes .../00002.png | Bin 0 -> 8552 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7788 bytes .../00002.png | Bin 0 -> 27050 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8264 bytes .../00001.png | Bin 0 -> 7579 bytes .../00002.png | Bin 0 -> 26008 bytes .../00003.png | Bin 0 -> 8612 bytes .../00000.png | Bin 0 -> 8907 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15636 bytes .../00001.png | Bin 0 -> 7472 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8907 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15636 bytes .../00001.png | Bin 0 -> 7524 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8907 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15636 bytes .../00001.png | Bin 0 -> 7472 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15636 bytes .../00001.png | Bin 0 -> 7472 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15636 bytes .../00001.png | Bin 0 -> 7524 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../test_sighash_all_sign_psbt_0_0/00000.png | Bin 0 -> 10835 bytes .../test_sighash_all_sign_psbt_0_0/00001.png | Bin 0 -> 3660 bytes .../test_sighash_all_sign_psbt_1_0/00000.png | Bin 0 -> 15636 bytes .../test_sighash_all_sign_psbt_1_0/00001.png | Bin 0 -> 7472 bytes .../test_sighash_all_sign_psbt_1_0/00002.png | Bin 0 -> 11727 bytes .../test_sighash_all_sign_psbt_2_0/00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8907 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15636 bytes .../00001.png | Bin 0 -> 7472 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8907 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15636 bytes .../00001.png | Bin 0 -> 7524 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8907 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15636 bytes .../00001.png | Bin 0 -> 7472 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8907 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15636 bytes .../00001.png | Bin 0 -> 7472 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8907 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15636 bytes .../00001.png | Bin 0 -> 7524 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../test_sighash_none_sign_psbt_0_0/00000.png | Bin 0 -> 8907 bytes .../test_sighash_none_sign_psbt_1_0/00000.png | Bin 0 -> 10835 bytes .../test_sighash_none_sign_psbt_1_0/00001.png | Bin 0 -> 3660 bytes .../test_sighash_none_sign_psbt_2_0/00000.png | Bin 0 -> 15636 bytes .../test_sighash_none_sign_psbt_2_0/00001.png | Bin 0 -> 7472 bytes .../test_sighash_none_sign_psbt_2_0/00002.png | Bin 0 -> 11727 bytes .../test_sighash_none_sign_psbt_3_0/00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 13485 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 7444 bytes .../00001.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8907 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 13485 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 7444 bytes .../00001.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8907 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 13485 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 7444 bytes .../00001.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8907 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 13485 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 7444 bytes .../00001.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8907 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 13485 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 7444 bytes .../00001.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8907 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 13485 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 7444 bytes .../00001.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8907 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15636 bytes .../00001.png | Bin 0 -> 7472 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8907 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15636 bytes .../00001.png | Bin 0 -> 7524 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8907 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15636 bytes .../00001.png | Bin 0 -> 7472 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8907 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15636 bytes .../00001.png | Bin 0 -> 7472 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8907 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15574 bytes .../00001.png | Bin 0 -> 7524 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8907 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15636 bytes .../00001.png | Bin 0 -> 7524 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8907 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15636 bytes .../00001.png | Bin 0 -> 7472 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../test_sighash_unsupported_0_0/00000.png | Bin 0 -> 10835 bytes .../test_sighash_unsupported_0_0/00001.png | Bin 0 -> 3660 bytes .../test_sighash_unsupported_1_0/00000.png | Bin 0 -> 15636 bytes .../test_sighash_unsupported_1_0/00001.png | Bin 0 -> 7472 bytes .../test_sighash_unsupported_1_0/00002.png | Bin 0 -> 11727 bytes .../test_sighash_unsupported_2_0/00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15636 bytes .../00001.png | Bin 0 -> 7472 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../stax/test_sign_message_0_0/00000.png | Bin 0 -> 8321 bytes .../stax/test_sign_message_0_0/00001.png | Bin 0 -> 16671 bytes .../stax/test_sign_message_0_0/00002.png | Bin 0 -> 8746 bytes .../test_sign_message_accept_0_0/00000.png | Bin 0 -> 8321 bytes .../test_sign_message_accept_0_0/00001.png | Bin 0 -> 10259 bytes .../test_sign_message_accept_0_0/00002.png | Bin 0 -> 8746 bytes .../00000.png | Bin 0 -> 8321 bytes .../00001.png | Bin 0 -> 19944 bytes .../00002.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 18868 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 20003 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 20008 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 10796 bytes .../00001.png | Bin 0 -> 8746 bytes .../00000.png | Bin 0 -> 17407 bytes .../00001.png | Bin 0 -> 8746 bytes .../00000.png | Bin 0 -> 16986 bytes .../00001.png | Bin 0 -> 8746 bytes .../00000.png | Bin 0 -> 17080 bytes .../00001.png | Bin 0 -> 8746 bytes .../00000.png | Bin 0 -> 8412 bytes .../test_sign_message_reject_0_0/00000.png | Bin 0 -> 8321 bytes .../test_sign_message_reject_0_0/00001.png | Bin 0 -> 9871 bytes .../test_sign_message_reject_0_0/00002.png | Bin 0 -> 8746 bytes .../test_sign_message_reject_0_1/00000.png | Bin 0 -> 8412 bytes .../00000.png | Bin 0 -> 9453 bytes .../00001.png | Bin 0 -> 9914 bytes .../00002.png | Bin 0 -> 9175 bytes .../00000.png | Bin 0 -> 5881 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 13210 bytes .../00001.png | Bin 0 -> 7452 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../stax/test_sign_psbt_highfee_0_0/00000.png | Bin 0 -> 10835 bytes .../stax/test_sign_psbt_highfee_0_0/00001.png | Bin 0 -> 3660 bytes .../stax/test_sign_psbt_highfee_1_0/00000.png | Bin 0 -> 15071 bytes .../stax/test_sign_psbt_highfee_1_0/00001.png | Bin 0 -> 3660 bytes .../stax/test_sign_psbt_highfee_2_0/00000.png | Bin 0 -> 9122 bytes .../stax/test_sign_psbt_highfee_2_1/00000.png | Bin 0 -> 8033 bytes .../stax/test_sign_psbt_highfee_2_1/00001.png | Bin 0 -> 11727 bytes .../stax/test_sign_psbt_highfee_3_0/00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 9453 bytes .../00001.png | Bin 0 -> 8817 bytes .../00002.png | Bin 0 -> 9175 bytes .../00000.png | Bin 0 -> 5881 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 14222 bytes .../00001.png | Bin 0 -> 7664 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 9453 bytes .../00001.png | Bin 0 -> 7933 bytes .../00002.png | Bin 0 -> 9175 bytes .../00000.png | Bin 0 -> 5881 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 14137 bytes .../00001.png | Bin 0 -> 7501 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 9453 bytes .../00001.png | Bin 0 -> 7933 bytes .../00002.png | Bin 0 -> 9175 bytes .../00000.png | Bin 0 -> 5881 bytes .../00000.png | Bin 0 -> 11819 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 14137 bytes .../00001.png | Bin 0 -> 7501 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../test_sign_psbt_multisig_wsh_0_0/00000.png | Bin 0 -> 9453 bytes .../test_sign_psbt_multisig_wsh_0_0/00001.png | Bin 0 -> 7933 bytes .../test_sign_psbt_multisig_wsh_0_0/00002.png | Bin 0 -> 9175 bytes .../test_sign_psbt_multisig_wsh_0_1/00000.png | Bin 0 -> 5881 bytes .../test_sign_psbt_multisig_wsh_1_0/00000.png | Bin 0 -> 10835 bytes .../test_sign_psbt_multisig_wsh_1_0/00001.png | Bin 0 -> 3660 bytes .../test_sign_psbt_multisig_wsh_2_0/00000.png | Bin 0 -> 15601 bytes .../test_sign_psbt_multisig_wsh_2_0/00001.png | Bin 0 -> 3660 bytes .../test_sign_psbt_multisig_wsh_3_0/00000.png | Bin 0 -> 7854 bytes .../test_sign_psbt_multisig_wsh_3_0/00001.png | Bin 0 -> 11727 bytes .../test_sign_psbt_multisig_wsh_4_0/00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 9453 bytes .../00001.png | Bin 0 -> 7933 bytes .../00002.png | Bin 0 -> 9175 bytes .../00000.png | Bin 0 -> 5881 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15601 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 7854 bytes .../00001.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 14565 bytes .../00001.png | Bin 0 -> 6998 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 14565 bytes .../00001.png | Bin 0 -> 6998 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 14238 bytes .../00001.png | Bin 0 -> 7105 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 14238 bytes .../00001.png | Bin 0 -> 7105 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 14238 bytes .../00001.png | Bin 0 -> 7105 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 14238 bytes .../00001.png | Bin 0 -> 7105 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15336 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 7696 bytes .../00001.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15336 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 7696 bytes .../00001.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 13485 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 7444 bytes .../00001.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 13485 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 7444 bytes .../00001.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 18887 bytes .../00001.png | Bin 0 -> 7736 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 11819 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 18887 bytes .../00001.png | Bin 0 -> 7736 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 18887 bytes .../00001.png | Bin 0 -> 7736 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15420 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 16569 bytes .../00001.png | Bin 0 -> 7101 bytes .../00002.png | Bin 0 -> 11730 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15420 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 16569 bytes .../00001.png | Bin 0 -> 7101 bytes .../00002.png | Bin 0 -> 11730 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 9685 bytes .../00001.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 14812 bytes .../00001.png | Bin 0 -> 7432 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 14812 bytes .../00001.png | Bin 0 -> 7432 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 14812 bytes .../00001.png | Bin 0 -> 7432 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 14812 bytes .../00001.png | Bin 0 -> 7432 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 9453 bytes .../00001.png | Bin 0 -> 11233 bytes .../00002.png | Bin 0 -> 9175 bytes .../00000.png | Bin 0 -> 5881 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 14717 bytes .../00001.png | Bin 0 -> 7490 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8721 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 19251 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15537 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 16758 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 14741 bytes .../00001.png | Bin 0 -> 7645 bytes .../00002.png | Bin 0 -> 11726 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8721 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15447 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 16907 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 14640 bytes .../00001.png | Bin 0 -> 7645 bytes .../00002.png | Bin 0 -> 11725 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 8721 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 19251 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 15536 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 14640 bytes .../00001.png | Bin 0 -> 7645 bytes .../00002.png | Bin 0 -> 11725 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 9304 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 7345 bytes .../00001.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 24758 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 7345 bytes .../00001.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 24758 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 7345 bytes .../00001.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 11414 bytes .../00001.png | Bin 0 -> 7516 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes .../00000.png | Bin 0 -> 10835 bytes .../00001.png | Bin 0 -> 3660 bytes .../00000.png | Bin 0 -> 11414 bytes .../00001.png | Bin 0 -> 7516 bytes .../00002.png | Bin 0 -> 11727 bytes .../00000.png | Bin 0 -> 6108 bytes tests/test_dashboard.py | 38 +- tests/test_e2e_miniscript.py | 463 +++ tests/test_e2e_multisig.py | 248 +- tests/test_e2e_tapscripts.py | 425 +++ tests/test_get_extended_pubkey.py | 146 +- tests/test_get_master_fingerprint.py | 4 +- tests/test_get_version.py | 4 +- tests/test_get_wallet_address.py | 349 +- tests/test_get_wallet_address_v1.py | 270 ++ tests/test_protocol.py | 38 + tests/test_register_wallet.py | 438 ++- tests/test_register_wallet_v1.py | 181 + tests/test_sign_message.py | 92 +- tests/test_sign_psbt.py | 915 +++-- tests/test_sign_psbt_v1.py | 480 +++ tests/test_sign_psbt_with_sighash_types.py | 614 +++ tests/test_status_word.py | 7 +- tests_liquid/test_get_wallet_address.py | 20 +- tests_liquid/test_register_wallet.py | 4 +- tests_liquid_main/test_get_wallet_address.py | 4 +- tests_mainnet/requirements.txt | 5 +- tests_mainnet/test_bip86.py | 8 +- tests_mainnet/test_dashboard.py | 5 +- unit-tests/CMakeLists.txt | 82 +- unit-tests/libs/crypto_mocks.c | 10 + unit-tests/libs/crypto_mocks.h | 7 + unit-tests/libs/sha-256.c | 224 ++ unit-tests/libs/sha-256.h | 105 + unit-tests/test_bip32.c | 4 +- unit-tests/test_buffer.c | 70 + unit-tests/test_display_utils.c | 6 +- unit-tests/test_script.c | 79 +- unit-tests/test_wallet.c | 678 +++- 4124 files changed, 32422 insertions(+), 13235 deletions(-) create mode 100644 .github/workflows/build_and_functional_tests.yml create mode 100644 .github/workflows/codeql-workflow.yml create mode 100644 .github/workflows/guidelines-enforcer.yml create mode 100644 .github/workflows/swap-ci-workflow.yml delete mode 100644 bitcoin_client/ledger_bitcoin/descriptor.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/LICENSE create mode 100644 bitcoin_client/ledger_bitcoin/embit/README.md rename {tests-legacy/bitcoin_client => bitcoin_client/ledger_bitcoin/embit}/__init__.py (100%) create mode 100644 bitcoin_client/ledger_bitcoin/embit/base.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/base58.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/bech32.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/bip32.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/compact.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/descriptor/__init__.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/descriptor/arguments.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/descriptor/base.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/descriptor/checksum.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/descriptor/descriptor.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/descriptor/errors.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/descriptor/miniscript.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/descriptor/taptree.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/ec.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/hashes.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/misc.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/networks.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/script.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/util/__init__.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/util/ctypes_secp256k1.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/util/key.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/util/py_ripemd160.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/util/py_secp256k1.py create mode 100644 bitcoin_client/ledger_bitcoin/embit/util/secp256k1.py rename tests-legacy/bitcoin_client/hwi/__init__.py => bitcoin_client/ledger_bitcoin/py.typed (100%) create mode 100644 bitcoin_client/ledger_bitcoin/ripemd.py rename tests-legacy/bitcoin_client/hwi/bech32.py => bitcoin_client/ledger_bitcoin/segwit_addr.py (72%) create mode 100644 bitcoin_client/ledger_bitcoin/transport.py create mode 100644 bitcoin_client/tests/test_client_legacy.py create mode 100644 bitcoin_client/tests/test_ripemd160.py create mode 100644 bitcoin_client_js/src/__tests__/psbtv2.test.ts create mode 100644 bitcoin_client_rs/.gitignore create mode 100644 bitcoin_client_rs/CONTRIBUTING.md create mode 100644 bitcoin_client_rs/Cargo.toml create mode 100644 bitcoin_client_rs/README.md create mode 100644 bitcoin_client_rs/examples/ledger_hwi/Cargo.toml create mode 100644 bitcoin_client_rs/examples/ledger_hwi/README.md create mode 100644 bitcoin_client_rs/examples/ledger_hwi/src/main.rs create mode 100644 bitcoin_client_rs/examples/ledger_hwi/src/transport.rs create mode 100644 bitcoin_client_rs/src/apdu.rs create mode 100644 bitcoin_client_rs/src/async_client.rs create mode 100644 bitcoin_client_rs/src/client.rs create mode 100644 bitcoin_client_rs/src/command.rs create mode 100644 bitcoin_client_rs/src/error.rs create mode 100644 bitcoin_client_rs/src/interpreter.rs create mode 100644 bitcoin_client_rs/src/lib.rs create mode 100644 bitcoin_client_rs/src/merkle.rs create mode 100644 bitcoin_client_rs/src/psbt.rs create mode 100644 bitcoin_client_rs/src/wallet.rs create mode 100644 bitcoin_client_rs/tests/client.rs create mode 100644 bitcoin_client_rs/tests/data/get_extended_pubkey.json create mode 100644 bitcoin_client_rs/tests/data/get_wallet_address.json create mode 100644 bitcoin_client_rs/tests/data/register_wallet.json create mode 100644 bitcoin_client_rs/tests/data/sign_psbt.json create mode 100644 bitcoin_client_rs/tests/utils/mod.rs create mode 100644 dev-tools/test_sign_psbt_with_sighash_types.ipynb create mode 100644 doc/v0/bitcoin.md create mode 100644 doc/v0/wallet.md create mode 100644 glyphs/Bitcoin_64px.bmp delete mode 100644 glyphs/blue_badge_bitcoin.gif delete mode 100644 glyphs/blue_badge_bitcoin_cash.gif delete mode 100644 glyphs/blue_badge_bitcoin_gold.gif delete mode 100644 glyphs/blue_badge_bitcoin_testnet.gif delete mode 100644 glyphs/blue_badge_dash.gif delete mode 100644 glyphs/blue_badge_digibyte.gif delete mode 100644 glyphs/blue_badge_dogecoin.gif delete mode 100644 glyphs/blue_badge_komodo.gif delete mode 100644 glyphs/blue_badge_lbry.gif delete mode 100644 glyphs/blue_badge_litecoin.gif delete mode 100644 glyphs/blue_badge_peercoin.gif delete mode 100644 glyphs/blue_badge_pivx.gif delete mode 100644 glyphs/blue_badge_qtum.gif delete mode 100644 glyphs/blue_badge_ravencoin.gif delete mode 100644 glyphs/blue_badge_resistance.gif delete mode 100644 glyphs/blue_badge_stealth.gif delete mode 100644 glyphs/blue_badge_stratis.gif delete mode 100644 glyphs/blue_badge_transaction.gif delete mode 100644 glyphs/blue_badge_vertcoin.gif delete mode 100644 glyphs/blue_badge_viacoin.gif delete mode 100644 glyphs/blue_badge_warning.gif delete mode 100644 glyphs/blue_badge_zcash.gif delete mode 100644 glyphs/blue_icon_toggle_reset.gif delete mode 100644 glyphs/blue_icon_toggle_set.gif delete mode 100644 glyphs/nanos_badge_bitcoin_cash.gif delete mode 100644 glyphs/nanos_badge_bitcoin_gold.gif delete mode 100644 glyphs/nanos_badge_bitcoin_private.gif delete mode 100644 glyphs/nanos_badge_dash.gif delete mode 100644 glyphs/nanos_badge_digibyte.gif delete mode 100644 glyphs/nanos_badge_dogecoin.gif delete mode 100644 glyphs/nanos_badge_komodo.gif delete mode 100644 glyphs/nanos_badge_lbry.gif delete mode 100644 glyphs/nanos_badge_litecoin.gif delete mode 100644 glyphs/nanos_badge_nix.gif delete mode 100644 glyphs/nanos_badge_peercoin.gif delete mode 100644 glyphs/nanos_badge_pivx.gif delete mode 100644 glyphs/nanos_badge_qtum.gif delete mode 100644 glyphs/nanos_badge_ravencoin.gif delete mode 100644 glyphs/nanos_badge_resistance.gif delete mode 100644 glyphs/nanos_badge_stealth.gif delete mode 100644 glyphs/nanos_badge_stratis.gif delete mode 100644 glyphs/nanos_badge_vertcoin.gif delete mode 100644 glyphs/nanos_badge_viacoin.gif delete mode 100644 glyphs/nanos_badge_xsn.gif delete mode 100644 glyphs/nanos_badge_zcash.gif delete mode 100644 glyphs/nanos_badge_zcoin.gif delete mode 100644 glyphs/nanos_badge_zencash.gif delete mode 100644 icons/bitcoin_cash.png delete mode 100644 icons/bitcoin_gold.png delete mode 100644 icons/bitcoin_private.png delete mode 100644 icons/bitcoin_testnet.png delete mode 100644 icons/blue_app_bitcoin.gif delete mode 100644 icons/blue_app_bitcoin_cash.gif delete mode 100644 icons/blue_app_bitcoin_gold.gif delete mode 100644 icons/blue_app_bitcoin_private.gif delete mode 100644 icons/blue_app_bitcoin_testnet.gif delete mode 100644 icons/blue_app_dash.gif delete mode 100644 icons/blue_app_digibyte.gif delete mode 100644 icons/blue_app_dogecoin.gif delete mode 100644 icons/blue_app_firo.gif delete mode 100644 icons/blue_app_gamecredits.gif delete mode 100644 icons/blue_app_horizen.gif delete mode 100644 icons/blue_app_komodo.gif delete mode 100644 icons/blue_app_lbry.gif delete mode 100644 icons/blue_app_litecoin.gif delete mode 100644 icons/blue_app_nix.gif delete mode 100644 icons/blue_app_peercoin.gif delete mode 100644 icons/blue_app_pivx.gif delete mode 100644 icons/blue_app_qtum.gif delete mode 100644 icons/blue_app_ravencoin.gif delete mode 100644 icons/blue_app_resistance.gif delete mode 100644 icons/blue_app_stealth.gif delete mode 100644 icons/blue_app_stratis.gif delete mode 100644 icons/blue_app_vertcoin.gif delete mode 100644 icons/blue_app_viacoin.gif delete mode 100644 icons/blue_app_xrhodium.gif delete mode 100644 icons/blue_app_xsn.gif delete mode 100644 icons/blue_app_zcash.gif delete mode 100644 icons/blue_app_zclassic.gif delete mode 100644 icons/dash.png delete mode 100644 icons/digibyte.png delete mode 100644 icons/dogecoin.png delete mode 100644 icons/firo.png delete mode 100644 icons/gamecredits.png delete mode 100644 icons/horizen.png delete mode 100644 icons/komodo.png delete mode 100644 icons/lbry.png delete mode 100644 icons/litecoin.png delete mode 100644 icons/nanos_app_bitcoin_cash.gif delete mode 100644 icons/nanos_app_bitcoin_gold.gif delete mode 100644 icons/nanos_app_bitcoin_lite.gif delete mode 100644 icons/nanos_app_bitcoin_private.gif delete mode 100644 icons/nanos_app_bitcoin_testnet.gif delete mode 100644 icons/nanos_app_bitcoin_testnet_lib.gif delete mode 100644 icons/nanos_app_bitcoin_testnet_lite.gif delete mode 100644 icons/nanos_app_dash.gif delete mode 100644 icons/nanos_app_digibyte.gif delete mode 100644 icons/nanos_app_dogecoin.gif delete mode 100644 icons/nanos_app_firo.gif delete mode 100644 icons/nanos_app_gamecredits.gif delete mode 100644 icons/nanos_app_horizen.gif delete mode 100644 icons/nanos_app_hydra.gif delete mode 100644 icons/nanos_app_hydra_testnet.gif delete mode 100644 icons/nanos_app_komodo.gif delete mode 100644 icons/nanos_app_lbry.gif delete mode 100644 icons/nanos_app_liquid_headless.gif delete mode 100644 icons/nanos_app_liquid_regtest.gif delete mode 100644 icons/nanos_app_liquid_regtest_headless.gif delete mode 100644 icons/nanos_app_litecoin.gif delete mode 100644 icons/nanos_app_nix.gif delete mode 100644 icons/nanos_app_peercoin.gif delete mode 100644 icons/nanos_app_pivx.gif delete mode 100644 icons/nanos_app_qtum.gif delete mode 100644 icons/nanos_app_ravencoin.gif delete mode 100644 icons/nanos_app_resistance.gif delete mode 100644 icons/nanos_app_stealth.gif delete mode 100644 icons/nanos_app_stratis.gif delete mode 100644 icons/nanos_app_vertcoin.gif delete mode 100644 icons/nanos_app_viacoin.gif delete mode 100644 icons/nanos_app_xrhodium.gif delete mode 100644 icons/nanos_app_xsn.gif delete mode 100644 icons/nanos_app_zcash.gif delete mode 100644 icons/nanos_app_zclassic.gif delete mode 100644 icons/nanox_app_bitcoin_cash.gif delete mode 100644 icons/nanox_app_bitcoin_gold.gif delete mode 100644 icons/nanox_app_bitcoin_private.gif delete mode 100644 icons/nanox_app_bitcoin_testnet.gif delete mode 100644 icons/nanox_app_bitcoin_testnet_lib.gif delete mode 100644 icons/nanox_app_dash.gif delete mode 100644 icons/nanox_app_digibyte.gif delete mode 100644 icons/nanox_app_dogecoin.gif delete mode 100644 icons/nanox_app_firo.gif delete mode 100644 icons/nanox_app_gamecredits.gif delete mode 100644 icons/nanox_app_horizen.gif delete mode 100644 icons/nanox_app_hydra.gif delete mode 100644 icons/nanox_app_hydra_testnet.gif delete mode 100644 icons/nanox_app_komodo.gif delete mode 100644 icons/nanox_app_lbry.gif delete mode 100644 icons/nanox_app_liquid_headless.gif delete mode 100644 icons/nanox_app_liquid_regtest.gif delete mode 100644 icons/nanox_app_liquid_regtest_headless.gif delete mode 100644 icons/nanox_app_litecoin.gif delete mode 100644 icons/nanox_app_nix.gif delete mode 100644 icons/nanox_app_peercoin.gif delete mode 100644 icons/nanox_app_pivx.gif delete mode 100644 icons/nanox_app_qtum.gif delete mode 100644 icons/nanox_app_ravencoin.gif delete mode 100644 icons/nanox_app_stealth.gif delete mode 100644 icons/nanox_app_stratis.gif delete mode 100644 icons/nanox_app_vertcoin.gif delete mode 100644 icons/nanox_app_viacoin.gif delete mode 100644 icons/nanox_app_xrhodium.gif delete mode 100644 icons/nanox_app_xsn.gif delete mode 100644 icons/nanox_app_zcash.gif delete mode 100644 icons/nanox_app_zclassic.gif delete mode 100644 icons/nix.png delete mode 100644 icons/peercoin.png delete mode 100644 icons/pivx.png delete mode 100644 icons/qtum.png delete mode 100644 icons/ravencoin.png delete mode 100644 icons/resistance.png create mode 100644 icons/stax_app_bitcoin.gif create mode 100644 icons/stax_app_liquid.gif delete mode 100644 icons/stealth.png delete mode 100644 icons/stratis.png delete mode 100644 icons/vertcoin.png delete mode 100644 icons/viacoin.png delete mode 100644 icons/xrhodium.png delete mode 100644 icons/xsn.png delete mode 100644 icons/zcash.png delete mode 100644 icons/zclassic.png create mode 100644 ledger_app.toml create mode 100644 ragger_bitcoin/README.md create mode 100644 ragger_bitcoin/__init__.py create mode 100644 ragger_bitcoin/pyproject.toml create mode 100644 ragger_bitcoin/ragger_bitcoin.py create mode 100644 ragger_bitcoin/ragger_instructions.py create mode 100644 ragger_bitcoin/setup.cfg delete mode 100644 src/handler/get_extended_pubkey.h delete mode 100644 src/handler/get_master_fingerprint.h delete mode 100644 src/handler/get_wallet_address.h create mode 100644 src/handler/handlers.h delete mode 100644 src/handler/register_wallet.h delete mode 100644 src/handler/sign_message.h delete mode 100644 src/handler/sign_psbt.h create mode 100644 src/handler/sign_psbt/extract_bip32_derivation.c create mode 100644 src/handler/sign_psbt/extract_bip32_derivation.h delete mode 100644 src/handler/sign_psbt/get_fingerprint_and_path.c delete mode 100644 src/handler/sign_psbt/get_fingerprint_and_path.h delete mode 100644 src/handler/sign_psbt/is_in_out_internal.c delete mode 100644 src/handler/sign_psbt/is_in_out_internal.h create mode 100644 src/liquid/liquid_wallet.c create mode 100644 src/liquid/liquid_wallet.h delete mode 100644 src/main.h create mode 100644 src/ui/bagl_custom_streaming.c create mode 100644 src/ui/display_bagl.c create mode 100644 src/ui/display_nbgl.c create mode 100644 src/ui/menu_bagl.c create mode 100644 src/ui/menu_nbgl.c create mode 100644 test_utils/ripemd.py delete mode 100644 tests-legacy/README.md delete mode 100644 tests-legacy/automations/accept.json delete mode 100644 tests-legacy/automations/reject.json delete mode 100644 tests-legacy/bitcoin_client/bitcoin_base_cmd.py delete mode 100644 tests-legacy/bitcoin_client/bitcoin_cmd.py delete mode 100644 tests-legacy/bitcoin_client/bitcoin_cmd_builder.py delete mode 100644 tests-legacy/bitcoin_client/bitcoin_utils.py delete mode 100644 tests-legacy/bitcoin_client/exception/__init__.py delete mode 100644 tests-legacy/bitcoin_client/exception/device_exception.py delete mode 100644 tests-legacy/bitcoin_client/exception/errors.py delete mode 100644 tests-legacy/bitcoin_client/hwi/base58.py delete mode 100644 tests-legacy/bitcoin_client/hwi/serialization.py delete mode 100644 tests-legacy/bitcoin_client/utils.py delete mode 100755 tests-legacy/clean_tests.sh delete mode 100644 tests-legacy/conftest.py delete mode 100644 tests-legacy/data/many-to-many/p2pkh/apdu_debug.log delete mode 100644 tests-legacy/data/many-to-many/p2pkh/tx.json delete mode 100644 tests-legacy/data/many-to-many/p2sh-p2wpkh/apdu_debug.log delete mode 100644 tests-legacy/data/many-to-many/p2sh-p2wpkh/tx.json delete mode 100644 tests-legacy/data/many-to-many/p2wpkh/apdu_debug.log delete mode 100644 tests-legacy/data/many-to-many/p2wpkh/tx.json delete mode 100644 tests-legacy/data/one-to-many/p2pkh/apdu_debug.log delete mode 100644 tests-legacy/data/one-to-many/p2pkh/tx.json delete mode 100644 tests-legacy/data/one-to-many/p2sh-p2wpkh/apdu_debug.log delete mode 100644 tests-legacy/data/one-to-many/p2sh-p2wpkh/tx.json delete mode 100644 tests-legacy/data/one-to-many/p2wpkh/apdu_debug.log delete mode 100644 tests-legacy/data/one-to-many/p2wpkh/tx.json delete mode 100644 tests-legacy/data/one-to-one/p2pkh/apdu_debug.log delete mode 100644 tests-legacy/data/one-to-one/p2pkh/tx.json delete mode 100644 tests-legacy/data/one-to-one/p2sh-p2wpkh/apdu_debug.log delete mode 100644 tests-legacy/data/one-to-one/p2sh-p2wpkh/tx.json delete mode 100644 tests-legacy/data/one-to-one/p2wpkh/apdu_debug.log delete mode 100644 tests-legacy/data/one-to-one/p2wpkh/tx.json delete mode 100755 tests-legacy/prepare_tests_lib.sh delete mode 100755 tests-legacy/prepare_tests_native.sh delete mode 100644 tests-legacy/requirements.txt delete mode 100644 tests-legacy/setup.cfg delete mode 100644 tests-legacy/test_get_coin_version.py delete mode 100644 tests-legacy/test_get_pubkey.py delete mode 100644 tests-legacy/test_get_random.py delete mode 100644 tests-legacy/test_get_trusted_inputs.py delete mode 100644 tests-legacy/test_sign.py delete mode 100644 tests-legacy/utils/__init__.py create mode 100644 tests/automations/sign_with_default_wallet_accept_highfee.json create mode 100644 tests/automations/sign_with_default_wallet_accept_nondefault_sighash.json create mode 100644 tests/automations/sign_with_default_wallet_missing_nonwitnessutxo_accept.json create mode 100644 tests/automations/sign_with_wallet_missing_nonwitnessutxo_accept.json create mode 100644 tests/instructions.py create mode 100644 tests/psbt/sighash/sighash-all-anyone-can-pay-sign.psbt create mode 100644 tests/psbt/sighash/sighash-all-sign.psbt create mode 100644 tests/psbt/sighash/sighash-none-anyone-can-pay-sign.psbt create mode 100644 tests/psbt/sighash/sighash-none-sign.psbt create mode 100644 tests/psbt/sighash/sighash-single-3-ins-2-outs.psbt create mode 100644 tests/psbt/sighash/sighash-single-anyone-can-pay-sign.psbt create mode 100644 tests/psbt/sighash/sighash-single-sign.psbt create mode 100644 tests/psbt/sighash/sighash-unsupported.psbt create mode 100644 tests/psbt/singlesig/tr-1to2-sighash-all.psbt create mode 100644 tests/psbt/singlesig/tr-1to2-sighash-default.psbt create mode 100644 tests/psbt/singlesig/tr-1to2-sighash-omitted.psbt delete mode 100644 tests/psbt/singlesig/tr-1to2.psbt create mode 100755 tests/setup_script.sh create mode 100644 tests/snapshots/nanos/test_dashboard/00000.png create mode 100644 tests/snapshots/nanos/test_dashboard/00001.png create mode 100644 tests/snapshots/nanos/test_dashboard/00002.png create mode 100644 tests/snapshots/nanos/test_dashboard/00003.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00006.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00007.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00008.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00009.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00010.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00011.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00002.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00003.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00004.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00005.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00006.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00007.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00008.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_early_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_early_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_early_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_early_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00006.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00007.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00008.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00009.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00006.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00007.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00008.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00009.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00006.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00007.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00008.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00009.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00006.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00007.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00008.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00009.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00006.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00007.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00008.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00009.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00006.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00007.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00008.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00009.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00006.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00007.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00008.png create mode 100644 tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00009.png create mode 100644 tests/snapshots/nanos/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_get_wallet_address_singlesig_legacy_v1_ui_0_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_get_wallet_address_singlesig_legacy_v1_ui_0_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_get_wallet_address_singlesig_legacy_v1_ui_0_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_get_wallet_address_singlesig_legacy_v1_ui_0_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_2_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_2_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_2_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_2_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_2_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_2_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_2_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_2_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_2_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_2_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_2_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_2_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_2_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_2_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_1_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_1_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_1_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_2_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_2_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_2_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_2_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_2_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_2_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_2_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_1_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_1_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_1_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_1_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_1_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_1_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_2_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_2_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_2_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_2_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_2_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_2_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_2_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_1_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_1_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_1_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_2_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_2_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_2_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_2_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_2_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_2_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_accept_wit_v1_2_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_wallet_invalid_pubkey_version_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_invalid_pubkey_version_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_invalid_pubkey_version_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_invalid_pubkey_version_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_invalid_pubkey_version_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_reject_header_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_reject_header_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_reject_header_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_reject_header_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_reject_header_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_reject_header_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_reject_header_v1_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_reject_header_v1_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_reject_header_v1_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_reject_header_v1_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_reject_header_v1_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_reject_header_v1_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_1_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_1_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_1_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_2_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_2_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_2_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_2_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_2_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_2_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_pk_2_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_3_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_3_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_3_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_3_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_3_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_3_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_3_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_3_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_3_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_1_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_1_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_2_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_2_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_2_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_2_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_2_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_2_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_2_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_0_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_0_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_1_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_1_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_1_0/00008.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_2_0/00002.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_2_0/00003.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_2_0/00004.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_2_0/00005.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_2_0/00006.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_2_0/00007.png create mode 100644 tests/snapshots/nanos/test_register_wallet_with_long_name_2_0/00008.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_input_changed_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_input_changed_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_input_changed_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_input_changed_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_input_changed_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_input_changed_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_input_changed_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_input_changed_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_input_changed_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_input_changed_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_input_changed_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_output_changed_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_output_changed_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_output_changed_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_output_changed_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_output_changed_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_output_changed_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_output_changed_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_output_changed_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_output_changed_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_output_changed_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_output_changed_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_sign_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_sign_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_sign_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_sign_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_sign_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_sign_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_sign_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_sign_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_sign_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_sign_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_all_anyone_sign_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_all_input_modified_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_all_input_modified_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_all_input_modified_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_all_input_modified_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_all_input_modified_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_all_input_modified_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_all_input_modified_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_all_input_modified_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_all_output_modified_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_all_output_modified_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_all_output_modified_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_all_output_modified_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_all_output_modified_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_all_output_modified_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_all_output_modified_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_all_output_modified_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_all_sign_psbt_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_all_sign_psbt_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_all_sign_psbt_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_all_sign_psbt_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_all_sign_psbt_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_all_sign_psbt_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_all_sign_psbt_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_all_sign_psbt_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_input_changed_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_input_changed_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_input_changed_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_input_changed_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_input_changed_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_input_changed_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_input_changed_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_input_changed_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_input_changed_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_input_changed_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_input_changed_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_output_changed_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_output_changed_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_output_changed_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_output_changed_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_output_changed_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_output_changed_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_output_changed_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_output_changed_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_output_changed_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_output_changed_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_output_changed_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_sign_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_sign_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_sign_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_sign_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_sign_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_sign_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_sign_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_sign_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_sign_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_sign_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_none_anyone_sign_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_none_input_modified_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_none_input_modified_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_none_input_modified_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_none_input_modified_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_none_input_modified_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_none_input_modified_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_none_input_modified_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_none_input_modified_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_none_input_modified_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_none_input_modified_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_none_input_modified_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_none_output_modified_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_none_output_modified_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_none_output_modified_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_none_output_modified_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_none_output_modified_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_none_output_modified_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_none_output_modified_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_none_output_modified_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_none_output_modified_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_none_output_modified_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_none_output_modified_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_none_sign_psbt_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_none_sign_psbt_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_none_sign_psbt_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_none_sign_psbt_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_none_sign_psbt_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_none_sign_psbt_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_none_sign_psbt_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_none_sign_psbt_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_none_sign_psbt_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_none_sign_psbt_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_none_sign_psbt_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash1_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash1_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash1_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash1_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash1_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash1_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash1_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash2_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash2_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash2_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash2_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash2_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash2_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash2_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash2_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash2_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash2_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash3_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash3_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash3_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash3_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash3_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash3_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash3_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash3_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash3_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash3_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash81_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash81_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash81_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash81_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash81_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash81_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash81_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash81_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash81_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash81_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash82_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash82_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash82_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash82_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash82_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash82_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash82_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash82_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash82_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash82_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash83_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash83_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash83_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash83_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash83_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash83_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash83_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash83_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash83_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_segwitv0_sighash83_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_input_changed_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_input_changed_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_input_changed_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_input_changed_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_input_changed_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_input_changed_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_input_changed_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_input_changed_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_input_changed_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_input_changed_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_input_changed_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_output_changed_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_output_changed_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_output_changed_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_output_changed_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_output_changed_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_output_changed_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_output_changed_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_output_changed_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_output_changed_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_output_changed_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_output_changed_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_sign_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_sign_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_sign_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_sign_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_sign_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_sign_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_sign_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_sign_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_sign_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_sign_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_anyone_sign_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_input_modified_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_input_modified_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_input_modified_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_single_input_modified_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_input_modified_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_input_modified_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_single_input_modified_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_single_input_modified_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_single_input_modified_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_single_input_modified_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_input_modified_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_different_index_modified_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_different_index_modified_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_different_index_modified_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_different_index_modified_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_different_index_modified_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_different_index_modified_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_different_index_modified_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_different_index_modified_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_different_index_modified_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_different_index_modified_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_different_index_modified_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_same_index_modified_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_same_index_modified_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_same_index_modified_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_same_index_modified_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_same_index_modified_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_same_index_modified_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_same_index_modified_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_same_index_modified_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_same_index_modified_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_same_index_modified_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_output_same_index_modified_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_sign_psbt_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_sign_psbt_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_sign_psbt_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_single_sign_psbt_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_sign_psbt_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_single_sign_psbt_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_single_sign_psbt_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_single_sign_psbt_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_single_sign_psbt_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_single_sign_psbt_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_single_sign_psbt_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_unsupported_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_unsupported_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_unsupported_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_unsupported_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_unsupported_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_unsupported_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_unsupported_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_unsupported_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_unsupported_for_segwitv0_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_unsupported_for_segwitv0_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sighash_unsupported_for_segwitv0_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sighash_unsupported_for_segwitv0_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sighash_unsupported_for_segwitv0_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sighash_unsupported_for_segwitv0_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sighash_unsupported_for_segwitv0_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sighash_unsupported_for_segwitv0_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_message_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_message_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_message_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_message_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_message_0_1/00002.png create mode 100644 tests/snapshots/nanos/test_sign_message_0_1/00003.png create mode 100644 tests/snapshots/nanos/test_sign_message_0_1/00004.png create mode 100644 tests/snapshots/nanos/test_sign_message_0_1/00005.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_0_1/00002.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_0_1/00003.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_0_1/00004.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_0_1/00005.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_0_1/00006.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_0_1/00007.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_1_0/00006.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_1_0/00007.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_2_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_2_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_2_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_2_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_2_0/00006.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_2_0/00007.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_2_0/00008.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_3_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_3_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_3_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_3_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_3_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_3_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_3_0/00006.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_3_0/00007.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_4_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_4_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_long_4_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_non_ascii_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_non_ascii_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_non_ascii_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_non_ascii_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_non_ascii_0_1/00002.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_non_ascii_0_1/00003.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_non_ascii_0_1/00004.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_too_long_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_too_long_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_too_long_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_too_long_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_too_long_0_1/00002.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_too_long_0_1/00003.png create mode 100644 tests/snapshots/nanos/test_sign_message_accept_too_long_0_1/00004.png create mode 100644 tests/snapshots/nanos/test_sign_message_hash_reject_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_message_hash_reject_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_message_hash_reject_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_message_hash_reject_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_message_hash_reject_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_message_hash_reject_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_message_hash_reject_0_0/00006.png create mode 100644 tests/snapshots/nanos/test_sign_message_hash_reject_0_0/00007.png create mode 100644 tests/snapshots/nanos/test_sign_message_reject_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_message_reject_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_message_reject_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_message_reject_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_message_reject_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_highfee_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_highfee_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_highfee_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_highfee_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_highfee_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_highfee_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_highfee_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_highfee_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_highfee_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_highfee_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_v1_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_v1_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_v1_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_v1_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_v1_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_v1_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_v1_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_v1_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_v1_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_v1_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_0_0/00006.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00006.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00006.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_v1_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_v1_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_all_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_all_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_all_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_all_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_all_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_all_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_all_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_all_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_0_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_0_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_1_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_1_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_v1_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_v1_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_v1_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_v1_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_v1_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_v1_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_v1_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_taproot_1to2_v1_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_1_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_1_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_2_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_2_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_2_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_2_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_2_0/00006.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_3_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_3_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_3_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_3_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_3_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_4_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_4_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_4_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_4_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_4_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_4_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_5_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_5_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_5_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_5_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_5_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_5_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_5_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_2_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_2_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_2_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_3_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_3_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_3_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_3_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_3_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_3_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_4_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_4_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_4_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_4_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_4_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_4_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_4_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_1_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_1_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_1_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_1_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_2_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_2_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_2_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_2_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_2_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_2_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_2_0/00006.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_3_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_3_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_3_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_3_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_3_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_4_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_4_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_4_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_4_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_4_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_4_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_4_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_naked_opreturn_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_naked_opreturn_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_naked_opreturn_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_naked_opreturn_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_naked_opreturn_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_naked_opreturn_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00006.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00007.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00008.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00009.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00010.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00011.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00006.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00007.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00008.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00009.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00010.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00011.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_1_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_1_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_0_0/00006.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_0_1/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_v1_0_0/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_v1_0_0/00001.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_v1_0_0/00002.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_v1_0_0/00003.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_v1_0_0/00004.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_v1_0_0/00005.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_v1_0_0/00006.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_v1_0_1/00000.png create mode 100644 tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_v1_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_dashboard/00000.png create mode 100644 tests/snapshots/nanosp/test_dashboard/00001.png create mode 100644 tests/snapshots/nanosp/test_dashboard/00002.png create mode 100644 tests/snapshots/nanosp/test_dashboard/00003.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_0_0/00004.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_0_0/00005.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_0_0/00006.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_0_0/00007.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_0_1/00002.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_0_1/00003.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_0_1/00004.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_early_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_early_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_early_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_early_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00004.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00005.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00004.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00005.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00004.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00005.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00004.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00005.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00004.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00005.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00004.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00005.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00004.png create mode 100644 tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00005.png create mode 100644 tests/snapshots/nanosp/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_get_wallet_address_singlesig_legacy_v1_ui_0_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_get_wallet_address_singlesig_legacy_v1_ui_0_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_0_0/00004.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_0_0/00005.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_0_0/00006.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_0_0/00007.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_0_0/00008.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_0_0/00009.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_2_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_2_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_3_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_3_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_3_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_miniscript_long_policy_3_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_2_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_2_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_2_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_2_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_2_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_2_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_v1_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_v1_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_v1_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_v1_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_v1_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_v1_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_v1_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_v1_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_v1_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_v1_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_v1_2_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_v1_2_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_2_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_2_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_v1_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_v1_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_v1_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_v1_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_v1_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_v1_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_v1_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_v1_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_v1_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_v1_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_v1_2_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_accept_wit_v1_2_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_invalid_pubkey_version_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_invalid_pubkey_version_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_invalid_pubkey_version_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_invalid_pubkey_version_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_reject_header_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_reject_header_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_reject_header_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_reject_header_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_reject_header_0_0/00004.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_reject_header_v1_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_reject_header_v1_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_reject_header_v1_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_reject_header_v1_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_reject_header_v1_0_0/00004.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_pk_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_pk_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_pk_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_pk_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_pk_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_pk_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_pk_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_pk_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_pk_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_pk_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_pk_2_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_pk_2_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_2_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_2_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_3_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_3_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_3_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_3_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_with_nums_keypath_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_with_nums_keypath_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_with_nums_keypath_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_with_nums_keypath_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_with_nums_keypath_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_with_nums_keypath_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_with_nums_keypath_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_with_nums_keypath_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_with_nums_keypath_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_with_nums_keypath_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_with_nums_keypath_2_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_tr_with_nums_keypath_2_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_with_long_name_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_with_long_name_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_with_long_name_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_with_long_name_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_with_long_name_0_0/00004.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_with_long_name_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_with_long_name_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_with_long_name_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_with_long_name_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_with_long_name_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_with_long_name_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_with_long_name_2_0/00002.png create mode 100644 tests/snapshots/nanosp/test_register_wallet_with_long_name_2_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_sign_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_sign_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_sign_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_sign_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_sign_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_sign_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_sign_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_sign_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_anyone_sign_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_input_modified_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_input_modified_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_input_modified_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_input_modified_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_input_modified_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_input_modified_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_output_modified_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_output_modified_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_output_modified_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_output_modified_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_output_modified_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_output_modified_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_sign_psbt_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_sign_psbt_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_sign_psbt_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_sign_psbt_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_sign_psbt_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_all_sign_psbt_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_sign_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_sign_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_sign_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_sign_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_sign_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_sign_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_sign_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_sign_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_anyone_sign_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_input_modified_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_input_modified_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_input_modified_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_input_modified_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_input_modified_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_input_modified_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_input_modified_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_input_modified_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_input_modified_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_output_modified_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_output_modified_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_output_modified_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_output_modified_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_output_modified_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_output_modified_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_output_modified_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_output_modified_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_output_modified_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_sign_psbt_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_sign_psbt_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_sign_psbt_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_sign_psbt_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_sign_psbt_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_sign_psbt_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_sign_psbt_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_sign_psbt_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_none_sign_psbt_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash1_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash1_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash1_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash1_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash1_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash1_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_sign_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_sign_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_sign_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_sign_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_sign_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_sign_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_sign_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_sign_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_anyone_sign_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_input_modified_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_input_modified_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_input_modified_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_input_modified_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_input_modified_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_input_modified_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_input_modified_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_input_modified_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_input_modified_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_sign_psbt_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_sign_psbt_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_sign_psbt_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_sign_psbt_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_sign_psbt_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_sign_psbt_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_sign_psbt_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_sign_psbt_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_single_sign_psbt_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_unsupported_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_unsupported_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_unsupported_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_unsupported_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_unsupported_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_unsupported_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_unsupported_for_segwitv0_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_unsupported_for_segwitv0_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sighash_unsupported_for_segwitv0_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sighash_unsupported_for_segwitv0_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sighash_unsupported_for_segwitv0_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sighash_unsupported_for_segwitv0_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_message_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_message_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_message_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_message_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_message_0_1/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_long_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_long_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_long_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_long_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_long_0_1/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_long_0_1/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_long_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_long_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_long_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_long_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_long_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_long_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_long_2_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_long_2_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_long_3_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_long_3_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_long_3_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_long_3_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_long_4_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_long_4_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_non_ascii_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_non_ascii_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_non_ascii_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_non_ascii_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_non_ascii_0_1/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_too_long_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_too_long_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_too_long_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_too_long_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_message_accept_too_long_0_1/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_message_hash_reject_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_message_hash_reject_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_message_hash_reject_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_message_hash_reject_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_message_hash_reject_0_0/00004.png create mode 100644 tests/snapshots/nanosp/test_sign_message_hash_reject_0_0/00005.png create mode 100644 tests/snapshots/nanosp/test_sign_message_reject_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_message_reject_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_message_reject_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_message_reject_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_message_reject_0_0/00004.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_highfee_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_highfee_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_highfee_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_highfee_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_highfee_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_highfee_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_highfee_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_highfee_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_v1_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_v1_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_v1_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_v1_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_v1_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_v1_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_v1_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_v1_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_0/00004.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00004.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00004.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_all_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_all_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_all_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_all_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_all_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_all_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_0_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_0_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_1_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_1_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_v1_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_v1_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_v1_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_v1_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_v1_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_v1_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_1_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_1_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_2_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_2_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_2_0/00004.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_3_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_3_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_3_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_3_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_4_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_4_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_4_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_4_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_5_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_5_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_5_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_5_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_5_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_5_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_2_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_2_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_3_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_3_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_3_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_3_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_4_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_4_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_4_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_4_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_4_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_4_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_1_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_1_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_2_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_2_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_2_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_2_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_2_0/00004.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_3_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_3_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_3_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_3_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_4_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_4_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_4_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_4_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_4_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_4_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_naked_opreturn_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_naked_opreturn_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_naked_opreturn_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_naked_opreturn_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_naked_opreturn_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_naked_opreturn_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_opreturn_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_opreturn_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_opreturn_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_opreturn_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_opreturn_0_0/00004.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_opreturn_0_0/00005.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_opreturn_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_opreturn_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_opreturn_v1_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_opreturn_v1_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_opreturn_v1_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_opreturn_v1_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_opreturn_v1_0_0/00004.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_opreturn_v1_0_0/00005.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_opreturn_v1_1_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_opreturn_v1_1_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_0_0/00004.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_0_1/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_v1_0_0/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_v1_0_0/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_v1_0_0/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_v1_0_0/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_v1_0_0/00004.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_v1_0_1/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_v1_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_dashboard/00000.png create mode 100644 tests/snapshots/nanox/test_dashboard/00001.png create mode 100644 tests/snapshots/nanox/test_dashboard/00002.png create mode 100644 tests/snapshots/nanox/test_dashboard/00003.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_0_0/00004.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_0_0/00005.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_0_0/00006.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_0_0/00007.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_0_1/00002.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_0_1/00003.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_0_1/00004.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_early_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_early_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_early_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_early_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00004.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00005.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00004.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00005.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00004.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00005.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00004.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00005.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00004.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00005.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00004.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00005.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00004.png create mode 100644 tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00005.png create mode 100644 tests/snapshots/nanox/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_get_wallet_address_singlesig_legacy_v1_ui_0_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_get_wallet_address_singlesig_legacy_v1_ui_0_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_0_0/00004.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_0_0/00005.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_0_0/00006.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_0_0/00007.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_0_0/00008.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_0_0/00009.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_2_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_2_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_3_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_3_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_3_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_miniscript_long_policy_3_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_2_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_2_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_2_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_2_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_2_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_2_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_v1_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_v1_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_v1_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_v1_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_v1_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_v1_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_v1_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_v1_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_v1_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_v1_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_v1_2_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_sh_wit_v1_2_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_2_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_2_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_v1_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_v1_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_v1_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_v1_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_v1_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_v1_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_v1_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_v1_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_v1_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_v1_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_v1_2_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_accept_wit_v1_2_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_invalid_pubkey_version_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_invalid_pubkey_version_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_invalid_pubkey_version_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_invalid_pubkey_version_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_reject_header_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_reject_header_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_reject_header_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_reject_header_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_reject_header_0_0/00004.png create mode 100644 tests/snapshots/nanox/test_register_wallet_reject_header_v1_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_reject_header_v1_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_reject_header_v1_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_reject_header_v1_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_reject_header_v1_0_0/00004.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_pk_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_pk_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_pk_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_pk_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_pk_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_pk_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_pk_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_pk_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_pk_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_pk_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_pk_2_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_pk_2_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_2_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_2_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_3_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_3_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_3_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_3_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_with_nums_keypath_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_with_nums_keypath_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_with_nums_keypath_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_with_nums_keypath_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_with_nums_keypath_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_with_nums_keypath_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_with_nums_keypath_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_with_nums_keypath_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_with_nums_keypath_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_with_nums_keypath_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_with_nums_keypath_2_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_tr_with_nums_keypath_2_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_with_long_name_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_with_long_name_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_with_long_name_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_with_long_name_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_with_long_name_0_0/00004.png create mode 100644 tests/snapshots/nanox/test_register_wallet_with_long_name_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_with_long_name_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_with_long_name_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_with_long_name_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_register_wallet_with_long_name_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_register_wallet_with_long_name_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_register_wallet_with_long_name_2_0/00002.png create mode 100644 tests/snapshots/nanox/test_register_wallet_with_long_name_2_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_input_changed_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_input_changed_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_input_changed_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_input_changed_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_input_changed_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_input_changed_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_input_changed_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_input_changed_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_input_changed_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_output_changed_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_output_changed_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_output_changed_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_output_changed_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_output_changed_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_output_changed_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_output_changed_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_output_changed_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_output_changed_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_sign_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_sign_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_sign_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_sign_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_sign_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_sign_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_sign_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_sign_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_all_anyone_sign_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_all_input_modified_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_all_input_modified_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_all_input_modified_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_all_input_modified_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_all_input_modified_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_all_input_modified_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_all_output_modified_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_all_output_modified_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_all_output_modified_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_all_output_modified_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_all_output_modified_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_all_output_modified_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_all_sign_psbt_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_all_sign_psbt_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_all_sign_psbt_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_all_sign_psbt_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_all_sign_psbt_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_all_sign_psbt_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_input_changed_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_input_changed_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_input_changed_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_input_changed_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_input_changed_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_input_changed_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_input_changed_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_input_changed_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_input_changed_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_output_changed_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_output_changed_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_output_changed_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_output_changed_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_output_changed_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_output_changed_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_output_changed_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_output_changed_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_output_changed_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_sign_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_sign_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_sign_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_sign_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_sign_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_sign_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_sign_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_sign_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_none_anyone_sign_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_none_input_modified_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_none_input_modified_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_none_input_modified_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_none_input_modified_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_none_input_modified_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_none_input_modified_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_none_input_modified_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_none_input_modified_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_none_input_modified_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_none_output_modified_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_none_output_modified_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_none_output_modified_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_none_output_modified_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_none_output_modified_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_none_output_modified_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_none_output_modified_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_none_output_modified_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_none_output_modified_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_none_sign_psbt_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_none_sign_psbt_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_none_sign_psbt_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_none_sign_psbt_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_none_sign_psbt_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_none_sign_psbt_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_none_sign_psbt_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_none_sign_psbt_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_none_sign_psbt_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash1_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash1_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash1_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash1_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash1_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash1_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash2_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash2_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash2_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash2_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash2_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash2_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash2_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash2_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash2_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash3_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash3_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash3_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash3_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash3_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash3_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash3_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash3_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash3_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash81_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash81_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash81_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash81_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash81_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash81_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash81_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash81_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash81_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash82_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash82_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash82_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash82_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash82_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash82_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash82_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash82_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash82_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash83_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash83_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash83_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash83_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash83_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash83_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash83_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash83_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_segwitv0_sighash83_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_input_changed_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_input_changed_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_input_changed_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_input_changed_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_input_changed_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_input_changed_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_input_changed_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_input_changed_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_input_changed_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_output_changed_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_output_changed_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_output_changed_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_output_changed_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_output_changed_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_output_changed_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_output_changed_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_output_changed_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_output_changed_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_sign_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_sign_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_sign_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_sign_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_sign_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_sign_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_sign_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_sign_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_anyone_sign_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_input_modified_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_input_modified_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_input_modified_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_single_input_modified_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_input_modified_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_input_modified_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_single_input_modified_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_single_input_modified_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_input_modified_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_output_different_index_modified_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_output_different_index_modified_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_output_different_index_modified_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_single_output_different_index_modified_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_output_different_index_modified_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_output_different_index_modified_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_single_output_different_index_modified_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_single_output_different_index_modified_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_output_different_index_modified_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_output_same_index_modified_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_output_same_index_modified_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_output_same_index_modified_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_single_output_same_index_modified_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_output_same_index_modified_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_output_same_index_modified_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_single_output_same_index_modified_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_single_output_same_index_modified_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_output_same_index_modified_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_sign_psbt_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_sign_psbt_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_sign_psbt_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_single_sign_psbt_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_sign_psbt_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_single_sign_psbt_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_single_sign_psbt_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_single_sign_psbt_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_single_sign_psbt_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_unsupported_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_unsupported_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_unsupported_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_unsupported_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_unsupported_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_unsupported_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_unsupported_for_segwitv0_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_unsupported_for_segwitv0_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sighash_unsupported_for_segwitv0_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sighash_unsupported_for_segwitv0_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sighash_unsupported_for_segwitv0_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sighash_unsupported_for_segwitv0_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_message_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_message_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_message_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_message_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_message_0_1/00002.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_long_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_long_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_long_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_long_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_long_0_1/00002.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_long_0_1/00003.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_long_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_long_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_long_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_long_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_long_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_long_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_long_2_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_long_2_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_long_3_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_long_3_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_long_3_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_long_3_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_long_4_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_long_4_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_non_ascii_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_non_ascii_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_non_ascii_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_non_ascii_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_non_ascii_0_1/00002.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_too_long_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_too_long_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_too_long_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_too_long_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_message_accept_too_long_0_1/00002.png create mode 100644 tests/snapshots/nanox/test_sign_message_hash_reject_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_message_hash_reject_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_message_hash_reject_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_message_hash_reject_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_message_hash_reject_0_0/00004.png create mode 100644 tests/snapshots/nanox/test_sign_message_hash_reject_0_0/00005.png create mode 100644 tests/snapshots/nanox/test_sign_message_reject_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_message_reject_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_message_reject_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_message_reject_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_message_reject_0_0/00004.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_highfee_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_highfee_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_highfee_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_highfee_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_highfee_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_highfee_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_highfee_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_highfee_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_wsh_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_wsh_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_wsh_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_wsh_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_wsh_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_wsh_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_wsh_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_wsh_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_wsh_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_v1_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_v1_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_v1_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_v1_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_v1_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_v1_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_v1_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_v1_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_0/00004.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00004.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00004.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_all_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_all_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_all_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_all_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_all_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_all_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_0_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_0_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_1_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_1_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_v1_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_v1_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_v1_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_v1_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_v1_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_taproot_1to2_v1_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_1_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_1_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_2_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_2_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_2_0/00004.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_3_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_3_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_3_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_3_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_4_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_4_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_4_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_4_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_5_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_5_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_5_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_5_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_5_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_5_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_2_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_2_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_3_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_3_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_3_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_3_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_4_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_4_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_4_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_4_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_4_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_4_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_1_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_1_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_2_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_2_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_2_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_2_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_2_0/00004.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_3_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_3_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_3_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_3_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_4_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_4_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_4_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_4_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_4_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_4_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_naked_opreturn_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_naked_opreturn_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_naked_opreturn_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_naked_opreturn_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_naked_opreturn_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_naked_opreturn_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_opreturn_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_opreturn_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_opreturn_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_opreturn_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_opreturn_0_0/00004.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_opreturn_0_0/00005.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_opreturn_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_opreturn_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_opreturn_v1_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_opreturn_v1_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_opreturn_v1_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_opreturn_v1_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_opreturn_v1_0_0/00004.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_opreturn_v1_0_0/00005.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_opreturn_v1_1_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_opreturn_v1_1_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_0_0/00004.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_0_1/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_v1_0_0/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_v1_0_0/00001.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_v1_0_0/00002.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_v1_0_0/00003.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_v1_0_0/00004.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_v1_0_1/00000.png create mode 100644 tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_v1_0_1/00001.png create mode 100644 tests/snapshots/stax/test_dashboard/00000.png create mode 100644 tests/snapshots/stax/test_dashboard/00001.png create mode 100644 tests/snapshots/stax/test_dashboard/00002.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_non_standard_0_0/00000.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_non_standard_0_0/00001.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_non_standard_0_0/00002.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_non_standard_0_0/00003.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_non_standard_0_0/00004.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_0_0/00000.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_0_0/00001.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_0_0/00002.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_0_0/00003.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_0_0/00004.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_early_0_0/00000.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_early_0_0/00001.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_early_0_0/00002.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_early_0_0/00003.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_early_0_0/00004.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00000.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00001.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00002.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00003.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00000.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00001.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00002.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00003.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00000.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00001.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00002.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00003.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00000.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00001.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00002.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00003.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00000.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00001.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00002.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00003.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00000.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00001.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00002.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00003.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00000.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00001.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00002.png create mode 100644 tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00003.png create mode 100644 tests/snapshots/stax/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00000.png create mode 100644 tests/snapshots/stax/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00001.png create mode 100644 tests/snapshots/stax/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00002.png create mode 100644 tests/snapshots/stax/test_get_wallet_address_singlesig_legacy_v1_ui_0_0_0/00000.png create mode 100644 tests/snapshots/stax/test_get_wallet_address_singlesig_legacy_v1_ui_0_0_0/00001.png create mode 100644 tests/snapshots/stax/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00001.png create mode 100644 tests/snapshots/stax/test_register_miniscript_long_policy_0_0/00000.png create mode 100644 tests/snapshots/stax/test_register_miniscript_long_policy_0_0/00001.png create mode 100644 tests/snapshots/stax/test_register_miniscript_long_policy_0_0/00002.png create mode 100644 tests/snapshots/stax/test_register_miniscript_long_policy_0_0/00003.png create mode 100644 tests/snapshots/stax/test_register_miniscript_long_policy_1_0/00000.png create mode 100644 tests/snapshots/stax/test_register_miniscript_long_policy_1_0/00001.png create mode 100644 tests/snapshots/stax/test_register_miniscript_long_policy_1_0/00002.png create mode 100644 tests/snapshots/stax/test_register_miniscript_long_policy_1_0/00003.png create mode 100644 tests/snapshots/stax/test_register_miniscript_long_policy_2_0/00000.png create mode 100644 tests/snapshots/stax/test_register_miniscript_long_policy_2_0/00001.png create mode 100644 tests/snapshots/stax/test_register_miniscript_long_policy_2_0/00002.png create mode 100644 tests/snapshots/stax/test_register_miniscript_long_policy_2_0/00003.png create mode 100644 tests/snapshots/stax/test_register_miniscript_long_policy_3_0/00000.png create mode 100644 tests/snapshots/stax/test_register_miniscript_long_policy_3_0/00001.png create mode 100644 tests/snapshots/stax/test_register_miniscript_long_policy_3_0/00002.png create mode 100644 tests/snapshots/stax/test_register_miniscript_long_policy_3_0/00003.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00000.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00001.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00002.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00000.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00001.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00002.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00003.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00000.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00001.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00002.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00000.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00001.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00002.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00003.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00000.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00001.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00002.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00000.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00001.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00002.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00003.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00000.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00001.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00002.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00000.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00001.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00002.png create mode 100644 tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_0_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_0_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_0_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_1_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_1_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_1_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_1_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_2_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_2_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_2_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_2_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_v1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_v1_0_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_v1_0_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_v1_1_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_v1_1_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_v1_1_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_v1_1_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_v1_2_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_v1_2_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_v1_2_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_legacy_v1_2_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_0_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_0_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_0_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_1_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_1_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_1_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_1_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_2_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_2_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_2_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_2_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_0_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_0_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_1_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_1_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_1_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_1_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_2_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_2_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_2_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_2_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_0_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_0_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_0_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_1_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_1_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_1_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_1_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_2_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_2_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_2_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_2_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_v1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_v1_0_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_v1_0_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_v1_1_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_v1_1_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_v1_1_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_v1_1_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_v1_2_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_v1_2_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_v1_2_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_accept_wit_v1_2_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_0_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_0_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_0_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_1_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_1_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_1_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_1_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_2_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_2_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_2_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_2_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_reject_header_0_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_reject_header_0_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_reject_header_0_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_reject_header_v1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_reject_header_v1_0_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_reject_header_v1_0_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_pk_0_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_pk_0_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_pk_0_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_pk_1_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_pk_1_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_pk_1_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_pk_1_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_pk_2_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_pk_2_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_pk_2_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_pk_2_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_0_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_0_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_0_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_1_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_1_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_1_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_1_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_2_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_2_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_2_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_2_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_3_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_3_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_3_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_3_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_0_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_0_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_0_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_1_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_1_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_1_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_1_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_2_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_2_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_2_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_2_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_with_long_name_0_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_with_long_name_0_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_with_long_name_0_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_with_long_name_1_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_with_long_name_1_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_with_long_name_1_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_with_long_name_1_0/00003.png create mode 100644 tests/snapshots/stax/test_register_wallet_with_long_name_2_0/00000.png create mode 100644 tests/snapshots/stax/test_register_wallet_with_long_name_2_0/00001.png create mode 100644 tests/snapshots/stax/test_register_wallet_with_long_name_2_0/00002.png create mode 100644 tests/snapshots/stax/test_register_wallet_with_long_name_2_0/00003.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_input_changed_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_input_changed_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_input_changed_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_input_changed_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_input_changed_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_input_changed_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_input_changed_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_output_changed_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_output_changed_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_output_changed_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_output_changed_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_output_changed_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_output_changed_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_output_changed_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_sign_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_sign_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_sign_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_sign_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_sign_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_sign_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_all_anyone_sign_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_all_input_modified_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_all_input_modified_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_all_input_modified_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_all_input_modified_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_all_input_modified_1_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_all_input_modified_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_all_output_modified_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_all_output_modified_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_all_output_modified_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_all_output_modified_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_all_output_modified_1_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_all_output_modified_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_all_sign_psbt_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_all_sign_psbt_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_all_sign_psbt_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_all_sign_psbt_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_all_sign_psbt_1_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_all_sign_psbt_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_input_changed_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_input_changed_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_input_changed_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_input_changed_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_input_changed_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_input_changed_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_input_changed_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_output_changed_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_output_changed_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_output_changed_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_output_changed_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_output_changed_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_output_changed_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_output_changed_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_sign_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_sign_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_sign_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_sign_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_sign_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_sign_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_none_anyone_sign_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_input_modified_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_input_modified_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_input_modified_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_none_input_modified_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_input_modified_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_none_input_modified_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_none_input_modified_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_output_modified_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_output_modified_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_output_modified_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_none_output_modified_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_output_modified_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_none_output_modified_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_none_output_modified_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_sign_psbt_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_sign_psbt_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_sign_psbt_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_none_sign_psbt_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_none_sign_psbt_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_none_sign_psbt_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_none_sign_psbt_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash1_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash1_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash1_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash1_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash1_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash1_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash2_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash2_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash2_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash2_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash2_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash2_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash2_3_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash2_4_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash3_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash3_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash3_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash3_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash3_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash3_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash3_3_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash3_4_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash81_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash81_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash81_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash81_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash81_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash81_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash81_3_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash81_4_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash82_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash82_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash82_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash82_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash82_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash82_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash82_3_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash82_4_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash83_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash83_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash83_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash83_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash83_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash83_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash83_3_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_segwitv0_sighash83_4_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_input_changed_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_input_changed_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_input_changed_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_input_changed_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_input_changed_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_input_changed_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_input_changed_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_output_changed_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_output_changed_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_output_changed_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_output_changed_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_output_changed_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_output_changed_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_output_changed_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_sign_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_sign_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_sign_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_sign_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_sign_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_sign_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_single_anyone_sign_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_input_modified_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_input_modified_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_input_modified_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_single_input_modified_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_input_modified_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_single_input_modified_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_single_input_modified_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_output_different_index_modified_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_output_different_index_modified_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_output_different_index_modified_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_single_output_different_index_modified_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_output_different_index_modified_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_single_output_different_index_modified_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_single_output_different_index_modified_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_output_same_index_modified_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_output_same_index_modified_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_output_same_index_modified_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_single_output_same_index_modified_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_output_same_index_modified_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_single_output_same_index_modified_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_single_output_same_index_modified_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_sign_psbt_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_sign_psbt_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_sign_psbt_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_single_sign_psbt_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_single_sign_psbt_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_single_sign_psbt_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_single_sign_psbt_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_unsupported_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_unsupported_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_unsupported_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_unsupported_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_unsupported_1_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_unsupported_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_unsupported_for_segwitv0_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_unsupported_for_segwitv0_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_unsupported_for_segwitv0_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sighash_unsupported_for_segwitv0_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sighash_unsupported_for_segwitv0_1_0/00002.png create mode 100644 tests/snapshots/stax/test_sighash_unsupported_for_segwitv0_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_message_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_message_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_message_0_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_message_accept_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_message_accept_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_message_accept_0_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_message_accept_long_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_message_accept_long_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_message_accept_long_0_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_message_accept_long_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_message_accept_long_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_message_accept_long_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_message_accept_long_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_message_accept_long_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_message_accept_long_3_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_message_accept_long_4_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_message_accept_long_4_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_message_accept_non_ascii_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_message_accept_non_ascii_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_message_accept_too_long_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_message_accept_too_long_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_message_hash_reject_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_message_hash_reject_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_message_hash_reject_0_1/00000.png create mode 100644 tests/snapshots/stax/test_sign_message_reject_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_message_reject_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_message_reject_0_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_message_reject_0_1/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_0_1/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_fail_11_changes_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_fail_11_changes_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_fail_11_changes_v1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_fail_11_changes_v1_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_highfee_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_highfee_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_highfee_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_highfee_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_highfee_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_highfee_2_1/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_highfee_2_1/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_highfee_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_miniscript_multikey_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_miniscript_multikey_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_miniscript_multikey_0_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_miniscript_multikey_0_1/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_miniscript_multikey_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_miniscript_multikey_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_miniscript_multikey_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_miniscript_multikey_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_miniscript_multikey_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_miniscript_multikey_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_0_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_0_1/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_1/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_3_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_3_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_4_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_0_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_0_1/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_3_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_4_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_0_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_0_1/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_3_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_4_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_1_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_v1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_v1_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_v1_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_v1_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_v1_1_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_v1_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_1_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_1_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_1_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_v1_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_v1_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_v1_1_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_v1_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_v1_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_v1_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_v1_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_1_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_v1_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_v1_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_v1_1_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_v1_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_v1_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_v1_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_v1_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_v1_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_selftransfer_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_selftransfer_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_selftransfer_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_all_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_all_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_all_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_all_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_all_1_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_all_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_0_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_0_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_0_1_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_0_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_1_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_1_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_1_1_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_1_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_v1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_v1_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_v1_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_v1_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_v1_1_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_taproot_1to2_v1_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_0_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_0_1/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_2_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_3_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_4_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_4_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_5_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_5_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_6_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_6_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_6_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_7_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_3_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_4_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_4_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_5_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_5_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_5_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_6_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_3_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_4_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_4_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_5_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_5_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_5_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_6_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_naked_opreturn_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_naked_opreturn_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_naked_opreturn_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_naked_opreturn_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_naked_opreturn_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_naked_opreturn_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_naked_opreturn_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_opreturn_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_opreturn_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_opreturn_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_opreturn_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_opreturn_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_opreturn_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_opreturn_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_opreturn_v1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_opreturn_v1_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_opreturn_v1_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_opreturn_v1_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_opreturn_v1_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_opreturn_v1_2_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_opreturn_v1_3_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_segwit_v16_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_segwit_v16_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_segwit_v16_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_segwit_v16_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_segwit_v16_1_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_segwit_v16_2_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_segwit_v16_v1_0_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_segwit_v16_v1_0_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_segwit_v16_v1_1_0/00000.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_segwit_v16_v1_1_0/00001.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_segwit_v16_v1_1_0/00002.png create mode 100644 tests/snapshots/stax/test_sign_psbt_with_segwit_v16_v1_2_0/00000.png create mode 100644 tests/test_e2e_miniscript.py create mode 100644 tests/test_e2e_tapscripts.py create mode 100644 tests/test_get_wallet_address_v1.py create mode 100644 tests/test_protocol.py create mode 100644 tests/test_register_wallet_v1.py create mode 100644 tests/test_sign_psbt_v1.py create mode 100644 tests/test_sign_psbt_with_sighash_types.py create mode 100644 unit-tests/libs/crypto_mocks.c create mode 100644 unit-tests/libs/crypto_mocks.h create mode 100644 unit-tests/libs/sha-256.c create mode 100644 unit-tests/libs/sha-256.h diff --git a/.github/workflows/Dockerfile b/.github/workflows/Dockerfile index 5e54b9ece..93dad7e5c 100644 --- a/.github/workflows/Dockerfile +++ b/.github/workflows/Dockerfile @@ -1,14 +1,30 @@ # An image derived from ledgerhq/speculos but also containing the bitcoin-core binaries +# compiled from the master branch FROM ghcr.io/ledgerhq/speculos:latest -# install curl -RUN apt update -y && apt install -y curl +# install git and curl +RUN apt update -y && apt install -y git curl -# download bitcoin-core and decompress it to /bitcoin -RUN curl -o /tmp/bitcoin.tar.gz https://bitcoin.org/bin/bitcoin-core-22.0/bitcoin-22.0-x86_64-linux-gnu.tar.gz && \ - tar -xf /tmp/bitcoin.tar.gz -C / && \ - mv /bitcoin-22.0 /bitcoin +# install autotools bitcoin-core build dependencies +RUN apt install -y automake autotools-dev bsdmainutils build-essential ccache git libboost-dev libboost-filesystem-dev libboost-system-dev libboost-test-dev libevent-dev libminiupnpc-dev libnatpmp-dev libqt5gui5 libqt5core5a libqt5dbus5 libsqlite3-dev libtool libzmq3-dev pkg-config python3 qttools5-dev qttools5-dev-tools qtwayland5 systemtap-sdt-dev + +# clone bitcoin-core from github and compile it +RUN cd / && \ + git clone --depth=1 https://github.com/bitcoin/bitcoin.git && \ + cd bitcoin && \ + ./autogen.sh && \ + ./configure --enable-suppress-external-warnings && \ + make -j "$(($(nproc)+1))" && \ + mkdir bin && \ + cp src/bitcoind src/bitcoin-cli src/bitcoin-tx src/bitcoin-util src/bitcoin-wallet ./bin + + +FROM ghcr.io/ledgerhq/speculos:latest +COPY --from=0 /bitcoin/bin /bitcoin/bin + +# install runtime dependencies for bitcoind +RUN apt update -y && apt install -y libminiupnpc-dev libminiupnpc-dev libnatpmp-dev libevent-dev libzmq3-dev # Add bitcoin binaries to path ENV PATH=/bitcoin/bin:$PATH diff --git a/.github/workflows/build_and_functional_tests.yml b/.github/workflows/build_and_functional_tests.yml new file mode 100644 index 000000000..7e57e5c65 --- /dev/null +++ b/.github/workflows/build_and_functional_tests.yml @@ -0,0 +1,34 @@ +name: Build and run functional tests using ragger through reusable workflow + +# This workflow will build the app and then run functional tests using the Ragger framework upon Speculos emulation. +# It calls a reusable workflow developed by Ledger's internal developer team to build the application and upload the +# resulting binaries. +# It then calls another reusable workflow to run the Ragger tests on the compiled application binary. +# +# While this workflow is optional, having functional testing on your application is mandatory and this workflow and +# tooling environment is meant to be easy to use and adapt after forking your application + +on: + workflow_dispatch: + push: + branches: + - master + - main + - develop + pull_request: + +jobs: + build_application: + name: Build application using the reusable workflow + uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_build.yml@v1 + with: + upload_app_binaries_artifact: "compiled_app_binaries" + flags: "DEBUG=0 COIN=bitcoin_testnet" + + ragger_tests: + name: Run ragger tests using the reusable workflow + needs: build_application + uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_ragger_tests.yml@v1 + with: + download_app_binaries_artifact: "compiled_app_binaries" + diff --git a/.github/workflows/builder-image-workflow.yml b/.github/workflows/builder-image-workflow.yml index b5ab35ea1..11128cc20 100644 --- a/.github/workflows/builder-image-workflow.yml +++ b/.github/workflows/builder-image-workflow.yml @@ -1,13 +1,11 @@ name: Build custom speculos-bitcoin image on: + workflow_dispatch: push: branches: - master - develop - paths: - - .github/workflows/builder-image-workflow.yml - - .github/workflows/Dockerfile jobs: build: diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index bbabb75f9..910682551 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -13,7 +13,20 @@ on: jobs: job_build: - name: Compilation + name: Compilation for NanoS, X, S+, and Stax + + strategy: + matrix: + include: + - model: nanos + SDK: "$NANOS_SDK" + - model: nanox + SDK: "$NANOX_SDK" + - model: nanosp + SDK: "$NANOSP_SDK" + - model: stax + SDK: "$STAX_SDK" + runs-on: ubuntu-latest container: @@ -25,29 +38,21 @@ jobs: - name: Build run: | - make DEBUG=0 COIN=bitcoin && mv bin/ bitcoin-bin/ - make clean - make DEBUG=0 COIN=bitcoin_testnet && mv bin/ bitcoin-testnet-bin/ + make DEBUG=0 COIN=bitcoin BOLOS_SDK=${{ matrix.SDK }} && mv bin/ bitcoin-bin/ make clean - make DEBUG=0 COIN=bitcoin_testnet_lib && mv bin/ bitcoin-testnet-lib-bin/ + make DEBUG=0 COIN=bitcoin_testnet BOLOS_SDK=${{ matrix.SDK }} && mv bin/ bitcoin-testnet-bin/ - name: Upload Bitcoin app binary uses: actions/upload-artifact@v2 with: - name: bitcoin-app + name: bitcoin-app-${{ matrix.model }} path: bitcoin-bin - name: Upload Bitcoin Testnet app binary uses: actions/upload-artifact@v2 with: - name: bitcoin-testnet-app + name: bitcoin-testnet-app-${{ matrix.model }} path: bitcoin-testnet-bin - - name: Upload Bitcoin Testnet app binary (lib version) - uses: actions/upload-artifact@v2 - with: - name: bitcoin-testnet-lib-app - path: bitcoin-testnet-lib-bin - job_unit_test: name: Unit test needs: job_build @@ -78,10 +83,10 @@ jobs: path: unit-tests/coverage - name: Upload to codecov.io - uses: codecov/codecov-action@v1 + uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV_TOKEN }} - file: ./unit-tests/coverage.info + files: ./unit-tests/coverage.info flags: unittests name: codecov-app-bitcoin fail_ci_if_error: true @@ -95,8 +100,16 @@ jobs: name: documentation path: doc/html - job_test: - name: Tests + job_test_mainnet: + name: Tests on mainnet + strategy: + matrix: + include: + - model: nanos + - model: nanox + - model: nanosp + - model: stax + needs: job_build runs-on: ubuntu-latest @@ -115,20 +128,20 @@ jobs: - name: Clone uses: actions/checkout@v2 - - name: Download Bitcoin Testnet app binary + - name: Download Bitcoin app binary uses: actions/download-artifact@v2 with: - name: bitcoin-testnet-app + name: bitcoin-app-${{matrix.model}} path: bin - name: Run tests run: | - cd tests + cd tests_mainnet pip install -r requirements.txt - PYTHONPATH=$PYTHONPATH:/speculos pytest --headless + PYTHONPATH=$PYTHONPATH:/speculos pytest --headless --model=${{ matrix.model }} --timeout=300 - job_test_mainnet: - name: Tests on mainnet + job_test_python_lib_legacyapp: + name: Tests with the Python library and legacy Bitcoin app needs: job_build runs-on: ubuntu-latest @@ -147,17 +160,12 @@ jobs: - name: Clone uses: actions/checkout@v2 - - name: Download Bitcoin app binary - uses: actions/download-artifact@v2 - with: - name: bitcoin-app - path: bin - - name: Run tests run: | - cd tests_mainnet + cd bitcoin_client/tests pip install -r requirements.txt - PYTHONPATH=$PYTHONPATH:/speculos pytest --headless + PYTHONPATH=$PYTHONPATH:/speculos pytest --headless --timeout=300 + job_test_js_lib: name: Tests with the JS library @@ -191,7 +199,7 @@ jobs: - name: Download Bitcoin Testnet app binary uses: actions/download-artifact@v2 with: - name: bitcoin-testnet-app + name: bitcoin-testnet-app-nanos path: bin - name: Run tests @@ -200,74 +208,20 @@ jobs: yarn install LOG_SPECULOS=1 LOG_APDUS=1 SPECULOS="/speculos/speculos.py" yarn test - job_test_legacy_native: - name: Legacy tests - needs: job_build - runs-on: ubuntu-latest - - container: - image: ghcr.io/ledgerhq/app-bitcoin-new/speculos-bitcoin:latest - ports: - - 1234:1234 - - 9999:9999 - - 40000:40000 - - 41000:41000 - - 42000:42000 - - 43000:43000 - options: --entrypoint /bin/bash - steps: - - name: Clone - uses: actions/checkout@v2 - - - name: Download Bitcoin Testnet app binary - uses: actions/download-artifact@v2 - with: - name: bitcoin-testnet-app - path: tests-legacy/bitcoin-testnet-bin - - - name: Run tests - run: | - cd tests-legacy - pip install -r requirements.txt - PATH=$PATH:/speculos pytest - - - job_test_legacy_lib: - name: Legacy tests (library) + job_test_rust_client: + name: Tests for rust client library needs: job_build runs-on: ubuntu-latest container: - image: ghcr.io/ledgerhq/app-bitcoin-new/speculos-bitcoin:latest - ports: - - 1234:1234 - - 9999:9999 - - 40000:40000 - - 41000:41000 - - 42000:42000 - - 43000:43000 - options: --entrypoint /bin/bash + image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest steps: - name: Clone uses: actions/checkout@v2 - - name: Download Bitcoin app binary - uses: actions/download-artifact@v2 - with: - name: bitcoin-app - path: tests-legacy/bitcoin-bin - - - name: Download Bitcoin Testnet app binary (library version) - uses: actions/download-artifact@v2 - with: - name: bitcoin-testnet-lib-app - path: tests-legacy/bitcoin-testnet-bin - - - name: Run tests run: | - cd tests-legacy - pip install -r requirements.txt - PATH=$PATH:/speculos pytest + cd bitcoin_client_rs/ + cargo test --no-default-features --features="async" diff --git a/.github/workflows/codeql-workflow.yml b/.github/workflows/codeql-workflow.yml new file mode 100644 index 000000000..05c758ae5 --- /dev/null +++ b/.github/workflows/codeql-workflow.yml @@ -0,0 +1,47 @@ +name: "CodeQL" + +on: + workflow_dispatch: + push: + branches: + - master + - develop + pull_request: + branches: + - master + - develop + +jobs: + analyse: + name: CodeQL Analyse of boilerplate application + strategy: + matrix: + include: + - SDK: "$NANOS_SDK" + artifact: boilerplate-app-nanoS + - SDK: "$NANOX_SDK" + artifact: boilerplate-app-nanoX + - SDK: "$NANOSP_SDK" + artifact: boilerplate-app-nanoSP + language: [ 'cpp' ] + runs-on: ubuntu-latest + container: + image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-legacy:latest + + steps: + - name: Clone + uses: actions/checkout@v3 + + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + queries: security-and-quality + + - name: Build + run: | + make BOLOS_SDK=${{ matrix.SDK }} + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 + diff --git a/.github/workflows/guidelines-enforcer.yml b/.github/workflows/guidelines-enforcer.yml new file mode 100644 index 000000000..c154d6cf5 --- /dev/null +++ b/.github/workflows/guidelines-enforcer.yml @@ -0,0 +1,22 @@ +name: Ensure compliance with Ledger guidelines + +# This workflow is mandatory in all applications +# It calls a reusable workflow guidelines_enforcer developed by Ledger's internal developer team. +# The successful completion of the reusable workflow is a mandatory step for an app to be available on the Ledger +# application store. +# +# More information on the guidelines can be found in the repository: +# LedgerHQ/ledger-app-workflows/ + +on: + workflow_dispatch: + push: + branches: + - master + - develop + pull_request: + +jobs: + guidelines_enforcer: + name: Call Ledger guidelines_enforcer + uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_guidelines_enforcer.yml@v1 diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml index 693bcc4a8..6269b0103 100644 --- a/.github/workflows/sonarcloud.yml +++ b/.github/workflows/sonarcloud.yml @@ -12,55 +12,37 @@ on: types: [opened, synchronize, reopened] jobs: - build: - name: Build + sonarcloud: runs-on: ubuntu-latest container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest + image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-legacy:latest + env: - SONAR_SCANNER_VERSION: 4.4.0.2170 - SONAR_SERVER_URL: "https://sonarcloud.io" BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - - name: Set up JDK 11 - uses: actions/setup-java@v1 - with: - java-version: 11 - - name: Download and set up sonar-scanner - env: - SONAR_SCANNER_DOWNLOAD_URL: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${{ env.SONAR_SCANNER_VERSION }}-linux.zip - run: | - apt-get update -y - apt-get upgrade -y - apt-get install -y - curl -sL https://deb.nodesource.com/setup_16.x | bash - - apt-get install -y gcovr nodejs unzip - mkdir -p $HOME/.sonar - curl -sSLo $HOME/.sonar/sonar-scanner.zip ${{ env.SONAR_SCANNER_DOWNLOAD_URL }} - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - echo "$HOME/.sonar/sonar-scanner-${{ env.SONAR_SCANNER_VERSION }}-linux/bin" >> $GITHUB_PATH - - name: Download and set up build-wrapper - env: - BUILD_WRAPPER_DOWNLOAD_URL: ${{ env.SONAR_SERVER_URL }}/static/cpp/build-wrapper-linux-x86.zip - run: | - curl -sSLo $HOME/.sonar/build-wrapper-linux-x86.zip ${{ env.BUILD_WRAPPER_DOWNLOAD_URL }} - unzip -o $HOME/.sonar/build-wrapper-linux-x86.zip -d $HOME/.sonar/ - echo "$HOME/.sonar/build-wrapper-linux-x86" >> $GITHUB_PATH - - name: Generate code coverage - run: | - cd unit-tests/ - cmake -Bbuild -H. && make -C build - make -C build test - gcovr --root .. --sonarqube coverage.xml - - name: Run build-wrapper - run: | + - uses: actions/checkout@v3 + with: + # Disabling shallow clone is recommended for improving relevancy of reporting + fetch-depth: 0 + - name: Install dependencies + run: | + apt-get update -y + apt-get upgrade -y + DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata + apt-get install -y libcmocka-dev gcovr unzip + - name: Install sonar-scanner and build-wrapper + uses: sonarsource/sonarcloud-github-c-cpp@v2 + - name: Generate code coverage + run: | + cd unit-tests/ + cmake -Bbuild -H. && make -C build + make -C build test + gcovr --root .. --sonarqube coverage.xml + - name: Run build-wrapper + run: | build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} make clean all - - name: Run sonar-scanner - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - run: | - sonar-scanner --define sonar.host.url="${{ env.SONAR_SERVER_URL }}" --define sonar.cfamily.build-wrapper-output="${{ env.BUILD_WRAPPER_OUT_DIR }}" \ No newline at end of file + - name: Run sonar-scanner + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + run: sonar-scanner --define sonar.cfamily.build-wrapper-output="${{ env.BUILD_WRAPPER_OUT_DIR }}" #Consult https://docs.sonarcloud.io/advanced-setup/ci-based-analysis/sonarscanner-cli/ for more information and options \ No newline at end of file diff --git a/.github/workflows/swap-ci-workflow.yml b/.github/workflows/swap-ci-workflow.yml new file mode 100644 index 000000000..85225ecac --- /dev/null +++ b/.github/workflows/swap-ci-workflow.yml @@ -0,0 +1,16 @@ +name: Swap functional tests + +on: + workflow_dispatch: + push: + branches: + - master + - develop + pull_request: + +jobs: + job_functional_tests: + uses: LedgerHQ/app-exchange/.github/workflows/reusable_swap_functional_tests.yml@develop + with: + branch_for_bitcoin: ${{ github.ref }} + test_filter: '"btc or bitcoin or Bitcoin"' diff --git a/.gitignore b/.gitignore index 97a1d7083..3a33f742d 100644 --- a/.gitignore +++ b/.gitignore @@ -12,11 +12,9 @@ unit-tests/build/ unit-tests/coverage/ unit-tests/coverage.info -tests-legacy/bitcoin-bin -tests-legacy/bitcoin-testnet-bin - # temporary folder used during tests tests/.test_bitcoin +tests/snapshots-tmp # Fuzzing fuzzing/build/ @@ -35,13 +33,12 @@ __pycache__/ .eggs/ .python-version .pytest_cache +venv/ +ledger/ # Doxygen doc/html doc/latex -# Python virtual environment -.venv* - # Mac directory metadata -.DS_Store +.DS_Store \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a2e6974b..65d405494 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,106 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Dates are in `dd-mm-yyyy` format. +## [2.2.3] - 06-05-2024 + +### Added + +- Support for signing transactions with `OP_RETURN` outputs extended to up to 5 push opcodes, instead of a single one. + +## [2.2.2] - 08-04-2024 + +### Added + +- During wallet policy registration, the app will recognize and explicitly label as `dummy` any extended public key whose compressed pubkey is `0250929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0`. This is useful especially for taproot miniscript policies which do not intend to use keypath spending. + +### Changed + +- Message signing: will now show the full text of the message, instead of its hash. If the message is too long (over 640 characters) or it contains non-printable characters (not in the range `0x20..0x70`, inclusive), then the SHA256 hash will be shown, as in previous versions of the app. +- Transaction signing: changed the wording to make the ux slightly simpler and clearer. + +## [2.2.1] - 18-03-2024 + +### Fixed + +- Signing failure for certain taproot policies in versions 2.1.2, 2.1.3 and 2.2.0: returned tapleaf hashes (and corresponding signatures) are incorrect if the descriptor template has a derivation path not ending for `/**` or `/<0;1>/*` for that key. + +## [2.2.0] - 29-01-2024 + +### Added + +- 🥕 Support for miniscript on taproot wallet policies. +- Warning if the fees are above 10% of the amount, if the total amount is above 10000 sats (0.0001 ₿). + +### Changed + +- Increased limits for the maximum in-memory size of wallet policies. + +## [2.1.3] - 21-06-2023 + +### Changed + +- Improved UX for self-transfers, that is, transactions where all the outputs are change outputs. +- Outputs containing a single `OP_RETURN` (without any data push) can now be signed in order to support [BIP-0322](https://github.com/bitcoin/bips/blob/master/bip-0322.mediawiki) implementations. + + +### Fixed + +- Wrong address generation for miniscript policies containing an unusual `thresh(1,X)` fragment (that is, with threshold 1, and a single condition). This should not happen in practice, as the policy is redundant for just `X`. Client libraries have been updated to detect and prevent usage of these policies. +- Resolved a slight regression in signing performance introduced in v2.1.2. + +## [2.1.2] - 03-04-2023 + +### Added + +- 🥕 Initial support for taproot scripts; taproot trees support up to 8 leaves, and the only supported scripts in tapleaves are `pk`, `multi_a` and `sortedmulti_a`. + +### Fixed + +- Miniscript policies containing an `a:` fragment returned an incorrect address in versions `2.1.0` and `2.1.1` of the app. The **upgrade is strongly recommended** for users of miniscript wallets. +- The app will now reject showing or returning an address for a wallet policy if the `address_index` is larger than or equal to `2147483648`; previous version would return an address for a hardened derivation, which is undesirable. +- Nested segwit transactions (P2SH-P2WPKH and P2SH-P2WSH) can now be signed (with a warning) if the PSBT contains the witness-utxo but no non-witness-utxo. This aligns their behavior to other types of Segwitv0 transactions since version 2.0.6. + +## [2.1.1] - 23-01-2023 + +### Changed + +- Allow silent xpub exports at the `m/45'/coin_type'/account'` derivation paths. +- Allow silent xpub exports for any unhardened child of an allowed path. +- Allow up to 8 derivation steps for BIP-32 paths (instead of 6). + +## [2.1.0] - 16-11-2022 + +### Added + +- Miniscript support on SegWit. +- Improved support for wallet policies. +- Support for sighash flags. + +### Changed + +- Wallet policies now allow external keys with no key origin information. +- Wallet policies now allow multiple internal keys. + +### Removed + +- Support for legacy protocol (pre-2.0.0 version) and support for altcoins, now done via separate apps. Substantial binary size reduction as a consequence. + +## [2.0.6] - 06-06-2022 + +### Added + +- Support signing of segwit V0 transactions with unverified inputs for compatibility with software unable to provide the previous transaction. + +### Fixed + +- Fixed bug preventing signing transactions with external inputs (or with mixed script types). + +## [2.0.5] - 03-05-2022 + +### Changed + +- Technical release; restore compatibility with some client libraries that rely on deprecated legacy behavior. + ## [2.0.4] - 28-03-2022 ### Added diff --git a/Makefile b/Makefile index 84bdd7561..0f5cfed61 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ # **************************************************************************** # Ledger App for Bitcoin -# (c) 2021 Ledger SAS. +# (c) 2024 Ledger SAS. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,10 +15,12 @@ # limitations under the License. # **************************************************************************** -ifdef DEBUG ifndef DEBUG_LOG_LEVEL -DEBUG_LOG_LEVEL := $(DEBUG) -endif + ifdef DEBUG + DEBUG_LOG_LEVEL := $(DEBUG) + else + DEBUG_LOG_LEVEL := 0 + endif endif ifeq ($(BOLOS_SDK),) @@ -27,387 +29,248 @@ endif include $(BOLOS_SDK)/Makefile.defines -# TODO: compile with the right path restrictions -# APP_LOAD_PARAMS = --curve secp256k1 -APP_LOAD_PARAMS = $(COMMON_LOAD_PARAMS) -APP_PATH = "" +# TODO: Compile with the right path restrictions +# +# The right path restriction would be something like +# --path "*'/0'" +# for mainnet, and +# --path "*'/1'" +# for testnet. +# +# That is, restrict the BIP-44 coin_type, but not the purpose. +# However, such wildcards are not currently supported by the OS. +# +# Note that the app still requires explicit user approval before exporting +# any xpub outside of a small set of allowed standard paths. + +# Application allowed derivation curves. +CURVE_APP_LOAD_PARAMS = secp256k1 +# Application allowed derivation paths. +PATH_APP_LOAD_PARAMS = "" + +# Allowed SLIP21 paths +PATH_SLIP21_APP_LOAD_PARAMS = "LEDGER-Wallet policy" + +# Application version APPVERSION_M = 2 -APPVERSION_N = 0 -APPVERSION_P = 4 -APPVERSION = "$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)" +APPVERSION_N = 2 +APPVERSION_P = 3 +APPVERSION_SUFFIX = # if not empty, appended at the end. Do not add a dash. +ifeq ($(APPVERSION_SUFFIX),) +APPVERSION = "$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)" +else +APPVERSION = "$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)-$(strip $(APPVERSION_SUFFIX))" +endif -APP_STACK_SIZE = 1500 +# Setting to allow building variant applications +VARIANT_PARAM = COIN +VARIANT_VALUES = bitcoin_testnet bitcoin liquid_regtest liquid_regtest_headless liquid liquid_headless # simplify for tests ifndef COIN COIN=liquid_regtest endif -# Flags: BOLOS_SETTINGS, GLOBAL_PIN, DERIVE_MASTER -# Dependency to Bitcoin app (for altcoins) -APP_LOAD_FLAGS=--appFlags 0xa50 --dep Bitcoin:$(APPVERSION) +######################################## +# Application custom permissions # +######################################## +HAVE_APPLICATION_FLAG_DERIVE_MASTER = 1 +HAVE_APPLICATION_FLAG_GLOBAL_PIN = 1 +HAVE_APPLICATION_FLAG_BOLOS_SETTINGS = 1 +ifneq (,$(findstring bitcoin,$(COIN))) +HAVE_APPLICATION_FLAG_LIBRARY = 1 +endif -ifeq ($(COIN),bitcoin_testnet) -# we're not using the lib :) -DEFINES_LIB= -APP_LOAD_FLAGS=--appFlags 0xa50 +ifeq ($(COIN),bitcoin_testnet) -# Bitcoin testnet (can also be used for signet) +# Bitcoin testnet, no legacy support DEFINES += BIP32_PUBKEY_VERSION=0x043587CF -DEFINES += BIP32_PRIVKEY_VERSION=0x04358394 DEFINES += BIP44_COIN_TYPE=1 -DEFINES += BIP44_COIN_TYPE_2=1 DEFINES += COIN_P2PKH_VERSION=111 DEFINES += COIN_P2SH_VERSION=196 DEFINES += COIN_NATIVE_SEGWIT_PREFIX=\"tb\" -DEFINES += COIN_FAMILY=1 -DEFINES += COIN_COINID=\"Bitcoin\" -DEFINES += COIN_COINID_HEADER=\"BITCOIN\" -DEFINES += COIN_COINID_NAME=\"Bitcoin\" DEFINES += COIN_COINID_SHORT=\"TEST\" -DEFINES += COIN_KIND=COIN_KIND_BITCOIN_TESTNET -DEFINES += COIN_FLAGS=FLAG_SEGWIT_CHANGE_SUPPORT APPNAME = "Bitcoin Test" else ifeq ($(COIN),bitcoin) -# we're not using the lib :) -DEFINES_LIB= -APP_LOAD_FLAGS=--appFlags 0xa50 - -# Bitcoin mainnet +# Bitcoin mainnet, no legacy support DEFINES += BIP32_PUBKEY_VERSION=0x0488B21E -DEFINES += BIP32_PRIVKEY_VERSION=0x0488ADE4 DEFINES += BIP44_COIN_TYPE=0 -DEFINES += BIP44_COIN_TYPE_2=0 DEFINES += COIN_P2PKH_VERSION=0 DEFINES += COIN_P2SH_VERSION=5 DEFINES += COIN_NATIVE_SEGWIT_PREFIX=\"bc\" -DEFINES += COIN_FAMILY=1 -DEFINES += COIN_COINID=\"Bitcoin\" -DEFINES += COIN_COINID_HEADER=\"BITCOIN\" -DEFINES += COIN_COINID_NAME=\"Bitcoin\\x20Testnet\" DEFINES += COIN_COINID_SHORT=\"BTC\" -DEFINES += COIN_KIND=COIN_KIND_BITCOIN -DEFINES += COIN_FLAGS=FLAG_SEGWIT_CHANGE_SUPPORT APPNAME = "Bitcoin" -else ifeq ($(COIN),bitcoin_regtest) -# This target can be used to compile a version of the app that uses regtest addresses - -# we're not using the lib :) -DEFINES_LIB= -APP_LOAD_FLAGS=--appFlags 0xa50 - -# Bitcoin regtest test network -DEFINES += BIP32_PUBKEY_VERSION=0x043587CF -DEFINES += BIP32_PRIVKEY_VERSION=0x04358394 -DEFINES += BIP44_COIN_TYPE=1 -DEFINES += BIP44_COIN_TYPE_2=1 -DEFINES += COIN_P2PKH_VERSION=111 -DEFINES += COIN_P2SH_VERSION=196 -DEFINES += COIN_NATIVE_SEGWIT_PREFIX=\"bcrt\" -DEFINES += COIN_FAMILY=1 -DEFINES += COIN_COINID=\"Bitcoin\" -DEFINES += COIN_COINID_HEADER=\"BITCOIN\" -DEFINES += COIN_COINID_NAME=\"Bitcoin\" -DEFINES += COIN_COINID_SHORT=\"TEST\" -DEFINES += COIN_KIND=COIN_KIND_BITCOIN_TESTNET -DEFINES += COIN_FLAGS=FLAG_SEGWIT_CHANGE_SUPPORT -APPNAME = "Bitcoin Regtest" - else ifeq ($(COIN),liquid_regtest) -# we're not using the lib :) -DEFINES_LIB= -# Flags: DERIVE_MASTER, GLOBAL_PIN, BOLOS_SETTINGS -APP_LOAD_FLAGS=--appFlags 0x250 - # Liquid regtest DEFINES += BIP32_PUBKEY_VERSION=0x043587CF DEFINES += BIP32_PRIVKEY_VERSION=0x04358394 DEFINES += BIP44_COIN_TYPE=1 -DEFINES += BIP44_COIN_TYPE_2=1 DEFINES += COIN_P2PKH_VERSION=111 DEFINES += COIN_P2SH_VERSION=75 DEFINES += COIN_PREFIX_CONFIDENTIAL=4 DEFINES += HAVE_LIQUID DEFINES += HAVE_LIQUID_TEST DEFINES += COIN_BLINDED_VERSION=4 -DEFINES += COIN_FAMILY=1 -DEFINES += COIN_COINID=\"Bitcoin\" -DEFINES += COIN_COINID_HEADER=\"BITCOIN\" -DEFINES += COIN_COINID_NAME=\"Bitcoin\" -DEFINES += COIN_COINID_SHORT=\"BTC\" +DEFINES += COIN_COINID_SHORT=\"L-BTC\" DEFINES += COIN_NATIVE_SEGWIT_PREFIX=\"ert\" DEFINES += COIN_NATIVE_SEGWIT_PREFIX_CONFIDENTIAL=\"el\" -DEFINES += COIN_KIND=COIN_KIND_BITCOIN -DEFINES += COIN_FLAGS=FLAG_SEGWIT_CHANGE_SUPPORT + APPNAME = "Liquid Regtest" -# -disabled- APP_LOAD_PARAMS += --curve secp256k1 else ifeq ($(COIN),liquid_regtest_headless) -# we're not using the lib :) -DEFINES_LIB= -# Flags: DERIVE_MASTER, GLOBAL_PIN, BOLOS_SETTINGS -APP_LOAD_FLAGS=--appFlags 0x250 - # Liquid regtest headless DEFINES += BIP32_PUBKEY_VERSION=0x043587CF DEFINES += BIP32_PRIVKEY_VERSION=0x04358394 DEFINES += BIP44_COIN_TYPE=1 -DEFINES += BIP44_COIN_TYPE_2=1 DEFINES += COIN_P2PKH_VERSION=111 DEFINES += COIN_P2SH_VERSION=75 DEFINES += COIN_PREFIX_CONFIDENTIAL=4 DEFINES += HAVE_LIQUID DEFINES += HAVE_LIQUID_TEST DEFINES += COIN_BLINDED_VERSION=4 -DEFINES += COIN_FAMILY=1 -DEFINES += COIN_COINID=\"Bitcoin\" -DEFINES += COIN_COINID_HEADER=\"BITCOIN\" -DEFINES += COIN_COINID_NAME=\"Bitcoin\" -DEFINES += COIN_COINID_SHORT=\"BTC\" +DEFINES += COIN_COINID_SHORT=\"L-BTC\" DEFINES += COIN_NATIVE_SEGWIT_PREFIX=\"ert\" DEFINES += COIN_NATIVE_SEGWIT_PREFIX_CONFIDENTIAL=\"el\" -DEFINES += COIN_KIND=COIN_KIND_BITCOIN -DEFINES += COIN_FLAGS=FLAG_SEGWIT_CHANGE_SUPPORT DEFINES += HAVE_LIQUID_HEADLESS + APPNAME = "Liquid Regtest Hless" -# -disabled- APP_LOAD_PARAMS += --curve secp256k1 else ifeq ($(COIN),liquid) -# we're not using the lib :) -DEFINES_LIB= -# Flags: DERIVE_MASTER, GLOBAL_PIN, BOLOS_SETTINGS -APP_LOAD_FLAGS=--appFlags 0x250 - # Liquid DEFINES += BIP32_PUBKEY_VERSION=0x0488B21E DEFINES += BIP32_PRIVKEY_VERSION=0x0488ADE4 DEFINES += BIP44_COIN_TYPE=1776 -DEFINES += BIP44_COIN_TYPE_2=1776 DEFINES += COIN_P2PKH_VERSION=57 DEFINES += COIN_P2SH_VERSION=39 DEFINES += COIN_PREFIX_CONFIDENTIAL=12 DEFINES += HAVE_LIQUID DEFINES += COIN_BLINDED_VERSION=12 -DEFINES += COIN_FAMILY=1 -DEFINES += COIN_COINID=\"Bitcoin\" -DEFINES += COIN_COINID_HEADER=\"BITCOIN\" -DEFINES += COIN_COINID_NAME=\"Bitcoin\" -DEFINES += COIN_COINID_SHORT=\"BTC\" +DEFINES += COIN_COINID_SHORT=\"L-BTC\" DEFINES += COIN_NATIVE_SEGWIT_PREFIX=\"ex\" DEFINES += COIN_NATIVE_SEGWIT_PREFIX_CONFIDENTIAL=\"lq\" -DEFINES += COIN_KIND=COIN_KIND_BITCOIN -DEFINES += COIN_FLAGS=FLAG_SEGWIT_CHANGE_SUPPORT + APPNAME = "Liquid" -# -disabled- APP_LOAD_PARAMS += --curve secp256k1 else ifeq ($(COIN),liquid_headless) -# we're not using the lib :) -DEFINES_LIB= -# Flags: DERIVE_MASTER, GLOBAL_PIN, BOLOS_SETTINGS -APP_LOAD_FLAGS=--appFlags 0x250 - # Liquid Headless DEFINES += BIP32_PUBKEY_VERSION=0x0488B21E DEFINES += BIP32_PRIVKEY_VERSION=0x0488ADE4 DEFINES += BIP44_COIN_TYPE=1776 -DEFINES += BIP44_COIN_TYPE_2=1776 DEFINES += COIN_P2PKH_VERSION=57 DEFINES += COIN_P2SH_VERSION=39 DEFINES += COIN_PREFIX_CONFIDENTIAL=12 DEFINES += HAVE_LIQUID DEFINES += COIN_BLINDED_VERSION=12 -DEFINES += COIN_FAMILY=1 -DEFINES += COIN_COINID=\"Bitcoin\" -DEFINES += COIN_COINID_HEADER=\"BITCOIN\" DEFINES += COIN_COLOR_HDR=0xFCB653 DEFINES += COIN_COLOR_DB=0xFEDBA9 -DEFINES += COIN_COINID_NAME=\"Bitcoin\" -DEFINES += COIN_COINID_SHORT=\"BTC\" +DEFINES += COIN_COINID_SHORT=\"L-BTC\" DEFINES += COIN_NATIVE_SEGWIT_PREFIX=\"ex\" DEFINES += COIN_NATIVE_SEGWIT_PREFIX_CONFIDENTIAL=\"lq\" -DEFINES += COIN_KIND=COIN_KIND_BITCOIN -DEFINES += COIN_FLAGS=FLAG_SEGWIT_CHANGE_SUPPORT DEFINES += HAVE_LIQUID_HEADLESS + APPNAME = "Liquid Hless" -# -disabled- APP_LOAD_PARAMS += --curve secp256k1 else ifeq ($(filter clean,$(MAKECMDGOALS)),) -$(error Unsupported COIN - use bitcoin_testnet, bitcoin, bitcoin_regtest, liquid_regtest, liquid_regtest_headless, liquid, liquid_headless) +$(error Unsupported COIN - use bitcoin_testnet, bitcoin, liquid_regtest, liquid_regtest_headless, liquid, liquid_headless) endif endif -APP_LOAD_PARAMS += $(APP_LOAD_FLAGS) -DEFINES += $(DEFINES_LIB) - -ifeq ($(TARGET_NAME),TARGET_NANOS) -ICONNAME=icons/nanos_app_$(COIN).gif +# Application icons following guidelines: +# https://developers.ledger.com/docs/embedded-app/design-requirements/#device-icon + +ifneq (,$(findstring bitcoin,$(COIN))) +# Bitcoin icons +ICON_NANOS = icons/nanos_app_bitcoin.gif +ICON_NANOX = icons/nanox_app_bitcoin.gif +ICON_NANOSP = icons/nanox_app_bitcoin.gif +ICON_STAX = icons/stax_app_bitcoin.gif +else ifneq (,$(findstring liquid,$(COIN))) +# Liquid icons +ICON_NANOS = icons/nanos_app_liquid.gif +ICON_NANOX = icons/nanox_app_liquid.gif +ICON_NANOSP = icons/nanox_app_liquid.gif +ICON_STAX = icons/stax_app_liquid.gif else -ICONNAME=icons/nanox_app_$(COIN).gif +$(error Unsupported COIN) endif -all: default - -# TODO: double check if all those flags are still relevant/needed (was copied from legacy app-bitcoin) +######################################## +# Application communication interfaces # +######################################## +ENABLE_BLUETOOTH = 1 -DEFINES += APPVERSION=\"$(APPVERSION)\" -DEFINES += MAJOR_VERSION=$(APPVERSION_M) MINOR_VERSION=$(APPVERSION_N) PATCH_VERSION=$(APPVERSION_P) -DEFINES += OS_IO_SEPROXYHAL -DEFINES += HAVE_BAGL HAVE_SPRINTF HAVE_SNPRINTF_FORMAT_U -DEFINES += HAVE_IO_USB HAVE_L4_USBLIB IO_USB_MAX_ENDPOINTS=4 IO_HID_EP_LENGTH=64 HAVE_USB_APDU -DEFINES += LEDGER_MAJOR_VERSION=$(APPVERSION_M) LEDGER_MINOR_VERSION=$(APPVERSION_N) LEDGER_PATCH_VERSION=$(APPVERSION_P) TCS_LOADER_PATCH_VERSION=0 -DEFINES += HAVE_UX_FLOW +######################################## +# NBGL custom features # +######################################## +ENABLE_NBGL_QRCODE = 1 -DEFINES += HAVE_WEBUSB WEBUSB_URL_SIZE_B=0 WEBUSB_URL="" +######################################## +# Features disablers # +######################################## +# Don't use standard app file to avoid conflicts for now +DISABLE_STANDARD_APP_FILES = 1 -DEFINES += UNUSED\(x\)=\(void\)x -DEFINES += APPVERSION=\"$(APPVERSION)\" +# Don't use default IO_SEPROXY_BUFFER_SIZE to use another +# value for NANOS for an unknown reason. +DISABLE_DEFAULT_IO_SEPROXY_BUFFER_SIZE = 1 DEFINES += HAVE_BOLOS_APP_STACK_CANARY - ifeq ($(TARGET_NAME),TARGET_NANOS) DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=72 DEFINES += HAVE_WALLET_ID_SDK else DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=300 -DEFINES += HAVE_BAGL BAGL_WIDTH=128 BAGL_HEIGHT=64 -DEFINES += HAVE_BAGL_ELLIPSIS # long label truncation feature -DEFINES += HAVE_BAGL_FONT_OPEN_SANS_REGULAR_11PX -DEFINES += HAVE_BAGL_FONT_OPEN_SANS_EXTRABOLD_11PX -DEFINES += HAVE_BAGL_FONT_OPEN_SANS_LIGHT_16PX -endif - -ifeq ($(TARGET_NAME),TARGET_NANOX) -DEFINES += HAVE_BLE BLE_COMMAND_TIMEOUT_MS=2000 -DEFINES += HAVE_BLE_APDU # basic ledger apdu transport over BLE endif ifeq ($(TARGET_NAME),TARGET_NANOS) # enables optimizations using the shared 1K CXRAM region DEFINES += USE_CXRAM_SECTION + # enables usage of the NVRAM to free up some RAM + DEFINES += USE_NVRAM_STASH endif # debugging helper functions and macros CFLAGS += -include debug-helpers/debug.h -# DEFINES += HAVE_PRINT_STACK_POINTER +# DEFINES += HAVE_PRINT_STACK_POINTER +# DEFINES += HAVE_LOG_PROCESSOR +# DEFINES += HAVE_APDU_LOG ifeq ($(TEST),1) $(warning On-device tests should only be run with Speculos!) - DEBUG_LOG_LEVEL = 10 - DEFINES += RUN_ON_DEVICE_TESTS -endif - -ifndef DEBUG_LOG_LEVEL - DEBUG_LOG_LEVEL = 0 -endif - -ifeq ($(DEBUG_LOG_LEVEL),0) - DEFINES += PRINTF\(...\)= -else - ifeq ($(DEBUG_LOG_LEVEL),10) - $(warning Using semihosted PRINTF. Only run with Speculos!) - DEFINES += HAVE_PRINTF HAVE_SEMIHOSTED_PRINTF PRINTF=semihosted_printf - #DEFINES += HAVE_LOG_PROCESSOR - #DEFINES += HAVE_APDU_LOG - #DEFINES += HAVE_PRINT_STACK_POINTER - else ifeq ($(DEBUG_LOG_LEVEL),11) - $(warning CCMD PRINTF is used! APDU exchage is affected.) - DEFINES += HAVE_CCMD_PRINTF - else - ifeq ($(TARGET_NAME),TARGET_NANOS) - DEFINES += HAVE_PRINTF PRINTF=screen_printf - else - DEFINES += HAVE_PRINTF PRINTF=mcu_usb_printf - endif - endif + DEFINES += RUN_ON_DEVICE_TESTS HAVE_PRINTF HAVE_SEMIHOSTED_PRINTF +else ifeq ($(DEBUG_LOG_LEVEL),10) + $(warning Using semihosted PRINTF. Only run with speculos!) + DEFINES += HAVE_PRINTF HAVE_SEMIHOSTED_PRINTF +else ifeq ($(DEBUG_LOG_LEVEL),11) + $(warning CCMD PRINTF is used! APDU exchage is affected.) + DEFINES += HAVE_CCMD_PRINTF endif - # Needed to be able to include the definition of G_cx INCLUDES_PATH += $(BOLOS_SDK)/lib_cxng/src - -ifneq ($(BOLOS_ENV),) -$(info BOLOS_ENV=$(BOLOS_ENV)) -CLANGPATH := $(BOLOS_ENV)/clang-arm-fropi/bin/ -GCCPATH := $(BOLOS_ENV)/gcc-arm-none-eabi-5_3-2016q1/bin/ -else -$(info BOLOS_ENV is not set: falling back to CLANGPATH and GCCPATH) -endif -ifeq ($(CLANGPATH),) -$(info CLANGPATH is not set: clang will be used from PATH) -endif -ifeq ($(GCCPATH),) -$(info GCCPATH is not set: arm-none-eabi-* will be used from PATH) -endif - -CC := $(CLANGPATH)clang -AS := $(GCCPATH)arm-none-eabi-gcc -LD := $(GCCPATH)arm-none-eabi-gcc -LDLIBS += -lm -lgcc -lc - -ifeq ($(DEBUG_LOG_LEVEL),0) - $(info *** Release version is being built ***) - CFLAGS += -Oz - LDFLAGS += -O3 -Os -else - $(info *** Debug version is being built ***) - CFLAGS += -Og -g - LDFLAGS += -Og -endif - -include $(BOLOS_SDK)/Makefile.glyphs - +# Application source files APP_SOURCE_PATH += src -SDK_SOURCE_PATH += lib_stusb lib_stusb_impl lib_ux - -ifeq ($(TARGET_NAME),TARGET_NANOX) - SDK_SOURCE_PATH += lib_blewbxx lib_blewbxx_impl -endif - -load: all - python3 -m ledgerblue.loadApp $(APP_LOAD_PARAMS) - -load-offline: all - python3 -m ledgerblue.loadApp $(APP_LOAD_PARAMS) --offline -load-no-build: - python3 -m ledgerblue.loadApp $(APP_LOAD_PARAMS) - -load-offline-no-build: - python3 -m ledgerblue.loadApp $(APP_LOAD_PARAMS) --offline - -delete: - python3 -m ledgerblue.deleteApp $(COMMON_DELETE_PARAMS) - -include $(BOLOS_SDK)/Makefile.rules - -dep/%.d: %.c Makefile - - -# Temporary restriction until we a Resistance Nano X icon -ifeq ($(TARGET_NAME),TARGET_NANOS) -listvariants: - @echo VARIANTS COIN bitcoin_testnet bitcoin bitcoin_cash bitcoin_gold litecoin dogecoin dash zcash horizen komodo stratis peercoin pivx viacoin vertcoin stealth digibyte qtum bitcoin_private firo gamecredits zclassic xsn nix lbry ravencoin resistance hydra hydra_testnet xrhodium -else -listvariants: - @echo VARIANTS COIN bitcoin_testnet bitcoin bitcoin_cash bitcoin_gold litecoin dogecoin dash zcash horizen komodo stratis peercoin pivx viacoin vertcoin stealth digibyte qtum bitcoin_private firo gamecredits zclassic xsn nix lbry ravencoin hydra hydra_testnet xrhodium -endif +# Allow usage of function from lib_standard_app/crypto_helpers.c +APP_SOURCE_FILES += ${BOLOS_SDK}/lib_standard_app/crypto_helpers.c +include $(BOLOS_SDK)/Makefile.standard_app # Makes a detailed report of code and data size in debug/size-report.txt # More useful for production builds with DEBUG=0 diff --git a/README.md b/README.md index 07b3b3564..6ae34cd42 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ the process outputs HTML and LaTeX documentations in `doc/html` and `doc/latex` ## Client libraries -A [Python client library](bitcoin_client) and a [TypeScript client library](bitcoin_client_js) are available in this repository. +A [Python client library](bitcoin_client), a [TypeScript client library](bitcoin_client_js) and a [Rust client library](bitcoin_client_rs) are available in this repository. ## Tests & Continuous Integration diff --git a/bitcoin_client/.gitignore b/bitcoin_client/.gitignore index 0021b4fb3..108413e8c 100644 --- a/bitcoin_client/.gitignore +++ b/bitcoin_client/.gitignore @@ -1 +1,2 @@ -dist/** \ No newline at end of file +dist/** +**/.venv diff --git a/bitcoin_client/CHANGELOG.md b/bitcoin_client/CHANGELOG.md index 70da3dc6b..baf9065cd 100644 --- a/bitcoin_client/CHANGELOG.md +++ b/bitcoin_client/CHANGELOG.md @@ -7,6 +7,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Dates are in `dd-mm-yyyy` format. +## [0.2.1] - 18-04-2023 + +### Changed +- Avoid using miniscript policies containing an `a:` fragment on versions below `2.1.2` of the bitcoin app. + +## [0.2.0] - 3-04-2023 + +This release introduces a breaking change in the return type of the `sign_psbt`method. + +### Added +- Added new `PartialSignature` data class together with support for taproot script signing, which is supported in version `2.1.2` of the bitcoin app. + +## [0.1.2] - 09-01-2023 + +### Fixed +- Added missing dependency. + +## [0.1.1] - 26-10-2022 + +### Changed + +- Improved interface of TransportClient for better interoperability with HID. +- `sign_psbt` now accepts the psbt to be passed as `bytes` or `str`. + +## [0.1.0] - 18-10-2022 + +### Changed + +Upgraded library to version 2.1.0 of the app. + ## [0.0.3] - 25-04-2022 ### Changed diff --git a/bitcoin_client/README.md b/bitcoin_client/README.md index 817b3c730..3183a9a8a 100644 --- a/bitcoin_client/README.md +++ b/bitcoin_client/README.md @@ -35,7 +35,7 @@ It is possible to run the app and the library with the [speculos](https://github ⚠️ Currently, speculos does not correctly emulate the version of the app, always returning a dummy value; in order to use the library, it is necessary to set the `SPECULOS_APPNAME` environment variable before starting speculos, for example with: ``` -$ export SPECULOS_APPNAME="Bitcoin Test:2.0.0" +$ export SPECULOS_APPNAME="Bitcoin Test:2.1.0" ``` Similarly, to test the library behavior on a legacy version of the app, one can set the version to `1.6.5` (the final version of the 1.X series). @@ -53,7 +53,7 @@ Testing the `sign_psbt` method requires producing a valid PSBT (with any externa ```python from typing import Optional -from ledger_bitcoin import createClient, Chain, MultisigWallet, MultisigWallet, PolicyMapWallet, AddressType, TransportClient +from ledger_bitcoin import createClient, Chain, MultisigWallet, MultisigWallet, WalletPolicy, AddressType, TransportClient from ledger_bitcoin.psbt import PSBT @@ -71,11 +71,11 @@ def main(): # ==> Get and display on screen the first taproot address first_taproot_account_pubkey = client.get_extended_pubkey("m/86'/1'/0'") - first_taproot_account_policy = PolicyMapWallet( + first_taproot_account_policy = WalletPolicy( "", - "tr(@0)", + "tr(@0/**)", [ - f"[{fpr}/86'/1'/0']{first_taproot_account_pubkey}/**" + f"[{fpr}/86'/1'/0']{first_taproot_account_pubkey}" ], ) first_taproot_account_address = client.get_wallet_address( @@ -91,15 +91,15 @@ def main(): # ==> Register a multisig wallet named "Cold storage" our_pubkey = client.get_extended_pubkey("m/48'/1'/0'/2'") - other_key_info = "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF/**" + other_key_info = "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF" multisig_policy = MultisigWallet( name="Cold storage", address_type=AddressType.WIT, threshold=2, keys_info=[ - other_key_info, # some other bitcoiner - f"[{fpr}/48'/1'/0'/2']{our_pubkey}/**", # that's us + other_key_info, # some other bitcoiner + f"[{fpr}/48'/1'/0'/2']{our_pubkey}", # that's us ], ) @@ -118,7 +118,7 @@ def main(): # TODO: set a wallet policy and a valid psbt file in order to test psbt signing psbt_filename: Optional[str] = None - signing_policy: Optional[PolicyMapWallet] = None + signing_policy: Optional[WalletPolicy] = None signing_policy_hmac: Optional[bytes] = None if not psbt_filename or not signing_policy: print("Nothing to sign :(") diff --git a/bitcoin_client/ledger_bitcoin/__init__.py b/bitcoin_client/ledger_bitcoin/__init__.py index 52038368b..7c52114cf 100644 --- a/bitcoin_client/ledger_bitcoin/__init__.py +++ b/bitcoin_client/ledger_bitcoin/__init__.py @@ -1,10 +1,22 @@ """Ledger Nano Bitcoin app client""" -from .client_base import Client, TransportClient +from .client_base import Client, TransportClient, PartialSignature from .client import createClient from .common import Chain -from .wallet import AddressType, Wallet, MultisigWallet, PolicyMapWallet, BlindedWallet, BlindedMultisigWallet +from .wallet import AddressType, WalletPolicy, MultisigWallet, WalletType, WalletPolicy, BlindedWallet, BlindedMultisigWallet -__all__ = ["Client", "TransportClient", "createClient", "Chain", "AddressType", "Wallet", "MultisigWallet", "PolicyMapWallet"] +__version__ = '0.3.0' + +__all__ = [ + "Client", + "TransportClient", + "PartialSignature", + "createClient", + "Chain", + "AddressType", + "WalletPolicy", + "MultisigWallet", + "WalletType" +] diff --git a/bitcoin_client/ledger_bitcoin/btchip/btchipHelpers.py b/bitcoin_client/ledger_bitcoin/btchip/btchipHelpers.py index ba5b66c5f..bb74cd56b 100644 --- a/bitcoin_client/ledger_bitcoin/btchip/btchipHelpers.py +++ b/bitcoin_client/ledger_bitcoin/btchip/btchipHelpers.py @@ -21,8 +21,8 @@ import re # from pycoin -SATOSHI_PER_COIN = decimal.Decimal(1e8) -COIN_PER_SATOSHI = decimal.Decimal(1)/SATOSHI_PER_COIN +SATOSHI_PER_COIN = decimal.Decimal(100_000_000) +COIN_PER_SATOSHI = decimal.Decimal('0.00000001') def satoshi_to_btc(satoshi_count): if satoshi_count == 0: diff --git a/bitcoin_client/ledger_bitcoin/client.py b/bitcoin_client/ledger_bitcoin/client.py index 8d810a454..8e3ced614 100644 --- a/bitcoin_client/ledger_bitcoin/client.py +++ b/bitcoin_client/ledger_bitcoin/client.py @@ -1,16 +1,23 @@ +from packaging.version import parse as parse_version from typing import Tuple, List, Mapping, Optional, Union import base64 from io import BytesIO, BufferedReader +from .embit.base import EmbitError +from .embit.descriptor import Descriptor +from .embit.networks import NETWORKS + from .command_builder import BitcoinCommandBuilder, BitcoinInsType -from .common import Chain, read_varint +from .common import Chain, read_uint, read_varint from .client_command import ClientCommandInterpreter, ClientCommandCode -from .client_base import Client, TransportClient +from .client_base import Client, TransportClient, PartialSignature from .client_legacy import LegacyClient from .exception import DeviceException +from .errors import UnknownDeviceError from .merkle import get_merkleized_map_commitment -from .wallet import Wallet, WalletType, PolicyMapWallet -from .psbt import PSBT +from .wallet import WalletPolicy, WalletType +from .psbt import PSBT, normalize_psbt +from . import segwit_addr from ._serialize import deser_string @@ -32,6 +39,23 @@ def parse_stream_to_map(f: BufferedReader) -> Mapping[bytes, bytes]: return result +def _make_partial_signature(pubkey_augm: bytes, signature: bytes) -> PartialSignature: + if len(pubkey_augm) == 64: + # tapscript spend: pubkey_augm is the concatenation of: + # - a 32-byte x-only pubkey + # - the 32-byte tapleaf_hash + return PartialSignature(signature=signature, pubkey=pubkey_augm[0:32], tapleaf_hash=pubkey_augm[32:]) + + else: + # either legacy, segwit or taproot keypath spend + # pubkey must be 32 (taproot x-only pubkey) or 33 bytes (compressed pubkey) + + if len(pubkey_augm) not in [32, 33]: + raise UnknownDeviceError(f"Invalid pubkey length returned: {len(pubkey_augm)}") + + return PartialSignature(signature=signature, pubkey=pubkey_augm) + + class NewClient(Client): # internal use for testing: if set to True, sign_psbt will not clone the psbt before converting to psbt version 2 _no_clone_psbt: bool = False @@ -69,14 +93,17 @@ def get_extended_pubkey(self, path: str, display: bool = False) -> str: return response.decode() - def register_wallet(self, wallet: Wallet) -> Tuple[bytes, bytes]: - if wallet.type != WalletType.POLICYMAP: - raise ValueError("wallet type must be POLICYMAP") + def register_wallet(self, wallet: WalletPolicy) -> Tuple[bytes, bytes]: + if wallet.version not in [WalletType.WALLET_POLICY_V1, WalletType.WALLET_POLICY_V2]: + raise ValueError("invalid wallet policy version") client_intepreter = ClientCommandInterpreter() client_intepreter.add_known_preimage(wallet.serialize()) client_intepreter.add_known_list([k.encode() for k in wallet.keys_info]) + # necessary for version 1 of the protocol (introduced in version 2.1.0) + client_intepreter.add_known_preimage(wallet.descriptor_template.encode()) + sw, response = self._make_request( self.builder.register_wallet(wallet), client_intepreter ) @@ -90,21 +117,25 @@ def register_wallet(self, wallet: Wallet) -> Tuple[bytes, bytes]: wallet_id = response[0:32] wallet_hmac = response[32:64] + # sanity check: for miniscripts, derive the first address independently with python-bip380 + first_addr_device = self.get_wallet_address(wallet, wallet_hmac, 0, 0, False) + + if first_addr_device != self._derive_address_for_policy(wallet, False, 0): + raise RuntimeError("Invalid address. Please update your Bitcoin app. If the problem persists, report a bug at https://github.com/LedgerHQ/app-bitcoin-new") + return wallet_id, wallet_hmac def get_wallet_address( self, - wallet: Wallet, + wallet: WalletPolicy, wallet_hmac: Optional[bytes], change: int, address_index: int, display: bool, ) -> str: - if wallet.type != WalletType.POLICYMAP or not isinstance( - wallet, PolicyMapWallet - ): - raise ValueError("wallet type must be POLICYMAP") + if not isinstance(wallet, WalletPolicy) or wallet.version not in [WalletType.WALLET_POLICY_V1, WalletType.WALLET_POLICY_V2]: + raise ValueError("wallet type must be WalletPolicy, with version either WALLET_POLICY_V1 or WALLET_POLICY_V2") if change != 0 and change != 1: raise ValueError("Invalid change") @@ -113,6 +144,9 @@ def get_wallet_address( client_intepreter.add_known_list([k.encode() for k in wallet.keys_info]) client_intepreter.add_known_preimage(wallet.serialize()) + # necessary for version 1 of the protocol (introduced in version 2.1.0) + client_intepreter.add_known_preimage(wallet.descriptor_template.encode()) + sw, response = self._make_request( self.builder.get_wallet_address( wallet, wallet_hmac, address_index, change, display @@ -123,32 +157,19 @@ def get_wallet_address( if sw != 0x9000: raise DeviceException(error_code=sw, ins=BitcoinInsType.GET_WALLET_ADDRESS) - return response.decode() + result = response.decode() - def sign_psbt(self, psbt: PSBT, wallet: Wallet, wallet_hmac: Optional[bytes]) -> Mapping[int, bytes]: - """Signs a PSBT using a registered wallet (or a standard wallet that does not need registration). + # sanity check: for miniscripts, derive the address independently with python-bip380 - Signature requires explicit approval from the user. + if result != self._derive_address_for_policy(wallet, change, address_index): + raise RuntimeError("Invalid address. Please update your Bitcoin app. If the problem persists, report a bug at https://github.com/LedgerHQ/app-bitcoin-new") - Parameters - ---------- - psbt : PSBT - A PSBT of version 0 or 2, with all the necessary information to sign the inputs already filled in; what the - required fields changes depending on the type of input. - The non-witness UTXO must be present for both legacy and SegWit inputs, or the hardware wallet will reject - signing. This is not required for Taproot inputs. + return result - wallet : Wallet - The registered wallet policy, or a standard wallet policy. + def sign_psbt(self, psbt: Union[PSBT, bytes, str], wallet: WalletPolicy, wallet_hmac: Optional[bytes]) -> List[Tuple[int, PartialSignature]]: - wallet_hmac: Optional[bytes] - For a registered wallet, the hmac obtained at wallet registration. `None` for a standard wallet policy. + psbt = normalize_psbt(psbt) - Returns - ------- - Mapping[int, bytes] - A mapping that has as keys the indexes of inputs that the Hardware Wallet signed, and the corresponding signatures as values. - """ if psbt.version != 2: if self._no_clone_psbt: psbt.convert_to_v2() @@ -173,6 +194,9 @@ def sign_psbt(self, psbt: PSBT, wallet: Wallet, wallet_hmac: Optional[bytes]) -> client_intepreter.add_known_list([k.encode() for k in wallet.keys_info]) client_intepreter.add_known_preimage(wallet.serialize()) + # necessary for version 1 of the protocol (introduced in version 2.1.0) + client_intepreter.add_known_preimage(wallet.descriptor_template.encode()) + global_map: Mapping[bytes, bytes] = parse_stream_to_map(f) client_intepreter.add_known_mapping(global_map) @@ -211,18 +235,19 @@ def sign_psbt(self, psbt: PSBT, wallet: Wallet, wallet_hmac: Optional[bytes]) -> if any(len(x) <= 1 for x in results): raise RuntimeError("Invalid response") - results_map = {} + results_list: List[Tuple[int, PartialSignature]] = [] for res in results: res_buffer = BytesIO(res) input_index = read_varint(res_buffer) - signature = res_buffer.read() - if input_index in results_map: - raise RuntimeError(f"Multiple signatures produced for the same input: {input_index}") + pubkey_augm_len = read_uint(res_buffer, 8) + pubkey_augm = res_buffer.read(pubkey_augm_len) + + signature = res_buffer.read() - results_map[input_index] = signature + results_list.append((input_index, _make_partial_signature(pubkey_augm, signature))) - return results_map + return results_list def get_master_fingerprint(self) -> bytes: sw, response = self._make_request(self.builder.get_master_fingerprint()) @@ -265,6 +290,16 @@ def liquid_get_blinding_key(self, script: bytes) -> bytes: raise DeviceException(error_code=sw, ins=BitcoinInsType.LIQUID_GET_BLINDING_KEY) return response + def _derive_address_for_policy(self, wallet: WalletPolicy, change: bool, address_index: int) -> Optional[str]: + desc_str = wallet.get_descriptor(change) + try: + desc = Descriptor.from_string(desc_str) + + desc = desc.derive(address_index) + net = NETWORKS['main'] if self.chain == Chain.MAIN else NETWORKS['test'] + return desc.script_pubkey().address(net) + except EmbitError: + return None def createClient(comm_client: Optional[TransportClient] = None, chain: Chain = Chain.MAIN, debug: bool = False) -> Union[LegacyClient, NewClient]: @@ -272,8 +307,16 @@ def createClient(comm_client: Optional[TransportClient] = None, chain: Chain = C comm_client = TransportClient("hid") base_client = Client(comm_client, chain, debug) - _, app_version, _ = base_client.get_version() - if app_version >= "2": - return NewClient(comm_client, chain, debug) - else: + app_name, app_version, _ = base_client.get_version() + + version = parse_version(app_version) + + # Use the legacy client if either: + # - the name of the app is "Bitcoin Legacy" or "Bitcoin Test Legacy" (regardless of the version) + # - the version is strictly less than 2.1 + use_legacy = app_name in ["Bitcoin Legacy", "Bitcoin Test Legacy"] or version.major < 2 or (version.major == 2 and version.minor == 0) + + if use_legacy: return LegacyClient(comm_client, chain, debug) + else: + return NewClient(comm_client, chain, debug) diff --git a/bitcoin_client/ledger_bitcoin/client_base.py b/bitcoin_client/ledger_bitcoin/client_base.py index cdcb7c333..1b69f93d1 100644 --- a/bitcoin_client/ledger_bitcoin/client_base.py +++ b/bitcoin_client/ledger_bitcoin/client_base.py @@ -1,14 +1,17 @@ -from typing import Tuple, Mapping, Optional, Union, Literal +from dataclasses import dataclass +from typing import List, Tuple, Optional, Union, Literal from io import BytesIO -from ledgercomm import Transport +from ledgercomm.interfaces.hid_device import HID + +from .transport import Transport from .common import Chain from .command_builder import DefaultInsType from .exception import DeviceException -from .wallet import Wallet +from .wallet import WalletPolicy from .psbt import PSBT from ._serialize import deser_string @@ -24,8 +27,8 @@ def __init__(self, sw: int, data: bytes) -> None: class TransportClient: - def __init__(self, interface: Literal['hid', 'tcp'] = "tcp", server: str = "127.0.0.1", port: int = 9999, debug: bool = False): - self.transport = Transport('hid', debug=debug) if interface == 'hid' else Transport(interface, server, port, debug) + def __init__(self, interface: Literal['hid', 'tcp'] = "tcp", *, server: str = "127.0.0.1", port: int = 9999, path: Optional[str] = None, hid: Optional[HID] = None, debug: bool = False): + self.transport = Transport('hid', path=path, hid=hid, debug=debug) if interface == 'hid' else Transport(interface, server=server, port=port, debug=debug) def apdu_exchange( self, cla: int, ins: int, data: bytes = b"", p1: int = 0, p2: int = 0 @@ -45,6 +48,7 @@ def apdu_exchange_nowait( def stop(self) -> None: self.transport.close() + def print_apdu(apdu_dict: dict) -> None: serialized_apdu = b''.join([ apdu_dict["cla"].to_bytes(1, byteorder='big'), @@ -56,10 +60,25 @@ def print_apdu(apdu_dict: dict) -> None: ]) print(f"=> {serialized_apdu.hex()}") + def print_response(sw: int, data: bytes) -> None: print(f"<= {data.hex()}{sw.to_bytes(2, byteorder='big').hex()}") +@dataclass(frozen=True) +class PartialSignature: + """Represents a partial signature returned by sign_psbt. + + It always contains a pubkey and a signature. + The pubkey + + The tapleaf_hash is also filled if signing a for a tapscript. + """ + pubkey: bytes + signature: bytes + tapleaf_hash: Optional[bytes] = None + + class Client: def __init__(self, transport_client: TransportClient, chain: Chain = Chain.MAIN, debug: bool = False) -> None: self.transport_client = transport_client @@ -146,12 +165,12 @@ def get_extended_pubkey(self, path: str, display: bool = False) -> str: raise NotImplementedError - def register_wallet(self, wallet: Wallet) -> Tuple[bytes, bytes]: + def register_wallet(self, wallet: WalletPolicy) -> Tuple[bytes, bytes]: """Registers a wallet policy with the user. After approval returns the wallet id and hmac to be stored on the client. Parameters ---------- - wallet : Wallet + wallet : WalletPolicy The Wallet policy to register on the device. Returns @@ -165,7 +184,7 @@ def register_wallet(self, wallet: Wallet) -> Tuple[bytes, bytes]: def get_wallet_address( self, - wallet: Wallet, + wallet: WalletPolicy, wallet_hmac: Optional[bytes], change: int, address_index: int, @@ -176,7 +195,7 @@ def get_wallet_address( Parameters ---------- - wallet : Wallet + wallet : WalletPolicy The registered wallet policy, or a standard wallet policy. wallet_hmac: Optional[bytes] @@ -199,20 +218,21 @@ def get_wallet_address( raise NotImplementedError - def sign_psbt(self, psbt: PSBT, wallet: Wallet, wallet_hmac: Optional[bytes]) -> Mapping[int, bytes]: + def sign_psbt(self, psbt: Union[PSBT, bytes, str], wallet: WalletPolicy, wallet_hmac: Optional[bytes]) -> List[Tuple[int, PartialSignature]]: """Signs a PSBT using a registered wallet (or a standard wallet that does not need registration). Signature requires explicit approval from the user. Parameters ---------- - psbt : PSBT + psbt : PSBT | bytes | str A PSBT of version 0 or 2, with all the necessary information to sign the inputs already filled in; what the required fields changes depending on the type of input. The non-witness UTXO must be present for both legacy and SegWit inputs, or the hardware wallet will reject signing (this will change for Taproot inputs). + The argument can be either a `PSBT` object, or `bytes`, or a base64-encoded `str`. - wallet : Wallet + wallet : WalletPolicy The registered wallet policy, or a standard wallet policy. wallet_hmac: Optional[bytes] @@ -220,8 +240,10 @@ def sign_psbt(self, psbt: PSBT, wallet: Wallet, wallet_hmac: Optional[bytes]) -> Returns ------- - Mapping[int, bytes] - A mapping that has as keys the indexes of inputs that the Hardware Wallet signed, and the corresponding signatures as values. + List[Tuple[int, PartialSignature]] + A list of tuples returned by the hardware wallets, where each element is a tuple of: + - an integer, the index of the input being signed; + - an instance of `PartialSignature`. """ raise NotImplementedError diff --git a/bitcoin_client/ledger_bitcoin/client_command.py b/bitcoin_client/ledger_bitcoin/client_command.py index 5a50a2fb5..c7a158a1a 100644 --- a/bitcoin_client/ledger_bitcoin/client_command.py +++ b/bitcoin_client/ledger_bitcoin/client_command.py @@ -247,8 +247,8 @@ def __init__(self): self.commands = {cmd.code: cmd for cmd in commands} def execute(self, hw_response: bytes) -> bytes: - """Interprets the client command requested by the hardware wallet, returning the appropriet - response and updating the client interpreter's internal state if appropriate. + """Interprets the client command requested by the hardware wallet, returning the appropriate + response and updating the client interpreter's internal state if needed. Parameters ---------- diff --git a/bitcoin_client/ledger_bitcoin/client_legacy.py b/bitcoin_client/ledger_bitcoin/client_legacy.py index 32101e115..1f21a922a 100644 --- a/bitcoin_client/ledger_bitcoin/client_legacy.py +++ b/bitcoin_client/ledger_bitcoin/client_legacy.py @@ -10,14 +10,15 @@ import re import base64 +from .client_base import PartialSignature from .client import Client, TransportClient -from typing import List, Tuple, Mapping, Optional, Union +from typing import List, Tuple, Optional, Union from .common import AddressType, Chain, hash160 from .key import ExtendedKey, parse_path -from .psbt import PSBT -from .wallet import Wallet, PolicyMapWallet +from .psbt import PSBT, normalize_psbt +from .wallet import WalletPolicy from ._script import is_p2sh, is_witness, is_p2wpkh, is_p2wsh @@ -26,12 +27,12 @@ from .btchip.bitcoinTransaction import bitcoinTransaction -def get_address_type_for_policy(policy: PolicyMapWallet) -> AddressType: - if policy.policy_map == "pkh(@0)": +def get_address_type_for_policy(policy: WalletPolicy) -> AddressType: + if policy.descriptor_template in ["pkh(@0/**)", "pkh(@0/<0;1>/*)"]: return AddressType.LEGACY - elif policy.policy_map == "wpkh(@0)": + elif policy.descriptor_template in ["wpkh(@0/**)", "wpkh(@0/<0:1>/*)"]: return AddressType.WIT - elif policy.policy_map == "sh(wpkh(@0))": + elif policy.descriptor_template in ["sh(wpkh(@0/**))", "sh(wpkh(@0/<0;1>/*))"]: return AddressType.SH_WIT else: raise ValueError("Invalid or unsupported policy") @@ -76,7 +77,7 @@ def __init__(self, comm_client: TransportClient, chain: Chain = Chain.MAIN, debu self.app = btchip(DongleAdaptor(comm_client)) - if self.app.getAppName() not in ["Bitcoin", "Bitcoin Test", "app"]: + if self.app.getAppName() not in ["Bitcoin", "Bitcoin Legacy", "Bitcoin Test", "Bitcoin Test Legacy", "app"]: raise ValueError("Ledger is not in either the Bitcoin or Bitcoin Testnet app") def get_extended_pubkey(self, path: str, display: bool = False) -> str: @@ -116,12 +117,12 @@ def get_extended_pubkey(self, path: str, display: bool = False) -> str: ) return xpub.to_string() - def register_wallet(self, wallet: Wallet) -> Tuple[bytes, bytes]: - raise NotImplementedError # legacy app does not have this functionality + def register_wallet(self, wallet: WalletPolicy) -> Tuple[bytes, bytes]: + raise NotImplementedError # legacy app does not have this functionality def get_wallet_address( self, - wallet: Wallet, + wallet: WalletPolicy, wallet_hmac: Optional[bytes], change: int, address_index: int, @@ -129,11 +130,11 @@ def get_wallet_address( ) -> str: # TODO: check keypath - if wallet_hmac != None or wallet.n_keys != 1: + if wallet_hmac is not None or wallet.n_keys != 1: raise NotImplementedError("Policy wallets are only supported from version 2.0.0. Please update your Ledger hardware wallet") - if not isinstance(wallet, PolicyMapWallet): - raise ValueError("Invalid wallet policy type, it must be PolicyMapWallet") + if not isinstance(wallet, WalletPolicy): + raise ValueError("Invalid wallet policy type, it must be WalletPolicy") key_info = wallet.keys_info[0] try: @@ -153,18 +154,20 @@ def get_wallet_address( bech32 = addr_type == AddressType.WIT output = self.app.getWalletPublicKey(f"{key_origin_path}/{change}/{address_index}", display, p2sh_p2wpkh or bech32, bech32) assert isinstance(output["address"], str) - return output['address'][12:-2] # HACK: A bug in getWalletPublicKey results in the address being returned as the string "bytearray(b'
')". This extracts the actual address to work around this. + return output['address'][12:-2] # HACK: A bug in getWalletPublicKey results in the address being returned as the string "bytearray(b'
')". This extracts the actual address to work around this. - def sign_psbt(self, psbt: PSBT, wallet: Wallet, wallet_hmac: Optional[bytes]) -> Mapping[int, bytes]: - if wallet_hmac != None or wallet.n_keys != 1: + def sign_psbt(self, psbt: Union[PSBT, bytes, str], wallet: WalletPolicy, wallet_hmac: Optional[bytes]) -> List[Tuple[int, PartialSignature]]: + if wallet_hmac is not None or wallet.n_keys != 1: raise NotImplementedError("Policy wallets are only supported from version 2.0.0. Please update your Ledger hardware wallet") - if not isinstance(wallet, PolicyMapWallet): - raise ValueError("Invalid wallet policy type, it must be PolicyMapWallet") + if not isinstance(wallet, WalletPolicy): + raise ValueError("Invalid wallet policy type, it must be WalletPolicy") - if not wallet.policy_map in ['pkh(@0)', 'wpkh(@0)', 'sh(wpkh(@0))']: + if wallet.descriptor_template not in ["pkh(@0/**)", "pkh(@0/<0;1>/*)", "wpkh(@0/**)", "wpkh(@0/<0;1>/*)", "sh(wpkh(@0/**))", "sh(wpkh(@0/<0;1>/*))"]: raise NotImplementedError("Unsupported policy") + psbt = normalize_psbt(psbt) + # the rest of the code is basically the HWI code, and it ignores wallet tx = psbt @@ -278,7 +281,7 @@ def sign_psbt(self, psbt: PSBT, wallet: Wallet, wallet_hmac: Optional[bytes]) -> all_signature_attempts[i_num] = signature_attempts - result = {} + result: List[Tuple[int, PartialSignature]] = [] # Sign any segwit inputs if has_segwit: @@ -296,22 +299,32 @@ def sign_psbt(self, psbt: PSBT, wallet: Wallet, wallet_hmac: Optional[bytes]) -> self.app.startUntrustedTransaction(False, 0, [segwit_inputs[i]], script_codes[i], c_tx.nVersion) # tx.inputs[i].partial_sigs[signature_attempt[1]] = self.app.untrustedHashSign(signature_attempt[0], "", c_tx.nLockTime, 0x01) - result[i] = self.app.untrustedHashSign(signature_attempt[0], "", c_tx.nLockTime, 0x01) + + partial_sig = PartialSignature( + signature=self.app.untrustedHashSign(signature_attempt[0], "", c_tx.nLockTime, 0x01), + pubkey=signature_attempt[1] + ) + result.append((i, partial_sig)) elif has_legacy: first_input = True # Legacy signing if all inputs are legacy for i in range(len(legacy_inputs)): for signature_attempt in all_signature_attempts[i]: - assert(tx.inputs[i].non_witness_utxo is not None) + assert (tx.inputs[i].non_witness_utxo is not None) self.app.startUntrustedTransaction(first_input, i, legacy_inputs, script_codes[i], c_tx.nVersion) self.app.finalizeInput(b"DUMMY", -1, -1, change_path, tx_bytes) #tx.inputs[i].partial_sigs[signature_attempt[1]] = self.app.untrustedHashSign(signature_attempt[0], "", c_tx.nLockTime, 0x01) - result[i] = self.app.untrustedHashSign(signature_attempt[0], "", c_tx.nLockTime, 0x01) + + partial_sig = PartialSignature( + signature=self.app.untrustedHashSign(signature_attempt[0], "", c_tx.nLockTime, 0x01), + pubkey=signature_attempt[1] + ) + result.append((i, partial_sig)) first_input = False - # Send map of input signatures + # Send list of input signatures return result def get_master_fingerprint(self) -> bytes: diff --git a/bitcoin_client/ledger_bitcoin/command_builder.py b/bitcoin_client/ledger_bitcoin/command_builder.py index 2d062bab0..e79e111c0 100644 --- a/bitcoin_client/ledger_bitcoin/command_builder.py +++ b/bitcoin_client/ledger_bitcoin/command_builder.py @@ -1,10 +1,12 @@ import enum from typing import List, Tuple, Mapping, Union, Iterator, Optional -from .common import bip32_path_from_string, AddressType, sha256, hash256, write_varint +from .common import bip32_path_from_string, write_varint from .merkle import get_merkleized_map_commitment, MerkleTree, element_hash -from .wallet import Wallet +from .wallet import WalletPolicy +# p2 encodes the protocol version implemented +CURRENT_PROTOCOL_VERSION = 1 def chunkify(data: bytes, chunk_len: int) -> Iterator[Tuple[bool, bytes]]: size: int = len(data) @@ -54,7 +56,7 @@ def serialize( cla: int, ins: Union[int, enum.IntEnum], p1: int = 0, - p2: int = 0, + p2: int = CURRENT_PROTOCOL_VERSION, cdata: bytes = b"", ) -> dict: """Serialize the whole APDU command (header + data). @@ -96,7 +98,7 @@ def get_extended_pubkey(self, bip32_path: str, display: bool = False): cdata=cdata, ) - def register_wallet(self, wallet: Wallet): + def register_wallet(self, wallet: WalletPolicy): wallet_bytes = wallet.serialize() return self.serialize( @@ -107,7 +109,7 @@ def register_wallet(self, wallet: Wallet): def get_wallet_address( self, - wallet: Wallet, + wallet: WalletPolicy, wallet_hmac: Optional[bytes], address_index: int, change: bool, @@ -134,7 +136,7 @@ def sign_psbt( global_mapping: Mapping[bytes, bytes], input_mappings: List[Mapping[bytes, bytes]], output_mappings: List[Mapping[bytes, bytes]], - wallet: Wallet, + wallet: WalletPolicy, wallet_hmac: Optional[bytes], ): diff --git a/bitcoin_client/ledger_bitcoin/common.py b/bitcoin_client/ledger_bitcoin/common.py index c46cda68b..66ad38f07 100644 --- a/bitcoin_client/ledger_bitcoin/common.py +++ b/bitcoin_client/ledger_bitcoin/common.py @@ -103,15 +103,6 @@ def read_varint(buf: BytesIO, return int.from_bytes(b, byteorder="little") -def read(buf: BytesIO, size: int) -> bytes: - b: bytes = buf.read(size) - - if len(b) < size: - raise ValueError(f"Cant read {size} bytes in buffer!") - - return b - - def read_uint(buf: BytesIO, bit_len: int, byteorder: Literal['big', 'little'] = 'little') -> int: @@ -125,14 +116,19 @@ def read_uint(buf: BytesIO, def serialize_str(value: str) -> bytes: - return len(value).to_bytes(1, byteorder="big") + value.encode("latin-1") + return len(value.encode()).to_bytes(1, byteorder="big") + value.encode() def ripemd160(x: bytes) -> bytes: - h = hashlib.new("ripemd160") - h.update(x) - return h.digest() - + try: + h = hashlib.new("ripemd160") + h.update(x) + return h.digest() + except BaseException: + # ripemd160 is not always present in hashlib. + # Fallback to custom implementation if missing. + from . import ripemd + return ripemd.ripemd160(x) def sha256(s: bytes) -> bytes: return hashlib.new('sha256', s).digest() diff --git a/bitcoin_client/ledger_bitcoin/descriptor.py b/bitcoin_client/ledger_bitcoin/descriptor.py deleted file mode 100644 index ef85e8f55..000000000 --- a/bitcoin_client/ledger_bitcoin/descriptor.py +++ /dev/null @@ -1,633 +0,0 @@ - -""" -Original version: https://github.com/bitcoin-core/HWI/blob/3fe369d0379212fae1c72729a179d133b0adc872/hwilib/descriptor.py -Distributed under the MIT License. - -Output Script Descriptors -************************* - - -HWI has a more limited implementation of descriptors. -See `Bitcoin Core's documentation `_ for more details on descriptors. - -This implementation only supports ``sh()``, ``wsh()``, ``pkh()``, ``wpkh()``, ``multi()``, and ``sortedmulti()`` descriptors. -Descriptors can be parsed, however the actual scripts are not generated. -""" - - -from .key import ExtendedKey, KeyOriginInfo, parse_path -from .common import hash160, sha256 - -from binascii import unhexlify -from collections import namedtuple -from enum import Enum -from typing import ( - List, - Optional, - Tuple, -) - - -MAX_TAPROOT_NODES = 128 - - -ExpandedScripts = namedtuple("ExpandedScripts", ["output_script", "redeem_script", "witness_script"]) - -def PolyMod(c: int, val: int) -> int: - """ - :meta private: - Function to compute modulo over the polynomial used for descriptor checksums - From: https://github.com/bitcoin/bitcoin/blob/master/src/script/descriptor.cpp - """ - c0 = c >> 35 - c = ((c & 0x7ffffffff) << 5) ^ val - if (c0 & 1): - c ^= 0xf5dee51989 - if (c0 & 2): - c ^= 0xa9fdca3312 - if (c0 & 4): - c ^= 0x1bab10e32d - if (c0 & 8): - c ^= 0x3706b1677a - if (c0 & 16): - c ^= 0x644d626ffd - return c - -def DescriptorChecksum(desc: str) -> str: - """ - Compute the checksum for a descriptor - :param desc: The descriptor string to compute a checksum for - :return: A checksum - """ - INPUT_CHARSET = "0123456789()[],'/*abcdefgh@:$%{}IJKLMNOPQRSTUVWXYZ&+-.;<=>?!^_|~ijklmnopqrstuvwxyzABCDEFGH`#\"\\ " - CHECKSUM_CHARSET = "qpzry9x8gf2tvdw0s3jn54khce6mua7l" - - c = 1 - cls = 0 - clscount = 0 - for ch in desc: - pos = INPUT_CHARSET.find(ch) - if pos == -1: - return "" - c = PolyMod(c, pos & 31) - cls = cls * 3 + (pos >> 5) - clscount += 1 - if clscount == 3: - c = PolyMod(c, cls) - cls = 0 - clscount = 0 - if clscount > 0: - c = PolyMod(c, cls) - for j in range(0, 8): - c = PolyMod(c, 0) - c ^= 1 - - ret = [''] * 8 - for j in range(0, 8): - ret[j] = CHECKSUM_CHARSET[(c >> (5 * (7 - j))) & 31] - return ''.join(ret) - -def AddChecksum(desc: str) -> str: - """ - Compute and attach the checksum for a descriptor - :param desc: The descriptor string to add a checksum to - :return: Descriptor with checksum - """ - return desc + "#" + DescriptorChecksum(desc) - - -class PubkeyProvider(object): - """ - A public key expression in a descriptor. - Can contain the key origin info, the pubkey itself, and subsequent derivation paths for derivation from the pubkey - The pubkey can be a typical pubkey or an extended pubkey. - """ - - def __init__( - self, - origin: Optional['KeyOriginInfo'], - pubkey: str, - deriv_path: Optional[str] - ) -> None: - """ - :param origin: The key origin if one is available - :param pubkey: The public key. Either a hex string or a serialized extended pubkey - :param deriv_path: Additional derivation path if the pubkey is an extended pubkey - """ - self.origin = origin - self.pubkey = pubkey - self.deriv_path = deriv_path - - # Make ExtendedKey from pubkey if it isn't hex - self.extkey = None - try: - unhexlify(self.pubkey) - # Is hex, normal pubkey - except Exception: - # Not hex, maybe xpub - self.extkey = ExtendedKey.deserialize(self.pubkey) - - @classmethod - def parse(cls, s: str) -> 'PubkeyProvider': - """ - Deserialize a key expression from the string into a ``PubkeyProvider``. - :param s: String containing the key expression - :return: A new ``PubkeyProvider`` containing the details given by ``s`` - """ - origin = None - deriv_path = None - - if s[0] == "[": - end = s.index("]") - origin = KeyOriginInfo.from_string(s[1:end]) - s = s[end + 1:] - - pubkey = s - slash_idx = s.find("/") - if slash_idx != -1: - pubkey = s[:slash_idx] - deriv_path = s[slash_idx:] - - return cls(origin, pubkey, deriv_path) - - def to_string(self) -> str: - """ - Serialize the pubkey expression to a string to be used in a descriptor - :return: The pubkey expression as a string - """ - s = "" - if self.origin: - s += "[{}]".format(self.origin.to_string()) - s += self.pubkey - if self.deriv_path: - s += self.deriv_path - return s - - def get_pubkey_bytes(self, pos: int) -> bytes: - if self.extkey is not None: - if self.deriv_path is not None: - path_str = self.deriv_path[1:] - if path_str[-1] == "*": - path_str = path_str[-1] + str(pos) - path = parse_path(path_str) - child_key = self.extkey.derive_pub_path(path) - return child_key.pubkey - else: - return self.extkey.pubkey - return unhexlify(self.pubkey) - - def get_full_derivation_path(self, pos: int) -> str: - """ - Returns the full derivation path at the given position, including the origin - """ - path = self.origin.get_derivation_path() if self.origin is not None else "m/" - path += self.deriv_path if self.deriv_path is not None else "" - if path[-1] == "*": - path = path[:-1] + str(pos) - return path - - def get_full_derivation_int_list(self, pos: int) -> List[int]: - """ - Returns the full derivation path as an integer list at the given position. - Includes the origin and master key fingerprint as an int - """ - path: List[int] = self.origin.get_full_int_list() if self.origin is not None else [] - if self.deriv_path is not None: - der_split = self.deriv_path.split("/") - for p in der_split: - if not p: - continue - if p == "*": - i = pos - elif p[-1] in "'phHP": - assert len(p) >= 2 - i = int(p[:-1]) | 0x80000000 - else: - i = int(p) - path.append(i) - return path - - def __lt__(self, other: 'PubkeyProvider') -> bool: - return self.pubkey < other.pubkey - - -class Descriptor(object): - r""" - An abstract class for Descriptors themselves. - Descriptors can contain multiple :class:`PubkeyProvider`\ s and multiple ``Descriptor`` as subdescriptors. - """ - - def __init__( - self, - pubkeys: List['PubkeyProvider'], - subdescriptors: List['Descriptor'], - name: str - ) -> None: - r""" - :param pubkeys: The :class:`PubkeyProvider`\ s that are part of this descriptor - :param subdescriptor: The ``Descriptor``s that are part of this descriptor - :param name: The name of the function for this descriptor - """ - self.pubkeys = pubkeys - self.subdescriptors = subdescriptors - self.name = name - - def to_string_no_checksum(self) -> str: - """ - Serializes the descriptor as a string without the descriptor checksum - :return: The descriptor string - """ - return "{}({}{})".format( - self.name, - ",".join([p.to_string() for p in self.pubkeys]), - self.subdescriptors[0].to_string_no_checksum() if len(self.subdescriptors) > 0 else "" - ) - - def to_string(self) -> str: - """ - Serializes the descriptor as a string with the checksum - :return: The descriptor with a checksum - """ - return AddChecksum(self.to_string_no_checksum()) - - def expand(self, pos: int) -> "ExpandedScripts": - """ - Returns the scripts for a descriptor at the given `pos` for ranged descriptors. - """ - raise NotImplementedError("The Descriptor base class does not implement this method") - - -class PKDescriptor(Descriptor): - """ - A descriptor for ``pk()`` descriptors - """ - - def __init__( - self, - pubkey: 'PubkeyProvider' - ) -> None: - """ - :param pubkey: The :class:`PubkeyProvider` for this descriptor - """ - super().__init__([pubkey], [], "pk") - - -class PKHDescriptor(Descriptor): - """ - A descriptor for ``pkh()`` descriptors - """ - - def __init__( - self, - pubkey: 'PubkeyProvider' - ) -> None: - """ - :param pubkey: The :class:`PubkeyProvider` for this descriptor - """ - super().__init__([pubkey], [], "pkh") - - def expand(self, pos: int) -> "ExpandedScripts": - script = b"\x76\xa9\x14" + hash160(self.pubkeys[0].get_pubkey_bytes(pos)) + b"\x88\xac" - return ExpandedScripts(script, None, None) - - -class WPKHDescriptor(Descriptor): - """ - A descriptor for ``wpkh()`` descriptors - """ - - def __init__( - self, - pubkey: 'PubkeyProvider' - ) -> None: - """ - :param pubkey: The :class:`PubkeyProvider` for this descriptor - """ - super().__init__([pubkey], [], "wpkh") - - def expand(self, pos: int) -> "ExpandedScripts": - script = b"\x00\x14" + hash160(self.pubkeys[0].get_pubkey_bytes(pos)) - return ExpandedScripts(script, None, None) - - -class MultisigDescriptor(Descriptor): - """ - A descriptor for ``multi()`` and ``sortedmulti()`` descriptors - """ - - def __init__( - self, - pubkeys: List['PubkeyProvider'], - thresh: int, - is_sorted: bool - ) -> None: - r""" - :param pubkeys: The :class:`PubkeyProvider`\ s for this descriptor - :param thresh: The number of keys required to sign this multisig - :param is_sorted: Whether this is a ``sortedmulti()`` descriptor - """ - super().__init__(pubkeys, [], "sortedmulti" if is_sorted else "multi") - self.thresh = thresh - self.is_sorted = is_sorted - if self.is_sorted: - self.pubkeys.sort() - - def to_string_no_checksum(self) -> str: - return "{}({},{})".format(self.name, self.thresh, ",".join([p.to_string() for p in self.pubkeys])) - - def expand(self, pos: int) -> "ExpandedScripts": - if self.thresh > 16: - m = b"\x01" + self.thresh.to_bytes(1, "big") - else: - m = (self.thresh + 0x50).to_bytes(1, "big") if self.thresh > 0 else b"\x00" - n = (len(self.pubkeys) + 0x50).to_bytes(1, "big") if len(self.pubkeys) > 0 else b"\x00" - script: bytes = m - der_pks = [p.get_pubkey_bytes(pos) for p in self.pubkeys] - if self.is_sorted: - der_pks.sort() - for pk in der_pks: - script += len(pk).to_bytes(1, "big") + pk - script += n + b"\xae" - - return ExpandedScripts(script, None, None) - - -class SHDescriptor(Descriptor): - """ - A descriptor for ``sh()`` descriptors - """ - - def __init__( - self, - subdescriptor: 'Descriptor' - ) -> None: - """ - :param subdescriptor: The :class:`Descriptor` that is a sub-descriptor for this descriptor - """ - super().__init__([], [subdescriptor], "sh") - - def expand(self, pos: int) -> "ExpandedScripts": - assert len(self.subdescriptors) == 1 - redeem_script, _, witness_script = self.subdescriptors[0].expand(pos) - script = b"\xa9\x14" + hash160(redeem_script) + b"\x87" - return ExpandedScripts(script, redeem_script, witness_script) - - -class WSHDescriptor(Descriptor): - """ - A descriptor for ``wsh()`` descriptors - """ - - def __init__( - self, - subdescriptor: 'Descriptor' - ) -> None: - """ - :param subdescriptor: The :class:`Descriptor` that is a sub-descriptor for this descriptor - """ - super().__init__([], [subdescriptor], "wsh") - - def expand(self, pos: int) -> "ExpandedScripts": - assert len(self.subdescriptors) == 1 - witness_script, _, _ = self.subdescriptors[0].expand(pos) - script = b"\x00\x20" + sha256(witness_script) - return ExpandedScripts(script, None, witness_script) - - -class TRDescriptor(Descriptor): - """ - A descriptor for ``tr()`` descriptors - """ - - def __init__( - self, - internal_key: 'PubkeyProvider', - subdescriptors: List['Descriptor'] = [], - depths: List[int] = [] - ) -> None: - """ - :param internal_key: The :class:`PubkeyProvider` that is the internal key for this descriptor - :param subdescriptors: The :class:`Descriptor`s that are the leaf scripts for this descriptor - :param depths: The depths of the leaf scripts in the same order as `subdescriptors` - """ - super().__init__([internal_key], subdescriptors, "tr") - self.depths = depths - - def to_string_no_checksum(self) -> str: - r = f"{self.name}({self.pubkeys[0].to_string()}" - path: List[bool] = [] # Track left or right for each depth - for p, depth in enumerate(self.depths): - r += "," - while len(path) <= depth: - if len(path) > 0: - r += "{" - path.append(False) - r += self.subdescriptors[p].to_string_no_checksum() - while len(path) > 0 and path[-1]: - if len(path) > 0: - r += "}" - path.pop() - if len(path) > 0: - path[-1] = True - r += ")" - return r - -def _get_func_expr(s: str) -> Tuple[str, str]: - """ - Get the function name and then the expression inside - :param s: The string that begins with a function name - :return: The function name as the first element of the tuple, and the expression contained within the function as the second element - :raises: ValueError: if a matching pair of parentheses cannot be found - """ - start = s.index("(") - end = s.rindex(")") - return s[0:start], s[start + 1:end] - - -def _get_const(s: str, const: str) -> str: - """ - Get the first character of the string, make sure it is the expected character, - and return the rest of the string - :param s: The string that begins with a constant character - :param const: The constant character - :return: The remainder of the string without the constant character - :raises: ValueError: if the first character is not the constant character - """ - if s[0] != const: - raise ValueError(f"Expected '{const}' but got '{s[0]}'") - return s[1:] - - -def _get_expr(s: str) -> Tuple[str, str]: - """ - Extract the expression that ``s`` begins with. - This will return the initial part of ``s``, up to the first comma or closing brace, - skipping ones that are surrounded by braces. - :param s: The string to extract the expression from - :return: A pair with the first item being the extracted expression and the second the rest of the string - """ - level: int = 0 - for i, c in enumerate(s): - if c in ["(", "{"]: - level += 1 - elif level > 0 and c in [")", "}"]: - level -= 1 - elif level == 0 and c in [")", "}", ","]: - break - return s[0:i], s[i:] - -def parse_pubkey(expr: str) -> Tuple['PubkeyProvider', str]: - """ - Parses an individual pubkey expression from a string that may contain more than one pubkey expression. - :param expr: The expression to parse a pubkey expression from - :return: The :class:`PubkeyProvider` that is parsed as the first item of a tuple, and the remainder of the expression as the second item. - """ - end = len(expr) - comma_idx = expr.find(",") - next_expr = "" - if comma_idx != -1: - end = comma_idx - next_expr = expr[end + 1:] - return PubkeyProvider.parse(expr[:end]), next_expr - - -class _ParseDescriptorContext(Enum): - """ - :meta private: - Enum representing the level that we are in when parsing a descriptor. - Some expressions aren't allowed at certain levels, this helps us track those. - """ - - TOP = 1 - """The top level, not within any descriptor""" - - P2SH = 2 - """Within a ``sh()`` descriptor""" - - P2WSH = 3 - """Within a ``wsh()`` descriptor""" - - P2TR = 4 - """Within a ``tr()`` descriptor""" - - -def _parse_descriptor(desc: str, ctx: '_ParseDescriptorContext') -> 'Descriptor': - """ - :meta private: - Parse a descriptor given the context level we are in. - Used recursively to parse subdescriptors - :param desc: The descriptor string to parse - :param ctx: The :class:`_ParseDescriptorContext` indicating the level we are in - :return: The parsed descriptor - :raises: ValueError: if the descriptor is malformed - """ - func, expr = _get_func_expr(desc) - if func == "pk": - pubkey, expr = parse_pubkey(expr) - if expr: - raise ValueError("more than one pubkey in pk descriptor") - return PKDescriptor(pubkey) - if func == "pkh": - if not (ctx == _ParseDescriptorContext.TOP or ctx == _ParseDescriptorContext.P2SH or ctx == _ParseDescriptorContext.P2WSH): - raise ValueError("Can only have pkh at top level, in sh(), or in wsh()") - pubkey, expr = parse_pubkey(expr) - if expr: - raise ValueError("More than one pubkey in pkh descriptor") - return PKHDescriptor(pubkey) - if func == "sortedmulti" or func == "multi": - if not (ctx == _ParseDescriptorContext.TOP or ctx == _ParseDescriptorContext.P2SH or ctx == _ParseDescriptorContext.P2WSH): - raise ValueError("Can only have multi/sortedmulti at top level, in sh(), or in wsh()") - is_sorted = func == "sortedmulti" - comma_idx = expr.index(",") - thresh = int(expr[:comma_idx]) - expr = expr[comma_idx + 1:] - pubkeys = [] - while expr: - pubkey, expr = parse_pubkey(expr) - pubkeys.append(pubkey) - if len(pubkeys) == 0 or len(pubkeys) > 16: - raise ValueError("Cannot have {} keys in a multisig; must have between 1 and 16 keys, inclusive".format(len(pubkeys))) - elif thresh < 1: - raise ValueError("Multisig threshold cannot be {}, must be at least 1".format(thresh)) - elif thresh > len(pubkeys): - raise ValueError("Multisig threshold cannot be larger than the number of keys; threshold is {} but only {} keys specified".format(thresh, len(pubkeys))) - if ctx == _ParseDescriptorContext.TOP and len(pubkeys) > 3: - raise ValueError("Cannot have {} pubkeys in bare multisig: only at most 3 pubkeys") - return MultisigDescriptor(pubkeys, thresh, is_sorted) - if func == "wpkh": - if not (ctx == _ParseDescriptorContext.TOP or ctx == _ParseDescriptorContext.P2SH): - raise ValueError("Can only have wpkh() at top level or inside sh()") - pubkey, expr = parse_pubkey(expr) - if expr: - raise ValueError("More than one pubkey in pkh descriptor") - return WPKHDescriptor(pubkey) - if func == "sh": - if ctx != _ParseDescriptorContext.TOP: - raise ValueError("Can only have sh() at top level") - subdesc = _parse_descriptor(expr, _ParseDescriptorContext.P2SH) - return SHDescriptor(subdesc) - if func == "wsh": - if not (ctx == _ParseDescriptorContext.TOP or ctx == _ParseDescriptorContext.P2SH): - raise ValueError("Can only have wsh() at top level or inside sh()") - subdesc = _parse_descriptor(expr, _ParseDescriptorContext.P2WSH) - return WSHDescriptor(subdesc) - if func == "tr": - if ctx != _ParseDescriptorContext.TOP: - raise ValueError("Can only have tr at top level") - internal_key, expr = parse_pubkey(expr) - subscripts = [] - depths = [] - if expr: - # Path from top of the tree to what we're currently processing. - # branches[i] == False: left branch in the i'th step from the top - # branches[i] == true: right branch - branches = [] - while True: - # Process open braces - while True: - try: - expr = _get_const(expr, "{") - branches.append(False) - except ValueError: - break - if len(branches) > MAX_TAPROOT_NODES: - raise ValueError("tr() supports at most {MAX_TAPROOT_NODES} nesting levels") - # Process script expression - sarg, expr = _get_expr(expr) - subscripts.append(_parse_descriptor(sarg, _ParseDescriptorContext.P2TR)) - depths.append(len(branches)) - # Process closing braces - while len(branches) > 0 and branches[-1]: - expr = _get_const(expr, "}") - branches.pop() - # If we're at the end of a left branch, expect a comma - if len(branches) > 0 and not branches[-1]: - expr = _get_const(expr, ",") - branches[-1] = True - - if len(branches) == 0: - break - return TRDescriptor(internal_key, subscripts, depths) - if ctx == _ParseDescriptorContext.P2SH: - raise ValueError("A function is needed within P2SH") - elif ctx == _ParseDescriptorContext.P2WSH: - raise ValueError("A function is needed within P2WSH") - raise ValueError("{} is not a valid descriptor function".format(func)) - - -def parse_descriptor(desc: str) -> 'Descriptor': - """ - Parse a descriptor string into a :class:`Descriptor`. - Validates the checksum if one is provided in the string - :param desc: The descriptor string - :return: The parsed :class:`Descriptor` - :raises: ValueError: if the descriptor string is malformed - """ - i = desc.find("#") - if i != -1: - checksum = desc[i + 1:] - desc = desc[:i] - computed = DescriptorChecksum(desc) - if computed != checksum: - raise ValueError("The checksum does not match; Got {}, expected {}".format(checksum, computed)) - return _parse_descriptor(desc, _ParseDescriptorContext.TOP) diff --git a/bitcoin_client/ledger_bitcoin/embit/LICENSE b/bitcoin_client/ledger_bitcoin/embit/LICENSE new file mode 100644 index 000000000..db295028b --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Stepan Snigirev + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bitcoin_client/ledger_bitcoin/embit/README.md b/bitcoin_client/ledger_bitcoin/embit/README.md new file mode 100644 index 000000000..66483faed --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/README.md @@ -0,0 +1,5 @@ +This is a stripped down version of the embit library, cloned at commit [189efc45](https://github.com/diybitcoinhardware/embit/tree/189efc4583d497a2b97632646daf1531d00442b0). + +Support for the `0` and `1` miniscript fragments was added after cloning. + +All the content of this folder is released according to the [LICENSE](LICENSE), as per the original repository. diff --git a/tests-legacy/bitcoin_client/__init__.py b/bitcoin_client/ledger_bitcoin/embit/__init__.py similarity index 100% rename from tests-legacy/bitcoin_client/__init__.py rename to bitcoin_client/ledger_bitcoin/embit/__init__.py diff --git a/bitcoin_client/ledger_bitcoin/embit/base.py b/bitcoin_client/ledger_bitcoin/embit/base.py new file mode 100644 index 000000000..9dbac7398 --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/base.py @@ -0,0 +1,116 @@ +"""Base classes""" +from io import BytesIO +from binascii import hexlify, unhexlify + + +class EmbitError(Exception): + """Generic Embit error""" + + pass + + +class EmbitBase: + @classmethod + def read_from(cls, stream, *args, **kwargs): + """All classes should be readable from stream""" + raise NotImplementedError( + "%s doesn't implement reading from stream" % cls.__name__ + ) + + @classmethod + def parse(cls, s: bytes, *args, **kwargs): + """Parse raw bytes""" + stream = BytesIO(s) + res = cls.read_from(stream, *args, **kwargs) + if len(stream.read(1)) > 0: + raise EmbitError("Unexpected extra bytes") + return res + + def write_to(self, stream, *args, **kwargs) -> int: + """All classes should be writable to stream""" + raise NotImplementedError( + "%s doesn't implement writing to stream" % type(self).__name__ + ) + + def serialize(self, *args, **kwargs) -> bytes: + """Serialize instance to raw bytes""" + stream = BytesIO() + self.write_to(stream, *args, **kwargs) + return stream.getvalue() + + def to_string(self, *args, **kwargs) -> str: + """ + String representation. + If not implemented - uses hex or calls to_base58() method if defined. + """ + if hasattr(self, "to_base58"): + res = self.to_base58(*args, **kwargs) + if not isinstance(res, str): + raise ValueError("to_base58() must return string") + return res + return hexlify(self.serialize(*args, **kwargs)).decode() + + @classmethod + def from_string(cls, s, *args, **kwargs): + """Create class instance from string""" + if hasattr(cls, "from_base58"): + return cls.from_base58(s, *args, **kwargs) + return cls.parse(unhexlify(s)) + + def __str__(self): + """Internally calls `to_string()` method with no arguments""" + return self.to_string() + + def __repr__(self): + try: + return type(self).__name__ + "(%s)" % str(self) + except: + return type(self).__name__ + "()" + + def __eq__(self, other): + """Compare two objects by checking their serializations""" + if not hasattr(other, "serialize"): + return False + return self.serialize() == other.serialize() + + def __ne__(self, other): + return not self.__eq__(other) + + def __hash__(self): + return hash(self.serialize()) + + +class EmbitKey(EmbitBase): + def sec(self) -> bytes: + """ + Any EmbitKey should implement sec() method that returns + a sec-serialized public key + """ + raise NotImplementedError( + "%s doesn't implement sec() method" % type(self).__name__ + ) + + def xonly(self) -> bytes: + """xonly representation of the key""" + return self.sec()[1:33] + + @property + def is_private(self) -> bool: + """ + Any EmbitKey should implement `is_private` property to distinguish + between private and public keys. + """ + raise NotImplementedError( + "%s doesn't implement is_private property" % type(self).__name__ + ) + + def __lt__(self, other): + # for lexagraphic ordering + return self.sec() < other.sec() + + def __gt__(self, other): + # for lexagraphic ordering + return self.sec() > other.sec() + + def __hash__(self): + return hash(self.serialize()) diff --git a/bitcoin_client/ledger_bitcoin/embit/base58.py b/bitcoin_client/ledger_bitcoin/embit/base58.py new file mode 100644 index 000000000..196a79dbf --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/base58.py @@ -0,0 +1,79 @@ +# Partially copy-pasted from python-bitcoinlib: +# https://github.com/petertodd/python-bitcoinlib/blob/master/bitcoin/base58.py + +"""Base58 encoding and decoding""" + +import binascii +from . import hashes + +B58_DIGITS = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz" + + +def encode(b: bytes) -> str: + """Encode bytes to a base58-encoded string""" + + # Convert big-endian bytes to integer + n = int("0x0" + binascii.hexlify(b).decode("utf8"), 16) + + # Divide that integer into bas58 + chars = [] + while n > 0: + n, r = divmod(n, 58) + chars.append(B58_DIGITS[r]) + result = "".join(chars[::-1]) + + pad = 0 + for c in b: + if c == 0: + pad += 1 + else: + break + return B58_DIGITS[0] * pad + result + + +def decode(s: str) -> bytes: + """Decode a base58-encoding string, returning bytes""" + if not s: + return b"" + + # Convert the string to an integer + n = 0 + for c in s: + n *= 58 + if c not in B58_DIGITS: + raise ValueError("Character %r is not a valid base58 character" % c) + digit = B58_DIGITS.index(c) + n += digit + + # Convert the integer to bytes + h = "%x" % n + if len(h) % 2: + h = "0" + h + res = binascii.unhexlify(h.encode("utf8")) + + # Add padding back. + pad = 0 + for c in s[:-1]: + if c == B58_DIGITS[0]: + pad += 1 + else: + break + return b"\x00" * pad + res + + +def encode_check(b: bytes) -> str: + """Encode bytes to a base58-encoded string with a checksum""" + return encode(b + hashes.double_sha256(b)[0:4]) + + +def decode_check(s: str) -> bytes: + """Decode a base58-encoding string with checksum check. + Returns bytes without checksum + """ + b = decode(s) + checksum = hashes.double_sha256(b[:-4])[:4] + if b[-4:] != checksum: + raise ValueError( + "Checksum mismatch: expected %r, calculated %r" % (b[-4:], checksum) + ) + return b[:-4] diff --git a/bitcoin_client/ledger_bitcoin/embit/bech32.py b/bitcoin_client/ledger_bitcoin/embit/bech32.py new file mode 100644 index 000000000..24ee7fa72 --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/bech32.py @@ -0,0 +1,146 @@ +# Copyright (c) 2017 Pieter Wuille +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +"""Reference implementation for Bech32 and segwit addresses.""" +from .misc import const + +CHARSET = "qpzry9x8gf2tvdw0s3jn54khce6mua7l" +BECH32_CONST = const(1) +BECH32M_CONST = const(0x2BC830A3) + + +class Encoding: + """Enumeration type to list the various supported encodings.""" + + BECH32 = 1 + BECH32M = 2 + + +def bech32_polymod(values): + """Internal function that computes the Bech32 checksum.""" + generator = [0x3B6A57B2, 0x26508E6D, 0x1EA119FA, 0x3D4233DD, 0x2A1462B3] + chk = 1 + for value in values: + top = chk >> 25 + chk = (chk & 0x1FFFFFF) << 5 ^ value + for i in range(5): + chk ^= generator[i] if ((top >> i) & 1) else 0 + return chk + + +def bech32_hrp_expand(hrp: str): + """Expand the HRP into values for checksum computation.""" + return [ord(x) >> 5 for x in hrp] + [0] + [ord(x) & 31 for x in hrp] + + +def bech32_verify_checksum(hrp, data): + """Verify a checksum given HRP and converted data characters.""" + check = bech32_polymod(bech32_hrp_expand(hrp) + data) + if check == BECH32_CONST: + return Encoding.BECH32 + elif check == BECH32M_CONST: + return Encoding.BECH32M + else: + return None + + +def bech32_create_checksum(encoding, hrp, data): + """Compute the checksum values given HRP and data.""" + values = bech32_hrp_expand(hrp) + data + const = BECH32M_CONST if encoding == Encoding.BECH32M else BECH32_CONST + polymod = bech32_polymod(values + [0, 0, 0, 0, 0, 0]) ^ const + return [(polymod >> 5 * (5 - i)) & 31 for i in range(6)] + + +def bech32_encode(encoding, hrp, data): + """Compute a Bech32 or Bech32m string given HRP and data values.""" + combined = data + bech32_create_checksum(encoding, hrp, data) + return hrp + "1" + "".join([CHARSET[d] for d in combined]) + + +def bech32_decode(bech): + """Validate a Bech32/Bech32m string, and determine HRP and data.""" + if (any(ord(x) < 33 or ord(x) > 126 for x in bech)) or ( + bech.lower() != bech and bech.upper() != bech + ): + return (None, None, None) + bech = bech.lower() + pos = bech.rfind("1") + if pos < 1 or pos + 7 > len(bech) or len(bech) > 90: + return (None, None, None) + if not all(x in CHARSET for x in bech[pos + 1 :]): + return (None, None, None) + hrp = bech[:pos] + data = [CHARSET.find(x) for x in bech[pos + 1 :]] + encoding = bech32_verify_checksum(hrp, data) + if encoding is None: + return (None, None, None) + return (encoding, hrp, data[:-6]) + + +def convertbits(data, frombits, tobits, pad=True): + """General power-of-2 base conversion.""" + acc = 0 + bits = 0 + ret = [] + maxv = (1 << tobits) - 1 + max_acc = (1 << (frombits + tobits - 1)) - 1 + for value in data: + if value < 0 or (value >> frombits): + return None + acc = ((acc << frombits) | value) & max_acc + bits += frombits + while bits >= tobits: + bits -= tobits + ret.append((acc >> bits) & maxv) + if pad: + if bits: + ret.append((acc << (tobits - bits)) & maxv) + elif bits >= frombits or ((acc << (tobits - bits)) & maxv): + return None + return ret + + +def decode(hrp, addr): + """Decode a segwit address.""" + encoding, hrpgot, data = bech32_decode(addr) + if hrpgot != hrp: + return (None, None) + decoded = convertbits(data[1:], 5, 8, False) + if decoded is None or len(decoded) < 2 or len(decoded) > 40: + return (None, None) + if data[0] > 16: + return (None, None) + if data[0] == 0 and len(decoded) != 20 and len(decoded) != 32: + return (None, None) + if (data[0] == 0 and encoding != Encoding.BECH32) or ( + data[0] != 0 and encoding != Encoding.BECH32M + ): + return (None, None) + return (data[0], decoded) + + +def encode(hrp, witver, witprog): + """Encode a segwit address.""" + encoding = Encoding.BECH32 if witver == 0 else Encoding.BECH32M + ret = bech32_encode(encoding, hrp, [witver] + convertbits(witprog, 8, 5)) + if decode(hrp, ret) == (None, None): + return None + return ret diff --git a/bitcoin_client/ledger_bitcoin/embit/bip32.py b/bitcoin_client/ledger_bitcoin/embit/bip32.py new file mode 100644 index 000000000..e31cb7a26 --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/bip32.py @@ -0,0 +1,309 @@ +from . import ec +from .base import EmbitKey, EmbitError +from .misc import copy, const, secp256k1 +from .networks import NETWORKS +from . import base58 +from . import hashes +import hmac +from binascii import hexlify + +HARDENED_INDEX = const(0x80000000) + + +class HDError(EmbitError): + pass + + +class HDKey(EmbitKey): + """HD Private or Public key""" + + def __init__( + self, + key: EmbitKey, # more specifically, PrivateKey or PublicKey + chain_code: bytes, + version=None, + depth: int = 0, + fingerprint: bytes = b"\x00\x00\x00\x00", + child_number: int = 0, + ): + self.key = key + if len(key.serialize()) != 32 and len(key.serialize()) != 33: + raise HDError("Invalid key. Should be private or compressed public") + if version is not None: + self.version = version + else: + if len(key.serialize()) == 32: + self.version = NETWORKS["main"]["xprv"] + else: + self.version = NETWORKS["main"]["xpub"] + self.chain_code = chain_code + self.depth = depth + self.fingerprint = fingerprint + self._my_fingerprint = b"" + self.child_number = child_number + # check that base58[1:4] is "prv" or "pub" + if self.is_private and self.to_base58()[1:4] != "prv": + raise HDError("Invalid version") + if not self.is_private and self.to_base58()[1:4] != "pub": + raise HDError("Invalid version") + + @classmethod + def from_seed(cls, seed: bytes, version=NETWORKS["main"]["xprv"]): + """Creates a root private key from 64-byte seed""" + raw = hmac.new(b"Bitcoin seed", seed, digestmod="sha512").digest() + private_key = ec.PrivateKey(raw[:32]) + chain_code = raw[32:] + return cls(private_key, chain_code, version=version) + + @classmethod + def from_base58(cls, s: str): + b = base58.decode_check(s) + return cls.parse(b) + + @property + def my_fingerprint(self) -> bytes: + if not self._my_fingerprint: + sec = self.sec() + self._my_fingerprint = hashes.hash160(sec)[:4] + return self._my_fingerprint + + @property + def is_private(self) -> bool: + """checks if the HDKey is private or public""" + return self.key.is_private + + @property + def secret(self): + if not self.is_private: + raise HDError("Key is not private") + return self.key.secret + + def write_to(self, stream, version=None) -> int: + if version is None: + version = self.version + res = stream.write(version) + res += stream.write(bytes([self.depth])) + res += stream.write(self.fingerprint) + res += stream.write(self.child_number.to_bytes(4, "big")) + res += stream.write(self.chain_code) + if self.is_private: + res += stream.write(b"\x00") + res += stream.write(self.key.serialize()) + return res + + def to_base58(self, version=None) -> str: + b = self.serialize(version) + res = base58.encode_check(b) + if res[1:4] == "prv" and not self.is_private: + raise HDError("Invalid version for private key") + if res[1:4] == "pub" and self.is_private: + raise HDError("Invalid version for public key") + return res + + @classmethod + def from_string(cls, s: str): + return cls.from_base58(s) + + def to_string(self, version=None): + return self.to_base58(version) + + @classmethod + def read_from(cls, stream): + version = stream.read(4) + depth = stream.read(1)[0] + fingerprint = stream.read(4) + child_number = int.from_bytes(stream.read(4), "big") + chain_code = stream.read(32) + k = stream.read(33) + if k[0] == 0: + key = ec.PrivateKey.parse(k[1:]) + else: + key = ec.PublicKey.parse(k) + + if len(version) < 4 or len(fingerprint) < 4 or len(chain_code) < 32: + raise HDError("Not enough bytes") + hd = cls( + key, + chain_code, + version=version, + depth=depth, + fingerprint=fingerprint, + child_number=child_number, + ) + subver = hd.to_base58()[1:4] + if subver != "prv" and subver != "pub": + raise HDError("Invalid version") + if depth == 0 and child_number != 0: + raise HDError("zero depth with non-zero index") + if depth == 0 and fingerprint != b"\x00\x00\x00\x00": + raise HDError("zero depth with non-zero parent") + return hd + + def to_public(self, version=None): + if not self.is_private: + raise HDError("Already public") + if version is None: + # detect network + for net in NETWORKS: + for k in NETWORKS[net]: + if "prv" in k and NETWORKS[net][k] == self.version: + # xprv -> xpub, zprv -> zpub etc + version = NETWORKS[net][k.replace("prv", "pub")] + break + if version is None: + raise HDError("Can't find proper version. Provide it with version keyword") + return self.__class__( + self.key.get_public_key(), + self.chain_code, + version=version, + depth=self.depth, + fingerprint=self.fingerprint, + child_number=self.child_number, + ) + + def get_public_key(self): + return self.key.get_public_key() if self.is_private else self.key + + def sec(self) -> bytes: + """Returns SEC serialization of the public key""" + return self.key.sec() + + def xonly(self) -> bytes: + return self.key.xonly() + + def taproot_tweak(self, h=b""): + return HDKey( + self.key.taproot_tweak(h), + self.chain_code, + version=self.version, + depth=self.depth, + fingerprint=self.fingerprint, + child_number=self.child_number, + ) + + def child(self, index: int, hardened: bool = False): + """Derives a child HDKey""" + if index > 0xFFFFFFFF: + raise HDError("Index should be less then 2^32") + if hardened and index < HARDENED_INDEX: + index += HARDENED_INDEX + if index >= HARDENED_INDEX: + hardened = True + if hardened and not self.is_private: + raise HDError("Can't do hardened with public key") + + # we need pubkey for fingerprint anyways + sec = self.sec() + fingerprint = hashes.hash160(sec)[:4] + if hardened: + data = b"\x00" + self.key.serialize() + index.to_bytes(4, "big") + else: + data = sec + index.to_bytes(4, "big") + raw = hmac.new(self.chain_code, data, digestmod="sha512").digest() + secret = raw[:32] + chain_code = raw[32:] + if self.is_private: + secret = secp256k1.ec_privkey_add(secret, self.key.serialize()) + key = ec.PrivateKey(secret) + else: + # copy of internal secp256k1 point structure + point = copy(self.key._point) + point = secp256k1.ec_pubkey_add(point, secret) + key = ec.PublicKey(point) + return HDKey( + key, + chain_code, + version=self.version, + depth=self.depth + 1, + fingerprint=fingerprint, + child_number=index, + ) + + def derive(self, path): + """path: int array or a string starting with m/""" + if isinstance(path, str): + # string of the form m/44h/0'/ind + path = parse_path(path) + child = self + for idx in path: + child = child.child(idx) + return child + + def sign(self, msg_hash: bytes) -> ec.Signature: + """signs a hash of the message with the private key""" + if not self.is_private: + raise HDError("HD public key can't sign") + return self.key.sign(msg_hash) + + def schnorr_sign(self, msg_hash): + if not self.is_private: + raise HDError("HD public key can't sign") + return self.key.schnorr_sign(msg_hash) + + def verify(self, sig, msg_hash) -> bool: + return self.key.verify(sig, msg_hash) + + def schnorr_verify(self, sig, msg_hash) -> bool: + return self.key.schnorr_verify(sig, msg_hash) + + def __eq__(self, other): + # skip version + return self.serialize()[4:] == other.serialize()[4:] + + def __hash__(self): + return hash(self.serialize()) + + +def detect_version(path, default="xprv", network=None) -> bytes: + """ + Detects slip-132 version from the path for certain network. + Trying to be smart, use if you want, but with care. + """ + key = default + net = network + if network is None: + net = NETWORKS["main"] + if isinstance(path, str): + path = parse_path(path) + if len(path) == 0: + return network[key] + if path[0] == HARDENED_INDEX + 84: + key = "z" + default[1:] + elif path[0] == HARDENED_INDEX + 49: + key = "y" + default[1:] + elif path[0] == HARDENED_INDEX + 48: + if len(path) >= 4: + if path[3] == HARDENED_INDEX + 1: + key = "Y" + default[1:] + elif path[3] == HARDENED_INDEX + 2: + key = "Z" + default[1:] + if network is None and len(path) > 1 and path[1] == HARDENED_INDEX + 1: + net = NETWORKS["test"] + return net[key] + + +def _parse_der_item(e: str) -> int: + if e[-1] in {"h", "H", "'"}: + return int(e[:-1]) + HARDENED_INDEX + else: + return int(e) + + +def parse_path(path: str) -> list: + """converts derivation path of the form m/44h/1'/0'/0/32 to int array""" + arr = path.rstrip("/").split("/") + if arr[0] == "m": + arr = arr[1:] + if len(arr) == 0: + return [] + return [_parse_der_item(e) for e in arr] + + +def path_to_str(path: list, fingerprint=None) -> str: + s = "m" if fingerprint is None else hexlify(fingerprint).decode() + for el in path: + if el >= HARDENED_INDEX: + s += "/%dh" % (el - HARDENED_INDEX) + else: + s += "/%d" % el + return s diff --git a/bitcoin_client/ledger_bitcoin/embit/compact.py b/bitcoin_client/ledger_bitcoin/embit/compact.py new file mode 100644 index 000000000..0138f394e --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/compact.py @@ -0,0 +1,41 @@ +""" Compact Int parsing / serialization """ +import io + + +def to_bytes(i: int) -> bytes: + """encodes an integer as a compact int""" + if i < 0: + raise ValueError("integer can't be negative: {}".format(i)) + order = 0 + while i >> (8 * (2**order)): + order += 1 + if order == 0: + if i < 0xFD: + return bytes([i]) + order = 1 + if order > 3: + raise ValueError("integer too large: {}".format(i)) + return bytes([0xFC + order]) + i.to_bytes(2**order, "little") + + +def from_bytes(b: bytes) -> int: + s = io.BytesIO(b) + res = read_from(s) + if len(s.read(1)) > 0: + raise ValueError("Too many bytes") + return res + + +def read_from(stream) -> int: + """reads a compact integer from a stream""" + c = stream.read(1) + if not isinstance(c, bytes): + raise TypeError("Bytes must be returned from stream.read()") + if len(c) != 1: + raise RuntimeError("Can't read one byte from the stream") + i = c[0] + if i >= 0xFD: + bytes_to_read = 2 ** (i - 0xFC) + return int.from_bytes(stream.read(bytes_to_read), "little") + else: + return i diff --git a/bitcoin_client/ledger_bitcoin/embit/descriptor/__init__.py b/bitcoin_client/ledger_bitcoin/embit/descriptor/__init__.py new file mode 100644 index 000000000..600296d3c --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/descriptor/__init__.py @@ -0,0 +1,3 @@ +from . import miniscript +from .descriptor import Descriptor +from .arguments import Key diff --git a/bitcoin_client/ledger_bitcoin/embit/descriptor/arguments.py b/bitcoin_client/ledger_bitcoin/embit/descriptor/arguments.py new file mode 100644 index 000000000..3f92500a7 --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/descriptor/arguments.py @@ -0,0 +1,515 @@ +from binascii import hexlify, unhexlify +from .base import DescriptorBase +from .errors import ArgumentError +from .. import bip32, ec, compact, hashes +from ..bip32 import HARDENED_INDEX +from ..misc import read_until + + +class KeyOrigin: + def __init__(self, fingerprint: bytes, derivation: list): + self.fingerprint = fingerprint + self.derivation = derivation + + @classmethod + def from_string(cls, s: str): + arr = s.split("/") + mfp = unhexlify(arr[0]) + assert len(mfp) == 4 + arr[0] = "m" + path = "/".join(arr) + derivation = bip32.parse_path(path) + return cls(mfp, derivation) + + def __str__(self): + return bip32.path_to_str(self.derivation, fingerprint=self.fingerprint) + + +class AllowedDerivation(DescriptorBase): + # xpub/<0;1>/* - <0;1> is a set of allowed branches, wildcard * is stored as None + def __init__(self, indexes=[[0, 1], None]): + # check only one wildcard + if ( + len( + [i for i in indexes if i is None or (isinstance(i, list) and None in i)] + ) + > 1 + ): + raise ArgumentError("Only one wildcard is allowed") + # check only one set is in the derivation + if len([i for i in indexes if isinstance(i, list)]) > 1: + raise ArgumentError("Only one set of branches is allowed") + self.indexes = indexes + + @property + def is_wildcard(self): + return None in self.indexes + + def fill(self, idx, branch_index=None): + # None is ok + if idx is not None and (idx < 0 or idx >= HARDENED_INDEX): + raise ArgumentError("Hardened indexes are not allowed in wildcard") + arr = [i for i in self.indexes] + for i, el in enumerate(arr): + if el is None: + arr[i] = idx + if isinstance(el, list): + if branch_index is None: + arr[i] = el[0] + else: + if branch_index < 0 or branch_index >= len(el): + raise ArgumentError("Invalid branch index") + arr[i] = el[branch_index] + return arr + + def branch(self, branch_index): + arr = self.fill(None, branch_index) + return type(self)(arr) + + def check_derivation(self, derivation: list): + if len(derivation) != len(self.indexes): + return None + branch_idx = 0 # default branch if no branches in descriptor + idx = None + for i, el in enumerate(self.indexes): + der = derivation[i] + if isinstance(el, int): + if el != der: + return None + # branch + elif isinstance(el, list): + if der not in el: + return None + branch_idx = el.index(der) + # wildcard + elif el is None: + idx = der + # shouldn't happen + else: + raise ArgumentError("Strange derivation index...") + if branch_idx is not None and idx is not None: + return idx, branch_idx + + @classmethod + def default(cls): + return AllowedDerivation([[0, 1], None]) + + @property + def branches(self): + for el in self.indexes: + if isinstance(el, list): + return el + return None + + @property + def has_hardend(self): + for idx in self.indexes: + if isinstance(idx, int) and idx >= HARDENED_INDEX: + return True + if ( + isinstance(idx, list) + and len([i for i in idx if i >= HARDENED_INDEX]) > 0 + ): + return True + return False + + @classmethod + def from_string(cls, der: str, allow_hardened=False, allow_set=True): + if len(der) == 0: + return None + indexes = [ + cls.parse_element(d, allow_hardened, allow_set) for d in der.split("/") + ] + return cls(indexes) + + @classmethod + def parse_element(cls, d: str, allow_hardened=False, allow_set=True): + # wildcard + if d == "*": + return None + # branch set - legacy `{m,n}` + if d[0] == "{" and d[-1] == "}": + if not allow_set: + raise ArgumentError("Set is not allowed in derivation %s" % d) + return [ + cls.parse_element(dd, allow_hardened, allow_set=False) + for dd in d[1:-1].split(",") + ] + # branch set - multipart `` + if d[0] == "<" and d[-1] == ">": + if not allow_set: + raise ArgumentError("Set is not allowed in derivation %s" % d) + return [ + cls.parse_element(dd, allow_hardened, allow_set=False) + for dd in d[1:-1].split(";") + ] + idx = 0 + if d[-1] in ["h", "H", "'"]: + if not allow_hardened: + raise ArgumentError("Hardened derivation is not allowed in %s" % d) + idx = HARDENED_INDEX + d = d[:-1] + i = int(d) + if i < 0 or i >= HARDENED_INDEX: + raise ArgumentError( + "Derivation index can be in a range [0, %d)" % HARDENED_INDEX + ) + return idx + i + + def __str__(self): + r = "" + for idx in self.indexes: + if idx is None: + r += "/*" + if isinstance(idx, int): + if idx >= HARDENED_INDEX: + r += "/%dh" % (idx - HARDENED_INDEX) + else: + r += "/%d" % idx + if isinstance(idx, list): + r += "/<" + r += ";".join( + [ + str(i) if i < HARDENED_INDEX else str(i - HARDENED_INDEX) + "h" + for i in idx + ] + ) + r += ">" + return r + + +class Key(DescriptorBase): + def __init__( + self, + key, + origin=None, + derivation=None, + taproot=False, + xonly_repr=False, + ): + self.origin = origin + self.key = key + self.taproot = taproot + self.xonly_repr = xonly_repr and taproot + if not hasattr(key, "derive") and derivation: + raise ArgumentError("Key %s doesn't support derivation" % key) + self.allowed_derivation = derivation + + def __len__(self): + return 34 - int(self.taproot) # <33:sec> or <32:xonly> + + @property + def my_fingerprint(self): + if self.is_extended: + return self.key.my_fingerprint + return None + + @property + def fingerprint(self): + if self.origin is not None: + return self.origin.fingerprint + else: + if self.is_extended: + return self.key.my_fingerprint + return None + + @property + def derivation(self): + return [] if self.origin is None else self.origin.derivation + + @classmethod + def read_from(cls, s, taproot: bool = False): + """ + Reads key argument from stream. + If taproot is set to True - allows both x-only and sec pubkeys. + If taproot is False - will raise when finds xonly pubkey. + """ + first = s.read(1) + origin = None + if first == b"[": + prefix, char = read_until(s, b"]") + if char != b"]": + raise ArgumentError("Invalid key - missing ]") + origin = KeyOrigin.from_string(prefix.decode()) + else: + s.seek(-1, 1) + k, char = read_until(s, b",)/") + der = b"" + # there is a following derivation + if char == b"/": + der, char = read_until(s, b"<{,)") + # legacy branches: {a,b,c...} + if char == b"{": + der += b"{" + branch, char = read_until(s, b"}") + if char is None: + raise ArgumentError("Failed reading the key, missing }") + der += branch + b"}" + rest, char = read_until(s, b",)") + der += rest + # multipart descriptor: + elif char == b"<": + der += b"<" + branch, char = read_until(s, b">") + if char is None: + raise ArgumentError("Failed reading the key, missing >") + der += branch + b">" + rest, char = read_until(s, b",)") + der += rest + if char is not None: + s.seek(-1, 1) + # parse key + k, xonly_repr = cls.parse_key(k, taproot) + # parse derivation + allow_hardened = isinstance(k, bip32.HDKey) and isinstance(k.key, ec.PrivateKey) + derivation = AllowedDerivation.from_string( + der.decode(), allow_hardened=allow_hardened + ) + return cls(k, origin, derivation, taproot, xonly_repr) + + @classmethod + def parse_key(cls, key: bytes, taproot: bool = False): + # convert to string + k = key.decode() + if len(k) in [66, 130] and k[:2] in ["02", "03", "04"]: + # bare public key + return ec.PublicKey.parse(unhexlify(k)), False + elif taproot and len(k) == 64: + # x-only pubkey + return ec.PublicKey.parse(b"\x02" + unhexlify(k)), True + elif k[1:4] in ["pub", "prv"]: + # bip32 key + return bip32.HDKey.from_base58(k), False + else: + return ec.PrivateKey.from_wif(k), False + + @property + def is_extended(self): + return isinstance(self.key, bip32.HDKey) + + def check_derivation(self, derivation_path): + rest = None + # full derivation path + if self.fingerprint == derivation_path.fingerprint: + origin = self.derivation + if origin == derivation_path.derivation[: len(origin)]: + rest = derivation_path.derivation[len(origin) :] + # short derivation path + if self.my_fingerprint == derivation_path.fingerprint: + rest = derivation_path.derivation + if self.allowed_derivation is None or rest is None: + return None + return self.allowed_derivation.check_derivation(rest) + + def get_public_key(self): + return ( + self.key.get_public_key() + if (self.is_extended or self.is_private) + else self.key + ) + + def sec(self): + return self.key.sec() + + def xonly(self): + return self.key.xonly() + + def taproot_tweak(self, h=b""): + assert self.taproot + return self.key.taproot_tweak(h) + + def serialize(self): + if self.taproot: + return self.sec()[1:33] + return self.sec() + + def compile(self): + d = self.serialize() + return compact.to_bytes(len(d)) + d + + @property + def prefix(self): + if self.origin: + return "[%s]" % self.origin + return "" + + @property + def suffix(self): + return "" if self.allowed_derivation is None else str(self.allowed_derivation) + + @property + def can_derive(self): + return self.allowed_derivation is not None and hasattr(self.key, "derive") + + @property + def branches(self): + return self.allowed_derivation.branches if self.allowed_derivation else None + + @property + def num_branches(self): + return 1 if self.branches is None else len(self.branches) + + def branch(self, branch_index=None): + der = ( + self.allowed_derivation.branch(branch_index) + if self.allowed_derivation is not None + else None + ) + return type(self)(self.key, self.origin, der, self.taproot) + + @property + def is_wildcard(self): + return self.allowed_derivation.is_wildcard if self.allowed_derivation else False + + def derive(self, idx, branch_index=None): + # nothing to derive + if self.allowed_derivation is None: + return self + der = self.allowed_derivation.fill(idx, branch_index=branch_index) + k = self.key.derive(der) + if self.origin: + origin = KeyOrigin(self.origin.fingerprint, self.origin.derivation + der) + else: + origin = KeyOrigin(self.key.child(0).fingerprint, der) + # empty derivation + derivation = None + return type(self)(k, origin, derivation, self.taproot) + + @property + def is_private(self): + return isinstance(self.key, ec.PrivateKey) or ( + self.is_extended and self.key.is_private + ) + + def to_public(self): + if not self.is_private: + return self + if isinstance(self.key, ec.PrivateKey): + return type(self)( + self.key.get_public_key(), + self.origin, + self.allowed_derivation, + self.taproot, + ) + else: + return type(self)( + self.key.to_public(), self.origin, self.allowed_derivation, self.taproot + ) + + @property + def private_key(self): + if not self.is_private: + raise ArgumentError("Key is not private") + # either HDKey.key or just the key + return self.key.key if self.is_extended else self.key + + @property + def secret(self): + return self.private_key.secret + + def to_string(self, version=None): + if isinstance(self.key, ec.PublicKey): + k = self.key.sec() if not self.xonly_repr else self.key.xonly() + return self.prefix + hexlify(k).decode() + if isinstance(self.key, bip32.HDKey): + return self.prefix + self.key.to_base58(version) + self.suffix + if isinstance(self.key, ec.PrivateKey): + return self.prefix + self.key.wif() + return self.prefix + self.key + + @classmethod + def from_string(cls, s, taproot=False): + return cls.parse(s.encode(), taproot) + + +class KeyHash(Key): + @classmethod + def parse_key(cls, k: bytes, *args, **kwargs): + # convert to string + kd = k.decode() + # raw 20-byte hash + if len(kd) == 40: + return kd, False + return super().parse_key(k, *args, **kwargs) + + def serialize(self, *args, **kwargs): + if isinstance(self.key, str): + return unhexlify(self.key) + # TODO: should it be xonly? + if self.taproot: + return hashes.hash160(self.key.sec()[1:33]) + return hashes.hash160(self.key.sec()) + + def __len__(self): + return 21 # <20:pkh> + + def compile(self): + d = self.serialize() + return compact.to_bytes(len(d)) + d + + +class Number(DescriptorBase): + def __init__(self, num): + self.num = num + + @classmethod + def read_from(cls, s, taproot=False): + num = 0 + char = s.read(1) + while char in b"0123456789": + num = 10 * num + int(char.decode()) + char = s.read(1) + s.seek(-1, 1) + return cls(num) + + def compile(self): + if self.num == 0: + return b"\x00" + if self.num <= 16: + return bytes([80 + self.num]) + b = self.num.to_bytes(32, "little").rstrip(b"\x00") + if b[-1] >= 128: + b += b"\x00" + return bytes([len(b)]) + b + + def __len__(self): + return len(self.compile()) + + def __str__(self): + return "%d" % self.num + + +class Raw(DescriptorBase): + LEN = 32 + + def __init__(self, raw): + if len(raw) != self.LEN * 2: + raise ArgumentError("Invalid raw element length: %d" % len(raw)) + self.raw = unhexlify(raw) + + @classmethod + def read_from(cls, s, taproot=False): + return cls(s.read(2 * cls.LEN).decode()) + + def __str__(self): + return hexlify(self.raw).decode() + + def compile(self): + return compact.to_bytes(len(self.raw)) + self.raw + + def __len__(self): + return len(compact.to_bytes(self.LEN)) + self.LEN + + +class Raw32(Raw): + LEN = 32 + + def __len__(self): + return 33 + + +class Raw20(Raw): + LEN = 20 + + def __len__(self): + return 21 diff --git a/bitcoin_client/ledger_bitcoin/embit/descriptor/base.py b/bitcoin_client/ledger_bitcoin/embit/descriptor/base.py new file mode 100644 index 000000000..0c203b21b --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/descriptor/base.py @@ -0,0 +1,22 @@ +from io import BytesIO +from ..base import EmbitBase + + +class DescriptorBase(EmbitBase): + """ + Descriptor is purely text-based, so parse/serialize do + the same as from/to_string, just returning ascii bytes + instead of ascii string. + """ + + @classmethod + def from_string(cls, s: str, *args, **kwargs): + return cls.parse(s.encode(), *args, **kwargs) + + def serialize(self, *args, **kwargs) -> bytes: + stream = BytesIO() + self.write_to(stream) + return stream.getvalue() + + def to_string(self, *args, **kwargs) -> str: + return self.serialize().decode() diff --git a/bitcoin_client/ledger_bitcoin/embit/descriptor/checksum.py b/bitcoin_client/ledger_bitcoin/embit/descriptor/checksum.py new file mode 100644 index 000000000..1e487ea51 --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/descriptor/checksum.py @@ -0,0 +1,56 @@ +from .errors import DescriptorError + + +def polymod(c: int, val: int) -> int: + c0 = c >> 35 + c = ((c & 0x7FFFFFFFF) << 5) ^ val + if c0 & 1: + c ^= 0xF5DEE51989 + if c0 & 2: + c ^= 0xA9FDCA3312 + if c0 & 4: + c ^= 0x1BAB10E32D + if c0 & 8: + c ^= 0x3706B1677A + if c0 & 16: + c ^= 0x644D626FFD + return c + + +def checksum(desc: str) -> str: + """Calculate checksum of desciptor string""" + INPUT_CHARSET = ( + "0123456789()[],'/*abcdefgh@:$%{}IJKLMNOPQRSTUVW" + 'XYZ&+-.;<=>?!^_|~ijklmnopqrstuvwxyzABCDEFGH`#"\\ ' + ) + CHECKSUM_CHARSET = "qpzry9x8gf2tvdw0s3jn54khce6mua7l" + + c = 1 + cls = 0 + clscount = 0 + for ch in desc: + pos = INPUT_CHARSET.find(ch) + if pos == -1: + raise DescriptorError("Invalid character '%s' in the input string" % ch) + c = polymod(c, pos & 31) + cls = cls * 3 + (pos >> 5) + clscount += 1 + if clscount == 3: + c = polymod(c, cls) + cls = 0 + clscount = 0 + if clscount > 0: + c = polymod(c, cls) + for j in range(0, 8): + c = polymod(c, 0) + c ^= 1 + + ret = [CHECKSUM_CHARSET[(c >> (5 * (7 - j))) & 31] for j in range(0, 8)] + return "".join(ret) + + +def add_checksum(desc: str) -> str: + """Add checksum to descriptor string""" + if "#" in desc: + desc = desc.split("#")[0] + return desc + "#" + checksum(desc) diff --git a/bitcoin_client/ledger_bitcoin/embit/descriptor/descriptor.py b/bitcoin_client/ledger_bitcoin/embit/descriptor/descriptor.py new file mode 100644 index 000000000..9f585dc5e --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/descriptor/descriptor.py @@ -0,0 +1,384 @@ +from io import BytesIO +from .. import script +from ..networks import NETWORKS +from .errors import DescriptorError +from .base import DescriptorBase +from .miniscript import Miniscript, Multi, Sortedmulti +from .arguments import Key +from .taptree import TapTree + + +class Descriptor(DescriptorBase): + def __init__( + self, + miniscript=None, + sh=False, + wsh=True, + key=None, + wpkh=True, + taproot=False, + taptree=None, + ): + # TODO: add support for taproot scripts + # Should: + # - accept taptree without a key + # - accept key without taptree + # - raise if miniscript is not None, but taproot=True + # - raise if taptree is not None, but taproot=False + if key is None and miniscript is None and taptree is None: + raise DescriptorError("Provide a key, miniscript or taptree") + if miniscript is not None: + # will raise if can't verify + miniscript.verify() + if miniscript.type != "B": + raise DescriptorError("Top level miniscript should be 'B'") + # check all branches have the same length + branches = { + len(k.branches) for k in miniscript.keys if k.branches is not None + } + if len(branches) > 1: + raise DescriptorError("All branches should have the same length") + self.sh = sh + self.wsh = wsh + self.key = key + self.miniscript = miniscript + self.wpkh = wpkh + self.taproot = taproot + self.taptree = taptree or TapTree() + # make sure all keys are either taproot or not + for k in self.keys: + k.taproot = taproot + + @property + def script_len(self): + if self.taproot: + return 34 # OP_1 <32:xonly> + if self.miniscript: + return len(self.miniscript) + if self.wpkh: + return 22 # 00 <20:pkh> + return 25 # OP_DUP OP_HASH160 <20:pkh> OP_EQUALVERIFY OP_CHECKSIG + + @property + def num_branches(self): + return max([k.num_branches for k in self.keys]) + + def branch(self, branch_index=None): + if self.miniscript: + return type(self)( + self.miniscript.branch(branch_index), + self.sh, + self.wsh, + None, + self.wpkh, + self.taproot, + ) + else: + return type(self)( + None, + self.sh, + self.wsh, + self.key.branch(branch_index), + self.wpkh, + self.taproot, + self.taptree.branch(branch_index), + ) + + @property + def is_wildcard(self): + return any([key.is_wildcard for key in self.keys]) + + @property + def is_wrapped(self): + return self.sh and self.is_segwit + + @property + def is_legacy(self): + return not (self.is_segwit or self.is_taproot) + + @property + def is_segwit(self): + return ( + (self.wsh and self.miniscript) or (self.wpkh and self.key) or self.taproot + ) + + @property + def is_pkh(self): + return self.key is not None and not self.taproot + + @property + def is_taproot(self): + return self.taproot + + @property + def is_basic_multisig(self) -> bool: + # TODO: should be true for taproot basic multisig with NUMS as internal key + # Sortedmulti is subclass of Multi + return bool(self.miniscript and isinstance(self.miniscript, Multi)) + + @property + def is_sorted(self) -> bool: + return bool(self.is_basic_multisig and isinstance(self.miniscript, Sortedmulti)) + + def scriptpubkey_type(self): + if self.is_taproot: + return "p2tr" + if self.sh: + return "p2sh" + if self.is_pkh: + if self.is_legacy: + return "p2pkh" + if self.is_segwit: + return "p2wpkh" + else: + return "p2wsh" + + @property + def brief_policy(self): + if self.taptree: + return "taptree" + if self.key: + return "single key" + if self.is_basic_multisig: + return ( + str(self.miniscript.args[0]) + + " of " + + str(len(self.keys)) + + " multisig" + + (" (sorted)" if self.is_sorted else "") + ) + return "miniscript" + + @property + def full_policy(self): + if (self.key and not self.taptree) or self.is_basic_multisig: + return self.brief_policy + s = str(self.miniscript or self) + for i, k in enumerate(self.keys): + s = s.replace(str(k), chr(65 + i)) + return s + + def derive(self, idx, branch_index=None): + if self.miniscript: + return type(self)( + self.miniscript.derive(idx, branch_index), + self.sh, + self.wsh, + None, + self.wpkh, + self.taproot, + ) + else: + return type(self)( + None, + self.sh, + self.wsh, + self.key.derive(idx, branch_index), + self.wpkh, + self.taproot, + self.taptree.derive(idx, branch_index), + ) + + def to_public(self): + if self.miniscript: + return type(self)( + self.miniscript.to_public(), + self.sh, + self.wsh, + None, + self.wpkh, + self.taproot, + ) + else: + return type(self)( + None, + self.sh, + self.wsh, + self.key.to_public(), + self.wpkh, + self.taproot, + self.taptree.to_public(), + ) + + def owns(self, psbt_scope): + """Checks if psbt input or output belongs to this descriptor""" + # we can't check if we don't know script_pubkey + if psbt_scope.script_pubkey is None: + return False + # quick check of script_pubkey type + if psbt_scope.script_pubkey.script_type() != self.scriptpubkey_type(): + return False + for pub, der in psbt_scope.bip32_derivations.items(): + # check of the fingerprints + for k in self.keys: + if not k.is_extended: + continue + res = k.check_derivation(der) + if res: + idx, branch_idx = res + sc = self.derive(idx, branch_index=branch_idx).script_pubkey() + # if derivation is found but scriptpubkey doesn't match - fail + return sc == psbt_scope.script_pubkey + for pub, (leafs, der) in psbt_scope.taproot_bip32_derivations.items(): + # check of the fingerprints + for k in self.keys: + if not k.is_extended: + continue + res = k.check_derivation(der) + if res: + idx, branch_idx = res + sc = self.derive(idx, branch_index=branch_idx).script_pubkey() + # if derivation is found but scriptpubkey doesn't match - fail + return sc == psbt_scope.script_pubkey + return False + + def check_derivation(self, derivation_path): + for k in self.keys: + # returns a tuple branch_idx, idx + der = k.check_derivation(derivation_path) + if der is not None: + return der + return None + + def witness_script(self): + if self.wsh and self.miniscript is not None: + return script.Script(self.miniscript.compile()) + + def redeem_script(self): + if not self.sh: + return None + if self.miniscript: + if not self.wsh: + return script.Script(self.miniscript.compile()) + else: + return script.p2wsh(script.Script(self.miniscript.compile())) + else: + return script.p2wpkh(self.key) + + def script_pubkey(self): + # covers sh-wpkh, sh and sh-wsh + if self.taproot: + return script.p2tr(self.key, self.taptree) + if self.sh: + return script.p2sh(self.redeem_script()) + if self.wsh: + return script.p2wsh(self.witness_script()) + if self.miniscript: + return script.Script(self.miniscript.compile()) + if self.wpkh: + return script.p2wpkh(self.key) + return script.p2pkh(self.key) + + def address(self, network=NETWORKS["main"]): + return self.script_pubkey().address(network) + + @property + def keys(self): + if self.taptree and self.key: + return [self.key] + self.taptree.keys + elif self.taptree: + return self.taptree.keys + elif self.key: + return [self.key] + return self.miniscript.keys + + @classmethod + def from_string(cls, desc): + s = BytesIO(desc.encode()) + res = cls.read_from(s) + left = s.read() + if len(left) > 0 and not left.startswith(b"#"): + raise DescriptorError("Unexpected characters after descriptor: %r" % left) + return res + + @classmethod + def read_from(cls, s): + # starts with sh(wsh()), sh() or wsh() + start = s.read(7) + sh = False + wsh = False + wpkh = False + is_miniscript = True + taproot = False + taptree = TapTree() + if start.startswith(b"tr("): + taproot = True + s.seek(-4, 1) + elif start.startswith(b"sh(wsh("): + sh = True + wsh = True + elif start.startswith(b"wsh("): + sh = False + wsh = True + s.seek(-3, 1) + elif start.startswith(b"sh(wpkh"): + is_miniscript = False + sh = True + wpkh = True + assert s.read(1) == b"(" + elif start.startswith(b"wpkh("): + is_miniscript = False + wpkh = True + s.seek(-2, 1) + elif start.startswith(b"pkh("): + is_miniscript = False + s.seek(-3, 1) + elif start.startswith(b"sh("): + sh = True + wsh = False + s.seek(-4, 1) + else: + raise ValueError("Invalid descriptor (starts with '%s')" % start.decode()) + # taproot always has a key, and may have taptree miniscript + if taproot: + miniscript = None + key = Key.read_from(s, taproot=True) + nbrackets = 1 + c = s.read(1) + # TODO: should it be ok to pass just taptree without a key? + # check if we have taptree after the key + if c != b",": + s.seek(-1, 1) + else: + taptree = TapTree.read_from(s) + elif is_miniscript: + miniscript = Miniscript.read_from(s) + key = None + nbrackets = int(sh) + int(wsh) + # single key for sure + else: + miniscript = None + key = Key.read_from(s, taproot=taproot) + nbrackets = 1 + int(sh) + end = s.read(nbrackets) + if end != b")" * nbrackets: + raise ValueError( + "Invalid descriptor (expected ')' but ends with '%s')" % end.decode() + ) + return cls( + miniscript, + sh=sh, + wsh=wsh, + key=key, + wpkh=wpkh, + taproot=taproot, + taptree=taptree, + ) + + def to_string(self): + if self.taproot: + if self.taptree: + return "tr(%s,%s)" % (self.key, self.taptree) + return "tr(%s)" % self.key + if self.miniscript is not None: + res = str(self.miniscript) + if self.wsh: + res = "wsh(%s)" % res + else: + if self.wpkh: + res = "wpkh(%s)" % self.key + else: + res = "pkh(%s)" % self.key + if self.sh: + res = "sh(%s)" % res + return res diff --git a/bitcoin_client/ledger_bitcoin/embit/descriptor/errors.py b/bitcoin_client/ledger_bitcoin/embit/descriptor/errors.py new file mode 100644 index 000000000..b125f9f6c --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/descriptor/errors.py @@ -0,0 +1,17 @@ +from ..base import EmbitError + + +class DescriptorError(EmbitError): + pass + + +class MiniscriptError(DescriptorError): + pass + + +class ArgumentError(MiniscriptError): + pass + + +class KeyError(ArgumentError): + pass diff --git a/bitcoin_client/ledger_bitcoin/embit/descriptor/miniscript.py b/bitcoin_client/ledger_bitcoin/embit/descriptor/miniscript.py new file mode 100644 index 000000000..397317f52 --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/descriptor/miniscript.py @@ -0,0 +1,1070 @@ +from ..misc import read_until +from .errors import MiniscriptError +from .base import DescriptorBase +from .arguments import Key, KeyHash, Number, Raw32, Raw20 + + +class Miniscript(DescriptorBase): + def __init__(self, *args, **kwargs): + self.args = args + self.taproot = kwargs.get("taproot", False) + + def compile(self): + return self.inner_compile() + + def verify(self): + for arg in self.args: + if isinstance(arg, Miniscript): + arg.verify() + + @property + def keys(self): + return sum( + [arg.keys for arg in self.args if isinstance(arg, Miniscript)], + [k for k in self.args if isinstance(k, Key) or isinstance(k, KeyHash)], + ) + + def derive(self, idx, branch_index=None): + args = [ + arg.derive(idx, branch_index) if hasattr(arg, "derive") else arg + for arg in self.args + ] + return type(self)(*args, taproot=self.taproot) + + def to_public(self): + args = [ + arg.to_public() if hasattr(arg, "to_public") else arg for arg in self.args + ] + return type(self)(*args, taproot=self.taproot) + + def branch(self, branch_index): + args = [ + arg.branch(branch_index) if hasattr(arg, "branch") else arg + for arg in self.args + ] + return type(self)(*args, taproot=self.taproot) + + @property + def properties(self): + return self.PROPS + + @property + def type(self): + return self.TYPE + + @classmethod + def read_from(cls, s, taproot=False): + op, char = read_until(s, b"(,)") + op = op.decode() + wrappers = "" + if ":" in op: + wrappers, op = op.split(":") + if op not in OPERATOR_NAMES: + raise MiniscriptError("Unknown operator '%s'" % op) + # number of arguments, classes of args, compile fn, type, validity checker + MiniscriptCls = OPERATORS[OPERATOR_NAMES.index(op)] + if MiniscriptCls.NARGS != 0 and char != b"(": + raise MiniscriptError("Missing operator") + + if MiniscriptCls.NARGS is None or MiniscriptCls.NARGS > 0: + args = MiniscriptCls.read_arguments(s, taproot=taproot) + else: + s.seek(-1, 1) + args = [] + miniscript = MiniscriptCls(*args, taproot=taproot) + for w in reversed(wrappers): + if w not in WRAPPER_NAMES: + raise MiniscriptError("Unknown wrapper") + WrapperCls = WRAPPERS[WRAPPER_NAMES.index(w)] + miniscript = WrapperCls(miniscript, taproot=taproot) + return miniscript + + @classmethod + def read_arguments(cls, s, taproot=False): + args = [] + if cls.NARGS is None: + if type(cls.ARGCLS) == tuple: + firstcls, nextcls = cls.ARGCLS + else: + firstcls, nextcls = cls.ARGCLS, cls.ARGCLS + args.append(firstcls.read_from(s, taproot=taproot)) + while True: + char = s.read(1) + if char == b",": + args.append(nextcls.read_from(s, taproot=taproot)) + elif char == b")": + break + else: + raise MiniscriptError( + "Expected , or ), got: %s" % (char + s.read()) + ) + else: + for i in range(cls.NARGS): + args.append(cls.ARGCLS.read_from(s, taproot=taproot)) + if i < cls.NARGS - 1: + char = s.read(1) + if char != b",": + raise MiniscriptError("Missing arguments, %s" % char) + char = s.read(1) + if char != b")": + raise MiniscriptError("Expected ) got %s" % (char + s.read())) + return args + + def __str__(self): + return type(self).NAME + "(" + ",".join([str(arg) for arg in self.args]) + ")" + + def __len__(self): + """Length of the compiled script, override this if you know the length""" + return len(self.compile()) + + def len_args(self): + return sum([len(arg) for arg in self.args]) + + +########### Known fragments (miniscript operators) ############## + + +class OneArg(Miniscript): + NARGS = 1 + + # small handy functions + @property + def arg(self): + return self.args[0] + + @property + def carg(self): + return self.arg.compile() + + +class NumberZero(Miniscript): + # 0 + + NARGS = 0 + NAME = "0" + TYPE = "B" + PROPS = "zud" + + def inner_compile(self): + return b"\x00" + + def __len__(self): + return 1 + + +class NumberOne(Miniscript): + # 1 + + NARGS = 0 + NAME = "1" + TYPE = "B" + PROPS = "zu" + + def inner_compile(self): + return b"\x51" + + def __len__(self): + return 1 + + +class PkK(OneArg): + # + NAME = "pk_k" + ARGCLS = Key + TYPE = "K" + PROPS = "ondu" + + def inner_compile(self): + return self.carg + + def __len__(self): + return self.len_args() + + +class PkH(OneArg): + # DUP HASH160 EQUALVERIFY + NAME = "pk_h" + ARGCLS = KeyHash + TYPE = "K" + PROPS = "ndu" + + def inner_compile(self): + return b"\x76\xa9" + self.carg + b"\x88" + + def __len__(self): + return self.len_args() + 3 + + +class Older(OneArg): + # CHECKSEQUENCEVERIFY + NAME = "older" + ARGCLS = Number + TYPE = "B" + PROPS = "z" + + def inner_compile(self): + return self.carg + b"\xb2" + + def verify(self): + super().verify() + if (self.arg.num < 1) or (self.arg.num >= 0x80000000): + raise MiniscriptError( + "%s should have an argument in range [1, 0x80000000)" % self.NAME + ) + + def __len__(self): + return self.len_args() + 1 + + +class After(Older): + # CHECKLOCKTIMEVERIFY + NAME = "after" + + def inner_compile(self): + return self.carg + b"\xb1" + + +class Sha256(OneArg): + # SIZE <32> EQUALVERIFY SHA256 EQUAL + NAME = "sha256" + ARGCLS = Raw32 + TYPE = "B" + PROPS = "ondu" + + def inner_compile(self): + return b"\x82" + Number(32).compile() + b"\x88\xa8" + self.carg + b"\x87" + + def __len__(self): + return self.len_args() + 6 + + +class Hash256(Sha256): + # SIZE <32> EQUALVERIFY HASH256 EQUAL + NAME = "hash256" + + def inner_compile(self): + return b"\x82" + Number(32).compile() + b"\x88\xaa" + self.carg + b"\x87" + + +class Ripemd160(Sha256): + # SIZE <32> EQUALVERIFY RIPEMD160 EQUAL + NAME = "ripemd160" + ARGCLS = Raw20 + + def inner_compile(self): + return b"\x82" + Number(32).compile() + b"\x88\xa6" + self.carg + b"\x87" + + +class Hash160(Ripemd160): + # SIZE <32> EQUALVERIFY HASH160 EQUAL + NAME = "hash160" + + def inner_compile(self): + return b"\x82" + Number(32).compile() + b"\x88\xa9" + self.carg + b"\x87" + + +class AndOr(Miniscript): + # [X] NOTIF [Z] ELSE [Y] ENDIF + NAME = "andor" + NARGS = 3 + ARGCLS = Miniscript + + @property + def type(self): + # same as Y/Z + return self.args[1].type + + def verify(self): + # requires: X is Bdu; Y and Z are both B, K, or V + super().verify() + if self.args[0].type != "B": + raise MiniscriptError("andor: X should be 'B'") + px = self.args[0].properties + if "d" not in px and "u" not in px: + raise MiniscriptError("andor: X should be 'du'") + if self.args[1].type != self.args[2].type: + raise MiniscriptError("andor: Y and Z should have the same types") + if self.args[1].type not in "BKV": + raise MiniscriptError("andor: Y and Z should be B K or V") + + @property + def properties(self): + # props: z=zXzYzZ; o=zXoYoZ or oXzYzZ; u=uYuZ; d=dZ + props = "" + px, py, pz = [arg.properties for arg in self.args] + if "z" in px and "z" in py and "z" in pz: + props += "z" + if ("z" in px and "o" in py and "o" in pz) or ( + "o" in px and "z" in py and "z" in pz + ): + props += "o" + if "u" in py and "u" in pz: + props += "u" + if "d" in pz: + props += "d" + return props + + def inner_compile(self): + return ( + self.args[0].compile() + + b"\x64" + + self.args[2].compile() + + b"\x67" + + self.args[1].compile() + + b"\x68" + ) + + def __len__(self): + return self.len_args() + 3 + + +class AndV(Miniscript): + # [X] [Y] + NAME = "and_v" + NARGS = 2 + ARGCLS = Miniscript + + def inner_compile(self): + return self.args[0].compile() + self.args[1].compile() + + def __len__(self): + return self.len_args() + + def verify(self): + # X is V; Y is B, K, or V + super().verify() + if self.args[0].type != "V": + raise MiniscriptError("and_v: X should be 'V'") + if self.args[1].type not in "BKV": + raise MiniscriptError("and_v: Y should be B K or V") + + @property + def type(self): + # same as Y + return self.args[1].type + + @property + def properties(self): + # z=zXzY; o=zXoY or zYoX; n=nX or zXnY; u=uY + px, py = [arg.properties for arg in self.args] + props = "" + if "z" in px and "z" in py: + props += "z" + if ("z" in px and "o" in py) or ("z" in py and "o" in px): + props += "o" + if "n" in px or ("z" in px and "n" in py): + props += "n" + if "u" in py: + props += "u" + return props + + +class AndB(Miniscript): + # [X] [Y] BOOLAND + NAME = "and_b" + NARGS = 2 + ARGCLS = Miniscript + TYPE = "B" + + def inner_compile(self): + return self.args[0].compile() + self.args[1].compile() + b"\x9a" + + def __len__(self): + return self.len_args() + 1 + + def verify(self): + # X is B; Y is W + super().verify() + if self.args[0].type != "B": + raise MiniscriptError("and_b: X should be B") + if self.args[1].type != "W": + raise MiniscriptError("and_b: Y should be W") + + @property + def properties(self): + # z=zXzY; o=zXoY or zYoX; n=nX or zXnY; d=dXdY; u + px, py = [arg.properties for arg in self.args] + props = "" + if "z" in px and "z" in py: + props += "z" + if ("z" in px and "o" in py) or ("z" in py and "o" in px): + props += "o" + if "n" in px or ("z" in px and "n" in py): + props += "n" + if "d" in px and "d" in py: + props += "d" + props += "u" + return props + + +class AndN(Miniscript): + # [X] NOTIF 0 ELSE [Y] ENDIF + # andor(X,Y,0) + NAME = "and_n" + NARGS = 2 + ARGCLS = Miniscript + + def inner_compile(self): + return ( + self.args[0].compile() + + b"\x64" + + Number(0).compile() + + b"\x67" + + self.args[1].compile() + + b"\x68" + ) + + def __len__(self): + return self.len_args() + 4 + + @property + def type(self): + # same as Y/Z + return self.args[1].type + + def verify(self): + # requires: X is Bdu; Y and Z are both B, K, or V + super().verify() + if self.args[0].type != "B": + raise MiniscriptError("and_n: X should be 'B'") + px = self.args[0].properties + if "d" not in px and "u" not in px: + raise MiniscriptError("and_n: X should be 'du'") + if self.args[1].type != "B": + raise MiniscriptError("and_n: Y should be B") + + @property + def properties(self): + # props: z=zXzYzZ; o=zXoYoZ or oXzYzZ; u=uYuZ; d=dZ + props = "" + px, py = [arg.properties for arg in self.args] + pz = "zud" + if "z" in px and "z" in py and "z" in pz: + props += "z" + if ("z" in px and "o" in py and "o" in pz) or ( + "o" in px and "z" in py and "z" in pz + ): + props += "o" + if "u" in py and "u" in pz: + props += "u" + if "d" in pz: + props += "d" + return props + + +class OrB(Miniscript): + # [X] [Z] BOOLOR + NAME = "or_b" + NARGS = 2 + ARGCLS = Miniscript + TYPE = "B" + + def inner_compile(self): + return self.args[0].compile() + self.args[1].compile() + b"\x9b" + + def __len__(self): + return self.len_args() + 1 + + def verify(self): + # X is Bd; Z is Wd + super().verify() + if self.args[0].type != "B": + raise MiniscriptError("or_b: X should be B") + if "d" not in self.args[0].properties: + raise MiniscriptError("or_b: X should be d") + if self.args[1].type != "W": + raise MiniscriptError("or_b: Z should be W") + if "d" not in self.args[1].properties: + raise MiniscriptError("or_b: Z should be d") + + @property + def properties(self): + # z=zXzZ; o=zXoZ or zZoX; d; u + props = "" + px, pz = [arg.properties for arg in self.args] + if "z" in px and "z" in pz: + props += "z" + if ("z" in px and "o" in pz) or ("z" in pz and "o" in px): + props += "o" + props += "du" + return props + + +class OrC(Miniscript): + # [X] NOTIF [Z] ENDIF + NAME = "or_c" + NARGS = 2 + ARGCLS = Miniscript + TYPE = "V" + + def inner_compile(self): + return self.args[0].compile() + b"\x64" + self.args[1].compile() + b"\x68" + + def __len__(self): + return self.len_args() + 2 + + def verify(self): + # X is Bdu; Z is V + super().verify() + if self.args[0].type != "B": + raise MiniscriptError("or_c: X should be B") + if self.args[1].type != "V": + raise MiniscriptError("or_c: Z should be V") + px = self.args[0].properties + if "d" not in px or "u" not in px: + raise MiniscriptError("or_c: X should be du") + + @property + def properties(self): + # z=zXzZ; o=oXzZ + props = "" + px, pz = [arg.properties for arg in self.args] + if "z" in px and "z" in pz: + props += "z" + if "o" in px and "z" in pz: + props += "o" + return props + + +class OrD(Miniscript): + # [X] IFDUP NOTIF [Z] ENDIF + NAME = "or_d" + NARGS = 2 + ARGCLS = Miniscript + TYPE = "B" + + def inner_compile(self): + return self.args[0].compile() + b"\x73\x64" + self.args[1].compile() + b"\x68" + + def __len__(self): + return self.len_args() + 3 + + def verify(self): + # X is Bdu; Z is B + super().verify() + if self.args[0].type != "B": + raise MiniscriptError("or_d: X should be B") + if self.args[1].type != "B": + raise MiniscriptError("or_d: Z should be B") + px = self.args[0].properties + if "d" not in px or "u" not in px: + raise MiniscriptError("or_d: X should be du") + + @property + def properties(self): + # z=zXzZ; o=oXzZ; d=dZ; u=uZ + props = "" + px, pz = [arg.properties for arg in self.args] + if "z" in px and "z" in pz: + props += "z" + if "o" in px and "z" in pz: + props += "o" + if "d" in pz: + props += "d" + if "u" in pz: + props += "u" + return props + + +class OrI(Miniscript): + # IF [X] ELSE [Z] ENDIF + NAME = "or_i" + NARGS = 2 + ARGCLS = Miniscript + + def inner_compile(self): + return ( + b"\x63" + + self.args[0].compile() + + b"\x67" + + self.args[1].compile() + + b"\x68" + ) + + def __len__(self): + return self.len_args() + 3 + + def verify(self): + # both are B, K, or V + super().verify() + if self.args[0].type != self.args[1].type: + raise MiniscriptError("or_i: X and Z should be the same type") + if self.args[0].type not in "BKV": + raise MiniscriptError("or_i: X and Z should be B K or V") + + @property + def type(self): + return self.args[0].type + + @property + def properties(self): + # o=zXzZ; u=uXuZ; d=dX or dZ + props = "" + px, pz = [arg.properties for arg in self.args] + if "z" in px and "z" in pz: + props += "o" + if "u" in px and "u" in pz: + props += "u" + if "d" in px or "d" in pz: + props += "d" + return props + + +class Thresh(Miniscript): + # [X1] [X2] ADD ... [Xn] ADD ... EQUAL + NAME = "thresh" + NARGS = None + ARGCLS = (Number, Miniscript) + TYPE = "B" + + def inner_compile(self): + return ( + self.args[1].compile() + + b"".join([arg.compile() + b"\x93" for arg in self.args[2:]]) + + self.args[0].compile() + + b"\x87" + ) + + def __len__(self): + return self.len_args() + len(self.args) - 1 + + def verify(self): + # 1 <= k <= n; X1 is Bdu; others are Wdu + super().verify() + if self.args[0].num < 1 or self.args[0].num >= len(self.args): + raise MiniscriptError( + "thresh: Invalid k! Should be 1 <= k <= %d, got %d" + % (len(self.args) - 1, self.args[0].num) + ) + if self.args[1].type != "B": + raise MiniscriptError("thresh: X1 should be B") + px = self.args[1].properties + if "d" not in px or "u" not in px: + raise MiniscriptError("thresh: X1 should be du") + for i, arg in enumerate(self.args[2:]): + if arg.type != "W": + raise MiniscriptError("thresh: X%d should be W" % (i + 1)) + p = arg.properties + if "d" not in p or "u" not in p: + raise MiniscriptError("thresh: X%d should be du" % (i + 1)) + + @property + def properties(self): + # z=all are z; o=all are z except one is o; d; u + props = "" + parr = [arg.properties for arg in self.args[1:]] + zarr = ["z" for p in parr if "z" in p] + if len(zarr) == len(parr): + props += "z" + noz = [p for p in parr if "z" not in p] + if len(noz) == 1 and "o" in noz[0]: + props += "o" + props += "du" + return props + + +class Multi(Miniscript): + # ... CHECKMULTISIG + NAME = "multi" + NARGS = None + ARGCLS = (Number, Key) + TYPE = "B" + PROPS = "ndu" + _expected_taproot = False + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + if self.taproot is not self._expected_taproot: + raise MiniscriptError( + "%s can't be used if taproot is %s" % (self.NAME, self.taproot) + ) + + def inner_compile(self): + return ( + b"".join([arg.compile() for arg in self.args]) + + Number(len(self.args) - 1).compile() + + b"\xae" + ) + + def __len__(self): + return self.len_args() + 2 + + def verify(self): + super().verify() + if self.args[0].num < 1 or self.args[0].num > (len(self.args) - 1): + raise MiniscriptError( + "multi: 1 <= k <= %d, got %d" % ((len(self.args) - 1), self.args[0].num) + ) + + +class Sortedmulti(Multi): + # ... CHECKMULTISIG + NAME = "sortedmulti" + + def inner_compile(self): + return ( + self.args[0].compile() + + b"".join(sorted([arg.compile() for arg in self.args[1:]])) + + Number(len(self.args) - 1).compile() + + b"\xae" + ) + + +class MultiA(Multi): + # CHECKSIG CHECKSIGADD ... CHECKSIGNADD NUMEQUAL + NAME = "multi_a" + _expected_taproot = True + + def inner_compile(self): + return ( + self.args[1].compile() + + b"\xac" + + b"".join([arg.compile() + b"\xba" for arg in self.args[2:]]) + + self.args[0].compile() + + b"\x9c" + ) + + def __len__(self): + return self.len_args() + len(self.args) + + +class SortedmultiA(MultiA): + # CHECKSIG CHECKSIGADD ... CHECKSIGNADD NUMEQUAL + NAME = "sortedmulti_a" + + def inner_compile(self): + keys = list(sorted([k.compile() for k in self.args[1:]])) + return ( + keys[0] + + b"\xac" + + b"".join([k + b"\xba" for k in keys[1:]]) + + self.args[0].compile() + + b"\x9c" + ) + + +class Pk(OneArg): + # CHECKSIG + NAME = "pk" + ARGCLS = Key + TYPE = "B" + PROPS = "ondu" + + def inner_compile(self): + return self.carg + b"\xac" + + def __len__(self): + return self.len_args() + 1 + + +class Pkh(OneArg): + # DUP HASH160 EQUALVERIFY CHECKSIG + NAME = "pkh" + ARGCLS = KeyHash + TYPE = "B" + PROPS = "ndu" + + def inner_compile(self): + return b"\x76\xa9" + self.carg + b"\x88\xac" + + def __len__(self): + return self.len_args() + 4 + + # TODO: 0, 1 - they are without brackets, so it should be different... + + +OPERATORS = [ + NumberZero, + NumberOne, + PkK, + PkH, + Older, + After, + Sha256, + Hash256, + Ripemd160, + Hash160, + AndOr, + AndV, + AndB, + AndN, + OrB, + OrC, + OrD, + OrI, + Thresh, + Multi, + Sortedmulti, + MultiA, + SortedmultiA, + Pk, + Pkh, +] +OPERATOR_NAMES = [cls.NAME for cls in OPERATORS] + + +class Wrapper(OneArg): + ARGCLS = Miniscript + + @property + def op(self): + return type(self).__name__.lower() + + def __str__(self): + # more wrappers follow + if isinstance(self.arg, Wrapper): + return self.op + str(self.arg) + # we are the last wrapper + return self.op + ":" + str(self.arg) + + +class A(Wrapper): + # TOALTSTACK [X] FROMALTSTACK + TYPE = "W" + + def inner_compile(self): + return b"\x6b" + self.carg + b"\x6c" + + def __len__(self): + return len(self.arg) + 2 + + def verify(self): + super().verify() + if self.arg.type != "B": + raise MiniscriptError("a: X should be B") + + @property + def properties(self): + props = "" + px = self.arg.properties + if "d" in px: + props += "d" + if "u" in px: + props += "u" + return props + + +class S(Wrapper): + # SWAP [X] + TYPE = "W" + + def inner_compile(self): + return b"\x7c" + self.carg + + def __len__(self): + return len(self.arg) + 1 + + def verify(self): + super().verify() + if self.arg.type != "B": + raise MiniscriptError("s: X should be B") + if "o" not in self.arg.properties: + raise MiniscriptError("s: X should be o") + + @property + def properties(self): + props = "" + px = self.arg.properties + if "d" in px: + props += "d" + if "u" in px: + props += "u" + return props + + +class C(Wrapper): + # [X] CHECKSIG + TYPE = "B" + + def inner_compile(self): + return self.carg + b"\xac" + + def __len__(self): + return len(self.arg) + 1 + + def verify(self): + super().verify() + if self.arg.type != "K": + raise MiniscriptError("c: X should be K") + + @property + def properties(self): + props = "" + px = self.arg.properties + for p in ["o", "n", "d"]: + if p in px: + props += p + props += "u" + return props + + +class T(Wrapper): + # [X] 1 + TYPE = "B" + + def inner_compile(self): + return self.carg + Number(1).compile() + + def __len__(self): + return len(self.arg) + 1 + + @property + def properties(self): + # z=zXzY; o=zXoY or zYoX; n=nX or zXnY; u=uY + px = self.arg.properties + py = "zu" + props = "" + if "z" in px and "z" in py: + props += "z" + if ("z" in px and "o" in py) or ("z" in py and "o" in px): + props += "o" + if "n" in px or ("z" in px and "n" in py): + props += "n" + if "u" in py: + props += "u" + return props + + +class D(Wrapper): + # DUP IF [X] ENDIF + TYPE = "B" + + def inner_compile(self): + return b"\x76\x63" + self.carg + b"\x68" + + def __len__(self): + return len(self.arg) + 3 + + def verify(self): + super().verify() + if self.arg.type != "V": + raise MiniscriptError("d: X should be V") + if "z" not in self.arg.properties: + raise MiniscriptError("d: X should be z") + + @property + def properties(self): + # https://github.com/bitcoin/bitcoin/pull/24906 + if self.taproot: + props = "ndu" + else: + props = "nd" + px = self.arg.properties + if "z" in px: + props += "o" + return props + + +class V(Wrapper): + # [X] VERIFY (or VERIFY version of last opcode in [X]) + TYPE = "V" + + def inner_compile(self): + """Checks last check code and makes it verify""" + if self.carg[-1] in [0xAC, 0xAE, 0x9C, 0x87]: + return self.carg[:-1] + bytes([self.carg[-1] + 1]) + return self.carg + b"\x69" + + def verify(self): + super().verify() + if self.arg.type != "B": + raise MiniscriptError("v: X should be B") + + @property + def properties(self): + props = "" + px = self.arg.properties + for p in ["z", "o", "n"]: + if p in px: + props += p + return props + + +class J(Wrapper): + # SIZE 0NOTEQUAL IF [X] ENDIF + TYPE = "B" + + def inner_compile(self): + return b"\x82\x92\x63" + self.carg + b"\x68" + + def verify(self): + super().verify() + if self.arg.type != "B": + raise MiniscriptError("j: X should be B") + if "n" not in self.arg.properties: + raise MiniscriptError("j: X should be n") + + @property + def properties(self): + props = "nd" + px = self.arg.properties + for p in ["o", "u"]: + if p in px: + props += p + return props + + +class N(Wrapper): + # [X] 0NOTEQUAL + TYPE = "B" + + def inner_compile(self): + return self.carg + b"\x92" + + def __len__(self): + return len(self.arg) + 1 + + def verify(self): + super().verify() + if self.arg.type != "B": + raise MiniscriptError("n: X should be B") + + @property + def properties(self): + props = "u" + px = self.arg.properties + for p in ["z", "o", "n", "d"]: + if p in px: + props += p + return props + + +class L(Wrapper): + # IF 0 ELSE [X] ENDIF + TYPE = "B" + + def inner_compile(self): + return b"\x63" + Number(0).compile() + b"\x67" + self.carg + b"\x68" + + def __len__(self): + return len(self.arg) + 4 + + def verify(self): + # both are B, K, or V + super().verify() + if self.arg.type != "B": + raise MiniscriptError("or_i: X and Z should be the same type") + + @property + def properties(self): + # o=zXzZ; u=uXuZ; d=dX or dZ + props = "d" + pz = self.arg.properties + if "z" in pz: + props += "o" + if "u" in pz: + props += "u" + return props + + +class U(L): + # IF [X] ELSE 0 ENDIF + def inner_compile(self): + return b"\x63" + self.carg + b"\x67" + Number(0).compile() + b"\x68" + + def __len__(self): + return len(self.arg) + 4 + + +WRAPPERS = [A, S, C, T, D, V, J, N, L, U] +WRAPPER_NAMES = [w.__name__.lower() for w in WRAPPERS] diff --git a/bitcoin_client/ledger_bitcoin/embit/descriptor/taptree.py b/bitcoin_client/ledger_bitcoin/embit/descriptor/taptree.py new file mode 100644 index 000000000..7f611e5ec --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/descriptor/taptree.py @@ -0,0 +1,151 @@ +from .errors import MiniscriptError +from .base import DescriptorBase +from .miniscript import Miniscript +from ..hashes import tagged_hash +from ..script import Script + + +class TapLeaf(DescriptorBase): + def __init__(self, miniscript=None, version=0xC0): + self.miniscript = miniscript + self.version = version + + def __str__(self): + return str(self.miniscript) + + @classmethod + def read_from(cls, s): + ms = Miniscript.read_from(s, taproot=True) + return cls(ms) + + def serialize(self): + if self.miniscript is None: + return b"" + return bytes([self.version]) + Script(self.miniscript.compile()).serialize() + + @property + def keys(self): + return self.miniscript.keys + + def derive(self, *args, **kwargs): + if self.miniscript is None: + return type(self)(None, version=self.version) + return type(self)( + self.miniscript.derive(*args, **kwargs), + self.version, + ) + + def branch(self, *args, **kwargs): + if self.miniscript is None: + return type(self)(None, version=self.version) + return type(self)( + self.miniscript.branch(*args, **kwargs), + self.version, + ) + + def to_public(self, *args, **kwargs): + if self.miniscript is None: + return type(self)(None, version=self.version) + return type(self)( + self.miniscript.to_public(*args, **kwargs), + self.version, + ) + + +def _tweak_helper(tree): + # https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki#constructing-and-spending-taproot-outputs + if isinstance(tree, TapTree): + tree = tree.tree + if isinstance(tree, TapLeaf): + # one leaf on this branch + h = tagged_hash("TapLeaf", tree.serialize()) + return ([(tree, b"")], h) + left, left_h = _tweak_helper(tree[0]) + right, right_h = _tweak_helper(tree[1]) + ret = [(leaf, c + right_h) for leaf, c in left] + [ + (leaf, c + left_h) for leaf, c in right + ] + if right_h < left_h: + left_h, right_h = right_h, left_h + return (ret, tagged_hash("TapBranch", left_h + right_h)) + + +class TapTree(DescriptorBase): + def __init__(self, tree=None): + """tree can be None, TapLeaf or a tuple (taptree, taptree)""" + self.tree = tree + # make sure all keys are taproot + for k in self.keys: + k.taproot = True + + def __bool__(self): + return bool(self.tree) + + def tweak(self): + if self.tree is None: + return b"" + _, h = _tweak_helper(self.tree) + return h + + @property + def keys(self): + if self.tree is None: + return [] + if isinstance(self.tree, TapLeaf): + return self.tree.keys + left, right = self.tree + return left.keys + right.keys + + @classmethod + def read_from(cls, s): + c = s.read(1) + if len(c) == 0: + return cls() + if c == b"{": # more than one miniscript + left = cls.read_from(s) + c = s.read(1) + if c == b"}": + return left + if c != b",": + raise MiniscriptError("Invalid taptree syntax: expected ','") + right = cls.read_from(s) + if s.read(1) != b"}": + raise MiniscriptError("Invalid taptree syntax: expected '}'") + return cls((left, right)) + s.seek(-1, 1) + ms = TapLeaf.read_from(s) + return cls(ms) + + def derive(self, *args, **kwargs): + if self.tree is None: + return type(self)(None) + if isinstance(self.tree, TapLeaf): + return type(self)(self.tree.derive(*args, **kwargs)) + left, right = self.tree + return type(self)((left.derive(*args, **kwargs), right.derive(*args, **kwargs))) + + def branch(self, *args, **kwargs): + if self.tree is None: + return type(self)(None) + if isinstance(self.tree, TapLeaf): + return type(self)(self.tree.branch(*args, **kwargs)) + left, right = self.tree + return type(self)((left.branch(*args, **kwargs), right.branch(*args, **kwargs))) + + def to_public(self, *args, **kwargs): + if self.tree is None: + return type(self)(None) + if isinstance(self.tree, TapLeaf): + return type(self)(self.tree.to_public(*args, **kwargs)) + left, right = self.tree + return type(self)( + (left.to_public(*args, **kwargs), right.to_public(*args, **kwargs)) + ) + + def __str__(self): + if self.tree is None: + return "" + if isinstance(self.tree, TapLeaf): + return str(self.tree) + (left, right) = self.tree + return "{%s,%s}" % (left, right) diff --git a/bitcoin_client/ledger_bitcoin/embit/ec.py b/bitcoin_client/ledger_bitcoin/embit/ec.py new file mode 100644 index 000000000..a93fc7143 --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/ec.py @@ -0,0 +1,263 @@ +from . import base58 +from . import hashes +from .misc import secp256k1 +from .networks import NETWORKS +from .base import EmbitBase, EmbitError, EmbitKey +from binascii import hexlify, unhexlify + + +class ECError(EmbitError): + pass + + +class Signature(EmbitBase): + def __init__(self, sig): + self._sig = sig + + def write_to(self, stream) -> int: + return stream.write(secp256k1.ecdsa_signature_serialize_der(self._sig)) + + @classmethod + def read_from(cls, stream): + der = stream.read(2) + der += stream.read(der[1]) + return cls(secp256k1.ecdsa_signature_parse_der(der)) + + +class SchnorrSig(EmbitBase): + def __init__(self, sig): + assert len(sig) == 64 + self._sig = sig + + def write_to(self, stream) -> int: + return stream.write(self._sig) + + @classmethod + def read_from(cls, stream): + return cls(stream.read(64)) + + +class PublicKey(EmbitKey): + def __init__(self, point: bytes, compressed: bool = True): + self._point = point + self.compressed = compressed + + @classmethod + def read_from(cls, stream): + b = stream.read(1) + if b not in [b"\x02", b"\x03", b"\x04"]: + raise ECError("Invalid public key") + if b == b"\x04": + b += stream.read(64) + else: + b += stream.read(32) + try: + point = secp256k1.ec_pubkey_parse(b) + except Exception as e: + raise ECError(str(e)) + compressed = b[0] != 0x04 + return cls(point, compressed) + + def sec(self) -> bytes: + """Sec representation of the key""" + flag = secp256k1.EC_COMPRESSED if self.compressed else secp256k1.EC_UNCOMPRESSED + return secp256k1.ec_pubkey_serialize(self._point, flag) + + def xonly(self) -> bytes: + return self.sec()[1:33] + + def taproot_tweak(self, h=b""): + """Returns a tweaked public key""" + x = self.xonly() + tweak = hashes.tagged_hash("TapTweak", x + h) + if not secp256k1.ec_seckey_verify(tweak): + raise EmbitError("Tweak is too large") + point = secp256k1.ec_pubkey_parse(b"\x02" + x) + pub = secp256k1.ec_pubkey_add(point, tweak) + sec = secp256k1.ec_pubkey_serialize(pub) + return PublicKey.from_xonly(sec[1:33]) + + def write_to(self, stream) -> int: + return stream.write(self.sec()) + + def serialize(self) -> bytes: + return self.sec() + + def verify(self, sig, msg_hash) -> bool: + return bool(secp256k1.ecdsa_verify(sig._sig, msg_hash, self._point)) + + def _xonly(self): + """Returns internal representation of the xonly-pubkey (64 bytes)""" + pub, _ = secp256k1.xonly_pubkey_from_pubkey(self._point) + return pub + + @classmethod + def from_xonly(cls, data: bytes): + assert len(data) == 32 + return cls.parse(b"\x02" + data) + + def schnorr_verify(self, sig, msg_hash) -> bool: + return bool(secp256k1.schnorrsig_verify(sig._sig, msg_hash, self._xonly())) + + @classmethod + def from_string(cls, s): + return cls.parse(unhexlify(s)) + + @property + def is_private(self) -> bool: + return False + + def to_string(self): + return hexlify(self.sec()).decode() + + def __lt__(self, other): + # for lexagraphic ordering + return self.sec() < other.sec() + + def __gt__(self, other): + # for lexagraphic ordering + return self.sec() > other.sec() + + def __eq__(self, other): + return self.sec() == other.sec() + + def __hash__(self): + return hash(self._point) + + +class PrivateKey(EmbitKey): + def __init__(self, secret, compressed: bool = True, network=NETWORKS["main"]): + """Creates a private key from 32-byte array""" + if len(secret) != 32: + raise ECError("Secret should be 32-byte array") + if not secp256k1.ec_seckey_verify(secret): + raise ECError("Secret is not valid (larger then N?)") + self.compressed = compressed + self._secret = secret + self.network = network + + def wif(self, network=None) -> str: + """Export private key as Wallet Import Format string. + Prefix 0x80 is used for mainnet, 0xEF for testnet. + This class doesn't store this information though. + """ + if network is None: + network = self.network + prefix = network["wif"] + b = prefix + self._secret + if self.compressed: + b += bytes([0x01]) + return base58.encode_check(b) + + @property + def secret(self): + return self._secret + + def sec(self) -> bytes: + """Sec representation of the corresponding public key""" + return self.get_public_key().sec() + + def xonly(self) -> bytes: + return self.sec()[1:] + + def taproot_tweak(self, h=b""): + """Returns a tweaked private key""" + sec = self.sec() + negate = sec[0] != 0x02 + x = sec[1:33] + tweak = hashes.tagged_hash("TapTweak", x + h) + if not secp256k1.ec_seckey_verify(tweak): + raise EmbitError("Tweak is too large") + if negate: + secret = secp256k1.ec_privkey_negate(self._secret) + else: + secret = self._secret + res = secp256k1.ec_privkey_add(secret, tweak) + pk = PrivateKey(res) + if pk.sec()[0] == 0x03: + pk = PrivateKey(secp256k1.ec_privkey_negate(res)) + return pk + + @classmethod + def from_wif(cls, s): + """Import private key from Wallet Import Format string.""" + b = base58.decode_check(s) + prefix = b[:1] + network = None + for net in NETWORKS: + if NETWORKS[net]["wif"] == prefix: + network = NETWORKS[net] + secret = b[1:33] + compressed = False + if len(b) not in [33, 34]: + raise ECError("Wrong WIF length") + if len(b) == 34: + if b[-1] == 0x01: + compressed = True + else: + raise ECError("Wrong WIF compressed flag") + return cls(secret, compressed, network) + + # to unify API + def to_base58(self, network=None) -> str: + return self.wif(network) + + @classmethod + def from_base58(cls, s): + return cls.from_wif(s) + + def get_public_key(self) -> PublicKey: + return PublicKey(secp256k1.ec_pubkey_create(self._secret), self.compressed) + + def to_public(self) -> PublicKey: + """Alias to get_public_key for API consistency""" + return self.get_public_key() + + def sign(self, msg_hash, grind=True) -> Signature: + sig = Signature(secp256k1.ecdsa_sign(msg_hash, self._secret)) + if grind: + counter = 1 + while len(sig.serialize()) > 70: + sig = Signature( + secp256k1.ecdsa_sign( + msg_hash, self._secret, None, counter.to_bytes(32, "little") + ) + ) + counter += 1 + # just in case we get in infinite loop for some reason + if counter > 200: + break + return sig + + def schnorr_sign(self, msg_hash) -> SchnorrSig: + return SchnorrSig(secp256k1.schnorrsig_sign(msg_hash, self._secret)) + + def verify(self, sig, msg_hash) -> bool: + return self.get_public_key().verify(sig, msg_hash) + + def schnorr_verify(self, sig, msg_hash) -> bool: + return self.get_public_key().schnorr_verify(sig, msg_hash) + + def write_to(self, stream) -> int: + # return a copy of the secret + return stream.write(self._secret) + + def ecdh(self, public_key: PublicKey, hashfn=None, data=None) -> bytes: + pubkey_point = secp256k1.ec_pubkey_parse(public_key.sec()) + return secp256k1.ecdh(pubkey_point, self._secret, hashfn, data) + + @classmethod + def read_from(cls, stream): + # just to unify the API + return cls(stream.read(32)) + + @property + def is_private(self) -> bool: + return True + + +# Nothing up my sleeve point for no-internal-key taproot +# see https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki#constructing-and-spending-taproot-outputs +NUMS_PUBKEY = PublicKey.from_string( + "0250929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0" +) diff --git a/bitcoin_client/ledger_bitcoin/embit/hashes.py b/bitcoin_client/ledger_bitcoin/embit/hashes.py new file mode 100644 index 000000000..c5edd081f --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/hashes.py @@ -0,0 +1,41 @@ +import hashlib + +try: + # this will work with micropython and python < 3.10 + # but will raise and exception if ripemd is not supported (python3.10, openssl 3) + hashlib.new("ripemd160") + + def ripemd160(msg: bytes) -> bytes: + return hashlib.new("ripemd160", msg).digest() + +except: + # otherwise use pure python implementation + from .util.py_ripemd160 import ripemd160 + + +def double_sha256(msg: bytes) -> bytes: + """sha256(sha256(msg)) -> bytes""" + return hashlib.sha256(hashlib.sha256(msg).digest()).digest() + + +def hash160(msg: bytes) -> bytes: + """ripemd160(sha256(msg)) -> bytes""" + return ripemd160(hashlib.sha256(msg).digest()) + + +def sha256(msg: bytes) -> bytes: + """one-line sha256(msg) -> bytes""" + return hashlib.sha256(msg).digest() + + +def tagged_hash(tag: str, data: bytes) -> bytes: + """BIP-Schnorr tag-specific key derivation""" + hashtag = hashlib.sha256(tag.encode()).digest() + return hashlib.sha256(hashtag + hashtag + data).digest() + + +def tagged_hash_init(tag: str, data: bytes = b""): + """Prepares a tagged hash function to digest extra data""" + hashtag = hashlib.sha256(tag.encode()).digest() + h = hashlib.sha256(hashtag + hashtag + data) + return h diff --git a/bitcoin_client/ledger_bitcoin/embit/misc.py b/bitcoin_client/ledger_bitcoin/embit/misc.py new file mode 100644 index 000000000..fc2c8046d --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/misc.py @@ -0,0 +1,70 @@ +"""Misc utility functions used across embit""" +import sys + +# implementation-specific functions and libraries: +if sys.implementation.name == "micropython": + from micropython import const + import secp256k1 +else: + from .util import secp256k1 + + def const(x): + return x + + +try: + # if urandom is available from os module: + from os import urandom as urandom +except ImportError: + # otherwise - try reading from /dev/urandom + def urandom(n: int) -> bytes: + with open("/dev/urandom", "rb") as f: + return f.read(n) + + +def getrandbits(k: int) -> int: + b = urandom(k // 8 + 1) + return int.from_bytes(b, "big") % (2**k) + + +def secure_randint(vmin: int, vmax: int) -> int: + """ + Normal random.randint uses PRNG that is not suitable + for cryptographic applications. + This one uses os.urandom for randomness. + """ + import math + + assert vmax > vmin + delta = vmax - vmin + nbits = math.ceil(math.log2(delta + 1)) + randn = getrandbits(nbits) + while randn > delta: + randn = getrandbits(nbits) + return vmin + randn + + +def copy(a: bytes) -> bytes: + """Ugly copy that works everywhere incl micropython""" + if len(a) == 0: + return b"" + return a[:1] + a[1:] + + +def read_until(s, chars=b",)(#"): + """Read from stream until one of `char` characters. + By default `chars=,)(#`. + + Return a tuple (result: bytes, char: bytes | None) + where result is bytes read from the stream until char, + char contains this character or None if the end of stream reached. + """ + res = b"" + chunk = b"" + while True: + chunk = s.read(1) + if len(chunk) == 0: + return res, None + if chunk in chars: + return res, chunk + res += chunk diff --git a/bitcoin_client/ledger_bitcoin/embit/networks.py b/bitcoin_client/ledger_bitcoin/embit/networks.py new file mode 100644 index 000000000..6f1a54180 --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/networks.py @@ -0,0 +1,76 @@ +from .misc import const + +NETWORKS = { + "main": { + "name": "Mainnet", + "wif": b"\x80", + "p2pkh": b"\x00", + "p2sh": b"\x05", + "bech32": "bc", + "xprv": b"\x04\x88\xad\xe4", + "xpub": b"\x04\x88\xb2\x1e", + "yprv": b"\x04\x9d\x78\x78", + "zprv": b"\x04\xb2\x43\x0c", + "Yprv": b"\x02\x95\xb0\x05", + "Zprv": b"\x02\xaa\x7a\x99", + "ypub": b"\x04\x9d\x7c\xb2", + "zpub": b"\x04\xb2\x47\x46", + "Ypub": b"\x02\x95\xb4\x3f", + "Zpub": b"\x02\xaa\x7e\xd3", + "bip32": const(0), # coin type for bip32 derivation + }, + "test": { + "name": "Testnet", + "wif": b"\xEF", + "p2pkh": b"\x6F", + "p2sh": b"\xC4", + "bech32": "tb", + "xprv": b"\x04\x35\x83\x94", + "xpub": b"\x04\x35\x87\xcf", + "yprv": b"\x04\x4a\x4e\x28", + "zprv": b"\x04\x5f\x18\xbc", + "Yprv": b"\x02\x42\x85\xb5", + "Zprv": b"\x02\x57\x50\x48", + "ypub": b"\x04\x4a\x52\x62", + "zpub": b"\x04\x5f\x1c\xf6", + "Ypub": b"\x02\x42\x89\xef", + "Zpub": b"\x02\x57\x54\x83", + "bip32": const(1), + }, + "regtest": { + "name": "Regtest", + "wif": b"\xEF", + "p2pkh": b"\x6F", + "p2sh": b"\xC4", + "bech32": "bcrt", + "xprv": b"\x04\x35\x83\x94", + "xpub": b"\x04\x35\x87\xcf", + "yprv": b"\x04\x4a\x4e\x28", + "zprv": b"\x04\x5f\x18\xbc", + "Yprv": b"\x02\x42\x85\xb5", + "Zprv": b"\x02\x57\x50\x48", + "ypub": b"\x04\x4a\x52\x62", + "zpub": b"\x04\x5f\x1c\xf6", + "Ypub": b"\x02\x42\x89\xef", + "Zpub": b"\x02\x57\x54\x83", + "bip32": const(1), + }, + "signet": { + "name": "Signet", + "wif": b"\xEF", + "p2pkh": b"\x6F", + "p2sh": b"\xC4", + "bech32": "tb", + "xprv": b"\x04\x35\x83\x94", + "xpub": b"\x04\x35\x87\xcf", + "yprv": b"\x04\x4a\x4e\x28", + "zprv": b"\x04\x5f\x18\xbc", + "Yprv": b"\x02\x42\x85\xb5", + "Zprv": b"\x02\x57\x50\x48", + "ypub": b"\x04\x4a\x52\x62", + "zpub": b"\x04\x5f\x1c\xf6", + "Ypub": b"\x02\x42\x89\xef", + "Zpub": b"\x02\x57\x54\x83", + "bip32": const(1), + }, +} diff --git a/bitcoin_client/ledger_bitcoin/embit/script.py b/bitcoin_client/ledger_bitcoin/embit/script.py new file mode 100644 index 000000000..5cea7f98f --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/script.py @@ -0,0 +1,212 @@ +from .networks import NETWORKS +from . import base58 +from . import bech32 +from . import hashes +from . import compact +from .base import EmbitBase, EmbitError + +SIGHASH_ALL = 1 + + +class Script(EmbitBase): + def __init__(self, data=b""): + self.data = data + + def address(self, network=NETWORKS["main"]): + script_type = self.script_type() + data = self.data + + if script_type is None: + raise ValueError("This type of script doesn't have address representation") + + if script_type == "p2pkh": + d = network["p2pkh"] + data[3:23] + return base58.encode_check(d) + + if script_type == "p2sh": + d = network["p2sh"] + data[2:22] + return base58.encode_check(d) + + if script_type in ["p2wpkh", "p2wsh", "p2tr"]: + ver = data[0] + # FIXME: should be one of OP_N + if ver > 0: + ver = ver % 0x50 + return bech32.encode(network["bech32"], ver, data[2:]) + + # we should never get here + raise ValueError("Unsupported script type") + + def push(self, data): + self.data += compact.to_bytes(len(data)) + data + + def script_type(self): + data = self.data + # OP_DUP OP_HASH160 <20:hash160(pubkey)> OP_EQUALVERIFY OP_CHECKSIG + if len(data) == 25 and data[:3] == b"\x76\xa9\x14" and data[-2:] == b"\x88\xac": + return "p2pkh" + # OP_HASH160 <20:hash160(script)> OP_EQUAL + if len(data) == 23 and data[:2] == b"\xa9\x14" and data[-1] == 0x87: + return "p2sh" + # 0 <20:hash160(pubkey)> + if len(data) == 22 and data[:2] == b"\x00\x14": + return "p2wpkh" + # 0 <32:sha256(script)> + if len(data) == 34 and data[:2] == b"\x00\x20": + return "p2wsh" + # OP_1 + if len(data) == 34 and data[:2] == b"\x51\x20": + return "p2tr" + # unknown type + return None + + def write_to(self, stream): + res = stream.write(compact.to_bytes(len(self.data))) + res += stream.write(self.data) + return res + + @classmethod + def read_from(cls, stream): + l = compact.read_from(stream) + data = stream.read(l) + if len(data) != l: + raise ValueError("Cant read %d bytes" % l) + return cls(data) + + @classmethod + def from_address(cls, addr: str): + """ + Decodes a bitcoin address and returns corresponding scriptpubkey. + """ + return address_to_scriptpubkey(addr) + + def __eq__(self, other): + return self.data == other.data + + def __ne__(self, other): + return self.data != other.data + + def __hash__(self): + return hash(self.data) + + def __len__(self): + return len(self.data) + + +class Witness(EmbitBase): + def __init__(self, items=[]): + self.items = items[:] + + def write_to(self, stream): + res = stream.write(compact.to_bytes(len(self.items))) + for item in self.items: + res += stream.write(compact.to_bytes(len(item))) + res += stream.write(item) + return res + + @classmethod + def read_from(cls, stream): + num = compact.read_from(stream) + items = [] + for i in range(num): + l = compact.read_from(stream) + data = stream.read(l) + items.append(data) + return cls(items) + + def __hash__(self): + return hash(self.items) + + def __len__(self): + return len(self.items) + + +def p2pkh(pubkey): + """Return Pay-To-Pubkey-Hash ScriptPubkey""" + return Script(b"\x76\xa9\x14" + hashes.hash160(pubkey.sec()) + b"\x88\xac") + + +def p2sh(script): + """Return Pay-To-Script-Hash ScriptPubkey""" + return Script(b"\xa9\x14" + hashes.hash160(script.data) + b"\x87") + + +def p2wpkh(pubkey): + """Return Pay-To-Witness-Pubkey-Hash ScriptPubkey""" + return Script(b"\x00\x14" + hashes.hash160(pubkey.sec())) + + +def p2wsh(script): + """Return Pay-To-Witness-Pubkey-Hash ScriptPubkey""" + return Script(b"\x00\x20" + hashes.sha256(script.data)) + + +def p2tr(pubkey, script_tree=None): + """Return Pay-To-Taproot ScriptPubkey""" + if script_tree is None: + h = b"" + else: + h = script_tree.tweak() + output_pubkey = pubkey.taproot_tweak(h) + return Script(b"\x51\x20" + output_pubkey.xonly()) + + +def p2pkh_from_p2wpkh(script): + """Convert p2wpkh to p2pkh script""" + return Script(b"\x76\xa9" + script.serialize()[2:] + b"\x88\xac") + + +def multisig(m: int, pubkeys): + if m <= 0 or m > 16: + raise ValueError("m must be between 1 and 16") + n = len(pubkeys) + if n < m or n > 16: + raise ValueError("Number of pubkeys must be between %d and 16" % m) + data = bytes([80 + m]) + for pubkey in pubkeys: + sec = pubkey.sec() + data += bytes([len(sec)]) + sec + # OP_m ... OP_n OP_CHECKMULTISIG + data += bytes([80 + n, 0xAE]) + return Script(data) + + +def address_to_scriptpubkey(addr): + # try with base58 address + try: + data = base58.decode_check(addr) + prefix = data[:1] + for net in NETWORKS.values(): + if prefix == net["p2pkh"]: + return Script(b"\x76\xa9\x14" + data[1:] + b"\x88\xac") + elif prefix == net["p2sh"]: + return Script(b"\xa9\x14" + data[1:] + b"\x87") + except: + # fail - then it's bech32 address + hrp = addr.split("1")[0] + ver, data = bech32.decode(hrp, addr) + if ver not in [0, 1] or len(data) not in [20, 32]: + raise EmbitError("Invalid bech32 address") + if ver == 1 and len(data) != 32: + raise EmbitError("Invalid bech32 address") + # OP_1..OP_N + if ver > 0: + ver += 0x50 + return Script(bytes([ver, len(data)] + data)) + + +def script_sig_p2pkh(signature, pubkey, sighash=SIGHASH_ALL): + sec = pubkey.sec() + der = signature.serialize() + bytes([sighash]) + data = compact.to_bytes(len(der)) + der + compact.to_bytes(len(sec)) + sec + return Script(data) + + +def script_sig_p2sh(redeem_script): + """Creates scriptsig for p2sh""" + # FIXME: implement for legacy p2sh as well + return Script(redeem_script.serialize()) + + +def witness_p2wpkh(signature, pubkey, sighash=SIGHASH_ALL): + return Witness([signature.serialize() + bytes([sighash]), pubkey.sec()]) diff --git a/bitcoin_client/ledger_bitcoin/embit/util/__init__.py b/bitcoin_client/ledger_bitcoin/embit/util/__init__.py new file mode 100644 index 000000000..d2f2564a6 --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/util/__init__.py @@ -0,0 +1,6 @@ +from . import secp256k1 + +try: + from micropython import const +except: + const = lambda x: x diff --git a/bitcoin_client/ledger_bitcoin/embit/util/ctypes_secp256k1.py b/bitcoin_client/ledger_bitcoin/embit/util/ctypes_secp256k1.py new file mode 100644 index 000000000..232abda18 --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/util/ctypes_secp256k1.py @@ -0,0 +1,1202 @@ +import ctypes, os +import ctypes.util +import platform +import threading + +from ctypes import ( + cast, + byref, + c_char, + c_byte, + c_int, + c_uint, + c_char_p, + c_size_t, + c_void_p, + c_uint64, + create_string_buffer, + CFUNCTYPE, + POINTER, +) + +_lock = threading.Lock() + + +# @locked decorator +def locked(func): + def wrapper(*args, **kwargs): + with _lock: + return func(*args, **kwargs) + + return wrapper + + +# Flags to pass to context_create. +CONTEXT_VERIFY = 0b0100000001 +CONTEXT_SIGN = 0b1000000001 +CONTEXT_NONE = 0b0000000001 + +# Flags to pass to ec_pubkey_serialize +EC_COMPRESSED = 0b0100000010 +EC_UNCOMPRESSED = 0b0000000010 + + +def _copy(a: bytes) -> bytes: + """Ugly copy that works everywhere incl micropython""" + if len(a) == 0: + return b"" + return a[:1] + a[1:] + + +def _find_library(): + library_path = None + extension = "" + if platform.system() == "Darwin": + extension = ".dylib" + elif platform.system() == "Linux": + extension = ".so" + elif platform.system() == "Windows": + extension = ".dll" + + path = os.path.join( + os.path.dirname(__file__), + "prebuilt/libsecp256k1_%s_%s%s" + % (platform.system().lower(), platform.machine().lower(), extension), + ) + if os.path.isfile(path): + return path + # try searching + if not library_path: + library_path = ctypes.util.find_library("libsecp256k1") + if not library_path: + library_path = ctypes.util.find_library("secp256k1") + # library search failed + if not library_path: + if platform.system() == "Linux" and os.path.isfile( + "/usr/local/lib/libsecp256k1.so.0" + ): + library_path = "/usr/local/lib/libsecp256k1.so.0" + return library_path + + +@locked +def _init(flags=(CONTEXT_SIGN | CONTEXT_VERIFY)): + library_path = _find_library() + # meh, can't find library + if not library_path: + raise RuntimeError( + "Can't find libsecp256k1 library. Make sure to compile and install it." + ) + + secp256k1 = ctypes.cdll.LoadLibrary(library_path) + + secp256k1.secp256k1_context_create.argtypes = [c_uint] + secp256k1.secp256k1_context_create.restype = c_void_p + + secp256k1.secp256k1_context_randomize.argtypes = [c_void_p, c_char_p] + secp256k1.secp256k1_context_randomize.restype = c_int + + secp256k1.secp256k1_ec_seckey_verify.argtypes = [c_void_p, c_char_p] + secp256k1.secp256k1_ec_seckey_verify.restype = c_int + + secp256k1.secp256k1_ec_privkey_negate.argtypes = [c_void_p, c_char_p] + secp256k1.secp256k1_ec_privkey_negate.restype = c_int + + secp256k1.secp256k1_ec_pubkey_negate.argtypes = [c_void_p, c_char_p] + secp256k1.secp256k1_ec_pubkey_negate.restype = c_int + + secp256k1.secp256k1_ec_privkey_tweak_add.argtypes = [c_void_p, c_char_p, c_char_p] + secp256k1.secp256k1_ec_privkey_tweak_add.restype = c_int + + secp256k1.secp256k1_ec_privkey_tweak_mul.argtypes = [c_void_p, c_char_p, c_char_p] + secp256k1.secp256k1_ec_privkey_tweak_mul.restype = c_int + + secp256k1.secp256k1_ec_pubkey_create.argtypes = [c_void_p, c_void_p, c_char_p] + secp256k1.secp256k1_ec_pubkey_create.restype = c_int + + secp256k1.secp256k1_ec_pubkey_parse.argtypes = [c_void_p, c_char_p, c_char_p, c_int] + secp256k1.secp256k1_ec_pubkey_parse.restype = c_int + + secp256k1.secp256k1_ec_pubkey_serialize.argtypes = [ + c_void_p, + c_char_p, + c_void_p, + c_char_p, + c_uint, + ] + secp256k1.secp256k1_ec_pubkey_serialize.restype = c_int + + secp256k1.secp256k1_ec_pubkey_tweak_add.argtypes = [c_void_p, c_char_p, c_char_p] + secp256k1.secp256k1_ec_pubkey_tweak_add.restype = c_int + + secp256k1.secp256k1_ec_pubkey_tweak_mul.argtypes = [c_void_p, c_char_p, c_char_p] + secp256k1.secp256k1_ec_pubkey_tweak_mul.restype = c_int + + secp256k1.secp256k1_ecdsa_signature_parse_compact.argtypes = [ + c_void_p, + c_char_p, + c_char_p, + ] + secp256k1.secp256k1_ecdsa_signature_parse_compact.restype = c_int + + secp256k1.secp256k1_ecdsa_signature_serialize_compact.argtypes = [ + c_void_p, + c_char_p, + c_char_p, + ] + secp256k1.secp256k1_ecdsa_signature_serialize_compact.restype = c_int + + secp256k1.secp256k1_ecdsa_signature_parse_der.argtypes = [ + c_void_p, + c_char_p, + c_char_p, + c_uint, + ] + secp256k1.secp256k1_ecdsa_signature_parse_der.restype = c_int + + secp256k1.secp256k1_ecdsa_signature_serialize_der.argtypes = [ + c_void_p, + c_char_p, + c_void_p, + c_char_p, + ] + secp256k1.secp256k1_ecdsa_signature_serialize_der.restype = c_int + + secp256k1.secp256k1_ecdsa_sign.argtypes = [ + c_void_p, + c_char_p, + c_char_p, + c_char_p, + c_void_p, + c_char_p, + ] + secp256k1.secp256k1_ecdsa_sign.restype = c_int + + secp256k1.secp256k1_ecdsa_verify.argtypes = [c_void_p, c_char_p, c_char_p, c_char_p] + secp256k1.secp256k1_ecdsa_verify.restype = c_int + + secp256k1.secp256k1_ec_pubkey_combine.argtypes = [ + c_void_p, + c_char_p, + c_void_p, + c_size_t, + ] + secp256k1.secp256k1_ec_pubkey_combine.restype = c_int + + # ecdh + try: + secp256k1.secp256k1_ecdh.argtypes = [ + c_void_p, # ctx + c_char_p, # output + c_char_p, # point + c_char_p, # scalar + CFUNCTYPE, # hashfp + c_void_p, # data + ] + secp256k1.secp256k1_ecdh.restype = c_int + except: + pass + + # schnorr sig + try: + secp256k1.secp256k1_xonly_pubkey_from_pubkey.argtypes = [ + c_void_p, # ctx + c_char_p, # xonly pubkey + POINTER(c_int), # parity + c_char_p, # pubkey + ] + secp256k1.secp256k1_xonly_pubkey_from_pubkey.restype = c_int + + secp256k1.secp256k1_schnorrsig_verify.argtypes = [ + c_void_p, # ctx + c_char_p, # sig + c_char_p, # msg + c_char_p, # pubkey + ] + secp256k1.secp256k1_schnorrsig_verify.restype = c_int + + secp256k1.secp256k1_schnorrsig_sign.argtypes = [ + c_void_p, # ctx + c_char_p, # sig + c_char_p, # msg + c_char_p, # keypair + c_void_p, # nonce_function + c_char_p, # extra data + ] + secp256k1.secp256k1_schnorrsig_sign.restype = c_int + + secp256k1.secp256k1_keypair_create.argtypes = [ + c_void_p, # ctx + c_char_p, # keypair + c_char_p, # secret + ] + secp256k1.secp256k1_keypair_create.restype = c_int + except: + pass + + # recoverable module + try: + secp256k1.secp256k1_ecdsa_sign_recoverable.argtypes = [ + c_void_p, + c_char_p, + c_char_p, + c_char_p, + c_void_p, + c_void_p, + ] + secp256k1.secp256k1_ecdsa_sign_recoverable.restype = c_int + + secp256k1.secp256k1_ecdsa_recoverable_signature_parse_compact.argtypes = [ + c_void_p, + c_char_p, + c_char_p, + c_int, + ] + secp256k1.secp256k1_ecdsa_recoverable_signature_parse_compact.restype = c_int + + secp256k1.secp256k1_ecdsa_recoverable_signature_serialize_compact.argtypes = [ + c_void_p, + c_char_p, + c_char_p, + c_char_p, + ] + secp256k1.secp256k1_ecdsa_recoverable_signature_serialize_compact.restype = ( + c_int + ) + + secp256k1.secp256k1_ecdsa_recoverable_signature_convert.argtypes = [ + c_void_p, + c_char_p, + c_char_p, + ] + secp256k1.secp256k1_ecdsa_recoverable_signature_convert.restype = c_int + + secp256k1.secp256k1_ecdsa_recover.argtypes = [ + c_void_p, + c_char_p, + c_char_p, + c_char_p, + ] + secp256k1.secp256k1_ecdsa_recover.restype = c_int + except: + pass + + # zkp modules + try: + # generator module + secp256k1.secp256k1_generator_parse.argtypes = [c_void_p, c_char_p, c_char_p] + secp256k1.secp256k1_generator_parse.restype = c_int + + secp256k1.secp256k1_generator_serialize.argtypes = [ + c_void_p, + c_char_p, + c_char_p, + ] + secp256k1.secp256k1_generator_serialize.restype = c_int + + secp256k1.secp256k1_generator_generate.argtypes = [c_void_p, c_char_p, c_char_p] + secp256k1.secp256k1_generator_generate.restype = c_int + + secp256k1.secp256k1_generator_generate_blinded.argtypes = [ + c_void_p, + c_char_p, + c_char_p, + c_char_p, + ] + secp256k1.secp256k1_generator_generate_blinded.restype = c_int + + # pederson commitments + secp256k1.secp256k1_pedersen_commitment_parse.argtypes = [ + c_void_p, + c_char_p, + c_char_p, + ] + secp256k1.secp256k1_pedersen_commitment_parse.restype = c_int + + secp256k1.secp256k1_pedersen_commitment_serialize.argtypes = [ + c_void_p, + c_char_p, + c_char_p, + ] + secp256k1.secp256k1_pedersen_commitment_serialize.restype = c_int + + secp256k1.secp256k1_pedersen_commit.argtypes = [ + c_void_p, + c_char_p, + c_char_p, + c_uint64, + c_char_p, + ] + secp256k1.secp256k1_pedersen_commit.restype = c_int + + secp256k1.secp256k1_pedersen_blind_generator_blind_sum.argtypes = [ + c_void_p, # const secp256k1_context* ctx, + POINTER(c_uint64), # const uint64_t *value, + c_void_p, # const unsigned char* const* generator_blind, + c_void_p, # unsigned char* const* blinding_factor, + c_size_t, # size_t n_total, + c_size_t, # size_t n_inputs + ] + secp256k1.secp256k1_pedersen_blind_generator_blind_sum.restype = c_int + + secp256k1.secp256k1_pedersen_verify_tally.argtypes = [ + c_void_p, + c_void_p, + c_size_t, + c_void_p, + c_size_t, + ] + secp256k1.secp256k1_pedersen_verify_tally.restype = c_int + + # rangeproof + secp256k1.secp256k1_rangeproof_rewind.argtypes = [ + c_void_p, # ctx + c_char_p, # vbf out + POINTER(c_uint64), # value out + c_char_p, # message out + POINTER(c_uint64), # msg out len + c_char_p, # nonce + POINTER(c_uint64), # min value + POINTER(c_uint64), # max value + c_char_p, # pedersen commitment + c_char_p, # range proof + c_uint64, # proof len + c_char_p, # extra commitment (scriptpubkey) + c_uint64, # extra len + c_char_p, # generator + ] + secp256k1.secp256k1_rangeproof_rewind.restype = c_int + + secp256k1.secp256k1_rangeproof_verify.argtypes = [ + c_void_p, # ctx + POINTER(c_uint64), # min value + POINTER(c_uint64), # max value + c_char_p, # pedersen commitment + c_char_p, # proof + c_uint64, # proof len + c_char_p, # extra + c_uint64, # extra len + c_char_p, # generator + ] + secp256k1.secp256k1_rangeproof_verify.restype = c_int + + secp256k1.secp256k1_rangeproof_sign.argtypes = [ + c_void_p, # ctx + c_char_p, # proof + POINTER(c_uint64), # plen + c_uint64, # min_value + c_char_p, # commit + c_char_p, # blind + c_char_p, # nonce + c_int, # exp + c_int, # min_bits + c_uint64, # value + c_char_p, # message + c_uint64, # msg_len + c_char_p, # extra_commit + c_uint64, # extra_commit_len + c_char_p, # gen + ] + secp256k1.secp256k1_rangeproof_sign.restype = c_int + + # musig + secp256k1.secp256k1_musig_pubkey_combine.argtypes = [ + c_void_p, + c_void_p, + c_char_p, + c_void_p, + c_void_p, + c_size_t, + ] + secp256k1.secp256k1_musig_pubkey_combine.restype = c_int + + # surjection proofs + secp256k1.secp256k1_surjectionproof_initialize.argtypes = [ + c_void_p, # const secp256k1_context* ctx, + c_char_p, # secp256k1_surjectionproof* proof, + POINTER(c_size_t), # size_t *input_index, + c_void_p, # c_char_p, # const secp256k1_fixed_asset_tag* fixed_input_tags, + c_size_t, # const size_t n_input_tags, + c_size_t, # const size_t n_input_tags_to_use, + c_char_p, # const secp256k1_fixed_asset_tag* fixed_output_tag, + c_size_t, # const size_t n_max_iterations, + c_char_p, # const unsigned char *random_seed32 + ] + secp256k1.secp256k1_surjectionproof_initialize.restype = c_int + + secp256k1.secp256k1_surjectionproof_generate.argtypes = [ + c_void_p, # const secp256k1_context* ctx, + c_char_p, # secp256k1_surjectionproof* proof, + c_char_p, # const secp256k1_generator* ephemeral_input_tags, + c_size_t, # size_t n_ephemeral_input_tags, + c_char_p, # const secp256k1_generator* ephemeral_output_tag, + c_size_t, # size_t input_index, + c_char_p, # const unsigned char *input_blinding_key, + c_char_p, # const unsigned char *output_blinding_key + ] + secp256k1.secp256k1_surjectionproof_generate.restype = c_int + + secp256k1.secp256k1_surjectionproof_verify.argtypes = [ + c_void_p, # const secp256k1_context* ctx, + c_char_p, # const secp256k1_surjectionproof* proof, + c_char_p, # const secp256k1_generator* ephemeral_input_tags, + c_size_t, # size_t n_ephemeral_input_tags, + c_char_p, # const secp256k1_generator* ephemeral_output_tag + ] + secp256k1.secp256k1_surjectionproof_verify.restype = c_int + + secp256k1.secp256k1_surjectionproof_serialize.argtypes = [ + c_void_p, # const secp256k1_context* ctx, + c_char_p, # unsigned char *output, + POINTER(c_size_t), # size_t *outputlen, + c_char_p, # const secp256k1_surjectionproof *proof + ] + secp256k1.secp256k1_surjectionproof_serialize.restype = c_int + + secp256k1.secp256k1_surjectionproof_serialized_size.argtypes = [ + c_void_p, # const secp256k1_context* ctx, + c_char_p, # const secp256k1_surjectionproof* proof + ] + secp256k1.secp256k1_surjectionproof_serialized_size.restype = c_size_t + + secp256k1.secp256k1_surjectionproof_parse.argtypes = [ + c_void_p, + c_char_p, + c_char_p, + c_size_t, + ] + secp256k1.secp256k1_surjectionproof_parse.restype = c_int + + except: + pass + + secp256k1.ctx = secp256k1.secp256k1_context_create(flags) + + r = secp256k1.secp256k1_context_randomize(secp256k1.ctx, os.urandom(32)) + + return secp256k1 + + +_secp = _init() + + +# bindings equal to ones in micropython +@locked +def context_randomize(seed, context=_secp.ctx): + if len(seed) != 32: + raise ValueError("Seed should be 32 bytes long") + if _secp.secp256k1_context_randomize(context, seed) == 0: + raise RuntimeError("Failed to randomize context") + + +@locked +def ec_pubkey_create(secret, context=_secp.ctx): + if len(secret) != 32: + raise ValueError("Private key should be 32 bytes long") + pub = bytes(64) + r = _secp.secp256k1_ec_pubkey_create(context, pub, secret) + if r == 0: + raise ValueError("Invalid private key") + return pub + + +@locked +def ec_pubkey_parse(sec, context=_secp.ctx): + if len(sec) != 33 and len(sec) != 65: + raise ValueError("Serialized pubkey should be 33 or 65 bytes long") + if len(sec) == 33: + if sec[0] != 0x02 and sec[0] != 0x03: + raise ValueError("Compressed pubkey should start with 0x02 or 0x03") + else: + if sec[0] != 0x04: + raise ValueError("Uncompressed pubkey should start with 0x04") + pub = bytes(64) + r = _secp.secp256k1_ec_pubkey_parse(context, pub, sec, len(sec)) + if r == 0: + raise ValueError("Failed parsing public key") + return pub + + +@locked +def ec_pubkey_serialize(pubkey, flag=EC_COMPRESSED, context=_secp.ctx): + if len(pubkey) != 64: + raise ValueError("Pubkey should be 64 bytes long") + if flag not in [EC_COMPRESSED, EC_UNCOMPRESSED]: + raise ValueError("Invalid flag") + sec = bytes(33) if (flag == EC_COMPRESSED) else bytes(65) + sz = c_size_t(len(sec)) + r = _secp.secp256k1_ec_pubkey_serialize(context, sec, byref(sz), pubkey, flag) + if r == 0: + raise ValueError("Failed to serialize pubkey") + return sec + + +@locked +def ecdsa_signature_parse_compact(compact_sig, context=_secp.ctx): + if len(compact_sig) != 64: + raise ValueError("Compact signature should be 64 bytes long") + sig = bytes(64) + r = _secp.secp256k1_ecdsa_signature_parse_compact(context, sig, compact_sig) + if r == 0: + raise ValueError("Failed parsing compact signature") + return sig + + +@locked +def ecdsa_signature_parse_der(der, context=_secp.ctx): + sig = bytes(64) + r = _secp.secp256k1_ecdsa_signature_parse_der(context, sig, der, len(der)) + if r == 0: + raise ValueError("Failed parsing compact signature") + return sig + + +@locked +def ecdsa_signature_serialize_der(sig, context=_secp.ctx): + if len(sig) != 64: + raise ValueError("Signature should be 64 bytes long") + der = bytes(78) # max + sz = c_size_t(len(der)) + r = _secp.secp256k1_ecdsa_signature_serialize_der(context, der, byref(sz), sig) + if r == 0: + raise ValueError("Failed serializing der signature") + return der[: sz.value] + + +@locked +def ecdsa_signature_serialize_compact(sig, context=_secp.ctx): + if len(sig) != 64: + raise ValueError("Signature should be 64 bytes long") + ser = bytes(64) + r = _secp.secp256k1_ecdsa_signature_serialize_compact(context, ser, sig) + if r == 0: + raise ValueError("Failed serializing der signature") + return ser + + +@locked +def ecdsa_signature_normalize(sig, context=_secp.ctx): + if len(sig) != 64: + raise ValueError("Signature should be 64 bytes long") + sig2 = bytes(64) + r = _secp.secp256k1_ecdsa_signature_normalize(context, sig2, sig) + return sig2 + + +@locked +def ecdsa_verify(sig, msg, pub, context=_secp.ctx): + if len(sig) != 64: + raise ValueError("Signature should be 64 bytes long") + if len(msg) != 32: + raise ValueError("Message should be 32 bytes long") + if len(pub) != 64: + raise ValueError("Public key should be 64 bytes long") + r = _secp.secp256k1_ecdsa_verify(context, sig, msg, pub) + return bool(r) + + +@locked +def ecdsa_sign(msg, secret, nonce_function=None, extra_data=None, context=_secp.ctx): + if len(msg) != 32: + raise ValueError("Message should be 32 bytes long") + if len(secret) != 32: + raise ValueError("Secret key should be 32 bytes long") + if extra_data and len(extra_data) != 32: + raise ValueError("Extra data should be 32 bytes long") + sig = bytes(64) + r = _secp.secp256k1_ecdsa_sign( + context, sig, msg, secret, nonce_function, extra_data + ) + if r == 0: + raise ValueError("Failed to sign") + return sig + + +@locked +def ec_seckey_verify(secret, context=_secp.ctx): + if len(secret) != 32: + raise ValueError("Secret should be 32 bytes long") + return bool(_secp.secp256k1_ec_seckey_verify(context, secret)) + + +@locked +def ec_privkey_negate(secret, context=_secp.ctx): + if len(secret) != 32: + raise ValueError("Secret should be 32 bytes long") + b = _copy(secret) + _secp.secp256k1_ec_privkey_negate(context, b) + return b + + +@locked +def ec_pubkey_negate(pubkey, context=_secp.ctx): + if len(pubkey) != 64: + raise ValueError("Pubkey should be a 64-byte structure") + pub = _copy(pubkey) + r = _secp.secp256k1_ec_pubkey_negate(context, pub) + if r == 0: + raise ValueError("Failed to negate pubkey") + return pub + + +@locked +def ec_privkey_tweak_add(secret, tweak, context=_secp.ctx): + if len(secret) != 32 or len(tweak) != 32: + raise ValueError("Secret and tweak should both be 32 bytes long") + t = _copy(tweak) + if _secp.secp256k1_ec_privkey_tweak_add(context, secret, tweak) == 0: + raise ValueError("Failed to tweak the secret") + return None + + +@locked +def ec_pubkey_tweak_add(pub, tweak, context=_secp.ctx): + if len(pub) != 64: + raise ValueError("Public key should be 64 bytes long") + if len(tweak) != 32: + raise ValueError("Tweak should be 32 bytes long") + t = _copy(tweak) + if _secp.secp256k1_ec_pubkey_tweak_add(context, pub, tweak) == 0: + raise ValueError("Failed to tweak the public key") + return None + + +@locked +def ec_privkey_add(secret, tweak, context=_secp.ctx): + if len(secret) != 32 or len(tweak) != 32: + raise ValueError("Secret and tweak should both be 32 bytes long") + # ugly copy that works in mpy and py + s = _copy(secret) + t = _copy(tweak) + if _secp.secp256k1_ec_privkey_tweak_add(context, s, t) == 0: + raise ValueError("Failed to tweak the secret") + return s + + +@locked +def ec_pubkey_add(pub, tweak, context=_secp.ctx): + if len(pub) != 64: + raise ValueError("Public key should be 64 bytes long") + if len(tweak) != 32: + raise ValueError("Tweak should be 32 bytes long") + p = _copy(pub) + if _secp.secp256k1_ec_pubkey_tweak_add(context, p, tweak) == 0: + raise ValueError("Failed to tweak the public key") + return p + + +@locked +def ec_privkey_tweak_mul(secret, tweak, context=_secp.ctx): + if len(secret) != 32 or len(tweak) != 32: + raise ValueError("Secret and tweak should both be 32 bytes long") + if _secp.secp256k1_ec_privkey_tweak_mul(context, secret, tweak) == 0: + raise ValueError("Failed to tweak the secret") + + +@locked +def ec_pubkey_tweak_mul(pub, tweak, context=_secp.ctx): + if len(pub) != 64: + raise ValueError("Public key should be 64 bytes long") + if len(tweak) != 32: + raise ValueError("Tweak should be 32 bytes long") + if _secp.secp256k1_ec_pubkey_tweak_mul(context, pub, tweak) == 0: + raise ValueError("Failed to tweak the public key") + + +@locked +def ec_pubkey_combine(*args, context=_secp.ctx): + pub = bytes(64) + pubkeys = (c_char_p * len(args))(*args) + r = _secp.secp256k1_ec_pubkey_combine(context, pub, pubkeys, len(args)) + if r == 0: + raise ValueError("Failed to combine pubkeys") + return pub + + +# ecdh +@locked +def ecdh(pubkey, scalar, hashfn=None, data=None, context=_secp.ctx): + if not len(pubkey) == 64: + raise ValueError("Pubkey should be 64 bytes long") + if not len(scalar) == 32: + raise ValueError("Scalar should be 32 bytes long") + secret = bytes(32) + if hashfn is None: + res = _secp.secp256k1_ecdh(context, secret, pubkey, scalar, None, None) + else: + + def _hashfn(out, x, y): + x = ctypes.string_at(x, 32) + y = ctypes.string_at(y, 32) + try: + res = hashfn(x, y, data) + except Exception as e: + return 0 + out = cast(out, POINTER(c_char * 32)) + out.contents.value = res + return 1 + + HASHFN = CFUNCTYPE(c_int, c_void_p, c_void_p, c_void_p) + res = _secp.secp256k1_ecdh( + context, secret, pubkey, scalar, HASHFN(_hashfn), data + ) + if res != 1: + raise RuntimeError("Failed to compute the shared secret") + return secret + + +# schnorrsig +@locked +def xonly_pubkey_from_pubkey(pubkey, context=_secp.ctx): + if len(pubkey) != 64: + raise ValueError("Pubkey should be 64 bytes long") + pointer = POINTER(c_int) + parity = pointer(c_int(0)) + xonly_pub = bytes(64) + res = _secp.secp256k1_xonly_pubkey_from_pubkey(context, xonly_pub, parity, pubkey) + if res != 1: + raise RuntimeError("Failed to convert the pubkey") + return xonly_pub, bool(parity.contents.value) + + +@locked +def schnorrsig_verify(sig, msg, pubkey, context=_secp.ctx): + assert len(sig) == 64 + assert len(msg) == 32 + assert len(pubkey) == 64 + res = _secp.secp256k1_schnorrsig_verify(context, sig, msg, pubkey) + return bool(res) + + +@locked +def keypair_create(secret, context=_secp.ctx): + assert len(secret) == 32 + keypair = bytes(96) + r = _secp.secp256k1_keypair_create(context, keypair, secret) + if r == 0: + raise ValueError("Failed to create keypair") + return keypair + + +# not @locked because it uses keypair_create inside +def schnorrsig_sign( + msg, keypair, nonce_function=None, extra_data=None, context=_secp.ctx +): + assert len(msg) == 32 + if len(keypair) == 32: + keypair = keypair_create(keypair, context=context) + with _lock: + assert len(keypair) == 96 + sig = bytes(64) + r = _secp.secp256k1_schnorrsig_sign( + context, sig, msg, keypair, nonce_function, extra_data + ) + if r == 0: + raise ValueError("Failed to sign") + return sig + + +# recoverable +@locked +def ecdsa_sign_recoverable(msg, secret, context=_secp.ctx): + if len(msg) != 32: + raise ValueError("Message should be 32 bytes long") + if len(secret) != 32: + raise ValueError("Secret key should be 32 bytes long") + sig = bytes(65) + r = _secp.secp256k1_ecdsa_sign_recoverable(context, sig, msg, secret, None, None) + if r == 0: + raise ValueError("Failed to sign") + return sig + + +@locked +def ecdsa_recoverable_signature_serialize_compact(sig, context=_secp.ctx): + if len(sig) != 65: + raise ValueError("Recoverable signature should be 65 bytes long") + ser = bytes(64) + idx = bytes(1) + r = _secp.secp256k1_ecdsa_recoverable_signature_serialize_compact( + context, ser, idx, sig + ) + if r == 0: + raise ValueError("Failed serializing der signature") + return ser, idx[0] + + +@locked +def ecdsa_recoverable_signature_parse_compact(compact_sig, recid, context=_secp.ctx): + if len(compact_sig) != 64: + raise ValueError("Signature should be 64 bytes long") + sig = bytes(65) + r = _secp.secp256k1_ecdsa_recoverable_signature_parse_compact( + context, sig, compact_sig, recid + ) + if r == 0: + raise ValueError("Failed parsing compact signature") + return sig + + +@locked +def ecdsa_recoverable_signature_convert(sigin, context=_secp.ctx): + if len(sigin) != 65: + raise ValueError("Recoverable signature should be 65 bytes long") + sig = bytes(64) + r = _secp.secp256k1_ecdsa_recoverable_signature_convert(context, sig, sigin) + if r == 0: + raise ValueError("Failed converting signature") + return sig + + +@locked +def ecdsa_recover(sig, msghash, context=_secp.ctx): + if len(sig) != 65: + raise ValueError("Recoverable signature should be 65 bytes long") + if len(msghash) != 32: + raise ValueError("Message should be 32 bytes long") + pub = bytes(64) + r = _secp.secp256k1_ecdsa_recover(context, pub, sig, msghash) + if r == 0: + raise ValueError("Failed to recover public key") + return pub + + +# zkp modules + + +@locked +def pedersen_commitment_parse(inp, context=_secp.ctx): + if len(inp) != 33: + raise ValueError("Serialized commitment should be 33 bytes long") + commit = bytes(64) + r = _secp.secp256k1_pedersen_commitment_parse(context, commit, inp) + if r == 0: + raise ValueError("Failed to parse commitment") + return commit + + +@locked +def pedersen_commitment_serialize(commit, context=_secp.ctx): + if len(commit) != 64: + raise ValueError("Commitment should be 64 bytes long") + sec = bytes(33) + r = _secp.secp256k1_pedersen_commitment_serialize(context, sec, commit) + if r == 0: + raise ValueError("Failed to serialize commitment") + return sec + + +@locked +def pedersen_commit(vbf, value, gen, context=_secp.ctx): + if len(gen) != 64: + raise ValueError("Generator should be 64 bytes long") + if len(vbf) != 32: + raise ValueError(f"Blinding factor should be 32 bytes long, not {len(vbf)}") + commit = bytes(64) + r = _secp.secp256k1_pedersen_commit(context, commit, vbf, value, gen) + if r == 0: + raise ValueError("Failed to create commitment") + return commit + + +@locked +def pedersen_blind_generator_blind_sum( + values, gens, vbfs, num_inputs, context=_secp.ctx +): + vals = (c_uint64 * len(values))(*values) + vbf = bytes(vbfs[-1]) + p = c_char_p(vbf) # obtain a pointer of various types + address = cast(p, c_void_p).value + + vbfs_joined = (c_char_p * len(vbfs))(*vbfs[:-1], address) + gens_joined = (c_char_p * len(gens))(*gens) + res = _secp.secp256k1_pedersen_blind_generator_blind_sum( + context, vals, gens_joined, vbfs_joined, len(values), num_inputs + ) + if res == 0: + raise ValueError("Failed to get the last blinding factor.") + res = (c_char * 32).from_address(address).raw + assert len(res) == 32 + return res + + +@locked +def pedersen_verify_tally(ins, outs, context=_secp.ctx): + in_ptr = (c_char_p * len(ins))(*ins) + out_ptr = (c_char_p * len(outs))(*outs) + res = _secp.secp256k1_pedersen_verify_tally( + context, in_ptr, len(in_ptr), out_ptr, len(out_ptr) + ) + return bool(res) + + +# generator +@locked +def generator_parse(inp, context=_secp.ctx): + if len(inp) != 33: + raise ValueError("Serialized generator should be 33 bytes long") + gen = bytes(64) + r = _secp.secp256k1_generator_parse(context, gen, inp) + if r == 0: + raise ValueError("Failed to parse generator") + return gen + + +@locked +def generator_generate(asset, context=_secp.ctx): + if len(asset) != 32: + raise ValueError("Asset should be 32 bytes long") + gen = bytes(64) + r = _secp.secp256k1_generator_generate(context, gen, asset) + if r == 0: + raise ValueError("Failed to generate generator") + return gen + + +@locked +def generator_generate_blinded(asset, abf, context=_secp.ctx): + if len(asset) != 32: + raise ValueError("Asset should be 32 bytes long") + if len(abf) != 32: + raise ValueError("Asset blinding factor should be 32 bytes long") + gen = bytes(64) + r = _secp.secp256k1_generator_generate_blinded(context, gen, asset, abf) + if r == 0: + raise ValueError("Failed to generate generator") + return gen + + +@locked +def generator_serialize(generator, context=_secp.ctx): + if len(generator) != 64: + raise ValueError("Generator should be 64 bytes long") + sec = bytes(33) + if _secp.secp256k1_generator_serialize(context, sec, generator) == 0: + raise RuntimeError("Failed to serialize generator") + return sec + + +# rangeproof +@locked +def rangeproof_rewind( + proof, + nonce, + value_commitment, + script_pubkey, + generator, + message_length=64, + context=_secp.ctx, +): + if len(generator) != 64: + raise ValueError("Generator should be 64 bytes long") + if len(nonce) != 32: + raise ValueError("Nonce should be 32 bytes long") + if len(value_commitment) != 64: + raise ValueError("Value commitment should be 64 bytes long") + + pointer = POINTER(c_uint64) + + msg = b"\x00" * message_length + msglen = pointer(c_uint64(len(msg))) + + vbf_out = b"\x00" * 32 + value_out = pointer(c_uint64(0)) + min_value = pointer(c_uint64(0)) + max_value = pointer(c_uint64(0)) + res = _secp.secp256k1_rangeproof_rewind( + context, + vbf_out, + value_out, + msg, + msglen, + nonce, + min_value, + max_value, + value_commitment, + proof, + len(proof), + script_pubkey, + len(script_pubkey), + generator, + ) + if res != 1: + raise RuntimeError("Failed to rewind the proof") + return ( + value_out.contents.value, + vbf_out, + msg[: msglen.contents.value], + min_value.contents.value, + max_value.contents.value, + ) + + +# rangeproof + + +@locked +def rangeproof_verify( + proof, value_commitment, script_pubkey, generator, context=_secp.ctx +): + if len(generator) != 64: + raise ValueError("Generator should be 64 bytes long") + if len(value_commitment) != 64: + raise ValueError("Value commitment should be 64 bytes long") + + pointer = POINTER(c_uint64) + min_value = pointer(c_uint64(0)) + max_value = pointer(c_uint64(0)) + res = _secp.secp256k1_rangeproof_verify( + context, + min_value, + max_value, + value_commitment, + proof, + len(proof), + script_pubkey, + len(script_pubkey), + generator, + ) + if res != 1: + raise RuntimeError("Failed to verify the proof") + return min_value.contents.value, max_value.contents.value + + +@locked +def rangeproof_sign( + nonce, + value, + value_commitment, + vbf, + message, + extra, + gen, + min_value=1, + exp=0, + min_bits=52, + context=_secp.ctx, +): + if value == 0: + min_value = 0 + if len(gen) != 64: + raise ValueError("Generator should be 64 bytes long") + if len(nonce) != 32: + raise ValueError("Nonce should be 32 bytes long") + if len(value_commitment) != 64: + raise ValueError("Value commitment should be 64 bytes long") + if len(vbf) != 32: + raise ValueError("Value blinding factor should be 32 bytes long") + proof = bytes(5134) + pointer = POINTER(c_uint64) + prooflen = pointer(c_uint64(len(proof))) + res = _secp.secp256k1_rangeproof_sign( + context, + proof, + prooflen, + min_value, + value_commitment, + vbf, + nonce, + exp, + min_bits, + value, + message, + len(message), + extra, + len(extra), + gen, + ) + if res != 1: + raise RuntimeError("Failed to generate the proof") + return bytes(proof[: prooflen.contents.value]) + + +@locked +def musig_pubkey_combine(*args, context=_secp.ctx): + pub = bytes(64) + # TODO: strange that behaviour is different from pubkey_combine... + pubkeys = b"".join(args) # (c_char_p * len(args))(*args) + res = _secp.secp256k1_musig_pubkey_combine( + context, None, pub, None, pubkeys, len(args) + ) + if res == 0: + raise ValueError("Failed to combine pubkeys") + return pub + + +# surjection proof +@locked +def surjectionproof_initialize( + in_tags, out_tag, seed, tags_to_use=None, iterations=100, context=_secp.ctx +): + if tags_to_use is None: + tags_to_use = min(3, len(in_tags)) + if seed is None: + seed = os.urandom(32) + proof = bytes(4 + 8 + 256 // 8 + 32 * 257) + pointer = POINTER(c_size_t) + input_index = pointer(c_size_t(0)) + input_tags = b"".join(in_tags) + res = _secp.secp256k1_surjectionproof_initialize( + context, + proof, + input_index, + input_tags, + len(in_tags), + tags_to_use, + out_tag, + iterations, + seed, + ) + if res == 0: + raise RuntimeError("Failed to initialize the proof") + return proof, input_index.contents.value + + +@locked +def surjectionproof_generate( + proof, in_idx, in_tags, out_tag, in_abf, out_abf, context=_secp.ctx +): + res = _secp.secp256k1_surjectionproof_generate( + context, + proof, + b"".join(in_tags), + len(in_tags), + out_tag, + in_idx, + in_abf, + out_abf, + ) + if not res: + raise RuntimeError("Failed to generate surjection proof") + return proof + + +@locked +def surjectionproof_verify(proof, in_tags, out_tag, context=_secp.ctx): + res = _secp.secp256k1_surjectionproof_verify( + context, proof, b"".join(in_tags), len(in_tags), out_tag + ) + return bool(res) + + +@locked +def surjectionproof_serialize(proof, context=_secp.ctx): + s = _secp.secp256k1_surjectionproof_serialized_size(context, proof) + b = bytes(s) + pointer = POINTER(c_size_t) + sz = pointer(c_size_t(s)) + _secp.secp256k1_surjectionproof_serialize(context, b, sz, proof) + if s != sz.contents.value: + raise RuntimeError("Failed to serialize surjection proof - size mismatch") + return b + + +@locked +def surjectionproof_parse(proof, context=_secp.ctx): + parsed_proof = bytes(4 + 8 + 256 // 8 + 32 * 257) + res = _secp.secp256k1_surjectionproof_parse( + context, parsed_proof, proof, len(proof) + ) + if res == 0: + raise RuntimeError("Failed to parse surjection proof") + return parsed_proof diff --git a/bitcoin_client/ledger_bitcoin/embit/util/key.py b/bitcoin_client/ledger_bitcoin/embit/util/key.py new file mode 100644 index 000000000..13b01d955 --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/util/key.py @@ -0,0 +1,597 @@ +""" +Copy-paste from key.py in bitcoin test_framework. +This is a fallback option if the library can't do ctypes bindings to secp256k1 library. +""" +import random +import hmac +import hashlib + + +def TaggedHash(tag, data): + ss = hashlib.sha256(tag.encode("utf-8")).digest() + ss += ss + ss += data + return hashlib.sha256(ss).digest() + + +def modinv(a, n): + """Compute the modular inverse of a modulo n using the extended Euclidean + Algorithm. See https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm#Modular_integers. + """ + # TODO: Change to pow(a, -1, n) available in Python 3.8 + t1, t2 = 0, 1 + r1, r2 = n, a + while r2 != 0: + q = r1 // r2 + t1, t2 = t2, t1 - q * t2 + r1, r2 = r2, r1 - q * r2 + if r1 > 1: + return None + if t1 < 0: + t1 += n + return t1 + + +def xor_bytes(b0, b1): + return bytes(x ^ y for (x, y) in zip(b0, b1)) + + +def jacobi_symbol(n, k): + """Compute the Jacobi symbol of n modulo k + + See http://en.wikipedia.org/wiki/Jacobi_symbol + + For our application k is always prime, so this is the same as the Legendre symbol. + """ + assert k > 0 and k & 1, "jacobi symbol is only defined for positive odd k" + n %= k + t = 0 + while n != 0: + while n & 1 == 0: + n >>= 1 + r = k & 7 + t ^= r == 3 or r == 5 + n, k = k, n + t ^= n & k & 3 == 3 + n = n % k + if k == 1: + return -1 if t else 1 + return 0 + + +def modsqrt(a, p): + """Compute the square root of a modulo p when p % 4 = 3. + + The Tonelli-Shanks algorithm can be used. See https://en.wikipedia.org/wiki/Tonelli-Shanks_algorithm + + Limiting this function to only work for p % 4 = 3 means we don't need to + iterate through the loop. The highest n such that p - 1 = 2^n Q with Q odd + is n = 1. Therefore Q = (p-1)/2 and sqrt = a^((Q+1)/2) = a^((p+1)/4) + + secp256k1's is defined over field of size 2**256 - 2**32 - 977, which is 3 mod 4. + """ + if p % 4 != 3: + raise NotImplementedError("modsqrt only implemented for p % 4 = 3") + sqrt = pow(a, (p + 1) // 4, p) + if pow(sqrt, 2, p) == a % p: + return sqrt + return None + + +class EllipticCurve: + def __init__(self, p, a, b): + """Initialize elliptic curve y^2 = x^3 + a*x + b over GF(p).""" + self.p = p + self.a = a % p + self.b = b % p + + def affine(self, p1): + """Convert a Jacobian point tuple p1 to affine form, or None if at infinity. + + An affine point is represented as the Jacobian (x, y, 1)""" + x1, y1, z1 = p1 + if z1 == 0: + return None + inv = modinv(z1, self.p) + inv_2 = (inv**2) % self.p + inv_3 = (inv_2 * inv) % self.p + return ((inv_2 * x1) % self.p, (inv_3 * y1) % self.p, 1) + + def has_even_y(self, p1): + """Whether the point p1 has an even Y coordinate when expressed in affine coordinates.""" + return not (p1[2] == 0 or self.affine(p1)[1] & 1) + + def negate(self, p1): + """Negate a Jacobian point tuple p1.""" + x1, y1, z1 = p1 + return (x1, (self.p - y1) % self.p, z1) + + def on_curve(self, p1): + """Determine whether a Jacobian tuple p is on the curve (and not infinity)""" + x1, y1, z1 = p1 + z2 = pow(z1, 2, self.p) + z4 = pow(z2, 2, self.p) + return ( + z1 != 0 + and ( + pow(x1, 3, self.p) + + self.a * x1 * z4 + + self.b * z2 * z4 + - pow(y1, 2, self.p) + ) + % self.p + == 0 + ) + + def is_x_coord(self, x): + """Test whether x is a valid X coordinate on the curve.""" + x_3 = pow(x, 3, self.p) + return jacobi_symbol(x_3 + self.a * x + self.b, self.p) != -1 + + def lift_x(self, x): + """Given an X coordinate on the curve, return a corresponding affine point for which the Y coordinate is even.""" + x_3 = pow(x, 3, self.p) + v = x_3 + self.a * x + self.b + y = modsqrt(v, self.p) + if y is None: + return None + return (x, self.p - y if y & 1 else y, 1) + + def double(self, p1): + """Double a Jacobian tuple p1 + + See https://en.wikibooks.org/wiki/Cryptography/Prime_Curve/Jacobian_Coordinates - Point Doubling + """ + x1, y1, z1 = p1 + if z1 == 0: + return (0, 1, 0) + y1_2 = (y1**2) % self.p + y1_4 = (y1_2**2) % self.p + x1_2 = (x1**2) % self.p + s = (4 * x1 * y1_2) % self.p + m = 3 * x1_2 + if self.a: + m += self.a * pow(z1, 4, self.p) + m = m % self.p + x2 = (m**2 - 2 * s) % self.p + y2 = (m * (s - x2) - 8 * y1_4) % self.p + z2 = (2 * y1 * z1) % self.p + return (x2, y2, z2) + + def add_mixed(self, p1, p2): + """Add a Jacobian tuple p1 and an affine tuple p2 + + See https://en.wikibooks.org/wiki/Cryptography/Prime_Curve/Jacobian_Coordinates - Point Addition (with affine point) + """ + x1, y1, z1 = p1 + x2, y2, z2 = p2 + assert z2 == 1 + # Adding to the point at infinity is a no-op + if z1 == 0: + return p2 + z1_2 = (z1**2) % self.p + z1_3 = (z1_2 * z1) % self.p + u2 = (x2 * z1_2) % self.p + s2 = (y2 * z1_3) % self.p + if x1 == u2: + if y1 != s2: + # p1 and p2 are inverses. Return the point at infinity. + return (0, 1, 0) + # p1 == p2. The formulas below fail when the two points are equal. + return self.double(p1) + h = u2 - x1 + r = s2 - y1 + h_2 = (h**2) % self.p + h_3 = (h_2 * h) % self.p + u1_h_2 = (x1 * h_2) % self.p + x3 = (r**2 - h_3 - 2 * u1_h_2) % self.p + y3 = (r * (u1_h_2 - x3) - y1 * h_3) % self.p + z3 = (h * z1) % self.p + return (x3, y3, z3) + + def add(self, p1, p2): + """Add two Jacobian tuples p1 and p2 + + See https://en.wikibooks.org/wiki/Cryptography/Prime_Curve/Jacobian_Coordinates - Point Addition + """ + x1, y1, z1 = p1 + x2, y2, z2 = p2 + # Adding the point at infinity is a no-op + if z1 == 0: + return p2 + if z2 == 0: + return p1 + # Adding an Affine to a Jacobian is more efficient since we save field multiplications and squarings when z = 1 + if z1 == 1: + return self.add_mixed(p2, p1) + if z2 == 1: + return self.add_mixed(p1, p2) + z1_2 = (z1**2) % self.p + z1_3 = (z1_2 * z1) % self.p + z2_2 = (z2**2) % self.p + z2_3 = (z2_2 * z2) % self.p + u1 = (x1 * z2_2) % self.p + u2 = (x2 * z1_2) % self.p + s1 = (y1 * z2_3) % self.p + s2 = (y2 * z1_3) % self.p + if u1 == u2: + if s1 != s2: + # p1 and p2 are inverses. Return the point at infinity. + return (0, 1, 0) + # p1 == p2. The formulas below fail when the two points are equal. + return self.double(p1) + h = u2 - u1 + r = s2 - s1 + h_2 = (h**2) % self.p + h_3 = (h_2 * h) % self.p + u1_h_2 = (u1 * h_2) % self.p + x3 = (r**2 - h_3 - 2 * u1_h_2) % self.p + y3 = (r * (u1_h_2 - x3) - s1 * h_3) % self.p + z3 = (h * z1 * z2) % self.p + return (x3, y3, z3) + + def mul(self, ps): + """Compute a (multi) point multiplication + + ps is a list of (Jacobian tuple, scalar) pairs. + """ + r = (0, 1, 0) + for i in range(255, -1, -1): + r = self.double(r) + for p, n in ps: + if (n >> i) & 1: + r = self.add(r, p) + return r + + +SECP256K1_FIELD_SIZE = 2**256 - 2**32 - 977 +SECP256K1 = EllipticCurve(SECP256K1_FIELD_SIZE, 0, 7) +SECP256K1_G = ( + 0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798, + 0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8, + 1, +) +SECP256K1_ORDER = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 +SECP256K1_ORDER_HALF = SECP256K1_ORDER // 2 + + +class ECPubKey: + """A secp256k1 public key""" + + def __init__(self): + """Construct an uninitialized public key""" + self.valid = False + + def set(self, data): + """Construct a public key from a serialization in compressed or uncompressed format""" + if len(data) == 65 and data[0] == 0x04: + p = ( + int.from_bytes(data[1:33], "big"), + int.from_bytes(data[33:65], "big"), + 1, + ) + self.valid = SECP256K1.on_curve(p) + if self.valid: + self.p = p + self.compressed = False + elif len(data) == 33 and (data[0] == 0x02 or data[0] == 0x03): + x = int.from_bytes(data[1:33], "big") + if SECP256K1.is_x_coord(x): + p = SECP256K1.lift_x(x) + # Make the Y coordinate odd if required (lift_x always produces + # a point with an even Y coordinate). + if data[0] & 1: + p = SECP256K1.negate(p) + self.p = p + self.valid = True + self.compressed = True + else: + self.valid = False + else: + self.valid = False + + @property + def is_compressed(self): + return self.compressed + + @property + def is_valid(self): + return self.valid + + def get_bytes(self): + assert self.valid + p = SECP256K1.affine(self.p) + if p is None: + return None + if self.compressed: + return bytes([0x02 + (p[1] & 1)]) + p[0].to_bytes(32, "big") + else: + return bytes([0x04]) + p[0].to_bytes(32, "big") + p[1].to_bytes(32, "big") + + def verify_ecdsa(self, sig, msg, low_s=True): + """Verify a strictly DER-encoded ECDSA signature against this pubkey. + + See https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm for the + ECDSA verifier algorithm""" + assert self.valid + + # Extract r and s from the DER formatted signature. Return false for + # any DER encoding errors. + if sig[1] + 2 != len(sig): + return False + if len(sig) < 4: + return False + if sig[0] != 0x30: + return False + if sig[2] != 0x02: + return False + rlen = sig[3] + if len(sig) < 6 + rlen: + return False + if rlen < 1 or rlen > 33: + return False + if sig[4] >= 0x80: + return False + if rlen > 1 and (sig[4] == 0) and not (sig[5] & 0x80): + return False + r = int.from_bytes(sig[4 : 4 + rlen], "big") + if sig[4 + rlen] != 0x02: + return False + slen = sig[5 + rlen] + if slen < 1 or slen > 33: + return False + if len(sig) != 6 + rlen + slen: + return False + if sig[6 + rlen] >= 0x80: + return False + if slen > 1 and (sig[6 + rlen] == 0) and not (sig[7 + rlen] & 0x80): + return False + s = int.from_bytes(sig[6 + rlen : 6 + rlen + slen], "big") + + # Verify that r and s are within the group order + if r < 1 or s < 1 or r >= SECP256K1_ORDER or s >= SECP256K1_ORDER: + return False + if low_s and s >= SECP256K1_ORDER_HALF: + return False + z = int.from_bytes(msg, "big") + + # Run verifier algorithm on r, s + w = modinv(s, SECP256K1_ORDER) + u1 = z * w % SECP256K1_ORDER + u2 = r * w % SECP256K1_ORDER + R = SECP256K1.affine(SECP256K1.mul([(SECP256K1_G, u1), (self.p, u2)])) + if R is None or (R[0] % SECP256K1_ORDER) != r: + return False + return True + + +def generate_privkey(): + """Generate a valid random 32-byte private key.""" + return random.randrange(1, SECP256K1_ORDER).to_bytes(32, "big") + + +class ECKey: + """A secp256k1 private key""" + + def __init__(self): + self.valid = False + + def set(self, secret, compressed): + """Construct a private key object with given 32-byte secret and compressed flag.""" + assert len(secret) == 32 + secret = int.from_bytes(secret, "big") + self.valid = secret > 0 and secret < SECP256K1_ORDER + if self.valid: + self.secret = secret + self.compressed = compressed + + def generate(self, compressed=True): + """Generate a random private key (compressed or uncompressed).""" + self.set(generate_privkey(), compressed) + + def get_bytes(self): + """Retrieve the 32-byte representation of this key.""" + assert self.valid + return self.secret.to_bytes(32, "big") + + @property + def is_valid(self): + return self.valid + + @property + def is_compressed(self): + return self.compressed + + def get_pubkey(self): + """Compute an ECPubKey object for this secret key.""" + assert self.valid + ret = ECPubKey() + p = SECP256K1.mul([(SECP256K1_G, self.secret)]) + ret.p = p + ret.valid = True + ret.compressed = self.compressed + return ret + + def sign_ecdsa(self, msg, nonce_function=None, extra_data=None, low_s=True): + """Construct a DER-encoded ECDSA signature with this key. + + See https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm for the + ECDSA signer algorithm.""" + assert self.valid + z = int.from_bytes(msg, "big") + if nonce_function is None: + nonce_function = deterministic_k + k = nonce_function(self.secret, z, extra_data=extra_data) + R = SECP256K1.affine(SECP256K1.mul([(SECP256K1_G, k)])) + r = R[0] % SECP256K1_ORDER + s = (modinv(k, SECP256K1_ORDER) * (z + self.secret * r)) % SECP256K1_ORDER + if low_s and s > SECP256K1_ORDER_HALF: + s = SECP256K1_ORDER - s + # Represent in DER format. The byte representations of r and s have + # length rounded up (255 bits becomes 32 bytes and 256 bits becomes 33 + # bytes). + rb = r.to_bytes((r.bit_length() + 8) // 8, "big") + sb = s.to_bytes((s.bit_length() + 8) // 8, "big") + return ( + b"\x30" + + bytes([4 + len(rb) + len(sb), 2, len(rb)]) + + rb + + bytes([2, len(sb)]) + + sb + ) + + +def deterministic_k(secret, z, extra_data=None): + # RFC6979, optimized for secp256k1 + k = b"\x00" * 32 + v = b"\x01" * 32 + if z > SECP256K1_ORDER: + z -= SECP256K1_ORDER + z_bytes = z.to_bytes(32, "big") + secret_bytes = secret.to_bytes(32, "big") + if extra_data is not None: + z_bytes += extra_data + k = hmac.new(k, v + b"\x00" + secret_bytes + z_bytes, "sha256").digest() + v = hmac.new(k, v, "sha256").digest() + k = hmac.new(k, v + b"\x01" + secret_bytes + z_bytes, "sha256").digest() + v = hmac.new(k, v, "sha256").digest() + while True: + v = hmac.new(k, v, "sha256").digest() + candidate = int.from_bytes(v, "big") + if candidate >= 1 and candidate < SECP256K1_ORDER: + return candidate + k = hmac.new(k, v + b"\x00", "sha256").digest() + v = hmac.new(k, v, "sha256").digest() + + +def compute_xonly_pubkey(key): + """Compute an x-only (32 byte) public key from a (32 byte) private key. + + This also returns whether the resulting public key was negated. + """ + + assert len(key) == 32 + x = int.from_bytes(key, "big") + if x == 0 or x >= SECP256K1_ORDER: + return (None, None) + P = SECP256K1.affine(SECP256K1.mul([(SECP256K1_G, x)])) + return (P[0].to_bytes(32, "big"), not SECP256K1.has_even_y(P)) + + +def tweak_add_privkey(key, tweak): + """Tweak a private key (after negating it if needed).""" + + assert len(key) == 32 + assert len(tweak) == 32 + + x = int.from_bytes(key, "big") + if x == 0 or x >= SECP256K1_ORDER: + return None + if not SECP256K1.has_even_y(SECP256K1.mul([(SECP256K1_G, x)])): + x = SECP256K1_ORDER - x + t = int.from_bytes(tweak, "big") + if t >= SECP256K1_ORDER: + return None + x = (x + t) % SECP256K1_ORDER + if x == 0: + return None + return x.to_bytes(32, "big") + + +def tweak_add_pubkey(key, tweak): + """Tweak a public key and return whether the result had to be negated.""" + + assert len(key) == 32 + assert len(tweak) == 32 + + x_coord = int.from_bytes(key, "big") + if x_coord >= SECP256K1_FIELD_SIZE: + return None + P = SECP256K1.lift_x(x_coord) + if P is None: + return None + t = int.from_bytes(tweak, "big") + if t >= SECP256K1_ORDER: + return None + Q = SECP256K1.affine(SECP256K1.mul([(SECP256K1_G, t), (P, 1)])) + if Q is None: + return None + return (Q[0].to_bytes(32, "big"), not SECP256K1.has_even_y(Q)) + + +def verify_schnorr(key, sig, msg): + """Verify a Schnorr signature (see BIP 340). + - key is a 32-byte xonly pubkey (computed using compute_xonly_pubkey). + - sig is a 64-byte Schnorr signature + - msg is a 32-byte message + """ + assert len(key) == 32 + assert len(msg) == 32 + assert len(sig) == 64 + + x_coord = int.from_bytes(key, "big") + if x_coord == 0 or x_coord >= SECP256K1_FIELD_SIZE: + return False + P = SECP256K1.lift_x(x_coord) + if P is None: + return False + r = int.from_bytes(sig[0:32], "big") + if r >= SECP256K1_FIELD_SIZE: + return False + s = int.from_bytes(sig[32:64], "big") + if s >= SECP256K1_ORDER: + return False + e = ( + int.from_bytes(TaggedHash("BIP0340/challenge", sig[0:32] + key + msg), "big") + % SECP256K1_ORDER + ) + R = SECP256K1.mul([(SECP256K1_G, s), (P, SECP256K1_ORDER - e)]) + if not SECP256K1.has_even_y(R): + return False + if ((r * R[2] * R[2]) % SECP256K1_FIELD_SIZE) != R[0]: + return False + return True + + +def sign_schnorr(key, msg, aux=None, flip_p=False, flip_r=False): + """Create a Schnorr signature (see BIP 340).""" + + assert len(key) == 32 + assert len(msg) == 32 + if aux is not None: + assert len(aux) == 32 + + sec = int.from_bytes(key, "big") + if sec == 0 or sec >= SECP256K1_ORDER: + return None + P = SECP256K1.affine(SECP256K1.mul([(SECP256K1_G, sec)])) + if SECP256K1.has_even_y(P) == flip_p: + sec = SECP256K1_ORDER - sec + if aux is not None: + t = (sec ^ int.from_bytes(TaggedHash("BIP0340/aux", aux), "big")).to_bytes( + 32, "big" + ) + else: + t = sec.to_bytes(32, "big") + kp = ( + int.from_bytes( + TaggedHash("BIP0340/nonce", t + P[0].to_bytes(32, "big") + msg), "big" + ) + % SECP256K1_ORDER + ) + assert kp != 0 + R = SECP256K1.affine(SECP256K1.mul([(SECP256K1_G, kp)])) + k = kp if SECP256K1.has_even_y(R) != flip_r else SECP256K1_ORDER - kp + e = ( + int.from_bytes( + TaggedHash( + "BIP0340/challenge", + R[0].to_bytes(32, "big") + P[0].to_bytes(32, "big") + msg, + ), + "big", + ) + % SECP256K1_ORDER + ) + return R[0].to_bytes(32, "big") + ((k + e * sec) % SECP256K1_ORDER).to_bytes( + 32, "big" + ) diff --git a/bitcoin_client/ledger_bitcoin/embit/util/py_ripemd160.py b/bitcoin_client/ledger_bitcoin/embit/util/py_ripemd160.py new file mode 100644 index 000000000..7eeaa56ca --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/util/py_ripemd160.py @@ -0,0 +1,407 @@ +# Copyright (c) 2021 Pieter Wuille +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. +"""Pure Python RIPEMD160 implementation.""" + +# Message schedule indexes for the left path. +ML = [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 7, + 4, + 13, + 1, + 10, + 6, + 15, + 3, + 12, + 0, + 9, + 5, + 2, + 14, + 11, + 8, + 3, + 10, + 14, + 4, + 9, + 15, + 8, + 1, + 2, + 7, + 0, + 6, + 13, + 11, + 5, + 12, + 1, + 9, + 11, + 10, + 0, + 8, + 12, + 4, + 13, + 3, + 7, + 15, + 14, + 5, + 6, + 2, + 4, + 0, + 5, + 9, + 7, + 12, + 2, + 10, + 14, + 1, + 3, + 8, + 11, + 6, + 15, + 13, +] + +# Message schedule indexes for the right path. +MR = [ + 5, + 14, + 7, + 0, + 9, + 2, + 11, + 4, + 13, + 6, + 15, + 8, + 1, + 10, + 3, + 12, + 6, + 11, + 3, + 7, + 0, + 13, + 5, + 10, + 14, + 15, + 8, + 12, + 4, + 9, + 1, + 2, + 15, + 5, + 1, + 3, + 7, + 14, + 6, + 9, + 11, + 8, + 12, + 2, + 10, + 0, + 4, + 13, + 8, + 6, + 4, + 1, + 3, + 11, + 15, + 0, + 5, + 12, + 2, + 13, + 9, + 7, + 10, + 14, + 12, + 15, + 10, + 4, + 1, + 5, + 8, + 7, + 6, + 2, + 13, + 14, + 0, + 3, + 9, + 11, +] + +# Rotation counts for the left path. +RL = [ + 11, + 14, + 15, + 12, + 5, + 8, + 7, + 9, + 11, + 13, + 14, + 15, + 6, + 7, + 9, + 8, + 7, + 6, + 8, + 13, + 11, + 9, + 7, + 15, + 7, + 12, + 15, + 9, + 11, + 7, + 13, + 12, + 11, + 13, + 6, + 7, + 14, + 9, + 13, + 15, + 14, + 8, + 13, + 6, + 5, + 12, + 7, + 5, + 11, + 12, + 14, + 15, + 14, + 15, + 9, + 8, + 9, + 14, + 5, + 6, + 8, + 6, + 5, + 12, + 9, + 15, + 5, + 11, + 6, + 8, + 13, + 12, + 5, + 12, + 13, + 14, + 11, + 8, + 5, + 6, +] + +# Rotation counts for the right path. +RR = [ + 8, + 9, + 9, + 11, + 13, + 15, + 15, + 5, + 7, + 7, + 8, + 11, + 14, + 14, + 12, + 6, + 9, + 13, + 15, + 7, + 12, + 8, + 9, + 11, + 7, + 7, + 12, + 7, + 6, + 15, + 13, + 11, + 9, + 7, + 15, + 11, + 8, + 6, + 6, + 14, + 12, + 13, + 5, + 14, + 13, + 13, + 7, + 5, + 15, + 5, + 8, + 11, + 14, + 14, + 6, + 14, + 6, + 9, + 12, + 9, + 12, + 5, + 15, + 8, + 8, + 5, + 12, + 9, + 12, + 5, + 14, + 6, + 8, + 13, + 6, + 5, + 15, + 13, + 11, + 11, +] + +# K constants for the left path. +KL = [0, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E] + +# K constants for the right path. +KR = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0] + + +def fi(x, y, z, i): + """The f1, f2, f3, f4, and f5 functions from the specification.""" + if i == 0: + return x ^ y ^ z + elif i == 1: + return (x & y) | (~x & z) + elif i == 2: + return (x | ~y) ^ z + elif i == 3: + return (x & z) | (y & ~z) + elif i == 4: + return x ^ (y | ~z) + else: + assert False + + +def rol(x, i): + """Rotate the bottom 32 bits of x left by i bits.""" + return ((x << i) | ((x & 0xFFFFFFFF) >> (32 - i))) & 0xFFFFFFFF + + +def compress(h0, h1, h2, h3, h4, block): + """Compress state (h0, h1, h2, h3, h4) with block.""" + # Left path variables. + al, bl, cl, dl, el = h0, h1, h2, h3, h4 + # Right path variables. + ar, br, cr, dr, er = h0, h1, h2, h3, h4 + # Message variables. + x = [int.from_bytes(block[4 * i : 4 * (i + 1)], "little") for i in range(16)] + + # Iterate over the 80 rounds of the compression. + for j in range(80): + rnd = j >> 4 + # Perform left side of the transformation. + al = rol(al + fi(bl, cl, dl, rnd) + x[ML[j]] + KL[rnd], RL[j]) + el + al, bl, cl, dl, el = el, al, bl, rol(cl, 10), dl + # Perform right side of the transformation. + ar = rol(ar + fi(br, cr, dr, 4 - rnd) + x[MR[j]] + KR[rnd], RR[j]) + er + ar, br, cr, dr, er = er, ar, br, rol(cr, 10), dr + + # Compose old state, left transform, and right transform into new state. + return h1 + cl + dr, h2 + dl + er, h3 + el + ar, h4 + al + br, h0 + bl + cr + + +def ripemd160(data): + """Compute the RIPEMD-160 hash of data.""" + # Initialize state. + state = (0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0) + # Process full 64-byte blocks in the input. + for b in range(len(data) >> 6): + state = compress(*state, data[64 * b : 64 * (b + 1)]) + # Construct final blocks (with padding and size). + pad = b"\x80" + b"\x00" * ((119 - len(data)) & 63) + fin = data[len(data) & ~63 :] + pad + (8 * len(data)).to_bytes(8, "little") + # Process final blocks. + for b in range(len(fin) >> 6): + state = compress(*state, fin[64 * b : 64 * (b + 1)]) + # Produce output. + return b"".join((h & 0xFFFFFFFF).to_bytes(4, "little") for h in state) diff --git a/bitcoin_client/ledger_bitcoin/embit/util/py_secp256k1.py b/bitcoin_client/ledger_bitcoin/embit/util/py_secp256k1.py new file mode 100644 index 000000000..851408635 --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/util/py_secp256k1.py @@ -0,0 +1,384 @@ +""" +This is a fallback option if the library can't do ctypes bindings to secp256k1 library. +Mimics the micropython bindings and internal representation of data structs in secp256k1. +""" + +from . import key as _key + +# Flags to pass to context_create. +CONTEXT_VERIFY = 0b0100000001 +CONTEXT_SIGN = 0b1000000001 +CONTEXT_NONE = 0b0000000001 + +# Flags to pass to ec_pubkey_serialize +EC_COMPRESSED = 0b0100000010 +EC_UNCOMPRESSED = 0b0000000010 + + +def context_randomize(seed, context=None): + pass + + +def _reverse64(b): + """Converts (a,b) from big to little endian to be consistent with secp256k1""" + x = b[:32] + y = b[32:] + return x[::-1] + y[::-1] + + +def _pubkey_serialize(pub): + """Returns pubkey representation like secp library""" + b = pub.get_bytes()[1:] + return _reverse64(b) + + +def _pubkey_parse(b): + """Returns pubkey class instance""" + pub = _key.ECPubKey() + pub.set(b"\x04" + _reverse64(b)) + return pub + + +def ec_pubkey_create(secret, context=None): + if len(secret) != 32: + raise ValueError("Private key should be 32 bytes long") + pk = _key.ECKey() + pk.set(secret, compressed=False) + if not pk.is_valid: + raise ValueError("Invalid private key") + return _pubkey_serialize(pk.get_pubkey()) + + +def ec_pubkey_parse(sec, context=None): + if len(sec) != 33 and len(sec) != 65: + raise ValueError("Serialized pubkey should be 33 or 65 bytes long") + if len(sec) == 33: + if sec[0] != 0x02 and sec[0] != 0x03: + raise ValueError("Compressed pubkey should start with 0x02 or 0x03") + else: + if sec[0] != 0x04: + raise ValueError("Uncompressed pubkey should start with 0x04") + pub = _key.ECPubKey() + pub.set(sec) + pub.compressed = False + if not pub.is_valid: + raise ValueError("Failed parsing public key") + return _pubkey_serialize(pub) + + +def ec_pubkey_serialize(pubkey, flag=EC_COMPRESSED, context=None): + if len(pubkey) != 64: + raise ValueError("Pubkey should be 64 bytes long") + if flag not in [EC_COMPRESSED, EC_UNCOMPRESSED]: + raise ValueError("Invalid flag") + pub = _pubkey_parse(pubkey) + if not pub.is_valid: + raise ValueError("Failed to serialize pubkey") + if flag == EC_COMPRESSED: + pub.compressed = True + return pub.get_bytes() + + +def ecdsa_signature_parse_compact(compact_sig, context=None): + if len(compact_sig) != 64: + raise ValueError("Compact signature should be 64 bytes long") + sig = _reverse64(compact_sig) + return sig + + +def ecdsa_signature_parse_der(der, context=None): + if der[1] + 2 != len(der): + raise ValueError("Failed parsing compact signature") + if len(der) < 4: + raise ValueError("Failed parsing compact signature") + if der[0] != 0x30: + raise ValueError("Failed parsing compact signature") + if der[2] != 0x02: + raise ValueError("Failed parsing compact signature") + rlen = der[3] + if len(der) < 6 + rlen: + raise ValueError("Failed parsing compact signature") + if rlen < 1 or rlen > 33: + raise ValueError("Failed parsing compact signature") + if der[4] >= 0x80: + raise ValueError("Failed parsing compact signature") + if rlen > 1 and (der[4] == 0) and not (der[5] & 0x80): + raise ValueError("Failed parsing compact signature") + r = int.from_bytes(der[4 : 4 + rlen], "big") + if der[4 + rlen] != 0x02: + raise ValueError("Failed parsing compact signature") + slen = der[5 + rlen] + if slen < 1 or slen > 33: + raise ValueError("Failed parsing compact signature") + if len(der) != 6 + rlen + slen: + raise ValueError("Failed parsing compact signature") + if der[6 + rlen] >= 0x80: + raise ValueError("Failed parsing compact signature") + if slen > 1 and (der[6 + rlen] == 0) and not (der[7 + rlen] & 0x80): + raise ValueError("Failed parsing compact signature") + s = int.from_bytes(der[6 + rlen : 6 + rlen + slen], "big") + + # Verify that r and s are within the group order + if r < 1 or s < 1 or r >= _key.SECP256K1_ORDER or s >= _key.SECP256K1_ORDER: + raise ValueError("Failed parsing compact signature") + if s >= _key.SECP256K1_ORDER_HALF: + raise ValueError("Failed parsing compact signature") + + return r.to_bytes(32, "little") + s.to_bytes(32, "little") + + +def ecdsa_signature_serialize_der(sig, context=None): + if len(sig) != 64: + raise ValueError("Signature should be 64 bytes long") + r = int.from_bytes(sig[:32], "little") + s = int.from_bytes(sig[32:], "little") + rb = r.to_bytes((r.bit_length() + 8) // 8, "big") + sb = s.to_bytes((s.bit_length() + 8) // 8, "big") + return ( + b"\x30" + + bytes([4 + len(rb) + len(sb), 2, len(rb)]) + + rb + + bytes([2, len(sb)]) + + sb + ) + + +def ecdsa_signature_serialize_compact(sig, context=None): + if len(sig) != 64: + raise ValueError("Signature should be 64 bytes long") + return _reverse64(sig) + + +def ecdsa_signature_normalize(sig, context=None): + if len(sig) != 64: + raise ValueError("Signature should be 64 bytes long") + r = int.from_bytes(sig[:32], "little") + s = int.from_bytes(sig[32:], "little") + if s >= _key.SECP256K1_ORDER_HALF: + s = _key.SECP256K1_ORDER - s + return r.to_bytes(32, "little") + s.to_bytes(32, "little") + + +def ecdsa_verify(sig, msg, pub, context=None): + if len(sig) != 64: + raise ValueError("Signature should be 64 bytes long") + if len(msg) != 32: + raise ValueError("Message should be 32 bytes long") + if len(pub) != 64: + raise ValueError("Public key should be 64 bytes long") + pubkey = _pubkey_parse(pub) + return pubkey.verify_ecdsa(ecdsa_signature_serialize_der(sig), msg) + + +def ecdsa_sign(msg, secret, nonce_function=None, extra_data=None, context=None): + if len(msg) != 32: + raise ValueError("Message should be 32 bytes long") + if len(secret) != 32: + raise ValueError("Secret key should be 32 bytes long") + pk = _key.ECKey() + pk.set(secret, False) + sig = pk.sign_ecdsa(msg, nonce_function, extra_data) + return ecdsa_signature_parse_der(sig) + + +def ec_seckey_verify(secret, context=None): + if len(secret) != 32: + raise ValueError("Secret should be 32 bytes long") + pk = _key.ECKey() + pk.set(secret, compressed=False) + return pk.is_valid + + +def ec_privkey_negate(secret, context=None): + # negate in place + if len(secret) != 32: + raise ValueError("Secret should be 32 bytes long") + s = int.from_bytes(secret, "big") + s2 = _key.SECP256K1_ORDER - s + return s2.to_bytes(32, "big") + + +def ec_pubkey_negate(pubkey, context=None): + if len(pubkey) != 64: + raise ValueError("Pubkey should be a 64-byte structure") + sec = ec_pubkey_serialize(pubkey) + return ec_pubkey_parse(bytes([0x05 - sec[0]]) + sec[1:]) + + +def ec_privkey_tweak_add(secret, tweak, context=None): + res = ec_privkey_add(secret, tweak) + for i in range(len(secret)): + secret[i] = res[i] + + +def ec_pubkey_tweak_add(pub, tweak, context=None): + res = ec_pubkey_add(pub, tweak) + for i in range(len(pub)): + pub[i] = res[i] + + +def ec_privkey_add(secret, tweak, context=None): + if len(secret) != 32 or len(tweak) != 32: + raise ValueError("Secret and tweak should both be 32 bytes long") + s = int.from_bytes(secret, "big") + t = int.from_bytes(tweak, "big") + r = (s + t) % _key.SECP256K1_ORDER + return r.to_bytes(32, "big") + + +def ec_pubkey_add(pub, tweak, context=None): + if len(pub) != 64: + raise ValueError("Public key should be 64 bytes long") + if len(tweak) != 32: + raise ValueError("Tweak should be 32 bytes long") + pubkey = _pubkey_parse(pub) + pubkey.compressed = True + t = int.from_bytes(tweak, "big") + Q = _key.SECP256K1.affine( + _key.SECP256K1.mul([(_key.SECP256K1_G, t), (pubkey.p, 1)]) + ) + if Q is None: + return None + return Q[0].to_bytes(32, "little") + Q[1].to_bytes(32, "little") + + +# def ec_privkey_tweak_mul(secret, tweak, context=None): +# if len(secret)!=32 or len(tweak)!=32: +# raise ValueError("Secret and tweak should both be 32 bytes long") +# s = int.from_bytes(secret, 'big') +# t = int.from_bytes(tweak, 'big') +# if t > _key.SECP256K1_ORDER or s > _key.SECP256K1_ORDER: +# raise ValueError("Failed to tweak the secret") +# r = pow(s, t, _key.SECP256K1_ORDER) +# res = r.to_bytes(32, 'big') +# for i in range(len(secret)): +# secret[i] = res[i] + +# def ec_pubkey_tweak_mul(pub, tweak, context=None): +# if len(pub)!=64: +# raise ValueError("Public key should be 64 bytes long") +# if len(tweak)!=32: +# raise ValueError("Tweak should be 32 bytes long") +# if _secp.secp256k1_ec_pubkey_tweak_mul(context, pub, tweak) == 0: +# raise ValueError("Failed to tweak the public key") + +# def ec_pubkey_combine(*args, context=None): +# pub = bytes(64) +# pubkeys = (c_char_p * len(args))(*args) +# r = _secp.secp256k1_ec_pubkey_combine(context, pub, pubkeys, len(args)) +# if r == 0: +# raise ValueError("Failed to negate pubkey") +# return pub + +# schnorrsig + + +def xonly_pubkey_from_pubkey(pubkey, context=None): + if len(pubkey) != 64: + raise ValueError("Pubkey should be 64 bytes long") + sec = ec_pubkey_serialize(pubkey) + parity = sec[0] == 0x03 + pub = ec_pubkey_parse(b"\x02" + sec[1:33]) + return pub, parity + + +def schnorrsig_verify(sig, msg, pubkey, context=None): + assert len(sig) == 64 + assert len(msg) == 32 + assert len(pubkey) == 64 + sec = ec_pubkey_serialize(pubkey) + return _key.verify_schnorr(sec[1:33], sig, msg) + + +def keypair_create(secret, context=None): + pub = ec_pubkey_create(secret) + pub2, parity = xonly_pubkey_from_pubkey(pub) + keypair = secret + pub + return keypair + + +def schnorrsig_sign(msg, keypair, nonce_function=None, extra_data=None, context=None): + assert len(msg) == 32 + if len(keypair) == 32: + keypair = keypair_create(keypair, context=context) + assert len(keypair) == 96 + return _key.sign_schnorr(keypair[:32], msg, extra_data) + + +# recoverable + + +def ecdsa_sign_recoverable(msg, secret, context=None): + sig = ecdsa_sign(msg, secret) + pub = ec_pubkey_create(secret) + # Search for correct index. Not efficient but I am lazy. + # For efficiency use c-bindings to libsecp256k1 + for i in range(4): + if ecdsa_recover(sig + bytes([i]), msg) == pub: + return sig + bytes([i]) + raise ValueError("Failed to sign") + + +def ecdsa_recoverable_signature_serialize_compact(sig, context=None): + if len(sig) != 65: + raise ValueError("Recoverable signature should be 65 bytes long") + compact = ecdsa_signature_serialize_compact(sig[:64]) + return compact, sig[64] + + +def ecdsa_recoverable_signature_parse_compact(compact_sig, recid, context=None): + if len(compact_sig) != 64: + raise ValueError("Signature should be 64 bytes long") + # TODO: also check r value so recid > 2 makes sense + if recid < 0 or recid > 4: + raise ValueError("Failed parsing compact signature") + return ecdsa_signature_parse_compact(compact_sig) + bytes([recid]) + + +def ecdsa_recoverable_signature_convert(sigin, context=None): + if len(sigin) != 65: + raise ValueError("Recoverable signature should be 65 bytes long") + return sigin[:64] + + +def ecdsa_recover(sig, msghash, context=None): + if len(sig) != 65: + raise ValueError("Recoverable signature should be 65 bytes long") + if len(msghash) != 32: + raise ValueError("Message should be 32 bytes long") + idx = sig[-1] + r = int.from_bytes(sig[:32], "little") + s = int.from_bytes(sig[32:64], "little") + z = int.from_bytes(msghash, "big") + # r = Rx mod N, so R can be 02x, 03x, 02(N+x), 03(N+x) + # two latter cases only if N+x < P + r_candidates = [ + b"\x02" + r.to_bytes(32, "big"), + b"\x03" + r.to_bytes(32, "big"), + ] + if r + _key.SECP256K1_ORDER < _key.SECP256K1_FIELD_SIZE: + r2 = r + _key.SECP256K1_ORDER + r_candidates = r_candidates + [ + b"\x02" + r2.to_bytes(32, "big"), + b"\x03" + r2.to_bytes(32, "big"), + ] + if idx >= len(r_candidates): + raise ValueError("Failed to recover public key") + R = _key.ECPubKey() + R.set(r_candidates[idx]) + # s = (z + d * r)/k + # (R*s/r - z/r*G) = P + rinv = _key.modinv(r, _key.SECP256K1_ORDER) + u1 = (s * rinv) % _key.SECP256K1_ORDER + u2 = (z * rinv) % _key.SECP256K1_ORDER + P1 = _key.SECP256K1.mul([(R.p, u1)]) + P2 = _key.SECP256K1.negate(_key.SECP256K1.mul([(_key.SECP256K1_G, u2)])) + P = _key.SECP256K1.affine(_key.SECP256K1.add(P1, P2)) + result = P[0].to_bytes(32, "little") + P[1].to_bytes(32, "little") + # verify signature at the end + pubkey = _pubkey_parse(result) + if not pubkey.is_valid: + raise ValueError("Failed to recover public key") + if not ecdsa_verify(sig[:64], msghash, result): + raise ValueError("Failed to recover public key") + return result diff --git a/bitcoin_client/ledger_bitcoin/embit/util/secp256k1.py b/bitcoin_client/ledger_bitcoin/embit/util/secp256k1.py new file mode 100644 index 000000000..a3ed8d9a7 --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/embit/util/secp256k1.py @@ -0,0 +1,12 @@ +try: + # if it's micropython + from micropython import const + from secp256k1 import * +except: + # we are in python + try: + # try ctypes bindings + from .ctypes_secp256k1 import * + except: + # fallback to python version + from .py_secp256k1 import * diff --git a/bitcoin_client/ledger_bitcoin/exception/device_exception.py b/bitcoin_client/ledger_bitcoin/exception/device_exception.py index b20a57cc7..7596420ad 100644 --- a/bitcoin_client/ledger_bitcoin/exception/device_exception.py +++ b/bitcoin_client/ledger_bitcoin/exception/device_exception.py @@ -6,12 +6,14 @@ class DeviceException(Exception): # pylint: disable=too-few-public-methods exc: Dict[int, Any] = { + 0x5515: SecurityStatusNotSatisfiedError, # returned by sdk in recent versions 0x6985: DenyError, - 0x6982: SecurityStatusNotSatisfiedError, + 0x6982: SecurityStatusNotSatisfiedError, # used in older app versions 0x6A80: IncorrectDataError, 0x6A82: NotSupportedError, 0x6A86: WrongP1P2Error, 0x6A87: WrongDataLengthError, + 0x6B00: SwapError, 0x6D00: InsNotSupportedError, 0x6E00: ClaNotSupportedError, 0xB000: WrongResponseLengthError, diff --git a/bitcoin_client/ledger_bitcoin/exception/errors.py b/bitcoin_client/ledger_bitcoin/exception/errors.py index e875d08bb..d2ec53aa3 100644 --- a/bitcoin_client/ledger_bitcoin/exception/errors.py +++ b/bitcoin_client/ledger_bitcoin/exception/errors.py @@ -26,6 +26,10 @@ class WrongDataLengthError(Exception): pass +class SwapError(Exception): + pass + + class InsNotSupportedError(Exception): pass diff --git a/bitcoin_client/ledger_bitcoin/psbt.py b/bitcoin_client/ledger_bitcoin/psbt.py index abc40128f..57dac5869 100644 --- a/bitcoin_client/ledger_bitcoin/psbt.py +++ b/bitcoin_client/ledger_bitcoin/psbt.py @@ -19,6 +19,7 @@ Sequence, Set, Tuple, + Union, ) from .key import KeyOriginInfo @@ -1181,7 +1182,6 @@ def convert_to_v0(self) -> None: self.tx = self.get_unsigned_tx() self.explicit_version = False - def _deserialize_proprietary_record(self, f: Readable, key: bytes) -> bool: """ :meta private: @@ -1204,3 +1204,20 @@ def _serialize_proprietary_records(self) -> bytes: :returns: The serialized records or an empty byte string if there are none. """ return b"" + + +def normalize_psbt(psbt: Union[PSBT, bytes, str]) -> PSBT: + """ + Deserializes a psbt given as an argument from a string or a byte array, if necessary. + + :param psbt: Either an instance of PSBT, or binary-encoded psbt as `bytes`, or a base64-encoded psbt as a `str`. + :returns: the deserialized PSBT object. If `psbt` was already a `PSBT`, it is returned directly (without cloning). + """ + if isinstance(psbt, bytes): + psbt = base64.b64encode(psbt).decode() + + if isinstance(psbt, str): + psbt_obj = PSBT() + psbt_obj.deserialize(psbt) + psbt = psbt_obj + return psbt diff --git a/tests-legacy/bitcoin_client/hwi/__init__.py b/bitcoin_client/ledger_bitcoin/py.typed similarity index 100% rename from tests-legacy/bitcoin_client/hwi/__init__.py rename to bitcoin_client/ledger_bitcoin/py.typed diff --git a/bitcoin_client/ledger_bitcoin/ripemd.py b/bitcoin_client/ledger_bitcoin/ripemd.py new file mode 100644 index 000000000..ee08cc387 --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/ripemd.py @@ -0,0 +1,115 @@ +# Copyright (c) 2021 Pieter Wuille +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. +# +# Taken from https://github.com/bitcoin/bitcoin/blob/124e75a41ea0f3f0e90b63b0c41813184ddce2ab/test/functional/test_framework/ripemd160.py + +""" +Pure Python RIPEMD160 implementation. + +WARNING: This implementation is NOT constant-time. +Do not use without understanding the implications. +""" + +# Message schedule indexes for the left path. +ML = [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, + 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, + 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, + 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 +] + +# Message schedule indexes for the right path. +MR = [ + 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, + 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, + 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, + 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, + 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 +] + +# Rotation counts for the left path. +RL = [ + 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, + 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, + 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, + 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, + 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 +] + +# Rotation counts for the right path. +RR = [ + 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, + 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, + 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, + 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, + 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 +] + +# K constants for the left path. +KL = [0, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e] + +# K constants for the right path. +KR = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0] + + +def fi(x, y, z, i): + """The f1, f2, f3, f4, and f5 functions from the specification.""" + if i == 0: + return x ^ y ^ z + elif i == 1: + return (x & y) | (~x & z) + elif i == 2: + return (x | ~y) ^ z + elif i == 3: + return (x & z) | (y & ~z) + elif i == 4: + return x ^ (y | ~z) + else: + assert False + + +def rol(x, i): + """Rotate the bottom 32 bits of x left by i bits.""" + return ((x << i) | ((x & 0xffffffff) >> (32 - i))) & 0xffffffff + + +def compress(h0, h1, h2, h3, h4, block): + """Compress state (h0, h1, h2, h3, h4) with block.""" + # Left path variables. + al, bl, cl, dl, el = h0, h1, h2, h3, h4 + # Right path variables. + ar, br, cr, dr, er = h0, h1, h2, h3, h4 + # Message variables. + x = [int.from_bytes(block[4*i:4*(i+1)], 'little') for i in range(16)] + + # Iterate over the 80 rounds of the compression. + for j in range(80): + rnd = j >> 4 + # Perform left side of the transformation. + al = rol(al + fi(bl, cl, dl, rnd) + x[ML[j]] + KL[rnd], RL[j]) + el + al, bl, cl, dl, el = el, al, bl, rol(cl, 10), dl + # Perform right side of the transformation. + ar = rol(ar + fi(br, cr, dr, 4 - rnd) + x[MR[j]] + KR[rnd], RR[j]) + er + ar, br, cr, dr, er = er, ar, br, rol(cr, 10), dr + + # Compose old state, left transform, and right transform into new state. + return h1 + cl + dr, h2 + dl + er, h3 + el + ar, h4 + al + br, h0 + bl + cr + + +def ripemd160(data): + """Compute the RIPEMD-160 hash of data.""" + # Initialize state. + state = (0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0) + # Process full 64-byte blocks in the input. + for b in range(len(data) >> 6): + state = compress(*state, data[64*b:64*(b+1)]) + # Construct final blocks (with padding and size). + pad = b"\x80" + b"\x00" * ((119 - len(data)) & 63) + fin = data[len(data) & ~63:] + pad + (8 * len(data)).to_bytes(8, 'little') + # Process final blocks. + for b in range(len(fin) >> 6): + state = compress(*state, fin[64*b:64*(b+1)]) + # Produce output. + return b"".join((h & 0xffffffff).to_bytes(4, 'little') for h in state) diff --git a/tests-legacy/bitcoin_client/hwi/bech32.py b/bitcoin_client/ledger_bitcoin/segwit_addr.py similarity index 72% rename from tests-legacy/bitcoin_client/hwi/bech32.py rename to bitcoin_client/ledger_bitcoin/segwit_addr.py index 68f246874..ef4174773 100644 --- a/tests-legacy/bitcoin_client/hwi/bech32.py +++ b/bitcoin_client/ledger_bitcoin/segwit_addr.py @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Pieter Wuille +# Copyright (c) 2017, 2020 Pieter Wuille # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -18,11 +18,18 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -"""Reference implementation for Bech32 and segwit addresses.""" +"""Reference implementation for Bech32/Bech32m and segwit addresses.""" -CHARSET = "qpzry9x8gf2tvdw0s3jn54khce6mua7l" +from enum import Enum + +class Encoding(Enum): + """Enumeration type to list the various supported encodings.""" + BECH32 = 1 + BECH32M = 2 +CHARSET = "qpzry9x8gf2tvdw0s3jn54khce6mua7l" +BECH32M_CONST = 0x2bc830a3 def bech32_polymod(values): """Internal function that computes the Bech32 checksum.""" @@ -43,39 +50,43 @@ def bech32_hrp_expand(hrp): def bech32_verify_checksum(hrp, data): """Verify a checksum given HRP and converted data characters.""" - return bech32_polymod(bech32_hrp_expand(hrp) + data) == 1 - - -def bech32_create_checksum(hrp, data): + const = bech32_polymod(bech32_hrp_expand(hrp) + data) + if const == 1: + return Encoding.BECH32 + if const == BECH32M_CONST: + return Encoding.BECH32M + return None + +def bech32_create_checksum(hrp, data, spec): """Compute the checksum values given HRP and data.""" values = bech32_hrp_expand(hrp) + data - polymod = bech32_polymod(values + [0, 0, 0, 0, 0, 0]) ^ 1 + const = BECH32M_CONST if spec == Encoding.BECH32M else 1 + polymod = bech32_polymod(values + [0, 0, 0, 0, 0, 0]) ^ const return [(polymod >> 5 * (5 - i)) & 31 for i in range(6)] -def bech32_encode(hrp, data): +def bech32_encode(hrp, data, spec): """Compute a Bech32 string given HRP and data values.""" - combined = data + bech32_create_checksum(hrp, data) + combined = data + bech32_create_checksum(hrp, data, spec) return hrp + '1' + ''.join([CHARSET[d] for d in combined]) - def bech32_decode(bech): - """Validate a Bech32 string, and determine HRP and data.""" + """Validate a Bech32/Bech32m string, and determine HRP and data.""" if ((any(ord(x) < 33 or ord(x) > 126 for x in bech)) or (bech.lower() != bech and bech.upper() != bech)): - return (None, None) + return (None, None, None) bech = bech.lower() pos = bech.rfind('1') if pos < 1 or pos + 7 > len(bech) or len(bech) > 90: - return (None, None) - if not all(x in CHARSET for x in bech[pos + 1:]): - return (None, None) + return (None, None, None) + if not all(x in CHARSET for x in bech[pos+1:]): + return (None, None, None) hrp = bech[:pos] - data = [CHARSET.find(x) for x in bech[pos + 1:]] - if not bech32_verify_checksum(hrp, data): - return (None, None) - return (hrp, data[:-6]) - + data = [CHARSET.find(x) for x in bech[pos+1:]] + spec = bech32_verify_checksum(hrp, data) + if spec is None: + return (None, None, None) + return (hrp, data[:-6], spec) def convertbits(data, frombits, tobits, pad=True): """General power-of-2 base conversion.""" @@ -102,7 +113,7 @@ def convertbits(data, frombits, tobits, pad=True): def decode(hrp, addr): """Decode a segwit address.""" - hrpgot, data = bech32_decode(addr) + hrpgot, data, spec = bech32_decode(addr) if hrpgot != hrp: return (None, None) decoded = convertbits(data[1:], 5, 8, False) @@ -112,12 +123,15 @@ def decode(hrp, addr): return (None, None) if data[0] == 0 and len(decoded) != 20 and len(decoded) != 32: return (None, None) + if data[0] == 0 and spec != Encoding.BECH32 or data[0] != 0 and spec != Encoding.BECH32M: + return (None, None) return (data[0], decoded) def encode(hrp, witver, witprog): """Encode a segwit address.""" - ret = bech32_encode(hrp, [witver] + convertbits(witprog, 8, 5)) + spec = Encoding.BECH32 if witver == 0 else Encoding.BECH32M + ret = bech32_encode(hrp, [witver] + convertbits(witprog, 8, 5), spec) if decode(hrp, ret) == (None, None): return None - return ret + return ret \ No newline at end of file diff --git a/bitcoin_client/ledger_bitcoin/transport.py b/bitcoin_client/ledger_bitcoin/transport.py new file mode 100644 index 000000000..ed0b9bf43 --- /dev/null +++ b/bitcoin_client/ledger_bitcoin/transport.py @@ -0,0 +1,263 @@ +# extracted from ledgercomm in order to add the `path` parameter to the constructor. + +import enum +import logging +import struct +from typing import Union, Tuple, Optional, Literal, cast + +from ledgercomm.interfaces.tcp_client import TCPClient +from ledgercomm.interfaces.hid_device import HID +from ledgercomm.log import LOG + + +class TransportType(enum.Enum): + """Type of interface available.""" + + HID = 1 + TCP = 2 + + +class Transport: + """Transport class to send APDUs. + + Allow to communicate using HID device such as Nano S/X or through TCP + socket with the Speculos emulator. + + Parameters + ---------- + interface : str + Either "hid" or "tcp" for the underlying communication interface. + server : str + IP address of the TCP server if interface is "tcp". + port : int + Port of the TCP server if interface is "tcp". + path : Optional[str] + The path to use with HID if interface is "hid"; defaults to `None`. + hid : Optional[HID] + The HID instance to use if interface is "hid"; defaults to `None`. + If not None, the instance is already presumed open. + debug : bool + Whether you want debug logs or not. + + Attributes + ---------- + interface : TransportType + Either TransportType.HID or TransportType.TCP. + com : Union[TCPClient, HID] + Communication interface to send/receive APDUs. + + """ + + def __init__(self, + interface: Literal["hid", "tcp"] = "tcp", + server: str = "127.0.0.1", + port: int = 9999, + path: Optional[str] = None, + hid: Optional[HID] = None, + debug: bool = False) -> None: + """Init constructor of Transport.""" + if debug: + LOG.setLevel(logging.DEBUG) + + self.inferface: TransportType + + try: + self.interface = TransportType[interface.upper()] + except KeyError as exc: + raise Exception(f"Unknown interface '{interface}'!") from exc + + if self.interface == TransportType.TCP: + self.com = TCPClient( + server=server, port=port) + self.com.open() + else: + if hid is not None: + self.com = hid + # we assume the instance is already open, when the `hid` parameter is given + else: + self.com = HID() + self.com.path = path + self.com.open() + + @staticmethod + def apdu_header(cla: int, + ins: Union[int, enum.IntEnum], + p1: int = 0, + p2: int = 0, + opt: Optional[int] = None, + lc: int = 0) -> bytes: + """Pack the APDU header as bytes. + + Parameters + ---------- + cla : int + Instruction class: CLA (1 byte) + ins : Union[int, IntEnum] + Instruction code: INS (1 byte) + p1 : int + Instruction parameter: P1 (1 byte). + p2 : int + Instruction parameter: P2 (1 byte). + opt : Optional[int] + Optional parameter: Opt (1 byte). + lc : int + Number of bytes in the payload: Lc (1 byte). + + Returns + ------- + bytes + APDU header packed with parameters. + + """ + ins = cast(int, ins.value) if isinstance( + ins, enum.IntEnum) else cast(int, ins) + + if opt: + return struct.pack("BBBBBB", + cla, + ins, + p1, + p2, + 1 + lc, # add option to length + opt) + + return struct.pack("BBBBB", + cla, + ins, + p1, + p2, + lc) + + def send(self, + cla: int, + ins: Union[int, enum.IntEnum], + p1: int = 0, + p2: int = 0, + option: Optional[int] = None, + cdata: bytes = b"") -> int: + """Send structured APDUs through `self.com`. + + Parameters + ---------- + cla : int + Instruction class: CLA (1 byte) + ins : Union[int, IntEnum] + Instruction code: INS (1 byte) + p1 : int + Instruction parameter: P1 (1 byte). + p2 : int + Instruction parameter: P2 (1 byte). + option : Optional[int] + Optional parameter: Opt (1 byte). + cdata : bytes + Command data (variable length). + + Returns + ------- + int + Total lenght of the APDU sent. + + """ + header: bytes = Transport.apdu_header( + cla, ins, p1, p2, option, len(cdata)) + + return self.com.send(header + cdata) + + def send_raw(self, apdu: Union[str, bytes]) -> int: + """Send raw bytes `apdu` through `self.com`. + + Parameters + ---------- + apdu : Union[str, bytes] + Hexstring or bytes within APDU to be sent through `self.com`. + + Returns + ------- + Optional[int] + Total lenght of APDU sent if any. + + """ + if isinstance(apdu, str): + apdu = bytes.fromhex(apdu) + + return self.com.send(apdu) + + def recv(self) -> Tuple[int, bytes]: + """Receive data from `self.com`. + + Blocking IO. + + Returns + ------- + Tuple[int, bytes] + A pair (sw, rdata) for the status word (2 bytes represented + as int) and the reponse data (variable lenght). + + """ + return self.com.recv() + + def exchange(self, + cla: int, + ins: Union[int, enum.IntEnum], + p1: int = 0, + p2: int = 0, + option: Optional[int] = None, + cdata: bytes = b"") -> Tuple[int, bytes]: + """Send structured APDUs and wait to receive datas from `self.com`. + + Parameters + ---------- + cla : int + Instruction class: CLA (1 byte) + ins : Union[int, IntEnum] + Instruction code: INS (1 byte) + p1 : int + Instruction parameter: P1 (1 byte). + p2 : int + Instruction parameter: P2 (1 byte). + option : Optional[int] + Optional parameter: Opt (1 byte). + cdata : bytes + Command data (variable length). + + Returns + ------- + Tuple[int, bytes] + A pair (sw, rdata) for the status word (2 bytes represented + as int) and the reponse data (bytes of variable lenght). + + """ + header: bytes = Transport.apdu_header( + cla, ins, p1, p2, option, len(cdata)) + + return self.com.exchange(header + cdata) + + def exchange_raw(self, apdu: Union[str, bytes]) -> Tuple[int, bytes]: + """Send raw bytes `apdu` and wait to receive datas from `self.com`. + + Parameters + ---------- + apdu : Union[str, bytes] + Hexstring or bytes within APDU to send through `self.com`. + + Returns + ------- + Tuple[int, bytes] + A pair (sw, rdata) for the status word (2 bytes represented + as int) and the reponse (bytes of variable lenght). + + """ + if isinstance(apdu, str): + apdu = bytes.fromhex(apdu) + + return self.com.exchange(apdu) + + def close(self) -> None: + """Close `self.com` interface. + + Returns + ------- + None + + """ + self.com.close() diff --git a/bitcoin_client/ledger_bitcoin/tx.py b/bitcoin_client/ledger_bitcoin/tx.py index 8cb1710f1..91b1215ff 100644 --- a/bitcoin_client/ledger_bitcoin/tx.py +++ b/bitcoin_client/ledger_bitcoin/tx.py @@ -138,7 +138,7 @@ def is_witness(self) -> Tuple[bool, int, bytes]: def __repr__(self) -> str: return "CTxOut(nValue=%i.%08i scriptPubKey=%s)" \ - % (self.nValue, self.nValue, self.scriptPubKey.hex()) + % (self.nValue // 100_000_000, self.nValue % 100_000_000, self.scriptPubKey.hex()) class CScriptWitness(object): diff --git a/bitcoin_client/ledger_bitcoin/wallet.py b/bitcoin_client/ledger_bitcoin/wallet.py index 9a102355f..6005e96b3 100644 --- a/bitcoin_client/ledger_bitcoin/wallet.py +++ b/bitcoin_client/ledger_bitcoin/wallet.py @@ -1,3 +1,5 @@ +import re + from enum import IntEnum from typing import List @@ -8,18 +10,22 @@ from .merkle import MerkleTree, element_hash class WalletType(IntEnum): - POLICYMAP = 1 + WALLET_POLICY_V1 = 1 + WALLET_POLICY_V2 = 2 # should not be instantiated directly -class Wallet: - def __init__(self, name: str, wallet_type: WalletType) -> None: +class WalletPolicyBase: + def __init__(self, name: str, version: WalletType) -> None: self.name = name - self.type = wallet_type + self.version = version + + if (version != WalletType.WALLET_POLICY_V1 and version != WalletType.WALLET_POLICY_V2): + raise ValueError("Invalid wallet policy version") def serialize(self) -> bytes: return b"".join([ - self.type.value.to_bytes(1, byteorder="big"), + self.version.value.to_bytes(1, byteorder="big"), serialize_str(self.name) ]) @@ -27,28 +33,28 @@ def serialize(self) -> bytes: def id(self) -> bytes: return sha256(self.serialize()).digest() - def hmac(self, wallet_registration_key: bytes | bytearray) -> bytes: + def hmac(self, wallet_registration_key) -> bytes: return hmac.new(wallet_registration_key, self.id, sha256).digest() -class PolicyMapWallet(Wallet): +class WalletPolicy(WalletPolicyBase): """ - Represents a wallet stored with a policy map and a number of keys_info. - The wallet is serialized as follows: - - 1 byte : wallet type - - 1 byte : length of the wallet name (max 16) + Represents a wallet stored with a wallet policy. + For version V2, the wallet is serialized as follows: + - 1 byte : wallet version + - 1 byte : length of the wallet name (max 64) - (var) : wallet name (ASCII string) - - (varint) : length of the policy map, at most 74 bytes at this time - - (var) : policy map + - (varint) : length of the descriptor template + - 32-bytes : sha256 hash of the descriptor template - (varint) : number of keys (not larger than 252) - 32-bytes : root of the Merkle tree of all the keys information. The specific format of the keys is deferred to subclasses. """ - def __init__(self, name: str, policy_map: str, keys_info: List[str]): - super().__init__(name, WalletType.POLICYMAP) - self.policy_map = policy_map + def __init__(self, name: str, descriptor_template: str, keys_info: List[str], version: WalletType = WalletType.WALLET_POLICY_V2): + super().__init__(name, version) + self.descriptor_template = descriptor_template self.keys_info = keys_info @property @@ -56,30 +62,39 @@ def n_keys(self) -> int: return len(self.keys_info) def serialize(self) -> bytes: - keys_info_hashes = map(lambda k: element_hash(k.encode("latin-1")), self.keys_info) + keys_info_hashes = map(lambda k: element_hash(k.encode()), self.keys_info) + + descriptor_template_sha256 = sha256(self.descriptor_template.encode()).digest() return b"".join([ super().serialize(), - write_varint(len(self.policy_map)), - self.policy_map.encode("latin-1"), + write_varint(len(self.descriptor_template.encode())), + self.descriptor_template.encode() if self.version == WalletType.WALLET_POLICY_V1 else descriptor_template_sha256, write_varint(len(self.keys_info)), MerkleTree(keys_info_hashes).root ]) def get_descriptor(self, change: bool) -> str: - desc = self.policy_map + desc = self.descriptor_template for i in reversed(range(self.n_keys)): key = self.keys_info[i] - if "/**" in key: - key = key.replace("/**", f"/{1 if change else 0}/*") desc = desc.replace(f"@{i}", key) + + # in V1, /** is part of the key; in V2, it's part of the policy map. This handles either + desc = desc.replace("/**", f"/{1 if change else 0}/*") + + if self.version == WalletType.WALLET_POLICY_V2: + # V2, the / syntax is supported. Replace with M if not change, or with N if change + regex = r"/<(\d+);(\d+)>" + desc = re.sub(regex, "/\\2" if change else "/\\1", desc) + return desc -class MultisigWallet(PolicyMapWallet): - def __init__(self, name: str, address_type: AddressType, threshold: int, keys_info: List[str], sorted: bool = True) -> None: +class MultisigWallet(WalletPolicy): + def __init__(self, name: str, address_type: AddressType, threshold: int, keys_info: List[str], sorted: bool = True, version: WalletType = WalletType.WALLET_POLICY_V2) -> None: n_keys = len(keys_info) - if not (1 <= threshold <= n_keys <= 15): + if not (1 <= threshold <= n_keys <= 16): raise ValueError("Invalid threshold or number of keys") multisig_op = "sortedmulti" if sorted else "multi" @@ -96,14 +111,16 @@ def __init__(self, name: str, address_type: AddressType, threshold: int, keys_in else: raise ValueError(f"Unexpected address type: {address_type}") - policy_map = "".join([ + key_placeholder_suffix = "/**" if version == WalletType.WALLET_POLICY_V2 else "" + + descriptor_template = "".join([ policy_prefix, str(threshold) + ",", - ",".join("@" + str(l) for l in range(n_keys)), + ",".join("@" + str(l) + key_placeholder_suffix for l in range(n_keys)), policy_suffix ]) - super().__init__(name, policy_map, keys_info) + super().__init__(name, descriptor_template, keys_info, version) self.threshold = threshold @@ -117,7 +134,7 @@ def wrap_ct(policy_map: str, blinding_key: str = ""): return "".join([f"ct({blinding_key},", policy_map, ")"]) -class BlindedWallet(PolicyMapWallet): +class BlindedWallet(WalletPolicy): """Blinded wallet for Liquid application""" def __init__(self, name: str, blinding_key: str, policy_map: str, keys_info: List[str]): diff --git a/bitcoin_client/pyproject.toml b/bitcoin_client/pyproject.toml index f7473453b..5020eb701 100644 --- a/bitcoin_client/pyproject.toml +++ b/bitcoin_client/pyproject.toml @@ -1,8 +1,8 @@ [build-system] requires = [ - "typing-extensions>=3.7", "ledgercomm>=1.1.0", "setuptools>=42", + "typing-extensions>=3.7", "wheel" ] build-backend = "setuptools.build_meta" diff --git a/bitcoin_client/setup.cfg b/bitcoin_client/setup.cfg index 8ed37f9ce..9d44335f8 100644 --- a/bitcoin_client/setup.cfg +++ b/bitcoin_client/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = ledger_bitcoin -version = 0.0.3 +version = attr: ledger_bitcoin.__version__ author = Ledger author_email = hello@ledger.fr description = Client for Ledger Nano Bitcoin application @@ -16,10 +16,14 @@ classifiers = [options] packages = find: -python_requires = >=3.6 +python_requires = >=3.7 install_requires= typing-extensions>=3.7 ledgercomm>=1.1.0 + packaging>=21.3 + +[options.package_data] +* = py.typed [options.extras_require] hid = hidapi>=0.9.0.post3 diff --git a/bitcoin_client/tests/requirements.txt b/bitcoin_client/tests/requirements.txt index 58945f429..23a57de0e 100644 --- a/bitcoin_client/tests/requirements.txt +++ b/bitcoin_client/tests/requirements.txt @@ -1,7 +1,8 @@ pytest>=6.1.1,<7.0.0 +pytest-timeout>=2.1.0,<3.0.0 ledgercomm>=1.1.0,<1.2.0 ecdsa>=0.16.1,<0.17.0 typing-extensions>=3.7,<4.0 -embit>=0.4.10,<0.5.0 +embit>=0.7.0,<0.8.0 mnemonic==0.20 -bip32>=2.1,<3.0 \ No newline at end of file +bip32>=3.4,<4.0 \ No newline at end of file diff --git a/bitcoin_client/tests/test_client_legacy.py b/bitcoin_client/tests/test_client_legacy.py new file mode 100644 index 000000000..03e7df928 --- /dev/null +++ b/bitcoin_client/tests/test_client_legacy.py @@ -0,0 +1,13 @@ +from pathlib import Path + +from bitcoin_client.ledger_bitcoin import Client +from bitcoin_client.ledger_bitcoin.client_legacy import LegacyClient + + +tests_root: Path = Path(__file__).parent + + +def test_client_legacy(client: Client): + # tests that the library correctly instatiates the LegacyClient and not the new one, + # since the version of the app binary being tested is an old one + assert isinstance(client, LegacyClient) diff --git a/bitcoin_client/tests/test_get_wallet_address_legacyapp.py b/bitcoin_client/tests/test_get_wallet_address_legacyapp.py index 8caaf05f9..efa4e05e5 100644 --- a/bitcoin_client/tests/test_get_wallet_address_legacyapp.py +++ b/bitcoin_client/tests/test_get_wallet_address_legacyapp.py @@ -1,13 +1,13 @@ -from bitcoin_client.ledger_bitcoin import Client, PolicyMapWallet +from bitcoin_client.ledger_bitcoin import Client, WalletPolicy def test_get_wallet_address_singlesig_legacy(client: Client): # legacy address (P2PKH) - wallet = PolicyMapWallet( + wallet = WalletPolicy( name="", - policy_map="pkh(@0)", + descriptor_template="pkh(@0/**)", keys_info=[ - f"[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT/**", + f"[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT", ], ) assert client.get_wallet_address(wallet, None, 0, 0, False) == "mz5vLWdM1wHVGSmXUkhKVvZbJ2g4epMXSm" @@ -16,11 +16,11 @@ def test_get_wallet_address_singlesig_legacy(client: Client): def test_get_wallet_address_singlesig_wit(client: Client): # bech32 address (P2WPKH) - wallet = PolicyMapWallet( + wallet = WalletPolicy( name="", - policy_map="wpkh(@0)", + descriptor_template="wpkh(@0/**)", keys_info=[ - f"[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**", + f"[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P", ], ) assert client.get_wallet_address(wallet, None, 0, 0, False) == "tb1qzdr7s2sr0dwmkwx033r4nujzk86u0cy6fmzfjk" @@ -29,11 +29,11 @@ def test_get_wallet_address_singlesig_wit(client: Client): def test_get_wallet_address_singlesig_sh_wit(client: Client): # wrapped segwit addresses (P2SH-P2WPKH) - wallet = PolicyMapWallet( + wallet = WalletPolicy( name="", - policy_map="sh(wpkh(@0))", + descriptor_template="sh(wpkh(@0/**))", keys_info=[ - f"[f5acc2fd/49'/1'/0']tpubDC871vGLAiKPcwAw22EjhKVLk5L98UGXBEcGR8gpcigLQVDDfgcYW24QBEyTHTSFEjgJgbaHU8CdRi9vmG4cPm1kPLmZhJEP17FMBdNheh3/**", + f"[f5acc2fd/49'/1'/0']tpubDC871vGLAiKPcwAw22EjhKVLk5L98UGXBEcGR8gpcigLQVDDfgcYW24QBEyTHTSFEjgJgbaHU8CdRi9vmG4cPm1kPLmZhJEP17FMBdNheh3", ], ) assert client.get_wallet_address(wallet, None, 0, 0, False) == "2MyHkbusvLomaarGYMqyq7q9pSBYJRwWcsw" diff --git a/bitcoin_client/tests/test_ripemd160.py b/bitcoin_client/tests/test_ripemd160.py new file mode 100644 index 000000000..f4a403d0e --- /dev/null +++ b/bitcoin_client/tests/test_ripemd160.py @@ -0,0 +1,24 @@ +from bitcoin_client.ledger_bitcoin.ripemd import ripemd160 + + +def test_ripemd160(): + """RIPEMD-160 test vectors.""" + # See https://homes.esat.kuleuven.be/~bosselae/ripemd160.html + for msg, hexout in [ + (b"", "9c1185a5c5e9fc54612808977ee8f548b2258d31"), + (b"a", "0bdc9d2d256b3ee9daae347be6f4dc835a467ffe"), + (b"abc", "8eb208f7e05d987a9b044a8e98c6b087f15a0bfc"), + (b"message digest", "5d0689ef49d2fae572b881b123a85ffa21595f36"), + (b"abcdefghijklmnopqrstuvwxyz", "f71c27109c692c1b56bbdceb5b9d2865b3708dbc"), + ( + b"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", + "12a053384a9c0c88e405a06c27dcf49ada62eb2b", + ), + ( + b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", + "b0e20b6e3116640286ed3a87a5713079b21f5189", + ), + (b"1234567890" * 8, "9b752e45573d4b39f4dbd3323cab82bf63326bfb"), + (b"a" * 1000000, "52783243c1697bdbe16d37f97f68f08325dc1528"), + ]: + assert ripemd160(msg).hex() == hexout diff --git a/bitcoin_client/tests/test_sign_psbt_legacyapp.py b/bitcoin_client/tests/test_sign_psbt_legacyapp.py index e0d60d202..d52100b7c 100644 --- a/bitcoin_client/tests/test_sign_psbt_legacyapp.py +++ b/bitcoin_client/tests/test_sign_psbt_legacyapp.py @@ -1,6 +1,6 @@ from pathlib import Path -from bitcoin_client.ledger_bitcoin import Client, PolicyMapWallet +from bitcoin_client.ledger_bitcoin import Client, WalletPolicy, PartialSignature from bitcoin_client.ledger_bitcoin.psbt import PSBT @@ -26,11 +26,11 @@ def test_sign_psbt_singlesig_pkh_1to1(client: Client): # PSBT for a legacy 1-input 1-output spend (no change address) psbt = open_psbt_from_file(f"{tests_root}/psbt/singlesig/pkh-1to1.psbt") - wallet = PolicyMapWallet( + wallet = WalletPolicy( "", - "pkh(@0)", + "pkh(@0/**)", [ - "[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT/**" + "[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT" ], ) @@ -40,11 +40,15 @@ def test_sign_psbt_singlesig_pkh_1to1(client: Client): # "signature" : "3045022100e55b3ca788721aae8def2eadff710e524ffe8c9dec1764fdaa89584f9726e196022012a30fbcf9e1a24df31a1010356b794ab8de438b4250684757ed5772402540f401" result = client.sign_psbt(psbt, wallet, None) - assert result == { - 0: bytes.fromhex( - "3045022100e55b3ca788721aae8def2eadff710e524ffe8c9dec1764fdaa89584f9726e196022012a30fbcf9e1a24df31a1010356b794ab8de438b4250684757ed5772402540f401" + assert result == [( + 0, + PartialSignature( + pubkey=bytes.fromhex("02ee8608207e21028426f69e76447d7e3d5e077049f5e683c3136c2314762a4718"), + signature=bytes.fromhex( + "3045022100e55b3ca788721aae8def2eadff710e524ffe8c9dec1764fdaa89584f9726e196022012a30fbcf9e1a24df31a1010356b794ab8de438b4250684757ed5772402540f401" + ) ) - } + )] @has_automation("automations/sign_with_wallet_accept.json") @@ -53,11 +57,11 @@ def test_sign_psbt_singlesig_sh_wpkh_1to2(client: Client): # PSBT for a wrapped segwit 1-input 2-output spend (1 change address) psbt = open_psbt_from_file(f"{tests_root}/psbt/singlesig/sh-wpkh-1to2.psbt") - wallet = PolicyMapWallet( + wallet = WalletPolicy( "", - "sh(wpkh(@0))", + "sh(wpkh(@0/**))", [ - "[f5acc2fd/49'/1'/0']tpubDC871vGLAiKPcwAw22EjhKVLk5L98UGXBEcGR8gpcigLQVDDfgcYW24QBEyTHTSFEjgJgbaHU8CdRi9vmG4cPm1kPLmZhJEP17FMBdNheh3/**" + "[f5acc2fd/49'/1'/0']tpubDC871vGLAiKPcwAw22EjhKVLk5L98UGXBEcGR8gpcigLQVDDfgcYW24QBEyTHTSFEjgJgbaHU8CdRi9vmG4cPm1kPLmZhJEP17FMBdNheh3" ], ) @@ -67,11 +71,17 @@ def test_sign_psbt_singlesig_sh_wpkh_1to2(client: Client): # "signature" : "30440220720722b08489c2a50d10edea8e21880086c8e8f22889a16815e306daeea4665b02203fcf453fa490b76cf4f929714065fc90a519b7b97ab18914f9451b5a4b45241201" result = client.sign_psbt(psbt, wallet, None) - assert result == { - 0: bytes.fromhex( - "30440220720722b08489c2a50d10edea8e21880086c8e8f22889a16815e306daeea4665b02203fcf453fa490b76cf4f929714065fc90a519b7b97ab18914f9451b5a4b45241201" + assert len(result) == 1 + + assert result == [( + 0, + PartialSignature( + pubkey=bytes.fromhex("024ba3b77d933de9fa3f9583348c40f3caaf2effad5b6e244ece8abbfcc7244f67"), + signature=bytes.fromhex( + "30440220720722b08489c2a50d10edea8e21880086c8e8f22889a16815e306daeea4665b02203fcf453fa490b76cf4f929714065fc90a519b7b97ab18914f9451b5a4b45241201" + ) ) - } + )] @has_automation("automations/sign_with_wallet_accept.json") @@ -80,11 +90,11 @@ def test_sign_psbt_singlesig_wpkh_1to2(client: Client): # PSBT for a legacy 1-input 2-output spend (1 change address) psbt = open_psbt_from_file(f"{tests_root}/psbt/singlesig/wpkh-1to2.psbt") - wallet = PolicyMapWallet( + wallet = WalletPolicy( "", - "wpkh(@0)", + "wpkh(@0/**)", [ - "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**" + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P" ], ) @@ -95,11 +105,15 @@ def test_sign_psbt_singlesig_wpkh_1to2(client: Client): # "pubkey" : "03ee2c3d98eb1f93c0a1aa8e5a4009b70eb7b44ead15f1666f136b012ad58d3068", # "signature" : "3045022100ab44f34dd7e87c9054591297a101e8500a0641d1d591878d0d23cf8096fa79e802205d12d1062d925e27b57bdcf994ecf332ad0a8e67b8fe407bab2101255da632aa01" - assert result == { - 0: bytes.fromhex( - "3045022100ab44f34dd7e87c9054591297a101e8500a0641d1d591878d0d23cf8096fa79e802205d12d1062d925e27b57bdcf994ecf332ad0a8e67b8fe407bab2101255da632aa01" + assert result == [( + 0, + PartialSignature( + pubkey=bytes.fromhex("03ee2c3d98eb1f93c0a1aa8e5a4009b70eb7b44ead15f1666f136b012ad58d3068"), + signature=bytes.fromhex( + "3045022100ab44f34dd7e87c9054591297a101e8500a0641d1d591878d0d23cf8096fa79e802205d12d1062d925e27b57bdcf994ecf332ad0a8e67b8fe407bab2101255da632aa01" + ) ) - } + )] @has_automation("automations/sign_with_wallet_accept.json") @@ -108,21 +122,30 @@ def test_sign_psbt_singlesig_wpkh_2to2(client: Client): psbt = open_psbt_from_file(f"{tests_root}/psbt/singlesig/wpkh-2to2.psbt") - wallet = PolicyMapWallet( + wallet = WalletPolicy( "", - "wpkh(@0)", + "wpkh(@0/**)", [ - "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**" + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P" ], ) result = client.sign_psbt(psbt, wallet, None) - assert result == { - 0: bytes.fromhex( - "304402206b3e877655f08c6e7b1b74d6d893a82cdf799f68a5ae7cecae63a71b0339e5ce022019b94aa3fb6635956e109f3d89c996b1bfbbaf3c619134b5a302badfaf52180e01" - ), - 1: bytes.fromhex( - "3045022100e2e98e4f8c70274f10145c89a5d86e216d0376bdf9f42f829e4315ea67d79d210220743589fd4f55e540540a976a5af58acd610fa5e188a5096dfe7d36baf3afb94001" - ), - } + assert result == [( + 0, + PartialSignature( + pubkey=bytes.fromhex("03455ee7cedc97b0ba435b80066fc92c963a34c600317981d135330c4ee43ac7a3"), + signature=bytes.fromhex( + "304402206b3e877655f08c6e7b1b74d6d893a82cdf799f68a5ae7cecae63a71b0339e5ce022019b94aa3fb6635956e109f3d89c996b1bfbbaf3c619134b5a302badfaf52180e01" + ) + ) + ), ( + 1, + PartialSignature( + pubkey=bytes.fromhex("0271b5b779ad870838587797bcf6f0c7aec5abe76a709d724f48d2e26cf874f0a0"), + signature=bytes.fromhex( + "3045022100e2e98e4f8c70274f10145c89a5d86e216d0376bdf9f42f829e4315ea67d79d210220743589fd4f55e540540a976a5af58acd610fa5e188a5096dfe7d36baf3afb94001" + ) + ) + )] diff --git a/bitcoin_client_js/README.md b/bitcoin_client_js/README.md index 8a1f487d9..efd4ab53c 100644 --- a/bitcoin_client_js/README.md +++ b/bitcoin_client_js/README.md @@ -2,15 +2,21 @@ ## Overview -TypeScript client for Ledger Bitcoin application. Supports versions 2.0.0 and above of the app. +TypeScript client for Ledger Bitcoin application. Supports versions 2.1.0 and above of the app. Main repository and documentation: https://github.com/LedgerHQ/app-bitcoin-new - +```bash +$ yarn add ledger-bitcoin +``` + +Or if you prefer using npm: + +```bash +$ npm install ledger-bitcoin +``` ## Building @@ -24,10 +30,12 @@ $ yarn build The following example showcases all the main methods of the `Client`'s interface. -Testing the `signPsbt` method requires a valid PSBTv2, and provide the corresponding wallet policy; it is skipped by default in the following example. +More examples can be found in the [test suite](src/__tests__/appClient.test.ts). + +Testing the `signPsbt` method requires a valid PSBT, and provide the corresponding wallet policy; it is skipped by default in the following example. ```javascript -import { AppClient, DefaultWalletPolicy, WalletPolicy, PsbtV2 } from 'ledger-bitcoin'; +import { AppClient, DefaultWalletPolicy, WalletPolicy } from 'ledger-bitcoin'; import Transport from '@ledgerhq/hw-transport-node-hid'; // This examples assumes the Bitcoin Testnet app is running. @@ -44,8 +52,8 @@ async function main(transport) { // ==> Get and display on screen the first taproot address const firstTaprootAccountPubkey = await app.getExtendedPubkey("m/86'/1'/0'"); const firstTaprootAccountPolicy = new DefaultWalletPolicy( - "tr(@0)", - `[${fpr}/86'/1'/0']${firstTaprootAccountPubkey}/**` + "tr(@0/**)", + `[${fpr}/86'/1'/0']${firstTaprootAccountPubkey}` ); const firstTaprootAccountAddress = await app.getWalletAddress( @@ -61,12 +69,12 @@ async function main(transport) { // ==> Register a multisig wallet named "Cold storage" const ourPubkey = await app.getExtendedPubkey("m/48'/1'/0'/2'"); - const ourKeyInfo = `[${fpr}/48'/1'/0'/2']${ourPubkey}/**`; - const otherKeyInfo = "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF/**"; + const ourKeyInfo = `[${fpr}/48'/1'/0'/2']${ourPubkey}`; + const otherKeyInfo = "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF"; const multisigPolicy = new WalletPolicy( "Cold storage", - "wsh(sortedmulti(2,@0,@1))", // a 2-of-2 multisig policy template + "wsh(sortedmulti(2,@0/**,@1/**))", // a 2-of-2 multisig policy template [ otherKeyInfo, // some other bitcoiner ourKeyInfo, // that's us @@ -87,18 +95,19 @@ async function main(transport) { // ==> Sign a psbt // TODO: set a wallet policy and a valid psbt file in order to test psbt signing - const rawPsbtBase64 = null; // a base64-encoded psbt file to sign + const psbt = null; // a base64-encoded psbt, or a binary psbt in a Buffer const signingPolicy = null; // an instance of WalletPolicy const signingPolicyHmac = null; // if not a default wallet policy, this must also be set - if (!rawPsbtBase64 || !signingPolicy) { + if (!psbt || !signingPolicy) { console.log("Nothing to sign :("); await transport.close(); return; } - const psbt = new PsbtV2(); - psbt.deserialize(rawPsbtBase64); - + // result will be a list of triples [i, partialSig], where: + // - i is the input index + // - partialSig is an instance of PartialSignature; it contains a pubkey and a signature, + // and it might contain a tapleaf_hash. const result = await app.signPsbt(psbt, signingPolicy, signingPolicyHmac); console.log("Returned signatures:"); @@ -110,4 +119,4 @@ async function main(transport) { Transport.default.create() .then(main) .catch(console.log); -``` \ No newline at end of file +``` diff --git a/bitcoin_client_js/package.json b/bitcoin_client_js/package.json index 848e09c56..362df99f0 100644 --- a/bitcoin_client_js/package.json +++ b/bitcoin_client_js/package.json @@ -1,10 +1,10 @@ { "name": "ledger-bitcoin", - "version": "0.0.1", + "version": "0.2.3", "description": "Ledger Hardware Wallet Bitcoin Application Client", "main": "build/main/index.js", "typings": "build/main/index.d.ts", - "repository": "https://github.com/LedgerHW/app-bitcoin-new", + "repository": "https://github.com/LedgerHQ/app-bitcoin-new", "license": "Apache-2.0", "keywords": [ "Ledger", @@ -29,10 +29,11 @@ "node": ">=14" }, "dependencies": { + "@bitcoinerlab/descriptors": "^1.0.2", + "@bitcoinerlab/secp256k1": "^1.0.5", "@ledgerhq/hw-transport": "^6.20.0", "bip32-path": "^0.4.2", - "bitcoinjs-lib": "^6.0.1", - "tiny-secp256k1": "^2.1.2" + "bitcoinjs-lib": "^6.1.3" }, "devDependencies": { "@ledgerhq/hw-transport-node-speculos-http": "^6.24.1", @@ -71,4 +72,4 @@ "prettier": { "singleQuote": true } -} \ No newline at end of file +} diff --git a/bitcoin_client_js/src/__tests__/appClient.test.ts b/bitcoin_client_js/src/__tests__/appClient.test.ts index 9ea60f469..a1784646b 100644 --- a/bitcoin_client_js/src/__tests__/appClient.test.ts +++ b/bitcoin_client_js/src/__tests__/appClient.test.ts @@ -103,6 +103,7 @@ describe("test AppClient", () => { sp = spawn(speculos_path, [ repoRootPath + "/bin/app.elf", '-k', '2.1', + '--model', 'nanos', '--display', 'headless' ]); @@ -127,6 +128,11 @@ describe("test AppClient", () => { await killProcess(sp); }); + it("can retrieve the app's version", async () => { + const result = await app.getAppAndVersion(); + expect(result.name).toEqual("Bitcoin Test"); + expect(result.version.split(".")[0]).toEqual("2") + }); it("can retrieve the master fingerprint", async () => { const result = await app.getMasterFingerprint(); @@ -149,64 +155,64 @@ describe("test AppClient", () => { }[] = [ // legacy { - policy: new DefaultWalletPolicy("pkh(@0)", "[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT/**"), + policy: new DefaultWalletPolicy("pkh(@0/**)", "[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT"), change: 0, addrIndex: 0, expResult: "mz5vLWdM1wHVGSmXUkhKVvZbJ2g4epMXSm", }, { - policy: new DefaultWalletPolicy("pkh(@0)", "[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT/**"), + policy: new DefaultWalletPolicy("pkh(@0/**)", "[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT"), change: 1, addrIndex: 15, expResult: "myFCUBRCKFjV7292HnZtiHqMzzHrApobpT", }, // native segwit { - policy: new DefaultWalletPolicy("wpkh(@0)", "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**"), + policy: new DefaultWalletPolicy("wpkh(@0/**)", "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P"), change: 0, addrIndex: 0, expResult: "tb1qzdr7s2sr0dwmkwx033r4nujzk86u0cy6fmzfjk", }, { - policy: new DefaultWalletPolicy("wpkh(@0)", "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**"), + policy: new DefaultWalletPolicy("wpkh(@0/**)", "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P"), change: 1, addrIndex: 15, expResult: "tb1qlrvzyx8jcjfj2xuy69du9trtxnsvjuped7e289", }, // wrapped segwit { - policy: new DefaultWalletPolicy("sh(wpkh(@0))", "[f5acc2fd/49'/1'/0']tpubDC871vGLAiKPcwAw22EjhKVLk5L98UGXBEcGR8gpcigLQVDDfgcYW24QBEyTHTSFEjgJgbaHU8CdRi9vmG4cPm1kPLmZhJEP17FMBdNheh3/**"), + policy: new DefaultWalletPolicy("sh(wpkh(@0/**))", "[f5acc2fd/49'/1'/0']tpubDC871vGLAiKPcwAw22EjhKVLk5L98UGXBEcGR8gpcigLQVDDfgcYW24QBEyTHTSFEjgJgbaHU8CdRi9vmG4cPm1kPLmZhJEP17FMBdNheh3"), change: 0, addrIndex: 0, expResult: "2MyHkbusvLomaarGYMqyq7q9pSBYJRwWcsw", }, { - policy: new DefaultWalletPolicy("sh(wpkh(@0))", "[f5acc2fd/49'/1'/0']tpubDC871vGLAiKPcwAw22EjhKVLk5L98UGXBEcGR8gpcigLQVDDfgcYW24QBEyTHTSFEjgJgbaHU8CdRi9vmG4cPm1kPLmZhJEP17FMBdNheh3/**"), + policy: new DefaultWalletPolicy("sh(wpkh(@0/**))", "[f5acc2fd/49'/1'/0']tpubDC871vGLAiKPcwAw22EjhKVLk5L98UGXBEcGR8gpcigLQVDDfgcYW24QBEyTHTSFEjgJgbaHU8CdRi9vmG4cPm1kPLmZhJEP17FMBdNheh3"), change: 1, addrIndex: 15, expResult: "2NAbM4FSeBQG4o85kbXw2YNfKypcnEZS9MR", }, // taproot { - policy: new DefaultWalletPolicy("tr(@0)", "[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U/**"), + policy: new DefaultWalletPolicy("tr(@0/**)", "[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U"), change: 0, addrIndex: 0, expResult: "tb1pws8wvnj99ca6acf8kq7pjk7vyxknah0d9mexckh5s0vu2ccy68js9am6u7", }, { - policy: new DefaultWalletPolicy("tr(@0)", "[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U/**"), + policy: new DefaultWalletPolicy("tr(@0/**)", "[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U"), change: 0, addrIndex: 9, expResult: "tb1psl7eyk2jyjzq6evqvan854fts7a5j65rth25yqahkd2a765yvj0qggs5ne", }, { - policy: new DefaultWalletPolicy("tr(@0)", "[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U/**"), + policy: new DefaultWalletPolicy("tr(@0/**)", "[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U"), change: 1, addrIndex: 0, expResult: "tb1pmr60r5vfjmdkrwcu4a2z8h39mzs7a6wf2rfhuml6qgcp940x9cxs7t9pdy", }, { - policy: new DefaultWalletPolicy("tr(@0)", "[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U/**"), + policy: new DefaultWalletPolicy("tr(@0/**)", "[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U"), change: 1, addrIndex: 9, expResult: "tb1p98d6s9jkf0la8ras4nnm72zme5r03fexn29e3pgz4qksdy84ndpqgjak72", @@ -215,16 +221,16 @@ describe("test AppClient", () => { { policy: new WalletPolicy( "Cold storage", - "wsh(sortedmulti(2,@0,@1))", + "wsh(sortedmulti(2,@0/**,@1/**))", [ - "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF/**", - "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK/**", + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", ] ), change: 0, addrIndex: 0, expResult: "tb1qmyauyzn08cduzdqweexgna2spwd0rndj55fsrkefry2cpuyt4cpsn2pg28", - walletHmac: Buffer.from("d6434852fb3caa7edbd1165084968f1691444b3cfc10cf1e431acbbc7f48451f", "hex") + walletHmac: Buffer.from("d7c7a60b4ab4a14c1bf8901ba627d72140b2fb907f2b4e35d2e693bce9fbb371", "hex") }, ]; @@ -238,10 +244,75 @@ describe("test AppClient", () => { it("can register a multisig wallet", async () => { const walletPolicy = new WalletPolicy( "Cold storage", - "wsh(sortedmulti(2,@0,@1))", + "wsh(sortedmulti(2,@0/**,@1/**))", + [ + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + ] + ); + + const automation = JSON.parse(fs.readFileSync('src/__tests__/automations/register_wallet_accept.json').toString()); + await setSpeculosAutomation(transport, automation); + + const [walletId, walletHmac] = await app.registerWallet(walletPolicy); + + expect(walletId).toEqual(walletPolicy.getId()); + expect(walletHmac.length).toEqual(32); + }); + + //https://wizardsardine.com/blog/ledger-vulnerability-disclosure/ + it('can generate a correct address or throw on a:X', async () => { + for (const template of [ + 'wsh(and_b(pk(@0/**),a:1))', + 'wsh(and_b(pk(@0/<0;1>/*),a:1))' + ]) { + try { + const walletPolicy = new WalletPolicy('Fixed Vulnerability', template, [ + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P" + ]); + + const automation = JSON.parse( + fs + .readFileSync( + 'src/__tests__/automations/register_wallet_accept.json' + ) + .toString() + ); + await setSpeculosAutomation(transport, automation); + + const [walletId, walletHmac] = await app.registerWallet(walletPolicy); + + expect(walletId).toEqual(walletPolicy.getId()); + expect(walletHmac.length).toEqual(32); + + const address = await app.getWalletAddress( + walletPolicy, + walletHmac, + 0, + 0, + false + ); + //version > 2.1.1 + expect(address).toEqual( + 'tb1q5lyn9807ygs7pc52980mdeuwl9wrq5c8n3kntlhy088h6fqw4gzspw9t9m' + ); + } catch (error) { + //version <= 2.1.1 + expect(error.message).toMatch( + /^Third party address validation mismatch/ + ); + } + } + }); + + it("can register a miniscript wallet", async () => { + const walletPolicy = new WalletPolicy( + "Decaying 3-of-3", + "wsh(thresh(3,pk(@0/**),s:pk(@1/**),s:pk(@2/**),sln:older(12960)))", [ - "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF/**", - "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK/**", + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + "tpubDCoDDpHR1MYXcFrarTcwBufQvWPXSSZpGxjnhRaW612TMxs5TWDEPdbYRHtQdZ9z1UqtKGQKVQ4FqejzbFSdvQvJsD75yrgh7thVoFho6jE", ] ); @@ -265,23 +336,121 @@ describe("test AppClient", () => { await setSpeculosAutomation(transport, automation); const walletPolicy = new DefaultWalletPolicy( - "wpkh(@0)", - "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**" + "wpkh(@0/**)", + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P" ); const psbt = new PsbtV2(); psbt.deserialize(psbtBuf); const result = await app.signPsbt(psbt, walletPolicy, null, () => {}); - expect(result.size).toEqual(2); - expect(result.get(0)).toEqual(Buffer.from( + expect(result.length).toEqual(2); + + expect(result[0][0]).toEqual(0); + expect(result[0][1].pubkey).toEqual(Buffer.from( + "03455ee7cedc97b0ba435b80066fc92c963a34c600317981d135330c4ee43ac7a3", + "hex" + )); + expect(result[0][1].signature).toEqual(Buffer.from( "304402206b3e877655f08c6e7b1b74d6d893a82cdf799f68a5ae7cecae63a71b0339e5ce022019b94aa3fb6635956e109f3d89c996b1bfbbaf3c619134b5a302badfaf52180e01", "hex" )); - expect(result.get(1)).toEqual(Buffer.from( + + + expect(result[1][0]).toEqual(1); + expect(result[1][1].pubkey).toEqual(Buffer.from( + "0271b5b779ad870838587797bcf6f0c7aec5abe76a709d724f48d2e26cf874f0a0", + "hex" + )); + expect(result[1][1].signature).toEqual(Buffer.from( "3045022100e2e98e4f8c70274f10145c89a5d86e216d0376bdf9f42f829e4315ea67d79d210220743589fd4f55e540540a976a5af58acd610fa5e188a5096dfe7d36baf3afb94001", "hex" )); + expect(result[1][1].tapleafHash).toBeUndefined(); + }); + + it("can sign a psbt for a taproot script path", async () => { + // psbt from test_sign_psbt_tr_script_pk_sighash_all in the main test suite, converted to PSBTv2 + const psbtBuf = Buffer.from( + "cHNidP8BAgQCAAAAAQMEAAAAAAEEAQEBBQEBAfsEAgAAAAABAStMBgAAAAAAACJRIPwKENMIx+QbS7w2Qvj9isKJhTsc51WgxtDUlfA9ny2kAQMEAQAAACIVwVAXEIvs6o3txTALsiOGs6swNnrCYvnOXlgybrg+OiL1IyBrFujB+Xn6TMDwW2owCv//lBRZtvIN533lWwFg745MrKzAIRZQFxCL7OqN7cUwC7IjhrOrMDZ6wmL5zl5YMm64Pjoi9R0AdiI6bjAAAIABAACAAAAAgAIAAIAAAAAAAAAAACEWaxbowfl5+kzA8FtqMAr//5QUWbbyDed95VsBYO+OTKw9AQku2gM2F+IQ7n99DjeKQErqHEi1aqEDAivs93RuRwCk9azC/TAAAIABAACAAAAAgAIAAIAAAAAAAAAAAAEXIFAXEIvs6o3txTALsiOGs6swNnrCYvnOXlgybrg+OiL1ARggCS7aAzYX4hDuf30ON4pASuocSLVqoQMCK+z3dG5HAKQBDiAfwcxXccuDhgzFbZS8/tk4YIwX9jZiQ1tB6cRP/P0xQgEPBAEAAAABEAT9////AAEDCDkFAAAAAAAAAQQWABSqjvN0yvrfynaQLdtc9hxgu/2dhQA=", + "base64" + ); + + const automation = JSON.parse(fs.readFileSync('src/__tests__/automations/sign_with_wallet_accept.json').toString()); + await setSpeculosAutomation(transport, automation); + + const walletPolicy = new WalletPolicy( + "Taproot foreign internal key, and our script key", + "tr(@0/**,pk(@1/**))", + [ + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + ] + ); + + const psbt = new PsbtV2(); + psbt.deserialize(psbtBuf); + const hmac = Buffer.from("dae925660e20859ed8833025d46444483ce264fdb77e34569aabe9d590da8fb7", "hex"); + const result = await app.signPsbt(psbt, walletPolicy, hmac); + + expect(result.length).toEqual(1); + + expect(result[0][0]).toEqual(0); + expect(result[0][1].pubkey).toEqual(Buffer.from( + "6b16e8c1f979fa4cc0f05b6a300affff941459b6f20de77de55b0160ef8e4cac", + "hex" + )); + expect(result[0][1].tapleafHash).toEqual(Buffer.from( + "092eda033617e210ee7f7d0e378a404aea1c48b56aa103022becf7746e4700a4", + "hex" + )); + + // We could test the validity of the signature, but this is already done in the corresponding python test. + // Here we're only interested in testing that the JS library returns the correct values. + expect(result[0][1].signature.length).toEqual(65); // 65 because it's SIGHASH_ALL and not SIGHASH_DEFAULT + }); + + it("can sign a psbt passed as a base64 string", async () => { + const automation = JSON.parse(fs.readFileSync('src/__tests__/automations/sign_with_wallet_accept.json').toString()); + await setSpeculosAutomation(transport, automation); + + const walletPolicy = new WalletPolicy( + "Taproot foreign internal key, and our script key", + "tr(@0/**,pk(@1/**))", + [ + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + ] + ); + + const hmac = Buffer.from("dae925660e20859ed8833025d46444483ce264fdb77e34569aabe9d590da8fb7", "hex"); + const psbtBase64 = "cHNidP8BAgQCAAAAAQMEAAAAAAEEAQEBBQEBAfsEAgAAAAABAStMBgAAAAAAACJRIPwKENMIx+QbS7w2Qvj9isKJhTsc51WgxtDUlfA9ny2kAQMEAQAAACIVwVAXEIvs6o3txTALsiOGs6swNnrCYvnOXlgybrg+OiL1IyBrFujB+Xn6TMDwW2owCv//lBRZtvIN533lWwFg745MrKzAIRZQFxCL7OqN7cUwC7IjhrOrMDZ6wmL5zl5YMm64Pjoi9R0AdiI6bjAAAIABAACAAAAAgAIAAIAAAAAAAAAAACEWaxbowfl5+kzA8FtqMAr//5QUWbbyDed95VsBYO+OTKw9AQku2gM2F+IQ7n99DjeKQErqHEi1aqEDAivs93RuRwCk9azC/TAAAIABAACAAAAAgAIAAIAAAAAAAAAAAAEXIFAXEIvs6o3txTALsiOGs6swNnrCYvnOXlgybrg+OiL1ARggCS7aAzYX4hDuf30ON4pASuocSLVqoQMCK+z3dG5HAKQBDiAfwcxXccuDhgzFbZS8/tk4YIwX9jZiQ1tB6cRP/P0xQgEPBAEAAAABEAT9////AAEDCDkFAAAAAAAAAQQWABSqjvN0yvrfynaQLdtc9hxgu/2dhQA=" + const result = await app.signPsbt(psbtBase64, walletPolicy, hmac); + + expect(result.length).toEqual(1); + }); + + it("can sign a psbt passed as binary buffer string", async () => { + const automation = JSON.parse(fs.readFileSync('src/__tests__/automations/sign_with_wallet_accept.json').toString()); + await setSpeculosAutomation(transport, automation); + + const walletPolicy = new WalletPolicy( + "Taproot foreign internal key, and our script key", + "tr(@0/**,pk(@1/**))", + [ + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + ] + ); + + const hmac = Buffer.from("dae925660e20859ed8833025d46444483ce264fdb77e34569aabe9d590da8fb7", "hex"); + const psbtBuf = Buffer.from( + "cHNidP8BAgQCAAAAAQMEAAAAAAEEAQEBBQEBAfsEAgAAAAABAStMBgAAAAAAACJRIPwKENMIx+QbS7w2Qvj9isKJhTsc51WgxtDUlfA9ny2kAQMEAQAAACIVwVAXEIvs6o3txTALsiOGs6swNnrCYvnOXlgybrg+OiL1IyBrFujB+Xn6TMDwW2owCv//lBRZtvIN533lWwFg745MrKzAIRZQFxCL7OqN7cUwC7IjhrOrMDZ6wmL5zl5YMm64Pjoi9R0AdiI6bjAAAIABAACAAAAAgAIAAIAAAAAAAAAAACEWaxbowfl5+kzA8FtqMAr//5QUWbbyDed95VsBYO+OTKw9AQku2gM2F+IQ7n99DjeKQErqHEi1aqEDAivs93RuRwCk9azC/TAAAIABAACAAAAAgAIAAIAAAAAAAAAAAAEXIFAXEIvs6o3txTALsiOGs6swNnrCYvnOXlgybrg+OiL1ARggCS7aAzYX4hDuf30ON4pASuocSLVqoQMCK+z3dG5HAKQBDiAfwcxXccuDhgzFbZS8/tk4YIwX9jZiQ1tB6cRP/P0xQgEPBAEAAAABEAT9////AAEDCDkFAAAAAAAAAQQWABSqjvN0yvrfynaQLdtc9hxgu/2dhQA=", + "base64" + ); + const result = await app.signPsbt(psbtBuf, walletPolicy, hmac); + + expect(result.length).toEqual(1); }); it("can sign a message", async () => { @@ -294,4 +463,4 @@ describe("test AppClient", () => { const result = await app.signMessage(Buffer.from(msg, "ascii"), path) expect(result).toEqual("H4frM6TYm5ty1MAf9o/Zz9Qiy3VEldAYFY91SJ/5nYMAZY1UUB97fiRjKW8mJit2+V4OCa1YCqjDqyFnD9Fw75k="); }); -}); \ No newline at end of file +}); diff --git a/bitcoin_client_js/src/__tests__/automations/register_wallet_accept.json b/bitcoin_client_js/src/__tests__/automations/register_wallet_accept.json index 6371aa704..fa2d0db14 100644 --- a/bitcoin_client_js/src/__tests__/automations/register_wallet_accept.json +++ b/bitcoin_client_js/src/__tests__/automations/register_wallet_accept.json @@ -2,7 +2,7 @@ "version": 1, "rules": [ { - "regexp": "Register wallet|Policy map|Key", + "regexp": "Register wallet|Wallet name|Wallet policy|Key", "actions": [ ["button", 2, true], ["button", 2, false] diff --git a/bitcoin_client_js/src/__tests__/automations/sign_message_accept.json b/bitcoin_client_js/src/__tests__/automations/sign_message_accept.json index 505f5e39c..a72520e17 100644 --- a/bitcoin_client_js/src/__tests__/automations/sign_message_accept.json +++ b/bitcoin_client_js/src/__tests__/automations/sign_message_accept.json @@ -2,7 +2,7 @@ "version": 1, "rules": [ { - "regexp": "Path|Message hash", + "regexp": "Path|Message hash|Message content", "actions": [ ["button", 2, true], ["button", 2, false] diff --git a/bitcoin_client_js/src/__tests__/automations/sign_with_wallet_accept.json b/bitcoin_client_js/src/__tests__/automations/sign_with_wallet_accept.json index 37a08b741..81c5db84c 100644 --- a/bitcoin_client_js/src/__tests__/automations/sign_with_wallet_accept.json +++ b/bitcoin_client_js/src/__tests__/automations/sign_with_wallet_accept.json @@ -2,14 +2,14 @@ "version": 1, "rules": [ { - "regexp": "Spend from|Review|Amount|Address|Confirm|Fees", + "regexp": "Spend from|Wallet name|Review|Amount|Address|Fees", "actions": [ ["button", 2, true], ["button", 2, false] ] }, { - "regexp": "Approve|Accept", + "regexp": "Approve|Continue|Sign", "actions": [ [ "button", 1, true ], [ "button", 2, true ], diff --git a/bitcoin_client_js/src/__tests__/psbtv2.test.ts b/bitcoin_client_js/src/__tests__/psbtv2.test.ts new file mode 100644 index 000000000..3aa2b103b --- /dev/null +++ b/bitcoin_client_js/src/__tests__/psbtv2.test.ts @@ -0,0 +1,33 @@ +import { PsbtV2 } from "../lib/psbtv2"; + +describe("PsbtV2", () => { + it("deserializes a psbtV2 and reserializes it unchanged", async () => { + const psbtBuf = Buffer.from( + "cHNidP8BAAoBAAAAAAAAAAAAAQIEAgAAAAEDBAAAAAABBAECAQUBAgH7BAIAAAAAAQBxAgAAAAGTarLgEHL3k8/kyXdU3hth/gPn22U2yLLyHdC1dCxIRQEAAAAA/v///wLe4ccAAAAAABYAFOt418QL8QY7Dj/OKcNWW2ichVmrECcAAAAAAAAWABQjGNZvhP71xIdfkzsDjcY4MfjaE/mXHgABAR8QJwAAAAAAABYAFCMY1m+E/vXEh1+TOwONxjgx+NoTIgYDRV7nztyXsLpDW4AGb8ksljo0xgAxeYHRNTMMTuQ6x6MY9azC/VQAAIABAACAAAAAgAAAAAABAAAAAQ4gniz+J/Cth7eKI31ddAXUowZmyjYdWFpGew3+QiYrTbQBDwQBAAAAARAE/f///wESBAAAAAAAAQBxAQAAAAEORx706Sway1HvyGYPjT9pk26pybK/9y/5vIHFHvz0ZAEAAAAAAAAAAAJgrgoAAAAAABYAFDXG4N1tPISxa6iF3Kc6yGPQtZPsrwYyAAAAAAAWABTcKG4M0ua9N86+nsNJ+18IkFZy/AAAAAABAR9grgoAAAAAABYAFDXG4N1tPISxa6iF3Kc6yGPQtZPsIgYCcbW3ea2HCDhYd5e89vDHrsWr52pwnXJPSNLibPh08KAY9azC/VQAAIABAACAAAAAgAEAAAAAAAAAAQ4gr7+uBlkPdB/xr1m2rEYRJjNqTEqC21U99v76tzesM/MBDwQAAAAAARAE/f///wESBAAAAAAAIgICKexHcnEx7SWIogxG7amrt9qm9J/VC6/nC5xappYcTswY9azC/VQAAIABAACAAAAAgAEAAAAKAAAAAQMIqDoGAAAAAAABBBYAFOs4+puBKPgfJule2wxf+uqDaQ/kAAEDCOCTBAAAAAAAAQQiACA/qWbJ3c3C/ZbkpeG8dlufr2zos+tPEQSq1r33cyTlvgA=", + "base64" + ); + + const psbt = new PsbtV2(); + psbt.deserialize(psbtBuf); + + expect(psbt.serialize()).toEqual(psbtBuf); + }); + + it("deserializes a psbtV0 and reserializes it as a valid psbtV2", async () => { + const psbtV0 = Buffer.from( + "cHNidP8BAFICAAAAAR/BzFdxy4OGDMVtlLz+2ThgjBf2NmJDW0HpxE/8/TFCAQAAAAD9////ATkFAAAAAAAAFgAUqo7zdMr638p2kC3bXPYcYLv9nYUAAAAAAAEBK0wGAAAAAAAAIlEg/AoQ0wjH5BtLvDZC+P2KwomFOxznVaDG0NSV8D2fLaQBAwQBAAAAIhXBUBcQi+zqje3FMAuyI4azqzA2esJi+c5eWDJuuD46IvUjIGsW6MH5efpMwPBbajAK//+UFFm28g3nfeVbAWDvjkysrMAhFlAXEIvs6o3txTALsiOGs6swNnrCYvnOXlgybrg+OiL1HQB2IjpuMAAAgAEAAIAAAACAAgAAgAAAAAAAAAAAIRZrFujB+Xn6TMDwW2owCv//lBRZtvIN533lWwFg745MrD0BCS7aAzYX4hDuf30ON4pASuocSLVqoQMCK+z3dG5HAKT1rML9MAAAgAEAAIAAAACAAgAAgAAAAAAAAAAAARcgUBcQi+zqje3FMAuyI4azqzA2esJi+c5eWDJuuD46IvUBGCAJLtoDNhfiEO5/fQ43ikBK6hxItWqhAwIr7Pd0bkcApAAA", + "base64" + ); + + // the same psbt converted to V2, with keys sorted in lexicographical order + const psbtV2 = Buffer.from( + "cHNidP8BAgQCAAAAAQMEAAAAAAEEAQEBBQEBAfsEAgAAAAABAStMBgAAAAAAACJRIPwKENMIx+QbS7w2Qvj9isKJhTsc51WgxtDUlfA9ny2kAQMEAQAAAAEOIB/BzFdxy4OGDMVtlLz+2ThgjBf2NmJDW0HpxE/8/TFCAQ8EAQAAAAEQBP3///8iFcFQFxCL7OqN7cUwC7IjhrOrMDZ6wmL5zl5YMm64Pjoi9SMgaxbowfl5+kzA8FtqMAr//5QUWbbyDed95VsBYO+OTKyswCEWUBcQi+zqje3FMAuyI4azqzA2esJi+c5eWDJuuD46IvUdAHYiOm4wAACAAQAAgAAAAIACAACAAAAAAAAAAAAhFmsW6MH5efpMwPBbajAK//+UFFm28g3nfeVbAWDvjkysPQEJLtoDNhfiEO5/fQ43ikBK6hxItWqhAwIr7Pd0bkcApPWswv0wAACAAQAAgAAAAIACAACAAAAAAAAAAAABFyBQFxCL7OqN7cUwC7IjhrOrMDZ6wmL5zl5YMm64Pjoi9QEYIAku2gM2F+IQ7n99DjeKQErqHEi1aqEDAivs93RuRwCkAAEDCDkFAAAAAAAAAQQWABSqjvN0yvrfynaQLdtc9hxgu/2dhQA=", + "base64" + ); + + const psbt = new PsbtV2(); + psbt.deserialize(psbtV0); + + expect(psbt.serialize()).toEqual(psbtV2); + }); +}); diff --git a/bitcoin_client_js/src/index.ts b/bitcoin_client_js/src/index.ts index 7f2f4f995..01a2be10c 100644 --- a/bitcoin_client_js/src/index.ts +++ b/bitcoin_client_js/src/index.ts @@ -1,7 +1,18 @@ -import AppClient from './lib/appClient'; -import { DefaultWalletPolicy, WalletPolicy } from './lib/policy'; +import AppClient, { PartialSignature } from './lib/appClient'; +import { + DefaultDescriptorTemplate, + DefaultWalletPolicy, + WalletPolicy +} from './lib/policy'; import { PsbtV2 } from './lib/psbtv2'; -export { AppClient, PsbtV2, DefaultWalletPolicy, WalletPolicy }; +export { + AppClient, + PsbtV2, + DefaultDescriptorTemplate, + DefaultWalletPolicy, + PartialSignature, + WalletPolicy +}; export default AppClient; diff --git a/bitcoin_client_js/src/lib/appClient.ts b/bitcoin_client_js/src/lib/appClient.ts index 664779d84..bb369779f 100644 --- a/bitcoin_client_js/src/lib/appClient.ts +++ b/bitcoin_client_js/src/lib/appClient.ts @@ -1,4 +1,8 @@ +import * as descriptors from '@bitcoinerlab/descriptors'; +import * as secp256k1 from '@bitcoinerlab/secp256k1'; +const { Descriptor } = descriptors.DescriptorsFactory(secp256k1); import Transport from '@ledgerhq/hw-transport'; +import { networks } from 'bitcoinjs-lib'; import { pathElementsToBuffer, pathStringToArray } from './bip32'; import { ClientCommandInterpreter } from './clientCommands'; @@ -6,11 +10,13 @@ import { MerkelizedPsbt } from './merkelizedPsbt'; import { hashLeaf, Merkle } from './merkle'; import { WalletPolicy } from './policy'; import { PsbtV2 } from './psbtv2'; -import { createVarint } from './varint'; +import { createVarint, parseVarint } from './varint'; const CLA_BTC = 0xe1; const CLA_FRAMEWORK = 0xf8; +const CURRENT_PROTOCOL_VERSION = 1; // supported from version 2.1.0 of the app + enum BitcoinIns { GET_PUBKEY = 0x00, REGISTER_WALLET = 0x02, @@ -24,6 +30,42 @@ enum FrameworkIns { CONTINUE_INTERRUPTED = 0x01, } +/** + * This class represents a partial signature produced by the app during signing. + * It always contains the `signature` and the corresponding `pubkey` whose private key + * was used for signing; in the case of taproot script paths, it also contains the + * tapleaf hash. + */ +export class PartialSignature { + readonly pubkey: Buffer; + readonly signature: Buffer; + readonly tapleafHash?: Buffer; + + constructor(pubkey: Buffer, signature: Buffer, tapleafHash?: Buffer) { + this.pubkey = pubkey; + this.signature = signature; + this.tapleafHash = tapleafHash; + } +} + +/** + * Creates an instance of `PartialSignature` from the returned raw augmented pubkey and signature. + * @param pubkeyAugm the public key, concatenated with the tapleaf hash in the case of taproot script path spend. + * @param signature the signature + * @returns an instance of `PartialSignature`. + */ +function makePartialSignature(pubkeyAugm: Buffer, signature: Buffer): PartialSignature { + if (pubkeyAugm.length == 64) { + // tapscript spend: concatenation of 32-bytes x-only pubkey and 32-bytes tapleaf_hash + return new PartialSignature(pubkeyAugm.slice(0, 32), signature, pubkeyAugm.slice(32, 64)); + } else if (pubkeyAugm.length == 32 || pubkeyAugm.length == 33) { + // legacy, segwit or taproot keypath spend: pubkeyAugm is just the pubkey + return new PartialSignature(pubkeyAugm, signature); + } else { + throw new Error(`Invalid length for pubkeyAugm: ${pubkeyAugm.length} bytes.`); + } +} + /** * This class encapsulates the APDU protocol documented at * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/bitcoin.md @@ -44,7 +86,7 @@ export class AppClient { CLA_BTC, ins, 0, - 0, + CURRENT_PROTOCOL_VERSION, data, [0x9000, 0xe000] ); @@ -68,6 +110,34 @@ export class AppClient { return response.slice(0, -2); // drop the status word (can only be 0x9000 at this point) } + /** + * Returns an object containing the currently running app's name, version and the device status flags. + * + * @returns an object with app name, version and device status flags. + */ + public async getAppAndVersion(): Promise<{ + name: string; + version: string; + flags: number | Buffer; + }> { + const r = await this.transport.send(0xb0, 0x01, 0x00, 0x00); + let i = 0; + const format = r[i++]; + if (format !== 1) throw new Error("Unexpected response") + + const nameLength = r[i++]; + const name = r.slice(i, (i += nameLength)).toString("ascii"); + const versionLength = r[i++]; + const version = r.slice(i, (i += versionLength)).toString("ascii"); + const flagLength = r[i++]; + const flags = r.slice(i, (i += flagLength)); + return { + name, + version, + flags, + }; + }; + /** * Requests the BIP-32 extended pubkey to the hardware wallet. * If `display` is `false`, only standard paths will be accepted; an error is returned if an unusual path is @@ -109,14 +179,12 @@ export class AppClient { async registerWallet( walletPolicy: WalletPolicy ): Promise { - const serializedWalletPolicy = walletPolicy.serialize(); const clientInterpreter = new ClientCommandInterpreter(); - clientInterpreter.addKnownPreimage(serializedWalletPolicy); - clientInterpreter.addKnownList( - walletPolicy.keys.map((k) => Buffer.from(k, 'ascii')) - ); + clientInterpreter.addKnownWalletPolicy(walletPolicy); + + const serializedWalletPolicy = walletPolicy.serialize(); const response = await this.makeRequest( BitcoinIns.REGISTER_WALLET, Buffer.concat([ @@ -131,8 +199,20 @@ export class AppClient { `Invalid response length. Expected 64 bytes, got ${response.length}` ); } + const walletId = response.subarray(0, 32); + const walletHMAC = response.subarray(32); + + // sanity check: derive and validate the first address with a 3rd party + const firstAddrDevice = await this.getWalletAddress( + walletPolicy, + walletHMAC, + 0, + 0, + false + ); + await this.validateAddress(firstAddrDevice, walletPolicy, 0, 0); - return [response.subarray(0, 32), response.subarray(32)]; + return [walletId, walletHMAC]; } /** @@ -163,10 +243,8 @@ export class AppClient { } const clientInterpreter = new ClientCommandInterpreter(); - clientInterpreter.addKnownList( - walletPolicy.keys.map((k) => Buffer.from(k, 'ascii')) - ); - clientInterpreter.addKnownPreimage(walletPolicy.serialize()); + + clientInterpreter.addKnownWalletPolicy(walletPolicy); const addressIndexBuffer = Buffer.alloc(4); addressIndexBuffer.writeUInt32BE(addressIndex, 0); @@ -183,27 +261,41 @@ export class AppClient { clientInterpreter ); - return response.toString('ascii'); + const address = response.toString('ascii'); + await this.validateAddress(address, walletPolicy, change, addressIndex); + return address; } /** * Signs a psbt using a (standard or registered) `WalletPolicy`. This is an interactive command, as user validation * is necessary using the device's secure screen. * On success, a map of input indexes and signatures is returned. - * @param psbt an instance of `PsbtV2` + * @param psbt a base64-encoded string, or a psbt in a binary Buffer. Using the `PsbtV2` type is deprecated. * @param walletPolicy the `WalletPolicy` to use for signing * @param walletHMAC the 32-byte hmac obtained during wallet policy registration, or `null` for a standard policy * @param progressCallback optionally, a callback that will be called every time a signature is produced during * the signing process. The callback does not receive any argument, but can be used to track progress. - * @returns a map from numbers to signatures. For each input index `i` that is a key of the returned map, the - * corresponding value is the signature for the `i`-th input of the `psbt`. + * @returns an array of of tuples with 2 elements containing: + * - the index of the input being signed; + * - an instance of PartialSignature */ async signPsbt( - psbt: PsbtV2, + psbt: PsbtV2 | string | Buffer, walletPolicy: WalletPolicy, walletHMAC: Buffer | null, progressCallback?: () => void - ): Promise> { + ): Promise<[number, PartialSignature][]> { + + if (typeof psbt === 'string') { + psbt = Buffer.from(psbt, "base64"); + } + + if (Buffer.isBuffer(psbt)) { + const psbtObj = new PsbtV2() + psbtObj.deserialize(psbt); + psbt = psbtObj; + } + const merkelizedPsbt = new MerkelizedPsbt(psbt); if (walletHMAC != null && walletHMAC.length != 32) { @@ -213,10 +305,7 @@ export class AppClient { const clientInterpreter = new ClientCommandInterpreter(progressCallback); // prepare ClientCommandInterpreter - clientInterpreter.addKnownList( - walletPolicy.keys.map((k) => Buffer.from(k, 'ascii')) - ); - clientInterpreter.addKnownPreimage(walletPolicy.serialize()); + clientInterpreter.addKnownWalletPolicy(walletPolicy); clientInterpreter.addKnownMapping(merkelizedPsbt.globalMerkleMap); for (const map of merkelizedPsbt.inputMerkleMaps) { @@ -251,9 +340,18 @@ export class AppClient { const yielded = clientInterpreter.getYielded(); - const ret: Map = new Map(); + const ret: [number, PartialSignature][] = []; for (const inputAndSig of yielded) { - ret.set(inputAndSig[0], inputAndSig.slice(1)); + // inputAndSig contains: + // + const [inputIndex, inputIndexLen] = parseVarint(inputAndSig, 0); + const pubkeyAugmLen = inputAndSig[inputIndexLen]; + const pubkeyAugm = inputAndSig.subarray(inputIndexLen + 1, inputIndexLen + 1 + pubkeyAugmLen); + const signature = inputAndSig.subarray(inputIndexLen + 1 + pubkeyAugmLen) + + const partialSig = makePartialSignature(pubkeyAugm, signature); + + ret.push([Number(inputIndex), partialSig]); } return ret; } @@ -308,6 +406,77 @@ export class AppClient { return result.toString('base64'); } + + /* Performs any additional check on the generated address before returning it.*/ + private async validateAddress( + address: string, + walletPolicy: WalletPolicy, + change: number, + addressIndex: number + ) { + if (change !== 0 && change !== 1) + throw new Error('Change can only be 0 or 1'); + const isChange: boolean = change === 1; + if (addressIndex < 0 || !Number.isInteger(addressIndex)) + throw new Error('Invalid address index'); + const appAndVer = await this.getAppAndVersion(); + let network; + if (appAndVer.name === 'Bitcoin Test') { + network = networks.testnet; + } else if (appAndVer.name === 'Bitcoin') { + network = networks.bitcoin; + } else { + throw new Error( + `Invalid network: ${appAndVer.name}. Expected 'Bitcoin Test' or 'Bitcoin'.` + ); + } + let expression = walletPolicy.descriptorTemplate; + // Replace change: + expression = expression.replace(/\/\*\*/g, `/<0;1>/*`); + const regExpMN = new RegExp(`/<(\\d+);(\\d+)>`, 'g'); + let matchMN; + while ((matchMN = regExpMN.exec(expression)) !== null) { + const [M, N] = [parseInt(matchMN[1], 10), parseInt(matchMN[2], 10)]; + expression = expression.replace(`/<${M};${N}>`, `/${isChange ? N : M}`); + } + // Replace index: + expression = expression.replace(/\/\*/g, `/${addressIndex}`); + // Replace origin in reverse order to prevent + // misreplacements, e.g., @10 being mistaken for @1 and leaving a 0. + for (let i = walletPolicy.keys.length - 1; i >= 0; i--) + expression = expression.replace( + new RegExp(`@${i}`, 'g'), + walletPolicy.keys[i] + ); + let thirdPartyValidationApplicable = true; + let thirdPartyGeneratedAddress: string; + try { + thirdPartyGeneratedAddress = new Descriptor({ + expression, + network + }).getAddress(); + } catch (err) { + // Note: @bitcoinerlab/descriptors@1.0.x does not support Tapscript yet. + // These are the supported descriptors: + // - pkh(KEY) + // - wpkh(KEY) + // - sh(wpkh(KEY)) + // - sh(SCRIPT) + // - wsh(SCRIPT) + // - sh(wsh(SCRIPT)), where + // SCRIPT is any of the (non-tapscript) fragments in: https://bitcoin.sipa.be/miniscript/ + // + // Other expressions are not supported and third party validation would not be applicable: + thirdPartyValidationApplicable = false; + } + if ( + thirdPartyValidationApplicable && + address !== thirdPartyGeneratedAddress + ) + throw new Error( + `Third party address validation mismatch: ${address} != ${thirdPartyGeneratedAddress}` + ); + } } export default AppClient; diff --git a/bitcoin_client_js/src/lib/bip32.ts b/bitcoin_client_js/src/lib/bip32.ts index 0275bb172..091cf66f1 100644 --- a/bitcoin_client_js/src/lib/bip32.ts +++ b/bitcoin_client_js/src/lib/bip32.ts @@ -32,7 +32,7 @@ export function pathStringToArray(path: string): readonly number[] { } export function pubkeyFromXpub(xpub: string): Buffer { - const xpubBuf = bs58check.decode(xpub); + const xpubBuf = Buffer.from(bs58check.decode(xpub)); return xpubBuf.slice(xpubBuf.length - 33); } @@ -41,7 +41,7 @@ export function getXpubComponents(xpub: string): { readonly pubkey: Buffer; readonly version: number; } { - const xpubBuf: Buffer = bs58check.decode(xpub); + const xpubBuf = Buffer.from(bs58check.decode(xpub)); return { chaincode: xpubBuf.slice(13, 13 + 32), pubkey: xpubBuf.slice(xpubBuf.length - 33), diff --git a/bitcoin_client_js/src/lib/clientCommands.ts b/bitcoin_client_js/src/lib/clientCommands.ts index bf0dfce03..0267754d0 100644 --- a/bitcoin_client_js/src/lib/clientCommands.ts +++ b/bitcoin_client_js/src/lib/clientCommands.ts @@ -3,6 +3,7 @@ import { crypto } from 'bitcoinjs-lib'; import { BufferReader } from './buffertools'; import { hashLeaf, Merkle } from './merkle'; import { MerkleMap } from './merkleMap'; +import { WalletPolicy } from './policy'; import { createVarint, sanitizeBigintToNumber } from './varint'; enum ClientCommandCode { @@ -324,6 +325,14 @@ export class ClientCommandInterpreter { this.addKnownList(mm.values); } + addKnownWalletPolicy(wp: WalletPolicy): void { + this.addKnownPreimage(wp.serialize()); + this.addKnownList( + wp.keys.map((k) => Buffer.from(k, 'ascii')) + ); + this.addKnownPreimage(Buffer.from(wp.descriptorTemplate)); + } + execute(request: Buffer): Buffer { if (request.length == 0) { throw new Error('Unexpected empty command'); diff --git a/bitcoin_client_js/src/lib/policy.ts b/bitcoin_client_js/src/lib/policy.ts index 09c53cd3f..9e2c67ccd 100644 --- a/bitcoin_client_js/src/lib/policy.ts +++ b/bitcoin_client_js/src/lib/policy.ts @@ -3,6 +3,8 @@ import { crypto } from 'bitcoinjs-lib'; import { BufferWriter } from './buffertools'; import { hashLeaf, Merkle } from './merkle'; +const WALLET_POLICY_V2 = 2; + /** * The Bitcon hardware app uses a descriptors-like thing to describe * how to construct output scripts from keys. A "Wallet Policy" consists @@ -49,20 +51,29 @@ export class WalletPolicy { const m = new Merkle(keyBuffers.map((k) => hashLeaf(k))); const buf = new BufferWriter(); - buf.writeUInt8(0x01); // wallet type (policy map) + buf.writeUInt8(WALLET_POLICY_V2); // wallet version + + // length of wallet name, and wallet name buf.writeVarSlice(Buffer.from(this.name, 'ascii')); - buf.writeVarSlice(Buffer.from(this.descriptorTemplate, 'ascii')); + + // length of descriptor template + buf.writeVarInt(this.descriptorTemplate.length); + // sha256 hash of descriptor template + buf.writeSlice(crypto.sha256(Buffer.from(this.descriptorTemplate))); + + // number of keys buf.writeVarInt(this.keys.length); + // root of Merkle tree of keys buf.writeSlice(m.getRoot()); return buf.buffer(); } } export type DefaultDescriptorTemplate = - | 'pkh(@0)' - | 'sh(wpkh(@0))' - | 'wpkh(@0)' - | 'tr(@0)'; + | 'pkh(@0/**)' + | 'sh(wpkh(@0/**))' + | 'wpkh(@0/**)' + | 'tr(@0/**)'; /** * Simplified class to handle default wallet policies that can be used without policy registration. diff --git a/bitcoin_client_js/src/lib/psbtv2.ts b/bitcoin_client_js/src/lib/psbtv2.ts index 25cddc909..c4bf84be9 100644 --- a/bitcoin_client_js/src/lib/psbtv2.ts +++ b/bitcoin_client_js/src/lib/psbtv2.ts @@ -1,5 +1,7 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ +import * as bjs from 'bitcoinjs-lib'; + import { BufferReader, BufferWriter, @@ -9,6 +11,8 @@ import { import { sanitizeBigintToNumber } from './varint'; export enum psbtGlobal { + UNSIGNED_TX = 0x00, + XPUB = 0x01, TX_VERSION = 0x02, FALLBACK_LOCKTIME = 0x03, INPUT_COUNT = 0x04, @@ -22,6 +26,7 @@ export enum psbtIn { PARTIAL_SIG = 0x02, SIGHASH_TYPE = 0x03, REDEEM_SCRIPT = 0x04, + WITNESS_SCRIPT = 0x05, BIP32_DERIVATION = 0x06, FINAL_SCRIPTSIG = 0x07, FINAL_SCRIPTWITNESS = 0x08, @@ -33,6 +38,7 @@ export enum psbtIn { } export enum psbtOut { REDEEM_SCRIPT = 0x00, + WITNESS_SCRIPT = 0x01, BIP_32_DERIVATION = 0x02, AMOUNT = 0x03, SCRIPT = 0x04, @@ -113,21 +119,24 @@ export class PsbtV2 { } setInputWitnessUtxo( inputIndex: number, - amount: Buffer, + amount: number, scriptPubKey: Buffer ) { const buf = new BufferWriter(); - buf.writeSlice(amount); + buf.writeSlice(uint64LE(amount)); buf.writeVarSlice(scriptPubKey); this.setInput(inputIndex, psbtIn.WITNESS_UTXO, b(), buf.buffer()); } getInputWitnessUtxo( inputIndex: number - ): { readonly amount: Buffer; readonly scriptPubKey: Buffer } | undefined { + ): { readonly amount: number; readonly scriptPubKey: Buffer } | undefined { const utxo = this.getInputOptional(inputIndex, psbtIn.WITNESS_UTXO, b()); if (!utxo) return undefined; const buf = new BufferReader(utxo); - return { amount: buf.readSlice(8), scriptPubKey: buf.readVarSlice() }; + return { + amount: unsafeFrom64bitLE(buf.readSlice(8)), + scriptPubKey: buf.readVarSlice() + }; } setInputPartialSig(inputIndex: number, pubkey: Buffer, signature: Buffer) { this.setInput(inputIndex, psbtIn.PARTIAL_SIG, pubkey, signature); @@ -149,6 +158,12 @@ export class PsbtV2 { getInputRedeemScript(inputIndex: number): Buffer | undefined { return this.getInputOptional(inputIndex, psbtIn.REDEEM_SCRIPT, b()); } + setInputWitnessScript(inputIndex: number, witnessScript: Buffer) { + this.setInput(inputIndex, psbtIn.WITNESS_SCRIPT, b(), witnessScript); + } + getInputWitnessScript(inputIndex: number): Buffer | undefined { + return this.getInputOptional(inputIndex, psbtIn.WITNESS_SCRIPT, b()); + } setInputBip32Derivation( inputIndex: number, pubkey: Buffer, @@ -355,14 +370,156 @@ export class PsbtV2 { throw new Error('Invalid magic bytes'); } while (this.readKeyPair(this.globalMap, buf)); - for (let i = 0; i < this.getGlobalInputCount(); i++) { + + let psbtVersion: number; + try { + psbtVersion = this.getGlobalPsbtVersion(); + } catch { + psbtVersion = 0; + } + + if (psbtVersion !== 0 && psbtVersion !== 2) throw new Error("Only PSBTs of version 0 or 2 are supported"); + + let nInputs: number; + let nOutputs: number; + if (psbtVersion == 0) { + // if PSBTv0, we parse the PSBT_GLOBAL_UNSIGNED_TX field + const txRaw = this.getGlobal(psbtGlobal.UNSIGNED_TX); + const tx = bjs.Transaction.fromBuffer(txRaw); + nInputs = tx.ins.length; + nOutputs = tx.outs.length + } else { + // if PSBTv2, we already have the counts + nInputs = this.getGlobalInputCount(); + nOutputs = this.getGlobalOutputCount(); + } + + for (let i = 0; i < nInputs; i++) { this.inputMaps[i] = new Map(); while (this.readKeyPair(this.inputMaps[i], buf)); } - for (let i = 0; i < this.getGlobalOutputCount(); i++) { + for (let i = 0; i < nOutputs; i++) { this.outputMaps[i] = new Map(); while (this.readKeyPair(this.outputMaps[i], buf)); } + + this.normalizeToV2(); + } + normalizeToV2() { + // if the psbt is a PsbtV0, convert it to PsbtV2 instead. + // throw an error for any version other than 0 or 2, + const psbtVersion = this.getGlobalOptional(psbtGlobal.VERSION)?.readInt32LE(0); + if (psbtVersion === 2) return; + else if (psbtVersion !== undefined) { + throw new Error('Invalid or unsupported value for PSBT_GLOBAL_VERSION'); + } + + // Convert PsbtV0 to PsbtV2 by parsing the PSBT_GLOBAL_UNSIGNED_TX field + // and filling in the corresponding fields. + const txRaw = this.getGlobal(psbtGlobal.UNSIGNED_TX); + const tx = bjs.Transaction.fromBuffer(txRaw); + + this.setGlobalPsbtVersion(2); + this.setGlobalTxVersion(tx.version); + this.setGlobalFallbackLocktime(tx.locktime); + this.setGlobalInputCount(tx.ins.length); + this.setGlobalOutputCount(tx.outs.length); + + for (let i = 0; i < tx.ins.length; i++) { + this.setInputPreviousTxId(i, tx.ins[i].hash); + this.setInputOutputIndex(i, tx.ins[i].index); + this.setInputSequence(i, tx.ins[i].sequence); + } + + for (let i = 0; i < tx.outs.length; i++) { + this.setOutputAmount(i, tx.outs[i].value); + this.setOutputScript(i, tx.outs[i].script); + } + + // PSBT_GLOBAL_UNSIGNED_TX must be removed in a valid PSBTv2 + this.globalMap.delete(psbtGlobal.UNSIGNED_TX.toString(16).padStart(2, '0')); + } + /** + * Imports a BitcoinJS (bitcoinjs-lib) Psbt object. + * https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/ts_src/psbt.ts + * + * Prepares the fields required for signing a Psbt on a Ledger + * device. It should be used exclusively before calling + * `appClient.signPsbt()` and not as a general Psbt conversion method. + * + * Note: This method supports all the policies that the Ledger is able to + * sign, with the exception of taproot: tr(@0). + */ + fromBitcoinJS(psbtBJS: bjs.Psbt) : PsbtV2 { + function isTaprootInput(input): boolean { + let isP2TR; + try { + bjs.payments.p2tr({ output: input.witnessUtxo.script }); + isP2TR = true; + } catch (err) { + isP2TR = false; + } + return ( + input && + !!( + input.tapInternalKey || + input.tapMerkleRoot || + (input.tapLeafScript && input.tapLeafScript.length) || + (input.tapBip32Derivation && input.tapBip32Derivation.length) || + isP2TR + ) + ); + } + this.setGlobalPsbtVersion(2); + this.setGlobalTxVersion(psbtBJS.version); + this.setGlobalInputCount(psbtBJS.data.inputs.length); + this.setGlobalOutputCount(psbtBJS.txOutputs.length); + if (psbtBJS.locktime !== undefined) + this.setGlobalFallbackLocktime(psbtBJS.locktime); + psbtBJS.data.inputs.forEach((input, index) => { + if (isTaprootInput(input)) + throw new Error(`Taproot inputs not supported`); + this.setInputPreviousTxId(index, psbtBJS.txInputs[index].hash); + if (psbtBJS.txInputs[index].sequence !== undefined) + this.setInputSequence(index, psbtBJS.txInputs[index].sequence); + this.setInputOutputIndex(index, psbtBJS.txInputs[index].index); + if (input.sighashType !== undefined) + this.setInputSighashType(index, input.sighashType); + if (input.nonWitnessUtxo) + this.setInputNonWitnessUtxo(index, input.nonWitnessUtxo); + if (input.witnessUtxo) { + this.setInputWitnessUtxo( + index, + input.witnessUtxo.value, + input.witnessUtxo.script + ); + } + if (input.witnessScript) + this.setInputWitnessScript(index, input.witnessScript); + if (input.redeemScript) + this.setInputRedeemScript(index, input.redeemScript); + psbtBJS.data.inputs[index].bip32Derivation.forEach(derivation => { + if (!/^m\//i.test(derivation.path)) + throw new Error(`Invalid input bip32 derivation`); + const pathArray = derivation.path + .replace(/m\//i, '') + .split('/') + .map(level => + level.match(/['h]/i) ? parseInt(level) + 0x80000000 : Number(level) + ); + this.setInputBip32Derivation( + index, + derivation.pubkey, + derivation.masterFingerprint, + pathArray + ); + }); + }); + psbtBJS.txOutputs.forEach((output, index) => { + this.setOutputAmount(index, output.value); + this.setOutputScript(index, output.script); + }); + return this; } private readKeyPair(map: Map, buf: BufferReader): boolean { const keyLen = sanitizeBigintToNumber(buf.readVarInt()); @@ -373,6 +530,7 @@ export class PsbtV2 { const keyData = buf.readSlice(keyLen - 1); const value = buf.readVarSlice(); set(map, keyType, keyData, value); + return true; } private getKeyDatas( @@ -560,9 +718,9 @@ function createKey(buf: Buffer): Key { return new Key(buf.readUInt8(0), buf.slice(1)); } function serializeMap(buf: BufferWriter, map: ReadonlyMap) { - for (const k in map.keys) { - const value = map.get(k)!; - const keyPair = new KeyPair(createKey(Buffer.from(k, 'hex')), value); + // serialize in lexicographical order of keys + for (let [key, value] of [...map].sort(([k1], [k2]) => k1.localeCompare(k2))) { + const keyPair = new KeyPair(createKey(Buffer.from(key, 'hex')), value); keyPair.serialize(buf); } buf.writeUInt8(0); diff --git a/bitcoin_client_rs/.gitignore b/bitcoin_client_rs/.gitignore new file mode 100644 index 000000000..be40ada9a --- /dev/null +++ b/bitcoin_client_rs/.gitignore @@ -0,0 +1,3 @@ +/target +/examples/ledger_hwi/target +/Cargo.lock diff --git a/bitcoin_client_rs/CONTRIBUTING.md b/bitcoin_client_rs/CONTRIBUTING.md new file mode 100644 index 000000000..82f92e46b --- /dev/null +++ b/bitcoin_client_rs/CONTRIBUTING.md @@ -0,0 +1,39 @@ +# Contributing to `bitcoin_client_rs` + +## Workflow + +The codebase is maintained using the "contributor workflow" where everyone +without exception contributes patch proposals using "pull requests" (PRs). This +facilitates social contribution, easy testing and peer review. + +In general, [commits should be atomic](https://en.wikipedia.org/wiki/Atomic_commit#Atomic_commit_convention) +and diffs should be easy to read. For this reason, do not mix any formatting +fixes or code moves with actual code changes. + +When possible, make sure each individual commit is hygienic: that it builds successfully +on its own without warnings, errors, regressions, or test failures. + +Commit messages should be verbose by default consisting of a short subject line, +a blank line and detailed explanatory text as separate paragraph(s), unless the +title alone is self-explanatory. Commit messages should be helpful to people +reading your code in the future, so explain the reasoning for your decisions. + +If your pull request contains fixup commits (commits that change the same line of +code repeatedly) or too fine-grained commits, you may be asked to +[squash](https://git-scm.com/docs/git-rebase#_interactive_mode) your commits +before it will be merged. + +Patchsets should always be focused. For example, a pull request could add a +feature, fix a bug, or refactor code; but not a mixture. Please also avoid super +pull requests which attempt to do too much, are overly large, or overly complex +as this makes review difficult. Instead, prefer opening different focused pull requests. + + +## Minimum Supported Rust Version + +`bitcoin_client_rs` should always compile using **Rust 1.60** + +## Style + +Use [`rustfmt`](https://github.com/rust-lang/rustfmt) and +[Clippy](https://github.com/rust-lang/rust-clippy). diff --git a/bitcoin_client_rs/Cargo.toml b/bitcoin_client_rs/Cargo.toml new file mode 100644 index 000000000..cb3325f15 --- /dev/null +++ b/bitcoin_client_rs/Cargo.toml @@ -0,0 +1,36 @@ +[package] +name = "ledger_bitcoin_client" +version = "0.4.1" +authors = ["Edouard Paris "] +edition = "2018" +description = "Ledger Bitcoin application client" +repository = "https://github.com/LedgerHQ/app-bitcoin-new" +license = "Apache-2.0" +documentation = "https://docs.rs/ledger_bitcoin_client/" + +[features] +default = ["async", "paranoid_client"] +async = ["async-trait"] + +# The paranoid_client feature makes sure that the client independently derives wallet +# policy addresses using rust-miniscript, returning an error if they do not match. +# It is strongly recommended to not disable this feature, unless the same check is +# performed elsewhere. +# Read more at https://donjon.ledger.com/lsb/019/ +paranoid_client = ["miniscript"] + +[dependencies] +async-trait = { version = "0.1", optional = true } +bitcoin = { version = "0.31", default-features = false, features = ["no-std"] } +miniscript = { version = "11.0", optional = true, default-features = false, features = ["no-std"] } + +[workspace] +members = ["examples/ledger_hwi"] + +# Dependencies used for tests and examples only. +[dev-dependencies] +hex = "0.4.3" +tokio = { version = "1.21", features = ["macros", "rt", "rt-multi-thread"] } +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" +base64 = "0.13.0" diff --git a/bitcoin_client_rs/README.md b/bitcoin_client_rs/README.md new file mode 100644 index 000000000..cf30dc7b2 --- /dev/null +++ b/bitcoin_client_rs/README.md @@ -0,0 +1,73 @@ +# Ledger Bitcoin application client + +Client library in [Rust](https://www.rust-lang.org/) for the Ledger +Bitcoin application with minimal dependencies. + +If you wish to contribute to this library, please read +[CONTRIBUTING.md](CONTRIBUTING.md). + +## Minimum Supported Rust Version + +`bitcoin_client_rs` should always compile using **Rust 1.60**. + +## Getting started + +The `client::BitcoinClient` struct implements the methods that call and +interpret the commands between the Ledger device and your software. + + +```rust +pub struct BitcoinClient {...} +impl BitcoinClient { + pub fn get_extended_pubkey( + &self, + path: &bitcoin::util::bip32::DerivationPath, + display: bool, + ) -> Result>; +} +``` + +It requires an internal connection implementing the `client::Transport` +Trait. + +```rust +pub trait Transport { + type Error: Debug; + fn exchange(&self, command: &APDUCommand) -> Result<(StatusWord, Vec), Self::Error>; +} +``` + +In order to satisfy this Trait, it is possible to import the +`ledger-transport-hid` crate from https://github.com/Zondax/ledger-rs. +Please, read the `examples/ledger_hwi/src/transport.rs` file to find an example. + +## The `async` feature + +The optional feature `async` adds the `async_client` module to the crate +and imports the `async_trait` library. The `async_client::BitcoinClient` +struct is an asynchronous equivalent to the `BitcoinClient` struct. It +requires an internal connection implementing the `async_client::Transport` Trait. + +```rust +#[async_trait] +pub trait Transport { + type Error: Debug; + async fn exchange(&self, command: &APDUCommand) -> Result<(StatusWord, Vec), Self::Error>; +} +``` + +## The `no-std` support + +Work in progress. + +## Example + +The code source for a simple tool to communicate with either a Ledger device or Speculos +emulator can be found in the `examples` directory. + +Example of a command to retrieve the extended pubkey with the given +derivation path and display it on the device screen: +``` +cargo run --package ledger_hwi -- \ +get-extended-pubkey --derivation-path "m/44'/0'/0'/0/0" --display +``` diff --git a/bitcoin_client_rs/examples/ledger_hwi/Cargo.toml b/bitcoin_client_rs/examples/ledger_hwi/Cargo.toml new file mode 100644 index 000000000..2931fed6f --- /dev/null +++ b/bitcoin_client_rs/examples/ledger_hwi/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "ledger_hwi" +version = "0.1.0" +authors = ["edouard "] +edition = "2018" + +[dependencies] +clap = { version = "4.0.18", features = ["derive"] } +ledger_bitcoin_client = { path = "../.." } +async-trait = { version = "0.1"} +bitcoin = { version = "0.31", default-features = false, features = ["no-std"] } +hex = "0.4" +base64 = "0.13.0" +ledger-apdu = "0.10" +ledger-transport-hid = "0.10" +hidapi = { version = "1.4.1", features = ["linux-static-hidraw"], default-features = false } +tokio = { version = "1.21", features = ["macros", "net", "rt", "rt-multi-thread", "io-util", "sync"] } +regex = "1.6.0" + diff --git a/bitcoin_client_rs/examples/ledger_hwi/README.md b/bitcoin_client_rs/examples/ledger_hwi/README.md new file mode 100644 index 000000000..bef14f96c --- /dev/null +++ b/bitcoin_client_rs/examples/ledger_hwi/README.md @@ -0,0 +1,6 @@ +# `ledger_hwi` + +This tool first looks for a speculos simulator listening +at 127.0.0.1:9999, then looks for hid devices. + +`cargo run -- --help` diff --git a/bitcoin_client_rs/examples/ledger_hwi/src/main.rs b/bitcoin_client_rs/examples/ledger_hwi/src/main.rs new file mode 100644 index 000000000..0b53ed52d --- /dev/null +++ b/bitcoin_client_rs/examples/ledger_hwi/src/main.rs @@ -0,0 +1,231 @@ +use std::error::Error; +use std::str::FromStr; +use std::sync::Arc; + +use bitcoin::{bip32, hashes::hex::FromHex, psbt::Psbt}; + +use hidapi::HidApi; +use ledger_transport_hid::TransportNativeHID; +use regex::Regex; + +use ledger_bitcoin_client::{ + async_client::{BitcoinClient, Transport}, + psbt::PartialSignature, + wallet::{Version, WalletPolicy, WalletPubKey}, +}; + +mod transport; +use transport::{TransportHID, TransportTcp, TransportWrapper}; + +use clap::{Parser, Subcommand}; + +/// Ledger Hardware Wallet Interface +#[derive(Parser, Debug)] +#[command(author, version, about, long_about = None)] +struct Args { + #[command(subcommand)] + command: Option, +} + +#[derive(Debug, Subcommand)] +enum Commands { + GetAppVersion, + GetFingerprint, + GetExtendedPubkey { + #[arg(long)] + derivation_path: String, + #[arg(short, long, default_value_t = false)] + display: bool, + }, + RegisterWallet { + #[arg(long)] + name: String, + #[arg(long)] + policy: String, + }, + Sign { + #[arg(long)] + psbt: String, + #[arg(long)] + name: String, + #[arg(long)] + policy: String, + #[arg(long)] + hmac: String, + }, + SignMessage { + #[arg(long)] + message: String, + #[arg(long)] + derivation_path: String, + }, +} + +#[tokio::main] +async fn main() { + let args = Args::parse(); + + let transport: Arc> + Send + Sync> = + if let Ok(transport) = TransportTcp::new().await { + Arc::new(transport) + } else { + Arc::new(TransportHID::new( + TransportNativeHID::new(&HidApi::new().expect("unable to get HIDAPI")).unwrap(), + )) + }; + + let client = BitcoinClient::new(TransportWrapper::new(transport)); + + match args.command { + Some(Commands::GetAppVersion) => { + let (name, version, flags) = client.get_version().await.unwrap(); + println!( + "name: {}\nversion: {}\nflags: {}", + name, + version, + hex::encode(flags) + ); + } + Some(Commands::GetFingerprint) => { + let fg = client.get_master_fingerprint().await.unwrap(); + println!("{}", fg); + } + Some(Commands::GetExtendedPubkey { + derivation_path, + display, + }) => { + get_extended_pubkey(&client, &derivation_path, display) + .await + .unwrap(); + } + Some(Commands::RegisterWallet { name, policy }) => { + register_wallet(&client, &name, &policy).await.unwrap(); + } + Some(Commands::Sign { + psbt, + name, + policy, + hmac, + }) => { + sign(&client, &psbt, &name, &policy, Some(&hmac)) + .await + .unwrap(); + } + Some(Commands::SignMessage { + message, + derivation_path, + }) => { + sign_message(&client, &message, &derivation_path) + .await + .unwrap(); + } + _ => {} + } +} + +async fn get_extended_pubkey( + client: &BitcoinClient, + derivation_path: &str, + display: bool, +) -> Result<(), Box> { + let path = bip32::DerivationPath::from_str(&derivation_path).map_err(|e| format!("{}", e))?; + let xpk = client + .get_extended_pubkey(&path, display) + .await + .map_err(|e| format!("{:#?}", e))?; + println!("{}", xpk); + Ok(()) +} + +async fn register_wallet( + client: &BitcoinClient, + name: &str, + policy: &str, +) -> Result<(), Box> { + let (descriptor_template, keys) = extract_keys_and_template(policy)?; + let wallet = WalletPolicy::new(name.to_string(), Version::V2, descriptor_template, keys); + let (_id, hmac) = client + .register_wallet(&wallet) + .await + .map_err(|e| format!("{:#?}", e))?; + println!("{}", hex::encode(hmac)); + Ok(()) +} + +async fn sign( + client: &BitcoinClient, + psbt: &str, + name: &str, + policy: &str, + hmac: Option<&str>, +) -> Result<(), Box> { + let psbt = Psbt::deserialize(&base64::decode(&psbt)?).map_err(|e| format!("{:#?}", e))?; + let (descriptor_template, keys) = extract_keys_and_template(policy)?; + let wallet = WalletPolicy::new(name.to_string(), Version::V2, descriptor_template, keys); + let hmac = if let Some(s) = hmac { + let mut h = [b'\0'; 32]; + h.copy_from_slice(&Vec::from_hex(&s).map_err(|e| format!("{:#?}", e))?); + Some(h) + } else { + None + }; + + let res = client + .sign_psbt(&psbt, &wallet, hmac.as_ref()) + .await + .map_err(|e| format!("{:#?}", e))?; + + for (index, sig) in res { + match sig { + PartialSignature::Sig(key, sig) => { + println!("index: {}, key: {}, sig: {}", index, key, sig); + } + PartialSignature::TapScriptSig(key, tapleaf_hash, sig) => { + println!( + "index: {}, key: {}, tapleaf_hash: {}, sig: {}", + index, + key, + tapleaf_hash + .map(|h| hex::encode(h)) + .unwrap_or("none".to_string()), + hex::encode(sig.to_vec()) + ); + } + } + } + Ok(()) +} + +fn extract_keys_and_template(policy: &str) -> Result<(String, Vec), Box> { + let re = Regex::new(r"((\[.+?\])?[xyYzZtuUvV]pub[1-9A-HJ-NP-Za-km-z]{79,108})").unwrap(); + let mut descriptor_template = policy.to_string(); + let mut pubkeys: Vec = Vec::new(); + for (index, capture) in re.find_iter(policy).enumerate() { + let pubkey = WalletPubKey::from_str(capture.as_str()).map_err(|e| format!("{}", e))?; + if !pubkeys.contains(&pubkey) { + pubkeys.push(pubkey); + } + descriptor_template = descriptor_template.replace(capture.as_str(), &format!("@{}", index)); + } + if let Some((descriptor_template, _hash)) = descriptor_template.rsplit_once("#") { + Ok((descriptor_template.to_string(), pubkeys)) + } else { + Ok((descriptor_template, pubkeys)) + } +} + +async fn sign_message( + client: &BitcoinClient, + message: &str, + derivation_path: &str, +) -> Result<(), Box> { + let path = bip32::DerivationPath::from_str(&derivation_path).map_err(|e| format!("{}", e))?; + let (header, ecdsa_sig) = client + .sign_message(message.as_bytes(), &path) + .await + .map_err(|e| format!("{:#?}", e))?; + let mut sig = vec![header]; + sig.extend(&ecdsa_sig.serialize_compact()); + println!("{}", base64::encode(sig)); + Ok(()) +} diff --git a/bitcoin_client_rs/examples/ledger_hwi/src/transport.rs b/bitcoin_client_rs/examples/ledger_hwi/src/transport.rs new file mode 100644 index 000000000..7a6b4ca45 --- /dev/null +++ b/bitcoin_client_rs/examples/ledger_hwi/src/transport.rs @@ -0,0 +1,109 @@ +use std::convert::TryFrom; +use std::error::Error; +use std::net::{IpAddr, Ipv4Addr, SocketAddr}; +use std::sync::Arc; + +use async_trait::async_trait; +use ledger_apdu::APDUAnswer; +use ledger_transport_hid::TransportNativeHID; +use tokio::{ + io::{AsyncReadExt, AsyncWriteExt}, + net::TcpStream, + sync::Mutex, +}; + +use ledger_bitcoin_client::{ + apdu::{APDUCommand, StatusWord}, + async_client::Transport, +}; + +/// Transport with the Ledger device. +pub struct TransportHID(TransportNativeHID); + +impl TransportHID { + pub fn new(t: TransportNativeHID) -> Self { + Self(t) + } +} + +#[async_trait] +impl Transport for TransportHID { + type Error = Box; + async fn exchange(&self, cmd: &APDUCommand) -> Result<(StatusWord, Vec), Self::Error> { + self.0 + .exchange(&ledger_apdu::APDUCommand { + ins: cmd.ins, + cla: cmd.cla, + p1: cmd.p1, + p2: cmd.p2, + data: cmd.data.clone(), + }) + .map(|answer| { + ( + StatusWord::try_from(answer.retcode()).unwrap_or(StatusWord::Unknown), + answer.data().to_vec(), + ) + }) + .map_err(|e| e.into()) + } +} + +/// Transport to communicate with the Ledger Speculos simulator. +pub struct TransportTcp { + connection: Mutex, +} + +impl TransportTcp { + pub async fn new() -> Result> { + let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 9999); + let stream = TcpStream::connect(addr).await?; + Ok(Self { + connection: Mutex::new(stream), + }) + } +} + +#[async_trait] +impl Transport for TransportTcp { + type Error = Box; + async fn exchange(&self, command: &APDUCommand) -> Result<(StatusWord, Vec), Self::Error> { + let mut stream = self.connection.lock().await; + let command_bytes = command.encode(); + + let mut req = vec![0u8; command_bytes.len() + 4]; + req[..4].copy_from_slice(&(command_bytes.len() as u32).to_be_bytes()); + req[4..].copy_from_slice(&command_bytes); + stream.write(&req).await?; + + let mut buff = [0u8; 4]; + let len = match stream.read(&mut buff).await? { + 4 => u32::from_be_bytes(buff), + _ => return Err("Invalid Length".into()), + }; + + let mut resp = vec![0u8; len as usize + 2]; + stream.read_exact(&mut resp).await?; + let answer = APDUAnswer::from_answer(resp).map_err(|_| "Invalid Answer")?; + Ok(( + StatusWord::try_from(answer.retcode()).unwrap_or(StatusWord::Unknown), + answer.data().to_vec(), + )) + } +} + +/// Wrapper to handle both hid and tcp transport. +pub struct TransportWrapper(Arc> + Sync + Send>); + +impl TransportWrapper { + pub fn new(t: Arc> + Sync + Send>) -> Self { + Self(t) + } +} + +#[async_trait] +impl Transport for TransportWrapper { + type Error = Box; + async fn exchange(&self, command: &APDUCommand) -> Result<(StatusWord, Vec), Self::Error> { + self.0.exchange(command).await + } +} diff --git a/bitcoin_client_rs/src/apdu.rs b/bitcoin_client_rs/src/apdu.rs new file mode 100644 index 000000000..d09de3808 --- /dev/null +++ b/bitcoin_client_rs/src/apdu.rs @@ -0,0 +1,135 @@ +use core::convert::TryFrom; +use core::fmt::Debug; + +// p2 encodes the protocol version implemented +pub const CURRENT_PROTOCOL_VERSION: u8 = 1; + +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +#[repr(u8)] +pub enum Cla { + Default = 0xB0, + Bitcoin = 0xE1, + Framework = 0xF8, +} + +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +#[repr(u8)] +pub enum BitcoinCommandCode { + GetExtendedPubkey = 0x00, + GetVersion = 0x01, + RegisterWallet = 0x02, + GetWalletAddress = 0x03, + SignPSBT = 0x04, + GetMasterFingerprint = 0x05, + SignMessage = 0x10, +} + +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +#[repr(u8)] +pub enum FrameworkCommandCode { + ContinueInterrupted = 0x01, +} + +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +#[repr(u8)] +pub enum ClientCommandCode { + Yield = 0x10, + GetPreimage = 0x40, + GetMerkleLeafProof = 0x41, + GetMerkleLeafIndex = 0x42, + GetMoreElements = 0xA0, +} + +impl TryFrom for ClientCommandCode { + type Error = (); + + fn try_from(value: u8) -> Result { + match value { + 0x10 => Ok(ClientCommandCode::Yield), + 0x40 => Ok(ClientCommandCode::GetPreimage), + 0x41 => Ok(ClientCommandCode::GetMerkleLeafProof), + 0x42 => Ok(ClientCommandCode::GetMerkleLeafIndex), + 0xA0 => Ok(ClientCommandCode::GetMoreElements), + _ => Err(()), + } + } +} + +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +#[repr(u16)] +pub enum StatusWord { + /// Rejected by user + Deny = 0x6985, + /// Incorrect Data + IncorrectData = 0x6A80, + /// Not Supported + NotSupported = 0x6A82, + /// Wrong P1P2 + WrongP1P2 = 0x6A86, + /// Wrong DataLength + WrongDataLength = 0x6A87, + /// Ins not supported + InsNotSupported = 0x6D00, + /// Cla not supported + ClaNotSupported = 0x6E00, + /// Bad state + BadState = 0xB007, + /// Signature fail + SignatureFail = 0xB008, + /// Success + OK = 0x9000, + /// The command is interrupted, and requires the client's response + InterruptedExecution = 0xE000, + /// Unknown + Unknown, +} + +impl TryFrom for StatusWord { + type Error = (); + + fn try_from(value: u16) -> Result { + match value { + 0x6985 => Ok(StatusWord::Deny), + 0x6A80 => Ok(StatusWord::IncorrectData), + 0x6A82 => Ok(StatusWord::NotSupported), + 0x6A86 => Ok(StatusWord::WrongP1P2), + 0x6A87 => Ok(StatusWord::WrongDataLength), + 0x6D00 => Ok(StatusWord::InsNotSupported), + 0x6E00 => Ok(StatusWord::ClaNotSupported), + 0xB007 => Ok(StatusWord::BadState), + 0xB008 => Ok(StatusWord::SignatureFail), + 0x9000 => Ok(StatusWord::OK), + 0xE000 => Ok(StatusWord::InterruptedExecution), + _ => Err(()), + } + } +} + +#[derive(Clone)] +pub struct APDUCommand { + pub cla: u8, + pub ins: u8, + pub p1: u8, + pub p2: u8, + pub data: Vec, +} + +impl APDUCommand { + pub fn encode(&self) -> Vec { + let mut vec = vec![self.cla, self.ins, self.p1, self.p2, self.data.len() as u8]; + vec.extend(self.data.iter()); + vec + } +} + +impl core::default::Default for APDUCommand { + fn default() -> Self { + Self { + cla: Cla::Default as u8, + ins: 0x00, + p1: 0x00, + p2: CURRENT_PROTOCOL_VERSION as u8, + data: Vec::new(), + } + } +} diff --git a/bitcoin_client_rs/src/async_client.rs b/bitcoin_client_rs/src/async_client.rs new file mode 100644 index 000000000..f2086f477 --- /dev/null +++ b/bitcoin_client_rs/src/async_client.rs @@ -0,0 +1,388 @@ +use core::fmt::Debug; +use core::str::FromStr; + +use async_trait::async_trait; + +use bitcoin::{ + address, + bip32::{DerivationPath, Fingerprint, Xpub}, + consensus::encode::{deserialize_partial, VarInt}, + secp256k1::ecdsa::Signature, + Psbt, +}; + +#[cfg(feature = "paranoid_client")] +use miniscript::{Descriptor, DescriptorPublicKey}; + +use crate::{ + apdu::{APDUCommand, StatusWord}, + command, + error::BitcoinClientError, + interpreter::{get_merkleized_map_commitment, ClientCommandInterpreter}, + psbt::*, + wallet::WalletPolicy, +}; + +/// BitcoinClient calls and interprets commands with the Ledger Device. +/// The methods can only be used by an asynchronous engine like tokio. +pub struct BitcoinClient { + transport: T, +} + +impl BitcoinClient { + pub fn new(transport: T) -> Self { + Self { transport } + } + + async fn make_request( + &self, + req: &APDUCommand, + interpreter: Option<&mut ClientCommandInterpreter>, + ) -> Result, BitcoinClientError> { + let (mut sw, mut data) = self + .transport + .exchange(req) + .await + .map_err(BitcoinClientError::Transport)?; + + if let Some(interpreter) = interpreter { + while sw == StatusWord::InterruptedExecution { + let response = interpreter.execute(data)?; + let res = self + .transport + .exchange(&command::continue_interrupted(response)) + .await + .map_err(BitcoinClientError::Transport)?; + sw = res.0; + data = res.1; + } + } + + if sw != StatusWord::OK { + Err(BitcoinClientError::Device { + status: sw, + command: req.ins, + }) + } else { + Ok(data) + } + } + + // Verifies that the address that the application returns matches the one independently + // computed on the client + #[cfg(feature = "paranoid_client")] + async fn check_address( + &self, + wallet: &WalletPolicy, + change: bool, + address_index: u32, + expected_address: &bitcoin::Address, + ) -> Result<(), BitcoinClientError> { + let desc_str = wallet + .get_descriptor(change) + .map_err(|_| BitcoinClientError::ClientError("Failed to get descriptor".to_string()))?; + let descriptor = Descriptor::::from_str(&desc_str).map_err(|_| { + BitcoinClientError::ClientError("Failed to parse descriptor".to_string()) + })?; + + if descriptor + .at_derivation_index(address_index) + .map_err(|_| { + BitcoinClientError::ClientError("Failed to derive descriptor".to_string()) + })? + .script_pubkey() + != expected_address.payload().script_pubkey() + { + return Err(BitcoinClientError::InvalidResponse("Invalid address. Please update your Bitcoin app. If the problem persists, report a bug at https://github.com/LedgerHQ/app-bitcoin-new".to_string())); + } + + Ok(()) + } + + /// Returns the currently running app's name, version and state flags + pub async fn get_version( + &self, + ) -> Result<(String, String, Vec), BitcoinClientError> { + let cmd = command::get_version(); + let data = self.make_request(&cmd, None).await?; + if data.is_empty() || data[0] != 0x01 { + return Err(BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data, + }); + } + + let (name, i): (String, usize) = + deserialize_partial(&data[1..]).map_err(|_| BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data: data.clone(), + })?; + + let (version, j): (String, usize) = deserialize_partial(&data[i + 1..]).map_err(|_| { + BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data: data.clone(), + } + })?; + + let (flags, _): (Vec, usize) = + deserialize_partial(&data[i + j + 1..]).map_err(|_| { + BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data: data.clone(), + } + })?; + + Ok((name, version, flags)) + } + + /// Retrieve the master fingerprint. + pub async fn get_master_fingerprint( + &self, + ) -> Result> { + let cmd = command::get_master_fingerprint(); + self.make_request(&cmd, None).await.and_then(|data| { + if data.len() < 4 { + Err(BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data, + }) + } else { + let mut fg = [0x00; 4]; + fg.copy_from_slice(&data[0..4]); + Ok(Fingerprint::from(fg)) + } + }) + } + + /// Retrieve the bip32 extended pubkey derived with the given path + /// and optionally display it on screen + pub async fn get_extended_pubkey( + &self, + path: &DerivationPath, + display: bool, + ) -> Result> { + let cmd = command::get_extended_pubkey(path, display); + self.make_request(&cmd, None).await.and_then(|data| { + Xpub::from_str(&String::from_utf8_lossy(&data)).map_err(|_| { + BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data, + } + }) + }) + } + + /// Registers the given wallet policy, returns the wallet ID and HMAC. + pub async fn register_wallet( + &self, + wallet: &WalletPolicy, + ) -> Result<([u8; 32], [u8; 32]), BitcoinClientError> { + let cmd = command::register_wallet(wallet); + let mut intpr = ClientCommandInterpreter::new(); + intpr.add_known_preimage(wallet.serialize()); + let keys: Vec = wallet.keys.iter().map(|k| k.to_string()).collect(); + intpr.add_known_list(&keys); + //necessary for version 1 of the protocol (introduced in version 2.1.0) + intpr.add_known_preimage(wallet.descriptor_template.as_bytes().to_vec()); + let (id, hmac) = self + .make_request(&cmd, Some(&mut intpr)) + .await + .and_then(|data| { + if data.len() < 64 { + Err(BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data, + }) + } else { + let mut id = [0x00; 32]; + id.copy_from_slice(&data[0..32]); + let mut hmac = [0x00; 32]; + hmac.copy_from_slice(&data[32..64]); + Ok((id, hmac)) + } + })?; + + #[cfg(feature = "paranoid_client")] + { + let device_addr = self + .get_wallet_address(wallet, Some(&hmac), false, 0, false) + .await?; + + self.check_address(wallet, false, 0, &device_addr).await?; + } + + Ok((id, hmac)) + } + + /// For a given wallet that was already registered on the device (or a standard wallet that does not need registration), + /// returns the address for a certain `change`/`address_index` combination. + pub async fn get_wallet_address( + &self, + wallet: &WalletPolicy, + wallet_hmac: Option<&[u8; 32]>, + change: bool, + address_index: u32, + display: bool, + ) -> Result, BitcoinClientError> { + let mut intpr = ClientCommandInterpreter::new(); + intpr.add_known_preimage(wallet.serialize()); + let keys: Vec = wallet.keys.iter().map(|k| k.to_string()).collect(); + intpr.add_known_list(&keys); + // necessary for version 1 of the protocol (introduced in version 2.1.0) + intpr.add_known_preimage(wallet.descriptor_template.as_bytes().to_vec()); + let cmd = command::get_wallet_address(wallet, wallet_hmac, change, address_index, display); + let address = self + .make_request(&cmd, Some(&mut intpr)) + .await + .and_then(|data| { + bitcoin::Address::from_str(&String::from_utf8_lossy(&data)).map_err(|_| { + BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data, + } + }) + })?; + + #[cfg(feature = "paranoid_client")] + { + self.check_address(wallet, change, address_index, &address) + .await?; + } + + Ok(address) + } + + /// Signs a PSBT using a registered wallet (or a standard wallet that does not need registration). + /// Signature requires explicit approval from the user. + #[allow(clippy::type_complexity)] + pub async fn sign_psbt( + &self, + psbt: &Psbt, + wallet: &WalletPolicy, + wallet_hmac: Option<&[u8; 32]>, + ) -> Result, BitcoinClientError> { + let mut intpr = ClientCommandInterpreter::new(); + intpr.add_known_preimage(wallet.serialize()); + let keys: Vec = wallet.keys.iter().map(|k| k.to_string()).collect(); + intpr.add_known_list(&keys); + // necessary for version 1 of the protocol (introduced in version 2.1.0) + intpr.add_known_preimage(wallet.descriptor_template.as_bytes().to_vec()); + + let global_map: Vec<(Vec, Vec)> = get_v2_global_pairs(psbt) + .into_iter() + .map(deserialize_pair) + .collect(); + intpr.add_known_mapping(&global_map); + let global_mapping_commitment = get_merkleized_map_commitment(&global_map); + + let mut input_commitments: Vec> = Vec::with_capacity(psbt.inputs.len()); + for (index, input) in psbt.inputs.iter().enumerate() { + let txin = psbt + .unsigned_tx + .input + .get(index) + .ok_or(BitcoinClientError::InvalidPsbt)?; + let input_map: Vec<(Vec, Vec)> = get_v2_input_pairs(input, txin) + .into_iter() + .map(deserialize_pair) + .collect(); + intpr.add_known_mapping(&input_map); + input_commitments.push(get_merkleized_map_commitment(&input_map)); + } + let input_commitments_root = intpr.add_known_list(&input_commitments); + + let mut output_commitments: Vec> = Vec::with_capacity(psbt.outputs.len()); + for (index, output) in psbt.outputs.iter().enumerate() { + let txout = psbt + .unsigned_tx + .output + .get(index) + .ok_or(BitcoinClientError::InvalidPsbt)?; + let output_map: Vec<(Vec, Vec)> = get_v2_output_pairs(output, txout) + .into_iter() + .map(deserialize_pair) + .collect(); + intpr.add_known_mapping(&output_map); + output_commitments.push(get_merkleized_map_commitment(&output_map)); + } + let output_commitments_root = intpr.add_known_list(&output_commitments); + + let cmd = command::sign_psbt( + &global_mapping_commitment, + psbt.inputs.len(), + &input_commitments_root, + psbt.outputs.len(), + &output_commitments_root, + wallet, + wallet_hmac, + ); + + self.make_request(&cmd, Some(&mut intpr)).await?; + + let results = intpr.yielded(); + if results.iter().any(|res| res.len() <= 1) { + return Err(BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data: results.into_iter().fold(Vec::new(), |mut acc, res| { + acc.extend(res); + acc + }), + }); + } + + let mut signatures = Vec::new(); + for result in results { + let (input_index, i): (VarInt, usize) = + deserialize_partial(&result).map_err(|_| BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data: result.clone(), + })?; + + signatures.push(( + input_index.0 as usize, + PartialSignature::from_slice(&result[i..]).map_err(|_| { + BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data: result.clone(), + } + })?, + )); + } + + Ok(signatures) + } + + /// Sign a message with the key derived with the given derivation path. + /// Result is the header byte (31-34: P2PKH compressed) and the ecdsa signature. + pub async fn sign_message( + &self, + message: &[u8], + path: &DerivationPath, + ) -> Result<(u8, Signature), BitcoinClientError> { + let chunks: Vec<&[u8]> = message.chunks(64).collect(); + let mut intpr = ClientCommandInterpreter::new(); + let message_commitment_root = intpr.add_known_list(&chunks); + let cmd = command::sign_message(message.len(), &message_commitment_root, path); + self.make_request(&cmd, Some(&mut intpr)) + .await + .and_then(|data| { + Ok(( + data[0], + Signature::from_compact(&data[1..]).map_err(|_| { + BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data: data.to_vec(), + } + })?, + )) + }) + } +} + +/// Asynchronous communication layer between the bitcoin client and the Ledger device. +#[async_trait] +pub trait Transport { + type Error: Debug; + async fn exchange(&self, command: &APDUCommand) -> Result<(StatusWord, Vec), Self::Error>; +} diff --git a/bitcoin_client_rs/src/client.rs b/bitcoin_client_rs/src/client.rs new file mode 100644 index 000000000..a721e4bc1 --- /dev/null +++ b/bitcoin_client_rs/src/client.rs @@ -0,0 +1,366 @@ +use core::fmt::Debug; +use core::str::FromStr; + +use bitcoin::{ + address, + bip32::{DerivationPath, Fingerprint, Xpub}, + consensus::encode::{deserialize_partial, VarInt}, + psbt::Psbt, + secp256k1::ecdsa, +}; + +#[cfg(feature = "paranoid_client")] +use miniscript::{Descriptor, DescriptorPublicKey}; + +use crate::{ + apdu::{APDUCommand, StatusWord}, + command, + error::BitcoinClientError, + interpreter::{get_merkleized_map_commitment, ClientCommandInterpreter}, + psbt::*, + wallet::WalletPolicy, +}; + +/// BitcoinClient calls and interprets commands with the Ledger Device. +pub struct BitcoinClient { + transport: T, +} + +impl BitcoinClient { + pub fn new(transport: T) -> Self { + Self { transport } + } + + fn make_request( + &self, + req: &APDUCommand, + interpreter: Option<&mut ClientCommandInterpreter>, + ) -> Result, BitcoinClientError> { + let (mut sw, mut data) = self + .transport + .exchange(req) + .map_err(BitcoinClientError::Transport)?; + + if let Some(interpreter) = interpreter { + while sw == StatusWord::InterruptedExecution { + let response = interpreter.execute(data)?; + let res = self + .transport + .exchange(&command::continue_interrupted(response)) + .map_err(BitcoinClientError::Transport)?; + sw = res.0; + data = res.1; + } + } + + if sw != StatusWord::OK { + Err(BitcoinClientError::Device { + status: sw, + command: req.ins, + }) + } else { + Ok(data) + } + } + + // Verifies that the address that the application returns matches the one independently + // computed on the client + #[cfg(feature = "paranoid_client")] + fn check_address( + &self, + wallet: &WalletPolicy, + change: bool, + address_index: u32, + expected_address: &bitcoin::Address, + ) -> Result<(), BitcoinClientError> { + let desc_str = wallet + .get_descriptor(change) + .map_err(|_| BitcoinClientError::ClientError("Failed to get descriptor".to_string()))?; + let descriptor = Descriptor::::from_str(&desc_str).map_err(|_| { + BitcoinClientError::ClientError("Failed to parse descriptor".to_string()) + })?; + + if descriptor + .at_derivation_index(address_index) + .map_err(|_| { + BitcoinClientError::ClientError("Failed to derive descriptor".to_string()) + })? + .script_pubkey() + != expected_address.payload().script_pubkey() + { + return Err(BitcoinClientError::InvalidResponse("Invalid address. Please update your Bitcoin app. If the problem persists, report a bug at https://github.com/LedgerHQ/app-bitcoin-new".to_string())); + } + + Ok(()) + } + + /// Returns the currently running app's name, version and state flags + pub fn get_version(&self) -> Result<(String, String, Vec), BitcoinClientError> { + let cmd = command::get_version(); + let data = self.make_request(&cmd, None)?; + if data.is_empty() || data[0] != 0x01 { + return Err(BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data, + }); + } + + let (name, i): (String, usize) = + deserialize_partial(&data[1..]).map_err(|_| BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data: data.clone(), + })?; + + let (version, j): (String, usize) = deserialize_partial(&data[i + 1..]).map_err(|_| { + BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data: data.clone(), + } + })?; + + let (flags, _): (Vec, usize) = + deserialize_partial(&data[i + j + 1..]).map_err(|_| { + BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data: data.clone(), + } + })?; + + Ok((name, version, flags)) + } + + /// Retrieve the master fingerprint. + pub fn get_master_fingerprint(&self) -> Result> { + let cmd = command::get_master_fingerprint(); + self.make_request(&cmd, None).and_then(|data| { + if data.len() < 4 { + Err(BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data, + }) + } else { + let mut fg = [0x00; 4]; + fg.copy_from_slice(&data[0..4]); + Ok(Fingerprint::from(fg)) + } + }) + } + + /// Retrieve the bip32 extended pubkey derived with the given path + /// and optionally display it on screen + pub fn get_extended_pubkey( + &self, + path: &DerivationPath, + display: bool, + ) -> Result> { + let cmd = command::get_extended_pubkey(path, display); + self.make_request(&cmd, None).and_then(|data| { + Xpub::from_str(&String::from_utf8_lossy(&data)).map_err(|_| { + BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data, + } + }) + }) + } + + /// Registers the given wallet policy, returns the wallet ID and HMAC. + #[allow(clippy::type_complexity)] + pub fn register_wallet( + &self, + wallet: &WalletPolicy, + ) -> Result<([u8; 32], [u8; 32]), BitcoinClientError> { + let cmd = command::register_wallet(wallet); + let mut intpr = ClientCommandInterpreter::new(); + intpr.add_known_preimage(wallet.serialize()); + let keys: Vec = wallet.keys.iter().map(|k| k.to_string()).collect(); + intpr.add_known_list(&keys); + // necessary for version 1 of the protocol (introduced in version 2.1.0) + intpr.add_known_preimage(wallet.descriptor_template.as_bytes().to_vec()); + let (id, hmac) = self.make_request(&cmd, Some(&mut intpr)).and_then(|data| { + if data.len() < 64 { + Err(BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data, + }) + } else { + let mut id = [0x00; 32]; + id.copy_from_slice(&data[0..32]); + let mut hmac = [0x00; 32]; + hmac.copy_from_slice(&data[32..64]); + Ok((id, hmac)) + } + })?; + + #[cfg(feature = "paranoid_client")] + { + let device_addr = self.get_wallet_address(wallet, Some(&hmac), false, 0, false)?; + self.check_address(wallet, false, 0, &device_addr)?; + } + + Ok((id, hmac)) + } + + /// For a given wallet that was already registered on the device (or a standard wallet that does not need registration), + /// returns the address for a certain `change`/`address_index` combination. + pub fn get_wallet_address( + &self, + wallet: &WalletPolicy, + wallet_hmac: Option<&[u8; 32]>, + change: bool, + address_index: u32, + display: bool, + ) -> Result, BitcoinClientError> { + let mut intpr = ClientCommandInterpreter::new(); + intpr.add_known_preimage(wallet.serialize()); + let keys: Vec = wallet.keys.iter().map(|k| k.to_string()).collect(); + intpr.add_known_list(&keys); + // necessary for version 1 of the protocol (introduced in version 2.1.0) + intpr.add_known_preimage(wallet.descriptor_template.as_bytes().to_vec()); + let cmd = command::get_wallet_address(wallet, wallet_hmac, change, address_index, display); + let address = self.make_request(&cmd, Some(&mut intpr)).and_then(|data| { + bitcoin::Address::::from_str(&String::from_utf8_lossy(&data)) + .map_err(|_| BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data, + }) + })?; + + #[cfg(feature = "paranoid_client")] + { + self.check_address(wallet, change, address_index, &address)?; + } + + Ok(address) + } + + /// Signs a PSBT using a registered wallet (or a standard wallet that does not need registration). + /// Signature requires explicit approval from the user. + #[allow(clippy::type_complexity)] + pub fn sign_psbt( + &self, + psbt: &Psbt, + wallet: &WalletPolicy, + wallet_hmac: Option<&[u8; 32]>, + ) -> Result, BitcoinClientError> { + let mut intpr = ClientCommandInterpreter::new(); + intpr.add_known_preimage(wallet.serialize()); + let keys: Vec = wallet.keys.iter().map(|k| k.to_string()).collect(); + intpr.add_known_list(&keys); + // necessary for version 1 of the protocol (introduced in version 2.1.0) + intpr.add_known_preimage(wallet.descriptor_template.as_bytes().to_vec()); + + let global_map: Vec<(Vec, Vec)> = get_v2_global_pairs(psbt) + .into_iter() + .map(deserialize_pair) + .collect(); + intpr.add_known_mapping(&global_map); + let global_mapping_commitment = get_merkleized_map_commitment(&global_map); + + let mut input_commitments: Vec> = Vec::with_capacity(psbt.inputs.len()); + for (index, input) in psbt.inputs.iter().enumerate() { + let txin = psbt + .unsigned_tx + .input + .get(index) + .ok_or(BitcoinClientError::InvalidPsbt)?; + let input_map: Vec<(Vec, Vec)> = get_v2_input_pairs(input, txin) + .into_iter() + .map(deserialize_pair) + .collect(); + intpr.add_known_mapping(&input_map); + input_commitments.push(get_merkleized_map_commitment(&input_map)); + } + let input_commitments_root = intpr.add_known_list(&input_commitments); + + let mut output_commitments: Vec> = Vec::with_capacity(psbt.outputs.len()); + for (index, output) in psbt.outputs.iter().enumerate() { + let txout = psbt + .unsigned_tx + .output + .get(index) + .ok_or(BitcoinClientError::InvalidPsbt)?; + let output_map: Vec<(Vec, Vec)> = get_v2_output_pairs(output, txout) + .into_iter() + .map(deserialize_pair) + .collect(); + intpr.add_known_mapping(&output_map); + output_commitments.push(get_merkleized_map_commitment(&output_map)); + } + let output_commitments_root = intpr.add_known_list(&output_commitments); + + let cmd = command::sign_psbt( + &global_mapping_commitment, + psbt.inputs.len(), + &input_commitments_root, + psbt.outputs.len(), + &output_commitments_root, + wallet, + wallet_hmac, + ); + + self.make_request(&cmd, Some(&mut intpr))?; + + let results = intpr.yielded(); + if results.iter().any(|res| res.len() <= 1) { + return Err(BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data: results.into_iter().fold(Vec::new(), |mut acc, res| { + acc.extend(res); + acc + }), + }); + } + + let mut signatures = Vec::new(); + for result in results { + let (input_index, i): (VarInt, usize) = + deserialize_partial(&result).map_err(|_| BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data: result.clone(), + })?; + + signatures.push(( + input_index.0 as usize, + PartialSignature::from_slice(&result[i..]).map_err(|_| { + BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data: result.clone(), + } + })?, + )); + } + + Ok(signatures) + } + + /// Sign a message with the key derived with the given derivation path. + /// Result is the header byte (31-34: P2PKH compressed) and the ecdsa signature. + pub fn sign_message( + &self, + message: &[u8], + path: &DerivationPath, + ) -> Result<(u8, ecdsa::Signature), BitcoinClientError> { + let chunks: Vec<&[u8]> = message.chunks(64).collect(); + let mut intpr = ClientCommandInterpreter::new(); + let message_commitment_root = intpr.add_known_list(&chunks); + let cmd = command::sign_message(message.len(), &message_commitment_root, path); + self.make_request(&cmd, Some(&mut intpr)).and_then(|data| { + Ok(( + data[0], + ecdsa::Signature::from_compact(&data[1..]).map_err(|_| { + BitcoinClientError::UnexpectedResult { + command: cmd.ins, + data: data.to_vec(), + } + })?, + )) + }) + } +} + +/// Communication layer between the bitcoin client and the Ledger device. +pub trait Transport { + type Error: Debug; + fn exchange(&self, command: &APDUCommand) -> Result<(StatusWord, Vec), Self::Error>; +} diff --git a/bitcoin_client_rs/src/command.rs b/bitcoin_client_rs/src/command.rs new file mode 100644 index 000000000..6d54c7940 --- /dev/null +++ b/bitcoin_client_rs/src/command.rs @@ -0,0 +1,148 @@ +/// APDU commands for the Bitcoin application. +/// +use bitcoin::{ + bip32::{ChildNumber, DerivationPath}, + consensus::encode::{self, VarInt}, +}; +use core::default::Default; + +use super::{ + apdu::{self, APDUCommand}, + wallet::WalletPolicy, +}; + +/// Creates the APDU Command to retrieve the app's name, version and state flags. +pub fn get_version() -> APDUCommand { + APDUCommand { + ins: apdu::BitcoinCommandCode::GetVersion as u8, + p2: 0x00, + ..Default::default() + } +} + +/// Creates the APDU Command to retrieve the master fingerprint. +pub fn get_master_fingerprint() -> APDUCommand { + APDUCommand { + cla: apdu::Cla::Bitcoin as u8, + ins: apdu::BitcoinCommandCode::GetMasterFingerprint as u8, + ..Default::default() + } +} + +/// Creates the APDU command required to get the extended pubkey with the given derivation path. +pub fn get_extended_pubkey(path: &DerivationPath, display: bool) -> APDUCommand { + let child_numbers: &[ChildNumber] = path.as_ref(); + let data: Vec = child_numbers.iter().fold( + vec![ + if display { 1_u8 } else { b'\0' }, + child_numbers.len() as u8, + ], + |mut acc, &x| { + acc.extend_from_slice(&u32::from(x).to_be_bytes()); + acc + }, + ); + + APDUCommand { + cla: apdu::Cla::Bitcoin as u8, + ins: apdu::BitcoinCommandCode::GetExtendedPubkey as u8, + data, + ..Default::default() + } +} + +/// Creates the APDU command required to register the given wallet policy. +pub fn register_wallet(policy: &WalletPolicy) -> APDUCommand { + let bytes = policy.serialize(); + let mut data = encode::serialize(&VarInt(bytes.len() as u64)); + data.extend(bytes); + APDUCommand { + cla: apdu::Cla::Bitcoin as u8, + ins: apdu::BitcoinCommandCode::RegisterWallet as u8, + data, + ..Default::default() + } +} + +/// Creates the APDU command required to retrieve an address for the given wallet. +pub fn get_wallet_address( + policy: &WalletPolicy, + hmac: Option<&[u8; 32]>, + change: bool, + address_index: u32, + display: bool, +) -> APDUCommand { + let mut data: Vec = Vec::with_capacity(70); + data.push(if display { 1_u8 } else { b'\0' }); + data.extend_from_slice(&policy.id()); + data.extend_from_slice(hmac.unwrap_or(&[b'\0'; 32])); + data.push(if change { 1_u8 } else { b'\0' }); + data.extend_from_slice(&address_index.to_be_bytes()); + APDUCommand { + cla: apdu::Cla::Bitcoin as u8, + ins: apdu::BitcoinCommandCode::GetWalletAddress as u8, + data, + ..Default::default() + } +} + +/// Creates the APDU command required to sign a psbt. +pub fn sign_psbt( + global_mapping_commitment: &[u8], + inputs_number: usize, + input_commitments_root: &[u8; 32], + outputs_number: usize, + output_commitments_root: &[u8; 32], + policy: &WalletPolicy, + hmac: Option<&[u8; 32]>, +) -> APDUCommand { + let mut data: Vec = Vec::new(); + data.extend_from_slice(global_mapping_commitment); + data.extend(encode::serialize(&VarInt(inputs_number as u64))); + data.extend_from_slice(input_commitments_root); + data.extend(encode::serialize(&VarInt(outputs_number as u64))); + data.extend_from_slice(output_commitments_root); + data.extend_from_slice(&policy.id()); + data.extend_from_slice(hmac.unwrap_or(&[b'\0'; 32])); + APDUCommand { + cla: apdu::Cla::Bitcoin as u8, + ins: apdu::BitcoinCommandCode::SignPSBT as u8, + data, + ..Default::default() + } +} + +/// Creates the APDU Command to sign a message. +pub fn sign_message( + message_length: usize, + message_commitment_root: &[u8; 32], + path: &DerivationPath, +) -> APDUCommand { + let child_numbers: &[ChildNumber] = path.as_ref(); + let mut data: Vec = + child_numbers + .iter() + .fold(vec![child_numbers.len() as u8], |mut acc, &x| { + acc.extend_from_slice(&u32::from(x).to_be_bytes()); + acc + }); + data.extend(encode::serialize(&VarInt(message_length as u64))); + data.extend_from_slice(message_commitment_root); + + APDUCommand { + cla: apdu::Cla::Bitcoin as u8, + ins: apdu::BitcoinCommandCode::SignMessage as u8, + data, + ..Default::default() + } +} + +/// Creates the APDU command to CONTINUE. +pub fn continue_interrupted(data: Vec) -> APDUCommand { + APDUCommand { + cla: apdu::Cla::Framework as u8, + ins: apdu::FrameworkCommandCode::ContinueInterrupted as u8, + data, + ..Default::default() + } +} diff --git a/bitcoin_client_rs/src/error.rs b/bitcoin_client_rs/src/error.rs new file mode 100644 index 000000000..fce642c62 --- /dev/null +++ b/bitcoin_client_rs/src/error.rs @@ -0,0 +1,21 @@ +use core::fmt::Debug; + +use crate::{apdu::StatusWord, interpreter::InterpreterError}; + +#[derive(Debug)] +pub enum BitcoinClientError { + ClientError(String), + InvalidPsbt, + Transport(T), + Interpreter(InterpreterError), + Device { command: u8, status: StatusWord }, + UnexpectedResult { command: u8, data: Vec }, + InvalidResponse(String), + UnsupportedAppVersion, +} + +impl From for BitcoinClientError { + fn from(e: InterpreterError) -> BitcoinClientError { + BitcoinClientError::Interpreter(e) + } +} diff --git a/bitcoin_client_rs/src/interpreter.rs b/bitcoin_client_rs/src/interpreter.rs new file mode 100644 index 000000000..3bf01456a --- /dev/null +++ b/bitcoin_client_rs/src/interpreter.rs @@ -0,0 +1,315 @@ +use core::convert::TryFrom; +use core::fmt::Debug; + +use bitcoin::{ + consensus::encode::{self, VarInt}, + hashes::{sha256, Hash, HashEngine}, +}; + +use crate::{apdu::ClientCommandCode, merkle::MerkleTree}; + +/// Interpreter for the client-side commands. +/// This struct keeps has methods to keep track of: +/// - known preimages +/// - known Merkle trees from lists of elements +/// Moreover, it containes the state that is relevant for the interpreted client side commands: +/// - a queue of bytes that contains any bytes that could not fit in a response from the +/// GET_PREIMAGE client command (when a preimage is too long to fit in a single message) or the +/// GET_MERKLE_LEAF_PROOF command (which returns a Merkle proof, which might be too long to fit +/// in a single message). The data in the queue is returned in one (or more) successive +/// GET_MORE_ELEMENTS commands from the hardware wallet. +/// Finally, it keeps track of the yielded values (that is, the values sent from the hardware +/// wallet with a YIELD client command). +pub struct ClientCommandInterpreter { + yielded: Vec>, + queue: Vec>, + known_preimages: Vec<([u8; 32], Vec)>, + trees: Vec, +} + +impl ClientCommandInterpreter { + pub fn new() -> Self { + Self { + yielded: Vec::new(), + queue: Vec::new(), + known_preimages: Vec::new(), + trees: Vec::new(), + } + } + + /// Adds a preimage to the list of known preimages. + /// The client must respond with `element` when a GET_PREIMAGE command is sent with + /// `sha256(element)` in its request. + pub fn add_known_preimage(&mut self, element: Vec) { + let mut engine = sha256::Hash::engine(); + engine.input(&element); + let hash = sha256::Hash::from_engine(engine).to_byte_array(); + self.known_preimages.push((hash, element)); + } + + /// Adds a known Merkleized list. + /// Builds the Merkle tree of `elements`, and adds it to the Merkle trees known to the client + /// (mapped by Merkle root `mt_root`). + /// Moreover, adds all the leafs (after adding the b'\0' prefix) to the list of known preimages. + /// If `el` is one of `elements`, the client must respond with b'\0' + `el` when a GET_PREIMAGE + /// client command is sent with `sha256(b'\0' + el)`. + /// Moreover, the commands GET_MERKLE_LEAF_INDEX and GET_MERKLE_LEAF_PROOF must correctly answer + /// queries relative to the Merkle whose root is `mt_root`. + pub fn add_known_list(&mut self, elements: &[impl AsRef<[u8]>]) -> [u8; 32] { + let mut leaves = Vec::with_capacity(elements.len()); + for element in elements { + let mut preimage = vec![0x00]; + preimage.extend_from_slice(element.as_ref()); + let mut engine = sha256::Hash::engine(); + engine.input(&preimage); + let hash = sha256::Hash::from_engine(engine).to_byte_array(); + self.known_preimages.push((hash, preimage)); + leaves.push(hash); + } + let tree = MerkleTree::new(leaves); + let root_hash = *tree.root_hash(); + self.trees.push(tree); + root_hash + } + + /// Adds the Merkle trees of keys, and the Merkle tree of values (ordered by key) + /// of a mapping of bytes to bytes. + /// Adds the Merkle tree of the list of keys, and the Merkle tree of the list of corresponding + /// values, with the same semantics as the `add_known_list` applied separately to the two lists. + pub fn add_known_mapping(&mut self, mapping: &[(Vec, Vec)]) { + let mut sorted: Vec<&(Vec, Vec)> = mapping.iter().collect(); + sorted.sort_by(|(k1, _), (k2, _)| k1.as_slice().cmp(k2)); + + let mut keys = Vec::with_capacity(sorted.len()); + let mut values = Vec::with_capacity(sorted.len()); + for (key, value) in sorted { + keys.push(key.as_slice()); + values.push(value.as_slice()); + } + self.add_known_list(&keys); + self.add_known_list(&values); + } + + // Interprets the client command requested by the hardware wallet, returns the appropriate + // response to transmit back and updates interpreter internal states. + pub fn execute(&mut self, command: Vec) -> Result, InterpreterError> { + if command.is_empty() { + return Err(InterpreterError::EmptyInput); + } + match ClientCommandCode::try_from(command[0]) { + Ok(ClientCommandCode::Yield) => { + self.yielded.push(command[1..].to_vec()); + Ok(Vec::new()) + } + Ok(ClientCommandCode::GetPreimage) => { + get_preimage_command(&mut self.queue, &self.known_preimages, &command[1..]) + } + Ok(ClientCommandCode::GetMerkleLeafProof) => { + get_merkle_leaf_proof(&mut self.queue, &self.trees, &command[1..]) + } + Ok(ClientCommandCode::GetMerkleLeafIndex) => { + get_merkle_leaf_index(&self.trees, &command[1..]) + } + Ok(ClientCommandCode::GetMoreElements) => get_more_elements(&mut self.queue), + Err(()) => Err(InterpreterError::UnknownCommand(command[0])), + } + } + + /// Consumes the interpreter and returns the yielded results. + pub fn yielded(self) -> Vec> { + self.yielded + } +} + +fn get_preimage_command( + queue: &mut Vec>, + known_preimages: &[([u8; 32], Vec)], + request: &[u8], +) -> Result, InterpreterError> { + if request.len() != 33 || request[0] != b'\0' { + return Err(InterpreterError::UnsupportedRequest( + ClientCommandCode::GetPreimage as u8, + )); + }; + + let (_, preimage) = known_preimages + .iter() + .find(|(hash, _)| hash == &request[1..]) + .ok_or(InterpreterError::UnknownHash)?; + + let preimage_len_out = encode::serialize(&VarInt(preimage.len() as u64)); + + // We can send at most 255 - len(preimage_len_out) - 1 bytes in a single message; + //the rest will be stored for GET_MORE_ELEMENTS + let max_payload_size = 255 - preimage_len_out.len() - 1; + + let payload_size = if preimage.len() > max_payload_size { + max_payload_size + } else { + preimage.len() + }; + + if payload_size < preimage.len() { + for byte in &preimage[payload_size..] { + queue.push(vec![*byte]); + } + } + + let mut response = preimage_len_out; + response.extend_from_slice(&(payload_size as u8).to_be_bytes()); + response.extend_from_slice(&preimage[..payload_size]); + Ok(response) +} + +fn get_merkle_leaf_proof( + queue: &mut Vec>, + trees: &[MerkleTree], + request: &[u8], +) -> Result, InterpreterError> { + if !queue.is_empty() { + return Err(InterpreterError::UnexpectedQueue); + } else if request.len() < 34 { + return Err(InterpreterError::UnsupportedRequest( + ClientCommandCode::GetMerkleLeafProof as u8, + )); + }; + + let root = &request[0..32]; + let (tree_size, read): (VarInt, usize) = + encode::deserialize_partial(&request[32..]).map_err(|_| { + InterpreterError::UnsupportedRequest(ClientCommandCode::GetMerkleLeafProof as u8) + })?; + + // deserialize consumes the entire vector. + let leaf_index: VarInt = encode::deserialize(&request[32 + read..]).map_err(|_| { + InterpreterError::UnsupportedRequest(ClientCommandCode::GetMerkleLeafProof as u8) + })?; + + let tree = trees + .iter() + .find(|tree| tree.root_hash() == root) + .ok_or(InterpreterError::UnknownHash)?; + + if leaf_index >= tree_size || tree_size.0 != tree.size() as u64 { + return Err(InterpreterError::InvalidIndexOrSize); + } + + let proof = tree + .get_leaf_proof(leaf_index.0 as usize) + .ok_or(InterpreterError::InvalidIndexOrSize)?; + + let len_proof = proof.len(); + let mut first_part_proof = Vec::new(); + let mut n_response_elements = 0; + for (i, p) in proof.into_iter().enumerate() { + // how many elements we can fit in 255 - 32 - 1 - 1 = 221 bytes ? + // response: 6 array of 32 bytes. + if i < 6 { + first_part_proof.extend(p); + n_response_elements += 1; + } else { + // Add to the queue any proof elements that do not fit the response + queue.push(p); + } + } + + let mut response = tree.get_leaf(leaf_index.0 as usize).unwrap().to_vec(); + response.extend_from_slice(&(len_proof as u8).to_be_bytes()); + response.extend_from_slice(&(n_response_elements as u8).to_be_bytes()); + response.extend_from_slice(&first_part_proof); + Ok(response) +} + +fn get_merkle_leaf_index( + trees: &[MerkleTree], + request: &[u8], +) -> Result, InterpreterError> { + if request.len() < 64 { + return Err(InterpreterError::UnsupportedRequest( + ClientCommandCode::GetMerkleLeafIndex as u8, + )); + } + let root = &request[0..32]; + let hash = &request[32..64]; + + let tree = trees + .iter() + .find(|tree| tree.root_hash() == root) + .ok_or(InterpreterError::UnknownHash)?; + + let leaf_index = tree + .get_leaf_index(hash) + .ok_or(InterpreterError::UnknownHash)?; + + let mut response = 1_u8.to_be_bytes().to_vec(); + response.extend(encode::serialize(&VarInt(leaf_index as u64))); + Ok(response) +} + +fn get_more_elements(queue: &mut Vec>) -> Result, InterpreterError> { + if queue.is_empty() { + return Err(InterpreterError::UnexpectedQueue); + } + + // The queue must contain only element of the same length. + let element_length = queue[0].len(); + if queue.iter().any(|e| e.len() != element_length) { + return Err(InterpreterError::UnexpectedQueue); + } + + let mut response_elements = Vec::new(); + let mut n_added_elements = 0; + for element in queue.iter() { + if response_elements.len() + element_length <= 253 { + response_elements.extend_from_slice(element); + n_added_elements += 1; + } + } + *queue = queue[n_added_elements..].to_vec(); + + let mut response = (n_added_elements as u8).to_be_bytes().to_vec(); + response.extend((element_length as u8).to_be_bytes()); + response.extend(response_elements); + Ok(response) +} + +/// Returns a serialized Merkleized map commitment, encoded as the concatenation of: +/// - the number of key/value pairs, as a Bitcoin-style varint; +/// - the root of the Merkle tree of the keys +/// - the root of the Merkle tree of the values. +pub fn get_merkleized_map_commitment(mapping: &[(Vec, Vec)]) -> Vec { + let mut sorted: Vec<&(Vec, Vec)> = mapping.iter().collect(); + sorted.sort_by(|(k1, _), (k2, _)| k1.as_slice().cmp(k2)); + + let mut keys_hashes: Vec<[u8; 32]> = Vec::with_capacity(sorted.len()); + let mut values_hashes: Vec<[u8; 32]> = Vec::with_capacity(sorted.len()); + for (key, value) in &sorted { + let mut preimage = vec![0x00]; + preimage.extend_from_slice(key); + let mut engine = sha256::Hash::engine(); + engine.input(&preimage); + keys_hashes.push(sha256::Hash::from_engine(engine).to_byte_array()); + + let mut preimage = vec![0x00]; + preimage.extend_from_slice(value); + let mut engine = sha256::Hash::engine(); + engine.input(&preimage); + values_hashes.push(sha256::Hash::from_engine(engine).to_byte_array()); + } + + let mut commitment = encode::serialize(&VarInt(sorted.len() as u64)); + commitment.extend(MerkleTree::new(keys_hashes).root_hash()); + commitment.extend(MerkleTree::new(values_hashes).root_hash()); + commitment +} + +#[derive(Debug)] +pub enum InterpreterError { + EmptyInput, + UnknownCommand(u8), + UnsupportedRequest(u8), + InvalidIndexOrSize, + UnknownHash, + UnknownMerkleRoot, + UnexpectedQueue, +} diff --git a/bitcoin_client_rs/src/lib.rs b/bitcoin_client_rs/src/lib.rs new file mode 100644 index 000000000..dc751c4cd --- /dev/null +++ b/bitcoin_client_rs/src/lib.rs @@ -0,0 +1,15 @@ +mod command; +mod interpreter; +mod merkle; + +pub mod apdu; +pub mod client; +pub mod error; +pub mod psbt; +pub mod wallet; + +#[cfg(feature = "async")] +pub mod async_client; + +pub use client::{BitcoinClient, Transport}; +pub use wallet::{WalletPolicy, WalletPubKey}; diff --git a/bitcoin_client_rs/src/merkle.rs b/bitcoin_client_rs/src/merkle.rs new file mode 100644 index 000000000..a82766d2b --- /dev/null +++ b/bitcoin_client_rs/src/merkle.rs @@ -0,0 +1,223 @@ +use bitcoin::hashes::{sha256, Hash, HashEngine}; + +///! This implementation of Merkle Trees makes usage of a +///! simple and opinionated data structure. +///! The Tree is only created once and does not require +///! multiple manipulation like new leaf insertion at a choosen index. +///! In fact the client uses merkle trees for read only commands: +///! - get_merkle_leaf_proof: provide the proof the hash of the leaf +///! with index i +///! - get_merkle_leaf_index: provide the index of the leaf with hash. + +/// MerkleTree is containing a merkle tree generated from a list of items. +pub struct MerkleTree { + root: Tree, + leaves: Vec<[u8; 32]>, +} + +impl MerkleTree { + pub fn new(leaves: Vec<[u8; 32]>) -> Self { + Self { + root: Tree::new(&leaves, 0, leaves.len()), + leaves, + } + } + + pub fn size(&self) -> usize { + self.leaves.len() + } + + /// Returns the root hash of the Merkle tree. + pub fn root_hash(&self) -> &[u8; 32] { + match &self.root { + Tree::Node { value, .. } => value, + Tree::Leaf(idx) => &self.leaves[*idx], + } + } + + /// Returns the leaf value at index i. + pub fn get_leaf(&self, i: usize) -> Option<&[u8; 32]> { + self.leaves.get(i) + } + + /// Get position of the leaf in the tree. + pub fn get_leaf_index(&self, val: &[u8]) -> Option { + self.leaves.iter().position(|v| v == val) + } + + // Get Merkle proof of a leaf with the given index. + pub fn get_leaf_proof(&self, index: usize) -> Option>> { + if index >= self.leaves.len() { + // Out of bound + None + } else { + Some(self.root.get_proof(&self.leaves, index)) + } + } +} + +/// Tree is either a Node with children trees or a Leaf with only a given value. +enum Tree { + Node { + value: [u8; 32], + left: Box, + right: Box, + height: usize, + }, + // index of the leaf in the leaves array + Leaf(usize), +} + +impl Tree { + fn new(leaves: &[[u8; 32]], start: usize, size: usize) -> Self { + if size == 1 { + return Tree::Leaf(start); + } + + let lchild_size = largest_power_of_2_less_than(size); + let lchild = Tree::new(leaves, start, lchild_size); + let rchild = Tree::new(leaves, start + lchild_size, size - lchild_size); + + let mut input = vec![0x01]; + input.extend_from_slice(lchild.value(leaves)); + input.extend_from_slice(rchild.value(leaves)); + + let mut engine = sha256::Hash::engine(); + engine.input(input.as_slice()); + let value = sha256::Hash::from_engine(engine).to_byte_array(); + Tree::Node { + height: lchild.height() + 1, + left: Box::new(lchild), + right: Box::new(rchild), + value, + } + } + + fn value<'a>(&'a self, leaves: &'a [[u8; 32]]) -> &'a [u8; 32] { + match self { + Self::Node { value, .. } => value, + Self::Leaf(idx) => &leaves[*idx], + } + } + + fn height(&self) -> usize { + match self { + Self::Node { height, .. } => *height, + Self::Leaf(_) => 0, + } + } + + /// get the merkle proof of a leaf with the given index in the leaves array. + fn get_proof(&self, leaves: &[[u8; 32]], index: usize) -> Vec> { + match self { + Self::Leaf(_) => Vec::new(), + Self::Node { left, right, .. } => { + let (mut proof, sibling) = if index < pow2(left.height()) { + (left.get_proof(leaves, index), right) + } else { + (right.get_proof(leaves, index - pow2(left.height())), left) + }; + match **sibling { + Self::Node { value, .. } => proof.push(value.to_vec()), + Self::Leaf(idx) => proof.push(leaves[idx].to_vec()), + } + proof + } + } + } +} + +/// Return floor(log_2(n)) for a positive integer `n`. +fn floor_lg(n: usize) -> usize { + assert!(n > 0); + + let mut r = 0; + let mut t = 1; + while 2 * t <= n { + t *= 2; + r += 1; + } + r +} + +fn pow2(n: usize) -> usize { + let mut p = 1; + for _i in 0..n { + p *= 2 + } + p +} + +/// For a positive integer `n`, returns `True` is `n` is a perfect power of 2, `False` otherwise. +fn is_power_of_2(n: usize) -> bool { + assert!(n >= 1); + n & (n - 1) == 0 +} + +/// For an integer `n` which is at least 2, returns the largest exact power of 2 that is strictly less than `n`. +fn largest_power_of_2_less_than(n: usize) -> usize { + if n == 2 { + return 1; + } + assert!(n > 1); + if is_power_of_2(n) { + n / 2 + } else { + 1 << floor_lg(n) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use bitcoin::hashes::{sha256, Hash, HashEngine}; + + #[test] + fn test_merkle_tree() { + let leaves = [ + [ + 0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, + 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, + 0x78, 0x52, 0xb8, 0x55, + ], + [ + 0xd7, 0xa8, 0xfb, 0xb3, 0x07, 0xd7, 0x80, 0x94, 0x69, 0xca, 0x9a, 0xbc, 0xb0, 0x08, + 0x2e, 0x4f, 0x8d, 0x56, 0x51, 0xe4, 0x6d, 0x3c, 0xdb, 0x76, 0x2d, 0x02, 0xd0, 0xbf, + 0x37, 0xc9, 0xe5, 0x92, + ], + [ + 0xef, 0x53, 0x7f, 0x25, 0xc8, 0x95, 0xbf, 0xa7, 0x82, 0x52, 0x65, 0x29, 0xa9, 0xb6, + 0x3d, 0x97, 0xaa, 0x63, 0x15, 0x64, 0xd5, 0xd7, 0x89, 0xc2, 0xb7, 0x65, 0x44, 0x8c, + 0x86, 0x35, 0xfb, 0x6c, + ], + [ + 0x00, 0x53, 0x7f, 0x25, 0xc8, 0x95, 0xbf, 0xa7, 0x82, 0x52, 0x65, 0x29, 0xa9, 0xb6, + 0x3d, 0x00, 0xaa, 0x63, 0x15, 0x64, 0xd5, 0xd7, 0x89, 0xc2, 0xb7, 0x65, 0x44, 0x8c, + 0x86, 0x35, 0xfb, 0x6c, + ], + ]; + + let tree = MerkleTree::new(leaves[0..3].to_vec()); + + assert_eq!( + tree.get_leaf_proof(0), + Some(vec![leaves[1].to_vec(), leaves[2].to_vec()]) + ); + + assert_eq!( + tree.get_leaf_proof(1), + Some(vec![leaves[0].to_vec(), leaves[2].to_vec()]) + ); + + let mut input = vec![0x01]; + input.extend_from_slice(&leaves[0]); + input.extend_from_slice(&leaves[1]); + + let mut engine = sha256::Hash::engine(); + engine.input(input.as_slice()); + let value = sha256::Hash::from_engine(engine).to_byte_array(); + assert_eq!(tree.get_leaf_proof(2), Some(vec![value.to_vec()])); + + let _tree = MerkleTree::new(leaves.to_vec()); + } +} diff --git a/bitcoin_client_rs/src/psbt.rs b/bitcoin_client_rs/src/psbt.rs new file mode 100644 index 000000000..8708a64e9 --- /dev/null +++ b/bitcoin_client_rs/src/psbt.rs @@ -0,0 +1,863 @@ +/// code is from github.com/rust-bitcoin/rust-bitcoin +/// SPDX-License-Identifier: CC0-1.0 +/// +/// Note: Only psbt V2 is supported by the ledger bitcoin app. +/// rust-bitcoin currently support V0. +use bitcoin::{ + blockdata::transaction::{TxIn, TxOut}, + consensus::encode::{deserialize, serialize, VarInt}, + ecdsa, + hashes::Hash, + key::Error as KeyError, + psbt::{raw, Input, Output, Psbt}, + secp256k1::{self, XOnlyPublicKey}, + taproot, + taproot::TapLeafHash, + PublicKey, +}; + +use serialize::Serialize; + +#[rustfmt::skip] +macro_rules! impl_psbt_get_pair { + ($rv:ident.push($slf:ident.$unkeyed_name:ident, $unkeyed_typeval:ident)) => { + if let Some(ref $unkeyed_name) = $slf.$unkeyed_name { + $rv.push(bitcoin::psbt::raw::Pair { + key: bitcoin::psbt::raw::Key { + type_value: $unkeyed_typeval, + key: vec![], + }, + value: Serialize::serialize($unkeyed_name), + }); + } + }; + ($rv:ident.push_map($slf:ident.$keyed_name:ident, $keyed_typeval:ident)) => { + for (key, val) in &$slf.$keyed_name { + $rv.push(bitcoin::psbt::raw::Pair { + key: bitcoin::psbt::raw::Key { + type_value: $keyed_typeval, + key: Serialize::serialize(key), + }, + value: Serialize::serialize(val), + }); + } + }; +} + +/// V0, Type: Unsigned Transaction PSBT_GLOBAL_UNSIGNED_TX = 0x00 +/// const PSBT_GLOBAL_UNSIGNED_TX: u8 = 0x00; +/// Type: Extended Public Key PSBT_GLOBAL_XPUB = 0x01 +const PSBT_GLOBAL_XPUB: u8 = 0x01; +/// V2 field +const PSBT_GLOBAL_TX_VERSION: u8 = 0x02; +/// V2 field +const PSBT_GLOBAL_FALLBACK_LOCKTIME: u8 = 0x03; +/// V2 field +const PSBT_GLOBAL_INPUT_COUNT: u8 = 0x04; +/// V2 field +const PSBT_GLOBAL_OUTPUT_COUNT: u8 = 0x05; +/// V2 field +/// const PSBT_GLOBAL_TX_MODIFIABLE: u8 = 0x06; +/// Type: Version Number PSBT_GLOBAL_VERSION = 0xFB +const PSBT_GLOBAL_VERSION: u8 = 0xFB; + +pub fn get_v2_global_pairs(psbt: &Psbt) -> Vec { + let mut rv: Vec = Default::default(); + + for (xpub, (fingerprint, derivation)) in &psbt.xpub { + rv.push(raw::Pair { + key: raw::Key { + type_value: PSBT_GLOBAL_XPUB, + key: xpub.encode().to_vec(), + }, + value: { + let mut ret = Vec::with_capacity(4 + derivation.len() * 4); + ret.extend(fingerprint.as_bytes()); + derivation + .into_iter() + .for_each(|n| ret.extend(u32::from(*n).to_le_bytes())); + ret + }, + }); + } + + rv.push(raw::Pair { + key: raw::Key { + type_value: PSBT_GLOBAL_FALLBACK_LOCKTIME, + key: vec![], + }, + value: serialize(&psbt.unsigned_tx.lock_time), + }); + + rv.push(raw::Pair { + key: raw::Key { + type_value: PSBT_GLOBAL_INPUT_COUNT, + key: vec![], + }, + value: serialize(&VarInt(psbt.inputs.len() as u64)), + }); + + rv.push(raw::Pair { + key: raw::Key { + type_value: PSBT_GLOBAL_OUTPUT_COUNT, + key: vec![], + }, + value: serialize(&VarInt(psbt.outputs.len() as u64)), + }); + + rv.push(raw::Pair { + key: raw::Key { + type_value: PSBT_GLOBAL_TX_VERSION, + key: vec![], + }, + value: psbt.unsigned_tx.version.0.to_le_bytes().to_vec(), + }); + + rv.push(raw::Pair { + key: raw::Key { + type_value: PSBT_GLOBAL_VERSION, + key: vec![], + }, + value: 2_u32.to_le_bytes().to_vec(), + }); + + for (key, value) in psbt.proprietary.iter() { + rv.push(raw::Pair { + key: key.to_key(), + value: value.clone(), + }); + } + + for (key, value) in psbt.unknown.iter() { + rv.push(raw::Pair { + key: key.clone(), + value: value.clone(), + }); + } + + rv +} + +/// Type: Non-Witness UTXO PSBT_IN_NON_WITNESS_UTXO = 0x00 +const PSBT_IN_NON_WITNESS_UTXO: u8 = 0x00; +/// Type: Witness UTXO PSBT_IN_WITNESS_UTXO = 0x01 +const PSBT_IN_WITNESS_UTXO: u8 = 0x01; +/// Type: Partial Signature PSBT_IN_PARTIAL_SIG = 0x02 +const PSBT_IN_PARTIAL_SIG: u8 = 0x02; +/// Type: Sighash Type PSBT_IN_SIGHASH_TYPE = 0x03 +const PSBT_IN_SIGHASH_TYPE: u8 = 0x03; +/// Type: Redeem Script PSBT_IN_REDEEM_SCRIPT = 0x04 +const PSBT_IN_REDEEM_SCRIPT: u8 = 0x04; +/// Type: Witness Script PSBT_IN_WITNESS_SCRIPT = 0x05 +const PSBT_IN_WITNESS_SCRIPT: u8 = 0x05; +/// Type: BIP 32 Derivation Path PSBT_IN_BIP32_DERIVATION = 0x06 +const PSBT_IN_BIP32_DERIVATION: u8 = 0x06; +/// Type: Finalized scriptSig PSBT_IN_FINAL_SCRIPTSIG = 0x07 +const PSBT_IN_FINAL_SCRIPTSIG: u8 = 0x07; +/// Type: Finalized scriptWitness PSBT_IN_FINAL_SCRIPTWITNESS = 0x08 +const PSBT_IN_FINAL_SCRIPTWITNESS: u8 = 0x08; +/// V2 +const PSBT_IN_PREVIOUS_TXID: u8 = 0x0e; +/// V2 +const PSBT_IN_SEQUENCE: u8 = 0x10; +/// V2 +/// const PSBT_IN_REQUIRED_TIME_LOCKTIME: u8 = 0x11; +/// V2 +///const PSBT_IN_REQUIRED_HEIGHT_LOCKTIME: u8 = 0x12; +const PSBT_IN_OUTPUT_INDEX: u8 = 0x0f; +/// Type: RIPEMD160 preimage PSBT_IN_RIPEMD160 = 0x0a +const PSBT_IN_RIPEMD160: u8 = 0x0a; +/// Type: SHA256 preimage PSBT_IN_SHA256 = 0x0b +const PSBT_IN_SHA256: u8 = 0x0b; +/// Type: HASH160 preimage PSBT_IN_HASH160 = 0x0c +const PSBT_IN_HASH160: u8 = 0x0c; +/// Type: HASH256 preimage PSBT_IN_HASH256 = 0x0d +const PSBT_IN_HASH256: u8 = 0x0d; +/// Type: Schnorr Signature in Key Spend PSBT_IN_TAP_KEY_SIG = 0x13 +const PSBT_IN_TAP_KEY_SIG: u8 = 0x13; +/// Type: Schnorr Signature in Script Spend PSBT_IN_TAP_SCRIPT_SIG = 0x14 +const PSBT_IN_TAP_SCRIPT_SIG: u8 = 0x14; +/// Type: Taproot Leaf Script PSBT_IN_TAP_LEAF_SCRIPT = 0x14 +const PSBT_IN_TAP_LEAF_SCRIPT: u8 = 0x15; +/// Type: Taproot Key BIP 32 Derivation Path PSBT_IN_TAP_BIP32_DERIVATION = 0x16 +const PSBT_IN_TAP_BIP32_DERIVATION: u8 = 0x16; +/// Type: Taproot Internal Key PSBT_IN_TAP_INTERNAL_KEY = 0x17 +const PSBT_IN_TAP_INTERNAL_KEY: u8 = 0x17; +/// Type: Taproot Merkle Root PSBT_IN_TAP_MERKLE_ROOT = 0x18 +const PSBT_IN_TAP_MERKLE_ROOT: u8 = 0x18; + +pub fn get_v2_input_pairs(input: &Input, txin: &TxIn) -> Vec { + let mut rv: Vec = Default::default(); + + impl_psbt_get_pair! { + rv.push(input.non_witness_utxo, PSBT_IN_NON_WITNESS_UTXO) + } + + impl_psbt_get_pair! { + rv.push(input.witness_utxo, PSBT_IN_WITNESS_UTXO) + } + + impl_psbt_get_pair! { + rv.push_map(input.partial_sigs, PSBT_IN_PARTIAL_SIG) + } + + impl_psbt_get_pair! { + rv.push(input.sighash_type, PSBT_IN_SIGHASH_TYPE) + } + + impl_psbt_get_pair! { + rv.push(input.redeem_script, PSBT_IN_REDEEM_SCRIPT) + } + + impl_psbt_get_pair! { + rv.push(input.witness_script, PSBT_IN_WITNESS_SCRIPT) + } + + impl_psbt_get_pair! { + rv.push_map(input.bip32_derivation, PSBT_IN_BIP32_DERIVATION) + } + + impl_psbt_get_pair! { + rv.push(input.final_script_sig, PSBT_IN_FINAL_SCRIPTSIG) + } + + rv.push(raw::Pair { + key: raw::Key { + type_value: PSBT_IN_PREVIOUS_TXID, + key: vec![], + }, + value: serialize(&txin.previous_output.txid), + }); + + rv.push(raw::Pair { + key: raw::Key { + type_value: PSBT_IN_OUTPUT_INDEX, + key: vec![], + }, + value: serialize(&txin.previous_output.vout), + }); + + rv.push(raw::Pair { + key: raw::Key { + type_value: PSBT_IN_SEQUENCE, + key: vec![], + }, + value: serialize(&txin.sequence), + }); + + impl_psbt_get_pair! { + rv.push(input.final_script_witness, PSBT_IN_FINAL_SCRIPTWITNESS) + } + + impl_psbt_get_pair! { + rv.push_map(input.ripemd160_preimages, PSBT_IN_RIPEMD160) + } + + impl_psbt_get_pair! { + rv.push_map(input.sha256_preimages, PSBT_IN_SHA256) + } + + impl_psbt_get_pair! { + rv.push_map(input.hash160_preimages, PSBT_IN_HASH160) + } + + impl_psbt_get_pair! { + rv.push_map(input.hash256_preimages, PSBT_IN_HASH256) + } + + impl_psbt_get_pair! { + rv.push(input.tap_key_sig, PSBT_IN_TAP_KEY_SIG) + } + + impl_psbt_get_pair! { + rv.push_map(input.tap_script_sigs, PSBT_IN_TAP_SCRIPT_SIG) + } + + impl_psbt_get_pair! { + rv.push_map(input.tap_scripts, PSBT_IN_TAP_LEAF_SCRIPT) + } + + impl_psbt_get_pair! { + rv.push_map(input.tap_key_origins, PSBT_IN_TAP_BIP32_DERIVATION) + } + + impl_psbt_get_pair! { + rv.push(input.tap_internal_key, PSBT_IN_TAP_INTERNAL_KEY) + } + + impl_psbt_get_pair! { + rv.push(input.tap_merkle_root, PSBT_IN_TAP_MERKLE_ROOT) + } + + for (key, value) in input.proprietary.iter() { + rv.push(raw::Pair { + key: key.to_key(), + value: value.clone(), + }); + } + + for (key, value) in input.unknown.iter() { + rv.push(raw::Pair { + key: key.clone(), + value: value.clone(), + }); + } + + rv +} + +/// Type: Redeem Script PSBT_OUT_REDEEM_SCRIPT = 0x00 +const PSBT_OUT_REDEEM_SCRIPT: u8 = 0x00; +/// Type: Witness Script PSBT_OUT_WITNESS_SCRIPT = 0x01 +const PSBT_OUT_WITNESS_SCRIPT: u8 = 0x01; +/// Type: BIP 32 Derivation Path PSBT_OUT_BIP32_DERIVATION = 0x02 +const PSBT_OUT_BIP32_DERIVATION: u8 = 0x02; +/// V2 +const PSBT_OUT_AMOUNT: u8 = 0x03; +/// V2 +const PSBT_OUT_SCRIPT: u8 = 0x04; +/// Type: Taproot Internal Key PSBT_OUT_TAP_INTERNAL_KEY = 0x05 +const PSBT_OUT_TAP_INTERNAL_KEY: u8 = 0x05; +/// Type: Taproot Tree PSBT_OUT_TAP_TREE = 0x06 +const PSBT_OUT_TAP_TREE: u8 = 0x06; +/// Type: Taproot Key BIP 32 Derivation Path PSBT_OUT_TAP_BIP32_DERIVATION = 0x07 +const PSBT_OUT_TAP_BIP32_DERIVATION: u8 = 0x07; + +pub fn get_v2_output_pairs(output: &Output, txout: &TxOut) -> Vec { + let mut rv: Vec = Default::default(); + + impl_psbt_get_pair! { + rv.push(output.redeem_script, PSBT_OUT_REDEEM_SCRIPT) + } + + impl_psbt_get_pair! { + rv.push(output.witness_script, PSBT_OUT_WITNESS_SCRIPT) + } + + impl_psbt_get_pair! { + rv.push_map(output.bip32_derivation, PSBT_OUT_BIP32_DERIVATION) + } + + rv.push(raw::Pair { + key: raw::Key { + type_value: PSBT_OUT_AMOUNT, + key: vec![], + }, + value: txout.value.to_sat().to_le_bytes().to_vec(), + }); + + rv.push(raw::Pair { + key: raw::Key { + type_value: PSBT_OUT_SCRIPT, + key: vec![], + }, + value: txout.script_pubkey.as_bytes().to_vec(), + }); + + impl_psbt_get_pair! { + rv.push(output.tap_internal_key, PSBT_OUT_TAP_INTERNAL_KEY) + } + + impl_psbt_get_pair! { + rv.push(output.tap_tree, PSBT_OUT_TAP_TREE) + } + + impl_psbt_get_pair! { + rv.push_map(output.tap_key_origins, PSBT_OUT_TAP_BIP32_DERIVATION) + } + + for (key, value) in output.proprietary.iter() { + rv.push(raw::Pair { + key: key.to_key(), + value: value.clone(), + }); + } + + for (key, value) in output.unknown.iter() { + rv.push(raw::Pair { + key: key.clone(), + value: value.clone(), + }); + } + + rv +} + +pub fn deserialize_pair(pair: raw::Pair) -> (Vec, Vec) { + ( + deserialize(&Serialize::serialize(&pair.key)).unwrap(), + pair.value, + ) +} + +pub enum PartialSignature { + /// signature stored in pbst.partial_sigs + Sig(PublicKey, ecdsa::Signature), + /// signature stored in pbst.tap_script_sigs + TapScriptSig(XOnlyPublicKey, Option, taproot::Signature), +} + +impl PartialSignature { + pub fn from_slice(slice: &[u8]) -> Result { + let key_augment_byte = slice + .first() + .ok_or(PartialSignatureError::BadKeyAugmentLength)?; + let key_augment_len = u8::from_le_bytes([*key_augment_byte]) as usize; + + if key_augment_len >= slice.len() { + Err(PartialSignatureError::BadKeyAugmentLength) + } else if key_augment_len == 64 { + let key = XOnlyPublicKey::from_slice(&slice[1..33]) + .map_err(PartialSignatureError::XOnlyPubKey)?; + let tap_leaf_hash = + TapLeafHash::from_slice(&slice[33..65]).map_err(PartialSignatureError::TapLeaf)?; + let sig = taproot::Signature::from_slice(&slice[key_augment_len + 1..]) + .map_err(PartialSignatureError::TaprootSig)?; + Ok(Self::TapScriptSig(key, Some(tap_leaf_hash), sig)) + } else if key_augment_len == 32 { + let key = XOnlyPublicKey::from_slice(&slice[1..33]) + .map_err(PartialSignatureError::XOnlyPubKey)?; + let sig = taproot::Signature::from_slice(&slice[key_augment_len + 1..]) + .map_err(PartialSignatureError::TaprootSig)?; + Ok(Self::TapScriptSig(key, None, sig)) + } else { + let key = PublicKey::from_slice(&slice[1..key_augment_len + 1]) + .map_err(PartialSignatureError::PubKey)?; + let sig = ecdsa::Signature::from_slice(&slice[key_augment_len + 1..]) + .map_err(PartialSignatureError::EcdsaSig)?; + Ok(Self::Sig(key, sig)) + } + } +} + +pub enum PartialSignatureError { + BadKeyAugmentLength, + XOnlyPubKey(secp256k1::Error), + PubKey(KeyError), + EcdsaSig(ecdsa::Error), + TaprootSig(taproot::SigFromSliceError), + TapLeaf(bitcoin::hashes::FromSliceError), +} + +mod serialize { + use core::convert::{TryFrom, TryInto}; + + use bitcoin::{ + bip32::{ChildNumber, Fingerprint, KeySource}, + blockdata::{ + script::ScriptBuf, + transaction::{Transaction, TxOut}, + witness::Witness, + }, + consensus::encode::{self, deserialize_partial, serialize, Decodable, Encodable}, + ecdsa, + hashes::{hash160, ripemd160, sha256, sha256d, Hash}, + key::PublicKey, + psbt::{Error, PsbtSighashType}, + secp256k1::{self, XOnlyPublicKey}, + taproot, + taproot::{ControlBlock, LeafVersion, TapLeafHash, TapNodeHash, TapTree, TaprootBuilder}, + VarInt, + }; + + macro_rules! impl_psbt_de_serialize { + ($thing:ty) => { + impl_psbt_serialize!($thing); + impl_psbt_deserialize!($thing); + }; + } + + macro_rules! impl_psbt_deserialize { + ($thing:ty) => { + impl Deserialize for $thing { + fn deserialize(bytes: &[u8]) -> Result { + bitcoin::consensus::deserialize(&bytes[..]) + .map_err(|e| bitcoin::psbt::Error::from(e)) + } + } + }; + } + + macro_rules! impl_psbt_serialize { + ($thing:ty) => { + impl Serialize for $thing { + fn serialize(&self) -> Vec { + bitcoin::consensus::serialize(self) + } + } + }; + } + + // macros for serde of hashes + macro_rules! impl_psbt_hash_de_serialize { + ($hash_type:ty) => { + impl_psbt_hash_serialize!($hash_type); + impl_psbt_hash_deserialize!($hash_type); + }; + } + + macro_rules! impl_psbt_hash_deserialize { + ($hash_type:ty) => { + impl $crate::psbt::serialize::Deserialize for $hash_type { + fn deserialize(bytes: &[u8]) -> Result { + <$hash_type>::from_slice(&bytes[..]).map_err(|e| bitcoin::psbt::Error::from(e)) + } + } + }; + } + + macro_rules! impl_psbt_hash_serialize { + ($hash_type:ty) => { + impl $crate::psbt::serialize::Serialize for $hash_type { + fn serialize(&self) -> Vec { + self.as_byte_array().to_vec() + } + } + }; + } + + /// A trait for serializing a value as raw data for insertion into PSBT + /// key-value maps. + pub(crate) trait Serialize { + /// Serialize a value as raw data. + fn serialize(&self) -> Vec; + } + + /// A trait for deserializing a value from raw data in PSBT key-value maps. + pub(crate) trait Deserialize: Sized { + /// Deserialize a value from raw data. + fn deserialize(bytes: &[u8]) -> Result; + } + + impl_psbt_de_serialize!(Transaction); + impl_psbt_de_serialize!(TxOut); + impl_psbt_de_serialize!(Witness); + impl_psbt_hash_de_serialize!(ripemd160::Hash); + impl_psbt_hash_de_serialize!(sha256::Hash); + impl_psbt_hash_de_serialize!(TapLeafHash); + impl_psbt_hash_de_serialize!(TapNodeHash); + impl_psbt_hash_de_serialize!(hash160::Hash); + impl_psbt_hash_de_serialize!(sha256d::Hash); + + // taproot + impl_psbt_de_serialize!(Vec); + + impl Serialize for bitcoin::psbt::raw::Key { + fn serialize(&self) -> Vec { + let mut buf = Vec::new(); + VarInt((self.key.len() + 1) as u64) + .consensus_encode(&mut buf) + .expect("in-memory writers don't error"); + + self.type_value + .consensus_encode(&mut buf) + .expect("in-memory writers don't error"); + + for key in &self.key { + key.consensus_encode(&mut buf) + .expect("in-memory writers don't error"); + } + + buf + } + } + + impl Serialize for ScriptBuf { + fn serialize(&self) -> Vec { + self.to_bytes() + } + } + + impl Deserialize for ScriptBuf { + fn deserialize(bytes: &[u8]) -> Result { + Ok(Self::from(bytes.to_vec())) + } + } + + impl Serialize for PublicKey { + fn serialize(&self) -> Vec { + let mut buf = Vec::new(); + self.write_into(&mut buf).expect("vecs don't error"); + buf + } + } + + impl Deserialize for PublicKey { + fn deserialize(bytes: &[u8]) -> Result { + PublicKey::from_slice(bytes).map_err(Error::InvalidPublicKey) + } + } + + impl Serialize for secp256k1::PublicKey { + fn serialize(&self) -> Vec { + self.serialize().to_vec() + } + } + + impl Deserialize for secp256k1::PublicKey { + fn deserialize(bytes: &[u8]) -> Result { + secp256k1::PublicKey::from_slice(bytes).map_err(Error::InvalidSecp256k1PublicKey) + } + } + + impl Serialize for ecdsa::Signature { + fn serialize(&self) -> Vec { + self.to_vec() + } + } + + impl Deserialize for ecdsa::Signature { + fn deserialize(bytes: &[u8]) -> Result { + // NB: Since BIP-174 says "the signature as would be pushed to the stack from + // a scriptSig or witness" we should ideally use a consensus deserialization and do + // not error on a non-standard values. However, + // + // 1) the current implementation of from_u32_consensus(`flag`) does not preserve + // the sighash byte `flag` mapping all unknown values to EcdsaSighashType::All or + // EcdsaSighashType::AllPlusAnyOneCanPay. Therefore, break the invariant + // EcdsaSig::from_slice(&sl[..]).to_vec = sl. + // + // 2) This would cause to have invalid signatures because the sighash message + // also has a field sighash_u32 (See BIP141). For example, when signing with non-standard + // 0x05, the sighash message would have the last field as 0x05u32 while, the verification + // would use check the signature assuming sighash_u32 as `0x01`. + ecdsa::Signature::from_slice(bytes).map_err(|e| match e { + ecdsa::Error::EmptySignature => Error::InvalidEcdsaSignature(e), + ecdsa::Error::SighashType(flag) => Error::NonStandardSighashType(flag.0), + ecdsa::Error::Secp256k1(..) => Error::InvalidEcdsaSignature(e), + ecdsa::Error::Hex(..) => { + unreachable!("Decoding from slice, not hex") + } + _ => Error::InvalidEcdsaSignature(e), + }) + } + } + + impl Serialize for KeySource { + fn serialize(&self) -> Vec { + let mut rv: Vec = Vec::with_capacity(key_source_len(self)); + + rv.append(&mut self.0.to_bytes().to_vec()); + + for cnum in self.1.into_iter() { + rv.append(&mut serialize(&u32::from(*cnum))) + } + + rv + } + } + + impl Deserialize for KeySource { + fn deserialize(bytes: &[u8]) -> Result { + if bytes.len() < 4 { + return Err(Error::ConsensusEncoding( + bitcoin::consensus::encode::Error::ParseFailed( + "Not enough bytes for key source", + ), + )); + } + + let fprint: Fingerprint = bytes[0..4].try_into().expect("4 is the fingerprint length"); + let mut dpath: Vec = Default::default(); + + let mut d = &bytes[4..]; + while !d.is_empty() { + match u32::consensus_decode(&mut d) { + Ok(index) => dpath.push(index.into()), + Err(e) => return Err(e)?, + } + } + + Ok((fprint, dpath.into())) + } + } + + // partial sigs + impl Serialize for Vec { + fn serialize(&self) -> Vec { + self.clone() + } + } + + impl Deserialize for Vec { + fn deserialize(bytes: &[u8]) -> Result { + Ok(bytes.to_vec()) + } + } + + impl Serialize for PsbtSighashType { + fn serialize(&self) -> Vec { + serialize(&self.to_u32()) + } + } + + impl Deserialize for PsbtSighashType { + fn deserialize(bytes: &[u8]) -> Result { + let raw: u32 = encode::deserialize(bytes)?; + Ok(PsbtSighashType::from_u32(raw)) + } + } + + // Taproot related ser/deser + impl Serialize for XOnlyPublicKey { + fn serialize(&self) -> Vec { + XOnlyPublicKey::serialize(self).to_vec() + } + } + + impl Deserialize for XOnlyPublicKey { + fn deserialize(bytes: &[u8]) -> Result { + XOnlyPublicKey::from_slice(bytes).map_err(|_| Error::InvalidXOnlyPublicKey) + } + } + + impl Serialize for taproot::Signature { + fn serialize(&self) -> Vec { + self.to_vec() + } + } + + impl Deserialize for taproot::Signature { + fn deserialize(bytes: &[u8]) -> Result { + taproot::Signature::from_slice(bytes).map_err(Error::InvalidTaprootSignature) + } + } + + impl Serialize for (XOnlyPublicKey, TapLeafHash) { + fn serialize(&self) -> Vec { + let ser_pk = self.0.serialize(); + let mut buf = Vec::with_capacity(ser_pk.len() + self.1.as_byte_array().len()); + buf.extend(ser_pk); + buf.extend(self.1.as_byte_array()); + buf + } + } + + impl Deserialize for (XOnlyPublicKey, TapLeafHash) { + fn deserialize(bytes: &[u8]) -> Result { + if bytes.len() < 32 { + return Err(Error::ConsensusEncoding( + bitcoin::consensus::encode::Error::ParseFailed( + "Not enough bytes for public key and tapleaf hash", + ), + )); + } + let a: XOnlyPublicKey = Deserialize::deserialize(&bytes[..32])?; + let b: TapLeafHash = Deserialize::deserialize(&bytes[32..])?; + Ok((a, b)) + } + } + + impl Serialize for ControlBlock { + fn serialize(&self) -> Vec { + ControlBlock::serialize(self) + } + } + + impl Deserialize for ControlBlock { + fn deserialize(bytes: &[u8]) -> Result { + Self::decode(bytes).map_err(|_| Error::InvalidControlBlock) + } + } + + // Versioned ScriptBuf + impl Serialize for (ScriptBuf, LeafVersion) { + fn serialize(&self) -> Vec { + let mut buf = Vec::with_capacity(self.0.len() + 1); + buf.extend(self.0.as_bytes()); + buf.push(self.1.to_consensus()); + buf + } + } + + impl Deserialize for (ScriptBuf, LeafVersion) { + fn deserialize(bytes: &[u8]) -> Result { + if bytes.is_empty() { + return Err(Error::ConsensusEncoding( + bitcoin::consensus::encode::Error::ParseFailed( + "Not enough bytes for script buf and leaf version", + ), + )); + } + // The last byte is LeafVersion. + let script = ScriptBuf::deserialize(&bytes[..bytes.len() - 1])?; + let leaf_ver = LeafVersion::from_consensus(bytes[bytes.len() - 1]) + .map_err(|_| Error::InvalidLeafVersion)?; + Ok((script, leaf_ver)) + } + } + + impl Serialize for (Vec, KeySource) { + fn serialize(&self) -> Vec { + let mut buf = Vec::with_capacity(32 * self.0.len() + key_source_len(&self.1)); + self.0 + .consensus_encode(&mut buf) + .expect("Vecs don't error allocation"); + // TODO: Add support for writing into a writer for key-source + buf.extend(self.1.serialize()); + buf + } + } + + impl Deserialize for (Vec, KeySource) { + fn deserialize(bytes: &[u8]) -> Result { + let (leafhash_vec, consumed) = deserialize_partial::>(bytes)?; + let key_source = KeySource::deserialize(&bytes[consumed..])?; + Ok((leafhash_vec, key_source)) + } + } + + impl Serialize for TapTree { + fn serialize(&self) -> Vec { + let capacity = self + .script_leaves() + .map(|l| { + l.script().len() + VarInt(l.script().len() as u64).size() // script version + + 1 // merkle branch + + 1 // leaf version + }) + .sum::(); + let mut buf = Vec::with_capacity(capacity); + for leaf_info in self.script_leaves() { + // # Cast Safety: + // + // TaprootMerkleBranch can only have len atmost 128(TAPROOT_CONTROL_MAX_NODE_COUNT). + // safe to cast from usize to u8 + buf.push(leaf_info.merkle_branch().len() as u8); + buf.push(leaf_info.version().to_consensus()); + leaf_info + .script() + .consensus_encode(&mut buf) + .expect("Vecs dont err"); + } + buf + } + } + + impl Deserialize for TapTree { + fn deserialize(bytes: &[u8]) -> Result { + let mut builder = TaprootBuilder::new(); + let mut bytes_iter = bytes.iter(); + while let Some(depth) = bytes_iter.next() { + let version = bytes_iter + .next() + .ok_or(Error::Taproot("Invalid Taproot Builder"))?; + let (script, consumed) = deserialize_partial::(bytes_iter.as_slice())?; + if consumed > 0 { + bytes_iter.nth(consumed - 1); + } + let leaf_version = + LeafVersion::from_consensus(*version).map_err(|_| Error::InvalidLeafVersion)?; + builder = builder + .add_leaf_with_ver(*depth, script, leaf_version) + .map_err(|_| Error::Taproot("Tree not in DFS order"))?; + } + TapTree::try_from(builder).map_err(Error::TapTree) + } + } + + // Helper function to compute key source len + fn key_source_len(key_source: &KeySource) -> usize { + 4 + 4 * (key_source.1).as_ref().len() + } +} diff --git a/bitcoin_client_rs/src/wallet.rs b/bitcoin_client_rs/src/wallet.rs new file mode 100644 index 000000000..d7994b890 --- /dev/null +++ b/bitcoin_client_rs/src/wallet.rs @@ -0,0 +1,392 @@ +use core::convert::From; +use core::iter::IntoIterator; +use core::str::FromStr; + +use bitcoin::{ + bip32::{DerivationPath, Error, Fingerprint, KeySource, Xpub}, + consensus::encode::{self, VarInt}, + hashes::{sha256, Hash, HashEngine}, +}; + +use crate::merkle::MerkleTree; + +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +pub enum Version { + V1 = 1, + V2 = 2, +} + +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +pub enum AddressType { + /// Legacy address type. P2PKH for single sig, P2SH for scripts. + Legacy, + /// Native segwit v0 address type. P2WPKH for single sig, P2WPSH for scripts. + NativeSegwit, + /// Nested segwit v0 address type. P2SH-P2WPKH for single sig, P2SH-P2WPSH for scripts. + NestedSegwit, + /// Segwit v1 Taproot address type. P2TR always. + Taproot, +} + +/// Represents a wallet stored with a wallet policy. +pub struct WalletPolicy { + /// wallet name (ASCII string, max 64 bytes) + pub name: String, + /// wallet version + pub version: Version, + /// descriptor with keys aliased by '@i', + /// i the index of the key in the keys array. + pub descriptor_template: String, + /// Keys are the extended pubkeys used in the descriptor. + pub keys: Vec, + /// Threshold of the multisig policy, + /// None if the policy is not a multisig. + pub threshold: Option, +} + +impl WalletPolicy { + pub fn new( + name: String, + version: Version, + descriptor_template: String, + keys: impl IntoIterator>, + ) -> Self { + Self { + name, + version, + descriptor_template, + keys: keys.into_iter().map(|k| k.into()).collect(), + threshold: None, + } + } + + pub fn new_multisig>( + name: String, + version: Version, + address_type: AddressType, + threshold: usize, + keys: impl IntoIterator, + sorted: bool, + ) -> Result { + let keys: Vec = keys.into_iter().map(|k| k.into()).collect(); + if threshold < 1 || threshold > keys.len() { + return Err(WalletError::InvalidThreshold); + } + + let key_placeholder_suffix = if version == Version::V2 { "/**" } else { "" }; + let multisig_op = if sorted { "sortedmulti" } else { "multi" }; + let keys_str = keys + .iter() + .enumerate() + .map(|(i, _)| format!("@{}{}", i, key_placeholder_suffix)) + .collect::>() + .join(","); + + let descriptor_template = match address_type { + AddressType::Legacy => format!("sh({}({},{}))", multisig_op, threshold, keys_str), + AddressType::NativeSegwit => { + format!("wsh({}({},{}))", multisig_op, threshold, keys_str) + } + AddressType::NestedSegwit => { + format!("sh(wsh({}({},{})))", multisig_op, threshold, keys_str) + } + _ => return Err(WalletError::UnsupportedAddressType), + }; + + Ok(Self { + name, + version, + descriptor_template, + keys, + threshold: Some(threshold), + }) + } + + pub fn serialize(&self) -> Vec { + let mut res: Vec = (self.version as u8).to_be_bytes().to_vec(); + res.extend_from_slice(&(self.name.len() as u8).to_be_bytes()); + res.extend_from_slice(self.name.as_bytes()); + res.extend(encode::serialize(&VarInt( + self.descriptor_template.as_bytes().len() as u64, + ))); + + if self.version == Version::V2 { + let mut engine = sha256::Hash::engine(); + engine.input(self.descriptor_template.as_bytes()); + let hash = sha256::Hash::from_engine(engine).to_byte_array(); + res.extend_from_slice(&hash); + } else { + res.extend_from_slice(self.descriptor_template.as_bytes()); + } + + res.extend(encode::serialize(&VarInt(self.keys.len() as u64))); + + res.extend_from_slice( + MerkleTree::new( + self.keys + .iter() + .map(|key| { + let mut preimage = vec![0x00]; + preimage.extend_from_slice(key.to_string().as_bytes()); + let mut engine = sha256::Hash::engine(); + engine.input(&preimage); + sha256::Hash::from_engine(engine).to_byte_array() + }) + .collect(), + ) + .root_hash(), + ); + + res + } + + pub fn get_descriptor(&self, change: bool) -> Result { + let mut desc = self.descriptor_template.clone(); + + for (i, key) in self.keys.iter().enumerate().rev() { + desc = desc.replace(&format!("@{}", i), &key.to_string()); + } + + desc = desc.replace("/**", &format!("/{}/{}", if change { 1 } else { 0 }, "*")); + + // For every "/" expression, replace with M if not change, or with N if change + while let Some(start) = desc.find("/<") { + if let Some(end) = desc.find(">") { + let nums: Vec<&str> = desc[start + 2..end].split(";").collect(); + if nums.len() == 2 { + let replacement = if change { nums[1] } else { nums[0] }; + desc = format!("{}{}{}", &desc[..start + 1], replacement, &desc[end + 1..]); + } else { + return Err(WalletError::InvalidPolicy); + } + } + } + + Ok(desc) + } + + pub fn id(&self) -> [u8; 32] { + let mut engine = sha256::Hash::engine(); + engine.input(&self.serialize()); + sha256::Hash::from_engine(engine).to_byte_array() + } +} + +#[derive(Debug)] +pub enum WalletError { + InvalidThreshold, + UnsupportedAddressType, + InvalidPolicy, +} + +#[derive(PartialEq, Eq)] +pub struct WalletPubKey { + pub inner: Xpub, + pub source: Option, + + /// Used by Version V1 + /// either /** or //* + pub multipath: Option, +} + +impl From for WalletPubKey { + fn from(inner: Xpub) -> Self { + Self { + inner, + source: None, + multipath: None, + } + } +} + +impl From<(KeySource, Xpub)> for WalletPubKey { + fn from(source_xpub: (KeySource, Xpub)) -> Self { + Self { + inner: source_xpub.1, + source: Some(source_xpub.0), + multipath: None, + } + } +} + +impl From<(KeySource, Xpub, String)> for WalletPubKey { + fn from(source_xpub: (KeySource, Xpub, String)) -> Self { + Self { + inner: source_xpub.1, + source: Some(source_xpub.0), + multipath: Some(source_xpub.2), + } + } +} + +impl FromStr for WalletPubKey { + type Err = Error; + + fn from_str(s: &str) -> Result { + if let Ok(key) = Xpub::from_str(s) { + Ok(WalletPubKey { + inner: key, + source: None, + multipath: None, + }) + } else { + let (keysource_str, xpub_str) = s + .strip_prefix('[') + .and_then(|s| s.rsplit_once(']')) + .ok_or(Error::InvalidDerivationPathFormat)?; + let (f_str, path_str) = keysource_str.split_once('/').unwrap_or((keysource_str, "")); + let fingerprint = + Fingerprint::from_str(f_str).map_err(|_| Error::InvalidDerivationPathFormat)?; + let derivation_path = if path_str.is_empty() { + DerivationPath::master() + } else { + DerivationPath::from_str(&format!("m/{}", path_str))? + }; + let (xpub_str, multipath) = if let Some((xpub, multipath)) = xpub_str.rsplit_once('/') { + (xpub, Some(format!("/{}", multipath))) + } else { + (xpub_str, None) + }; + Ok(WalletPubKey { + inner: Xpub::from_str(xpub_str)?, + source: Some((fingerprint, derivation_path)), + multipath, + }) + } + } +} + +impl core::fmt::Display for WalletPubKey { + fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { + if self.source.is_none() { + write!(f, "{}", self.inner) + } else { + write!( + f, + "[{}{}]{}{}", + self.source.as_ref().unwrap().0, + self.source + .as_ref() + .unwrap() + .1 + .to_string() + .strip_prefix('m') + .unwrap_or(""), + self.inner, + self.multipath.as_ref().unwrap_or(&"".to_string()) + ) + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use bitcoin::hashes::hex::FromHex; + use core::str::FromStr; + + const MASTER_KEY_EXAMPLE: &str = "[5c9e228d]tpubDEGquuorgFNb8bjh5kNZQMPtABJzoWwNm78FUmeoPkfRtoPF7JLrtoZeT3J3ybq1HmC3Rn1Q8wFQ8J5usanzups5rj7PJoQLNyvq8QbJruW/**"; + const KEY_EXAMPLE: &str = "[5c9e228d/48'/1'/0'/0']tpubDEGquuorgFNb8bjh5kNZQMPtABJzoWwNm78FUmeoPkfRtoPF7JLrtoZeT3J3ybq1HmC3Rn1Q8wFQ8J5usanzups5rj7PJoQLNyvq8QbJruW/**"; + + #[test] + fn test_master_walletpubkey_fromstr() { + let key = WalletPubKey::from_str(MASTER_KEY_EXAMPLE).unwrap(); + assert_eq!( + key.source.as_ref().unwrap().0, + Fingerprint::from_str("5c9e228d").unwrap() + ); + assert_eq!(key.source.as_ref().unwrap().1, DerivationPath::master()); + assert_eq!(key.inner, Xpub::from_str("tpubDEGquuorgFNb8bjh5kNZQMPtABJzoWwNm78FUmeoPkfRtoPF7JLrtoZeT3J3ybq1HmC3Rn1Q8wFQ8J5usanzups5rj7PJoQLNyvq8QbJruW").unwrap()); + assert_eq!(key.multipath, Some("/**".to_string())); + } + + #[test] + fn test_walletpubkey_fromstr() { + let key = WalletPubKey::from_str(KEY_EXAMPLE).unwrap(); + assert_eq!( + key.source.as_ref().unwrap().0, + Fingerprint::from_str("5c9e228d").unwrap() + ); + assert_eq!( + key.source.as_ref().unwrap().1, + DerivationPath::from_str("m/48'/1'/0'/0'").unwrap() + ); + assert_eq!(key.inner, Xpub::from_str("tpubDEGquuorgFNb8bjh5kNZQMPtABJzoWwNm78FUmeoPkfRtoPF7JLrtoZeT3J3ybq1HmC3Rn1Q8wFQ8J5usanzups5rj7PJoQLNyvq8QbJruW").unwrap()); + assert_eq!(key.multipath, Some("/**".to_string())); + } + + #[test] + fn test_walletpubkey_tostr() { + let key = WalletPubKey::from_str(KEY_EXAMPLE).unwrap(); + assert_eq!(key.to_string(), format!("{}", KEY_EXAMPLE)); + } + + #[test] + fn test_wallet_serialize_v2() { + let wallet = WalletPolicy::new( + "Cold storage".to_string(), + Version::V2, + "wsh(sortedmulti(2,@0/**,@1/**))".to_string(), + vec![ + WalletPubKey::from_str("[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF").unwrap(), + WalletPubKey::from_str("[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK").unwrap(), + ], + ); + assert_eq!(wallet.serialize().as_slice(), Vec::::from_hex("020c436f6c642073746f726167651fb56c3d5542fa09b3956834a9ff6a1df5c36a38e5b02c63c54b41a9a04403b82602516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb").unwrap()); + } + + #[test] + fn test_get_descriptor() { + let wallet = WalletPolicy::new( + "Cold storage".to_string(), + Version::V2, + "wsh(sortedmulti(2,@0/**,@1/<12;3>/*))".to_string(), + vec![ + WalletPubKey::from_str("[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF").unwrap(), + WalletPubKey::from_str("[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK").unwrap(), + ], + ); + + assert_eq!(wallet.get_descriptor(false).unwrap(), "wsh(sortedmulti(2,[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF/0/*,[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK/12/*))"); + assert_eq!(wallet.get_descriptor(true).unwrap(), "wsh(sortedmulti(2,[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF/1/*,[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK/3/*))"); + + let wallet = WalletPolicy::new( + "Cold storage".to_string(), + Version::V2, + "wsh(or_d(pk(@0/<0;1>/*),and_v(v:pkh(@1/<0;1>/*),older(65535))))".to_string(), + vec![ + WalletPubKey::from_str("[ffd63c8d/48'/1'/0'/2']tpubDExA3EC3iAsPxPhFn4j6gMiVup6V2eH3qKyk69RcTc9TTNRfFYVPad8bJD5FCHVQxyBT4izKsvr7Btd2R4xmQ1hZkvsqGBaeE82J71uTK4N").unwrap(), + WalletPubKey::from_str("[053f423f/48'/1'/0'/2']tpubDEGZMZiz8Vnp7N7cTM9Cty897GJpQ8jqmw2yyDKMPfbMzqPtRbo8wViKtkx6zfrzY6jW5NPNULeN9j7oYCqvrFxCkhSdJs7QxwZ3qQ1PXSp").unwrap(), + ], + ); + assert_eq!(wallet.get_descriptor(false).unwrap(), "wsh(or_d(pk([ffd63c8d/48'/1'/0'/2']tpubDExA3EC3iAsPxPhFn4j6gMiVup6V2eH3qKyk69RcTc9TTNRfFYVPad8bJD5FCHVQxyBT4izKsvr7Btd2R4xmQ1hZkvsqGBaeE82J71uTK4N/0/*),and_v(v:pkh([053f423f/48'/1'/0'/2']tpubDEGZMZiz8Vnp7N7cTM9Cty897GJpQ8jqmw2yyDKMPfbMzqPtRbo8wViKtkx6zfrzY6jW5NPNULeN9j7oYCqvrFxCkhSdJs7QxwZ3qQ1PXSp/0/*),older(65535))))"); + + assert_eq!(wallet.get_descriptor(true).unwrap(), "wsh(or_d(pk([ffd63c8d/48'/1'/0'/2']tpubDExA3EC3iAsPxPhFn4j6gMiVup6V2eH3qKyk69RcTc9TTNRfFYVPad8bJD5FCHVQxyBT4izKsvr7Btd2R4xmQ1hZkvsqGBaeE82J71uTK4N/1/*),and_v(v:pkh([053f423f/48'/1'/0'/2']tpubDEGZMZiz8Vnp7N7cTM9Cty897GJpQ8jqmw2yyDKMPfbMzqPtRbo8wViKtkx6zfrzY6jW5NPNULeN9j7oYCqvrFxCkhSdJs7QxwZ3qQ1PXSp/1/*),older(65535))))"); + + let wallet = WalletPolicy::new( + "Cold storage".to_string(), + Version::V2, + "wsh(or_d(pk(@0/<0;1>/*),and_v(v:pkh(@1/**),older(65535))))".to_string(), + vec![ + WalletPubKey::from_str("[ffd63c8d/48'/1'/0'/2']tpubDExA3EC3iAsPxPhFn4j6gMiVup6V2eH3qKyk69RcTc9TTNRfFYVPad8bJD5FCHVQxyBT4izKsvr7Btd2R4xmQ1hZkvsqGBaeE82J71uTK4N").unwrap(), + WalletPubKey::from_str("[053f423f/48'/1'/0'/2']tpubDEGZMZiz8Vnp7N7cTM9Cty897GJpQ8jqmw2yyDKMPfbMzqPtRbo8wViKtkx6zfrzY6jW5NPNULeN9j7oYCqvrFxCkhSdJs7QxwZ3qQ1PXSp").unwrap(), + ], + ); + assert_eq!(wallet.get_descriptor(false).unwrap(), "wsh(or_d(pk([ffd63c8d/48'/1'/0'/2']tpubDExA3EC3iAsPxPhFn4j6gMiVup6V2eH3qKyk69RcTc9TTNRfFYVPad8bJD5FCHVQxyBT4izKsvr7Btd2R4xmQ1hZkvsqGBaeE82J71uTK4N/0/*),and_v(v:pkh([053f423f/48'/1'/0'/2']tpubDEGZMZiz8Vnp7N7cTM9Cty897GJpQ8jqmw2yyDKMPfbMzqPtRbo8wViKtkx6zfrzY6jW5NPNULeN9j7oYCqvrFxCkhSdJs7QxwZ3qQ1PXSp/0/*),older(65535))))"); + + assert_eq!(wallet.get_descriptor(true).unwrap(), "wsh(or_d(pk([ffd63c8d/48'/1'/0'/2']tpubDExA3EC3iAsPxPhFn4j6gMiVup6V2eH3qKyk69RcTc9TTNRfFYVPad8bJD5FCHVQxyBT4izKsvr7Btd2R4xmQ1hZkvsqGBaeE82J71uTK4N/1/*),and_v(v:pkh([053f423f/48'/1'/0'/2']tpubDEGZMZiz8Vnp7N7cTM9Cty897GJpQ8jqmw2yyDKMPfbMzqPtRbo8wViKtkx6zfrzY6jW5NPNULeN9j7oYCqvrFxCkhSdJs7QxwZ3qQ1PXSp/1/*),older(65535))))"); + + let wallet = WalletPolicy::new( + "Cold storage".to_string(), + Version::V2, + "wsh(or_d(pk(@0/**),and_v(v:pkh(@1/**),older(65535))))".to_string(), + vec![ + WalletPubKey::from_str("[ffd63c8d/48'/1'/0'/2']tpubDExA3EC3iAsPxPhFn4j6gMiVup6V2eH3qKyk69RcTc9TTNRfFYVPad8bJD5FCHVQxyBT4izKsvr7Btd2R4xmQ1hZkvsqGBaeE82J71uTK4N").unwrap(), + WalletPubKey::from_str("[053f423f/48'/1'/0'/2']tpubDEGZMZiz8Vnp7N7cTM9Cty897GJpQ8jqmw2yyDKMPfbMzqPtRbo8wViKtkx6zfrzY6jW5NPNULeN9j7oYCqvrFxCkhSdJs7QxwZ3qQ1PXSp").unwrap(), + ], + ); + assert_eq!(wallet.get_descriptor(false).unwrap(), "wsh(or_d(pk([ffd63c8d/48'/1'/0'/2']tpubDExA3EC3iAsPxPhFn4j6gMiVup6V2eH3qKyk69RcTc9TTNRfFYVPad8bJD5FCHVQxyBT4izKsvr7Btd2R4xmQ1hZkvsqGBaeE82J71uTK4N/0/*),and_v(v:pkh([053f423f/48'/1'/0'/2']tpubDEGZMZiz8Vnp7N7cTM9Cty897GJpQ8jqmw2yyDKMPfbMzqPtRbo8wViKtkx6zfrzY6jW5NPNULeN9j7oYCqvrFxCkhSdJs7QxwZ3qQ1PXSp/0/*),older(65535))))"); + + assert_eq!(wallet.get_descriptor(true).unwrap(), "wsh(or_d(pk([ffd63c8d/48'/1'/0'/2']tpubDExA3EC3iAsPxPhFn4j6gMiVup6V2eH3qKyk69RcTc9TTNRfFYVPad8bJD5FCHVQxyBT4izKsvr7Btd2R4xmQ1hZkvsqGBaeE82J71uTK4N/1/*),and_v(v:pkh([053f423f/48'/1'/0'/2']tpubDEGZMZiz8Vnp7N7cTM9Cty897GJpQ8jqmw2yyDKMPfbMzqPtRbo8wViKtkx6zfrzY6jW5NPNULeN9j7oYCqvrFxCkhSdJs7QxwZ3qQ1PXSp/1/*),older(65535))))"); + } +} diff --git a/bitcoin_client_rs/tests/client.rs b/bitcoin_client_rs/tests/client.rs new file mode 100644 index 000000000..53b72016d --- /dev/null +++ b/bitcoin_client_rs/tests/client.rs @@ -0,0 +1,370 @@ +mod utils; +use std::str::FromStr; + +use bitcoin::{ + bip32::DerivationPath, + hashes::{hex::FromHex, Hash}, + psbt::Psbt, +}; +use ledger_bitcoin_client::{async_client, client, psbt::PartialSignature, wallet}; + +fn test_cases(path: &str) -> Vec { + let data = std::fs::read_to_string(path).expect("Unable to read file"); + serde_json::from_str(&data).expect("Wrong tests data") +} + +#[tokio::test] +async fn test_get_version() { + let exchanges: Vec = vec![ + "=> b001000000".into(), + "<= 010c426974636f696e205465737405322e312e3001009000".into(), + ]; + + let store = utils::RecordStore::new(&exchanges); + let (name, version, flags) = + client::BitcoinClient::new(utils::TransportReplayer::new(store.clone())) + .get_version() + .unwrap(); + + assert_eq!(name, "Bitcoin Test".to_string()); + assert_eq!(version, "2.1.0".to_string()); + assert_eq!(flags, vec![0x00]); + + let (name, version, flags) = + async_client::BitcoinClient::new(utils::TransportReplayer::new(store.clone())) + .get_version() + .await + .unwrap(); + + assert_eq!(name, "Bitcoin Test".to_string()); + assert_eq!(version, "2.1.0".to_string()); + assert_eq!(flags, vec![0x00]); +} + +#[tokio::test] +async fn test_sign_message() { + let exchanges: Vec = vec![ + "=> e110000132048000002c800000018000000000000000058a2a5c9b768827de5a9552c38a044c66959c68f6d2f21b5260af54d2f87db827".into(), + "<= 418a2a5c9b768827de5a9552c38a044c66959c68f6d2f21b5260af54d2f87db8270100e000".into(), + "=> f8010001228a2a5c9b768827de5a9552c38a044c66959c68f6d2f21b5260af54d2f87db8270000".into(), + "<= 40008a2a5c9b768827de5a9552c38a044c66959c68f6d2f21b5260af54d2f87db827e000".into(), + "=> f80100010806060068656c6c6f".into(), + "<= 20bdeef462c0ce01b905db5206a51ed05a36671d1494ac12b18c764dbb955f45542c5819611050096d16ed03a5b01fc9806c163619777986235ed75fc91ee933e69000".into(), + ]; + + let path = DerivationPath::from_str("m/44'/1'/0'/0").unwrap(); + let store = utils::RecordStore::new(&exchanges); + let (header, ecdsa_sig) = + client::BitcoinClient::new(utils::TransportReplayer::new(store.clone())) + .sign_message("hello".as_bytes(), &path) + .unwrap(); + + assert_eq!(header, 0x20); + let mut sig = vec![header]; + sig.extend(ecdsa_sig.serialize_compact()); + assert_eq!( + "IL3u9GLAzgG5BdtSBqUe0Fo2Zx0UlKwSsYx2TbuVX0VULFgZYRBQCW0W7QOlsB/JgGwWNhl3eYYjXtdfyR7pM+Y=", + base64::encode(sig) + ); + + let (header, ecdsa_sig) = + async_client::BitcoinClient::new(utils::TransportReplayer::new(store.clone())) + .sign_message("hello".as_bytes(), &path) + .await + .unwrap(); + + assert_eq!(header, 0x20); + let mut sig = vec![header]; + sig.extend(ecdsa_sig.serialize_compact()); + assert_eq!( + "IL3u9GLAzgG5BdtSBqUe0Fo2Zx0UlKwSsYx2TbuVX0VULFgZYRBQCW0W7QOlsB/JgGwWNhl3eYYjXtdfyR7pM+Y=", + base64::encode(sig) + ); +} + +#[tokio::test] +async fn test_get_extended_pubkey() { + for case in test_cases("./tests/data/get_extended_pubkey.json") { + let exchanges: Vec = case + .get("exchanges") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let derivation_path: DerivationPath = case + .get("derivation_path") + .map(|v| v.as_str().unwrap()) + .map(|s| DerivationPath::from_str(&s).unwrap()) + .unwrap(); + + let display: bool = case + .get("display") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let xpk_str: String = case + .get("result") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let store = utils::RecordStore::new(&exchanges); + let key = client::BitcoinClient::new(utils::TransportReplayer::new(store.clone())) + .get_extended_pubkey(&derivation_path, display) + .unwrap(); + + assert_eq!(key.to_string(), xpk_str); + + let key = async_client::BitcoinClient::new(utils::TransportReplayer::new(store.clone())) + .get_extended_pubkey(&derivation_path, display) + .await + .unwrap(); + + assert_eq!(key.to_string(), xpk_str); + } +} + +#[tokio::test] +async fn test_register_wallet() { + for case in test_cases("./tests/data/register_wallet.json") { + let exchanges: Vec = case + .get("exchanges") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let name: String = case + .get("name") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let policy: String = case + .get("policy") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let keys_str: Vec = case + .get("keys") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let keys: Vec = keys_str + .iter() + .map(|s| wallet::WalletPubKey::from_str(s).unwrap()) + .collect(); + + let hmac_result: String = case + .get("hmac") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let version: usize = case + .get("version") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let version = if version == 1 { + wallet::Version::V1 + } else { + wallet::Version::V2 + }; + + let wallet = wallet::WalletPolicy::new(name, version, policy, keys); + + let store = utils::RecordStore::new(&exchanges); + let (_id, hmac) = client::BitcoinClient::new(utils::TransportReplayer::new(store.clone())) + .register_wallet(&wallet) + .unwrap(); + + assert_eq!(hmac, <[u8; 32]>::from_hex(&hmac_result).unwrap()); + + let (_id, hmac) = + async_client::BitcoinClient::new(utils::TransportReplayer::new(store.clone())) + .register_wallet(&wallet) + .await + .unwrap(); + + assert_eq!(hmac, <[u8; 32]>::from_hex(&hmac_result).unwrap()); + } +} + +#[tokio::test] +async fn test_get_wallet_address() { + for case in test_cases("./tests/data/get_wallet_address.json") { + let exchanges: Vec = case + .get("exchanges") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let name: String = case + .get("name") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let policy: String = case + .get("policy") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let keys_str: Vec = case + .get("keys") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let keys: Vec = keys_str + .iter() + .map(|s| wallet::WalletPubKey::from_str(s).unwrap()) + .collect(); + + let hmac: Option = case + .get("hmac") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + let hmac = hmac.map(|s| { + let mut h = [b'\0'; 32]; + h.copy_from_slice(&Vec::from_hex(&s).unwrap()); + h + }); + + let change: bool = case + .get("change") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let display: bool = case + .get("display") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let address_index: u32 = case + .get("address_index") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let address_result: String = case + .get("address") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let wallet = wallet::WalletPolicy::new(name, wallet::Version::V2, policy, keys); + + let store = utils::RecordStore::new(&exchanges); + let address = client::BitcoinClient::new(utils::TransportReplayer::new(store.clone())) + .get_wallet_address(&wallet, hmac.as_ref(), change, address_index, display) + .unwrap(); + + assert_eq!(address.assume_checked().to_string(), address_result); + + let address = + async_client::BitcoinClient::new(utils::TransportReplayer::new(store.clone())) + .get_wallet_address(&wallet, hmac.as_ref(), change, address_index, display) + .await + .unwrap(); + + assert_eq!(address.assume_checked().to_string(), address_result); + } +} + +#[tokio::test] +async fn test_sign_psbt() { + for case in test_cases("./tests/data/sign_psbt.json") { + let exchanges: Vec = case + .get("exchanges") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let name: String = case + .get("name") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let policy: String = case + .get("policy") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let keys_str: Vec = case + .get("keys") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let keys: Vec = keys_str + .iter() + .map(|s| wallet::WalletPubKey::from_str(s).unwrap()) + .collect(); + + let hmac: Option = case + .get("hmac") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + let hmac = hmac.map(|s| { + let mut h = [b'\0'; 32]; + h.copy_from_slice(&Vec::from_hex(&s).unwrap()); + h + }); + + let sigs: Vec = case + .get("sigs") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let psbt_str: String = case + .get("psbt") + .map(|v| serde_json::from_value(v.clone()).unwrap()) + .unwrap(); + + let psbt = Psbt::deserialize(&base64::decode(&psbt_str).unwrap()).unwrap(); + + let wallet = wallet::WalletPolicy::new(name, wallet::Version::V2, policy, keys); + + let store = utils::RecordStore::new(&exchanges); + let res = client::BitcoinClient::new(utils::TransportReplayer::new(store.clone())) + .sign_psbt(&psbt, &wallet, hmac.as_ref()) + .unwrap(); + + let check_signatures = |sigs: &[serde_json::Value], res: Vec<(usize, PartialSignature)>| { + for (i, psbt_sig) in res { + for (j, res_sig) in sigs.iter().enumerate() { + if i == j { + match psbt_sig { + PartialSignature::TapScriptSig(key, tapleaf_hash, sig) => { + assert_eq!( + res_sig + .get("key") + .map(|v| serde_json::from_value::(v.clone()) + .unwrap()) + .unwrap(), + key.to_string() + ); + if let Some(tapleaf_hash_res) = res_sig + .get("tapleaf_hash") + .map(|v| serde_json::from_value::(v.clone()).unwrap()) + { + assert_eq!( + tapleaf_hash_res, + hex::encode(tapleaf_hash.unwrap().to_byte_array()) + ); + } + assert_eq!( + res_sig + .get("sig") + .map(|v| serde_json::from_value::(v.clone()) + .unwrap()) + .unwrap(), + hex::encode(sig.to_vec()) + ); + } + _ => {} + } + } + } + } + }; + + check_signatures(&sigs, res); + + let res = async_client::BitcoinClient::new(utils::TransportReplayer::new(store.clone())) + .sign_psbt(&psbt, &wallet, hmac.as_ref()) + .await + .unwrap(); + + check_signatures(&sigs, res); + } +} diff --git a/bitcoin_client_rs/tests/data/get_extended_pubkey.json b/bitcoin_client_rs/tests/data/get_extended_pubkey.json new file mode 100644 index 000000000..6d8123ff9 --- /dev/null +++ b/bitcoin_client_rs/tests/data/get_extended_pubkey.json @@ -0,0 +1,45 @@ +[{ + "derivation_path": "m/44'/0'/0'/0/0", + "display": false, + "exchanges": [ + "=> e10000011600058000002c80000000800000000000000000000000", + "<= 7870756236474c3651666638763454545438446b645031426a5067655862324866465739433731544a64347a5750484d677837316b3438443179323852736a55784a5157716d34314c484b506567446f4637766b6b75524353673765736761626d65516442635a775a586b666f46529000" + ], + "result": "xpub6GL6Qff8v4TTT8DkdP1BjPgeXb2HfFW9C71TJd4zWPHMgx71k48D1y28RsjUxJQWqm41LHKPegDoF7vkkuRCSg7esgabmeQdBcZwZXkfoFR" +}, +{ + "derivation_path": "m/44'/0'/0'/0/1", + "display": true, + "exchanges": [ + "=> e10000011601058000002c80000000800000000000000000000001", + "<= 7870756236474c36516666387634545455663536716d3437475054724b6f6632746f50326b717434326a5664787a52536f38723874326d715a5a41533776723770436f3337485750685067707938616d7268544a6a66546e716b4d31645a33383761437a4e7a64416a666e3653516d9000" + ], + "result": "xpub6GL6Qff8v4TTUf56qm47GPTrKof2toP2kqt42jVdxzRSo8r8t2mqZZAS7vr7pCo37HWPhPgpy8amrhTJjfTnqkM1dZ387aCzNzdAjfn6SQm" +}, +{ + "derivation_path": "m/44'/1'/0'", + "display": false, + "exchanges": [ + "=> e10000010e00038000002c8000000180000000", + "<= 74707562444377596a70446855645047503572533377674e6731336d5472726a427547385639567057627970745836545250624e6f5a5658736f5655536b436a6d51386a4a79636a75444b4262396561746153796d58616b5454614769667852366b6d56736646656848315a674a549000" + ], + "result": "tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT" +}, +{ + "derivation_path": "m/49'/1'/1'/1/3", + "display": false, + "exchanges": [ + "=> e10000011600058000003180000001800000010000000100000003", + "<= 7470756244476e65746d4a44434c3138547961616f79524159626b5345397762486b7453645453346d66735236696e433863327236546a64427433776b7145516848595074587061343678707844614358553250524e55475676447a414850473668485261765962774147666e46729000" + ], + "result": "tpubDGnetmJDCL18TyaaoyRAYbkSE9wbHktSdTS4mfsR6inC8c2r6TjdBt3wkqEQhHYPtXpa46xpxDaCXU2PRNUGVvDzAHPG6hHRavYbwAGfnFr" +}, +{ + "derivation_path": "m/84'/1'/2'/0/10", + "display": false, + "exchanges": [ + "=> e1000001160005800000548000000180000002000000000000000a", + "<= 7470756244473959705355775363574a42425372686e415434374e6354344e5a474c6359313863706b616957486e6b554369313945744368384865656f783236384e614646366f35366e566553587554794b366a707a547656316836384b723365644138415a7032374d694c554e749000" + ], + "result": "tpubDG9YpSUwScWJBBSrhnAT47NcT4NZGLcY18cpkaiWHnkUCi19EtCh8Heeox268NaFF6o56nVeSXuTyK6jpzTvV1h68Kr3edA8AZp27MiLUNt" +}] diff --git a/bitcoin_client_rs/tests/data/get_wallet_address.json b/bitcoin_client_rs/tests/data/get_wallet_address.json new file mode 100644 index 000000000..08ecc9660 --- /dev/null +++ b/bitcoin_client_rs/tests/data/get_wallet_address.json @@ -0,0 +1,61 @@ +[{ + "name": "", + "policy": "tr(@0/**)", + "keys": [ + "[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U" + ], + "hmac": null, + "change": false, + "address_index": 0, + "display": true, + "exchanges": [ + "=> e10300014601627535418bc03eeee2b62b3a0254dc0624881f8bc6fc20c4d3b2c1c4fc92989300000000000000000000000000000000000000000000000000000000000000000000000000", + "<= 4000627535418bc03eeee2b62b3a0254dc0624881f8bc6fc20c4d3b2c1c4fc929893e000", + "=> f80100014644440200097c54d8c8cd3bac81abf56463d3d3ed2efa94afd9678707fcd68a4c990a71ea6b01feacb8b161672bffec7b35f4035eceb1d9c918e2507b51d1716324b968856803", + "<= 40007c54d8c8cd3bac81abf56463d3d3ed2efa94afd9678707fcd68a4c990a71ea6be000", + "=> f80100010b090974722840302f2a2a29", + "<= 41feacb8b161672bffec7b35f4035eceb1d9c918e2507b51d1716324b9688568030100e000", + "=> f801000122feacb8b161672bffec7b35f4035eceb1d9c918e2507b51d1716324b9688568030000", + "<= 4000feacb8b161672bffec7b35f4035eceb1d9c918e2507b51d1716324b968856803e000", + "=> f8010001868484005b66356163633266642f3836272f31272f30275d7470756244444b59453642524576447353574d617a67486f795157694a775961444459506243466a59784e334846584a5035666f6b65694b3468774b3574544c424e454442777244586e3863513476396232786457363258723579786f51644d753176366337554458595648323755", + "<= 41feacb8b161672bffec7b35f4035eceb1d9c918e2507b51d1716324b9688568030100e000", + "=> f801000122feacb8b161672bffec7b35f4035eceb1d9c918e2507b51d1716324b9688568030000", + "<= 4000feacb8b161672bffec7b35f4035eceb1d9c918e2507b51d1716324b968856803e000", + "=> f8010001868484005b66356163633266642f3836272f31272f30275d7470756244444b59453642524576447353574d617a67486f795157694a775961444459506243466a59784e334846584a5035666f6b65694b3468774b3574544c424e454442777244586e3863513476396232786457363258723579786f51644d753176366337554458595648323755", + "<= 7462317077733877766e6a3939636136616366386b7137706a6b377679786b6e61683064396d6578636b6835733076753263637936386a7339616d3675379000" + ], + "address": "tb1pws8wvnj99ca6acf8kq7pjk7vyxknah0d9mexckh5s0vu2ccy68js9am6u7" +}, +{ + "name": "Cold storage", + "policy": "wsh(sortedmulti(2,@0/**,@1/**))", + "keys": [ + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK" + ], + "hmac": "d7c7a60b4ab4a14c1bf8901ba627d72140b2fb907f2b4e35d2e693bce9fbb371", + "change": false, + "address_index": 0, + "display": true, + "exchanges": [ + "=> e10300014601cd9474ae9e74403128477789789db43a215e996af80d60120f0d844f8404ac64d7c7a60b4ab4a14c1bf8901ba627d72140b2fb907f2b4e35d2e693bce9fbb3710000000000", + "<= 4000cd9474ae9e74403128477789789db43a215e996af80d60120f0d844f8404ac64e000", + "=> f8010001525050020c436f6c642073746f726167651fb56c3d5542fa09b3956834a9ff6a1df5c36a38e5b02c63c54b41a9a04403b82602516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb", + "<= 4000b56c3d5542fa09b3956834a9ff6a1df5c36a38e5b02c63c54b41a9a04403b826e000", + "=> f8010001211f1f77736828736f727465646d756c746928322c40302f2a2a2c40312f2a2a2929", + "<= 41516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb0200e000", + "=> f801000142521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775010179ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade1", + "<= 4000521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775e000", + "=> f8010001898787005b37363232336136652f3438272f31272f30272f32275d747075624445374e51796d7234414674657770417357746e726579713967686b7a51425870435a6a574c46565241766e62663776796132654d54765432665061704e714c38537556764c51646255624d66574c5644435a4b6e734542717036554b393351457a4c38436b3233417746", + "<= 41516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb0201e000", + "=> f80100014279ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade10101521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775", + "<= 400079ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade1e000", + "=> f8010001898787005b66356163633266642f3438272f31272f30272f32275d747075624446417145474e79616433356142434b554158625147446a6456684e75656e6f355a5a56456e3373516257356369343537674c52374879546d48426739336f6f757242737367557875577a316a583575686331716171466f395673796259314a35467565644c666d34644b", + "<= 41516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb0201e000", + "=> f80100014279ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade10101521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775", + "<= 400079ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade1e000", + "=> f8010001898787005b66356163633266642f3438272f31272f30272f32275d747075624446417145474e79616433356142434b554158625147446a6456684e75656e6f355a5a56456e3373516257356369343537674c52374879546d48426739336f6f757242737367557875577a316a583575686331716171466f395673796259314a35467565644c666d34644b", + "<= 746231716d796175797a6e30386364757a647177656578676e61327370776430726e646a35356673726b65667279326370757974346370736e32706732389000" + ], + "address": "tb1qmyauyzn08cduzdqweexgna2spwd0rndj55fsrkefry2cpuyt4cpsn2pg28" +}] diff --git a/bitcoin_client_rs/tests/data/register_wallet.json b/bitcoin_client_rs/tests/data/register_wallet.json new file mode 100644 index 000000000..d3bea619b --- /dev/null +++ b/bitcoin_client_rs/tests/data/register_wallet.json @@ -0,0 +1,89 @@ +[{ + "name": "Cold storage", + "policy": "wsh(sortedmulti(2,@0,@1))", + "keys": [ + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF/**", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK/**" + ], + "version": 1, + "threshold": 2, + "exchanges": [ + "=> e10200014a49010c436f6c642073746f726167651977736828736f727465646d756c746928322c40302c4031292902ab6711da5c7daaaba19169f693013ef5139eee794d4997acb8a40d1c25f87838", + "<= 41ab6711da5c7daaaba19169f693013ef5139eee794d4997acb8a40d1c25f878380200e000", + "=> f8010001428781445a699699be617cd74b7a311ad30d77fe480e32c2bb96ae04bdebecf5a70101e160a27fd6b868d8a958160b2c913def129ad0f98ee1dce60e095bbb2102f47c", + "<= 40008781445a699699be617cd74b7a311ad30d77fe480e32c2bb96ae04bdebecf5a7e000", + "=> f80100018c8a8a005b37363232336136652f3438272f31272f30272f32275d747075624445374e51796d7234414674657770417357746e726579713967686b7a51425870435a6a574c46565241766e62663776796132654d54765432665061704e714c38537556764c51646255624d66574c5644435a4b6e734542717036554b393351457a4c38436b32334177462f2a2a", + "<= 41ab6711da5c7daaaba19169f693013ef5139eee794d4997acb8a40d1c25f878380201e000", + "=> f801000142e160a27fd6b868d8a958160b2c913def129ad0f98ee1dce60e095bbb2102f47c01018781445a699699be617cd74b7a311ad30d77fe480e32c2bb96ae04bdebecf5a7", + "<= 4000e160a27fd6b868d8a958160b2c913def129ad0f98ee1dce60e095bbb2102f47ce000", + "=> f80100018c8a8a005b66356163633266642f3438272f31272f30272f32275d747075624446417145474e79616433356142434b554158625147446a6456684e75656e6f355a5a56456e3373516257356369343537674c52374879546d48426739336f6f757242737367557875577a316a583575686331716171466f395673796259314a35467565644c666d34644b2f2a2a", + "<= 19ead5d0873068a8eab4df5dfefb2080c9c7d8bfd2fc2fea27f26b299cf4c46bd6434852fb3caa7edbd1165084968f1691444b3cfc10cf1e431acbbc7f48451f9000" + ], + "hmac": "d6434852fb3caa7edbd1165084968f1691444b3cfc10cf1e431acbbc7f48451f" +}, +{ + "name": "Cold storage", + "policy": "wsh(sortedmulti(2,@0/**,@1/**))", + "keys": [ + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK" + ], + "version": 2, + "threshold": 2, + "exchanges": [ + "=> e10200015150020c436f6c642073746f726167651fb56c3d5542fa09b3956834a9ff6a1df5c36a38e5b02c63c54b41a9a04403b82602516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb", + "<= 4000b56c3d5542fa09b3956834a9ff6a1df5c36a38e5b02c63c54b41a9a04403b826e000", + "=> f8010001211f1f77736828736f727465646d756c746928322c40302f2a2a2c40312f2a2a2929", + "<= 41516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb0200e000", + "=> f801000142521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775010179ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade1", + "<= 4000521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775e000", + "=> f8010001898787005b37363232336136652f3438272f31272f30272f32275d747075624445374e51796d7234414674657770417357746e726579713967686b7a51425870435a6a574c46565241766e62663776796132654d54765432665061704e714c38537556764c51646255624d66574c5644435a4b6e734542717036554b393351457a4c38436b3233417746", + "<= 41516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb0201e000", + "=> f80100014279ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade10101521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775", + "<= 400079ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade1e000", + "=> f8010001898787005b66356163633266642f3438272f31272f30272f32275d747075624446417145474e79616433356142434b554158625147446a6456684e75656e6f355a5a56456e3373516257356369343537674c52374879546d48426739336f6f757242737367557875577a316a583575686331716171466f395673796259314a35467565644c666d34644b", + "<= 41516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb0200e000", + "=> f801000142521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775010179ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade1", + "<= 4000521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775e000", + "=> f8010001898787005b37363232336136652f3438272f31272f30272f32275d747075624445374e51796d7234414674657770417357746e726579713967686b7a51425870435a6a574c46565241766e62663776796132654d54765432665061704e714c38537556764c51646255624d66574c5644435a4b6e734542717036554b393351457a4c38436b3233417746", + "<= 41516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb0201e000", + "=> f80100014279ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade10101521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775", + "<= 400079ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade1e000", + "=> f8010001898787005b66356163633266642f3438272f31272f30272f32275d747075624446417145474e79616433356142434b554158625147446a6456684e75656e6f355a5a56456e3373516257356369343537674c52374879546d48426739336f6f757242737367557875577a316a583575686331716171466f395673796259314a35467565644c666d34644b", + "<= cd9474ae9e74403128477789789db43a215e996af80d60120f0d844f8404ac64d7c7a60b4ab4a14c1bf8901ba627d72140b2fb907f2b4e35d2e693bce9fbb3719000" + ], + "hmac": "d7c7a60b4ab4a14c1bf8901ba627d72140b2fb907f2b4e35d2e693bce9fbb371" +}, +{ + "name": "Decaying key", + "policy": "wsh(or_d(pk(@0/**),and_v(v:pkh(@1/**),older(100))))", + "keys": [ + "[f5acc2fd]tpubD6NzVbkrYhZ4YgUx2ZLNt2rLYAMTdYysCRzKoLu2BeSHKvzqPaBDvf17GeBPnExUVPkuBpx4kniP964e2MxyzzazcXLptxLXModSVCVEV1T", + "[8a64f2a9]tpubD6NzVbkrYhZ4WmzFjvQrp7sDa4ECUxTi9oby8K4FZkd3XCBtEdKwUiQyYJaxiJo5y42gyDWEczrFpozEjeLxMPxjf2WtkfcbpUdfvNnozWF" + ], + "version": 2, + "exchanges": [ + "// e10200015150020c4465636179696e67206b657933ebddbc24e92652fbfeff6fcd547e81559732cba36990dc6f09638dd23195815902b216ad12c8f4e81c60908f7ff97307c469ff956ec16c62ec3802730a487af6f2", + "=> e10200015150020c4465636179696e67206b657933ebddbc24e92652fbfeff6fcd547e81559732cba36990dc6f09638dd23195815902445ba5a280b8491a67992b3d7a722dbe6e89cda68112dd72cb1816fd70f1cfd8", + "<= 4000ebddbc24e92652fbfeff6fcd547e81559732cba36990dc6f09638dd231958159e000", + "=> f8010001353333777368286f725f6428706b2840302f2a2a292c616e645f7628763a706b682840312f2a2a292c6f6c6465722831303029292929", + "<= 41445ba5a280b8491a67992b3d7a722dbe6e89cda68112dd72cb1816fd70f1cfd80200e000", + "=> f801000142ad123cb4a90beb3e9b9e3eb811b9119a8f0b2c011f9833d86aadaec5c4937fbf010160dcf3ace170d59f287f4047d6d7ac279e2bd16f6a64a06424bebdf9dfa43224", + "<= 4000ad123cb4a90beb3e9b9e3eb811b9119a8f0b2c011f9833d86aadaec5c4937fbfe000", + "=> f80100017c7a7a005b66356163633266645d7470756244364e7a56626b7259685a3459675578325a4c4e7432724c59414d546459797343527a4b6f4c7532426553484b767a715061424476663137476542506e45785556506b75427078346b6e695039363465324d78797a7a617a63584c7074784c584d6f645356435645563154", + "<= 41445ba5a280b8491a67992b3d7a722dbe6e89cda68112dd72cb1816fd70f1cfd80201e000", + "=> f80100014260dcf3ace170d59f287f4047d6d7ac279e2bd16f6a64a06424bebdf9dfa432240101ad123cb4a90beb3e9b9e3eb811b9119a8f0b2c011f9833d86aadaec5c4937fbf", + "<= 400060dcf3ace170d59f287f4047d6d7ac279e2bd16f6a64a06424bebdf9dfa43224e000", + "=> f80100017c7a7a005b38613634663261395d7470756244364e7a56626b7259685a34576d7a466a765172703773446134454355785469396f6279384b34465a6b64335843427445644b7755695179594a6178694a6f357934326779445745637a7246706f7a456a654c784d50786a663257746b66636270556466764e6e6f7a5746", + "<= 41445ba5a280b8491a67992b3d7a722dbe6e89cda68112dd72cb1816fd70f1cfd80200e000", + "=> f801000142ad123cb4a90beb3e9b9e3eb811b9119a8f0b2c011f9833d86aadaec5c4937fbf010160dcf3ace170d59f287f4047d6d7ac279e2bd16f6a64a06424bebdf9dfa43224", + "<= 4000ad123cb4a90beb3e9b9e3eb811b9119a8f0b2c011f9833d86aadaec5c4937fbfe000", + "=> f80100017c7a7a005b66356163633266645d7470756244364e7a56626b7259685a3459675578325a4c4e7432724c59414d546459797343527a4b6f4c7532426553484b767a715061424476663137476542506e45785556506b75427078346b6e695039363465324d78797a7a617a63584c7074784c584d6f645356435645563154", + "<= 41445ba5a280b8491a67992b3d7a722dbe6e89cda68112dd72cb1816fd70f1cfd80201e000", + "=> f80100014260dcf3ace170d59f287f4047d6d7ac279e2bd16f6a64a06424bebdf9dfa432240101ad123cb4a90beb3e9b9e3eb811b9119a8f0b2c011f9833d86aadaec5c4937fbf", + "<= 400060dcf3ace170d59f287f4047d6d7ac279e2bd16f6a64a06424bebdf9dfa43224e000", + "=> f80100017c7a7a005b38613634663261395d7470756244364e7a56626b7259685a34576d7a466a765172703773446134454355785469396f6279384b34465a6b64335843427445644b7755695179594a6178694a6f357934326779445745637a7246706f7a456a654c784d50786a663257746b66636270556466764e6e6f7a5746", + "<= 174e7f4806b9ce07967b25b6c82f27e9790ca9212a280c2e01d32eca06970e13c77fad66112f554d449c46ee2f63ea86be65a1bd7c4faa8f9eb5391c524067c29000" + ], + "hmac": "c77fad66112f554d449c46ee2f63ea86be65a1bd7c4faa8f9eb5391c524067c2" +}] diff --git a/bitcoin_client_rs/tests/data/sign_psbt.json b/bitcoin_client_rs/tests/data/sign_psbt.json new file mode 100644 index 000000000..593afcff4 --- /dev/null +++ b/bitcoin_client_rs/tests/data/sign_psbt.json @@ -0,0 +1,1303 @@ +[{ + "name": "", + "policy": "sh(wpkh(@0/**))", + "keys": [ + "[f5acc2fd/49'/1'/0']tpubDC871vGLAiKPcwAw22EjhKVLk5L98UGXBEcGR8gpcigLQVDDfgcYW24QBEyTHTSFEjgJgbaHU8CdRi9vmG4cPm1kPLmZhJEP17FMBdNheh3" + ], + "hmac": null, + "psbt": "cHNidP8BAHICAAAAAXT0yaTajRSLu1boaayjaQ3aDOOsvPgWCcyUbRtvFkrOAQAAAAD9////AlDUEgAAAAAAFgAUMxjgT65sEq/LAJxpzVflslBK5rT1cQgAAAAAABepFG1IUtrzpUCfdyFtu46j1ZIxLX7phwAAAAAAAQCMAgAAAAHQ47WR3EhO23HqtmoOmUcxAH/rfQgqUMdC8CPqCQFNHgEAAAAXFgAU4xDQRPiNqxtCdp5KhMrwg2P57MH9////AmDqAAAAAAAAGXapFEWIHtDTWHVQ95SEe3yLn6A+3Qo8iKx/ZhsAAAAAABepFPBGTZ+g6kLYDk1fFFeIOYLiO47shwAAAAABASB/ZhsAAAAAABepFPBGTZ+g6kLYDk1fFFeIOYLiO47shwEEFgAUyweAh+/0haqiJg6UpT19bRxd0VEiBgJLo7d9kz3p+j+VgzSMQPPKry7/rVtuJE7Oirv8xyRPZxj1rML9MQAAgAEAAIAAAACAAQAAAAAAAAAAAAEAFgAUTLRHxTu3NSNPKxOQ1F2dhksVdtMiAgOKsR70a0i1XwDFPv3fOM3f+dYzW8r1L6n5k4R/LM0vVxj1rML9MQAAgAEAAIAAAACAAQAAAAIAAAAA", + "exchanges": [ + "=> e1040001c305519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e3132162086d8d9498a323006ec5982eeb4ea7c41d27020d57985512ab59ff8f40d50150701185a2fac562419c1ce8ed936d13cfe9ca4be0bec1a0d84f8ce433763fc6d41d502f4c4f92e968760845d5694ce5ac4ad9ed0a33d00278d6e7fe89e807f899d2637be693418eee0c522b55f74c62b6ecad9697ef1e6e8bb973ff29740432960db480000000000000000000000000000000000000000000000000000000000000000", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200500e000", + "=> f801000182fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177f0303583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d4b8c129ed14cce2c08cfc6766db7f8cdb133b5f698b8de3d5890ea7ff7f0a8d195811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926", + "<= 4000fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177fe000", + "=> f80100010402020002", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200501e000", + "=> f801000182583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d0303fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177f4b8c129ed14cce2c08cfc6766db7f8cdb133b5f698b8de3d5890ea7ff7f0a8d195811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926", + "<= 4000583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f80100010402020003", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200502e000", + "=> f8010001824f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a403039f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3d52c56b473e5246933e7852989cd9feba3b38f078742b93afff1e65ed4679782595811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926", + "<= 40004f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f80100010402020004", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200503e000", + "=> f8010001829f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3d03034f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a452c56b473e5246933e7852989cd9feba3b38f078742b93afff1e65ed4679782595811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926", + "<= 40009f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3de000", + "=> f80100010402020005", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200504e000", + "=> f80100014295811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926010112885c5025dece82b9e180bdaf19d6e5571772906c9c24de31790023755c8888", + "<= 400095811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926e000", + "=> f801000104020200fb", + "<= 42519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e31321620fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177fe000", + "=> f8010001020100", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200500e000", + "=> f801000182fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177f0303583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d4b8c129ed14cce2c08cfc6766db7f8cdb133b5f698b8de3d5890ea7ff7f0a8d195811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926", + "<= 4186d8d9498a323006ec5982eeb4ea7c41d27020d57985512ab59ff8f40d5015070500e000", + "=> f8010001820bd288cecce2dfc6c9b9245ab747a10870f84c16e986e61b259603b59cf1f3b903038855508aade16ec573d21e6a485dfd0a7624085c1a14b5ecdd6485de0c6839a46bcf0e2e93e0a18e22789aee965e6553f4fbe93f0acfc4a705d691c8311c49650bd288cecce2dfc6c9b9245ab747a10870f84c16e986e61b259603b59cf1f3b9", + "<= 40000bd288cecce2dfc6c9b9245ab747a10870f84c16e986e61b259603b59cf1f3b9e000", + "=> f80100010705050002000000", + "<= 42519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e31321620583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f8010001020101", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200501e000", + "=> f801000182583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d0303fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177f4b8c129ed14cce2c08cfc6766db7f8cdb133b5f698b8de3d5890ea7ff7f0a8d195811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926", + "<= 4186d8d9498a323006ec5982eeb4ea7c41d27020d57985512ab59ff8f40d5015070501e000", + "=> f8010001828855508aade16ec573d21e6a485dfd0a7624085c1a14b5ecdd6485de0c6839a403030bd288cecce2dfc6c9b9245ab747a10870f84c16e986e61b259603b59cf1f3b96bcf0e2e93e0a18e22789aee965e6553f4fbe93f0acfc4a705d691c8311c49650bd288cecce2dfc6c9b9245ab747a10870f84c16e986e61b259603b59cf1f3b9", + "<= 40008855508aade16ec573d21e6a485dfd0a7624085c1a14b5ecdd6485de0c6839a4e000", + "=> f80100010705050000000000", + "<= 4000be693418eee0c522b55f74c62b6ecad9697ef1e6e8bb973ff29740432960db48e000", + "=> f801000146444402000f5ab1bed30ec27c4fdc3ba1136dd48bd338abbc9c8acbe29e350d45137f9a4c4601aa8087e303482fa846597853314be4e1ed3096d7efadf1b257dd324d70dd13d9", + "<= 40005ab1bed30ec27c4fdc3ba1136dd48bd338abbc9c8acbe29e350d45137f9a4c46e000", + "=> f8010001110f0f73682877706b682840302f2a2a2929", + "<= 41aa8087e303482fa846597853314be4e1ed3096d7efadf1b257dd324d70dd13d90100e000", + "=> f801000122aa8087e303482fa846597853314be4e1ed3096d7efadf1b257dd324d70dd13d90000", + "<= 4000aa8087e303482fa846597853314be4e1ed3096d7efadf1b257dd324d70dd13d9e000", + "=> f8010001868484005b66356163633266642f3439272f31272f30275d74707562444338373176474c41694b50637741773232456a684b564c6b354c393855475842456347523867706369674c5156444466676359573234514245795448545346456a674a6762614855384364526939766d473463506d316b504c6d5a684a45503137464d42644e68656833", + "<= 41aa8087e303482fa846597853314be4e1ed3096d7efadf1b257dd324d70dd13d90100e000", + "=> f801000122aa8087e303482fa846597853314be4e1ed3096d7efadf1b257dd324d70dd13d90000", + "<= 4000aa8087e303482fa846597853314be4e1ed3096d7efadf1b257dd324d70dd13d9e000", + "=> f8010001868484005b66356163633266642f3439272f31272f30275d74707562444338373176474c41694b50637741773232456a684b564c6b354c393855475842456347523867706369674c5156444466676359573234514245795448545346456a674a6762614855384364526939766d473463506d316b504c6d5a684a45503137464d42644e68656833", + "<= 41185a2fac562419c1ce8ed936d13cfe9ca4be0bec1a0d84f8ce433763fc6d41d50100e000", + "=> f801000122185a2fac562419c1ce8ed936d13cfe9ca4be0bec1a0d84f8ce433763fc6d41d50000", + "<= 4000185a2fac562419c1ce8ed936d13cfe9ca4be0bec1a0d84f8ce433763fc6d41d5e000", + "=> f801000144424200075db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb47f55bba17c04a1932f489a21cfebc3cec358b6f0a36eb1bef0781a2079b975c09", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470700e000", + "=> f80100018296a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc70303b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d29ec7e94594c19f8df3adf81222ed71ec0249dbf196079fb25e3ee4086122c081556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 400096a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7e000", + "=> f80100010402020000", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470701e000", + "=> f801000182b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2030396a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc79ec7e94594c19f8df3adf81222ed71ec0249dbf196079fb25e3ee4086122c081556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 4000b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f80100010402020001", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470702e000", + "=> f8010001824f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4030322b60d1dd304e8034bc9b59d9cde3d3ecb2a33e8eab07c2d4219e38bd35e626ba20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 40004f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f80100010402020004", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470703e000", + "=> f80100018222b60d1dd304e8034bc9b59d9cde3d3ecb2a33e8eab07c2d4219e38bd35e626b03034f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4a20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 400022b60d1dd304e8034bc9b59d9cde3d3ecb2a33e8eab07c2d4219e38bd35e626be000", + "=> f80100012523230006024ba3b77d933de9fa3f9583348c40f3caaf2effad5b6e244ece8abbfcc7244f67", + "<= 41f55bba17c04a1932f489a21cfebc3cec358b6f0a36eb1bef0781a2079b975c090703e000", + "=> f80100018206926cbaf52867d55e7cc3fa229bddde40a669a9db2ff5b030b4d7f1cb6219ef0303d49f480874f2962de229abe9e05b66a3edc62a141206ef314febf28bacfc88f35cff501957d2881fdd31885a4781a443a7642980d82b5b0a0b4a4047646c729bbdb89efd14836c2acfc10d1e0e3ad12bbc390f3ed61965e3cc82eeb85e0eeacb", + "<= 400006926cbaf52867d55e7cc3fa229bddde40a669a9db2ff5b030b4d7f1cb6219efe000", + "=> f80100011b191900f5acc2fd3100008001000080000000800100000000000000", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470704e000", + "=> f8010001829f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b19603033b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae905090298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe741b9294b7a661990a19adec4b47beafc01622c906df7d4d71be96671ed33a927", + "<= 40009f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196e000", + "=> f8010001040202000e", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470705e000", + "=> f8010001823b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae9050903039f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b1960298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe741b9294b7a661990a19adec4b47beafc01622c906df7d4d71be96671ed33a927", + "<= 40003b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae90509e000", + "=> f8010001040202000f", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470706e000", + "=> f8010001620298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe70202e80cc247985bb408a9484b6fd53b538c321cab413033bb288ba55747dfadb6ba41b9294b7a661990a19adec4b47beafc01622c906df7d4d71be96671ed33a927", + "<= 40000298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7e000", + "=> f80100010402020010", + "<= 425db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb479f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196e000", + "=> f8010001020104", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470704e000", + "=> f8010001829f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b19603033b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae905090298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe741b9294b7a661990a19adec4b47beafc01622c906df7d4d71be96671ed33a927", + "<= 41f55bba17c04a1932f489a21cfebc3cec358b6f0a36eb1bef0781a2079b975c090704e000", + "=> f80100018299c5a9d616bcef076acd13f00af6f8a92dda8dda4b7b52400f76e841b502b144030386f9649499b0080656c014aa244f654864bad4145c8513e9c8409f437d4a2b3bb2db18c190abf44354f0286c60b2a6b6a2db6d1a36a6829e66298918b55e1d98d23fa41668b8601a8d5886f931e7d68dd5812cfc4f77cb8a516712c6d84b72ca", + "<= 400099c5a9d616bcef076acd13f00af6f8a92dda8dda4b7b52400f76e841b502b144e000", + "=> f80100012321210074f4c9a4da8d148bbb56e869aca3690dda0ce3acbcf81609cc946d1b6f164ace", + "<= 425db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb473b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae90509e000", + "=> f8010001020105", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470705e000", + "=> f8010001823b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae9050903039f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b1960298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe741b9294b7a661990a19adec4b47beafc01622c906df7d4d71be96671ed33a927", + "<= 41f55bba17c04a1932f489a21cfebc3cec358b6f0a36eb1bef0781a2079b975c090705e000", + "=> f80100018286f9649499b0080656c014aa244f654864bad4145c8513e9c8409f437d4a2b3b030399c5a9d616bcef076acd13f00af6f8a92dda8dda4b7b52400f76e841b502b144b2db18c190abf44354f0286c60b2a6b6a2db6d1a36a6829e66298918b55e1d98d23fa41668b8601a8d5886f931e7d68dd5812cfc4f77cb8a516712c6d84b72ca", + "<= 400086f9649499b0080656c014aa244f654864bad4145c8513e9c8409f437d4a2b3be000", + "=> f80100010705050001000000", + "<= 425db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb4796a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7e000", + "=> f8010001020100", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470700e000", + "=> f80100018296a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc70303b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d29ec7e94594c19f8df3adf81222ed71ec0249dbf196079fb25e3ee4086122c081556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 41f55bba17c04a1932f489a21cfebc3cec358b6f0a36eb1bef0781a2079b975c090700e000", + "=> f801000182524b62b12a29bb8a1e47760efe6f1d40999d524cffb37a199d3c9714ac6b60b103035e638757b66f5ff0846e56011c1386362df1e7371ba2f140616dcf0da6ef002e31efa8ceeba29c958140ba4f3b42522d76940d284d4787b95434d7a88b65101fbdb89efd14836c2acfc10d1e0e3ad12bbc390f3ed61965e3cc82eeb85e0eeacb", + "<= 4000524b62b12a29bb8a1e47760efe6f1d40999d524cffb37a199d3c9714ac6b60b1e000", + "=> f80100018f8d8d000200000001d0e3b591dc484edb71eab66a0e994731007feb7d082a50c742f023ea09014d1e0100000017160014e310d044f88dab1b42769e4a84caf08363f9ecc1fdffffff0260ea0000000000001976a91445881ed0d3587550f794847b7c8b9fa03edd0a3c88ac7f661b000000000017a914f0464d9fa0ea42d80e4d5f1457883982e23b8eec8700000000", + "<= 425db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb47b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f8010001020101", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470701e000", + "=> f801000182b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2030396a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc79ec7e94594c19f8df3adf81222ed71ec0249dbf196079fb25e3ee4086122c081556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 41f55bba17c04a1932f489a21cfebc3cec358b6f0a36eb1bef0781a2079b975c090701e000", + "=> f8010001825e638757b66f5ff0846e56011c1386362df1e7371ba2f140616dcf0da6ef002e0303524b62b12a29bb8a1e47760efe6f1d40999d524cffb37a199d3c9714ac6b60b131efa8ceeba29c958140ba4f3b42522d76940d284d4787b95434d7a88b65101fbdb89efd14836c2acfc10d1e0e3ad12bbc390f3ed61965e3cc82eeb85e0eeacb", + "<= 40005e638757b66f5ff0846e56011c1386362df1e7371ba2f140616dcf0da6ef002ee000", + "=> f8010001232121007f661b000000000017a914f0464d9fa0ea42d80e4d5f1457883982e23b8eec87", + "<= 41aa8087e303482fa846597853314be4e1ed3096d7efadf1b257dd324d70dd13d90100e000", + "=> f801000122aa8087e303482fa846597853314be4e1ed3096d7efadf1b257dd324d70dd13d90000", + "<= 4000aa8087e303482fa846597853314be4e1ed3096d7efadf1b257dd324d70dd13d9e000", + "=> f8010001868484005b66356163633266642f3439272f31272f30275d74707562444338373176474c41694b50637741773232456a684b564c6b354c393855475842456347523867706369674c5156444466676359573234514245795448545346456a674a6762614855384364526939766d473463506d316b504c6d5a684a45503137464d42644e68656833", + "<= 41aa8087e303482fa846597853314be4e1ed3096d7efadf1b257dd324d70dd13d90100e000", + "=> f801000122aa8087e303482fa846597853314be4e1ed3096d7efadf1b257dd324d70dd13d90000", + "<= 4000aa8087e303482fa846597853314be4e1ed3096d7efadf1b257dd324d70dd13d9e000", + "=> f8010001868484005b66356163633266642f3439272f31272f30275d74707562444338373176474c41694b50637741773232456a684b564c6b354c393855475842456347523867706369674c5156444466676359573234514245795448545346456a674a6762614855384364526939766d473463506d316b504c6d5a684a45503137464d42644e68656833", + "<= 41f4c4f92e968760845d5694ce5ac4ad9ed0a33d00278d6e7fe89e807f899d26370200e000", + "=> f8010001425beb3dccbdaafff7bc848930b20471ae36d36930ecde26529a5e8de93b7e995d01017b4ce78ca662f6f0563d93324c1e4f7b48176ba46c599990fd8723ccaf6eccf6", + "<= 40005beb3dccbdaafff7bc848930b20471ae36d36930ecde26529a5e8de93b7e995de000", + "=> f8010001444242000278850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8dab87f2b73191a9f783cbb8521fdba8927f4a06e81b7d5d89f46c950a08a5727b", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0200e000", + "=> f801000142583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d01014f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4", + "<= 4000583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f80100010402020003", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0201e000", + "=> f8010001424f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a40101583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d", + "<= 40004f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f80100010402020004", + "<= 4278850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f8010001020100", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0200e000", + "=> f801000142583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d01014f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4", + "<= 41ab87f2b73191a9f783cbb8521fdba8927f4a06e81b7d5d89f46c950a08a5727b0200e000", + "=> f8010001424a59f387199f104044cf6a49e4ff56d7a879d65f0fb64e6e0d5a27df0610e5ff01013cf62b1b5247aa06ddd823fe7303f7b1a210df8b78844f3490b22a04949180bd", + "<= 40004a59f387199f104044cf6a49e4ff56d7a879d65f0fb64e6e0d5a27df0610e5ffe000", + "=> f80100010b09090050d4120000000000", + "<= 4278850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d4f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f8010001020101", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0201e000", + "=> f8010001424f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a40101583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d", + "<= 41ab87f2b73191a9f783cbb8521fdba8927f4a06e81b7d5d89f46c950a08a5727b0201e000", + "=> f8010001423cf62b1b5247aa06ddd823fe7303f7b1a210df8b78844f3490b22a04949180bd01014a59f387199f104044cf6a49e4ff56d7a879d65f0fb64e6e0d5a27df0610e5ff", + "<= 40003cf62b1b5247aa06ddd823fe7303f7b1a210df8b78844f3490b22a04949180bde000", + "=> f80100011917170000143318e04fae6c12afcb009c69cd57e5b2504ae6b4", + "<= 41f4c4f92e968760845d5694ce5ac4ad9ed0a33d00278d6e7fe89e807f899d26370201e000", + "=> f8010001427b4ce78ca662f6f0563d93324c1e4f7b48176ba46c599990fd8723ccaf6eccf601015beb3dccbdaafff7bc848930b20471ae36d36930ecde26529a5e8de93b7e995d", + "<= 40007b4ce78ca662f6f0563d93324c1e4f7b48176ba46c599990fd8723ccaf6eccf6e000", + "=> f80100014442420004abca6f64bf88995f2028feaf1c91dc5e4e2b6cd28b1c13727e306f394d94a31b69e8c704c3a6486b58cfafec8acb9ecc80e298e2b5f18ed79b1150da93ea9c4e", + "<= 41abca6f64bf88995f2028feaf1c91dc5e4e2b6cd28b1c13727e306f394d94a31b0400e000", + "=> f80100016296a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc702026da3617e3bf0fd3b55939f8a193a7f7c63c7988572084ac793b609d54a34eae978850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d", + "<= 400096a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7e000", + "=> f80100010402020000", + "<= 41abca6f64bf88995f2028feaf1c91dc5e4e2b6cd28b1c13727e306f394d94a31b0401e000", + "=> f8010001626da3617e3bf0fd3b55939f8a193a7f7c63c7988572084ac793b609d54a34eae9020296a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc778850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d", + "<= 40006da3617e3bf0fd3b55939f8a193a7f7c63c7988572084ac793b609d54a34eae9e000", + "=> f80100012523230002038ab11ef46b48b55f00c53efddf38cddff9d6335bcaf52fa9f993847f2ccd2f57", + "<= 4169e8c704c3a6486b58cfafec8acb9ecc80e298e2b5f18ed79b1150da93ea9c4e0401e000", + "=> f8010001625e645f9c8dcce58b4c6cc0e24f68c31472f4c4ba9660890b2453d6b269fae5460202bf75113f4cb8d618da99aea63b2628e422514c2556855381320360614db469393af96250c7ed19c0855fdd4441f0e8c48e7906a79fce0547e184c7784ac90275", + "<= 40005e645f9c8dcce58b4c6cc0e24f68c31472f4c4ba9660890b2453d6b269fae546e000", + "=> f80100011b191900f5acc2fd3100008001000080000000800100000002000000", + "<= 41abca6f64bf88995f2028feaf1c91dc5e4e2b6cd28b1c13727e306f394d94a31b0402e000", + "=> f801000162583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d02024f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a407c7ee5b5dc5d2ad2e00e58ad09f0eb5645f3682a2a64885d727b7d78c27ec80", + "<= 4000583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f80100010402020003", + "<= 41abca6f64bf88995f2028feaf1c91dc5e4e2b6cd28b1c13727e306f394d94a31b0403e000", + "=> f8010001624f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a40202583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d07c7ee5b5dc5d2ad2e00e58ad09f0eb5645f3682a2a64885d727b7d78c27ec80", + "<= 40004f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f80100010402020004", + "<= 42abca6f64bf88995f2028feaf1c91dc5e4e2b6cd28b1c13727e306f394d94a31b583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f8010001020102", + "<= 41abca6f64bf88995f2028feaf1c91dc5e4e2b6cd28b1c13727e306f394d94a31b0402e000", + "=> f801000162583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d02024f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a407c7ee5b5dc5d2ad2e00e58ad09f0eb5645f3682a2a64885d727b7d78c27ec80", + "<= 4169e8c704c3a6486b58cfafec8acb9ecc80e298e2b5f18ed79b1150da93ea9c4e0402e000", + "=> f801000162683d2e718805c631347e63ebac02d0bde77cfc60360cc4575265944f41dc3e11020223a411f1c8c7e29552ff2e7dbd041743b39ff62bf8ec7c8d992fd74f1287e4d001e34d32abeddcbdc3c292be29e3eb706073be3c159d9051aa26e2ee4205deaa", + "<= 4000683d2e718805c631347e63ebac02d0bde77cfc60360cc4575265944f41dc3e11e000", + "=> f80100010b090900f571080000000000", + "<= 42abca6f64bf88995f2028feaf1c91dc5e4e2b6cd28b1c13727e306f394d94a31b4f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f8010001020103", + "<= 41abca6f64bf88995f2028feaf1c91dc5e4e2b6cd28b1c13727e306f394d94a31b0403e000", + "=> f8010001624f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a40202583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d07c7ee5b5dc5d2ad2e00e58ad09f0eb5645f3682a2a64885d727b7d78c27ec80", + "<= 4169e8c704c3a6486b58cfafec8acb9ecc80e298e2b5f18ed79b1150da93ea9c4e0403e000", + "=> f80100016223a411f1c8c7e29552ff2e7dbd041743b39ff62bf8ec7c8d992fd74f1287e4d00202683d2e718805c631347e63ebac02d0bde77cfc60360cc4575265944f41dc3e1101e34d32abeddcbdc3c292be29e3eb706073be3c159d9051aa26e2ee4205deaa", + "<= 400023a411f1c8c7e29552ff2e7dbd041743b39ff62bf8ec7c8d992fd74f1287e4d0e000", + "=> f80100011a181800a9146d4852daf3a5409f77216dbb8ea3d592312d7ee987", + "<= 41aa8087e303482fa846597853314be4e1ed3096d7efadf1b257dd324d70dd13d90100e000", + "=> f801000122aa8087e303482fa846597853314be4e1ed3096d7efadf1b257dd324d70dd13d90000", + "<= 4000aa8087e303482fa846597853314be4e1ed3096d7efadf1b257dd324d70dd13d9e000", + "=> f8010001868484005b66356163633266642f3439272f31272f30275d74707562444338373176474c41694b50637741773232456a684b564c6b354c393855475842456347523867706369674c5156444466676359573234514245795448545346456a674a6762614855384364526939766d473463506d316b504c6d5a684a45503137464d42644e68656833", + "<= 41aa8087e303482fa846597853314be4e1ed3096d7efadf1b257dd324d70dd13d90100e000", + "=> f801000122aa8087e303482fa846597853314be4e1ed3096d7efadf1b257dd324d70dd13d90000", + "<= 4000aa8087e303482fa846597853314be4e1ed3096d7efadf1b257dd324d70dd13d9e000", + "=> f8010001868484005b66356163633266642f3439272f31272f30275d74707562444338373176474c41694b50637741773232456a684b564c6b354c393855475842456347523867706369674c5156444466676359573234514245795448545346456a674a6762614855384364526939766d473463506d316b504c6d5a684a45503137464d42644e68656833", + "<= 41185a2fac562419c1ce8ed936d13cfe9ca4be0bec1a0d84f8ce433763fc6d41d50100e000", + "=> f801000122185a2fac562419c1ce8ed936d13cfe9ca4be0bec1a0d84f8ce433763fc6d41d50000", + "<= 4000185a2fac562419c1ce8ed936d13cfe9ca4be0bec1a0d84f8ce433763fc6d41d5e000", + "=> f801000144424200075db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb47f55bba17c04a1932f489a21cfebc3cec358b6f0a36eb1bef0781a2079b975c09", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470700e000", + "=> f80100018296a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc70303b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d29ec7e94594c19f8df3adf81222ed71ec0249dbf196079fb25e3ee4086122c081556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 400096a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7e000", + "=> f80100010402020000", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470701e000", + "=> f801000182b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2030396a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc79ec7e94594c19f8df3adf81222ed71ec0249dbf196079fb25e3ee4086122c081556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 4000b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f80100010402020001", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470702e000", + "=> f8010001824f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4030322b60d1dd304e8034bc9b59d9cde3d3ecb2a33e8eab07c2d4219e38bd35e626ba20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 40004f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f80100010402020004", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470703e000", + "=> f80100018222b60d1dd304e8034bc9b59d9cde3d3ecb2a33e8eab07c2d4219e38bd35e626b03034f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4a20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 400022b60d1dd304e8034bc9b59d9cde3d3ecb2a33e8eab07c2d4219e38bd35e626be000", + "=> f80100012523230006024ba3b77d933de9fa3f9583348c40f3caaf2effad5b6e244ece8abbfcc7244f67", + "<= 41f55bba17c04a1932f489a21cfebc3cec358b6f0a36eb1bef0781a2079b975c090703e000", + "=> f80100018206926cbaf52867d55e7cc3fa229bddde40a669a9db2ff5b030b4d7f1cb6219ef0303d49f480874f2962de229abe9e05b66a3edc62a141206ef314febf28bacfc88f35cff501957d2881fdd31885a4781a443a7642980d82b5b0a0b4a4047646c729bbdb89efd14836c2acfc10d1e0e3ad12bbc390f3ed61965e3cc82eeb85e0eeacb", + "<= 400006926cbaf52867d55e7cc3fa229bddde40a669a9db2ff5b030b4d7f1cb6219efe000", + "=> f80100011b191900f5acc2fd3100008001000080000000800100000000000000", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470704e000", + "=> f8010001829f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b19603033b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae905090298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe741b9294b7a661990a19adec4b47beafc01622c906df7d4d71be96671ed33a927", + "<= 40009f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196e000", + "=> f8010001040202000e", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470705e000", + "=> f8010001823b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae9050903039f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b1960298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe741b9294b7a661990a19adec4b47beafc01622c906df7d4d71be96671ed33a927", + "<= 40003b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae90509e000", + "=> f8010001040202000f", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470706e000", + "=> f8010001620298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe70202e80cc247985bb408a9484b6fd53b538c321cab413033bb288ba55747dfadb6ba41b9294b7a661990a19adec4b47beafc01622c906df7d4d71be96671ed33a927", + "<= 40000298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7e000", + "=> f80100010402020010", + "<= 425db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb47b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f8010001020101", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470701e000", + "=> f801000182b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2030396a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc79ec7e94594c19f8df3adf81222ed71ec0249dbf196079fb25e3ee4086122c081556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 41f55bba17c04a1932f489a21cfebc3cec358b6f0a36eb1bef0781a2079b975c090701e000", + "=> f8010001825e638757b66f5ff0846e56011c1386362df1e7371ba2f140616dcf0da6ef002e0303524b62b12a29bb8a1e47760efe6f1d40999d524cffb37a199d3c9714ac6b60b131efa8ceeba29c958140ba4f3b42522d76940d284d4787b95434d7a88b65101fbdb89efd14836c2acfc10d1e0e3ad12bbc390f3ed61965e3cc82eeb85e0eeacb", + "<= 40005e638757b66f5ff0846e56011c1386362df1e7371ba2f140616dcf0da6ef002ee000", + "=> f8010001232121007f661b000000000017a914f0464d9fa0ea42d80e4d5f1457883982e23b8eec87", + "<= 425db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb474f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f8010001020102", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470702e000", + "=> f8010001824f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4030322b60d1dd304e8034bc9b59d9cde3d3ecb2a33e8eab07c2d4219e38bd35e626ba20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 41f55bba17c04a1932f489a21cfebc3cec358b6f0a36eb1bef0781a2079b975c090702e000", + "=> f801000182d49f480874f2962de229abe9e05b66a3edc62a141206ef314febf28bacfc88f3030306926cbaf52867d55e7cc3fa229bddde40a669a9db2ff5b030b4d7f1cb6219ef5cff501957d2881fdd31885a4781a443a7642980d82b5b0a0b4a4047646c729bbdb89efd14836c2acfc10d1e0e3ad12bbc390f3ed61965e3cc82eeb85e0eeacb", + "<= 4000d49f480874f2962de229abe9e05b66a3edc62a141206ef314febf28bacfc88f3e000", + "=> f8010001191717000014cb078087eff485aaa2260e94a53d7d6d1c5dd151", + "<= 41185a2fac562419c1ce8ed936d13cfe9ca4be0bec1a0d84f8ce433763fc6d41d50100e000", + "=> f801000122185a2fac562419c1ce8ed936d13cfe9ca4be0bec1a0d84f8ce433763fc6d41d50000", + "<= 4000185a2fac562419c1ce8ed936d13cfe9ca4be0bec1a0d84f8ce433763fc6d41d5e000", + "=> f801000144424200075db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb47f55bba17c04a1932f489a21cfebc3cec358b6f0a36eb1bef0781a2079b975c09", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470700e000", + "=> f80100018296a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc70303b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d29ec7e94594c19f8df3adf81222ed71ec0249dbf196079fb25e3ee4086122c081556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 400096a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7e000", + "=> f80100010402020000", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470701e000", + "=> f801000182b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2030396a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc79ec7e94594c19f8df3adf81222ed71ec0249dbf196079fb25e3ee4086122c081556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 4000b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f80100010402020001", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470702e000", + "=> f8010001824f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4030322b60d1dd304e8034bc9b59d9cde3d3ecb2a33e8eab07c2d4219e38bd35e626ba20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 40004f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f80100010402020004", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470703e000", + "=> f80100018222b60d1dd304e8034bc9b59d9cde3d3ecb2a33e8eab07c2d4219e38bd35e626b03034f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4a20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 400022b60d1dd304e8034bc9b59d9cde3d3ecb2a33e8eab07c2d4219e38bd35e626be000", + "=> f80100012523230006024ba3b77d933de9fa3f9583348c40f3caaf2effad5b6e244ece8abbfcc7244f67", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470704e000", + "=> f8010001829f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b19603033b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae905090298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe741b9294b7a661990a19adec4b47beafc01622c906df7d4d71be96671ed33a927", + "<= 40009f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196e000", + "=> f8010001040202000e", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470705e000", + "=> f8010001823b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae9050903039f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b1960298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe741b9294b7a661990a19adec4b47beafc01622c906df7d4d71be96671ed33a927", + "<= 40003b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae90509e000", + "=> f8010001040202000f", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470706e000", + "=> f8010001620298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe70202e80cc247985bb408a9484b6fd53b538c321cab413033bb288ba55747dfadb6ba41b9294b7a661990a19adec4b47beafc01622c906df7d4d71be96671ed33a927", + "<= 40000298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7e000", + "=> f80100010402020010", + "<= 425db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb479f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196e000", + "=> f8010001020104", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470704e000", + "=> f8010001829f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b19603033b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae905090298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe741b9294b7a661990a19adec4b47beafc01622c906df7d4d71be96671ed33a927", + "<= 41f55bba17c04a1932f489a21cfebc3cec358b6f0a36eb1bef0781a2079b975c090704e000", + "=> f80100018299c5a9d616bcef076acd13f00af6f8a92dda8dda4b7b52400f76e841b502b144030386f9649499b0080656c014aa244f654864bad4145c8513e9c8409f437d4a2b3bb2db18c190abf44354f0286c60b2a6b6a2db6d1a36a6829e66298918b55e1d98d23fa41668b8601a8d5886f931e7d68dd5812cfc4f77cb8a516712c6d84b72ca", + "<= 400099c5a9d616bcef076acd13f00af6f8a92dda8dda4b7b52400f76e841b502b144e000", + "=> f80100012321210074f4c9a4da8d148bbb56e869aca3690dda0ce3acbcf81609cc946d1b6f164ace", + "<= 425db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb473b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae90509e000", + "=> f8010001020105", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470705e000", + "=> f8010001823b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae9050903039f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b1960298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe741b9294b7a661990a19adec4b47beafc01622c906df7d4d71be96671ed33a927", + "<= 41f55bba17c04a1932f489a21cfebc3cec358b6f0a36eb1bef0781a2079b975c090705e000", + "=> f80100018286f9649499b0080656c014aa244f654864bad4145c8513e9c8409f437d4a2b3b030399c5a9d616bcef076acd13f00af6f8a92dda8dda4b7b52400f76e841b502b144b2db18c190abf44354f0286c60b2a6b6a2db6d1a36a6829e66298918b55e1d98d23fa41668b8601a8d5886f931e7d68dd5812cfc4f77cb8a516712c6d84b72ca", + "<= 400086f9649499b0080656c014aa244f654864bad4145c8513e9c8409f437d4a2b3be000", + "=> f80100010705050001000000", + "<= 425db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7e000", + "=> f8010001020106", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470706e000", + "=> f8010001620298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe70202e80cc247985bb408a9484b6fd53b538c321cab413033bb288ba55747dfadb6ba41b9294b7a661990a19adec4b47beafc01622c906df7d4d71be96671ed33a927", + "<= 41f55bba17c04a1932f489a21cfebc3cec358b6f0a36eb1bef0781a2079b975c090706e000", + "=> f801000162b2db18c190abf44354f0286c60b2a6b6a2db6d1a36a6829e66298918b55e1d980202fc7d8483180a78b82fb5a4f706aa6857cfb0e54535424bdaea858144e99e2e3cd23fa41668b8601a8d5886f931e7d68dd5812cfc4f77cb8a516712c6d84b72ca", + "<= 4000b2db18c190abf44354f0286c60b2a6b6a2db6d1a36a6829e66298918b55e1d98e000", + "=> f801000107050500fdffffff", + "<= 41f4c4f92e968760845d5694ce5ac4ad9ed0a33d00278d6e7fe89e807f899d26370200e000", + "=> f8010001425beb3dccbdaafff7bc848930b20471ae36d36930ecde26529a5e8de93b7e995d01017b4ce78ca662f6f0563d93324c1e4f7b48176ba46c599990fd8723ccaf6eccf6", + "<= 40005beb3dccbdaafff7bc848930b20471ae36d36930ecde26529a5e8de93b7e995de000", + "=> f8010001444242000278850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8dab87f2b73191a9f783cbb8521fdba8927f4a06e81b7d5d89f46c950a08a5727b", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0200e000", + "=> f801000142583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d01014f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4", + "<= 4000583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f80100010402020003", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0201e000", + "=> f8010001424f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a40101583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d", + "<= 40004f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f80100010402020004", + "<= 4278850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f8010001020100", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0200e000", + "=> f801000142583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d01014f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4", + "<= 41ab87f2b73191a9f783cbb8521fdba8927f4a06e81b7d5d89f46c950a08a5727b0200e000", + "=> f8010001424a59f387199f104044cf6a49e4ff56d7a879d65f0fb64e6e0d5a27df0610e5ff01013cf62b1b5247aa06ddd823fe7303f7b1a210df8b78844f3490b22a04949180bd", + "<= 40004a59f387199f104044cf6a49e4ff56d7a879d65f0fb64e6e0d5a27df0610e5ffe000", + "=> f80100010b09090050d4120000000000", + "<= 4278850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d4f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f8010001020101", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0201e000", + "=> f8010001424f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a40101583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d", + "<= 41ab87f2b73191a9f783cbb8521fdba8927f4a06e81b7d5d89f46c950a08a5727b0201e000", + "=> f8010001423cf62b1b5247aa06ddd823fe7303f7b1a210df8b78844f3490b22a04949180bd01014a59f387199f104044cf6a49e4ff56d7a879d65f0fb64e6e0d5a27df0610e5ff", + "<= 40003cf62b1b5247aa06ddd823fe7303f7b1a210df8b78844f3490b22a04949180bde000", + "=> f80100011917170000143318e04fae6c12afcb009c69cd57e5b2504ae6b4", + "<= 41f4c4f92e968760845d5694ce5ac4ad9ed0a33d00278d6e7fe89e807f899d26370201e000", + "=> f8010001427b4ce78ca662f6f0563d93324c1e4f7b48176ba46c599990fd8723ccaf6eccf601015beb3dccbdaafff7bc848930b20471ae36d36930ecde26529a5e8de93b7e995d", + "<= 40007b4ce78ca662f6f0563d93324c1e4f7b48176ba46c599990fd8723ccaf6eccf6e000", + "=> f80100014442420004abca6f64bf88995f2028feaf1c91dc5e4e2b6cd28b1c13727e306f394d94a31b69e8c704c3a6486b58cfafec8acb9ecc80e298e2b5f18ed79b1150da93ea9c4e", + "<= 41abca6f64bf88995f2028feaf1c91dc5e4e2b6cd28b1c13727e306f394d94a31b0400e000", + "=> f80100016296a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc702026da3617e3bf0fd3b55939f8a193a7f7c63c7988572084ac793b609d54a34eae978850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d", + "<= 400096a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7e000", + "=> f80100010402020000", + "<= 41abca6f64bf88995f2028feaf1c91dc5e4e2b6cd28b1c13727e306f394d94a31b0401e000", + "=> f8010001626da3617e3bf0fd3b55939f8a193a7f7c63c7988572084ac793b609d54a34eae9020296a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc778850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d", + "<= 40006da3617e3bf0fd3b55939f8a193a7f7c63c7988572084ac793b609d54a34eae9e000", + "=> f80100012523230002038ab11ef46b48b55f00c53efddf38cddff9d6335bcaf52fa9f993847f2ccd2f57", + "<= 41abca6f64bf88995f2028feaf1c91dc5e4e2b6cd28b1c13727e306f394d94a31b0402e000", + "=> f801000162583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d02024f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a407c7ee5b5dc5d2ad2e00e58ad09f0eb5645f3682a2a64885d727b7d78c27ec80", + "<= 4000583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f80100010402020003", + "<= 41abca6f64bf88995f2028feaf1c91dc5e4e2b6cd28b1c13727e306f394d94a31b0403e000", + "=> f8010001624f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a40202583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d07c7ee5b5dc5d2ad2e00e58ad09f0eb5645f3682a2a64885d727b7d78c27ec80", + "<= 40004f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f80100010402020004", + "<= 42abca6f64bf88995f2028feaf1c91dc5e4e2b6cd28b1c13727e306f394d94a31b583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f8010001020102", + "<= 41abca6f64bf88995f2028feaf1c91dc5e4e2b6cd28b1c13727e306f394d94a31b0402e000", + "=> f801000162583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d02024f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a407c7ee5b5dc5d2ad2e00e58ad09f0eb5645f3682a2a64885d727b7d78c27ec80", + "<= 4169e8c704c3a6486b58cfafec8acb9ecc80e298e2b5f18ed79b1150da93ea9c4e0402e000", + "=> f801000162683d2e718805c631347e63ebac02d0bde77cfc60360cc4575265944f41dc3e11020223a411f1c8c7e29552ff2e7dbd041743b39ff62bf8ec7c8d992fd74f1287e4d001e34d32abeddcbdc3c292be29e3eb706073be3c159d9051aa26e2ee4205deaa", + "<= 4000683d2e718805c631347e63ebac02d0bde77cfc60360cc4575265944f41dc3e11e000", + "=> f80100010b090900f571080000000000", + "<= 42abca6f64bf88995f2028feaf1c91dc5e4e2b6cd28b1c13727e306f394d94a31b4f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f8010001020103", + "<= 41abca6f64bf88995f2028feaf1c91dc5e4e2b6cd28b1c13727e306f394d94a31b0403e000", + "=> f8010001624f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a40202583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d07c7ee5b5dc5d2ad2e00e58ad09f0eb5645f3682a2a64885d727b7d78c27ec80", + "<= 4169e8c704c3a6486b58cfafec8acb9ecc80e298e2b5f18ed79b1150da93ea9c4e0403e000", + "=> f80100016223a411f1c8c7e29552ff2e7dbd041743b39ff62bf8ec7c8d992fd74f1287e4d00202683d2e718805c631347e63ebac02d0bde77cfc60360cc4575265944f41dc3e1101e34d32abeddcbdc3c292be29e3eb706073be3c159d9051aa26e2ee4205deaa", + "<= 400023a411f1c8c7e29552ff2e7dbd041743b39ff62bf8ec7c8d992fd74f1287e4d0e000", + "=> f80100011a181800a9146d4852daf3a5409f77216dbb8ea3d592312d7ee987", + "<= 41185a2fac562419c1ce8ed936d13cfe9ca4be0bec1a0d84f8ce433763fc6d41d50100e000", + "=> f801000122185a2fac562419c1ce8ed936d13cfe9ca4be0bec1a0d84f8ce433763fc6d41d50000", + "<= 4000185a2fac562419c1ce8ed936d13cfe9ca4be0bec1a0d84f8ce433763fc6d41d5e000", + "=> f801000144424200075db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb47f55bba17c04a1932f489a21cfebc3cec358b6f0a36eb1bef0781a2079b975c09", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470700e000", + "=> f80100018296a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc70303b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d29ec7e94594c19f8df3adf81222ed71ec0249dbf196079fb25e3ee4086122c081556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 400096a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7e000", + "=> f80100010402020000", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470701e000", + "=> f801000182b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2030396a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc79ec7e94594c19f8df3adf81222ed71ec0249dbf196079fb25e3ee4086122c081556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 4000b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f80100010402020001", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470702e000", + "=> f8010001824f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4030322b60d1dd304e8034bc9b59d9cde3d3ecb2a33e8eab07c2d4219e38bd35e626ba20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 40004f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f80100010402020004", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470703e000", + "=> f80100018222b60d1dd304e8034bc9b59d9cde3d3ecb2a33e8eab07c2d4219e38bd35e626b03034f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4a20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 400022b60d1dd304e8034bc9b59d9cde3d3ecb2a33e8eab07c2d4219e38bd35e626be000", + "=> f80100012523230006024ba3b77d933de9fa3f9583348c40f3caaf2effad5b6e244ece8abbfcc7244f67", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470704e000", + "=> f8010001829f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b19603033b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae905090298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe741b9294b7a661990a19adec4b47beafc01622c906df7d4d71be96671ed33a927", + "<= 40009f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196e000", + "=> f8010001040202000e", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470705e000", + "=> f8010001823b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae9050903039f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b1960298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe741b9294b7a661990a19adec4b47beafc01622c906df7d4d71be96671ed33a927", + "<= 40003b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae90509e000", + "=> f8010001040202000f", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470706e000", + "=> f8010001620298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe70202e80cc247985bb408a9484b6fd53b538c321cab413033bb288ba55747dfadb6ba41b9294b7a661990a19adec4b47beafc01622c906df7d4d71be96671ed33a927", + "<= 40000298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7e000", + "=> f80100010402020010", + "<= 425db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb47b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f8010001020101", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470701e000", + "=> f801000182b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2030396a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc79ec7e94594c19f8df3adf81222ed71ec0249dbf196079fb25e3ee4086122c081556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 41f55bba17c04a1932f489a21cfebc3cec358b6f0a36eb1bef0781a2079b975c090701e000", + "=> f8010001825e638757b66f5ff0846e56011c1386362df1e7371ba2f140616dcf0da6ef002e0303524b62b12a29bb8a1e47760efe6f1d40999d524cffb37a199d3c9714ac6b60b131efa8ceeba29c958140ba4f3b42522d76940d284d4787b95434d7a88b65101fbdb89efd14836c2acfc10d1e0e3ad12bbc390f3ed61965e3cc82eeb85e0eeacb", + "<= 40005e638757b66f5ff0846e56011c1386362df1e7371ba2f140616dcf0da6ef002ee000", + "=> f8010001232121007f661b000000000017a914f0464d9fa0ea42d80e4d5f1457883982e23b8eec87", + "<= 425db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb479f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196e000", + "=> f8010001020104", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470704e000", + "=> f8010001829f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b19603033b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae905090298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe741b9294b7a661990a19adec4b47beafc01622c906df7d4d71be96671ed33a927", + "<= 41f55bba17c04a1932f489a21cfebc3cec358b6f0a36eb1bef0781a2079b975c090704e000", + "=> f80100018299c5a9d616bcef076acd13f00af6f8a92dda8dda4b7b52400f76e841b502b144030386f9649499b0080656c014aa244f654864bad4145c8513e9c8409f437d4a2b3bb2db18c190abf44354f0286c60b2a6b6a2db6d1a36a6829e66298918b55e1d98d23fa41668b8601a8d5886f931e7d68dd5812cfc4f77cb8a516712c6d84b72ca", + "<= 400099c5a9d616bcef076acd13f00af6f8a92dda8dda4b7b52400f76e841b502b144e000", + "=> f80100012321210074f4c9a4da8d148bbb56e869aca3690dda0ce3acbcf81609cc946d1b6f164ace", + "<= 425db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb473b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae90509e000", + "=> f8010001020105", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470705e000", + "=> f8010001823b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae9050903039f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b1960298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe741b9294b7a661990a19adec4b47beafc01622c906df7d4d71be96671ed33a927", + "<= 41f55bba17c04a1932f489a21cfebc3cec358b6f0a36eb1bef0781a2079b975c090705e000", + "=> f80100018286f9649499b0080656c014aa244f654864bad4145c8513e9c8409f437d4a2b3b030399c5a9d616bcef076acd13f00af6f8a92dda8dda4b7b52400f76e841b502b144b2db18c190abf44354f0286c60b2a6b6a2db6d1a36a6829e66298918b55e1d98d23fa41668b8601a8d5886f931e7d68dd5812cfc4f77cb8a516712c6d84b72ca", + "<= 400086f9649499b0080656c014aa244f654864bad4145c8513e9c8409f437d4a2b3be000", + "=> f80100010705050001000000", + "<= 425db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb47b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f8010001020101", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470701e000", + "=> f801000182b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2030396a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc79ec7e94594c19f8df3adf81222ed71ec0249dbf196079fb25e3ee4086122c081556f87d6bab12cfa0bcc37ae4314c85806da36666703a8d4c14ab6dc753f2744", + "<= 41f55bba17c04a1932f489a21cfebc3cec358b6f0a36eb1bef0781a2079b975c090701e000", + "=> f8010001825e638757b66f5ff0846e56011c1386362df1e7371ba2f140616dcf0da6ef002e0303524b62b12a29bb8a1e47760efe6f1d40999d524cffb37a199d3c9714ac6b60b131efa8ceeba29c958140ba4f3b42522d76940d284d4787b95434d7a88b65101fbdb89efd14836c2acfc10d1e0e3ad12bbc390f3ed61965e3cc82eeb85e0eeacb", + "<= 40005e638757b66f5ff0846e56011c1386362df1e7371ba2f140616dcf0da6ef002ee000", + "=> f8010001232121007f661b000000000017a914f0464d9fa0ea42d80e4d5f1457883982e23b8eec87", + "<= 425db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7e000", + "=> f8010001020106", + "<= 415db13d2321099314884a7e75d2e7d226489fd8e4db5afbd695b92ae31e66eb470706e000", + "=> f8010001620298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe70202e80cc247985bb408a9484b6fd53b538c321cab413033bb288ba55747dfadb6ba41b9294b7a661990a19adec4b47beafc01622c906df7d4d71be96671ed33a927", + "<= 41f55bba17c04a1932f489a21cfebc3cec358b6f0a36eb1bef0781a2079b975c090706e000", + "=> f801000162b2db18c190abf44354f0286c60b2a6b6a2db6d1a36a6829e66298918b55e1d980202fc7d8483180a78b82fb5a4f706aa6857cfb0e54535424bdaea858144e99e2e3cd23fa41668b8601a8d5886f931e7d68dd5812cfc4f77cb8a516712c6d84b72ca", + "<= 4000b2db18c190abf44354f0286c60b2a6b6a2db6d1a36a6829e66298918b55e1d98e000", + "=> f801000107050500fdffffff", + "<= 100021024ba3b77d933de9fa3f9583348c40f3caaf2effad5b6e244ece8abbfcc7244f6730440220720722b08489c2a50d10edea8e21880086c8e8f22889a16815e306daeea4665b02203fcf453fa490b76cf4f929714065fc90a519b7b97ab18914f9451b5a4b45241201e000", + "=> f801000100", + "<= 9000" + ], + "sigs": [] + }, + { + "name": "Liana", + "policy": "wsh(or_d(pk(@0/<0;1>/*),and_v(v:pkh(@1/<0;1>/*),older(10))))", + "keys": [ + "[f5acc2fd]tpubD6NzVbkrYhZ4YgUx2ZLNt2rLYAMTdYysCRzKoLu2BeSHKvzqPaBDvf17GeBPnExUVPkuBpx4kniP964e2MxyzzazcXLptxLXModSVCVEV1T", + "[8a64f2a9]tpubD6NzVbkrYhZ4WmzFjvQrp7sDa4ECUxTi9oby8K4FZkd3XCBtEdKwUiQyYJaxiJo5y42gyDWEczrFpozEjeLxMPxjf2WtkfcbpUdfvNnozWF" + ], + "hmac": "c8a3e4599fb45c3f0bb19cc0527082a0f7260c3e2d9572b89b9e56c015d46571", + "psbt": "cHNidP8BAFICAAAAAUSHuliRtuCX1S6JxRuDRqDCKkWfKmWL5sV9ukZ/wzvfAAAAAAD9////AYgTAAAAAAAAFgAUqo7zdMr638p2kC3bXPYcYLv9nYUAAAAAAAEA/aABAgAAAAABAtAGpuGhTmK0vRJDepa1mynHf0Mkr131IPWntT5688UGAQAAAAD9////mdJfANQE0DT+aJkb7HxEgMXaiQJMG0N2rZ7W8uPNV/IAAAAAAP3///8BECcAAAAAAAAiACCCMkkIxgk3ssf6ylEMfKqG44SXjQolQpYgST3ckV+lygJHMEQCIAwbhvKJJaR0VD9kllZaKuigpIYHCEQLSRM/1MCbQhGtAiBWQnmyk4cbQhTicn19PLftc4LYOimEPsrTuph38fT23QFBIQN45pCxJ5gMJnUJ4+QLYEmWt0cOKESWnlj2y8I31G2X0axzZHapFIxY4f1q3kD+aerUUfBNBOKnkGojiK1asmgCSDBFAiEApwLr/1lmyJXSDrC3rWaHOGl5ls2dU4YoEmLTxKhibVgCIGhtnjpEuQFA7QzhoHCZWz+apKMSnCBS7dW1znAdQjTgAUEhA/bp4cSva5sUDoPHbdrl6Zj1MNMEqaXBgIfjiPRXWHxurHNkdqkUyXCPVy2ZM1C6QosNzsZs5dtd1AGIrVqyaAAAAAABASsQJwAAAAAAACIAIIIySQjGCTeyx/rKUQx8qobjhJeNCiVCliBJPdyRX6XKAQVBIQI2cqWpc9UAW2gZt2WkKjvi8KoMCui00pRlL6wG32uKDKxzZHapFNYASzIYkEdH9bJz6nnqUG3uBB8kiK1asmgiBgI2cqWpc9UAW2gZt2WkKjvi8KoMCui00pRlL6wG32uKDAz1rML9AAAAAG8AAAAiBgMLcbOxsfLe6+3r1UcjQo77HY0As8OKE4l37yj0/qhIyQyKZPKpAAAAAG8AAAAAAA==", + "exchanges": [ + "=> e1040001c305519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216206d0d3e783926a53f1a696f04944e03bc43440cf47684d9a959e98d2add8510f101037c228f5f56f52fe83ea1c3b7572dd63822f29d9d833c0f98ebed414933436a018b5def765f486d77c85fbc5d730caedebc856a58a1cdfc3dad112d7e0690fdf1dbe3eabdd4ddf8480934d54c293003eb1da52339ac441b6439eea4cbce0fe337c8a3e4599fb45c3f0bb19cc0527082a0f7260c3e2d9572b89b9e56c015d46571", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200500e000", + "=> f801000182fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177f0303583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d4b8c129ed14cce2c08cfc6766db7f8cdb133b5f698b8de3d5890ea7ff7f0a8d195811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926", + "<= 4000fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177fe000", + "=> f80100010402020002", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200501e000", + "=> f801000182583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d0303fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177f4b8c129ed14cce2c08cfc6766db7f8cdb133b5f698b8de3d5890ea7ff7f0a8d195811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926", + "<= 4000583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f80100010402020003", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200502e000", + "=> f8010001824f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a403039f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3d52c56b473e5246933e7852989cd9feba3b38f078742b93afff1e65ed4679782595811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926", + "<= 40004f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f80100010402020004", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200503e000", + "=> f8010001829f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3d03034f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a452c56b473e5246933e7852989cd9feba3b38f078742b93afff1e65ed4679782595811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926", + "<= 40009f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3de000", + "=> f80100010402020005", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200504e000", + "=> f80100014295811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926010112885c5025dece82b9e180bdaf19d6e5571772906c9c24de31790023755c8888", + "<= 400095811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926e000", + "=> f801000104020200fb", + "<= 42519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e31321620fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177fe000", + "=> f8010001020100", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200500e000", + "=> f801000182fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177f0303583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d4b8c129ed14cce2c08cfc6766db7f8cdb133b5f698b8de3d5890ea7ff7f0a8d195811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926", + "<= 416d0d3e783926a53f1a696f04944e03bc43440cf47684d9a959e98d2add8510f10500e000", + "=> f8010001820bd288cecce2dfc6c9b9245ab747a10870f84c16e986e61b259603b59cf1f3b903038855508aade16ec573d21e6a485dfd0a7624085c1a14b5ecdd6485de0c6839a4c178813b8617f884a8135fd9f95e1a4596188ab7705a3356480c01c0f977db930bd288cecce2dfc6c9b9245ab747a10870f84c16e986e61b259603b59cf1f3b9", + "<= 40000bd288cecce2dfc6c9b9245ab747a10870f84c16e986e61b259603b59cf1f3b9e000", + "=> f80100010705050002000000", + "<= 42519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e31321620583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f8010001020101", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200501e000", + "=> f801000182583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d0303fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177f4b8c129ed14cce2c08cfc6766db7f8cdb133b5f698b8de3d5890ea7ff7f0a8d195811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926", + "<= 416d0d3e783926a53f1a696f04944e03bc43440cf47684d9a959e98d2add8510f10501e000", + "=> f8010001828855508aade16ec573d21e6a485dfd0a7624085c1a14b5ecdd6485de0c6839a403030bd288cecce2dfc6c9b9245ab747a10870f84c16e986e61b259603b59cf1f3b9c178813b8617f884a8135fd9f95e1a4596188ab7705a3356480c01c0f977db930bd288cecce2dfc6c9b9245ab747a10870f84c16e986e61b259603b59cf1f3b9", + "<= 40008855508aade16ec573d21e6a485dfd0a7624085c1a14b5ecdd6485de0c6839a4e000", + "=> f80100010705050000000000", + "<= 4000dbe3eabdd4ddf8480934d54c293003eb1da52339ac441b6439eea4cbce0fe337e000", + "=> f80100014b494902054c69616e613c23cb3aec15a5b15abd88ae00c265e39047a899deadba2c181dd48712f2ccc1c902445ba5a280b8491a67992b3d7a722dbe6e89cda68112dd72cb1816fd70f1cfd8", + "<= 400023cb3aec15a5b15abd88ae00c265e39047a899deadba2c181dd48712f2ccc1c9e000", + "=> f80100013e3c3c777368286f725f6428706b2840302f3c303b313e2f2a292c616e645f7628763a706b682840312f3c303b313e2f2a292c6f6c64657228313029292929", + "<= 41445ba5a280b8491a67992b3d7a722dbe6e89cda68112dd72cb1816fd70f1cfd80200e000", + "=> f801000142ad123cb4a90beb3e9b9e3eb811b9119a8f0b2c011f9833d86aadaec5c4937fbf010160dcf3ace170d59f287f4047d6d7ac279e2bd16f6a64a06424bebdf9dfa43224", + "<= 4000ad123cb4a90beb3e9b9e3eb811b9119a8f0b2c011f9833d86aadaec5c4937fbfe000", + "=> f80100017c7a7a005b66356163633266645d7470756244364e7a56626b7259685a3459675578325a4c4e7432724c59414d546459797343527a4b6f4c7532426553484b767a715061424476663137476542506e45785556506b75427078346b6e695039363465324d78797a7a617a63584c7074784c584d6f645356435645563154", + "<= 41037c228f5f56f52fe83ea1c3b7572dd63822f29d9d833c0f98ebed414933436a0100e000", + "=> f801000122037c228f5f56f52fe83ea1c3b7572dd63822f29d9d833c0f98ebed414933436a0000", + "<= 4000037c228f5f56f52fe83ea1c3b7572dd63822f29d9d833c0f98ebed414933436ae000", + "=> f80100014442420008c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c534a627f1af4b7364354aed3f80c68ca92c8556f167b5ac3ed22491e8b476f1f", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0800e000", + "=> f80100018296a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc70303b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e32ce487982439e86bb2e85fbf23a23e57e9e9c035b48ab36503db94bf7f2c95937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 400096a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7e000", + "=> f80100010402020000", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0801e000", + "=> f801000182b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2030396a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7e32ce487982439e86bb2e85fbf23a23e57e9e9c035b48ab36503db94bf7f2c95937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 4000b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f80100010402020001", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0802e000", + "=> f8010001829f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3d0303ee2630dfb041c6cd08b691fb53e9ebe70b5ba7c2505395b976580b295c0a3248a20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 40009f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3de000", + "=> f80100010402020005", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0803e000", + "=> f801000182ee2630dfb041c6cd08b691fb53e9ebe70b5ba7c2505395b976580b295c0a324803039f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3da20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 4000ee2630dfb041c6cd08b691fb53e9ebe70b5ba7c2505395b976580b295c0a3248e000", + "=> f80100012523230006023672a5a973d5005b6819b765a42a3be2f0aa0c0ae8b4d294652fac06df6b8a0c", + "<= 41534a627f1af4b7364354aed3f80c68ca92c8556f167b5ac3ed22491e8b476f1f0803e000", + "=> f8010001827f3adc432d3c39917e976e58ec485e527f289d392ab33b31916764f36c9d894303035d268f3545bd312a3c5a295201ef2aa703e369de7d86c803fbb0e109466d6dffc614a95f1ac1b9df12642b5a63f6fe46b24f698279d31b7fdc0932cd659249481f9328faa79270ddd8f0fea6ea43743b0a7684896a10b6f5b406ae6d2f02ab7e", + "<= 40007f3adc432d3c39917e976e58ec485e527f289d392ab33b31916764f36c9d8943e000", + "=> f80100010f0d0d00f5acc2fd000000006f000000", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0804e000", + "=> f8010001823ab22b6a812def10b050a160971b6cf3b65b527d14907ff06719ed801080ff5b03039f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196d19379c3b959d2f633568f4389726312ac69bd8e3783436175c33216b545ff0130265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 40003ab22b6a812def10b050a160971b6cf3b65b527d14907ff06719ed801080ff5be000", + "=> f80100012523230006030b71b3b1b1f2deebedebd54723428efb1d8d00b3c38a138977ef28f4fea848c9", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0805e000", + "=> f8010001829f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b19603033ab22b6a812def10b050a160971b6cf3b65b527d14907ff06719ed801080ff5bd19379c3b959d2f633568f4389726312ac69bd8e3783436175c33216b545ff0130265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 40009f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196e000", + "=> f8010001040202000e", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0806e000", + "=> f8010001823b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae9050903030298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe79c91404e1a62af83954606c76656027170bb2435beb199254669e98b6a6fa2eb30265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 40003b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae90509e000", + "=> f8010001040202000f", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0807e000", + "=> f8010001820298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe703033b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae905099c91404e1a62af83954606c76656027170bb2435beb199254669e98b6a6fa2eb30265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 40000298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7e000", + "=> f80100010402020010", + "<= 42c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c9f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196e000", + "=> f8010001020105", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0805e000", + "=> f8010001829f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b19603033ab22b6a812def10b050a160971b6cf3b65b527d14907ff06719ed801080ff5bd19379c3b959d2f633568f4389726312ac69bd8e3783436175c33216b545ff0130265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 41534a627f1af4b7364354aed3f80c68ca92c8556f167b5ac3ed22491e8b476f1f0805e000", + "=> f8010001821818880692dd7fb3356ce5d278aa10156a9596c5f8fcac63b2798676bff307560303d36539a2ab83df7adf832fe88afc0b1ce50963c75a0824e077c5375d64db69fc323555107b1388d25445e79ff3d0806e8c9e9eb4c03589a10b492778a9883aa7e893093cdbdae78c6b639d9e8cc0dc926ec3387eb7742d459fbfb72d141f9738", + "<= 40001818880692dd7fb3356ce5d278aa10156a9596c5f8fcac63b2798676bff30756e000", + "=> f8010001232121004487ba5891b6e097d52e89c51b8346a0c22a459f2a658be6c57dba467fc33bdf", + "<= 42c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c3b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae90509e000", + "=> f8010001020106", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0806e000", + "=> f8010001823b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae9050903030298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe79c91404e1a62af83954606c76656027170bb2435beb199254669e98b6a6fa2eb30265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 41534a627f1af4b7364354aed3f80c68ca92c8556f167b5ac3ed22491e8b476f1f0806e000", + "=> f8010001828855508aade16ec573d21e6a485dfd0a7624085c1a14b5ecdd6485de0c6839a40303b2db18c190abf44354f0286c60b2a6b6a2db6d1a36a6829e66298918b55e1d98183fe9cedb724d22f9bee015c3a71c631d2f3891c802b8131aab4749ead59a05e893093cdbdae78c6b639d9e8cc0dc926ec3387eb7742d459fbfb72d141f9738", + "<= 40008855508aade16ec573d21e6a485dfd0a7624085c1a14b5ecdd6485de0c6839a4e000", + "=> f80100010705050000000000", + "<= 42c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c96a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7e000", + "=> f8010001020100", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0800e000", + "=> f80100018296a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc70303b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e32ce487982439e86bb2e85fbf23a23e57e9e9c035b48ab36503db94bf7f2c95937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 41534a627f1af4b7364354aed3f80c68ca92c8556f167b5ac3ed22491e8b476f1f0800e000", + "=> f8010001821c987ce5ebb77d2f6b3ccbb175ccc7fffebaae9f1c4d84665698fec4974223e303036bdf666fb71bcaff0b8ea4589bbc640ed9deafa80d73053f5a6483ae45bb099bd8c104da07e82df9279b23059d05c947b3848bc31d70d2196aaeaa6f098c6bd31f9328faa79270ddd8f0fea6ea43743b0a7684896a10b6f5b406ae6d2f02ab7e", + "<= 40001c987ce5ebb77d2f6b3ccbb175ccc7fffebaae9f1c4d84665698fec4974223e3e000", + "=> f8010001fffda101fb0002000000000102d006a6e1a14e62b4bd12437a96b59b29c77f4324af5df520f5a7b53e7af3c5060100000000fdffffff99d25f00d404d034fe68991bec7c4480c5da89024c1b4376ad9ed6f2e3cd57f20000000000fdffffff01102700000000000022002082324908c60937b2c7faca510c7caa86e384978d0a25429620493ddc915fa5ca0247304402200c1b86f28925a474543f6496565a2ae8a0a4860708440b49133fd4c09b4211ad0220564279b293871b4214e2727d7d3cb7ed7382d83a29843ecad3ba9877f1f4f6dd0141210378e690b127980c267509e3e40b604996b7470e2844969e58f6cbc237d46d97d1ac736476a9148c58e1", + "<= a0e000", + "=> f8010001a8a601fd6ade40fe69ead451f04d04e2a7906a2388ad5ab26802483045022100a702ebff5966c895d20eb0b7ad668738697996cd9d5386281262d3c4a8626d580220686d9e3a44b90140ed0ce1a070995b3f9aa4a3129c2052edd5b5ce701d4234e001412103f6e9e1c4af6b9b140e83c76ddae5e998f530d304a9a5c18087e388f457587c6eac736476a914c9708f572d993350ba428b0dcec66ce5db5dd40188ad5ab26800000000", + "<= 42c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2cb413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f8010001020101", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0801e000", + "=> f801000182b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2030396a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7e32ce487982439e86bb2e85fbf23a23e57e9e9c035b48ab36503db94bf7f2c95937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 41534a627f1af4b7364354aed3f80c68ca92c8556f167b5ac3ed22491e8b476f1f0801e000", + "=> f8010001826bdf666fb71bcaff0b8ea4589bbc640ed9deafa80d73053f5a6483ae45bb099b03031c987ce5ebb77d2f6b3ccbb175ccc7fffebaae9f1c4d84665698fec4974223e3d8c104da07e82df9279b23059d05c947b3848bc31d70d2196aaeaa6f098c6bd31f9328faa79270ddd8f0fea6ea43743b0a7684896a10b6f5b406ae6d2f02ab7e", + "<= 40006bdf666fb71bcaff0b8ea4589bbc640ed9deafa80d73053f5a6483ae45bb099be000", + "=> f80100012e2c2c00102700000000000022002082324908c60937b2c7faca510c7caa86e384978d0a25429620493ddc915fa5ca", + "<= 41445ba5a280b8491a67992b3d7a722dbe6e89cda68112dd72cb1816fd70f1cfd80200e000", + "=> f801000142ad123cb4a90beb3e9b9e3eb811b9119a8f0b2c011f9833d86aadaec5c4937fbf010160dcf3ace170d59f287f4047d6d7ac279e2bd16f6a64a06424bebdf9dfa43224", + "<= 4000ad123cb4a90beb3e9b9e3eb811b9119a8f0b2c011f9833d86aadaec5c4937fbfe000", + "=> f80100017c7a7a005b66356163633266645d7470756244364e7a56626b7259685a3459675578325a4c4e7432724c59414d546459797343527a4b6f4c7532426553484b767a715061424476663137476542506e45785556506b75427078346b6e695039363465324d78797a7a617a63584c7074784c584d6f645356435645563154", + "<= 41445ba5a280b8491a67992b3d7a722dbe6e89cda68112dd72cb1816fd70f1cfd80201e000", + "=> f80100014260dcf3ace170d59f287f4047d6d7ac279e2bd16f6a64a06424bebdf9dfa432240101ad123cb4a90beb3e9b9e3eb811b9119a8f0b2c011f9833d86aadaec5c4937fbf", + "<= 400060dcf3ace170d59f287f4047d6d7ac279e2bd16f6a64a06424bebdf9dfa43224e000", + "=> f80100017c7a7a005b38613634663261395d7470756244364e7a56626b7259685a34576d7a466a765172703773446134454355785469396f6279384b34465a6b64335843427445644b7755695179594a6178694a6f357934326779445745637a7246706f7a456a654c784d50786a663257746b66636270556466764e6e6f7a5746", + "<= 41445ba5a280b8491a67992b3d7a722dbe6e89cda68112dd72cb1816fd70f1cfd80200e000", + "=> f801000142ad123cb4a90beb3e9b9e3eb811b9119a8f0b2c011f9833d86aadaec5c4937fbf010160dcf3ace170d59f287f4047d6d7ac279e2bd16f6a64a06424bebdf9dfa43224", + "<= 4000ad123cb4a90beb3e9b9e3eb811b9119a8f0b2c011f9833d86aadaec5c4937fbfe000", + "=> f80100017c7a7a005b66356163633266645d7470756244364e7a56626b7259685a3459675578325a4c4e7432724c59414d546459797343527a4b6f4c7532426553484b767a715061424476663137476542506e45785556506b75427078346b6e695039363465324d78797a7a617a63584c7074784c584d6f645356435645563154", + "<= 418b5def765f486d77c85fbc5d730caedebc856a58a1cdfc3dad112d7e0690fdf10100e000", + "=> f8010001228b5def765f486d77c85fbc5d730caedebc856a58a1cdfc3dad112d7e0690fdf10000", + "<= 40008b5def765f486d77c85fbc5d730caedebc856a58a1cdfc3dad112d7e0690fdf1e000", + "=> f8010001444242000278850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d344c0e5eab7ed16a6c5d495911399831475d62c728ad1de4bc119a5fe349c1d9", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0200e000", + "=> f801000142583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d01014f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4", + "<= 4000583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f80100010402020003", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0201e000", + "=> f8010001424f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a40101583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d", + "<= 40004f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f80100010402020004", + "<= 4278850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f8010001020100", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0200e000", + "=> f801000142583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d01014f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4", + "<= 41344c0e5eab7ed16a6c5d495911399831475d62c728ad1de4bc119a5fe349c1d90200e000", + "=> f8010001421518b41d0f3a080793b8822a573ad4b8628027d88c1c3edab2162f6202742f910101f6457f2e5f16c18653329752399861b1c47c6ec1e1933f7fdd3ad1c7a6b5364e", + "<= 40001518b41d0f3a080793b8822a573ad4b8628027d88c1c3edab2162f6202742f91e000", + "=> f80100010b0909008813000000000000", + "<= 4278850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d4f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f8010001020101", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0201e000", + "=> f8010001424f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a40101583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d", + "<= 41344c0e5eab7ed16a6c5d495911399831475d62c728ad1de4bc119a5fe349c1d90201e000", + "=> f801000142f6457f2e5f16c18653329752399861b1c47c6ec1e1933f7fdd3ad1c7a6b5364e01011518b41d0f3a080793b8822a573ad4b8628027d88c1c3edab2162f6202742f91", + "<= 4000f6457f2e5f16c18653329752399861b1c47c6ec1e1933f7fdd3ad1c7a6b5364ee000", + "=> f8010001191717000014aa8ef374cafadfca76902ddb5cf61c60bbfd9d85", + "<= 41445ba5a280b8491a67992b3d7a722dbe6e89cda68112dd72cb1816fd70f1cfd80200e000", + "=> f801000142ad123cb4a90beb3e9b9e3eb811b9119a8f0b2c011f9833d86aadaec5c4937fbf010160dcf3ace170d59f287f4047d6d7ac279e2bd16f6a64a06424bebdf9dfa43224", + "<= 4000ad123cb4a90beb3e9b9e3eb811b9119a8f0b2c011f9833d86aadaec5c4937fbfe000", + "=> f80100017c7a7a005b66356163633266645d7470756244364e7a56626b7259685a3459675578325a4c4e7432724c59414d546459797343527a4b6f4c7532426553484b767a715061424476663137476542506e45785556506b75427078346b6e695039363465324d78797a7a617a63584c7074784c584d6f645356435645563154", + "<= 41037c228f5f56f52fe83ea1c3b7572dd63822f29d9d833c0f98ebed414933436a0100e000", + "=> f801000122037c228f5f56f52fe83ea1c3b7572dd63822f29d9d833c0f98ebed414933436a0000", + "<= 4000037c228f5f56f52fe83ea1c3b7572dd63822f29d9d833c0f98ebed414933436ae000", + "=> f80100014442420008c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c534a627f1af4b7364354aed3f80c68ca92c8556f167b5ac3ed22491e8b476f1f", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0800e000", + "=> f80100018296a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc70303b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e32ce487982439e86bb2e85fbf23a23e57e9e9c035b48ab36503db94bf7f2c95937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 400096a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7e000", + "=> f80100010402020000", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0801e000", + "=> f801000182b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2030396a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7e32ce487982439e86bb2e85fbf23a23e57e9e9c035b48ab36503db94bf7f2c95937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 4000b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f80100010402020001", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0802e000", + "=> f8010001829f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3d0303ee2630dfb041c6cd08b691fb53e9ebe70b5ba7c2505395b976580b295c0a3248a20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 40009f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3de000", + "=> f80100010402020005", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0803e000", + "=> f801000182ee2630dfb041c6cd08b691fb53e9ebe70b5ba7c2505395b976580b295c0a324803039f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3da20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 4000ee2630dfb041c6cd08b691fb53e9ebe70b5ba7c2505395b976580b295c0a3248e000", + "=> f80100012523230006023672a5a973d5005b6819b765a42a3be2f0aa0c0ae8b4d294652fac06df6b8a0c", + "<= 41534a627f1af4b7364354aed3f80c68ca92c8556f167b5ac3ed22491e8b476f1f0803e000", + "=> f8010001827f3adc432d3c39917e976e58ec485e527f289d392ab33b31916764f36c9d894303035d268f3545bd312a3c5a295201ef2aa703e369de7d86c803fbb0e109466d6dffc614a95f1ac1b9df12642b5a63f6fe46b24f698279d31b7fdc0932cd659249481f9328faa79270ddd8f0fea6ea43743b0a7684896a10b6f5b406ae6d2f02ab7e", + "<= 40007f3adc432d3c39917e976e58ec485e527f289d392ab33b31916764f36c9d8943e000", + "=> f80100010f0d0d00f5acc2fd000000006f000000", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0804e000", + "=> f8010001823ab22b6a812def10b050a160971b6cf3b65b527d14907ff06719ed801080ff5b03039f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196d19379c3b959d2f633568f4389726312ac69bd8e3783436175c33216b545ff0130265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 40003ab22b6a812def10b050a160971b6cf3b65b527d14907ff06719ed801080ff5be000", + "=> f80100012523230006030b71b3b1b1f2deebedebd54723428efb1d8d00b3c38a138977ef28f4fea848c9", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0805e000", + "=> f8010001829f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b19603033ab22b6a812def10b050a160971b6cf3b65b527d14907ff06719ed801080ff5bd19379c3b959d2f633568f4389726312ac69bd8e3783436175c33216b545ff0130265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 40009f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196e000", + "=> f8010001040202000e", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0806e000", + "=> f8010001823b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae9050903030298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe79c91404e1a62af83954606c76656027170bb2435beb199254669e98b6a6fa2eb30265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 40003b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae90509e000", + "=> f8010001040202000f", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0807e000", + "=> f8010001820298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe703033b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae905099c91404e1a62af83954606c76656027170bb2435beb199254669e98b6a6fa2eb30265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 40000298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7e000", + "=> f80100010402020010", + "<= 42c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2cb413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f8010001020101", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0801e000", + "=> f801000182b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2030396a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7e32ce487982439e86bb2e85fbf23a23e57e9e9c035b48ab36503db94bf7f2c95937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 41534a627f1af4b7364354aed3f80c68ca92c8556f167b5ac3ed22491e8b476f1f0801e000", + "=> f8010001826bdf666fb71bcaff0b8ea4589bbc640ed9deafa80d73053f5a6483ae45bb099b03031c987ce5ebb77d2f6b3ccbb175ccc7fffebaae9f1c4d84665698fec4974223e3d8c104da07e82df9279b23059d05c947b3848bc31d70d2196aaeaa6f098c6bd31f9328faa79270ddd8f0fea6ea43743b0a7684896a10b6f5b406ae6d2f02ab7e", + "<= 40006bdf666fb71bcaff0b8ea4589bbc640ed9deafa80d73053f5a6483ae45bb099be000", + "=> f80100012e2c2c00102700000000000022002082324908c60937b2c7faca510c7caa86e384978d0a25429620493ddc915fa5ca", + "<= 41037c228f5f56f52fe83ea1c3b7572dd63822f29d9d833c0f98ebed414933436a0100e000", + "=> f801000122037c228f5f56f52fe83ea1c3b7572dd63822f29d9d833c0f98ebed414933436a0000", + "<= 4000037c228f5f56f52fe83ea1c3b7572dd63822f29d9d833c0f98ebed414933436ae000", + "=> f80100014442420008c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c534a627f1af4b7364354aed3f80c68ca92c8556f167b5ac3ed22491e8b476f1f", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0800e000", + "=> f80100018296a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc70303b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e32ce487982439e86bb2e85fbf23a23e57e9e9c035b48ab36503db94bf7f2c95937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 400096a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7e000", + "=> f80100010402020000", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0801e000", + "=> f801000182b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2030396a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7e32ce487982439e86bb2e85fbf23a23e57e9e9c035b48ab36503db94bf7f2c95937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 4000b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f80100010402020001", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0802e000", + "=> f8010001829f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3d0303ee2630dfb041c6cd08b691fb53e9ebe70b5ba7c2505395b976580b295c0a3248a20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 40009f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3de000", + "=> f80100010402020005", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0803e000", + "=> f801000182ee2630dfb041c6cd08b691fb53e9ebe70b5ba7c2505395b976580b295c0a324803039f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3da20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 4000ee2630dfb041c6cd08b691fb53e9ebe70b5ba7c2505395b976580b295c0a3248e000", + "=> f80100012523230006023672a5a973d5005b6819b765a42a3be2f0aa0c0ae8b4d294652fac06df6b8a0c", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0804e000", + "=> f8010001823ab22b6a812def10b050a160971b6cf3b65b527d14907ff06719ed801080ff5b03039f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196d19379c3b959d2f633568f4389726312ac69bd8e3783436175c33216b545ff0130265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 40003ab22b6a812def10b050a160971b6cf3b65b527d14907ff06719ed801080ff5be000", + "=> f80100012523230006030b71b3b1b1f2deebedebd54723428efb1d8d00b3c38a138977ef28f4fea848c9", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0805e000", + "=> f8010001829f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b19603033ab22b6a812def10b050a160971b6cf3b65b527d14907ff06719ed801080ff5bd19379c3b959d2f633568f4389726312ac69bd8e3783436175c33216b545ff0130265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 40009f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196e000", + "=> f8010001040202000e", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0806e000", + "=> f8010001823b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae9050903030298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe79c91404e1a62af83954606c76656027170bb2435beb199254669e98b6a6fa2eb30265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 40003b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae90509e000", + "=> f8010001040202000f", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0807e000", + "=> f8010001820298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe703033b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae905099c91404e1a62af83954606c76656027170bb2435beb199254669e98b6a6fa2eb30265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 40000298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7e000", + "=> f80100010402020010", + "<= 42c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c9f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196e000", + "=> f8010001020105", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0805e000", + "=> f8010001829f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b19603033ab22b6a812def10b050a160971b6cf3b65b527d14907ff06719ed801080ff5bd19379c3b959d2f633568f4389726312ac69bd8e3783436175c33216b545ff0130265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 41534a627f1af4b7364354aed3f80c68ca92c8556f167b5ac3ed22491e8b476f1f0805e000", + "=> f8010001821818880692dd7fb3356ce5d278aa10156a9596c5f8fcac63b2798676bff307560303d36539a2ab83df7adf832fe88afc0b1ce50963c75a0824e077c5375d64db69fc323555107b1388d25445e79ff3d0806e8c9e9eb4c03589a10b492778a9883aa7e893093cdbdae78c6b639d9e8cc0dc926ec3387eb7742d459fbfb72d141f9738", + "<= 40001818880692dd7fb3356ce5d278aa10156a9596c5f8fcac63b2798676bff30756e000", + "=> f8010001232121004487ba5891b6e097d52e89c51b8346a0c22a459f2a658be6c57dba467fc33bdf", + "<= 42c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c3b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae90509e000", + "=> f8010001020106", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0806e000", + "=> f8010001823b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae9050903030298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe79c91404e1a62af83954606c76656027170bb2435beb199254669e98b6a6fa2eb30265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 41534a627f1af4b7364354aed3f80c68ca92c8556f167b5ac3ed22491e8b476f1f0806e000", + "=> f8010001828855508aade16ec573d21e6a485dfd0a7624085c1a14b5ecdd6485de0c6839a40303b2db18c190abf44354f0286c60b2a6b6a2db6d1a36a6829e66298918b55e1d98183fe9cedb724d22f9bee015c3a71c631d2f3891c802b8131aab4749ead59a05e893093cdbdae78c6b639d9e8cc0dc926ec3387eb7742d459fbfb72d141f9738", + "<= 40008855508aade16ec573d21e6a485dfd0a7624085c1a14b5ecdd6485de0c6839a4e000", + "=> f80100010705050000000000", + "<= 42c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7e000", + "=> f8010001020107", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0807e000", + "=> f8010001820298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe703033b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae905099c91404e1a62af83954606c76656027170bb2435beb199254669e98b6a6fa2eb30265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 41534a627f1af4b7364354aed3f80c68ca92c8556f167b5ac3ed22491e8b476f1f0807e000", + "=> f801000182b2db18c190abf44354f0286c60b2a6b6a2db6d1a36a6829e66298918b55e1d9803038855508aade16ec573d21e6a485dfd0a7624085c1a14b5ecdd6485de0c6839a4183fe9cedb724d22f9bee015c3a71c631d2f3891c802b8131aab4749ead59a05e893093cdbdae78c6b639d9e8cc0dc926ec3387eb7742d459fbfb72d141f9738", + "<= 4000b2db18c190abf44354f0286c60b2a6b6a2db6d1a36a6829e66298918b55e1d98e000", + "=> f801000107050500fdffffff", + "<= 418b5def765f486d77c85fbc5d730caedebc856a58a1cdfc3dad112d7e0690fdf10100e000", + "=> f8010001228b5def765f486d77c85fbc5d730caedebc856a58a1cdfc3dad112d7e0690fdf10000", + "<= 40008b5def765f486d77c85fbc5d730caedebc856a58a1cdfc3dad112d7e0690fdf1e000", + "=> f8010001444242000278850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d344c0e5eab7ed16a6c5d495911399831475d62c728ad1de4bc119a5fe349c1d9", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0200e000", + "=> f801000142583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d01014f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4", + "<= 4000583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f80100010402020003", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0201e000", + "=> f8010001424f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a40101583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d", + "<= 40004f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f80100010402020004", + "<= 4278850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f8010001020100", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0200e000", + "=> f801000142583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d01014f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4", + "<= 41344c0e5eab7ed16a6c5d495911399831475d62c728ad1de4bc119a5fe349c1d90200e000", + "=> f8010001421518b41d0f3a080793b8822a573ad4b8628027d88c1c3edab2162f6202742f910101f6457f2e5f16c18653329752399861b1c47c6ec1e1933f7fdd3ad1c7a6b5364e", + "<= 40001518b41d0f3a080793b8822a573ad4b8628027d88c1c3edab2162f6202742f91e000", + "=> f80100010b0909008813000000000000", + "<= 4278850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d4f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f8010001020101", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0201e000", + "=> f8010001424f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a40101583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d", + "<= 41344c0e5eab7ed16a6c5d495911399831475d62c728ad1de4bc119a5fe349c1d90201e000", + "=> f801000142f6457f2e5f16c18653329752399861b1c47c6ec1e1933f7fdd3ad1c7a6b5364e01011518b41d0f3a080793b8822a573ad4b8628027d88c1c3edab2162f6202742f91", + "<= 4000f6457f2e5f16c18653329752399861b1c47c6ec1e1933f7fdd3ad1c7a6b5364ee000", + "=> f8010001191717000014aa8ef374cafadfca76902ddb5cf61c60bbfd9d85", + "<= 41037c228f5f56f52fe83ea1c3b7572dd63822f29d9d833c0f98ebed414933436a0100e000", + "=> f801000122037c228f5f56f52fe83ea1c3b7572dd63822f29d9d833c0f98ebed414933436a0000", + "<= 4000037c228f5f56f52fe83ea1c3b7572dd63822f29d9d833c0f98ebed414933436ae000", + "=> f80100014442420008c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c534a627f1af4b7364354aed3f80c68ca92c8556f167b5ac3ed22491e8b476f1f", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0800e000", + "=> f80100018296a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc70303b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e32ce487982439e86bb2e85fbf23a23e57e9e9c035b48ab36503db94bf7f2c95937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 400096a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7e000", + "=> f80100010402020000", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0801e000", + "=> f801000182b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2030396a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7e32ce487982439e86bb2e85fbf23a23e57e9e9c035b48ab36503db94bf7f2c95937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 4000b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f80100010402020001", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0802e000", + "=> f8010001829f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3d0303ee2630dfb041c6cd08b691fb53e9ebe70b5ba7c2505395b976580b295c0a3248a20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 40009f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3de000", + "=> f80100010402020005", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0803e000", + "=> f801000182ee2630dfb041c6cd08b691fb53e9ebe70b5ba7c2505395b976580b295c0a324803039f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3da20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 4000ee2630dfb041c6cd08b691fb53e9ebe70b5ba7c2505395b976580b295c0a3248e000", + "=> f80100012523230006023672a5a973d5005b6819b765a42a3be2f0aa0c0ae8b4d294652fac06df6b8a0c", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0804e000", + "=> f8010001823ab22b6a812def10b050a160971b6cf3b65b527d14907ff06719ed801080ff5b03039f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196d19379c3b959d2f633568f4389726312ac69bd8e3783436175c33216b545ff0130265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 40003ab22b6a812def10b050a160971b6cf3b65b527d14907ff06719ed801080ff5be000", + "=> f80100012523230006030b71b3b1b1f2deebedebd54723428efb1d8d00b3c38a138977ef28f4fea848c9", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0805e000", + "=> f8010001829f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b19603033ab22b6a812def10b050a160971b6cf3b65b527d14907ff06719ed801080ff5bd19379c3b959d2f633568f4389726312ac69bd8e3783436175c33216b545ff0130265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 40009f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196e000", + "=> f8010001040202000e", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0806e000", + "=> f8010001823b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae9050903030298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe79c91404e1a62af83954606c76656027170bb2435beb199254669e98b6a6fa2eb30265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 40003b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae90509e000", + "=> f8010001040202000f", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0807e000", + "=> f8010001820298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe703033b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae905099c91404e1a62af83954606c76656027170bb2435beb199254669e98b6a6fa2eb30265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 40000298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7e000", + "=> f80100010402020010", + "<= 42c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2cb413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f8010001020101", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0801e000", + "=> f801000182b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2030396a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7e32ce487982439e86bb2e85fbf23a23e57e9e9c035b48ab36503db94bf7f2c95937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 41534a627f1af4b7364354aed3f80c68ca92c8556f167b5ac3ed22491e8b476f1f0801e000", + "=> f8010001826bdf666fb71bcaff0b8ea4589bbc640ed9deafa80d73053f5a6483ae45bb099b03031c987ce5ebb77d2f6b3ccbb175ccc7fffebaae9f1c4d84665698fec4974223e3d8c104da07e82df9279b23059d05c947b3848bc31d70d2196aaeaa6f098c6bd31f9328faa79270ddd8f0fea6ea43743b0a7684896a10b6f5b406ae6d2f02ab7e", + "<= 40006bdf666fb71bcaff0b8ea4589bbc640ed9deafa80d73053f5a6483ae45bb099be000", + "=> f80100012e2c2c00102700000000000022002082324908c60937b2c7faca510c7caa86e384978d0a25429620493ddc915fa5ca", + "<= 42c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c9f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196e000", + "=> f8010001020105", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0805e000", + "=> f8010001829f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b19603033ab22b6a812def10b050a160971b6cf3b65b527d14907ff06719ed801080ff5bd19379c3b959d2f633568f4389726312ac69bd8e3783436175c33216b545ff0130265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 41534a627f1af4b7364354aed3f80c68ca92c8556f167b5ac3ed22491e8b476f1f0805e000", + "=> f8010001821818880692dd7fb3356ce5d278aa10156a9596c5f8fcac63b2798676bff307560303d36539a2ab83df7adf832fe88afc0b1ce50963c75a0824e077c5375d64db69fc323555107b1388d25445e79ff3d0806e8c9e9eb4c03589a10b492778a9883aa7e893093cdbdae78c6b639d9e8cc0dc926ec3387eb7742d459fbfb72d141f9738", + "<= 40001818880692dd7fb3356ce5d278aa10156a9596c5f8fcac63b2798676bff30756e000", + "=> f8010001232121004487ba5891b6e097d52e89c51b8346a0c22a459f2a658be6c57dba467fc33bdf", + "<= 42c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c3b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae90509e000", + "=> f8010001020106", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0806e000", + "=> f8010001823b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae9050903030298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe79c91404e1a62af83954606c76656027170bb2435beb199254669e98b6a6fa2eb30265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 41534a627f1af4b7364354aed3f80c68ca92c8556f167b5ac3ed22491e8b476f1f0806e000", + "=> f8010001828855508aade16ec573d21e6a485dfd0a7624085c1a14b5ecdd6485de0c6839a40303b2db18c190abf44354f0286c60b2a6b6a2db6d1a36a6829e66298918b55e1d98183fe9cedb724d22f9bee015c3a71c631d2f3891c802b8131aab4749ead59a05e893093cdbdae78c6b639d9e8cc0dc926ec3387eb7742d459fbfb72d141f9738", + "<= 40008855508aade16ec573d21e6a485dfd0a7624085c1a14b5ecdd6485de0c6839a4e000", + "=> f80100010705050000000000", + "<= 42c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c9f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3de000", + "=> f8010001020102", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0802e000", + "=> f8010001829f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3d0303ee2630dfb041c6cd08b691fb53e9ebe70b5ba7c2505395b976580b295c0a3248a20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 41534a627f1af4b7364354aed3f80c68ca92c8556f167b5ac3ed22491e8b476f1f0802e000", + "=> f8010001825d268f3545bd312a3c5a295201ef2aa703e369de7d86c803fbb0e109466d6dff03037f3adc432d3c39917e976e58ec485e527f289d392ab33b31916764f36c9d8943c614a95f1ac1b9df12642b5a63f6fe46b24f698279d31b7fdc0932cd659249481f9328faa79270ddd8f0fea6ea43743b0a7684896a10b6f5b406ae6d2f02ab7e", + "<= 40005d268f3545bd312a3c5a295201ef2aa703e369de7d86c803fbb0e109466d6dffe000", + "=> f80100014442420021023672a5a973d5005b6819b765a42a3be2f0aa0c0ae8b4d294652fac06df6b8a0cac736476a914d6004b3218904747f5b273ea79ea506dee041f2488ad5ab268", + "<= 42c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2cb413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f8010001020101", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0801e000", + "=> f801000182b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2030396a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7e32ce487982439e86bb2e85fbf23a23e57e9e9c035b48ab36503db94bf7f2c95937c22af41cd594d19a02a1aae0a467884cb6fbf58f018ea7021ed1f34254774", + "<= 41534a627f1af4b7364354aed3f80c68ca92c8556f167b5ac3ed22491e8b476f1f0801e000", + "=> f8010001826bdf666fb71bcaff0b8ea4589bbc640ed9deafa80d73053f5a6483ae45bb099b03031c987ce5ebb77d2f6b3ccbb175ccc7fffebaae9f1c4d84665698fec4974223e3d8c104da07e82df9279b23059d05c947b3848bc31d70d2196aaeaa6f098c6bd31f9328faa79270ddd8f0fea6ea43743b0a7684896a10b6f5b406ae6d2f02ab7e", + "<= 40006bdf666fb71bcaff0b8ea4589bbc640ed9deafa80d73053f5a6483ae45bb099be000", + "=> f80100012e2c2c00102700000000000022002082324908c60937b2c7faca510c7caa86e384978d0a25429620493ddc915fa5ca", + "<= 42c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7e000", + "=> f8010001020107", + "<= 41c64ee17e0417d2ed804e1d54e706a49b507f1ee9e3919f137c885bcb89d71f2c0807e000", + "=> f8010001820298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe703033b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae905099c91404e1a62af83954606c76656027170bb2435beb199254669e98b6a6fa2eb30265cc21422ccfa903efa759135ab5f6c609b3dd1a5a0e486e39c19f46c7cc6", + "<= 41534a627f1af4b7364354aed3f80c68ca92c8556f167b5ac3ed22491e8b476f1f0807e000", + "=> f801000182b2db18c190abf44354f0286c60b2a6b6a2db6d1a36a6829e66298918b55e1d9803038855508aade16ec573d21e6a485dfd0a7624085c1a14b5ecdd6485de0c6839a4183fe9cedb724d22f9bee015c3a71c631d2f3891c802b8131aab4749ead59a05e893093cdbdae78c6b639d9e8cc0dc926ec3387eb7742d459fbfb72d141f9738", + "<= 4000b2db18c190abf44354f0286c60b2a6b6a2db6d1a36a6829e66298918b55e1d98e000", + "=> f801000107050500fdffffff", + "<= 100021023672a5a973d5005b6819b765a42a3be2f0aa0c0ae8b4d294652fac06df6b8a0c304402201292a1d5c1ae3211e4c365553a187175fe01e82da5c67d8ab6681068241f57e60220429db8adf3b0c560c4ef5bb635521d58807f112080523136743e22fe7ec075c801e000", + "=> f801000100", + "<= 41445ba5a280b8491a67992b3d7a722dbe6e89cda68112dd72cb1816fd70f1cfd80201e000", + "=> f80100014260dcf3ace170d59f287f4047d6d7ac279e2bd16f6a64a06424bebdf9dfa432240101ad123cb4a90beb3e9b9e3eb811b9119a8f0b2c011f9833d86aadaec5c4937fbf", + "<= 400060dcf3ace170d59f287f4047d6d7ac279e2bd16f6a64a06424bebdf9dfa43224e000", + "=> f80100017c7a7a005b38613634663261395d7470756244364e7a56626b7259685a34576d7a466a765172703773446134454355785469396f6279384b34465a6b64335843427445644b7755695179594a6178694a6f357934326779445745637a7246706f7a456a654c784d50786a663257746b66636270556466764e6e6f7a5746", + "<= 9000" + ], + "sigs": [] + }, + { + "name": "Taproot foreign internal key, and our script key", + "policy": "tr(@0/**,pk(@1/**))", + "keys": [ + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK" + ], + "hmac": "dae925660e20859ed8833025d46444483ce264fdb77e34569aabe9d590da8fb7", + "psbt": "cHNidP8BAFICAAAAAR/BzFdxy4OGDMVtlLz+2ThgjBf2NmJDW0HpxE/8/TFCAQAAAAD9////ATkFAAAAAAAAFgAUqo7zdMr638p2kC3bXPYcYLv9nYUAAAAAAAEBK0wGAAAAAAAAIlEg/AoQ0wjH5BtLvDZC+P2KwomFOxznVaDG0NSV8D2fLaQBAwQBAAAAIhXBUBcQi+zqje3FMAuyI4azqzA2esJi+c5eWDJuuD46IvUjIGsW6MH5efpMwPBbajAK//+UFFm28g3nfeVbAWDvjkysrMAhFlAXEIvs6o3txTALsiOGs6swNnrCYvnOXlgybrg+OiL1HQB2IjpuMAAAgAEAAIAAAACAAgAAgAAAAAAAAAAAIRZrFujB+Xn6TMDwW2owCv//lBRZtvIN533lWwFg745MrD0BCS7aAzYX4hDuf30ON4pASuocSLVqoQMCK+z3dG5HAKT1rML9MAAAgAEAAIAAAACAAgAAgAAAAAAAAAAAARcgUBcQi+zqje3FMAuyI4azqzA2esJi+c5eWDJuuD46IvUBGCAJLtoDNhfiEO5/fQ43ikBK6hxItWqhAwIr7Pd0bkcApAAA", + "exchanges": [ + "=> e1040001c305519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216206d0d3e783926a53f1a696f04944e03bc43440cf47684d9a959e98d2add8510f10152a2b0a36f6a220ccad78599c1a2ade65a547f60adb4742208004768ce06302b01f812f66891ac8edd9c988a8766f261a416f8cec1124ff7c778359f061abc141fba1a89c470ab0c36c38beaebb577b754c33d90b51df53977e2b01018fbe25f33dae925660e20859ed8833025d46444483ce264fdb77e34569aabe9d590da8fb7", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200500e000", + "=> f801000182fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177f0303583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d4b8c129ed14cce2c08cfc6766db7f8cdb133b5f698b8de3d5890ea7ff7f0a8d195811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926", + "<= 4000fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177fe000", + "=> f80100010402020002", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200501e000", + "=> f801000182583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d0303fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177f4b8c129ed14cce2c08cfc6766db7f8cdb133b5f698b8de3d5890ea7ff7f0a8d195811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926", + "<= 4000583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f80100010402020003", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200502e000", + "=> f8010001824f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a403039f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3d52c56b473e5246933e7852989cd9feba3b38f078742b93afff1e65ed4679782595811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926", + "<= 40004f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f80100010402020004", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200503e000", + "=> f8010001829f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3d03034f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a452c56b473e5246933e7852989cd9feba3b38f078742b93afff1e65ed4679782595811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926", + "<= 40009f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3de000", + "=> f80100010402020005", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200504e000", + "=> f80100014295811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926010112885c5025dece82b9e180bdaf19d6e5571772906c9c24de31790023755c8888", + "<= 400095811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926e000", + "=> f801000104020200fb", + "<= 42519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e31321620fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177fe000", + "=> f8010001020100", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200500e000", + "=> f801000182fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177f0303583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d4b8c129ed14cce2c08cfc6766db7f8cdb133b5f698b8de3d5890ea7ff7f0a8d195811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926", + "<= 416d0d3e783926a53f1a696f04944e03bc43440cf47684d9a959e98d2add8510f10500e000", + "=> f8010001820bd288cecce2dfc6c9b9245ab747a10870f84c16e986e61b259603b59cf1f3b903038855508aade16ec573d21e6a485dfd0a7624085c1a14b5ecdd6485de0c6839a4c178813b8617f884a8135fd9f95e1a4596188ab7705a3356480c01c0f977db930bd288cecce2dfc6c9b9245ab747a10870f84c16e986e61b259603b59cf1f3b9", + "<= 40000bd288cecce2dfc6c9b9245ab747a10870f84c16e986e61b259603b59cf1f3b9e000", + "=> f80100010705050002000000", + "<= 42519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e31321620583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f8010001020101", + "<= 41519b38dae74447b72151f354cb138ca3591a5ff8ac813289b18a004e313216200501e000", + "=> f801000182583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d0303fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177f4b8c129ed14cce2c08cfc6766db7f8cdb133b5f698b8de3d5890ea7ff7f0a8d195811f41d3d5c58240be155bb7d1dcb8f47add7e3417c24e1d52d41653013926", + "<= 416d0d3e783926a53f1a696f04944e03bc43440cf47684d9a959e98d2add8510f10501e000", + "=> f8010001828855508aade16ec573d21e6a485dfd0a7624085c1a14b5ecdd6485de0c6839a403030bd288cecce2dfc6c9b9245ab747a10870f84c16e986e61b259603b59cf1f3b9c178813b8617f884a8135fd9f95e1a4596188ab7705a3356480c01c0f977db930bd288cecce2dfc6c9b9245ab747a10870f84c16e986e61b259603b59cf1f3b9", + "<= 40008855508aade16ec573d21e6a485dfd0a7624085c1a14b5ecdd6485de0c6839a4e000", + "=> f80100010705050000000000", + "<= 4000ba1a89c470ab0c36c38beaebb577b754c33d90b51df53977e2b01018fbe25f33e000", + "=> f80100017674740230546170726f6f7420666f726569676e20696e7465726e616c206b65792c20616e64206f757220736372697074206b657913da4cb76634983c02c657de46cbe9a23e5c3ec2a41a02f41dd65bf065469c352402516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb", + "<= 4000da4cb76634983c02c657de46cbe9a23e5c3ec2a41a02f41dd65bf065469c3524e000", + "=> f801000115131374722840302f2a2a2c706b2840312f2a2a2929", + "<= 41516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb0200e000", + "=> f801000142521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775010179ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade1", + "<= 4000521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775e000", + "=> f8010001898787005b37363232336136652f3438272f31272f30272f32275d747075624445374e51796d7234414674657770417357746e726579713967686b7a51425870435a6a574c46565241766e62663776796132654d54765432665061704e714c38537556764c51646255624d66574c5644435a4b6e734542717036554b393351457a4c38436b3233417746", + "<= 41516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb0201e000", + "=> f80100014279ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade10101521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775", + "<= 400079ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade1e000", + "=> f8010001898787005b66356163633266642f3438272f31272f30272f32275d747075624446417145474e79616433356142434b554158625147446a6456684e75656e6f355a5a56456e3373516257356369343537674c52374879546d48426739336f6f757242737367557875577a316a583575686331716171466f395673796259314a35467565644c666d34644b", + "<= 4152a2b0a36f6a220ccad78599c1a2ade65a547f60adb4742208004768ce06302b0100e000", + "=> f80100012252a2b0a36f6a220ccad78599c1a2ade65a547f60adb4742208004768ce06302b0000", + "<= 400052a2b0a36f6a220ccad78599c1a2ade65a547f60adb4742208004768ce06302be000", + "=> f8010001444242000a2ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fab13db13cbb4cc5e475ca353b6ba53953d8c87677f1766d4e91988f7924d7b9be", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a00e000", + "=> f8010001a2b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d20404583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de80cc247985bb408a9484b6fd53b538c321cab413033bb288ba55747dfadb6bab129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 4000b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f80100010402020001", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a01e000", + "=> f8010001a2583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d0404b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e80cc247985bb408a9484b6fd53b538c321cab413033bb288ba55747dfadb6bab129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 4000583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f80100010402020003", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a02e000", + "=> f8010001a29f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b19604043b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae905096c0c1f61819138c88692eb2a0d48302b95bb44c5af18dc97de5c9144667791fcb129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 40009f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196e000", + "=> f8010001040202000e", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a03e000", + "=> f8010001a23b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae9050904049f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b1966c0c1f61819138c88692eb2a0d48302b95bb44c5af18dc97de5c9144667791fcb129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 40003b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae90509e000", + "=> f8010001040202000f", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a04e000", + "=> f8010001a20298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe70404d6e2dd3d84f0ddcb5213265124a3373e204f5ced6e24f2eea221c906ebf82b59b3196e9b7edd9bd22d846602ded84174b396f5d6577302f4e80a3eb314317958722331f4d1466415a9ed493cda597538431c8bea1b14bed934ba20a1f565b4c0625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 40000298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7e000", + "=> f80100010402020010", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a05e000", + "=> f8010001a2d6e2dd3d84f0ddcb5213265124a3373e204f5ced6e24f2eea221c906ebf82b5904040298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7b3196e9b7edd9bd22d846602ded84174b396f5d6577302f4e80a3eb314317958722331f4d1466415a9ed493cda597538431c8bea1b14bed934ba20a1f565b4c0625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 4000d6e2dd3d84f0ddcb5213265124a3373e204f5ced6e24f2eea221c906ebf82b59e000", + "=> f80100012523230015c15017108becea8dedc5300bb22386b3ab30367ac262f9ce5e58326eb83e3a22f5", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a06e000", + "=> f8010001a2fe9f3fe1fece3c192f8e8f139062141d102b0294e4171f02a27b857e38e07d310404cc42900f19b21f54505e980a9e29fa9325906d230e46009a28fa41f6ef891f1982c227d895877751e69ee9c140d456e98ecf404afc55e5d1dbc0d05c4be86c37722331f4d1466415a9ed493cda597538431c8bea1b14bed934ba20a1f565b4c0625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 4000fe9f3fe1fece3c192f8e8f139062141d102b0294e4171f02a27b857e38e07d31e000", + "=> f801000124222200165017108becea8dedc5300bb22386b3ab30367ac262f9ce5e58326eb83e3a22f5", + "<= 41b13db13cbb4cc5e475ca353b6ba53953d8c87677f1766d4e91988f7924d7b9be0a06e000", + "=> f8010001a2e15593bf6543bfabc3aec6dd64b41ef6f6a54bd28a342a7dfa27486de4738aae04048ab4a42bd45e15046ab71d43f935d45cb8ca1243cce0ffc4d8686df1119cf187c538f7b0c49c8ebdbce106354ec9a98c2055a9266918bfcafd0ad2fb747188ae0abe70738502d881c6fc68bab1aab8becbf0a892f500e8f5da49732af7ce81216e49a585e41fcb396de837e564293763fb71addf4377f356a574345fb16228fe", + "<= 4000e15593bf6543bfabc3aec6dd64b41ef6f6a54bd28a342a7dfa27486de4738aaee000", + "=> f8010001201e1e000076223a6e300000800100008000000080020000800000000000000000", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a07e000", + "=> f8010001a2cc42900f19b21f54505e980a9e29fa9325906d230e46009a28fa41f6ef891f190404fe9f3fe1fece3c192f8e8f139062141d102b0294e4171f02a27b857e38e07d3182c227d895877751e69ee9c140d456e98ecf404afc55e5d1dbc0d05c4be86c37722331f4d1466415a9ed493cda597538431c8bea1b14bed934ba20a1f565b4c0625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 4000cc42900f19b21f54505e980a9e29fa9325906d230e46009a28fa41f6ef891f19e000", + "=> f801000124222200166b16e8c1f979fa4cc0f05b6a300affff941459b6f20de77de55b0160ef8e4cac", + "<= 41b13db13cbb4cc5e475ca353b6ba53953d8c87677f1766d4e91988f7924d7b9be0a07e000", + "=> f8010001a28ab4a42bd45e15046ab71d43f935d45cb8ca1243cce0ffc4d8686df1119cf1870404e15593bf6543bfabc3aec6dd64b41ef6f6a54bd28a342a7dfa27486de4738aaec538f7b0c49c8ebdbce106354ec9a98c2055a9266918bfcafd0ad2fb747188ae0abe70738502d881c6fc68bab1aab8becbf0a892f500e8f5da49732af7ce81216e49a585e41fcb396de837e564293763fb71addf4377f356a574345fb16228fe", + "<= 40008ab4a42bd45e15046ab71d43f935d45cb8ca1243cce0ffc4d8686df1119cf187e000", + "=> f8010001403e3e0001092eda033617e210ee7f7d0e378a404aea1c48b56aa103022becf7746e4700a4f5acc2fd300000800100008000000080020000800000000000000000", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a08e000", + "=> f80100016267a88a2dc9a9749ec611eef8f47ef5ffcc335f2950d1bfaaf31169ed019040120202b5609376c87f00c645433e48648cb02e6a3f83467f2c827194de5d58f971c8f0454f801d01b657e627ac67c96acac49dbe705107621002dba84d17ceac19609d", + "<= 400067a88a2dc9a9749ec611eef8f47ef5ffcc335f2950d1bfaaf31169ed01904012e000", + "=> f80100010402020017", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a09e000", + "=> f801000162b5609376c87f00c645433e48648cb02e6a3f83467f2c827194de5d58f971c8f0020267a88a2dc9a9749ec611eef8f47ef5ffcc335f2950d1bfaaf31169ed01904012454f801d01b657e627ac67c96acac49dbe705107621002dba84d17ceac19609d", + "<= 4000b5609376c87f00c645433e48648cb02e6a3f83467f2c827194de5d58f971c8f0e000", + "=> f80100010402020018", + "<= 422ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fab413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f8010001020100", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a00e000", + "=> f8010001a2b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d20404583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de80cc247985bb408a9484b6fd53b538c321cab413033bb288ba55747dfadb6bab129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 41b13db13cbb4cc5e475ca353b6ba53953d8c87677f1766d4e91988f7924d7b9be0a00e000", + "=> f8010001a2eb8e6fe5c6218ad65d91351e9e7537081d0148ae3510d897833c1d1d69b6d521040486f9649499b0080656c014aa244f654864bad4145c8513e9c8409f437d4a2b3b833f38e6af142b139e21811914f8a4079e2702a261477eacde0f0653cbe3e7fa04a4cbafeb669042a318ab80179304e2ffdbdc33ff0d06ebdbac655d12c9c4216e49a585e41fcb396de837e564293763fb71addf4377f356a574345fb16228fe", + "<= 4000eb8e6fe5c6218ad65d91351e9e7537081d0148ae3510d897833c1d1d69b6d521e000", + "=> f80100012e2c2c004c06000000000000225120fc0a10d308c7e41b4bbc3642f8fd8ac289853b1ce755a0c6d0d495f03d9f2da4", + "<= 41516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb0200e000", + "=> f801000142521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775010179ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade1", + "<= 4000521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775e000", + "=> f8010001898787005b37363232336136652f3438272f31272f30272f32275d747075624445374e51796d7234414674657770417357746e726579713967686b7a51425870435a6a574c46565241766e62663776796132654d54765432665061704e714c38537556764c51646255624d66574c5644435a4b6e734542717036554b393351457a4c38436b3233417746", + "<= 41516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb0201e000", + "=> f80100014279ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade10101521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775", + "<= 400079ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade1e000", + "=> f8010001898787005b66356163633266642f3438272f31272f30272f32275d747075624446417145474e79616433356142434b554158625147446a6456684e75656e6f355a5a56456e3373516257356369343537674c52374879546d48426739336f6f757242737367557875577a316a583575686331716171466f395673796259314a35467565644c666d34644b", + "<= 41516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb0201e000", + "=> f80100014279ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade10101521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775", + "<= 400079ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade1e000", + "=> f8010001898787005b66356163633266642f3438272f31272f30272f32275d747075624446417145474e79616433356142434b554158625147446a6456684e75656e6f355a5a56456e3373516257356369343537674c52374879546d48426739336f6f757242737367557875577a316a583575686331716171466f395673796259314a35467565644c666d34644b", + "<= 422ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f8010001020101", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a01e000", + "=> f8010001a2583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d0404b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e80cc247985bb408a9484b6fd53b538c321cab413033bb288ba55747dfadb6bab129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 41b13db13cbb4cc5e475ca353b6ba53953d8c87677f1766d4e91988f7924d7b9be0a01e000", + "=> f8010001a286f9649499b0080656c014aa244f654864bad4145c8513e9c8409f437d4a2b3b0404eb8e6fe5c6218ad65d91351e9e7537081d0148ae3510d897833c1d1d69b6d521833f38e6af142b139e21811914f8a4079e2702a261477eacde0f0653cbe3e7fa04a4cbafeb669042a318ab80179304e2ffdbdc33ff0d06ebdbac655d12c9c4216e49a585e41fcb396de837e564293763fb71addf4377f356a574345fb16228fe", + "<= 400086f9649499b0080656c014aa244f654864bad4145c8513e9c8409f437d4a2b3be000", + "=> f80100010705050001000000", + "<= 41516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb0200e000", + "=> f801000142521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775010179ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade1", + "<= 4000521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775e000", + "=> f8010001898787005b37363232336136652f3438272f31272f30272f32275d747075624445374e51796d7234414674657770417357746e726579713967686b7a51425870435a6a574c46565241766e62663776796132654d54765432665061704e714c38537556764c51646255624d66574c5644435a4b6e734542717036554b393351457a4c38436b3233417746", + "<= 41516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb0201e000", + "=> f80100014279ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade10101521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775", + "<= 400079ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade1e000", + "=> f8010001898787005b66356163633266642f3438272f31272f30272f32275d747075624446417145474e79616433356142434b554158625147446a6456684e75656e6f355a5a56456e3373516257356369343537674c52374879546d48426739336f6f757242737367557875577a316a583575686331716171466f395673796259314a35467565644c666d34644b", + "<= 41f812f66891ac8edd9c988a8766f261a416f8cec1124ff7c778359f061abc141f0100e000", + "=> f801000122f812f66891ac8edd9c988a8766f261a416f8cec1124ff7c778359f061abc141f0000", + "<= 4000f812f66891ac8edd9c988a8766f261a416f8cec1124ff7c778359f061abc141fe000", + "=> f8010001444242000278850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8dfdd2e53a1c8aaa496b5d9e9f85de15d038d6c10bee94ffbd749193feff256101", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0200e000", + "=> f801000142583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d01014f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4", + "<= 4000583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f80100010402020003", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0201e000", + "=> f8010001424f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a40101583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d", + "<= 40004f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f80100010402020004", + "<= 4278850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d4f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f8010001020101", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0201e000", + "=> f8010001424f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a40101583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d", + "<= 41fdd2e53a1c8aaa496b5d9e9f85de15d038d6c10bee94ffbd749193feff2561010201e000", + "=> f801000142f6457f2e5f16c18653329752399861b1c47c6ec1e1933f7fdd3ad1c7a6b5364e010160b259ffaad54b5fa53da25cef41baef40707b982a39aaa1386ba593fbf0ceeb", + "<= 4000f6457f2e5f16c18653329752399861b1c47c6ec1e1933f7fdd3ad1c7a6b5364ee000", + "=> f8010001191717000014aa8ef374cafadfca76902ddb5cf61c60bbfd9d85", + "<= 41f812f66891ac8edd9c988a8766f261a416f8cec1124ff7c778359f061abc141f0100e000", + "=> f801000122f812f66891ac8edd9c988a8766f261a416f8cec1124ff7c778359f061abc141f0000", + "<= 4000f812f66891ac8edd9c988a8766f261a416f8cec1124ff7c778359f061abc141fe000", + "=> f8010001444242000278850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8dfdd2e53a1c8aaa496b5d9e9f85de15d038d6c10bee94ffbd749193feff256101", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0200e000", + "=> f801000142583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d01014f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4", + "<= 4000583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f80100010402020003", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0201e000", + "=> f8010001424f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a40101583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d", + "<= 40004f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f80100010402020004", + "<= 4278850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f8010001020100", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0200e000", + "=> f801000142583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d01014f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4", + "<= 41fdd2e53a1c8aaa496b5d9e9f85de15d038d6c10bee94ffbd749193feff2561010200e000", + "=> f80100014260b259ffaad54b5fa53da25cef41baef40707b982a39aaa1386ba593fbf0ceeb0101f6457f2e5f16c18653329752399861b1c47c6ec1e1933f7fdd3ad1c7a6b5364e", + "<= 400060b259ffaad54b5fa53da25cef41baef40707b982a39aaa1386ba593fbf0ceebe000", + "=> f80100010b0909003905000000000000", + "<= 4278850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d4f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f8010001020101", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0201e000", + "=> f8010001424f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a40101583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d", + "<= 41fdd2e53a1c8aaa496b5d9e9f85de15d038d6c10bee94ffbd749193feff2561010201e000", + "=> f801000142f6457f2e5f16c18653329752399861b1c47c6ec1e1933f7fdd3ad1c7a6b5364e010160b259ffaad54b5fa53da25cef41baef40707b982a39aaa1386ba593fbf0ceeb", + "<= 4000f6457f2e5f16c18653329752399861b1c47c6ec1e1933f7fdd3ad1c7a6b5364ee000", + "=> f8010001191717000014aa8ef374cafadfca76902ddb5cf61c60bbfd9d85", + "<= 4152a2b0a36f6a220ccad78599c1a2ade65a547f60adb4742208004768ce06302b0100e000", + "=> f80100012252a2b0a36f6a220ccad78599c1a2ade65a547f60adb4742208004768ce06302b0000", + "<= 400052a2b0a36f6a220ccad78599c1a2ade65a547f60adb4742208004768ce06302be000", + "=> f8010001444242000a2ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fab13db13cbb4cc5e475ca353b6ba53953d8c87677f1766d4e91988f7924d7b9be", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a00e000", + "=> f8010001a2b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d20404583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de80cc247985bb408a9484b6fd53b538c321cab413033bb288ba55747dfadb6bab129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 4000b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f80100010402020001", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a01e000", + "=> f8010001a2583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d0404b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e80cc247985bb408a9484b6fd53b538c321cab413033bb288ba55747dfadb6bab129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 4000583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f80100010402020003", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a02e000", + "=> f8010001a29f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b19604043b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae905096c0c1f61819138c88692eb2a0d48302b95bb44c5af18dc97de5c9144667791fcb129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 40009f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196e000", + "=> f8010001040202000e", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a03e000", + "=> f8010001a23b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae9050904049f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b1966c0c1f61819138c88692eb2a0d48302b95bb44c5af18dc97de5c9144667791fcb129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 40003b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae90509e000", + "=> f8010001040202000f", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a04e000", + "=> f8010001a20298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe70404d6e2dd3d84f0ddcb5213265124a3373e204f5ced6e24f2eea221c906ebf82b59b3196e9b7edd9bd22d846602ded84174b396f5d6577302f4e80a3eb314317958722331f4d1466415a9ed493cda597538431c8bea1b14bed934ba20a1f565b4c0625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 40000298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7e000", + "=> f80100010402020010", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a05e000", + "=> f8010001a2d6e2dd3d84f0ddcb5213265124a3373e204f5ced6e24f2eea221c906ebf82b5904040298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7b3196e9b7edd9bd22d846602ded84174b396f5d6577302f4e80a3eb314317958722331f4d1466415a9ed493cda597538431c8bea1b14bed934ba20a1f565b4c0625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 4000d6e2dd3d84f0ddcb5213265124a3373e204f5ced6e24f2eea221c906ebf82b59e000", + "=> f80100012523230015c15017108becea8dedc5300bb22386b3ab30367ac262f9ce5e58326eb83e3a22f5", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a06e000", + "=> f8010001a2fe9f3fe1fece3c192f8e8f139062141d102b0294e4171f02a27b857e38e07d310404cc42900f19b21f54505e980a9e29fa9325906d230e46009a28fa41f6ef891f1982c227d895877751e69ee9c140d456e98ecf404afc55e5d1dbc0d05c4be86c37722331f4d1466415a9ed493cda597538431c8bea1b14bed934ba20a1f565b4c0625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 4000fe9f3fe1fece3c192f8e8f139062141d102b0294e4171f02a27b857e38e07d31e000", + "=> f801000124222200165017108becea8dedc5300bb22386b3ab30367ac262f9ce5e58326eb83e3a22f5", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a07e000", + "=> f8010001a2cc42900f19b21f54505e980a9e29fa9325906d230e46009a28fa41f6ef891f190404fe9f3fe1fece3c192f8e8f139062141d102b0294e4171f02a27b857e38e07d3182c227d895877751e69ee9c140d456e98ecf404afc55e5d1dbc0d05c4be86c37722331f4d1466415a9ed493cda597538431c8bea1b14bed934ba20a1f565b4c0625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 4000cc42900f19b21f54505e980a9e29fa9325906d230e46009a28fa41f6ef891f19e000", + "=> f801000124222200166b16e8c1f979fa4cc0f05b6a300affff941459b6f20de77de55b0160ef8e4cac", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a08e000", + "=> f80100016267a88a2dc9a9749ec611eef8f47ef5ffcc335f2950d1bfaaf31169ed019040120202b5609376c87f00c645433e48648cb02e6a3f83467f2c827194de5d58f971c8f0454f801d01b657e627ac67c96acac49dbe705107621002dba84d17ceac19609d", + "<= 400067a88a2dc9a9749ec611eef8f47ef5ffcc335f2950d1bfaaf31169ed01904012e000", + "=> f80100010402020017", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a09e000", + "=> f801000162b5609376c87f00c645433e48648cb02e6a3f83467f2c827194de5d58f971c8f0020267a88a2dc9a9749ec611eef8f47ef5ffcc335f2950d1bfaaf31169ed01904012454f801d01b657e627ac67c96acac49dbe705107621002dba84d17ceac19609d", + "<= 4000b5609376c87f00c645433e48648cb02e6a3f83467f2c827194de5d58f971c8f0e000", + "=> f80100010402020018", + "<= 422ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa9f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196e000", + "=> f8010001020102", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a02e000", + "=> f8010001a29f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b19604043b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae905096c0c1f61819138c88692eb2a0d48302b95bb44c5af18dc97de5c9144667791fcb129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 41b13db13cbb4cc5e475ca353b6ba53953d8c87677f1766d4e91988f7924d7b9be0a02e000", + "=> f8010001a259dfa3432052a07e205c5852a8115f36b5751bc38c0d16e99339bf11786cb3eb040486f9649499b0080656c014aa244f654864bad4145c8513e9c8409f437d4a2b3bfbd01be915e2775cfe7a13b8a797721df7906f1303bf566c1dc1d93c1cf57b9504a4cbafeb669042a318ab80179304e2ffdbdc33ff0d06ebdbac655d12c9c4216e49a585e41fcb396de837e564293763fb71addf4377f356a574345fb16228fe", + "<= 400059dfa3432052a07e205c5852a8115f36b5751bc38c0d16e99339bf11786cb3ebe000", + "=> f8010001232121001fc1cc5771cb83860cc56d94bcfed938608c17f63662435b41e9c44ffcfd3142", + "<= 422ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa3b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae90509e000", + "=> f8010001020103", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a03e000", + "=> f8010001a23b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae9050904049f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b1966c0c1f61819138c88692eb2a0d48302b95bb44c5af18dc97de5c9144667791fcb129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 41b13db13cbb4cc5e475ca353b6ba53953d8c87677f1766d4e91988f7924d7b9be0a03e000", + "=> f8010001a286f9649499b0080656c014aa244f654864bad4145c8513e9c8409f437d4a2b3b040459dfa3432052a07e205c5852a8115f36b5751bc38c0d16e99339bf11786cb3ebfbd01be915e2775cfe7a13b8a797721df7906f1303bf566c1dc1d93c1cf57b9504a4cbafeb669042a318ab80179304e2ffdbdc33ff0d06ebdbac655d12c9c4216e49a585e41fcb396de837e564293763fb71addf4377f356a574345fb16228fe", + "<= 400086f9649499b0080656c014aa244f654864bad4145c8513e9c8409f437d4a2b3be000", + "=> f80100010705050001000000", + "<= 422ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7e000", + "=> f8010001020104", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a04e000", + "=> f8010001a20298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe70404d6e2dd3d84f0ddcb5213265124a3373e204f5ced6e24f2eea221c906ebf82b59b3196e9b7edd9bd22d846602ded84174b396f5d6577302f4e80a3eb314317958722331f4d1466415a9ed493cda597538431c8bea1b14bed934ba20a1f565b4c0625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 41b13db13cbb4cc5e475ca353b6ba53953d8c87677f1766d4e91988f7924d7b9be0a04e000", + "=> f8010001a2b2db18c190abf44354f0286c60b2a6b6a2db6d1a36a6829e66298918b55e1d980404e349f9d63a6274c4ac4d94f77cb5c37e690004074eb0eda8ebd0212051c09b37a76b95c125e315db4e6cbbe2d64b2ff399194bc71841593586bfd4efa850d6b10abe70738502d881c6fc68bab1aab8becbf0a892f500e8f5da49732af7ce81216e49a585e41fcb396de837e564293763fb71addf4377f356a574345fb16228fe", + "<= 4000b2db18c190abf44354f0286c60b2a6b6a2db6d1a36a6829e66298918b55e1d98e000", + "=> f801000107050500fdffffff", + "<= 41f812f66891ac8edd9c988a8766f261a416f8cec1124ff7c778359f061abc141f0100e000", + "=> f801000122f812f66891ac8edd9c988a8766f261a416f8cec1124ff7c778359f061abc141f0000", + "<= 4000f812f66891ac8edd9c988a8766f261a416f8cec1124ff7c778359f061abc141fe000", + "=> f8010001444242000278850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8dfdd2e53a1c8aaa496b5d9e9f85de15d038d6c10bee94ffbd749193feff256101", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0200e000", + "=> f801000142583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d01014f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4", + "<= 4000583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f80100010402020003", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0201e000", + "=> f8010001424f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a40101583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d", + "<= 40004f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f80100010402020004", + "<= 4278850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f8010001020100", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0200e000", + "=> f801000142583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d01014f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4", + "<= 41fdd2e53a1c8aaa496b5d9e9f85de15d038d6c10bee94ffbd749193feff2561010200e000", + "=> f80100014260b259ffaad54b5fa53da25cef41baef40707b982a39aaa1386ba593fbf0ceeb0101f6457f2e5f16c18653329752399861b1c47c6ec1e1933f7fdd3ad1c7a6b5364e", + "<= 400060b259ffaad54b5fa53da25cef41baef40707b982a39aaa1386ba593fbf0ceebe000", + "=> f80100010b0909003905000000000000", + "<= 4278850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d4f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4e000", + "=> f8010001020101", + "<= 4178850a5ab36238b076dd99fd258c70d523168704247988a94caa8c9ccd056b8d0201e000", + "=> f8010001424f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a40101583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d", + "<= 41fdd2e53a1c8aaa496b5d9e9f85de15d038d6c10bee94ffbd749193feff2561010201e000", + "=> f801000142f6457f2e5f16c18653329752399861b1c47c6ec1e1933f7fdd3ad1c7a6b5364e010160b259ffaad54b5fa53da25cef41baef40707b982a39aaa1386ba593fbf0ceeb", + "<= 4000f6457f2e5f16c18653329752399861b1c47c6ec1e1933f7fdd3ad1c7a6b5364ee000", + "=> f8010001191717000014aa8ef374cafadfca76902ddb5cf61c60bbfd9d85", + "<= 4152a2b0a36f6a220ccad78599c1a2ade65a547f60adb4742208004768ce06302b0100e000", + "=> f80100012252a2b0a36f6a220ccad78599c1a2ade65a547f60adb4742208004768ce06302b0000", + "<= 400052a2b0a36f6a220ccad78599c1a2ade65a547f60adb4742208004768ce06302be000", + "=> f8010001444242000a2ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fab13db13cbb4cc5e475ca353b6ba53953d8c87677f1766d4e91988f7924d7b9be", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a00e000", + "=> f8010001a2b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d20404583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de80cc247985bb408a9484b6fd53b538c321cab413033bb288ba55747dfadb6bab129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 4000b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f80100010402020001", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a01e000", + "=> f8010001a2583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d0404b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e80cc247985bb408a9484b6fd53b538c321cab413033bb288ba55747dfadb6bab129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 4000583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f80100010402020003", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a02e000", + "=> f8010001a29f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b19604043b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae905096c0c1f61819138c88692eb2a0d48302b95bb44c5af18dc97de5c9144667791fcb129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 40009f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196e000", + "=> f8010001040202000e", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a03e000", + "=> f8010001a23b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae9050904049f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b1966c0c1f61819138c88692eb2a0d48302b95bb44c5af18dc97de5c9144667791fcb129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 40003b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae90509e000", + "=> f8010001040202000f", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a04e000", + "=> f8010001a20298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe70404d6e2dd3d84f0ddcb5213265124a3373e204f5ced6e24f2eea221c906ebf82b59b3196e9b7edd9bd22d846602ded84174b396f5d6577302f4e80a3eb314317958722331f4d1466415a9ed493cda597538431c8bea1b14bed934ba20a1f565b4c0625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 40000298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7e000", + "=> f80100010402020010", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a05e000", + "=> f8010001a2d6e2dd3d84f0ddcb5213265124a3373e204f5ced6e24f2eea221c906ebf82b5904040298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7b3196e9b7edd9bd22d846602ded84174b396f5d6577302f4e80a3eb314317958722331f4d1466415a9ed493cda597538431c8bea1b14bed934ba20a1f565b4c0625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 4000d6e2dd3d84f0ddcb5213265124a3373e204f5ced6e24f2eea221c906ebf82b59e000", + "=> f80100012523230015c15017108becea8dedc5300bb22386b3ab30367ac262f9ce5e58326eb83e3a22f5", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a06e000", + "=> f8010001a2fe9f3fe1fece3c192f8e8f139062141d102b0294e4171f02a27b857e38e07d310404cc42900f19b21f54505e980a9e29fa9325906d230e46009a28fa41f6ef891f1982c227d895877751e69ee9c140d456e98ecf404afc55e5d1dbc0d05c4be86c37722331f4d1466415a9ed493cda597538431c8bea1b14bed934ba20a1f565b4c0625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 4000fe9f3fe1fece3c192f8e8f139062141d102b0294e4171f02a27b857e38e07d31e000", + "=> f801000124222200165017108becea8dedc5300bb22386b3ab30367ac262f9ce5e58326eb83e3a22f5", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a07e000", + "=> f8010001a2cc42900f19b21f54505e980a9e29fa9325906d230e46009a28fa41f6ef891f190404fe9f3fe1fece3c192f8e8f139062141d102b0294e4171f02a27b857e38e07d3182c227d895877751e69ee9c140d456e98ecf404afc55e5d1dbc0d05c4be86c37722331f4d1466415a9ed493cda597538431c8bea1b14bed934ba20a1f565b4c0625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 4000cc42900f19b21f54505e980a9e29fa9325906d230e46009a28fa41f6ef891f19e000", + "=> f801000124222200166b16e8c1f979fa4cc0f05b6a300affff941459b6f20de77de55b0160ef8e4cac", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a08e000", + "=> f80100016267a88a2dc9a9749ec611eef8f47ef5ffcc335f2950d1bfaaf31169ed019040120202b5609376c87f00c645433e48648cb02e6a3f83467f2c827194de5d58f971c8f0454f801d01b657e627ac67c96acac49dbe705107621002dba84d17ceac19609d", + "<= 400067a88a2dc9a9749ec611eef8f47ef5ffcc335f2950d1bfaaf31169ed01904012e000", + "=> f80100010402020017", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a09e000", + "=> f801000162b5609376c87f00c645433e48648cb02e6a3f83467f2c827194de5d58f971c8f0020267a88a2dc9a9749ec611eef8f47ef5ffcc335f2950d1bfaaf31169ed01904012454f801d01b657e627ac67c96acac49dbe705107621002dba84d17ceac19609d", + "<= 4000b5609376c87f00c645433e48648cb02e6a3f83467f2c827194de5d58f971c8f0e000", + "=> f80100010402020018", + "<= 422ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fab413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f8010001020100", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a00e000", + "=> f8010001a2b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d20404583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de80cc247985bb408a9484b6fd53b538c321cab413033bb288ba55747dfadb6bab129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 41b13db13cbb4cc5e475ca353b6ba53953d8c87677f1766d4e91988f7924d7b9be0a00e000", + "=> f8010001a2eb8e6fe5c6218ad65d91351e9e7537081d0148ae3510d897833c1d1d69b6d521040486f9649499b0080656c014aa244f654864bad4145c8513e9c8409f437d4a2b3b833f38e6af142b139e21811914f8a4079e2702a261477eacde0f0653cbe3e7fa04a4cbafeb669042a318ab80179304e2ffdbdc33ff0d06ebdbac655d12c9c4216e49a585e41fcb396de837e564293763fb71addf4377f356a574345fb16228fe", + "<= 4000eb8e6fe5c6218ad65d91351e9e7537081d0148ae3510d897833c1d1d69b6d521e000", + "=> f80100012e2c2c004c06000000000000225120fc0a10d308c7e41b4bbc3642f8fd8ac289853b1ce755a0c6d0d495f03d9f2da4", + "<= 41516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb0200e000", + "=> f801000142521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775010179ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade1", + "<= 4000521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775e000", + "=> f8010001898787005b37363232336136652f3438272f31272f30272f32275d747075624445374e51796d7234414674657770417357746e726579713967686b7a51425870435a6a574c46565241766e62663776796132654d54765432665061704e714c38537556764c51646255624d66574c5644435a4b6e734542717036554b393351457a4c38436b3233417746", + "<= 41516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb0201e000", + "=> f80100014279ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade10101521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775", + "<= 400079ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade1e000", + "=> f8010001898787005b66356163633266642f3438272f31272f30272f32275d747075624446417145474e79616433356142434b554158625147446a6456684e75656e6f355a5a56456e3373516257356369343537674c52374879546d48426739336f6f757242737367557875577a316a583575686331716171466f395673796259314a35467565644c666d34644b", + "<= 4152a2b0a36f6a220ccad78599c1a2ade65a547f60adb4742208004768ce06302b0100e000", + "=> f80100012252a2b0a36f6a220ccad78599c1a2ade65a547f60adb4742208004768ce06302b0000", + "<= 400052a2b0a36f6a220ccad78599c1a2ade65a547f60adb4742208004768ce06302be000", + "=> f8010001444242000a2ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fab13db13cbb4cc5e475ca353b6ba53953d8c87677f1766d4e91988f7924d7b9be", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a00e000", + "=> f8010001a2b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d20404583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de80cc247985bb408a9484b6fd53b538c321cab413033bb288ba55747dfadb6bab129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 4000b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f80100010402020001", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a01e000", + "=> f8010001a2583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d0404b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e80cc247985bb408a9484b6fd53b538c321cab413033bb288ba55747dfadb6bab129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 4000583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f80100010402020003", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a02e000", + "=> f8010001a29f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b19604043b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae905096c0c1f61819138c88692eb2a0d48302b95bb44c5af18dc97de5c9144667791fcb129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 40009f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b196e000", + "=> f8010001040202000e", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a03e000", + "=> f8010001a23b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae9050904049f4917386c45e2c0da0d9b475f1a19cf2db1e929195c6a9f4966ca0d2105b1966c0c1f61819138c88692eb2a0d48302b95bb44c5af18dc97de5c9144667791fcb129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 40003b2b7c6ee25e2f28a6235e273eaf13f504bd445024147ebacb878262aae90509e000", + "=> f8010001040202000f", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a04e000", + "=> f8010001a20298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe70404d6e2dd3d84f0ddcb5213265124a3373e204f5ced6e24f2eea221c906ebf82b59b3196e9b7edd9bd22d846602ded84174b396f5d6577302f4e80a3eb314317958722331f4d1466415a9ed493cda597538431c8bea1b14bed934ba20a1f565b4c0625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 40000298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7e000", + "=> f80100010402020010", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a05e000", + "=> f8010001a2d6e2dd3d84f0ddcb5213265124a3373e204f5ced6e24f2eea221c906ebf82b5904040298d122906dcfc10892cb53a73992fc5b9f493ea4c9badb27b791b4127a7fe7b3196e9b7edd9bd22d846602ded84174b396f5d6577302f4e80a3eb314317958722331f4d1466415a9ed493cda597538431c8bea1b14bed934ba20a1f565b4c0625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 4000d6e2dd3d84f0ddcb5213265124a3373e204f5ced6e24f2eea221c906ebf82b59e000", + "=> f80100012523230015c15017108becea8dedc5300bb22386b3ab30367ac262f9ce5e58326eb83e3a22f5", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a06e000", + "=> f8010001a2fe9f3fe1fece3c192f8e8f139062141d102b0294e4171f02a27b857e38e07d310404cc42900f19b21f54505e980a9e29fa9325906d230e46009a28fa41f6ef891f1982c227d895877751e69ee9c140d456e98ecf404afc55e5d1dbc0d05c4be86c37722331f4d1466415a9ed493cda597538431c8bea1b14bed934ba20a1f565b4c0625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 4000fe9f3fe1fece3c192f8e8f139062141d102b0294e4171f02a27b857e38e07d31e000", + "=> f801000124222200165017108becea8dedc5300bb22386b3ab30367ac262f9ce5e58326eb83e3a22f5", + "<= 41b13db13cbb4cc5e475ca353b6ba53953d8c87677f1766d4e91988f7924d7b9be0a06e000", + "=> f8010001a2e15593bf6543bfabc3aec6dd64b41ef6f6a54bd28a342a7dfa27486de4738aae04048ab4a42bd45e15046ab71d43f935d45cb8ca1243cce0ffc4d8686df1119cf187c538f7b0c49c8ebdbce106354ec9a98c2055a9266918bfcafd0ad2fb747188ae0abe70738502d881c6fc68bab1aab8becbf0a892f500e8f5da49732af7ce81216e49a585e41fcb396de837e564293763fb71addf4377f356a574345fb16228fe", + "<= 4000e15593bf6543bfabc3aec6dd64b41ef6f6a54bd28a342a7dfa27486de4738aaee000", + "=> f8010001201e1e000076223a6e300000800100008000000080020000800000000000000000", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a07e000", + "=> f8010001a2cc42900f19b21f54505e980a9e29fa9325906d230e46009a28fa41f6ef891f190404fe9f3fe1fece3c192f8e8f139062141d102b0294e4171f02a27b857e38e07d3182c227d895877751e69ee9c140d456e98ecf404afc55e5d1dbc0d05c4be86c37722331f4d1466415a9ed493cda597538431c8bea1b14bed934ba20a1f565b4c0625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 4000cc42900f19b21f54505e980a9e29fa9325906d230e46009a28fa41f6ef891f19e000", + "=> f801000124222200166b16e8c1f979fa4cc0f05b6a300affff941459b6f20de77de55b0160ef8e4cac", + "<= 41b13db13cbb4cc5e475ca353b6ba53953d8c87677f1766d4e91988f7924d7b9be0a07e000", + "=> f8010001a28ab4a42bd45e15046ab71d43f935d45cb8ca1243cce0ffc4d8686df1119cf1870404e15593bf6543bfabc3aec6dd64b41ef6f6a54bd28a342a7dfa27486de4738aaec538f7b0c49c8ebdbce106354ec9a98c2055a9266918bfcafd0ad2fb747188ae0abe70738502d881c6fc68bab1aab8becbf0a892f500e8f5da49732af7ce81216e49a585e41fcb396de837e564293763fb71addf4377f356a574345fb16228fe", + "<= 40008ab4a42bd45e15046ab71d43f935d45cb8ca1243cce0ffc4d8686df1119cf187e000", + "=> f8010001403e3e0001092eda033617e210ee7f7d0e378a404aea1c48b56aa103022becf7746e4700a4f5acc2fd300000800100008000000080020000800000000000000000", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a08e000", + "=> f80100016267a88a2dc9a9749ec611eef8f47ef5ffcc335f2950d1bfaaf31169ed019040120202b5609376c87f00c645433e48648cb02e6a3f83467f2c827194de5d58f971c8f0454f801d01b657e627ac67c96acac49dbe705107621002dba84d17ceac19609d", + "<= 400067a88a2dc9a9749ec611eef8f47ef5ffcc335f2950d1bfaaf31169ed01904012e000", + "=> f80100010402020017", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a09e000", + "=> f801000162b5609376c87f00c645433e48648cb02e6a3f83467f2c827194de5d58f971c8f0020267a88a2dc9a9749ec611eef8f47ef5ffcc335f2950d1bfaaf31169ed01904012454f801d01b657e627ac67c96acac49dbe705107621002dba84d17ceac19609d", + "<= 4000b5609376c87f00c645433e48648cb02e6a3f83467f2c827194de5d58f971c8f0e000", + "=> f80100010402020018", + "<= 41516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb0201e000", + "=> f80100014279ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade10101521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775", + "<= 400079ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade1e000", + "=> f8010001898787005b66356163633266642f3438272f31272f30272f32275d747075624446417145474e79616433356142434b554158625147446a6456684e75656e6f355a5a56456e3373516257356369343537674c52374879546d48426739336f6f757242737367557875577a316a583575686331716171466f395673796259314a35467565644c666d34644b", + "<= 41516d2c50a89476ecffeec658057f0110674bbfafc18797dc480c7ed53802f3fb0201e000", + "=> f80100014279ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade10101521a79b1ec8019f7b8291af131d33a9dd39252161c6c8fc1f47c4edd9cfc2775", + "<= 400079ad51261747bf60b55f8900bb82bfc5dc7f52b9eb056bee94442ced92e1ade1e000", + "=> f8010001898787005b66356163633266642f3438272f31272f30272f32275d747075624446417145474e79616433356142434b554158625147446a6456684e75656e6f355a5a56456e3373516257356369343537674c52374879546d48426739336f6f757242737367557875577a316a583575686331716171466f395673796259314a35467565644c666d34644b", + "<= 422ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de000", + "=> f8010001020101", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a01e000", + "=> f8010001a2583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d0404b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e80cc247985bb408a9484b6fd53b538c321cab413033bb288ba55747dfadb6bab129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 41b13db13cbb4cc5e475ca353b6ba53953d8c87677f1766d4e91988f7924d7b9be0a01e000", + "=> f8010001a286f9649499b0080656c014aa244f654864bad4145c8513e9c8409f437d4a2b3b0404eb8e6fe5c6218ad65d91351e9e7537081d0148ae3510d897833c1d1d69b6d521833f38e6af142b139e21811914f8a4079e2702a261477eacde0f0653cbe3e7fa04a4cbafeb669042a318ab80179304e2ffdbdc33ff0d06ebdbac655d12c9c4216e49a585e41fcb396de837e564293763fb71addf4377f356a574345fb16228fe", + "<= 400086f9649499b0080656c014aa244f654864bad4145c8513e9c8409f437d4a2b3be000", + "=> f80100010705050001000000", + "<= 422ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fab413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2e000", + "=> f8010001020100", + "<= 412ccf7826e726332a6e434b27fafbff92163ef2a69521a5d6c686399a2a18c1fa0a00e000", + "=> f8010001a2b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d20404583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5de80cc247985bb408a9484b6fd53b538c321cab413033bb288ba55747dfadb6bab129229731a274be9e04d70d1f19c2b461edb2f29ddfce9309073458e039219f625b913ee9c3b93595e0eff3c6027145f86b094ecc1062d4f9cc4b1f22170534", + "<= 41b13db13cbb4cc5e475ca353b6ba53953d8c87677f1766d4e91988f7924d7b9be0a00e000", + "=> f8010001a2eb8e6fe5c6218ad65d91351e9e7537081d0148ae3510d897833c1d1d69b6d521040486f9649499b0080656c014aa244f654864bad4145c8513e9c8409f437d4a2b3b833f38e6af142b139e21811914f8a4079e2702a261477eacde0f0653cbe3e7fa04a4cbafeb669042a318ab80179304e2ffdbdc33ff0d06ebdbac655d12c9c4216e49a585e41fcb396de837e564293763fb71addf4377f356a574345fb16228fe", + "<= 4000eb8e6fe5c6218ad65d91351e9e7537081d0148ae3510d897833c1d1d69b6d521e000", + "=> f80100012e2c2c004c06000000000000225120fc0a10d308c7e41b4bbc3642f8fd8ac289853b1ce755a0c6d0d495f03d9f2da4", + "<= 1000406b16e8c1f979fa4cc0f05b6a300affff941459b6f20de77de55b0160ef8e4cac092eda033617e210ee7f7d0e378a404aea1c48b56aa103022becf7746e4700a443493158062db6905dea9ba3ae6c14e1e155ba47aa1cfb35282052ac4dbc1c6718cda5c911a11599a869557ab34242cb0a227836e98976061530ca4de49eed9e01e000", + "=> f801000100", + "<= 9000" + ], + "sigs": [ + { + "key": "6b16e8c1f979fa4cc0f05b6a300affff941459b6f20de77de55b0160ef8e4cac", + "tapleaf_hash": "092eda033617e210ee7f7d0e378a404aea1c48b56aa103022becf7746e4700a4", + "sig": "43493158062db6905dea9ba3ae6c14e1e155ba47aa1cfb35282052ac4dbc1c6718cda5c911a11599a869557ab34242cb0a227836e98976061530ca4de49eed9e01" + } + ] + } +] diff --git a/bitcoin_client_rs/tests/utils/mod.rs b/bitcoin_client_rs/tests/utils/mod.rs new file mode 100644 index 000000000..ccd053564 --- /dev/null +++ b/bitcoin_client_rs/tests/utils/mod.rs @@ -0,0 +1,89 @@ +use core::convert::TryFrom; +use std::sync::atomic::{AtomicUsize, Ordering}; + +use async_trait::async_trait; +use bitcoin::hashes::hex::FromHex; + +use ledger_bitcoin_client::{ + apdu::{APDUCommand, StatusWord}, + async_client, client, +}; + +#[derive(Default, Clone)] +pub struct RecordStore { + pub queue: Vec<(Vec, Vec)>, +} + +impl RecordStore { + pub fn new(exchanges: &Vec) -> RecordStore { + let mut store = RecordStore::default(); + let mut command: Vec = Vec::new(); + for (i, exchange) in exchanges.iter().enumerate() { + let exchange = exchange.replace(" ", ""); + if let Some(cmd) = exchange.strip_prefix("=>") { + command = Vec::from_hex(cmd).expect(&format!("Wrong tests data {}: {}", i, cmd)); + } + if let Some(resp) = exchange.strip_prefix("<=") { + let resp = Vec::from_hex(resp).expect(&format!("Wrong tests data {}: {}", i, resp)); + store.queue.push((command.clone(), resp)); + } + } + + store + } +} + +pub struct TransportReplayer { + store: RecordStore, + current: AtomicUsize, +} + +impl TransportReplayer { + pub fn new(store: RecordStore) -> TransportReplayer { + TransportReplayer { + store, + current: AtomicUsize::new(0), + } + } + + fn replay(&self, command: &APDUCommand) -> Result<(StatusWord, Vec), MockError> { + let payload = command.encode(); + let current = self.current.load(Ordering::Relaxed); + if let Some((req, res)) = self.store.queue.get(current) { + if payload != *req { + return Err(MockError::ExchangeNotFound(current, hex::encode(payload))); + } + self.current.store(current + 1, Ordering::Relaxed); + let res = res.as_slice(); + let mut buff = [b'\0'; 2]; + buff.copy_from_slice(&res[res.len() - 2..res.len()]); + let sw = u16::from_be_bytes(buff); + let answer = &res[0..res.len() - 2]; + return Ok(( + StatusWord::try_from(sw).expect("Wrong tests data"), + answer.to_vec(), + )); + } + Err(MockError::ExchangeNotFound(current, hex::encode(payload))) + } +} + +impl client::Transport for TransportReplayer { + type Error = MockError; + fn exchange(&self, command: &APDUCommand) -> Result<(StatusWord, Vec), Self::Error> { + self.replay(command) + } +} + +#[async_trait] +impl async_client::Transport for TransportReplayer { + type Error = MockError; + async fn exchange(&self, command: &APDUCommand) -> Result<(StatusWord, Vec), Self::Error> { + self.replay(command) + } +} + +#[derive(Debug)] +pub enum MockError { + ExchangeNotFound(usize, String), +} diff --git a/dev-tools/test_sign_psbt_with_sighash_types.ipynb b/dev-tools/test_sign_psbt_with_sighash_types.ipynb new file mode 100644 index 000000000..78f2233a8 --- /dev/null +++ b/dev-tools/test_sign_psbt_with_sighash_types.ipynb @@ -0,0 +1,936 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "c823d12e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'f5acc2fd'" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from io import BytesIO\n", + "\n", + "from bitcoin_client.ledger_bitcoin.common import hash160\n", + "from bitcoin_client.ledger_bitcoin.psbt import PSBT, KeyOriginInfo, PartiallySignedInput\n", + "from bitcoin_client.ledger_bitcoin.tx import CTransaction, CTxWitness, CTxInWitness, COutPoint, uint256_from_str, CTxIn, CTxOut\n", + "from embit.descriptor import Descriptor, Key\n", + "from embit.descriptor.miniscript import Miniscript\n", + "from embit.networks import NETWORKS\n", + "from bip32 import BIP32\n", + "from mnemonic import Mnemonic\n", + "mnemo = Mnemonic(\"english\")\n", + "\n", + "DEFAULT_SPECULOS_MNEMONIC = \"glory promote mansion idle axis finger extra february uncover one trip resource lawn turtle enact monster seven myth punch hobby comfort wild raise skin\"\n", + "seed = mnemo.to_seed(DEFAULT_SPECULOS_MNEMONIC)\n", + "bip32 = BIP32.from_seed(seed, network=\"test\")\n", + "\n", + "master_extended_privkey = bip32.get_xpriv()\n", + "master_extended_pubkey = bip32.get_xpub()\n", + "fpr = hash160(bip32.pubkey)[0:4]\n", + "H = 0x80000000\n", + "fpr.hex()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "91209acd", + "metadata": {}, + "outputs": [], + "source": [ + "PSBT_IMPLICIT_ALL=\"cHNidP8BAH0CAAAAAaG4I9IzbWlLSTTvm25bfeF6BVE9qKKdsCouy8eppv5tAQAAAAD9////AlX/pwAAAAAAIlEgC450hrwwagrvt6fACvBAVULbGs1z7syoJ3HM9f5etg+ghgEAAAAAABYAFBOZuKCYR6A5sDUvWNISwYC6sX93AAAAAAABASunhqkAAAAAACJRINj08dGJltthuxyvVCPeJdih7unJUNN+b/oCMBLV5i4NIRYhLqKFalzxEOZqK+nXNTFHk/28s4iyuPE/K2remC569RkA9azC/VYAAIABAACAAAAAgAEAAAAAAAAAARcgIS6ihWpc8RDmaivp1zUxR5P9vLOIsrjxPytq3pguevUAAQUgApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwohBwKQgezlYWqhy5kxn8SHTv7kfwjOul9gBGNsjENAml8KGQD1rML9VgAAgAEAAIAAAACAAQAAAAIAAAAAAA==\"\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "f5114876", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cHNidP8BAKYCAAAAAhb3mjFj7DfoPFTG4uj/bNiDjoNe863D39WWJ8lJ7CQJAAAAAAD9////+eIbh3yB4YYiVP0DlBwDkRIoVChMa7f7sR2KzcrqwLMAAAAAAP3///8C0jOXAAAAAAAiUSALjnSGvDBqCu+3p8AK8EBVQtsazXPuzKgnccz1/l62D1UmAAAAAAAAFgAUE5m4oJhHoDmwNS9Y0hLBgLqxf3cAAAAAAAEBK400lwAAAAAAIlEgC450hrwwagrvt6fACvBAVULbGs1z7syoJ3HM9f5etg8BAwQBAAAAIRYCkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfChkA9azC/VYAAIABAACAAAAAgAEAAAACAAAAARcgApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoAAQErECcAAAAAAAAiUSBBRhSJpDy2fixk85QnJ47dMMA9bXKkuJmGFHxCjwzF8QEDBAEAAAAhFur3ZTRDvsZUN9uh2lL5ypfiMXha9WYn6PnDEc9zAPbeGQD1rML9VgAAgAEAAIAAAACAAAAAAAIAAAABFyDq92U0Q77GVDfbodpS+cqX4jF4WvVmJ+j5wxHPcwD23gABBSACkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfCiEHApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoZAPWswv1WAACAAQAAgAAAAIABAAAAAgAAAAAA\n" + ] + } + ], + "source": [ + "# SIGHASH_ALL_SIGN\n", + "psbt = PSBT()\n", + "psbt.deserialize(PSBT_IMPLICIT_ALL)\n", + "\n", + "# input 0 \n", + "input_pk0 = bip32.get_pubkey_from_path(\"m/86'/1'/0'/1/2\")\n", + "input_pk0 = input_pk0[1:] \n", + "\n", + "psbt.tx.vin[0].prevout.hash = int(\"0924ec49c92796d5dfc3adf35e838e83d86cffe8e2c6543ce837ec63319af716\", 16)\n", + "psbt.tx.vin[0].prevout.n = 0\n", + "psbt.tx.vin[0].nSequence = 4294967293\n", + "psbt.tx.vout[0].nValue = 9909202\n", + "psbt.inputs[0].sighash = 1\n", + "psbt.inputs[0].witness_utxo.nValue = 9909389\n", + "psbt.inputs[0].witness_utxo.scriptPubKey = bytes.fromhex(\"51200b8e7486bc306a0aefb7a7c00af0405542db1acd73eecca82771ccf5fe5eb60f\")\n", + "psbt.inputs[0].tap_internal_key=bytes.fromhex(\"029081ece5616aa1cb99319fc4874efee47f08ceba5f6004636c8c43409a5f0a\")\n", + "psbt.inputs[0].tap_bip32_paths = {input_pk0: (set(), KeyOriginInfo(fpr, [86^H, 1^H, 0^H, 1, 2]))}\n", + "\n", + "psbt.tx.vin.append(CTxIn())\n", + "psbt.inputs.append(PartiallySignedInput(0))\n", + "\n", + "#input 1\n", + "psbt.inputs[1].witness_utxo = CTxOut()\n", + "\n", + "input_pk1 = bip32.get_pubkey_from_path(\"m/86'/1'/0'/0/2\")\n", + "input_pk1 = input_pk1[1:] \n", + "\n", + "psbt.tx.vin[1].prevout.hash = int(\"b3c0eacacd8a1db1fbb76b4c2854281291031c9403fd542286e1817c871be2f9\", 16)\n", + "psbt.tx.vin[1].prevout.n = 0\n", + "psbt.tx.vin[1].nSequence = 4294967293\n", + "psbt.tx.vout[1].nValue = 9813\n", + "psbt.inputs[1].sighash = 1\n", + "psbt.inputs[1].witness_utxo.nValue = 10000\n", + "psbt.inputs[1].witness_utxo.scriptPubKey = bytes.fromhex(\"512041461489a43cb67e2c64f39427278edd30c03d6d72a4b89986147c428f0cc5f1\")\n", + "psbt.inputs[1].tap_internal_key=bytes.fromhex(\"eaf7653443bec65437dba1da52f9ca97e231785af56627e8f9c311cf7300f6de\")\n", + "psbt.inputs[1].tap_bip32_paths = {input_pk1: (set(), KeyOriginInfo(fpr, [86^H, 1^H, 0^H, 0, 2]))}\n", + "\n", + "psbt.inputs[1].witness_utxo.scriptPubKey.hex()\n", + "\n", + "NEW_PSBT = psbt.serialize()\n", + "print(NEW_PSBT)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "06f4dce1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0200000000010216f79a3163ec37e83c54c6e2e8ff6cd8838e835ef3adc3dfd59627c949ec24090000000000fdfffffff9e21b877c81e1862254fd03941c0391122854284c6bb7fbb11d8acdcaeac0b30000000000fdffffff02d2339700000000002251200b8e7486bc306a0aefb7a7c00af0405542db1acd73eecca82771ccf5fe5eb60f55260000000000001600141399b8a09847a039b0352f58d212c180bab17f77014199c2aa5f6f6929e5adfdc978a867fdae94227cbf8d0caa1ae1b27b88fe4ac2ba61da7795226bc381476ad6f142023881325e32d72523f31587b28027ec473e47010141c572196e9aa50c9eb5a1996d12fc7f57e5ff826636e06959fa7021aaef8eb88a09a038c6033b6acb76205808c4d7a88f1a15d4824e301e1934683c3bc2c47c980100000000'" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# signature produced for the input:\n", + "\n", + "input_sig0 = b'\\xb8.i1\\xaf\\xeb\\xb0\\xa0{\\xad\\xfaU1\\xc9f\\\\@\\x1f_\\x15\\xe2\\xdd\\xf2\\xf7\\x052\\x91\\xc1PR\\xd3\\x83\\xe9\\xd8\\xbe\\xc2\\xbbhKT;\\x97\\xaem\\xb3>%\\xa0\\xa6\\x04\\xfdQy\\x03,k}\\x97\\xc1\\x12\\x0b\\xc6\\x16e'\n", + "input_sig1 = b'\\x0e\\xf8\\xa4hSZ\\x16c\\xfe\\x9e{|Q\\x1bz\\xe3y\\xec\\xf4\\xc5A\\x86#7\\xbed\\xab\\xa9r\\xa7\\x95?H\\x08G\\xe3Ut\\\\\\x94d{w\\x9a\\x1b\\xe6\\xe8s\\r\\xcd\\xbb\\xe12mk\\xd1O\\xf9J\\xe6\\x89\\xda\\xb9\\x11'\n", + "input_sig0 = b'\\x99\\xc2\\xaa_oi)\\xe5\\xad\\xfd\\xc9x\\xa8g\\xfd\\xae\\x94\"|\\xbf\\x8d\\x0c\\xaa\\x1a\\xe1\\xb2{\\x88\\xfeJ\\xc2\\xbaa\\xdaw\\x95\"k\\xc3\\x81Gj\\xd6\\xf1B\\x028\\x812^2\\xd7%#\\xf3\\x15\\x87\\xb2\\x80\\'\\xecG>G\\x01'\n", + "input_sig1 = b'\\xc5r\\x19n\\x9a\\xa5\\x0c\\x9e\\xb5\\xa1\\x99m\\x12\\xfc\\x7fW\\xe5\\xff\\x82f6\\xe0iY\\xfap!\\xaa\\xef\\x8e\\xb8\\x8a\\t\\xa08\\xc6\\x03;j\\xcbv X\\x08\\xc4\\xd7\\xa8\\x8f\\x1a\\x15\\xd4\\x82N0\\x1e\\x194h<;\\xc2\\xc4|\\x98\\x01'\n", + "stx = CTransaction()\n", + "stx.deserialize(BytesIO(psbt.tx.serialize()))\n", + "\n", + "in_wit0 = CTxInWitness()\n", + "in_wit0.scriptWitness.stack = [input_sig0]\n", + "\n", + "in_wit1 = CTxInWitness()\n", + "in_wit1.scriptWitness.stack = [input_sig1]\n", + "\n", + "wit = CTxWitness()\n", + "wit.vtxinwit = [in_wit0, in_wit1]\n", + "\n", + "wit.serialize()\n", + "\n", + "stx.wit = wit\n", + "stx.serialize_with_witness().hex()\n", + "\n", + "\n", + "#ACCEPTED BY MEMPOOL" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "8b3bf7a7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cHNidP8BAKYCAAAAAhb3mjFj7DfoPFTG4uj/bNiDjoNe863D39WWJ8lJ7CQJAAAAAAD9////+eIbh3yB4YYiVP0DlBwDkRIoVChMa7f7sR2KzcrqwLMAAAAAAP3///8C0jOXAAAAAAAiUSALjnSGvDBqCu+3p8AK8EBVQtsazXPuzKgnccz1/l62D1UmAAAAAAAAFgAUE5m4oJhHoDmwNS9Y0hLBgLqxf3cAAAAAAAEBK400lwAAAAAAIlEgC450hrwwagrvt6fACvBAVULbGs1z7syoJ3HM9f5etg8BAwQCAAAAIRYCkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfChkA9azC/VYAAIABAACAAAAAgAEAAAACAAAAARcgApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoAAQErECcAAAAAAAAiUSBBRhSJpDy2fixk85QnJ47dMMA9bXKkuJmGFHxCjwzF8QEDBAIAAAAhFur3ZTRDvsZUN9uh2lL5ypfiMXha9WYn6PnDEc9zAPbeGQD1rML9VgAAgAEAAIAAAACAAAAAAAIAAAABFyDq92U0Q77GVDfbodpS+cqX4jF4WvVmJ+j5wxHPcwD23gABBSACkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfCiEHApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoZAPWswv1WAACAAQAAgAAAAIABAAAAAgAAAAAA\n" + ] + } + ], + "source": [ + "# SIGHASH_NONE_SIGN\n", + "psbt = PSBT()\n", + "psbt.deserialize(PSBT_IMPLICIT_ALL)\n", + "\n", + "# input 0 \n", + "input_pk0 = bip32.get_pubkey_from_path(\"m/86'/1'/0'/1/2\")\n", + "input_pk0 = input_pk0[1:] \n", + "\n", + "psbt.tx.vin[0].prevout.hash = int(\"0924ec49c92796d5dfc3adf35e838e83d86cffe8e2c6543ce837ec63319af716\", 16)\n", + "psbt.tx.vin[0].prevout.n = 0\n", + "psbt.tx.vin[0].nSequence = 4294967293\n", + "psbt.tx.vout[0].nValue = 9909202\n", + "psbt.inputs[0].sighash = 2\n", + "psbt.inputs[0].witness_utxo.nValue = 9909389\n", + "psbt.inputs[0].witness_utxo.scriptPubKey = bytes.fromhex(\"51200b8e7486bc306a0aefb7a7c00af0405542db1acd73eecca82771ccf5fe5eb60f\")\n", + "psbt.inputs[0].tap_internal_key=bytes.fromhex(\"029081ece5616aa1cb99319fc4874efee47f08ceba5f6004636c8c43409a5f0a\")\n", + "psbt.inputs[0].tap_bip32_paths = {input_pk0: (set(), KeyOriginInfo(fpr, [86^H, 1^H, 0^H, 1, 2]))}\n", + "\n", + "psbt.tx.vin.append(CTxIn())\n", + "psbt.inputs.append(PartiallySignedInput(0))\n", + "\n", + "#input 1\n", + "psbt.inputs[1].witness_utxo = CTxOut()\n", + "\n", + "input_pk1 = bip32.get_pubkey_from_path(\"m/86'/1'/0'/0/2\")\n", + "input_pk1 = input_pk1[1:] \n", + "\n", + "psbt.tx.vin[1].prevout.hash = int(\"b3c0eacacd8a1db1fbb76b4c2854281291031c9403fd542286e1817c871be2f9\", 16)\n", + "psbt.tx.vin[1].prevout.n = 0\n", + "psbt.tx.vin[1].nSequence = 4294967293\n", + "psbt.tx.vout[1].nValue = 9813\n", + "psbt.inputs[1].sighash = 2\n", + "psbt.inputs[1].witness_utxo.nValue = 10000\n", + "psbt.inputs[1].witness_utxo.scriptPubKey = bytes.fromhex(\"512041461489a43cb67e2c64f39427278edd30c03d6d72a4b89986147c428f0cc5f1\")\n", + "psbt.inputs[1].tap_internal_key=bytes.fromhex(\"eaf7653443bec65437dba1da52f9ca97e231785af56627e8f9c311cf7300f6de\")\n", + "psbt.inputs[1].tap_bip32_paths = {input_pk1: (set(), KeyOriginInfo(fpr, [86^H, 1^H, 0^H, 0, 2]))}\n", + "\n", + "psbt.inputs[1].witness_utxo.scriptPubKey.hex()\n", + "\n", + "NEW_PSBT = psbt.serialize()\n", + "print(NEW_PSBT)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "61306ef5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0200000000010216f79a3163ec37e83c54c6e2e8ff6cd8838e835ef3adc3dfd59627c949ec24090000000000fdfffffff9e21b877c81e1862254fd03941c0391122854284c6bb7fbb11d8acdcaeac0b30000000000fdffffff02d2339700000000002251200b8e7486bc306a0aefb7a7c00af0405542db1acd73eecca82771ccf5fe5eb60f55260000000000001600141399b8a09847a039b0352f58d212c180bab17f7701416d8a903726f338a8a0a81879c9aa6da505364ff3081a712dad9671046dc20e6d3ee34506ab22361ce0d6b9384e1e18aab34872dcbe78499a5161372b025ae529020141f65cdc2c8f496ca998190590ac0edce14b3ea4ae4779b4057a0e689f2a479e9053c069baf6d6b977b302bdd5d7a657e0deb051ee70cea24253d074191fb24fc50200000000'" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# signature produced for the input:\n", + "input_sig0 = b'm\\x8a\\x907&\\xf38\\xa8\\xa0\\xa8\\x18y\\xc9\\xaam\\xa5\\x056O\\xf3\\x08\\x1aq-\\xad\\x96q\\x04m\\xc2\\x0em>\\xe3E\\x06\\xab\"6\\x1c\\xe0\\xd6\\xb98N\\x1e\\x18\\xaa\\xb3Hr\\xdc\\xbexI\\x9aQa7+\\x02Z\\xe5)\\x02'\n", + "input_sig1 = b'\\xf6\\\\\\xdc,\\x8fIl\\xa9\\x98\\x19\\x05\\x90\\xac\\x0e\\xdc\\xe1K>\\xa4\\xaeGy\\xb4\\x05z\\x0eh\\x9f*G\\x9e\\x90S\\xc0i\\xba\\xf6\\xd6\\xb9w\\xb3\\x02\\xbd\\xd5\\xd7\\xa6W\\xe0\\xde\\xb0Q\\xeep\\xce\\xa2BS\\xd0t\\x19\\x1f\\xb2O\\xc5\\x02'\n", + "\n", + "stx = CTransaction()\n", + "stx.deserialize(BytesIO(psbt.tx.serialize()))\n", + "\n", + "in_wit0 = CTxInWitness()\n", + "in_wit0.scriptWitness.stack = [input_sig0]\n", + "\n", + "in_wit1 = CTxInWitness()\n", + "in_wit1.scriptWitness.stack = [input_sig1]\n", + "\n", + "wit = CTxWitness()\n", + "wit.vtxinwit = [in_wit0, in_wit1]\n", + "\n", + "wit.serialize()\n", + "\n", + "stx.wit = wit\n", + "stx.serialize_with_witness().hex()\n", + "\n", + "#ACCEPTED BY MEMPOOL" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "0c744ca2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cHNidP8BAH0CAAAAARb3mjFj7DfoPFTG4uj/bNiDjoNe863D39WWJ8lJ7CQJAAAAAAD9////AtIzlwAAAAAAIlEgC450hrwwagrvt6fACvBAVULbGs1z7syoJ3HM9f5etg+ghgEAAAAAABYAFBOZuKCYR6A5sDUvWNISwYC6sX93AAAAAAABASuNNJcAAAAAACJRIAuOdIa8MGoK77enwArwQFVC2xrNc+7MqCdxzPX+XrYPAQMEAgAAACEWApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoZAPWswv1WAACAAQAAgAAAAIABAAAAAgAAAAEXIAKQgezlYWqhy5kxn8SHTv7kfwjOul9gBGNsjENAml8KAAEFIAKQgezlYWqhy5kxn8SHTv7kfwjOul9gBGNsjENAml8KIQcCkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfChkA9azC/VYAAIABAACAAAAAgAEAAAACAAAAAAA=\n" + ] + } + ], + "source": [ + "# SIGHASH_NONE_1_IN_2_OUTS\n", + "psbt = PSBT()\n", + "psbt.deserialize(PSBT_IMPLICIT_ALL)\n", + "\n", + "# input 0 \n", + "input_pk0 = bip32.get_pubkey_from_path(\"m/86'/1'/0'/1/2\")\n", + "input_pk0 = input_pk0[1:] \n", + "\n", + "psbt.tx.vin[0].prevout.hash = int(\"0924ec49c92796d5dfc3adf35e838e83d86cffe8e2c6543ce837ec63319af716\", 16)\n", + "psbt.tx.vin[0].prevout.n = 0\n", + "psbt.tx.vin[0].nSequence = 4294967293\n", + "psbt.tx.vout[0].nValue = 9909202\n", + "psbt.inputs[0].sighash = 2\n", + "psbt.inputs[0].witness_utxo.nValue = 9909389\n", + "psbt.inputs[0].witness_utxo.scriptPubKey = bytes.fromhex(\"51200b8e7486bc306a0aefb7a7c00af0405542db1acd73eecca82771ccf5fe5eb60f\")\n", + "psbt.inputs[0].tap_internal_key=bytes.fromhex(\"029081ece5616aa1cb99319fc4874efee47f08ceba5f6004636c8c43409a5f0a\")\n", + "psbt.inputs[0].tap_bip32_paths = {input_pk0: (set(), KeyOriginInfo(fpr, [86^H, 1^H, 0^H, 1, 2]))}\n", + "\n", + "\n", + "NEW_PSBT = psbt.serialize()\n", + "print(NEW_PSBT)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "d5dc8324", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cHNidP8BAKYCAAAAAhb3mjFj7DfoPFTG4uj/bNiDjoNe863D39WWJ8lJ7CQJAAAAAAD9////+eIbh3yB4YYiVP0DlBwDkRIoVChMa7f7sR2KzcrqwLMAAAAAAP3///8C0jOXAAAAAAAiUSALjnSGvDBqCu+3p8AK8EBVQtsazXPuzKgnccz1/l62D1UmAAAAAAAAFgAUE5m4oJhHoDmwNS9Y0hLBgLqxf3cAAAAAAAEBK400lwAAAAAAIlEgC450hrwwagrvt6fACvBAVULbGs1z7syoJ3HM9f5etg8BAwQDAAAAIRYCkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfChkA9azC/VYAAIABAACAAAAAgAEAAAACAAAAARcgApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoAAQErECcAAAAAAAAiUSBBRhSJpDy2fixk85QnJ47dMMA9bXKkuJmGFHxCjwzF8QEDBAMAAAAhFur3ZTRDvsZUN9uh2lL5ypfiMXha9WYn6PnDEc9zAPbeGQD1rML9VgAAgAEAAIAAAACAAAAAAAIAAAABFyDq92U0Q77GVDfbodpS+cqX4jF4WvVmJ+j5wxHPcwD23gABBSACkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfCiEHApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoZAPWswv1WAACAAQAAgAAAAIABAAAAAgAAAAAA\n" + ] + } + ], + "source": [ + "# SIGHASH_SINGLE_SIGN\n", + "psbt = PSBT()\n", + "psbt.deserialize(PSBT_IMPLICIT_ALL)\n", + "\n", + "# input 0 \n", + "input_pk0 = bip32.get_pubkey_from_path(\"m/86'/1'/0'/1/2\")\n", + "input_pk0 = input_pk0[1:] \n", + "\n", + "psbt.tx.vin[0].prevout.hash = int(\"0924ec49c92796d5dfc3adf35e838e83d86cffe8e2c6543ce837ec63319af716\", 16)\n", + "psbt.tx.vin[0].prevout.n = 0\n", + "psbt.tx.vin[0].nSequence = 4294967293\n", + "psbt.tx.vout[0].nValue = 9909202\n", + "psbt.inputs[0].sighash = 3\n", + "psbt.inputs[0].witness_utxo.nValue = 9909389\n", + "psbt.inputs[0].witness_utxo.scriptPubKey = bytes.fromhex(\"51200b8e7486bc306a0aefb7a7c00af0405542db1acd73eecca82771ccf5fe5eb60f\")\n", + "psbt.inputs[0].tap_internal_key=bytes.fromhex(\"029081ece5616aa1cb99319fc4874efee47f08ceba5f6004636c8c43409a5f0a\")\n", + "psbt.inputs[0].tap_bip32_paths = {input_pk0: (set(), KeyOriginInfo(fpr, [86^H, 1^H, 0^H, 1, 2]))}\n", + "\n", + "psbt.tx.vin.append(CTxIn())\n", + "psbt.inputs.append(PartiallySignedInput(0))\n", + "\n", + "#input 1\n", + "psbt.inputs[1].witness_utxo = CTxOut()\n", + "\n", + "input_pk1 = bip32.get_pubkey_from_path(\"m/86'/1'/0'/0/2\")\n", + "input_pk1 = input_pk1[1:] \n", + "\n", + "psbt.tx.vin[1].prevout.hash = int(\"b3c0eacacd8a1db1fbb76b4c2854281291031c9403fd542286e1817c871be2f9\", 16)\n", + "psbt.tx.vin[1].prevout.n = 0\n", + "psbt.tx.vin[1].nSequence = 4294967293\n", + "psbt.tx.vout[1].nValue = 9813\n", + "psbt.inputs[1].sighash = 3\n", + "psbt.inputs[1].witness_utxo.nValue = 10000\n", + "psbt.inputs[1].witness_utxo.scriptPubKey = bytes.fromhex(\"512041461489a43cb67e2c64f39427278edd30c03d6d72a4b89986147c428f0cc5f1\")\n", + "psbt.inputs[1].tap_internal_key=bytes.fromhex(\"eaf7653443bec65437dba1da52f9ca97e231785af56627e8f9c311cf7300f6de\")\n", + "psbt.inputs[1].tap_bip32_paths = {input_pk1: (set(), KeyOriginInfo(fpr, [86^H, 1^H, 0^H, 0, 2]))}\n", + "\n", + "psbt.inputs[1].witness_utxo.scriptPubKey.hex()\n", + "\n", + "NEW_PSBT = psbt.serialize()\n", + "\n", + "print(NEW_PSBT)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "b09c1bfe", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0200000000010216f79a3163ec37e83c54c6e2e8ff6cd8838e835ef3adc3dfd59627c949ec24090000000000fdfffffff9e21b877c81e1862254fd03941c0391122854284c6bb7fbb11d8acdcaeac0b30000000000fdffffff02d2339700000000002251200b8e7486bc306a0aefb7a7c00af0405542db1acd73eecca82771ccf5fe5eb60f55260000000000001600141399b8a09847a039b0352f58d212c180bab17f770141deed3fd31d682fca617491df151f510fd0c51b7dda5ff4af86fbfc91665ad10368a9de2c20dd8adc2d626e69384ddf43e65345df28be811d6d58fc2485d5d0ff0301417be52997e1fd2ac3dea2cf9a6938c413efc8f7f9fcfdd29d0c2c13d42a59d29721f46571347a636ff896c0beafa7bd68590cc94fd79c4ca9e07eef0297bf2e910300000000'" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# signature produced for the input:\n", + "input_sig0 =b'\\xde\\xed?\\xd3\\x1dh/\\xcaat\\x91\\xdf\\x15\\x1fQ\\x0f\\xd0\\xc5\\x1b}\\xda_\\xf4\\xaf\\x86\\xfb\\xfc\\x91fZ\\xd1\\x03h\\xa9\\xde, \\xdd\\x8a\\xdc-bni8M\\xdfC\\xe6SE\\xdf(\\xbe\\x81\\x1dmX\\xfc$\\x85\\xd5\\xd0\\xff\\x03'\n", + "input_sig1 =b'{\\xe5)\\x97\\xe1\\xfd*\\xc3\\xde\\xa2\\xcf\\x9ai8\\xc4\\x13\\xef\\xc8\\xf7\\xf9\\xfc\\xfd\\xd2\\x9d\\x0c,\\x13\\xd4*Y\\xd2\\x97!\\xf4eq4zco\\xf8\\x96\\xc0\\xbe\\xaf\\xa7\\xbdhY\\x0c\\xc9O\\xd7\\x9cL\\xa9\\xe0~\\xef\\x02\\x97\\xbf.\\x91\\x03'\n", + "\n", + "stx = CTransaction()\n", + "stx.deserialize(BytesIO(psbt.tx.serialize()))\n", + "\n", + "in_wit0 = CTxInWitness()\n", + "in_wit0.scriptWitness.stack = [input_sig0]\n", + "\n", + "in_wit1 = CTxInWitness()\n", + "in_wit1.scriptWitness.stack = [input_sig1]\n", + "\n", + "wit = CTxWitness()\n", + "wit.vtxinwit = [in_wit0, in_wit1]\n", + "\n", + "wit.serialize()\n", + "\n", + "stx.wit = wit\n", + "stx.serialize_with_witness().hex()\n", + "\n", + "#ACCEPTED BY MEMPOOL" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "7ece141a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cHNidP8BAM8CAAAAAxb3mjFj7DfoPFTG4uj/bNiDjoNe863D39WWJ8lJ7CQJAAAAAAD9////+eIbh3yB4YYiVP0DlBwDkRIoVChMa7f7sR2KzcrqwLMAAAAAAP3///9zWd5vSCPj9qJ8WTucQPYsO8WJCiKhkJZDR4O4ZyXRtAAAAAAA/f///wLSM5cAAAAAACJRIAuOdIa8MGoK77enwArwQFVC2xrNc+7MqCdxzPX+XrYPVSYAAAAAAAAWABQTmbigmEegObA1L1jSEsGAurF/dwAAAAAAAQErjTSXAAAAAAAiUSALjnSGvDBqCu+3p8AK8EBVQtsazXPuzKgnccz1/l62DwEDBAMAAAAhFgKQgezlYWqhy5kxn8SHTv7kfwjOul9gBGNsjENAml8KGQD1rML9VgAAgAEAAIAAAACAAQAAAAIAAAABFyACkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfCgABASsQJwAAAAAAACJRIEFGFImkPLZ+LGTzlCcnjt0wwD1tcqS4mYYUfEKPDMXxAQMEAwAAACEW6vdlNEO+xlQ326HaUvnKl+IxeFr1Zifo+cMRz3MA9t4ZAPWswv1WAACAAQAAgAAAAIAAAAAAAgAAAAEXIOr3ZTRDvsZUN9uh2lL5ypfiMXha9WYn6PnDEc9zAPbeAAEBK6CGAQAAAAAAIlEgaEmQnCLZJcKrtpXBQGIWvtL9aEdSTcZDdPa+sr8VmH8BAwQDAAAAIRZqOZFvW8uwbi8/4lpNmxK0CS/IGntnzSXeRuC6EKU2BxkA9azC/VYAAIABAACAAAAAgAAAAAAEAAAAARcgajmRb1vLsG4vP+JaTZsStAkvyBp7Z80l3kbguhClNgcAAQUgApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwohBwKQgezlYWqhy5kxn8SHTv7kfwjOul9gBGNsjENAml8KGQD1rML9VgAAgAEAAIAAAACAAQAAAAIAAAAAAA==\n" + ] + } + ], + "source": [ + "# SIGHASH_SINGLE_3_INS_2_OUT\n", + "psbt = PSBT()\n", + "psbt.deserialize(PSBT_IMPLICIT_ALL)\n", + "\n", + "# input 0 \n", + "input_pk0 = bip32.get_pubkey_from_path(\"m/86'/1'/0'/1/2\")\n", + "input_pk0 = input_pk0[1:] \n", + "\n", + "psbt.tx.vin[0].prevout.hash = int(\"0924ec49c92796d5dfc3adf35e838e83d86cffe8e2c6543ce837ec63319af716\", 16)\n", + "psbt.tx.vin[0].prevout.n = 0\n", + "psbt.tx.vin[0].nSequence = 4294967293\n", + "psbt.tx.vout[0].nValue = 9909202\n", + "psbt.inputs[0].sighash = 3\n", + "psbt.inputs[0].witness_utxo.nValue = 9909389\n", + "psbt.inputs[0].witness_utxo.scriptPubKey = bytes.fromhex(\"51200b8e7486bc306a0aefb7a7c00af0405542db1acd73eecca82771ccf5fe5eb60f\")\n", + "psbt.inputs[0].tap_internal_key=bytes.fromhex(\"029081ece5616aa1cb99319fc4874efee47f08ceba5f6004636c8c43409a5f0a\")\n", + "psbt.inputs[0].tap_bip32_paths = {input_pk0: (set(), KeyOriginInfo(fpr, [86^H, 1^H, 0^H, 1, 2]))}\n", + "\n", + "psbt.tx.vin.append(CTxIn())\n", + "psbt.inputs.append(PartiallySignedInput(0))\n", + "\n", + "#input 1\n", + "psbt.inputs[1].witness_utxo = CTxOut()\n", + "\n", + "input_pk1 = bip32.get_pubkey_from_path(\"m/86'/1'/0'/0/2\")\n", + "input_pk1 = input_pk1[1:] \n", + "\n", + "psbt.tx.vin[1].prevout.hash = int(\"b3c0eacacd8a1db1fbb76b4c2854281291031c9403fd542286e1817c871be2f9\", 16)\n", + "psbt.tx.vin[1].prevout.n = 0\n", + "psbt.tx.vin[1].nSequence = 4294967293\n", + "psbt.tx.vout[1].nValue = 9813\n", + "psbt.inputs[1].sighash = 3\n", + "psbt.inputs[1].witness_utxo.nValue = 10000\n", + "psbt.inputs[1].witness_utxo.scriptPubKey = bytes.fromhex(\"512041461489a43cb67e2c64f39427278edd30c03d6d72a4b89986147c428f0cc5f1\")\n", + "psbt.inputs[1].tap_internal_key=bytes.fromhex(\"eaf7653443bec65437dba1da52f9ca97e231785af56627e8f9c311cf7300f6de\")\n", + "psbt.inputs[1].tap_bip32_paths = {input_pk1: (set(), KeyOriginInfo(fpr, [86^H, 1^H, 0^H, 0, 2]))}\n", + "\n", + "psbt.inputs[1].witness_utxo.scriptPubKey.hex()\n", + "psbt.tx.vin.append(CTxIn())\n", + "psbt.inputs.append(PartiallySignedInput(0))\n", + "\n", + "#input 2\n", + "psbt.inputs[2].witness_utxo = CTxOut()\n", + "\n", + "input_pk2 = bip32.get_pubkey_from_path(\"m/86'/1'/0'/0/4\")\n", + "input_pk2 = input_pk2[1:] \n", + "\n", + "psbt.tx.vin[2].prevout.hash = int(\"b4d12567b88347439690a1220a89c53b2cf6409c3b597ca2f6e323486fde5973\", 16)\n", + "psbt.tx.vin[2].prevout.n = 0\n", + "psbt.tx.vin[2].nSequence = 4294967293\n", + "psbt.inputs[2].sighash = 3\n", + "psbt.inputs[2].witness_utxo.nValue = 100000\n", + "psbt.inputs[2].witness_utxo.scriptPubKey = bytes.fromhex(\"51206849909c22d925c2abb695c1406216bed2fd6847524dc64374f6beb2bf15987f\")\n", + "psbt.inputs[2].tap_internal_key=bytes.fromhex(\"6a39916f5bcbb06e2f3fe25a4d9b12b4092fc81a7b67cd25de46e0ba10a53607\")\n", + "psbt.inputs[2].tap_bip32_paths = {input_pk2: (set(), KeyOriginInfo(fpr, [86^H, 1^H, 0^H, 0, 4]))}\n", + "\n", + "psbt.inputs[2].witness_utxo.scriptPubKey.hex()\n", + "\n", + "\n", + "NEW_PSBT = psbt.serialize()\n", + "print(NEW_PSBT)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "39141940", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cHNidP8BAKYCAAAAAhb3mjFj7DfoPFTG4uj/bNiDjoNe863D39WWJ8lJ7CQJAAAAAAD9////+eIbh3yB4YYiVP0DlBwDkRIoVChMa7f7sR2KzcrqwLMAAAAAAP3///8C0jOXAAAAAAAiUSALjnSGvDBqCu+3p8AK8EBVQtsazXPuzKgnccz1/l62D1UmAAAAAAAAFgAUE5m4oJhHoDmwNS9Y0hLBgLqxf3cAAAAAAAEBK400lwAAAAAAIlEgC450hrwwagrvt6fACvBAVULbGs1z7syoJ3HM9f5etg8BAwSBAAAAIRYCkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfChkA9azC/VYAAIABAACAAAAAgAEAAAACAAAAARcgApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoAAQErECcAAAAAAAAiUSBBRhSJpDy2fixk85QnJ47dMMA9bXKkuJmGFHxCjwzF8QEDBIEAAAAhFur3ZTRDvsZUN9uh2lL5ypfiMXha9WYn6PnDEc9zAPbeGQD1rML9VgAAgAEAAIAAAACAAAAAAAIAAAABFyDq92U0Q77GVDfbodpS+cqX4jF4WvVmJ+j5wxHPcwD23gABBSACkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfCiEHApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoZAPWswv1WAACAAQAAgAAAAIABAAAAAgAAAAAA\n" + ] + } + ], + "source": [ + "# SIGHASH_ALL_ANYONE_SIGN\n", + "psbt = PSBT()\n", + "psbt.deserialize(PSBT_IMPLICIT_ALL)\n", + "\n", + "# input 0 \n", + "input_pk0 = bip32.get_pubkey_from_path(\"m/86'/1'/0'/1/2\")\n", + "input_pk0 = input_pk0[1:] \n", + "\n", + "psbt.tx.vin[0].prevout.hash = int(\"0924ec49c92796d5dfc3adf35e838e83d86cffe8e2c6543ce837ec63319af716\", 16)\n", + "psbt.tx.vin[0].prevout.n = 0\n", + "psbt.tx.vin[0].nSequence = 4294967293\n", + "psbt.tx.vout[0].nValue = 9909202\n", + "psbt.inputs[0].sighash = 0x81\n", + "psbt.inputs[0].witness_utxo.nValue = 9909389\n", + "psbt.inputs[0].witness_utxo.scriptPubKey = bytes.fromhex(\"51200b8e7486bc306a0aefb7a7c00af0405542db1acd73eecca82771ccf5fe5eb60f\")\n", + "psbt.inputs[0].tap_internal_key=bytes.fromhex(\"029081ece5616aa1cb99319fc4874efee47f08ceba5f6004636c8c43409a5f0a\")\n", + "psbt.inputs[0].tap_bip32_paths = {input_pk0: (set(), KeyOriginInfo(fpr, [86^H, 1^H, 0^H, 1, 2]))}\n", + "\n", + "psbt.tx.vin.append(CTxIn())\n", + "psbt.inputs.append(PartiallySignedInput(0))\n", + "\n", + "#input 1\n", + "psbt.inputs[1].witness_utxo = CTxOut()\n", + "\n", + "input_pk1 = bip32.get_pubkey_from_path(\"m/86'/1'/0'/0/2\")\n", + "input_pk1 = input_pk1[1:] \n", + "\n", + "psbt.tx.vin[1].prevout.hash = int(\"b3c0eacacd8a1db1fbb76b4c2854281291031c9403fd542286e1817c871be2f9\", 16)\n", + "psbt.tx.vin[1].prevout.n = 0\n", + "psbt.tx.vin[1].nSequence = 4294967293\n", + "psbt.tx.vout[1].nValue = 9813\n", + "psbt.inputs[1].sighash = 0x81\n", + "psbt.inputs[1].witness_utxo.nValue = 10000\n", + "psbt.inputs[1].witness_utxo.scriptPubKey = bytes.fromhex(\"512041461489a43cb67e2c64f39427278edd30c03d6d72a4b89986147c428f0cc5f1\")\n", + "psbt.inputs[1].tap_internal_key=bytes.fromhex(\"eaf7653443bec65437dba1da52f9ca97e231785af56627e8f9c311cf7300f6de\")\n", + "psbt.inputs[1].tap_bip32_paths = {input_pk1: (set(), KeyOriginInfo(fpr, [86^H, 1^H, 0^H, 0, 2]))}\n", + "\n", + "psbt.inputs[1].witness_utxo.scriptPubKey.hex()\n", + "\n", + "NEW_PSBT = psbt.serialize()\n", + "print(NEW_PSBT)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "80ef4173", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0200000000010216f79a3163ec37e83c54c6e2e8ff6cd8838e835ef3adc3dfd59627c949ec24090000000000fdfffffff9e21b877c81e1862254fd03941c0391122854284c6bb7fbb11d8acdcaeac0b30000000000fdffffff02d2339700000000002251200b8e7486bc306a0aefb7a7c00af0405542db1acd73eecca82771ccf5fe5eb60f55260000000000001600141399b8a09847a039b0352f58d212c180bab17f770141ace43a06b18433d887ce9e159ce66ddfe4a6f4cf8838b3554552ccaf9d524745fe796c4a0e33f5e99ecfdb79bf11b856958dd22a8fe93988b0fb219083d4b567810141d2007dad52801c34d6f45a97367582192b0478655fcf51a8b3c5d857c6ce9206b4297832cbf1f00734433ca45731a584db78fe73bcaecc09cf73ec0342d1dde28100000000'" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# signature produced for the input:\n", + "\n", + "# signature produced for the input:\n", + "input_sig0 = b'\\xac\\xe4:\\x06\\xb1\\x843\\xd8\\x87\\xce\\x9e\\x15\\x9c\\xe6m\\xdf\\xe4\\xa6\\xf4\\xcf\\x888\\xb3UER\\xcc\\xaf\\x9dRGE\\xfeylJ\\x0e3\\xf5\\xe9\\x9e\\xcf\\xdby\\xbf\\x11\\xb8V\\x95\\x8d\\xd2*\\x8f\\xe99\\x88\\xb0\\xfb!\\x90\\x83\\xd4\\xb5g\\x81'\n", + "input_sig1 = b'\\xd2\\x00}\\xadR\\x80\\x1c4\\xd6\\xf4Z\\x976u\\x82\\x19+\\x04xe_\\xcfQ\\xa8\\xb3\\xc5\\xd8W\\xc6\\xce\\x92\\x06\\xb4)x2\\xcb\\xf1\\xf0\\x074C<\\xa4W1\\xa5\\x84\\xdbx\\xfes\\xbc\\xae\\xcc\\t\\xcfs\\xec\\x03B\\xd1\\xdd\\xe2\\x81'\n", + "\n", + "stx = CTransaction()\n", + "stx.deserialize(BytesIO(psbt.tx.serialize()))\n", + "\n", + "in_wit0 = CTxInWitness()\n", + "in_wit0.scriptWitness.stack = [input_sig0]\n", + "\n", + "in_wit1 = CTxInWitness()\n", + "in_wit1.scriptWitness.stack = [input_sig1]\n", + "\n", + "wit = CTxWitness()\n", + "wit.vtxinwit = [in_wit0, in_wit1]\n", + "\n", + "wit.serialize()\n", + "\n", + "stx.wit = wit\n", + "stx.serialize_with_witness().hex()\n", + "\n", + "#ACCEPTED BY MEMPOOL" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "e8f1be79", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cHNidP8BAKYCAAAAAhb3mjFj7DfoPFTG4uj/bNiDjoNe863D39WWJ8lJ7CQJAAAAAAD9////+eIbh3yB4YYiVP0DlBwDkRIoVChMa7f7sR2KzcrqwLMAAAAAAP3///8C0jOXAAAAAAAiUSALjnSGvDBqCu+3p8AK8EBVQtsazXPuzKgnccz1/l62D1UmAAAAAAAAFgAUE5m4oJhHoDmwNS9Y0hLBgLqxf3cAAAAAAAEBK400lwAAAAAAIlEgC450hrwwagrvt6fACvBAVULbGs1z7syoJ3HM9f5etg8BAwSCAAAAIRYCkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfChkA9azC/VYAAIABAACAAAAAgAEAAAACAAAAARcgApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoAAQErECcAAAAAAAAiUSBBRhSJpDy2fixk85QnJ47dMMA9bXKkuJmGFHxCjwzF8QEDBIIAAAAhFur3ZTRDvsZUN9uh2lL5ypfiMXha9WYn6PnDEc9zAPbeGQD1rML9VgAAgAEAAIAAAACAAAAAAAIAAAABFyDq92U0Q77GVDfbodpS+cqX4jF4WvVmJ+j5wxHPcwD23gABBSACkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfCiEHApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoZAPWswv1WAACAAQAAgAAAAIABAAAAAgAAAAAA\n" + ] + } + ], + "source": [ + "# SIGHASH_NONE_ANYONE_SIGN\n", + "psbt = PSBT()\n", + "psbt.deserialize(PSBT_IMPLICIT_ALL)\n", + "\n", + "# input 0 \n", + "input_pk0 = bip32.get_pubkey_from_path(\"m/86'/1'/0'/1/2\")\n", + "input_pk0 = input_pk0[1:] \n", + "\n", + "psbt.tx.vin[0].prevout.hash = int(\"0924ec49c92796d5dfc3adf35e838e83d86cffe8e2c6543ce837ec63319af716\", 16)\n", + "psbt.tx.vin[0].prevout.n = 0\n", + "psbt.tx.vin[0].nSequence = 4294967293\n", + "psbt.tx.vout[0].nValue = 9909202\n", + "psbt.inputs[0].sighash = 0x82\n", + "psbt.inputs[0].witness_utxo.nValue = 9909389\n", + "psbt.inputs[0].witness_utxo.scriptPubKey = bytes.fromhex(\"51200b8e7486bc306a0aefb7a7c00af0405542db1acd73eecca82771ccf5fe5eb60f\")\n", + "psbt.inputs[0].tap_internal_key=bytes.fromhex(\"029081ece5616aa1cb99319fc4874efee47f08ceba5f6004636c8c43409a5f0a\")\n", + "psbt.inputs[0].tap_bip32_paths = {input_pk0: (set(), KeyOriginInfo(fpr, [86^H, 1^H, 0^H, 1, 2]))}\n", + "\n", + "psbt.tx.vin.append(CTxIn())\n", + "psbt.inputs.append(PartiallySignedInput(0))\n", + "\n", + "#input 1\n", + "psbt.inputs[1].witness_utxo = CTxOut()\n", + "\n", + "input_pk1 = bip32.get_pubkey_from_path(\"m/86'/1'/0'/0/2\")\n", + "input_pk1 = input_pk1[1:] \n", + "\n", + "psbt.tx.vin[1].prevout.hash = int(\"b3c0eacacd8a1db1fbb76b4c2854281291031c9403fd542286e1817c871be2f9\", 16)\n", + "psbt.tx.vin[1].prevout.n = 0\n", + "psbt.tx.vin[1].nSequence = 4294967293\n", + "psbt.tx.vout[1].nValue = 9813\n", + "psbt.inputs[1].sighash = 0x82\n", + "psbt.inputs[1].witness_utxo.nValue = 10000\n", + "psbt.inputs[1].witness_utxo.scriptPubKey = bytes.fromhex(\"512041461489a43cb67e2c64f39427278edd30c03d6d72a4b89986147c428f0cc5f1\")\n", + "psbt.inputs[1].tap_internal_key=bytes.fromhex(\"eaf7653443bec65437dba1da52f9ca97e231785af56627e8f9c311cf7300f6de\")\n", + "psbt.inputs[1].tap_bip32_paths = {input_pk1: (set(), KeyOriginInfo(fpr, [86^H, 1^H, 0^H, 0, 2]))}\n", + "\n", + "psbt.inputs[1].witness_utxo.scriptPubKey.hex()\n", + "\n", + "NEW_PSBT = psbt.serialize()\n", + "print(NEW_PSBT)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "00ad3c09", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0200000000010216f79a3163ec37e83c54c6e2e8ff6cd8838e835ef3adc3dfd59627c949ec24090000000000fdfffffff9e21b877c81e1862254fd03941c0391122854284c6bb7fbb11d8acdcaeac0b30000000000fdffffff02d2339700000000002251200b8e7486bc306a0aefb7a7c00af0405542db1acd73eecca82771ccf5fe5eb60f55260000000000001600141399b8a09847a039b0352f58d212c180bab17f770141f08ead57bd4bc0e0bc179c64c95a2e5723b03fb88c636d9d713501e8dd2a4bf4f76d72ee7d5e54a879a8d6bb98d6762462ea6af5706514875c34735eea355d10820141fb8439d97240a9920d236e4d145208491ca9f0805e3363851cc4ccb2276d335aa89abf5eea8523d7ab991d23ab19790c495ec2a46313c9c298b8609e4df8ba588200000000'" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# signature produced for the input:\n", + "input_sig0 =b'\\xf0\\x8e\\xadW\\xbdK\\xc0\\xe0\\xbc\\x17\\x9cd\\xc9Z.W#\\xb0?\\xb8\\x8ccm\\x9dq5\\x01\\xe8\\xdd*K\\xf4\\xf7mr\\xee}^T\\xa8y\\xa8\\xd6\\xbb\\x98\\xd6v$b\\xeaj\\xf5pe\\x14\\x87\\\\4s^\\xea5]\\x10\\x82'\n", + "input_sig1 = b\"\\xfb\\x849\\xd9r@\\xa9\\x92\\r#nM\\x14R\\x08I\\x1c\\xa9\\xf0\\x80^3c\\x85\\x1c\\xc4\\xcc\\xb2'm3Z\\xa8\\x9a\\xbf^\\xea\\x85#\\xd7\\xab\\x99\\x1d#\\xab\\x19y\\x0cI^\\xc2\\xa4c\\x13\\xc9\\xc2\\x98\\xb8`\\x9eM\\xf8\\xbaX\\x82\"\n", + "stx = CTransaction()\n", + "stx.deserialize(BytesIO(psbt.tx.serialize()))\n", + "\n", + "in_wit0 = CTxInWitness()\n", + "in_wit0.scriptWitness.stack = [input_sig0]\n", + "\n", + "in_wit1 = CTxInWitness()\n", + "in_wit1.scriptWitness.stack = [input_sig1]\n", + "\n", + "wit = CTxWitness()\n", + "wit.vtxinwit = [in_wit0, in_wit1]\n", + "\n", + "wit.serialize()\n", + "\n", + "stx.wit = wit\n", + "stx.serialize_with_witness().hex()\n", + "#ACCEPTED BY MEMPOOL" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "aabbd26d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cHNidP8BAKYCAAAAAhb3mjFj7DfoPFTG4uj/bNiDjoNe863D39WWJ8lJ7CQJAAAAAAD9////+eIbh3yB4YYiVP0DlBwDkRIoVChMa7f7sR2KzcrqwLMAAAAAAP3///8C0jOXAAAAAAAiUSALjnSGvDBqCu+3p8AK8EBVQtsazXPuzKgnccz1/l62D1UmAAAAAAAAFgAUE5m4oJhHoDmwNS9Y0hLBgLqxf3cAAAAAAAEBK400lwAAAAAAIlEgC450hrwwagrvt6fACvBAVULbGs1z7syoJ3HM9f5etg8BAwSDAAAAIRYCkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfChkA9azC/VYAAIABAACAAAAAgAEAAAACAAAAARcgApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoAAQErECcAAAAAAAAiUSBBRhSJpDy2fixk85QnJ47dMMA9bXKkuJmGFHxCjwzF8QEDBIMAAAAhFur3ZTRDvsZUN9uh2lL5ypfiMXha9WYn6PnDEc9zAPbeGQD1rML9VgAAgAEAAIAAAACAAAAAAAIAAAABFyDq92U0Q77GVDfbodpS+cqX4jF4WvVmJ+j5wxHPcwD23gABBSACkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfCiEHApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoZAPWswv1WAACAAQAAgAAAAIABAAAAAgAAAAAA\n" + ] + } + ], + "source": [ + "# SIGHASH_SINGLE_ANYONE_SIGN\n", + "psbt = PSBT()\n", + "psbt.deserialize(PSBT_IMPLICIT_ALL)\n", + "\n", + "# input 0 \n", + "input_pk0 = bip32.get_pubkey_from_path(\"m/86'/1'/0'/1/2\")\n", + "input_pk0 = input_pk0[1:] \n", + "\n", + "psbt.tx.vin[0].prevout.hash = int(\"0924ec49c92796d5dfc3adf35e838e83d86cffe8e2c6543ce837ec63319af716\", 16)\n", + "psbt.tx.vin[0].prevout.n = 0\n", + "psbt.tx.vin[0].nSequence = 4294967293\n", + "psbt.tx.vout[0].nValue = 9909202\n", + "psbt.inputs[0].sighash = 0x83\n", + "psbt.inputs[0].witness_utxo.nValue = 9909389\n", + "psbt.inputs[0].witness_utxo.scriptPubKey = bytes.fromhex(\"51200b8e7486bc306a0aefb7a7c00af0405542db1acd73eecca82771ccf5fe5eb60f\")\n", + "psbt.inputs[0].tap_internal_key=bytes.fromhex(\"029081ece5616aa1cb99319fc4874efee47f08ceba5f6004636c8c43409a5f0a\")\n", + "psbt.inputs[0].tap_bip32_paths = {input_pk0: (set(), KeyOriginInfo(fpr, [86^H, 1^H, 0^H, 1, 2]))}\n", + "\n", + "psbt.tx.vin.append(CTxIn())\n", + "psbt.inputs.append(PartiallySignedInput(0))\n", + "\n", + "#input 1\n", + "psbt.inputs[1].witness_utxo = CTxOut()\n", + "\n", + "input_pk1 = bip32.get_pubkey_from_path(\"m/86'/1'/0'/0/2\")\n", + "input_pk1 = input_pk1[1:] \n", + "\n", + "psbt.tx.vin[1].prevout.hash = int(\"b3c0eacacd8a1db1fbb76b4c2854281291031c9403fd542286e1817c871be2f9\", 16)\n", + "psbt.tx.vin[1].prevout.n = 0\n", + "psbt.tx.vin[1].nSequence = 4294967293\n", + "psbt.tx.vout[1].nValue = 9813\n", + "psbt.inputs[1].sighash = 0x83\n", + "psbt.inputs[1].witness_utxo.nValue = 10000\n", + "psbt.inputs[1].witness_utxo.scriptPubKey = bytes.fromhex(\"512041461489a43cb67e2c64f39427278edd30c03d6d72a4b89986147c428f0cc5f1\")\n", + "psbt.inputs[1].tap_internal_key=bytes.fromhex(\"eaf7653443bec65437dba1da52f9ca97e231785af56627e8f9c311cf7300f6de\")\n", + "psbt.inputs[1].tap_bip32_paths = {input_pk1: (set(), KeyOriginInfo(fpr, [86^H, 1^H, 0^H, 0, 2]))}\n", + "\n", + "psbt.inputs[1].witness_utxo.scriptPubKey.hex()\n", + "\n", + "NEW_PSBT = psbt.serialize()\n", + "print(NEW_PSBT)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "2e670f1b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0200000000010216f79a3163ec37e83c54c6e2e8ff6cd8838e835ef3adc3dfd59627c949ec24090000000000fdfffffff9e21b877c81e1862254fd03941c0391122854284c6bb7fbb11d8acdcaeac0b30000000000fdffffff02d2339700000000002251200b8e7486bc306a0aefb7a7c00af0405542db1acd73eecca82771ccf5fe5eb60f55260000000000001600141399b8a09847a039b0352f58d212c180bab17f770141174c67a5629a05ca885bb25ebc75673ef13a39288ccec71435d22d0539d07aaf7fe5d5d9fb63ee7768a52e7d4c38b4116d35d29af0e98c486051a0cf626f43388301412a90c8307e3bc9dd15cb180356d0d6134bd7c254c2dbe6b1cf5bdf686cb8ee9b35c77e12ace8235ee11563e2043ef3a28b0c5aa4c123be7b678395e538a666388300000000'" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# signature produced for the input:\n", + "input_sig0 = b'\\x17Lg\\xa5b\\x9a\\x05\\xca\\x88[\\xb2^\\xbcug>\\xf1:9(\\x8c\\xce\\xc7\\x145\\xd2-\\x059\\xd0z\\xaf\\x7f\\xe5\\xd5\\xd9\\xfbc\\xeewh\\xa5.}L8\\xb4\\x11m5\\xd2\\x9a\\xf0\\xe9\\x8cH`Q\\xa0\\xcfboC8\\x83'\n", + "input_sig1 = b'*\\x90\\xc80~;\\xc9\\xdd\\x15\\xcb\\x18\\x03V\\xd0\\xd6\\x13K\\xd7\\xc2T\\xc2\\xdb\\xe6\\xb1\\xcf[\\xdfhl\\xb8\\xee\\x9b5\\xc7~\\x12\\xac\\xe8#^\\xe1\\x15c\\xe2\\x04>\\xf3\\xa2\\x8b\\x0cZ\\xa4\\xc1#\\xbe{g\\x83\\x95\\xe58\\xa6f8\\x83'\n", + "\n", + "stx = CTransaction()\n", + "stx.deserialize(BytesIO(psbt.tx.serialize()))\n", + "\n", + "in_wit0 = CTxInWitness()\n", + "in_wit0.scriptWitness.stack = [input_sig0]\n", + "\n", + "in_wit1 = CTxInWitness()\n", + "in_wit1.scriptWitness.stack = [input_sig1]\n", + "\n", + "wit = CTxWitness()\n", + "wit.vtxinwit = [in_wit0, in_wit1]\n", + "\n", + "wit.serialize()\n", + "\n", + "stx.wit = wit\n", + "stx.serialize_with_witness().hex()\n", + "\n", + "#ACCEPTED BY MEMPOOL " + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "75e7662d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cHNidP8BAKYCAAAAAhb3mjFj7DfoPFTG4uj/bNiDjoNe863D39WWJ8lJ7CQJAAAAAAD9////+eIbh3yB4YYiVP0DlBwDkRIoVChMa7f7sR2KzcrqwLMAAAAAAP3///8C0jOXAAAAAAAiUSALjnSGvDBqCu+3p8AK8EBVQtsazXPuzKgnccz1/l62D1UmAAAAAAAAFgAUE5m4oJhHoDmwNS9Y0hLBgLqxf3cAAAAAAAEBK400lwAAAAAAIlEgC450hrwwagrvt6fACvBAVULbGs1z7syoJ3HM9f5etg8BAwSEAAAAIRYCkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfChkA9azC/VYAAIABAACAAAAAgAEAAAACAAAAARcgApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoAAQErECcAAAAAAAAiUSBBRhSJpDy2fixk85QnJ47dMMA9bXKkuJmGFHxCjwzF8QEDBIMAAAAhFur3ZTRDvsZUN9uh2lL5ypfiMXha9WYn6PnDEc9zAPbeGQD1rML9VgAAgAEAAIAAAACAAAAAAAIAAAABFyDq92U0Q77GVDfbodpS+cqX4jF4WvVmJ+j5wxHPcwD23gABBSACkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfCiEHApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoZAPWswv1WAACAAQAAgAAAAIABAAAAAgAAAAAA\n" + ] + } + ], + "source": [ + "# SIGHASH_UNSUPPORTED\n", + "psbt = PSBT()\n", + "psbt.deserialize(PSBT_IMPLICIT_ALL)\n", + "\n", + "# input 0 \n", + "input_pk0 = bip32.get_pubkey_from_path(\"m/86'/1'/0'/1/2\")\n", + "input_pk0 = input_pk0[1:] \n", + "\n", + "psbt.tx.vin[0].prevout.hash = int(\"0924ec49c92796d5dfc3adf35e838e83d86cffe8e2c6543ce837ec63319af716\", 16)\n", + "psbt.tx.vin[0].prevout.n = 0\n", + "psbt.tx.vin[0].nSequence = 4294967293\n", + "psbt.tx.vout[0].nValue = 9909202\n", + "psbt.inputs[0].sighash = 0x84\n", + "psbt.inputs[0].witness_utxo.nValue = 9909389\n", + "psbt.inputs[0].witness_utxo.scriptPubKey = bytes.fromhex(\"51200b8e7486bc306a0aefb7a7c00af0405542db1acd73eecca82771ccf5fe5eb60f\")\n", + "psbt.inputs[0].tap_internal_key=bytes.fromhex(\"029081ece5616aa1cb99319fc4874efee47f08ceba5f6004636c8c43409a5f0a\")\n", + "psbt.inputs[0].tap_bip32_paths = {input_pk0: (set(), KeyOriginInfo(fpr, [86^H, 1^H, 0^H, 1, 2]))}\n", + "\n", + "psbt.tx.vin.append(CTxIn())\n", + "psbt.inputs.append(PartiallySignedInput(0))\n", + "\n", + "#input 1\n", + "psbt.inputs[1].witness_utxo = CTxOut()\n", + "\n", + "input_pk1 = bip32.get_pubkey_from_path(\"m/86'/1'/0'/0/2\")\n", + "input_pk1 = input_pk1[1:] \n", + "\n", + "psbt.tx.vin[1].prevout.hash = int(\"b3c0eacacd8a1db1fbb76b4c2854281291031c9403fd542286e1817c871be2f9\", 16)\n", + "psbt.tx.vin[1].prevout.n = 0\n", + "psbt.tx.vin[1].nSequence = 4294967293\n", + "psbt.tx.vout[1].nValue = 9813\n", + "psbt.inputs[1].sighash = 0x83\n", + "psbt.inputs[1].witness_utxo.nValue = 10000\n", + "psbt.inputs[1].witness_utxo.scriptPubKey = bytes.fromhex(\"512041461489a43cb67e2c64f39427278edd30c03d6d72a4b89986147c428f0cc5f1\")\n", + "psbt.inputs[1].tap_internal_key=bytes.fromhex(\"eaf7653443bec65437dba1da52f9ca97e231785af56627e8f9c311cf7300f6de\")\n", + "psbt.inputs[1].tap_bip32_paths = {input_pk1: (set(), KeyOriginInfo(fpr, [86^H, 1^H, 0^H, 0, 2]))}\n", + "\n", + "psbt.inputs[1].witness_utxo.scriptPubKey.hex()\n", + "\n", + "NEW_PSBT = psbt.serialize()\n", + "print(NEW_PSBT)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "f502ee40", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SIGHASH1\n", + "020000000001017a2a997956c09f8ea7fd2819c1a987bb14e22bf9adcdaf20a89763722ceee2640100000000fdffffff02a0bb0d00000000001976a914344a0f48ca150ec2b903817660b9b68b13a6702688ac7438230000000000160014eb38fa9b8128f81f26e95edb0c5ffaea83690fe402483045022100ab44f34dd7e87c9054591297a101e8500a0641d1d591878d0d23cf8096fa79e802205d12d1062d925e27b57bdcf994ecf332ad0a8e67b8fe407bab2101255da632aa012103ee2c3d98eb1f93c0a1aa8e5a4009b70eb7b44ead15f1666f136b012ad58d306800000000\n", + "SIGHASH2\n", + "020000000001017a2a997956c09f8ea7fd2819c1a987bb14e22bf9adcdaf20a89763722ceee2640100000000fdffffff02a0bb0d00000000001976a914344a0f48ca150ec2b903817660b9b68b13a6702688ac7438230000000000160014eb38fa9b8128f81f26e95edb0c5ffaea83690fe40247304402206f863ed58bb5a5a24b5ace7ab292d0ce04214c5f8f39eb236d339eb48dc6734b0220708d950b3442025ef16e42d2ea846214c7008822ed196f3c667d45ccfac2fcd3022103ee2c3d98eb1f93c0a1aa8e5a4009b70eb7b44ead15f1666f136b012ad58d306800000000\n", + "SIGHASH3\n", + "020000000001017a2a997956c09f8ea7fd2819c1a987bb14e22bf9adcdaf20a89763722ceee2640100000000fdffffff02a0bb0d00000000001976a914344a0f48ca150ec2b903817660b9b68b13a6702688ac7438230000000000160014eb38fa9b8128f81f26e95edb0c5ffaea83690fe4024730440220112e7666be1b64321c7889cfca2803b0c10386cb08e4e9bfef2f1ea19302014302202e2958439931a685a206a4f7defcb7ce0bc7f6d66f768adda9b5f98fb80782c2032103ee2c3d98eb1f93c0a1aa8e5a4009b70eb7b44ead15f1666f136b012ad58d306800000000\n", + "SIGHASH81\n", + "020000000001017a2a997956c09f8ea7fd2819c1a987bb14e22bf9adcdaf20a89763722ceee2640100000000fdffffff02a0bb0d00000000001976a914344a0f48ca150ec2b903817660b9b68b13a6702688ac7438230000000000160014eb38fa9b8128f81f26e95edb0c5ffaea83690fe402483045022100deaefd1f67969a2cb90efea9c334334cca3d9feb34cf67d63275c463a52730d902207264887f207393d097eac140c8beed7520377734047a992e26d939a1496c2f82812103ee2c3d98eb1f93c0a1aa8e5a4009b70eb7b44ead15f1666f136b012ad58d306800000000\n", + "SIGHASH82\n", + "020000000001017a2a997956c09f8ea7fd2819c1a987bb14e22bf9adcdaf20a89763722ceee2640100000000fdffffff02a0bb0d00000000001976a914344a0f48ca150ec2b903817660b9b68b13a6702688ac7438230000000000160014eb38fa9b8128f81f26e95edb0c5ffaea83690fe402483045022100e50d376da21ab489d4386b14ebd0a9cc00179c688b16b59d26ab946d643992390220221539dca306069c520af19afb5ede291ae91e075396ed41524efe59a4c141d4822103ee2c3d98eb1f93c0a1aa8e5a4009b70eb7b44ead15f1666f136b012ad58d306800000000\n", + "SIGHASH83\n", + "020000000001017a2a997956c09f8ea7fd2819c1a987bb14e22bf9adcdaf20a89763722ceee2640100000000fdffffff02a0bb0d00000000001976a914344a0f48ca150ec2b903817660b9b68b13a6702688ac7438230000000000160014eb38fa9b8128f81f26e95edb0c5ffaea83690fe40247304402200771b3e405a37cd4aa24951c088d7e4c37093a7cdd7037a7688114d524560376022040fff9bcd07c00fa912d7d1eed040ecc9dd4e44e4d5cf6ef9a94af836cd87fdd832103ee2c3d98eb1f93c0a1aa8e5a4009b70eb7b44ead15f1666f136b012ad58d306800000000\n" + ] + } + ], + "source": [ + "PSBT_WPKH = \"cHNidP8BAHQCAAAAAXoqmXlWwJ+Op/0oGcGph7sU4iv5rc2vIKiXY3Is7uJkAQAAAAD9////AqC7DQAAAAAAGXapFDRKD0jKFQ7CuQOBdmC5tosTpnAmiKx0OCMAAAAAABYAFOs4+puBKPgfJule2wxf+uqDaQ/kAAAAAAABAH0CAAAAAa+/rgZZD3Qf8a9ZtqxGESYzakxKgttVPfb++rc3rDPzAQAAAAD9////AnARAQAAAAAAIgAg/e5EHFblsG0N+CwSTHBwFKXKGWWL4LmFa8oW8e0yWfel9DAAAAAAABYAFDr4QprVlUql7oozyYP9ih6GeZJLAAAAAAEBH6X0MAAAAAAAFgAUOvhCmtWVSqXuijPJg/2KHoZ5kksiBgPuLD2Y6x+TwKGqjlpACbcOt7ROrRXxZm8TawEq1Y0waBj1rML9VAAAgAEAAIAAAACAAQAAAAgAAAAAACICAinsR3JxMe0liKIMRu2pq7fapvSf1Quv5wucWqaWHE7MGPWswv1UAACAAQAAgAAAAIABAAAACgAAAAA=\"\n", + "\n", + "pubkey = bytes.fromhex(\"03ee2c3d98eb1f93c0a1aa8e5a4009b70eb7b44ead15f1666f136b012ad58d3068\")\n", + "\n", + "sig_sighash1 = b\"0E\\x02!\\x00\\xabD\\xf3M\\xd7\\xe8|\\x90TY\\x12\\x97\\xa1\\x01\\xe8P\\n\\x06A\\xd1\\xd5\\x91\\x87\\x8d\\r#\\xcf\\x80\\x96\\xfay\\xe8\\x02 ]\\x12\\xd1\\x06-\\x92^'\\xb5{\\xdc\\xf9\\x94\\xec\\xf32\\xad\\n\\x8eg\\xb8\\xfe@{\\xab!\\x01%]\\xa62\\xaa\\x01\"\n", + "sig_sighash2 = b'0D\\x02 o\\x86>\\xd5\\x8b\\xb5\\xa5\\xa2KZ\\xcez\\xb2\\x92\\xd0\\xce\\x04!L_\\x8f9\\xeb#m3\\x9e\\xb4\\x8d\\xc6sK\\x02 p\\x8d\\x95\\x0b4B\\x02^\\xf1nB\\xd2\\xea\\x84b\\x14\\xc7\\x00\\x88\"\\xed\\x19o +This page details the protocol implemented since version 2.1.0 of the app. +The protocol documentation for version from 2.0.0 and before 2.1.0 is [here](./v0/bitcoin.md) and is now deprecated. ## Framework ### APDUs -The messaging format of the app is compatible with the [APDU protocol](https://developers.ledger.com/docs/nano-app/application-structure/#apdu-interpretation-loop). The `P1` and `P2` fields are reserved for future use and must be set to `0` in all messages. +The messaging format of the app is compatible with the [APDU protocol](https://developers.ledger.com/docs/nano-app/application-structure/#apdu-interpretation-loop). The `P1` field is reserved for future use and must be set to `0` in all messages. The `P2` field is used as a protocol version identifier; the current version is `1`, while version `0` is still supported. No other value must be used. The main commands use `CLA = 0xE1`, unlike the legacy Bitcoin application that used `CLA = 0xE0`. -| CLA | INS | COMMAND NAME | DESCRIPTION | -|-----|-----|---------------------|-------------| -| E1 | 00 | GET_EXTENDED_PUBKEY | Return (and optionally show on screen) extended pubkey | -| E1 | 02 | REGISTER_WALLET | Registers a wallet on the device (with user's approval) | -| E1 | 03 | GET_WALLET_ADDRESS | Return and show on screen an address for a registered or default wallet | -| E1 | 04 | SIGN_PSBT | Signs a PSBT with a registered or default wallet | -| E1 | 10 | SIGN_MESSAGE | Sign a message with a key from a BIP32 path (Bitcoin Message Signing) | +| CLA | INS | COMMAND NAME | DESCRIPTION | +|-----|-----|------------------------|-------------| +| E1 | 00 | GET_EXTENDED_PUBKEY | Return (and optionally show on screen) extended pubkey | +| E1 | 02 | REGISTER_WALLET | Register a wallet policy on the device (with user's approval) | +| E1 | 03 | GET_WALLET_ADDRESS | Return and show on screen an address for a registered or default wallet | +| E1 | 04 | SIGN_PSBT | Sign a PSBT with a registered or default wallet | +| E1 | 05 | GET_MASTER_FINGERPRINT | Return the fingerprint of the master public key | +| E1 | 10 | SIGN_MESSAGE | Sign a message with a key from a BIP32 path (Bitcoin Message Signing) | The `CLA = 0xF8` is used for framework-specific (rather than app-specific) APDUs; at this time, only one command is present. @@ -84,7 +86,7 @@ Returns an extended public key at the given derivation path, serialized as per B | Length | Name | Description | |--------|-------------------|-------------| | `1` | `display` | `0` or `1` | -| `1` | `n` | Number of derivation steps (maximum 6) | +| `1` | `n` | Number of derivation steps (maximum 8) | | `4` | `bip32_path[0]` | First derivation step (big endian) | | `4` | `bip32_path[1]` | Second derivation step (big endian) | | | ... | | @@ -142,6 +144,8 @@ After user's validation is completed successfully, the application returns the ` #### Client commands +`GET_PREIMAGE` must know and respond for the full serialized wallet policy whose sha256 hash is `wallet_id`; moreover, it must know and respond for the sha256 hash of its descriptor template. + The client must respond to the `GET_PREIMAGE`, `GET_MERKLE_LEAF_PROOF` and `GET_MERKLE_LEAF_INDEX` queries related to the Merkle tree of the list of keys information. The `GET_MORE_ELEMENTS` command must be handled. @@ -185,7 +189,7 @@ If the `display` parameter is `1`, the resulting wallet address is also shown on #### Client commands -`GET_PREIMAGE` must know and respond for the full serialized wallet policy whose sha256 hash is `wallet_id`. +`GET_PREIMAGE` must know and respond for the full serialized wallet policy whose sha256 hash is `wallet_id`; moreover, it must know and respond for the sha256 hash of its descriptor template. The client must respond to the `GET_PREIMAGE`, `GET_MERKLE_LEAF_PROOF` and `GET_MERKLE_LEAF_INDEX` queries related to the Merkle tree of the list of keys information. @@ -223,16 +227,23 @@ No output data; the signature are returned using the YIELD client command. #### Description -Using the information in the PSBT and the wallet description, this command verifies what inputs are internal and what output matches the pattern for a change address. After validating all the external outputs and the transaction fee with the user, it signs each of the internal inputs; each signature is sent to the client using the YIELD command, encoded as ` `, where the `input_index` is a Bitcoin style varint (currently, always 1 byte). +Using the information in the PSBT and the wallet description, this command verifies what inputs are internal and what outputs match the pattern for a change address. After validating all the external outputs and the transaction fee with the user, it signs each of the internal inputs; each signature is sent to the client using the YIELD command, in the format described below. If multiple key placeholders of the wallet policy are internal, the process is repeated for each of them. + +The results yielded via the YIELD command respect the following format: ` `, where: +- `input_index` is a Bitcoin style varint, the index input of the input being signed (starting from 0); +- `pubkey_augm_len` is an unsigned byte equal to the length of `pubkey_augm`; +- `pubkey_augm` is the `pubkey` used for signing for legacy, segwit or taproot script path spends (a compressed pubkey if non-taproot, a 32-byte x-only pubkey if taproot); for taproot script path spends, it is the concatenation of the `x-only` pubkey and the 32-byte *tapleaf hash* as defined in [BIP-0341](https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki); +- `signature` is the returned signature, possibly concatenated with the sighash byte (as it would be pushed on the stack). + +If `P2` is `0` (version `0` of the protocol), `pubkey_augm_len` and `pubkey_augm` are omitted in the YIELD messages. For a registered wallet, the hmac must be correct. For a default wallet, `hmac` must be equal to 32 bytes `0`. - #### Client commands -`GET_PREIMAGE` must know and respond for the full serialized wallet policy whose sha256 hash is `wallet_id`. +`GET_PREIMAGE` must know and respond for the full serialized wallet policy whose sha256 hash is `wallet_id`; moreover, it must know and respond for the sha256 hash of its descriptor template. The client must respond to the `GET_PREIMAGE`, `GET_MERKLE_LEAF_PROOF` and `GET_MERKLE_LEAF_INDEX` queries for all the Merkle trees in the input, including each of the Merkle trees for keys and values of the Merkleized map commitments of each of the inputs/outputs maps of the psbt. @@ -287,7 +298,7 @@ The device shows on its secure screen the BIP-32 path used for signing, and the | Length | Name | Description | |---------|-------------------|-------------| -| `1` | `n` | Number of derivation steps (maximum 6) | +| `1` | `n` | Number of derivation steps (maximum 8) | | `4` | `bip32_path[0]` | First derivation step (big endian) | | `4` | `bip32_path[1]` | Second derivation step (big endian) | | | ... | | @@ -338,7 +349,7 @@ The `YIELD` client command is sent to the client to communicate some result duri The client must respond with an empty message. -### 40 GET_PREIMAGE +### GET_PREIMAGE **Command code**: 0x40 diff --git a/doc/merkle.md b/doc/merkle.md index 3013df360..85e16a37a 100644 --- a/doc/merkle.md +++ b/doc/merkle.md @@ -35,7 +35,7 @@ Note that the 1-byte prefix `0x00` is prepended when computing the leaf hashes, The Merkle proof (called *Merkle audit path* in the language for RFC 6962) for a leaf node is the minimal set of additional nodes that is necessary to compute the Merkle Tree Hash. See section 2.1.3. of RFC 6962 for some examples. -For any non-root node of the tree (either internal or leaf), let the *brother* be the unique other note sharing the same parent, that is the unique other node whose hash is combined together to compute an internal node. +For any non-root node of the tree (either internal or leaf), let the *brother* be the unique other node sharing the same parent, that is the unique other node whose hash is combined together to compute an internal node. In the typical tree-like representation of the Merkle tree, the Merkle proof for a leaf is the list of the brothers of all the internal nodes diff --git a/doc/v0/bitcoin.md b/doc/v0/bitcoin.md new file mode 100644 index 000000000..04bc5665d --- /dev/null +++ b/doc/v0/bitcoin.md @@ -0,0 +1,417 @@ +# Bitcoin application: Technical Specifications + +This page described the _deprecated_ version 0 of the protocol, as implemented in the v2.0.0 of the Bitcoin app. This protocol is still supported at this time, but we encourage integrations to switch to [version 1 of the protocol](../bitcoin.md). + +## Framework + +### APDUs + +The messaging format of the app is compatible with the [APDU protocol](https://developers.ledger.com/docs/nano-app/application-structure/#apdu-interpretation-loop). The `P1` and `P2` fields are reserved for future use and must be set to `0` in all messages. + +The main commands use `CLA = 0xE1`, unlike the legacy Bitcoin application that used `CLA = 0xE0`. + +| CLA | INS | COMMAND NAME | DESCRIPTION | +|-----|-----|---------------------|-------------| +| E1 | 00 | GET_EXTENDED_PUBKEY | Return (and optionally show on screen) extended pubkey | +| E1 | 02 | REGISTER_WALLET | Registers a wallet on the device (with user's approval) | +| E1 | 03 | GET_WALLET_ADDRESS | Return and show on screen an address for a registered or default wallet | +| E1 | 04 | SIGN_PSBT | Signs a PSBT with a registered or default wallet | +| E1 | 10 | SIGN_MESSAGE | Sign a message with a key from a BIP32 path (Bitcoin Message Signing) | + +The `CLA = 0xF8` is used for framework-specific (rather than app-specific) APDUs; at this time, only one command is present. + +| CLA | INS | COMMAND NAME | DESCRIPTION | +|-----|-----|--------------|-------------| +| F8 | 01 | CONTINUE | Respond to an interruption and continue processing a command | + +The `CONTINUE` command is sent as a response to a client command from the Hardware Wallet; the format and content on the response depends on the client command, and is documented below for each client command. + +### Interactive commands + +Several commands are executed via an interactive protocol that requires multiple rounds. At any time after receiving the command and before returning the commands final response (which is status word `0x9000` in case of success), the Hardware Wallet can respond with a special status word `SW_INTERRUPTED_EXECUTION` (`0xE000`), containing a request for the client in the response data. The first byte of the response is the *client command code*, identified what kind of request the Hardware Wallet is asking the client to perform. The client *must* comply with the request and send a special *CONTINUE* command `CLA = 0xF8` and `INS = 0x01`, with the appropriate response. + +The specs for the client commands are detailed below. + +## Descriptors and wallet policies + +The Bitcoin app uses a language similar to [output script descriptors](https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md) in order to represent the wallets that can be used to sign transactions. +Wallet policies need to be registered on the device, with an interactive process that requires user's approval. + +See [here](wallet.md) for detailed information on the wallet policy language. + +## Wallet registration flow + +In order to use a wallet policy that is not one of the default ones, the policy must first be registered on the wallet, which is a protocol that requires explicit approval from the user. + +A wallet policy is initiated using the `REGISTER_WALLET` command. The screen of the hardware wallet will ask the user to inspect the wallet descriptor template, followed by each of the keys of the cosigners that are part of the wallet policy. + +Once the user approves, the `REGISTER_WALLET` returns to the client a 32-byte HMAC-SHA256. This will be provided to any future command that makes use of the wallet policy; therefore, the HMAC should be permanently stored on the client. In case of loss of the HMAC, the registration flow must be repeated from scratch. + +## Status Words + +| SW | SW name | Description | +|--------|------------------------------|-------------| +| 0x6985 | `SW_DENY` | Rejected by user | +| 0x6A86 | `SW_WRONG_P1P2` | Either `P1` or `P2` is incorrect | +| 0x6A87 | `SW_WRONG_DATA_LENGTH` | `Lc` or minimum APDU length is incorrect | +| 0x6D00 | `SW_INS_NOT_SUPPORTED` | No command exists with `INS` | +| 0x6E00 | `SW_CLA_NOT_SUPPORTED` | Bad `CLA` used for this application | +| 0xB000 | `SW_WRONG_RESPONSE_LENGTH` | Wrong response length (buffer size problem) | +| 0xB007 | `SW_BAD_STATE` | Abrted because unexpected state reached | +| 0xB008 | `SW_SIGNATURE_FAIL` | Invalid signature or HMAC | +| 0xE000 | `SW_INTERRUPTED_EXECUTION` | The command is interrupted, and requires the client's response | +| 0x9000 | `SW_OK` | Success | + + + +## Commands + +### GET_EXTENDED_PUBKEY + +Returns an extended public key at the given derivation path, serialized as per BIP-32. + +#### Encoding + +**Command** + +| *CLA* | *INS* | +|-------|-------| +| E1 | 00 | + +**Input data** + +| Length | Name | Description | +|--------|-------------------|-------------| +| `1` | `display` | `0` or `1` | +| `1` | `n` | Number of derivation steps (maximum 6) | +| `4` | `bip32_path[0]` | First derivation step (big endian) | +| `4` | `bip32_path[1]` | Second derivation step (big endian) | +| | ... | | +| `4` | `bip32_path[n-1]` | `n`-th derivation step (big endian) | + +**Output data** + +| Length | Description | +|--------|-------------| +| `` | The full serialized extended public key as per BIP-32 | + +#### Description + +This command returns the extended public key for the given BIP 32 path. + +The paths defined in [BIP-44](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki), [BIP-48](https://github.com/bitcoin/bips/blob/master/bip-0048.mediawiki), [BIP-49](https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki), [BIP-84](https://github.com/bitcoin/bips/blob/master/bip-0084.mediawiki) and [BIP-86](https://github.com/bitcoin/bips/blob/master/bip-0086.mediawiki), either in full or are at the deepest hardened level (excluding `change` and `address_index`), are considered standard. + +If the `display` parameter is `0` and the path is not standard, an error is returned. + +If the `display` parameter is `1`, the result is also shown on the secure screen for verification. The UX flow shows on the device screen the exact path and the complete serialized extended pubkey as defined in [BIP-32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) for that path. If the path is not standard, an additional warning is shown to the user. + +### REGISTER_WALLET + +Registers a wallet policy on the device, after validating it with the user. + +#### Encoding + +**Command** + +| *CLA* | *INS* | +|-------|-------| +| E1 | 02 | + +**Input data** + +| Length | Name | Description | +|-----------------|-----------------|-------------| +| `` | `policy_length` | The length of the policy (unsigned varint) | +| `policy_length` | `policy` | The serialized wallet policy | + +The `policy` is serialized as described [here](wallet.md). At this time, no policy can be longer than 252 bytes, therefore the `policy_length` field is always encoded as 1 byte. + +**Output data** + +| Length | Description | +|--------|----------------------------| +| `32` | The `wallet_id` | +| `32` | The `hmac` for this wallet | + +#### Description + +This command allows to register a wallet policy on the device. The wallet's name, descriptor template and each of the keys information is shown to the user. + +After user's validation is completed successfully, the application returns the `wallet_id` (sha256 of the wallet serialization), and the `hmac` for this wallet. + +#### Client commands + +The client must respond to the `GET_PREIMAGE`, `GET_MERKLE_LEAF_PROOF` and `GET_MERKLE_LEAF_INDEX` queries related to the Merkle tree of the list of keys information. + +The `GET_MORE_ELEMENTS` command must be handled. + +### GET_WALLET_ADDRESS + +Get a receive or change a address for a registered or default wallet, after validating it with the user using the trusted screen. + +#### Encoding + +**Command** + +| *CLA* | *INS* | +|-------|-------| +| E1 | 03 | + +**Input data** + +| Length | Name | Description | +|--------|-----------------|-------------| +| `1` | `display` | `0` or `1` | +| `32` | `wallet_id` | The id of the wallet | +| `32` | `wallet_hmac` | The hmac of a registered wallet, or exactly 32 0 bytes | +| `1` | `change` | `0` for a receive address, `1` for a change address | +| `4` | `address_index` | The desired address index (big-endian) | + + +**Output data** + +| Length | Description | +|-------------|-----------------| +| | The wallet address for the given change/address_index | + +#### Description + +For a registered wallet, the hmac must be correct. Once that is validated, this command computes the address of the wallet for the given `change` and `address_index` choice. + +For a default wallet, `hmac` must be equal to 32 bytes `0`. + +If the `display` parameter is `1`, the resulting wallet address is also shown on the secure screen, and only returns successfully after the user confirms it. If the `display` parameter is `0`, the result is silently returned. + +#### Client commands + +`GET_PREIMAGE` must know and respond for the full serialized wallet policy whose sha256 hash is `wallet_id`. + +The client must respond to the `GET_PREIMAGE`, `GET_MERKLE_LEAF_PROOF` and `GET_MERKLE_LEAF_INDEX` queries related to the Merkle tree of the list of keys information. + +The `GET_MORE_ELEMENTS` command must be handled. + +### SIGN_PSBT + +Given a PSBTv2 and a registered wallet (or a standard one), sign all the inputs that are owned by that wallet. + +#### Encoding + +**Command** + +| *CLA* | *INS* | +|-------|-------| +| E1 | 04 | + +**Input data** + +| Length | Name | Description | +|---------|------------------------|-------------| +| `` | `global_map_size` | The number of key/value pairs of the global map of the psbt | +| `32` | `global_map_keys_root` | The Merkle root of the keys of the global map | +| `32` | `global_map_vals_root` | The Merkle root of the values of the global map | +| `` | `n_inputs` | The number of inputs of the psbt | +| `32` | `inputs_maps_root` | The Merkle root of the vector of Merkleized map commitments for the input maps | +| `` | `n_outputs` | The number of outputs of the psbt | +| `32` | `outputs_maps_root` | The Merkle root of the vector of Merkleized map commitments for the output maps | +| `32` | `wallet_id` | The id of the wallet | +| `32` | `wallet_hmac` | The hmac of a registered wallet, or exactly 32 0 bytes | + +**Output data** + +No output data; the signature are returned using the YIELD client command. + +#### Description + +Using the information in the PSBT and the wallet description, this command verifies what inputs are internal and what output matches the pattern for a change address. After validating all the external outputs and the transaction fee with the user, it signs each of the internal inputs; each signature is sent to the client using the YIELD command, encoded as ` `, where the `input_index` is a Bitcoin style varint (currently, always 1 byte). + +For a registered wallet, the hmac must be correct. + +For a default wallet, `hmac` must be equal to 32 bytes `0`. + + +#### Client commands + +`GET_PREIMAGE` must know and respond for the full serialized wallet policy whose sha256 hash is `wallet_id`. + +The client must respond to the `GET_PREIMAGE`, `GET_MERKLE_LEAF_PROOF` and `GET_MERKLE_LEAF_INDEX` queries for all the Merkle trees in the input, including each of the Merkle trees for keys and values of the Merkleized map commitments of each of the inputs/outputs maps of the psbt. + +The `GET_MORE_ELEMENTS` command must be handled. + +The `YIELD` command must be processed in order to receive the signatures. + +### GET_MASTER_FINGERPRINT + +Returns the fingerprint of the master public key, as defined in [BIP-0032#Key identifiers](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#key-identifiers). + +#### Encoding + +**Command** + +| *CLA* | *INS* | +|-------|-------| +| E1 | 05 | + +**Input data** + +No input data. + +**Output data** + +| Length | Description | +|--------|----------------------------| +| `4` | The master key fingerprint | + +#### Description + +The fingerprint is necessary to fill the key origin information for some PSBT fields, or to create wallet descriptors. + +User interaction is not required for this command. + + +### SIGN_MESSAGE + +Signs a message, according to the standard Bitcoin Message Signing. + +The device shows on its secure screen the BIP-32 path used for signing, and the SHA256 hash of the message; the hash should be verified by the user using an external tool if the client is untrusted. + +#### Encoding + +**Command** + +| *CLA* | *INS* | +|-------|-------| +| E1 | 10 | + +**Input data** + +| Length | Name | Description | +|---------|-------------------|-------------| +| `1` | `n` | Number of derivation steps (maximum 6) | +| `4` | `bip32_path[0]` | First derivation step (big endian) | +| `4` | `bip32_path[1]` | Second derivation step (big endian) | +| | ... | | +| `4` | `bip32_path[n-1]` | `n`-th derivation step (big endian) | +| `` | `msg_length` | The byte length of the message to sign (Bitcoin-style varint) | +| `32` | `msg_merkle_root` | The Merkle root of the message, split in 64-byte chunks | + +The message to be signed is split into `ceil(msg_length/64)` chunks of 64 bytes (except the last chunk that could be smaller); `msg_merkle_root` is the root of the Merkle tree of the corresponding list of chunks. + +The theoretical maximum valid length of the message is 232-1 = 4 294 967 295 bytes. + +**Output data** + +| Length | Description | +|--------|-------------| +| `65` | The returned signature, encoded in the standard Bitcoin message signing format | + +The signature is returned as a 65-byte binary string (1 byte equal to 32 or 33, followed by `r` and `s`, each of them represented as a 32-byte big-endian integer). + +#### Description + +The digest being signed is the double-SHA256 of the message, after prefixing the message with: + +- the magic string `"\x18Bitcoin Signed Message:\n"` (equal to `18426974636f696e205369676e6564204d6573736167653a0a` in hexadecimal) +- the length of the message, encoded as a Bitcoin-style variable length integer. + +#### Client commands + +The client must respond to the `GET_PREIMAGE`, `GET_MERKLE_LEAF_PROOF` and `GET_MERKLE_LEAF_INDEX` queries for the Merkle tree of the list of chunks in the message. + +## Client commands reference + +This section documents the commands that the Hardware Wallet can request to the client when returning with a `SW_INTERRUPTED_EXECUTION` status word. + +| CMD | COMMAND NAME | DESCRIPTION | +|-----|-----------------------|-------------| +| 10 | YIELD | Receive some elements during command execution | +| 40 | GET_PREIMAGE | Return the preimage corresponding to the given sha256 hash | +| 41 | GET_MERKLE_LEAF_PROOF | Returns the Merkle proof for a given leaf | +| 42 | GET_MERKLE_LEAF_INDEX | Returns the index of a leaf in a Merkle tree | +| A0 | GET_MORE_ELEMENTS | Receive more data that could not fit in the previous responses | + +### YIELD + +**Command code**: 0x10 + +The `YIELD` client command is sent to the client to communicate some result during the execution of a command. Currently only used during `SIGN_PSBT` in order to communicate each of the signatures. The format of the attached message is documented for each command that uses `YIELD`. + +The client must respond with an empty message. + +### 40 GET_PREIMAGE + +**Command code**: 0x40 + +The `GET_PREIMAGE` command requests the client to reveal a SHA-256 preimage. + +The request contains: +- `1` byte: must equal 0, reserved for future usage. (The client should abort if non-zero); +- `32` bytes: a sha-256 hash. + +The response must contain: +- ``: the length of the preimage, encoded as a Bitcoin-style varint; +- `1` byte: a 1-byte unsigned integer `b`, the length of the prefix of the pre-image that is part of the response; +- `b` bytes: corresponding to the first `b` bytes of the preimage. + +If the pre-image is too long to be contained in a single response, the client should choose `b` to be as large as possible; subsequent bytes are enqueued as single-byte elements that the Hardware Wallet will request with one ore more `GET_MORE_ELEMENTS` requests. + +### GET_MERKLE_LEAF_PROOF + +**Command code**: 0x41 + +The `GET_MERKLE_LEAF_PROOF` command requests the hash of a given leaf of a Merkle tree, together with the Merkle proof. + +The request contains: +- `32` bytes: the Merkle root hash; +- `` bytes: the tree size `n`, encoded as a Bitcoin-style varint; +- `` bytes: the leaf index `i`, encoded as a Bitcoin-style varint. + +The client must respond with: +- `32` bytes: the hash of the leaf with index `i` in the requested Merkle tree; +- `1` byte: the length of the Merkle proof; +- `1` byte: the amount `p` of hashes of the proof that are contained in the response; +- `32 * p` bytes: the concatenation of the first `p` hashes in the Merkle proof. + +If the proof is too long to be contained in a single response, the client should choose `p` to be as large as possible; subsequent bytes are enqueued as 32-byte elements that the Hardware Wallet will request with one or more `GET_MORE_ELEMENTS` requests. + +### GET_MERKLE_LEAF_INDEX + +**Command code**: 0x42 + +The `GET_MERKLE_LEAF_INDEX` requests the index of a leaf with a certain hash. if multiple leafs have the same hash, the client could respond with either. + +The request contains: +- `32` bytes: the Merkle root hash; +- `32` bytes: the leaf hash. + +The response contains: +- `1` byte: `1` if the leaf is found, `0` if matching leaf exists; +- ``: the index of the leaf, encoded as a Bitcoin-style varint. + +### GET_MORE_ELEMENTS + +**Command code**: 0xA0 + +The `GET_MORE_ELEMENTS` command requests the client to return more elements that were enqueued by previous client commands (like `GET_PREIMAGE` and `GET_MERKLE_LEAF_PROOF`). + +All of the elements in the queue must all be byte strings of the same length; the command fails otherwise. The client should return as many elements as it is possible to fit in the response, while leaving the remaining ones (if any) in the queue. + +The request is empty. + +The response contains: +- `1` byte: the number `n` of returned element; +- `1` byte: the size `s` of each returned element; +- `n * s` bytes: the concatenation of the `n` returned elements. + + +## Security considerations + +Some of the client commands are used to allow the client to reveal some information that is not known to the hardware wallet. This approach allows to create protocols that work with an amount of data that is too large to fit in a single APDU, or even in the limited RAM of a device like a Ledger Nano S. + +In designing the interactive protocol, care is taken to avoid security risks associated with a malicious, possibly compromised client. + +All the current commands use a commit-and-reveal approach: the APDU that starts the protocol (first message) commits to all the relevant data (for example, the entirety of the PSBT), by using hashes and/or Merkle trees. Any time the client is asked to reveal some committed information, the app does not consider it trusted: +- If a preimage is asked via `GET_PREIMAGE`, the hash is computed to validate that the correct preimage is returned by the client. +- If a Merkle proof is asked via `GET_MERKLE_LEAF_PROOF`, the proof is verified. +- If the index of a leaf is asked `GET_MERKLE_LEAF_INDEX`, the proof for that element is requested via `GET_MERKLE_LEAF_PROOF` and the proof verified, *even if the leaf value is known*. + +Care needs to be taken in designing protocols, as the client might lie by omission (for example, fail to reveal that a leaf of a Merkle tree is present during a call to `GET_MERKLE_LEAF_INDEX`). \ No newline at end of file diff --git a/doc/v0/wallet.md b/doc/v0/wallet.md new file mode 100644 index 000000000..94c925e16 --- /dev/null +++ b/doc/v0/wallet.md @@ -0,0 +1,125 @@ + +This page described the wallet plicies used in the _deprecated_ version 0 of the protocol, as implemented in the v2.0.0 of the Bitcoin app. This protocol is still supported at this time, but we encourage integrations to switch to the [wallet policies in version 1 of the protocol](../wallet.md). + +# Wallet policy + +A _wallet descriptor template_ follows the same language as output descriptor, except that each `KEY` expression is replaced with the `@` character followed by non-negative decimal number (starting with `0`). Each of them is a placeholder for the key information that is kept in a separate vector. +A *wallet policy* is the pair of the _wallet descriptor template_ and the vector of key information; some additional metadata is associated, as described below. + +Each key information is an expression similar to the `KEY` expressions of output descriptors, except that +- only serialized extended public keys ("xpubs") are supported; +- key origin information is compulsory +- it is followed by a `/**` prefix implying the last two steps of derivation (change and address index). A formalized description follows below. + +## Reference + +A wallet descriptor template is a `SCRIPT` expression, described as follows: + +`SCRIPT` expressions: +- `sh(SCRIPT)` (top level only): P2SH embed the argument. +- `wsh(SCRIPT)` (top level or inside `sh` only): P2WSH embed the argument. +- `pkh(KP)` (not inside `tr`): P2PKH output for the given public key (use `addr` if you only know the pubkey hash). +- `wpkh(KP)` (top level or inside `sh` only): P2WPKH output for the given compressed pubkey. +- `multi(k,KP_1,KP_2,...,KP_n)`: k-of-n multisig script. +- `sortedmulti(k,KP_1,KP_2,...,KP_n)`: k-of-n multisig script with keys sorted lexicographically in the resulting script. + +Key placeholder `KP` expressions consist of +- a single character `@` +- followed by a non-negative decimal number, with no leading zeros (except for `@0`). + +The placeholder `@i` for some number *i* represents the *i*-th key in the vector of key orgin informations (which must be of size at least *i* + 1, or the wallet is invalid. + +Each element of the *key origin informations* list is a `KEY` expression. +`KEY` expressions: + +- Key origin information, consisting of: + - An open bracket `[` + - Exactly 8 hex characters for the fingerprint of the master key from which this key is derived from (see [BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) for details) + - Followed by zero or more `/NUM'` path elements to indicate hardened derivation steps between the fingerprint and the xpub that follows + - A closing bracket `]` +- Followed by the actual key, which is a serialized extended public key (`xpub`) (as defined in [BIP 32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki)). +- Followed by the string `/**` + +Note that this format is much more restricted (by design) than the format used in output descriptors. In particular, the key origin information is compulsory. + +The `/**` in the descriptor template represents all the possible paths used in the wallet. + +## Descriptor derivation + +From a descriptor template (and the associated vector of keys), one can therefore obtain the descriptor for receive and change addresses by: + +- replacing each key placeholder with the corresponding key / key origin, and then +- replacing `/**` with either `/0/*` (receive addresses descriptor) or `/1/*` (change addresses descriptor). + +For example, the wallet descriptor `pkh(@0)` with key information `["[d34db33f/44'/0'/0']xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/**"]` produces the following two descriptors: + +- Receive descriptor: `pkh([d34db33f/44'/0'/0']xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/0/*)` +- Change descriptor: `pkh([d34db33f/44'/0'/0']xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/1/*)` + +# Policy registration and usage +The app supports a number of features related to wallet policies. In order to securely sign transactions with a policy wallet (for example in a multisignature), it is necessary to be able to: + +- register a wallet, validating all the information (policy and keys involved) with the user on the trusted screen; +- show the addresses for a registered wallet on the trusted screen; +- sign spends from the wallet. + +Since the application is stateless, wallet registration is not persisted on device. In order to make it possible to use a registered wallet in future requests, the device returns a hmac-sha256 (32 bytes long) for the wallet upon a successful registration. The client side is responsible for persisting the wallet policy *and* the returned hmac-sha256, and to provide this information in future requests. + +As the symmetric key used for hmac-sha256 is deterministically derived from the hardware wallet seed (using [SLIP-0021](https://github.com/satoshilabs/slips/blob/master/slip-0021.md)), the completed wallet registration is non-revokable. + +## Wallet policy serialization + +A registered wallet policy comprises the following: +- The wallet name, up to 16 bytes long; the name is shown to the user on-screen in order to identify the wallet. +- The wallet descriptor template as a string. +- The list of keys. + +The wallet policy is serialized as the concatenation of: + +- `1 byte`: a byte equal to `0x01`, reserved for future use +- `1 byte`: the length of the wallet name (0 for standard wallet) +- ``: the wallet name (empty for standard wallets) +- ``: the length of the wallet descriptor template, encoded as a Bitcoin-style variable-length integer +- ``: the wallet descriptor template, as an ascii string (no terminating 0) +- ``: the number of keys in the list of keys, encoded as a Bitcoin-style variable-length integer +- `<32 bytes>`: the root of the canonical Merkle tree of the list of keys. + +See [merkle](../merkle.md) for information on Merkle trees. + +The sha256 hash of a serialized wallet policy is used as a *wallet policy id*. + +## Wallet name + +The wallet name must be recognizable from the user when shown on-screen. Currently, the following limitations apply during wallet registration: +- The wallet name must be between 1 and 16 characters long. +- Each character must be an ASCII character with code at least 32 = 0x20 (the 'space' character) and at most 125 = 0x7e (the '~' character). +- The first and the last character must _not_ be spaces. + +The hardware wallet will reject registration for wallet names not respecting the above constraints. + +## Supported policies + +As a precaution, at this time only a limited set of commonly used policies can be registered. More will be added in the future, to support new use cases. + +The following policy types are currently supported: + +- `sh(multi(...))` and `sh(sortedmulti(...))` (legacy multisignature wallets); +- `sh(wsh(multi(...)))` and `sh(wsh(sortedmulti(...)))` (wrapped-segwit multisignature wallets); +- `wsh(multi(...))` and `wsh(sortedmulti(...))` (native segwit multisignature wallets). + +## Other technical limitations + +At this time, there are some technical limitations on the accepted wallet policies: +- `multi` and `sortedmulti` support at most 5 keys; + +These limitations will likely be removed in the future. + +# Default wallets +A few policies that correspond to standardized single-key wallets can be used without requiring any registration; in the serialization, the wallet name must be a zero-length string. Those are the following policies: + +- ``pkh(@0)`` - legacy addresses as per [BIP-44](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki) +- ``wpkh(@0)`` - native segwit addresses per [BIP-84](https://github.com/bitcoin/bips/blob/master/bip-0084.mediawiki) +- ``sh(wpkh(@0))`` - nested segwit addresses as per [BIP-49](https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki) +- ``tr(@0)`` - single Key P2TR as per [BIP-86](https://github.com/bitcoin/bips/blob/master/bip-0086.mediawiki) + +Note that the wallet policy is considered standard (and therefore usable for signing without prior registration) only if the signing paths (defined in the key origin information) adheres to the corresponding BIP. \ No newline at end of file diff --git a/doc/wallet.md b/doc/wallet.md index b85f0039c..c5f22aa69 100644 --- a/doc/wallet.md +++ b/doc/wallet.md @@ -1,57 +1,126 @@ # Wallet policy -A _wallet descriptor template_ follows the same language as output descriptor, except that each `KEY` expression is replaced with the `@` character followed by non-negative decimal number (starting with `0`). Each of them is a placeholder for the key information that is kept in a separate vector. -A *wallet policy* is the pair of the _wallet descriptor template_ and the vector of key information; some additional metadata is associated, as described below. +A _wallet policy_ is a structured representation of an account secured by a policy expressed with output script descriptors. It is composed by two parts: +a wallet descriptor template and the vector of key placeholder expressions. -Each key information is an expression similar to the `KEY` expressions of output descriptors, except that -- only serialized extended public keys ("xpubs") are supported; -- key origin information is compulsory -- it is followed by a `/**` prefix implying the last two steps of derivation (change and address index). A formalized description follows below. +A _wallet descriptor template_ follows language very similar to output descriptor, with a few differences; the biggest one is that each `KEY` expression with a key placeholder `KP` expression, that refers to one of the keys in the _keys information vector_, plus the additional derivation steps to use for that key. Contextually, the keys information vector contains all the relevant _xpubs_, and possibly their key origin information. -## Reference +Each entry in the key information vector contains an _xpub_ (other types of keys supported in output script descriptors are not allowed), possible preceeded by the key origin information. The key origin information is compulsory for internal keys. -A wallet descriptor template is a `SCRIPT` expression, described as follows: +This section formally defines wallet policies, and how they relate to +output script descriptors. -`SCRIPT` expressions: -- `sh(SCRIPT)` (top level only): P2SH embed the argument. -- `wsh(SCRIPT)` (top level or inside `sh` only): P2WSH embed the argument. -- `pkh(KP)` (not inside `tr`): P2PKH output for the given public key (use `addr` if you only know the pubkey hash). -- `wpkh(KP)` (top level or inside `sh` only): P2WPKH output for the given compressed pubkey. -- `multi(k,KP_1,KP_2,...,KP_n)`: k-of-n multisig script. -- `sortedmulti(k,KP_1,KP_2,...,KP_n)`: k-of-n multisig script with keys sorted lexicographically in the resulting script. - -Key placeholder `KP` expressions consist of -- a single character `@` -- followed by a non-negative decimal number, with no leading zeros (except for `@0`). - -The placeholder `@i` for some number *i* represents the *i*-th key in the vector of key orgin informations (which must be of size at least *i* + 1, or the wallet is invalid. +## Formal definition -Each element of the *key origin informations* list is a `KEY` expression. -`KEY` expressions: +A _wallet policy_ is composed by a _wallet descriptor template_, together with a vector of _key information items_. -- Key origin information, consisting of: - - An open bracket `[` - - Exactly 8 hex characters for the fingerprint of the master key from which this key is derived from (see [BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) for details) - - Followed by zero or more `/NUM'` path elements to indicate hardened derivation steps between the fingerprint and the xpub that follows - - A closing bracket `]` -- Followed by the actual key, which is a serialized extended public key (`xpub`) (as defined in [BIP 32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki)). -- Followed by the string `/**` +### Wallet descriptor template ==== -Note that this format is much more restricted (by design) than the format used in output descriptors. In particular, the key origin information is compulsory. +A wallet descriptor template is a `SCRIPT` expression. -The `/**` in the descriptor template represents all the possible paths used in the wallet. +`SCRIPT` expressions: +- `sh(SCRIPT)` (top level only): P2SH embed the argument. +- `wsh(SCRIPT)` (top level or inside `sh` only): P2WSH embed the argument. +- `pkh(KP)` (not inside `tr`): P2PKH output for the given public key (use +`addr` if you only know the pubkey hash). +- `wpkh(KP)` (top level or inside `sh` only): P2WPKH output for the given +compressed pubkey. +- `multi(k,KP_1,KP_2,...,KP_n)` (not inside `tr`): k-of-n multisig script using OP_CHECKMULTISIG. +- `sortedmulti(k,KP_1,KP_2,...,KP_n)` (not inside `tr`): k-of-n multisig script with keys +sorted lexicographically in the resulting script. +- `multi_a(k,KP_1,KP_2,...,KP_n)` (only inside `tr`): k-of-n multisig script. +- `sortedmulti_a(k,KP_1,KP_2,...,KP_n)` (only inside `tr`): k-of-n multisig script with keys +sorted lexicographically in the resulting script. +- `tr(KP)` or `tr(KP,TREE)`: P2TR output with the specified key placeholder internal key, and optionally a tree of script paths. +- any valid [miniscript](https://bitcoin.sipa.be/miniscript) template (only inside top-level `wsh`, or in `TREE`). + +`TREE` expressions: +- any `SCRIPT`expression. +- An open brace `{`, a `TREE` expression, a comma `,`, a `TREE` expression, and a closing brace `}`. + +`KP` expressions (key placeholders) consist of +- a single character `@` +- followed by a non-negative decimal number, with no leading zeros (except +for `@0`). +- possibly followed by either: + - the string `/**`, or + - a string of the form `//*`, for two distinct decimal numbers +`NUM` representing unhardened derivations. + +The `/**` in the placeholder template represents commonly used paths for +receive/change addresses, and is equivalent to `<0;1>`. + +The placeholder `@i` for some number *i* represents the *i*-th key in the +vector of key origin information (which must be of size at least *i* + 1, +or the wallet policy is invalid). + +### Keys information vector + +Each element of the keys origin information vector is a `KEY` expression. + +`KEY` expressions consist of +- Optionally, key origin information, consisting of: + - An open bracket `[` + - Exactly 8 hex characters for the fingerprint of the master key from +which this key is derived from (see [BIP32]( +https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) for details) + - Followed by zero or more `/NUM'` path elements to indicate hardened +derivation steps between the fingerprint and the xpub that follows + - A closing bracket `]` +- Followed by the actual key, which is either + - a hex-encoded pubkey, which is either + - inside `wpkh` and `wsh`, only compressed public keys are permitted +(exactly 66 hex characters starting with `02` or `03`. + - inside `tr`, x-only pubkeys are also permitted (exactly 64 hex +characters). + - a serialized extended public key (`xpub`) (as defined in [BIP 32]( +https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki)) + +The placeholder `@i` for some number *i* represents the *i*-th key in the +vector of key origin information (which must be of size at least *i* + 1, +or the wallet policy is invalid). + +A key with no origin information will be treated as external by the hardware wallet. + +### Additional rules + +The wallet policy is invalid if any placeholder expression with additional +derivation steps is used when the corresponding key information is not an +xpub. + +The key information vector *should* be ordered so that placeholder `@i` +never appear for the first time before an occurrence of `@j` for some `j < i`; for example, the first placeholder is always `@0`, the next one is +`@1`, etc. + +### Implementation-specific restrictions + +- Placeholder _must_ be followed by `/**` or `/<0;1>`. +- Key expressions only support xpubs at this time (no hex-encoded pubkeys). +- Very large policies might not be supported because of the device's memory limitations. ## Descriptor derivation -From a descriptor template (and the associated vector of keys), one can therefore obtain the descriptor for receive and change addresses by: +From a wallet descriptor template (and the associated vector of keys +information), one can therefore obtain the 1-dimensional descriptor for +receive and change addresses by: -- replacing each key placeholder with the corresponding key / key origin, and then -- replacing `/**` with either `/0/*` (receive addresses descriptor) or `/1/*` (change addresses descriptor). +- replacing each key placeholder with the corresponding key origin +information; +- replacing every `/**` with `/0/*` for the receive descriptor, and `/1/*` +for the change descriptor; +- replacing every `/` with `/M` for the receive descriptor, and `/N` +for the change descriptor. -For example, the wallet descriptor `pkh(@0)` with key information `["[d34db33f/44'/0'/0']xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/**"]` produces the following two descriptors: +For example, the wallet descriptor `pkh(@0/**)` with key information +`["[d34db33f/44'/0'/0']xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL"]` +produces the following two descriptors: + +- Receive descriptor: +`pkh([d34db33f/44'/0'/0']xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/0/*)` + +- Change descriptor: +`pkh([d34db33f/44'/0'/0']xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/1/*)` -- Receive descriptor: `pkh([d34db33f/44'/0'/0']xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/0/*)` -- Change descriptor: `pkh([d34db33f/44'/0'/0']xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/1/*)` # Policy registration and usage The app supports a number of features related to wallet policies. In order to securely sign transactions with a policy wallet (for example in a multisignature), it is necessary to be able to: @@ -73,13 +142,13 @@ A registered wallet policy comprises the following: The wallet policy is serialized as the concatenation of: -- `1 byte`: a byte equal to `0x01`, reserved for future use +- `1 byte`: a byte equal to `0x02`, the version of the wallet policy language - `1 byte`: the length of the wallet name (0 for standard wallet) -- ``: the wallet name (empty for standard wallets) +- ``: the wallet name (empty for standard wallets) - ``: the length of the wallet descriptor template, encoded as a Bitcoin-style variable-length integer -- ``: the wallet descriptor template, as an ascii string (no terminating 0) +- `32 bytes`: the sha256 hash of the wallet descriptor template - ``: the number of keys in the list of keys, encoded as a Bitcoin-style variable-length integer -- `<32 bytes>`: the root of the canonical Merkle tree of the list of keys. +- `<32 bytes>`: the root of the canonical Merkle tree of the list of keys See [merkle](merkle.md) for information on Merkle trees. @@ -88,7 +157,7 @@ The sha256 hash of a serialized wallet policy is used as a *wallet policy id*. ## Wallet name The wallet name must be recognizable from the user when shown on-screen. Currently, the following limitations apply during wallet registration: -- The wallet name must be between 1 and 16 characters long. +- The wallet name must be at least 1 and at most 64 characters long. - Each character must be an ASCII character with code at least 32 = 0x20 (the 'space' character) and at most 125 = 0x7e (the '~' character). - The first and the last character must _not_ be spaces. @@ -96,27 +165,27 @@ The hardware wallet will reject registration for wallet names not respecting the ## Supported policies -As a precaution, at this time only a limited set of commonly used policies can be registered. More will be added in the future, to support new use cases. - -The following policy types are currently supported: +The following policy types are currently supported as top-level scripts: - `sh(multi(...))` and `sh(sortedmulti(...))` (legacy multisignature wallets); - `sh(wsh(multi(...)))` and `sh(wsh(sortedmulti(...)))` (wrapped-segwit multisignature wallets); -- `wsh(multi(...))` and `wsh(sortedmulti(...))` (native segwit multisignature wallets). - -## Other technical limitations +- `wsh(SCRIPT)`; +- `tr(KP)` and `tr(KP,TREE)`. -At this time, there are some technical limitations on the accepted wallet policies: -- `multi` and `sortedmulti` support at most 5 keys; +`SCRIPT` expression within `wsh` can be: +- `multi` or `sortedmulti`; +- a valid SegWit miniscript template. -These limitations will likely be removed in the future. +`SCRIPT` expression within `TREE` can be: +- `multi_a` or `sortedmulti_a`; +- a valid taproot miniscript template. # Default wallets A few policies that correspond to standardized single-key wallets can be used without requiring any registration; in the serialization, the wallet name must be a zero-length string. Those are the following policies: -- ``pkh(@0)`` - legacy addresses as per [BIP-44](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki) -- ``wpkh(@0)`` - native segwit addresses per [BIP-84](https://github.com/bitcoin/bips/blob/master/bip-0084.mediawiki) -- ``sh(wpkh(@0))`` - nested segwit addresses as per [BIP-49](https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki) -- ``tr(@0)`` - single Key P2TR as per [BIP-86](https://github.com/bitcoin/bips/blob/master/bip-0086.mediawiki) +- ``pkh(@0/**)`` - legacy addresses as per [BIP-44](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki) +- ``wpkh(@0/**)`` - native segwit addresses per [BIP-84](https://github.com/bitcoin/bips/blob/master/bip-0084.mediawiki) +- ``sh(wpkh(@0/**))`` - nested segwit addresses as per [BIP-49](https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki) +- ``tr(@0/**)`` - single Key P2TR as per [BIP-86](https://github.com/bitcoin/bips/blob/master/bip-0086.mediawiki) -Note that the wallet policy is considered standard (and therefore usable for signing without prior registration) only if the signing paths (defined in the key origin information) adheres to the corresponding BIP. +Note that the wallet policy is considered standard (and therefore usable for signing without prior registration) only if the signing paths (defined in the key origin information) adhere to the corresponding BIP. Moreover, the BIP-44 `account` level must be at most `100`, and the `address index` at most `50000`. Larger values can still be used by registering the policy. diff --git a/glyphs/Bitcoin_64px.bmp b/glyphs/Bitcoin_64px.bmp new file mode 100644 index 0000000000000000000000000000000000000000..db706c4cc429474f8d0abdedd57bf432b4065602 GIT binary patch literal 674 zcmV;T0$u$_Nk%w1VL$*t0J8u9ot>R&X=$&ouZxR|Sy@?ndU_2F4N6K%!otELA|g9G zI~EoeE-o(K-roQJ{{R30A^8LV00000EC2ui06+jh000F4(8)=wy*TU5yZ>M)j-=HH z#gQye`z(x72xUDr1!K5;?=pjiEhHf9d`RR$INUT8$!K)h!~~AgtS?ZdG!oh{a=~m4 zu;O&fP-q6!@E*7Jj@w)FQT=|;g9>*HMGSWXAq{A1Z4L-63500|WgRScG!6qTG!1)N z2_KzVl`aMoP!CK8YJM3FX$uYw04fg*6D+n8V3Cs;s$vQi4NQ#>1QM=r!5Yb8h8YM2 z2oeBxm%eHX1OOcaqiM$&&2YIK-fEHgJ6z@^x6@1|)5a2;Z zo|u9a1n}WTVHc@h>%!=h0O-!7aV`QPOB2u3oq7}hs`=2!D9r(bc1}_l=wq6_G$3!? zVR)l}f?W(~PWTlD)<26PFlw>zQG|eRVTjrxIY3$lo@$iF(dl5-{7DqXWfzTZIMOiF? zu9!=+0PvomJIUsR=scoAET9aI&tZm3(3)B%$jot$o2cDmQL%7B?MNpsCV-H24Ab&q zr2%`A1iP5{w&T+SB6{20i%ACpH6J^Ufl%B}e_5~x3W0DKC?JC6HBkU}2pSNe4GqYK zU;^Xm!5|L?DA+^;aq;n27vh8%2?3IkXu<%{wZ=dJ8LF6&O$>aq06sIsDC3Si_UPk} I7(@U7JJbdega7~l literal 0 HcmV?d00001 diff --git a/glyphs/blue_badge_bitcoin.gif b/glyphs/blue_badge_bitcoin.gif deleted file mode 100644 index df0c7abb17dd681f27c330874b790cc71c637e67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmV-w0hRtoNk%w1VKM+R0FeLy-QC^o?d{CW%=!8GA^8LV00000EC2ui05SkF00092 zoR4`C00N^6s@j`e++5;sHQhJ@6bL@tbQ+AdqF1oCpSaobphD)p=m`KoUapv+d1O5z zveHCFpO)#Rr=up973EO-!CJWBYXo{OgUADKR;_R&R8A?R4S836h=?97U?lJtmnK*j z)`kbw>oyzPj&D?B-v0C{n%xdr$ zeIYyyvQC;PLFaxz8gCZ3YR5VQ_rly!vX7uQRB$F?6BMYSJaX?SN`z?5A{;S0dmh5^ zg3OjiD(L=w*@&s5Mpsu-MV!1H98obzBN+*veb!xuqW IASnOxV%Qmue&kg&dz0$52&wylyQNJ0T*r*nQ$s)DJWnQpS7v4w)U zrJkXwrG=4+j)IYap_#scrM{twu7RPIfu)s!p#l^r0c|TvNwW%aaf8|g1^l#~=$ z>Fbx5m+O@q>*W`v>l<2HTIw4Z=^Gj80#)c1SLT%@R_NvxE5l51Ni9w;$}A|!%+FH* znV6WAUs__T1av9H3%LbwWAlpjz~0eI&d=4aNG#Ad)H48i38v837r)ZnT)67ulAu(C zd$Af^98y`3svneEoL^d$oC;K~46>@g%DE^tu_V7JBtJg~7K#BG`6cQdFB2=9ZF3nBND}m`vLFl!>sTY(WatnYqyQCInmZhe+73JqD zfIV)NiQ6rvIL(9VO~LIJGn{($fsWA!MK4lx!-Rlo2*iXZULXga{8RIQX}$=UxEcTd z`}^njub)4@fBX97^QVs=-oJbM=Jl(WFP=Yp`sDGWhY#-GyL;#Mt(!NlU%Ptc@}-Lx z&YwGb=JctPCypOGdgSn-g9rBS+q-A?uAMu!Z`-%OrteG>WPn$Yr@}!9q`ulo&y1P0%+S^)NnwuIM>g#H2s;eq1%F9Yiii-*h z^7C?Yva>QX($i8?l9Lh>;^SgtqN5@s!oxyCf`bAB{QZ1=yuCa<+}&JVoShsU?CorA ztgS48acyd1Y-DJlucxb{t);1EF>tv&&SKd&Be*V z&c@2Z%*4pRp!k!80R(hF1gHdIVER9&zmidxUz%gpt=$ZFYW#V^ddvg47rUl)^qxPy zi|LG3W0dlzS^S!JPw#2k|6pl^_s5=Xi5@3e?xrbZguD{5ofdw2iuDYpT_@K%8LLgd z%x%n_TX20J#}6w#hU7PiKPOu~5Py7({gUIQWc7-|8xxJMs!!M~8j$(&kl3csj2X|r zPG~;Xxv?T3O7T@>vD6BwqU57RT$bA}I#*`SROK$by<=f|qV-SfJzRoo40hi>x#~?7 zo0SFgT}hwcR>r3y)++yfJ|VOAORQ=0+LgK+<*eWJ1jqzxzhwR~Wsxjn$~-so{0(bc z=QKpU5Zn@QBHpa|+cI6t70djbnUj=ey%y7)Db;Fy(ZFrZj_0z%6U0r~6n~~a5>;6k wHzViZrsGqJ-O6GnZhX&lZhFv%%+*VnTiNFo*Bo1%d9kg9PpCsqgMq;s0HpsJqyPW_ diff --git a/glyphs/blue_badge_bitcoin_gold.gif b/glyphs/blue_badge_bitcoin_gold.gif deleted file mode 100644 index 9a63e6d806e75f76a57e927ec155b5d298274ca0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1420 zcmZ?wbhEHbG-5Dfn8?6z|Ni}tA3vTsbLQvIpNjvvBYXoCToOwXfwYZ%ML}Y6c4~=2 zQfhi;o~_dR-TRdkGE;1o!cBb*d<&dYGcrA@ic*8C{6dnevXd=SlxV%Qmue&kg&dz0$52&wylyQNJ0T*r*nQ$s)DJWnQpS7v4w)U zrJkXwrG=4+j)IYap_#scrM{twu7RPIfu)s!p#l^r0c|TvNwW%aaf8|g1^l#~=$ z>Fbx5m+O@q>*W`v>l<2HTIw4Z=^Gj80#)c1SLT%@R_NvxE5l51Ni9w;$}A|!%+FH* znV6WAUs__T1av9H3%LbwWAlpjz~0eI&d=4aNG#Ad)H48i38v837r)ZnT)67ulAu(C zd$Af^98y`3svneEoL^d$oC;K~46>@g%DE^tu_V7JBtJg~7K#BG`6cQdFB2=9ZF3nBND}m`vLFl!>sTY(WatnYqyQCInmZhe+73JqD zfIV)NiQ6rvIL(9VO~LIJGn{($fsWA!MK4lx!-Rlo2*iXZULXga{8RIQX}$=UxEcTd z`}^njub)4@fBX97^QVs=-oJbM=Jl(WFP=Yp`sDGWhY#-GyL;#Mt(!NlU%Ptc@}-Lx z&YwGb=JctPCypOGdgSn-g9rBS+q-A?uAMu!Z`-%OrteG>WPn$Yr@}!9q`ulo&y1P0%+S^)NnwuIM>g#H2s;eq1%F9Yiii-*h z^7C?Yva>QX($i8?l9Lh>;^SgtqN5@s!oxyCf`bAB{QZ1=yuCa<+}&JVoShsU?CorA ztgS48acyd1Y-DJlucxb{t);1EF>tv&&SKd&Be*V z&c@2Z%*4pRp!k!80R(hF1gHdIVER9&zmidxUz%gpt=$ZFYW#V^ddvg47rUl)^qxPy zi|LG3W0dlzS^S!JPw#2k|6pl^_s5=Xi5@3e?xrbZguD{5ofdw2iuDYpT_@K%8LLgd z%x%n_TX20J#}6w#hU7PiKPOu~5Py7({gUIQWc7-|8xxJMs!!M~8j$(&kl3csj2X|r zPG~;Xxv?T3O7T@>vD6BwqU57RT$bA}I#*`SROK$by<=f|qV-SfJzRoo40hi>x#~?7 zo0SFgT}hwcR>r3y)++yfJ|VOAORQ=0+LgK+<*eWJ1jqzxzhwR~Wsxjn$~-so{0(bc z=QKpU5Zn@QBHpa|+cI6t70djbnUj=ey%y7)Db;Fy(ZFrZj_0z%6U0r~6n~~a5>;6k wHzViZrsGqJ-O6GnZhX&lZhFv%%+*VnTiNFo*Bo1%d9kg9PpCsqgMq;s0HpsJqyPW_ diff --git a/glyphs/blue_badge_bitcoin_testnet.gif b/glyphs/blue_badge_bitcoin_testnet.gif deleted file mode 100644 index df0c7abb17dd681f27c330874b790cc71c637e67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmV-w0hRtoNk%w1VKM+R0FeLy-QC^o?d{CW%=!8GA^8LV00000EC2ui05SkF00092 zoR4`C00N^6s@j`e++5;sHQhJ@6bL@tbQ+AdqF1oCpSaobphD)p=m`KoUapv+d1O5z zveHCFpO)#Rr=up973EO-!CJWBYXo{OgUADKR;_R&R8A?R4S836h=?97U?lJtmnK*j z)`kbw>oyzPj&D?B-v0C{n%xdr$ zeIYyyvQC;PLFaxz8gCZ3YR5VQ_rly!vX7uQRB$F?6BMYSJaX?SN`z?5A{;S0dmh5^ zg3OjiD(L=w*@&s5Mpsu-MV!1H98obzBN+*veb!xuqW IASnOT=Nk%w1VKM+R0FeLy-QC^o?d{CW%=!8GA^8LV00000EC2ui05SkF00092 zoR4`C00N^6s@j`e++5;sHQhJ@6bL@tbQ+AdqF1oCpSaobphD)p=m`KoUapv+d1O5z zveHCFpO)#Rr=up973EO-!CJWBYXo{OgUADKR;_R&R8Dx1IGTMdScy3E?elC<*t-~)2Dn~z zt^UqT{dYZY;O-*7C^z@Jjt#ndi+Y3*Xh#e@XZ;ZVBUr}DE{8}YLSm>TRuLg1lYroW kXsU*cj~J=&8e+o6i<7d7kSu4;(8)|K;jEOD5=j97JH$q$8vpV!YA^8LV00000EC2ui05SkF00092 zoR4_`5dx!Qs@l6=+*|?-R?RkjOQS)78DgW#g0B#?7vR~*9P8Su6a9jNA<<%NX?n*5 zj;4e#n@$yINew+~mgh99@QSS9sG#!T+R{bn+P#nl*=(EmQ1?OeQT1J4!>1+JrY6FG z$dEPy1ZY5L(ILsv=mIhD1Twi9@r59TV_1fXh4H|6L~$Xgkal`RHg;xNs*`zhX&G_E zx|55s0SkvV9Jw3xR}p)$;YmD;^b6cMSL|yYrXt{6wcWLh>wp~%ose`z6YAJKPRt;! z>5VxfZzBh(J1IIi+uJHBZXY@>$y_Mf(@qu(f2$A*Y-p(9z(Th0QFO%c-@YwEqe9fW z#;uG*JQh0|;ApDkD3s{xb!6!gT$XcYDm8iWP(}_SJhIHN=^_Qtn<;3lh@q(HP%!j3 P!7zD99Hpa23IG5*o3X0! diff --git a/glyphs/blue_badge_dogecoin.gif b/glyphs/blue_badge_dogecoin.gif deleted file mode 100644 index 41769cc67ebdd39a762bb4d551b015bca3a1aa4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmV-x0hInnNk%w1VKM+R0FeLy-QC^p?(WRY%=!8GA^8LV00000EC2ui05SkF00092 zoR4`C00N^6s@j`e++5;sHQhJ@6bL@tbQ+AdqF1oCpSaobphD)p=m`KoUapv+d1O5z zveHCFpO)#Rr=up973EO-!CJWBYXo{OgUADKR;_R&R8DxEPJ2 zcH2wRD)7sC!6-aOOzRsaq^raG(V<#;tc`)V9dZ6GMSuU)G;`HGb&w~p06JEvTA)5dTV#6bKQdh^B*nyqU*5zW0b zGm)VefgVW~vC`0C8I*@YB4Ky35yCjlo)9|sr_xN2jZD~})WPJSdix~o+(DF)P%S`L J_(W0w06Su&taShY diff --git a/glyphs/blue_badge_komodo.gif b/glyphs/blue_badge_komodo.gif deleted file mode 100644 index 41466b8a58a16a754f330cb332670b388504e829..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmV-|0e${QNk%w1VKM+R0FeLy-QC^o?d{CW%=!8GA^8LV00000EC2ui05SkF00092 zoR4`C00N^6s@j`e++5;sHQhJ@6bL@tbQ+AdqF1oCpSaobphD)p=m`KoUapv+d1O5z zveHCFpO)#Rr=up973EO-!CJWBYXo{OgUADK7Ss6c+z6EugxkndK1Af5B-F7tlVwS82+62)SJf9bY9@dasz8Upu*HaBr_$L&Nyg?XcEPoH zM_b5|2;ny}e2P(NdgsN_@~8`(yg<@iT7ev5I6zX|+0k9f>zJ)7@oFkiTYbywzT1g$6|Nym1R=_!EIY4j-*DGHNyN%fG|=F?bsiZq+Z!S@K(qnV3aS|sMX zu>fJPdpK%(e9&Pm;9Q$=dn9emNjp8P){XJx;{Uz$o-TOC`O`R)rknPm0 z={U`#yh$BZQhYa%N-BpfU8QWdQP|CQ%d~iL7c$UDAvrM#MR6{o7JTa%3~Io%C@Q8T VI>0i?tZFE%NuXLa5wk)806WH`v%3HQ diff --git a/glyphs/blue_badge_litecoin.gif b/glyphs/blue_badge_litecoin.gif deleted file mode 100644 index de0095b68b1e2ffd3d98831f8974dc292c239175..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmV-W0k8f?Nk%w1VKM+R0FeLy-QC^p?(WRY%=!8GA^8LV00000EC2ui05SkF00092 zoR4`C00N^6s@j`e++5;sHQhJ@6bL@tbQ+AdqF1oCpSaobphD)p=m`KoUapv+d1O5z zveHCFpO)#Rr=up973EO-!CJWBYXo{OgUADKR;_R&RLXJ+K}DAdc?VHMd5MD4Vc69nB{ZU1!OBT8A;~x!qa_;# zlcvi7yAVm`1!}3MMLCFat3^k7y5cZRy{VA-7)C-eOJRDk&5iN6>=&MUSoaNQE-;78 zj#1vW9*-dRK58Eezt_KSL|+^>@x)ZAr>2;;e`T!5Bj^d@L4-TJAlf112dRu9Pb>}z i=E4=oLw8Krc;V_I7*yvvXe`)r7{E3SQnEl&0028oM3__n diff --git a/glyphs/blue_badge_peercoin.gif b/glyphs/blue_badge_peercoin.gif deleted file mode 100644 index 1c39643d7c79604413da52811a58a84c3e2cd99d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0hazpNk%w1VKM+R0FeLy+}zyl?d{CW%=!8GA^8LV00000EC2ui05SkF00092 zoR4`C00N^6s@j`c++5;sY2DZX6bL@tbQ+9PqF1oCpBUNlphD)p=m`Ko-bPoXd1O6e z(b7akpOm diff --git a/glyphs/blue_badge_pivx.gif b/glyphs/blue_badge_pivx.gif deleted file mode 100644 index 62db7bdde37b4ccdaa838be057deb3e4e1490a9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 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 diff --git a/glyphs/blue_badge_stratis.gif b/glyphs/blue_badge_stratis.gif deleted file mode 100644 index a01878e4a59735c02c298a9ec8a0e6a187ffe677..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmV-x0hInnNk%w1VKM+R0FeLy;Nal#@$t;e%=!8GA^8LV00000EC2ui05SkF00092 zoR4_{Ee{(As@l5%+I}?(^waZdN()bhe~3)7m4zR3Y*YzV*n~> zdw`pFG6|)kTJihYq}#A`RIJd^tDDR`?dU^i=pp26@#UZ=b_Y7Vj7%z+LA(&C%IGmBge#ZxpD&nPf_ JvQSb006X~@rJVo( diff --git a/glyphs/blue_badge_transaction.gif b/glyphs/blue_badge_transaction.gif deleted file mode 100644 index 131325d4a16f9889cb1efc0709cd4b7aa9130bc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339 zcmV-Z0j&NFMd%*x1a>%=!8GA^8LV00000EC2ui05SkF00092 zoR5hREiYOCs@j_v-26=pT3SbTUl;}^KxN|=pclZM;rq1mp+feKi|q!zh;Ddz2~ou* zQqg2Wj!y;611eIhR^M#Oy@4ybSvk_klS7D6(z$^-0J(YLSsJ?+R9qS8KJnC7t#Tga!SS_ z({QtMd#20f^Kh2xn(Q0vK-X64*_WCl4P8<_0r+KP***E}Jo`2Lq&V6~J_Kp79(b&? z=iX(USu3BW9U6bHPmN&5uihzG{E8s*cW(|REeQ$YLwILSIs;MeRK#P%j1nXyMKU4@ lQe}<@PzyRb3uBU-6&(4(u(UQ(-pdk)5=wy4fTV>206Uxbnu-7b diff --git a/glyphs/blue_badge_vertcoin.gif b/glyphs/blue_badge_vertcoin.gif deleted file mode 100644 index 2f47fc15b28126385e6cd5005ff43db65b394299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1399 zcmZ?wbhEHbG-5Dfn8?6z@7}%l@86#}bLQvIpNjvvBYXoCToOwXfwYZ%ML}Y6c4~=2 zQfhi;o~_dR-TRdkGE;1o!cBb*d<&dYGcrA@ic*8C{6dnevXd=SlxV%Qmue&kg&dz0$52&wylyQNJ0T*r*nQ$s)DJWnQpS7v4w)U zrJkXwrG=4+j)IYap_#scrM{twu7RPIfu)s!p#l^r0c|TvNwW%aaf8|g1^l#~=$ z>Fbx5m+O@q>*W`v>l<2HTIw4Z=^Gj80#)c1SLT%@R_NvxE5l51Ni9w;$}A|!%+FH* znV6WAUs__T1av9H3%LbwWAlpjz~0eI&d=4aNG#Ad)H48i38v837r)ZnT)67ulAu(C zd$Af^98y`3svneEoL^d$oC;K~46>@g%DE^tu_V7JBtJg~7K#BG`6cQdFBG;}q0 zbaZpJFt9Lnv;Z=UEev6LUGkGlb5rw5V0u#!dM$D41to~w0-((eiaKZd}bLY&SHFL)FX;Y_6o-}bne_wA;cUNaeds}Nub5mnOeO+x$ zbya0Wd0A;maZzDGeqL@)c2;IadRl5qa#CVKd|YfybW~(Scvxsia8O`?zn`yqc->fwKTJNN{{!T1kJOI$156H~5c9ZQ?BqQrIWjk4=k zr&TsI?4Bm}!%^k(h0gV}p4n}7KB@5Jh;9+ zdGhh}u&v4-+cQ>7tWaIq%HEO4T$P@_>*L0&7E6B}j520Ysxr*pQLG)_^))24$x;ron%b_$Tb=sa=*a!v l8t(2TCn|y__GOBQnM825^!Mg$3x&q89fm$Q-nhz=6%e;cW;H6kg@r<@% zNXZ1J&YeSId+;m;$=VtwJ*13eiKT^J=lN z2Z<|m;V41pR;OfDZs7BPI4GF3E I7%2b%J6UX}L;wH) diff --git a/glyphs/blue_badge_warning.gif b/glyphs/blue_badge_warning.gif deleted file mode 100644 index 37c7ed5be288fe1dd7a23bbf46eb94cab3ed9df7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 zcmV-G0l)r7Nk%w1VKM+R0HFi`>FMd%*x1a>%=!8GEC2ui05SkF00091oR5hREiYOC zs@j_v-26=pT3SbTUl;}^KxN|=pclZM;rq1mp+feKi|q!zh;Ddz2~ou*Qqg2Wj!y;6 z11eIhR^M#Oy@4xU8RM6QRC>-7cE`?)WpUt~_=e}{`@1xPbS03q#|Mbi(~|g9H*_VW z##kt$_E^<8l(;B)80fKyIEnJu!-YBI5y{!M(_t!#;(7@iBD>1v^YGe<^qDiuYZn2U zNsIAldCN(m>e#RqtBWT99VT{|Y+X!!;CJ)vDQ$4-7F_NmSZzUm?8iO>u4g__rhQQ) z;%#q`ey^`Bh*bhD`v@81QBPYGLq@DA3FSi_JQ!63d62lE$gdhO8ZT~P(Q)1r93@Ji Su}8Ax$%08Fz=(&W0027+FP5+X diff --git a/glyphs/blue_badge_zcash.gif b/glyphs/blue_badge_zcash.gif deleted file mode 100644 index 0d069101510606339431c2c176f3b1bf51f7d112..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339 zcmV-Z0j&NZj!r+O6`8cGhrPvqegZN|$*g>VpDak>#5i7g#WL4x! zh)c_HimHm_Mano#>{GZV@#&fAL%DMqDh0t1$$U9|J%F57;$YjAwk$dh{^#9o=u_lq zVBYE8uHN0H8l3)wa+Z7!RKyg=LC`5vWC%AA4XVrepW2R=jZ47`T76<|IEzHA^8LV00000EC2ui03ZMo000Dzut`ajNH6QXlTgGYHbual z=oS2p@Hr>=Y?x*0!CneV{8Cb2UlrYbRkT6QDgxWI!9gq*06JE~1l$0M&>}L>STr|?VH8@(Es)oYV7nDO zEa41+93?z1>BoT$Jvh+i z#(Mch>H3D2mX`VkM*2oZx=9V0vBhlS^|`^GaZPQ-FGnjVw$ZO&y(qdL6Oq1to~w0-((H{644~kx-=!OXa(-4RWPrN`5Jo%^Q0n>aD zFmW^f|M&OL?_WQEeE;_K%jZuYKfHhU_RZ^8FJC-=_Vmf)M-Ly|zjyb}?OQi*T)%ep z%H>NJFPuMj_RQ&1Cr=zdcJ#>MLkAD+-?w+q?p-@~Y~QwZ%jQiRH>_W`cFpQlD_1OE zwsgtjMGF_qpEq~T>{&BsOrJJ&%H&BCC-nFA_H=i3cC@#(wlp_2Hq_VE)>KzjR+N{O zmJ}Bi7UbvU=45AOW~8U3rX(jNCd9|Z#zaR&Mudljh6D!%2Kf8=`gnVJdbqo}x;Q&I zI@sIU+E`mzT9})eniv}y8tCik>S$|eYN)HJswgWdD#**p%1BE|N{EYziUu6%(^#8zHCNs-OwDZ3 Vx7=BhZBHIH-C!*&31(oh1^_W-j^zLV diff --git a/glyphs/nanos_badge_dash.gif b/glyphs/nanos_badge_dash.gif deleted file mode 100644 index 9d309cdfc7ac7ba55e713a91d6ba7f2383ba8eb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74 zcmZ?wbhEHbf-*Gf&R UOxUgx-JZL6W!vQ{IaUU10HvT6WdHyG diff --git a/glyphs/nanos_badge_digibyte.gif b/glyphs/nanos_badge_digibyte.gif deleted file mode 100644 index f9446015585f6b3e51615029f9cc207382920216..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1130 zcmZ?wbhEHb6v-9O7C~? zS5nAKu~iB;^)>JRtPXT0NVp4u-iLDaQ zr4TRV7Ql_oE7k*hM=v=)SHB{$K;KZ$0OTc@LSJ9}N^^7Js*6j4QW5UOYH)E#WkITb zP-=00X;E@2P`NV5ssbzLqSVBa{GyQj{2W*)24v)y_?lo1 zzP?tTdBr7(dC94sF1AWQBlI#eQ>$5%`T}$nPsUdZbkXI3Sd85 zW#V>=5pK6Y^rm2Q3&bDBIQ8lS9itD5S)`bT2?3K2hzU=(Kn^_Rr{)2Zdl4{QGyebg z_s{QNKYx7x_Vvr>Pai+LfA{vy>sK#dJb(7|$>T>4AKbrp_s;EGH*Z|OcJ<2TOBXMk zKX>-b=~E|996xsS$l*f=5A5H!chBx!J9li~wsp(qO&d3?U$=J6>QyUOEMK;C$>K!| z7tEhGch2ltGiOYnHg(G6NfRgZ_x1L4cXf8Ox3#u3H#IiY*VWckS5;P&mz9*?xfYiVkztEs9eD=8|-%gM?}OG!$Ii;0Q|3keGF^YQX#w3FsZc2N*-UZe@0Q>q8qQyraM+NhJKm2Y(~jS)uqXw PSKRApO%gL^Wv~VSfR2%2 diff --git a/glyphs/nanos_badge_dogecoin.gif b/glyphs/nanos_badge_dogecoin.gif deleted file mode 100644 index 4f97c60c7584861fa69581130e13854b9a1c0304..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75 zcmZ?wbhEHbE)HSN2L?1 cS<=Fvcg#wOTDX0ylxL(gyR)#{VO9of04a7Cc>n+a diff --git a/glyphs/nanos_badge_lbry.gif b/glyphs/nanos_badge_lbry.gif deleted file mode 100644 index 01d3e10fd00b8c74ce4f6c33804bdb3b6f705443..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmZ?wbhEHbot3F&gb1{&C!5RREz!s+f diff --git a/glyphs/nanos_badge_litecoin.gif b/glyphs/nanos_badge_litecoin.gif deleted file mode 100644 index db32a5cef3fe426158ebb5465e9dcac33b53930c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75 zcmZ?wbhEHb6v-9O7C~? zS5nAKu~iB;^)>JRtPXT0NVp4u-iLDaQ zr4TRV7Ql_oE7k*hM=v=)SHB{$K;KZ$0OTc@LSJ9}N^^7Js*6j4QW5UOYH)E#WkITb zP-=00X;E@2P`NV5ssbzLqSVBa{GyQj{2W*)24v)yucqiS6q^qmz?V9Vygr+M=vuo#mdOS)Y-zx#KpkPz{Jqd)zZn$&D_=1!pOaZ;i$2gX`k?4Vif)(?Fb#p2@Wcz`z>|M!9x%-p0TVal z|9^k~{QmXx$MeX-RQW zVL^UgZccVqW=48iYD#iaVnTdeY)o`iWJGvaXh?8SV1U1$uaCEvr-!?ntBbRfql3Mj zt&O#nrG>efsfn?Xp@F`hu8y{rriQwjs*19bqJq4ftcYV8`6(fH83Ea_xs PT(%$Y%@B!T1_o;YQmBr3 diff --git a/glyphs/nanos_badge_peercoin.gif b/glyphs/nanos_badge_peercoin.gif deleted file mode 100644 index 89ae64d7c9804f32f28ced4b44b5a76d630d5630..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75 zcmZ?wbhEHbYlG2ZC$l6GBn{w WqQ}fkzo@8{zxx*5vGHYOum%9(#22gp diff --git a/glyphs/nanos_badge_pivx.gif b/glyphs/nanos_badge_pivx.gif deleted file mode 100644 index 0af1467dca9cb3a8c0ad73660622788a3423195e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1133 zcmZ?wbhEHb6v-9O7C~? zS5nAKu~iB;^)>JRtPXT0NVp4u-iLDaQ zr4TRV7Ql_oE7k*hM=v=)SHB{$K;KZ$0OTc@LSJ9}N^^7Js*6j4QW5UOYH)E#WkITb zP-=00X;E@2P`NV5ssbzLqSVBa{GyQj{2W*)24v)yucqiS6q^qmz?V9Vygr+M=vuo#md6i&C$ft&C$}*&Ct-$)!fqD&Bemp!qnWr z*vQGi+!UtQB|o_|H#M&WrZ)ws*U8nw)yT!t8K~C?t6oro$SnZc?2=lPS(cjOR+OKs z0QR_5CT_P_;C2f{ZweN-K>Y!XYaIU22RcR{6un5%4HE*UArKRuc!3;v@=whJruiaZ z;%5B+@9&@AzkdGs{_X3R&!0Yic>nJ0o7b;izIguZ>66Eg9zM8#@9v%3w{G6Je(ma& z%a<-*IDhW!nbW6Eo;ZH&=#j&R4j$OQZ||PnyLRr_zHRH4&6_rESif%Vn$@dTu2{Zo z>5|2Z7A}}SZ|F(<6Xm4w6X>Mw4sIRN7sjjN5C@(85 zDK083$j{5o$mNlr>kh>weniH?el2oDPl2@VPj@b~le@%HlcaCdWcadvWa zu(z|dv9_|bFgG(bF*Y(Z(AU$|(bm$`P*+n`QC3n^ke8E{k(QE_5El~_5f%~@;OFDz z;pXDxU}s}xVP;}vU{L(Y0xm3cKqRQ_U|>>ek(E5YV1GoGUYNFWNXFSag%7rNs+KP8 R{W&*QLr!&Ctve%wH2_tQjluu` diff --git a/glyphs/nanos_badge_qtum.gif b/glyphs/nanos_badge_qtum.gif deleted file mode 100644 index 0559f39d1d6bfc155b130def345fe52cd9ae3fbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1132 zcmZ?wbhEHbh+i z#(Mch>H3D2mX`VkM*2oZxy+|tm=)y>e!(%9M2 z(!$c%7^c@HKe;qFHLnDwHwB^B0;gV3TF5N`+U$~Alv$RV;#QQOs{r=1RVEg>*tT}-@bnN{ORL|_wU}mdHw3;i|5atK6(7;;e-44?%uh5>*kH?*REcZ;0$^0LyB;-bQW z{Jh+p?5xa;^t9BJ|cQ;oTXD3Godplbj zYb#3&b2C#DVqwaWPR5VIe^Qem-6vZZ1v^ zb~aWPW+p~p;qa3MSVS-|=zs`NvBAKk*2BwreBu6xtXF5A<(0_jo^_pYH8u1`uSaC; SjAub&Cb@FGcgq487_0%iw~%fC diff --git a/glyphs/nanos_badge_ravencoin.gif b/glyphs/nanos_badge_ravencoin.gif deleted file mode 100644 index 5fd1e385daf6970a979b1e6a37963b7708c08fa2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65 zcmZ?wbh9u|uFjxZsIqMSm diff --git a/glyphs/nanos_badge_resistance.gif b/glyphs/nanos_badge_resistance.gif deleted file mode 100644 index 36551ab04d2dd562383dfc5c8a8e83cd78a41c28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74 zcmZ?wbhEHbwHeLm%Ch*RS!+jGG}G51_0RR7OnsQ diff --git a/glyphs/nanos_badge_stealth.gif b/glyphs/nanos_badge_stealth.gif deleted file mode 100644 index 6c75a7ca98150640e10ae63dba9963a8d50717a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1135 zcmZ?wbhEHbh+i z#(Mch>H3D2mX`VkM*2oZx= z0Z#LvdQ)(_#So`neV}9XLD7p8-7q0w8Uiuli5JL$C;!wuV45!iCT_<6|Nj2@{p;tC z@87({PcxqRv3h4bgmo;iK$ z#u35cm<%;FYmM&SmXyJnS^XAT( zJ!|HS>C>i8nLKIYg#NzXp6;&Bj`p_Jmgc6$hWfhNn(C^`it@73lH#Jmg8aPPob0U3 zjP$hBl;otug!s7FnCPg;i14t`kl>)e0DnJUA8#*D4|g|L7iT9&2YWkP8*3{|3v)A5 z6JsMo1ARSR9c?X54RtkD6=fww1$jAH8EGj=32`w|5n&-g0e(JS9&Rp94t6$H7G@?! zU6v-9O7C~? zS5nAKu~iB;^)>JRtPXT0NVp4u-iLDaQ zr4TRV7Ql_oE7k*hM=v=)SHB{$K;KZ$0OTc@LSJ9}N^^7Js*6j4QW5UOYH)E#WkITb zP-=00X;E@2P`NV5ssbzLqSVBa{GyQj{2W*)24v)yucqiS6q^qmz?V9Vygr+M=vuo#mWpA&=$rPh8Bj7=7xr@=8leT&K3q1rj8as z22dQP*Cju>G&eP`1g19yq1OnfUQmL_Edbi=l3J8mmYU*Ll%J~r_PA9hPPdr5;WQ7b zHwCv_3~=hz2RcR{6un5%4HE*UArKRuc!3;v@=whJruiaZ;%5B+@9&@AzkdGs{_X3R z&!0Yic>nJ0o7b;izIguZ>66Eg9zM8#@9v%3w{G6Je(ma&%a<-*IDhW!nbW6Eo;ZH& z=#j&R4j$OQZ||PnyLRr_zHRH4&6_rESif%Vn$@dTu2{Zo>5|2Z7A}}SZ|F(<6Xm4w6X>Mw4sIRN7sjjN5C@(85DK083$j{5o$m zNlr>kh>weniH?el2oDPl2@VPj@b~le@%HlcaCdWcadvWau(z|dv9_|bFgG(bF*Y(Z z(AU$|(bm$`P*+n`QC3n^ke8E{k(QE_5El~_5f%~@;OFDz;pXDxU}s}xVP;}vU{L(Y z0xm3cKqRQ_U|>>ck(E5YV8295x?jrUQx`Sog!F3!@qV4UaC_W>(nDu&i!fLN07Yw# A^Z)<= diff --git a/glyphs/nanos_badge_viacoin.gif b/glyphs/nanos_badge_viacoin.gif deleted file mode 100644 index 869a399cfb7ab70ddb21ccd59739d74cad88f092..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1132 zcmZ?wbhEHbh+i z#(Mch>H3D2mX`VkM*2oZxD$|%*>rEV0vBhlS^|`^GaZPQxJNcaOwpmh};68%`T}$nPsUdZbkXI3Sf_0WnyuQ ziLs-(qoaW(&^%M@Zh`1c!QvLEUXVYq>(vK3MjsTtNYM=w0;VAl6P|d19C-3i%>$zB`;K7M%r?(Lh`uU@`*{_N?K$B!O9xPR~No!hr=-nf44 z>XplvE?zi)?(CVz2)%Hf~tIZta@Yt5&X9 zzHI4|#fug$m_KjsoY}Kx&X_)J>XgZoCQj(@>+R|8>g;H5Yi((6YHX;ltF5W7s;nq4 zD=jH5DlEv)%gxEo%FIYlOHD~mN=%54i;annii`*k3k?Yl3Jmb~^Y!ue^7L?bb9Hfc za&)k_v$e6dva~QaGc_?bGBnWF)78<|($r8_Q&mw`QdE$ala-N{l9Uh^6BQ8_5)|O) z9L59n%tiOnrX(6f1)@0Qtm^y#N3J diff --git a/glyphs/nanos_badge_xsn.gif b/glyphs/nanos_badge_xsn.gif deleted file mode 100644 index cd3ea5f09b91468ea6bd7d2d1ea1bc3f1f9c7b6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1132 zcmZ?wbhEHb6v-9O7C~? zS5nAKu~iB;^)>JRtPXT0NVp4u-iLDaQ zr4TRV7Ql_oE7k*hM=v=)SHB{$K;KZ$0OTc@LSJ9}N^^7Js*6j4QW5UOYH)E#WkITb zP-=00X;E@2P`NV5ssbzLqSVBa{GyQj{2W*)24v)yucqiS6q^qmz?V9Vygr+M=vuo#md6a+}PC6&BfKx#Kq9i)xy!q&B@Z-&D7Mw z(An9=%^0TFB|o_|H#M&WrZ)wl*A=H;P=d%U0NU)5T9jFqn&MWJpQ`}&xK$=@w>aT6 z52`l>w_BWX>eUB2MjsTtNYM=w0;VAl6P|d19C-3i%>$zB`;K7M%r?(Lh`uU@`*{_N?K$B!O9xPR~No!hr=-nf44>XplvE?zi)?(CVz2)%Hf~tIZta@Yt5&X9zHI4|#fug$m_KjsoY}Kx z&X_)J>XgZoCQj(@>+R|8>g;H5Yi((6YHX;ltF5W7s;nq4D=jH5DlEv)%gxEo%FIYl zOHD~mN=%54i;annii`*k3k?Yl3Jmb~^Y!ue^7L?bb9Hfca&)k_v$e6dva~QaGc_?b zGBnWF)78<|($r8_Q&mw`QdE$ala-N{l9Uh^6BQ8_5)|O)?dpwHeLm%Ch*RS!+jGG}G51_0RR7OnsQ diff --git a/glyphs/nanos_badge_zcoin.gif b/glyphs/nanos_badge_zcoin.gif deleted file mode 100644 index 0f1ec3ccb1ee87426aa10765331afd43193ea558..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4098 zcmZ?wbhEHbZ{?U_HWubkw_}Aut*OqaiRF0;3@?8UmvsFd71*Aut*O HgDC_6!>}Rh diff --git a/glyphs/nanos_badge_zencash.gif b/glyphs/nanos_badge_zencash.gif deleted file mode 100644 index d90503dc0ee2dc4108acd7c18109700dcff81a4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1134 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 XTU@lX|FY$&00000NkvXXu0mjf+jLdc diff --git a/icons/bitcoin_testnet.png b/icons/bitcoin_testnet.png deleted file mode 100644 index 32778bcd6db660e492eb39724f02f775e14af251..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639 zcmV-t2AKJYP)%DS3#ECPs=TLly;S7YBib0!@|xQAQyJ zVxU6T#Crw}0lKwrw*nbFq-ztefd&gGs?jpg3~7PFN}G7-Pz}it7d4a=v4>b<@y?Gl zzeIiTNIvoI2XHVUOUL)e-Fx@$c+apb3(}(Bs#O4>L{}LA7U^0}tr5|50H8K3@ApKSijb5Rv%*g1|(jk#hoOYqw=qB+aQUxIqRsi5m4g?ql3iJp7Hf4$< zMGzW_>Hu&{N~>m%CIGC<7}{b9LPD$o!1b9nr#!aN9&v=3N)Q^F))np%qre_hpJpgC zC;f+ht9FN+n-*g@Xqz3f)kI9xL;9^6IJY`r9S=VAD${Dh8fIttSbjVhoo}Mu`{Arf39NYmXq*J9MHjJ+70@9sE6{p3?{CjK}7V5248FZ`G}n5f|-<%iTj(RI&gw9NW7E znK)Ifk%nV?F=XlCiUnfWvU^B{d1F;TXi%gFWi5z#^*b=mE;)Y>o_+(?{&UY~jI)=( zy!x&4x3&KQ22a0EwVg3R4IbG&q&!P4&nZF!TM(UM&mN(H>7OZTvIDg+X`iiz2PG{C zFN7f4q4S|^9R2)7n^T6jP;E&6P7HzJa1X4PTY+$y8QVpAKO@&1&taCpxKKHspFDdY z1Y*ddsanX3;uNmk2jetL*SS3L-rihLoENiym|I}?G{rGKlPUdHE#A+cI(M8_`Q%H0 zQy;mWd>+ipcVY1R_pF{b|2+hq`KvAHKe-3iEAPfZHyOM&qS054UzeLUemqXQWH@gSM+j)9u#ckCVi zK4%qO*(fUrW_rzQ_t~w9C@Toi4Bh;7hJY2&VzCO%CP@P6=k!%f#qB#3svfdy{~->Ri`gz z)f5lvMp+E!AfS5K%MmRIGt?D?iO=w(tRQCTruWAFpIJ48M4K>MgNBI9MMBu3xy{<2X79HKusi!?o4{m_)Sq@#1?T z_&4UTc)nkV^wIpJ33)UjYrl-(j>4Juwl*Pw!vUZQs0(ulMHW$)%yw+guK2k5SASEuqvMr zwdhvJsV`(P(~KG@3(3@x}1eHFhvr1wEH;wvMM^yC56s7m5fFTQm8h1 zT9nubG02vYj2yDuP;qu$V|_BvXN+BvaH6fG^u?<>BpwU2(dr~(z%+Y%DMBdg$zvo< zDquhHlEy?smLIBLwWcdfJ76AgEzVA!Sc2G)FgTIC75mF(6YLS|GPYDn5yXZ{xUNub z*SybNI<(TaIc(NF4N?VhL*i8ED(66;4sF%JUeJ~)f}6wy34?~V5?y5~x3tJeEHpaK l74SmiqtUym?d}AC{{eXp0Z`5H-#`EW002ovPDHLkV1k3!__F{2 diff --git a/icons/blue_app_bitcoin.gif b/icons/blue_app_bitcoin.gif deleted file mode 100644 index beec02c64712b55c2f5d219f2c28ed0ee1b67642..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 449 zcmV;y0Y3gmNk%w1VKM+R0J8u9|NQv<+o%2Y>HfM<{=Z=T%6tbe5aEk1(Xg( z2#SY;Ye|ZwriuUudr%x%r>}|vt4JNLs0j%Ix`m}=QM076GKr{wG^GMF38lcs$jZXT zGS49c#Ea6?$hy0w49(84rcT+~;-vr!2c~xA)FRiR>-W{@>mU3;5b*ae z;DZ4SykP<71092h3~=#Mqz+0gEay(?OEO>-l8mTs7-1=qCEmPF3lbVKFsNdtNRt%# z`f_4Wp+m$(enIgsN(zQOLHKDL@81d6&XA^-q8p@Yhz diff --git a/icons/blue_app_bitcoin_cash.gif b/icons/blue_app_bitcoin_cash.gif deleted file mode 100644 index adcfbb63b65ad22d519a11128caa0eeb6750ea26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 446 zcmV;v0YUypNk%w1VKM+R0J8u9i@j|2`1RN5%*5Wc>hk2G%7~G`bK~yYz1geF;l7;5 zf${b3tk0GC`T76<|Ao3_EC2ui05SkF000F4u*pf=5{M}Sp8p^S7z%?3OQo(&kQ8Ao z&t8!P>^c~9?|X(pZbE?lj=cgQci`*MYrr)U z>vclXjeElj`}*QdI0POC4r5;!eSd+2WEqEm4}yeV8c+ra2?P!cmJ1FC0}NgpPznyE zrl+MRCyGy;gs&85g90S*Y# z(+&j+-rouZvue`7sOQAm9_Ht$z3RXm0Q2+)N)7?l#m-T@>JR*8K>8O@#z1(~XaKmD z4Ph`D0H8S_=R;o)U<5L1)MzTwkrB6Z+MV)vgaoAl10PR21B>=O+G7E*kAHp#T4q(O}$S{};&CZ|!*4Nem zlme#H545A38cPl;g(vAp7Lx?J(d#+BAP-9B>Pm zser?W4ha@K^~u~hgG@$HVZZ=^LXLlA4ru7sgajQ2b{;T@#ihi_lq(B_G4ZlPOhGBD zSaU|Q3W|I1K6qghlm{FZsET$_Gl7{>5M(9*^){4(l&4FvP*C#p$qgYzj{uR7W7>eI ZV_CS+MPp6c3KueX%1FY5RuvHd06S<6yq^F7 diff --git a/icons/blue_app_bitcoin_private.gif b/icons/blue_app_bitcoin_private.gif deleted file mode 100644 index 3d528fc3ded15c87a3885a81ed7483740141f1c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 445 zcmV;u0Yd&qNk%w1VKM+R0J9GO*4W|l^7WylxhF4R|NsAnil#zIbX{YJb$XgLJZh7d zu*JvJuCc@9;)=Bx|#=EDipvXi{lO~(YJ@gigh zio9pba9}#cOVxl?EUeW^Hfv(M3!64L=maa7FG2Zgzy*j$;K#FKkNh1_$F7h-A@^=1 zB-BykftN6u1z9*CAsP`#3UuU&W<-^hphz%$Crbi9rXSP@gUX_e8LBMQNSK24N|p)# nx(ICrmOW(&IsmcRSjGQGp7ERk;)}#>_dQZ3F;2-T1gA diff --git a/icons/blue_app_bitcoin_testnet.gif b/icons/blue_app_bitcoin_testnet.gif deleted file mode 100644 index beec02c64712b55c2f5d219f2c28ed0ee1b67642..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 449 zcmV;y0Y3gmNk%w1VKM+R0J8u9|NQv<+o%2Y>HfM<{=Z=T%6tbe5aEk1(Xg( z2#SY;Ye|ZwriuUudr%x%r>}|vt4JNLs0j%Ix`m}=QM076GKr{wG^GMF38lcs$jZXT zGS49c#Ea6?$hy0w49(84rcT+~;-vr!2c~xA)FRiR>-W{@>mU3;5b*ae z;DZ4SykP<71092h3~=#Mqz+0gEay(?OEO>-l8mTs7-1=qCEmPF3lbVKFsNdtNRt%# z`f_4Wp+m$(enIgsN(zQOLHKDL@81d6&XA^-q8p@Yhz diff --git a/icons/blue_app_dash.gif b/icons/blue_app_dash.gif deleted file mode 100644 index abf0fd0e8b4eec4a76b8e6c4db5f82e6c62d812b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 389 zcmV;00eb#NNk%w1VKM+R0J8u9XsgZh_W0N5?wG{dsLtVfw9)17^agpZLX^K9g0wY` zyGfbCSD?oE`T76<{{VHYEC2ui05SkF000F4u*pfAA%&@Qp8p_tBnndyMy0MzFd$(p z&mJ-atm-Co?|X?`P9lK)jy;4RC*UEUv&2%>gj!|NO2BySeh|3Hz)SuNCIM&Jn+T8B z<#U4z?;#I-#Mn*gQ&=I7|>1e(!&;;E?Qd;svHZ+z?Zo2yXPF$)C(3LHof00MtKMu2-l zVj+?e4v(0K_~QgcA1E&NNI^?u4GH%;JerY^M&yS!VoZ9FL$YH;Fcqq3%tA$tLz*j! jyquC_N39@XhLC*m$3{@06)t4hfH2005+_m&i2wjQ#;2`q diff --git a/icons/blue_app_digibyte.gif b/icons/blue_app_digibyte.gif deleted file mode 100644 index 2ec2174ee569cca0aa402504df24e17ee924846a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 408 zcmV;J0cZY4Nk%w1VKM+R0J8u9Z=A}m#^KxL@SM8ZR*Atqc(^Zavyigafv3>O+3V5W z>+bUQdlf^sOQU4x5~v zo(?HgivtOzrl+O?odTDbK?VQ}pspVPDlJ$J0JI&EXCDKAyat=C9)-LQ0JAR0ypaPp zzR3>@4u>zr$pj7zH<}65!AC813&xnTyDZDP)Z7a!29XZY)CiIuu(A%nysGO$1hCc( zTe1S5I+3Hcpfr6_L2fl(7Gg$shJgcz|j0suRK Cw6g{P diff --git a/icons/blue_app_dogecoin.gif b/icons/blue_app_dogecoin.gif deleted file mode 100644 index 880ca163a5b4e98626d9af3f479a2ec3ba314115..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427 zcmV;c0aX4+Nk%w1VKM+R0J8u9#qQVj`S)himxJ4@spiGD>doi&?Qhnd-1Fz}_wt8>1_lTW zwvcnOj-$*Xkg?w2;U5Cyy9WTvj|=d42i(FQ%grFqkJ0tLGSv=}4e}S_*CPY5b!)9kqG8L{EJ=&$hlb}>`9Kp$?NDChIgp~2>!l@V= VW4%(ikYR($86!%ZNKqsL06Sj3z1#o* diff --git a/icons/blue_app_firo.gif b/icons/blue_app_firo.gif deleted file mode 100644 index 4d11cc865196af71e95be215e7c231ecd035fe4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1017 zcmZ?wbhEHbG-5Df_{P96TSj-btlk_s{W1zN+a$P0NK^ zR*ST)7wg+CF>qL72tg&tbUSGNX=IV{NH*UYXefQn{ho2rl{ru|nmlrR;zyI+4!^dwQ zKm7orZ{L4?`}XVm_n$w1{{8dk@87=+g8(T0WC6QE2SkG6gn|8ELts;LOQ46jw!D}i z8$)0Jgb8edV)EMN9<8%x2l^OEF-=^wcnOn~kw41Batf=ReJssn(|$ zCw2ANm6=woV!qU*D!cSU^V5f#Y#urRWfxMFlqSkdP~P4UvcT<$qM+}Kro;^=7*d(K zBx)9Rw;kMfxN!WISH(NMT%Z!}j#CPZtAORrvf{IlL7OIh))W>ug*NR|PI%3s6$4WqI^cm}3!_ zO1I0yS64YF2rP*9H_S+F3}Wag4H0g34C)MGm-#5dxg=sy2&ezU52sW&cs!Wot*B8L z!Y?|p>16IAjSYu`S-&1=@R(^562z;ssM)!5Nes&bJ!OV(A;KcZHU+4EI`D{rC$2K$ ziwh6$q(}S~hb#)51TIUeuyFl&`{|s*1r6h~oYxYP51HMqG3GGhV7q!o?ZA?iK8C9v uJW|s?x8ji3#Nty<-MTFmOkVRCW;AilpCdErgwng0MxLtEQ?;Zqle1Gx6p~WYGxKbf-tXS8q>!0n zs}yePYv5bpoSKp8QB{;0T;&&%T$P<{nWAKGr(jcIRgqhen_7~nP?4LHS8P>btCX0M zpOk6^WP^nDl@!2AO0sR096=HaAUmD&i&7O#^~`jW4NXiH%q{f{&5TVfEp-%(3=A#w z4J`BxjdcyptV|57jEoeZKnZADQA(Oskc%7CE+EfVDWjyMz)D}gyu4hm+*mKaC|%#s z($Z4jz)0W7NEfI=x41H|B(Xv_uUHvof=g;~a#3bMNoIbY0?5R~r2NtnTP2`NAzsKW zfE$}vtOxdvUUGh}ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+Zo zqU2Pda%GTJ1y;^Qsfi`|MIrh5Ij~R+$jC3rFV4s>P;hnzg_@;;hHqkWW*$gT6RgYE z*UB@mxFj(zIn~p}Rtad1US?*Bm7$TNiKDBrqlg_E<9rKOR%vAL0(i>Z^F z0Zgw;esXDUYF-IUZwf-M6HdLL1d&?+wAm%KD6=dz#jPkmR{`vCt4u6zaRH`YXCMZe zXN27?5WOi_+yd1L@&|Uk`as9%gQ6EHx?w`VGz4P86EBbhPyVTSz%*Y3Ox%qB|NZ^* z``6DO-@kqR^7+%p5AWZ-ee?R&%NNg|J$>@{(ZdJ#@7=v~`_|1H*RNf@a{1E53+K6ZM9qnzcEzM1h4fS=kHPuy>73F26CB;RB1^Ico zIoVm68R==MDalER3Gs2UG0{A;Cd`0selzKHgrQ9`0_gF3wJl4)%7oHr7^_ z7UpKACdNjF2KsusI@(&A8tQ7QD#}WV3i5KYGSX6#65?W_BEmv~0{ncuJltHI9PDhY zEX+)d3=E1tSr|Y-2Sk8M83vaB6HZ#rm2T8%Jn%a~!>%KcrPDMZC!3Yk{M?uAHcd_j z;jh`c+>;AeOFB2S1qD3#snYEDFwiC{-OKsF!)VR6>jrNdZfs-gYIZ*(W-9m0YvIPc z+qoS_y2Ks!yl-&gim}OTY%kE~2<^z_ZRTTT?``0&o=~u zPvf|Ftj^`(qsNcKHz{xD+&`u4WW@ zi`~HnM;0>(D0`jRAaH+s<<~c+Ssg7hmR>T~>?=-8<4v*iW#`gK4!d~KvzeoCrS;QK zi#k{><34V#)L7D6#m@7A=gH(7r{}q^7n%DsciD`kA16gMaxu-in9pw1#AQ_y%$d)l z)+M|9s3xyB>$^q`vCX>ErPtHx0k#eCZ;gF{Z5Kbqr@p$uEP zh)=iVZKVUMK`AFqq&O}dPH=0UXK&nydO1?-* wU6KxmM1`kG@VvK=Tbb;=I#%%VO1KL@@>hxQSa7g`$52`DiN(T0?ko(}0NT7@w*UYD diff --git a/icons/blue_app_horizen.gif b/icons/blue_app_horizen.gif deleted file mode 100644 index 9828e14bac7f94407599492b3a6ec6db72af4700..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 654 zcmV;90&)FENk%w1VKM+R0J8u9M^$vr(%KXzPBB1ZWN?aqiJ$NB^WWj-k(#XP>+YYX zwvLvmz{Sw{`T76<{{$C8A^8LV00000EC2ui05SkF000F4u*pf=Q3Q;~yZ_w)5Xw=V zXp<}(=)T~vB5d7*DFKtuPrci?XvX8ZH2BrMzAT1`G1lQ&!*D59xR>{2W88j zcX}W&iUAj{kca{D1;Qi`un!oD4BFE`v3}_)irw)~fju8H^>Hxc^8&(^b{A3%bjg+F*kC9U>dHPoCtMilfWPZwZ>AzT?}NFW<_h(%GsgAjsn oMG8Yy_?Uz#+%R7*J~SA_3f@&AgNQ*;a6twoCNn|_DMkPQJKh@+L;wH) diff --git a/icons/blue_app_komodo.gif b/icons/blue_app_komodo.gif deleted file mode 100644 index 57586bbf44cfcb268a37a473dcb508c467eabed2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 466 zcmV;@0WJPVNk%w1VKM+R0J8u9M00bcyu5v#ortBSV2FtG_V(uN?9|=eag~*rva;>) z@ZIF(xys7<`T76<|1e}^A^8LV00000EC2ui05SkF000F4u*pf=34*-MyZ3|;993yH z%K&_A%L2o4mdfDXcsD4sbga4H4L~{tgh*V#bVxc~#fbv=ta1RniOtI03?_@N_#ta- z$JTFyihcqtVgy2bvBC@vhe2h`JhdU%ZmkZl_P zm5dB?4+w#b1#Dvig9QPo4*&t5d7EvEc?mfQj+_L71wyitVx|g7Q`I9OcqD(9>g$ zS*LB?1byq`Ob|44+8m-GHtiL%RvpS^L(?nIuOPvHIN5Tr(8V0f-77=R3*d+ I!4UueJLMnkaMm6T-LDmj8A6hL-5=NF|anChA7CL5ZVDwtd98JZcJSX$~R7#SE^ z=o?t*8yf2xnpv3`SQ!~9K!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJhUb(Seeo?x< zp{1pzzJZaxk&!M?g>G?WUP)qwZeFo6%mkOz;^d;tf|AVqJOz-6iAnjTCALaHmqNUd zTL3pUuUHT49lhlIT>Xl~0)0b01CW(sS9KFoU6f0*pM@LszXA>h!6GuZsS4&G{M+-+|Cl@12R|_K} zH$#|Sm;B_?+|;}hnBEkGUQ?WUK?x$a0BEyIYEfocYKmJ?ey#%8<5rni+~Q>BXl!Bb z=7!TesNNJTZUO7HFfhQWS0CsYeNglwMK??cn1(=1c;W?e;K@HV518hQfQg&&|G&R~ ze*gOUo>*T>t-)5G1()y3J#(ZSx%*2db( z(!$)#)Wq1x&_G{LS4Ue*Q$t-%RYh4zQ9)i#Rz_M%QbJrzR76-vP=KG0mxr5+lY^a& zm4%s!k%2++Ckq1z=zs`NDZ{|>f5S=3x!KASCeQny@I!=M$)JlhAcxzcxuGN}w_4?( z$$?uz>lqhrFp$Xen3%ZHf<BIo#IV*ydrdYm!`|VcvDI)<*wF z0vqmDOi*0-fsu{1vPqtsC6F(>xvS8zv8%aNtgOqushW$IV`_z)%j`Th9%jz@$pwsD zOq{M2+)Rv>IV_rDD_1Y|kJ^SD+>AdwFUOACt_F?dKh~u`&MV5>QFuXj?Y%=`5K$9haO{*uwVgOjPEd ze@1&E(}tUqeUeV;ib+fmI{9Rl;@rDTEUVj}T;XO-n5B`R&@3}^u{#gPf~kF(9CdsQ zEh&q+yI4y-Y|{1wr)gWo37yq6J?X`*%fKG6uV&g--RtvAf=vpJnH`+W%^(s{8ywWJ zJg@G)oW!w)RNEdV9^MQ~rkD-Ky}5R5bf3hCJ-mgw62_ipEu`AhXS_-D{Bz< zxsnH5+6zP%I`N!gWY!e7QaK<~a^OjDyOM~~(Kh8t95Zbcf&y+Os~COk7I9$N%+<(R ix0OZ4Pr+kx_mO~B2KHBqfoB<6SPTx7*}E_>SOWmSoQ?zl diff --git a/icons/blue_app_litecoin.gif b/icons/blue_app_litecoin.gif deleted file mode 100644 index 62441b87131be98f0b42ec73c9ab9a88a010d8f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 373 zcmV-*0gC=dNk%w1VKM+R0J8u9&CSjB_V)bz{MOdi?d|R2;^Nxc+Vu4F^78V~(9rPk z@aN~}-{0T)`T76<|IEzHEC2ui05SkF000F4u*peVAjOOXp8p^SB!f{9L8Y$NGK6p} zd&82l>XOWS?Bqd|E>ZWu6=cl-%T0#$N1aTBY_ zX70NS4$Re;I~k)NXZl_mdjf=LUK?Wx4vP)~9czzW1&j^~W0745lnj7Jij--cGn0&# zqCT38oTogWj3@#ItRVn3l#~Ut9tH;jx3{^v3cr*Xn5VHBxq&=L|qapDJXO9ex7hB4z2i)u*I1_6^ZEQ_tlZ1w z^Ki1>s?qEE`T76<|3I14A^8LV00000EC2ui05SkF000F4u*pdqU}e3{yZ1}M099!= z!Ek(R%N|2;mZ@vsT|7&Gf&VuH=|lh;Zv+$I$aD=S0bg_4F~}x^mO-HC7K{r*m#}IL zpsho|!Dbh6g*F@UZC$f0g`3O9yAo^x0t^Ta2vQ$s4P_n&eH?lY2`*NKWq=NK9|smK z3v5+|Q7w@gkPZS)3@wXcnE^!WTrw*>T z4x=2*t1hlB43D>K2xS0llN^{!RL|oZke2I7u1*KdkG}P6W4*9;|uz=muqrfDWZO z80gZ&fMB;i{;SCWVlg=id0ynmhQUOhkX-Mfgvh$`HIJ)#JKd$JUdL!BlM>Y>kXL^uI&ML`_!rFb?}y< zT|O4~LVQG)LqY&nYTKB*(N2y-4_6xKCKm|-gU)8wOnY7&3U;1VqVoW6;|Yb|R diff --git a/icons/blue_app_peercoin.gif b/icons/blue_app_peercoin.gif deleted file mode 100644 index 337538f9a4d00b5739c8e7a813f4f6179d28cc82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 436 zcmV;l0ZaZzNk%w1VKM+R0J8u9==18U-L>)e^Gms5me!($(3Eq?gu>{_W5IUV@7z4I zR=wlI%j?nk`T76<|245sEC2ui05SkF000F4u*pdqSj3>Ap8p`I42VH2K&7sY5FlYJ z&mIy8>>3Po?|XwlZUTV)jy*(*mEa+tvq547a6+%4!IEOcdOwIt;7k4pB?4>NJHR!@ z>+-o9_l5!W^(9}%@W~lS0SN~I8ER`9NCys$jsO7$aT|+{mW==e9bX)kmzM$sUzS> zuaUMR(|(L=#}HFQ8Y7@6$frtDLvu)JNL(2(@KXnc2`w diff --git a/icons/blue_app_pivx.gif b/icons/blue_app_pivx.gif deleted file mode 100644 index 3f3a94bb22a3cc9136a64e626c3fdd65ba4568d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 395 zcmV;60d)RHNk%w1VKM+R0J8u9^z-!S=j(B2gRrW(Sxjx5m8fW4drUrJjDwoh)7pP^ zkHfyoq@Az%`T76<|3)}nEC2ui05SkF000F4u*peVSVb9fp8p_t5Qb7LL8Yz@FbH8R z&z>*<>^cy1?|XznZW4g~jy*w&mEa+tGeTk&a6+#k!jfXddOw27;7k4pB>-#LOTab8 z>+-o9_l5)Y^#x1l`}-YV7+4DqhKGg$0|rP#bw*h6PU? zp&tki0G2+irvVNMryv3hwzsyVAceZK4+WEl03idEzBL2M%E=7G4!y@mu(Hud0*0>D zG6t}4+EE1n4hh-50tx8pu!ak2)v3Yb)ZZSd2@3cM0_EDNp7cHZ0SwqF6h9vV>x}S{ zFb)ZZ1?!Z6_%DtLig`|W8R3o$ih(^qQqTbjMuInzX3%sT*k-~>l4mB21Q@156_Q$3 pG+{Y~MG<;RhL~JgCx}oAE@qao;pV7K3>r)w8ByZI78Vfz06XHZr9A)u diff --git a/icons/blue_app_qtum.gif b/icons/blue_app_qtum.gif deleted file mode 100644 index 4c0194c377b31d9b99b157bc0c26ec6365216fca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 590 zcmV-U0hz+~>V(7NU$Wdsr`I~5)bjcKz2EVc&FHV# z?Q^@|%jWd@`T76<|1Fx)A^8LV00000EC2ui05SkF000F4u*peV5R1IcyZ6K*1XXD^ zz)*Z_%N7H0mZ@vsT|7&Hf&VuH>7)P}Zwgc3$aD=S0AF+3F~}wZs+Kc=ZoiLf7Od?y zR%B|y(o8tsa5zGGyc`RGxc&{$95F@%2Mz}cgi>w?0B>VJ89xSw4h$=KMFejP1_*Bq zbT@vWiw+4Km<|hz2wZ~)p8(u54FeH6 zK(hfMf2QKXj- z&>6zFCF(^710W8PnE)a}0E2o>$pf-3K{97crqq*CB{?z$2BGbs3>D5Cf(L`y)X9fB z2ly@?aBPf$B#tcPwh*Lmo0L2hN0oXYaZZa6MhMV-);40CK8U@2;vnLPfpH*BdkB2@ z!-yse5(pQNa_8;eZg!~8qJCT<7Pyhe` diff --git a/icons/blue_app_ravencoin.gif b/icons/blue_app_ravencoin.gif deleted file mode 100644 index 3ff36c21246a6e25a5aa1e3d1aceba6a0bdb3631..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1618 zcmdVZi96E`0KoCz=Gu%mq((gAX^yv2t`6^8-fcOnH=%4LMQVgRLPh5`$J~v`5z-rZ znPXd{T-h9Jmu$2}CWhpwTr*efecwOh{XU<6;p^t%de|}04zL530YJW_D5J7_#4^`Q znXxI=mtu;2LUSEF<9|CtqBeEA1!Ueys}V_L9lU|ChvjF&@*F%9B8V05-VZvSA)OA% z@d6dBN>e#RBUW)wsHEipSQNMKd!8F9i#xEk{*xyfCYLmy4bMMzA>H?S{-S(kV{>zPW$oLneCpdmC4(Pu zvm~Rak?~eU$fhfm%IeqMv=*VqWwP+&n0#ra=1n)+FFmuksko|R=Eou_uc3oKNPgCm zSJpNpn_gXAJ?xX@axt^HQ(Rcl&VDaVd)g@I8;MG+JRO{ijVP>be7~evO~_?*3I^Z4 z>u>3jBt5BTcS~pImzp~z8AVN>$7b+Z^u#CiHGv|J^=-ZOr{Ygu$=-Jy zA48%X#iX2zES#90lSn7x(rSCeqch(Z4|*j!VN&{sCa&Yly|3lcTY4JX`xfO(!=qE9 zUuG~71&ype&U-0eG^9{0e;636WN`0i)}08-MxINx{gYT#&yx&}FE6iHxN!g1%vM!F z0Kf$H0{`~k697aBC?Uq~b6Wrq2y(&J24Gc?bapv8mokwAHIM;d#i5Pu)YmqS$#$og zaZl+YO6NGbE?`ZIAYKlK2j&ytHUcR(nx&?XB5Bkn<7I8wDerbHI~?CAz@~qLc+^ zXY8w;0*%q;TSJ0j47mCicU>cQ080zv1mfRuywrSgbhObrhNwl{#5+ZS+%f9f>e)(; z>In(K80*-Luv`t|LxN9ib7knH8KOEzhmvsPSpeuON*tg3 z*|FWt*v?qgW#mAVAh&F9A;L)Y(m>=n27WutBz9yj34Xr_g~-6+acp(;5!&&Xu=30N zy(h^)f}w{#n4RPt;SpqFZ|rU2XCkl>ClRS2AS3E6O+`=FX0&T3QF?W22;2q@&co^a z>avp}WibnlF6v;^J{8C`5p~FE6(iCJjb-#VdK&6i58OaO9to8zE{HrlF-;4PZVH5i zb(^Er;rWF2U1s6!9)?*_hQU=vch34+!?2MkFwCYG&?QV)h3$2_iMDVKs=lEL3ePFM zUM65er*;Mznt!F(kkBH5Pq5=(X?{e z*1yBKTW;pRe@Ry}U~qw_b-Vot65IgsKY)t-y1)3gimMh!0!6fVAHb;8B*aQ*#Cm|b fb*zm#*M6R!rm-u(^cZx<_{PEWsOLI5!0-P6a8)o7 diff --git a/icons/blue_app_resistance.gif b/icons/blue_app_resistance.gif deleted file mode 100644 index 6b9609878fc56dad9abfb1d16a82ad8ba94cbb65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1947 zcmc)J`9Ir-9|!P69SIRZb*Oeyv?{8YsFl{08d~Zaaa7$m(<+s?B9RHIjka5BI$uY9 z=V&L6c2w6!h3dj66*)-aC}}X_DB|co`Ti5%*W>xq`|*Cf-@m-y-?_Qid>d{FvIK3i zKtKXPtWel^)QRzE)Od_3fE{y+9b?9hJt6erFP0B6n*7)~nS0w>jla}Dqv=b9_$I>3#S<__Sd zUF6=l#7+0$rh9VJFLN`zxis3!pjAO^6*%o4KSIF3d&SX*-YI}v%go(HP_6w)Xug2cm7#}=y{{4 z8H-$KfP=Li2rOA|Jf#f1!xz)ZWq&^i@X0==h-NoMA2-GG zn_|({qIhcwu&}-Ik5sZOU0so`N~CLm)t&XVoejYH&gYHY&Ck1ATf5s^d)wQ4Qh;=C z2e1R!-`(Bc1MKbpFJFMjuJHd9@H8wmsIsBZtnHAa! zjRu*@I%E$6g6xC95It9_5P>|eA%)b?s_*EX&$NTxt*z=UIfR3hx6a@B`dr2njE-CD ztgA`J`ucWTVX>ONcBI_O`{+AA8=udx8tDE;30`TRW&HtqfqC@w`6vyToJNgrp;xUF znbO0od~BJAh=6!EjyFToMEw?!h2A6indb7$&x!EEd6W>?vHGW1o?FXr(6;IpCSUue zt(@FCFr-SS91%OXdtID<3%%*EZi!H?>c5JM;}3MU#dP6mQen+nQ<+h{Z&PULS*ZH+ zK$>UZ7W!R@n!b~WKUi^wqUl0)T{mGAJJ{FN>2m0g5x>q4*IsO{og=9j^!%pCagI`| z>hZa^pA`3)$+3zTjW%8WIytD-&oe|%(l~P&j?6Vb!)U=U9!0Rs58Sd~9E=m@E5e;i z(e;^Oj6|O$^#V9fq(7#iLWw9vztWTI(~YS@PE!mjt6j8iV@WVwV?*Q^yn1_u>~}%i z8*IXIjVv`e@Q@$}HIhFWMK$Ok(6##TsM`lrB6a7nC_ZrAR}k5IGRI_IP$U5iF^wO1HJxgBf3gjzx7 z#p+4z`Ix4#b4{pcs)X)*WIs0Yo!li?G6`x(4K{1{DtdvEce8p=Ff!471J?X(UGU45 zITzbxV>QEk2F$oWV$jrdfbeURg6&Sjo38W2QJQ)K;kVEgPZCgJ9Yikm)d##@nWplk zh(XJuFo(s+!p0{ECakN!hjfG<;c?26E?kOCoI@qQB}?i5fh0pBRgK|{iW6!9f{)~@ zsMC|zN1@v)Md%^ZRgjLSjrRqugs-L!d0JL7&Dr;)G%$)K^!afg1Unc;2g~cPyy^8` z5|TY}hU3o^>ac6j*E^@K5p`Z-)0jrTB-OYbe-u{ZqH^CQ-8t^e>;vC=7fe+#`mreu z)8Y|Fa6NsP6>4jsVO7@R6ri9^@xvTccQWd<8v$#0NoW|wc~NH3hbt+R z`#_iF)Hk&lN<{rB;2euR4 zrtXsNL!cINwH*U_*4H)uMl0Dq6$x?g>`$y07CLMp)iT&bt$KQ&^^5n)!CP`i{}L&o b?7+q042l|l7~$1$3nkfcJPJl2K(_w^EKs0n diff --git a/icons/blue_app_stealth.gif b/icons/blue_app_stealth.gif deleted file mode 100644 index 30e1733e3c8724d1b540b3753f7401f509abbb5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 498 zcmVIcZY|E%F4=1OG_0M75n@9o12?4F)`ZO z+ODpyU|?YR`T76<{{R30EC2ui05SkF000F4u*peVSfV8Jy8qx~B!#d9RjM`sl7w&! zCkU{r11ImiINTG(t4G`=6gPsd$b=aPD#fx%{TPsyVRh?CR0iCz=O+P7#Z`l?fk2}X z679B75PJjSfx`g~U$_YbdwT?OO&D7O2Mz&yjRyjWbxnbL0|x*A2YL>LR2oeJgfx75 zE`kn`OdCa&sSgR525JW{qMe2^XEL{*4-2mkq6;0as%{+$4sFGZItGne2o4I!9t@ox zz{kQ4#2tbR)*i}r35+4p4+YfY*V(}0AlSs=?jC}o)iBDU1os};0dOEM1h#>b06tKL zM@FN43Kybt*e;?#f-w#{NO&(_#Ss0cvH`^QFP=ef5A5A52W#R7b?hKoBdIM|hhg|I zj#I|0Wq@buI!u%4rq_^dH&Mbu#cju~7{*}9qGfATkrAOrOⅇ>MD*zTwThv$!e1l zi54|t2607& olF1#O+z>MP2oMQ5A{t=)nS~2?G!B=ha3KRLCL>Cm_#6QMJK|l<`Tzg` diff --git a/icons/blue_app_stratis.gif b/icons/blue_app_stratis.gif deleted file mode 100644 index 3121749c6c1873fb059f9db3c6385f8d1260d615..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmV;(0XP0fNk%w1VKM+R0J8u9akSs__xT}>&D-nti^AmT^Z7uV(+h>mv)1fbsM(*( z=g8vntJCcH`T76<{{Vr>EC2ui05SkF000F4u*peVK_nS*p8p_t2u4C6MWwDypcr8+ z&z_+KtQrsk?f)JD0henGV8Eo$Fvu->%IHk6SPh`kY)H_g1d!VB$3T=2#OM!U62PXz z0;1ymR!G3~u)&glU;1enX#xxb03Bi(Vgd>djt&KfVH#ROkCzSu30fOc2Sb>lno=A} z2LJ`3s*VeIK8Qc3sjIXO2(D-gwY!d+bd0>KqkzD{j*+l{4+03h$jTn4PzKGaJBR?j zd8iK8HM*AyPzeL9xMAGKk`D>G;@_98eV>=lAO_%$!^*|_zSNiYDMQpRQ$9$N4kUX6 z?Aw~{QR5mFtjcJa>17~u(&I+%|r z{vc6_fUu8BN-S#h$X*r`g9@z+a{^iz6i&6IkQr6Ro(6NOCb84PjaC_PCYke%`+veatgIg|p zP)3Pjmb#<)`T76<{{UVnEC2ui05SkF000F4u*pfA38Sb(p8p_797-_+My0L|z$9TT z&tAd+?8+Q;?|TPEZi0aQj=cmTC*UEUvx8uTa6+%4!?I$;dOwK@<4gVsB>-#Ld%!iu z>+-o9_l6Di^(9}%@W~l}F$4$$9W)w(Aq)-<3OyT&9}10dG#ru-1Og5Shcusx1C0xr zM+c1orbnCxYO68@jRk@W0-=`x4yu0(l}7;%X}yi4KC%u2e{Bv12+gk|1`YzE1_}zg z)iaEal84C3F}}&L58b6A&z|Ol&>-E9<`0zAlfUyG;hLQ6U${tuIY= zs|<-R_1=*w0ch456McAQKyl?-c{wB=PbYd4L3tusb?s1;Q%Pd|E>VWu2 z(=oILFa@!bcmM(A<)#eg=Gh7A0peb|#PjsK&SU`y`unsO{E_?iIokFBk}MCj1`>>6 z3Kca6))qpE^rD%>8QEM!8*|MHv`Y?VdUY8=CK<&sB*^@_M5crqTBE#}P!oU^nGWaKft(LM~-*Uaf;wH!5MECBG=m>oZ=#nAddoxw+!Si zN8U2zehV1~vM|WKMnK7fG6F^GQL-6jUbmt=9Odz-NPs3Dl|P|sH>!R{wE*?|p-YAC zFq*S*ITLM%(RK`1g)kh2K?0)~9a414a9xh;3UsN^U4-s3m^Cn0!&(hX6Z%?UGr(rV zU>63vG1P^jUX0wqhz+9ycw)zsdwBK`FGex(6qC;|ISz*dFDLMN5^r9@`5&B9a5~|7 z1J_%)r{Q+Pcb|ezLeWx*9$4?8fnV3nEJ3of{2#qU_2%6SV_DqB?UKi-AG*e!ntqhGUz5-S98>S;S|E z+ny2rxL&xIw$MHPlnLwSwLH5UqeDUlZ{+-rL{^ z7BM0#>>OL%?T1pMI*1)&NTdzQzWJTMNO4QaV??OLVzx@Hq;ZN@FMG#Phwod@Ez!hj K7pU_I+4KqKJQYX) diff --git a/icons/blue_app_xsn.gif b/icons/blue_app_xsn.gif deleted file mode 100644 index 68e9e43a6f81b43d8e87435b4318da7993625b7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1984 zcmZ?wbhEHbG-5Df_}<0<1dNP~OiWD7%*-q-EUc`oY;0`o?ChMJoLpR7JUl%7{QQD~ zfgwtm8XB6Knp#>~IyyRfdV2c$`i6#vMn*=)#>S?mre{6YxeBfbLPyMJ9qB<`STYpT)1e_qQ#3BFIlo=>C&ak zmMvSpeEEtMD^{&qwQk+IZQHi(*s){h&YineQ(-XU?2IfBxdd zi`TAQyK&>jty{Nl-@bk4&YgSr?mc?+=<(ynPo6w^`t<3G7cXAEeEI6tt9S3-efaR< z^XJcBzkdDx{ris}KYsrF`S0Jq|NsAkVr3N2B?J_IvViT;0g<3Q!NBp4ftORp<3fOf ziFeh84F?n$8`=ew?R*X#VCt6hzQCe&V&h^(r<4MT2_Bo4crsg@5cqUr;{-7-wd7M% zJRH3hr!oD!FyrLr=R9^guQOhFmZY^=$^OpKIA!vz&5o7(W`@_+CB3tmcZS^6nt0m5 zNqk2aYeC}Dg@(z;y96tg*WQq3d6eg|fMeNqOl}Z|`96XLN#&hiad70hy2!DB(Ox=pbCqL`8{P;Jg zgM*2GI>T-GX_Za?9yVysQ*1l2S*`pRSKWdw>Y7UD=W@PuO<_?Ce8YZ`qmp5hQ-h$W z0lT7yM@gex3(LU=*-bATn_QS8967|q?O2@TD|-Th7(#hI9ctw{GO?XQFm*#bL&%;$ zhX&>u6WuukXC7!5onR|+K*WvZ1&f@5O9_*Fi$KxQR0fsd6hl5^K#ci_rNVN?y~SR!_rC8tE-B3B%b=tKqw8$@QCa&nFk**Y$Tf%PFTXB`v3Op69m=X{`Z`$l>P5|!?i-J|^Uk}r zf!(i7WD{${OWzHwVK=0VPDm)7Z4HuWZn=HY(M#jVgw;l}0T*4pGFoyS7!?0=NB9OP zxFnV&0%;rjih{)C?9>v4q}24xJX@vryZ0+8WTx0Eg`4^s_!c;)W@LI)6{QAO`Gq7` zWhYyvDB0U_*;H6noE6C(w4OFcs~14|@hD&O3a#3bMNoIbY0?5q7r2NtnTO}oZkR|$1TY%ovhx-r6frn6P9xzyn zfc|Iv|L^ag-@ktT`2Owdm(QO*et7@x?VH!HUcPw#?CF!oj~+g_fA8*{+qZ7sxPI;G zmCKhdUO0d5?3vT2PM$b^?C6ohhYlXtzi;oJ-Me<~*uHJ+md%?sZdku=?V8oAR<2mS zZ0VB4ixw`JKX2}w*|TQOm_BXll*yAOPU!FJ?dk67>}YRmZE0?5Y^blRt*Nf6tSB!l zEh#Q4EXdEx&B@Nn%t%j5O-W8lOo)$*jfswmj0g`44G9hk4Dk2!_3`%d^l*1`b#Zob zbg;LxwXwFcv@ka_H8D0aG|<=6)zQ|{)KFJbRZ&(_RFIdGm64W`ln@sa6%iH^6yWFM U<>BVyEiA5rOf8}`T76<|1pouEC2ui05SkF000F4u*pfA7$u=_p8p_t1V~a0LZz+^p&(%_ z&mN)>?8*dm?|T78ZnA*=jy=R82jC%}vjAYVa6+%4z_Mb*dOwH?<4gVsB?N2P8^ARb z>$O7CjeEla`}$HoAP^m77-a(v4g+NwWd?=@Wg2Awh5%(7R|o@{jD`*X2A^iF#@Ip0Q2+!W8Su|%vi`j`TBYaugw_WQc?v&w?1G;Ns>N8*Y|XxR7B(zi%W=pfDN%06X8-wfq18 diff --git a/icons/blue_app_zclassic.gif b/icons/blue_app_zclassic.gif deleted file mode 100644 index 950aad7585ae290f2fe48dd00d12177fc789ef10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 509 zcmVA9x!*UZvtKIgEQ{Pptl-qzro zeecS;_v_~Q`T76<|Ic7CA^8LV00000EC2ui05SkF000F4u*peVB5J(NyZ3`aBvolP zi~xLW%K`#(mZ@vsT|7&Pf&VuH=|lh;Zv<1~$aD=S3}18FF~}wYs+J>wP63BSVLZl2 zf!D0ja9}vz@VH~4`E?sB-~l0bjNNhtc{TtRKmZAG3jt>vFo17rHWxntd~XMhECY}W zND4TXZwZ4q2XLM)88@PHnm7t@2QGCs1#bmZv2V3Zy9faT!o$SGuL5rYRFHkm4n0Y55MVoxEdapb_whl;h6XMn zAVafefmBU);q1^YTOWx{0P#!cQ_jwuZ=z^HwxHyXZn>_lq{Zsef`h7L(E^(C5-B6- z{;9%9=u$nb8#tjtvZRu~H;Xhqij%Je38x?S^!c+FuOkU{gS0712gn@;U&7QR!05=8 z27z0Oq@YwX4l5PfTApNr>}C&1PW1R(<;jT}q;>3oqN3%a)uJ)51QKGz>IeWk?yuvu diff --git a/icons/dash.png b/icons/dash.png deleted file mode 100644 index 779385d793a12a8639f3c0c6b6f79a71a1e00daa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1848 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 Y52RI9P|a`0-~a#s07*qoM6N<$g6c}UtN;K2 diff --git a/icons/gamecredits.png b/icons/gamecredits.png deleted file mode 100644 index a85a4648adfe6b3f24c0cde8f1be74d45cdfc12f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2031 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 F4FE|6k1YTI diff --git a/icons/nanos_app_bitcoin_gold.gif b/icons/nanos_app_bitcoin_gold.gif deleted file mode 100644 index 9fa736b194931ccf48c15dac65a4f8b2f865f3d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1131 zcmZ?wbhEHb6krfwXkcLY|NlP&1B2p!?g-xi1((Eh+i z#(Mch>H3D2mX`VkM*2oZx|Z5PB_e>IEf;+ybD@E~!PCWvMA{Mftf3V2@j6;&zKE zPV=C8Q*gV*45wawpkwqw(Tfz_Fd<+X0x{u<7s!Dp|I|ESnlAz-ZpQ!r{{H#>>*tT} z-@bnN{ORL|_wU}mdHw3;i|5atK6(7;;e-44?%uh5>*kH?*REcZ;0$^0LyB;-bQW{Jh+p?5xa; z^t9BJ|cQ;oTXD3GodplbjYb#3&b2C#D zVqwaWPR5VIe^Qem-6vZZ1v^b~aWPW+p~p z3GtH!SWYl7=zs`N*}=f1(9*y1^j*dU+*@{OygV~0^moDBMUqd0nx2$bU1U986vV(_ F4FE|6k1YTI diff --git a/icons/nanos_app_bitcoin_lite.gif b/icons/nanos_app_bitcoin_lite.gif deleted file mode 100644 index 9fa736b194931ccf48c15dac65a4f8b2f865f3d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1131 zcmZ?wbhEHb6krfwXkcLY|NlP&1B2p!?g-xi1((Eh+i z#(Mch>H3D2mX`VkM*2oZx|Z5PB_e>IEf;+ybD@E~!PCWvMA{Mftf3V2@j6;&zKE zPV=C8Q*gV*45wawpkwqw(Tfz_Fd<+X0x{u<7s!Dp|I|ESnlAz-ZpQ!r{{H#>>*tT} z-@bnN{ORL|_wU}mdHw3;i|5atK6(7;;e-44?%uh5>*kH?*REcZ;0$^0LyB;-bQW{Jh+p?5xa; z^t9BJ|cQ;oTXD3GodplbjYb#3&b2C#D zVqwaWPR5VIe^Qem-6vZZ1v^b~aWPW+p~p z3GtH!SWYl7=zs`N*}=f1(9*y1^j*dU+*@{OygV~0^moDBMUqd0nx2$bU1U986vV(_ F4FE|6k1YTI diff --git a/icons/nanos_app_bitcoin_private.gif b/icons/nanos_app_bitcoin_private.gif deleted file mode 100644 index 8eae073e5e35b11f019831b94a21a93154bb3d92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1131 zcmZ?wbhEHb6krfwXkY+=|Ns9h{^ySH4N!1NEJ*~?Hue<-iOJciB??KY>6v-9O7C~? zS5nAKu~iB;^)>JRtPXT0NVp4u-iLDaQ zr4TRV7Ql_oE7k*hM=v=)SHB{$K;KZ$0OTc@LSJ9}N^^7Js*6j4QW5UOYH)E#WkITb zP-=00X;E@2P`NV5ssbzLqSVBa{GyQj{2W*)24v)yucqiS6q^qmz?V9Vygr+M=vuo#md6c$w_A*H>eUB2MjsTtNYM=w0;VAl6P|d19C-3i%>$zB`;K7M%r?(Lh`uU@`*{_N?K$B!O9xPR~No!hr=-nf44>XplvE?zi)?(CVz2)%Hf~tIZta@Yt5&X9zHI4|#fug$m_KjsoY}Kx z&X_)J>XgZoCQj(@>+R|8>g;H5Yi((6YHX;ltF5W7s;nq4D=jH5DlEv)%gxEo%FIYl zOHD~mN=%54i;annii`*k3k?Yl3Jmb~^Y!ue^7L?bb9Hfca&)k_v$e6dva~QaGc_?b zGBnWF)78<|($r8_Q&mw`QdE$ala-N{l9Uh^6BQ8_5)|O)1o#iODJ&HTs)$iLxFq3SwZe1^}OP Bj0yk% diff --git a/icons/nanos_app_bitcoin_testnet.gif b/icons/nanos_app_bitcoin_testnet.gif deleted file mode 100644 index 9fa736b194931ccf48c15dac65a4f8b2f865f3d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1131 zcmZ?wbhEHb6krfwXkcLY|NlP&1B2p!?g-xi1((Eh+i z#(Mch>H3D2mX`VkM*2oZx|Z5PB_e>IEf;+ybD@E~!PCWvMA{Mftf3V2@j6;&zKE zPV=C8Q*gV*45wawpkwqw(Tfz_Fd<+X0x{u<7s!Dp|I|ESnlAz-ZpQ!r{{H#>>*tT} z-@bnN{ORL|_wU}mdHw3;i|5atK6(7;;e-44?%uh5>*kH?*REcZ;0$^0LyB;-bQW{Jh+p?5xa; z^t9BJ|cQ;oTXD3GodplbjYb#3&b2C#D zVqwaWPR5VIe^Qem-6vZZ1v^b~aWPW+p~p z3GtH!SWYl7=zs`N*}=f1(9*y1^j*dU+*@{OygV~0^moDBMUqd0nx2$bU1U986vV(_ F4FE|6k1YTI diff --git a/icons/nanos_app_bitcoin_testnet_lib.gif b/icons/nanos_app_bitcoin_testnet_lib.gif deleted file mode 100644 index 9fa736b194931ccf48c15dac65a4f8b2f865f3d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1131 zcmZ?wbhEHb6krfwXkcLY|NlP&1B2p!?g-xi1((Eh+i z#(Mch>H3D2mX`VkM*2oZx|Z5PB_e>IEf;+ybD@E~!PCWvMA{Mftf3V2@j6;&zKE zPV=C8Q*gV*45wawpkwqw(Tfz_Fd<+X0x{u<7s!Dp|I|ESnlAz-ZpQ!r{{H#>>*tT} z-@bnN{ORL|_wU}mdHw3;i|5atK6(7;;e-44?%uh5>*kH?*REcZ;0$^0LyB;-bQW{Jh+p?5xa; z^t9BJ|cQ;oTXD3GodplbjYb#3&b2C#D zVqwaWPR5VIe^Qem-6vZZ1v^b~aWPW+p~p z3GtH!SWYl7=zs`N*}=f1(9*y1^j*dU+*@{OygV~0^moDBMUqd0nx2$bU1U986vV(_ F4FE|6k1YTI diff --git a/icons/nanos_app_bitcoin_testnet_lite.gif b/icons/nanos_app_bitcoin_testnet_lite.gif deleted file mode 100644 index 9fa736b194931ccf48c15dac65a4f8b2f865f3d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1131 zcmZ?wbhEHb6krfwXkcLY|NlP&1B2p!?g-xi1((Eh+i z#(Mch>H3D2mX`VkM*2oZx|Z5PB_e>IEf;+ybD@E~!PCWvMA{Mftf3V2@j6;&zKE zPV=C8Q*gV*45wawpkwqw(Tfz_Fd<+X0x{u<7s!Dp|I|ESnlAz-ZpQ!r{{H#>>*tT} z-@bnN{ORL|_wU}mdHw3;i|5atK6(7;;e-44?%uh5>*kH?*REcZ;0$^0LyB;-bQW{Jh+p?5xa; z^t9BJ|cQ;oTXD3GodplbjYb#3&b2C#D zVqwaWPR5VIe^Qem-6vZZ1v^b~aWPW+p~p z3GtH!SWYl7=zs`N*}=f1(9*y1^j*dU+*@{OygV~0^moDBMUqd0nx2$bU1U986vV(_ F4FE|6k1YTI diff --git a/icons/nanos_app_dash.gif b/icons/nanos_app_dash.gif deleted file mode 100644 index 77813957fa133980a15e8a74dc985aeef89092ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69 zcmZ?wbhEHb6krfwXkY+=|Ns9h{$v3&bwDIYhJi_@r+?+?xAhHk76fwjhFDy?!WwN> P6wW#C=BaJ|j11NQWBL@0 diff --git a/icons/nanos_app_digibyte.gif b/icons/nanos_app_digibyte.gif deleted file mode 100644 index 71d41a09c299358985835e162cc4247971a2d29b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1124 zcmZ?wbhEHb6krfwXkY+=|Ns9h{^ySH4N!1NEJ*~?Hue<-iOJciB??KY>6v-9O7C~? zS5nAKu~iB;^)>JRtPXT0NVp4u-iLDaQ zr4TRV7Ql_oE7k*hM=v=)SHB{$K;KZ$0OTc@LSJ9}N^^7Js*6j4QW5UOYH)E#WkITb zP-=00X;E@2P`NV5ssbzLqSVBa{GyQj{2W*)24v)y_?lo1 zzP?tTdBr7(dC94sF1AWQBlI#eQ>v1*L`D0-((lQPV=C8 zQ*gS)%nhereV}9XK{1OI(=Z`m@&Pg7=@!U=r~K4BU~(@4rfbIk|Nj2@{p;tC@87({PcxqRv3h4bgmo;iK$#u35cm<%;FYmM&SmXyJnS^XAT(J!|HS z>C>i8nLKIYg#NzXp6;&Bj`p_Jmgc6$hWfhNn(C^`it@73lH#Jmg8aPPob0U3jP$hB zl;otug!s7FnCPg;i14t`kl>)e0DnJUA8#*D4|g|L7iT9&2YWkP8*3{|3v)A56JsMo z1ARSR9c?X54RtkD6=fww1$jAH8EGj=32`w|5n&-g0e(JS9&Rp94t6$H7G@?!1_s5S yEZ}lN2SkF34F)E;p8l1m?+Pqn-V&6y*;)Mb56#%^Jxf;DUK88;hWj`xgEat}4vqEz diff --git a/icons/nanos_app_dogecoin.gif b/icons/nanos_app_dogecoin.gif deleted file mode 100644 index 82596997afeec656aa72f1b28bd1d59d232dca5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70 zcmZ?wbhEHb6krfwXkY+=|Ns9h{$v3&bwDIYhJi`8r+?+?xAhHE^8MU>!@`)au}Xih Q>@}Sveq`IaXa)vr0B)-kZ2$lO diff --git a/icons/nanos_app_firo.gif b/icons/nanos_app_firo.gif deleted file mode 100644 index f12e83e97eeb323101bb33540866200bca184103..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 zcmZ?wbhEHb6krfw_`t{j1poj4SNzEWVln7|2#^c|lYCGA%F|~VlDjViJ~(7*6x!c- Vs=Z{k>%zN5tv9)kJ2Em@0|3xY7hM1V diff --git a/icons/nanos_app_gamecredits.gif b/icons/nanos_app_gamecredits.gif deleted file mode 100644 index ce780fc50cfab50a52fe3de13a125f905a706283..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1128 zcmZ?wbhEHb6krfwXkY+=|Ns9h{^ySH4N!1NEJ*~?Hue<-iOJciB??KY>6v-9O7C~? zS5nAKu~iB;^)>JzK!Rz^k&P@n{~ttchUD#*nRY8Q}atCUevQedU8UtV6WS8lAA zUzDzIXlZGwZ(yWvWTXpJp<7&;SCUwvn^&w1Gr=XbIJqdZpd>RtPXT0NVp4u-iLDaQ zr4TRV7Ql_oE7k*hM=v=)SHB{$K;KZ$0OTc@LSJ9}N^^7Js*6j4QW5UOYH)E#WkITb zP-=00X;E@2P`NV5ssbzLqSVBa{GyQj{2W*)24v)yucqiS6q^qmz?V9Vygr+M=vuo#mdsn$kox=$;rjQ+``b%)xycy$kNit+}Pa6 z&BfHo%>bs?B|o_|H#M&WrZ)wl*BPf?P=d%U0NU)5T9jFqn&MWJpQ`}&xK$=@w^-sd z52`l>w_6->>eUB2MjsTtNYM=w0;VAl6P|d19C-3i%>$zB`;K7M%r?(Lh`uU@`*{_N?K$B!O9xPR~No!hr=-nf44>XplvE?zi)?(CVz2)%Hf~tIZta@Yt5&X9zHI4|#fug$m_KjsoY}Kx z&X_)J>XgZoCQj(@>+R|8>g;H5Yi((6YHX;ltF5W7s;nq4D=jH5DlEv)%gxEo%FIYl zOHD~mN=%54i;annii`*k3k?Yl3Jmb~^Y!ue^7L?bb9Hfca&)k_v$e6dva~QaGc_?b zGBnWF)78<|($r8_Q&mw`QdE$ala-N{l9Uh^6BQ8_5)|O)Sj-Sz$GE#f09<=cIHoYJQ25SIl3yl^4 diff --git a/icons/nanos_app_horizen.gif b/icons/nanos_app_horizen.gif deleted file mode 100644 index c8e2bd004c79ab55af5e9d07324b0c254a2b8ec3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66 zcmZ?wbhEHb6krfwXkcUjg8%>j>wsvG2m_O1Pyfo(XBm>4-(4t}-jEB<6*g_ugcvId?@l+$B8q bn(a09X^T5!Rb29jEB<6*g_ugcvId?@l+$B8q bn(a09X^T5!Rb296v-9O7C~? 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 diff --git a/icons/nanos_app_nix.gif b/icons/nanos_app_nix.gif deleted file mode 100644 index 12700c5935ae99e0412cea6005184431f17619d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1131 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 Ciiphs diff --git a/icons/nanos_app_viacoin.gif b/icons/nanos_app_viacoin.gif deleted file mode 100644 index 015bb8bfd931520e342ea66696d7dfcc0353afd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1129 zcmZ?wbhEHb6krfwXkY+=|Ns9h{^ySH4N!1NEJ*~?Hue<-iOJciB??KY>6v-9O7C~? zS5nAKu~iB;^)>JRtPXT0NVp4u-iLDaQ zr4TRV7Ql_oE7k*hM=v=)SHB{$K;KZ$0OTc@LSJ9}N^^7Js*6j4QW5UOYH)E#WkITb zP-=00X;E@2P`NV5ssbzLqSVBa{GyQj{2W*)24v)yucqiS6q^qmz?V9Vygr+M=vuo#mdCk(cIC|0EjJ34Gmq*EzDgE-HgoK+>D$| z%*>rEV0vBhlS^|`^GaZPQxJMBaOwpmh};68%`T}$nPsUdZbkXI3Sf_0W#V>=DNggC zdQ)(_#SEujeV}9XLD7p8-7q0w8Uiuli5JL$C;!wuV45!iCT_<6|Nj2@{p;tC@87({PcxqRv3h4bgmo;iK$#u35cm<%;FYmM&SmXyJnS^XAT(J!|HS z>C>i8nLKIYg#NzXp6;&Bj`p_Jmgc6$hWfhNn(C^`it@73lH#Jmg8aPPob0U3jP$hB zl;otug!s7FnCPg;i14t`kl>)e0DnJUA8#*D4|g|L7iT9&2YWkP8*3{|3v)A56JsMo z1ARSR9c?X54RtkD6=fww1$jAH8EGj=32`w|5n&-g0e(JS9&Rp94t6$H7G@?!1_s5S xEa1XI2SkF(4hAN0g3=+1sE8Zlw0~&o_;7V(Xip@ h=V{K7kIn{$DwW+z)q1dH()5dM54Eq~>lJ6P1^~*RAiw|s diff --git a/icons/nanos_app_xsn.gif b/icons/nanos_app_xsn.gif deleted file mode 100644 index 8819a7db107c077819614852997f757c4afe157a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 648 zcmZ?wbhEHb6krfw_`m=HKY#vI{K*1l>VQa)3ZxN)4{^3rViZPPR-@vbW>1sj#ZZEyztRNmQuF&B-gas<2f`Ovz75wF0t1 z!um=IU?nBlwn~m52?day&iO^D3Z{Byy2*wnMhfPZdWL2OmPRHz3PuKo=K2Qa`i923 z28LD!W>&_Q3Q(YA$E9FXl#*r@;>0WrfRwK%ybv!En1KTiQPai+LfA{vy>sK#dJb(7|$>T>4 zAKbrp_s;EGH*Z|OcJ<2TOBXMkKX>-b=~E|996xsS$l*f=5A5H!chBx!J9li~wsp(q zO&d3?U$=J6>QyUOEMK;C$>K!|7tEhGch2ltGiOYnHg(G6NfRgZ_x1L4cXf8Ox3#u3 zH#IiY*VWckS5;P&mz9*?xfYiVkztEs9eD=8|-%gM?} iOG!$Ii;0Q|3keGF^YQX2^69L diff --git a/icons/nanos_app_zclassic.gif b/icons/nanos_app_zclassic.gif deleted file mode 100644 index 254c648d2ae4635f6b662886cda9977e18b1badd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1130 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 Xm!JAl&wtGAU+$u4;rXsxguxmBln0Ps diff --git a/icons/nanox_app_bitcoin_testnet.gif b/icons/nanox_app_bitcoin_testnet.gif deleted file mode 100644 index 7a92ac33e4cc5b089a6645ee648d2f102391c448..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1122 zcmZ?wbhEHbtP)JEENd(gW?JEirle1Gx6p~WY zGxKbf-tXS8q>!0ns}yePYv5bpoSKp8QB{;0T;&&%T$P<{nWAKGr(jcI1=O2clBiIT zo0C^;Rbi`?n3A8AY6WEHrj{h?D=C0glw{i~If5hXl~0)0b01CWOxKFuxg^~J9=Hy5lL z7!<`NL8%DWVl}roq_QAYKPa_0zqBYh6{uVpWK)5ab5UwyNq$jCetr%t2m>EvqSYHn<1 zXl!WcYGz?-Xy#;TU~X*eW^Vf5%*ha@*(E=@G&eP`1g1F!q1ghe8AUHhD=001f&>`A zMVV!(DQ-pixe8!^TV=xCg6@{ z(ZdJ#@7=v~`_|1H*RNf@a{1E53+K6ZM9qnzc zEzM1h4fS=kHPuy>73F26CB;RB1^IcoIoVm68R==MDalER3Gs2UG0{A;Cd` z0selzKHgrQ9`0_gF3wJl4)%7oHr7^_7UpKACdNjF2KsusI@(&A8tQ7QD#}WV3i5KY zGSX6#65?W_BEmv~0{ncuJUrZ7oE+?ItSrn-z=A>tR6u}A4F)FJmj0Eq8P7G%dE+Rl YA2L}lCzm6mc2-8oz3(CKxtP)JEENd(gW?JEirle1Gx6p~WY zGxKbf-tXS8q>!0ns}yePYv5bpoSKp8QB{;0T;&&%T$P<{nWAKGr(jcI1=O2clBiIT zo0C^;Rbi`?n3A8AY6WEHrj{h?D=C0glw{i~If5hXl~0)0b01CWOxKFuxg^~J9=Hy5lL z7!<`NL8%DWVl}roq_QAYKPa_0zqBYh6{uVpWK)5ab5UwyNq$jCetr%t2m>EvqSYHn<1 zXl!WcYGz?-Xy#;TU~X*eW^Vf5%*ha@*(E=@G&eP`1g1F!q1ghe8AUHhD=001f&>`A zMVV!(DQ-pixe8!^TV=xCg6@{ z(ZdJ#@7=v~`_|1H*RNf@a{1E53+K6ZM9qnzc zEzM1h4fS=kHPuy>73F26CB;RB1^IcoIoVm68R==MDalER3Gs2UG0{A;Cd` z0selzKHgrQ9`0_gF3wJl4)%7oHr7^_7UpKACdNjF2KsusI@(&A8tQ7QD#}WV3i5KY zGSX6#65?W_BEmv~0{ncuJUrZ7oE+?ItSrn-z=A>tR6u}A4F)FJmj0Eq8P7G%dE+Rl YA2L}lCzm6mc2-8oz3(CKxHbrvTs~`pjYXBeI5fK0Y diff --git a/icons/nanox_app_digibyte.gif b/icons/nanox_app_digibyte.gif deleted file mode 100644 index e3e339d10a688229033d20761bf13378b9453011..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1115 zcmZ?wbhEHbTBRz;GCL~=}}db8eHWUl3bOYY?-2DZ>L~WVFlEiTau_y zk(-lOY*k^al$esAlxhWJ=cbk<>MJRLRg`4gDmj8A6e4^B6rA&mQWZ?~%yg3tO$-#w zE%gk|3`|T7brg&Y49)coO!W=SbPWux3@ogS3>Bb2$vOKg>t6#hd!kXryZHLq9?>>0h}{9OHt!~%UoJp+)3AU@44@b$&7G&dKl z8WTK@=NlI zGx7@*oShXkd=ry1^FVw}pa!6utUU9IOA_;vQ$1a5m4GJbWoD*WxmcJw8# zCXfwJ@u_(!w*QrifC-xM|G&R~e*gOUTIT zuzuazHLF*xT(NxF(j|)*EnF~v-rPB}XU&{3ecIG1lP67_(BIeF)7{nC(caeD(%jV8 zP+wPDQ(aYAQC?PBQe0G6ke`>Elbw~Bk)D>ClAM&75FZyC6CD*95gryA5*!p5;P2<_ zVr*n+ps%N^qphW>p{}N?qO7E-ATK8?BP}H< zAuc8=A}k~*z|Y6a!_CFX!Oq6U%EHXV$iScjDjGoL1p|{zPyfo<0_Pg$1YJBGu=PVJ TZ?3OKQ%FhLx#?T;7#XYq^k9w! diff --git a/icons/nanox_app_dogecoin.gif b/icons/nanox_app_dogecoin.gif deleted file mode 100644 index 8bd52996428c3f7bdfaeb61ba755e40740afe128..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmZ?wbhEHb%I=5z=Or5%1n}Azm*!R~ SN~BFG$y2J@su#e(U=09kgc8UA diff --git a/icons/nanox_app_gamecredits.gif b/icons/nanox_app_gamecredits.gif deleted file mode 100644 index c034ccec04196d2fe255bb631d4bb4b86f049191..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1118 zcmZ?wbhEHbTBRz;GCL~=}}db8eHWUl3bOYY?-2DZ>L~WVFlEiTau_y zk(-lOY*k^al$esAlxhWJ=cbk<>MJRLRg`4gDmj8A6e4^B6rA&mQWZ?~%yg3tO-vQc zE%gk|j7=;pbrg&Y3@!8xEc6YHbq&p|Obo1yj1-_i$vOKg>t6#hd!kXryZHLq9?>>0h}{9OHt!~%UoJp+)3AU@44@b$&7G&dKl z8WTK@=NlI zGx7@*oSi{IW~rdzo0y!L2NcundS0ve;2nVDi`>1O2W=BDn?CDVA8B0(J>RYYJ|cIO5c+4|Iz@dR#+9fXN3W2}!lU z^a>*tT}-@bnN{ORL|_ix|4e)aOj^Jh<=Jbv`> z!To!8@7%t1^TzdSSFc>Ybn(LZb7#+-K6UcM@nc7i96ogL!2W%E_w3%abI0~=Teoc9 zv~k1wb!*qGUbS+?@?}exEMBy5!Tfo1=ggipbH?;(Q>RRxG;um zQ)5GYU2RQuRb@qaS!qdeQDH%TUT#iyR%S+eT53viQer}UTx?8qRAfYWSZGLaP+)++ zpRbR%m#2rjo2!enlcR&Zovn?vm8FHbnW>4fk)eUUp019zmZpZfnyQMjlA?mVoUDwr zl%#~Xn5c-bke~oRA1@CNHy0-dI~ywtGZP~NgAS;G0F@dHOp-nQD^K(C&u8Kd6i&A_ Se{!Wz%EI+R+cIB925SITX^Ncy diff --git a/icons/nanox_app_horizen.gif b/icons/nanox_app_horizen.gif deleted file mode 100644 index 5dd7b1da24c48804af40203a00bcdd4d4a4cd9f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 zcmZ?wbhEHb^|nkrs#m07v!Hp_80Mh0sD$9NWE diff --git a/icons/nanox_app_hydra.gif b/icons/nanox_app_hydra.gif deleted file mode 100644 index 9688696fc18dda537ac0067161fb8ed0364c55da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73 zcmZ?wbhEHbTBRz;GCL~=}}db8eHWUl3bOYY?-2DZ>L~WVFlEiTau_y zk(-lOY*k^al$esAlxhWJ=cbk<>MJRLRg`4gDmj8A6e4^B6rA&mQWZ?~%yg3tO)M15 zE%gk|Obm?8bQFvX3@!ByEc6YHbqx%y49u)d%@v?P$xTF>*7iAWdWaj57 z6s1`uCgqow*eWS0{D*oVw*YQxUa=n7GkVGSx%w4}1^R}11|SbXe41O}>x*A$ZZ23g zFer*kf>IH##cFPGNM%8)eo$(0erZv1Dp0vH$fg1-=c3falKi5O{QMkP5C&xAm*f{` zOWe%irlC6psx<|-ODu5e)d#voA3dHSBEX~rl7ysKVA=$7 z;AuWJ?>{i57Xgzr-^T+pZU%!0*^zp;{w{Kp*dimn{v!_oUKYIA!{=K_* zZr{3jo>*T>t- z)5G1()y3J#(ZSx%*2db((!$)#)Wq1x&_G{LS4Ue*Q$t-%RYh4zQ9)i#Rz_M%QbJrz zR76-vP=KG0mxr5+lY@hujg^I&iIIUp2UIwKN(=@jxt{)&s~K|U)bzSlPrjU3E)y$f S7Id$$?(~$f3*5@A4AuY^ca4Am diff --git a/icons/nanox_app_liquid_headless.gif b/icons/nanox_app_liquid_headless.gif deleted file mode 100644 index 9fb840e573fb55da054a43f359b6590c2cc77d90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1122 zcmZ?wbhEHbTBRz;GCL~=}}db8eHWUl3bOYY?-2DZ>L~WVFlEiTau_y zk(-lOY*k^al$esAlxhWJ=cbk<>MJRLRg`4gDmj8A6e4^B6rA&mQWZ?~%yg3tO-vQc zE%gk|j7=;pbrg&Y3@!8xEc6YHbq&p|Obo1yj1-_i$vOKg>t6#hd!kXryZHLq9?>>0h}{9OHt!~%UoJp+)3AU@44@b$&7G&dKl z8WTK@=NlI zGx7@*oSi{IW~rdzo0y!L2NcundS0ve;2nVDkcZ0uxd;Oge$ zW^Q6?Xy|Hb>E>eLWMFROX5nn)`rp975vJKCKe;qFHLnDwIR&BF6{ZBD)2}DNZocP@DpG2}ElOZkIUY)T(;JWy=vu(<;#{XS-fcBg8B32&Y3-H=8WmnrcRkWY2t+bzTTehuFj73 zw$_&BrpAW)y4srRs>+J;veJ^`qQZjwyxg4Ztjvt`wA7U3q{M{yxY(HJsK|)$u+Wg; zpuhlsKVKhjFHaA5H&+*DCr1Z+J6juTD@zM=GgA{|BSQmyJzX7bElmw|HB}X5B}D~! zIawKLDM<-&F;Nj=AwdCtK3*OkZZ1v^b~aWPW+p}k1|3iV0V*{Zm}GnUSMGk0BggFM b<&t?-^YD(^TT3JO+816}S@$l8fx#L8!r+f& diff --git a/icons/nanox_app_liquid_regtest.gif b/icons/nanox_app_liquid_regtest.gif deleted file mode 100644 index 9fb840e573fb55da054a43f359b6590c2cc77d90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1122 zcmZ?wbhEHbTBRz;GCL~=}}db8eHWUl3bOYY?-2DZ>L~WVFlEiTau_y zk(-lOY*k^al$esAlxhWJ=cbk<>MJRLRg`4gDmj8A6e4^B6rA&mQWZ?~%yg3tO-vQc zE%gk|j7=;pbrg&Y3@!8xEc6YHbq&p|Obo1yj1-_i$vOKg>t6#hd!kXryZHLq9?>>0h}{9OHt!~%UoJp+)3AU@44@b$&7G&dKl z8WTK@=NlI zGx7@*oSi{IW~rdzo0y!L2NcundS0ve;2nVDkcZ0uxd;Oge$ zW^Q6?Xy|Hb>E>eLWMFROX5nn)`rp975vJKCKe;qFHLnDwIR&BF6{ZBD)2}DNZocP@DpG2}ElOZkIUY)T(;JWy=vu(<;#{XS-fcBg8B32&Y3-H=8WmnrcRkWY2t+bzTTehuFj73 zw$_&BrpAW)y4srRs>+J;veJ^`qQZjwyxg4Ztjvt`wA7U3q{M{yxY(HJsK|)$u+Wg; zpuhlsKVKhjFHaA5H&+*DCr1Z+J6juTD@zM=GgA{|BSQmyJzX7bElmw|HB}X5B}D~! zIawKLDM<-&F;Nj=AwdCtK3*OkZZ1v^b~aWPW+p}k1|3iV0V*{Zm}GnUSMGk0BggFM b<&t?-^YD(^TT3JO+816}S@$l8fx#L8!r+f& diff --git a/icons/nanox_app_liquid_regtest_headless.gif b/icons/nanox_app_liquid_regtest_headless.gif deleted file mode 100644 index 9fb840e573fb55da054a43f359b6590c2cc77d90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1122 zcmZ?wbhEHbTBRz;GCL~=}}db8eHWUl3bOYY?-2DZ>L~WVFlEiTau_y zk(-lOY*k^al$esAlxhWJ=cbk<>MJRLRg`4gDmj8A6e4^B6rA&mQWZ?~%yg3tO-vQc zE%gk|j7=;pbrg&Y3@!8xEc6YHbq&p|Obo1yj1-_i$vOKg>t6#hd!kXryZHLq9?>>0h}{9OHt!~%UoJp+)3AU@44@b$&7G&dKl z8WTK@=NlI zGx7@*oSi{IW~rdzo0y!L2NcundS0ve;2nVDkcZ0uxd;Oge$ zW^Q6?Xy|Hb>E>eLWMFROX5nn)`rp975vJKCKe;qFHLnDwIR&BF6{ZBD)2}DNZocP@DpG2}ElOZkIUY)T(;JWy=vu(<;#{XS-fcBg8B32&Y3-H=8WmnrcRkWY2t+bzTTehuFj73 zw$_&BrpAW)y4srRs>+J;veJ^`qQZjwyxg4Ztjvt`wA7U3q{M{yxY(HJsK|)$u+Wg; zpuhlsKVKhjFHaA5H&+*DCr1Z+J6juTD@zM=GgA{|BSQmyJzX7bElmw|HB}X5B}D~! zIawKLDM<-&F;Nj=AwdCtK3*OkZZ1v^b~aWPW+p}k1|3iV0V*{Zm}GnUSMGk0BggFM b<&t?-^YD(^TT3JO+816}S@$l8fx#L8!r+f& diff --git a/icons/nanox_app_litecoin.gif b/icons/nanox_app_litecoin.gif deleted file mode 100644 index ee77dfc2bc92c4c34f101d09d6168947d48089b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65 zcmZ?wbhEHbTBRz;GCL~=}}db8eHWUl3bOYY?-2DZ>L~WVFlEiTau_y zk(-lOY*k^al$esAlxhWJ=cbk<>MJRLRg`4gDmj8A6e4^B6rA&mQWZ?~%yg3tO$-#w zE%gk|3`|T7brg&Y49)coO!W=SbPWux3@ogS3>Bb2$vOKg>t6#hd!kXryZHLq9?>>0h}{9OHt!~%UoJp+)3AU@44@b$&7G&dKl z8WTK@=NlI zGx7@*oSi{IW}%?ro0y!L2NcundS0ve;2nVDi`YG7(;YGLVW z;OgXTXy|I`S|%+WMO3C{NLHt45ry7Ke;qFHLnDwIR&BF4XPPMFGwpWEr5aq z7{EoDWvMA{Mftf3V1HX>BD)2}Db84(0(J>RYYJ|cxZu>Q4|Iz@IIiJQ4HE$-9}p9g zYJuq!$bqK&|0N2kdBD_O1WeY9|Ns5{^ZVD&AK$-y{qp(K#}Dt{y?yig)yo&ppFMr@ z_|d}$_wU`kbNklK8`rO0y>j`|h4bgmo;iK$#u35cm<%;FYmM&SmXyJnS^XAT(J!|HS>C>i8nLKIYg#NzXp6;&Bj`p_J zmgc6$hWfhNn(C^`it@73lH#Jmg8aPPob0U3jP$hBl;otug!s7FnCPg;i14t`kl>)e z0DnJUA8#*D4|g|L7iT9&2YWkP8*3{|3v)A56JsMo1ARSR9c?X54RtkD6=fww1$jAH z8EGj=32`w|5n&-g0e(JS9v*HkP7Zc9Ru*O^Mg|5QPyqodH5iy=d-_*qGrXEmovtSR Yp?6~D{YHO{(s;MJ6lcSC(jpAj0E*R(w*UYD diff --git a/icons/nanox_app_peercoin.gif b/icons/nanox_app_peercoin.gif deleted file mode 100644 index c8f62ff0bc0e883d07752544ad3b993ab45c6e31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65 zcmZ?wbhEHbTBRz;GCL~=}}db8eHWUl3bOYY?-2DZ>L~WVFlEiTau_y zk(-lOY*k^al$esAlxhWJ=cbk<>MJRLRg`4gDmj8A6e4^B6rA&mQWZ?~%yg3tjV%<+ zE%gjdEiH^pbQFvX49)ZnEcFddbPWux3@oh-3>Bb2$vOKg>t6#hd!kXryZHLq9?>>0h}{9OHt!~%UoJp+)3AU@44@b$&7G&dKl z8WTK@=NlI zGx7@*oSi{IX0D*&o0y!L2NcundS0ve;2nVDi`VeIB;V(DgP zY3XKYXy|HgY3}A?VQyh+ZeVQW^xweT6sFlFKe;qFHLnDwIR&BF9I6>bFGwpWEr5aq z7{EoDWvMA{Mftf3V1HX>BHV)J6cbFR7&(C*0@0a*+aab1tq4zmwCV$0qK_8SFd<;- z0Wl$o7MMJN99XjduaE~!>qWps&G`S{-#@>9{rvI$+t)9jKYjf0{@vR*uV1}<@%-7- zCyyUJd~pBX-8;8$-Mn%A+SMzUFI~KF{@mF!r%#aDv3%LmC5sj=m_KjsoY}Kx&X_)J>XgZoCQj(@>+R|8>g;H5 zYi((6YHX;ltF5W7s;nq4D=jH5DlEv)%gxEo%FIYlOHD~mN=%54i;annii`*k3k?Yl z3Jmb~^Y!ue^7L?bb9Hfca&)k_v$e6dva~QaGc_?bGBnWF)78<|($r8_Q&mw`QdE$a zla-N{l9Uh^6BQ8_5)|O)pfZDjNxG+hW%q;g^HO+K YGMje?r@zv@v8?B!`@{#Q*jO2?0plc&0ssI2 diff --git a/icons/nanox_app_qtum.gif b/icons/nanox_app_qtum.gif deleted file mode 100644 index 225ef6f2b0fdb93474c4d1f285eb7ec79febb8a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1119 zcmZ?wbhEHbTBRz;GCL~=}}db8eHWUl3bOYY?-2DZ>L~WVFlEiTau_y zk(-lOY*k^al$esAlxhWJ=cbk<>MJRLRg`4gDmj8A6e4^B6rA&mQWZ?~%yg3tO$-#w zE%gk|3`|T7brg&Y49)coO!W=SbPWux3@ogS3>Bb2$vOKg>t6#hd!kXryZHLq9?>>0h}{9OHt!~%UoJp+)3AU@44@b$&7G&dKl z8WTK@=NlI zGx7@*oShXkd=ry1^FVw}pa!6utUU9IOA_;vQ$1a5m4GJbWoD*WxjC9UnHU(EIXOF- z8ydQrTN*mKx*0lI8aq2$T38wzgZ&TE?2?~cnwy$e0@Iv=&}@#O8LAhQ3_zg)4BMj2 zveXo}qWoM1u$Qeeal6F?Y#cVHK(wY{cL~rJrWg)^`9dG)6n(Tv4v1M{1x&BN zlnG?RQ+#S(itT@;B4C1M{QvLopWnZJ{`mgw>zB`;K7M%r?(Lh`uU@`*{_N?K$B!O9 zxPR~No!hr=-nf44>XplvE?zi)?(CVz2)% zHf~tIZta@Yt5&X9zHI4|MGF_qpEq~T>{&BsOrJJ&%H&BCC-nFA_H=i3cC@#(wlp_2 zHq_VE)>KzjR+N{OmJ}Bi7UbvU=45AOW~8U3rX(jNCd9|Z#zaR&Mudljh6D!%2Kf8= z`gnVJdbqo}x;Q&II@sIU+E`mzT9})eniv}y8tCik>S$|eYN)HJswgWdD#**p%1BE| zN{EYziU(9^%N`@y++A^Hs5x9?h9 YohvIKE+t=98RWV)^~e#UAO;3&04EHMWB>pF diff --git a/icons/nanox_app_ravencoin.gif b/icons/nanox_app_ravencoin.gif deleted file mode 100644 index 13146cffe2c7e1536dbf731fcffa6dcd542e7d01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73 zcmZ?wbhEHbTBRz;GCL~=}}db8eHWUl3bOYY?-2DZ>L~WVFlEiTau_y zk(-lOY*k^al$esAlxhWJ=cbk<>MJRLRg`4gDmj8A6e4^B6rA&mQWZ?~%yg3tjV%<+ zE%gjdEiH^pbQFvX49)ZnEcFddbPWux3@oh-3>Bb2$vOKg>t6#hd!kXryZHLq9?>>0h}{9OHt!~%UoJp+)3AU@44@b$&7G&dKl z8WTK@=NlI zGx7@*oSi{IX0D*&o0y!L2NcundS0ve;2nVDi`;$~=KW@ch; z?&jiVXy|Hg;bdUq;^gFLXk_MW@ZZqF5~kTDKe;qFHLnDwIR&BF0;(BBFGwpWEr5aq z7{EoDWvMA{Mftf3V1HX>BHV)J6jMy6I2(W+0@0a*+aYGCS|OeQY1Ie1L?11tVM4&v z17boFEiickIk05^KQ#}S){B6Nn(_a?zkh!J`uXGgx36D5fBN|0{kyksUcY+r{Mpkd zj~_jJaR1)jJGXD$ym9^7)hm}TUA%Dq+}SgyPn|q*{MgYWhYuY*uz%m)J-c`9+_8Pz z)-9ViZQQVa-P$#)SFK#JeA&_^ix(|iFn`|MIkRWYoH2dc)G3oEO`Oo**W1(G)!EVB z*4onC)Ywp8S6fqERasG9R$5YAR9KLomz$HFm6?&AmYR~Bl$a177aJ2D6&Vp878(*9 z6d2&|=j-F`<>}$>=IY|?mo_rKzE=rmCW>q^KY- zCo3Z@B`F~;CMqHTBRz;GCL~=}}db8eHWUl3bOYY?-2DZ>L~WVFlEiTau_y zk(-lOY*k^al$esAlxhWJ=cbk<>MJRLRg`4gDmj8A6e4^B6rA&mQWZ?~%yg3tjV%<+ zE%gjdEiH^pbQFvX49)ZnEcFddbPWux3@oh-3>Bb2$vOKg>t6#hd!kXryZHLq9?>>0h}{9OHt!~%UoJp+)3AU@44@b$&7G&dKl z8WTK@=NlI zGx7@*oSi{IX0D*&o0y!L2NcundS0ve;2nVDi`=wxVa=4j?< zVd!XNXy|J0=;-EbVPIkEXaQvWH?}Z@X?Dp^F3nBND}iZF0cth_#*l@vxhqh!IZ!i- zUXWH$S^xzJFo26P%TiO^it=+6!2Y(%M7RabDHfPcadQSc1fnwqi$kEku*B2~^aW6_ zKF}rlXfX{F0;V32JHcrdm^y)Mc&h)Ong>klMZiSO`2XMEKfizd{PF$U*Ds$xef;q5 z?VH!HUcPw#?CF!oj~+g_fA8*{+qZ7sxPI;GmCKhdUO0d5?3vT2PM$b^?C6ohhYlXt zzi;oJ-Me<~*uHJ+md%?sZdku=?V8oAR<2mSZ0VB4ixw`JKX2}w*|TQOm_BXll*yAO zPU!FJ?dk67>}YRmZE0?5Y^blRt*Nf6tSB!lEh#Q4EXdEx&B@Nn%t%j5O-W8lOo)$* zjfswmj0g`44G9hk4Dk2!_3`%d^l*1`b#Zobbg;LxwXwFcv@ka_H8D0aG|<=6)zQ|{ z)KFJbRZ&(_RFIdGm64W`ln@sa6%iH^6yWFM<>BVy;^bgwV`X7xVq{>@0TmCRGJ}Ch dw5NaN>9_n0JstBjRv+aqe&&1LV-hQaH2_{Zii`jN diff --git a/icons/nanox_app_viacoin.gif b/icons/nanox_app_viacoin.gif deleted file mode 100644 index 5a2c945cc58e76baec15345bd1fb9fc097b79028..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1118 zcmZ?wbhEHbTBRz;GCL~=}}db8eHWUl3bOYY?-2DZ>L~WVFlEiTau_y zk(-lOY*k^al$esAlxhWJ=cbk<>MJRLRg`4gDmj8A6e4^B6rA&mQWZ?~%yg3tjV%<+ zE%gjdEiH^pbQFvX49)ZnEcFddbPWux3@oh-3>Bb2$vOKg>t6#hd!kXryZHLq9?>>0h}{9OHt!~%UoJp+)3AU@44@b$&7G&dKl z8WTK@=NlI zGx7@*oSi{IX0D*&o0y!L2NcundS0ve;2nVDi`V(e({=x6}M zmZpY=uI3izE{1MKW^QgqP9|pm&7CY@nqBgfOLJ56N?@8(5SlHZno;zEw1UzCC`f<- zT$EXsn&MWJpQ`}&w^b&>Eoe?L#dL~^8Q38Zohi5-Vuq;|=nJSz^wDA(=s2(tF!g|# zkVFeio$zB`;K7M%r?(Lh`uU@`*{_N?K z$B!O9xPR~No!hr=-nf44>XplvE?zi)?(CVz2)%Hf~tIZta@Yt5&X9zHI4|#fug$m_KjsoY}KxPMKzjR+N{OmJ}Bi7UbvU=45AOW~8U3rX(jNCd9|Z#zaR&Mudljh6D!% z2Kf8=`gnVJdbqo}x;Q&II@sIU+E`mzT9})eniv}y8tCik>S$|eYN)HJswgWdD#**p z%1BE|N{EYziU`f8-}9X@wPBWrUgqIVtPIuwz*~+R diff --git a/icons/nanox_app_xrhodium.gif b/icons/nanox_app_xrhodium.gif deleted file mode 100644 index 640287c0c063b1e205510f2b1675eda996ab5111..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79 zcmZ?wbhEHbVQa)3#8IXksPAt^OIGtXA({qFrr3YjUkO5vuy2EGN( zsTr9bRYj@6RemAKRoTgwDN6QsTs9R}6}bhusU?XD6}dTi#a0!zN{K1?NvT#qHb_`s zNdc^+B->WW5hS4iveP-gC{@8!&rCPj(8Nf=+)~fb%)rvfL`T8Mz|dUZz+B(ZSl7VN z%D~LZ*ir!slHCStb$zJpq2r7wn`Z#B?VUc`sL;2dgaD?`9*7iAWdWaj57fXqxx$}cUkRZ`LiS)vcM1?W9} zxc`70cnGED0fVIo=zqrl|Nj2@{p;tC@87({PcxqRv3h4bgmo;iK$#u35cm<%;FYmM&SmXyJnS^XAT(J!|HS>C>i8nLKIYg#NzXp6;&Bj`p_Jmgc6$ zhWfhNn(C^`it@73lH#Jmg8aPPob0U3jP$hBl;otug!s7FnCPg;i14t`kl>)e0DnJU zA8#*D4|g|L7iT9&2YWkP8*3{|3v)A56JsMo1ARSR9c?X54RtkD6=fww1$jAH8EGj= f32`w|5n&-g0e(JS9&Rp94t6$H7G@?!1_o;YXcG2h diff --git a/icons/nanox_app_zcash.gif b/icons/nanox_app_zcash.gif deleted file mode 100644 index 405aa9e55495cf9ff16ae3ff4d4c91dcee640408..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65 zcmZ?wbhEHbTBRz;GCL~=}}db8eHWUl3bOYY?-2DZ>L~WVFlEiTau_y zk(-lOY*k^al$esAlxhWJ=cbk<>MJRLRg`4gDmj8A6e4^B6rA&mQWZ?~%yg3tO-vQc zE%gk|j7=;pbrg&Y3@!8xEc6YHbq&p|Obo1yj1-_i$vOKg>t6#hd!kXryZHLq9?>>0h}{9OHt!~%UoJp+)3AU@44@b$&7G&dKl z8WTK@=NlI zGx7@*oSi{IW~rdzo0y!L2NcundS0ve;2nVDi`Veaf==;rL= zVqk7;Xy|I;BDn?CDNb0O0(J>RYYJ|cIOEi-4|Iz@dR#+9fXN3W2}!lU z^a>*tT}-@bnN{ORL|_ix|4e)aOj^Jh<=Jbv`> z!To!8@7%t1^TzdSSFc>Ybn(LZb7#+-K6UcM@nc7i96ogL!2W%E_w3%abI0~=Teoc9 zv~k1wb!*qGUbS+?@?}exEMBy5!Tfo1=ggipbH?;(Q>RRxG;um zQ)5GYU2RQuRb@qaS!qdeQDH%TUT#iyR%S+eT53viQer}UTx?8qRAfYWSZGLaP+)++ zpRbR%m#2rjo2!enlcR&Zovn?vm8FHbnW>4fk)eUUp019zmZpZfnyQMjlA?mVoUDwr zl%#~Xn5c-bke~oRA1@CNHy0-dI~ywtGZP~NgAS;G0F@dHOwv95D`!7Az+|&|W!Ahn ViN&vKXNpamb0X*BDJfP4YXC-=j<^5- diff --git a/icons/nix.png b/icons/nix.png deleted file mode 100644 index 915c02430bd0270308435ed538e0c617c242478d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5640 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 Y0mi+n#%}%kMF0Q*07*qoM6N<$g2T6puK)l5 diff --git a/icons/pivx.png b/icons/pivx.png deleted file mode 100644 index 87ad7254cd208b3e6cb2509ac691b34e936780b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1662 zcmV-^27&pBP)ly$&27o$UwPL04IIM;QDu}9RXy7be`1({}Hw%^q3016)T1Ne%{X)K~zP<;pZj*nw-%iZYAHw12IP)<2o2{Er_aUS#r_1PS9b2fk3WUDU{sYFXiUV zs-mG+EJ-o?0&TQJHtU{Eyc3i{JG>5ec1{^>x{a9tM0JC)qUD-o#HfP<)s*ba+GY` zL5GJ>hW0^{de4}1*37Y;hs=v^r4Z?`b(@Ds?}&spFR^-vt7X2#7usyz@(_xw9!VQV z!iz@4W%iJ(;`E;#E!#^$c+j%FK4i(^iUs68e9 zm_e_(Q@9PUUwD;IqYg;pq>g*L7rC^^0EevOCtn))?SpN(DF~1#X5P5SBMcT+kd<=#oPiM-hhghb6eeijx_dCI4F=$5EAq&03nrz&% z%qdYItRT~t?O_aotx;DL2q_4Lx7Jh%mlV8^f_(Vt`yHEBGTR#wC{DP;;JIvPfGQ1eRN*CM+TSF~(z7DUz!iH?@-TY`|wlzFvN2+HPS z#@6IwU&Rk4zS3rMyBbt%7l{c(UksYNWtV;z=7DAm=&-d@9YdB6#!MJEcXT{+-)VzN z)}jg?TN~R7LRG`&;@w}?%vtLf8g#9vE{Co_upO!ldhMxWZKTy$bTb~T_Nw*O)k8oQ zD)tk{g2ZNeo;slqn3A623AEi*FEOCslZ&*p&&t%wK%mXC=JZH6dJb7usAB#tKK*44 zMpLd9+O7qGr=nyjLn&)l*@HvW&0?kCdgE^(K@3zy%aJg0!hgyR2{CYz){`IxBurl5 zq$KXP=Di4E;ENyzG?e8i)=s+D?9fi%!XQJF6TS*!hQu+hq^$PKbQq!JrwC>O6U2(D zXj8PFNt-H*auv!5?@P2Ot~uqN{3bL(dO;o)8A1KWy8;0I2a*^jtmvN@P5=M^07*qo IM6N<$f)$|$^8f$< diff --git a/icons/qtum.png b/icons/qtum.png deleted file mode 100644 index 0f154f9bf9a9cc12e57fc8cfbaa9127dc887b243..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3361 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 diff --git a/icons/ravencoin.png b/icons/ravencoin.png deleted file mode 100644 index a436acb2d0ab3962cb42f6f7395e06d5b26099b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5301 zcmV;m6iVxfP)wbIlJm zGhXjKNw&&XQDWoQg1>;RvQ~;n$;!f-*f2fk%~LbUoZCJ3bHDeT)4k_{E0R%JqbdN| zoT-OLL*CiwoVVtM3R-E#PfJW0+R)V01ZC~>UZTZr{dTSLasOKVV!}{RQ7b&CG~E;) z6P{Q#HJf*Yn^iitD10XD)8&G~ceWmP_|@i=!{0XRk?=6M8il>75{{R!O6yr+c{v@~ z%!>NGkNpyNA~!QFYrD)g48n{O!pk@#4AVys1LFInJ3+c-N16OUA%Bu($yMSt*3elZ zMH&;Is4G%EA!}0fgp3SpcK`qO)kyXRo$BroR6kqRdneRvLw?J$zK$#_e+-pRaG5LS zFCRkxhv-{Ht>XYZ8*qMA)Z)8vu?ek@T1<}>q)M5tWD?#^p&<%QH&8e4^z8SXlLv^b z%U4~)-ad3myl3GDY!hebjG?or00009a7bBm000XU000XU0RWnu7ytkg+et)0RCt{2 zoq2pz)!E0tvnM1W3rQx+5Z1|_fdt6HI)p_WBOth-6_wiBD(b6!tM%>M>WCGQTBRsR zt5(#~q7|wv5ef;2kc2=241@$S0RjOe8`(Fq^pBau?3qbsG9dH)eCBgAbC>hn^UGQ8 zbI!SsfI&p1(Fy=15Dh2*H^8-*t&^2ZsRqh`a^t70n{5G*4&>?*wJlb%qYDCSURJqih1HIUQ1W{?ULxE+$Gr*XE8gq-22do7) z>JqgT{k=%P1Ti+w%Yl`EOMespkx~i#7FgGx&Vbp1s5Dv^-~-?RbI-la*bF?OOVn1H zbCOwts5IIzU<(jr&Uv>nIl#TTL~WL-CkRbFP^Hm6jG_By7sGUdfpnEd`x8@75Sen2 zN~2v3yah=5Y1r+I1Xv_js-3Ro?%&hb!F>v%(rA}r5W~*Em?BrI^RDIY*Y$Q#uWg7* zqYcOKbUMV6mfgnG0MWg*DLo2e>`fiP-ey>uGr**tdSBf(>c;1c53!434T6Bb8uPdd zJ@vAd1NU3aBs)tmw>A}kqI1>NT?u&%yBLGPPz-t9fes}^rO}Eo zG&;Atqj0d$13~S*#GOls2D=!8$yf||-bQCZo*O({>=@~g=WSJ%aip);r${?iBcgTW zv3&`7+D69MX_xoy1(|IFL+lu6%X;U=6>sE!HZmp_?7$QWO~*m;!K*Y6}`j1Ti>M6h7?c-&okAEsHk zK9SFN9vLKS2TUp8DUvJIfxrv4wx&Jmm>^dDW-&|eiNnjo;8qI@^rNo+210>=h#&>; zev-t&qk7z3hu|l7>-IWRCXOX9zmRj6tTyx0k~jjJL~^D2PGFI(tpS)36UdvLglJFf z_|g35;AzAnA+J8SfKkIe*`9QQb${PSZCwK+6rMQ9ei-%_2n5WG4dz%@K359M2lH0? z%VCjRsn%fQXOQX9fvkFQF^}{hL@NS;fEh7CtpEFdWKuCP<3}@Xk`j$Ng7cS(`O}BH zIeIeRP-?slrA8zYGAk~G1LeD7ES@q $hrKS0UOX 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 Hu0mjf+K(QE diff --git a/icons/resistance.png b/icons/resistance.png deleted file mode 100644 index 02b398830857bf33083811d953b501aefe1cf04f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19575 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 diff --git a/icons/stax_app_bitcoin.gif b/icons/stax_app_bitcoin.gif new file mode 100644 index 0000000000000000000000000000000000000000..99915d7c503448a7e83c319804a6207cd9b33693 GIT binary patch literal 347 zcmV-h0i^y%Nk%w1VITk?0J8u9Sy@?WX=$CEo#Nu+i;Ih|udjM~dP+)4!otE978W8R zB0M}i3=9k|E-wH7{{R30A^8LV00000EC2ui03ZM$000F4(8)=wz1WTd6nhWT077OC z!3VBv5)5W#sBFC^L@WVzUjwm&Z@4;Sc*8(|2(%E0j{)LQ5cqPGL83<>92Sn5qu^t} zCd=MgQZP7>y#QtFYi5N#v&1@7NCpd74hS?X1v^XutE`+ulz0i02y~?qpf(MS61)i$lE8>H4Ouiskv&ah zH3tY4Rfm5*lmne03^{8Qq%9PWH6;vg0s;jD$2M{k+-g$=15k|N4w)*UL0~HJi6acWdv1G*v06VXtbgBRV literal 0 HcmV?d00001 diff --git a/icons/stax_app_liquid.gif b/icons/stax_app_liquid.gif new file mode 100644 index 0000000000000000000000000000000000000000..12edda6489996b18c5620a483a893ed2f09038eb GIT binary patch literal 362 zcmV-w0hRtoNk%w1VITk?0J8u9Sy@?WX=$CEo#Nu+i;Ih|udjM~dP+)4!otE978W8R zB0M}i3=9k|E-wH7{{R30A^!_bMO0HmK~P09E-(WD0000X`2++20000i00000AOIi$ z00jTg$w{ld*p31edk@n9LS_!Z2d-=q3}$7h>w-)z5la9ITD}J$cJLi2LDmt|dlWuH z$;vUKd4Zvrb0g=m3x z1w4jkZHiYC4UP;_4u6qr5;P7WkeV!(o|T}XhNM4qr#_s93xKREqY5iGXM3^_4UHf} zAPBX(LK2y)!w)461D&M5h584l~MdYa<@*tLEs0ZQ=KuJ3YR8z!2%#LLN7W!cD;-Lir02-)Zpa4Jtd=>;l IW{3a)JAku(r~m)} literal 0 HcmV?d00001 diff --git a/icons/stealth.png b/icons/stealth.png deleted file mode 100644 index 6cac62b5307eb4eb51a21ef2d62c21b893f9a5ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1860 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 QXaE2J07*qoM6N<$f_Y%DF#rGn diff --git a/icons/vertcoin.png b/icons/vertcoin.png deleted file mode 100644 index 8ed0793581edfc5976f32b387f18b7066eb9cb67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1917 zcmV-@2ZH#CP)rnM4R3u6&PGj!|)1tLUSEGm2~J)bqodp<}O@RAMlJ zF`6VXV}_}Rs1(&S%qgsp0TB5L|tdbHV7IYHJNFoIx`A?;(_&89j zri7*}GMbu{`tj0BU)bm?P!Li#7S(8q8#pBH45}w#DXXN!;7VIqJ@NGr&Ct=AolW}_ zr-UBcw94+L2KA7UtVc;8zF1cYLVAZX3dOOL#JqyHhve7kgUd`+%qum7jI931dUO)v zK|11c_Yl=PlA{uPC5RkUV(+9Zm9C_~Nn5ms^kzI5GT>-H1?kFkDCEG=fC|zrd1JGH zqX88}t#>4kqe1TR{w>P8l82rave#A-!W+B$;o9*Fu>1L!M1-hQ2@=5*9go4GzCqZy z;Q=^ND8krK30gO77wcD0bV0w_FSib4UrjF?~W z3{|@lBmhiH#W(#u;ppTy@axUrc;4C(L=Aa8eA-`~s*sUe{LAEbzk9 z+hE_0*L+VpH2RT{r&ofwxRa_r_gx>GnSh0*8$#Nk1aWa_?;vO$k5*l?Z~hKP_@}B0 zN)W=cn>NG2U9bDD4~>2Zf8M?&tQ|@aLeQw{%=sVS;8V&Ydc@Zx;N-HvRgnEJ?g@Kg*6x~VwA zaf9^)_dmsjOinHfceQSLnEShKXD-jeMVtlCOjKR}``>@y$}d-;cl#@F-#zzMu0Pb) z0d4oULiy^2rtXV9ZLHuI_noglfQ4mw3b`9$^N_IgfFm6AkGx>cZ+82pY)&o7(jC$c)ZEJz~=4nGf;-t%2=WPT#6lgols>mgWA zMkc=WU9YE}$n4~@Al(90GxbDvCzk~&R}34iC$c-aEJ!IxBlRQ=PA&`5uBk`W6AZqa zv^cpeNWIA+te%`Kd{t%Dr^U%-LHb=MVfExBsV8Z2a#;}KWiMgK|%Te;1NmN=V0TIHJ9_%4*cFL2HGP7rGg`53b9&T=PpSN z4qb7!U5ljln%sj*rE?t3Ml@vP~u!Wt1#zPpdKVd)(N`On8;N6;Y(#KgwrO$M@ySgPFQoT$5^>sH zhmpya=ICH$p6q)@0T$!z1yKkSgawyqA`uqsngGCm(-Ht|Uhg(R00000NkvXXu0mjf DBAA7k diff --git a/icons/viacoin.png b/icons/viacoin.png deleted file mode 100644 index caae567c1a0afa8d0780fe4586effcc6ba2c89e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1884 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 Ef@%7jm;e9( diff --git a/icons/xsn.png b/icons/xsn.png deleted file mode 100644 index f5c43ada5da67dbe11bd7e7aa20462c6f197f2f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1334 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 diff --git a/icons/zclassic.png b/icons/zclassic.png deleted file mode 100644 index ea554440b9fcba1029b0287429e36344695b2e05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2652 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 KMNUMnLSTY1aNh&~ diff --git a/ledger_app.toml b/ledger_app.toml new file mode 100644 index 000000000..e557cc8f9 --- /dev/null +++ b/ledger_app.toml @@ -0,0 +1,8 @@ +[app] +build_directory = "./" +sdk = "C" +devices = ["nanos", "nanox", "nanos+", "stax"] + +[tests] +unit_directory = "./unit-tests/" +pytest_directory = "./tests/" diff --git a/ragger_bitcoin/README.md b/ragger_bitcoin/README.md new file mode 100644 index 000000000..ae9c2f4c5 --- /dev/null +++ b/ragger_bitcoin/README.md @@ -0,0 +1 @@ +# Ragger wrapper for Ledger Bitcoin application client \ No newline at end of file diff --git a/ragger_bitcoin/__init__.py b/ragger_bitcoin/__init__.py new file mode 100644 index 000000000..516a775f7 --- /dev/null +++ b/ragger_bitcoin/__init__.py @@ -0,0 +1,5 @@ +"""Ragger wrapper for Ledger Nano Bitcoin client""" + +from .ragger_bitcoin import createRaggerClient, RaggerClient +from .ragger_instructions import Instructions +__version__ = '0.0.1' diff --git a/ragger_bitcoin/pyproject.toml b/ragger_bitcoin/pyproject.toml new file mode 100644 index 000000000..3324695e2 --- /dev/null +++ b/ragger_bitcoin/pyproject.toml @@ -0,0 +1,19 @@ +[build-system] +requires = [ + "setuptools>=45", + "wheel" +] + +[tool.mypy] +ignore_missing_imports = true + +[tool.yapf] +based_on_style = "pep8" +column_limit = 100 + +[tool.coverage.report] +show_missing = true +exclude_lines = [ + "@abstractmethod", + "pragma: no cover" +] diff --git a/ragger_bitcoin/ragger_bitcoin.py b/ragger_bitcoin/ragger_bitcoin.py new file mode 100644 index 000000000..13d11b4b4 --- /dev/null +++ b/ragger_bitcoin/ragger_bitcoin.py @@ -0,0 +1,221 @@ +from typing import Tuple, List, Optional, Union +from pathlib import Path + +from ledger_bitcoin.common import Chain +from ledger_bitcoin.client_command import ClientCommandInterpreter +from ledger_bitcoin.client_base import TransportClient, PartialSignature +from ledger_bitcoin.wallet import WalletPolicy +from ledger_bitcoin.psbt import PSBT +from ledger_bitcoin.client import NewClient +from ledger_bitcoin.client_base import print_response, print_apdu, ApduException + +from ragger.navigator import Navigator +from ragger_bitcoin.ragger_instructions import Instructions + +TESTS_ROOT_DIR = Path(__file__).parent + + +class RaggerClient(NewClient): + def __init__(self, comm_client: TransportClient, chain: Chain = Chain.MAIN, debug: bool = False, screenshot_dir: Path = TESTS_ROOT_DIR) -> None: + super().__init__(comm_client, chain, debug) + self.screenshot_dir = screenshot_dir + self.navigate = False + self.navigator = None + self.testname = "" + self.instructions = None + + def _apdu_exchange(self, apdu: dict, tick_timeout: int = 0) -> Tuple[int, bytes]: + try: + if self.debug: + print_apdu(apdu) + + response = self.transport_client.exchange( + **apdu, tick_timeout=tick_timeout) + if self.debug: + print_response(response.status, response.data) + + return response.status, response.data + except ApduException as e: + if self.debug: + print_response(e.sw, e.data) + + return e.sw, e.data + + def _make_request( + self, apdu: dict, client_intepreter: ClientCommandInterpreter = None + ) -> Tuple[int, bytes]: + + if self.navigate: + sw, response = self._make_request_with_navigation(navigator=self.navigator, + apdu=apdu, + client_intepreter=client_intepreter, + testname=self.testname, + instructions=self.instructions + ) + + else: + sw, response = NewClient._make_request( + self, apdu, client_intepreter) + return sw, response + + def last_async_response(self) -> Tuple[int, bytes]: + return self.transport_client.last_async_response.status, self.transport_client.last_async_response.data + + def ragger_navigate(self, navigator: Navigator, apdu: dict, instructions: Instructions, testname: str, index: int) -> Tuple[int, bytes, int]: + sub_index = 0 + + if instructions: + text = instructions.data['text'] + instruction_until_text = instructions.data['instruction_until_text'] + instruction_on_text = instructions.data['instruction_on_text'] + save_screenshot = instructions.data['save_screenshot'] + else: + text = [] + instruction_until_text = [] + instruction_on_text = [] + save_screenshot = [] + + try: + sw, response = self._apdu_exchange(apdu, tick_timeout=1) + except TimeoutError: + with self.transport_client.exchange_async(**apdu): + for t, instr_approve, instr_next, compare in zip(text[index], + instruction_on_text[index], + instruction_until_text[index], + save_screenshot[index]): + if compare: + navigator.navigate_until_text_and_compare(instr_next, + [instr_approve], + t, + self.screenshot_dir, + Path( + f"{testname}_{index}_{sub_index}"), + screen_change_after_last_instruction=False, + screen_change_before_first_instruction=True) + else: + navigator.navigate_until_text(instr_next, + [instr_approve], + t, + screen_change_after_last_instruction=False, + screen_change_before_first_instruction=True) + sub_index += 1 + + sw, response = self.last_async_response() + index += 1 + return sw, response, index + + def _make_request_with_navigation(self, navigator: Navigator, apdu: dict, client_intepreter: + ClientCommandInterpreter = None, + testname: str = "", instructions: Instructions = None) -> Tuple[int, bytes]: + + index = 0 + + sw, response, index = self.ragger_navigate( + navigator, apdu, instructions, testname, index) + + while sw == 0xE000: + if not client_intepreter: + raise RuntimeError( + "Unexpected SW_INTERRUPTED_EXECUTION received.") + + command_response = client_intepreter.execute(response) + apdu = self.builder.continue_interrupted(command_response) + + sw, response, index = self.ragger_navigate( + navigator, apdu, instructions, testname, index) + return sw, response + + def get_extended_pubkey(self, path: str, display: bool = False, navigator: Optional[Navigator] = None, + testname: str = "", + instructions: Instructions = None) -> str: + + if navigator: + self.navigate = True + self.navigator = navigator + self.testname = testname + self.instructions = instructions + + response = NewClient.get_extended_pubkey(self, path, display) + + self.navigate = False + + return response + + def register_wallet(self, wallet: WalletPolicy, navigator: Optional[Navigator] = None, + testname: str = "", instructions: Instructions = None) -> Tuple[bytes, bytes]: + + if navigator: + self.navigate = True + self.navigator = navigator + self.testname = testname + self.instructions = instructions + + wallet_id, wallet_hmac = NewClient.register_wallet(self, wallet) + + self.navigate = False + + return wallet_id, wallet_hmac + + def get_wallet_address( + self, + wallet: WalletPolicy, + wallet_hmac: Optional[bytes], + change: int, + address_index: int, + display: bool, + navigator: Optional[Navigator] = None, + instructions: Instructions = None, + testname: str = "" + ) -> str: + + if navigator: + self.navigate = True + self.navigator = navigator + self.testname = testname + self.instructions = instructions + + result = NewClient.get_wallet_address( + self, wallet, wallet_hmac, change, address_index, display) + + self.navigate = False + + return result + + def sign_psbt(self, psbt: Union[PSBT, bytes, str], wallet: WalletPolicy, wallet_hmac: + Optional[bytes], navigator: Optional[Navigator] = None, + testname: str = "", instructions: Instructions = None) -> List[Tuple[int, PartialSignature]]: + + if navigator: + self.navigate = True + self.navigator = navigator + self.testname = testname + self.instructions = instructions + + result = NewClient.sign_psbt(self, psbt, wallet, wallet_hmac) + + self.navigate = False + + return result + + def sign_message(self, message: Union[str, bytes], bip32_path: str, navigator: + Optional[Navigator] = None, + instructions: Instructions = None, + testname: str = "" + ) -> str: + + if navigator: + self.navigate = True + self.navigator = navigator + self.testname = testname + self.instructions = instructions + + response = NewClient.sign_message(self, message, bip32_path) + + self.navigate = False + + return response + + +def createRaggerClient(backend, chain: Chain = Chain.MAIN, debug: bool = False, screenshot_dir: + Path = TESTS_ROOT_DIR) -> RaggerClient: + return RaggerClient(backend, chain, debug, screenshot_dir) diff --git a/ragger_bitcoin/ragger_instructions.py b/ragger_bitcoin/ragger_instructions.py new file mode 100644 index 000000000..08e157d2b --- /dev/null +++ b/ragger_bitcoin/ragger_instructions.py @@ -0,0 +1,98 @@ +from ragger.navigator import NavInsID + + +class Instructions: + def __init__(self, model): + self.data = { + 'text': [], + 'instruction_until_text': [], + 'instruction_on_text': [], + 'save_screenshot': [] + } + + if not model: + raise Exception("Model must be specified") + + self.model = model + + def __str__(self): + return "Data: {0}\n\t".format(self.data) + + def same_request(self, text, instruction_until_text=NavInsID.RIGHT_CLICK, + instruction_on_text=NavInsID.BOTH_CLICK, save_screenshot=True): + + self.data['text'][-1].append(text) + self.data['instruction_until_text'][-1].append(instruction_until_text) + self.data['instruction_on_text'][-1].append(instruction_on_text) + self.data['save_screenshot'][-1].append(save_screenshot) + + def new_request(self, text, instruction_until_text=NavInsID.RIGHT_CLICK, + instruction_on_text=NavInsID.BOTH_CLICK, save_screenshot=True): + + self.data['text'].append([text]) + self.data['instruction_until_text'].append([instruction_until_text]) + self.data['instruction_on_text'].append([instruction_on_text]) + self.data['save_screenshot'].append([save_screenshot]) + + def nano_skip_screen(self, text, save_screenshot=True): + self.new_request(text, NavInsID.RIGHT_CLICK, NavInsID.RIGHT_CLICK, + save_screenshot=save_screenshot) + + def navigate_end_of_flow(self, save_screenshot=True): + self.new_request("Processing", NavInsID.USE_CASE_REVIEW_TAP, NavInsID.USE_CASE_REVIEW_TAP, + save_screenshot=save_screenshot) + + def confirm_transaction(self, save_screenshot=True): + self.new_request("Sign", NavInsID.USE_CASE_REVIEW_TAP, NavInsID.USE_CASE_REVIEW_CONFIRM, + save_screenshot=save_screenshot) + self.new_request("TRANSACTION", NavInsID.USE_CASE_REVIEW_TAP, + NavInsID.USE_CASE_STATUS_DISMISS, + save_screenshot=save_screenshot) + + def same_request_confirm_transaction(self, save_screenshot=True): + self.same_request("Sign", NavInsID.USE_CASE_REVIEW_TAP, NavInsID.USE_CASE_REVIEW_CONFIRM, + save_screenshot=save_screenshot) + self.new_request("TRANSACTION", NavInsID.USE_CASE_REVIEW_TAP, + NavInsID.USE_CASE_STATUS_DISMISS, + save_screenshot=save_screenshot) + + def confirm_message(self, save_screenshot=True): + self.new_request("Sign", NavInsID.USE_CASE_REVIEW_TAP, + NavInsID.USE_CASE_REVIEW_CONFIRM, save_screenshot=save_screenshot) + self.new_request("MESSAGE", NavInsID.USE_CASE_REVIEW_TAP, + NavInsID.USE_CASE_STATUS_DISMISS, save_screenshot=save_screenshot) + + def confirm_wallet(self, save_screenshot=True): + self.new_request("Approve", NavInsID.USE_CASE_REVIEW_TAP, NavInsID.USE_CASE_REVIEW_CONFIRM, + save_screenshot=save_screenshot) + self.same_request("WALLET", NavInsID.USE_CASE_REVIEW_TAP, + NavInsID.USE_CASE_STATUS_DISMISS, save_screenshot=save_screenshot) + + def reject_message(self, save_screenshot=True): + self.new_request("Sign", NavInsID.USE_CASE_REVIEW_TAP, NavInsID.USE_CASE_REVIEW_REJECT, + save_screenshot=save_screenshot) + self.same_request("Reject", NavInsID.USE_CASE_REVIEW_TAP, NavInsID.USE_CASE_CHOICE_CONFIRM, + save_screenshot=save_screenshot) + self.new_request("MESSAGE", NavInsID.USE_CASE_REVIEW_TAP, NavInsID.USE_CASE_STATUS_DISMISS, + save_screenshot=save_screenshot) + + def warning_accept(self, save_screenshot=True): + self.new_request("Warning", NavInsID.USE_CASE_REVIEW_TAP, NavInsID.USE_CASE_CHOICE_CONFIRM, + save_screenshot=save_screenshot) + + def address_confirm(self, save_screenshot=True): + self.new_request("Confirm", NavInsID.USE_CASE_REVIEW_TAP, + NavInsID.USE_CASE_ADDRESS_CONFIRMATION_CONFIRM, + save_screenshot=save_screenshot) + + def choice_confirm(self, save_screenshot=True): + self.new_request("Approve", NavInsID.USE_CASE_REVIEW_TAP, NavInsID.USE_CASE_CHOICE_CONFIRM, + save_screenshot=save_screenshot) + + def choice_reject(self, save_screenshot=True): + self.new_request("Approve", NavInsID.USE_CASE_REVIEW_TAP, NavInsID.USE_CASE_CHOICE_REJECT, + save_screenshot=save_screenshot) + + def footer_cancel(self, save_screenshot=True): + self.new_request("Approve", NavInsID.USE_CASE_REVIEW_TAP, NavInsID.CANCEL_FOOTER_TAP, + save_screenshot=save_screenshot) diff --git a/ragger_bitcoin/setup.cfg b/ragger_bitcoin/setup.cfg new file mode 100644 index 000000000..867b7b040 --- /dev/null +++ b/ragger_bitcoin/setup.cfg @@ -0,0 +1,26 @@ +[metadata] +name = ragger_bitcoin +version = 0.0.1 +author = Ledger +author_email = hello@ledger.fr +description = Ragger wrapper for Leger Bitcoin Client +long_description = file: README.md +long_description_content_type = text/markdown +url = https://github.com/LedgerHQ/app-bitcoin-new +project_urls = + Bug Tracker = https://github.com/LedgerHQ/app-bitcoin-new +classifiers = + Programming Language :: Python :: 3 + Programming Language :: Python :: 3.8 + Programming Language :: Python :: 3.9 + Programming Language :: Python :: 3.10 + License :: OSI Approved :: Apache Software License + Operating System :: POSIX :: Linux + Operating System :: MacOS :: MacOS X + +[options] +packages = find: +include_package_data = True +python_requires = >=3.7 +install_requires= + ledger-bitcoin diff --git a/src/boilerplate/apdu_parser.c b/src/boilerplate/apdu_parser.c index b63c5b686..8304d1aac 100644 --- a/src/boilerplate/apdu_parser.c +++ b/src/boilerplate/apdu_parser.c @@ -1,6 +1,6 @@ /***************************************************************************** * Ledger App Bitcoin. - * (c) 2021 Ledger SAS. + * (c) 2024 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/boilerplate/dispatcher.c b/src/boilerplate/dispatcher.c index c4da8cd4f..e6d1bd74c 100644 --- a/src/boilerplate/dispatcher.c +++ b/src/boilerplate/dispatcher.c @@ -1,6 +1,6 @@ /***************************************************************************** * Ledger App Bitcoin. - * (c) 2021 Ledger SAS. + * (c) 2024 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -39,17 +39,10 @@ extern bool G_was_processing_screen_shown; // Private state that is not made accessible from the dispatcher context struct { void (*termination_cb)(void); - bool paused; uint16_t sw; bool had_ux_flow; // set to true if there was any UX flow during the APDU processing } G_dispatcher_state; -static void dispatcher_loop(); - -static void next(command_processor_t next_processor) { - G_dispatcher_context.machine_context_ptr->next_processor = next_processor; -} - static void add_to_response(const void *rdata, size_t rdata_len) { io_add_to_response(rdata, rdata_len); } @@ -63,35 +56,11 @@ static void send_response() { io_confirm_response(); } -static void pause() { - G_dispatcher_state.paused = true; - - // pause() is _always_ called for ux flows that wait for user input. - // No other flows should exist. +static void set_ui_dirty() { + // signals that the screen was changed while processing a command handler G_dispatcher_state.had_ux_flow = true; } -static void run() { - G_dispatcher_state.paused = false; - - io_start_processing_timeout(); - dispatcher_loop(); -} - -static void start_flow(command_processor_t first_processor, - machine_context_t *subcontext, - command_processor_t return_processor) { - // set the return_processor as the next processor for the current flow - G_dispatcher_context.machine_context_ptr->next_processor = return_processor; - - // initialize subcontext's parent context and initial processor - subcontext->parent_context = G_dispatcher_context.machine_context_ptr; - subcontext->next_processor = first_processor; - - // switch machine context to subcontext - G_dispatcher_context.machine_context_ptr = subcontext; -} - // TODO: refactor code in common with the main apdu loop static int process_interruption(dispatcher_context_t *dc) { command_t cmd; @@ -140,48 +109,31 @@ static int process_interruption(dispatcher_context_t *dc) { void apdu_dispatcher(command_descriptor_t const cmd_descriptors[], int n_descriptors, - machine_context_t *top_context, - size_t top_context_size, void (*termination_cb)(void), const command_t *cmd) { G_dispatcher_state.had_ux_flow = false; G_dispatcher_state.termination_cb = termination_cb; - G_dispatcher_state.paused = false; G_dispatcher_state.sw = 0; - G_dispatcher_context.next = next; G_dispatcher_context.add_to_response = add_to_response; G_dispatcher_context.finalize_response = finalize_response; G_dispatcher_context.send_response = send_response; - G_dispatcher_context.pause = pause; - G_dispatcher_context.run = run; - G_dispatcher_context.start_flow = start_flow; + G_dispatcher_context.set_ui_dirty = set_ui_dirty; G_dispatcher_context.process_interruption = process_interruption; G_dispatcher_context.read_buffer = buffer_create(cmd->data, cmd->lc); - if (cmd->cla == CLA_FRAMEWORK && cmd->ins == INS_CONTINUE) { - if (cmd->p1 != 0 || cmd->p2 != 0) { - io_send_sw(SW_WRONG_P1P2); - return; - } + if (cmd->p2 > CURRENT_PROTOCOL_VERSION) { + io_send_sw(SW_WRONG_P1P2); + return; + } - if (G_dispatcher_context.machine_context_ptr == NULL || - G_dispatcher_context.machine_context_ptr->next_processor == NULL) { - PRINTF("Unexpected INS_CONTINUE.\n"); - io_send_sw(SW_BAD_STATE); // received INS_CONTINUE, but no command was interrupted. - return; - } + if (cmd->cla == CLA_FRAMEWORK && cmd->ins == INS_CONTINUE) { + PRINTF("Unexpected INS_CONTINUE.\n"); + io_send_sw(SW_BAD_STATE); // received INS_CONTINUE, but no command was interrupted. + return; } else { - // If a previous command was interrupted but any command other than INS_CONTINUE is - // received, the interrupted command is discarded. - - G_dispatcher_context.machine_context_ptr = top_context; - - // Safety measure: reset to 0 the entire context before starting. - explicit_bzero(top_context, top_context_size); - bool cla_found = false, ins_found = false; command_handler_t handler; for (int i = 0; i < n_descriptors; i++) { @@ -203,54 +155,7 @@ void apdu_dispatcher(command_descriptor_t const cmd_descriptors[], } io_start_processing_timeout(); - handler(&G_dispatcher_context); - } - - dispatcher_loop(); -} - -static void dispatcher_loop() { - if (G_dispatcher_context.machine_context_ptr == NULL) { - PRINTF("dispatcher_loop called when the machine context is not set."); - return; - } - - while (true) { - if (G_dispatcher_state.paused) { - io_clear_processing_timeout(); - return; - } - - if (G_dispatcher_state.sw != 0) { - break; - } - - if (G_dispatcher_context.machine_context_ptr->next_processor) { - // there is a next processor, continue in the same context - - command_processor_t proc = G_dispatcher_context.machine_context_ptr->next_processor; - G_dispatcher_context.machine_context_ptr->next_processor = NULL; - - proc(&G_dispatcher_context); - - // if an interruption is sent, should exit the loop and persist the context for the next - // call in that case, there MUST be a next_processor - if (G_dispatcher_state.sw == SW_INTERRUPTED_EXECUTION) { - if (G_dispatcher_context.machine_context_ptr->next_processor == NULL) { - PRINTF("Interruption requested, but the next processor was not set.\n"); - } - - io_clear_processing_timeout(); - return; - } - } else if (G_dispatcher_context.machine_context_ptr->parent_context != NULL) { - // the current submachine ended, continue from parent's context - G_dispatcher_context.machine_context_ptr = - G_dispatcher_context.machine_context_ptr->parent_context; - continue; - } else { - break; // all done - } + handler(&G_dispatcher_context, cmd->p2); } // Here a response (either success or error) should have been send. @@ -266,6 +171,7 @@ static void dispatcher_loop() { bool is_ux_dirty = G_dispatcher_state.had_ux_flow || G_was_processing_screen_shown; if (G_dispatcher_state.termination_cb != NULL && is_ux_dirty) { G_dispatcher_state.termination_cb(); + G_was_processing_screen_shown = 0; } io_clear_processing_timeout(); @@ -274,21 +180,11 @@ static void dispatcher_loop() { #ifdef HAVE_LOG_PROCESSOR // Print current filename, line number and function name. // Indents according to the nesting depth for subprocessors. -void print_dispatcher_info(dispatcher_context_t *dc, - const char *file, +void print_dispatcher_info(const char *file, int line, const char *func) { - // prevent warnings when DEBUG is 0 - (void) file, (void) line, (void) func; - // PRINTF() replaced with low-level functions to reduce stack usage (~ 40 vs 500 bytes) - machine_context_t *ctx = dc->machine_context_ptr; - while (ctx->parent_context != NULL) { - debug_write("----"); - ctx = ctx->parent_context; - } - debug_write("->"); debug_write(file); debug_write(":"); diff --git a/src/boilerplate/dispatcher.h b/src/boilerplate/dispatcher.h index 2f2017161..8e01ecfa4 100644 --- a/src/boilerplate/dispatcher.h +++ b/src/boilerplate/dispatcher.h @@ -6,58 +6,22 @@ #include "common/buffer.h" -// TODO: continue brainstorming on a nice interface. -// A command descriptor should contain: -// - a command handler, that can access all the input and the global state -// - a command processor, that encodes the state machine (only for interruptible commands) -// For simple 1-round commands, the global state should not be used (or used only as temporary -// storage); there is no command processor. For interruptible commands, the command handler -// initializes the global state; it can return a status word and response, and no processor will be -// called in that case. Otherwise, the command processor is called, which implements the state -// machines, and must respect specific constraints in the way it's written. -// TODO: document this. - // Forward declaration struct dispatcher_context_s; typedef struct dispatcher_context_s dispatcher_context_t; -typedef void (*command_processor_t)(dispatcher_context_t *); - -typedef command_processor_t command_handler_t; - -typedef struct machine_context_s { - struct machine_context_s *parent_context; - command_processor_t next_processor; -} machine_context_t; - -typedef void (*dispatcher_callback_t)(machine_context_t *, buffer_t *); - -typedef struct { - void *state; - dispatcher_callback_t fn; -} dispatcher_callback_descriptor_t; - -static inline dispatcher_callback_descriptor_t make_callback(void *state, - dispatcher_callback_t fn) { - return (dispatcher_callback_descriptor_t){.state = state, .fn = fn}; -} +typedef void (*command_handler_t)(dispatcher_context_t *, uint8_t p2); /** * TODO: docs */ struct dispatcher_context_s { - machine_context_t *machine_context_ptr; buffer_t read_buffer; - void (*pause)(); - void (*run)(); - void (*next)(command_processor_t next_processor); + void (*set_ui_dirty)(); void (*add_to_response)(const void *rdata, size_t rdata_len); void (*finalize_response)(uint16_t sw); void (*send_response)(void); - void (*start_flow)(command_processor_t first_processor, - machine_context_t *subcontext, - command_processor_t return_processor); int (*process_interruption)(dispatcher_context_t *dispatcher_context); }; @@ -83,16 +47,6 @@ static inline void SEND_RESPONSE(struct dispatcher_context_s *dc, dc->send_response(); } -// TODO: instead of exposing a method like send_response, it might be more efficient to expose the -// response buffer, -// so that one could use the buffer_write_* methods directly. -// On the other hand, buth the read_buffer and the write buffer would point to the same shared -// global space (part of G_io_apdu_buffer). Therefore, one would have to make sure that no -// read happens after writes happen, and it would probably be better if the dispatcher -// enforces this, by making it impossible to accidentally read the read_buffer after writes -// happened. One way could be have a function get_output_buffer() in the dispatcher context, -// that returns the output buffer but it first zeroes the read_buffer. - /** * Describes a command that can be processed by the dispatcher. */ @@ -104,25 +58,33 @@ typedef struct { /** * Dispatch APDU command received to the right handler. - * @param[in] command_descriptors + * @param[in] cmd_descriptors * Array of command descriptors. * @param[in] n_descriptors * Length of the command_descriptors array. + * @param[in] termination_cb + * If not NULL, a callback that will be executed once the command handler is done. * @param[in] cmd * Structured APDU command (CLA, INS, P1, P2, Lc, Command data). - * - * TODO: update docs with new params - * */ void apdu_dispatcher(command_descriptor_t const cmd_descriptors[], int n_descriptors, - machine_context_t *top_context, - size_t top_context_size, void (*termination_cb)(void), const command_t *cmd); // Debug utilities +#if !defined(DEBUG) || DEBUG == 0 +#define LOG_PROCESSOR(file, line, func) +#elif defined(HAVE_CCMD_PRINTF) && defined(HAVE_LOG_PROCESSOR) +#define LOG_PROCESSOR(dc, file, line, func) ccmd_printf(dc, "->%s", func) +#elif defined(HAVE_LOG_PROCESSOR) + +void print_dispatcher_info(const char *file, int line, const char *func); + +#define LOG_PROCESSOR(file, line, func) print_dispatcher_info(file, line, func) +#endif + #ifdef HAVE_CCMD_PRINTF extern int ccmd_printf(dispatcher_context_t *dc, const char *format, ... ); #define CCMD_PRINTF ccmd_printf @@ -130,21 +92,6 @@ extern int ccmd_printf(dispatcher_context_t *dc, const char *format, ... ); #define CCMD_PRINTF(...) #endif -#if defined(HAVE_CCMD_PRINTF) && defined(HAVE_CCMD_PRINTF) -#define LOG_PROCESSOR(dc, file, line, func) ccmd_printf(dc, "->%s", func) -#elif defined(HAVE_LOG_PROCESSOR) -// Print current filename, line number and function name. -// Indents according to the nesting depth for subprocessors. -void print_dispatcher_info(dispatcher_context_t *dc, - const char *file, - int line, - const char *func); - -#define LOG_PROCESSOR(dc, file, line, func) print_dispatcher_info(dc, file, line, func) -#else -#define LOG_PROCESSOR(dc, file, line, func) -#endif - #ifdef HAVE_APDU_LOG extern void log_apdu(const command_t* cmd); #define LOG_APDU(cmd) log_apdu(cmd) diff --git a/src/boilerplate/io.c b/src/boilerplate/io.c index 2660b1cf4..4d4ad277e 100644 --- a/src/boilerplate/io.c +++ b/src/boilerplate/io.c @@ -1,6 +1,6 @@ /***************************************************************************** * Ledger App Bitcoin. - * (c) 2021 Ledger SAS. + * (c) 2024 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,10 @@ #include "os.h" #include "ux.h" +#ifdef HAVE_NBGL +#include "nbgl_touch.h" +#include "nbgl_use_case.h" +#endif // HAVE_NBGL #include "util.h" #include "io.h" @@ -29,9 +33,7 @@ #include "common/write.h" #include "dispatcher.h" - -extern dispatcher_context_t G_dispatcher_context; -extern command_processor_t G_command_continuation; +#include "../swap/swap_globals.h" uint16_t G_output_len = 0; @@ -51,12 +53,14 @@ bool G_was_processing_screen_shown; uint16_t G_interruption_timeout_start_tick; uint16_t G_processing_timeout_start_tick; +#ifdef HAVE_BAGL UX_STEP_NOCB(ux_processing_flow_1_step, pn, {&C_icon_processing, "Processing..."}); UX_FLOW(ux_processing_flow, &ux_processing_flow_1_step); void io_seproxyhal_display(const bagl_element_t *element) { io_seproxyhal_display_default((bagl_element_t *) element); } +#endif // HAVE_BAGL void io_start_interruption_timeout() { G_interruption_timeout_start_tick = G_ticks; @@ -87,7 +91,9 @@ uint8_t io_event(uint8_t channel) { switch (G_io_seproxyhal_spi_buffer[0]) { case SEPROXYHAL_TAG_BUTTON_PUSH_EVENT: +#ifdef HAVE_BAGL UX_BUTTON_PUSH_EVENT(G_io_seproxyhal_spi_buffer); +#endif // HAVE_BAGL break; case SEPROXYHAL_TAG_STATUS_EVENT: if (G_io_apdu_media == IO_APDU_MEDIA_USB_HID && // @@ -98,8 +104,18 @@ uint8_t io_event(uint8_t channel) { /* fallthrough */ UTIL_FALLTHROUGH; case SEPROXYHAL_TAG_DISPLAY_PROCESSED_EVENT: +#ifdef HAVE_BAGL UX_DISPLAYED_EVENT({}); +#endif // HAVE_BAGL +#ifdef HAVE_NBGL + UX_DEFAULT_EVENT(); +#endif // HAVE_NBGL break; +#ifdef HAVE_NBGL + case SEPROXYHAL_TAG_FINGER_EVENT: + UX_FINGER_EVENT(G_io_seproxyhal_spi_buffer); + break; +#endif // HAVE_NBGL case SEPROXYHAL_TAG_TICKER_EVENT: ++G_ticks; @@ -107,8 +123,18 @@ uint8_t io_event(uint8_t channel) { G_ticks - G_processing_timeout_start_tick >= PROCESSING_TIMEOUT_TICKS) { io_clear_processing_timeout(); - G_was_processing_screen_shown = true; - ux_flow_init(0, ux_processing_flow, NULL); + if (!G_was_processing_screen_shown) { + G_was_processing_screen_shown = true; +#ifdef HAVE_BAGL + ux_flow_init(0, ux_processing_flow, NULL); +#endif // HAVE_BAGL +#ifdef HAVE_NBGL + + if (!G_swap_state.called_from_swap) { + nbgl_useCaseSpinner("Processing"); + } +#endif // HAVE_NBGL + } } if (G_is_timeout_active.interruption && diff --git a/src/boilerplate/io.h b/src/boilerplate/io.h index 634c97026..4a6a3ea6e 100644 --- a/src/boilerplate/io.h +++ b/src/boilerplate/io.h @@ -7,7 +7,9 @@ #include "common/buffer.h" +#ifdef HAVE_BAGL void io_seproxyhal_display(const bagl_element_t *element); +#endif // HAVE_BAGL /** * IO callback called when an interrupt based channel has received diff --git a/src/boilerplate/sw.h b/src/boilerplate/sw.h index de384eb45..a61516caa 100644 --- a/src/boilerplate/sw.h +++ b/src/boilerplate/sw.h @@ -36,6 +36,11 @@ */ #define SW_WRONG_DATA_LENGTH 0x6A87 +/** + * Status word for fail in Swap + */ +#define SW_FAIL_SWAP 0x6B00 + /** * Status word for unknown command with this INS. */ diff --git a/src/commands.h b/src/commands.h index 179632523..f52758663 100644 --- a/src/commands.h +++ b/src/commands.h @@ -1,19 +1,5 @@ #pragma once -#include "boilerplate/dispatcher.h" -#include "constants.h" -#include "handler/get_master_fingerprint.h" -#include "handler/get_extended_pubkey.h" -#include "handler/get_wallet_address.h" -#include "handler/register_wallet.h" -#include "handler/sign_psbt.h" -#include "handler/liquid_sign_pset.h" -#include "handler/sign_message.h" -#ifdef HAVE_LIQUID -#include "handler/liquid_get_master_blinding_key.h" -#include "handler/liquid_get_blinding_key.h" -#endif // HAVE_LIQUID - /** * Enumeration with expected INS of APDU commands. */ @@ -29,29 +15,3 @@ typedef enum { LIQUID_GET_BLINDING_KEY = 0xE3, #endif // HAVE_LIQUID } command_e; - -/** - * Union of the global state for all the commands. - */ -typedef union { - get_master_fingerprint_t get_master_fingerprint; - get_extended_pubkey_state_t get_extended_pubkey_state; - register_wallet_state_t register_wallet_state; - get_wallet_address_state_t get_wallet_address_state; -#ifdef HAVE_LIQUID - sign_pset_state_t sign_pset_state; -#else - sign_psbt_state_t sign_psbt_state; -#endif - sign_message_state_t sign_message_state; -#ifdef HAVE_LIQUID - liquid_get_master_blinding_key_t liquid_get_master_blinding_key; - liquid_get_blinding_key_t liquid_get_blinding_key; -#endif // HAVE_LIQUID -} command_state_t; - -/** - * Since only one command can execute at the same time, we share the same global space - * for the command state of all the commands. - **/ -extern command_state_t G_command_state; diff --git a/src/common/base58.c b/src/common/base58.c index a9c3eb2b9..369f27c57 100644 --- a/src/common/base58.c +++ b/src/common/base58.c @@ -1,5 +1,5 @@ /***************************************************************************** - * (c) 2021 Ledger SAS. + * (c) 2024 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/common/bip32.c b/src/common/bip32.c index 4fb783f5e..966b7bbf3 100644 --- a/src/common/bip32.c +++ b/src/common/bip32.c @@ -1,5 +1,5 @@ /***************************************************************************** - * (c) 2020 Ledger SAS. + * (c) 2024 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -141,58 +141,3 @@ bool is_pubkey_path_standard(const uint32_t *bip32_path, return true; } - -bool is_address_path_standard(const uint32_t *bip32_path, - size_t bip32_path_len, - uint32_t expected_purpose, - const uint32_t expected_coin_types[], - size_t expected_coin_types_len, - int expected_change) { - if (bip32_path_len != 5) { - return false; - } - - if (!is_pubkey_path_standard(bip32_path, - 3, - expected_purpose, - expected_coin_types, - expected_coin_types_len)) { - return false; - } - - uint32_t change = bip32_path[BIP44_CHANGE_OFFSET]; - if (change != 0 && change != 1) { - return false; - } - - if (expected_change == 0 || expected_change == 1) { - // change should match the expected one - if (change != (uint32_t) expected_change) { - return false; - } - } else if (expected_change != -1) { - return false; // wrong expected_change parameter - } - - uint32_t address_index = bip32_path[BIP44_ADDRESS_INDEX_OFFSET]; - if (address_index > - MAX_BIP44_ADDRESS_INDEX_RECOMMENDED) { // should not be hardened, and not too large - return false; - } - return true; -} - -int get_bip44_purpose(int address_type) { - switch (address_type) { - case ADDRESS_TYPE_LEGACY: - return 44; // legacy - case ADDRESS_TYPE_WIT: - return 84; // native segwit - case ADDRESS_TYPE_SH_WIT: - return 49; // wrapped segwit - case ADDRESS_TYPE_TR: - return 86; // taproot - default: - return -1; - } -} diff --git a/src/common/bip32.h b/src/common/bip32.h index 1213f46d9..cd6707e14 100644 --- a/src/common/bip32.h +++ b/src/common/bip32.h @@ -5,10 +5,10 @@ #include // bool /** - * Maximum length of BIP32 path allowed. - * Note: BIP32 allows up to 256 derivation steps - but generally only 5 are used. + * Maximum length of BIP32 path supported. + * Note: BIP32 allows up to 256 derivation steps - but only 5 or 6 are used in most cases. */ -#define MAX_BIP32_PATH_STEPS 6 +#define MAX_BIP32_PATH_STEPS 8 /** * Maximum length of a string representing a BIP32 derivation path. @@ -114,52 +114,3 @@ bool is_pubkey_path_standard(const uint32_t *bip32_path, uint32_t expected_purpose, const uint32_t expected_coin_types[], size_t expected_coin_types_len); - -/** - * Verifies if a given path is standard according to the BIP44 or derived standards for the - * derivation path for an address. - * - * Returns false if any of the following conditions is not satisfied by the given bip32_path: - * - the bip32_path has exactly 5 elements; - * - the first 3 steps of the derivation are standard according to is_pubkey_path_standard; - * - change and address_index are not hardened; - * - change is 0 and is_change = false, or change is 1 and is_change = true; - * - address_index is at most MAX_BIP44_ADDRESS_INDEX_RECOMMENDED. - * - * @param[in] bip32_path - * Pointer to 32-bit integer input buffer. - * @param[in] bip32_path_len - * Maximum number of BIP32 paths in the input buffer. - * @param[in] expected_purpose - * The purpose that should be in the derivation (e.g. 44 for BIP44). - * @param[in] expected_coin_types - * Pointer to an array with the coin types that are considered acceptable. The - * elements of the array should be given as simple numbers (not their hardened version); - * for example, the coin type for Bitcoin is 0. - * Ignored if expected_coin_types_len is 0; in that case, it is only checked - * that the coin_type is hardened, as expected in the standard. - * @param[in] expected_coin_types_len - * The length of expected_coin_types. - * @param[in] expected_change - * It must be -1, 0 or 1. If -1, only checks that the provided change step is 0 or 1. If 0 or 1, - * the change step must equal `expected_change`. - * - * @return true if the given address is standard, false otherwise. - * - */ -bool is_address_path_standard(const uint32_t *bip32_path, - size_t bip32_path_len, - uint32_t expected_purpose, - const uint32_t expected_coin_types[], - size_t expected_coin_types_len, - int expected_change); - -/** - * Returns the appropriate value of the "purpose" step in a supported BIP44-compliant derivation. - * - * @param[in] address_type - * One of ADDRESS_TYPE_LEGACY, ADDRESS_TYPE_WIT, ADDRESS_TYPE_SH_WIT, ADDRESS_TYPE_TR. - * - * @return the correct BIP44 purpose, or -1 if the `address_type` parameter is wrong. - */ -int get_bip44_purpose(int address_type); diff --git a/src/common/buffer.c b/src/common/buffer.c index 7ccc6c791..470b2e91a 100644 --- a/src/common/buffer.c +++ b/src/common/buffer.c @@ -1,5 +1,5 @@ /***************************************************************************** - * (c) 2021 Ledger SAS. + * (c) 2024 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -74,11 +74,15 @@ bool buffer_read_u8(buffer_t *buffer, uint8_t *value) { } bool buffer_peek(const buffer_t *buffer, uint8_t *value) { - if (!buffer_can_read(buffer, 1)) { + return buffer_peek_n(buffer, 0, value); +} + +bool buffer_peek_n(const buffer_t *buffer, size_t n, uint8_t *value) { + if (!buffer_can_read(buffer, n + 1)) { return false; } - *value = buffer->ptr[buffer->offset]; + *value = buffer->ptr[buffer->offset + n]; return true; } diff --git a/src/common/buffer.h b/src/common/buffer.h index ad931380e..1909e5884 100644 --- a/src/common/buffer.h +++ b/src/common/buffer.h @@ -118,7 +118,7 @@ bool buffer_read_u8(buffer_t *buffer, uint8_t *value); /** * Read 1 byte from buffer into uint8_t without advancing the current position in the buffer. - * Returns `true` on success, `false` if the buffer was empty; `value` is not change in case of + * Returns `true` on success, `false` if the buffer was empty; `value` is not changed in case of * failure. * * @param[in] buffer @@ -130,6 +130,22 @@ bool buffer_read_u8(buffer_t *buffer, uint8_t *value); */ bool buffer_peek(const buffer_t *buffer, uint8_t *value); +/** + * Read 1 byte at position `n` from buffer into uint8_t without advancing the current position in + * the buffer. Returns `true` on success, `false` if the buffer is not large enough; `value` is not + * changed in case of failure. + * + * @param[in] buffer + * Pointer to input buffer struct. + * @param[out] n + * Index of the byte to read, where the immediate next byte has index 0. + * @param[out] value + * Pointer to 8-bit unsigned integer read from buffer. + * + * @return true if success, false otherwise. + */ +bool buffer_peek_n(const buffer_t *buffer, size_t n, uint8_t *value); + /** * Read 2 bytes from buffer into uint16_t. * @@ -339,6 +355,17 @@ static inline buffer_t buffer_create(void *ptr, size_t size) { */ void *buffer_alloc(buffer_t *buffer, size_t size, bool aligned); +/** + * Checks if the current position in the buffer is aligned in memory to a 4-byte boundary. + * + * @param[in] buffer Pointer to a buffer struct. + * + * @return `true` if the current position in the buffer is aligned, `false` otherwise. + */ +static inline bool buffer_is_cur_aligned(const buffer_t *buffer) { + return (size_t) (buffer->ptr + buffer->offset) % 4 == 0; +} + /** * Saves a snapshot of the current position within the buffer. * diff --git a/src/common/format.c b/src/common/format.c index 61757e7c8..4c3e4e2f8 100644 --- a/src/common/format.c +++ b/src/common/format.c @@ -1,5 +1,5 @@ /***************************************************************************** - * (c) 2021 Ledger SAS. + * (c) 2024 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/common/merkle.c b/src/common/merkle.c index 3e5c5344a..65f5e2baf 100644 --- a/src/common/merkle.c +++ b/src/common/merkle.c @@ -1,6 +1,6 @@ /***************************************************************************** * Ledger App Bitcoin. - * (c) 2021 Ledger SAS. + * (c) 2024 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,53 +24,29 @@ #include "merkle.h" -#include "cx_ram.h" +#include "debug-helpers/debug.h" #include "ledger_assert.h" -void merkle_compute_element_hash(const uint8_t *in, size_t in_len, uint8_t out[static 32]) { - cx_sha256_t hash; - cx_sha256_init(&hash); - +void merkle_compute_element_hash(const uint8_t *in, + size_t in_len, + uint8_t out[static CX_SHA256_SIZE]) { // H(0x00 | in) - crypto_hash_update_u8(&hash.header, 0x00); - crypto_hash_update(&hash.header, in, in_len); - - crypto_hash_digest(&hash.header, out, 32); + uint8_t data = 0x00; + cx_iovec_t iovec[2] = {{.iov_base = &data, .iov_len = 1}, {.iov_base = in, .iov_len = in_len}}; + cx_sha256_hash_iovec(iovec, 2, out); } -// void merkle_combine_hashes(const uint8_t left[static 32], -// const uint8_t right[static 32], -// uint8_t out[static 32]) { -// PRINT_STACK_POINTER(); - -// cx_sha256_t hash; -// cx_sha256_init(&hash); - -// // H(0x01 | left | right) -// crypto_hash_update_u8(&hash.header, 0x01); -// crypto_hash_update(&hash.header, left, 32); -// crypto_hash_update(&hash.header, right, 32); - -// crypto_hash_digest(&hash.header, out, 32); -// } - -// implementation using the cxram section, in order to save ram -void merkle_combine_hashes(const uint8_t left[static 32], - const uint8_t right[static 32], - uint8_t out[static 32]) { +void merkle_combine_hashes(const uint8_t left[static CX_SHA256_SIZE], + const uint8_t right[static CX_SHA256_SIZE], + uint8_t out[static CX_SHA256_SIZE]) { PRINT_STACK_POINTER(); - cx_sha256_init_no_throw(&G_cx.sha256); - uint8_t prefix = 0x01; - LEDGER_ASSERT(cx_sha256_update(&G_cx.sha256, &prefix, 1) == CX_OK, "It never fails"); - - LEDGER_ASSERT(cx_sha256_update(&G_cx.sha256, left, 32) == CX_OK, "It never fails"); - LEDGER_ASSERT(cx_sha256_update(&G_cx.sha256, right, 32) == CX_OK, "It never fails"); - - cx_sha256_final(&G_cx.sha256, out); - explicit_bzero(&G_cx.sha256, sizeof(cx_sha256_t)); + cx_iovec_t iovec[3] = {{.iov_base = &prefix, .iov_len = 1}, + {.iov_base = left, .iov_len = CX_SHA256_SIZE}, + {.iov_base = right, .iov_len = CX_SHA256_SIZE}}; + cx_sha256_hash_iovec(iovec, 3, out); } // TODO: make this O(log n), or possibly O(1). Currently O(log^2 n). diff --git a/src/common/read.c b/src/common/read.c index 71e2594fe..6c467c1f6 100644 --- a/src/common/read.c +++ b/src/common/read.c @@ -1,5 +1,5 @@ /***************************************************************************** - * (c) 2021 Ledger SAS. + * (c) 2024 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/common/script.c b/src/common/script.c index 5bbc690b4..cd701fe16 100644 --- a/src/common/script.c +++ b/src/common/script.c @@ -1,5 +1,6 @@ #include #include +#include #include #include @@ -13,6 +14,21 @@ #include "../crypto.h" #endif +size_t get_push_script_size(uint32_t n) { + if (n <= 16) + return 1; // OP_0 and OP_1 .. OP_16 + else if (n < 0x80) + return 2; // 01 nn + else if (n < 0x8000) + return 3; // 02 nnnn + else if (n < 0x800000) + return 4; // 03 nnnnnn + else if (n < 0x80000000) + return 5; // 04 nnnnnnnn + else + return 6; // 05 nnnnnnnnnn +} + int get_script_type(const uint8_t script[], size_t script_len) { if (script_len == 25 && script[0] == OP_DUP && script[1] == OP_HASH160 && script[2] == 0x14 && script[23] == OP_EQUALVERIFY && script[24] == OP_CHECKSIG) { @@ -52,18 +68,14 @@ int get_script_type(const uint8_t script[], size_t script_len) { #ifndef SKIP_FOR_CMOCKA // TODO: add unit tests -int get_script_address(const uint8_t script[], - size_t script_len, - char *out, - size_t out_len) { +int get_script_address(const uint8_t script[], size_t script_len, char *out, size_t out_len) { int script_type = get_script_type(script, script_len); int addr_len; switch (script_type) { case SCRIPT_TYPE_P2PKH: case SCRIPT_TYPE_P2SH: { int offset = (script_type == SCRIPT_TYPE_P2PKH) ? 3 : 2; - int ver = (script_type == SCRIPT_TYPE_P2PKH) ? COIN_P2PKH_VERSION - : COIN_P2SH_VERSION; + int ver = (script_type == SCRIPT_TYPE_P2PKH) ? COIN_P2PKH_VERSION : COIN_P2SH_VERSION; addr_len = base58_encode_address(script + offset, ver, out, out_len - 1); if (addr_len < 0) { return -1; @@ -84,11 +96,8 @@ int get_script_address(const uint8_t script[], return -1; } - int ret = segwit_addr_encode(out, - COIN_NATIVE_SEGWIT_PREFIX, - version, - script + 2, - prog_len); + int ret = + segwit_addr_encode(out, COIN_NATIVE_SEGWIT_PREFIX, version, script + 2, prog_len); if (ret != 1) { return -1; // should never happen @@ -119,63 +128,99 @@ int format_opscript_script(const uint8_t script[], return -1; } - strlcpy(out, "OP_RETURN ", MAX_OPRETURN_OUTPUT_DESC_SIZE); + if (script_len > 83) { + // a script that is more than 83 bytes violates the "max 80 bytes total data" rule + // (+ 3 bytes of opcodes) and is therefore not standard in Bitcoin Core. + return -1; + } + + strncpy(out, "OP_RETURN ", MAX_OPRETURN_OUTPUT_DESC_SIZE); int out_ctr = 10; - uint8_t opcode = script[1]; // the push opcode - if (opcode > OP_16 || opcode == OP_RESERVED || opcode == OP_PUSHDATA2 || - opcode == OP_PUSHDATA4) { - return -1; // unsupported + // If the length of the script is 1 (just "OP_RETURN"), then it's not standard per bitcoin-core. + // However, signing such outputs is part of BIP-0322, and there's no danger in allowing them. + + if (script_len == 1) { + out[out_ctr - 1] = '\0'; // remove extra space + return out_ctr; } - int hex_offset = 1; - size_t hex_length = - 0; // if non-zero, `hex_length` bytes starting from script[hex_offset] must be hex-encoded - - if (opcode == OP_0) { - if (script_len != 1 + 1) return -1; - out[out_ctr++] = '0'; - } else if (opcode >= 1 && opcode <= 75) { - hex_offset += 1; - hex_length = opcode; - - if (script_len != 1 + 1 + hex_length) return -1; - } else if (opcode == OP_PUSHDATA1) { - // OP_RETURN OP_PUSHDATA1 - hex_offset += 2; - hex_length = script[2]; - - if (script_len != 1 + 1 + 1 + hex_length || hex_length > 80) return -1; - } else if (opcode == OP_1NEGATE) { - if (script_len != 1 + 1) return -1; - - out[out_ctr++] = '-'; - out[out_ctr++] = '1'; - } else if (opcode >= OP_1 && opcode <= OP_16) { - if (script_len != 1 + 1) return -1; - - // encode OP_1 to OP_16 as a decimal number - uint8_t num = opcode - 0x50; - if (num >= 10) { - out[out_ctr++] = '0' + (num / 10); + size_t offset = 1; // start after OP_RETURN + int num_pushes = 0; + const char hex[] = "0123456789abcdef"; + + while (offset < script_len && num_pushes < 5) { + uint8_t opcode = script[offset++]; + size_t hex_length = 0; // Data length to process + + if (opcode > OP_16 || opcode == OP_RESERVED || opcode == OP_PUSHDATA2 || + opcode == OP_PUSHDATA4) { + return -1; // unsupported + } + + if (opcode == OP_0) { + out[out_ctr++] = '0'; + } else if (opcode >= 1 && opcode <= 75) { + // opcodes between 1 and 75 indicate a data push of the corresponding length + hex_length = opcode; + } else if (opcode == OP_PUSHDATA1) { + // the next byte is the length + if (offset >= script_len) { + return -1; // out of bounds for length byte + } + hex_length = script[offset++]; + if (hex_length <= 75) { + return -1; // non-standard, should have used the minimal push opcode + } + } else if (opcode == OP_1NEGATE) { + out[out_ctr++] = '-'; + out[out_ctr++] = '1'; + } else if (opcode >= OP_1 && opcode <= OP_16) { + uint8_t num = opcode - 0x50; + // num is a number between 1 and 16 (included) + if (num >= 10) { + out[out_ctr++] = '1'; + num -= 10; + } + out[out_ctr++] = '0' + num; + } else { + // any other opcode is invalid or unsupported + return -1; } - out[out_ctr++] = '0' + (num % 10); - } else { - return -1; // can never happen - } - if (hex_length > 0) { - const char hex[] = "0123456789abcdef"; + if (offset + hex_length > script_len) { + // overflow, not enough bytes to read in the script + return -1; + } + + if (hex_length == 1) { + if (script[offset] == 0x81 || script[offset] <= 16) { + // non-standard, it should use OP_1NEGATE, or one of OP_0, ..., OP_16 + return -1; + } + } - out[out_ctr++] = '0'; - out[out_ctr++] = 'x'; - for (unsigned int i = 0; i < hex_length; i++) { - uint8_t data = script[hex_offset + i]; - out[out_ctr++] = hex[data / 16]; - out[out_ctr++] = hex[data % 16]; + if (hex_length > 0) { + out[out_ctr++] = '0'; + out[out_ctr++] = 'x'; + for (unsigned int i = 0; i < hex_length; i++) { + uint8_t data = script[offset + i]; + out[out_ctr++] = hex[data / 16]; + out[out_ctr++] = hex[data % 16]; + } + offset += hex_length; } + + num_pushes++; + out[out_ctr++] = ' '; } - out[out_ctr++] = '\0'; + if (offset < script_len) { + // if there are still more opcodes left, we do not support this script + // (for example: more than 5 push opcodes) + return -1; + } + + out[out_ctr - 1] = '\0'; return out_ctr; -} \ No newline at end of file +} diff --git a/src/common/script.h b/src/common/script.h index b443a761d..f0fa6e48f 100644 --- a/src/common/script.h +++ b/src/common/script.h @@ -126,8 +126,10 @@ enum opcodetype { // expansion OP_NOP1 = 0xb0, OP_CHECKLOCKTIMEVERIFY = 0xb1, + OP_CLTV = OP_CHECKLOCKTIMEVERIFY, OP_NOP2 = OP_CHECKLOCKTIMEVERIFY, OP_CHECKSEQUENCEVERIFY = 0xb2, + OP_CSV = OP_CHECKSEQUENCEVERIFY, OP_NOP3 = OP_CHECKSEQUENCEVERIFY, OP_NOP4 = 0xb3, OP_NOP5 = 0xb4, @@ -168,6 +170,11 @@ static inline bool is_opreturn_burn(const uint8_t script[], size_t script_len) { return script_len == 1 && script[0] == OP_RETURN; } +/** + * Returns the size in bytes of the minimal push opcode for , where n a uint32_t. + */ +size_t get_push_script_size(uint32_t n); + /** * Returns a constant of type `script_type_e` indicating the type of known script type with an * address, or -1 for any invalid script, or valid script without an address. @@ -192,33 +199,40 @@ int get_script_type(const uint8_t script[], size_t script_len); * not have an associated address (e.g. OP_RETURN), or the resulting address is too long to fit in * out. */ -int get_script_address(const uint8_t script[], - size_t script_len, - char *out, - size_t out_len); +int get_script_address(const uint8_t script[], size_t script_len, char *out, size_t out_len); #endif -// the longest OP_RETURN description "OP_RETURN 0x" followed by 160 hexadecimal characters -#define MAX_OPRETURN_OUTPUT_DESC_SIZE (12 + 80 * 2 + 1) +// the longest OP_RETURN description is upper bounded by: +// - 9 bytes for "OP_RETURN" +// - 5 times 3 for the " 0x" +// - up to 2 * 80 = 160 hexadecimal bytes +// - the termination null character +#define MAX_OPRETURN_OUTPUT_DESC_SIZE (9 + 5 * 3 + 2 * 80 + 1) /** * Formats a valid OP_RETURN script for user verification. The resulting string is "OP_RETURN - * ", where is written according to the rules below. Only scripts with a single push - * opcode are supported, and OP_PUSHDATA2 and OP_PUSHDATA4 are not supported. OP_1NEGATE is + * ", where is written according to the rules below. Only scripts with up to 5 push + * opcodes are supported, and OP_PUSHDATA2 and OP_PUSHDATA4 are not supported. OP_1NEGATE is * represented as "-1", and OP_0, OP_1, ..., OP_16 are represented in decimal ("0", "1", ..., "16"). * For other push opcodes, the data is represented in hexadecimal, two characters per byte, with the * "0x" prefix. * + * As a best-effort measure, this function returns an error if the transaction is non-standard + * according to the default rules of Bitcoin Core (maximum 80 bytes of data, only push + * instructions). Such transactions, even if valid, would not easily be relayed in the default + * mempool. + * An exception is an output script with a single OP_RETURN is accepted despite being non-standard, + * as such an output is used in BIP-0322. + * * The string is written onto `out` and is 0-terminated. Its length is returned. * * @param script the script to parse and format. * @param script_len the length of the script. - * @param out the output array, that must be at least MAX_OPRETURN_OUTPUT_DESC_SIZE bytes long. The - * longest possible string is "OP_RETURN 0x" followed by 160 hexadecimal characters, plus the - * terminating null character, for a total of 173 characters. + * @param out the output array, that must be at least MAX_OPRETURN_OUTPUT_DESC_SIZE bytes long. * @return The length of the string written into `out` (including the terminating 0) on success; -1 - * on error. + * on error, or if such an output would make the transaction be non-standard per the default relay + * rules of Bitcoin Core. */ int format_opscript_script(const uint8_t script[], size_t script_len, diff --git a/src/common/varint.c b/src/common/varint.c index 29fc660be..943b5e70b 100644 --- a/src/common/varint.c +++ b/src/common/varint.c @@ -1,5 +1,5 @@ /***************************************************************************** - * (c) 2021 Ledger SAS. + * (c) 2024 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/common/wallet.c b/src/common/wallet.c index 2f09494b1..ca45358f1 100644 --- a/src/common/wallet.c +++ b/src/common/wallet.c @@ -1,108 +1,66 @@ #include #include #include -#include +#include "../common/base58.h" #include "../common/bip32.h" #include "../common/buffer.h" +#include "../common/script.h" #include "../common/segwit_addr.h" #include "../common/wallet.h" -#include "../liquid/liquid.h" + +#include "../cxram_stash.h" #include "../boilerplate/sw.h" -#include "../crypto.h" -#include "base58.h" -#include "util.h" -#include "read.h" +#include "../debug-helpers/debug.h" -#ifdef SKIP_FOR_CMOCKA +#ifndef SKIP_FOR_CMOCKA +#include "../crypto.h" +#else // disable problematic macros when compiling unit tests with CMOCKA #define PRINTF(...) #define PIC(x) (x) -#endif +#endif // SKIP_FOR_CMOCKA -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wcomment" -// The compiler doesn't like /** inside a block comment, so we disable this warning temporarily. - -/* -Currently supported policies for singlesig: - -- pkh(key/**) where `key` follows `BIP44` (legacy) -- wpkh(key/**) where `key` follows `BIP 84` (native segwit) -- sh(wpkh(key/**)) where `key` follows `BIP 49` (nested segwit) -- tr(key/**) where `key` follows `BIP 86` (single-key p2tr) - -Currently supported wallet policies for multisig: - - LEGACY - sh(multi(...))) - sh(sortedmulti(...))) - - NATIVE SEGWIT - wsh(multi(...)) - wsh(sortedmulti(...)) - - WRAPPED SEGWIT - sh(wsh(multi(...))) - sh(wsh(sortedmulti(...))) -*/ - -#pragma GCC diagnostic pop - -// TODO: add unit tests to this module - -/// Bits specifying used characters -typedef enum { - // BASIC CATEGORIES ///////////////////////////////////////////// - /// Numbers 0...9 - CHARSET_NUM = 1 << 0, - /// Lowercase latin letters a...f - CHARSET_ALPHA_AF_LOW = 1 << 1, - /// Lowercase latin letters g...z - CHARSET_ALPHA_GZ_LOW = 1 << 2, - /// Uppercase latin letters a...f - CHARSET_ALPHA_AF_UP = 1 << 3, - /// Uppercase latin letters g...z - CHARSET_ALPHA_GZ_UP = 1 << 4, - /// Brackets () - CHARSET_BRACKETS = 1 << 5, - /// Other characters - CHARSET_OTHER = 1 << 6, - - // COMBINATIONS OT TRAITS /////////////////////////////////////// - /// Lowercase hexadecimal numbers - CHARSET_HEX_LOW = (CHARSET_NUM|CHARSET_ALPHA_AF_LOW), - /// Lowercase latin letters - CHARSET_ALPHA_LOW = (CHARSET_ALPHA_AF_LOW|CHARSET_ALPHA_GZ_LOW), - /// Uppercase latin letters - CHARSET_ALPHA_UP = (CHARSET_ALPHA_AF_UP|CHARSET_ALPHA_GZ_UP), - /// Latin letters of any case - CHARSET_ALPHA = (CHARSET_ALPHA_LOW|CHARSET_ALPHA_UP), - /// Alphanumeric: numbers and latin letters of any case - CHARSET_ALPHANUM = (CHARSET_NUM|CHARSET_ALPHA), - /// Alphanumeric: numbers and lowercase latin letters - CHARSET_ALPHANUM_LOW = (CHARSET_NUM|CHARSET_ALPHA_LOW), - /// Alphanumeric: numbers and uppercase latin letters - CHARSET_ALPHANUM_UP = (CHARSET_NUM|CHARSET_ALPHA_UP), -} charset_t; - -/// Token descriptor typedef struct { - PolicyNodeType type; ///< Node type - const char *name; ///< Token name + PolicyNodeType type; + const char *name; } token_descriptor_t; -/// Table of token descriptors static const token_descriptor_t KNOWN_TOKENS[] = { {.type = TOKEN_SH, .name = "sh"}, {.type = TOKEN_WSH, .name = "wsh"}, {.type = TOKEN_PKH, .name = "pkh"}, {.type = TOKEN_WPKH, .name = "wpkh"}, {.type = TOKEN_MULTI, .name = "multi"}, + {.type = TOKEN_MULTI_A, .name = "multi_a"}, {.type = TOKEN_SORTEDMULTI, .name = "sortedmulti"}, + {.type = TOKEN_SORTEDMULTI_A, .name = "sortedmulti_a"}, {.type = TOKEN_TR, .name = "tr"}, + + // miniscript tokens (except wrappers) + {.type = TOKEN_0, .name = "0"}, + {.type = TOKEN_1, .name = "1"}, + {.type = TOKEN_PK, .name = "pk"}, + {.type = TOKEN_PK_K, .name = "pk_k"}, + {.type = TOKEN_PK_H, .name = "pk_h"}, + {.type = TOKEN_OLDER, .name = "older"}, + {.type = TOKEN_AFTER, .name = "after"}, + {.type = TOKEN_SHA256, .name = "sha256"}, + {.type = TOKEN_HASH256, .name = "hash256"}, + {.type = TOKEN_RIPEMD160, .name = "ripemd160"}, + {.type = TOKEN_HASH160, .name = "hash160"}, + {.type = TOKEN_ANDOR, .name = "andor"}, + {.type = TOKEN_AND_V, .name = "and_v"}, + {.type = TOKEN_AND_B, .name = "and_b"}, + {.type = TOKEN_AND_N, .name = "and_n"}, + {.type = TOKEN_OR_B, .name = "or_b"}, + {.type = TOKEN_OR_C, .name = "or_c"}, + {.type = TOKEN_OR_D, .name = "or_d"}, + {.type = TOKEN_OR_I, .name = "or_i"}, + {.type = TOKEN_THRESH, .name = "thresh"}, + #ifdef HAVE_LIQUID {.type = TOKEN_CT, .name = "ct"}, {.type = TOKEN_SH, .name = "elsh"}, @@ -111,83 +69,116 @@ static const token_descriptor_t KNOWN_TOKENS[] = { {.type = TOKEN_WPKH, .name = "elwpkh"}, {.type = TOKEN_MULTI, .name = "elmulti"}, {.type = TOKEN_SORTEDMULTI, .name = "elsortedmulti"}, + {.type = TOKEN_SORTEDMULTI_A, .name = "elsortedmulti_a"}, {.type = TOKEN_TR, .name = "eltr"}, #endif }; -/// Maximum length of blinding key returned token prefix in characters -#define TOKEN_PREFIX_LEN 7 +// lookup table for characters that represent a valid miniscript wrapper fragment +const bool is_valid_miniscript_wrapper[] = { + 1, // "a" + 0, // "b" + 1, // "c" + 1, // "d" + 0, // "e" + 0, // "f" + 0, // "g" + 0, // "h" + 0, // "i" + 1, // "j" + 0, // "k" + 1, // "l" + 0, // "m" + 1, // "n" + 0, // "o" + 0, // "p" + 0, // "q" + 0, // "r" + 1, // "s" + 1, // "t" + 1, // "u" + 1, // "v" + 0, // "w" + 0, // "x" + 0, // "y" + 0, // "z" +}; -/// Token scan result -typedef struct { - /// Detected token length - size_t token_len; - /// Charset detected, a combination of `charset_t` flags - uint32_t charset; - /// Token prefix string, null terminated. Containins up to TOKEN_PREFIX_LEN first - /// characters of the token. - char prefix[TOKEN_PREFIX_LEN + 1]; -} token_scan_result_t; +/** + * Length of the longest token in the policy wallet descriptor language (not including the + * terminating \0 byte). + */ #ifdef HAVE_LIQUID /** * Length of the longest token in the policy wallet descriptor language (not including the * terminating \0 byte). */ -#define MAX_TOKEN_LENGTH (sizeof("elsortedmulti") - 1) +#define MAX_TOKEN_LENGTH (sizeof("elsortedmulti_a") - 1) #else /** * Length of the longest token in the policy wallet descriptor language (not including the * terminating \0 byte). */ -#define MAX_TOKEN_LENGTH (sizeof("sortedmulti") - 1) +#define MAX_TOKEN_LENGTH (sizeof("sortedmulti_a") - 1) #endif -int read_policy_map_wallet(buffer_t *buffer, policy_map_wallet_header_t *header) { - if (!buffer_read_u8(buffer, &header->type)) { - return -1; +int read_wallet_policy_header(buffer_t *buffer, policy_map_wallet_header_t *header) { + if (!buffer_read_u8(buffer, &header->version)) { + return WITH_ERROR(-1, "Invalid wallet policy header"); } - if (header->type != WALLET_TYPE_POLICY_MAP) { - return -2; + if (header->version != WALLET_POLICY_VERSION_V1 && + header->version != WALLET_POLICY_VERSION_V2) { + return WITH_ERROR(-1, "Invalid wallet policy header"); } if (!buffer_read_u8(buffer, &header->name_len)) { - return -3; + return WITH_ERROR(-1, "Invalid wallet policy header"); } if (header->name_len > MAX_WALLET_NAME_LENGTH) { - return -4; + return WITH_ERROR(-1, "Invalid wallet policy header"); } if (!buffer_read_bytes(buffer, (uint8_t *) header->name, header->name_len)) { - return -5; + return WITH_ERROR(-1, "Invalid wallet policy header"); } header->name[header->name_len] = '\0'; - uint64_t policy_map_len; - if (!buffer_read_varint(buffer, &policy_map_len) || - policy_map_len > MAX_POLICY_MAP_STR_LENGTH) { - return -6; + uint64_t descriptor_template_len; + if (!buffer_read_varint(buffer, &descriptor_template_len)) { + return WITH_ERROR(-1, "Invalid wallet policy header"); } - header->policy_map_len = (uint16_t) policy_map_len; + header->descriptor_template_len = (uint16_t) descriptor_template_len; - if (header->policy_map_len > MAX_POLICY_MAP_STR_LENGTH) { - return -7; - } + if (header->version == WALLET_POLICY_VERSION_V1) { + if (descriptor_template_len > MAX_DESCRIPTOR_TEMPLATE_LENGTH_V1) { + return WITH_ERROR(-1, "Invalid wallet policy header: descriptor template too long"); + } + if (!buffer_read_bytes(buffer, + (uint8_t *) header->descriptor_template, + header->descriptor_template_len)) { + return WITH_ERROR(-1, "Invalid wallet policy header"); + } + } else { // WALLET_POLICY_VERSION_V2 + if (descriptor_template_len > MAX_DESCRIPTOR_TEMPLATE_LENGTH_V2) { + return WITH_ERROR(-1, "Invalid wallet policy header: descriptor template too long"); + } - if (!buffer_read_bytes(buffer, (uint8_t *) header->policy_map, header->policy_map_len)) { - return -8; + if (!buffer_read_bytes(buffer, (uint8_t *) header->descriptor_template_sha256, 32)) { + return WITH_ERROR(-1, "Invalid wallet policy header"); + } } uint64_t n_keys; if (!buffer_read_varint(buffer, &n_keys) || n_keys > 252) { - return -9; + return WITH_ERROR(-1, "Invalid wallet policy header"); } header->n_keys = (uint16_t) n_keys; if (!buffer_read_bytes(buffer, (uint8_t *) header->keys_info_merkle_root, 32)) { - return -10; + return WITH_ERROR(-1, "Invalid wallet policy header"); } return 0; @@ -253,32 +244,33 @@ static uint8_t lowercase_hex_to_int(char c) { return (uint8_t) (is_digit(c) ? c - '0' : c - 'a' + 10); } -// TODO: remove -#if 0 -/** - * Read up to out_len characters from buffer, until either: - * - the buffer is exhausted - * - out_len characters are read - * - the next character is _not_ in [a-zAZ] - */ -static size_t read_word(buffer_t *buffer, char *out, size_t out_len) { - size_t word_len = 0; - uint8_t c; - while (word_len < out_len && buffer_peek(buffer, &c) && is_alpha((char) c)) { - out[word_len++] = (char) c; - buffer_seek_cur(buffer, 1); +static bool consume_character(buffer_t *in_buf, char expected) { + char c; + if (!buffer_peek(in_buf, (uint8_t *) &c) || c != expected) { + return false; } - return word_len; + buffer_seek_cur(in_buf, 1); + return true; +} + +static bool consume_characters(buffer_t *in_buf, const char *expected, size_t len) { + char c; + for (size_t i = 0; i < len; i++) { + if (!buffer_peek_n(in_buf, i, (uint8_t *) &c) || c != expected[i]) { + return false; + } + } + buffer_seek_cur(in_buf, len); + return true; } -#endif // 0 /** - * Reads a single tag from the buffer. + * Reads a single token from the buffer. * * Read up to out_len characters from buffer, until either: - * - the buffer is exhausted - * - out_len characters are read - * - the next character is _not_ in [a-zAZ], [0-9] + * - the buffer is exhausted + * - out_len characters are read + * - the next character is _not_ in [a-zAZ0-9_] * * @param[in,out] buffer * Input buffer. @@ -289,144 +281,43 @@ static size_t read_word(buffer_t *buffer, char *out, size_t out_len) { * * @return length of outputted tag in bytes. */ -static size_t read_tag(buffer_t *buffer, char *out, size_t out_len) { - size_t tag_len = 0; - uint8_t c; - while (tag_len < out_len && buffer_peek(buffer, &c) && is_alphanumeric((char) c)) { - out[tag_len++] = (char) c; +static size_t read_token(buffer_t *buffer, char *out, size_t out_len) { + size_t word_len = 0; + char c; + while (word_len < out_len && buffer_peek(buffer, (uint8_t *) &c) && + (is_alphanumeric(c) || c == '_')) { + out[word_len++] = c; buffer_seek_cur(buffer, 1); } - return tag_len; -} - -/** - * Reads lowercase hexadecimal data bytes from buffer. - * - * @param[in,out] buffer - * Input buffer. - * @param[out] out - * Pointer to output buffer. It is the responsibility of the caller to make sure that the output - * buffer is not smaller than the value in variable pointed by `out_len`. - * @param[in] out_len - * Maximum number of bytes to read, must be no greater than INT_MAX. - * @param[in] terminator - * Terminating character used to stop reading input data. Set to -1 if this feature is not needed. - * - * @return length of outputted data in bytes or -1 in case of error - */ -static int read_lowercase_hex_data(buffer_t *buffer, - uint8_t *out, - size_t out_len, - int terminator) { - size_t out_idx = 0; - uint8_t c; - char num[2]; - - if (out_len > INT_MAX) { - return -1; - } - - while (buffer_peek(buffer, &c) && c != terminator && out_idx < out_len) { - if (!buffer_read_bytes(buffer, (uint8_t *) num, 2)) { - return -1; - } - if (!is_lowercase_hex(num[0]) || !is_lowercase_hex(num[1])) { - return -1; - } - out[out_idx++] = lowercase_hex_to_int(num[0]) << 4 | lowercase_hex_to_int(num[1]); - } - return (int)out_idx; + return word_len; } /** - * Reads a single tag from the buffer and finds corresponding type of policy node. - * - * @param[in,out] buffer - * Input buffer. - * - * @return type of policy node or -1 if not found. + * Read the next word from buffer (or up to MAX_TOKEN_LENGTH characters), and + * returns the index of this word in KNOWN_TOKENS if found; TOKEN_INVALID otherwise. */ -static int parse_token(buffer_t *buffer) { +static PolicyNodeType parse_token(buffer_t *buffer) { char word[MAX_TOKEN_LENGTH + 1]; - size_t word_len = read_tag(buffer, word, MAX_TOKEN_LENGTH); + size_t word_len = read_token(buffer, word, MAX_TOKEN_LENGTH); word[word_len] = '\0'; for (unsigned int i = 0; i < sizeof(KNOWN_TOKENS) / sizeof(KNOWN_TOKENS[0]); i++) { if (strncmp((const char *) PIC(KNOWN_TOKENS[i].name), word, MAX_TOKEN_LENGTH) == 0) { - return (int) PIC(KNOWN_TOKENS[i].type); - } - } - - return -1; -} - -/** - * Scans a single token in the buffer while keeping its position. - * - * @param[in] buffer - * Input buffer with a token to scan, position is preserved. - * @param[in] separator - * A separator character on which scan process is stopped. - * @param[out] result - * Pointer to structure instance receiving scan results. - * - * @return true if sucessfull, false in case of error - */ -static bool scan_token(buffer_t *buffer, - char separator, - token_scan_result_t *result) { - buffer_snapshot_t in_buf_snapshot = buffer_snapshot(buffer); - memset(result, 0, sizeof(token_scan_result_t)); - - char c; - while (buffer_peek(buffer, (uint8_t*)&c) && c != separator) { - if (++result->token_len < sizeof(result->prefix)) { - result->prefix[result->token_len - 1] = c; - } - - if (c >= '0' && c <= '9') { - result->charset |= CHARSET_NUM; - } else if (c >= 'a' && c <= 'f') { - result->charset |= CHARSET_ALPHA_AF_LOW; - } else if (c >= 'g' && c <= 'z') { - result->charset |= CHARSET_ALPHA_GZ_LOW; - } else if (c >= 'A' && c <= 'F') { - result->charset |= CHARSET_ALPHA_AF_UP; - } else if (c >= 'G' && c <= 'Z') { - result->charset |= CHARSET_ALPHA_GZ_UP; - } else if (c == '(' || c == ')') { - result->charset |= CHARSET_BRACKETS; - } else { - result->charset |= CHARSET_OTHER; + return ((const token_descriptor_t *) PIC(&KNOWN_TOKENS[i]))->type; } - buffer_seek_cur(buffer, 1); } - - buffer_restore(buffer, in_buf_snapshot); - return !!result->token_len; + return TOKEN_INVALID; } /** - * Parses an unsigned decimal number from buffer. - * - * Parsing stops when either the buffer ends, the next character is not a number, or the number is - * already too big. Leading zeros are not allowed. - * - * @param[in,out] buffer - * Input buffer. - * @param[out] out - * Pointer to variable receiving resulting integer. - * - * @return 0 on success, -1 on failure. + * Parses an unsigned decimal number from buffer, stopping when either the buffer ends, the next + * character is not a number, or the number is already too big. Leading zeros are not allowed. + * Returns a valid 0 on success, -1 on failure. + * The read number is saved into *out on success. */ -static int parse_unsigned_decimal(buffer_t *buffer, size_t *out) { +static int parse_unsigned_decimal(buffer_t *buffer, uint32_t *out) { uint8_t c; - if (!buffer_peek(buffer, &c) || !is_digit(c)) { - PRINTF("parse_unsigned_decimal: couldn't read byte, or not a digit: %d\n", c); - return -1; - } - size_t result = 0; int digits_read = 0; while (buffer_peek(buffer, &c) && is_digit(c)) { @@ -434,14 +325,11 @@ static int parse_unsigned_decimal(buffer_t *buffer, size_t *out) { uint8_t next_digit = c - '0'; if (digits_read == 2 && result == 0) { - // if the first digit was a 0, than it should be the only digit + // if the first digit was a 0, then it should be the only digit return -1; } if (10 * result + next_digit < result) { - PRINTF("parse_unsigned_decimal: overflow. Current: %d. Next digit: %d\n", - result, - next_digit); return -1; // overflow, integer too large } @@ -459,90 +347,57 @@ static int parse_unsigned_decimal(buffer_t *buffer, size_t *out) { } /** - * Reads a derivation step from buffer. - * - * Reads a derivation step expressed in decimal, with the symbol ' to mark if hardened (h is not - * supported). - * - * @param[in,out] buffer - * Input buffer. - * @param[out] out - * Output derivation step. - * - * @return 0 on success, -1 on error. + * Reads exactly 2*n lowercase hecadecimal characters, storing them in exactly n bytes in `out` (1 + * byte every two hex characters); returns -1 if any character is not hexadecimal, or if less than + * 2*n characters can be read. */ +static int buffer_read_hex_hash(buffer_t *buffer, uint8_t *out, size_t n) { + if (!buffer_can_read(buffer, 2 * n)) { + return -1; + } + + for (unsigned int i = 0; i < n; i++) { + uint8_t c1, c2; + buffer_read_u8(buffer, &c1); + buffer_read_u8(buffer, &c2); + + if (!is_lowercase_hex(c1) || !is_lowercase_hex(c2)) { + return -1; + } + + out[i] = 16 * lowercase_hex_to_int((char) c1) + lowercase_hex_to_int((char) c2); + } + return 0; +} + +// Reads a derivation step expressed in decimal, with the symbol ' to mark if hardened (h is not +// supported) Returns 0 on success, -1 on error. static int buffer_read_derivation_step(buffer_t *buffer, uint32_t *out) { - size_t der_step; + uint32_t der_step; if (parse_unsigned_decimal(buffer, &der_step) == -1 || der_step >= BIP32_FIRST_HARDENED_CHILD) { PRINTF("Failed reading derivation step\n"); return -1; } - *out = (uint32_t)der_step; + *out = der_step; // Check if hardened - uint8_t c; - if (buffer_peek(buffer, &c) && c == '\'') { + if (consume_character(buffer, '\'')) { *out |= BIP32_FIRST_HARDENED_CHILD; - buffer_seek_cur(buffer, 1); // skip the ' character } return 0; } -/// Wildcard signature -typedef struct { - /// Wildcard numeric identifier. - policy_map_key_wildcard_id_t id; - /// Wildcard represented as a text string. - const char *str; -} wildcard_signature_t; - -/// Table of wildcard signatures -const wildcard_signature_t WILDCARD_SIGNATURES[] = { - { .id = KEY_WILDCARD_NONE, .str = "" }, - { .id = KEY_WILDCARD_ANY, .str = "/**" }, - { .id = KEY_WILDCARD_STANDARD_CHAINS, .str = "/<0;1>/*" }, - { .id = KEY_WILDCARD_EXTERNAL_CHAIN, .str = "/0/*" }, - { .id = KEY_WILDCARD_INTERNAL_CHAIN, .str = "/1/*" } -}; -/// Number of records in the table of wildcard signatures -static const size_t N_WILDCARD_SIGNATURES = - sizeof(WILDCARD_SIGNATURES) / sizeof(WILDCARD_SIGNATURES[0]); - -/** - * Finds the numeric wildcard identifier corresponding to a given wildcard string. - * - * @param[in] wildcard_str - * Wildcard represented as a text string. - * - * @return a non-negative wildcard identifier or -1 if not found - */ -static int find_wildcard(const char *wildcard_str) { - for (size_t i = 0; i < N_WILDCARD_SIGNATURES; ++i) { - const char *curr_str = (const char *) PIC(WILDCARD_SIGNATURES[i].str); - if (0 == strncmp(curr_str, wildcard_str, MAX_POLICY_MAP_KEY_WILDCARD_LEN)) { - return (int) PIC(WILDCARD_SIGNATURES[i].id); - } +int parse_policy_map_key_info(buffer_t *buffer, policy_map_key_info_t *out, int version) { + if (version != WALLET_POLICY_VERSION_V1 && version != WALLET_POLICY_VERSION_V2) { + return WITH_ERROR(-1, "Invalid version"); } - return -1; -} -// TODO: we are currently enforcing that the master key fingerprint (if present) is in lowercase -// hexadecimal digits, -// and that the symbol for "hardened derivation" is "'". -// This implies descriptors should be normalized on the client side. -int parse_policy_map_key_info(buffer_t *buffer, policy_map_key_info_t *out) { memset(out, 0, sizeof(policy_map_key_info_t)); - uint8_t c; - if (!buffer_peek(buffer, &c)) { - return -1; - } - - if (c == '[') { + if (consume_character(buffer, '[')) { out->has_key_origin = 1; - buffer_seek_cur(buffer, 1); // skip 1 byte if (!buffer_can_read(buffer, 9)) { // at least 8 bytes + (closing parenthesis or '\') return -1; } @@ -558,10 +413,9 @@ int parse_policy_map_key_info(buffer_t *buffer, policy_map_key_info_t *out) { // read all the given derivation steps out->master_key_derivation_len = 0; - while (buffer_peek(buffer, &c) && c == '/') { - buffer_seek_cur(buffer, 1); // skip the '/' character + while (consume_character(buffer, '/')) { if (out->master_key_derivation_len > MAX_BIP32_PATH_STEPS) { - return -1; + return WITH_ERROR(-1, "Too many derivation steps"); } if (buffer_read_derivation_step( @@ -574,711 +428,2479 @@ int parse_policy_map_key_info(buffer_t *buffer, policy_map_key_info_t *out) { } // the next character must be ']' - if (!buffer_read_u8(buffer, &c) || c != ']') { - return -1; + if (!consume_character(buffer, ']')) { + return WITH_ERROR(-1, "Expected ']'"); } } // consume the rest of the buffer into the pubkey, except possibly the final "/**" unsigned int ext_pubkey_len = 0; + char ext_pubkey_str[MAX_SERIALIZED_PUBKEY_LENGTH]; + uint8_t c; while (ext_pubkey_len < MAX_SERIALIZED_PUBKEY_LENGTH && buffer_peek(buffer, &c) && is_alphanumeric(c)) { - out->ext_pubkey[ext_pubkey_len] = c; + ext_pubkey_str[ext_pubkey_len] = c; ++ext_pubkey_len; buffer_seek_cur(buffer, 1); } - out->ext_pubkey[ext_pubkey_len] = '\0'; + ext_pubkey_str[ext_pubkey_len] = '\0'; - // Read the final wildcard part of the public key. There should be no more characters remaining. - char wildcard_str[MAX_POLICY_MAP_KEY_WILDCARD_LEN + 1]; - size_t wildcard_len = buffer_remaining(buffer); - if (wildcard_len >= sizeof(wildcard_str)) { - return -1; - } - if (wildcard_len && !buffer_read_bytes(buffer, (uint8_t*)wildcard_str, wildcard_len) ) { - return -1; + if (ext_pubkey_len < 111 || ext_pubkey_len > 112) { + // loose sanity check; pubkeys in bitcoin can be 111 or 112 characters long + return WITH_ERROR(-1, "Invalid extended pubkey length"); } - wildcard_str[wildcard_len] = '\0'; - // Find the numeric wildcard identifier in the table - int wildcard_id = find_wildcard(wildcard_str); - if (wildcard_id < 0 || wildcard_id > UINT8_MAX) { - return -1; + serialized_extended_pubkey_check_t ext_pubkey_check; + if (base58_decode(ext_pubkey_str, + ext_pubkey_len, + (uint8_t *) &ext_pubkey_check, + sizeof(ext_pubkey_check)) < 0) { + return WITH_ERROR(-1, "Error decoding serialized extended pubkey"); } - out->wildcard_id = (uint8_t)wildcard_id; - return 0; -} - -bool validate_policy_map_extended_pubkey(const policy_map_key_info_t *key_info, - uint32_t bip32_pubkey_version) { - int status = validate_serialized_extended_pubkey( - key_info->ext_pubkey, - key_info->master_key_derivation, - key_info->has_key_origin ? key_info->master_key_derivation_len : -1, - bip32_pubkey_version - ); - - return EXTENDED_PUBKEY_VALID == status; -} - -/** - * Parses key index from the input buffer. - * - * @param[in,out] in_buf - * Input buffer. - * - * @return a non-negative integer key index or -1 if error. - */ -static size_t parse_key_index(buffer_t *in_buf) { - char c; - if (!buffer_read_u8(in_buf, (uint8_t *) &c) || c != '@') { - return -1; - } + // verify checksum + uint8_t checksum[4]; + crypto_get_checksum((uint8_t *) &ext_pubkey_check.serialized_extended_pubkey, + sizeof(ext_pubkey_check.serialized_extended_pubkey), + checksum); - size_t k; - if (parse_unsigned_decimal(in_buf, &k) == -1) { - return -1; + if (memcmp(&ext_pubkey_check.checksum, checksum, sizeof(checksum)) != 0) { + return WITH_ERROR(-1, "Wrong extended pubkey checksum"); } - return k; -} -/// Flag: current context is within sh() -#define CONTEXT_WITHIN_SH (1U << 0) -/// Flag: current context is within ct() -#define CONTEXT_WITHIN_CT (1U << 1) + out->ext_pubkey = ext_pubkey_check.serialized_extended_pubkey; -/// Script parser context -typedef struct { - /// Input buffer with a script expression to parse. - buffer_t *in_buf; - /// Output buffer which receives a tree-like structure of nodes - buffer_t *out_buf; - /// Version prefix to use for the public key. - uint32_t bip32_pubkey_version; - /// Version prefix to use for the private key. - uint32_t bip32_privkey_version; -} script_parser_ctx_t; + // either the string terminates now, or it has a final "/**" suffix for the wildcard. + if (!buffer_can_read(buffer, 1)) { + // no wildcard; this is an error in V1 + if (version == WALLET_POLICY_VERSION_V1) { + return WITH_ERROR( + -1, + "Invalid key expression; keys in V1 wallet policies must end with /**."); + } -#ifdef HAVE_LIQUID + return 0; + } -/** - * Prototype for function implementing blinding key parser. - * - * This function should parse a BLINDING_KEY expression enclosed in ct() tag as specified in - * ELIP: 150 and ELIP 151 from the `in_buf` buffer, aallocating the nodes and variables in - * `out_buf`. - * - * @param[in,out] ctx - * Script parser context. - * @param[in] token_len - * Size of key token in characters. - * - * @return 0 if successful, a negative number on error. - */ -typedef int (*blinding_key_parser_t)(script_parser_ctx_t *ctx, size_t token_len); + // in V2, key expressions terminate with the key (no wildcards) + if (version == WALLET_POLICY_VERSION_V2) { + return WITH_ERROR(-1, "Invalid key expression; must terminate after the key/xpub"); + } -/** - * Parses slip77() expression within BLINDING_KEY context. - * - * Corresponds to `blinding_key_parser_t` type, refer to its description for more details. - * - * @param[in,out] ctx - * Script parser context. - * @param[in] token_len - * Size of key token in characters. - * - * @return 0 if successful, a negative number on error. - */ -static int parse_ct_slip77(script_parser_ctx_t *ctx, size_t token_len) { - UNUSED(token_len); + out->has_wildcard = 1; - policy_node_blinding_privkey_t *node = (policy_node_blinding_privkey_t *) - buffer_alloc(ctx->out_buf, sizeof(policy_node_blinding_privkey_t), true); - if (NULL == node) { + // Only the final "/**" suffix should be left + uint8_t wildcard[3]; + // Make sure that the buffer is indeed exhausted + if (!buffer_read_bytes(buffer, wildcard, 3) // should be able to read 3 characters + || buffer_can_read(buffer, 1) // but nothing more + || wildcard[0] != '/' // suffix should be exactly "/**" + || wildcard[1] != '*' || wildcard[2] != '*') { return -1; } - node->type = TOKEN_SLIP77; - - bool ok = buffer_skip_data(ctx->in_buf, (const uint8_t*) "slip77(", sizeof("slip77(") - 1); - ok = ok && sizeof(node->privkey) == - read_lowercase_hex_data(ctx->in_buf, node->privkey, sizeof(node->privkey), ')'); - ok = ok && buffer_skip_data(ctx->in_buf, (const uint8_t*) ")", 1); - return ok ? 0 : -1; + return 0; } -/** - * Parses hexadecimal public key expression within BLINDING_KEY context. - * - * Corresponds to `blinding_key_parser_t` type, refer to its description for more details. - * - * @param[in,out] ctx - * Script parser context. - * @param[in] token_len - * Size of key token in characters. - * - * @return 0 if successful, a negative number on error. - */ -static int parse_ct_hex_pubkey(script_parser_ctx_t *ctx, size_t token_len) { - UNUSED(token_len); - - policy_node_blinding_pubkey_t *node = (policy_node_blinding_pubkey_t *) - buffer_alloc(ctx->out_buf, sizeof(policy_node_blinding_pubkey_t), true); - if (NULL == node) { - return -1; +static int parse_placeholder(buffer_t *in_buf, int version, policy_node_key_placeholder_t *out) { + char c; + if (!buffer_read_u8(in_buf, (uint8_t *) &c) || c != '@') { + return WITH_ERROR(-1, "Expected key placeholder starting with '@'"); } - node->type = TOKEN_HEX_PUB; - bool ok = sizeof(node->pubkey) == - read_lowercase_hex_data(ctx->in_buf, node->pubkey, sizeof(node->pubkey), ','); - - return ok && (0x02 == node->pubkey[0] || 0x03 == node->pubkey[0]) ? 0 : -1; -} + uint32_t k; + if (parse_unsigned_decimal(in_buf, &k) == -1 || k > INT16_MAX) { + return WITH_ERROR(-1, "The key index in a placeholder must be at most 32767"); + } -/** - * Parses hexadecimal private key expression within BLINDING_KEY context. - * - * Corresponds to `blinding_key_parser_t` type, refer to its description for more details. - * - * @param[in,out] ctx - * Script parser context. - * @param[in] token_len - * Size of key token in characters. - * - * @return 0 if successful, a negative number on error. - */ -static int parse_ct_hex_privkey(script_parser_ctx_t *ctx, size_t token_len) { - UNUSED(token_len); + out->key_index = (int16_t) k; + + if (version == WALLET_POLICY_VERSION_V1) { + // default values for compatibility with the new code + out->num_first = 0; + out->num_second = 1; + } else if (version == WALLET_POLICY_VERSION_V2) { + // the key expression must be followed by / and **, or /<0;1>/* + uint8_t next_character; + if (!consume_character(in_buf, '/') // the next character is "/" + || !buffer_peek(in_buf, &next_character) // we must be able to read the next character + || !(next_character == '*' || next_character == '<') // and it must be '*' or '<' + ) { + return WITH_ERROR(-1, "Expected /** or //* in key placeholder"); + } - policy_node_blinding_privkey_t *node = (policy_node_blinding_privkey_t *) - buffer_alloc(ctx->out_buf, sizeof(policy_node_blinding_privkey_t), true); - if (NULL == node) { - return -1; - } - node->type = TOKEN_HEX_PRV; + if (next_character == '*') { + if (!consume_characters(in_buf, "**", 2)) { + return WITH_ERROR(-1, "Expected /** or //* in key placeholder"); + } + out->num_first = 0; + out->num_second = 1; + } else if (next_character == '<') { + buffer_seek_cur(in_buf, 1); // skip "<" + if (parse_unsigned_decimal(in_buf, &out->num_first) == -1 || + out->num_first > 0x80000000u) { + return WITH_ERROR( + -1, + "Expected /** or //* in key placeholder, with unhardened M and N"); + } - bool ok = sizeof(node->privkey) == - read_lowercase_hex_data(ctx->in_buf, node->privkey, sizeof(node->privkey), ','); + if (!consume_character(in_buf, ';')) { + return WITH_ERROR(-1, "Expected /** or //* in key placeholder"); + } - return ok ? 0 : -1; -} + if (parse_unsigned_decimal(in_buf, &out->num_second) == -1 || + out->num_second > 0x80000000u) { + return WITH_ERROR( + -1, + "Expected /** or //* in key placeholder, with unhardened M and N"); + } -/** - * Parses xpub expression within BLINDING_KEY context. - * - * Corresponds to `blinding_key_parser_t` type, refer to its description for more details. - * - * @param[in,out] ctx - * Script parser context. - * @param[in] token_len - * Size of key token in characters. - * - * @return 0 if successful, a negative number on error. - */ -static int parse_ct_xpub(script_parser_ctx_t *ctx, size_t token_len) { - serialized_extended_pubkey_check_t pubkey_check; - const serialized_extended_pubkey_t *pubkey = &pubkey_check.serialized_extended_pubkey; + if (out->num_first == out->num_second) { + return WITH_ERROR(-1, "M and N must be different in /*"); + } - if (!buffer_can_read(ctx->in_buf, token_len)) { - return -1; - } - if (sizeof(pubkey_check) != base58_decode((char*) buffer_get_cur(ctx->in_buf), - token_len, - (uint8_t *) &pubkey_check, - sizeof(pubkey_check))) { - return -1; + if (!consume_characters(in_buf, ">/*", 3)) { + return WITH_ERROR(-1, "Expected /** or //* in key placeholder"); + } + } + } else { + return WITH_ERROR(-1, "Invalid version number"); } - uint8_t checksum[4]; - crypto_get_checksum((uint8_t *)&pubkey_check.serialized_extended_pubkey, - sizeof(pubkey_check.serialized_extended_pubkey), - checksum); - if (!memeq(checksum, pubkey_check.checksum, sizeof(checksum))) { - return -1; - } - if (read_u32_be(pubkey->version, 0) != ctx->bip32_pubkey_version || - !(0x02 == pubkey->compressed_pubkey[0] || 0x03 == pubkey->compressed_pubkey[0])) { - return -1; - } + return 0; +} - policy_node_blinding_pubkey_t *node = (policy_node_blinding_pubkey_t *) - buffer_alloc(ctx->out_buf, sizeof(policy_node_blinding_pubkey_t), true); - if (NULL == node) { - return -1; - } - node->type = TOKEN_XPUB; - memcpy(node->pubkey, pubkey->compressed_pubkey, sizeof(node->pubkey)); +#define CONTEXT_WITHIN_SH 1 // parsing a direct child of SH +#define CONTEXT_WITHIN_WSH 2 // parsing a direct child of WSH +#define CONTEXT_WITHIN_TR 4 // parsing a child of TR (direct or not) + +// forward declaration +static int parse_script(buffer_t *in_buf, + buffer_t *out_buf, + int version, + size_t depth, + unsigned int context_flags); + +static int parse_child_scripts(buffer_t *in_buf, + buffer_t *out_buf, + size_t depth, + rptr_policy_node_t child_scripts[], + int n_children, + int version, + unsigned int context_flags) { + // the internal scripts are recursively parsed (if successful) in the current location + // of the output buffer + + for (int child_index = 0; child_index < n_children; child_index++) { + buffer_alloc(out_buf, 0, true); // ensure alignment of current pointer + i_policy_node(&child_scripts[child_index], buffer_get_cur(out_buf)); + + if (0 > parse_script(in_buf, out_buf, version, depth + 1, context_flags)) { + // failed while parsing internal script + return -1; + } - return buffer_seek_cur(ctx->in_buf, token_len) ? 0 : -1; + // the next character must be a comma (except after the last child) + if (child_index <= n_children - 2 && !consume_character(in_buf, ',')) { + return WITH_ERROR(-1, "Expected ','"); + } + } + return 0; } +// forward-declaration, since it's used in parse_script +static int parse_tree(buffer_t *in_buf, buffer_t *out_buf, int version, size_t depth); + /** - * Parses xprv expression within BLINDING_KEY context. - * - * Corresponds to `blinding_key_parser_t` type, refer to its description for more details. - * - * @param[in,out] ctx - * Script parser context. - * @param[in] token_len - * Size of key token in characters. - * - * @return 0 if successful, a negative number on error. + * Parses a SCRIPT expression from the in_buf buffer, allocating the nodes and variables in out_buf. + * The initial pointer in out_buf will contain the root node of the SCRIPT. */ -static int parse_ct_xprv(script_parser_ctx_t *ctx, size_t token_len) { - serialized_extended_privkey_check_t privkey_check; - const serialized_extended_privkey_t *privkey = &privkey_check.serialized_extended_privkey; +static int parse_script(buffer_t *in_buf, + buffer_t *out_buf, + int version, + size_t depth, + unsigned int context_flags) { + int n_wrappers = 0; + + policy_node_t *outermost_node = (policy_node_t *) buffer_get_cur(out_buf); + policy_node_with_script_t *inner_wrapper = NULL; // pointer to the inner wrapper, if any + + // miniscript-related parsing only within top-level WSH, or within tr + bool parse_as_miniscript = + ((context_flags & CONTEXT_WITHIN_WSH) != 0 && (context_flags & CONTEXT_WITHIN_SH) == 0) || + (context_flags & CONTEXT_WITHIN_TR) != 0; + + if (parse_as_miniscript) { + // look ahead to finds out if the buffer starts with alphanumeric digits that could be + // wrappers, followed by a colon + char c; + bool can_read; + while (true) { + can_read = buffer_peek_n(in_buf, n_wrappers, (uint8_t *) &c); + if (can_read && 'a' <= c && c <= 'z' && is_valid_miniscript_wrapper[c - 'a']) { + ++n_wrappers; + } else { + break; + } + } - if (!buffer_can_read(ctx->in_buf, token_len)) { - return -1; - } - if (sizeof(privkey_check) != base58_decode((char*) buffer_get_cur(ctx->in_buf), - token_len, - (uint8_t *) &privkey_check, - sizeof(privkey_check))) { - return -1; - } + if (can_read && c == ':') { + // parse wrappers + for (int i = 0; i < n_wrappers; i++) { + policy_node_with_script_t *node = + (policy_node_with_script_t *) buffer_alloc(out_buf, + sizeof(policy_node_with_script_t), + true); + if (node == NULL) { + return WITH_ERROR(-1, "Out of memory"); + } + buffer_read_u8(in_buf, (uint8_t *) &c); + switch (c) { + case 'a': + node->base.type = TOKEN_A; + break; + case 's': + node->base.type = TOKEN_S; + break; + case 'c': + node->base.type = TOKEN_C; + break; + case 't': + node->base.type = TOKEN_T; + break; + case 'd': + node->base.type = TOKEN_D; + break; + case 'v': + node->base.type = TOKEN_V; + break; + case 'j': + node->base.type = TOKEN_J; + break; + case 'n': + node->base.type = TOKEN_N; + break; + case 'l': + node->base.type = TOKEN_L; + break; + case 'u': + node->base.type = TOKEN_U; + break; + default: + PRINTF("Unexpected wrapper: %c\n", c); + return -1; + } - uint8_t checksum[4]; - crypto_get_checksum((uint8_t *)&privkey_check.serialized_extended_privkey, - sizeof(privkey_check.serialized_extended_privkey), - checksum); - if (!memeq(checksum, privkey_check.checksum, sizeof(checksum))) { - return -1; + if (inner_wrapper != NULL) { + i_policy_node(&inner_wrapper->script, node); + } + inner_wrapper = node; + } + buffer_seek_cur(in_buf, 1); // skip ":" + } else { + n_wrappers = 0; // it was not a wrapper + } } - if (read_u32_be(privkey->version, 0) != ctx->bip32_privkey_version || - 0 != privkey->null_prefix) { + + // We read the token, we'll do different parsing based on what token we find + PolicyNodeType token = parse_token(in_buf); + if (token == TOKEN_INVALID) { + PRINTF("Failed to parse token"); return -1; } - policy_node_blinding_privkey_t *node = (policy_node_blinding_privkey_t *) - buffer_alloc(ctx->out_buf, sizeof(policy_node_blinding_privkey_t), true); - if (NULL == node) { - return -1; + if (context_flags & CONTEXT_WITHIN_SH) { + // whitelist of allowed tokens within sh; in particular, no miniscript + switch (token) { + case TOKEN_PK: + case TOKEN_PKH: + case TOKEN_MULTI: + case TOKEN_SORTEDMULTI: + case TOKEN_WPKH: + case TOKEN_WSH: + break; + default: + return WITH_ERROR(-1, "Token not allowed within sh"); + } } - node->type = TOKEN_XPRV; - memcpy(node->privkey, privkey->privkey, sizeof(node->privkey)); - return buffer_seek_cur(ctx->in_buf, token_len) ? 0 : -1; -} + if ((context_flags & CONTEXT_WITHIN_SH) != 0 && (context_flags & CONTEXT_WITHIN_WSH) != 0 && + depth == 2) { + // whitelist of allowed tokens within sh(wsh()); only few simple wallet types are supported + switch (token) { + case TOKEN_PK: + case TOKEN_PKH: + case TOKEN_MULTI: + case TOKEN_SORTEDMULTI: + break; + default: + return WITH_ERROR(-1, "Token not allowed within sh(wsh())"); + } + } -/** - * Parses elip151 expression within BLINDING_KEY context. - * - * Corresponds to `blinding_key_parser_t` type, refer to its description for more details. - * - * @param[in,out] ctx - * Script parser context. - * @param[in] token_len - * Size of key token in characters. - * - * @return 0 if successful, a negative number on error. - */ -static int parse_ct_elip151(script_parser_ctx_t *ctx, size_t token_len) { - UNUSED(token_len); + // all tokens but '0' and '1' have opening and closing parentheses + bool has_parentheses = token != TOKEN_0 && token != TOKEN_1; - if (!buffer_skip_data(ctx->in_buf, (const uint8_t*) "elip151", sizeof("elip151") - 1)) { - return -1; + if (has_parentheses) { + // Opening '(' + if (!consume_character(in_buf, '(')) { + return WITH_ERROR(-1, "Expected '('"); + } } + policy_node_t *parsed_node; - policy_node_t *node = (policy_node_t *) - buffer_alloc(ctx->out_buf, sizeof(policy_node_t), true); + switch (token) { + case TOKEN_0: + case TOKEN_1: { + policy_node_constant_t *node = + (policy_node_constant_t *) buffer_alloc(out_buf, + sizeof(policy_node_constant_t), + true); + if (node == NULL) { + return WITH_ERROR(-1, "Out of memory"); + } - if (node) { - node->type = TOKEN_ELIP151; - node->node_data = NULL; - return 0; - } - return -1; -} + parsed_node = (policy_node_t *) node; + + node->base.type = token; + if (token == TOKEN_0) { + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = 1; + node->base.flags.miniscript_mod_o = 0; + node->base.flags.miniscript_mod_n = 0; + node->base.flags.miniscript_mod_d = 1; + node->base.flags.miniscript_mod_u = 1; + } else { + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = 1; + node->base.flags.miniscript_mod_o = 0; + node->base.flags.miniscript_mod_n = 0; + node->base.flags.miniscript_mod_d = 0; + node->base.flags.miniscript_mod_u = 1; + } -/// Blinding key signature -typedef struct { - size_t min_len; ///< Minimum allowed length - size_t max_len; ///< Maximum allowed length - uint32_t charset; ///< Allowed charset - blinding_key_parser_t parser; ///< Pinter to a function parsing a BLINDING_KEY expression. - char prefix[TOKEN_PREFIX_LEN + 1]; ///< Token prefix -} blinding_key_signature_t; - -/// Table of known blinding key signatures -static const blinding_key_signature_t BLINDING_KEY_SIGNATURES[] = { - { - .prefix = "slip77", - .min_len = 72, - .max_len = 72, - .charset = CHARSET_ALPHANUM_LOW|CHARSET_BRACKETS, - .parser = parse_ct_slip77 - }, - { - .prefix = "xpub", - .min_len = 111, - .max_len = 112, - .charset = CHARSET_ALPHANUM, - .parser = parse_ct_xpub - }, - { - .prefix = "xprv", - .min_len = 111, - .max_len = 112, - .charset = CHARSET_ALPHANUM, - .parser = parse_ct_xprv - }, - { - .prefix = "elip151", - .min_len = 7, - .max_len = 7, - .charset = CHARSET_ALPHANUM_LOW, - .parser = parse_ct_elip151 - }, - { - .prefix = "", - .min_len = 64, - .max_len = 64, - .charset = CHARSET_HEX_LOW, - .parser = parse_ct_hex_privkey - }, - { - .prefix = "", - .min_len = 66, - .max_len = 66, - .charset = CHARSET_HEX_LOW, - .parser = parse_ct_hex_pubkey - } -}; -/// Number of records in the table of known blinding key signatures -static const size_t N_BLINDING_KEY_SIGNATURES = - sizeof(BLINDING_KEY_SIGNATURES) / sizeof(BLINDING_KEY_SIGNATURES[0]); - -/** - * Looks through the table of blinding key signatures and returns corresponding - * parsing function. - * - * @param[in] scan_result - * Results of token scan used to find blinding key type by its signature. - * - * @return pointer to function parsing identified type of blinding key or NULL if not found. - */ -blinding_key_parser_t find_blinding_key_parser(const token_scan_result_t *scan_result) { - for (size_t i = 0; i < N_BLINDING_KEY_SIGNATURES; ++i) { - uint32_t expected_charset = (uint32_t) PIC(BLINDING_KEY_SIGNATURES[i].charset); - const char *expected_prefix = (const char *) PIC(BLINDING_KEY_SIGNATURES[i].prefix); - if (0 == (scan_result->charset & ~expected_charset) && - scan_result->token_len >= (size_t) PIC(BLINDING_KEY_SIGNATURES[i].min_len) && - scan_result->token_len <= (size_t) PIC(BLINDING_KEY_SIGNATURES[i].max_len) && - 0 == strncmp(expected_prefix, - scan_result->prefix, - strnlen(expected_prefix, TOKEN_PREFIX_LEN))) { - return (blinding_key_parser_t) PIC(BLINDING_KEY_SIGNATURES[i].parser); + break; } - } - - return NULL; -} - -/** - * Internal function parsing blinding key script inside ct() descriptor. - * - * Parses a BLINDING_KEY expression as specified in ELIP: 150 from the in_buf - * buffer, allocating the node and variables in out_buf.The initial pointer in - * out_buf will contain the node of the BLINDING_KEY. - * - * @param[in,out] ctx - * Script parser context. - * - * @return 0 if successful, a negative number on error. - */ -static int parse_blinding_key_script(script_parser_ctx_t *ctx) { - token_scan_result_t scan_result; - if (!scan_token(ctx->in_buf, ',', &scan_result)) { - return -1; - } - - blinding_key_parser_t key_parser = find_blinding_key_parser(&scan_result); - if (key_parser) { - return (*key_parser)(ctx, scan_result.token_len); - } - return -1; -} - -#endif // HAVE_LIQUID - -/** - * Internal function recursively parsing a script expression from the input buffer. - * - * Parses a SCRIPT expression from the in_buf buffer, allocating the nodes and variables in out_buf. - * The initial pointer in out_buf will contain the root node of the SCRIPT. - * - * @param[in,out] ctx - * Script parser context. - * @param[in] depth - * Current depth of nested structure. - * - * @return 0 if successful, a negative number on error. - */ -static int parse_script(script_parser_ctx_t *ctx, size_t depth, unsigned int context_flags) { - // We read the token, we'll do different parsing based on what token we find - int token = parse_token(ctx->in_buf); - char c; - unsigned int inner_context_flags = context_flags; - - // Opening '(' - if (!buffer_read_u8(ctx->in_buf, (uint8_t *) &c) && c != '(') { - return -1; - } - - switch (token) { case TOKEN_SH: case TOKEN_WSH: { if (token == TOKEN_SH) { - if (depth != 0 && (context_flags & CONTEXT_WITHIN_CT) == 0) { - return -2; // can only be top-level or inside ct + if (depth != 0) { + return WITH_ERROR(-1, "sh can only be a top-level function"); } - } else if (token == TOKEN_WSH) { - if (depth != 0 && - (context_flags & (CONTEXT_WITHIN_SH|CONTEXT_WITHIN_CT)) == 0) { - return -3; // only top-level, inside sh or ct + if (depth != 0 && ((context_flags & CONTEXT_WITHIN_SH) == 0)) { + return WITH_ERROR(-1, "wsh can only be top-level or inside sh"); } } policy_node_with_script_t *node = - (policy_node_with_script_t *) buffer_alloc(ctx->out_buf, + (policy_node_with_script_t *) buffer_alloc(out_buf, sizeof(policy_node_with_script_t), true); if (node == NULL) { - return -4; + return WITH_ERROR(-1, "Out of memory"); } - node->type = token; + parsed_node = (policy_node_t *) node; - if (token == TOKEN_SH) { - inner_context_flags |= CONTEXT_WITHIN_SH; - } + node->base.type = token; + + node->base.flags.is_miniscript = 0; + + unsigned int inner_context_flags = context_flags; + inner_context_flags |= (token == TOKEN_SH) ? CONTEXT_WITHIN_SH : CONTEXT_WITHIN_WSH; + + // the internal script is recursively parsed (if successful) in the current location + // of the output buffer + buffer_alloc(out_buf, 0, true); // ensure alignment of current pointer + i_policy_node(&node->script, buffer_get_cur(out_buf)); - // the internal script is recursively parsed (if successful) in the current location of - // the output buffer - int res2 = 0; - node->script = (policy_node_t *) buffer_get_cur_aligned(ctx->out_buf); - if (NULL == node->script || (res2 = parse_script(ctx, depth + 1, inner_context_flags)) < 0) { + if (0 > parse_script(in_buf, out_buf, version, depth + 1, inner_context_flags)) { // failed while parsing internal script - return res2 * 100 - 5; + return -1; } break; } - case TOKEN_PKH: - case TOKEN_WPKH: - case TOKEN_TR: // not currently supporting x-only keys - { - if (token == TOKEN_WPKH) { - if (depth != 0 && - (context_flags & (CONTEXT_WITHIN_SH|CONTEXT_WITHIN_CT)) == 0) { - return -6; // only top-level, inside sh or ct - } - } - policy_node_with_key_t *node = - (policy_node_with_key_t *) buffer_alloc(ctx->out_buf, - sizeof(policy_node_with_key_t), - true); + case TOKEN_SHA256: + case TOKEN_HASH256: { + policy_node_with_hash_256_t *node = + (policy_node_with_hash_256_t *) buffer_alloc(out_buf, + sizeof(policy_node_with_hash_256_t), + true); if (node == NULL) { - return -7; + return WITH_ERROR(-1, "Out of memory"); } - node->type = token; + parsed_node = (policy_node_t *) node; - int key_index = parse_key_index(ctx->in_buf); - if (key_index == -1) { - return -8; + if (0 > buffer_read_hex_hash(in_buf, node->h, 32)) { + return WITH_ERROR(-1, "Failed to parse 32-byte hash image"); } - node->key_index = (size_t) key_index; + node->base.type = token; + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = 0; + node->base.flags.miniscript_mod_o = 1; + node->base.flags.miniscript_mod_n = 1; + node->base.flags.miniscript_mod_d = 1; + node->base.flags.miniscript_mod_u = 1; break; } - case TOKEN_MULTI: - case TOKEN_SORTEDMULTI: { - policy_node_multisig_t *node = - (policy_node_multisig_t *) buffer_alloc(ctx->out_buf, - sizeof(policy_node_multisig_t), - true); + case TOKEN_RIPEMD160: + case TOKEN_HASH160: { + policy_node_with_hash_160_t *node = + (policy_node_with_hash_160_t *) buffer_alloc(out_buf, + sizeof(policy_node_with_hash_160_t), + true); if (node == NULL) { - return -9; + return WITH_ERROR(-1, "Out of memory"); } - node->type = token; + parsed_node = (policy_node_t *) node; - if (parse_unsigned_decimal(ctx->in_buf, &node->k) == -1) { - PRINTF("Error parsing threshold\n"); - return -10; + if (0 > buffer_read_hex_hash(in_buf, node->h, 20)) { + return WITH_ERROR(-1, "Failed to parse 20-byte hash image"); } - // We allocate the array of key indices at the current position in the output buffer (on - // success) - node->key_indexes = (size_t *) buffer_get_cur_aligned(ctx->out_buf); - if (NULL == node->key_indexes) { - return -11; + node->base.type = token; + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = 0; + node->base.flags.miniscript_mod_o = 1; + node->base.flags.miniscript_mod_n = 1; + node->base.flags.miniscript_mod_d = 1; + node->base.flags.miniscript_mod_u = 1; + break; + } + + case TOKEN_ANDOR: { + policy_node_with_script3_t *node = + (policy_node_with_script3_t *) buffer_alloc(out_buf, + sizeof(policy_node_with_script3_t), + true); + if (node == NULL) { + return WITH_ERROR(-1, "Out of memory"); } + parsed_node = (policy_node_t *) node; - node->n = 0; - while (true) { - // If the next character is a ')', we exit and leave it in the buffer - if (buffer_peek(ctx->in_buf, (uint8_t *) &c) && c == ')') { - break; - } + node->base.type = token; - // otherwise, there must be a comma - if (!buffer_read_u8(ctx->in_buf, (uint8_t *) &c) || c != ',') { - PRINTF("Unexpected char: %c. Was expecting: ,\n", c); - return -12; - } + if (0 > parse_child_scripts(in_buf, + out_buf, + depth, + node->scripts, + 3, + version, + context_flags)) { + return -1; + } - int key_index = parse_key_index(ctx->in_buf); - if (key_index == -1) { - return -13; + for (int i = 0; i < 3; i++) { + if (!r_policy_node(&node->scripts[i])->flags.is_miniscript) { + return WITH_ERROR(-1, "children of andor must be miniscript"); } + } - size_t *key_index_out = (size_t *) buffer_alloc(ctx->out_buf, sizeof(size_t), true); - if (key_index_out == NULL) { - return -14; - } - *key_index_out = (size_t) key_index; + // andor(X, Y, Z) + // X is Bdu; Y and Z are both B, K, or V - ++node->n; + const policy_node_t *X = r_policy_node(&node->scripts[0]); + const policy_node_t *Y = r_policy_node(&node->scripts[1]); + const policy_node_t *Z = r_policy_node(&node->scripts[2]); + + if (X->flags.miniscript_type != MINISCRIPT_TYPE_B || !X->flags.miniscript_mod_d || + !X->flags.miniscript_mod_u) { + return WITH_ERROR(-1, "invalid type"); } - // check integrity of k and n - if (!(1 <= node->k && node->k <= node->n && node->n <= MAX_POLICY_MAP_COSIGNERS)) { - return -15; + if (Y->flags.miniscript_type != Z->flags.miniscript_type) { + return WITH_ERROR(-1, "invalid type"); + } + + if (Y->flags.miniscript_type == MINISCRIPT_TYPE_W) { // must be one of the other three + return WITH_ERROR(-1, "invalid type"); } + // clang-format off + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = Y->flags.miniscript_type; + node->base.flags.miniscript_mod_z = + X->flags.miniscript_mod_z & Y->flags.miniscript_mod_z & Z->flags.miniscript_mod_z; + node->base.flags.miniscript_mod_o = + (X->flags.miniscript_mod_z & Y->flags.miniscript_mod_o & Z->flags.miniscript_mod_o) + | + (X->flags.miniscript_mod_o & Y->flags.miniscript_mod_z & Z->flags.miniscript_mod_z); + node->base.flags.miniscript_mod_n = 0; + node->base.flags.miniscript_mod_d = Z->flags.miniscript_mod_d; + node->base.flags.miniscript_mod_u = Y->flags.miniscript_mod_u & Z->flags.miniscript_mod_u; + // clang-format on + break; } -#ifdef HAVE_LIQUID - case TOKEN_CT: { - if (depth != 0) { - return -16; // can only be top-level + case TOKEN_AND_V: { + policy_node_with_script2_t *node = + (policy_node_with_script2_t *) buffer_alloc(out_buf, + sizeof(policy_node_with_script2_t), + true); + if (node == NULL) { + return WITH_ERROR(-1, "Out of memory"); } + parsed_node = (policy_node_t *) node; - policy_node_ct_t *node = - (policy_node_ct_t *) buffer_alloc(ctx->out_buf, sizeof(policy_node_ct_t), true); + node->base.type = token; + + if (0 > parse_child_scripts(in_buf, + out_buf, + depth, + node->scripts, + 2, + version, + context_flags)) { + return -1; + } + + if (!r_policy_node(&node->scripts[0])->flags.is_miniscript || + !r_policy_node(&node->scripts[1])->flags.is_miniscript) { + return WITH_ERROR(-1, "children of and_v must be miniscript"); + } + + const policy_node_t *X = r_policy_node(&node->scripts[0]); + const policy_node_t *Y = r_policy_node(&node->scripts[1]); + + // and_v(X,Y) + // X is V; Y is B, K, or V + + if (X->flags.miniscript_type != MINISCRIPT_TYPE_V) { + return WITH_ERROR(-1, "invalid type"); + } + + if (Y->flags.miniscript_type == MINISCRIPT_TYPE_W) { // must be one of the other three + return WITH_ERROR(-1, "invalid type"); + } + + // clang-format off + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = Y->flags.miniscript_type; + node->base.flags.miniscript_mod_z = X->flags.miniscript_mod_z & Y->flags.miniscript_mod_z; + node->base.flags.miniscript_mod_o = + (X->flags.miniscript_mod_z & Y->flags.miniscript_mod_o) + | + (X->flags.miniscript_mod_o & Y->flags.miniscript_mod_z); + node->base.flags.miniscript_mod_n = + X->flags.miniscript_mod_n + | + (X->flags.miniscript_mod_z & Y->flags.miniscript_mod_n); + node->base.flags.miniscript_mod_d = 0; + node->base.flags.miniscript_mod_u = Y->flags.miniscript_mod_u; + // clang-format on + + break; + } + case TOKEN_AND_B: { + policy_node_with_script2_t *node = + (policy_node_with_script2_t *) buffer_alloc(out_buf, + sizeof(policy_node_with_script2_t), + true); if (node == NULL) { - return -17; + return WITH_ERROR(-1, "Out of memory"); } - node->type = token; + parsed_node = (policy_node_t *) node; - inner_context_flags |= CONTEXT_WITHIN_CT; + node->base.type = token; - // the master blinding key script is recursively parsed (if successful) in the current - // location of the output buffer - node->mbk_script = (policy_node_t *) buffer_get_cur_aligned(ctx->out_buf); - if (NULL == node->mbk_script || 0 > parse_blinding_key_script(ctx)) { - // failed while parsing internal script - return -18; + if (0 > parse_child_scripts(in_buf, + out_buf, + depth, + node->scripts, + 2, + version, + context_flags)) { + return -1; } - // scripts must be separated by comma - if (!buffer_read_u8(ctx->in_buf, (uint8_t *) &c) || c != ',') { - PRINTF("Unexpected char: %c. Was expecting: ,\n", c); - return -19; + if (!r_policy_node(&node->scripts[0])->flags.is_miniscript || + !r_policy_node(&node->scripts[1])->flags.is_miniscript) { + return WITH_ERROR(-1, "children of and_b must be miniscript"); } - // the internal script is recursively parsed (if successful) in the current location of - // the output buffer - int res2 = 0; - node->script = (policy_node_t *) buffer_get_cur_aligned(ctx->out_buf); - if (NULL == node->script || (res2 = parse_script(ctx, depth + 1, inner_context_flags)) < 0) { - // failed while parsing internal script - return res2 * 100 - 20; + const policy_node_t *X = r_policy_node(&node->scripts[0]); + const policy_node_t *Y = r_policy_node(&node->scripts[1]); + + // and_b(X,Y) + // X is B; Y is W + + if (X->flags.miniscript_type != MINISCRIPT_TYPE_B || + Y->flags.miniscript_type != MINISCRIPT_TYPE_W) { + return WITH_ERROR(-1, "invalid type"); } + + // clang-format off + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = X->flags.miniscript_mod_z & Y->flags.miniscript_mod_z; + node->base.flags.miniscript_mod_o = + (X->flags.miniscript_mod_z & Y->flags.miniscript_mod_o) + | + (X->flags.miniscript_mod_o & Y->flags.miniscript_mod_z); + node->base.flags.miniscript_mod_n = + X->flags.miniscript_mod_n + | + (X->flags.miniscript_mod_z & Y->flags.miniscript_mod_n); + node->base.flags.miniscript_mod_d = X->flags.miniscript_mod_d & Y->flags.miniscript_mod_d; + node->base.flags.miniscript_mod_u = 1; + // clang-format on + break; } -#endif // HAVE_LIQUID - default: - PRINTF("Unknown token\n"); - return -21; - } + case TOKEN_AND_N: { + policy_node_with_script2_t *node = + (policy_node_with_script2_t *) buffer_alloc(out_buf, + sizeof(policy_node_with_script2_t), + true); + if (node == NULL) { + return WITH_ERROR(-1, "Out of memory"); + } + parsed_node = (policy_node_t *) node; - if (!buffer_read_u8(ctx->in_buf, (uint8_t *) &c) && c != ')') { - return -22; - } + node->base.type = token; - if (depth == 0 && buffer_can_read(ctx->in_buf, 1)) { - PRINTF("Input buffer too long\n"); - return -23; - } + if (0 > parse_child_scripts(in_buf, + out_buf, + depth, + node->scripts, + 2, + version, + context_flags)) { + return -1; + } - return 0; -} + if (!r_policy_node(&node->scripts[0])->flags.is_miniscript || + !r_policy_node(&node->scripts[1])->flags.is_miniscript) { + return WITH_ERROR(-1, "children of and_n must be miniscript"); + } -int parse_policy_map(buffer_t *in_buf, - void *out, - size_t out_len, - uint32_t bip32_pubkey_version, - uint32_t bip32_privkey_version) { - if ((uintptr_t) out % sizeof(void*) != 0) { - PRINTF("Unaligned pointer\n"); - return -1; - } + // and_n(X, Y) is equivalent to andor(X, Y, 0) + // X is Bdu; Y is B - buffer_t out_buf = buffer_create(out, out_len); + const policy_node_t *X = r_policy_node(&node->scripts[0]); + const policy_node_t *Y = r_policy_node(&node->scripts[1]); - script_parser_ctx_t parser_ctx = { - .in_buf = in_buf, - .out_buf = &out_buf, - .bip32_pubkey_version = bip32_pubkey_version, - .bip32_privkey_version = bip32_privkey_version - }; + if (X->flags.miniscript_type != MINISCRIPT_TYPE_B || !X->flags.miniscript_mod_d || + !X->flags.miniscript_mod_u) { + return WITH_ERROR(-1, "invalid type"); + } - return parse_script(&parser_ctx, 0, 0); -} + if (Y->flags.miniscript_type != MINISCRIPT_TYPE_B) { + return WITH_ERROR(-1, "invalid type"); + } -bool policy_is_multisig(const policy_node_t *policy) { - const policy_node_t *node = policy; + // clang-format off + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = + X->flags.miniscript_mod_z & Y->flags.miniscript_mod_z; + node->base.flags.miniscript_mod_o = X->flags.miniscript_mod_o & Y->flags.miniscript_mod_z; + node->base.flags.miniscript_mod_n = 0; + node->base.flags.miniscript_mod_d = 1; + node->base.flags.miniscript_mod_u = Y->flags.miniscript_mod_u; + // clang-format on - while(node != NULL) { - switch(node->type) - { - case TOKEN_CT: - node = ((policy_node_ct_t *)node)->script; break; + } + case TOKEN_OR_B: { + policy_node_with_script2_t *node = + (policy_node_with_script2_t *) buffer_alloc(out_buf, + sizeof(policy_node_with_script2_t), + true); + if (node == NULL) { + return WITH_ERROR(-1, "Out of memory"); + } + parsed_node = (policy_node_t *) node; + + node->base.type = token; + + if (0 > parse_child_scripts(in_buf, + out_buf, + depth, + node->scripts, + 2, + version, + context_flags)) { + return -1; + } + + if (!r_policy_node(&node->scripts[0])->flags.is_miniscript || + !r_policy_node(&node->scripts[1])->flags.is_miniscript) { + return WITH_ERROR(-1, "children of or_b must be miniscript"); + } + + // or_b(X, Z) + // X is Bd; Z is Wd + + const policy_node_t *X = r_policy_node(&node->scripts[0]); + const policy_node_t *Z = r_policy_node(&node->scripts[1]); + + if (X->flags.miniscript_type != MINISCRIPT_TYPE_B || !X->flags.miniscript_mod_d) { + return WITH_ERROR(-1, "invalid type"); + } + + if (Z->flags.miniscript_type != MINISCRIPT_TYPE_W || !Z->flags.miniscript_mod_d) { + return WITH_ERROR(-1, "invalid type"); + } + + // clang-format off + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = X->flags.miniscript_mod_z & Z->flags.miniscript_mod_z; + node->base.flags.miniscript_mod_o = + (X->flags.miniscript_mod_z & Z->flags.miniscript_mod_o) + | + (X->flags.miniscript_mod_o & Z->flags.miniscript_mod_z); + node->base.flags.miniscript_mod_n = 0; + node->base.flags.miniscript_mod_d = 1; + node->base.flags.miniscript_mod_u = 1; + // clang-format on - case TOKEN_SH: - case TOKEN_WSH: - node = ((policy_node_with_script_t *)node)->script; break; + } + case TOKEN_OR_C: { + policy_node_with_script2_t *node = + (policy_node_with_script2_t *) buffer_alloc(out_buf, + sizeof(policy_node_with_script2_t), + true); + if (node == NULL) { + return WITH_ERROR(-1, "Out of memory"); + } + parsed_node = (policy_node_t *) node; - case TOKEN_MULTI: - case TOKEN_SORTEDMULTI: - return true; + node->base.type = token; - // TOKEN_PKH, TOKEN_WPKH, TOKEN_TR - // TODO: add Taproot multisig when it will be supported project-wise - default: - return false; + if (0 > parse_child_scripts(in_buf, + out_buf, + depth, + node->scripts, + 2, + version, + context_flags)) { + return -1; + } + + if (!r_policy_node(&node->scripts[0])->flags.is_miniscript || + !r_policy_node(&node->scripts[1])->flags.is_miniscript) { + return WITH_ERROR(-1, "children of or_c must be miniscript"); + } + + // or_c(X, Z) + // X is Bdu; Z is V + + const policy_node_t *X = r_policy_node(&node->scripts[0]); + const policy_node_t *Z = r_policy_node(&node->scripts[1]); + + if (X->flags.miniscript_type != MINISCRIPT_TYPE_B || !X->flags.miniscript_mod_d || + !X->flags.miniscript_mod_u) { + return WITH_ERROR(-1, "invalid type"); + } + + if (Z->flags.miniscript_type != MINISCRIPT_TYPE_V) { + return WITH_ERROR(-1, "invalid type"); + } + + // clang-format off + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_V; + node->base.flags.miniscript_mod_z = X->flags.miniscript_mod_z & Z->flags.miniscript_mod_z; + node->base.flags.miniscript_mod_o = X->flags.miniscript_mod_o & Z->flags.miniscript_mod_z; + node->base.flags.miniscript_mod_n = 0; + node->base.flags.miniscript_mod_d = 0; + node->base.flags.miniscript_mod_u = 0; + // clang-format on + + break; } - } + case TOKEN_OR_D: { + policy_node_with_script2_t *node = + (policy_node_with_script2_t *) buffer_alloc(out_buf, + sizeof(policy_node_with_script2_t), + true); + if (node == NULL) { + return WITH_ERROR(-1, "Out of memory"); + } + parsed_node = (policy_node_t *) node; - return false; -} + node->base.type = token; -#ifndef SKIP_FOR_CMOCKA + if (0 > parse_child_scripts(in_buf, + out_buf, + depth, + node->scripts, + 2, + version, + context_flags)) { + return -1; + } -void get_policy_wallet_id(const policy_map_wallet_header_t *wallet_header, uint8_t out[static 32]) { - cx_sha256_t wallet_hash_context; - cx_sha256_init(&wallet_hash_context); + if (!r_policy_node(&node->scripts[0])->flags.is_miniscript || + !r_policy_node(&node->scripts[1])->flags.is_miniscript) { + return WITH_ERROR(-1, "children of or_d must be miniscript"); + } - crypto_hash_update_u8(&wallet_hash_context.header, wallet_header->type); - crypto_hash_update_u8(&wallet_hash_context.header, wallet_header->name_len); - crypto_hash_update(&wallet_hash_context.header, wallet_header->name, wallet_header->name_len); + // or_d(X, Z) + // X is Bdu; Z is B - crypto_hash_update_varint(&wallet_hash_context.header, wallet_header->policy_map_len); - crypto_hash_update(&wallet_hash_context.header, - wallet_header->policy_map, - wallet_header->policy_map_len); + const policy_node_t *X = r_policy_node(&node->scripts[0]); + const policy_node_t *Z = r_policy_node(&node->scripts[1]); - crypto_hash_update_varint(&wallet_hash_context.header, wallet_header->n_keys); + if (X->flags.miniscript_type != MINISCRIPT_TYPE_B || !X->flags.miniscript_mod_d || + !X->flags.miniscript_mod_u) { + return WITH_ERROR(-1, "invalid type"); + } - crypto_hash_update(&wallet_hash_context.header, wallet_header->keys_info_merkle_root, 32); + if (Z->flags.miniscript_type != MINISCRIPT_TYPE_B) { + return WITH_ERROR(-1, "invalid type"); + } - crypto_hash_digest(&wallet_hash_context.header, out, 32); -} + // clang-format off + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = X->flags.miniscript_mod_z & Z->flags.miniscript_mod_z; + node->base.flags.miniscript_mod_o = X->flags.miniscript_mod_o & Z->flags.miniscript_mod_z; + node->base.flags.miniscript_mod_n = 0; + node->base.flags.miniscript_mod_d = Z->flags.miniscript_mod_d; + node->base.flags.miniscript_mod_u = Z->flags.miniscript_mod_u; + // clang-format on -#endif + break; + } + case TOKEN_OR_I: { + policy_node_with_script2_t *node = + (policy_node_with_script2_t *) buffer_alloc(out_buf, + sizeof(policy_node_with_script2_t), + true); + if (node == NULL) { + return WITH_ERROR(-1, "Out of memory"); + } + parsed_node = (policy_node_t *) node; + + node->base.type = token; + + if (0 > parse_child_scripts(in_buf, + out_buf, + depth, + node->scripts, + 2, + version, + context_flags)) { + return -1; + } + + if (!r_policy_node(&node->scripts[0])->flags.is_miniscript || + !r_policy_node(&node->scripts[1])->flags.is_miniscript) { + return WITH_ERROR(-1, "children of or_i must be miniscript"); + } + + // or_i(X, Z) + // both are B, K, or V + + const policy_node_t *X = r_policy_node(&node->scripts[0]); + const policy_node_t *Z = r_policy_node(&node->scripts[1]); + + if (X->flags.miniscript_type == MINISCRIPT_TYPE_W) { + return WITH_ERROR(-1, "invalid type"); // must be B, K or V + } + + if (X->flags.miniscript_type != Z->flags.miniscript_type) { + return WITH_ERROR(-1, "invalid type"); // children must be the same type + } + + // clang-format off + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = X->flags.miniscript_type; + node->base.flags.miniscript_mod_z = 0; + node->base.flags.miniscript_mod_o = X->flags.miniscript_mod_z & Z->flags.miniscript_mod_z; + node->base.flags.miniscript_mod_n = 0; + node->base.flags.miniscript_mod_d = X->flags.miniscript_mod_d | Z->flags.miniscript_mod_d; + node->base.flags.miniscript_mod_u = X->flags.miniscript_mod_u & Z->flags.miniscript_mod_u; + // clang-format on + + break; + } + case TOKEN_THRESH: { + policy_node_thresh_t *node = + (policy_node_thresh_t *) buffer_alloc(out_buf, sizeof(policy_node_thresh_t), true); + if (node == NULL) { + return WITH_ERROR(-1, "Out of memory"); + } + parsed_node = (policy_node_t *) node; + node->base.type = token; + + // the internal scripts are recursively parsed (if successful) in the current location + // of the output buffer + + uint32_t k; + if (parse_unsigned_decimal(in_buf, &k) == -1 || k > INT16_MAX) { + return WITH_ERROR(-1, "Error parsing threshold"); + } + node->k = (int16_t) k; + + // the next character must be a comma + if (!consume_character(in_buf, ',')) { + return WITH_ERROR(-1, "Expected a comma"); + } + + if (node->k < 1) { + return WITH_ERROR(-1, "Threshold must be at least 1"); + } + + node->n = 0; + policy_node_scriptlist_t *scriptlist = + buffer_alloc(out_buf, sizeof(policy_node_scriptlist_t), true); + if (scriptlist == NULL) { + return WITH_ERROR(-1, "Out of memory"); + } + i_policy_node_scriptlist(&node->scriptlist, scriptlist); + + policy_node_scriptlist_t *cur = scriptlist; + + i_policy_node_scriptlist(&cur->next, NULL); + + int count_z = 0; + int count_o = 0; + while (true) { + ++node->n; + // parse a script into cur->script + buffer_alloc(out_buf, 0, true); // ensure alignment of current pointer + i_policy_node(&cur->script, buffer_get_cur(out_buf)); + if (0 > parse_script(in_buf, out_buf, version, depth + 1, context_flags)) { + // failed while parsing internal script + return -1; + } + + if (!r_policy_node(&cur->script)->flags.is_miniscript) { + return WITH_ERROR(-1, "children of thresh must be miniscript"); + } + + if (node->n == 1) { + // the first child's type must be B + if (r_policy_node(&cur->script)->flags.miniscript_type != MINISCRIPT_TYPE_B) { + return WITH_ERROR(-1, "the first children of thresh must be of type B"); + } + } else { + // every other child's type must be W + if (r_policy_node(&cur->script)->flags.miniscript_type != MINISCRIPT_TYPE_W) { + return WITH_ERROR( + -1, + "each child of thresh (except the first) must be of type W"); + } + } + + // all children must have properties du + if (!r_policy_node(&cur->script)->flags.miniscript_mod_d || + !r_policy_node(&cur->script)->flags.miniscript_mod_u) { + return WITH_ERROR(-1, "each child of thresh must have properties d and u"); + } + + if (r_policy_node(&cur->script)->flags.miniscript_mod_z) { + ++count_z; + } + if (r_policy_node(&cur->script)->flags.miniscript_mod_o) { + ++count_o; + } + + // peek, if next character is ',', consume it and exit + if (consume_character(in_buf, ',')) { + policy_node_scriptlist_t *next = + (policy_node_scriptlist_t *) buffer_alloc(out_buf, + sizeof(policy_node_scriptlist_t), + true); + if (next == NULL) { + return WITH_ERROR(-1, "Out of memory"); + } + + i_policy_node_scriptlist(&cur->next, next); + + cur = next; + i_policy_node_scriptlist(&cur->next, NULL); + } else { + // no more scripts to parse + break; + } + } + + // thresh(k, X1, ..., Xn) + // X1 is Bdu; others are Wdu + + // clang-format off + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = (count_z == node->n) ? 1 : 0; + node->base.flags.miniscript_mod_o = (count_z == node->n - 1 && count_o == 1) ? 1 : 0; + node->base.flags.miniscript_mod_n = 0; + node->base.flags.miniscript_mod_d = 1; + node->base.flags.miniscript_mod_u = 1; + // clang-format on + + break; + } + case TOKEN_PK: + case TOKEN_PKH: + case TOKEN_PK_K: + case TOKEN_PK_H: + case TOKEN_WPKH: { + policy_node_with_key_t *node = + (policy_node_with_key_t *) buffer_alloc(out_buf, + sizeof(policy_node_with_key_t), + true); + if (node == NULL) { + return WITH_ERROR(-1, "Out of memory"); + } + + policy_node_key_placeholder_t *key_placeholder = + buffer_alloc(out_buf, sizeof(policy_node_key_placeholder_t), true); + + if (key_placeholder == NULL) { + return WITH_ERROR(-1, "Out of memory"); + } + i_policy_node_key_placeholder(&node->key_placeholder, key_placeholder); + + if (token == TOKEN_WPKH) { + if (depth > 0 && ((context_flags & CONTEXT_WITHIN_SH) == 0)) { + return WITH_ERROR(-1, "wpkh can only be top-level or inside sh"); + } + } + + parsed_node = (policy_node_t *) node; + + node->base.type = token; + + if (0 > parse_placeholder(in_buf, version, key_placeholder)) { + return WITH_ERROR(-1, "Couldn't parse key placeholder"); + } + + if (token == TOKEN_WPKH) { + // not valid in miniscript + node->base.flags.is_miniscript = 0; + } else { + switch (token) { + case TOKEN_PK: // pk(key) == c:pk_k(key) + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = 0; + node->base.flags.miniscript_mod_o = 1; + node->base.flags.miniscript_mod_n = 1; + node->base.flags.miniscript_mod_d = 1; + node->base.flags.miniscript_mod_u = 1; + break; + case TOKEN_PKH: // pkh(key) == c:pk_h(key) + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = 0; + node->base.flags.miniscript_mod_o = 0; + node->base.flags.miniscript_mod_n = 1; + node->base.flags.miniscript_mod_d = 1; + node->base.flags.miniscript_mod_u = 1; + break; + case TOKEN_PK_K: + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_K; + node->base.flags.miniscript_mod_z = 0; + node->base.flags.miniscript_mod_o = 1; + node->base.flags.miniscript_mod_n = 1; + node->base.flags.miniscript_mod_d = 1; + node->base.flags.miniscript_mod_u = 1; + break; + case TOKEN_PK_H: + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_K; + node->base.flags.miniscript_mod_z = 0; + node->base.flags.miniscript_mod_o = 0; + node->base.flags.miniscript_mod_n = 1; + node->base.flags.miniscript_mod_d = 1; + node->base.flags.miniscript_mod_u = 1; + break; + default: + return WITH_ERROR(-1, "unreachable code reached"); + } + } + + break; + } + case TOKEN_TR: { // supporting only xpubs + if (depth > 1) { + return WITH_ERROR(-1, "tr can only be top-level"); + } + + policy_node_tr_t *node = + (policy_node_tr_t *) buffer_alloc(out_buf, sizeof(policy_node_tr_t), true); + if (node == NULL) { + return WITH_ERROR(-1, "Out of memory"); + } + + policy_node_key_placeholder_t *key_placeholder = + buffer_alloc(out_buf, sizeof(policy_node_key_placeholder_t), true); + if (key_placeholder == NULL) { + return WITH_ERROR(-1, "Out of memory"); + } + i_policy_node_key_placeholder(&node->key_placeholder, key_placeholder); + + if (0 > parse_placeholder(in_buf, version, key_placeholder)) { + return WITH_ERROR(-1, "Couldn't parse key placeholder"); + } + + uint8_t c; + if (!buffer_peek(in_buf, &c)) { + return WITH_ERROR(-1, "buffer exhausted too early while parsing tr"); + } + if (c == ',') { + // Parse a TREE node + buffer_seek_cur(in_buf, 1); // skip ',' + + buffer_alloc(out_buf, 0, true); // ensure alignment of current pointer + policy_node_tree_t *tree = (policy_node_tree_t *) buffer_get_cur(out_buf); + if (0 > parse_tree(in_buf, out_buf, version, depth + 1)) { + return WITH_ERROR(-1, "Failed to parse TREE expression"); + } + i_policy_node_tree(&node->tree, tree); + } else { + // no TREE, only tr(KP) + if (c != ')') { + return WITH_ERROR(-1, "Failed to parse tr"); + } + i_policy_node_tree(&node->tree, NULL); + } + + parsed_node = (policy_node_t *) node; + + node->base.type = token; + + node->base.flags.is_miniscript = 0; + + break; + } + case TOKEN_OLDER: + case TOKEN_AFTER: { + policy_node_with_uint32_t *node = + (policy_node_with_uint32_t *) buffer_alloc(out_buf, + sizeof(policy_node_with_uint32_t), + true); + if (node == NULL) { + return WITH_ERROR(-1, "Out of memory"); + } + parsed_node = (policy_node_t *) node; + node->base.type = token; + + if (parse_unsigned_decimal(in_buf, &node->n) == -1) { + return WITH_ERROR(-1, "Error parsing number"); + } + + if (node->n < 1 || node->n >= (1u << 31)) { + return WITH_ERROR(-1, "n must satisfy 1 <= n < 2^31 in older/after"); + } + + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = 1; + node->base.flags.miniscript_mod_o = 0; + node->base.flags.miniscript_mod_n = 0; + node->base.flags.miniscript_mod_d = 0; + node->base.flags.miniscript_mod_u = 0; + + break; + } + case TOKEN_MULTI: + case TOKEN_MULTI_A: + case TOKEN_SORTEDMULTI: + case TOKEN_SORTEDMULTI_A: { + policy_node_multisig_t *node = + (policy_node_multisig_t *) buffer_alloc(out_buf, + sizeof(policy_node_multisig_t), + true); + + if (node == NULL) { + return WITH_ERROR(-1, "Out of memory"); + } + + if ((context_flags & CONTEXT_WITHIN_TR) != 0) { + if (token != TOKEN_MULTI_A && token != TOKEN_SORTEDMULTI_A) { + return WITH_ERROR( + -1, + "multi and sortedmulti can only be used in legacy or segwit scripts"); + } + } else { // legacy or segwit scripts + if (token != TOKEN_MULTI && token != TOKEN_SORTEDMULTI) { + return WITH_ERROR( + -1, + "multi_a and sortedmulti_a can only be used in taproot scripts"); + } + } + + if (token == TOKEN_SORTEDMULTI) { + size_t n_sh_wrappers = 0; + if (context_flags & CONTEXT_WITHIN_SH) ++n_sh_wrappers; + if (context_flags & CONTEXT_WITHIN_WSH) ++n_sh_wrappers; + + // sortedmulti can only be used bare, or directly under sh(), wsh() + if (depth != n_sh_wrappers) { + return WITH_ERROR(-1, + "sortedmulti can only be bare, or directly under sh or wsh"); + } + } + + parsed_node = (policy_node_t *) node; + node->base.type = token; + + uint32_t k; + if (parse_unsigned_decimal(in_buf, &k) == -1 || k > INT16_MAX) { + return WITH_ERROR(-1, "Error parsing threshold"); + } + node->k = (int16_t) k; + + // We allocate the array of key indices at the current position in the output buffer + // (on success) + buffer_alloc(out_buf, 0, true); // ensure alignment of current pointer + i_policy_node_key_placeholder(&node->key_placeholders, buffer_get_cur(out_buf)); + + node->n = 0; + while (true) { + uint8_t c; + // If the next character is a ')', we exit and leave it in the buffer + if (buffer_peek(in_buf, &c) && c == ')') { + break; + } + + // otherwise, there must be a comma + if (!consume_character(in_buf, ',')) { + return WITH_ERROR(-1, "Expected ','"); + } + + policy_node_key_placeholder_t *key_placeholder = + (policy_node_key_placeholder_t *) buffer_alloc( + out_buf, + sizeof(policy_node_key_placeholder_t), + true); // we align this pointer, as there's padding in an array of + // structures + if (key_placeholder == NULL) { + return WITH_ERROR(-1, "Out of memory"); + } + + if (0 > parse_placeholder(in_buf, version, key_placeholder)) { + return WITH_ERROR(-1, "Error parsing key placeholder"); + } + + ++node->n; + } + + // check integrity of k and n + if (!(1 <= node->k && node->k <= node->n && node->n <= MAX_PUBKEYS_PER_MULTISIG)) { + return WITH_ERROR(-1, "Invalid k and/or n"); + } + + if (token == TOKEN_SORTEDMULTI || token == TOKEN_SORTEDMULTI_A) { + node->base.flags.is_miniscript = 0; + } else if (token == TOKEN_MULTI) { + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = 0; + node->base.flags.miniscript_mod_o = 0; + node->base.flags.miniscript_mod_n = 1; + node->base.flags.miniscript_mod_d = 1; + node->base.flags.miniscript_mod_u = 1; + } else if (token == TOKEN_MULTI_A) { + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = 0; + node->base.flags.miniscript_mod_o = 0; + node->base.flags.miniscript_mod_n = 0; + node->base.flags.miniscript_mod_d = 1; + node->base.flags.miniscript_mod_u = 1; + } + + break; + } + default: + PRINTF("Unknown token: %d\n", token); + return -1; + } + + if (has_parentheses) { + if (!consume_character(in_buf, ')')) { + return WITH_ERROR(-1, "Expected ')'"); + } + } + + if (depth == 0 && buffer_can_read(in_buf, 1)) { + return WITH_ERROR(-1, "Input buffer too long"); + } + + // if there was one or more wrappers, the script of the most internal node must point + // to the parsed node + if (inner_wrapper != NULL) { + i_policy_node(&inner_wrapper->script, parsed_node); + } + + // Validate and compute the flags (miniscript type and modifiers) for all the wrapper, if any + // We start from the most internal wrapper. + // Remark: This loop has quadratic complexity as we process a linked list in reverse order, but + // it does not matter as it is always a short list. + + for (int i = n_wrappers - 1; i >= 0; i--) { + // find the actual node by traversing the list + policy_node_with_script_t *node = (policy_node_with_script_t *) outermost_node; + for (int j = 0; j < i; j++) { + node = (policy_node_with_script_t *) r_policy_node(&node->script); + } + + if (!r_policy_node(&node->script)->flags.is_miniscript) { + return WITH_ERROR(-1, "wrappers can only be applied to miniscript"); + } + + const policy_node_t *X = r_policy_node(&node->script); + + uint8_t X_type = X->flags.miniscript_type; + + uint8_t X_z = X->flags.miniscript_mod_z; + uint8_t X_o = X->flags.miniscript_mod_o; + uint8_t X_n = X->flags.miniscript_mod_n; + uint8_t X_d = X->flags.miniscript_mod_d; + uint8_t X_u = X->flags.miniscript_mod_u; + + switch (node->base.type) { + case TOKEN_A: + if (X_type != MINISCRIPT_TYPE_B) { + return WITH_ERROR(-1, "'a' wrapper requires a B type child"); + } + + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_W; + node->base.flags.miniscript_mod_z = 0; + node->base.flags.miniscript_mod_o = 0; + node->base.flags.miniscript_mod_n = 0; + node->base.flags.miniscript_mod_d = X_d; + node->base.flags.miniscript_mod_u = X_u; + break; + case TOKEN_S: + if (X_type != MINISCRIPT_TYPE_B || !X_o) { + return WITH_ERROR(-1, "'s' wrapper requires a Bu type child"); + } + + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_W; + node->base.flags.miniscript_mod_z = 0; + node->base.flags.miniscript_mod_o = 0; + node->base.flags.miniscript_mod_n = 0; + node->base.flags.miniscript_mod_d = X_d; + node->base.flags.miniscript_mod_u = X_u; + break; + case TOKEN_C: + if (X_type != MINISCRIPT_TYPE_K) { + return WITH_ERROR(-1, "'c' wrapper requires a K type child"); + } + + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = 0; + node->base.flags.miniscript_mod_o = X_o; + node->base.flags.miniscript_mod_n = X_n; + node->base.flags.miniscript_mod_d = X_d; + node->base.flags.miniscript_mod_u = 1; + break; + case TOKEN_T: + // t:X == and_v(X,1) + + if (X_type != MINISCRIPT_TYPE_V) { + return WITH_ERROR(-1, "'t' wrapper requires a V type child"); + } + + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = X_z; + node->base.flags.miniscript_mod_o = X_o; + node->base.flags.miniscript_mod_n = X_n; + node->base.flags.miniscript_mod_d = 0; + node->base.flags.miniscript_mod_u = 1; + break; + case TOKEN_D: + if (X_type != MINISCRIPT_TYPE_V || !X_z) { + return WITH_ERROR(-1, "'d' wrapper requires a Vz type child"); + } + + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = 0; + node->base.flags.miniscript_mod_o = 1; + node->base.flags.miniscript_mod_n = 1; + node->base.flags.miniscript_mod_d = 1; + node->base.flags.miniscript_mod_u = (context_flags & CONTEXT_WITHIN_TR) ? 1 : 0; + break; + case TOKEN_V: + if (X_type != MINISCRIPT_TYPE_B) { + return WITH_ERROR(-1, "'v' wrapper requires a B type child"); + } + + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_V; + node->base.flags.miniscript_mod_z = X_z; + node->base.flags.miniscript_mod_o = X_o; + node->base.flags.miniscript_mod_n = X_n; + node->base.flags.miniscript_mod_d = 0; + node->base.flags.miniscript_mod_u = 0; + break; + case TOKEN_J: + if (X_type != MINISCRIPT_TYPE_B || !X_n) { + return WITH_ERROR(-1, "'j' wrapper requires a Bn type child"); + } + + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = 0; + node->base.flags.miniscript_mod_o = X_o; + node->base.flags.miniscript_mod_n = 1; + node->base.flags.miniscript_mod_d = 1; + node->base.flags.miniscript_mod_u = X_u; + break; + case TOKEN_N: + if (X_type != MINISCRIPT_TYPE_B) { + return WITH_ERROR(-1, "'n' wrapper requires a B type child"); + } + + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = X_z; + node->base.flags.miniscript_mod_o = X_o; + node->base.flags.miniscript_mod_n = X_n; + node->base.flags.miniscript_mod_d = X_d; + node->base.flags.miniscript_mod_u = 1; + break; + case TOKEN_L: + // l:X == or_i(0,X) + + if (X_type != MINISCRIPT_TYPE_B) { + return WITH_ERROR(-1, "'l' wrapper requires a B type child"); + } + + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = 0; + node->base.flags.miniscript_mod_o = X_z; + node->base.flags.miniscript_mod_n = 0; + node->base.flags.miniscript_mod_d = 1; + node->base.flags.miniscript_mod_u = X_u; + break; + case TOKEN_U: + // u:X == or_i(X,0) + + if (X_type != MINISCRIPT_TYPE_B) { + return WITH_ERROR(-1, "'u' wrapper requires a B type child"); + } + + node->base.flags.is_miniscript = 1; + node->base.flags.miniscript_type = MINISCRIPT_TYPE_B; + node->base.flags.miniscript_mod_z = 0; + node->base.flags.miniscript_mod_o = X_z; + node->base.flags.miniscript_mod_n = 0; + node->base.flags.miniscript_mod_d = 1; + node->base.flags.miniscript_mod_u = X_u; + break; + default: + return WITH_ERROR(-1, "unreachable code reached"); + } + } + + return 0; +} + +// Parses a TREE expression inside tr() +// `depth` here refers to the depth inside the policy, therefore it starts at 1 for the taptree +static int parse_tree(buffer_t *in_buf, buffer_t *out_buf, int version, size_t depth) { + // out_buf must be aligned before calling this function + + if (depth > MAX_TAPTREE_POLICY_DEPTH) { + return WITH_ERROR(-1, "Taptree policy depth limit exceeded"); + } + + if (!buffer_is_cur_aligned(out_buf)) { + return WITH_ERROR(-1, "out_buf not aligned"); + } + + policy_node_tree_t *tree_node = + (policy_node_tree_t *) buffer_alloc(out_buf, sizeof(policy_node_tree_t), true); + + if (tree_node == NULL) { + return WITH_ERROR(-1, "Out of memory"); + } + + uint8_t c; + + // the first character must be a '{' + if (!buffer_peek(in_buf, &c)) { + return WITH_ERROR(-1, "buffer ended too early"); + } + + if (c != '{') { + // parse a SCRIPT + tree_node->is_leaf = true; + + buffer_alloc(out_buf, 0, true); // ensure alignment of current pointer + i_policy_node(&tree_node->script, buffer_get_cur(out_buf)); + if (0 > parse_script(in_buf, out_buf, version, depth + 1, CONTEXT_WITHIN_TR)) { + return -1; + } + } else { + // parse a {TREE,TREE} + tree_node->is_leaf = false; + buffer_seek_cur(in_buf, 1); // skip '{' + + // parse first TREE expression + buffer_alloc(out_buf, 0, true); // ensure alignment of current pointer + i_policy_node_tree(&tree_node->left_tree, buffer_get_cur(out_buf)); + if (0 > parse_tree(in_buf, out_buf, version, depth + 1)) { + return -1; + } + + // the next character must be a comma + if (!consume_character(in_buf, ',')) { + return WITH_ERROR(-1, "Expected a comma"); + } + + // parse the second TREE expression + buffer_alloc(out_buf, 0, true); // ensure alignment of current pointer + i_policy_node_tree(&tree_node->right_tree, buffer_get_cur(out_buf)); + if (0 > parse_tree(in_buf, out_buf, version, depth + 1)) { + return -1; + } + + // the next character must be a '}' + if (!consume_character(in_buf, '}')) { + return WITH_ERROR(-1, "Expected a '}'"); + } + } + + return 0; +} + +int parse_descriptor_template(buffer_t *in_buf, void *out, size_t out_len, int version) { + if ((unsigned long) out % 4 != 0) { + return WITH_ERROR(-1, "Unaligned pointer"); + } + + if (version != WALLET_POLICY_VERSION_V1 && version != WALLET_POLICY_VERSION_V2) { + return WITH_ERROR(-1, "Unsupported wallet policy version"); + } + + buffer_t out_buf = buffer_create(out, out_len); + + int result = parse_script(in_buf, &out_buf, version, 0, 0); + if (result < 0) { + return result; + } + + // the offset of the buffer is the size of the parsed descriptor template + return (int) out_buf.offset; +} + +int get_policy_segwit_version(const policy_node_t *policy) { + if (policy->type == TOKEN_TR) { + return 1; + } else if (policy->type == TOKEN_SH) { + const policy_node_t *inner = + r_policy_node(&((const policy_node_with_script_t *) policy)->script); + if (inner->type == TOKEN_WPKH || inner->type == TOKEN_WSH) { + return 0; // wrapped segwit + } else { + return -1; // legacy + } + } else if (policy->type == TOKEN_WPKH || policy->type == TOKEN_WSH) { + return 0; // native segwit + } else { + return -1; // legacy + } +} + +/** + * Convenience function that returns a + b, except: + * - returns -1 if any of a and b is negative + * - returns INT16_MAX if the sum of a and b is bigger than INT16_MAX = 32767. + * Used to combine satisfaction/dissatisfaction for miniscript. + */ +static int16_t sumcheck(int16_t a, int16_t b) { + if (a < 0 || b < 0) + return -1; + else if ((uint32_t) a + (uint32_t) b > INT16_MAX) + return INT16_MAX; + else + return a + b; +} + +/** + * Convenience function that whichever of a and b is not negative; if both are positive, returns the + * largest. If both are negative, returns either of the two. Used to combine + * satisfaction/dissatisfaction for miniscript. + */ +static int16_t maxcheck(int16_t a, int16_t b) { + if (a < 0) + return b; + else + return a > b ? a : b; +} + +// Maximum supported value for n in a thresh miniscript operator (technical limitation) +#define MAX_N_IN_THRESH 128 + +// Separated from the main function as it is stack-intensive, therefore we allocate large buffers +// into the CXRAM section. There is some repeated work () +static int compute_thresh_ops(const policy_node_thresh_t *node, + miniscript_ops_t *out, + MiniscriptContext ctx) { +#ifdef USE_CXRAM_SECTION + // allocate buffers inside the cxram section; safe as there are no syscalls here + uint16_t *sats = (uint16_t *) get_cxram_buffer(); + uint16_t *next_sats = + (uint16_t *) (get_cxram_buffer() + sizeof(uint16_t) * (MAX_N_IN_THRESH + 1 + 1)); +#else + uint16_t sats[MAX_N_IN_THRESH + 1 + 1] = {0}; + uint16_t next_sats[MAX_N_IN_THRESH + 1 + 1] = {0}; // it temporarily uses an extra element +#endif + + if (node->n > MAX_N_IN_THRESH) return -1; + + policy_node_scriptlist_t *cur = r_policy_node_scriptlist(&node->scriptlist); + + out->count = 0; + + sats[0] = 0; + int sats_size = 1; + + while (cur != NULL) { + policy_node_ext_info_t t; + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&cur->script), &t, ctx)) return -1; + + out->count += t.ops.count + 1; + + next_sats[0] = sumcheck(sats[0], t.ops.dsat); + for (int j = 1; j < sats_size; j++) { + next_sats[j] = + maxcheck(sumcheck(sats[j], t.ops.dsat), sumcheck(sats[j - 1], t.ops.sat)); + } + next_sats[sats_size] = sumcheck(sats[sats_size - 1], t.ops.sat); + + ++sats_size; + memmove(sats, next_sats, sats_size * sizeof(sats[0])); + + cur = r_policy_node_scriptlist(&cur->next); + } + + out->sat = sats[node->k]; + out->dsat = sats[0]; + return 0; +} + +// Separated from the main function as it is stack-intensive, therefore we allocate large buffers +// into the CXRAM section. There is some repeated work () +static int compute_thresh_stacksize(const policy_node_thresh_t *node, + miniscript_stacksize_t *out, + MiniscriptContext ctx) { +#ifdef USE_CXRAM_SECTION + // allocate buffers inside the cxram section; safe as there are no syscalls here + uint16_t *sats = (uint16_t *) get_cxram_buffer(); + uint16_t *next_sats = + (uint16_t *) (get_cxram_buffer() + sizeof(uint16_t) * (MAX_N_IN_THRESH + 1 + 1)); +#else + uint16_t sats[MAX_N_IN_THRESH + 1 + 1] = {0}; + uint16_t next_sats[MAX_N_IN_THRESH + 1 + 1] = {0}; // it temporarily uses an extra element +#endif + + if (node->n > MAX_N_IN_THRESH) return -1; + + policy_node_scriptlist_t *cur = r_policy_node_scriptlist(&node->scriptlist); + + sats[0] = 0; + int sats_size = 1; + + while (cur != NULL) { + policy_node_ext_info_t t; + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&cur->script), &t, ctx)) return -1; + + next_sats[0] = sumcheck(sats[0], t.ss.dsat); + for (int j = 1; j < sats_size; j++) { + next_sats[j] = maxcheck(sumcheck(sats[j], t.ss.dsat), sumcheck(sats[j - 1], t.ss.sat)); + } + next_sats[sats_size] = sumcheck(sats[sats_size - 1], t.ss.sat); + + ++sats_size; + memmove(sats, next_sats, sats_size * sizeof(sats[0])); + + cur = r_policy_node_scriptlist(&cur->next); + } + + out->sat = sats[node->k]; + out->dsat = sats[0]; + return 0; +} + +int compute_miniscript_policy_ext_info(const policy_node_t *policy_node, + policy_node_ext_info_t *out, + MiniscriptContext ctx) { + if (!policy_node->flags.is_miniscript) { + return WITH_ERROR(-1, "Not miniscript"); + } + + if (ctx != MINISCRIPT_CONTEXT_P2WSH && ctx != MINISCRIPT_CONTEXT_TAPSCRIPT) { + return WITH_ERROR(-1, "Unknown miniscript context"); + } + + memset(out, 0, sizeof(policy_node_ext_info_t)); + + // set flags that are 1 in most cases (they will be zeroed when appropriate) + out->m = 1; + out->k = 1; + out->x = 1; + + switch (policy_node->type) { + case TOKEN_0: + out->s = 1; + out->e = 1; + + out->script_size = 1; + + out->ops = (miniscript_ops_t){0, -1, 0}; + out->ss = (miniscript_stacksize_t){-1, 0}; + + return 0; + case TOKEN_1: + out->f = 1; + + out->script_size = 1; + + out->ops = (miniscript_ops_t){0, 0, -1}; + out->ss = (miniscript_stacksize_t){0, -1}; + + return 0; + case TOKEN_PK_K: + out->s = 1; + out->e = 1; + + out->script_size = (ctx == MINISCRIPT_CONTEXT_TAPSCRIPT ? 33 : 34); + + out->ops = (miniscript_ops_t){0, 0, 0}; + out->ss = (miniscript_stacksize_t){1, 1}; + + return 0; + case TOKEN_PK_H: + out->s = 1; + out->e = 1; + + out->script_size = 3 + 21; + + out->ops = (miniscript_ops_t){3, 0, 0}; + out->ss = (miniscript_stacksize_t){2, 2}; + + return 0; + case TOKEN_PK: // pk(key) = c:pk_k(key) + out->s = 1; + out->e = 1; + + out->x = 0; + + out->script_size = (ctx == MINISCRIPT_CONTEXT_TAPSCRIPT ? 34 : 35); + + out->ops = (miniscript_ops_t){1, 0, 0}; + out->ss = (miniscript_stacksize_t){1, 1}; + + return 0; + case TOKEN_PKH: // pkh(key) = c:pk_h(key) + out->s = 1; + out->e = 1; + + out->x = 0; + + out->script_size = 3 + 21 + 1; + + out->ops = (miniscript_ops_t){4, 0, 0}; + out->ss = (miniscript_stacksize_t){2, 2}; + + return 0; + case TOKEN_MULTI: { + const policy_node_multisig_t *node = (const policy_node_multisig_t *) policy_node; + + out->s = 1; + out->e = 1; + + out->x = 0; + + out->script_size = (uint16_t) (1 + get_push_script_size(node->k) + + get_push_script_size(node->n) + 34 * node->n); + + out->ops = (miniscript_ops_t){1, node->n, node->n}; + out->ss = (miniscript_stacksize_t){node->k + 1, node->k + 1}; + + return 0; + } + case TOKEN_MULTI_A: { + const policy_node_multisig_t *node = (const policy_node_multisig_t *) policy_node; + + out->s = 1; + out->e = 1; + + out->x = 0; + + out->script_size = (uint16_t) (1 + get_push_script_size(node->k) + 34 * node->n); + + out->ops = (miniscript_ops_t){node->n + 1, 0, 0}; + out->ss = (miniscript_stacksize_t){node->n, node->n}; + + return 0; + } + case TOKEN_OLDER: { + const policy_node_with_uint32_t *node = (const policy_node_with_uint32_t *) policy_node; + + out->f = 1; + + if (node->n & SEQUENCE_LOCKTIME_TYPE_FLAG) { + out->g = 1; + } else { + out->h = 1; + } + + out->script_size = (uint16_t) (1 + get_push_script_size(node->n)); + + out->ops = (miniscript_ops_t){1, 0, -1}; + out->ss = (miniscript_stacksize_t){0, -1}; + + return 0; + } + case TOKEN_AFTER: { + const policy_node_with_uint32_t *node = (const policy_node_with_uint32_t *) policy_node; + + out->f = 1; + + if (node->n >= LOCKTIME_THRESHOLD) { + out->i = 1; + } else { + out->j = 1; + } + + out->script_size = (uint16_t) (1 + get_push_script_size(node->n)); + + out->ops = (miniscript_ops_t){1, 0, -1}; + out->ss = (miniscript_stacksize_t){0, -1}; + + return 0; + } + case TOKEN_SHA256: + case TOKEN_HASH256: + out->x = 0; + + out->script_size = 4 + 2 + 33; + + out->ops = (miniscript_ops_t){4, 0, -1}; + out->ss = (miniscript_stacksize_t){1, -1}; + + return 0; + case TOKEN_RIPEMD160: + case TOKEN_HASH160: + out->x = 0; + + out->script_size = 4 + 2 + 21; + + out->ops = (miniscript_ops_t){4, 0, -1}; + out->ss = (miniscript_stacksize_t){1, -1}; + + return 0; + case TOKEN_ANDOR: { + const policy_node_with_script3_t *node = + (const policy_node_with_script3_t *) policy_node; + policy_node_ext_info_t x; + policy_node_ext_info_t y; + policy_node_ext_info_t z; + + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->scripts[0]), &x, ctx)) + return -1; + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->scripts[1]), &y, ctx)) + return -1; + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->scripts[2]), &z, ctx)) + return -1; + + out->s = z.s & (x.s | y.s); + out->f = z.f & (x.s | y.f); + out->e = z.e & (x.s | y.f); + + out->m = x.m & y.m & z.m & x.e & (x.s | y.s | z.s); + + out->g = x.g | y.g | z.g; + out->h = x.h | y.h | z.h; + out->i = x.i | y.i | z.i; + out->j = x.j | y.j | z.j; + + if (!(x.k & y.k & z.k) || (x.g & y.h) || (x.h & y.g) || (x.i & y.j) || (x.j & y.i)) { + out->k = 0; + } + + out->script_size = 3 + x.script_size + y.script_size + z.script_size; + + out->ops = (miniscript_ops_t){ + 3 + x.ops.count + y.ops.count + z.ops.count, + maxcheck(sumcheck(y.ops.sat, x.ops.sat), sumcheck(y.ops.dsat, z.ops.sat)), + sumcheck(x.ops.dsat, z.ops.dsat)}; + out->ss = (miniscript_stacksize_t){ + maxcheck(sumcheck(x.ss.sat, y.ss.sat), sumcheck(x.ss.dsat, z.ss.sat)), + sumcheck(x.ss.dsat, z.ss.dsat)}; + + return 0; + } + case TOKEN_AND_V: { + const policy_node_with_script2_t *node = + (const policy_node_with_script2_t *) policy_node; + policy_node_ext_info_t x; + policy_node_ext_info_t y; + + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->scripts[0]), &x, ctx)) + return -1; + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->scripts[1]), &y, ctx)) + return -1; + + out->s = x.s | y.s; + out->f = x.s | y.f; + + out->m = x.m & y.m; + + out->g = x.g | y.g; + out->h = x.h | y.h; + out->i = x.i | y.i; + out->j = x.j | y.j; + + if (!(x.k & y.k) || (x.g & y.h) || (x.h & y.g) || (x.i & y.j) || (x.j & y.i)) { + out->k = 0; + } + + out->x = y.x; + + out->script_size = x.script_size + y.script_size; + + out->ops = + (miniscript_ops_t){x.ops.count + y.ops.count, sumcheck(x.ops.sat, y.ops.sat), -1}; + out->ss = (miniscript_stacksize_t){sumcheck(x.ss.sat, y.ss.sat), -1}; + return 0; + } + case TOKEN_AND_B: { + const policy_node_with_script2_t *node = + (const policy_node_with_script2_t *) policy_node; + policy_node_ext_info_t x; + policy_node_ext_info_t y; + + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->scripts[0]), &x, ctx)) + return -1; + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->scripts[1]), &y, ctx)) + return -1; + + out->s = x.s | y.s; + out->f = (x.f & y.f) | (x.s & x.f) | (y.s & y.f); + out->e = x.e & y.e & x.s & y.s; + + out->m = x.m & y.m; + + out->g = x.g | y.g; + out->h = x.h | y.h; + out->i = x.i | y.i; + out->j = x.j | y.j; + + if (!(x.k & y.k) || (x.g & y.h) || (x.h & y.g) || (x.i & y.j) || (x.j & y.i)) { + out->k = 0; + } + + out->script_size = 1 + x.script_size + y.script_size; + + out->ops = (miniscript_ops_t){1 + x.ops.count + y.ops.count, + sumcheck(x.ops.sat, y.ops.sat), + sumcheck(x.ops.dsat, y.ops.dsat)}; + out->ss = (miniscript_stacksize_t){sumcheck(x.ss.sat, y.ss.sat), + sumcheck(x.ss.dsat, y.ss.dsat)}; + + return 0; + } + case TOKEN_AND_N: { // == andor(X,Y,0) + const policy_node_with_script2_t *node = + (const policy_node_with_script2_t *) policy_node; + policy_node_ext_info_t x; + policy_node_ext_info_t y; + + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->scripts[0]), &x, ctx)) + return -1; + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->scripts[1]), &y, ctx)) + return -1; + + out->s = x.s | y.s; + out->e = x.s | y.f; + + out->m = x.m & y.m & x.e & (x.s | y.s); + + out->g = x.g | y.g; + out->h = x.h | y.h; + out->i = x.i | y.i; + out->j = x.j | y.j; + + if (!(x.k & y.k) || (x.g & y.h) || (x.h & y.g) || (x.i & y.j) || (x.j & y.i)) { + out->k = 0; + } + + out->script_size = 4 + x.script_size + y.script_size; + + out->ops = (miniscript_ops_t){3 + x.ops.count + y.ops.count, + maxcheck(sumcheck(y.ops.sat, x.ops.sat), y.ops.dsat), + x.ops.dsat}; + out->ss = (miniscript_stacksize_t){sumcheck(x.ss.sat, y.ss.sat), x.ss.dsat}; + return 0; + } + case TOKEN_OR_B: { + const policy_node_with_script2_t *node = + (const policy_node_with_script2_t *) policy_node; + policy_node_ext_info_t x; + policy_node_ext_info_t z; + + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->scripts[0]), &x, ctx)) + return -1; + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->scripts[1]), &z, ctx)) + return -1; + + out->s = x.s & z.s; + out->e = 1; + + out->m = x.m & z.m & x.e & z.e & (x.s | z.s); + + out->g = x.g | z.g; + out->h = x.h | z.h; + out->i = x.i | z.i; + out->j = x.j | z.j; + + out->k = x.k & z.k; + + out->script_size = 1 + x.script_size + z.script_size; + + out->ops = (miniscript_ops_t){ + 1 + x.ops.count + z.ops.count, + maxcheck(sumcheck(x.ops.sat, z.ops.dsat), sumcheck(z.ops.sat, x.ops.dsat)), + sumcheck(x.ops.dsat, z.ops.dsat)}; + out->ss = (miniscript_stacksize_t){ + maxcheck(sumcheck(x.ss.dsat, z.ss.sat), sumcheck(x.ss.sat, z.ss.dsat)), + sumcheck(x.ss.dsat, z.ss.dsat)}; + return 0; + } + case TOKEN_OR_C: { + const policy_node_with_script2_t *node = + (const policy_node_with_script2_t *) policy_node; + policy_node_ext_info_t x; + policy_node_ext_info_t z; + + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->scripts[0]), &x, ctx)) + return -1; + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->scripts[1]), &z, ctx)) + return -1; + + out->s = x.s & z.s; + out->f = 1; + + out->m = x.m & z.m & x.e & (x.s | z.s); + + out->g = x.g | z.g; + out->h = x.h | z.h; + out->i = x.i | z.i; + out->j = x.j | z.j; + + out->k = x.k & z.k; + + out->script_size = 2 + x.script_size + z.script_size; + + out->ops = (miniscript_ops_t){2 + x.ops.count + z.ops.count, + maxcheck(x.ops.sat, sumcheck(z.ops.sat, x.ops.dsat)), + -1}; + out->ss = + (miniscript_stacksize_t){maxcheck(x.ss.sat, sumcheck(x.ss.dsat, z.ss.sat)), -1}; + return 0; + } + case TOKEN_OR_D: { + const policy_node_with_script2_t *node = + (const policy_node_with_script2_t *) policy_node; + policy_node_ext_info_t x; + policy_node_ext_info_t z; + + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->scripts[0]), &x, ctx)) + return -1; + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->scripts[1]), &z, ctx)) + return -1; + + out->s = x.s & z.s; + out->f = z.f; + out->e = z.e; + + out->m = x.m & z.m & x.e & (x.s | z.s); + + out->g = x.g | z.g; + out->h = x.h | z.h; + out->i = x.i | z.i; + out->j = x.j | z.j; + + out->k = x.k & z.k; + + out->script_size = 3 + x.script_size + z.script_size; + + out->ops = (miniscript_ops_t){3 + x.ops.count + z.ops.count, + maxcheck(x.ops.sat, sumcheck(z.ops.sat, x.ops.dsat)), + sumcheck(x.ops.dsat, z.ops.dsat)}; + out->ss = (miniscript_stacksize_t){maxcheck(x.ss.sat, sumcheck(x.ss.dsat, z.ss.sat)), + sumcheck(x.ss.dsat, z.ss.dsat)}; + return 0; + } + case TOKEN_OR_I: { + const policy_node_with_script2_t *node = + (const policy_node_with_script2_t *) policy_node; + policy_node_ext_info_t x; + policy_node_ext_info_t z; + + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->scripts[0]), &x, ctx)) + return -1; + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->scripts[1]), &z, ctx)) + return -1; + + out->s = x.s & z.s; + out->f = x.f & z.f; + out->e = (x.e & z.f) | (z.e & x.f); + + out->m = x.m & z.m & (x.s | z.s); + + out->g = x.g | z.g; + out->h = x.h | z.h; + out->i = x.i | z.i; + out->j = x.j | z.j; + + out->k = x.k & z.k; + + out->script_size = 3 + x.script_size + z.script_size; + + out->ops = (miniscript_ops_t){3 + x.ops.count + z.ops.count, + maxcheck(x.ops.sat, z.ops.sat), + maxcheck(x.ops.dsat, z.ops.dsat)}; + out->ss = + (miniscript_stacksize_t){maxcheck(sumcheck(x.ss.sat, 1), sumcheck(z.ss.sat, 1)), + maxcheck(sumcheck(x.ss.dsat, 1), sumcheck(z.ss.dsat, 1))}; + + return 0; + } + case TOKEN_THRESH: { + const policy_node_thresh_t *node = (const policy_node_thresh_t *) policy_node; + + policy_node_scriptlist_t *cur = r_policy_node_scriptlist(&node->scriptlist); + + int count_s = 0; + int count_e = 0; + int count_m = 0; + size_t children_scriptsize = 0; + size_t n_children = 0; + while (cur != NULL) { + ++n_children; + + policy_node_ext_info_t t; + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&cur->script), &t, ctx)) + return -1; + + if (t.e) { + ++count_e; + } + if (t.s) { + ++count_s; + } + if (t.m) { + ++count_m; + } + cur = r_policy_node_scriptlist(&cur->next); + + out->g |= t.g; + out->h |= t.h; + out->i |= t.i; + out->j |= t.j; + + out->k &= t.k; // if any child doesn't have k, thresh doesn't have k + + // if any two children have mixed timelocks, thresh doesn't have k + if (node->k >= 2 && + ((t.g & out->h) || (t.h & out->g) || (t.i & out->j) || (t.j & out->i))) { + out->k = 0; + } + + children_scriptsize += t.script_size; + } + + int count_not_s = node->n - count_s; + + out->s = count_not_s <= node->k - 1 ? 1 : 0; + out->e = count_s == node->n ? 1 : 0; + + out->m = (count_e == node->n && count_not_s <= node->k) ? 1 : 0; + + out->x = 0; + + out->script_size = children_scriptsize + n_children + get_push_script_size(node->k); + + if (0 > compute_thresh_ops(node, &out->ops, ctx)) return -1; + if (0 > compute_thresh_stacksize(node, &out->ss, ctx)) return -1; + + return 0; + } + case TOKEN_A: { + const policy_node_with_script_t *node = (const policy_node_with_script_t *) policy_node; + policy_node_ext_info_t x; + + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->script), &x, ctx)) + return -1; + + out->s = x.s; + out->f = x.f; + out->e = x.e; + + out->m = x.m; + + out->g = x.g; + out->h = x.h; + out->i = x.i; + out->j = x.j; + out->k = x.k; + + out->script_size = x.script_size + 2; + + out->ops = (miniscript_ops_t){2 + x.ops.count, x.ops.sat, x.ops.dsat}; + out->ss = x.ss; + + return 0; + } + case TOKEN_S: + case TOKEN_N: { + const policy_node_with_script_t *node = (const policy_node_with_script_t *) policy_node; + policy_node_ext_info_t x; + + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->script), &x, ctx)) + return -1; + + out->s = x.s; + out->f = x.f; + out->e = x.e; + + out->m = x.m; + + out->g = x.g; + out->h = x.h; + out->i = x.i; + out->j = x.j; + out->k = x.k; + + if (policy_node->type == TOKEN_S) out->x = x.x; + + out->script_size = x.script_size + 1; + + out->ops = (miniscript_ops_t){1 + x.ops.count, x.ops.sat, x.ops.dsat}; + out->ss = x.ss; + + return 0; + } + case TOKEN_C: { + const policy_node_with_script_t *node = (const policy_node_with_script_t *) policy_node; + policy_node_ext_info_t x; + + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->script), &x, ctx)) + return -1; + + out->s = 1; + out->f = x.f; + out->e = x.e; + + out->m = x.m; + + out->g = x.g; + out->h = x.h; + out->i = x.i; + out->j = x.j; + out->k = x.k; + + out->x = x.x; + + out->script_size = x.script_size + 1; + + out->x = 0; + + out->ops = (miniscript_ops_t){1 + x.ops.count, x.ops.sat, x.ops.dsat}; + out->ss = x.ss; + + return 0; + } + case TOKEN_D: { + const policy_node_with_script_t *node = (const policy_node_with_script_t *) policy_node; + policy_node_ext_info_t x; + + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->script), &x, ctx)) + return -1; + + out->s = x.s; + out->e = 1; + + out->m = x.m; + + out->g = x.g; + out->h = x.h; + out->i = x.i; + out->j = x.j; + out->k = x.k; + + out->script_size = x.script_size + 3; + + out->ops = (miniscript_ops_t){3 + x.ops.count, x.ops.sat, 0}; + out->ss = (miniscript_stacksize_t){sumcheck(1, x.ss.sat), 1}; + + return 0; + } + case TOKEN_T: { // and_v(X,1) + const policy_node_with_script_t *node = (const policy_node_with_script_t *) policy_node; + policy_node_ext_info_t x; + + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->script), &x, ctx)) + return -1; + + out->s = x.s; + out->f = 1; + + out->m = x.m; + + out->g = x.g; + out->h = x.h; + out->i = x.i; + out->j = x.j; + out->k = x.k; + + out->script_size = x.script_size + 1; + + out->ops = (miniscript_ops_t){x.ops.count, x.ops.sat, -1}; + + out->ss = (miniscript_stacksize_t){x.ss.sat, -1}; + + return 0; + } + case TOKEN_V: { + const policy_node_with_script_t *node = (const policy_node_with_script_t *) policy_node; + policy_node_ext_info_t x; + + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->script), &x, ctx)) + return -1; + + out->s = x.s; + out->f = 1; + + out->m = x.m; + + out->g = x.g; + out->h = x.h; + out->i = x.i; + out->j = x.j; + out->k = x.k; + + out->script_size = x.script_size + x.x; + + out->ops = (miniscript_ops_t){x.ops.count + x.x, x.ops.sat, -1}; + out->ss = (miniscript_stacksize_t){x.ss.sat, -1}; + + return 0; + } + case TOKEN_J: { + const policy_node_with_script_t *node = (const policy_node_with_script_t *) policy_node; + policy_node_ext_info_t x; + + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->script), &x, ctx)) + return -1; + + out->s = x.s; + out->e = x.f; + + out->m = x.m; + + out->g = x.g; + out->h = x.h; + out->i = x.i; + out->j = x.j; + out->k = x.k; + + out->script_size = x.script_size + 4; + + out->ops = (miniscript_ops_t){4 + x.ops.count, x.ops.sat, 0}; + out->ss = (miniscript_stacksize_t){x.ss.sat, 1}; + + return 0; + } + case TOKEN_L: // or_i(0,X) + case TOKEN_U: { // or_i(X,0) + const policy_node_with_script_t *node = (const policy_node_with_script_t *) policy_node; + policy_node_ext_info_t x; + + if (0 > compute_miniscript_policy_ext_info(r_policy_node(&node->script), &x, ctx)) + return -1; + + out->s = x.s; + out->f = 0; + out->e = x.f; + + out->m = x.m; + + out->g = x.g; + out->h = x.h; + out->i = x.i; + out->j = x.j; + out->k = x.k; + + out->script_size = x.script_size + 4; + + out->ops = (miniscript_ops_t){3 + x.ops.count, x.ops.sat, x.ops.dsat}; + out->ss = (miniscript_stacksize_t){sumcheck(x.ss.sat, 1), + maxcheck(1, sumcheck(x.ss.dsat, 1))}; + + return 0; + } + case TOKEN_SORTEDMULTI: + case TOKEN_SORTEDMULTI_A: + case TOKEN_WPKH: + case TOKEN_SH: + case TOKEN_WSH: + case TOKEN_TR: + PRINTF("Not miniscript: %d\n", policy_node->type); + return -1; + default: + PRINTF("%s, %d\n", __FILE__, __LINE__); + PRINTF("Unknown token: %d\n", policy_node->type); + return -1; + } +} + +#ifndef SKIP_FOR_CMOCKA + +void get_policy_wallet_id(policy_map_wallet_header_t *wallet_header, uint8_t out[static 32]) { + cx_sha256_t wallet_hash_context; + cx_sha256_init(&wallet_hash_context); + + crypto_hash_update_u8(&wallet_hash_context.header, wallet_header->version); + crypto_hash_update_u8(&wallet_hash_context.header, wallet_header->name_len); + crypto_hash_update(&wallet_hash_context.header, wallet_header->name, wallet_header->name_len); + + crypto_hash_update_varint(&wallet_hash_context.header, wallet_header->descriptor_template_len); + + if (wallet_header->version == WALLET_POLICY_VERSION_V1) { + crypto_hash_update(&wallet_hash_context.header, + wallet_header->descriptor_template, + wallet_header->descriptor_template_len); + } else { // WALLET_POLICY_VERSION_V2 + crypto_hash_update(&wallet_hash_context.header, + wallet_header->descriptor_template_sha256, + 32); + } + + crypto_hash_update_varint(&wallet_hash_context.header, wallet_header->n_keys); + + crypto_hash_update(&wallet_hash_context.header, wallet_header->keys_info_merkle_root, 32); + + crypto_hash_digest(&wallet_hash_context.header, out, 32); +} + +#endif // SKIP_FOR_CMOCKA diff --git a/src/common/wallet.h b/src/common/wallet.h index a08c1562c..29fc0a1a1 100644 --- a/src/common/wallet.h +++ b/src/common/wallet.h @@ -1,102 +1,99 @@ #pragma once #include +#include #include "ledger_assert.h" #include "common/bip32.h" #include "common/buffer.h" -#include "common/wif.h" #include "../constants.h" +#include "../crypto.h" #ifndef SKIP_FOR_CMOCKA #include "os.h" #include "cx.h" #endif -/** - * Wallet types - */ -/// Wallet type: policy map -#define WALLET_TYPE_POLICY_MAP 1 - #ifdef HAVE_LIQUID -/// Maximum supported number of keys for a policy map. -#define MAX_POLICY_MAP_COSIGNERS 7 -#else -/// Maximum supported number of keys for a policy map. -#define MAX_POLICY_MAP_COSIGNERS 5 +#include "liquid_wallet.h" #endif -/// Maximum supported number of keys for a policy map. -#define MAX_POLICY_MAP_KEYS MAX_POLICY_MAP_COSIGNERS +// The maximum number of keys supported for CHECKMULTISIG{VERIFY} +// bitcoin-core supports up to 20, but we limit to 16 as bigger pushes require special handling. +#define MAX_PUBKEYS_PER_MULTISIG 16 -/// Maximum length of public key wildcard in characters -#define MAX_POLICY_MAP_KEY_WILDCARD_LEN (sizeof("/<0;1>/*") - 1) +#define WALLET_POLICY_VERSION_V1 1 // the legacy version of the first release +#define WALLET_POLICY_VERSION_V2 2 // the current full version // The string describing a pubkey can contain: // - (optional) the key origin info, which we limit to 46 bytes (2 + 8 + 3*12 = 46 bytes) // - the xpub itself (up to 113 characters) -// - optional, the wildcard suffix. +// - optional, the "/**" suffix. // Therefore, the total length of the key info string is at most 162 bytes. -/// Maximum length of key information string -#define MAX_POLICY_KEY_INFO_LEN (46 + MAX_SERIALIZED_PUBKEY_LENGTH + \ - MAX_POLICY_MAP_KEY_WILDCARD_LEN) - -#ifdef HAVE_LIQUID -/// Maximum length of blinding key descriptor (length of Base58-encoded xpub) -#define MAX_POLICY_MAP_BLINDING_KEY_LENGTH 112 -// Enough to store "ct(,sh(wsh(sortedmulti(15,@0,@1,...,@n))))" -/// Length of policy map string -#define MAX_POLICY_MAP_STR_LENGTH ( sizeof("ct(,sh(wsh(sortedmulti(15))))") - 1 + \ - MAX_POLICY_MAP_BLINDING_KEY_LENGTH + \ - 4 * MAX_POLICY_MAP_COSIGNERS ) +#define MAX_POLICY_KEY_INFO_LEN_V1 (46 + MAX_SERIALIZED_PUBKEY_LENGTH + 3) + +// In V1, there is no "/**" suffix, as that is no longer part of the key +#define MAX_POLICY_KEY_INFO_LEN_V2 (46 + MAX_SERIALIZED_PUBKEY_LENGTH) + +#define MAX_POLICY_KEY_INFO_LEN MAX(MAX_POLICY_KEY_INFO_LEN_V1, MAX_POLICY_KEY_INFO_LEN_V2) + +// longest supported policy in V1 is "sh(wsh(sortedmulti(5,@0,@1,@2,@3,@4)))", 38 bytes +#define MAX_DESCRIPTOR_TEMPLATE_LENGTH_V1 40 + +#ifdef TARGET_NANOS +// this amount should be enough for many useful policies +#define MAX_DESCRIPTOR_TEMPLATE_LENGTH_V2 192 +// As the in-memory representation of wallet policy is implementation-specific, we would like +// this limit not to be hit for descriptor templates below the maximum length +// MAX_DESCRIPTOR_TEMPLATE_LENGTH_V2. +// A policy requiring about 300 bytes after parsing was reported by developers working on the Liana +// miniscript wallet. 320 = 64*5, so that it is a multiple of the NVRAM page size and fits all known +// cases. +#define MAX_WALLET_POLICY_BYTES 320 #else -// Enough to store "sh(wsh(sortedmulti(15,@0,@1,@2,@3,@4,@5,@6,@7,@8,@9,@10,@11,@12,@13,@14)))" -/// Length of policy map string -#define MAX_POLICY_MAP_STR_LENGTH 74 +// On larger devices, we can afford to reserve a lot more memory. +// We do not expect these limits to be reached in practice any time soon, and the value +// of MAX_WALLET_POLICY_BYTES is chosen so that MAX_DESCRIPTOR_TEMPLATE_LENGTH_V2 and +// MAX_WALLET_POLICY_BYTES are approximately in the same proportion as defined on NanoS. +#define MAX_DESCRIPTOR_TEMPLATE_LENGTH_V2 512 +#define MAX_WALLET_POLICY_BYTES 896 #endif -/// Maximum length of wallet policy -#define MAX_POLICY_MAP_NAME_LENGTH 16 +#define MAX_DESCRIPTOR_TEMPLATE_LENGTH \ + MAX(MAX_DESCRIPTOR_TEMPLATE_LENGTH_V1, MAX_DESCRIPTOR_TEMPLATE_LENGTH_V2) -// at most 126 bytes +// at most 92 bytes // wallet type (1 byte) // name length (1 byte) -// name (max MAX_POLICY_MAP_NAME_LENGTH bytes) +// name (max MAX_WALLET_NAME_LENGTH bytes) // policy length (1 byte) -// policy (max MAX_POLICY_MAP_STR_LENGTH bytes) +// policy (max MAX_DESCRIPTOR_TEMPLATE_LENGTH bytes) // n_keys (1 byte) // keys_merkle_root (32 bytes) -/// Maximum length of serialized wallet policy -#define MAX_POLICY_MAP_SERIALIZED_LENGTH \ - (1 + 1 + MAX_POLICY_MAP_NAME_LENGTH + 1 + MAX_POLICY_MAP_STR_LENGTH + 1 + 32) +#define MAX_WALLET_POLICY_SERIALIZED_LENGTH_V1 \ + (1 + 1 + MAX_WALLET_NAME_LENGTH + 1 + MAX_DESCRIPTOR_TEMPLATE_LENGTH_V1 + 1 + 32) -#ifdef HAVE_LIQUID -/// Maximum size of a parsed policy map in memory -#define MAX_POLICY_MAP_BYTES 208 -#else -/// Maximum size of a parsed policy map in memory -#define MAX_POLICY_MAP_BYTES 128 -#endif +// at most 100 bytes +// wallet type (1 byte) +// name length (1 byte) +// name (max MAX_WALLET_NAME_LENGTH bytes) +// policy length (varint, up to 9 bytes) +// policy hash 32 +// n_keys (varint, up to 9 bytes) +// keys_merkle_root (32 bytes) +#define MAX_WALLET_POLICY_SERIALIZED_LENGTH_V2 (1 + 1 + MAX_WALLET_NAME_LENGTH + 9 + 32 + 9 + 32) -// Currently only multisig is supported -/// Maximum length of wallet policy -#define MAX_POLICY_MAP_LEN MAX_MULTISIG_POLICY_MAP_LENGTH +#define MAX_WALLET_POLICY_SERIALIZED_LENGTH \ + MAX(MAX_WALLET_POLICY_SERIALIZED_LENGTH_V1, MAX_WALLET_POLICY_SERIALIZED_LENGTH_V2) -/// Public key wildcards defining the rules for child key derivation. -typedef enum { - /// No wildcard. - KEY_WILDCARD_NONE = 0, - /// Any derivation is allowed: `/**`. - KEY_WILDCARD_ANY = 1, - /// Internal or external chain with an arbitrary address index: `/<0;1>/*`. - KEY_WILDCARD_STANDARD_CHAINS, - /// External chain with an arbitrary address index: `/0/*`. - KEY_WILDCARD_EXTERNAL_CHAIN, - /// Internal chain (change) with an arbitrary address index: `/1/*`. - KEY_WILDCARD_INTERNAL_CHAIN, -} policy_map_key_wildcard_id_t; +// maximum depth of a taproot tree that we support +// (here depth 1 means only the root of the taptree) +#ifdef TARGET_NANOS +#define MAX_TAPTREE_POLICY_DEPTH 4 +#else +#define MAX_TAPTREE_POLICY_DEPTH 9 +#endif /// Public key information typedef struct { @@ -108,44 +105,51 @@ typedef struct { uint8_t master_key_derivation_len; /// Set to 1 if key has origin data: master key fingerprint and derivation path uint8_t has_key_origin; - /// Wildcard terminating the key string, one of policy_map_key_wildcard_id_t constants. - /// Nonzero if the key ends with a wildcard. - uint8_t wildcard_id; + /// Wildcard flag: true iff the keys ends with the wildcard (/ followed by **) + uint8_t has_wildcard; /// Serialized extended public key - char ext_pubkey[MAX_SERIALIZED_PUBKEY_LENGTH + 1]; + serialized_extended_pubkey_t ext_pubkey; } policy_map_key_info_t; /// Wallet header typedef struct { - /// Wallet type - uint8_t type; // Currently the only supported value is WALLET_TYPE_POLICY_MAP + // Policy version, supported values: WALLET_POLICY_VERSION_V1 and WALLET_POLICY_VERSION_V2 + uint8_t version; /// Length of wallet name uint8_t name_len; + /// Length of descriptor template + uint16_t descriptor_template_len; /// Wallet name char name[MAX_WALLET_NAME_LENGTH + 1]; - /// Length of wallet policy map - uint16_t policy_map_len; - /// Wallet policy map as a string - char policy_map[MAX_POLICY_MAP_STR_LENGTH]; + union { + /// Descriptor template + char descriptor_template[MAX_DESCRIPTOR_TEMPLATE_LENGTH_V1]; // used in V1 + /// Hash of descriptor template + uint8_t descriptor_template_sha256[32]; // used in V2 + }; /// Number of public keys size_t n_keys; - /// /// Merkle root of the vector of key descriptors - uint8_t keys_info_merkle_root[32]; // root of the Merkle tree of the keys information + /// Root of the Merkle tree of the keys information + uint8_t keys_info_merkle_root[32]; } policy_map_wallet_header_t; /// Type of policy node typedef enum { - TOKEN_SH, ///< Pay to script hash - TOKEN_WSH, ///< Pay to witness script hash - // TOKEN_PK, // disabled, but it will be needed for taproot - TOKEN_PKH, ///< Pay to public key hash - TOKEN_WPKH, ///< Pay to witness public key hash - // TOKEN_COMBO // disabled, does not mix well with the script policy language - TOKEN_MULTI, ///< Multisig - TOKEN_SORTEDMULTI, ///< Multisig with sorted keys - TOKEN_TR, ///< Taproot - // TOKEN_ADDR, // unsupported - // TOKEN_RAW, // unsupported + TOKEN_SH, + TOKEN_WSH, + TOKEN_PK, + TOKEN_PKH, + TOKEN_WPKH, + // TOKEN_COMBO // disabled, does not mix well with the script policy language + TOKEN_MULTI, + TOKEN_MULTI_A, + TOKEN_SORTEDMULTI, + TOKEN_SORTEDMULTI_A, + TOKEN_TR, + // TOKEN_ADDR, // unsupported + // TOKEN_RAW, // unsupported + +#ifdef HAVE_LIQUID TOKEN_CT, ///< ELIP 150: confidential transaction top-level wrapper TOKEN_SLIP77, ///< ELIP 150: SLIP-0077-derived master private blinding key TOKEN_HEX_PUB, ///< ELIP 150: compressed public key, parsed from 66 hex string @@ -153,190 +157,377 @@ typedef enum { TOKEN_XPUB, ///< ELIP 150: compressed public key, parsed from xpub TOKEN_XPRV, ///< ELIP 150: private key, parsed from xprv TOKEN_ELIP151, ///< ELIP 151: elip151 tag indicating ELIP 151 blinding key derivation -} PolicyNodeType; +#endif -// TODO: the following structures are using size_t for all integers to avoid alignment problems; -// if memory is an issue, we could use a packed version instead, but care needs to be taken -// when accessing pointers, since they would be unaligned. + /* miniscript tokens */ + + TOKEN_0, + TOKEN_1, + TOKEN_PK_K, + TOKEN_PK_H, + TOKEN_OLDER, + TOKEN_AFTER, + TOKEN_SHA256, + TOKEN_HASH256, + TOKEN_RIPEMD160, + TOKEN_HASH160, + TOKEN_ANDOR, + TOKEN_AND_V, + TOKEN_AND_B, + TOKEN_AND_N, + TOKEN_OR_B, + TOKEN_OR_C, + TOKEN_OR_D, + TOKEN_OR_I, + TOKEN_THRESH, + // wrappers + TOKEN_A, + TOKEN_S, + TOKEN_C, + TOKEN_T, + TOKEN_D, + TOKEN_V, + TOKEN_J, + TOKEN_N, + TOKEN_L, + TOKEN_U, + + TOKEN_INVALID = -1 // used to mark invalid tokens +} PolicyNodeType; -/// Abstract type for all policy nodes -typedef struct { - /// Type of this policy node +typedef enum { + MINISCRIPT_CONTEXT_P2WSH, + MINISCRIPT_CONTEXT_TAPSCRIPT, +} MiniscriptContext; + +// miniscript basic types +#define MINISCRIPT_TYPE_B 0 +#define MINISCRIPT_TYPE_V 1 +#define MINISCRIPT_TYPE_K 2 +#define MINISCRIPT_TYPE_W 3 + +// The various structures used to represent the wallet policy abstract syntax tree contain a lot +// pointers; using a regular pointer would make each of them 4 bytes long, moreover causing +// additional loss of memory due to padding. Instead, we use a 2-bytes relative pointer to point to +// policy_nodes, representing a non-negative offset from the position of the structure itself. +// This reduces the memory utilization of those pointers, and moreover it allows to reduce padding +// in other structures, as they no longer contain 32-bit pointers. +// Moreover, avoiding all pointers makes sure that the structure can be copied to a different +// location if needed (making sure the destination is aligned due to the platform restrictions). +// The following macro defines the data structure and the helper methods for a relative pointer to a +// type. The code does not depend on the type, but this allows to keep strong types when dealing +// with relative pointers, which otherwise would require numerous type casts. + +// Defines a relative pointer type for name##t, and the conversion functions to/from a relative +// pointer and a pointer to name##_t. +// Relative pointers use an uint16_t to represent the offset; therefore, the offset must be +// non-negative and at most 65535. +// An offset of 0 corresponds to a NULL pointer in the conversion (and vice-versa). +#define DEFINE_REL_PTR(name, type) \ + /* \ + * Relative pointer structure for `type`. \ + * \ + * This structure holds an offset that is used to calculate the actual pointer \ + * to a `type` object. \ + */ \ + typedef struct rptr_##name##_s { \ + uint16_t offset; \ + } rptr_##name##_t; \ + \ + /* \ + * Resolve a relative pointer to a `type` object. \ + * \ + * @param ptr A pointer to the relative pointer structure. \ + * @return A pointer to the `type` object. \ + */ \ + static inline type *r_##name(const rptr_##name##_t *ptr) { \ + if (ptr->offset == 0) \ + return NULL; \ + else \ + return (type *) ((const uint8_t *) ptr + ptr->offset); \ + } \ + \ + /* \ + * Returns true when the offset of the relative pointer is 0 (equivalent to a NULL pointer). \ + * \ + * @param relative_ptr A relative pointer. \ + */ \ + static inline bool isnull_##name(const rptr_##name##_t *ptr) { \ + return ptr->offset == 0; \ + } \ + \ + /* \ + * Initialize a relative pointer to a `type` object. \ + * \ + * @param relative_ptr A pointer to the relative pointer structure to be initialized. \ + * @param obj A pointer to the `type` object. \ + */ \ + static inline void i_##name(rptr_##name##_t *relative_ptr, void *obj) { \ + if (obj == NULL) \ + relative_ptr->offset = 0; \ + else { \ + int offset = (uint8_t *) obj - (uint8_t *) relative_ptr; \ + LEDGER_ASSERT(offset >= 0 && offset < UINT16_MAX, \ + "Relative pointer's offset must be between 0 and 65535"); \ + relative_ptr->offset = (uint16_t) offset; \ + } \ + } + +// 2 bytes +typedef struct policy_node_s { PolicyNodeType type; - /// Data specific to subtype - void *node_data; // subtypes will redefine this + struct { + unsigned int is_miniscript : 1; + unsigned int miniscript_type : 2; // B, C, K or W + unsigned int miniscript_mod_z : 1; + unsigned int miniscript_mod_o : 1; + unsigned int miniscript_mod_n : 1; + unsigned int miniscript_mod_d : 1; + unsigned int miniscript_mod_u : 1; + } flags; // 1 byte } policy_node_t; -/// Policy node with script: sh(), wsh() +DEFINE_REL_PTR(policy_node, policy_node_t) + +typedef struct miniscript_ops_s { + uint16_t count; // non-push opcodes + int16_t sat; // number of keys in possibly executed OP_CHECKMULTISIG(VERIFY)s to satisfy (-1 + // for "invalid") + int16_t dsat; // number of keys in possibly executed OP_CHECKMULTISIG(VERIFY)s to dissatisfy + // (-1 for "invalid") +} miniscript_ops_t; + +typedef struct miniscript_stacksize_s { + int16_t sat; // Maximum stack size to satisfy + int16_t dsat; // Maximum stack size to dissatisfy +} miniscript_stacksize_t; + +typedef struct policy_node_ext_info_s { + miniscript_ops_t ops; + miniscript_stacksize_t ss; + uint16_t script_size; + + unsigned int s : 1; // has a signature + + unsigned int f : 1; // forced + unsigned int e : 1; + + unsigned int m : 1; // non-malleable property + + // flags related to timelocks + unsigned int g : 1; // older: contains relative time timelock (csv_time) + unsigned int h : 1; // older: contains relative height timelock (csv_height) + unsigned int i : 1; // after: contains time timelock (cltv_time) + unsigned int j : 1; // after: contains height timelock (cltv_height) + unsigned int k : 1; // does not contain a combination of height and time locks + + unsigned int x : 1; // the last opcode is not EQUAL, CHECKSIG, or CHECKMULTISIG +} policy_node_ext_info_t; + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcomment" +// The compiler doesn't like /** inside a block comment, so we disable this warning temporarily. + +/** Structure representing a key placeholder. + * In V1, it's the index of a key expression in the key informations array, which includes the final + * / ** step. + * In V2, it's the index of a key expression in the key informations array, plus the two + * numbers a, b in the //* derivation steps; here, the xpubs in the key informations + * array don't have extra derivation steps. + */ +#pragma GCC diagnostic pop +// 12 bytes +typedef struct { + // the following fields are only used in V2 + uint32_t num_first; // NUM_a of //* + uint32_t num_second; // NUM_b of //* + + // common between V1 and V2 + int16_t key_index; // index of the key +} policy_node_key_placeholder_t; + +DEFINE_REL_PTR(policy_node_key_placeholder, policy_node_key_placeholder_t) + +// 4 bytes +typedef struct { + struct policy_node_s base; +} policy_node_constant_t; + +// 4 bytes typedef struct { - /// Type of this policy node - PolicyNodeType type; // == TOKEN_SH, == TOKEN_WSH - /// Innder script - policy_node_t *script; + struct policy_node_s base; + rptr_policy_node_t script; } policy_node_with_script_t; -/// Policy node with key: pk(), pkh(), wpkh() +// 6 bytes typedef struct { - /// Type of this policy node - PolicyNodeType type; // == TOKEN_PK, == TOKEN_PKH, == TOKEN_WPKH - /// Key index - size_t key_index; // index of the key + struct policy_node_s base; + rptr_policy_node_t scripts[2]; +} policy_node_with_script2_t; + +// 8 bytes +typedef struct { + struct policy_node_s base; + rptr_policy_node_t scripts[3]; +} policy_node_with_script3_t; + +// generic type with pointer for up to 3 (but constant) number of child scripts +typedef policy_node_with_script3_t policy_node_with_scripts_t; + +// 4 bytes +typedef struct { + struct policy_node_s base; + rptr_policy_node_key_placeholder_t key_placeholder; } policy_node_with_key_t; -/// Multisig policy node: multi(), sortedmulti() +// 8 bytes +typedef struct { + struct policy_node_s base; + uint32_t n; +} policy_node_with_uint32_t; + +// 12 bytes typedef struct { - /// Type of this policy node - PolicyNodeType type; // == TOKEN_MULTI, == TOKEN_SORTEDMULTI - /// Threshold - size_t k; - /// Number of keys - size_t n; - /// Pointer to array of exactly n key indexes - size_t *key_indexes; + struct policy_node_s base; // type is TOKEN_MULTI or TOKEN_SORTEDMULTI + int16_t k; // threshold + int16_t n; // number of keys + rptr_policy_node_key_placeholder_t + key_placeholders; // pointer to array of exactly n key placeholders } policy_node_multisig_t; -/// Policy node ct() +// 8 bytes +struct policy_node_scriptlist_s; // forward declaration, as the struct is recursive + +DEFINE_REL_PTR(policy_node_scriptlist, struct policy_node_scriptlist_s) + +typedef struct policy_node_scriptlist_s { + rptr_policy_node_scriptlist_t next; + rptr_policy_node_t script; +} policy_node_scriptlist_t; + +// 12 bytes, (+ 8 bytes for every script) typedef struct { - /// Type of this policy node - PolicyNodeType type; // == TOKEN_CT - /// Master blinding key script, typically slip77() - policy_node_t *mbk_script; - /// Inner script - policy_node_t *script; -} policy_node_ct_t; - -/// Policy node containing ELIP 150 blinding public key + struct policy_node_s base; // type is TOKEN_THRESH + int16_t k; // threshold + int16_t n; // number of child scripts + rptr_policy_node_scriptlist_t + scriptlist; // pointer to array of exactly n pointers to child scripts +} policy_node_thresh_t; + typedef struct { - /// Type of this policy node, one of: TOKEN_HEX_PUB, TOKEN_XPUB - PolicyNodeType type; - /// Compressed public key - uint8_t pubkey[33]; -} policy_node_blinding_pubkey_t; + struct policy_node_s base; // type is TOKEN_SHA160 or TOKEN_HASH160 + uint8_t h[20]; +} policy_node_with_hash_160_t; -/// Policy node containing ELIP 150 blinding private key typedef struct { - /// Type of this policy node, one of: TOKEN_SLIP77, TOKEN_HEX_PRV, TOKEN_XPRV - PolicyNodeType type; - /// Private key - uint8_t privkey[32]; -} policy_node_blinding_privkey_t; + struct policy_node_s base; // type is TOKEN_SHA256 or TOKEN_HASH256 + uint8_t h[32]; +} policy_node_with_hash_256_t; + +struct policy_node_tree_s; // forward declaration, as the struct is recursive +DEFINE_REL_PTR(policy_node_tree, struct policy_node_tree_s) + +// a TREE is either a script, or a {TREE,TREE} +typedef struct policy_node_tree_s { + bool is_leaf; // if this is a leaf, then it contains a pointer to a SCRIPT; + // otherwise, it contains two pointers to TREE expressions. + union { + rptr_policy_node_t script; // pointer to a policy_node_with_script_t + struct { + rptr_policy_node_tree_t left_tree; // pointer to a policy_node_tree_s + rptr_policy_node_tree_t right_tree; // pointer to a policy_node_tree_s + }; + }; +} policy_node_tree_t; -/** - * Checks if the policy node has a private (blinding) key. - * - * @param[in] node - * Pointer to policy node. - * - * @return true if given policy node has a private blinding key, false otherwise. - */ -static inline bool policy_node_has_private_key(const policy_node_t *node) { - return ( node->type == TOKEN_SLIP77 || - node->type == TOKEN_HEX_PRV || - node->type == TOKEN_XPRV ); -} +typedef struct { + struct policy_node_s base; + rptr_policy_node_key_placeholder_t key_placeholder; + rptr_policy_node_tree_t tree; // NULL if tr(KP) +} policy_node_tr_t; /** - * Checks if the policy node has a compressed public (blinding) key. + * Parses the string in the `buffer` as a serialized policy map into `header` * - * @param[in] node - * Pointer to policy node. - * - * @return true if given policy node has a private blinding key, false otherwise. + * @param buffer the pointer to the buffer_t to parse + * @param header the pointer to a `policy_map_wallet_header_t` structure + * @return a negative number on failure, 0 on success. */ -static inline bool policy_node_has_public_key(const policy_node_t *node) { - return ( node->type == TOKEN_HEX_PUB || - node->type == TOKEN_XPUB ); -} +int read_wallet_policy_header(buffer_t *buffer, policy_map_wallet_header_t *header); -/** - * Reads wallet policy from buffer and decodes wallet header. - * - * @param[in,out] buffer - * Pointer to buffer storing serialized wallet policy. - * @param[out] header - * Pointer to structure instance receiving decoded wallet header. - * - * @return 0 if successful, a negative number on error. - */ -int read_policy_map_wallet(buffer_t *buffer, policy_map_wallet_header_t *header); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcomment" +// The compiler doesn't like /** inside a block comment, so we disable this warning temporarily. /** * Parses a string representing the key information for a policy map wallet. - * * The string is compatible with the output descriptor format, except that the pubkey must _not_ * have derivation steps (the key origin info, if present, does have derivation steps from the * master key fingerprint). The serialized base58check-encoded pubkey is _not_ validated. * - * For example: + * For WALLET_POLICY_VERSION_V1, the final suffix /** must be present and is part of the key + * information. For WALLET_POLICY_VERSION_V2, parsing stops at the xpub. + + * Example (V1): + * "[d34db33f/44'/0'/0']xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/**" + * Example (V2): * "[d34db33f/44'/0'/0']xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL" - * - * @param[in,out] buffer - * Pointer to buffer storing serialized wallet policy. - * @param[out] out - * Pointer to structure instance receiving parsed key information. - * - * @return 0 if successful, a negative number on error. */ -int parse_policy_map_key_info(buffer_t *buffer, policy_map_key_info_t *out); +int parse_policy_map_key_info(buffer_t *buffer, policy_map_key_info_t *out, int version); + +#pragma GCC diagnostic pop /** - * Parses a script expression from the input buffer. + * Parses `in_buf` as a wallet policy descriptor template, constructing the abstract syntax tree in + * the buffer `out` of size `out_len`. * - * During parsing this function allocates the nodes and variables in the output buffer. The initial - * pointer in output buffer will contain the root node of the script. - * - * @param[in,out] in_buf - * Input buffer with a script expression to parse. - * @param[out] out - * Output buffer which receives a tree-like structure of nodes. - * @param out_len - * Size of the output buffer. - * @param bip32_pubkey_version - * Version prefix to use for the public key. - * @param bip32_privkey_version - * Version prefix to use for the private key. - * - * @return 0 if successful, a negative number on error. + * When parsing descriptors containing miniscript, this fails if the miniscript is not correct, + * as defined by the miniscript type system. + * This does NOT check non-malleability of the miniscript. + * @param in_buf the buffer containing the policy map to parse + * @param out the pointer to the output buffer, which must be 4-byte aligned + * @param out_len the length of the output buffer + * @param version either WALLET_POLICY_VERSION_V1 or WALLET_POLICY_VERSION_V2 + * @return The memory size of the parsed descriptor template (that is, the number of bytes consumed + * in the output buffer) on success; -1 in case of parsing error, if the output buffer is unaligned, + * or if the output buffer is too small. */ -int parse_policy_map(buffer_t *in_buf, - void *out, - size_t out_len, - uint32_t bip32_pubkey_version, - uint32_t bip32_privkey_version); +int parse_descriptor_template(buffer_t *in_buf, void *out, size_t out_len, int version); /** - * Checks if the policy specifies a multisignature wallet. + * Given a valid policy that the bitcoin app is able to sign, returns the segwit version. + * The result is undefined for a node that is not a valid root of a wallet policy that the bitcoin + * app is able to sign. * - * @param[in] policy - * Pointer to wallet's top-level policy node. - * - * @return true if the wallet is multisig, false otherwise. + * @param policy the root node of the wallet policy + * @return -1 if it's a legacy policy, 0 if it is a policy for SegwitV0 (possibly nested), 1 for + * SegwitV1 (taproot). */ -bool policy_is_multisig(const policy_node_t *policy); - -#ifndef SKIP_FOR_CMOCKA +int get_policy_segwit_version(const policy_node_t *policy); /** - * Computes wallet identifier (sha256 of the serialization). + * Computes additional properties of the given miniscript, to detect malleability and other security + * properties to assess if the miniscript is sane. + * The stack size limits are only valid for miniscript within wsh. * - * @param[in] wallet_header - * Wallet header. - * @param[out] out - * Output buffer receiving a computed 32-byte wallet identifier. + * @param policy_node a pointer to a miniscript policy node + * @param out pointer to the output policy_node_ext_info_t + * @param ctx either MINISCRIPT_CONTEXT_P2WSH or MINISCRIPT_CONTEXT_TAPSCRIPT + * @return a negative number on error; 0 on success. */ -void get_policy_wallet_id(const policy_map_wallet_header_t *wallet_header, uint8_t out[static 32]); +int compute_miniscript_policy_ext_info(const policy_node_t *policy_node, + policy_node_ext_info_t *out, + MiniscriptContext ctx); + +#ifndef SKIP_FOR_CMOCKA /** - * Validates the public key stored in key information for a policy map wallet. - * - * @param[in] key_info - * Key information. - * @param bip32_pubkey_version - * Version prefix to use for the public key. + * Computes the id of the policy map wallet (commitment to header + policy map + keys_info), as per + * specifications. * - * @return true if key is valid, false otherwise. + * @param wallet_header + * @param out a pointer to a 32-byte array for the output */ -bool validate_policy_map_extended_pubkey(const policy_map_key_info_t *key_info, - uint32_t bip32_pubkey_version); +void get_policy_wallet_id(policy_map_wallet_header_t *wallet_header, uint8_t out[static 32]); #endif diff --git a/src/common/write.c b/src/common/write.c index 34d78ae98..824e69e9a 100644 --- a/src/common/write.c +++ b/src/common/write.c @@ -1,5 +1,5 @@ /***************************************************************************** - * (c) 2021 Ledger SAS. + * (c) 2024 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/constants.h b/src/constants.h index 222b16fac..6482f0b21 100644 --- a/src/constants.h +++ b/src/constants.h @@ -1,29 +1,14 @@ #pragma once -/** - * Instruction class of the Bitcoin application. - */ -#define CLA_APP_LEGACY 0xE0 - /** * Instruction class of the Bitcoin application. */ #define CLA_APP 0xE1 /** - * Length of APPNAME variable in the Makefile. - */ -#define APPNAME_LEN (sizeof(APPNAME) - 1) - -/** - * Maximum length of MAJOR_VERSION || MINOR_VERSION || PATCH_VERSION. - */ -#define APPVERSION_LEN 3 - -/** - * Maximum length of application name. + * Encodes the protocol version, which is passed in the p2 field of APDUs. */ -#define MAX_APPNAME_LEN 64 +#define CURRENT_PROTOCOL_VERSION 1 /** * Maximum length of SegWit prefix in characters @@ -41,13 +26,7 @@ * Maximum length of a serialized address (in characters). * Segwit addresses can reach 74 characters; 76 on regtest because of the longer "bcrt" prefix. */ -#ifdef COIN_NATIVE_SEGWIT_PREFIX #define MAX_ADDRESS_LENGTH_STR (72 + sizeof(COIN_NATIVE_SEGWIT_PREFIX)) -#else -// To be removed once altcoins are moved to a separate repo, as COIN_NATIVE_SEGWIT_PREFIX -// will always be defined -#define MAX_ADDRESS_LENGTH_STR 74 -#endif #endif // HAVE_LIQUID /** @@ -60,11 +39,6 @@ */ #define MAX_DER_SIG_LEN 72 -/** - * Exponent used to convert mBTC to BTC unit (N BTC = N * 10^3 mBTC). - */ -#define EXPONENT_SMALLEST_UNIT 3 - /** * Maximum scriptPubKey length for an input that we can sign. */ @@ -78,14 +52,20 @@ /** * Maximum length of a wallet registered into the device (characters), excluding terminating NULL. */ -#define MAX_WALLET_NAME_LENGTH 16 +#define MAX_WALLET_NAME_LENGTH 64 /** * Maximum length (characters) of a base58check-encoded serialized extended pubkey. */ #define MAX_SERIALIZED_PUBKEY_LENGTH 113 +/** + * Maximum number of inputs supported while signing a transaction. + */ +#define MAX_N_INPUTS_CAN_SIGN 512 + // SIGHASH flags +#define SIGHASH_DEFAULT 0x00000000 #define SIGHASH_ALL 0x00000001 #define SIGHASH_NONE 0x00000002 #define SIGHASH_SINGLE 0x00000003 @@ -119,3 +99,10 @@ * Currently supported types: 'transaction', 'issuance', 'reissuance', 'burn' */ #define MAX_TRANSACTION_TYPE_LEN 15 + +#define SEQUENCE_LOCKTIME_TYPE_FLAG (1 << 22) +#define LOCKTIME_THRESHOLD 500000000 + +#define MAX_STANDARD_P2WSH_STACK_ITEMS 100U +#define MAX_STANDARD_P2WSH_SCRIPT_SIZE 3600U +#define MAX_OPS_PER_SCRIPT 201U \ No newline at end of file diff --git a/src/crypto.c b/src/crypto.c index 21b00d124..d28dcf264 100644 --- a/src/crypto.c +++ b/src/crypto.c @@ -1,6 +1,6 @@ /***************************************************************************** * Ledger App Bitcoin. - * (c) 2021 Ledger SAS. + * (c) 2024 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +25,10 @@ #include "cx_stubs.h" #include "cx_ecfp.h" #include "ox_ec.h" +#include "cx_ram.h" +#include "lcx_ripemd160.h" +#include "cx_ripemd160.h" +#include "lib_standard_app/crypto_helpers.h" #endif #include "common/base58.h" @@ -33,19 +37,13 @@ #include "common/read.h" #include "common/write.h" -#include "crypto.h" +#include "cxram_stash.h" +#include "debug-helpers/debug.h" -#ifndef SKIP_FOR_CMOCKA -#include "cx_ram.h" -#include "lcx_ripemd160.h" -#include "cx_ripemd160.h" -#include "../../cxram_stash.h" -#endif +#include "crypto.h" #include "util.h" -#ifndef SKIP_FOR_CMOCKA - /** * Generator for secp256k1, value 'g' defined in "Standards for Efficient Cryptography" * (SEC2) 2.7.1. @@ -88,6 +86,9 @@ const uint8_t secp256k1_sqr_exponent[] = { static const uint8_t BIP0341_taptweak_tag[] = {'T', 'a', 'p', 'T', 'w', 'e', 'a', 'k'}; #endif +static const uint8_t BIP0341_tapbranch_tag[] = {'T', 'a', 'p', 'B', 'r', 'a', 'n', 'c', 'h'}; +static const uint8_t BIP0341_tapleaf_tag[] = {'T', 'a', 'p', 'L', 'e', 'a', 'f'}; + static int secp256k1_point(const uint8_t scalar[static 32], uint8_t out[static 65]); /** @@ -206,32 +207,19 @@ void crypto_hash_update_zeros(cx_hash_t *hash_context, size_t n_zeros) { } } -#ifndef _NR_cx_hash_ripemd160 -/** Missing in some SDKs, we implement it using the cxram section if needed. */ -static size_t cx_hash_ripemd160(const uint8_t *in, size_t in_len, uint8_t *out, size_t out_len) { - PRINT_STACK_POINTER(); - - if (out_len < CX_RIPEMD160_SIZE) { - return 0; - } - LEDGER_ASSERT(cx_ripemd160_init_no_throw((cx_ripemd160_t *) &G_cx) == CX_OK, "It never fails"); - LEDGER_ASSERT(cx_ripemd160_update((cx_ripemd160_t *) &G_cx, in, in_len) == CX_OK, - "It never fails"); - LEDGER_ASSERT(cx_ripemd160_final((cx_ripemd160_t *) &G_cx, out) == CX_OK, "It never fails"); - explicit_bzero((cx_ripemd160_t *) &G_cx, sizeof(cx_sha256_t)); - return CX_RIPEMD160_SIZE; -} -#endif // _NR_cx_hash_ripemd160 - void crypto_ripemd160(const uint8_t *in, uint16_t inlen, uint8_t out[static 20]) { - cx_hash_ripemd160(in, inlen, out, 20); + int res = cx_ripemd160_hash(in, inlen, out); + LEDGER_ASSERT(res == CX_OK, "Unexpected error in ripemd160 computation. Returned: %d", res); } void crypto_hash160(const uint8_t *in, uint16_t inlen, uint8_t out[static 20]) { PRINT_STACK_POINTER(); uint8_t buffer[32]; - cx_hash_sha256(in, inlen, buffer, 32); + int res = cx_hash_sha256(in, inlen, buffer, 32); + LEDGER_ASSERT(res == CX_SHA256_SIZE, + "Unexpected error in sha256 computation. Returned: %d", + res); crypto_ripemd160(buffer, 32, out); } @@ -278,37 +266,22 @@ bool crypto_get_compressed_pubkey_at_path(const uint32_t bip32_path[], uint8_t bip32_path_len, uint8_t pubkey[static 33], uint8_t chain_code[]) { - struct { - uint8_t prefix; - uint8_t raw_public_key[64]; - uint8_t chain_code[32]; - } keydata; - - cx_ecfp_private_key_t private_key = {0}; - cx_ecfp_public_key_t public_key; + uint8_t raw_public_key[65]; - bool ok = true; - - keydata.prefix = 0x04; // uncompressed public keys always start with 04 - // derive private key according to BIP32 path - ok = ok && 0 == crypto_derive_private_key(&private_key, keydata.chain_code, bip32_path, bip32_path_len); - - if (ok && chain_code != NULL) { - memmove(chain_code, keydata.chain_code, 32); + if (bip32_derive_get_pubkey_256(CX_CURVE_256K1, + bip32_path, + bip32_path_len, + raw_public_key, + chain_code, + CX_SHA512) != CX_OK) { + return false; } - // generate corresponding public key - ok = ok && CX_OK == cx_ecfp_generate_pair_no_throw(CX_CURVE_256K1, &public_key, &private_key, 1); - memmove(keydata.raw_public_key, public_key.W + 1, sizeof(keydata.raw_public_key)); - - // compute compressed public key - ok = ok && 0 == crypto_get_compressed_pubkey((uint8_t *) &keydata, pubkey); - - // delete sensitive data - explicit_bzero(keydata.chain_code, 32); - explicit_bzero(&private_key, sizeof(private_key)); + if (crypto_get_compressed_pubkey(raw_public_key, pubkey) < 0) { + return false; + } - return ok; + return true; } uint32_t crypto_get_key_fingerprint(const uint8_t pub_key[static 33]) { @@ -332,7 +305,7 @@ bool crypto_derive_symmetric_key(const char *label, size_t label_len, uint8_t ke // is not aligned. uint8_t label_copy[32] __attribute__((aligned(4))); - memcpy(label_copy, label, MIN(label_len, sizeof(label_copy))); + memcpy(label_copy, label, label_len); uint8_t raw_privkey[64]; // Needed because in the new SDK derived key could be up to 64 bytes long bool res = CX_OK == os_derive_bip32_with_seed_no_throw(HDW_SLIP21, @@ -350,13 +323,10 @@ bool crypto_derive_symmetric_key(const char *label, size_t label_len, uint8_t ke return res; } -// TODO: Split serialization from key derivation? -// It might be difficult to have a clean API without wasting memory, as the checksum -// needs to be concatenated to the data before base58 serialization. -int get_serialized_extended_pubkey_at_path(const uint32_t bip32_path[], - uint8_t bip32_path_len, - uint32_t bip32_pubkey_version, - char out[static MAX_SERIALIZED_PUBKEY_LENGTH + 1]) { +int get_extended_pubkey_at_path(const uint32_t bip32_path[], + uint8_t bip32_path_len, + uint32_t bip32_pubkey_version, + serialized_extended_pubkey_t *out_pubkey) { // find parent key's fingerprint and child number uint32_t parent_fingerprint = 0; uint32_t child_number = 0; @@ -365,7 +335,10 @@ int get_serialized_extended_pubkey_at_path(const uint32_t bip32_path[], // for the response, in order to save memory uint8_t parent_pubkey[33]; - if (!crypto_get_compressed_pubkey_at_path(bip32_path, bip32_path_len - 1, parent_pubkey, NULL)) { + if (!crypto_get_compressed_pubkey_at_path(bip32_path, + bip32_path_len - 1, + parent_pubkey, + NULL)) { return -1; } @@ -373,33 +346,19 @@ int get_serialized_extended_pubkey_at_path(const uint32_t bip32_path[], child_number = bip32_path[bip32_path_len - 1]; } - struct { - serialized_extended_pubkey_t ext_pubkey; - uint8_t checksum[4]; - } ext_pubkey_check; // extended pubkey and checksum - - serialized_extended_pubkey_t *ext_pubkey = &ext_pubkey_check.ext_pubkey; - - write_u32_be(ext_pubkey->version, 0, bip32_pubkey_version); - ext_pubkey->depth = bip32_path_len; - write_u32_be(ext_pubkey->parent_fingerprint, 0, parent_fingerprint); - write_u32_be(ext_pubkey->child_number, 0, child_number); + write_u32_be(out_pubkey->version, 0, bip32_pubkey_version); + out_pubkey->depth = bip32_path_len; + write_u32_be(out_pubkey->parent_fingerprint, 0, parent_fingerprint); + write_u32_be(out_pubkey->child_number, 0, child_number); if (!crypto_get_compressed_pubkey_at_path(bip32_path, bip32_path_len, - ext_pubkey->compressed_pubkey, - ext_pubkey->chain_code)) { + out_pubkey->compressed_pubkey, + out_pubkey->chain_code)) { return -1; } - crypto_get_checksum((uint8_t *) ext_pubkey, 78, ext_pubkey_check.checksum); - int serialized_pubkey_len = - base58_encode((uint8_t *) &ext_pubkey_check, 78 + 4, out, MAX_SERIALIZED_PUBKEY_LENGTH); - - if (serialized_pubkey_len > 0) { - out[serialized_pubkey_len] = '\0'; - } - return serialized_pubkey_len; + return 0; } int base58_encode_address(const uint8_t in[20], uint32_t version, char *out, size_t out_len) { @@ -423,29 +382,56 @@ int base58_encode_address(const uint8_t in[20], uint32_t version, char *out, siz } int crypto_ecdsa_sign_sha256_hash_with_key(const uint32_t bip32_path[], - size_t bip32_path_len, + uint8_t bip32_path_len, const uint8_t hash[static 32], + uint8_t *pubkey, uint8_t out[static MAX_DER_SIG_LEN], uint32_t *info) { cx_ecfp_private_key_t private_key = {0}; - uint8_t chain_code[32] = {0}; + cx_ecfp_public_key_t public_key; uint32_t info_internal = 0; size_t sig_len = MAX_DER_SIG_LEN; + bool error = true; + + if (bip32_derive_init_privkey_256(CX_CURVE_256K1, + bip32_path, + bip32_path_len, + &private_key, + NULL) != CX_OK) { + goto end; + } + + if (cx_ecdsa_sign_no_throw(&private_key, + CX_RND_RFC6979, + CX_SHA256, + hash, + 32, + out, + &sig_len, + &info_internal) != CX_OK) { + goto end; + } + + if (pubkey != NULL) { + // Generate associated pubkey + if (cx_ecfp_generate_pair_no_throw(CX_CURVE_256K1, &public_key, &private_key, true) != + CX_OK) { + goto end; + } + + // compute compressed public key + if (crypto_get_compressed_pubkey(public_key.W, pubkey) < 0) { + goto end; + } + } - bool ok = 0 == crypto_derive_private_key(&private_key, chain_code, bip32_path, bip32_path_len); - ok = ok && CX_OK == cx_ecdsa_sign_no_throw(&private_key, - CX_RND_RFC6979, - CX_SHA256, - hash, - 32, - out, - &sig_len, - &info_internal); + error = false; +end: explicit_bzero(&private_key, sizeof(private_key)); - if (!ok) { + if (error) { // unexpected error when signing return -1; } @@ -454,7 +440,7 @@ int crypto_ecdsa_sign_sha256_hash_with_key(const uint32_t bip32_path[], *info = info_internal; } - return (int)sig_len; + return sig_len; } void crypto_tr_tagged_hash_init(cx_sha256_t *hash_context, const uint8_t *tag, uint16_t tag_len) { @@ -470,18 +456,8 @@ void crypto_tr_tagged_hash_init(cx_sha256_t *hash_context, const uint8_t *tag, u crypto_hash_update(&hash_context->header, hashtag, sizeof(hashtag)); } -static void crypto_tr_tagged_hash(const uint8_t *tag, - uint16_t tag_len, - const uint8_t *data, - uint16_t data_len, - uint8_t out[static 32]) { - cx_sha256_t hash_context; - cx_sha256_init(&hash_context); - - crypto_tr_tagged_hash_init(&hash_context, tag, tag_len); - - crypto_hash_update(&hash_context.header, data, data_len); - crypto_hash_digest(&hash_context.header, out, 32); +void crypto_tr_tapleaf_hash_init(cx_sha256_t *hash_context) { + crypto_tr_tagged_hash_init(hash_context, BIP0341_tapleaf_tag, sizeof(BIP0341_tapleaf_tag)); } static int crypto_tr_lift_x(const uint8_t x[static 32], uint8_t out[static 65]) { @@ -493,29 +469,25 @@ static int crypto_tr_lift_x(const uint8_t x[static 32], uint8_t out[static 65]) // c = x^3 (mod p) uint8_t e = 3; if (CX_OK != cx_math_powm_no_throw(c, x, &e, 1, secp256k1_p, 32)) { - return -1; + return -1; // c = x^3 (mod p) } - - // c = x^3 + 7 (mod p) uint8_t scalar[32] = {0}; scalar[31] = 7; if (CX_OK != cx_math_addm_no_throw(c, c, scalar, secp256k1_p, 32)) { - return -1; + return -1; // c = x^3 + 7 (mod p) } - // y = sqrt(x^3 + 7) (mod p) if (CX_OK != cx_math_powm_no_throw(y, c, secp256k1_sqr_exponent, 32, secp256k1_p, 32)) { - return -1; + return -1; // y = sqrt(x^3 + 7) (mod p) } // sanity check: fail if y * y % p != x^3 + 7 uint8_t y_2[32]; e = 2; - if (CX_OK != cx_math_powm_no_throw(y_2, y, &e, 1, secp256k1_p, 32)) { // y^2 (mod p) - return -1; + if (CX_OK != cx_math_powm_no_throw(y_2, y, &e, 1, secp256k1_p, 32)) { + return -1; // y^2 (mod p) } - - int diff = 1; + int diff; if (CX_OK != cx_math_cmp_no_throw(y_2, c, 32, &diff) || diff != 0) { return -1; } @@ -534,12 +506,66 @@ static int crypto_tr_lift_x(const uint8_t x[static 32], uint8_t out[static 65]) return 0; } -// Like taproot_tweak_pubkey of BIP0341, with empty string h -// TODO: should it recycle pubkey also for the output (like crypto_tr_tweak_seckey below)? -int crypto_tr_tweak_pubkey(uint8_t pubkey[static 32], uint8_t *y_parity, uint8_t out[static 32]) { +// Computes a tagged hash according to BIP-340. +// If data2_len > 0, then data2 must be non-NULL and the `data` and `data2` arrays are concatenated. +static void crypto_tr_tagged_hash(const uint8_t *tag, + uint16_t tag_len, + const uint8_t *data, + uint16_t data_len, + const uint8_t *data2, + uint16_t data2_len, + uint8_t out[static CX_SHA256_SIZE]) { + // First compute hashtag, reuse out buffer for that + cx_sha256_hash(tag, tag_len, out); + + cx_iovec_t iovec[4] = {{.iov_base = out, .iov_len = CX_SHA256_SIZE}, + {.iov_base = out, .iov_len = CX_SHA256_SIZE}, + {.iov_base = data, .iov_len = data_len}, + {.iov_base = data2, .iov_len = data2_len}}; + if (data2_len > 0) { + cx_sha256_hash_iovec(iovec, 4, out); + } else { + cx_sha256_hash_iovec(iovec, 3, out); + } +} + +void crypto_tr_combine_taptree_hashes(const uint8_t left_h[static 32], + const uint8_t right_h[static 32], + uint8_t out[static 32]) { + if (memcmp(left_h, right_h, 32) < 0) { + crypto_tr_tagged_hash(BIP0341_tapbranch_tag, + sizeof(BIP0341_tapbranch_tag), + left_h, + 32, + right_h, + 32, + out); + } else { + crypto_tr_tagged_hash(BIP0341_tapbranch_tag, + sizeof(BIP0341_tapbranch_tag), + right_h, + 32, + left_h, + 32, + out); + } +} + +// Like taproot_tweak_pubkey of BIP0341 +int crypto_tr_tweak_pubkey(const uint8_t pubkey[static 32], + const uint8_t *h, + size_t h_len, + uint8_t *y_parity, + uint8_t out[static 32]) { uint8_t t[32]; - crypto_tr_tagged_hash(BIP0341_taptweak_tag, sizeof(BIP0341_taptweak_tag), pubkey, 32, t); + crypto_tr_tagged_hash(BIP0341_taptweak_tag, + sizeof(BIP0341_taptweak_tag), + pubkey, + 32, + h, + h_len, + t); // fail if t is not smaller than the curve order int diff = 1; @@ -568,67 +594,55 @@ int crypto_tr_tweak_pubkey(uint8_t pubkey[static 32], uint8_t *y_parity, uint8_t return 0; } -// Like taproot_tweak_seckey of BIP0341, with empty string h -int crypto_tr_tweak_seckey(uint8_t seckey[static 32]) { +// Like taproot_tweak_seckey of BIP0341 +int crypto_tr_tweak_seckey(const uint8_t seckey[static 32], + const uint8_t *h, + size_t h_len, + uint8_t out[static 32]) { uint8_t P[65]; - bool ok = 0 == secp256k1_point(seckey, P); - - if (P[64] & 1) { - // odd y, negate the secret key - ok = ok && CX_OK == cx_math_sub_no_throw(seckey, secp256k1_n, seckey, 32); - } - - uint8_t t[32]; - crypto_tr_tagged_hash(BIP0341_taptweak_tag, - sizeof(BIP0341_taptweak_tag), - &P[1], // P[1:33] is x(P) - 32, - t); - - // fail if t is not smaller than the curve order - int diff = 1; - ok = ok && CX_OK == cx_math_cmp_no_throw(t, secp256k1_n, 32, &diff); - ok = ok && diff < 0; - - ok = ok && CX_OK == cx_math_addm_no_throw(seckey, seckey, t, secp256k1_n, 32); - explicit_bzero(&P, sizeof(P)); + int ret = -1; + do { // loop to break out in case of error + if (0 > secp256k1_point(seckey, P)) { + break; + } - return ok ? 0 : -1; -} + memmove(out, seckey, 32); -bool crypto_generate_compressed_pubkey_pair(const uint8_t privkey[static 32], - uint8_t pubkey[static 33]) { - cx_ecfp_private_key_t privkey_inst; - cx_ecfp_public_key_t pubkey_inst; + if (P[64] & 1) { + // odd y, negate the secret key + if (CX_OK != cx_math_sub_no_throw(out, secp256k1_n, out, 32)) { + break; + } + } - // New private key instance from private key - bool ok = CX_OK == cx_ecfp_init_private_key_no_throw(CX_CURVE_256K1, - privkey, - 32, - &privkey_inst); + uint8_t t[32]; + crypto_tr_tagged_hash(BIP0341_taptweak_tag, + sizeof(BIP0341_taptweak_tag), + &P[1], // P[1:33] is x(P) + 32, + h, + h_len, + t); + + // fail if t is not smaller than the curve order + int diff; + if (CX_OK != cx_math_cmp_no_throw(t, secp256k1_n, 32, &diff) || diff >= 0) { + break; + } - // Generate corresponding public key - ok = ok && CX_OK == cx_ecfp_generate_pair_no_throw(CX_CURVE_256K1, - &pubkey_inst, - &privkey_inst, - 1); + if (CX_OK != cx_math_addm_no_throw(out, out, t, secp256k1_n, 32)) { + break; + } - // Save produced public key in compressed format - if (ok) { - pubkey[0] = ((pubkey_inst.W[64] & 1) ? 0x03 : 0x02); - memcpy(pubkey + 1, pubkey_inst.W + 1, 32); - } + ret = 0; + } while (0); - // Zeroize sensitive data - explicit_bzero(&privkey_inst, sizeof(privkey_inst)); - explicit_bzero(&pubkey_inst, sizeof(pubkey_inst)); + explicit_bzero(&P, sizeof(P)); - return ok; + return ret; } -#endif // SKIP_FOR_CMOCKA - /***************************************************************************** * FUNTIONS COVERED BY CMOCKA UNIT TESTS *****************************************************************************/ @@ -636,8 +650,15 @@ bool crypto_generate_compressed_pubkey_pair(const uint8_t privkey[static 32], // TODO: missing unit tests void crypto_get_checksum(const uint8_t *in, uint16_t in_len, uint8_t out[static 4]) { uint8_t buffer[32]; - cx_hash_sha256(in, in_len, buffer, 32); - cx_hash_sha256(buffer, 32, buffer, 32); + size_t res; + res = cx_hash_sha256(in, in_len, buffer, 32); + LEDGER_ASSERT(res == CX_SHA256_SIZE, + "Unexpected error in sha256 computation. Returned: %d", + res); + res = cx_hash_sha256(buffer, 32, buffer, 32); + LEDGER_ASSERT(res == CX_SHA256_SIZE, + "Unexpected error in sha256 computation. Returned: %d", + res); memmove(out, buffer, 4); } diff --git a/src/crypto.h b/src/crypto.h index 23b8862fa..d0d1bc088 100644 --- a/src/crypto.h +++ b/src/crypto.h @@ -104,7 +104,8 @@ WARN_UNUSED_RESULT int crypto_derive_private_key(cx_ecfp_private_key_t *private_ uint8_t bip32_path_len); /** - * Initialize public key given private key. + * Generates the child extended public key, from a parent extended public key and non-hardened + * index. * * @param[in] parent * Pointer to the extended serialized pubkey of the parent. @@ -122,7 +123,7 @@ WARN_UNUSED_RESULT int bip32_CKDpub(const serialized_extended_pubkey_t *parent, serialized_extended_pubkey_t *child); /** - * Convenience wrapper for cx_hash to add some data to an initialized hash context. + * Convenience wrapper for cx_hash_no_throw to add some data to an initialized hash context. * * @param[in] hash_context * The context of the hash, which must already be initialized. @@ -132,12 +133,12 @@ WARN_UNUSED_RESULT int bip32_CKDpub(const serialized_extended_pubkey_t *parent, * Size of the passed data. */ static inline void crypto_hash_update(cx_hash_t *hash_context, const void *in, size_t in_len) { - int ret = cx_hash_no_throw(hash_context, 0, in, in_len, NULL, 0); - LEDGER_ASSERT(CX_OK == ret, "It should not fail"); + int res = cx_hash_no_throw(hash_context, 0, in, in_len, NULL, 0); + LEDGER_ASSERT(res == CX_OK, "Unexpected error in sha256 computation. Returned: %d", res); } /** - * Convenience wrapper for cx_hash to compute the final hash, without adding any extra data + * Convenience wrapper for cx_hash_no_throw to compute the final hash, without adding any extra data * to the hash context. * * @param[in] hash_context @@ -148,8 +149,8 @@ static inline void crypto_hash_update(cx_hash_t *hash_context, const void *in, s * Size of output buffer, which must be large enough to contain the result. */ static inline void crypto_hash_digest(cx_hash_t *hash_context, uint8_t *out, size_t out_len) { - int ret = cx_hash_no_throw(hash_context, CX_LAST, NULL, 0, out, out_len); - LEDGER_ASSERT(CX_OK == ret, "It should not fail"); + int res = cx_hash_no_throw(hash_context, CX_LAST, NULL, 0, out, out_len); + LEDGER_ASSERT(res == CX_OK, "Unexpected error in sha256 computation. Returned: %d", res); } /** @@ -339,7 +340,7 @@ uint32_t crypto_get_key_fingerprint(const uint8_t pub_key[static 33]); uint32_t crypto_get_master_key_fingerprint(void); /** - * Computes the base58check-encoded extended pubkey at a given path. + * Computes extended pubkey at a given path, serialized as per BIP32. * * @param[in] bip32_path * Pointer to 32-bit array of BIP-32 derivation steps. @@ -347,20 +348,18 @@ uint32_t crypto_get_master_key_fingerprint(void); * Number of steps in the BIP32 derivation. * @param[in] bip32_pubkey_version * Version prefix to use for the pubkey. - * @param[out] out - * Pointer to the output buffer, which must be long enough to contain the result (including the - * terminating null). + * @param[out] out_pubkey + * A pointer to a serialized_extended_pubkey_t. * - * @return the length of the output pubkey (not including the null character), or -1 on error. + * @return 0 on success, or -1 on error. */ -WARN_UNUSED_RESULT int get_serialized_extended_pubkey_at_path(const uint32_t bip32_path[], - uint8_t bip32_path_len, - uint32_t bip32_pubkey_version, - char out[static MAX_SERIALIZED_PUBKEY_LENGTH + 1]); +WARN_UNUSED_RESULT int get_extended_pubkey_at_path(const uint32_t bip32_path[], + uint8_t bip32_path_len, + uint32_t bip32_pubkey_version, + serialized_extended_pubkey_t *out_pubkey); /** * Derives the level-1 symmetric key at the given label using SLIP-0021. - * Must be wrapped in a TRY/FINALLY block to make sure that the output key is wiped after using it. * * @param[in] label * Pointer to the label. The first byte of the label must be 0x00 to comply with SLIP-0021. @@ -404,6 +403,9 @@ WARN_UNUSED_RESULT int base58_encode_address(const uint8_t in[20], uint32_t vers * Number of steps in the BIP32 derivation. * @param[in] hash * Pointer to a 32-byte SHA-256 hash digest. + * @param[out] pubkey + * Either NULL, or a pointer to a 33-bytes array that will receive the compressed pubkey + * corresponding to the private key used for signing. * @param[out] out * The pointer to the output array to contain the signature, that must be of length * `MAX_DER_SIG_LEN`. @@ -413,8 +415,9 @@ WARN_UNUSED_RESULT int base58_encode_address(const uint8_t in[20], uint32_t vers * @return the length of the signature on success, or -1 in case of error. */ WARN_UNUSED_RESULT int crypto_ecdsa_sign_sha256_hash_with_key(const uint32_t bip32_path[], - size_t bip32_path_len, + uint8_t bip32_path_len, const uint8_t hash[static 32], + uint8_t *pubkey, uint8_t out[static MAX_DER_SIG_LEN], uint32_t *info); @@ -422,7 +425,7 @@ WARN_UNUSED_RESULT int crypto_ecdsa_sign_sha256_hash_with_key(const uint32_t bip * Initializes the "tagged" SHA256 hash with the given tag, as defined by BIP-0340. * * @param[out] hash_context - * Pointer to 32-bit array of BIP-32 derivation steps. + * Pointer to a sha256 hash context. * @param[in] tag * Pointer to an array containing the tag of the tagged hash. * @param[in] tag_len @@ -431,11 +434,37 @@ WARN_UNUSED_RESULT int crypto_ecdsa_sign_sha256_hash_with_key(const uint32_t bip void crypto_tr_tagged_hash_init(cx_sha256_t *hash_context, const uint8_t *tag, uint16_t tag_len); /** - * Builds a tweaked public key from a BIP340 public key array. + * Initializes the "tagged" SHA256 hash with tag "TapLeaf", used for tapscript leaves. + * + * @param[out] hash_context + * Pointer to a sha256 hash context. + */ +void crypto_tr_tapleaf_hash_init(cx_sha256_t *hash_context); + +/** + * Computes the tagged hash with tagged hash of a tapbranch, given the hashes for the children. + * + * @param[in] left_h + * The hash of the left tapbranch/tapleaf. + * @param[in] right_h + * The hash of the right tapbranch/tapleaf. + * @param[out] out + * The combined hash for the tapbranch. + */ +void crypto_tr_combine_taptree_hashes(const uint8_t left_h[static 32], + const uint8_t right_h[static 32], + uint8_t out[static 32]); + +/** + * Computes the tweaked public key from a BIP340 public key array. * Implementation of taproot_tweak_pubkey of BIP341 with `h` set to the empty byte string. * * @param[in] pubkey * Pointer to the 32-byte to be used as public key. + * @param[in] h + * Pointer to the tweaking data. + * @param[in] h_len + * Length of `h`. * @param[out] y_parity * Pointer to a variable that will be set to 0/1 according to the parity of th y-coordinate of the * final tweaked pubkey. @@ -444,19 +473,31 @@ void crypto_tr_tagged_hash_init(cx_sha256_t *hash_context, const uint8_t *tag, u * * @return 0 on success, or -1 in case of error. */ -WARN_UNUSED_RESULT int crypto_tr_tweak_pubkey(uint8_t pubkey[static 32], uint8_t *y_parity, uint8_t out[static 32]); +WARN_UNUSED_RESULT int crypto_tr_tweak_pubkey(const uint8_t pubkey[static 32], + const uint8_t *h, + size_t h_len, + uint8_t *y_parity, + uint8_t out[static 32]); /** - * Builds a tweaked public key from a BIP340 public key array. + * Computes the tweaked secret key from a BIP340 secret key. * Implementation of taproot_tweak_seckey of BIP341 with `h` set to the empty byte string. * - * @param[in|out] seckey - * Pointer to the 32-byte containing the secret key; it will contain the output tweaked secret - * key. + * @param[in] seckey + * Pointer to the 32-byte containing the secret key. + * @param[out] h + * Pointer to the tweaking data. + * @param[out] h_len + * Length of `h`. + * @param[out] out + * Pointer to the a 32-byte array that will contain the tweaked secret key. * * @return 0 on success, or -1 in case of error. */ -WARN_UNUSED_RESULT int crypto_tr_tweak_seckey(uint8_t seckey[static 32]); +WARN_UNUSED_RESULT int crypto_tr_tweak_seckey(const uint8_t seckey[static 32], + const uint8_t *h, + size_t h_len, + uint8_t out[static 32]); /** * Validates the Base58Check-encoded extended pubkey at a given path. diff --git a/src/cxram_stash.c b/src/cxram_stash.c index bd61a7aa7..1f3d819b3 100644 --- a/src/cxram_stash.c +++ b/src/cxram_stash.c @@ -3,14 +3,13 @@ #include "cxram_stash.h" #include "cx_ram.h" +#ifdef USE_CXRAM_SECTION #ifndef G_cx // The G_cx symbol is only defined in the sdk if compiled with certain libs are included. // This makes sure that the symbol exists nonetheless. union cx_u G_cx; #endif -#ifdef USE_CXRAM_SECTION - uint8_t *get_cxram_buffer() { return (uint8_t *) &G_cx; } diff --git a/src/debug-helpers/debug.c b/src/debug-helpers/debug.c index c8b92d5b3..127636f5e 100644 --- a/src/debug-helpers/debug.c +++ b/src/debug-helpers/debug.c @@ -72,13 +72,12 @@ int semihosted_printf(const char *format, ...) { } // Returns the current stack pointer -static unsigned int __attribute__((noinline, unused)) get_stack_pointer() { - int stack_top = 0; - // Returning an address on the stack is unusual, so we disable the warning -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wreturn-stack-address" - return (unsigned int) &stack_top; -#pragma GCC diagnostic pop +static unsigned int __attribute__((noinline)) get_stack_pointer() { + unsigned int stack_top = 0; + + __asm__ __volatile__("mov %0, sp" : "=r"(stack_top) : :); + + return stack_top; } #ifdef HAVE_BOLOS_APP_STACK_CANARY diff --git a/src/debug-helpers/debug.h b/src/debug-helpers/debug.h index 1ded1253a..217e4c1f7 100644 --- a/src/debug-helpers/debug.h +++ b/src/debug-helpers/debug.h @@ -1,5 +1,15 @@ #pragma once +#include "os.h" + +// Workaround +#ifdef HAVE_SEMIHOSTED_PRINTF + #ifdef PRINTF + #undef PRINTF + #endif + #define PRINTF semihosted_printf +#endif // HAVE_SEMIHOSTED_PRINTF + void debug_write(const char *buf); void debug_write_hex(unsigned int word, unsigned int bytes); void debug_write_dec(unsigned int word); @@ -38,3 +48,18 @@ void print_strn(const char *msg, const char *str, int len); #define PRINT_STR(msg, str) #define PRINT_STRN(msg, str, len) #endif // HAVE_PRINTF + + +static inline int print_error_info(const char *error_msg, + const char *filename, + int line, + int retval) { + (void) error_msg; + (void) filename; + (void) line; + + PRINTF("ERR (%s::%d): %s\n", filename, line, error_msg); + return retval; +} + +#define WITH_ERROR(retval, error_msg) print_error_info(error_msg, __FILE__, __LINE__, retval) \ No newline at end of file diff --git a/src/globals.h b/src/globals.h index 152d737e3..ede4e836c 100644 --- a/src/globals.h +++ b/src/globals.h @@ -27,8 +27,3 @@ extern ux_state_t G_ux; * Global structure with the parameters to exchange with the BOLOS UX application. */ extern bolos_ux_params_t G_ux_params; - -/** - * State of the current APDU interaction, if any. - */ -extern command_state_t G_command_state; diff --git a/src/handler/get_extended_pubkey.c b/src/handler/get_extended_pubkey.c index 34bace015..536d247ea 100644 --- a/src/handler/get_extended_pubkey.c +++ b/src/handler/get_extended_pubkey.c @@ -1,6 +1,6 @@ /***************************************************************************** * Ledger App Bitcoin. - * (c) 2021 Ledger SAS. + * (c) 2024 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,38 +20,24 @@ #include "boilerplate/io.h" #include "boilerplate/dispatcher.h" #include "boilerplate/sw.h" +#include "../common/base58.h" +#include "../common/bip32.h" #include "../commands.h" #include "../constants.h" #include "../crypto.h" #include "../ui/display.h" #include "../ui/menu.h" -/** - * Sends response APDU. - * - * @param[in,out] dc - * Dispatcher context. - */ -static void send_response(dispatcher_context_t *dc); +#define H 0x80000000ul + +static bool is_path_safe_for_pubkey_export(const uint32_t bip32_path[], size_t bip32_path_len) { + // Exception for Electrum: it historically used "m/4541509h/1112098098h" + // to derive encryption keys, so we whitelist it. + if (bip32_path_len == 2 && bip32_path[0] == (4541509 ^ H) && + bip32_path[1] == (1112098098 ^ H)) { + return true; + } -/** - * Checks if requested path is safe to export derived public key. - * - * @param bip32_path - * Derivation path. - * @param bip32_path_len - * Length of derivation path (number of 32-bit elements). - * @param coin_types - * List of coin types this application supports. - * @param coin_types_length - * Number of elements in the coin type list. - * - * @return true if export allowed, false otherwise. - */ -static bool is_path_safe_for_pubkey_export(const uint32_t bip32_path[], - size_t bip32_path_len, - const uint32_t coin_types[], - size_t coin_types_length) { if (bip32_path_len < 3) { return false; } @@ -66,6 +52,11 @@ static bool is_path_safe_for_pubkey_export(const uint32_t bip32_path[], case 86: hardened_der_len = 3; break; + case 45: + // BIP-45 prescribes simply length 1, but we instead support existing deployed + // use cases with path "m/45'/coin_type'/account' + hardened_der_len = 3; + break; case 48: hardened_der_len = 4; break; @@ -73,9 +64,9 @@ static bool is_path_safe_for_pubkey_export(const uint32_t bip32_path[], return false; } - // bip32_path_len should be either hardened_der_len, or just two more - // for change and address_index - if (bip32_path_len != hardened_der_len && bip32_path_len != hardened_der_len + 2) { + // bip32_path_len should be at least the hardened_der_len + // (but it could have additional unhardened derivation steps) + if (bip32_path_len < hardened_der_len) { return false; } @@ -92,14 +83,7 @@ static bool is_path_safe_for_pubkey_export(const uint32_t bip32_path[], } uint32_t coin_type = bip32_path[1] & 0x7FFFFFFF; - bool coin_type_found = false; - for (unsigned int i = 0; i < coin_types_length; i++) { - if (coin_type == coin_types[i]) { - coin_type_found = true; - } - } - - if (!coin_type_found) { + if (coin_type != BIP44_COIN_TYPE) { return false; } @@ -110,19 +94,6 @@ static bool is_path_safe_for_pubkey_export(const uint32_t bip32_path[], return false; } - if (bip32_path_len > hardened_der_len) { - uint32_t change = bip32_path[bip32_path_len - 2]; - uint32_t address_index = bip32_path[bip32_path_len - 1]; - - if (change != 0 && change != 1) { - return false; - } - - if (address_index > MAX_BIP44_ADDRESS_INDEX_RECOMMENDED) { - return false; - } - } - // For BIP48, there is also the script type, with only standardized values 1' and 2' if (purpose == 48) { uint32_t script_type = bip32_path[3] & 0x7FFFFFFF; @@ -134,16 +105,10 @@ static bool is_path_safe_for_pubkey_export(const uint32_t bip32_path[], return true; } -void handler_get_extended_pubkey(dispatcher_context_t *dc) { - get_extended_pubkey_state_t *state = (get_extended_pubkey_state_t *) &G_command_state; - - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); +void handler_get_extended_pubkey(dispatcher_context_t *dc, uint8_t protocol_version) { + (void) protocol_version; - // Device must be unlocked - if (os_global_pin_is_validated() != BOLOS_UX_OK) { - SEND_SW(dc, SW_SECURITY_STATUS_NOT_SATISFIED); - return; - } + LOG_PROCESSOR(__FILE__, __LINE__, __func__); uint8_t display; uint8_t bip32_path_len; @@ -164,41 +129,48 @@ void handler_get_extended_pubkey(dispatcher_context_t *dc) { return; } - uint32_t coin_types[2] = {BIP44_COIN_TYPE, BIP44_COIN_TYPE_2}; - bool is_safe = is_path_safe_for_pubkey_export(bip32_path, bip32_path_len, coin_types, 2); + bool is_safe = is_path_safe_for_pubkey_export(bip32_path, bip32_path_len); if (!is_safe && !display) { SEND_SW(dc, SW_NOT_SUPPORTED); return; } - int serialized_pubkey_len = - get_serialized_extended_pubkey_at_path(bip32_path, - bip32_path_len, - BIP32_PUBKEY_VERSION, - state->serialized_pubkey_str); - if (serialized_pubkey_len == -1) { + serialized_extended_pubkey_check_t pubkey_check; + if (0 > get_extended_pubkey_at_path(bip32_path, + bip32_path_len, + BIP32_PUBKEY_VERSION, + &pubkey_check.serialized_extended_pubkey)) { + PRINTF("Failed getting bip32 pubkey\n"); SEND_SW(dc, SW_BAD_STATE); return; } + crypto_get_checksum((uint8_t *) &pubkey_check.serialized_extended_pubkey, + sizeof(pubkey_check.serialized_extended_pubkey), + pubkey_check.checksum); + + char pubkey_str[MAX_SERIALIZED_PUBKEY_LENGTH + 1]; + int pubkey_str_len = base58_encode((uint8_t *) &pubkey_check, + sizeof(pubkey_check), + pubkey_str, + sizeof(pubkey_str)); + if (pubkey_str_len != 111 && pubkey_str_len != 112) { + PRINTF("Failed encoding base58 pubkey\n"); + SEND_SW(dc, SW_BAD_STATE); + return; + } + pubkey_str[pubkey_str_len] = 0; + char path_str[MAX_SERIALIZED_BIP32_PATH_LENGTH + 1] = "(Master key)"; if (bip32_path_len > 0) { bip32_path_format(bip32_path, bip32_path_len, path_str, sizeof(path_str)); } - if (display) { - ui_display_pubkey(dc, path_str, !is_safe, state->serialized_pubkey_str, send_response); - } else { - dc->next(send_response); + if (display && !ui_display_pubkey(dc, path_str, !is_safe, pubkey_str)) { + SEND_SW(dc, SW_DENY); + return; } -} - -static void send_response(dispatcher_context_t *dc) { - get_extended_pubkey_state_t *state = (get_extended_pubkey_state_t *) &G_command_state; - - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); - size_t pubkey_len = strnlen(state->serialized_pubkey_str, sizeof(state->serialized_pubkey_str) - 1); - SEND_RESPONSE(dc, state->serialized_pubkey_str, pubkey_len, SW_OK); + SEND_RESPONSE(dc, pubkey_str, pubkey_str_len, SW_OK); } diff --git a/src/handler/get_extended_pubkey.h b/src/handler/get_extended_pubkey.h deleted file mode 100644 index 9f5ab230d..000000000 --- a/src/handler/get_extended_pubkey.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include "../common/bip32.h" -#include "../boilerplate/dispatcher.h" - -/// State of GET_EXTENDED_PUBKEY handler -typedef struct { - /// Machine context for command dispatcher - machine_context_t ctx; - /// Serialized public key - char serialized_pubkey_str[MAX_SERIALIZED_PUBKEY_LENGTH + 1]; -} get_extended_pubkey_state_t; - -/** - * Handles GET_EXTENDED_PUBKEY command. - * - * @param[in,out] dispatcher_context - * Dispatcher context. - */ -void handler_get_extended_pubkey(dispatcher_context_t *dispatcher_context); diff --git a/src/handler/get_master_fingerprint.c b/src/handler/get_master_fingerprint.c index 0af716640..e1993c390 100644 --- a/src/handler/get_master_fingerprint.c +++ b/src/handler/get_master_fingerprint.c @@ -1,6 +1,6 @@ /***************************************************************************** * Ledger App Bitcoin. - * (c) 2021 Ledger SAS. + * (c) 2024 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,14 +22,10 @@ #include "../commands.h" #include "../crypto.h" -#include "get_master_fingerprint.h" +#include "handlers.h" -void handler_get_master_fingerprint(dispatcher_context_t *dc) { - // Device must be unlocked - if (os_global_pin_is_validated() != BOLOS_UX_OK) { - SEND_SW(dc, SW_SECURITY_STATUS_NOT_SATISFIED); - return; - } +void handler_get_master_fingerprint(dispatcher_context_t *dc, uint8_t protocol_version) { + (void) protocol_version; uint8_t master_pubkey[33]; if (!crypto_get_compressed_pubkey_at_path((uint32_t[]){}, 0, master_pubkey, NULL)) { diff --git a/src/handler/get_master_fingerprint.h b/src/handler/get_master_fingerprint.h deleted file mode 100644 index 258f07dac..000000000 --- a/src/handler/get_master_fingerprint.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include "../boilerplate/dispatcher.h" - -/// State of GET_MASTER_FINGERPRINT handler -typedef struct { - /// Machine context for command dispatcher - machine_context_t ctx; -} get_master_fingerprint_t; - -/** - * Handles GET_MASTER_FINGERPRINT command. - * - * @param[in,out] dispatcher_context - * Dispatcher context. - */ -void handler_get_master_fingerprint(dispatcher_context_t *dispatcher_context); diff --git a/src/handler/get_wallet_address.c b/src/handler/get_wallet_address.c index 348aa8cb2..0828f6c29 100644 --- a/src/handler/get_wallet_address.c +++ b/src/handler/get_wallet_address.c @@ -1,6 +1,6 @@ /***************************************************************************** * Ledger App Bitcoin. - * (c) 2021 Ledger SAS. + * (c) 2024 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,7 @@ #include "boilerplate/io.h" #include "boilerplate/sw.h" #include "../common/base58.h" +#include "../common/bip32.h" #include "../common/buffer.h" #include "../common/merkle.h" #include "../common/read.h" @@ -33,150 +34,88 @@ #include "../ui/display.h" #include "../ui/menu.h" +#include "../swap/swap_globals.h" +#include "../swap/handle_swap_sign_transaction.h" + #include "lib/policy.h" #include "lib/get_preimage.h" +#include "lib/get_merkle_leaf_element.h" -#include "get_wallet_address.h" +#include "handlers.h" #include "client_commands.h" -/// State of the callback function obtaining `scriptPubKey` of the processed descriptor. -typedef struct { - /// Dispatcher context. - dispatcher_context_t *dc; - /// State of the parent handler (GET_WALLET_ADDRESS handler) - get_wallet_address_state_t *parent; -} get_script_callback_state_t; +void handler_get_wallet_address(dispatcher_context_t *dc, uint8_t protocol_version) { + (void) protocol_version; -/** - * Computes wallet address. - * - * This step was separated from the main handler to optimize stack usage. - * - * @param[in,out] dc - * Dispatcher context. - */ -static void compute_address(dispatcher_context_t *dc); + LOG_PROCESSOR(__FILE__, __LINE__, __func__); -/** - * Sends response APDU. - * - * @param[in,out] dc - * Dispatcher context. - */ -static void send_response(dispatcher_context_t *dc); + uint8_t display_address; -/** - * Obtains public key information information. - * - * @param[in,out] dc - * Dispatcher context. - * @param[in,out] state - * State of GET_WALLET_ADDRESS handler. - * @param[in] key_index - * Key index, zero-based. - * @param[out] key_info - * Pointer to structure instance receiving key information. - * - * @return true if successful, false otherwise. - */ -static bool get_key_info(dispatcher_context_t *dc, - get_wallet_address_state_t *state, - uint32_t key_index, - policy_map_key_info_t *key_info) { - int key_info_len = call_get_merkle_leaf_element(dc, - state->wallet_header_keys_info_merkle_root, - state->wallet_header_n_keys, - key_index, - state->key_info_str, - sizeof(state->key_info_str)); - if (key_info_len < 0) { - return false; - } + uint32_t address_index; + uint8_t is_change; - // Make a sub-buffer for the pubkey info - buffer_t key_info_buffer = buffer_create(state->key_info_str, key_info_len); + uint8_t wallet_id[32]; + uint8_t wallet_hmac[32]; - return 0 == parse_policy_map_key_info(&key_info_buffer, key_info); -} - -void handler_get_wallet_address(dispatcher_context_t *dc) { - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); - - get_wallet_address_state_t *state = (get_wallet_address_state_t *) &G_command_state; + bool is_wallet_default; // whether the wallet policy can be used without being registered - // Device must be unlocked - if (os_global_pin_is_validated() != BOLOS_UX_OK) { - SEND_SW(dc, SW_SECURITY_STATUS_NOT_SATISFIED); - return; - } + policy_map_wallet_header_t wallet_header; -#ifdef HAVE_LIQUID - state->pubkey_wildcard_id = KEY_WILDCARD_NONE; -#endif + union { + uint8_t bytes[MAX_WALLET_POLICY_BYTES]; + policy_node_t parsed; + } wallet_policy_map; - if (!buffer_read_u8(&dc->read_buffer, &state->display_address) || - !buffer_read_bytes(&dc->read_buffer, state->wallet_id, 32) || - !buffer_read_bytes(&dc->read_buffer, state->wallet_hmac, 32)) { + if (!buffer_read_u8(&dc->read_buffer, &display_address) || + !buffer_read_bytes(&dc->read_buffer, wallet_id, 32) || + !buffer_read_bytes(&dc->read_buffer, wallet_hmac, 32)) { SEND_SW(dc, SW_WRONG_DATA_LENGTH); return; } // change - if (!buffer_read_u8(&dc->read_buffer, &state->is_change)) { + if (!buffer_read_u8(&dc->read_buffer, &is_change)) { SEND_SW(dc, SW_WRONG_DATA_LENGTH); return; } - if (state->is_change != 0 && state->is_change != 1) { + if (is_change != 0 && is_change != 1) { SEND_SW(dc, SW_INCORRECT_DATA); return; } // address index - if (!buffer_read_u32(&dc->read_buffer, &state->address_index, BE)) { + if (!buffer_read_u32(&dc->read_buffer, &address_index, BE)) { SEND_SW(dc, SW_WRONG_DATA_LENGTH); return; } - -#ifdef HAVE_LIQUID - if (state->address_index > LIQUID_LAST_ADDRESS_INDEX) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } -#endif - - // Fetch the serialized wallet policy from the client - int serialized_wallet_policy_len = call_get_preimage(dc, - state->wallet_id, - state->serialized_wallet_policy, - sizeof(state->serialized_wallet_policy)); - if (serialized_wallet_policy_len < 0) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - buffer_t serialized_wallet_policy_buf = - buffer_create(state->serialized_wallet_policy, serialized_wallet_policy_len); - if ((read_policy_map_wallet(&serialized_wallet_policy_buf, &state->wallet_header)) < 0) { - SEND_SW(dc, SW_INCORRECT_DATA); + if (address_index >= BIP32_FIRST_HARDENED_CHILD) { + SEND_SW(dc, SW_INCORRECT_DATA); // it must be unhardened return; } - memcpy(state->wallet_header_keys_info_merkle_root, - state->wallet_header.keys_info_merkle_root, - sizeof(state->wallet_header_keys_info_merkle_root)); - state->wallet_header_n_keys = state->wallet_header.n_keys; + { + uint8_t serialized_wallet_policy[MAX_WALLET_POLICY_SERIALIZED_LENGTH]; + + // Fetch the serialized wallet policy from the client + int serialized_wallet_policy_len = call_get_preimage(dc, + wallet_id, + serialized_wallet_policy, + sizeof(serialized_wallet_policy)); + if (serialized_wallet_policy_len < 0) { + SEND_SW(dc, SW_INCORRECT_DATA); + return; + } - buffer_t policy_map_buffer = - buffer_create(&state->wallet_header.policy_map, state->wallet_header.policy_map_len); + buffer_t serialized_wallet_policy_buf = + buffer_create(serialized_wallet_policy, serialized_wallet_policy_len); - { - int ret = parse_policy_map(&policy_map_buffer, - state->wallet_policy_map_bytes, - sizeof(state->wallet_policy_map_bytes), - BIP32_PUBKEY_VERSION, - BIP32_PRIVKEY_VERSION); - if (ret < 0) { - PRINTF("Failure parsing policy map, error=%i\n", ret); + uint8_t policy_map_descriptor[MAX_DESCRIPTOR_TEMPLATE_LENGTH]; + if (0 > read_and_parse_wallet_policy(dc, + &serialized_wallet_policy_buf, + &wallet_header, + policy_map_descriptor, + wallet_policy_map.bytes, + sizeof(wallet_policy_map.bytes))) { SEND_SW(dc, SW_INCORRECT_DATA); return; } @@ -185,94 +124,34 @@ void handler_get_wallet_address(dispatcher_context_t *dc) { // the binary OR of all the hmac bytes (so == 0 iff the hmac is identically 0) uint8_t hmac_or = 0; for (int i = 0; i < 32; i++) { - hmac_or = hmac_or | state->wallet_hmac[i]; + hmac_or = hmac_or | wallet_hmac[i]; } if (hmac_or == 0) { - // No hmac, verify that the policy is a canonical one that is allowed by default - state->address_type = get_policy_address_type(&state->wallet_policy_map); - if (state->address_type == -1) { - PRINTF("Non-standard policy, and no hmac provided\n"); - SEND_SW(dc, SW_SIGNATURE_FAIL); - return; - } - - if (state->wallet_header.n_keys != 1) { - PRINTF("Standard wallets must have exactly 1 key\n"); - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - // we check if the key is indeed internal - uint32_t master_key_fingerprint = crypto_get_master_key_fingerprint(); + // No hmac, verify that the policy is indeed a default one - // Get infomation about the first and only public key - policy_map_key_info_t key_info; - if (!get_key_info(dc, state, 0, &key_info)) { + if (!is_wallet_policy_standard(dc, &wallet_header, &wallet_policy_map.parsed)) { SEND_SW(dc, SW_INCORRECT_DATA); return; } - if (!validate_policy_map_extended_pubkey(&key_info, BIP32_PUBKEY_VERSION)) { + if (wallet_header.name_len != 0) { + PRINTF("Name must be zero-length for a standard wallet policy\n"); SEND_SW(dc, SW_INCORRECT_DATA); return; } - if (read_u32_be(key_info.master_key_fingerprint, 0) != master_key_fingerprint) { + if (address_index > MAX_BIP44_ADDRESS_INDEX_RECOMMENDED) { + PRINTF("Address index is too large\n"); SEND_SW(dc, SW_INCORRECT_DATA); return; } - // generate pubkey and check if it matches - char pubkey_derived[MAX_SERIALIZED_PUBKEY_LENGTH + 1]; - int serialized_pubkey_len = - get_serialized_extended_pubkey_at_path(key_info.master_key_derivation, - key_info.master_key_derivation_len, - BIP32_PUBKEY_VERSION, - pubkey_derived); - if (serialized_pubkey_len == -1) { - SEND_SW(dc, SW_BAD_STATE); - return; - } - - if (strncmp(key_info.ext_pubkey, pubkey_derived, MAX_SERIALIZED_PUBKEY_LENGTH) != 0) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - // check if derivation path is indeed standard - - // Based on the address type, we set the expected bip44 purpose for this canonical wallet - int bip44_purpose = get_bip44_purpose(state->address_type); - - if (key_info.master_key_derivation_len != 3) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - uint32_t coin_types[2] = {BIP44_COIN_TYPE, BIP44_COIN_TYPE_2}; - - uint32_t bip32_path[5]; - for (int i = 0; i < 3; i++) { - bip32_path[i] = key_info.master_key_derivation[i]; - } - bip32_path[3] = state->is_change ? 1 : 0; - bip32_path[4] = state->address_index; - - if (!is_address_path_standard(bip32_path, 5, bip44_purpose, coin_types, 2, -1)) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - -#ifdef HAVE_LIQUID - state->pubkey_wildcard_id = key_info.wildcard_id; -#endif - - state->is_wallet_canonical = true; + is_wallet_default = true; } else { // Verify hmac - if (!check_wallet_hmac(state->wallet_id, state->wallet_hmac)) { + if (!check_wallet_hmac(wallet_id, wallet_hmac)) { PRINTF("Incorrect hmac\n"); SEND_SW(dc, SW_SIGNATURE_FAIL); return; @@ -288,151 +167,73 @@ void handler_get_wallet_address(dispatcher_context_t *dc) { state->pubkey_wildcard_id = key_info.wildcard_id; #endif - state->is_wallet_canonical = false; + is_wallet_default = false; } - // Compute the wallet id (sha256 of the serialization) - get_policy_wallet_id(&state->wallet_header, state->computed_wallet_id); - - if (memcmp(state->wallet_id, state->computed_wallet_id, sizeof(state->wallet_id)) != 0) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; + // Swap feature: check that the wallet policy is a default one + if (G_swap_state.called_from_swap && !is_wallet_default) { + PRINTF("Must be a default wallet policy for swap feature\n"); + SEND_SW(dc, SW_FAIL_SWAP); + finalize_exchange_sign_transaction(false); } - dc->next(compute_address); -} + // Swap feature: check that the wallet policy is a default one + if (G_swap_state.called_from_swap && !is_wallet_default) { + PRINTF("Must be a default wallet policy for swap feature\n"); + SEND_SW(dc, SW_FAIL_SWAP); + finalize_exchange_sign_transaction(false); + } -#ifdef HAVE_LIQUID -/** - * Callback function obtaining `scriptPubKey` of the processed descriptor. - * - * If `p_key_wildcard_to_verify` is not NULL, this function assumes it points to a constant which - * must be compared with each of the wallet's public key's wildcard identifier. This parameter is - * optional. If wildcard verification is not required it should be set to NULL. - * - * @param[in,out] state_in - * Callback state, stores necessary properties of the processed descriptor. - * @param[in] bip44_change - * Change element of the derivation path, defined according to BIP 44. - * @param[in] bip44_address_index - * Address index element of the derivation path, defined according to BIP 44. - * @param[out] out_buffer - * Buffer receiving `scriptPubKey`. - * @param[in] p_key_wildcard_to_verify - * If not NULL, requests to verify all wallet's public key wildcard IDs to be equal to value, - * pointed by this parameter. - * - * @return true if successful, false if error. - */ -static bool get_script_callback(void *state_in, - uint32_t bip44_change, - uint32_t bip44_address_index, - buffer_t *out_buffer, - const policy_map_key_wildcard_id_t *p_key_wildcard_to_verify) { - get_script_callback_state_t *state = (get_script_callback_state_t *)state_in; - - return 0 < call_get_wallet_script(state->dc, - liquid_policy_unwrap_ct(&state->parent->wallet_policy_map), - state->parent->wallet_header_keys_info_merkle_root, - state->parent->wallet_header_n_keys, - bip44_change, - bip44_address_index, - out_buffer, - p_key_wildcard_to_verify); -} -#endif + { + uint8_t computed_wallet_id[32]; + // Compute the wallet id (sha256 of the serialization) + get_policy_wallet_id(&wallet_header, computed_wallet_id); -/** - * Returns script address with support of ct() tag in wallet policy. - * - * @param[in,out] dc - * Dispatcher context. - * @param[in,out] state - * Handler state. - * - * @return length of produced address in bytes. - */ -static inline int get_script_address_wrapper(dispatcher_context_t *dc, - get_wallet_address_state_t *state) { -#ifdef HAVE_LIQUID - if (liquid_policy_is_blinded(&state->wallet_policy_map)) { - // Derive blinding public key from script - uint8_t blinding_pubkey[33]; - get_script_callback_state_t callback_state = { .dc = dc, .parent = state }; - if(!liquid_get_blinding_public_key(&state->wallet_policy_map, - state->script, - state->script_len, - state->pubkey_wildcard_id, - get_script_callback, - &callback_state, - blinding_pubkey)) { - return -1; + if (memcmp(wallet_id, computed_wallet_id, sizeof(wallet_id)) != 0) { + PRINTF("Mismatching wallet policy id\n"); + SEND_SW(dc, SW_INCORRECT_DATA); + return; } - - int addr_len = liquid_get_script_confidential_address(state->script, - state->script_len, - &G_liquid_network_config, - blinding_pubkey, - sizeof(blinding_pubkey), - state->address, - sizeof(state->address)); - - explicit_bzero(blinding_pubkey, sizeof(blinding_pubkey)); - return addr_len; } -#endif // HAVE_LIQUID - return get_script_address(state->script, - state->script_len, - state->address, - sizeof(state->address)); -} + { + uint8_t script[MAX_PREVOUT_SCRIPTPUBKEY_LEN]; + + int script_len = get_wallet_script( + dc, + &wallet_policy_map.parsed, + &(wallet_derivation_info_t){.wallet_version = wallet_header.version, + .keys_merkle_root = wallet_header.keys_info_merkle_root, + .n_keys = wallet_header.n_keys, + .change = is_change, + .address_index = address_index}, + script); + if (script_len < 0) { + PRINTF("Couldn't produce wallet script\n"); + SEND_SW(dc, SW_BAD_STATE); // unexpected + return; + } -// stack-intensive, split from the previous function to optimize stack usage -static void compute_address(dispatcher_context_t *dc) { - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); + int address_len; + char address[MAX_ADDRESS_LENGTH_STR + 1]; // null-terminated string - get_wallet_address_state_t *state = (get_wallet_address_state_t *) &G_command_state; - buffer_t script_buf = buffer_create(state->script, sizeof(state->script)); + address_len = get_script_address(script, script_len, address, sizeof(address)); - state->script_len = call_get_wallet_script(dc, -#ifdef HAVE_LIQUID - liquid_policy_unwrap_ct(&state->wallet_policy_map), -#else - &state->wallet_policy_map -#endif - state->wallet_header_keys_info_merkle_root, - state->wallet_header_n_keys, - state->is_change, - state->address_index, - &script_buf, - NULL); - if (state->script_len < 0) { - SEND_SW(dc, SW_BAD_STATE); // unexpected - return; - } - - state->address_len = get_script_address_wrapper(dc, state); + if (address_len < 0) { + PRINTF("Could not produce address\n"); + SEND_SW(dc, SW_BAD_STATE); // unexpected + return; + } - if (state->address_len < 0) { - SEND_SW(dc, SW_BAD_STATE); // unexpected - return; - } + if (display_address != 0) { + if (!ui_display_wallet_address(dc, + is_wallet_default ? NULL : wallet_header.name, + address)) { + SEND_SW(dc, SW_DENY); + return; + } + } - if (state->display_address == 0) { - dc->next(send_response); - } else { - ui_display_wallet_address(dc, - state->is_wallet_canonical ? NULL : state->wallet_header.name, - state->address, - send_response); + SEND_RESPONSE(dc, address, address_len, SW_OK); } } - -static void send_response(dispatcher_context_t *dc) { - get_wallet_address_state_t *state = (get_wallet_address_state_t *) &G_command_state; - - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); - - SEND_RESPONSE(dc, state->address, state->address_len, SW_OK); -} diff --git a/src/handler/get_wallet_address.h b/src/handler/get_wallet_address.h deleted file mode 100644 index 0c3f08f67..000000000 --- a/src/handler/get_wallet_address.h +++ /dev/null @@ -1,82 +0,0 @@ -#pragma once - -#include "../crypto.h" -#include "../common/bip32.h" -#include "../common/wallet.h" -#include "../boilerplate/dispatcher.h" - -#include "lib/get_merkle_leaf_element.h" - -#ifdef HAVE_LIQUID -#include "../liquid/liquid.h" -#endif - -/// State of GET_WALLET_ADDRESS handler -typedef struct { - /// Machine context for command dispatcher - machine_context_t ctx; - - /// Desired address index - uint32_t address_index; - /// Flag indicates change address if true - uint8_t is_change; - /// Flag enabling address display if true - uint8_t display_address; - - /// Flag indicating that the wallet is canonical (doesn't need registration) - bool is_wallet_canonical; - /// Address type, one of ADDRESS_TYPE_* constants - int address_type; - - // as deriving wallet addresses is stack-intensive, we move some - // variables here to use less stack overall - - /// Wallet header with basic information from wallet policy - policy_map_wallet_header_t wallet_header; - - /// Computed wallet identifier (hash) - uint8_t computed_wallet_id[32]; - /// Received wallet identifier - uint8_t wallet_id[32]; - /// The HMAC of a registered wallet - uint8_t wallet_hmac[32]; - - /// Root of a Merkle tree of the list of keys information - uint8_t wallet_header_keys_info_merkle_root[32]; - /// Number of keys in wallet header - size_t wallet_header_n_keys; - - union { - /// Serialized wallet policy - uint8_t serialized_wallet_policy[MAX_POLICY_MAP_SERIALIZED_LENGTH]; - /// Wallet policy map as array of bytes - uint8_t wallet_policy_map_bytes[MAX_POLICY_MAP_BYTES]; - /// Wallet policy map as a structure - policy_node_t wallet_policy_map; - }; - - /// Length of the address script - int script_len; - /// Address script - uint8_t script[MAX_PREVOUT_SCRIPTPUBKEY_LEN]; - - /// Length of the address - int address_len; - /// Address, a null-terminated string - char address[MAX_ADDRESS_LENGTH_STR + 1]; - - /// Key information string - uint8_t key_info_str[MAX_POLICY_KEY_INFO_LEN]; -#ifdef HAVE_LIQUID - /// Public key wildcard defining the rules for child key derivation. - uint8_t pubkey_wildcard_id; -#endif -} get_wallet_address_state_t; - -/** - * Handles GET_WALLET_ADDRESS command. - * - * @param[in,out] dispatcher_context - * Dispatcher context. - */ -void handler_get_wallet_address(dispatcher_context_t *dispatcher_context); diff --git a/src/handler/handlers.h b/src/handler/handlers.h new file mode 100644 index 000000000..ad3d28d2b --- /dev/null +++ b/src/handler/handlers.h @@ -0,0 +1,10 @@ +#pragma once + +#include "../boilerplate/dispatcher.h" + +void handler_get_extended_pubkey(dispatcher_context_t *dispatcher_context, uint8_t p2); +void handler_get_master_fingerprint(dispatcher_context_t *dispatcher_context, uint8_t p2); +void handler_get_wallet_address(dispatcher_context_t *dispatcher_context, uint8_t p2); +void handler_register_wallet(dispatcher_context_t *dispatcher_context, uint8_t p2); +void handler_sign_message(dispatcher_context_t *dispatcher_context, uint8_t p2); +void handler_sign_psbt(dispatcher_context_t *dispatcher_context, uint8_t p2); diff --git a/src/handler/lib/check_merkle_tree_sorted.c b/src/handler/lib/check_merkle_tree_sorted.c index 06dbdb6f4..5bc07062e 100644 --- a/src/handler/lib/check_merkle_tree_sorted.c +++ b/src/handler/lib/check_merkle_tree_sorted.c @@ -3,16 +3,20 @@ #include "check_merkle_tree_sorted.h" #include "get_merkle_leaf_element.h" +#include "../../common/merkle.h" + static int compare_byte_arrays(const uint8_t array1[], size_t array1_len, const uint8_t array2[], size_t array2_len); int call_check_merkle_tree_sorted_with_callback(dispatcher_context_t *dispatcher_context, + void *callback_state, const uint8_t root[static 32], size_t size, - dispatcher_callback_descriptor_t callback) { - // LOG_PROCESSOR(dispatcher_context, __FILE__, __LINE__, __func__); + merkle_tree_elements_callback_t callback, + const merkleized_map_commitment_t *map_commitment) { + // LOG_PROCESSOR(__FILE__, __LINE__, __func__); int prev_el_len = 0; uint8_t prev_el[MAX_CHECK_MERKLE_TREE_SORTED_PREIMAGE_SIZE]; @@ -39,10 +43,10 @@ int call_check_merkle_tree_sorted_with_callback(dispatcher_context_t *dispatcher memcpy(prev_el, cur_el, MIN((size_t)cur_el_len, sizeof(prev_el))); prev_el_len = cur_el_len; - if (callback.fn != NULL) { + if (callback != NULL) { // call callback with data buffer_t buf = buffer_create(cur_el, cur_el_len); - callback.fn(callback.state, &buf); + callback(dispatcher_context, callback_state, map_commitment, cur_el_idx, &buf); } } return 0; diff --git a/src/handler/lib/check_merkle_tree_sorted.h b/src/handler/lib/check_merkle_tree_sorted.h index 04a3d6ca6..e62ddaa9f 100644 --- a/src/handler/lib/check_merkle_tree_sorted.h +++ b/src/handler/lib/check_merkle_tree_sorted.h @@ -1,10 +1,20 @@ #pragma once #include "../../boilerplate/dispatcher.h" +#include "../../common/merkle.h" +#include "../../common/wallet.h" // this flow aborts if any element is larger than this size -// In PSBT, keys are currently up to 1+78 (for a serialized extended public key). -#define MAX_CHECK_MERKLE_TREE_SORTED_PREIMAGE_SIZE 80 +// TODO: we might remove this limitation altogether with a more careful implementation. +// Here we make sure that we have enough space for control block of a taptree of the maximum +// supported depth +#define MAX_CHECK_MERKLE_TREE_SORTED_PREIMAGE_SIZE (34 + 32 * (MAX_TAPTREE_POLICY_DEPTH - 1)) + +typedef void (*merkle_tree_elements_callback_t)(struct dispatcher_context_s *, + void *, + const merkleized_map_commitment_t *, + int, + buffer_t *); /** * Given a Merkle tree root and the size of the tree, it requests all the elements to the client @@ -15,9 +25,11 @@ * Returns 0 on success, or a negative number on failure. */ int call_check_merkle_tree_sorted_with_callback(dispatcher_context_t *dispatcher_context, + void *callback_state, const uint8_t root[static 32], size_t size, - dispatcher_callback_descriptor_t callback); + merkle_tree_elements_callback_t callback, + const merkleized_map_commitment_t *map_commitment); /** * Convenience function to call the get_merkle_tree_sorted flow, with a void callback. @@ -26,7 +38,9 @@ static inline int call_check_merkle_tree_sorted(dispatcher_context_t *dispatcher const uint8_t root[static 32], size_t size) { return call_check_merkle_tree_sorted_with_callback(dispatcher_context, + NULL, root, size, - make_callback(NULL, NULL)); + NULL, + NULL); } diff --git a/src/handler/lib/get_merkle_leaf_element.c b/src/handler/lib/get_merkle_leaf_element.c index 82448a924..5ab4b041b 100644 --- a/src/handler/lib/get_merkle_leaf_element.c +++ b/src/handler/lib/get_merkle_leaf_element.c @@ -9,7 +9,7 @@ int call_get_merkle_leaf_element(dispatcher_context_t *dispatcher_context, uint32_t leaf_index, uint8_t *out_ptr, size_t out_ptr_len) { - // LOG_PROCESSOR(dispatcher_context, __FILE__, __LINE__, __func__); + // LOG_PROCESSOR(__FILE__, __LINE__, __func__); uint8_t leaf_hash[32]; diff --git a/src/handler/lib/get_merkle_leaf_hash.c b/src/handler/lib/get_merkle_leaf_hash.c index 0385aa5c4..0da741073 100644 --- a/src/handler/lib/get_merkle_leaf_hash.c +++ b/src/handler/lib/get_merkle_leaf_hash.c @@ -9,13 +9,15 @@ #include "../../boilerplate/sw.h" #include "../client_commands.h" +#include "debug-helpers/debug.h" + // Reads the inputs and sends the GET_MERKLE_LEAF_PROOF request. int call_get_merkle_leaf_hash(dispatcher_context_t *dc, const uint8_t merkle_root[static 32], uint32_t tree_size, uint32_t leaf_index, uint8_t out[static 32]) { - // LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); + // LOG_PROCESSOR(__FILE__, __LINE__, __func__); PRINT_STACK_POINTER(); diff --git a/src/handler/lib/get_merkle_leaf_index.c b/src/handler/lib/get_merkle_leaf_index.c index 56e6d668b..66897781f 100644 --- a/src/handler/lib/get_merkle_leaf_index.c +++ b/src/handler/lib/get_merkle_leaf_index.c @@ -9,7 +9,7 @@ int call_get_merkle_leaf_index(dispatcher_context_t *dispatcher_context, size_t size, const uint8_t root[static 32], const uint8_t leaf_hash[static 32]) { - // LOG_PROCESSOR(dispatcher_context, __FILE__, __LINE__, __func__); + // LOG_PROCESSOR(__FILE__, __LINE__, __func__); { // free memory as soon as possible uint8_t request[1 + 32 + 32]; diff --git a/src/handler/lib/get_merkle_preimage.c b/src/handler/lib/get_merkle_preimage.c index f7b4050e4..5afe1bd37 100644 --- a/src/handler/lib/get_merkle_preimage.c +++ b/src/handler/lib/get_merkle_preimage.c @@ -7,13 +7,17 @@ #include "../../crypto.h" #include "../client_commands.h" +#include "debug-helpers/debug.h" + +#include "cxram_stash.h" + // TODO: refactor common code with stream_preimage.c int call_get_merkle_preimage(dispatcher_context_t *dispatcher_context, const uint8_t hash[static 32], uint8_t *out_ptr, size_t out_ptr_len) { - // LOG_PROCESSOR(dispatcher_context, __FILE__, __LINE__, __func__); + // LOG_PROCESSOR(__FILE__, __LINE__, __func__); PRINT_STACK_POINTER(); @@ -56,12 +60,19 @@ int call_get_merkle_preimage(dispatcher_context_t *dispatcher_context, uint8_t *data_ptr = dispatcher_context->read_buffer.ptr + dispatcher_context->read_buffer.offset; - cx_sha256_t hash_context; +#ifdef USE_CXRAM_SECTION + // allocate buffers inside the cxram section to save memory + // this is safe as there are no syscalls here that use the cxram + cx_sha256_t *hash_context = (cx_sha256_t *) get_cxram_buffer(); +#else + cx_sha256_t hash_context_obj; + cx_sha256_t *hash_context = &hash_context_obj; +#endif - cx_sha256_init(&hash_context); + cx_sha256_init(hash_context); // update hash - crypto_hash_update(&hash_context.header, data_ptr, partial_data_len); + crypto_hash_update(&hash_context->header, data_ptr, partial_data_len); buffer_t out_buffer = buffer_create(out_ptr, out_ptr_len); @@ -97,7 +108,7 @@ int call_get_merkle_preimage(dispatcher_context_t *dispatcher_context, // update hash crypto_hash_update( - &hash_context.header, + &hash_context->header, dispatcher_context->read_buffer.ptr + dispatcher_context->read_buffer.offset, n_bytes); @@ -109,9 +120,9 @@ int call_get_merkle_preimage(dispatcher_context_t *dispatcher_context, // hack: we pass the address of the final accumulator inside cx_sha256_t, so we don't need // an additional variable in the stack to store the final hash. - crypto_hash_digest(&hash_context.header, (uint8_t *) &hash_context.acc, 32); + crypto_hash_digest(&hash_context->header, (uint8_t *) &hash_context->acc, 32); - if (memcmp(hash_context.acc, hash, 32) != 0) { + if (memcmp(hash_context->acc, hash, 32) != 0) { PRINTF("Hash mismatch.\n"); return -10; } diff --git a/src/handler/lib/get_merkleized_map.c b/src/handler/lib/get_merkleized_map.c index ac2ea8ab2..1e6e7a914 100644 --- a/src/handler/lib/get_merkleized_map.c +++ b/src/handler/lib/get_merkleized_map.c @@ -8,12 +8,13 @@ #include "../../common/buffer.h" int call_get_merkleized_map_with_callback(dispatcher_context_t *dispatcher_context, + void *callback_state, const uint8_t root[static 32], int size, int index, - dispatcher_callback_descriptor_t keys_callback, + merkle_tree_elements_callback_t callback, merkleized_map_commitment_t *out_ptr) { - // LOG_PROCESSOR(dispatcher_context, __FILE__, __LINE__, __func__); + // LOG_PROCESSOR(__FILE__, __LINE__, __func__); uint8_t raw_output[9 + 2 * 32]; // maximum size of serialized result (9 bytes for the varint, // and the 2 Merkle roots) @@ -36,7 +37,9 @@ int call_get_merkleized_map_with_callback(dispatcher_context_t *dispatcher_conte } return call_check_merkle_tree_sorted_with_callback(dispatcher_context, + callback_state, out_ptr->keys_root, out_ptr->size, - keys_callback); + callback, + out_ptr); } \ No newline at end of file diff --git a/src/handler/lib/get_merkleized_map.h b/src/handler/lib/get_merkleized_map.h index 9bbb3eeec..c3ed69ec7 100644 --- a/src/handler/lib/get_merkleized_map.h +++ b/src/handler/lib/get_merkleized_map.h @@ -3,14 +3,17 @@ #include "../../boilerplate/dispatcher.h" #include "../../common/merkle.h" +#include "check_merkle_tree_sorted.h" + /** * TODO: docs */ int call_get_merkleized_map_with_callback(dispatcher_context_t *dispatcher_context, + void *callback_state, const uint8_t root[static 32], int size, int index, - dispatcher_callback_descriptor_t keys_callback, + merkle_tree_elements_callback_t callback, merkleized_map_commitment_t *out_ptr); /** @@ -22,9 +25,10 @@ static inline int call_get_merkleized_map(dispatcher_context_t *dispatcher_conte int index, merkleized_map_commitment_t *out_ptr) { return call_get_merkleized_map_with_callback(dispatcher_context, + NULL, root, size, index, - make_callback(NULL, NULL), + NULL, out_ptr); } diff --git a/src/handler/lib/get_merkleized_map_value.c b/src/handler/lib/get_merkleized_map_value.c index ba84823db..f9baf2fe9 100644 --- a/src/handler/lib/get_merkleized_map_value.c +++ b/src/handler/lib/get_merkleized_map_value.c @@ -11,7 +11,7 @@ int call_get_merkleized_map_value(dispatcher_context_t *dispatcher_context, int key_len, uint8_t *out, int out_len) { - // LOG_PROCESSOR(dispatcher_context, __FILE__, __LINE__, __func__); + // LOG_PROCESSOR(__FILE__, __LINE__, __func__); uint8_t key_merkle_hash[32]; merkle_compute_element_hash(key, key_len, key_merkle_hash); diff --git a/src/handler/lib/get_merkleized_map_value_hash.c b/src/handler/lib/get_merkleized_map_value_hash.c index aff8d22f5..29ee4b08b 100644 --- a/src/handler/lib/get_merkleized_map_value_hash.c +++ b/src/handler/lib/get_merkleized_map_value_hash.c @@ -10,7 +10,7 @@ int call_get_merkleized_map_value_hash(dispatcher_context_t *dispatcher_context, const uint8_t *key, int key_len, uint8_t out[static 32]) { - // LOG_PROCESSOR(dispatcher_context, __FILE__, __LINE__, __func__); + // LOG_PROCESSOR(__FILE__, __LINE__, __func__); uint8_t key_merkle_hash[32]; merkle_compute_element_hash(key, key_len, key_merkle_hash); diff --git a/src/handler/lib/get_preimage.c b/src/handler/lib/get_preimage.c index 8f4d05ac7..b5f5f5cd7 100644 --- a/src/handler/lib/get_preimage.c +++ b/src/handler/lib/get_preimage.c @@ -10,7 +10,7 @@ int call_get_preimage(dispatcher_context_t *dispatcher_context, const uint8_t hash[static 32], uint8_t *out, size_t out_len) { - // LOG_PROCESSOR(dispatcher_context, __FILE__, __LINE__, __func__); + // LOG_PROCESSOR(__FILE__, __LINE__, __func__); uint8_t cmd = CCMD_GET_PREIMAGE; dispatcher_context->add_to_response(&cmd, 1); @@ -86,13 +86,12 @@ int call_get_preimage(dispatcher_context_t *dispatcher_context, return -8; } - uint8_t *data_ptr2 = - dispatcher_context->read_buffer.ptr + dispatcher_context->read_buffer.offset; + data_ptr = dispatcher_context->read_buffer.ptr + dispatcher_context->read_buffer.offset; // update hash - crypto_hash_update(&hash_context.header, data_ptr2, n_bytes); + crypto_hash_update(&hash_context.header, data_ptr, n_bytes); - buffer_write_bytes(&buffer_out, data_ptr2, n_bytes); + buffer_write_bytes(&buffer_out, data_ptr, n_bytes); bytes_remaining -= n_bytes; } diff --git a/src/handler/lib/policy.c b/src/handler/lib/policy.c index a3b140dfc..23059af9d 100644 --- a/src/handler/lib/policy.c +++ b/src/handler/lib/policy.c @@ -1,68 +1,62 @@ #include #include "policy.h" -#include "util.h" #include "../lib/get_merkle_leaf_element.h" +#include "../lib/get_preimage.h" #include "../../crypto.h" #include "../../common/base58.h" +#include "../../common/bitvector.h" +#include "../../common/read.h" +#include "../../common/script.h" #include "../../common/segwit_addr.h" -#include "../../common/wif.h" -#include "../../liquid/liquid.h" +#include "../../common/wallet.h" + +#include "debug-helpers/debug.h" #include "ledger_assert.h" -#ifdef HAVE_LIQUID -#define MAX_POLICY_DEPTH 4 -#else -#define MAX_POLICY_DEPTH 3 -#endif +#define MAX_POLICY_DEPTH 10 + +// The last opcode must be processed as a VERIFY flag +#define PROCESSOR_FLAG_V 1 -#define MODE_OUT_BYTES 0 -#define MODE_OUT_HASH 1 +/** + * The label used to derive the symmetric key used to register/verify wallet policies on device. + */ +#define WALLET_SLIP0021_LABEL "\0LEDGER-Wallet policy" +#define WALLET_SLIP0021_LABEL_LEN \ + (sizeof(WALLET_SLIP0021_LABEL) - 1) // sizeof counts the terminating 0 typedef struct { const policy_node_t *policy_node; - // Only one of the two is used, depending on the `mode` - union { - cx_sha256_t *hash_context; - buffer_t *out_buf; - }; - + // bytes written to output + uint16_t length; // used to identify the stage of execution for nodes that require multiple rounds uint8_t step; - // MODE_OUT_BYTES if the current node is outputting the actual script bytes, or MODE_OUT_HASH - // if it is outputting the script hash - uint8_t mode; + uint8_t flags; } policy_parser_node_state_t; typedef struct { dispatcher_context_t *dispatcher_context; - const uint8_t *keys_merkle_root; - uint32_t n_keys; - bool change; - size_t address_index; + const wallet_derivation_info_t *wdi; + bool is_taproot; policy_parser_node_state_t nodes[MAX_POLICY_DEPTH]; // stack of nodes being processed int node_stack_eos; // index of node being processed within nodes; will be set -1 at the end of // processing - cx_sha256_t hash_context; // shared among all the nodes; there are never two concurrent hash - // computations in process. - uint8_t hash[32]; // when a node processed in hash mode is popped, the hash is computed here - - // If not NULL, requests to verify all wallet's public key wildcards to be equal to value, - // pointed by this parameter. - const policy_map_key_wildcard_id_t *p_key_wildcard_to_verify; + cx_hash_t *hash_context; + uint8_t hash[32]; // when a node is popped, the hash is computed here } policy_parser_state_t; -// comparator for pointers to compressed pubkeys -static int cmp_compressed_pubkeys(const void *a, const void *b) { +// comparator for pointers to arrays of equal length +static int cmp_arrays(const void *a, const void *b, size_t length) { const uint8_t *key_a = (const uint8_t *) a; const uint8_t *key_b = (const uint8_t *) b; - for (int i = 0; i < 33; i++) { + for (size_t i = 0; i < length; i++) { int diff = key_a[i] - key_b[i]; if (diff != 0) { return diff; @@ -71,27 +65,365 @@ static int cmp_compressed_pubkeys(const void *a, const void *b) { return 0; } +typedef int (*policy_parser_processor_t)(policy_parser_state_t *state, const void *arg); + +typedef enum { + CMD_CODE_OP, // data is a byte to emit (usually an opcode) + CMD_CODE_OP_V, // data is an opcode, but transform according to 'v' if necessary + CMD_CODE_PUSH_PK, // push the compressed pubkey indicated by the current policy_node_with_key_t + CMD_CODE_PUSH_PKH, // push the hash160 of the compressed pubkey indicated by the current + // policy_node_with_key_t + CMD_CODE_PUSH_UINT32, // push the integer in the current policy_node_with_uint32_t + CMD_CODE_PUSH_HASH20, // push a 20 bytes hash in the current policy_node_with_hash_160_t + CMD_CODE_PUSH_HASH32, // push a 32 bytes hash in the current policy_node_with_hash_256_t + CMD_CODE_PROCESS_CHILD, // process the i-th script of a policy_node_with_scripts_t, + // where i is indicated by the command data + CMD_CODE_PROCESS_CHILD_V, // like the previous, but it propagates the v flag to the child + CMD_CODE_PROCESS_CHILD_VV, // like the previous, but it activates the v flag in the child + + CMD_CODE_END // last step, should terminate here +} generic_processor_command_code_e; + +typedef struct { + uint8_t code; + uint8_t data; +} generic_processor_command_t; + +// Whitelistes for allowed fragments when processing inner scripts expressions +static const uint8_t fragment_whitelist_sh[] = {TOKEN_WPKH, TOKEN_MULTI, TOKEN_SORTEDMULTI}; +static const uint8_t fragment_whitelist_sh_wsh[] = {TOKEN_MULTI, TOKEN_SORTEDMULTI}; +static const uint8_t fragment_whitelist_wsh[] = { + /* tokens for scripts on segwit */ + TOKEN_0, + TOKEN_1, + TOKEN_PK, + TOKEN_PKH, + TOKEN_PK_K, + TOKEN_PK_H, + TOKEN_OLDER, + TOKEN_AFTER, + TOKEN_SHA256, + TOKEN_HASH256, + TOKEN_RIPEMD160, + TOKEN_HASH160, + TOKEN_ANDOR, + TOKEN_AND_V, + TOKEN_AND_B, + TOKEN_AND_N, + TOKEN_MULTI, + TOKEN_OR_B, + TOKEN_OR_C, + TOKEN_OR_D, + TOKEN_OR_I, + TOKEN_SORTEDMULTI, + TOKEN_THRESH, + // wrappers + TOKEN_A, + TOKEN_S, + TOKEN_C, + TOKEN_T, + TOKEN_D, + TOKEN_V, + TOKEN_J, + TOKEN_N, + TOKEN_L, + TOKEN_U}; +static const uint8_t fragment_whitelist_tapscript[] = { + /* tokens for scripts in taptrees */ + TOKEN_0, + TOKEN_1, + TOKEN_PK, + TOKEN_PKH, + TOKEN_PK_K, + TOKEN_PK_H, + TOKEN_OLDER, + TOKEN_AFTER, + TOKEN_SHA256, + TOKEN_HASH256, + TOKEN_RIPEMD160, + TOKEN_HASH160, + TOKEN_ANDOR, + TOKEN_AND_V, + TOKEN_AND_B, + TOKEN_AND_N, + TOKEN_MULTI_A, + TOKEN_OR_B, + TOKEN_OR_C, + TOKEN_OR_D, + TOKEN_OR_I, + TOKEN_SORTEDMULTI_A, + TOKEN_THRESH, + // wrappers + TOKEN_A, + TOKEN_S, + TOKEN_C, + TOKEN_T, + TOKEN_D, + TOKEN_V, + TOKEN_J, + TOKEN_N, + TOKEN_L, + TOKEN_U}; + +static const generic_processor_command_t commands_0[] = {{CMD_CODE_OP_V, OP_0}, {CMD_CODE_END, 0}}; +static const generic_processor_command_t commands_1[] = {{CMD_CODE_OP_V, OP_1}, {CMD_CODE_END, 0}}; +static const generic_processor_command_t commands_pk_k[] = {{CMD_CODE_PUSH_PK, 0}, + {CMD_CODE_END, 0}}; +static const generic_processor_command_t commands_pk_h[] = {{CMD_CODE_OP, OP_DUP}, + {CMD_CODE_OP, OP_HASH160}, + {CMD_CODE_PUSH_PKH, 0}, + {CMD_CODE_OP, OP_EQUALVERIFY}, + {CMD_CODE_END, 0}}; +static const generic_processor_command_t commands_pk[] = {{CMD_CODE_PUSH_PK, 0}, + {CMD_CODE_OP_V, OP_CHECKSIG}, + {CMD_CODE_END, 0}}; +static const generic_processor_command_t commands_older[] = {{CMD_CODE_PUSH_UINT32, 0}, + {CMD_CODE_OP_V, OP_CSV}, + {CMD_CODE_END, 0}}; +static const generic_processor_command_t commands_after[] = {{CMD_CODE_PUSH_UINT32, 0}, + {CMD_CODE_OP_V, OP_CLTV}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_sha256[] = {{CMD_CODE_OP, OP_SIZE}, + {CMD_CODE_OP, 1}, // 1-byte push + {CMD_CODE_OP, 32}, // pushed value + {CMD_CODE_OP, OP_EQUALVERIFY}, + {CMD_CODE_OP, OP_SHA256}, + {CMD_CODE_PUSH_HASH32, 0}, + {CMD_CODE_OP_V, OP_EQUAL}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_hash256[] = {{CMD_CODE_OP, OP_SIZE}, + {CMD_CODE_OP, 1}, // 1-byte push + {CMD_CODE_OP, 32}, // pushed value + {CMD_CODE_OP, OP_EQUALVERIFY}, + {CMD_CODE_OP, OP_HASH256}, + {CMD_CODE_PUSH_HASH32, 0}, + {CMD_CODE_OP_V, OP_EQUAL}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_ripemd160[] = {{CMD_CODE_OP, OP_SIZE}, + {CMD_CODE_OP, 1}, // 1-byte push + {CMD_CODE_OP, 32}, // pushed value + {CMD_CODE_OP, OP_EQUALVERIFY}, + {CMD_CODE_OP, OP_RIPEMD160}, + {CMD_CODE_PUSH_HASH20, 0}, + {CMD_CODE_OP_V, OP_EQUAL}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_hash160[] = {{CMD_CODE_OP, OP_SIZE}, + {CMD_CODE_OP, 1}, // 1-byte push + {CMD_CODE_OP, 32}, // pushed value + {CMD_CODE_OP, OP_EQUALVERIFY}, + {CMD_CODE_OP, OP_HASH160}, + {CMD_CODE_PUSH_HASH20, 0}, + {CMD_CODE_OP_V, OP_EQUAL}, + {CMD_CODE_END, 0}}; + +// andor(X,Y,X) ==> [X] NOTIF [Z] ELSE [Y] ENDIF +static const generic_processor_command_t commands_andor[] = {{CMD_CODE_PROCESS_CHILD, 0}, + {CMD_CODE_OP, OP_NOTIF}, + {CMD_CODE_PROCESS_CHILD, 2}, + {CMD_CODE_OP, OP_ELSE}, + {CMD_CODE_PROCESS_CHILD, 1}, + {CMD_CODE_OP_V, OP_ENDIF}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_and_v[] = {{CMD_CODE_PROCESS_CHILD, 0}, + {CMD_CODE_PROCESS_CHILD_V, 1}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_and_b[] = {{CMD_CODE_PROCESS_CHILD, 0}, + {CMD_CODE_PROCESS_CHILD, 1}, + {CMD_CODE_OP_V, OP_BOOLAND}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_and_n[] = {{CMD_CODE_PROCESS_CHILD, 0}, + {CMD_CODE_OP, OP_NOTIF}, + {CMD_CODE_OP, OP_0}, + {CMD_CODE_OP, OP_ELSE}, + {CMD_CODE_PROCESS_CHILD, 1}, + {CMD_CODE_OP_V, OP_ENDIF}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_or_b[] = {{CMD_CODE_PROCESS_CHILD, 0}, + {CMD_CODE_PROCESS_CHILD, 1}, + {CMD_CODE_OP_V, OP_BOOLOR}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_or_c[] = {{CMD_CODE_PROCESS_CHILD, 0}, + {CMD_CODE_OP, OP_NOTIF}, + {CMD_CODE_PROCESS_CHILD, 1}, + {CMD_CODE_OP_V, OP_ENDIF}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_or_d[] = {{CMD_CODE_PROCESS_CHILD, 0}, + {CMD_CODE_OP, OP_IFDUP}, + {CMD_CODE_OP, OP_NOTIF}, + {CMD_CODE_PROCESS_CHILD, 1}, + {CMD_CODE_OP_V, OP_ENDIF}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_or_i[] = {{CMD_CODE_OP, OP_IF}, + {CMD_CODE_PROCESS_CHILD, 0}, + {CMD_CODE_OP, OP_ELSE}, + {CMD_CODE_PROCESS_CHILD, 1}, + {CMD_CODE_OP_V, OP_ENDIF}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_a[] = {{CMD_CODE_OP, OP_TOALTSTACK}, + {CMD_CODE_PROCESS_CHILD, 0}, + {CMD_CODE_OP, OP_FROMALTSTACK}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_s[] = {{CMD_CODE_OP, OP_SWAP}, + {CMD_CODE_PROCESS_CHILD, 0}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_c[] = {{CMD_CODE_PROCESS_CHILD, 0}, + {CMD_CODE_OP_V, OP_CHECKSIG}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_t[] = {{CMD_CODE_PROCESS_CHILD, 0}, + {CMD_CODE_OP_V, OP_1}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_d[] = {{CMD_CODE_OP, OP_DUP}, + {CMD_CODE_OP, OP_IF}, + {CMD_CODE_PROCESS_CHILD, 0}, + {CMD_CODE_OP_V, OP_ENDIF}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_v[] = {{CMD_CODE_PROCESS_CHILD_VV, 0}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_j[] = {{CMD_CODE_OP, OP_SIZE}, + {CMD_CODE_OP, OP_0NOTEQUAL}, + {CMD_CODE_OP, OP_IF}, + {CMD_CODE_PROCESS_CHILD, 0}, + {CMD_CODE_OP_V, OP_ENDIF}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_n[] = {{CMD_CODE_PROCESS_CHILD, 0}, + {CMD_CODE_OP_V, OP_0NOTEQUAL}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_l[] = {{CMD_CODE_OP, OP_IF}, + {CMD_CODE_OP, OP_0}, + {CMD_CODE_OP, OP_ELSE}, + {CMD_CODE_PROCESS_CHILD, 0}, + {CMD_CODE_OP_V, OP_ENDIF}, + {CMD_CODE_END, 0}}; + +static const generic_processor_command_t commands_u[] = {{CMD_CODE_OP, OP_IF}, + {CMD_CODE_PROCESS_CHILD, 0}, + {CMD_CODE_OP, OP_ELSE}, + {CMD_CODE_OP, OP_0}, + {CMD_CODE_OP_V, OP_ENDIF}, + {CMD_CODE_END, 0}}; + +int read_and_parse_wallet_policy( + dispatcher_context_t *dispatcher_context, + buffer_t *buf, + policy_map_wallet_header_t *wallet_header, + uint8_t policy_map_descriptor_template[static MAX_DESCRIPTOR_TEMPLATE_LENGTH], + uint8_t *policy_map_bytes, + size_t policy_map_bytes_len) { + if ((read_wallet_policy_header(buf, wallet_header)) < 0) { + return WITH_ERROR(-1, "Failed reading wallet policy header"); + } + + if (wallet_header->version == WALLET_POLICY_VERSION_V1) { + memcpy(policy_map_descriptor_template, + wallet_header->descriptor_template, + wallet_header->descriptor_template_len); + } else { + // if V2, stream and parse descriptor template from client first + int descriptor_template_len = call_get_preimage(dispatcher_context, + wallet_header->descriptor_template_sha256, + policy_map_descriptor_template, + MAX_DESCRIPTOR_TEMPLATE_LENGTH); + if (descriptor_template_len < 0) { + return WITH_ERROR(-1, "Failed getting wallet policy descriptor template"); + } + } + + buffer_t policy_map_buffer = + buffer_create(policy_map_descriptor_template, wallet_header->descriptor_template_len); + + int desc_temp_len = parse_descriptor_template(&policy_map_buffer, + policy_map_bytes, + policy_map_bytes_len, + wallet_header->version); + if (desc_temp_len < 0) { + return WITH_ERROR(-1, "Failed parsing descriptor template"); + } + return desc_temp_len; +} + +/** + * Pushes a node onto the stack. Returns 0 on success, -1 if the stack is exhausted. + */ +__attribute__((warn_unused_result)) static int state_stack_push(policy_parser_state_t *state, + const policy_node_t *policy_node, + uint8_t flags) { + ++state->node_stack_eos; + + if (state->node_stack_eos >= MAX_POLICY_DEPTH) { + return WITH_ERROR(-1, "Reached maximum policy depth"); + } + + policy_parser_node_state_t *node = &state->nodes[state->node_stack_eos]; + node->policy_node = policy_node; + node->length = 0; + node->step = 0; + node->flags = flags; + + return 0; +} + +/** + * Pops a node from the stack. + * Returns the emitted length on success, -1 on error. + */ +__attribute__((warn_unused_result)) static int state_stack_pop(policy_parser_state_t *state) { + policy_parser_node_state_t *node = &state->nodes[state->node_stack_eos]; + + if (state->node_stack_eos <= -1) { + return WITH_ERROR(-1, "Stack underflow"); + } + + --state->node_stack_eos; + + if (state->node_stack_eos >= 0) { + state->nodes[state->node_stack_eos].length += node->length; + } + return node->length; +} + +__attribute__((warn_unused_result)) static inline int +execute_processor(policy_parser_state_t *state, policy_parser_processor_t proc, const void *arg) { + int ret = proc(state, arg); + + // if the processor is done, pop the stack + if (ret > 0) { + return state_stack_pop(state); + } + + return ret; +} + // p2pkh ==> legacy address (start with 1 on mainnet, m or n on testnet) // p2sh (also nested segwit) ==> legacy script (start with 3 on mainnet, 2 on testnet) // p2wpkh or p2wsh ==> bech32 (sart with bc1 on mainnet, tb1 on testnet) -/** - * Gets the extended public key at given index. - * - * This is a convenience function, split from get_derived_pubkey only to improve stack usage. - * - * @param[in,out] state - * Parser state. - * @param[in] key_index - * Public key index. - * @param[out] out - * Pointer to structure instance receiving serialized extended public key. - * - * @return returns -1 on error, or a non-negative public key wildcard identifier. - */ -static int __attribute__((noinline)) get_extended_pubkey(policy_parser_state_t *state, - int key_index, - serialized_extended_pubkey_t *out) { +// convenience function, split from get_derived_pubkey only to improve stack usage +// returns -1 on error, 0 if the returned key info has no wildcard (**), 1 if it has the wildcard +__attribute__((noinline, warn_unused_result)) static int get_extended_pubkey( + dispatcher_context_t *dispatcher_context, + const wallet_derivation_info_t *wdi, + int key_index, + serialized_extended_pubkey_t *out) { PRINT_STACK_POINTER(); policy_map_key_info_t key_info; @@ -99,9 +431,9 @@ static int __attribute__((noinline)) get_extended_pubkey(policy_parser_state_t * { char key_info_str[MAX_POLICY_KEY_INFO_LEN]; - int key_info_len = call_get_merkle_leaf_element(state->dispatcher_context, - state->keys_merkle_root, - state->n_keys, + int key_info_len = call_get_merkle_leaf_element(dispatcher_context, + wdi->keys_merkle_root, + wdi->n_keys, key_index, (uint8_t *) key_info_str, sizeof(key_info_str)); @@ -112,143 +444,238 @@ static int __attribute__((noinline)) get_extended_pubkey(policy_parser_state_t * // Make a sub-buffer for the pubkey info buffer_t key_info_buffer = buffer_create(key_info_str, key_info_len); - if (parse_policy_map_key_info(&key_info_buffer, &key_info) == -1) { + if (parse_policy_map_key_info(&key_info_buffer, &key_info, wdi->wallet_version) == -1) { return -1; } } + *out = key_info.ext_pubkey; - // decode pubkey - serialized_extended_pubkey_check_t decoded_pubkey_check; - if (base58_decode(key_info.ext_pubkey, - strnlen(key_info.ext_pubkey, sizeof(key_info.ext_pubkey) - 1), - (uint8_t *) &decoded_pubkey_check, - sizeof(decoded_pubkey_check)) == -1) { - return -1; - } - - uint8_t checksum[4]; - crypto_get_checksum((uint8_t *)&decoded_pubkey_check.serialized_extended_pubkey, - sizeof(decoded_pubkey_check.serialized_extended_pubkey), - checksum); - if (!memeq(checksum, decoded_pubkey_check.checksum, sizeof(checksum))) { - return -1; - } - - memcpy(out, - &decoded_pubkey_check.serialized_extended_pubkey, - sizeof(decoded_pubkey_check.serialized_extended_pubkey)); - - return key_info.wildcard_id; + return key_info.has_wildcard ? 1 : 0; } -/** - * @brief Get the derived public key at given index. - * - * @param[in,out] state - * Parser state. - * @param[in] key_index - * Public key index. - * @param[out] out - * Buffer receiving compressed public key, must be not smaller than 33 bytes. - * - * @return returns -1 on error, or a non-negative public key wildcard identifier. - */ -static int get_derived_pubkey(policy_parser_state_t *state, int key_index, uint8_t out[static 33]) { +__attribute__((warn_unused_result)) static int get_derived_pubkey( + dispatcher_context_t *dispatcher_context, + const wallet_derivation_info_t *wdi, + const policy_node_key_placeholder_t *key_placeholder, + uint8_t out[static 33]) { PRINT_STACK_POINTER(); serialized_extended_pubkey_t ext_pubkey; - int wildcard_id = get_extended_pubkey(state, key_index, &ext_pubkey); - if (wildcard_id < 0) { + int ret = get_extended_pubkey(dispatcher_context, wdi, key_placeholder->key_index, &ext_pubkey); + if (ret < 0) { return -1; } - switch(wildcard_id) { - case KEY_WILDCARD_NONE: - // No wildcard, returning pubkey "as is" - break; - - case KEY_WILDCARD_ANY: - case KEY_WILDCARD_STANDARD_CHAINS: - case KEY_WILDCARD_EXTERNAL_CHAIN: - case KEY_WILDCARD_INTERNAL_CHAIN: - // Check if requested derivation is allowed by pubkey wildcard - if ( (KEY_WILDCARD_EXTERNAL_CHAIN == wildcard_id && 0 != state->change) || - (KEY_WILDCARD_INTERNAL_CHAIN == wildcard_id && 1 != state->change) ) { - return -1; - } - // Derive the /chain/i child of this pubkey reusing the same memory of ext_pubkey - if (0 != bip32_CKDpub(&ext_pubkey, state->change, &ext_pubkey)) { - return -1; - } - if (0 != bip32_CKDpub(&ext_pubkey, state->address_index, &ext_pubkey)) { - return -1; - } - break; - - default: - // Unsupported wildcard - return -1; + // we derive the // child of this pubkey + // we reuse the same memory of ext_pubkey + ret = bip32_CKDpub(&ext_pubkey, + wdi->change ? key_placeholder->num_second : key_placeholder->num_first, + &ext_pubkey); + if (ret < 0) { + return -1; } - - memcpy(out, ext_pubkey.compressed_pubkey, 33); - - return wildcard_id; -} - -/** - * Pushes a node onto the stack. Returns 0 on success, -1 if the stack is exhausted. - */ -static int state_stack_push(policy_parser_state_t *state, policy_node_t *policy_node) { - ++state->node_stack_eos; - - if (state->node_stack_eos >= MAX_POLICY_DEPTH) { + ret = bip32_CKDpub(&ext_pubkey, wdi->address_index, &ext_pubkey); + if (ret < 0) { return -1; } - policy_parser_node_state_t *node = &state->nodes[state->node_stack_eos]; - cx_sha256_init(&state->hash_context); - node->policy_node = policy_node; - node->step = 0; - node->mode = MODE_OUT_HASH; - node->hash_context = &state->hash_context; + memcpy(out, ext_pubkey.compressed_pubkey, 33); return 0; } -/** - * Pops a node the stack. If the node is in HASH mode, computes the hash. - * Returns 0 on success, -1 on error. - */ -static int state_stack_pop(policy_parser_state_t *state) { +static void update_output(policy_parser_state_t *state, const uint8_t *data, size_t data_len) { policy_parser_node_state_t *node = &state->nodes[state->node_stack_eos]; - - if (state->node_stack_eos >= MAX_POLICY_DEPTH || state->node_stack_eos <= -1) { - return -1; + node->length += data_len; + if (state->hash_context != NULL) { + crypto_hash_update(state->hash_context, data, data_len); } +} + +static inline void update_output_u8(policy_parser_state_t *state, uint8_t data) { + update_output(state, &data, 1); +} - if (node->mode == MODE_OUT_HASH) { - crypto_hash_digest(&state->hash_context.header, state->hash, 32); +// outputs the minimal push opcode for an unsigned 32bit integer +static void update_output_push_u32(policy_parser_state_t *state, uint32_t n) { + if (n == 0) { + update_output_u8(state, OP_0); + } else if (n <= 16) { + update_output_u8(state, 0x50 + (uint8_t) n); + } else { + uint8_t n_le[4]; + write_u32_le(n_le, 0, n); + uint8_t byte_size; + if (n <= 0x7f) + byte_size = 1; + else if (n <= 0x7fff) + byte_size = 2; + else if (n <= 0x7fffff) + byte_size = 3; + else if (n <= 0x7fffffff) + byte_size = 4; + else + byte_size = 5; // no 32-bit number needs more than 5 bytes + + update_output_u8(state, byte_size); + if (byte_size < 5) { + update_output(state, n_le, byte_size); + } else { + // Since numbers are signed little endian, unsigned numbers bigger than 0x7FFFFFFF + // need an extra 0x00 byte. + update_output(state, n_le, 4); + update_output_u8(state, 0); + } } +} - --state->node_stack_eos; - return 0; +static void update_output_op_v(policy_parser_state_t *state, uint8_t op) { + const policy_parser_node_state_t *node = &state->nodes[state->node_stack_eos]; + if (node->flags & PROCESSOR_FLAG_V) { + if (op == OP_CHECKSIG || op == OP_CHECKMULTISIG || op == OP_NUMEQUAL || op == OP_EQUAL) { + // the _VERIFY versions of the opcodes are all 1 larger + update_output_u8(state, op + 1); + } else { + update_output_u8(state, op); + update_output_u8(state, OP_VERIFY); + } + } else { + update_output_u8(state, op); + } } -static void update_output(policy_parser_state_t *state, const uint8_t *data, size_t data_len) { +__attribute__((warn_unused_result)) static int process_generic_node(policy_parser_state_t *state, + const void *arg) { policy_parser_node_state_t *node = &state->nodes[state->node_stack_eos]; - if (node->mode == MODE_OUT_BYTES) { - buffer_write_bytes(node->out_buf, data, data_len); + + const generic_processor_command_t *commands = (const generic_processor_command_t *) arg; + + size_t n_commands = 0; + while (commands[n_commands].code != CMD_CODE_END) ++n_commands; + + if (node->step > n_commands) { + return WITH_ERROR(-1, "Inconsistent state"); + } else if (node->step == n_commands) { + return 1; } else { - crypto_hash_update(&node->hash_context->header, data, data_len); + uint8_t cmd_code = commands[node->step].code; + uint8_t cmd_data = commands[node->step].data; + + switch (cmd_code) { + case CMD_CODE_OP: { + update_output_u8(state, cmd_data); + break; + } + case CMD_CODE_OP_V: { + update_output_op_v(state, cmd_data); + break; + } + case CMD_CODE_PUSH_PK: { + const policy_node_with_key_t *policy = + (const policy_node_with_key_t *) node->policy_node; + uint8_t compressed_pubkey[33]; + if (-1 == + get_derived_pubkey(state->dispatcher_context, + state->wdi, + r_policy_node_key_placeholder(&policy->key_placeholder), + compressed_pubkey)) { + return -1; + } + + if (!state->is_taproot) { + update_output_u8(state, 33); // PUSH 33 bytes + update_output(state, compressed_pubkey, 33); + } else { + // x-only pubkey if within taproot + update_output_u8(state, 32); // PUSH 32 bytes + update_output(state, compressed_pubkey + 1, 32); + } + break; + } + case CMD_CODE_PUSH_PKH: { + const policy_node_with_key_t *policy = + (const policy_node_with_key_t *) node->policy_node; + uint8_t compressed_pubkey[33]; + if (-1 == + get_derived_pubkey(state->dispatcher_context, + state->wdi, + r_policy_node_key_placeholder(&policy->key_placeholder), + compressed_pubkey)) { + return -1; + } + if (!state->is_taproot) { + crypto_hash160(compressed_pubkey, 33, compressed_pubkey); // reuse memory + } else { + // x-only pubkey if within taproot + crypto_hash160(compressed_pubkey + 1, 32, compressed_pubkey); // reuse memory + } + + update_output_u8(state, 20); // PUSH 20 bytes + update_output(state, compressed_pubkey, 20); + break; + } + case CMD_CODE_PUSH_UINT32: { + const policy_node_with_uint32_t *policy = + (const policy_node_with_uint32_t *) node->policy_node; + update_output_push_u32(state, policy->n); + break; + } + case CMD_CODE_PUSH_HASH20: { + const policy_node_with_hash_160_t *policy = + (const policy_node_with_hash_160_t *) node->policy_node; + update_output_u8(state, 20); + update_output(state, policy->h, 20); + break; + } + case CMD_CODE_PUSH_HASH32: { + const policy_node_with_hash_256_t *policy = + (const policy_node_with_hash_256_t *) node->policy_node; + update_output_u8(state, 32); + update_output(state, policy->h, 32); + break; + } + case CMD_CODE_PROCESS_CHILD: { + const policy_node_with_scripts_t *policy = + (const policy_node_with_scripts_t *) node->policy_node; + if (0 > state_stack_push(state, r_policy_node(&policy->scripts[cmd_data]), 0)) { + return -1; + } + break; + } + case CMD_CODE_PROCESS_CHILD_V: { + const policy_node_with_scripts_t *policy = + (const policy_node_with_scripts_t *) node->policy_node; + if (0 > state_stack_push(state, + r_policy_node(&policy->scripts[cmd_data]), + node->flags)) { + return -1; + } + break; + } + case CMD_CODE_PROCESS_CHILD_VV: { + const policy_node_with_scripts_t *policy = + (const policy_node_with_scripts_t *) node->policy_node; + if (0 > state_stack_push(state, + r_policy_node(&policy->scripts[cmd_data]), + node->flags | PROCESSOR_FLAG_V)) { + return -1; + } + break; + } + default: + PRINTF("Unexpected command code: %d\n", cmd_code); + return -1; + } + ++node->step; + return 0; } } -static void update_output_u8(policy_parser_state_t *state, const uint8_t data) { - update_output(state, &data, 1); -} +__attribute__((warn_unused_result)) static int process_pkh_wpkh_node(policy_parser_state_t *state, + const void *arg) { + UNUSED(arg); -static int __attribute__((noinline)) process_pkh_wpkh_node(policy_parser_state_t *state) { PRINT_STACK_POINTER(); policy_parser_node_state_t *node = &state->nodes[state->node_stack_eos]; @@ -259,331 +686,1271 @@ static int __attribute__((noinline)) process_pkh_wpkh_node(policy_parser_state_t policy_node_with_key_t *policy = (policy_node_with_key_t *) node->policy_node; - unsigned int out_len; - if (policy->type == TOKEN_PKH) { - out_len = 3 + 20 + 2; - } else { - out_len = 2 + 20; - } - - if (node->mode == MODE_OUT_BYTES && !buffer_can_read(node->out_buf, out_len)) { - return -1; - } - - uint8_t compressed_pubkey[33]; - - if (node->mode == MODE_OUT_HASH) { - cx_sha256_init(&state->hash_context); - } + uint8_t compressed_pubkey[33]; - int wildcard_id = get_derived_pubkey(state, policy->key_index, compressed_pubkey); - if (-1 == wildcard_id) { - return -1; - } - // Verify public key wildcard if requested - if (NULL != state->p_key_wildcard_to_verify && - wildcard_id != *state->p_key_wildcard_to_verify) { + if (-1 == get_derived_pubkey(state->dispatcher_context, + state->wdi, + r_policy_node_key_placeholder(&policy->key_placeholder), + compressed_pubkey)) { return -1; - } + } else if (policy->base.type == TOKEN_PKH) { + update_output_u8(state, OP_DUP); + update_output_u8(state, OP_HASH160); - int result; - if (policy->type == TOKEN_PKH) { - update_output_u8(state, 0x76); - update_output_u8(state, 0xa9); - update_output_u8(state, 0x14); + update_output_u8(state, 20); // PUSH 20 bytes - crypto_hash160(compressed_pubkey, 33, compressed_pubkey); // reuse memory + if (!state->is_taproot) { + crypto_hash160(compressed_pubkey, 33, compressed_pubkey); // reuse memory + } else { + // x-only pubkey if within taproot + crypto_hash160(compressed_pubkey + 1, 32, compressed_pubkey); // reuse memory + } update_output(state, compressed_pubkey, 20); - update_output_u8(state, 0x88); - update_output_u8(state, 0xac); + update_output_u8(state, OP_EQUALVERIFY); + update_output_op_v(state, OP_CHECKSIG); + } else { // policy->base.type == TOKEN_WPKH + if (state->is_taproot) { + PRINTF("wpkh is invalid within taproot context"); + return -1; + } + + update_output_u8(state, OP_0); - result = 3 + 20 + 2; - } else { // policy->type == TOKEN_WPKH - update_output_u8(state, 0x00); - update_output_u8(state, 0x14); + update_output_u8(state, 20); // PUSH 20 bytes crypto_hash160(compressed_pubkey, 33, compressed_pubkey); // reuse memory update_output(state, compressed_pubkey, 20); - - result = 2 + 20; } - if (-1 == state_stack_pop(state)) { - return -1; - } - return result; + return 1; } -static int __attribute__((noinline)) process_sh_wsh_node(policy_parser_state_t *state) { +__attribute__((warn_unused_result)) static int process_thresh_node(policy_parser_state_t *state, + const void *arg) { + UNUSED(arg); + PRINT_STACK_POINTER(); policy_parser_node_state_t *node = &state->nodes[state->node_stack_eos]; + const policy_node_thresh_t *policy = (const policy_node_thresh_t *) node->policy_node; - policy_node_with_script_t *policy = (policy_node_with_script_t *) node->policy_node; + // [X1] [X2] ADD ... [Xn] ADD EQUAL - if (node->step != 0 && node->step != 1) { - return -1; - } + /* + It's a bit unnatural to encode thresh in a way that is compatible with our + stack-based encoder, as every "step" that needs to recur on a child Script + must emit the child script as its last thing. The natural way of splitting + this would be: - if (node->step == 0) { - // process child in HASH mode - if (-1 == state_stack_push(state, policy->script)) { - return -1; - } - ++node->step; - return 0; - } + [X1] / [X2] ADD / [X3] ADD / ... / [Xn] ADD / EQUAL - // child already computed + Instead, we have to split it as follows: - if (node->mode == MODE_OUT_HASH) { - cx_sha256_init(&state->hash_context); - } + [X1] / [X2] / ADD [X3] / ... / ADD [Xn] / ADD EQUAL - int result; - if (policy->type == TOKEN_SH) { - update_output_u8(state, 0xa9); - update_output_u8(state, 0x14); + But this is incorrect if n == 1, because the correct encoding is just - crypto_ripemd160(state->hash, 32, state->hash); // reuse memory - update_output(state, state->hash, 20); + [X1] EQUAL - update_output_u8(state, 0x87); + Therefore, the case n == 1 needs to be handled separately to avoid the extra ADD. + */ - result = 2 + 20 + 1; - } else { // policy->type == TOKEN_WSH - update_output_u8(state, 0x00); - update_output_u8(state, 0x20); + // n+1 steps + // at step i, for 0 <= i < n, we produce [Xi] if i <= 1, or ADD [Xi] otherwise + // at step n, we produce EQUAL if n == 1, or ADD EQUAL otherwise - update_output(state, state->hash, 32); + if (node->step < policy->n) { + // find the current child node + policy_node_scriptlist_t *cur = r_policy_node_scriptlist(&policy->scriptlist); + LEDGER_ASSERT(cur != NULL, "This should never happen"); + for (size_t i = 0; i < node->step; i++) { + cur = r_policy_node_scriptlist(&cur->next); + LEDGER_ASSERT(cur != NULL, "This should never happen"); + } - result = 2 + 32; - } + // process child node + if (node->step > 1) { + update_output_u8(state, OP_ADD); + } - if (-1 == state_stack_pop(state)) { - return -1; + if (-1 == state_stack_push(state, r_policy_node(&cur->script), 0)) { + return -1; + } + ++node->step; + return 0; + } else { + // final step + if (policy->n >= 2) { + // no OP_ADD if n == 1, per comment above + update_output_u8(state, OP_ADD); + } + update_output_push_u32(state, policy->k); + update_output_op_v(state, OP_EQUAL); + return 1; } - return result; } -static int __attribute__((noinline)) process_multi_sortedmulti_node(policy_parser_state_t *state) { +__attribute__((warn_unused_result)) static int process_multi_sortedmulti_node( + policy_parser_state_t *state, + const void *arg) { + UNUSED(arg); + PRINT_STACK_POINTER(); policy_parser_node_state_t *node = &state->nodes[state->node_stack_eos]; + const policy_node_multisig_t *policy = (const policy_node_multisig_t *) node->policy_node; - if (node->step != 0) { - return -1; + if (policy->n > 16) { + return WITH_ERROR(-1, "Implemented only for n <= 16"); } - policy_node_multisig_t *policy = (policy_node_multisig_t *) node->policy_node; - // k {pubkey_1} ... {pubkey_n} n OP_CHECKMULTISIG - unsigned int out_len = 1 + 34 * policy->n + 1 + 1; - - if (node->mode == MODE_OUT_BYTES && !buffer_can_read(node->out_buf, out_len)) { - return -1; - } - - if (node->mode == MODE_OUT_HASH) { - cx_sha256_init(&state->hash_context); - } update_output_u8(state, 0x50 + policy->k); // OP_k - // derive each key - uint8_t compressed_pubkeys[MAX_POLICY_MAP_KEYS][33]; - for (unsigned int i = 0; i < policy->n; i++) { - int wildcard_id = get_derived_pubkey(state, policy->key_indexes[i], compressed_pubkeys[i]); - if (-1 == wildcard_id) { - return -1; - } - // Verify public key wildcard if requested - if (NULL != state->p_key_wildcard_to_verify && - wildcard_id != *state->p_key_wildcard_to_verify) { - return -1; - } - } + // bitvector of used keys (only relevant for sorting keys in SORTEDMULTI) + uint8_t used[BITVECTOR_REAL_SIZE(MAX_PUBKEYS_PER_MULTISIG)]; + memset(used, 0, sizeof(used)); - if (policy->type == TOKEN_SORTEDMULTI) { - // sort the pubkeys (we avoid using qsort, as it takes ~700 bytes in binary size) + for (int i = 0; i < policy->n; i++) { + uint8_t compressed_pubkey[33]; - // bubble sort - bool swapped; - do { - swapped = false; - for (unsigned int i = 1; i < policy->n; i++) { - if (cmp_compressed_pubkeys(compressed_pubkeys[i - 1], compressed_pubkeys[i]) > 0) { - swapped = true; + if (policy->base.type == TOKEN_MULTI) { + if (-1 == + get_derived_pubkey(state->dispatcher_context, + state->wdi, + &r_policy_node_key_placeholder(&policy->key_placeholders)[i], + compressed_pubkey)) { + return -1; + } + } else { + // sortedmulti is problematic, especially for very large wallets: we don't have enough + // memory on Nano S to keep all the keys in memory. Therefore, we use a slow method: at + // each iteration, find the lexicographically smallest key that was not already used + // (basically, like in insertion sort). This means quadratic communication with the + // client, and a quadratic number of pubkey derivations as well, which are quite slow. + // Performance might become an issue for very large multisig wallets, but this allows us + // to remove any limitation on the supported number of pubkeys, and to keep the code + // simple. + // Should speed be reported as an issue in practice, sorting could be done in-memory for + // non-Nano S devices, instead (requiring 33*MAX_PUBKEYS_PER_MULTISIG > 500 bytes more + // memory). + + int smallest_pubkey_index = -1; + memset(compressed_pubkey, 0xFF, sizeof(compressed_pubkey)); // init to largest value + + for (int j = 0; j < policy->n; j++) { + if (!bitvector_get(used, j)) { + uint8_t cur_pubkey[33]; + if (-1 == get_derived_pubkey( + state->dispatcher_context, + state->wdi, + &r_policy_node_key_placeholder(&policy->key_placeholders)[j], + cur_pubkey)) { + return -1; + } - for (int j = 0; j < 33; j++) { - uint8_t t = compressed_pubkeys[i - 1][j]; - compressed_pubkeys[i - 1][j] = compressed_pubkeys[i][j]; - compressed_pubkeys[i][j] = t; + if (cmp_arrays(compressed_pubkey, cur_pubkey, 33) > 0) { + memcpy(compressed_pubkey, cur_pubkey, 33); + smallest_pubkey_index = j; } } } - } while (swapped); - } + bitvector_set(used, smallest_pubkey_index, true); // mark the key as used + } - for (unsigned int i = 0; i < policy->n; i++) { // push (33 = 0x21 bytes) update_output_u8(state, 0x21); - update_output(state, compressed_pubkeys[i], 33); + update_output(state, compressed_pubkey, 33); } - update_output_u8(state, 0x50 + policy->n); // OP_n - update_output_u8(state, 0xae); // OP_CHECKMULTISIG + update_output_u8(state, 0x50 + policy->n); // OP_n + update_output_op_v(state, OP_CHECKMULTISIG); // OP_CHECKMULTISIG - if (-1 == state_stack_pop(state)) { - return -1; - } - return out_len; + return 1; } -static int __attribute__((noinline)) process_tr_node(policy_parser_state_t *state) { +__attribute__((warn_unused_result)) static int process_multi_a_sortedmulti_a_node( + policy_parser_state_t *state, + const void *arg) { + UNUSED(arg); + PRINT_STACK_POINTER(); policy_parser_node_state_t *node = &state->nodes[state->node_stack_eos]; + const policy_node_multisig_t *policy = (const policy_node_multisig_t *) node->policy_node; - if (node->step != 0) { - return -1; + if (policy->k > 16) { + return WITH_ERROR(-1, "Implemented only for k <= 16"); } - policy_node_with_key_t *policy = (policy_node_with_key_t *) node->policy_node; + // OP_CHECKSIG OP_CHECKSIGADD ... OP_CHECKSIGADD OP_NUMEQUAL - unsigned int out_len = 2 + 32; + // bitvector of used keys (only relevant for sorting keys in SORTEDMULTI) + uint8_t used[BITVECTOR_REAL_SIZE(MAX_PUBKEYS_PER_MULTISIG)]; + memset(used, 0, sizeof(memset)); - if (node->mode == MODE_OUT_BYTES && !buffer_can_read(node->out_buf, out_len)) { - return -1; - } + for (int i = 0; i < policy->n; i++) { + uint8_t compressed_pubkey[33]; - int result; + if (policy->base.type == TOKEN_MULTI_A) { + if (-1 == + get_derived_pubkey(state->dispatcher_context, + state->wdi, + &r_policy_node_key_placeholder(&policy->key_placeholders)[i], + compressed_pubkey)) { + return -1; + } + } else { + // Inefficient O(n^2) sorting; check process_multi_sortedmulti_node for the motivation. + + int smallest_pubkey_index = -1; + memset(compressed_pubkey, 0xFF, sizeof(compressed_pubkey)); // init to largest value + + for (int j = 0; j < policy->n; j++) { + if (!bitvector_get(used, j)) { + uint8_t cur_pubkey[33]; + if (-1 == get_derived_pubkey( + state->dispatcher_context, + state->wdi, + &r_policy_node_key_placeholder(&policy->key_placeholders)[j], + cur_pubkey)) { + return -1; + } - uint8_t compressed_pubkey[33]; - uint8_t tweaked_key[32]; + // x-only pubkeys must be compared ignoring the first byte + if (cmp_arrays(compressed_pubkey + 1, cur_pubkey + 1, 32) > 0) { + memcpy(compressed_pubkey, cur_pubkey, 33); + smallest_pubkey_index = j; + } + } + } + bitvector_set(used, smallest_pubkey_index, true); // mark the key as used + } - int wildcard_id = get_derived_pubkey(state, policy->key_index, compressed_pubkey); - if (-1 == wildcard_id) { - return -1; - } - // Verify public key wildcard if requested - if (NULL != state->p_key_wildcard_to_verify && - wildcard_id != *state->p_key_wildcard_to_verify) { - return -1; + // push as x-only key (32 = 0x20 bytes) + update_output_u8(state, 0x20); + update_output(state, compressed_pubkey + 1, 32); + + if (i == 0) { + update_output_u8(state, OP_CHECKSIG); + } else { + update_output_u8(state, OP_CHECKSIGADD); + } } - update_output_u8(state, 0x51); - update_output_u8(state, 0x20); + update_output_u8(state, 0x50 + policy->k); // + update_output_op_v(state, OP_NUMEQUAL); // OP_NUMEQUAL - uint8_t parity; - if (0 != crypto_tr_tweak_pubkey(compressed_pubkey + 1, &parity, tweaked_key)) { - return -1; + return 1; +} + +__attribute__((warn_unused_result, noinline)) static int compute_tapleaf_hash( + dispatcher_context_t *dispatcher_context, + const wallet_derivation_info_t *wdi, + const policy_node_t *script_policy, + uint8_t out[static 32]) { + cx_sha256_t hash_context; + crypto_tr_tapleaf_hash_init(&hash_context); + + // we compute the tapscript once just to compute its length + // this avoids having to store the script in memory + int tapscript_len = get_wallet_internal_script_hash(dispatcher_context, + script_policy, + wdi, + WRAPPED_SCRIPT_TYPE_TAPSCRIPT, + NULL); + + if (tapscript_len < 0) { + return WITH_ERROR(-1, "Failed to compute tapleaf script"); } - update_output(state, tweaked_key, 32); + crypto_hash_update_u8(&hash_context.header, 0xC0); + crypto_hash_update_varint(&hash_context.header, tapscript_len); + + if (0 > get_wallet_internal_script_hash(dispatcher_context, + script_policy, + wdi, + WRAPPED_SCRIPT_TYPE_TAPSCRIPT, + &hash_context.header)) { + return WITH_ERROR(-1, "Failed to compute tapscript hash"); // should never happen! + } - result = 2 + 32; + crypto_hash_digest(&hash_context.header, out, 32); + return 0; +} - if (-1 == state_stack_pop(state)) { +// Separated from compute_taptree_hash to optimize its stack usage +__attribute__((warn_unused_result, noinline)) static int compute_and_combine_taptree_child_hashes( + dispatcher_context_t *dc, + const wallet_derivation_info_t *wdi, + const policy_node_tree_t *tree, + uint8_t out[static 32]) { + uint8_t left_h[32], right_h[32]; + if (0 > compute_taptree_hash(dc, wdi, r_policy_node_tree(&tree->left_tree), left_h)) return -1; + if (0 > compute_taptree_hash(dc, wdi, r_policy_node_tree(&tree->right_tree), right_h)) return -1; - } - return result; + crypto_tr_combine_taptree_hashes(left_h, right_h, out); + return 0; } -int call_get_wallet_script(dispatcher_context_t *dispatcher_context, - const policy_node_t *policy, - const uint8_t keys_merkle_root[static 32], - uint32_t n_keys, - bool change, - size_t address_index, - buffer_t *out_buf, - const policy_map_key_wildcard_id_t *p_key_wildcard_to_verify) { - policy_parser_state_t state = {.dispatcher_context = dispatcher_context, - .keys_merkle_root = keys_merkle_root, - .n_keys = n_keys, - .change = change, - .address_index = address_index, - .node_stack_eos = 0, - .p_key_wildcard_to_verify = p_key_wildcard_to_verify}; +// See taproot_tree_helper in BIP-0341 +__attribute__((noinline)) int compute_taptree_hash(dispatcher_context_t *dc, + const wallet_derivation_info_t *wdi, + const policy_node_tree_t *tree, + uint8_t out[static 32]) { + if (tree->is_leaf) + return compute_tapleaf_hash(dc, wdi, r_policy_node(&tree->script), out); + else + return compute_and_combine_taptree_child_hashes(dc, wdi, tree, out); +} - state.nodes[0] = (policy_parser_node_state_t){.mode = MODE_OUT_BYTES, - .step = 0, - .policy_node = policy, - .out_buf = out_buf}; +#pragma GCC diagnostic push +// make sure that the compiler gives an error if any PolicyNodeType is missed +#pragma GCC diagnostic error "-Wswitch-enum" - int ret; - do { - switch (state.nodes[state.node_stack_eos].policy_node->type) { - case TOKEN_PKH: +int get_wallet_script(dispatcher_context_t *dispatcher_context, + const policy_node_t *policy, + const wallet_derivation_info_t *wdi, + uint8_t out[static 34]) { + int script_type = -1; + + cx_sha256_t hash_context; + cx_sha256_init(&hash_context); + + if (policy->type == TOKEN_PKH) { + uint8_t compressed_pubkey[33]; + policy_node_with_key_t *pkh_policy = (policy_node_with_key_t *) policy; + if (0 > get_derived_pubkey(dispatcher_context, + wdi, + r_policy_node_key_placeholder(&pkh_policy->key_placeholder), + compressed_pubkey)) { + return -1; + } + out[0] = OP_DUP; + out[1] = OP_HASH160; + + out[2] = 20; // PUSH 20 bytes + + crypto_hash160(compressed_pubkey, 33, out + 3); + + out[23] = OP_EQUALVERIFY; + out[24] = OP_CHECKSIG; + return 25; + } else if (policy->type == TOKEN_WPKH) { + uint8_t compressed_pubkey[33]; + policy_node_with_key_t *wpkh_policy = (policy_node_with_key_t *) policy; + if (0 > get_derived_pubkey(dispatcher_context, + wdi, + r_policy_node_key_placeholder(&wpkh_policy->key_placeholder), + compressed_pubkey)) { + return -1; + } + out[0] = OP_0; + out[1] = 20; // PUSH 20 bytes + + crypto_hash160(compressed_pubkey, 33, out + 2); + + return 22; + } else if (policy->type == TOKEN_SH || policy->type == TOKEN_WSH) { + const policy_node_t *core_policy; + if (policy->type == TOKEN_SH) { + const policy_node_t *child = + r_policy_node(&((const policy_node_with_script_t *) policy)->script); + if (child->type == TOKEN_WSH) { + script_type = WRAPPED_SCRIPT_TYPE_SH_WSH; + core_policy = r_policy_node(&((const policy_node_with_script_t *) child)->script); + } else { + script_type = WRAPPED_SCRIPT_TYPE_SH; + core_policy = child; + } + } else { // if (policy->type == TOKEN_WSH + script_type = WRAPPED_SCRIPT_TYPE_WSH; + core_policy = r_policy_node(&((const policy_node_with_script_t *) policy)->script); + } + + if (0 > get_wallet_internal_script_hash(dispatcher_context, + core_policy, + wdi, + script_type, + &hash_context.header)) { + return -1; + } + + uint8_t script_hash[32]; + crypto_hash_digest(&hash_context.header, script_hash, 32); + + switch (script_type) { + case WRAPPED_SCRIPT_TYPE_SH: + case WRAPPED_SCRIPT_TYPE_SH_WSH: { + if (script_type == WRAPPED_SCRIPT_TYPE_SH_WSH) { + cx_sha256_init(&hash_context); + crypto_hash_update_u8(&hash_context.header, OP_0); + + crypto_hash_update_u8(&hash_context.header, 32); // PUSH 32 bytes + crypto_hash_update(&hash_context.header, script_hash, 32); + + crypto_hash_digest(&hash_context.header, script_hash, 32); + } + + out[0] = OP_HASH160; + out[1] = 20; // PUSH 20 bytes + + crypto_ripemd160(script_hash, 32, out + 2); + + out[22] = OP_EQUAL; + return 1 + 1 + 20 + 1; + } + case WRAPPED_SCRIPT_TYPE_WSH: { + out[0] = OP_0; + out[1] = 32; // PUSH 32 bytes + + memcpy(out + 2, script_hash, 32); + + return 1 + 1 + 32; + } + default: { + // This should never happen! + return -1; + } + } + } else if (policy->type == TOKEN_TR) { + policy_node_tr_t *tr_policy = (policy_node_tr_t *) policy; + + uint8_t compressed_pubkey[33]; + + if (0 > get_derived_pubkey(dispatcher_context, + wdi, + r_policy_node_key_placeholder(&tr_policy->key_placeholder), + compressed_pubkey)) { + return -1; + } + + out[0] = OP_1; + out[1] = 32; // PUSH 32 bytes + + // uint8_t h[32]; + uint8_t *h = out + 2; // hack: re-use the output array to save memory + + int h_length = 0; + if (!isnull_policy_node_tree(&tr_policy->tree)) { + if (0 > compute_taptree_hash(dispatcher_context, + wdi, + r_policy_node_tree(&tr_policy->tree), + h)) { + return -1; + } + h_length = 32; + } + + uint8_t parity; + if (0 > crypto_tr_tweak_pubkey(compressed_pubkey + 1, h, h_length, &parity, out + 2)) { + return -1; + } + + return 34; + } + + PRINTF("Invalid or unsupported top-level script\n"); + return -1; +} + +__attribute__((noinline)) int get_wallet_internal_script_hash( + dispatcher_context_t *dispatcher_context, + const policy_node_t *policy, + const wallet_derivation_info_t *wdi, + internal_script_type_e script_type, + cx_hash_t *hash_context) { + const uint8_t *whitelist; + size_t whitelist_len; + switch (script_type) { + case WRAPPED_SCRIPT_TYPE_SH: + whitelist = fragment_whitelist_sh; + whitelist_len = sizeof(fragment_whitelist_sh); + break; + case WRAPPED_SCRIPT_TYPE_SH_WSH: + whitelist = fragment_whitelist_sh_wsh; + whitelist_len = sizeof(fragment_whitelist_sh_wsh); + break; + case WRAPPED_SCRIPT_TYPE_WSH: + whitelist = fragment_whitelist_wsh; + whitelist_len = sizeof(fragment_whitelist_wsh); + break; + case WRAPPED_SCRIPT_TYPE_TAPSCRIPT: + whitelist = fragment_whitelist_tapscript; + whitelist_len = sizeof(fragment_whitelist_tapscript); + break; + default: + PRINTF("Unexpected script_type: %d\n", script_type); + return -1; + } + + policy_parser_state_t state = {.dispatcher_context = dispatcher_context, + .wdi = wdi, + .is_taproot = (script_type == WRAPPED_SCRIPT_TYPE_TAPSCRIPT), + .node_stack_eos = 0, + .hash_context = hash_context}; + + state.nodes[0] = + (policy_parser_node_state_t){.length = 0, .flags = 0, .step = 0, .policy_node = policy}; + + int ret; + do { + const policy_parser_node_state_t *node = &state.nodes[state.node_stack_eos]; + + if (node->policy_node == NULL) { + PRINTF("Unexpected uninitialized policy_node\n"); + return -1; + } + + bool is_whitelisted = false; + for (size_t i = 0; i < whitelist_len; i++) { + if (node->policy_node->type == whitelist[i]) { + is_whitelisted = true; + break; + } + } + + if (!is_whitelisted) { + PRINTF("Fragment %d not allowed in script type %d\n", + node->policy_node->type, + script_type); + return -1; + } + + switch (node->policy_node->type) { + case TOKEN_0: + ret = execute_processor(&state, process_generic_node, commands_0); + break; + case TOKEN_1: + ret = execute_processor(&state, process_generic_node, commands_1); + break; + case TOKEN_PK_K: + ret = execute_processor(&state, process_generic_node, commands_pk_k); + break; + case TOKEN_PK_H: + ret = execute_processor(&state, process_generic_node, commands_pk_h); + break; + case TOKEN_PK: + ret = execute_processor(&state, process_generic_node, commands_pk); + break; + case TOKEN_PKH: case TOKEN_WPKH: - ret = process_pkh_wpkh_node(&state); + ret = execute_processor(&state, process_pkh_wpkh_node, NULL); break; - case TOKEN_SH: - case TOKEN_WSH: - ret = process_sh_wsh_node(&state); + case TOKEN_OLDER: + ret = execute_processor(&state, process_generic_node, commands_older); + break; + case TOKEN_AFTER: + ret = execute_processor(&state, process_generic_node, commands_after); + break; + + case TOKEN_SHA256: + ret = execute_processor(&state, process_generic_node, commands_sha256); + break; + case TOKEN_HASH256: + ret = execute_processor(&state, process_generic_node, commands_hash256); + break; + case TOKEN_RIPEMD160: + ret = execute_processor(&state, process_generic_node, commands_ripemd160); + break; + case TOKEN_HASH160: + ret = execute_processor(&state, process_generic_node, commands_hash160); + break; + + case TOKEN_ANDOR: + ret = execute_processor(&state, process_generic_node, commands_andor); + break; + case TOKEN_AND_V: + ret = execute_processor(&state, process_generic_node, commands_and_v); + break; + case TOKEN_AND_B: + ret = execute_processor(&state, process_generic_node, commands_and_b); + break; + case TOKEN_AND_N: + ret = execute_processor(&state, process_generic_node, commands_and_n); + break; + + case TOKEN_OR_B: + ret = execute_processor(&state, process_generic_node, commands_or_b); + break; + case TOKEN_OR_C: + ret = execute_processor(&state, process_generic_node, commands_or_c); + break; + case TOKEN_OR_D: + ret = execute_processor(&state, process_generic_node, commands_or_d); + break; + case TOKEN_OR_I: + ret = execute_processor(&state, process_generic_node, commands_or_i); + break; + + case TOKEN_THRESH: + ret = execute_processor(&state, process_thresh_node, NULL); break; + case TOKEN_MULTI: case TOKEN_SORTEDMULTI: - ret = process_multi_sortedmulti_node(&state); + ret = execute_processor(&state, process_multi_sortedmulti_node, NULL); break; - case TOKEN_TR: - ret = process_tr_node(&state); + case TOKEN_MULTI_A: + case TOKEN_SORTEDMULTI_A: + ret = execute_processor(&state, process_multi_a_sortedmulti_a_node, NULL); + break; + case TOKEN_A: + ret = execute_processor(&state, process_generic_node, commands_a); + break; + case TOKEN_S: + ret = execute_processor(&state, process_generic_node, commands_s); break; + case TOKEN_C: + ret = execute_processor(&state, process_generic_node, commands_c); + break; + case TOKEN_T: + ret = execute_processor(&state, process_generic_node, commands_t); + break; + case TOKEN_D: + ret = execute_processor(&state, process_generic_node, commands_d); + break; + case TOKEN_V: + ret = execute_processor(&state, process_generic_node, commands_v); + break; + case TOKEN_J: + ret = execute_processor(&state, process_generic_node, commands_j); + break; + case TOKEN_N: + ret = execute_processor(&state, process_generic_node, commands_n); + break; + case TOKEN_L: + ret = execute_processor(&state, process_generic_node, commands_l); + break; + case TOKEN_U: + ret = execute_processor(&state, process_generic_node, commands_u); + break; + case TOKEN_TR: + case TOKEN_SH: + case TOKEN_WSH: + PRINTF("Unexpected token type: %d\n", node->policy_node->type); + return -1; + + case TOKEN_INVALID: default: - ret = -1; + PRINTF("Unknown token type: %d\n", node->policy_node->type); + return -1; } } while (ret >= 0 && state.node_stack_eos >= 0); + + if (ret < 0) { + return WITH_ERROR(ret, "Processor failed"); + } + return ret; } -int get_policy_address_type(const policy_node_t *policy) { - // legacy, native segwit, wrapped segwit, or taproot - switch (policy->type) { +#pragma GCC diagnostic pop + +// For a standard descriptor template, return the corresponding BIP44 purpose +// Otherwise, returns -1. +static int get_bip44_purpose(const policy_node_t *descriptor_template) { + const policy_node_key_placeholder_t *kp = NULL; + int purpose = -1; + switch (descriptor_template->type) { case TOKEN_PKH: - return ADDRESS_TYPE_LEGACY; + kp = r_policy_node_key_placeholder( + &((const policy_node_with_key_t *) descriptor_template)->key_placeholder); + purpose = 44; // legacy + break; case TOKEN_WPKH: - return ADDRESS_TYPE_WIT; - case TOKEN_SH: - // wrapped segwit - if (((policy_node_with_script_t *) policy)->script->type == TOKEN_WPKH) { - return ADDRESS_TYPE_SH_WIT; + kp = r_policy_node_key_placeholder( + &((const policy_node_with_key_t *) descriptor_template)->key_placeholder); + purpose = 84; // native segwit + break; + case TOKEN_SH: { + const policy_node_t *inner = + r_policy_node(&((const policy_node_with_script_t *) descriptor_template)->script); + if (inner->type != TOKEN_WPKH) { + return -1; } - return -1; - case TOKEN_TR: - return ADDRESS_TYPE_TR; -#ifdef HAVE_LIQUID - case TOKEN_CT: { - if(liquid_is_blinding_key_acceptable(policy)) { - return get_policy_address_type(((const policy_node_ct_t *)policy)->script); + + kp = r_policy_node_key_placeholder( + &((const policy_node_with_key_t *) inner)->key_placeholder); + purpose = 49; // nested segwit + break; + } + case TOKEN_TR: { + const policy_node_tr_t *tr = (const policy_node_tr_t *) descriptor_template; + if (!isnull_policy_node_tree(&tr->tree)) { + return -1; } - return -1; + + kp = r_policy_node_key_placeholder( + &((const policy_node_tr_t *) descriptor_template)->key_placeholder); + purpose = 86; // standard single-key P2TR + break; } -#endif default: return -1; } + + if (kp->key_index != 0 || kp->num_first != 0 || kp->num_second != 1) { + return -1; + } + + return purpose; +} + +bool is_wallet_policy_standard(dispatcher_context_t *dispatcher_context, + const policy_map_wallet_header_t *wallet_policy_header, + const policy_node_t *descriptor_template) { + // Based on the address type, we set the expected bip44 purpose + int bip44_purpose = get_bip44_purpose(descriptor_template); + if (bip44_purpose < 0) { + PRINTF("Non-standard policy, and no hmac provided\n"); + return false; + } + + if (wallet_policy_header->n_keys != 1) { + PRINTF("Standard wallets must have exactly 1 key\n"); + return false; + } + + // we check if the key is indeed internal + uint32_t master_key_fingerprint = crypto_get_master_key_fingerprint(); + + uint8_t key_info_str[MAX_POLICY_KEY_INFO_LEN]; + int key_info_len = call_get_merkle_leaf_element(dispatcher_context, + wallet_policy_header->keys_info_merkle_root, + wallet_policy_header->n_keys, + 0, // only one key + key_info_str, + sizeof(key_info_str)); + if (key_info_len < 0) { + return false; + } + + // Make a sub-buffer for the pubkey info + buffer_t key_info_buffer = buffer_create(key_info_str, key_info_len); + + policy_map_key_info_t key_info; + if (0 > parse_policy_map_key_info(&key_info_buffer, &key_info, wallet_policy_header->version)) { + return false; + } + + if (!key_info.has_key_origin) { + return false; + } + + if (read_u32_be(key_info.master_key_fingerprint, 0) != master_key_fingerprint) { + return false; + } + + // generate pubkey and check if it matches + serialized_extended_pubkey_t derived_pubkey; + if (0 > get_extended_pubkey_at_path(key_info.master_key_derivation, + key_info.master_key_derivation_len, + BIP32_PUBKEY_VERSION, + &derived_pubkey)) { + PRINTF("Failed to derive pubkey\n"); + return false; + } + + if (memcmp(&key_info.ext_pubkey, &derived_pubkey, sizeof(derived_pubkey)) != 0) { + return false; + } + + // check if derivation path of the key is indeed standard + + // per BIP-0044, derivation must be + // m / purpose' / coin_type' / account' + + const uint32_t H = BIP32_FIRST_HARDENED_CHILD; + if (key_info.master_key_derivation_len != 3 || + key_info.master_key_derivation[0] != H + bip44_purpose || + key_info.master_key_derivation[1] != H + BIP44_COIN_TYPE || + key_info.master_key_derivation[2] < H || + key_info.master_key_derivation[2] > H + MAX_BIP44_ACCOUNT_RECOMMENDED) { + return false; + } + + return true; +} + +bool compute_wallet_hmac(const uint8_t wallet_id[static 32], uint8_t wallet_hmac[static 32]) { + uint8_t key[32]; + + bool result = false; + + if (!crypto_derive_symmetric_key(WALLET_SLIP0021_LABEL, WALLET_SLIP0021_LABEL_LEN, key)) { + goto end; + } + + cx_hmac_sha256(key, sizeof(key), wallet_id, 32, wallet_hmac, 32); + + result = true; + +end: + explicit_bzero(key, sizeof(key)); + + return result; } bool check_wallet_hmac(const uint8_t wallet_id[static 32], const uint8_t wallet_hmac[static 32]) { uint8_t key[32]; uint8_t correct_hmac[32]; - bool ok = crypto_derive_symmetric_key(WALLET_SLIP0021_LABEL, WALLET_SLIP0021_LABEL_LEN, key); + bool result = false; - ok = ok && sizeof(correct_hmac) == cx_hmac_sha256(key, - sizeof(key), - wallet_id, - 32, - correct_hmac, - sizeof(correct_hmac)); + if (!crypto_derive_symmetric_key(WALLET_SLIP0021_LABEL, WALLET_SLIP0021_LABEL_LEN, key)) { + goto end; + } + + cx_hmac_sha256(key, sizeof(key), wallet_id, 32, correct_hmac, 32); // It is important to use a constant-time function to compare the hmac, // to avoid timing-attack that could be exploited to extract it. - ok = ok && 0 == os_secure_memcmp((void *) wallet_hmac, (void *) correct_hmac, 32); + result = os_secure_memcmp((void *) wallet_hmac, (void *) correct_hmac, 32) == 0; +end: explicit_bzero(key, sizeof(key)); explicit_bzero(correct_hmac, sizeof(correct_hmac)); - return ok; -} \ No newline at end of file + return result; +} + +#pragma GCC diagnostic push +// make sure that the compiler gives an error if any PolicyNodeType is missed +#pragma GCC diagnostic error "-Wswitch-enum" + +static int get_key_placeholder_by_index_in_tree(const policy_node_tree_t *tree, + unsigned int i, + const policy_node_t **out_tapleaf_ptr, + policy_node_key_placeholder_t *out_placeholder) { + if (tree->is_leaf) { + int ret = + get_key_placeholder_by_index(r_policy_node(&tree->script), i, NULL, out_placeholder); + if (ret >= 0 && out_tapleaf_ptr != NULL && i < (unsigned) ret) { + *out_tapleaf_ptr = r_policy_node(&tree->script); + } + return ret; + } else { + int ret1 = get_key_placeholder_by_index_in_tree(r_policy_node_tree(&tree->left_tree), + i, + out_tapleaf_ptr, + out_placeholder); + if (ret1 < 0) return -1; + + bool found = i < (unsigned int) ret1; + + int ret2 = get_key_placeholder_by_index_in_tree(r_policy_node_tree(&tree->right_tree), + found ? 0 : i - ret1, + found ? NULL : out_tapleaf_ptr, + found ? NULL : out_placeholder); + if (ret2 < 0) return -1; + + return ret1 + ret2; + } +} + +int get_key_placeholder_by_index(const policy_node_t *policy, + unsigned int i, + const policy_node_t **out_tapleaf_ptr, + policy_node_key_placeholder_t *out_placeholder) { + // make sure that out_placeholder is a valid pointer, if the output is not needed + policy_node_key_placeholder_t tmp; + if (out_placeholder == NULL) { + out_placeholder = &tmp; + } + + switch (policy->type) { + // terminal nodes with absolutely no keys + case TOKEN_0: + case TOKEN_1: + case TOKEN_OLDER: + case TOKEN_AFTER: + case TOKEN_SHA256: + case TOKEN_HASH256: + case TOKEN_RIPEMD160: + case TOKEN_HASH160: + return 0; + + // terminal nodes with exactly 1 key + case TOKEN_PK_K: + case TOKEN_PK_H: + case TOKEN_PK: + case TOKEN_PKH: + case TOKEN_WPKH: { + if (i == 0) { + policy_node_with_key_t *wpkh = (policy_node_with_key_t *) policy; + memcpy(out_placeholder, + r_policy_node_key_placeholder(&wpkh->key_placeholder), + sizeof(policy_node_key_placeholder_t)); + } + return 1; + } + case TOKEN_TR: { + policy_node_tr_t *tr = (policy_node_tr_t *) policy; + if (i == 0) { + memcpy(out_placeholder, + r_policy_node_key_placeholder(&tr->key_placeholder), + sizeof(policy_node_key_placeholder_t)); + } + if (!isnull_policy_node_tree(&tr->tree)) { + int ret_tree = get_key_placeholder_by_index_in_tree( + r_policy_node_tree(&tr->tree), + i == 0 ? 0 : i - 1, + i == 0 ? NULL : out_tapleaf_ptr, + i == 0 ? NULL : out_placeholder); // if i == 0, we already found it; so we + // recur with out_placeholder set to NULL + if (ret_tree < 0) { + return -1; + } + return 1 + ret_tree; + } else { + return 1; + } + } + + // terminal nodes with multiple keys + case TOKEN_MULTI: + case TOKEN_MULTI_A: + case TOKEN_SORTEDMULTI: + case TOKEN_SORTEDMULTI_A: { + const policy_node_multisig_t *node = (const policy_node_multisig_t *) policy; + + if (i < (unsigned int) node->n) { + policy_node_key_placeholder_t *placeholders = + r_policy_node_key_placeholder(&node->key_placeholders); + memcpy(out_placeholder, &placeholders[i], sizeof(policy_node_key_placeholder_t)); + } + + return node->n; + } + + // nodes with a single child script (including miniscript wrappers) + case TOKEN_SH: + case TOKEN_WSH: + case TOKEN_A: + case TOKEN_S: + case TOKEN_C: + case TOKEN_T: + case TOKEN_D: + case TOKEN_V: + case TOKEN_J: + case TOKEN_N: + case TOKEN_L: + case TOKEN_U: { + return get_key_placeholder_by_index( + r_policy_node(&((const policy_node_with_script_t *) policy)->script), + i, + out_tapleaf_ptr, + out_placeholder); + } + + // nodes with exactly two child scripts + case TOKEN_AND_V: + case TOKEN_AND_B: + case TOKEN_AND_N: + case TOKEN_OR_B: + case TOKEN_OR_C: + case TOKEN_OR_D: + case TOKEN_OR_I: { + const policy_node_with_script2_t *node = (const policy_node_with_script2_t *) policy; + int ret1 = get_key_placeholder_by_index(r_policy_node(&node->scripts[0]), + i, + out_tapleaf_ptr, + out_placeholder); + if (ret1 < 0) return -1; + + bool found = i < (unsigned int) ret1; + int ret2 = get_key_placeholder_by_index(r_policy_node(&node->scripts[1]), + found ? 0 : i - ret1, + found ? NULL : out_tapleaf_ptr, + found ? NULL : out_placeholder); + if (ret2 < 0) return -1; + + return ret1 + ret2; + } + + // nodes with exactly three child scripts + case TOKEN_ANDOR: { + const policy_node_with_script3_t *node = (const policy_node_with_script3_t *) policy; + int ret1 = get_key_placeholder_by_index(r_policy_node(&node->scripts[0]), + i, + out_tapleaf_ptr, + out_placeholder); + if (ret1 < 0) return -1; + + bool found = i < (unsigned int) ret1; + int ret2 = get_key_placeholder_by_index(r_policy_node(&node->scripts[1]), + found ? 0 : i - ret1, + found ? NULL : out_tapleaf_ptr, + found ? NULL : out_placeholder); + if (ret2 < 0) return -1; + + found = i < (unsigned int) (ret1 + ret2); + int ret3 = get_key_placeholder_by_index(r_policy_node(&node->scripts[2]), + found ? 0 : i - ret1 - ret2, + found ? NULL : out_tapleaf_ptr, + found ? NULL : out_placeholder); + if (ret3 < 0) return -1; + return ret1 + ret2 + ret3; + } + + // nodes with multiple child scripts + case TOKEN_THRESH: { + const policy_node_thresh_t *node = (const policy_node_thresh_t *) policy; + bool found; + int ret = 0; + policy_node_scriptlist_t *cur_child = r_policy_node_scriptlist(&node->scriptlist); + for (int script_idx = 0; script_idx < node->n; script_idx++) { + LEDGER_ASSERT(cur_child != NULL, + "The script should always have exactly n child scripts"); + + found = i < (unsigned int) ret; + int ret_partial = get_key_placeholder_by_index(r_policy_node(&cur_child->script), + found ? 0 : i - ret, + found ? NULL : out_tapleaf_ptr, + found ? NULL : out_placeholder); + if (ret_partial < 0) return -1; + + ret += ret_partial; + cur_child = r_policy_node_scriptlist(&cur_child->next); + } + return ret; + } + + case TOKEN_INVALID: + default: + PRINTF("Unknown token type: %d\n", policy->type); + return -1; + } + + // unreachable + assert(0); + return -1; +} + +int count_distinct_keys_info(const policy_node_t *policy) { + int ret = -1; + + int n_placeholders = get_key_placeholder_by_index(policy, 0, NULL, NULL); + if (n_placeholders < 0) { + return -1; + } + + for (int cur = 0; cur < n_placeholders; ++cur) { + policy_node_key_placeholder_t placeholder; + if (0 > get_key_placeholder_by_index(policy, cur, NULL, &placeholder)) { + return -1; + } + ret = MAX(ret, placeholder.key_index + 1); + } + return ret; +} + +// Utility function to extract and decode the i-th xpub from the keys information vector +static int get_pubkey_from_merkle_tree(dispatcher_context_t *dispatcher_context, + int wallet_version, + const uint8_t keys_merkle_root[static 32], + uint32_t n_keys, + uint32_t index, + serialized_extended_pubkey_t *out) { + char key_info_str[MAX_POLICY_KEY_INFO_LEN]; + int key_info_len = call_get_merkle_leaf_element(dispatcher_context, + keys_merkle_root, + n_keys, + index, + (uint8_t *) key_info_str, + sizeof(key_info_str)); + if (key_info_len == -1) { + return WITH_ERROR(-1, "Failed to retrieve key info"); + } + + // Make a sub-buffer for the pubkey info + buffer_t key_info_buffer = buffer_create(key_info_str, key_info_len); + + policy_map_key_info_t key_info; + if (parse_policy_map_key_info(&key_info_buffer, &key_info, wallet_version) == -1) { + return WITH_ERROR(-1, "Failed to parse key information"); + } + *out = key_info.ext_pubkey; + return 0; +} + +static int is_miniscript_sane(const policy_node_t *script, MiniscriptContext context) { + if (context != MINISCRIPT_CONTEXT_P2WSH && context != MINISCRIPT_CONTEXT_TAPSCRIPT) { + return WITH_ERROR(-1, "Unknown miniscript context"); + } + if (!script->flags.is_miniscript) { + return WITH_ERROR(-1, "This function can only be called for miniscript"); + } + + // Top level node in miniscript must be type B + if (script->flags.miniscript_type != MINISCRIPT_TYPE_B) { + return WITH_ERROR(-1, "Top level miniscript node must be of type B"); + } + + // check miniscript sanity conditions + policy_node_ext_info_t ext_info; + if (0 > compute_miniscript_policy_ext_info(script, &ext_info, context)) { + return WITH_ERROR(-1, "Error analyzing miniscript policy"); + } + + // Check that non-malleability can be guaranteed + if (!ext_info.m) { + return WITH_ERROR(-1, "Miniscript cannot always be satisfied non-malleably"); + } + + // Check that a signature is always required to satisfy the miniscript + if (!ext_info.s) { + return WITH_ERROR(-1, "Miniscript does not always require a signature"); + } + + // Check that there is no time-lock mix + if (!ext_info.k) { + return WITH_ERROR(-1, "Miniscript with time-lock mix"); + } + + // Note: the following limits could be relaxed for taproot miniscript; however, that + // would mean that tapscripts could run into the maximum stack size limits during + // execution, which we didn't implement explicit checks against. + // Therefore, we rather apply the conservative limit for segwit even to tapscripts. + // We don't expect these limits to be reached in real-world policies. + + // Check the maximum stack size to satisfy the policy + if (ext_info.ss.sat == -1 || (uint32_t) ext_info.ss.sat > MAX_STANDARD_P2WSH_STACK_ITEMS) { + return WITH_ERROR(-1, "Miniscript exceeds maximum standard stack size"); + } + + if (ext_info.ops.sat == -1) { + // Should never happen for non-malleable scripts + return WITH_ERROR(-1, "Invalid maximum ops computations"); + } + + // Check ops limit + if ((uint32_t) ext_info.ops.count + (uint32_t) ext_info.ops.sat > MAX_OPS_PER_SCRIPT) { + return WITH_ERROR(-1, "Miniscript exceeds maximum ops"); + } + + // Check the script size + if (ext_info.script_size > MAX_STANDARD_P2WSH_SCRIPT_SIZE) { + return WITH_ERROR(-1, "Miniscript exceeds maximum script size"); + } + return 0; +} + +static int is_taptree_miniscript_sane(const policy_node_tree_t *taptree) { + // Recurse until leaves are found, then check sanity if they contain miniscript. + // No check is performed on leaves not containing miniscript. + if (taptree->is_leaf) { + const policy_node_t *script = r_policy_node(&taptree->script); + if (script->flags.is_miniscript && // only check for miniscript leaves + 0 > is_miniscript_sane(script, MINISCRIPT_CONTEXT_TAPSCRIPT)) { + return -1; + } + } else { + if (0 > is_taptree_miniscript_sane(r_policy_node_tree(&taptree->left_tree))) { + return -1; + } + if (0 > is_taptree_miniscript_sane(r_policy_node_tree(&taptree->right_tree))) { + return -1; + } + } + + return 0; +} + +int is_policy_sane(dispatcher_context_t *dispatcher_context, + const policy_node_t *policy, + int wallet_version, + const uint8_t keys_merkle_root[static 32], + uint32_t n_keys) { + if (policy->type == TOKEN_WSH) { + const policy_node_t *inner = + r_policy_node(&((const policy_node_with_script_t *) policy)->script); + if (inner->flags.is_miniscript) { + if (0 > is_miniscript_sane(inner, MINISCRIPT_CONTEXT_P2WSH)) { + return -1; + } + } + } else if (policy->type == TOKEN_TR) { + // if there is a taptree, we check the sanity of every miniscript leaf + const policy_node_tr_t *tr = (const policy_node_tr_t *) policy; + const policy_node_tree_t *taptree = r_policy_node_tree(&tr->tree); + if (taptree != NULL && 0 > is_taptree_miniscript_sane(taptree)) { + return -1; + } + } + + // check that all the xpubs are different + for (unsigned int i = 0; i < n_keys - 1; i++) { // no point in running this for the last key + serialized_extended_pubkey_t pubkey_i; + if (0 > get_pubkey_from_merkle_tree(dispatcher_context, + wallet_version, + keys_merkle_root, + n_keys, + i, + &pubkey_i)) { + return -1; + } + + for (unsigned int j = i + 1; j < n_keys; j++) { + serialized_extended_pubkey_t pubkey_j; + if (0 > get_pubkey_from_merkle_tree(dispatcher_context, + wallet_version, + keys_merkle_root, + n_keys, + j, + &pubkey_j)) { + return -1; + } + + // We reject if any two xpubs have the same pubkey + // Conservatively, we only compare the compressed pubkey, rather than the whole xpub: + // there is no good reason for allowing two different xpubs with the same pubkey. + if (memcmp(pubkey_i.compressed_pubkey, + pubkey_j.compressed_pubkey, + sizeof(pubkey_i.compressed_pubkey)) == 0) { + // duplicated pubkey + return WITH_ERROR(-1, "Repeated pubkey in wallet policy"); + } + } + } + + // check that all the key placeholders for the same xpub do indeed have different + // derivations + int n_placeholders = get_key_placeholder_by_index(policy, 0, NULL, NULL); + if (n_placeholders < 0) { + return WITH_ERROR(-1, "Unexpected error while counting placeholders"); + } + + // The following loop computationally very inefficient (quadratic in the number of + // placeholders), but more efficient solutions likely require a substantial amount of RAM + // (proportional to the number of key placeholders). Instead, this only requires stack depth + // proportional to the depth of the wallet policy's abstract syntax tree. + for (int i = 0; i < n_placeholders - 1; + i++) { // no point in running this for the last placeholder + policy_node_key_placeholder_t kp_i; + if (0 > get_key_placeholder_by_index(policy, i, NULL, &kp_i)) { + return WITH_ERROR(-1, "Unexpected error retrieving placeholders from the policy"); + } + for (int j = i + 1; j < n_placeholders; j++) { + policy_node_key_placeholder_t kp_j; + if (0 > get_key_placeholder_by_index(policy, j, NULL, &kp_j)) { + return WITH_ERROR(-1, "Unexpected error retrieving placeholders from the policy"); + } + + // placeholders for the same key must have disjoint derivation options + if (kp_i.key_index == kp_j.key_index) { + if (kp_i.num_first == kp_j.num_first || kp_i.num_first == kp_j.num_second || + kp_i.num_second == kp_j.num_first || kp_i.num_second == kp_j.num_second) { + return WITH_ERROR(-1, + "Key placeholders with repeated derivations in miniscript"); + } + } + } + } + return 0; +} + +#pragma GCC diagnostic pop diff --git a/src/handler/lib/policy.h b/src/handler/lib/policy.h index 995d7461c..5d9cd751b 100644 --- a/src/handler/lib/policy.h +++ b/src/handler/lib/policy.h @@ -3,51 +3,124 @@ #include "../../boilerplate/dispatcher.h" #include "../../common/wallet.h" +#ifdef HAVE_LIQUID +#include "liquid_policy.h" +#endif + /** - * The label used to derive the symmetric key used to register/verify wallet policies on device. + * Parses a serialized wallet policy, saving the wallet header, the policy map descriptor and the + * policy descriptor. Then, it parses the descriptor into the Abstract Syntax Tree into the + * policy_map_bytes array. + * + * It returns -1 if any error occurs. + * + * @param dispatcher_context Pointer to the dispatcher content + * @param buf Pointer to the buffer from which the serialized policy is read from + * @param wallet_header Pointer to policy_map_wallet_header_t that will receive the policy map + * header + * @param policy_map_descriptor_template Pointer to a buffer of MAX_DESCRIPTOR_TEMPLATE_LENGTH bytes + * that will contain the descriptor template as a string + * @param policy_map_bytes Pointer to an array of bytes that will be used for the parsed abstract + * syntax tree + * @param policy_map_bytes_len Length of policy_map_bytes in bytes. + * @return The memory size of the parsed descriotor template on success, a negative number in case + * of error. */ -#define WALLET_SLIP0021_LABEL "\0LEDGER-Wallet policy" -#define WALLET_SLIP0021_LABEL_LEN \ - (sizeof(WALLET_SLIP0021_LABEL) - 1) // sizeof counts the terminating 0 +// TODO: we should distinguish actual errors from just "policy too big to fit in memory" +__attribute__((warn_unused_result)) int read_and_parse_wallet_policy( + dispatcher_context_t *dispatcher_context, + buffer_t *buf, + policy_map_wallet_header_t *wallet_header, + uint8_t policy_map_descriptor[static MAX_DESCRIPTOR_TEMPLATE_LENGTH], + uint8_t *policy_map_bytes, + size_t policy_map_bytes_len); + +typedef enum { + WRAPPED_SCRIPT_TYPE_SH, + WRAPPED_SCRIPT_TYPE_WSH, + WRAPPED_SCRIPT_TYPE_SH_WSH, + WRAPPED_SCRIPT_TYPE_TAPSCRIPT +} internal_script_type_e; + +// Bundles together some parameters relative to a call to +// get_wallet_script or get_wallet_internal_script_hash +typedef struct { + int wallet_version; // The wallet policy version, either WALLET_POLICY_VERSION_V1 or + // WALLET_POLICY_VERSION_V2 + const uint8_t + *keys_merkle_root; // The Merkle root of the tree of key informations in the policy + uint32_t n_keys; // The number of key information placeholders in the policy + size_t address_index; // The address index to use in the derivation + bool change; // whether a change address or a receive address is derived +} wallet_derivation_info_t; /** - * Computes the script corresponding to a wallet policy, for a certain change and address index. + * Computes the hash of a taptree, to be used as tweak for the internal key per BIP-0341; + * The returned hash is the second value in the tuple returned by taproot_tree_helper in + * BIP-0341, assuming leaf_version 0xC0. * - * If `p_key_wildcard_to_verify` is not NULL, this function assumes it points to a constant which - * must be compared with each of the wallet's public key's wildcard identifier. This parameter is - * optional. If wildcard verification is not required it should be set to NULL. + * @param[in] dispatcher_context + * Pointer to the dispatcher context + * @param[in] wdi + * Pointer to a wallet_derivation_info_t structure containing multiple other parameters + * @param[in] tree + * Pointer to the root of the taptree + * @param[out] out + * A buffer of 32 bytes to receive the output + * + * @return 0 on success, a negative number on failure. + */ +__attribute__((warn_unused_result)) int compute_taptree_hash( + dispatcher_context_t *dispatcher_context, + const wallet_derivation_info_t *wdi, + const policy_node_tree_t *tree, + uint8_t out[static 32]); + +/** + * Computes the script corresponding to a wallet policy, for a certain change and address index. * * @param[in] dispatcher_context * Pointer to the dispatcher context * @param[in] policy * Pointer to the root node of the policy - * @param[in] keys_merkle_root - * The Merkle root of the tree of key informations in the policy - * @param[in] n_keys - * The number of key information placeholders in the policy - * @param[in] change - * 0 for a receive address, 1 for a change address - * @param[in] address_index - * The address index - * @param[out] out_buf - * A buffer to contain the script. If the available space in the buffer is not enough, the result - * is truncated, but the correct length is still returned in case of success. - * @param[in] p_key_wildcard_to_verify - * If not NULL, requests to verify all wallet's public key wildcard IDs to be equal to value, - * pointed by this parameter. + * @param[in] wdi + * Pointer to a wallet_derivation_info_t structure containing multiple other parameters + * @param[out] out + * A buffer of at least 34 bytes to contain the script. The actual length of the output might be + * smaller. * * @return The length of the output on success; -1 in case of error. * */ -int call_get_wallet_script(dispatcher_context_t *dispatcher_context, - const policy_node_t *policy, - const uint8_t keys_merkle_root[static 32], - uint32_t n_keys, - bool change, - size_t address_index, - buffer_t *out_buf, - const policy_map_key_wildcard_id_t *p_key_wildcard_to_verify); +__attribute__((warn_unused_result)) int get_wallet_script(dispatcher_context_t *dispatcher_context, + const policy_node_t *policy, + const wallet_derivation_info_t *wdi, + uint8_t out[static 34]); +/** + * Computes the script corresponding to a wallet policy, for a certain change and address index. + * + * @param[in] dispatcher_context + * Pointer to the dispatcher context + * @param[in] policy + * Pointer to the root node of the policy + * @param[in] wdi + * Pointer to a wallet_derivation_info_t structure containing multiple other parameters + * @param[out] hash_context + * A pointer to an already initialized hash context that will be updated with the bytes from the + * produced script. If NULL, it is ignored. + * + * @return the length of the script on success; a negative number in case of error. + * + */ +__attribute__((warn_unused_result)) int get_wallet_internal_script_hash( + dispatcher_context_t *dispatcher_context, + const policy_node_t *policy, + const wallet_derivation_info_t *wdi, + internal_script_type_e script_type, + cx_hash_t *hash_context); + +// TODO: consuder removing /** * Returns the address type constant corresponding to a standard policy type. * @@ -59,15 +132,104 @@ int call_get_wallet_script(dispatcher_context_t *dispatcher_context, */ int get_policy_address_type(const policy_node_t *policy); +/** + * Returns true if the descriptor template is a standard one. + * Standard wallet policies are single-signature policies as per the following standards: + * - BIP-44 (legacy, P2PKH) + * - BIP-84 (native segwit, P2WPKH) + * - BIP-49 (wrapped segwit, P2SH-P2WPKH) + * - BIP-86 (standard single key P2TR) + * with the standard derivations for the key placeholders, and unhardened steps for the + * change / address_index steps (using 0 for non-change, 1 for change addresses). + * + * @param[in] dispatcher_context + * Pointer to the dispatcher context + * @param[in] wallet_policy_header + * Pointer the wallet policy header + * @param[in] descriptor_template + * Pointer to the root node of the policy + * + * @return true if the descriptor_template is not standard; false if not, or in case of error. + */ +__attribute__((warn_unused_result)) bool is_wallet_policy_standard( + dispatcher_context_t *dispatcher_context, + const policy_map_wallet_header_t *wallet_policy_header, + const policy_node_t *descriptor_template); + +/** + * Computes and returns the wallet_hmac, using the symmetric key derived + * with the WALLET_SLIP0021_LABEL label according to SLIP-0021. + * + * @param[in] wallet_id + * Pointer to the a 32-bytes array containing the 32-byte wallet policy id. + * @param[out] wallet_hmac + * Pointer to the a 32-bytes array containing the wallet policy registration hmac. + * @return true if the given hmac is valid, false otherwise. + */ +bool compute_wallet_hmac(const uint8_t wallet_id[static 32], uint8_t wallet_hmac[static 32]); + /** * Verifies if the wallet_hmac is correct for the given wallet_id, using the symmetric key derived * with the WALLET_SLIP0021_LABEL label according to SLIP-0021. * + * @param[in] wallet_id + * Pointer to the a 32-bytes array containing the 32-byte wallet policy id. + * @param[in] wallet_hmac + * Pointer to the a 32-bytes array containing the expected wallet policy registration hmac. + * @return true if the given hmac is valid, false otherwise. + */ +bool check_wallet_hmac(const uint8_t wallet_id[static 32], const uint8_t wallet_hmac[static 32]); + +/** + * Copies the i-th placeholder (indexing from 0) of the given policy into `out_placeholder` (if not + * null). + * * @param[in] policy * Pointer to the root node of the policy + * @param[in] i + * Index of the wanted placeholder. Ignored if out_placeholder is NULL. + * @param[out] out_tapleaf_ptr + * If not NULL, and if the i-th placeholder is in a tapleaf of the policy, receives the pointer to + * the tapleaf's script. + * @param[out] out_placeholder + * If not NULL, it is a pointer that will receive the i-th placeholder of the policy. + * @return the number of placeholders in the policy on success; -1 in case of error. + */ +__attribute__((warn_unused_result)) int get_key_placeholder_by_index( + const policy_node_t *policy, + unsigned int i, + const policy_node_t **out_tapleaf_ptr, + policy_node_key_placeholder_t *out_placeholder); + +/** + * Determines the expected number of unique keys in the provided policy's key information. + * The function calculates this by finding the maximum key index from placeholders and increments it + * by 1. For instance, if the maximum key index found in the placeholders is `n`, then the result + * would be `n + 1`. + * * @param[in] policy * Pointer to the root node of the policy + * @return the expected number of items in the keys information vector; -1 in case of error. + */ +__attribute__((warn_unused_result)) int count_distinct_keys_info(const policy_node_t *policy); - * @return true if the given hmac is valid, false otherwise. +/** + * Checks if a wallet policy is sane, verifying that pubkeys are never repeated and (if miniscript) + * that the miniscript is "sane". + * @param[in] dispatcher_context + * Pointer to the dispatcher context + * @param[in] policy + * Pointer to the root node of the policy + * @param[in] wallet_version + * The version of the wallet policy (since it affects the format of keys in the vector of keys) + * @param[in] keys_merkle_root + * The root of the Merkle tree of the vector of keys information in the wallet policy + * @param[in] n_keys + * The number of keys in the vector of keys + * @return 0 on success; -1 in case of error. */ -bool check_wallet_hmac(const uint8_t wallet_id[static 32], const uint8_t wallet_hmac[static 32]); +__attribute__((warn_unused_result)) int is_policy_sane(dispatcher_context_t *dispatcher_context, + const policy_node_t *policy, + int wallet_version, + const uint8_t keys_merkle_root[static 32], + uint32_t n_keys); \ No newline at end of file diff --git a/src/handler/lib/psbt_parse_rawtx.c b/src/handler/lib/psbt_parse_rawtx.c index 2098f0bea..bde4ac242 100644 --- a/src/handler/lib/psbt_parse_rawtx.c +++ b/src/handler/lib/psbt_parse_rawtx.c @@ -530,7 +530,7 @@ int call_psbt_parse_rawtx(dispatcher_context_t *dispatcher_context, int key_len, int output_index, txid_parser_outputs_t *outputs) { - LOG_PROCESSOR(dispatcher_context, __FILE__, __LINE__, __func__); + LOG_PROCESSOR(__FILE__, __LINE__, __func__); cx_sha256_t hash_context; cx_sha256_init(&hash_context); diff --git a/src/handler/lib/stream_merkle_leaf_element.c b/src/handler/lib/stream_merkle_leaf_element.c index 40d1ab6c5..751e0b02e 100644 --- a/src/handler/lib/stream_merkle_leaf_element.c +++ b/src/handler/lib/stream_merkle_leaf_element.c @@ -11,7 +11,7 @@ int call_stream_merkle_leaf_element(dispatcher_context_t *dispatcher_context, void (*len_callback)(size_t, void *), void (*callback)(buffer_t *, void *), void *callback_state) { - LOG_PROCESSOR(dispatcher_context, __FILE__, __LINE__, __func__); + LOG_PROCESSOR(__FILE__, __LINE__, __func__); uint8_t leaf_hash[32]; int res = call_get_merkle_leaf_hash(dispatcher_context, diff --git a/src/handler/lib/stream_merkleized_map_value.c b/src/handler/lib/stream_merkleized_map_value.c index bc263ef2e..0c7c44a6a 100644 --- a/src/handler/lib/stream_merkleized_map_value.c +++ b/src/handler/lib/stream_merkleized_map_value.c @@ -9,7 +9,7 @@ int call_stream_merkleized_map_value(dispatcher_context_t *dispatcher_context, void (*len_callback)(size_t, void *), void (*callback)(buffer_t *, void *), void *callback_state) { - LOG_PROCESSOR(dispatcher_context, __FILE__, __LINE__, __func__); + LOG_PROCESSOR(__FILE__, __LINE__, __func__); uint8_t key_merkle_hash[32]; merkle_compute_element_hash(key, key_len, key_merkle_hash); diff --git a/src/handler/lib/stream_preimage.c b/src/handler/lib/stream_preimage.c index 37b8e5e44..cd6a0c795 100644 --- a/src/handler/lib/stream_preimage.c +++ b/src/handler/lib/stream_preimage.c @@ -11,7 +11,7 @@ int call_stream_preimage(dispatcher_context_t *dispatcher_context, void (*len_callback)(size_t, void *), void (*callback)(buffer_t *, void *), void *callback_state) { - LOG_PROCESSOR(dispatcher_context, __FILE__, __LINE__, __func__); + LOG_PROCESSOR(__FILE__, __LINE__, __func__); uint8_t cmd = CCMD_GET_PREIMAGE; dispatcher_context->add_to_response(&cmd, 1); @@ -90,14 +90,13 @@ int call_stream_preimage(dispatcher_context_t *dispatcher_context, return -8; } - uint8_t *data_ptr2 = - dispatcher_context->read_buffer.ptr + dispatcher_context->read_buffer.offset; + data_ptr = dispatcher_context->read_buffer.ptr + dispatcher_context->read_buffer.offset; // update hash - crypto_hash_update(&hash_context.header, data_ptr2, n_bytes); + crypto_hash_update(&hash_context.header, data_ptr, n_bytes); // call callback with data - buffer_t buf = buffer_create(data_ptr2, n_bytes); + buffer_t buf = buffer_create(data_ptr, n_bytes); callback(&buf, callback_state); bytes_remaining -= n_bytes; diff --git a/src/handler/liquid_get_blinding_key.c b/src/handler/liquid_get_blinding_key.c index eb73b353c..f3a60bc2a 100644 --- a/src/handler/liquid_get_blinding_key.c +++ b/src/handler/liquid_get_blinding_key.c @@ -1,19 +1,4 @@ -/***************************************************************************** - * Ledger App Bitcoin. - * (c) 2021 Ledger SAS. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *****************************************************************************/ +#ifdef HAVE_LIQUID #include #include @@ -65,3 +50,5 @@ void handler_liquid_get_blinding_key(dispatcher_context_t *dc) { SEND_RESPONSE(dc, blinding_key, sizeof(blinding_key), SW_OK); } } + +#endif // HAVE_LIQUID \ No newline at end of file diff --git a/src/handler/liquid_get_blinding_key.h b/src/handler/liquid_get_blinding_key.h index 542c6064d..0cad80a18 100644 --- a/src/handler/liquid_get_blinding_key.h +++ b/src/handler/liquid_get_blinding_key.h @@ -1,4 +1,5 @@ #pragma once +#ifdef HAVE_LIQUID #include "../boilerplate/dispatcher.h" @@ -15,3 +16,5 @@ typedef struct { * Dispatcher context. */ void handler_liquid_get_blinding_key(dispatcher_context_t *dispatcher_context); + +#endif // HAVE_LIQUID \ No newline at end of file diff --git a/src/handler/liquid_get_master_blinding_key.c b/src/handler/liquid_get_master_blinding_key.c index f2713e960..e8ebf5a8b 100644 --- a/src/handler/liquid_get_master_blinding_key.c +++ b/src/handler/liquid_get_master_blinding_key.c @@ -1,19 +1,4 @@ -/***************************************************************************** - * Ledger App Bitcoin. - * (c) 2021 Ledger SAS. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *****************************************************************************/ +#ifdef HAVE_LIQUID #include #include @@ -44,3 +29,5 @@ void handler_liquid_get_master_blinding_key(dispatcher_context_t *dc) { SEND_RESPONSE(dc, mbk, sizeof(mbk), SW_OK); } } + +#endif // HAVE_LIQUID \ No newline at end of file diff --git a/src/handler/liquid_get_master_blinding_key.h b/src/handler/liquid_get_master_blinding_key.h index 360e97ea8..83ad7dd58 100644 --- a/src/handler/liquid_get_master_blinding_key.h +++ b/src/handler/liquid_get_master_blinding_key.h @@ -1,4 +1,5 @@ #pragma once +#ifdef HAVE_LIQUID #include "../boilerplate/dispatcher.h" @@ -15,3 +16,5 @@ typedef struct { * Dispatcher context. */ void handler_liquid_get_master_blinding_key(dispatcher_context_t *dispatcher_context); + +#endif // HAVE_LIQUID \ No newline at end of file diff --git a/src/handler/liquid_sign_pset.c b/src/handler/liquid_sign_pset.c index 95ad4f296..ea5d1660c 100644 --- a/src/handler/liquid_sign_pset.c +++ b/src/handler/liquid_sign_pset.c @@ -1,20 +1,3 @@ -/***************************************************************************** - * Ledger App Bitcoin. - * (c) 2021 Ledger SAS. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *****************************************************************************/ - /* Current assumptions during signing: 1) exactly one of the keys in the wallet is internal (enforce during wallet registration) diff --git a/src/handler/register_wallet.c b/src/handler/register_wallet.c index 9f390cbe5..10d975d1c 100644 --- a/src/handler/register_wallet.c +++ b/src/handler/register_wallet.c @@ -1,6 +1,6 @@ /***************************************************************************** * Ledger App Bitcoin. - * (c) 2021 Ledger SAS. + * (c) 2024 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,7 @@ #include "../boilerplate/dispatcher.h" #include "../boilerplate/sw.h" +#include "../common/bip32.h" #include "../common/merkle.h" #include "../common/read.h" #include "../common/wallet.h" @@ -34,236 +35,207 @@ #include "../ui/display.h" #include "../ui/menu.h" +#include "lib/get_merkle_leaf_element.h" +#include "lib/get_preimage.h" #include "lib/policy.h" #include "client_commands.h" -#include "register_wallet.h" +#include "handlers.h" -/** - * Receives and parses the public key info asking the user to validate it. - * - * @param[in,out] dc - * Dispatcher context. - */ -static void process_cosigner_info(dispatcher_context_t *dc); - -/** - * Goes to the next public key until all are processed. - * - * @param[in,out] dc - * Dispatcher context. - */ -static void next_cosigner(dispatcher_context_t *dc); - -/** - * Finalizes and sends response to the REGISTER_WALLET command. - * - * @param[in,out] dc - * Dispatcher context. - */ -static void finalize_response(dispatcher_context_t *dc); +#ifdef HAVE_LIQUID +#include "liquid.h" +#endif -/** - * Checks whether wallet policy is acceptable. - * - * @param[in] policy - * Pointer to root policy node. - * - * @return true on success, false on error. - */ static bool is_policy_acceptable(const policy_node_t *policy); - -/** - * Checks whether wallet policy name is acceptable. - * - * @param[in] name - * Wallet name, may not be null-terminated. - * @param name_len - * Number of characters in wallet name. - * - * @return true on success, false on error. - */ static bool is_policy_name_acceptable(const char *name, size_t name_len); +static const uint8_t BIP0341_NUMS_PUBKEY[] = {0x02, 0x50, 0x92, 0x9b, 0x74, 0xc1, 0xa0, 0x49, 0x54, + 0xb7, 0x8b, 0x4b, 0x60, 0x35, 0xe9, 0x7a, 0x5e, 0x07, + 0x8a, 0x5a, 0x0f, 0x28, 0xec, 0x96, 0xd5, 0x47, 0xbf, + 0xee, 0x9a, 0xce, 0x80, 0x3a, 0xc0}; + /** * Validates the input, initializes the hash context and starts accumulating the wallet header in * it. */ -void handler_register_wallet(dispatcher_context_t *dc) { - register_wallet_state_t *state = (register_wallet_state_t *) &G_command_state; +void handler_register_wallet(dispatcher_context_t *dc, uint8_t protocol_version) { + (void) protocol_version; - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); + LOG_PROCESSOR(__FILE__, __LINE__, __func__); - // Device must be unlocked - if (os_global_pin_is_validated() != BOLOS_UX_OK) { - SEND_SW(dc, SW_SECURITY_STATUS_NOT_SATISFIED); - return; - } + policy_map_wallet_header_t wallet_header; + + uint8_t wallet_id[32]; + union { + uint8_t bytes[MAX_WALLET_POLICY_BYTES]; + policy_node_t parsed; + } policy_map; + + size_t n_internal_keys = 0; uint64_t serialized_policy_map_len; if (!buffer_read_varint(&dc->read_buffer, &serialized_policy_map_len)) { SEND_SW(dc, SW_WRONG_DATA_LENGTH); return; } - if (serialized_policy_map_len > MAX_POLICY_MAP_SERIALIZED_LENGTH) { - PRINTF("Policy map too long\n"); - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - if ((read_policy_map_wallet(&dc->read_buffer, &state->wallet_header)) < 0) { - PRINTF("Failed reading policy map\n"); + uint8_t policy_map_descriptor[MAX_DESCRIPTOR_TEMPLATE_LENGTH]; + if (0 > read_and_parse_wallet_policy(dc, + &dc->read_buffer, + &wallet_header, + policy_map_descriptor, + policy_map.bytes, + sizeof(policy_map.bytes))) { SEND_SW(dc, SW_INCORRECT_DATA); return; } - buffer_t policy_map_buffer = - buffer_create(&state->wallet_header.policy_map, state->wallet_header.policy_map_len); - if (parse_policy_map(&policy_map_buffer, - state->policy_map_bytes, - sizeof(state->policy_map_bytes), - BIP32_PUBKEY_VERSION, - BIP32_PRIVKEY_VERSION) < 0) { - PRINTF("Failed parsing policy map\n"); + if (count_distinct_keys_info(&policy_map.parsed) != (int) wallet_header.n_keys) { + PRINTF("Number of keys in descriptor template doesn't provided keys\n"); SEND_SW(dc, SW_INCORRECT_DATA); return; } // Compute the wallet id (sha256 of the serialization) - get_policy_wallet_id(&state->wallet_header, state->wallet_id); + get_policy_wallet_id(&wallet_header, wallet_id); // Verify that the name is acceptable - if (!is_policy_name_acceptable(state->wallet_header.name, state->wallet_header.name_len)) { + if (!is_policy_name_acceptable(wallet_header.name, wallet_header.name_len)) { + PRINTF("Policy name is not acceptable\n"); SEND_SW(dc, SW_INCORRECT_DATA); return; } - // check if policy is acceptable; only multisig is accepted at this time, - // and it must be one of the accepted patterns. - if (!is_policy_acceptable(&state->policy_map)) { + // check if policy is acceptable + if (!is_policy_acceptable(&policy_map.parsed)) { + PRINTF("Policy is not acceptable\n"); + SEND_SW(dc, SW_NOT_SUPPORTED); return; } - state->master_key_fingerprint = crypto_get_master_key_fingerprint(); - - state->next_pubkey_index = 0; + // make sure that the policy is sane (especially if it contains miniscript) + if (0 > is_policy_sane(dc, + &policy_map.parsed, + wallet_header.version, + wallet_header.keys_info_merkle_root, + wallet_header.n_keys)) { + PRINTF("Policy is not sane\n"); - ui_display_wallet_header(dc, &state->wallet_header, process_cosigner_info); -} - -/** - * Receives and parses the next pubkey info. - * Asks the user to validate the pubkey info. - */ -static void process_cosigner_info(dispatcher_context_t *dc) { - register_wallet_state_t *state = (register_wallet_state_t *) &G_command_state; - - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); - - int pubkey_info_len = call_get_merkle_leaf_element(dc, - state->wallet_header.keys_info_merkle_root, - state->wallet_header.n_keys, - state->next_pubkey_index, - state->next_pubkey_info, - MAX_POLICY_KEY_INFO_LEN); - - if (pubkey_info_len < 0) { - SEND_SW(dc, SW_INCORRECT_DATA); + SEND_SW(dc, SW_NOT_SUPPORTED); return; } - state->next_pubkey_info[pubkey_info_len] = 0; - - // Make a sub-buffer for the pubkey info - buffer_t key_info_buffer = buffer_create(state->next_pubkey_info, pubkey_info_len); - - policy_map_key_info_t key_info; - if (parse_policy_map_key_info(&key_info_buffer, &key_info) == -1) { - PRINTF("Incorrect policy map.\n"); - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - if (!validate_policy_map_extended_pubkey(&key_info, BIP32_PUBKEY_VERSION)) { - SEND_SW(dc, SW_INCORRECT_DATA); + if (!ui_display_register_wallet(dc, &wallet_header, (char *) policy_map_descriptor)) { + SEND_SW(dc, SW_DENY); + ui_post_processing_confirm_wallet_registration(dc, false); return; } - // We refuse to register wallets without key origin information, or whose keys don't end with - // the wildcard ('/**'). The key origin information is necessary when signing to identify which - // one is our key. Using addresses without a wildcard could potentially be supported, but - // disabled for now (question to address: can only _some_ of the keys have a wildcard?). + uint32_t master_key_fingerprint = crypto_get_master_key_fingerprint(); + + for (size_t cosigner_index = 0; cosigner_index < wallet_header.n_keys; cosigner_index++) { + /** + * Receives and parses the next pubkey info. + * Asks the user to validate the pubkey info. + */ + + uint8_t next_pubkey_info[MAX_POLICY_KEY_INFO_LEN + 1]; + int pubkey_info_len = call_get_merkle_leaf_element(dc, + wallet_header.keys_info_merkle_root, + wallet_header.n_keys, + cosigner_index, + next_pubkey_info, + MAX_POLICY_KEY_INFO_LEN); + + if (pubkey_info_len < 0) { + SEND_SW(dc, SW_INCORRECT_DATA); + ui_post_processing_confirm_wallet_registration(dc, false); + return; + } - if (!key_info.has_key_origin) { - PRINTF("Key info without origin unsupported.\n"); - SEND_SW(dc, SW_NOT_SUPPORTED); - return; - } + next_pubkey_info[pubkey_info_len] = 0; - if (KEY_WILDCARD_NONE == key_info.wildcard_id) { - PRINTF("Key info without wildcard unsupported.\n"); - SEND_SW(dc, SW_NOT_SUPPORTED); - return; - } + // Make a sub-buffer for the pubkey info + buffer_t key_info_buffer = buffer_create(next_pubkey_info, pubkey_info_len); - bool is_key_internal = false; - if (read_u32_be(key_info.master_key_fingerprint, 0) == state->master_key_fingerprint) { - // it could be a collision on the fingerprint; we verify that we can actually generate the - // same pubkey - char pubkey_derived[MAX_SERIALIZED_PUBKEY_LENGTH + 1]; - int serialized_pubkey_len = - get_serialized_extended_pubkey_at_path(key_info.master_key_derivation, - key_info.master_key_derivation_len, - BIP32_PUBKEY_VERSION, - pubkey_derived); - if (serialized_pubkey_len == -1) { - SEND_SW(dc, SW_BAD_STATE); + policy_map_key_info_t key_info; + if (parse_policy_map_key_info(&key_info_buffer, &key_info, wallet_header.version) == -1) { + PRINTF("Incorrect policy map.\n"); + SEND_SW(dc, SW_INCORRECT_DATA); + ui_post_processing_confirm_wallet_registration(dc, false); return; } - if (strncmp(key_info.ext_pubkey, pubkey_derived, MAX_SERIALIZED_PUBKEY_LENGTH) == 0) { - is_key_internal = true; - ++state->n_internal_keys; + if (read_u32_be(key_info.ext_pubkey.version, 0) != BIP32_PUBKEY_VERSION) { + PRINTF("Invalid pubkey version. Wrong network?\n"); + SEND_SW(dc, SW_INCORRECT_DATA); + return; } - } - ui_display_policy_map_cosigner_pubkey(dc, - (char *) state->next_pubkey_info, - state->next_pubkey_index, // 1-indexed for the UI - state->wallet_header.n_keys, - is_key_internal, - next_cosigner); -} + // We refuse to register wallets without key origin information, or whose keys don't end + // with the wildcard ('/**'). The key origin information is necessary when signing to + // identify which one is our key. Using addresses without a wildcard could potentially be + // supported, but disabled for now (question to address: can only _some_ of the keys have a + // wildcard?). -static void next_cosigner(dispatcher_context_t *dc) { - register_wallet_state_t *state = (register_wallet_state_t *) &G_command_state; + key_type_e key_type; - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); + if (memcmp(key_info.ext_pubkey.compressed_pubkey, + BIP0341_NUMS_PUBKEY, + sizeof(BIP0341_NUMS_PUBKEY)) == 0) { + // this public key is known to be unspendable + key_type = PUBKEY_TYPE_UNSPENDABLE; + } else { + key_type = PUBKEY_TYPE_EXTERNAL; + + // if there is key origin information and the fingerprint matches, we make sure it's not + // a false positive (it could be wrong info, or a collision). + if (key_info.has_key_origin && + read_u32_be(key_info.master_key_fingerprint, 0) == master_key_fingerprint) { + // we verify that we can actually generate the same pubkey + serialized_extended_pubkey_t pubkey_derived; + int serialized_pubkey_len = + get_extended_pubkey_at_path(key_info.master_key_derivation, + key_info.master_key_derivation_len, + BIP32_PUBKEY_VERSION, + &pubkey_derived); + if (serialized_pubkey_len == -1) { + SEND_SW(dc, SW_BAD_STATE); + ui_post_processing_confirm_wallet_registration(dc, false); + return; + } + + if (memcmp(&key_info.ext_pubkey, &pubkey_derived, sizeof(pubkey_derived)) == 0) { + key_type = PUBKEY_TYPE_INTERNAL; + ++n_internal_keys; + } + } + } - ++state->next_pubkey_index; - if (state->next_pubkey_index < state->wallet_header.n_keys) { - dc->next(process_cosigner_info); - } else { - dc->next(finalize_response); + if (!ui_display_policy_map_cosigner_pubkey(dc, + (char *) next_pubkey_info, + cosigner_index, // 1-indexed for the UI + wallet_header.n_keys, + key_type)) { + SEND_SW(dc, SW_DENY); + return; + } } -} -static void finalize_response(dispatcher_context_t *dc) { - register_wallet_state_t *state = (register_wallet_state_t *) &G_command_state; - - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); - - if (state->n_internal_keys != 1) { - // Unclear if there is any use case for multiple internal keys in the same wallet. + if (n_internal_keys < 1) { + // Unclear if there is any use case for registering policies with no internal keys. // We disallow that, might reconsider in future versions if needed. - SEND_SW(dc, SW_NOT_SUPPORTED); + PRINTF("Wallet policy with no internal keys\n"); + SEND_SW(dc, SW_INCORRECT_DATA); + ui_post_processing_confirm_wallet_registration(dc, false); return; - } - - // Ensure the device is unlocked before outputting the response - if (os_global_pin_is_validated() != BOLOS_UX_OK) { - SEND_SW(dc, SW_SECURITY_STATUS_NOT_SATISFIED); + } else if (n_internal_keys != 1 && wallet_header.version == WALLET_POLICY_VERSION_V1) { + // for legacy policies, we keep the restriction to exactly 1 internal key + PRINTF("V1 policies must have exactly 1 internal key\n"); + SEND_SW(dc, SW_INCORRECT_DATA); + ui_post_processing_confirm_wallet_registration(dc, false); return; } @@ -272,7 +244,7 @@ static void finalize_response(dispatcher_context_t *dc) { uint8_t hmac[32]; } response; - memcpy(response.wallet_id, state->wallet_id, sizeof(response.wallet_id)); + memcpy(response.wallet_id, wallet_id, sizeof(wallet_id)); // TODO: we might want to add external info to be committed with the signature (e.g.: app // version). @@ -283,65 +255,33 @@ static void finalize_response(dispatcher_context_t *dc) { // And the signature would be on the concatenation of the wallet id and the metadata. // The client must persist the metadata, together with the signature. - { - // sign wallet id and produce response - uint8_t key[32]; - bool ok = crypto_derive_symmetric_key(WALLET_SLIP0021_LABEL, - WALLET_SLIP0021_LABEL_LEN, - (uint8_t*)key); - - ok = ok && sizeof(response.hmac) == cx_hmac_sha256((uint8_t*)key, - sizeof(key), - state->wallet_id, - sizeof(state->wallet_id), - response.hmac, - sizeof(response.hmac)); - - explicit_bzero((uint8_t*)key, sizeof(key)); - - if (!ok) { - SEND_SW(dc, SW_BAD_STATE); - return; - } - } + compute_wallet_hmac(wallet_id, response.hmac); SEND_RESPONSE(dc, &response, sizeof(response), SW_OK); + ui_post_processing_confirm_wallet_registration(dc, true); } static bool is_policy_acceptable(const policy_node_t *policy) { - policy_node_t *internal_script; - - if (policy->type == TOKEN_SH) { - policy_node_t *child_node = ((policy_node_with_script_t *) policy)->script; - if (child_node->type == TOKEN_WSH) { - // sh(wsh({sorted}multi(@0))) - internal_script = ((policy_node_with_script_t *) child_node)->script; - } else { - // sh({sorted}multi(@0)) - internal_script = child_node; - } - } else if (policy->type == TOKEN_WSH) { - // wsh({sorted}multi(@0)) - internal_script = ((policy_node_with_script_t *) policy)->script; - } else if (policy->type == TOKEN_CT) { + PolicyNodeType policy_type = policy->type; #ifdef HAVE_LIQUID + if (policy->type == TOKEN_CT) { // ct(, ) if(liquid_is_blinding_key_acceptable(policy)) { - internal_script = ((policy_node_ct_t *) policy)->script; - return is_policy_acceptable(internal_script); + policy_type = ((policy_node_ct_t *)policy)->script->type; + } + else { + return false; } -#endif // HAVE_LIQUID - return false; // unexpected policy - } else { - return false; // unexpected policy } +#endif // HAVE_LIQUID - return internal_script->type == TOKEN_MULTI || internal_script->type == TOKEN_SORTEDMULTI; + return policy_type == TOKEN_PKH || policy_type == TOKEN_WPKH || policy_type == TOKEN_SH || + policy_type == TOKEN_WSH || policy_type == TOKEN_TR; } static bool is_policy_name_acceptable(const char *name, size_t name_len) { - // between 1 and MAX_POLICY_MAP_NAME_LENGTH characters - if (name_len == 0 || name_len > MAX_POLICY_MAP_NAME_LENGTH) return false; + // between 1 and MAX_WALLET_NAME_LENGTH characters + if (name_len == 0 || name_len > MAX_WALLET_NAME_LENGTH) return false; // first and last characters must not be whitespace if (name[0] == ' ' || name[name_len - 1] == ' ') return false; @@ -351,4 +291,4 @@ static bool is_policy_name_acceptable(const char *name, size_t name_len) { if (name[i] < 0x20 || name[i] > 0x7E) return false; return true; -} +} \ No newline at end of file diff --git a/src/handler/register_wallet.h b/src/handler/register_wallet.h deleted file mode 100644 index fb03e704f..000000000 --- a/src/handler/register_wallet.h +++ /dev/null @@ -1,43 +0,0 @@ -#pragma once - -#include "../crypto.h" -#include "../common/bip32.h" -#include "../common/wallet.h" -#include "../boilerplate/dispatcher.h" - -#include "lib/get_merkle_leaf_element.h" - -/// State of REGISTER_WALLET handler -typedef struct { - /// Machine context for command dispatcher - machine_context_t ctx; - - /// Wallet header with basic information from wallet policy - policy_map_wallet_header_t wallet_header; - - /// Wallet identifier - uint8_t wallet_id[32]; - union { - /// Wallet policy map as array of bytes - uint8_t policy_map_bytes[MAX_POLICY_MAP_BYTES]; - /// Wallet policy map as a structure - policy_node_t policy_map; - }; - /// Number of internal keys - size_t n_internal_keys; - /// Master key fingerprint - uint32_t master_key_fingerprint; - - /// Zero-based public key index - uint8_t next_pubkey_index; - /// Public key information, a null-terminated string - uint8_t next_pubkey_info[MAX_POLICY_KEY_INFO_LEN + 1]; -} register_wallet_state_t; - -/** - * Handles REGISTER_WALLET command. - * - * @param[in,out] dispatcher_context - * Dispatcher context. - */ -void handler_register_wallet(dispatcher_context_t *dispatcher_context); diff --git a/src/handler/sign_message.c b/src/handler/sign_message.c index 281b11c88..e45a7dc94 100644 --- a/src/handler/sign_message.c +++ b/src/handler/sign_message.c @@ -1,6 +1,6 @@ /***************************************************************************** * Ledger App Bitcoin. - * (c) 2021 Ledger SAS. + * (c) 2024 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,134 +20,226 @@ #include "boilerplate/io.h" #include "boilerplate/dispatcher.h" #include "boilerplate/sw.h" +#include "../common/bip32.h" #include "../commands.h" #include "../constants.h" #include "../crypto.h" #include "../ui/display.h" #include "../ui/menu.h" +#include "lib/get_merkle_leaf_element.h" -/** - * Signs Bitcoin Message Signing digest and sends response. - * - * @param[in,out] dc - * Dispatcher context. - */ -static void send_response(dispatcher_context_t *dc); +#include "handlers.h" + +#define MAX_DISPLAYBLE_CHUNK_NUMBER \ + (5 * MESSAGE_CHUNK_PER_DISPLAY) // If the message is too long we will not display it /// Magic prefix for Bitcoin Message Signing digest static unsigned char const BSM_SIGN_MAGIC[] = {'\x18', 'B', 'i', 't', 'c', 'o', 'i', 'n', ' ', 'S', 'i', 'g', 'n', 'e', 'd', ' ', 'M', 'e', 's', 's', 'a', 'g', 'e', ':', '\n'}; -void handler_sign_message(dispatcher_context_t *dc) { - sign_message_state_t *state = (sign_message_state_t *) &G_command_state; +static bool display_message_content_and_confirm(dispatcher_context_t* dc, + uint8_t* message_merkle_root, + size_t n_chunks, + uint8_t* path_str) { + reset_streaming_index(); + while (get_streaming_index() <= (n_chunks - 1) / MESSAGE_CHUNK_PER_DISPLAY) { + uint8_t message_chunk[MESSAGE_MAX_DISPLAY_SIZE]; + + int total_chunk_len = 0; + uint8_t offset = 0; + + if (get_streaming_index() > 0) { + message_chunk[offset++] = '.'; + message_chunk[offset++] = '.'; + message_chunk[offset++] = '.'; + } + + total_chunk_len += offset; - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); + for (int j = 0; j < MESSAGE_CHUNK_PER_DISPLAY; j++) { + offset += j * MESSAGE_CHUNK_SIZE; - // Device must be unlocked - if (os_global_pin_is_validated() != BOLOS_UX_OK) { - SEND_SW(dc, SW_SECURITY_STATUS_NOT_SATISFIED); - return; + int chunk_len = + call_get_merkle_leaf_element(dc, + message_merkle_root, + n_chunks, + get_streaming_index() * MESSAGE_CHUNK_PER_DISPLAY + j, + message_chunk + offset, + MESSAGE_CHUNK_SIZE); + + total_chunk_len += chunk_len; + + if (chunk_len < MESSAGE_CHUNK_SIZE) { + break; + } + } + + if ((get_streaming_index() + 1) * MESSAGE_CHUNK_PER_DISPLAY < n_chunks) { + message_chunk[total_chunk_len] = '.'; + message_chunk[total_chunk_len + 1] = '.'; + message_chunk[total_chunk_len + 2] = '.'; + message_chunk[total_chunk_len + 3] = '\0'; + } else { + message_chunk[total_chunk_len] = '\0'; + } + + if (!ui_display_path_and_message_content(dc, + (char*) path_str, + (char*) message_chunk, + (n_chunks - 1) / MESSAGE_CHUNK_PER_DISPLAY)) { + return false; + } + } + + if (!ui_display_message_confirm(dc)) { + return false; } - if (!buffer_read_u8(&dc->read_buffer, &state->bip32_path_len) || - !buffer_read_bip32_path(&dc->read_buffer, state->bip32_path, state->bip32_path_len) || - !buffer_read_varint(&dc->read_buffer, &state->message_length) || - !buffer_read_bytes(&dc->read_buffer, state->message_merkle_root, 32)) { + return true; +} + +void handler_sign_message(dispatcher_context_t* dc, uint8_t protocol_version) { + (void) protocol_version; + + uint8_t bip32_path_len; + uint32_t bip32_path[MAX_BIP32_PATH_STEPS]; + uint64_t message_length; + uint8_t message_merkle_root[32]; + bool printable = true; + + if (!buffer_read_u8(&dc->read_buffer, &bip32_path_len) || + !buffer_read_bip32_path(&dc->read_buffer, bip32_path, bip32_path_len) || + !buffer_read_varint(&dc->read_buffer, &message_length) || + !buffer_read_bytes(&dc->read_buffer, message_merkle_root, 32)) { SEND_SW(dc, SW_WRONG_DATA_LENGTH); return; } - if (state->bip32_path_len > MAX_BIP32_PATH_STEPS || state->message_length >= (1LL << 32)) { + if (bip32_path_len > MAX_BIP32_PATH_STEPS || message_length >= (1LL << 32)) { SEND_SW(dc, SW_INCORRECT_DATA); return; } char path_str[MAX_SERIALIZED_BIP32_PATH_LENGTH + 1] = "(Master key)"; - if (state->bip32_path_len > 0) { - bip32_path_format(state->bip32_path, state->bip32_path_len, path_str, sizeof(path_str)); + if (bip32_path_len > 0) { + bip32_path_format(bip32_path, bip32_path_len, path_str, sizeof(path_str)); } - cx_sha256_init(&state->msg_hash_context); - cx_sha256_init(&state->bsm_digest_context); + cx_sha256_t msg_hash_context; // used to compute sha256(message) + cx_sha256_t bsm_digest_context; // used to compute the Bitcoin Message Signing digest + cx_sha256_init(&msg_hash_context); + cx_sha256_init(&bsm_digest_context); + + crypto_hash_update(&bsm_digest_context.header, BSM_SIGN_MAGIC, sizeof(BSM_SIGN_MAGIC)); + crypto_hash_update_varint(&bsm_digest_context.header, message_length); - crypto_hash_update(&state->bsm_digest_context.header, BSM_SIGN_MAGIC, sizeof(BSM_SIGN_MAGIC)); - crypto_hash_update_varint(&state->bsm_digest_context.header, state->message_length); + size_t n_chunks = (message_length + MESSAGE_CHUNK_SIZE - 1) / MESSAGE_CHUNK_SIZE; + + if (n_chunks > MAX_DISPLAYBLE_CHUNK_NUMBER) { + printable = false; + } - size_t n_chunks = (state->message_length + 63) / 64; for (unsigned int i = 0; i < n_chunks; i++) { - uint8_t message_chunk[64]; + uint8_t message_chunk[MESSAGE_CHUNK_SIZE]; int chunk_len = call_get_merkle_leaf_element(dc, - state->message_merkle_root, + message_merkle_root, n_chunks, i, message_chunk, sizeof(message_chunk)); - if (chunk_len < 0 || (chunk_len != 64 && i != n_chunks - 1)) { + if (chunk_len < 0 || (chunk_len != MESSAGE_CHUNK_SIZE && i != n_chunks - 1)) { SEND_SW(dc, SW_BAD_STATE); // should never happen return; } - crypto_hash_update(&state->msg_hash_context.header, message_chunk, chunk_len); - crypto_hash_update(&state->bsm_digest_context.header, message_chunk, chunk_len); - } - - crypto_hash_digest(&state->msg_hash_context.header, state->message_hash, 32); - crypto_hash_digest(&state->bsm_digest_context.header, state->bsm_digest, 32); - cx_hash_sha256(state->bsm_digest, 32, state->bsm_digest, 32); - - char message_hash_str[64 + 1]; - for (int i = 0; i < 32; i++) { - snprintf(message_hash_str + 2 * i, 3, "%02X", state->message_hash[i]); + if (printable) { + for (int j = 0; j < chunk_len; j++) { + if (message_chunk[j] < 0x20 || message_chunk[j] > 0x7E) { + printable = false; + break; + } + } + } + crypto_hash_update(&msg_hash_context.header, message_chunk, chunk_len); + crypto_hash_update(&bsm_digest_context.header, message_chunk, chunk_len); } - ui_display_message_hash(dc, path_str, message_hash_str, send_response); -} + uint8_t message_hash[32]; + uint8_t bsm_digest[32]; -static void send_response(dispatcher_context_t *dc) { - sign_message_state_t *state = (sign_message_state_t *) &G_command_state; + crypto_hash_digest(&msg_hash_context.header, message_hash, 32); + crypto_hash_digest(&bsm_digest_context.header, bsm_digest, 32); + cx_hash_sha256(bsm_digest, 32, bsm_digest, 32); - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); + char message_hash_str[MESSAGE_CHUNK_SIZE + 1]; + for (int i = 0; i < MESSAGE_CHUNK_SIZE / 2; i++) { + snprintf(message_hash_str + 2 * i, 3, "%02X", message_hash[i]); + } + ui_pre_processing_message(); + if (printable) { + if (!display_message_content_and_confirm(dc, + message_merkle_root, + n_chunks, + (uint8_t*) path_str)) { + SEND_SW(dc, SW_DENY); + ui_post_processing_confirm_message(dc, false); + return; + } + } else { + if (!ui_display_message_path_hash_and_confirm(dc, path_str, message_hash_str)) { + SEND_SW(dc, SW_DENY); + ui_post_processing_confirm_message(dc, false); + return; + } + } uint8_t sig[MAX_DER_SIG_LEN]; uint32_t info; - int sig_len = crypto_ecdsa_sign_sha256_hash_with_key(state->bip32_path, - state->bip32_path_len, - state->bsm_digest, + int sig_len = crypto_ecdsa_sign_sha256_hash_with_key(bip32_path, + bip32_path_len, + bsm_digest, + NULL, sig, &info); - if (sig_len < 0) { // unexpected error when signing SEND_SW(dc, SW_BAD_STATE); + ui_post_processing_confirm_message(dc, false); return; } - // convert signature to the standard Bitcoin format, always 65 bytes long + { + // convert signature to the standard Bitcoin format, always 65 bytes long - uint8_t result[65]; - memset(result, 0, sizeof(result)); + uint8_t result[65]; + memset(result, 0, sizeof(result)); - // # Format signature into standard bitcoin format - int r_length = sig[3]; - int s_length = sig[4 + r_length + 1]; + // # Format signature into standard bitcoin format + int r_length = sig[3]; + int s_length = sig[4 + r_length + 1]; - if (r_length > 33 || s_length > 33) { - SEND_SW(dc, SW_BAD_STATE); // can never happen - return; - } + if (r_length > 33 || s_length > 33) { + SEND_SW(dc, SW_BAD_STATE); // can never happen + ui_post_processing_confirm_message(dc, false); + return; + } - // Write s, r, and the first byte in reverse order, as the two loops will underflow by 1 byte - // (that needs to be discarded) when s_length and r_length (respectively) are equal to 33. - for (int i = s_length - 1; i >= 0; --i) { - result[1 + 32 + 32 - s_length + i] = sig[4 + r_length + 2 + i]; - } - for (int i = r_length - 1; i >= 0; --i) { - result[1 + 32 - r_length + i] = sig[4 + i]; - } - result[0] = 27 + 4 + ((info & CX_ECCINFO_PARITY_ODD) ? 1 : 0); + // Write s, r, and the first byte in reverse order, as the two loops will underflow by 1 + // byte (that needs to be discarded) when s_length and r_length (respectively) are equal + // to 33. + for (int i = s_length - 1; i >= 0; --i) { + result[1 + 32 + 32 - s_length + i] = sig[4 + r_length + 2 + i]; + } + for (int i = r_length - 1; i >= 0; --i) { + result[1 + 32 - r_length + i] = sig[4 + i]; + } + result[0] = 27 + 4 + ((info & CX_ECCINFO_PARITY_ODD) ? 1 : 0); - SEND_RESPONSE(dc, result, sizeof(result), SW_OK); + SEND_RESPONSE(dc, result, sizeof(result), SW_OK); + ui_post_processing_confirm_message(dc, true); + return; + } } diff --git a/src/handler/sign_message.h b/src/handler/sign_message.h deleted file mode 100644 index 34735559b..000000000 --- a/src/handler/sign_message.h +++ /dev/null @@ -1,38 +0,0 @@ -#pragma once - -#include "cx.h" -#include "../common/bip32.h" -#include "../boilerplate/dispatcher.h" - -/// State of SIGN_MESSAGE handler -typedef struct { - /// Machine context for command dispatcher - machine_context_t ctx; - - /// Number of derivation steps in BIP32 path - uint8_t bip32_path_len; - /// BIP32 path used for signing - uint32_t bip32_path[MAX_BIP32_PATH_STEPS]; - /// The byte length of the message to sign - uint64_t message_length; - /// The Merkle root of the message - uint8_t message_merkle_root[32]; - - /// SHA-256 context used to compute sha256(message) - cx_sha256_t msg_hash_context; - /// SHA-256 context used to compute the Bitcoin Message Signing digest - cx_sha256_t bsm_digest_context; - - /// SHA-256 hash of the message - uint8_t message_hash[32]; - /// Computed Bitcoin Message Signing digest - uint8_t bsm_digest[32]; -} sign_message_state_t; - -/** - * Handles SIGN_MESSAGE command. - * - * @param[in,out] dispatcher_context - * Dispatcher context. - */ -void handler_sign_message(dispatcher_context_t *dispatcher_context); diff --git a/src/handler/sign_psbt.c b/src/handler/sign_psbt.c index 844a68f75..97aacb150 100644 --- a/src/handler/sign_psbt.c +++ b/src/handler/sign_psbt.c @@ -1,6 +1,6 @@ /***************************************************************************** * Ledger App Bitcoin. - * (c) 2021 Ledger SAS. + * (c) 2024 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,13 +19,17 @@ #include +#include "lib_standard_app/crypto_helpers.h" + #include "../boilerplate/dispatcher.h" #include "../boilerplate/sw.h" +#include "../common/bitvector.h" #include "../common/merkle.h" #include "../common/psbt.h" #include "../common/read.h" #include "../common/script.h" #include "../common/varint.h" +#include "../common/wallet.h" #include "../common/write.h" #include "../commands.h" @@ -41,52 +45,139 @@ #include "lib/get_preimage.h" #include "lib/get_merkleized_map.h" #include "lib/get_merkleized_map_value.h" +#include "lib/get_merkle_leaf_element.h" #include "lib/psbt_parse_rawtx.h" -#include "sign_psbt.h" +#include "handlers.h" #include "sign_psbt/compare_wallet_script_at_path.h" -#include "sign_psbt/get_fingerprint_and_path.h" -#include "sign_psbt/is_in_out_internal.h" +#include "sign_psbt/extract_bip32_derivation.h" #include "sign_psbt/update_hashes_with_map_value.h" #include "../swap/swap_globals.h" +#include "../swap/handle_swap_sign_transaction.h" + +// common info that applies to either the current input or the current output +typedef struct { + merkleized_map_commitment_t map; + + bool unexpected_pubkey_error; // Set to true if the pubkey in the keydata of + // PSBT_{IN,OUT}_BIP32_DERIVATION or + // PSBT_{IN,OUT}_TAP_BIP32_DERIVATION is not the correct length. + + bool placeholder_found; // Set to true if a matching placeholder is found in the input info -// Input validation -static void process_input_map(dispatcher_context_t *dc); -static void check_input_owned(dispatcher_context_t *dc); + bool is_change; + int address_index; -static void alert_external_inputs(dispatcher_context_t *dc); + // For an output, its scriptPubKey + // for an input, the prevout's scriptPubKey (either from the non-witness-utxo, or from the + // witness-utxo) -// Output validation -static void verify_outputs_init(dispatcher_context_t *dc); -static void process_output_map(dispatcher_context_t *dc); -static void check_output_owned(dispatcher_context_t *dc); -static void output_validate_external(dispatcher_context_t *dc); -static void output_next(dispatcher_context_t *dc); + uint8_t scriptPubKey[MAX_OUTPUT_SCRIPTPUBKEY_LEN]; + size_t scriptPubKey_len; +} in_out_info_t; -// User confirmation (all) -static void confirm_transaction(dispatcher_context_t *dc); +typedef struct { + in_out_info_t in_out; + bool has_witnessUtxo; + bool has_nonWitnessUtxo; + bool has_redeemScript; + bool has_sighash_type; -// Signing process (all) -static void sign_init(dispatcher_context_t *dc); -static void sign_process_input_map(dispatcher_context_t *dc); + uint64_t prevout_amount; // the value of the prevout of the current input -// Legacy sighash computation (P2PKH and P2SH) -static void sign_legacy(dispatcher_context_t *dc); -static void sign_legacy_compute_sighash(dispatcher_context_t *dc); + // we no longer need the script when we compute the taptree hash right before a taproot key-path + // spending; therefore, we reuse the same memory + union { + // the script used when signing, either from the witness utxo or the redeem script + uint8_t script[MAX_PREVOUT_SCRIPTPUBKEY_LEN]; + uint8_t taptree_hash[32]; + }; -// Segwit sighash computation (P2WPKH, P2WSH and P2TR) -static void sign_segwit(dispatcher_context_t *dc); -static void sign_segwit_v0(dispatcher_context_t *dc); -static void sign_segwit_v1(dispatcher_context_t *dc); + size_t script_len; -// Sign input and yield result -static void sign_sighash_ecdsa(dispatcher_context_t *dc); -static void sign_sighash_schnorr(dispatcher_context_t *dc); + uint32_t sighash_type; +} input_info_t; -// End point and return -static void finalize(dispatcher_context_t *dc); +typedef struct { + in_out_info_t in_out; + uint64_t value; +} output_info_t; + +typedef struct { + policy_node_key_placeholder_t placeholder; + int cur_index; + uint32_t fingerprint; + uint8_t key_derivation_length; + uint32_t key_derivation[MAX_BIP32_PATH_STEPS]; + serialized_extended_pubkey_t pubkey; + bool is_tapscript; // true if signing with a BIP342 tapleaf script path spend + uint8_t tapleaf_hash[32]; // only used for tapscripts +} placeholder_info_t; + +// Cache for partial hashes during segwit signing (avoid quadratic hashing for segwit transactions) +typedef struct { + uint8_t sha_prevouts[32]; + uint8_t sha_amounts[32]; + uint8_t sha_scriptpubkeys[32]; + uint8_t sha_sequences[32]; + uint8_t sha_outputs[32]; +} segwit_hashes_t; + +#ifdef USE_NVRAM_STASH + +typedef struct { + // Aligning by 4 is necessary due to platform limitations. + // Aligning by 64 further guarantees that most policies will fit in a single + // NVRAM page boundary, which minimizes the amount of writes. + __attribute__((aligned(64))) uint8_t wallet_policy_bytes[MAX_WALLET_POLICY_BYTES]; +} nvram_stash_t; + +const nvram_stash_t N_nvram_stash_real; +#define N_nvram_stash (*(const volatile nvram_stash_t *) PIC(&N_nvram_stash_real)) + +#endif + +typedef struct { + uint32_t master_key_fingerprint; + uint32_t tx_version; + uint32_t locktime; + + unsigned int n_inputs; + uint8_t inputs_root[32]; // merkle root of the vector of input maps commitments + unsigned int n_outputs; + uint8_t outputs_root[32]; // merkle root of the vector of output maps commitments + + uint64_t inputs_total_amount; + + // aggregate info on outputs + struct { + uint64_t total_amount; // amount of all the outputs (external + change) + uint64_t change_total_amount; // total amount of all change outputs + int n_change; // count of outputs compatible with change outputs + int n_external; // count of external outputs + } outputs; + + bool is_wallet_default; + + uint8_t protocol_version; + +#ifndef USE_NVRAM_STASH + __attribute__((aligned(4))) uint8_t wallet_policy_map_bytes[MAX_WALLET_POLICY_BYTES]; +#endif + policy_node_t *wallet_policy_map; + + int wallet_header_version; + uint8_t wallet_header_keys_info_merkle_root[32]; + size_t wallet_header_n_keys; + + // if any segwitv0 input is missing the non-witness-utxo, we show a warning + bool show_missing_nonwitnessutxo_warning; + + // if any of the internal inputs has non-default sighash, we show a warning + bool show_nondefault_sighash_warning; +} sign_psbt_state_t; /* BIP0341 tags for computing the tagged hashes when computing he sighash */ static const uint8_t BIP0341_sighash_tag[] = {'T', 'a', 'p', 'S', 'i', 'g', 'h', 'a', 's', 'h'}; @@ -105,66 +196,64 @@ the right paths to identify internal inputs/outputs. */ // HELPER FUNCTIONS - -// Updates the hash_context with the network serialization of all the outputs +// Updates the hash_context with the output of given index // returns -1 on error. 0 on success. -static int hash_outputs(dispatcher_context_t *dc, cx_hash_t *hash_context) { - sign_psbt_state_t *state = (sign_psbt_state_t *) &G_command_state; - - // TODO: support other SIGHASH FLAGS - for (unsigned int i = 0; i < state->n_outputs; i++) { - // get this output's map - merkleized_map_commitment_t ith_map; +static int hash_output_n(dispatcher_context_t *dc, + sign_psbt_state_t *st, + cx_hash_t *hash_context, + unsigned int index) { + if (index >= st->n_outputs) { + return -1; + } - int res = call_get_merkleized_map(dc, state->outputs_root, state->n_outputs, i, &ith_map); - if (res < 0) { - return -1; - } + // get this output's map + merkleized_map_commitment_t ith_map; - // get output's amount - uint8_t amount_raw[8]; - if (8 != call_get_merkleized_map_value(dc, - &ith_map, - (uint8_t[]){PSBT_OUT_AMOUNT}, - 1, - amount_raw, - 8)) { - return -1; - } + int res = call_get_merkleized_map(dc, st->outputs_root, st->n_outputs, index, &ith_map); + if (res < 0) { + return -1; + } - crypto_hash_update(hash_context, amount_raw, 8); + // get output's amount + uint8_t amount_raw[8]; + if (8 != call_get_merkleized_map_value(dc, + &ith_map, + (uint8_t[]){PSBT_OUT_AMOUNT}, + 1, + amount_raw, + 8)) { + return -1; + } - // get output's scriptPubKey + crypto_hash_update(hash_context, amount_raw, 8); - uint8_t out_script[MAX_OUTPUT_SCRIPTPUBKEY_LEN]; - int out_script_len = call_get_merkleized_map_value(dc, - &ith_map, - (uint8_t[]){PSBT_OUT_SCRIPT}, - 1, - out_script, - sizeof(out_script)); - if (out_script_len == -1) { - return -1; - } + // get output's scriptPubKey - crypto_hash_update_varint(hash_context, out_script_len); - crypto_hash_update(hash_context, out_script, out_script_len); + uint8_t out_script[MAX_OUTPUT_SCRIPTPUBKEY_LEN]; + int out_script_len = call_get_merkleized_map_value(dc, + &ith_map, + (uint8_t[]){PSBT_OUT_SCRIPT}, + 1, + out_script, + sizeof(out_script)); + if (out_script_len == -1) { + return -1; } + + crypto_hash_update_varint(hash_context, out_script_len); + crypto_hash_update(hash_context, out_script, out_script_len); return 0; } -static int get_segwit_version(const uint8_t scriptPubKey[], int scriptPubKey_len) { - if (scriptPubKey_len <= 1) { - return -1; - } - - if (scriptPubKey[0] == 0x00) { - return 0; - } else if (scriptPubKey[0] >= 0x51 && scriptPubKey[0] <= 0x60) { - return scriptPubKey[0] - 0x50; +// Updates the hash_context with the network serialization of all the outputs +// returns -1 on error. 0 on success. +static int hash_outputs(dispatcher_context_t *dc, sign_psbt_state_t *st, cx_hash_t *hash_context) { + for (unsigned int i = 0; i < st->n_outputs; i++) { + if (hash_output_n(dc, st, hash_context, i)) { + return -1; + } } - - return -1; + return 0; } /* @@ -174,7 +263,7 @@ static int get_segwit_version(const uint8_t scriptPubKey[], int scriptPubKey_len non-witness-utxo does not match the one pointed by expected_prevout_hash. Returns -1 on failure, 0 on success. */ -static int get_amount_scriptpubkey_from_psbt_nonwitness( +static int __attribute__((noinline)) get_amount_scriptpubkey_from_psbt_nonwitness( dispatcher_context_t *dc, const merkleized_map_commitment_t *input_map, uint64_t *amount, @@ -208,7 +297,7 @@ static int get_amount_scriptpubkey_from_psbt_nonwitness( return -1; } - // if expected_prevout_hash is give, check that it matches the txid obtained from the parser + // if expected_prevout_hash is given, check that it matches the txid obtained from the parser if (expected_prevout_hash != NULL && memcmp(parser_outputs.txid, expected_prevout_hash, 32) != 0) { PRINTF("Prevout hash did not match non-witness-utxo transaction hash\n"); @@ -217,12 +306,8 @@ static int get_amount_scriptpubkey_from_psbt_nonwitness( } *amount = parser_outputs.vout_value; - if (parser_outputs.vout_scriptpubkey_len <= MAX_PREVOUT_SCRIPTPUBKEY_LEN) { - *scriptPubKey_len = parser_outputs.vout_scriptpubkey_len; - memcpy(scriptPubKey, parser_outputs.vout_scriptpubkey, parser_outputs.vout_scriptpubkey_len); - } else { - return -1; - } + *scriptPubKey_len = parser_outputs.vout_scriptpubkey_len; + memcpy(scriptPubKey, parser_outputs.vout_scriptpubkey, parser_outputs.vout_scriptpubkey_len); return 0; } @@ -232,12 +317,12 @@ static int get_amount_scriptpubkey_from_psbt_nonwitness( a PSBTv2. Returns -1 on failure, 0 on success. */ -static int get_amount_scriptpubkey_from_psbt_witness( - dispatcher_context_t *dc, - const merkleized_map_commitment_t *input_map, - uint64_t *amount, - uint8_t scriptPubKey[static MAX_PREVOUT_SCRIPTPUBKEY_LEN], - size_t *scriptPubKey_len) { +static int __attribute__((noinline)) +get_amount_scriptpubkey_from_psbt_witness(dispatcher_context_t *dc, + const merkleized_map_commitment_t *input_map, + uint64_t *amount, + uint8_t scriptPubKey[static MAX_PREVOUT_SCRIPTPUBKEY_LEN], + size_t *scriptPubKey_len) { uint8_t raw_witnessUtxo[8 + 1 + MAX_PREVOUT_SCRIPTPUBKEY_LEN]; int wit_utxo_len = call_get_merkleized_map_value(dc, @@ -261,13 +346,8 @@ static int get_amount_scriptpubkey_from_psbt_witness( uint64_t wit_utxo_prevout_amount = read_u64_le(&raw_witnessUtxo[0], 0); *amount = wit_utxo_prevout_amount; - if (wit_utxo_scriptPubkey_len <= MAX_PREVOUT_SCRIPTPUBKEY_LEN) { - *scriptPubKey_len = wit_utxo_scriptPubkey_len; - memcpy(scriptPubKey, wit_utxo_scriptPubkey, wit_utxo_scriptPubkey_len); - } else { - return -1; - } - + *scriptPubKey_len = wit_utxo_scriptPubkey_len; + memcpy(scriptPubKey, wit_utxo_scriptPubkey, wit_utxo_scriptPubkey_len); return 0; } @@ -300,161 +380,181 @@ static int get_amount_scriptpubkey_from_psbt( NULL); } +// Convenience function to share common logic when processing all the +// PSBT_{IN|OUT}_{TAP}?_BIP32_DERIVATION fields. +static int read_change_and_index_from_psbt_bip32_derivation( + dispatcher_context_t *dc, + placeholder_info_t *placeholder_info, + in_out_info_t *in_out, + int psbt_key_type, + buffer_t *data, + const merkleized_map_commitment_t *map_commitment, + int index) { + uint8_t bip32_derivation_pubkey[33]; + + bool is_tap = psbt_key_type == PSBT_IN_TAP_BIP32_DERIVATION || + psbt_key_type == PSBT_OUT_TAP_BIP32_DERIVATION; + int key_len = is_tap ? 32 : 33; + + if (!buffer_read_bytes(data, + bip32_derivation_pubkey, + key_len) // read compressed pubkey or x-only pubkey + || buffer_can_read(data, 1) // ...but should not be able to read more + ) { + PRINTF("Unexpected pubkey length\n"); + in_out->unexpected_pubkey_error = true; + return -1; + } + + // get the corresponding value in the values Merkle tree, + // then fetch the bip32 path from the field + uint32_t fpt_der[1 + MAX_BIP32_PATH_STEPS]; + + int der_len = extract_bip32_derivation(dc, + psbt_key_type, + map_commitment->values_root, + map_commitment->size, + index, + fpt_der); + if (der_len < 0) { + PRINTF("Failed to read BIP32_DERIVATION\n"); + return -1; + } + + if (der_len < 2 || der_len > MAX_BIP32_PATH_STEPS) { + PRINTF("BIP32_DERIVATION path too long\n"); + return -1; + } + + // if this derivation path matches the internal placeholder, + // we use it to detect whether the current input is change or not, + // and store its address index + if (fpt_der[0] == placeholder_info->fingerprint && + der_len == placeholder_info->key_derivation_length + 2) { + for (int i = 0; i < placeholder_info->key_derivation_length; i++) { + if (placeholder_info->key_derivation[i] != fpt_der[1 + i]) { + return 0; + } + } + + uint32_t change = fpt_der[1 + der_len - 2]; + uint32_t addr_index = fpt_der[1 + der_len - 1]; + + // check that we can indeed derive the same key from the current placeholder + serialized_extended_pubkey_t pubkey; + if (0 > bip32_CKDpub(&placeholder_info->pubkey, change, &pubkey)) return -1; + if (0 > bip32_CKDpub(&pubkey, addr_index, &pubkey)) return -1; + + int pk_offset = is_tap ? 1 : 0; + if (memcmp(pubkey.compressed_pubkey + pk_offset, bip32_derivation_pubkey, key_len) != 0) { + return 0; + } + + // check if the 'change' derivation step is indeed coherent with placeholder + if (change == placeholder_info->placeholder.num_first) { + in_out->is_change = false; + in_out->address_index = addr_index; + } else if (change == placeholder_info->placeholder.num_second) { + in_out->is_change = true; + in_out->address_index = addr_index; + } else { + return 0; + } + + in_out->placeholder_found = true; + return 1; + } + return 0; +} + /** - * Validates the input, initializes the hash context and starts accumulating the wallet header in - * it. + * Verifies if a certain input/output is internal (that is, controlled by the wallet being used for + * signing). This uses the state of sign_psbt and is not meant as a general-purpose function; + * rather, it avoids some substantial code duplication and removes complexity from sign_psbt. + * + * @return 1 if the given input/output is internal; 0 if external; -1 on error. */ -void handler_sign_psbt(dispatcher_context_t *dc) { - sign_psbt_state_t *state = (sign_psbt_state_t *) &G_command_state; +static int is_in_out_internal(dispatcher_context_t *dispatcher_context, + const sign_psbt_state_t *state, + const in_out_info_t *in_out_info, + bool is_input) { + // If we did not find any info about the pubkey associated to the placeholder we're considering, + // then it's external + if (!in_out_info->placeholder_found) { + return 0; + } - // Device must be unlocked - if (os_global_pin_is_validated() != BOLOS_UX_OK) { - SEND_SW(dc, SW_SECURITY_STATUS_NOT_SATISFIED); - return; + if (!is_input && in_out_info->is_change != 1) { + // unlike for inputs, we only consider outputs internal if they are on the change path + return 0; } + return compare_wallet_script_at_path(dispatcher_context, + in_out_info->is_change, + in_out_info->address_index, + state->wallet_policy_map, + state->wallet_header_version, + state->wallet_header_keys_info_merkle_root, + state->wallet_header_n_keys, + in_out_info->scriptPubKey, + in_out_info->scriptPubKey_len); +} + +static bool __attribute__((noinline)) +init_global_state(dispatcher_context_t *dc, sign_psbt_state_t *st) { + LOG_PROCESSOR(__FILE__, __LINE__, __func__); + merkleized_map_commitment_t global_map; if (!buffer_read_varint(&dc->read_buffer, &global_map.size)) { SEND_SW(dc, SW_WRONG_DATA_LENGTH); - return; + return false; } if (!buffer_read_bytes(&dc->read_buffer, global_map.keys_root, 32) || !buffer_read_bytes(&dc->read_buffer, global_map.values_root, 32)) { - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); SEND_SW(dc, SW_WRONG_DATA_LENGTH); - return; + return false; } - uint64_t n_inputs; - if (!buffer_read_varint(&dc->read_buffer, &n_inputs) || - !buffer_read_bytes(&dc->read_buffer, state->inputs_root, 32)) { + // we already know n_inputs and n_outputs, so we skip reading from the global map + + uint64_t n_inputs_u64; + if (!buffer_read_varint(&dc->read_buffer, &n_inputs_u64) || + !buffer_read_bytes(&dc->read_buffer, st->inputs_root, 32)) { SEND_SW(dc, SW_WRONG_DATA_LENGTH); - return; + return false; } - if (n_inputs > MAX_N_INPUTS_CAN_SIGN) { - // TODO: remove this limitation + + if (n_inputs_u64 > MAX_N_INPUTS_CAN_SIGN) { PRINTF("At most %d inputs are supported\n", MAX_N_INPUTS_CAN_SIGN); SEND_SW(dc, SW_NOT_SUPPORTED); - return; + return false; } - state->n_inputs = (unsigned int) n_inputs; + st->n_inputs = (unsigned int) n_inputs_u64; - uint64_t n_outputs; - if (!buffer_read_varint(&dc->read_buffer, &n_outputs) || - !buffer_read_bytes(&dc->read_buffer, state->outputs_root, 32)) { + uint64_t n_outputs_u64; + if (!buffer_read_varint(&dc->read_buffer, &n_outputs_u64) || + !buffer_read_bytes(&dc->read_buffer, st->outputs_root, 32)) { SEND_SW(dc, SW_WRONG_DATA_LENGTH); - return; + return false; } - state->n_outputs = (unsigned int) n_outputs; + st->n_outputs = (unsigned int) n_outputs_u64; + + policy_map_wallet_header_t wallet_header; - uint8_t wallet_id[32]; uint8_t wallet_hmac[32]; + uint8_t wallet_id[32]; if (!buffer_read_bytes(&dc->read_buffer, wallet_id, 32) || !buffer_read_bytes(&dc->read_buffer, wallet_hmac, 32)) { SEND_SW(dc, SW_WRONG_DATA_LENGTH); - return; - } - - // Fetch the serialized wallet policy from the client - uint8_t serialized_wallet_policy[MAX_POLICY_MAP_SERIALIZED_LENGTH]; - int serialized_wallet_policy_len = call_get_preimage(dc, - wallet_id, - serialized_wallet_policy, - sizeof(serialized_wallet_policy)); - if (serialized_wallet_policy_len < 0) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - policy_map_wallet_header_t wallet_header; - buffer_t serialized_wallet_policy_buf = - buffer_create(serialized_wallet_policy, serialized_wallet_policy_len); - if ((read_policy_map_wallet(&serialized_wallet_policy_buf, &wallet_header)) < 0) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - memcpy(state->wallet_header_keys_info_merkle_root, - wallet_header.keys_info_merkle_root, - sizeof(state->wallet_header_keys_info_merkle_root)); - state->wallet_header_n_keys = wallet_header.n_keys; - - buffer_t policy_map_buffer = - buffer_create(&wallet_header.policy_map, wallet_header.policy_map_len); - - if (parse_policy_map(&policy_map_buffer, - state->wallet_policy_map_bytes, - sizeof(state->wallet_policy_map_bytes), - BIP32_PUBKEY_VERSION, - BIP32_PRIVKEY_VERSION) < 0) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - uint8_t hmac_or = - 0; // the binary OR of all the hmac bytes (so == 0 iff the hmac is identically 0) - for (int i = 0; i < 32; i++) { - hmac_or = hmac_or | wallet_hmac[i]; - } - if (hmac_or == 0) { - // No hmac, verify that the policy is a canonical one that is allowed by default - - if (state->wallet_header_n_keys != 1) { - PRINTF("Non-standard policy, it should only have 1 key\n"); - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - state->address_type = get_policy_address_type(&state->wallet_policy_map); - if (state->address_type == -1) { - PRINTF("Non-standard policy, and no hmac provided\n"); - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - state->is_wallet_canonical = true; - - // Based on the address type, we set the expected bip44 purpose for this canonical wallet - state->bip44_purpose = get_bip44_purpose(state->address_type); - if (state->bip44_purpose < 0) { - SEND_SW(dc, SW_BAD_STATE); - return; - } - - // We do not check here that the purpose field, coin_type and account (first three step of - // the bip44 derivation) are standard. Will check at signing time that the path is valid. - } else { - // Verify hmac - - if (!check_wallet_hmac(wallet_id, wallet_hmac)) { - PRINTF("Incorrect hmac\n"); - SEND_SW(dc, SW_SIGNATURE_FAIL); - return; - } - - state->is_wallet_canonical = false; - } - - // Swap feature: check that wallet is canonical - if (G_swap_state.called_from_swap && !state->is_wallet_canonical) { - PRINTF("Must be a canonical wallet for swap feature\n"); - SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } - state->inputs_total_value = 0; - state->internal_inputs_total_value = 0; - memset(state->internal_inputs, 0, sizeof(state->internal_inputs)); - - state->master_key_fingerprint = crypto_get_master_key_fingerprint(); - - // process global map - { + { // process global map // Check integrity of the global map if (call_check_merkle_tree_sorted(dc, global_map.keys_root, (size_t) global_map.size) < 0) { SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } uint8_t raw_result[9]; // max size for a varint @@ -469,9 +569,9 @@ void handler_sign_psbt(dispatcher_context_t *dc) { sizeof(raw_result)); if (result_len != 4) { SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } - state->tx_version = read_u32_le(raw_result, 0); + st->tx_version = read_u32_le(raw_result, 0); // Read fallback locktime. // Unlike BIP-0370 recommendation, we use the fallback locktime as-is, ignoring each input's @@ -484,785 +584,841 @@ void handler_sign_psbt(dispatcher_context_t *dc) { raw_result, sizeof(raw_result)); if (result_len == -1) { - state->locktime = 0; + st->locktime = 0; } else if (result_len != 4) { SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } else { - state->locktime = read_u32_le(raw_result, 0); + st->locktime = read_u32_le(raw_result, 0); } - - // we already know n_inputs and n_outputs, so we skip reading from the global map } - state->cur_input_index = 0; - - if (state->is_wallet_canonical) { - // Canonical wallet, we start processing the psbt directly - dc->next(process_input_map); - } else { - // Show screen to authorize spend from a registered wallet - ui_authorize_wallet_spend(dc, wallet_header.name, process_input_map); + uint8_t hmac_or = + 0; // the binary OR of all the hmac bytes (so == 0 iff the hmac is identically 0) + for (int i = 0; i < 32; i++) { + hmac_or = hmac_or | wallet_hmac[i]; } -} - -/** Inputs verification flow - * - * Go though all the inputs: - * - verify the non_witness_utxo - * - compute value spent - * - detect internal inputs that should be signed, and external inputs that shouldn't - */ -/** - * Callback to process all the keys of the current input map. - * Keeps track if the current input has a witness_utxo and/or a redeemScript. - */ -static void input_keys_callback(sign_psbt_state_t *state, buffer_t *data) { - size_t data_len = data->size - data->offset; - if (data_len >= 1) { - uint8_t key_type; - buffer_read_u8(data, &key_type); - if (key_type == PSBT_IN_WITNESS_UTXO) { - state->cur.input.has_witnessUtxo = true; - } else if (key_type == PSBT_IN_NON_WITNESS_UTXO) { - state->cur.input.has_nonWitnessUtxo = true; - } else if (key_type == PSBT_IN_REDEEM_SCRIPT) { - state->cur.input.has_redeemScript = true; - } else if (key_type == PSBT_IN_SIGHASH_TYPE) { - state->cur.input.has_sighash_type = true; - } else if ((key_type == PSBT_IN_BIP32_DERIVATION || - key_type == PSBT_IN_TAP_BIP32_DERIVATION) && - !state->cur.in_out.has_bip32_derivation) { - // The first time that we encounter a PSBT_IN_BIP32_DERIVATION or - // PSBT_IN_TAP_BIP32_DERIVATION (handled below) key, we store the pubkey. Since we only - // use this to identify the change and address_index, it does not matter which of the - // keys we use here (if there are multiple), as per the assumptions above. - state->cur.in_out.has_bip32_derivation = true; - - // x-only pubkeys for taproot, normal compressed pubkeys otherwise - size_t key_len = (key_type == PSBT_IN_TAP_BIP32_DERIVATION ? 32 : 33); - - if (!buffer_read_bytes(data, - state->cur.in_out.bip32_derivation_pubkey, - key_len) // read compressed pubkey or x-only pubkey - || buffer_can_read(data, 1) // ...but should not be able to read more - ) { - state->cur.in_out.unexpected_pubkey_error = true; - } + if (hmac_or != 0) { + // Verify hmac + if (!check_wallet_hmac(wallet_id, wallet_hmac)) { + PRINTF("Incorrect hmac\n"); + SEND_SW(dc, SW_SIGNATURE_FAIL); + return false; } - } -} - -static void process_input_map(dispatcher_context_t *dc) { - sign_psbt_state_t *state = (sign_psbt_state_t *) &G_command_state; - - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); - - if (state->cur_input_index >= state->n_inputs) { - // all inputs already processed - dc->next(alert_external_inputs); - return; - } - - // Reset cur struct - memset(&state->cur, 0, sizeof(state->cur)); - - int res = call_get_merkleized_map_with_callback( - dc, - state->inputs_root, - state->n_inputs, - state->cur_input_index, - make_callback(state, (dispatcher_callback_t) input_keys_callback), - &state->cur.in_out.map); - if (res < 0) { - PRINTF("Failed to process input map\n"); - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - if (state->cur.in_out.unexpected_pubkey_error) { - PRINTF("Unexpected pubkey length\n"); // only compressed pubkeys are supported - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - // either witness utxo or non-witness utxo (or both) must be present. - if (!state->cur.input.has_nonWitnessUtxo && !state->cur.input.has_witnessUtxo) { - PRINTF("No witness utxo nor non-witness utxo present in input.\n"); - SEND_SW(dc, SW_INCORRECT_DATA); - return; + st->is_wallet_default = false; + } else { + st->is_wallet_default = true; } - // validate non-witness utxo (if present) and witness utxo (if present) - - if (state->cur.input.has_nonWitnessUtxo) { - uint8_t prevout_hash[32]; - - // check if the prevout_hash of the transaction matches the computed one from the - // non-witness utxo - if (0 > call_get_merkleized_map_value(dc, - &state->cur.in_out.map, - (uint8_t[]){PSBT_IN_PREVIOUS_TXID}, - 1, - prevout_hash, - sizeof(prevout_hash))) { + { + // Fetch the serialized wallet policy from the client + uint8_t serialized_wallet_policy[MAX_WALLET_POLICY_SERIALIZED_LENGTH]; + int serialized_wallet_policy_len = call_get_preimage(dc, + wallet_id, + serialized_wallet_policy, + sizeof(serialized_wallet_policy)); + if (serialized_wallet_policy_len < 0) { SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } - // request non-witness utxo, and get the prevout's value and scriptpubkey - if (0 > get_amount_scriptpubkey_from_psbt_nonwitness(dc, - &state->cur.in_out.map, - &state->cur.input.prevout_amount, - state->cur.in_out.scriptPubKey, - &state->cur.in_out.scriptPubKey_len, - prevout_hash)) { + buffer_t serialized_wallet_policy_buf = + buffer_create(serialized_wallet_policy, serialized_wallet_policy_len); + + uint8_t policy_map_descriptor[MAX_DESCRIPTOR_TEMPLATE_LENGTH]; +#ifdef USE_NVRAM_STASH + // we need a temporary array to store the parsed policy in RAM before + // storing it in the NVRAM stash + uint8_t wallet_policy_map_bytes[MAX_WALLET_POLICY_BYTES]; +#else + uint8_t *wallet_policy_map_bytes = st->wallet_policy_map_bytes; +#endif + + int desc_temp_len = read_and_parse_wallet_policy(dc, + &serialized_wallet_policy_buf, + &wallet_header, + policy_map_descriptor, + wallet_policy_map_bytes, + MAX_WALLET_POLICY_BYTES); + if (desc_temp_len < 0) { + PRINTF("Failed to read or parse wallet policy"); SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } - state->inputs_total_value += state->cur.input.prevout_amount; - } - - if (state->cur.input.has_witnessUtxo) { - size_t wit_utxo_scriptPubkey_len; - uint8_t wit_utxo_scriptPubkey[MAX_PREVOUT_SCRIPTPUBKEY_LEN]; - uint64_t wit_utxo_prevout_amount; - - if (0 > get_amount_scriptpubkey_from_psbt_witness(dc, - &state->cur.in_out.map, - &wit_utxo_prevout_amount, - wit_utxo_scriptPubkey, - &wit_utxo_scriptPubkey_len)) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - }; - - if (state->cur.input.has_nonWitnessUtxo) { - // we already know the scriptPubKey, but we double check that it matches - if (state->cur.in_out.scriptPubKey_len != wit_utxo_scriptPubkey_len || - wit_utxo_scriptPubkey_len > sizeof(state->cur.in_out.scriptPubKey) || - memcmp(state->cur.in_out.scriptPubKey, - wit_utxo_scriptPubkey, - wit_utxo_scriptPubkey_len) != 0 || - state->cur.input.prevout_amount != wit_utxo_prevout_amount) { - PRINTF( - "scriptPubKey or amount in non-witness utxo doesn't match with witness utxo\n"); +#ifdef USE_NVRAM_STASH + nvm_write((void *) N_nvram_stash.wallet_policy_bytes, + (void *) wallet_policy_map_bytes, + desc_temp_len); + st->wallet_policy_map = (policy_node_t *) N_nvram_stash.wallet_policy_bytes; +#else + st->wallet_policy_map = (policy_node_t *) st->wallet_policy_map_bytes; +#endif + + st->wallet_header_version = wallet_header.version; + memcpy(st->wallet_header_keys_info_merkle_root, + wallet_header.keys_info_merkle_root, + sizeof(wallet_header.keys_info_merkle_root)); + st->wallet_header_n_keys = wallet_header.n_keys; + + if (st->is_wallet_default) { + // No hmac, verify that the policy is indeed a default one + if (!is_wallet_policy_standard(dc, &wallet_header, st->wallet_policy_map)) { + PRINTF("Non-standard policy, and no hmac provided\n"); SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } - } else { - // we extract the scriptPubKey and prevout amount from the witness utxo - state->inputs_total_value += wit_utxo_prevout_amount; - - state->cur.input.prevout_amount = wit_utxo_prevout_amount; - if (wit_utxo_scriptPubkey_len <= sizeof(state->cur.in_out.scriptPubKey)) { - state->cur.in_out.scriptPubKey_len = wit_utxo_scriptPubkey_len; - memcpy(state->cur.in_out.scriptPubKey, - wit_utxo_scriptPubkey, - wit_utxo_scriptPubkey_len); - } else { + + if (wallet_header.name_len != 0) { + PRINTF("Name must be zero-length for a standard wallet policy\n"); SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } + + // unlike in get_wallet_address, we do not check if the address_index is small: + // if funds were already sent there, there is no point in preventing to spend them. } } - dc->next(check_input_owned); -} - -static void check_input_owned(dispatcher_context_t *dc) { - sign_psbt_state_t *state = (sign_psbt_state_t *) &G_command_state; + // Swap feature: check that wallet policy is a default one + if (G_swap_state.called_from_swap && !st->is_wallet_default) { + PRINTF("Must be a default wallet policy for swap feature\n"); + SEND_SW(dc, SW_FAIL_SWAP); + finalize_exchange_sign_transaction(false); + } - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); + // If it's not a default wallet policy, ask the user for confirmation, and abort if they deny + if (!st->is_wallet_default && !ui_authorize_wallet_spend(dc, wallet_header.name)) { + SEND_SW(dc, SW_DENY); + ui_post_processing_confirm_wallet_spend(dc, false); + return false; + } - int is_internal = is_in_out_internal(dc, - state, - &state->cur.in_out, - true, - state->cur.in_out.has_bip32_derivation); + st->master_key_fingerprint = crypto_get_master_key_fingerprint(); - if (is_internal < 0) { - PRINTF("Error checking if input %d is internal\n", state->cur_input_index); - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } else if (is_internal == 0) { - PRINTF("INPUT %d is external\n", state->cur_input_index); - } else { - bitvector_set(state->internal_inputs, state->cur_input_index, 1); - state->internal_inputs_total_value += state->cur.input.prevout_amount; + if (!st->is_wallet_default) { + ui_post_processing_confirm_wallet_spend(dc, true); + } + return true; +} - int segwit_version = - get_segwit_version(state->cur.in_out.scriptPubKey, state->cur.in_out.scriptPubKey_len); +static bool __attribute__((noinline)) +fill_placeholder_info_if_internal(dispatcher_context_t *dc, + sign_psbt_state_t *st, + placeholder_info_t *placeholder_info) { + policy_map_key_info_t key_info; + { + uint8_t key_info_str[MAX_POLICY_KEY_INFO_LEN]; + int key_info_len = call_get_merkle_leaf_element(dc, + st->wallet_header_keys_info_merkle_root, + st->wallet_header_n_keys, + placeholder_info->placeholder.key_index, + key_info_str, + sizeof(key_info_str)); - // For legacy or segwit-v0 inputs, the non-witness utxo must be present - if ((segwit_version == -1 || segwit_version == 0) && !state->cur.input.has_nonWitnessUtxo) { - PRINTF("Non-witness utxo missing for legacy or segwitv0 input\n"); - SEND_SW(dc, SW_INCORRECT_DATA); - return; + if (key_info_len < 0) { + SEND_SW(dc, SW_BAD_STATE); // should never happen + return false; } - // For all segwit transactions, the witness utxo must be present - if (segwit_version >= 0 && !state->cur.input.has_witnessUtxo) { - PRINTF("Witness utxo missing for segwit input\n"); - SEND_SW(dc, SW_INCORRECT_DATA); - return; + // Make a sub-buffer for the pubkey info + buffer_t key_info_buffer = buffer_create(key_info_str, key_info_len); + + if (parse_policy_map_key_info(&key_info_buffer, &key_info, st->wallet_header_version) == + -1) { + SEND_SW(dc, SW_BAD_STATE); // should never happen + return false; } } - ++state->cur_input_index; - dc->next(process_input_map); -} - -// If there are external inputs, it is unsafe to sign, therefore we warn the user -static void alert_external_inputs(dispatcher_context_t *dc) { - sign_psbt_state_t *state = (sign_psbt_state_t *) &G_command_state; + uint32_t fpr = read_u32_be(key_info.master_key_fingerprint, 0); + if (fpr != st->master_key_fingerprint) { + return false; + } - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); + { + // it could be a collision on the fingerprint; we verify that we can actually generate + // the same pubkey + if (0 > get_extended_pubkey_at_path(key_info.master_key_derivation, + key_info.master_key_derivation_len, + BIP32_PUBKEY_VERSION, + &placeholder_info->pubkey)) { + SEND_SW(dc, SW_BAD_STATE); + return false; + } - size_t count_external_inputs = 0; - for (unsigned int i = 0; i < state->n_inputs; i++) { - if (!bitvector_get(state->internal_inputs, i)) { - ++count_external_inputs; + if (memcmp(&key_info.ext_pubkey, + &placeholder_info->pubkey, + sizeof(placeholder_info->pubkey)) != 0) { + return false; } - } - if (count_external_inputs == 0) { - // no external inputs - dc->next(verify_outputs_init); - } else if (count_external_inputs == state->n_inputs) { - // no internal inputs, nothing to sign - PRINTF("No internal inputs. Aborting\n"); - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } else { - // Swap feature: no external inputs allowed - if (G_swap_state.called_from_swap) { - PRINTF("External inputs not allowed in swap transactions\n"); - SEND_SW(dc, SW_INCORRECT_DATA); - return; + placeholder_info->key_derivation_length = key_info.master_key_derivation_len; + for (int i = 0; i < key_info.master_key_derivation_len; i++) { + placeholder_info->key_derivation[i] = key_info.master_key_derivation[i]; } - // some internal and some external inputs, warn the user first - ui_warn_external_inputs(dc, verify_outputs_init); + placeholder_info->fingerprint = read_u32_be(key_info.master_key_fingerprint, 0); } -} -/** OUTPUTS VERIFICATION FLOW - * - * For each output, check if it's a change address. - * Show each output that is not a change address to the user for verification. - */ + return true; +} -// entry point for the outputs verification flow -static void verify_outputs_init(dispatcher_context_t *dc) { - sign_psbt_state_t *state = (sign_psbt_state_t *) &G_command_state; +// finds the first placeholder that corresponds to an internal key +static bool find_first_internal_key_placeholder(dispatcher_context_t *dc, + sign_psbt_state_t *st, + placeholder_info_t *placeholder_info) { + placeholder_info->cur_index = 0; - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); + // find and parse our registered key info in the wallet + while (true) { + int n_key_placeholders = get_key_placeholder_by_index(st->wallet_policy_map, + placeholder_info->cur_index, + NULL, + &placeholder_info->placeholder); + if (n_key_placeholders < 0) { + SEND_SW(dc, SW_BAD_STATE); // should never happen + return false; + } - state->outputs_total_value = 0; - state->change_outputs_total_value = 0; - state->change_count = 0; + if (placeholder_info->cur_index >= n_key_placeholders) { + // all keys have been processed + break; + } - state->cur_output_index = 0; + if (fill_placeholder_info_if_internal(dc, st, placeholder_info)) { + return true; + } - state->external_outputs_count = 0; + // Not an internal key, move on + ++placeholder_info->cur_index; + } - dc->next(process_output_map); + PRINTF("No internal key found in wallet policy"); + SEND_SW(dc, SW_INCORRECT_DATA); + return false; } +typedef struct { + placeholder_info_t *placeholder_info; + input_info_t *input; +} input_keys_callback_data_t; + /** * Callback to process all the keys of the current input map. * Keeps track if the current input has a witness_utxo and/or a redeemScript. */ -static void output_keys_callback(sign_psbt_state_t *state, buffer_t *data) { +static void input_keys_callback(dispatcher_context_t *dc, + input_keys_callback_data_t *callback_data, + const merkleized_map_commitment_t *map_commitment, + int i, + buffer_t *data) { size_t data_len = data->size - data->offset; if (data_len >= 1) { uint8_t key_type; buffer_read_u8(data, &key_type); - - if ((key_type == PSBT_OUT_BIP32_DERIVATION || key_type == PSBT_OUT_TAP_BIP32_DERIVATION) && - !state->cur.in_out.has_bip32_derivation) { - // The first time that we encounter a PSBT_OUT_BIP32_DERIVATION or - // PSBT_OUT_TAP_BIP32_DERIVATION key, we store the pubkey. - state->cur.in_out.has_bip32_derivation = true; - - // x-only pubkeys for taproot, normal compressed pubkeys otherwise - size_t key_len = (key_type == PSBT_OUT_TAP_BIP32_DERIVATION ? 32 : 33); - - if (!buffer_read_bytes(data, - state->cur.in_out.bip32_derivation_pubkey, - key_len) // read compressed pubkey or x-only pubkey - || buffer_can_read(data, 1) // ...but should not be able to read more - ) { - state->cur.in_out.unexpected_pubkey_error = true; + if (key_type == PSBT_IN_WITNESS_UTXO) { + callback_data->input->has_witnessUtxo = true; + } else if (key_type == PSBT_IN_NON_WITNESS_UTXO) { + callback_data->input->has_nonWitnessUtxo = true; + } else if (key_type == PSBT_IN_REDEEM_SCRIPT) { + callback_data->input->has_redeemScript = true; + } else if (key_type == PSBT_IN_SIGHASH_TYPE) { + callback_data->input->has_sighash_type = true; + } else if ((key_type == PSBT_IN_BIP32_DERIVATION || + key_type == PSBT_IN_TAP_BIP32_DERIVATION) && + !callback_data->input->in_out.placeholder_found) { + if (0 > + read_change_and_index_from_psbt_bip32_derivation(dc, + callback_data->placeholder_info, + &callback_data->input->in_out, + key_type, + data, + map_commitment, + i)) { + callback_data->input->in_out.unexpected_pubkey_error = true; } } } } -static void process_output_map(dispatcher_context_t *dc) { - sign_psbt_state_t *state = (sign_psbt_state_t *) &G_command_state; +static bool __attribute__((noinline)) +preprocess_inputs(dispatcher_context_t *dc, + sign_psbt_state_t *st, + uint8_t internal_inputs[static BITVECTOR_REAL_SIZE(MAX_N_INPUTS_CAN_SIGN)]) { + LOG_PROCESSOR(__FILE__, __LINE__, __func__); - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); + memset(internal_inputs, 0, BITVECTOR_REAL_SIZE(MAX_N_INPUTS_CAN_SIGN)); - if (state->cur_output_index >= state->n_outputs) { - // all outputs already processed - dc->next(confirm_transaction); - return; - } + placeholder_info_t placeholder_info; + memset(&placeholder_info, 0, sizeof(placeholder_info)); - // Reset cur struct - memset(&state->cur, 0, sizeof(state->cur)); + if (!find_first_internal_key_placeholder(dc, st, &placeholder_info)) return false; - int res = call_get_merkleized_map_with_callback( - dc, - state->outputs_root, - state->n_outputs, - state->cur_output_index, - make_callback(state, (dispatcher_callback_t) output_keys_callback), - &state->cur.in_out.map); - if (res < 0) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } + // process each input + for (unsigned int cur_input_index = 0; cur_input_index < st->n_inputs; cur_input_index++) { + input_info_t input; + memset(&input, 0, sizeof(input)); - if (state->cur.in_out.unexpected_pubkey_error) { - PRINTF("Unexpected pubkey length\n"); // only compressed pubkeys are supported - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } + input_keys_callback_data_t callback_data = {.input = &input, + .placeholder_info = &placeholder_info}; + int res = call_get_merkleized_map_with_callback( + dc, + (void *) &callback_data, + st->inputs_root, + st->n_inputs, + cur_input_index, + (merkle_tree_elements_callback_t) input_keys_callback, + &input.in_out.map); + if (res < 0) { + PRINTF("Failed to process input map\n"); + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } - // read output amount and scriptpubkey + if (input.in_out.unexpected_pubkey_error) { + PRINTF("Unexpected pubkey length\n"); // only compressed pubkeys are supported + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } - uint8_t raw_result[8]; + // either witness utxo or non-witness utxo (or both) must be present. + if (!input.has_nonWitnessUtxo && !input.has_witnessUtxo) { + PRINTF("No witness utxo nor non-witness utxo present in input.\n"); + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } - // Read the output's amount - int result_len = call_get_merkleized_map_value(dc, - &state->cur.in_out.map, - (uint8_t[]){PSBT_OUT_AMOUNT}, - 1, - raw_result, - sizeof(raw_result)); - if (result_len != 8) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - uint64_t value = read_u64_le(raw_result, 0); + // validate non-witness utxo (if present) and witness utxo (if present) - state->cur.output.value = value; - state->outputs_total_value += value; + if (input.has_nonWitnessUtxo) { + uint8_t prevout_hash[32]; - // Read the output's scriptPubKey - result_len = call_get_merkleized_map_value(dc, - &state->cur.in_out.map, - (uint8_t[]){PSBT_OUT_SCRIPT}, - 1, - state->cur.in_out.scriptPubKey, - sizeof(state->cur.in_out.scriptPubKey)); + // check if the prevout_hash of the transaction matches the computed one from the + // non-witness utxo + if (0 > call_get_merkleized_map_value(dc, + &input.in_out.map, + (uint8_t[]){PSBT_IN_PREVIOUS_TXID}, + 1, + prevout_hash, + sizeof(prevout_hash))) { + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } - if (result_len == -1 || result_len > (int) sizeof(state->cur.in_out.scriptPubKey)) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } + // request non-witness utxo, and get the prevout's value and scriptpubkey + if (0 > get_amount_scriptpubkey_from_psbt_nonwitness(dc, + &input.in_out.map, + &input.prevout_amount, + input.in_out.scriptPubKey, + &input.in_out.scriptPubKey_len, + prevout_hash)) { + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } - state->cur.in_out.scriptPubKey_len = result_len; + st->inputs_total_amount += input.prevout_amount; + } - dc->next(check_output_owned); -} + if (input.has_witnessUtxo) { + size_t wit_utxo_scriptPubkey_len; + uint8_t wit_utxo_scriptPubkey[MAX_PREVOUT_SCRIPTPUBKEY_LEN]; + uint64_t wit_utxo_prevout_amount; -static void check_output_owned(dispatcher_context_t *dc) { - sign_psbt_state_t *state = (sign_psbt_state_t *) &G_command_state; + if (0 > get_amount_scriptpubkey_from_psbt_witness(dc, + &input.in_out.map, + &wit_utxo_prevout_amount, + wit_utxo_scriptPubkey, + &wit_utxo_scriptPubkey_len)) { + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + }; + + if (input.has_nonWitnessUtxo) { + // we already know the scriptPubKey, but we double check that it matches + if (input.in_out.scriptPubKey_len != wit_utxo_scriptPubkey_len || + memcmp(input.in_out.scriptPubKey, + wit_utxo_scriptPubkey, + wit_utxo_scriptPubkey_len) != 0 || + input.prevout_amount != wit_utxo_prevout_amount) { + PRINTF( + "scriptPubKey or amount in non-witness utxo doesn't match with witness " + "utxo\n"); + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } + } else { + // we extract the scriptPubKey and prevout amount from the witness utxo + st->inputs_total_amount += wit_utxo_prevout_amount; - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); + input.prevout_amount = wit_utxo_prevout_amount; + input.in_out.scriptPubKey_len = wit_utxo_scriptPubkey_len; + memcpy(input.in_out.scriptPubKey, wit_utxo_scriptPubkey, wit_utxo_scriptPubkey_len); + } + } - int is_internal = is_in_out_internal(dc, - state, - &state->cur.in_out, - false, - state->cur.in_out.has_bip32_derivation); + // check if the input is internal; if not, continue - if (is_internal < 0) { - PRINTF("Error checking if output %d is internal\n", state->cur_output_index); - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } else if (is_internal == 0) { - // external output, user needs to validate - ++state->external_outputs_count; + int is_internal = is_in_out_internal(dc, st, &input.in_out, true); + if (is_internal < 0) { + PRINTF("Error checking if input %d is internal\n", cur_input_index); + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } else if (is_internal == 0) { + PRINTF("INPUT %d is external\n", cur_input_index); + continue; + } - dc->next(output_validate_external); - return; - } else { - // valid change address, nothing to show to the user + bitvector_set(internal_inputs, cur_input_index, 1); + + int segwit_version = get_policy_segwit_version(st->wallet_policy_map); + + // For legacy inputs, the non-witness utxo must be present + // and the witness utxo must be absent. + // (This assumption is later relied on when signing). + if (segwit_version == -1) { + if (!input.has_nonWitnessUtxo || input.has_witnessUtxo) { + PRINTF("Legacy inputs must have the non-witness utxo, but no witness utxo.\n"); + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } + } + + // For segwitv0 inputs, the non-witness utxo _should_ be present; we show a warning + // to the user otherwise, but we continue nonetheless on approval + if (segwit_version == 0 && !input.has_nonWitnessUtxo) { + PRINTF("Non-witness utxo missing for segwitv0 input. Will show a warning.\n"); + st->show_missing_nonwitnessutxo_warning = true; + } + + // For all segwit transactions, the witness utxo must be present + if (segwit_version >= 0 && !input.has_witnessUtxo) { + PRINTF("Witness utxo missing for segwit input\n"); + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } + + // If any of the internal inputs has a sighash type that is not SIGHASH_DEFAULT or + // SIGHASH_ALL, we show a warning + + if (!input.has_sighash_type) { + continue; + } + + // get the sighash_type + if (4 != call_get_merkleized_map_value_u32_le(dc, + &input.in_out.map, + (uint8_t[]){PSBT_IN_SIGHASH_TYPE}, + 1, + &input.sighash_type)) { + PRINTF("Malformed PSBT_IN_SIGHASH_TYPE for input %d\n", cur_input_index); + + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } + + if (((segwit_version > 0) && (input.sighash_type == SIGHASH_DEFAULT)) || + (input.sighash_type == SIGHASH_ALL)) { + PRINTF("Sighash type is SIGHASH_DEFAULT or SIGHASH_ALL\n"); + + } else if ((segwit_version >= 0) && + ((input.sighash_type == SIGHASH_NONE) || + (input.sighash_type == SIGHASH_SINGLE) || + (input.sighash_type == (SIGHASH_ANYONECANPAY | SIGHASH_ALL)) || + (input.sighash_type == (SIGHASH_ANYONECANPAY | SIGHASH_NONE)) || + (input.sighash_type == (SIGHASH_ANYONECANPAY | SIGHASH_SINGLE)))) { + PRINTF("Sighash type is non-default, will show a warning.\n"); + st->show_nondefault_sighash_warning = true; + } else { + PRINTF("Unsupported sighash\n"); + SEND_SW(dc, SW_NOT_SUPPORTED); + return false; + } + + if (((input.sighash_type & SIGHASH_SINGLE) == SIGHASH_SINGLE) && + (cur_input_index >= st->n_outputs)) { + PRINTF("SIGHASH_SINGLE with input idx >= n_output is not allowed \n"); + SEND_SW(dc, SW_NOT_SUPPORTED); + return false; + } + } + + return true; +} + +static bool __attribute__((noinline)) +show_alerts(dispatcher_context_t *dc, + sign_psbt_state_t *st, + const uint8_t internal_inputs[static BITVECTOR_REAL_SIZE(MAX_N_INPUTS_CAN_SIGN)]) { + LOG_PROCESSOR(__FILE__, __LINE__, __func__); + + size_t count_external_inputs = 0; + for (unsigned int i = 0; i < st->n_inputs; i++) { + if (!bitvector_get(internal_inputs, i)) { + ++count_external_inputs; + } + } + + // If there are external inputs, it is unsafe to sign, therefore we warn the user + if (count_external_inputs > 0) { + if (count_external_inputs == st->n_inputs) { + // no internal inputs, nothing to sign + PRINTF("No internal inputs. Aborting\n"); + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } else { + // Swap feature: no external inputs allowed + if (G_swap_state.called_from_swap) { + PRINTF("External inputs not allowed in swap transactions\n"); + SEND_SW(dc, SW_FAIL_SWAP); + finalize_exchange_sign_transaction(false); + } + + // some internal and some external inputs, warn the user first + if (!ui_warn_external_inputs(dc)) { + SEND_SW(dc, SW_DENY); + return false; + } + } + } - state->change_outputs_total_value += state->cur.output.value; - ++state->change_count; + // If any segwitv0 input is missing the non-witness-utxo, we warn the user and ask for + // confirmation + if (st->show_missing_nonwitnessutxo_warning && !ui_warn_unverified_segwit_inputs(dc)) { + SEND_SW(dc, SW_DENY); + return false; + } - dc->next(output_next); - return; + // If any input has non-default sighash, we warn the user + if (st->show_nondefault_sighash_warning && !ui_warn_nondefault_sighash(dc)) { + SEND_SW(dc, SW_DENY); + return false; } + + return true; } -static void output_validate_external(dispatcher_context_t *dc) { - sign_psbt_state_t *state = (sign_psbt_state_t *) &G_command_state; +typedef struct { + placeholder_info_t *placeholder_info; + output_info_t *output; +} output_keys_callback_data_t; - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); +/** + * Callback to process all the keys of the current input map. + * Keeps track if the current input has a witness_utxo and/or a redeemScript. + */ +static void output_keys_callback(dispatcher_context_t *dc, + output_keys_callback_data_t *callback_data, + const merkleized_map_commitment_t *map_commitment, + int i, + buffer_t *data) { + size_t data_len = data->size - data->offset; + if (data_len >= 1) { + uint8_t key_type; + buffer_read_u8(data, &key_type); + + if ((key_type == PSBT_OUT_BIP32_DERIVATION || key_type == PSBT_OUT_TAP_BIP32_DERIVATION) && + !callback_data->output->in_out.placeholder_found) { + if (0 > + read_change_and_index_from_psbt_bip32_derivation(dc, + callback_data->placeholder_info, + &callback_data->output->in_out, + key_type, + data, + map_commitment, + i)) { + callback_data->output->in_out.unexpected_pubkey_error = true; + } + } + } +} + +static bool __attribute__((noinline)) display_output(dispatcher_context_t *dc, + sign_psbt_state_t *st, + int cur_output_index, + int external_outputs_count, + const output_info_t *output) { + (void) cur_output_index; // show this output's address char output_address[MAX(MAX_ADDRESS_LENGTH_STR + 1, MAX_OPRETURN_OUTPUT_DESC_SIZE)]; - int address_len = get_script_address(state->cur.in_out.scriptPubKey, - state->cur.in_out.scriptPubKey_len, + int address_len = get_script_address(output->in_out.scriptPubKey, + output->in_out.scriptPubKey_len, output_address, sizeof(output_address)); if (address_len < 0) { // script does not have an address; check if OP_RETURN - if (is_opreturn(state->cur.in_out.scriptPubKey, state->cur.in_out.scriptPubKey_len)) { - int res = format_opscript_script(state->cur.in_out.scriptPubKey, - state->cur.in_out.scriptPubKey_len, + if (is_opreturn(output->in_out.scriptPubKey, output->in_out.scriptPubKey_len)) { + int res = format_opscript_script(output->in_out.scriptPubKey, + output->in_out.scriptPubKey_len, output_address); if (res == -1) { - PRINTF("Invalid or unsupported OP_RETURN for output %d\n", state->cur_output_index); + PRINTF("Invalid or unsupported OP_RETURN for output %d\n", cur_output_index); SEND_SW(dc, SW_NOT_SUPPORTED); - return; + return false; } } else { - PRINTF("Unknown or unsupported script type for output %d\n", state->cur_output_index); + PRINTF("Unknown or unsupported script type for output %d\n", cur_output_index); SEND_SW(dc, SW_NOT_SUPPORTED); - return; + return false; } } if (G_swap_state.called_from_swap) { - // Swap feature: do not show the address to the user, but double check it matches the - // request from app-exchange; it must be the only external output (checked elsewhere). - int swap_addr_len = strnlen(G_swap_state.destination_address, - sizeof(G_swap_state.destination_address) - 1); + // Swap feature: do not show the address to the user, but double check it matches + // the request from app-exchange; it must be the only external output (checked + // elsewhere). + int swap_addr_len = strlen(G_swap_state.destination_address); if (swap_addr_len != address_len || 0 != strncmp(G_swap_state.destination_address, output_address, address_len)) { // address did not match PRINTF("Mismatching address for swap\n"); - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } else { - // no need for user vaidation during swap - dc->next(output_next); - return; + SEND_SW(dc, SW_FAIL_SWAP); + finalize_exchange_sign_transaction(false); } } else { // Show address to the user - ui_validate_output(dc, - state->external_outputs_count, - output_address, - COIN_COINID_SHORT, - state->cur.output.value, - BITCOIN_DECIMALS, - output_next); - return; + if (!ui_validate_output(dc, + external_outputs_count, + st->outputs.n_external, + output_address, + COIN_COINID_SHORT, + output->value)) { + SEND_SW(dc, SW_DENY); + return false; + } } + return true; } -static void output_next(dispatcher_context_t *dc) { - sign_psbt_state_t *state = (sign_psbt_state_t *) &G_command_state; - - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); - - ++state->cur_output_index; - dc->next(process_output_map); -} - -// Performs any final checks if needed, then show the confirmation UI to the user -// (except during swap) -static void confirm_transaction(dispatcher_context_t *dc) { - sign_psbt_state_t *state = (sign_psbt_state_t *) &G_command_state; - - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); - - if (state->inputs_total_value < state->outputs_total_value) { - PRINTF("Negative fee is invalid\n"); - // negative fee transaction is invalid - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - if (state->change_count > 10) { - // As the information regarding change outputs is aggregated, we want to prevent the user - // from unknowingly signing a transaction that sends the change to too many (possibly - // unspendable) outputs. - PRINTF("Too many change outputs: %d\n", state->change_count); - SEND_SW(dc, SW_NOT_SUPPORTED); - return; - } - - uint64_t fee = state->inputs_total_value - state->outputs_total_value; +static bool read_outputs(dispatcher_context_t *dc, + sign_psbt_state_t *st, + placeholder_info_t *placeholder_info, + bool dry_run) { + // the counter used when showing outputs to the user, which ignores change outputs + // (0-indexed here, although the UX starts with 1) + int external_outputs_count = 0; + + for (unsigned int cur_output_index = 0; cur_output_index < st->n_outputs; cur_output_index++) { + output_info_t output; + memset(&output, 0, sizeof(output)); + + output_keys_callback_data_t callback_data = {.output = &output, + .placeholder_info = placeholder_info}; + int res = call_get_merkleized_map_with_callback( + dc, + (void *) &callback_data, + st->outputs_root, + st->n_outputs, + cur_output_index, + (merkle_tree_elements_callback_t) output_keys_callback, + &output.in_out.map); - if (G_swap_state.called_from_swap) { - // Swap feature: check total amount and fees are as expected; moreover, only one external - // output - if (state->external_outputs_count != 1) { - PRINTF("Swap transaction must have exactly 1 external output\n"); + if (res < 0) { SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } - if (fee != G_swap_state.fees) { - PRINTF("Mismatching fee for swap\n"); - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - uint64_t spent_amount = state->outputs_total_value - state->change_outputs_total_value; - if (spent_amount != G_swap_state.amount) { - PRINTF("Mismatching spent amount for swap\n"); + if (output.in_out.unexpected_pubkey_error) { + PRINTF("Unexpected pubkey length\n"); // only compressed pubkeys are supported SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } - // No user validation required during swap - dc->next(sign_init); - } else { - // Show final user validation UI - ui_validate_transaction(dc, COIN_COINID_SHORT, fee, BITCOIN_DECIMALS, NULL, sign_init); - } -} - -/** SIGNING FLOW - * - * Iterate over all inputs. For each input that should be signed, compute and sign sighash. - */ -// entry point for the signing flow -static void sign_init(dispatcher_context_t *dc) { - sign_psbt_state_t *state = (sign_psbt_state_t *) &G_command_state; + if (!dry_run) { + // Read output amount + uint8_t raw_result[8]; - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); - - // find and parse our registered key info in the wallet - bool our_key_found = false; - for (unsigned int i = 0; i < state->wallet_header_n_keys; i++) { - uint8_t key_info_str[MAX_POLICY_KEY_INFO_LEN]; - - int key_info_len = call_get_merkle_leaf_element(dc, - state->wallet_header_keys_info_merkle_root, - state->wallet_header_n_keys, - i, - key_info_str, - sizeof(key_info_str)); + // Read the output's amount + int result_len = call_get_merkleized_map_value(dc, + &output.in_out.map, + (uint8_t[]){PSBT_OUT_AMOUNT}, + 1, + raw_result, + sizeof(raw_result)); + if (result_len != 8) { + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } + uint64_t value = read_u64_le(raw_result, 0); - if (key_info_len < 0) { - SEND_SW(dc, SW_BAD_STATE); // should never happen - return; + output.value = value; + st->outputs.total_amount += value; } - // Make a sub-buffer for the pubkey info - buffer_t key_info_buffer = buffer_create(key_info_str, key_info_len); + // Read the output's scriptPubKey + int result_len = call_get_merkleized_map_value(dc, + &output.in_out.map, + (uint8_t[]){PSBT_OUT_SCRIPT}, + 1, + output.in_out.scriptPubKey, + sizeof(output.in_out.scriptPubKey)); - policy_map_key_info_t our_key_info; - if (parse_policy_map_key_info(&key_info_buffer, &our_key_info) == -1) { - SEND_SW(dc, SW_BAD_STATE); // should never happen - return; - } - if (!validate_policy_map_extended_pubkey(&key_info, BIP32_PUBKEY_VERSION)) { + if (result_len == -1 || result_len > (int) sizeof(output.in_out.scriptPubKey)) { SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - uint32_t fpr = read_u32_be(our_key_info.master_key_fingerprint, 0); - if (fpr == state->master_key_fingerprint) { - // it could be a collision on the fingerprint; we verify that we can actually generate - // the same pubkey - char pubkey_derived[MAX_SERIALIZED_PUBKEY_LENGTH + 1]; - int serialized_pubkey_len = - get_serialized_extended_pubkey_at_path(our_key_info.master_key_derivation, - our_key_info.master_key_derivation_len, - BIP32_PUBKEY_VERSION, - pubkey_derived); - if (serialized_pubkey_len == -1) { - SEND_SW(dc, SW_BAD_STATE); - return; - } + return false; + } - if (strncmp(our_key_info.ext_pubkey, pubkey_derived, MAX_SERIALIZED_PUBKEY_LENGTH) == - 0) { - our_key_found = true; + output.in_out.scriptPubKey_len = result_len; - state->our_key_derivation_length = our_key_info.master_key_derivation_len; - for (int i = 0; i < our_key_info.master_key_derivation_len; i++) { - state->our_key_derivation[i] = our_key_info.master_key_derivation[i]; - } + int is_internal = is_in_out_internal(dc, st, &output.in_out, false); - break; - } + if (is_internal < 0) { + PRINTF("Error checking if output %d is internal\n", cur_output_index); + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } else if (is_internal == 0) { + // external output, user needs to validate + ++external_outputs_count; + + if (!dry_run && + !display_output(dc, st, cur_output_index, external_outputs_count, &output)) + return false; + } else if (!dry_run) { + // valid change address, nothing to show to the user + + st->outputs.change_total_amount += output.value; + ++st->outputs.n_change; } } - if (!our_key_found) { - PRINTF("Couldn't find internal key\n"); - SEND_SW( - dc, - SW_BAD_STATE); // should never happen if we only register wallets with an internal key - return; - } - - state->segwit_hashes_computed = false; + st->outputs.n_external = external_outputs_count; - state->cur_input_index = 0; - dc->next(sign_process_input_map); + return true; } -static void sign_process_input_map(dispatcher_context_t *dc) { - sign_psbt_state_t *state = (sign_psbt_state_t *) &G_command_state; +static bool __attribute__((noinline)) +process_outputs(dispatcher_context_t *dc, sign_psbt_state_t *st) { + /** OUTPUTS VERIFICATION FLOW + * + * For each output, check if it's a change address. + * Show each output that is not a change address to the user for verification. + */ - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); + LOG_PROCESSOR(__FILE__, __LINE__, __func__); - // skip external inputs - while (state->cur_input_index < state->n_inputs && - !bitvector_get(state->internal_inputs, state->cur_input_index)) { - PRINTF("Skipping signing external input %d\n", state->cur_input_index); - ++state->cur_input_index; - } + placeholder_info_t placeholder_info; + memset(&placeholder_info, 0, sizeof(placeholder_info)); - if (state->cur_input_index >= state->n_inputs) { - // all inputs already processed - dc->next(finalize); - return; - } + if (!find_first_internal_key_placeholder(dc, st, &placeholder_info)) return false; - // Reset cur struct - memset(&state->cur, 0, sizeof(state->cur)); + memset(&st->outputs, 0, sizeof(st->outputs)); - int res = call_get_merkleized_map_with_callback( - dc, - state->inputs_root, - state->n_inputs, - state->cur_input_index, - make_callback(state, (dispatcher_callback_t) input_keys_callback), - &state->cur.in_out.map); - if (res < 0) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } +#ifdef HAVE_NBGL + // Only on Stax, we need to preprocess all the outputs in order to + // compute the total number of non-change outputs. + // As it's a time-consuming operation, we use avoid doing this useless + // work on other models. - if (!state->cur.input.has_sighash_type) { - state->cur.input.sighash_type = SIGHASH_ALL; - } else { - // Get sighash type - if (4 != call_get_merkleized_map_value_u32_le(dc, - &state->cur.in_out.map, - (uint8_t[]){PSBT_IN_SIGHASH_TYPE}, - 1, - &state->cur.input.sighash_type)) { - PRINTF("Malformed PSBT_IN_SIGHASH_TYPE for input %d\n", state->cur_input_index); + if (!read_outputs(dc, st, &placeholder_info, true)) return false; - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } + if (!G_swap_state.called_from_swap && !ui_transaction_prompt(dc, st->outputs.n_external)) { + SEND_SW(dc, SW_DENY); + return false; } +#endif - // TODO: add support for other sighash flags - if (state->cur.input.sighash_type != SIGHASH_ALL) { - PRINTF("Only SIGHASH_ALL is currently supported\n"); - SEND_SW(dc, SW_NOT_SUPPORTED); - return; - } - - // get path, obtain change and address_index - - int bip32_path_len; - uint32_t bip32_path[MAX_BIP32_PATH_STEPS]; - uint32_t fingerprint; + if (!read_outputs(dc, st, &placeholder_info, false)) return false; - if (state->wallet_policy_map.type == TOKEN_TR) { - // taproot input, use PSBT_IN_TAP_BIP32_DERIVATION - uint8_t key[1 + 32]; - key[0] = PSBT_IN_TAP_BIP32_DERIVATION; - memcpy(key + 1, state->cur.in_out.bip32_derivation_pubkey, sizeof(key) - 1); - - bip32_path_len = get_emptyhashes_fingerprint_and_path(dc, - &state->cur.in_out.map, - key, - sizeof(key), - &fingerprint, - bip32_path); - } else { - // legacy or segwitv0 input, use PSBT_IN_BIP32_DERIVATION - uint8_t key[1 + 33]; - key[0] = PSBT_IN_BIP32_DERIVATION; - memcpy(key + 1, state->cur.in_out.bip32_derivation_pubkey, sizeof(key) - 1); + return true; +} - bip32_path_len = get_fingerprint_and_path(dc, - &state->cur.in_out.map, - key, - sizeof(key), - &fingerprint, - bip32_path); - } +static bool __attribute__((noinline)) +confirm_transaction(dispatcher_context_t *dc, sign_psbt_state_t *st) { + LOG_PROCESSOR(__FILE__, __LINE__, __func__); - if (bip32_path_len < 2) { - SEND_SW(dc, SW_BAD_STATE); - return; + if (st->inputs_total_amount < st->outputs.total_amount) { + PRINTF("Negative fee is invalid\n"); + // negative fee transaction is invalid + SEND_SW(dc, SW_INCORRECT_DATA); + return false; } - state->cur.input.change = bip32_path[bip32_path_len - 2]; - state->cur.input.address_index = bip32_path[bip32_path_len - 1]; - - // Sign as segwit input iff it has a witness utxo - if (!state->cur.input.has_witnessUtxo) { - dc->next(sign_legacy); - } else { - dc->next(sign_segwit); + if (st->outputs.n_change > 10) { + // As the information regarding change outputs is aggregated, we want to prevent the user + // from unknowingly signing a transaction that sends the change to too many (possibly + // unspendable) outputs. + PRINTF("Too many change outputs: %d\n", st->outputs.n_change); + SEND_SW(dc, SW_NOT_SUPPORTED); + return false; } -} -static void sign_legacy(dispatcher_context_t *dc) { - // sign legacy P2PKH or P2SH + uint64_t fee = st->inputs_total_amount - st->outputs.total_amount; - sign_psbt_state_t *state = (sign_psbt_state_t *) &G_command_state; - - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); + if (G_swap_state.called_from_swap) { + // Swap feature: there must be only one external output + if (st->outputs.n_external != 1) { + PRINTF("Swap transaction must have exactly 1 external output\n"); + SEND_SW(dc, SW_FAIL_SWAP); + finalize_exchange_sign_transaction(false); + } - // sign_non_witness(non_witness_utxo.vout[psbt.tx.input_[i].prevout.n].scriptPubKey, i) + // Swap feature: check total amount and fees are as expected + if (fee != G_swap_state.fees) { + PRINTF("Mismatching fee for swap\n"); + SEND_SW(dc, SW_FAIL_SWAP); + finalize_exchange_sign_transaction(false); + } + uint64_t spent_amount = st->outputs.total_amount - st->outputs.change_total_amount; + if (spent_amount != G_swap_state.amount) { + PRINTF("Mismatching spent amount for swap\n"); + SEND_SW(dc, SW_FAIL_SWAP); + finalize_exchange_sign_transaction(false); + } + } else { + // if the value of fees is 10% or more of the amount, and it's more than 10000 + if (10 * fee >= st->inputs_total_amount && st->inputs_total_amount > 10000) { + if (!ui_warn_high_fee(dc)) { + SEND_SW(dc, SW_DENY); + ui_post_processing_confirm_transaction(dc, false); + return false; + } + } - uint64_t tmp; // unused - if (0 > get_amount_scriptpubkey_from_psbt_nonwitness(dc, - &state->cur.in_out.map, - &tmp, - state->cur.in_out.scriptPubKey, - &state->cur.in_out.scriptPubKey_len, - NULL)) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; + // Show final user validation UI + bool is_self_transfer = st->outputs.n_external == 0; + if (!ui_validate_transaction(dc, COIN_COINID_SHORT, fee, is_self_transfer)) { + SEND_SW(dc, SW_DENY); + ui_post_processing_confirm_transaction(dc, false); + return false; + } } - dc->next(sign_legacy_compute_sighash); + return true; } -static void sign_legacy_compute_sighash(dispatcher_context_t *dc) { - sign_psbt_state_t *state = (sign_psbt_state_t *) &G_command_state; - - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); +static bool __attribute__((noinline)) compute_sighash_legacy(dispatcher_context_t *dc, + sign_psbt_state_t *st, + input_info_t *input, + unsigned int cur_input_index, + uint8_t sighash[static 32]) { + LOG_PROCESSOR(__FILE__, __LINE__, __func__); cx_sha256_t sighash_context; cx_sha256_init(&sighash_context); uint8_t tmp[4]; - write_u32_le(tmp, 0, state->tx_version); + write_u32_le(tmp, 0, st->tx_version); crypto_hash_update(&sighash_context.header, tmp, 4); - crypto_hash_update_varint(&sighash_context.header, state->n_inputs); + crypto_hash_update_varint(&sighash_context.header, st->n_inputs); - for (unsigned int i = 0; i < state->n_inputs; i++) { + for (unsigned int i = 0; i < st->n_inputs; i++) { // get this input's map merkleized_map_commitment_t ith_map; - if (i != state->cur_input_index) { - int res = call_get_merkleized_map(dc, state->inputs_root, state->n_inputs, i, &ith_map); + if (i != cur_input_index) { + int res = call_get_merkleized_map(dc, st->inputs_root, st->n_inputs, i, &ith_map); if (res < 0) { SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } } else { // Avoid requesting the same map unnecessarily // (might be removed once a caching mechanism is implemented) - memcpy(&ith_map, &state->cur.in_out.map, sizeof(ith_map)); + memcpy(&ith_map, &input->in_out.map, sizeof(input->in_out.map)); } // get prevout hash and output index for the i-th input @@ -1274,7 +1430,7 @@ static void sign_legacy_compute_sighash(dispatcher_context_t *dc) { ith_prevout_hash, 32)) { SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } crypto_hash_update(&sighash_context.header, ith_prevout_hash, 32); @@ -1287,29 +1443,28 @@ static void sign_legacy_compute_sighash(dispatcher_context_t *dc) { ith_prevout_n_raw, 4)) { SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } crypto_hash_update(&sighash_context.header, ith_prevout_n_raw, 4); - if (i != state->cur_input_index) { + if (i != cur_input_index) { // empty scriptcode crypto_hash_update_u8(&sighash_context.header, 0x00); } else { - if (!state->cur.input.has_redeemScript) { + if (!input->has_redeemScript) { // P2PKH, the script_code is the prevout's scriptPubKey - crypto_hash_update_varint(&sighash_context.header, - state->cur.in_out.scriptPubKey_len); + crypto_hash_update_varint(&sighash_context.header, input->in_out.scriptPubKey_len); crypto_hash_update(&sighash_context.header, - state->cur.in_out.scriptPubKey, - state->cur.in_out.scriptPubKey_len); + input->in_out.scriptPubKey, + input->in_out.scriptPubKey_len); } else { // P2SH, the script_code is the redeemScript // update sighash_context with the length-prefixed redeem script int redeemScript_len = update_hashes_with_map_value(dc, - &state->cur.in_out.map, + &input->in_out.map, (uint8_t[]){PSBT_IN_REDEEM_SCRIPT}, 1, NULL, @@ -1318,7 +1473,7 @@ static void sign_legacy_compute_sighash(dispatcher_context_t *dc) { if (redeemScript_len < 0) { PRINTF("Error fetching redeemScript\n"); SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } } } @@ -1338,274 +1493,62 @@ static void sign_legacy_compute_sighash(dispatcher_context_t *dc) { } // outputs - crypto_hash_update_varint(&sighash_context.header, state->n_outputs); - if (hash_outputs(dc, &sighash_context.header) == -1) { + crypto_hash_update_varint(&sighash_context.header, st->n_outputs); + if (hash_outputs(dc, st, &sighash_context.header) == -1) { SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } // nLocktime - write_u32_le(tmp, 0, state->locktime); + write_u32_le(tmp, 0, st->locktime); crypto_hash_update(&sighash_context.header, tmp, 4); // hash type - write_u32_le(tmp, 0, state->cur.input.sighash_type); + write_u32_le(tmp, 0, input->sighash_type); crypto_hash_update(&sighash_context.header, tmp, 4); // compute sighash - crypto_hash_digest(&sighash_context.header, state->sighash, 32); - cx_hash_sha256(state->sighash, 32, state->sighash, 32); + crypto_hash_digest(&sighash_context.header, sighash, 32); + cx_hash_sha256(sighash, 32, sighash, 32); - dc->next(sign_sighash_ecdsa); + return true; } -static void sign_segwit(dispatcher_context_t *dc) { - sign_psbt_state_t *state = (sign_psbt_state_t *) &G_command_state; - - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); - - int segwit_version; - - { - uint64_t amount; - if (0 > get_amount_scriptpubkey_from_psbt_witness(dc, - &state->cur.in_out.map, - &amount, - state->cur.in_out.scriptPubKey, - &state->cur.in_out.scriptPubKey_len)) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - state->inputs_total_value += amount; - - if (state->cur.input.has_redeemScript) { - // Get redeemScript - uint8_t redeemScript[64]; - - int redeemScript_length = - call_get_merkleized_map_value(dc, - &state->cur.in_out.map, - (uint8_t[]){PSBT_IN_REDEEM_SCRIPT}, - 1, - redeemScript, - sizeof(redeemScript)); - if (redeemScript_length < 0) { - PRINTF("Error fetching redeem script\n"); - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - uint8_t p2sh_redeemscript[2 + 20 + 1]; - p2sh_redeemscript[0] = 0xa9; - p2sh_redeemscript[1] = 0x14; - crypto_hash160(redeemScript, redeemScript_length, p2sh_redeemscript + 2); - p2sh_redeemscript[22] = 0x87; - - if (state->cur.in_out.scriptPubKey_len != 23 || - memcmp(state->cur.in_out.scriptPubKey, p2sh_redeemscript, 23) != 0) { - PRINTF("witnessUtxo's scriptPubKey does not match redeemScript\n"); - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - if (redeemScript_length <= (int)sizeof(state->cur.input.script)) { - state->cur.input.script_len = redeemScript_length; - memcpy(state->cur.input.script, redeemScript, redeemScript_length); - } else { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - segwit_version = get_segwit_version(redeemScript, redeemScript_length); - } else { - if (state->cur.in_out.scriptPubKey_len <= sizeof(state->cur.input.script)) { - state->cur.input.script_len = state->cur.in_out.scriptPubKey_len; - memcpy(state->cur.input.script, - state->cur.in_out.scriptPubKey, - state->cur.in_out.scriptPubKey_len); - } else { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - segwit_version = get_segwit_version(state->cur.in_out.scriptPubKey, - state->cur.in_out.scriptPubKey_len); - } - - if (segwit_version > 1) { - PRINTF("Segwit version not supported: %d\n", segwit_version); - SEND_SW(dc, SW_NOT_SUPPORTED); - return; - } - } - - // compute all the tx-wide hashes - - if (!state->segwit_hashes_computed) { - { - // compute sha_prevouts and sha_sequences - cx_sha256_t sha_prevouts_context, sha_sequences_context; - - // compute hashPrevouts and hashSequence - cx_sha256_init(&sha_prevouts_context); - cx_sha256_init(&sha_sequences_context); - - for (unsigned int i = 0; i < state->n_inputs; i++) { - // get this input's map - merkleized_map_commitment_t ith_map; - - int res = - call_get_merkleized_map(dc, state->inputs_root, state->n_inputs, i, &ith_map); - if (res < 0) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - // get prevout hash and output index for the i-th input - uint8_t ith_prevout_hash[32]; - if (32 != call_get_merkleized_map_value(dc, - &ith_map, - (uint8_t[]){PSBT_IN_PREVIOUS_TXID}, - 1, - ith_prevout_hash, - 32)) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - crypto_hash_update(&sha_prevouts_context.header, ith_prevout_hash, 32); - - uint8_t ith_prevout_n_raw[4]; - if (4 != call_get_merkleized_map_value(dc, - &ith_map, - (uint8_t[]){PSBT_IN_OUTPUT_INDEX}, - 1, - ith_prevout_n_raw, - 4)) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - crypto_hash_update(&sha_prevouts_context.header, ith_prevout_n_raw, 4); - - uint8_t ith_nSequence_raw[4]; - if (4 != call_get_merkleized_map_value(dc, - &ith_map, - (uint8_t[]){PSBT_IN_SEQUENCE}, - 1, - ith_nSequence_raw, - 4)) { - // if no PSBT_IN_SEQUENCE is present, we must assume nSequence 0xFFFFFFFF - memset(ith_nSequence_raw, 0xFF, 4); - } - - crypto_hash_update(&sha_sequences_context.header, ith_nSequence_raw, 4); - } - - crypto_hash_digest(&sha_prevouts_context.header, state->hashes.sha_prevouts, 32); - crypto_hash_digest(&sha_sequences_context.header, state->hashes.sha_sequences, 32); - } - - { - // compute sha_outputs - cx_sha256_t sha_outputs_context; - cx_sha256_init(&sha_outputs_context); - - if (hash_outputs(dc, &sha_outputs_context.header) == -1) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - crypto_hash_digest(&sha_outputs_context.header, state->hashes.sha_outputs, 32); - } - - { - // compute sha_amounts and sha_scriptpubkeys - // TODO: could be skipped if there are no segwitv1 inputs to sign - - cx_sha256_t sha_amounts_context, sha_scriptpubkeys_context; - - cx_sha256_init(&sha_amounts_context); - cx_sha256_init(&sha_scriptpubkeys_context); - - for (unsigned int i = 0; i < state->n_inputs; i++) { - // get this input's map - merkleized_map_commitment_t ith_map; - - int res = - call_get_merkleized_map(dc, state->inputs_root, state->n_inputs, i, &ith_map); - if (res < 0) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - uint64_t in_amount; - uint8_t in_scriptPubKey[MAX_PREVOUT_SCRIPTPUBKEY_LEN]; - size_t in_scriptPubKey_len; - - if (0 > get_amount_scriptpubkey_from_psbt(dc, - &ith_map, - &in_amount, - in_scriptPubKey, - &in_scriptPubKey_len)) { - SEND_SW(dc, SW_INCORRECT_DATA); - return; - } - - uint8_t in_amount_le[8]; - write_u64_le(in_amount_le, 0, in_amount); - crypto_hash_update(&sha_amounts_context.header, in_amount_le, 8); - - crypto_hash_update_varint(&sha_scriptpubkeys_context.header, in_scriptPubKey_len); - crypto_hash_update(&sha_scriptpubkeys_context.header, - in_scriptPubKey, - in_scriptPubKey_len); - } - - crypto_hash_digest(&sha_amounts_context.header, state->hashes.sha_amounts, 32); - crypto_hash_digest(&sha_scriptpubkeys_context.header, - state->hashes.sha_scriptpubkeys, - 32); - } - } - state->segwit_hashes_computed = true; - - if (segwit_version == 0) { - dc->next(sign_segwit_v0); - return; - } else if (segwit_version == 1) { - dc->next(sign_segwit_v1); - - return; - } - - SEND_SW(dc, SW_BAD_STATE); // can't happen - return; -} - -static void sign_segwit_v0(dispatcher_context_t *dc) { - sign_psbt_state_t *state = (sign_psbt_state_t *) &G_command_state; - - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); +static bool __attribute__((noinline)) compute_sighash_segwitv0(dispatcher_context_t *dc, + sign_psbt_state_t *st, + segwit_hashes_t *hashes, + input_info_t *input, + unsigned int cur_input_index, + uint8_t sighash[static 32]) { + LOG_PROCESSOR(__FILE__, __LINE__, __func__); cx_sha256_t sighash_context; cx_sha256_init(&sighash_context); uint8_t tmp[8]; + uint8_t sighash_byte = (uint8_t) (input->sighash_type & 0xFF); // nVersion - write_u32_le(tmp, 0, state->tx_version); + write_u32_le(tmp, 0, st->tx_version); crypto_hash_update(&sighash_context.header, tmp, 4); { uint8_t dbl_hash[32]; + memset(dbl_hash, 0, 32); // add to hash: hashPrevouts = sha256(sha_prevouts) - cx_hash_sha256(state->hashes.sha_prevouts, 32, dbl_hash, 32); + if (!(sighash_byte & SIGHASH_ANYONECANPAY)) { + cx_hash_sha256(hashes->sha_prevouts, 32, dbl_hash, 32); + } + crypto_hash_update(&sighash_context.header, dbl_hash, 32); + memset(dbl_hash, 0, 32); // add to hash: hashSequence sha256(sha_sequences) - cx_hash_sha256(state->hashes.sha_sequences, 32, dbl_hash, 32); + if (!(sighash_byte & SIGHASH_ANYONECANPAY) && (sighash_byte & 0x1f) != SIGHASH_SINGLE && + (sighash_byte & 0x1f) != SIGHASH_NONE) { + cx_hash_sha256(hashes->sha_sequences, 32, dbl_hash, 32); + } crypto_hash_update(&sighash_context.header, dbl_hash, 32); } @@ -1615,38 +1558,38 @@ static void sign_segwit_v0(dispatcher_context_t *dc) { // get prevout hash and output index for the current input uint8_t prevout_hash[32]; if (32 != call_get_merkleized_map_value(dc, - &state->cur.in_out.map, + &input->in_out.map, (uint8_t[]){PSBT_IN_PREVIOUS_TXID}, 1, prevout_hash, 32)) { SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } crypto_hash_update(&sighash_context.header, prevout_hash, 32); uint8_t prevout_n_raw[4]; if (4 != call_get_merkleized_map_value(dc, - &state->cur.in_out.map, + &input->in_out.map, (uint8_t[]){PSBT_IN_OUTPUT_INDEX}, 1, prevout_n_raw, 4)) { SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } crypto_hash_update(&sighash_context.header, prevout_n_raw, 4); } // scriptCode - if (is_p2wpkh(state->cur.input.script, state->cur.input.script_len)) { + if (is_p2wpkh(input->script, input->script_len)) { // P2WPKH(script[2:22]) crypto_hash_update_u32(&sighash_context.header, 0x1976a914); - crypto_hash_update(&sighash_context.header, state->cur.input.script + 2, 20); + crypto_hash_update(&sighash_context.header, input->script + 2, 20); crypto_hash_update_u16(&sighash_context.header, 0x88ac); - } else if (is_p2wsh(state->cur.input.script, state->cur.input.script_len)) { + } else if (is_p2wsh(input->script, input->script_len)) { // P2WSH // update sighash_context.header with the length-prefixed witnessScript, @@ -1655,7 +1598,7 @@ static void sign_segwit_v0(dispatcher_context_t *dc) { cx_sha256_init(&witnessScript_hash_context); int witnessScript_len = update_hashes_with_map_value(dc, - &state->cur.in_out.map, + &input->in_out.map, (uint8_t[]){PSBT_IN_WITNESS_SCRIPT}, 1, &witnessScript_hash_context.header, @@ -1664,25 +1607,24 @@ static void sign_segwit_v0(dispatcher_context_t *dc) { if (witnessScript_len < 0) { PRINTF("Error fetching witnessScript\n"); SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } uint8_t witnessScript_hash[32]; crypto_hash_digest(&witnessScript_hash_context.header, witnessScript_hash, 32); // check that script == P2WSH(witnessScript) - if (state->cur.input.script_len != 2 + 32 || state->cur.input.script[0] != 0x00 || - state->cur.input.script[1] != 0x20 || - memcmp(state->cur.input.script + 2, witnessScript_hash, 32) != 0) { + if (input->script_len != 2 + 32 || input->script[0] != 0x00 || input->script[1] != 0x20 || + memcmp(input->script + 2, witnessScript_hash, 32) != 0) { PRINTF("Mismatching witnessScript\n"); SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } } else { PRINTF("Invalid or unsupported script in segwit transaction\n"); SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } { @@ -1690,14 +1632,14 @@ static void sign_segwit_v0(dispatcher_context_t *dc) { uint8_t witness_utxo[8 + 1 + MAX_PREVOUT_SCRIPTPUBKEY_LEN]; int witness_utxo_len = call_get_merkleized_map_value(dc, - &state->cur.in_out.map, + &input->in_out.map, (uint8_t[]){PSBT_IN_WITNESS_UTXO}, 1, witness_utxo, sizeof(witness_utxo)); if (witness_utxo_len < 8) { SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } crypto_hash_update(&sighash_context.header, @@ -1709,7 +1651,7 @@ static void sign_segwit_v0(dispatcher_context_t *dc) { { uint8_t nSequence_raw[4]; if (4 != call_get_merkleized_map_value(dc, - &state->cur.in_out.map, + &input->in_out.map, (uint8_t[]){PSBT_IN_SEQUENCE}, 1, nSequence_raw, @@ -1724,101 +1666,133 @@ static void sign_segwit_v0(dispatcher_context_t *dc) { // compute hashOutputs = sha256(sha_outputs) uint8_t hashOutputs[32]; - cx_hash_sha256(state->hashes.sha_outputs, 32, hashOutputs, 32); + memset(hashOutputs, 0, 32); + if ((sighash_byte & 0x1f) != SIGHASH_SINGLE && (sighash_byte & 0x1f) != SIGHASH_NONE) { + cx_hash_sha256(hashes->sha_outputs, 32, hashOutputs, 32); + + } else if ((sighash_byte & 0x1f) == SIGHASH_SINGLE && cur_input_index < st->n_outputs) { + cx_sha256_t sha_output_context; + cx_sha256_init(&sha_output_context); + if (hash_output_n(dc, st, &sha_output_context.header, cur_input_index) == -1) { + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } + crypto_hash_digest(&sha_output_context.header, hashOutputs, 32); + cx_hash_sha256(hashOutputs, 32, hashOutputs, 32); + } crypto_hash_update(&sighash_context.header, hashOutputs, 32); } // nLocktime - write_u32_le(tmp, 0, state->locktime); + write_u32_le(tmp, 0, st->locktime); crypto_hash_update(&sighash_context.header, tmp, 4); // sighash type - write_u32_le(tmp, 0, state->cur.input.sighash_type); + write_u32_le(tmp, 0, input->sighash_type); crypto_hash_update(&sighash_context.header, tmp, 4); // compute sighash - crypto_hash_digest(&sighash_context.header, state->sighash, 32); - cx_hash_sha256(state->sighash, 32, state->sighash, 32); + crypto_hash_digest(&sighash_context.header, sighash, 32); + cx_hash_sha256(sighash, 32, sighash, 32); - dc->next(sign_sighash_ecdsa); + return true; } -static void sign_segwit_v1(dispatcher_context_t *dc) { - sign_psbt_state_t *state = (sign_psbt_state_t *) &G_command_state; - - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); +static bool __attribute__((noinline)) compute_sighash_segwitv1(dispatcher_context_t *dc, + sign_psbt_state_t *st, + segwit_hashes_t *hashes, + input_info_t *input, + unsigned int cur_input_index, + placeholder_info_t *placeholder_info, + uint8_t sighash[static 32]) { + LOG_PROCESSOR(__FILE__, __LINE__, __func__); cx_sha256_t sighash_context; crypto_tr_tagged_hash_init(&sighash_context, BIP0341_sighash_tag, sizeof(BIP0341_sighash_tag)); // the first 0x00 byte is not part of SigMsg crypto_hash_update_u8(&sighash_context.header, 0x00); - uint8_t tmp[32]; + uint8_t tmp[MAX(32, 8 + 1 + MAX_PREVOUT_SCRIPTPUBKEY_LEN)]; // hash type - uint8_t sighash_byte = (uint8_t) (state->cur.input.sighash_type & 0xFF); + uint8_t sighash_byte = (uint8_t) (input->sighash_type & 0xFF); crypto_hash_update_u8(&sighash_context.header, sighash_byte); // nVersion - write_u32_le(tmp, 0, state->tx_version); + write_u32_le(tmp, 0, st->tx_version); crypto_hash_update(&sighash_context.header, tmp, 4); // nLocktime - write_u32_le(tmp, 0, state->locktime); + write_u32_le(tmp, 0, st->locktime); crypto_hash_update(&sighash_context.header, tmp, 4); if ((sighash_byte & 0x80) != SIGHASH_ANYONECANPAY) { - crypto_hash_update(&sighash_context.header, state->hashes.sha_prevouts, 32); - crypto_hash_update(&sighash_context.header, state->hashes.sha_amounts, 32); - crypto_hash_update(&sighash_context.header, state->hashes.sha_scriptpubkeys, 32); - crypto_hash_update(&sighash_context.header, state->hashes.sha_sequences, 32); + crypto_hash_update(&sighash_context.header, hashes->sha_prevouts, 32); + crypto_hash_update(&sighash_context.header, hashes->sha_amounts, 32); + crypto_hash_update(&sighash_context.header, hashes->sha_scriptpubkeys, 32); + crypto_hash_update(&sighash_context.header, hashes->sha_sequences, 32); } if ((sighash_byte & 3) != SIGHASH_NONE && (sighash_byte & 3) != SIGHASH_SINGLE) { - crypto_hash_update(&sighash_context.header, state->hashes.sha_outputs, 32); + crypto_hash_update(&sighash_context.header, hashes->sha_outputs, 32); } - // annex and ext_flags not supported, so spend_type = 0 - crypto_hash_update_u8(&sighash_context.header, 0x00); + // ext_flag + uint8_t ext_flag = placeholder_info->is_tapscript ? 1 : 0; + // annex is not supported + const uint8_t annex_present = 0; + uint8_t spend_type = ext_flag * 2 + annex_present; + crypto_hash_update_u8(&sighash_context.header, spend_type); if ((sighash_byte & 0x80) == SIGHASH_ANYONECANPAY) { // outpoint (hash) if (32 != call_get_merkleized_map_value(dc, - &state->cur.in_out.map, + &input->in_out.map, (uint8_t[]){PSBT_IN_PREVIOUS_TXID}, 1, tmp, 32)) { SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } crypto_hash_update(&sighash_context.header, tmp, 32); // outpoint (output index) if (4 != call_get_merkleized_map_value(dc, - &state->cur.in_out.map, + &input->in_out.map, (uint8_t[]){PSBT_IN_OUTPUT_INDEX}, 1, tmp, 4)) { SEND_SW(dc, SW_INCORRECT_DATA); - return; + return false; } crypto_hash_update(&sighash_context.header, tmp, 4); + if (8 > call_get_merkleized_map_value(dc, + &input->in_out.map, + (uint8_t[]){PSBT_IN_WITNESS_UTXO}, + 1, + tmp, + 8 + 1 + MAX_PREVOUT_SCRIPTPUBKEY_LEN)) { + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } + // amount - write_u64_le(tmp, 0, state->cur.input.prevout_amount); crypto_hash_update(&sighash_context.header, tmp, 8); // scriptPubKey + crypto_hash_update_varint(&sighash_context.header, input->in_out.scriptPubKey_len); + crypto_hash_update(&sighash_context.header, - state->cur.in_out.scriptPubKey, - state->cur.in_out.scriptPubKey_len); + input->in_out.scriptPubKey, + input->in_out.scriptPubKey_len); // nSequence if (4 != call_get_merkleized_map_value(dc, - &state->cur.in_out.map, + &input->in_out.map, (uint8_t[]){PSBT_IN_SEQUENCE}, 1, tmp, @@ -1829,143 +1803,755 @@ static void sign_segwit_v1(dispatcher_context_t *dc) { crypto_hash_update(&sighash_context.header, tmp, 4); } else { // input_index - write_u32_le(tmp, 0, state->cur_input_index); + write_u32_le(tmp, 0, cur_input_index); crypto_hash_update(&sighash_context.header, tmp, 4); } // no annex - // TODO: SIGHASH_SINGLE not implemented - - crypto_hash_digest(&sighash_context.header, state->sighash, 32); - - dc->next(sign_sighash_schnorr); -} + if ((sighash_byte & 3) == SIGHASH_SINGLE) { + // compute sha_output + cx_sha256_t sha_output_context; + cx_sha256_init(&sha_output_context); -// Common for legacy and segwitv0 transactions -static void sign_sighash_ecdsa(dispatcher_context_t *dc) { - sign_psbt_state_t *state = (sign_psbt_state_t *) &G_command_state; + if (hash_output_n(dc, st, &sha_output_context.header, cur_input_index) == -1) { + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } + crypto_hash_digest(&sha_output_context.header, tmp, 32); - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); + crypto_hash_update(&sighash_context.header, tmp, 32); + } - uint32_t sign_path[MAX_BIP32_PATH_STEPS]; - for (int i = 0; i < state->our_key_derivation_length; i++) { - sign_path[i] = state->our_key_derivation[i]; + if (placeholder_info->is_tapscript) { + // If spending a tapscript, append the Common Signature Message Extension per BIP-0342 + crypto_hash_update(&sighash_context.header, placeholder_info->tapleaf_hash, 32); + crypto_hash_update_u8(&sighash_context.header, 0x00); // key_version + crypto_hash_update_u32(&sighash_context.header, 0xffffffff); // no OP_CODESEPARATOR } - sign_path[state->our_key_derivation_length] = state->cur.input.change; - sign_path[state->our_key_derivation_length + 1] = state->cur.input.address_index; - int sign_path_len = state->our_key_derivation_length + 2; + crypto_hash_digest(&sighash_context.header, sighash, 32); - uint8_t sig[MAX_DER_SIG_LEN]; + return true; +} - int sig_len = - crypto_ecdsa_sign_sha256_hash_with_key(sign_path, sign_path_len, state->sighash, sig, NULL); - if (sig_len < 0) { - // unexpected error when signing - SEND_SW(dc, SW_BAD_STATE); - return; - } +static bool __attribute__((noinline)) yield_signature(dispatcher_context_t *dc, + sign_psbt_state_t *st, + unsigned int cur_input_index, + uint8_t *pubkey, + uint8_t pubkey_len, + uint8_t *tapleaf_hash, + uint8_t *sig, + size_t sig_len) { + LOG_PROCESSOR(__FILE__, __LINE__, __func__); // yield signature uint8_t cmd = CCMD_YIELD; dc->add_to_response(&cmd, 1); uint8_t buf[9]; - int input_index_varint_len = varint_write(buf, 0, state->cur_input_index); + int input_index_varint_len = varint_write(buf, 0, cur_input_index); dc->add_to_response(&buf, input_index_varint_len); - dc->add_to_response(&sig, sig_len); - uint8_t sighash_byte = (uint8_t) (state->cur.input.sighash_type & 0xFF); - dc->add_to_response(&sighash_byte, 1); + // for tapscript signatures, we concatenate the (x-only) pubkey with the tapleaf hash + uint8_t augm_pubkey_len = pubkey_len + (tapleaf_hash != NULL ? 32 : 0); + + // the pubkey is not output in version 0 of the protocol + if (st->protocol_version >= 1) { + dc->add_to_response(&augm_pubkey_len, 1); + dc->add_to_response(pubkey, pubkey_len); + + if (tapleaf_hash != NULL) { + dc->add_to_response(tapleaf_hash, 32); + } + } + + dc->add_to_response(sig, sig_len); dc->finalize_response(SW_INTERRUPTED_EXECUTION); if (dc->process_interruption(dc) < 0) { SEND_SW(dc, SW_BAD_STATE); - return; + return false; } + return true; +} + +static bool __attribute__((noinline)) +sign_sighash_ecdsa_and_yield(dispatcher_context_t *dc, + sign_psbt_state_t *st, + placeholder_info_t *placeholder_info, + input_info_t *input, + unsigned int cur_input_index, + uint8_t sighash[static 32]) { + LOG_PROCESSOR(__FILE__, __LINE__, __func__); + + uint32_t sign_path[MAX_BIP32_PATH_STEPS]; + for (int i = 0; i < placeholder_info->key_derivation_length; i++) { + sign_path[i] = placeholder_info->key_derivation[i]; + } + sign_path[placeholder_info->key_derivation_length] = + input->in_out.is_change ? placeholder_info->placeholder.num_second + : placeholder_info->placeholder.num_first; + sign_path[placeholder_info->key_derivation_length + 1] = input->in_out.address_index; + + int sign_path_len = placeholder_info->key_derivation_length + 2; + + uint8_t sig[MAX_DER_SIG_LEN + 1]; // extra byte for the appended sighash-type + + uint8_t pubkey[33]; + + int sig_len = crypto_ecdsa_sign_sha256_hash_with_key(sign_path, + sign_path_len, + sighash, + pubkey, + sig, + NULL); + if (sig_len < 0) { + // unexpected error when signing + SEND_SW(dc, SW_BAD_STATE); + return false; + } + + // append the sighash type byte + uint8_t sighash_byte = (uint8_t) (input->sighash_type & 0xFF); + sig[sig_len++] = sighash_byte; + + if (!yield_signature(dc, st, cur_input_index, pubkey, 33, NULL, sig, sig_len)) return false; - ++state->cur_input_index; - dc->next(sign_process_input_map); + return true; } -// Signing for segwitv1 (taproot) -static void sign_sighash_schnorr(dispatcher_context_t *dc) { - sign_psbt_state_t *state = (sign_psbt_state_t *) &G_command_state; +static bool __attribute__((noinline)) +sign_sighash_schnorr_and_yield(dispatcher_context_t *dc, + sign_psbt_state_t *st, + placeholder_info_t *placeholder_info, + input_info_t *input, + unsigned int cur_input_index, + uint8_t sighash[static 32]) { + LOG_PROCESSOR(__FILE__, __LINE__, __func__); - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); + if (st->wallet_policy_map->type != TOKEN_TR) { + SEND_SW(dc, SW_BAD_STATE); // should never happen + return false; + } + + uint8_t sig[64 + 1]; // extra byte for the appended sighash-type, possibly + size_t sig_len = 0; + + cx_ecfp_public_key_t pubkey_tweaked; // Pubkey corresponding to the key used for signing + + uint8_t *tapleaf_hash = NULL; + bool error = false; cx_ecfp_private_key_t private_key = {0}; - uint8_t *seckey = private_key.d; // convenience alias (entirely within the private_key struct) - uint8_t chain_code[32] = {0}; + // IMPORTANT: Since we do not use any syscall that might throw an exception, it is safe to avoid + // using the TRY/CATCH block to ensure zeroing sensitive data. - uint32_t sign_path[MAX_BIP32_PATH_STEPS]; - for (int i = 0; i < state->our_key_derivation_length; i++) { - sign_path[i] = state->our_key_derivation[i]; - } - sign_path[state->our_key_derivation_length] = state->cur.input.change; - sign_path[state->our_key_derivation_length + 1] = state->cur.input.address_index; + do { // block executed once, only to allow safely breaking out on error - int sign_path_len = state->our_key_derivation_length + 2; + uint8_t *seckey = + private_key.d; // convenience alias (entirely within the private_key struct) - uint8_t sig[64]; - size_t sig_len; + uint32_t sign_path[MAX_BIP32_PATH_STEPS]; + + for (int i = 0; i < placeholder_info->key_derivation_length; i++) { + sign_path[i] = placeholder_info->key_derivation[i]; + } + sign_path[placeholder_info->key_derivation_length] = + input->in_out.is_change ? placeholder_info->placeholder.num_second + : placeholder_info->placeholder.num_first; + sign_path[placeholder_info->key_derivation_length + 1] = input->in_out.address_index; + + int sign_path_len = placeholder_info->key_derivation_length + 2; + + if (bip32_derive_init_privkey_256(CX_CURVE_256K1, + sign_path, + sign_path_len, + &private_key, + NULL) != CX_OK) { + error = true; + break; + } - bool error = 0 != crypto_derive_private_key(&private_key, chain_code, sign_path, sign_path_len); - error = error || 0 > crypto_tr_tweak_seckey(seckey); + policy_node_tr_t *policy = (policy_node_tr_t *) st->wallet_policy_map; + + if (!placeholder_info->is_tapscript) { + if (isnull_policy_node_tree(&policy->tree)) { + // tweak as specified in BIP-86 and BIP-386 + error = error || 0 != crypto_tr_tweak_seckey(seckey, (uint8_t[]){}, 0, seckey); + } else { + // tweak with the taptree hash, per BIP-341 + // The taptree hash is computed in sign_transaction_input in order to + // reduce stack usage. + error = error || 0 != crypto_tr_tweak_seckey(seckey, input->taptree_hash, 32, seckey); + } + if (error) { + break; + } + } else { + // tapscript, we need to yield the tapleaf hash together with the pubkey + tapleaf_hash = placeholder_info->tapleaf_hash; + } + + // generate corresponding public key + unsigned int err = + cx_ecfp_generate_pair_no_throw(CX_CURVE_256K1, &pubkey_tweaked, &private_key, 1); + if (err != CX_OK) { + error = true; + break; + } + + err = cx_ecschnorr_sign_no_throw(&private_key, + CX_ECSCHNORR_BIP0340 | CX_RND_TRNG, + CX_SHA256, + sighash, + 32, + sig, + &sig_len); + if (err != CX_OK) { + error = true; + } + } while (false); - error = error || CX_OK != cx_ecschnorr_sign_no_throw(&private_key, - CX_ECSCHNORR_BIP0340 | CX_RND_TRNG, - CX_SHA256, - state->sighash, - 32, - sig, - &sig_len); explicit_bzero(&private_key, sizeof(private_key)); if (error) { // unexpected error when signing SEND_SW(dc, SW_BAD_STATE); - return; + return false; } if (sig_len != 64) { PRINTF("SIG LEN: %d\n", sig_len); SEND_SW(dc, SW_BAD_STATE); - return; + return false; } - // yield signature - uint8_t cmd = CCMD_YIELD; - dc->add_to_response(&cmd, 1); - - uint8_t buf[9]; - int input_index_varint_len = varint_write(buf, 0, state->cur_input_index); - dc->add_to_response(&buf, input_index_varint_len); - - dc->add_to_response(&sig, sizeof(sig)); - // only append the sighash type byte if it is non-zero - uint8_t sighash_byte = (uint8_t) (state->cur.input.sighash_type & 0xFF); + uint8_t sighash_byte = (uint8_t) (input->sighash_type & 0xFF); if (sighash_byte != 0x00) { // only add the sighash byte if not 0 - dc->add_to_response(&sighash_byte, 1); + sig[sig_len++] = sighash_byte; } - dc->finalize_response(SW_INTERRUPTED_EXECUTION); - if (dc->process_interruption(dc) < 0) { - SEND_SW(dc, SW_BAD_STATE); - return; + if (!yield_signature(dc, + st, + cur_input_index, + pubkey_tweaked.W + 1, // x-only pubkey, hence take only the x-coordinate + 32, + tapleaf_hash, + sig, + sig_len)) + return false; + + return true; +} + +static bool __attribute__((noinline)) +compute_segwit_hashes(dispatcher_context_t *dc, sign_psbt_state_t *st, segwit_hashes_t *hashes) { + { + // compute sha_prevouts and sha_sequences + cx_sha256_t sha_prevouts_context, sha_sequences_context; + + // compute hashPrevouts and hashSequence + cx_sha256_init(&sha_prevouts_context); + cx_sha256_init(&sha_sequences_context); + + for (unsigned int i = 0; i < st->n_inputs; i++) { + // get this input's map + merkleized_map_commitment_t ith_map; + + int res = call_get_merkleized_map(dc, st->inputs_root, st->n_inputs, i, &ith_map); + if (res < 0) { + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } + + // get prevout hash and output index for the i-th input + uint8_t ith_prevout_hash[32]; + if (32 != call_get_merkleized_map_value(dc, + &ith_map, + (uint8_t[]){PSBT_IN_PREVIOUS_TXID}, + 1, + ith_prevout_hash, + 32)) { + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } + + crypto_hash_update(&sha_prevouts_context.header, ith_prevout_hash, 32); + + uint8_t ith_prevout_n_raw[4]; + if (4 != call_get_merkleized_map_value(dc, + &ith_map, + (uint8_t[]){PSBT_IN_OUTPUT_INDEX}, + 1, + ith_prevout_n_raw, + 4)) { + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } + + crypto_hash_update(&sha_prevouts_context.header, ith_prevout_n_raw, 4); + + uint8_t ith_nSequence_raw[4]; + if (4 != call_get_merkleized_map_value(dc, + &ith_map, + (uint8_t[]){PSBT_IN_SEQUENCE}, + 1, + ith_nSequence_raw, + 4)) { + // if no PSBT_IN_SEQUENCE is present, we must assume nSequence 0xFFFFFFFF + memset(ith_nSequence_raw, 0xFF, 4); + } + + crypto_hash_update(&sha_sequences_context.header, ith_nSequence_raw, 4); + } + + crypto_hash_digest(&sha_prevouts_context.header, hashes->sha_prevouts, 32); + crypto_hash_digest(&sha_sequences_context.header, hashes->sha_sequences, 32); } - ++state->cur_input_index; - dc->next(sign_process_input_map); + { + // compute sha_outputs + cx_sha256_t sha_outputs_context; + cx_sha256_init(&sha_outputs_context); + + if (hash_outputs(dc, st, &sha_outputs_context.header) == -1) { + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } + + crypto_hash_digest(&sha_outputs_context.header, hashes->sha_outputs, 32); + } + + { + // compute sha_amounts and sha_scriptpubkeys + // TODO: could be skipped if there are no segwitv1 inputs to sign + + cx_sha256_t sha_amounts_context, sha_scriptpubkeys_context; + + cx_sha256_init(&sha_amounts_context); + cx_sha256_init(&sha_scriptpubkeys_context); + + for (unsigned int i = 0; i < st->n_inputs; i++) { + // get this input's map + merkleized_map_commitment_t ith_map; + + int res = call_get_merkleized_map(dc, st->inputs_root, st->n_inputs, i, &ith_map); + if (res < 0) { + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } + + uint64_t in_amount; + uint8_t in_scriptPubKey[MAX_PREVOUT_SCRIPTPUBKEY_LEN]; + size_t in_scriptPubKey_len; + + if (0 > get_amount_scriptpubkey_from_psbt(dc, + &ith_map, + &in_amount, + in_scriptPubKey, + &in_scriptPubKey_len)) { + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } + + uint8_t in_amount_le[8]; + write_u64_le(in_amount_le, 0, in_amount); + crypto_hash_update(&sha_amounts_context.header, in_amount_le, 8); + + crypto_hash_update_varint(&sha_scriptpubkeys_context.header, in_scriptPubKey_len); + crypto_hash_update(&sha_scriptpubkeys_context.header, + in_scriptPubKey, + in_scriptPubKey_len); + } + + crypto_hash_digest(&sha_amounts_context.header, hashes->sha_amounts, 32); + crypto_hash_digest(&sha_scriptpubkeys_context.header, hashes->sha_scriptpubkeys, 32); + } + + return true; +} + +static bool __attribute__((noinline)) sign_transaction_input(dispatcher_context_t *dc, + sign_psbt_state_t *st, + segwit_hashes_t *hashes, + placeholder_info_t *placeholder_info, + input_info_t *input, + unsigned int cur_input_index) { + LOG_PROCESSOR(__FILE__, __LINE__, __func__); + + // if the psbt does not specify the sighash flag for this input, the default + // changes depending on the type of spend; therefore, we set it later. + if (input->has_sighash_type) { + // Get sighash type + if (4 != call_get_merkleized_map_value_u32_le(dc, + &input->in_out.map, + (uint8_t[]){PSBT_IN_SIGHASH_TYPE}, + 1, + &input->sighash_type)) { + PRINTF("Malformed PSBT_IN_SIGHASH_TYPE for input %d\n", cur_input_index); + + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } + } + + // Sign as segwit input iff it has a witness utxo + if (!input->has_witnessUtxo) { + // sign legacy P2PKH or P2SH + + // sign_non_witness(non_witness_utxo.vout[psbt.tx.input_[i].prevout.n].scriptPubKey, i) + + uint64_t tmp; // unused + if (0 > get_amount_scriptpubkey_from_psbt_nonwitness(dc, + &input->in_out.map, + &tmp, + input->in_out.scriptPubKey, + &input->in_out.scriptPubKey_len, + NULL)) { + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } + + if (!input->has_sighash_type) { + // legacy input default to SIGHASH_ALL + input->sighash_type = SIGHASH_ALL; + } + + uint8_t sighash[32]; + if (!compute_sighash_legacy(dc, st, input, cur_input_index, sighash)) return false; + + if (!sign_sighash_ecdsa_and_yield(dc, + st, + placeholder_info, + input, + cur_input_index, + sighash)) + return false; + } else { + { + uint64_t amount; + if (0 > get_amount_scriptpubkey_from_psbt_witness(dc, + &input->in_out.map, + &amount, + input->in_out.scriptPubKey, + &input->in_out.scriptPubKey_len)) { + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } + + if (input->has_redeemScript) { + // Get redeemScript + // The redeemScript cannot be longer than standard scriptPubKeys for + // wrapped segwit transactions that we support + uint8_t redeemScript[MAX_PREVOUT_SCRIPTPUBKEY_LEN]; + + int redeemScript_length = + call_get_merkleized_map_value(dc, + &input->in_out.map, + (uint8_t[]){PSBT_IN_REDEEM_SCRIPT}, + 1, + redeemScript, + sizeof(redeemScript)); + if (redeemScript_length < 0) { + PRINTF("Error fetching redeem script\n"); + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } + + uint8_t p2sh_redeemscript[2 + 20 + 1]; + p2sh_redeemscript[0] = 0xa9; + p2sh_redeemscript[1] = 0x14; + crypto_hash160(redeemScript, redeemScript_length, p2sh_redeemscript + 2); + p2sh_redeemscript[22] = 0x87; + + if (input->in_out.scriptPubKey_len != 23 || + memcmp(input->in_out.scriptPubKey, p2sh_redeemscript, 23) != 0) { + PRINTF("witnessUtxo's scriptPubKey does not match redeemScript\n"); + SEND_SW(dc, SW_INCORRECT_DATA); + return false; + } + + input->script_len = redeemScript_length; + memcpy(input->script, redeemScript, redeemScript_length); + } else { + input->script_len = input->in_out.scriptPubKey_len; + memcpy(input->script, input->in_out.scriptPubKey, input->in_out.scriptPubKey_len); + } + } + + int segwit_version = get_policy_segwit_version(st->wallet_policy_map); + uint8_t sighash[32]; + if (segwit_version == 0) { + if (!input->has_sighash_type) { + // segwitv0 inputs default to SIGHASH_ALL + input->sighash_type = SIGHASH_ALL; + } + + if (!compute_sighash_segwitv0(dc, st, hashes, input, cur_input_index, sighash)) + return false; + + if (!sign_sighash_ecdsa_and_yield(dc, + st, + placeholder_info, + input, + cur_input_index, + sighash)) + return false; + } else if (segwit_version == 1) { + if (!input->has_sighash_type) { + // segwitv0 inputs default to SIGHASH_DEFAULT + input->sighash_type = SIGHASH_DEFAULT; + } + + if (!compute_sighash_segwitv1(dc, + st, + hashes, + input, + cur_input_index, + placeholder_info, + sighash)) + return false; + + policy_node_tr_t *policy = (policy_node_tr_t *) st->wallet_policy_map; + if (!placeholder_info->is_tapscript && !isnull_policy_node_tree(&policy->tree)) { + // keypath spend, we compute the taptree hash so that we find it ready + // later in sign_sighash_schnorr_and_yield (which has less available stack). + if (0 > compute_taptree_hash( + dc, + &(wallet_derivation_info_t){ + .address_index = input->in_out.address_index, + .change = input->in_out.is_change ? 1 : 0, + .keys_merkle_root = st->wallet_header_keys_info_merkle_root, + .n_keys = st->wallet_header_n_keys, + .wallet_version = st->wallet_header_version}, + r_policy_node_tree(&policy->tree), + input->taptree_hash)) { + PRINTF("Error while computing taptree hash\n"); + SEND_SW(dc, SW_BAD_STATE); + return false; + } + } + + if (!sign_sighash_schnorr_and_yield(dc, + st, + placeholder_info, + input, + cur_input_index, + sighash)) + return false; + + } else { + SEND_SW(dc, SW_BAD_STATE); // can't happen + return false; + } + } + return true; +} + +static bool __attribute__((noinline)) +fill_taproot_placeholder_info(dispatcher_context_t *dc, + sign_psbt_state_t *st, + const input_info_t *input, + const policy_node_t *tapleaf_ptr, + placeholder_info_t *placeholder_info) { + cx_sha256_t hash_context; + crypto_tr_tapleaf_hash_init(&hash_context); + + // we compute the tapscript once just to compute its length + // this avoids having to store it + int tapscript_len = get_wallet_internal_script_hash( + dc, + tapleaf_ptr, + &(wallet_derivation_info_t){.wallet_version = st->wallet_header_version, + .keys_merkle_root = st->wallet_header_keys_info_merkle_root, + .n_keys = st->wallet_header_n_keys, + .change = input->in_out.is_change, + .address_index = input->in_out.address_index}, + WRAPPED_SCRIPT_TYPE_TAPSCRIPT, + NULL); + if (tapscript_len < 0) { + PRINTF("Failed to compute tapleaf script\n"); + return false; + } + + crypto_hash_update_u8(&hash_context.header, 0xC0); + crypto_hash_update_varint(&hash_context.header, tapscript_len); + + // we compute it again to get add the actual script code to the hash computation + if (0 > + get_wallet_internal_script_hash( + dc, + tapleaf_ptr, + &(wallet_derivation_info_t){.wallet_version = st->wallet_header_version, + .keys_merkle_root = st->wallet_header_keys_info_merkle_root, + .n_keys = st->wallet_header_n_keys, + .change = input->in_out.is_change, + .address_index = input->in_out.address_index}, + WRAPPED_SCRIPT_TYPE_TAPSCRIPT, + &hash_context.header)) { + return false; // should never happen! + } + crypto_hash_digest(&hash_context.header, placeholder_info->tapleaf_hash, 32); + + return true; +} + +static bool __attribute__((noinline)) +sign_transaction(dispatcher_context_t *dc, + sign_psbt_state_t *st, + const uint8_t internal_inputs[static BITVECTOR_REAL_SIZE(MAX_N_INPUTS_CAN_SIGN)]) { + LOG_PROCESSOR(__FILE__, __LINE__, __func__); + + int placeholder_index = 0; + + segwit_hashes_t hashes; + + // compute all the tx-wide hashes + // while this is redundant for legacy transactions, we do it here in order to + // avoid doing it in places that have more stack limitations + if (!compute_segwit_hashes(dc, st, &hashes)) return false; + + // Iterate over all the placeholders that correspond to keys owned by us + while (true) { + placeholder_info_t placeholder_info; + memset(&placeholder_info, 0, sizeof(placeholder_info)); + + const policy_node_t *tapleaf_ptr = NULL; + int n_key_placeholders = get_key_placeholder_by_index(st->wallet_policy_map, + placeholder_index, + &tapleaf_ptr, + &placeholder_info.placeholder); + + if (n_key_placeholders < 0) { + SEND_SW(dc, SW_BAD_STATE); // should never happen + if (!G_swap_state.called_from_swap) { + ui_post_processing_confirm_transaction(dc, false); + } + return false; + } + + if (placeholder_index >= n_key_placeholders) { + // all placeholders were processed + break; + } + + if (tapleaf_ptr != NULL) { + // get_key_placeholder_by_index returns the pointer to the tapleaf only if the key being + // spent is indeed in a tapleaf + placeholder_info.is_tapscript = true; + } + + if (fill_placeholder_info_if_internal(dc, st, &placeholder_info) == true) { + for (unsigned int i = 0; i < st->n_inputs; i++) + if (bitvector_get(internal_inputs, i)) { + input_info_t input; + memset(&input, 0, sizeof(input)); + + input_keys_callback_data_t callback_data = { + .input = &input, + .placeholder_info = &placeholder_info}; + int res = call_get_merkleized_map_with_callback( + dc, + (void *) &callback_data, + st->inputs_root, + st->n_inputs, + i, + (merkle_tree_elements_callback_t) input_keys_callback, + &input.in_out.map); + if (res < 0) { + SEND_SW(dc, SW_INCORRECT_DATA); + if (!G_swap_state.called_from_swap) { + ui_post_processing_confirm_transaction(dc, false); + } + return false; + } + + if (tapleaf_ptr != NULL && !fill_taproot_placeholder_info(dc, + st, + &input, + tapleaf_ptr, + &placeholder_info)) + return false; + + if (!sign_transaction_input(dc, st, &hashes, &placeholder_info, &input, i)) { + if (!G_swap_state.called_from_swap) { + ui_post_processing_confirm_transaction(dc, false); + } + + // we do not send a status word, since sign_transaction_input + // already does it on failure + return false; + } + } + } + + ++placeholder_index; + } + + if (!G_swap_state.called_from_swap) { + ui_post_processing_confirm_transaction(dc, true); + } + return true; } -static void finalize(dispatcher_context_t *dc) { - LOG_PROCESSOR(dc, __FILE__, __LINE__, __func__); +void handler_sign_psbt(dispatcher_context_t *dc, uint8_t protocol_version) { + LOG_PROCESSOR(__FILE__, __LINE__, __func__); + + sign_psbt_state_t st; + memset(&st, 0, sizeof(st)); + + st.protocol_version = protocol_version; + + // read APDU inputs, intialize global state and read global PSBT map + if (!init_global_state(dc, &st)) return; + + // bitmap to keep track of which inputs are internal + uint8_t internal_inputs[BITVECTOR_REAL_SIZE(MAX_N_INPUTS_CAN_SIGN)]; + memset(internal_inputs, 0, sizeof(internal_inputs)); + + /** Inputs verification flow + * + * Go though all the inputs: + * - verify the non_witness_utxo + * - compute value spent + * - detect internal inputs that should be signed, and if there are external inputs or unusual + * sighashes + */ + if (!preprocess_inputs(dc, &st, internal_inputs)) return; + + /** INPUT VERIFICATION ALERTS + * + * Show warnings and allow users to abort in any of the following conditions: + * - pre-taproot transaction with unverified inputs (missing non-witness-utxo) + * - external inputs + * - non-default sighash types + */ + if (!show_alerts(dc, &st, internal_inputs)) return; + + /** OUTPUTS VERIFICATION FLOW + * + * For each output, check if it's a change address. + * Show each output that is not a change address to the user for verification. + */ + if (!process_outputs(dc, &st)) return; + + /** TRANSACTION CONFIRMATION + * + * Show summary info to the user (transaction fees), ask for final confirmation + */ + if (!confirm_transaction(dc, &st)) return; + + /** SIGNING FLOW + * + * For each internal placeholder, and for each internal input, sign using the + * appropriate algorithm. + */ + if (!sign_transaction(dc, &st, internal_inputs)) return; // Only if called from swap, the app should terminate after sending the response if (G_swap_state.called_from_swap) { @@ -1975,4 +2561,4 @@ static void finalize(dispatcher_context_t *dc) { SEND_SW(dc, SW_OK); } -#endif // !defined(HAVE_LIQUID) +#endif // !defined(HAVE_LIQUID) \ No newline at end of file diff --git a/src/handler/sign_psbt.h b/src/handler/sign_psbt.h deleted file mode 100644 index e6374c2c2..000000000 --- a/src/handler/sign_psbt.h +++ /dev/null @@ -1,128 +0,0 @@ -#pragma once - -#if !defined(HAVE_LIQUID) - -#include "../boilerplate/dispatcher.h" -#include "../constants.h" -#include "../common/bitvector.h" -#include "../common/merkle.h" -#include "../common/wallet.h" - -#define MAX_N_INPUTS_CAN_SIGN 512 - -// common info that applies to either the current input or the current output -typedef struct { - merkleized_map_commitment_t map; - - bool unexpected_pubkey_error; // Set to true if the pubkey in the keydata of - // PSBT_{IN,OUT}_BIP32_DERIVATION or - // PSBT_{IN,OUT}_TAP_BIP32_DERIVATION is not the correct length. - - bool has_bip32_derivation; - uint8_t - bip32_derivation_pubkey[33]; // the pubkey of the first PSBT_{IN,OUT}_BIP32_DERIVATION or - // PSBT_{IN,OUT}_TAP_BIP32_DERIVATION key seen. - // Could be 33 (legacy or segwitv0) or 32 bytes long - // (taproot), based on the script type. - - // For an output, its scriptPubKey - // for an input, the prevout's scriptPubKey (either from the non-witness-utxo, or from the - // witness-utxo) - - uint8_t scriptPubKey[MAX_OUTPUT_SCRIPTPUBKEY_LEN]; - size_t scriptPubKey_len; -} in_out_info_t; - -typedef struct { - bool has_witnessUtxo; - bool has_nonWitnessUtxo; - bool has_redeemScript; - bool has_sighash_type; - - uint64_t prevout_amount; // the value of the prevout of the current input - - uint8_t prevout_scriptpubkey[MAX_PREVOUT_SCRIPTPUBKEY_LEN]; - size_t prevout_scriptpubkey_len; - - // the script used when signing, either from the witness utxo or the redeem script - uint8_t script[MAX_PREVOUT_SCRIPTPUBKEY_LEN]; - size_t script_len; - - uint32_t sighash_type; - - int change; - int address_index; -} input_info_t; - -typedef struct { - uint64_t value; -} output_info_t; - -typedef struct { - machine_context_t ctx; - - uint32_t tx_version; - uint32_t locktime; - - unsigned int n_inputs; - uint8_t inputs_root[32]; // merkle root of the vector of input maps commitments - unsigned int n_outputs; - uint8_t outputs_root[32]; // merkle root of the vector of output maps commitments - - bool is_wallet_canonical; - int address_type; // only relevant for canonical wallets - int bip44_purpose; // only relevant for canonical wallets - - uint8_t wallet_header_keys_info_merkle_root[32]; - size_t wallet_header_n_keys; - union { - uint8_t wallet_policy_map_bytes[MAX_POLICY_MAP_BYTES]; - policy_node_t wallet_policy_map; - }; - - uint32_t master_key_fingerprint; - - // bitmap to track of which inputs are internal - uint8_t internal_inputs[BITVECTOR_REAL_SIZE(MAX_N_INPUTS_CAN_SIGN)]; - - union { - unsigned int cur_input_index; - unsigned int cur_output_index; - }; - - struct { - in_out_info_t in_out; - union { - input_info_t input; - output_info_t output; - }; - } cur; - - uint8_t sighash[32]; - - struct { - uint8_t sha_prevouts[32]; - uint8_t sha_amounts[32]; - uint8_t sha_scriptpubkeys[32]; - uint8_t sha_sequences[32]; - uint8_t sha_outputs[32]; - } hashes; - bool segwit_hashes_computed; - - uint64_t inputs_total_value; - uint64_t outputs_total_value; - - uint64_t internal_inputs_total_value; - - uint64_t change_outputs_total_value; - - int external_outputs_count; // count of external outputs that are shown to the user - int change_count; // count of outputs compatible with change outputs - - int our_key_derivation_length; - uint32_t our_key_derivation[MAX_BIP32_PATH_STEPS]; -} sign_psbt_state_t; - -void handler_sign_psbt(dispatcher_context_t *dispatcher_context); - -#endif // !defined(HAVE_LIQUID) diff --git a/src/handler/sign_psbt/compare_wallet_script_at_path.c b/src/handler/sign_psbt/compare_wallet_script_at_path.c index a50ee1e25..08f2c2f8d 100644 --- a/src/handler/sign_psbt/compare_wallet_script_at_path.c +++ b/src/handler/sign_psbt/compare_wallet_script_at_path.c @@ -12,24 +12,24 @@ int compare_wallet_script_at_path(dispatcher_context_t *dispatcher_context, uint32_t change, uint32_t address_index, const policy_node_t *policy, + int wallet_version, const uint8_t keys_merkle_root[static 32], uint32_t n_keys, const uint8_t expected_script[], size_t expected_script_len) { - LOG_PROCESSOR(dispatcher_context, __FILE__, __LINE__, __func__); + LOG_PROCESSOR(__FILE__, __LINE__, __func__); // derive wallet's scriptPubKey, check if it matches the expected one uint8_t wallet_script[MAX_PREVOUT_SCRIPTPUBKEY_LEN]; - buffer_t wallet_script_buf = buffer_create(wallet_script, sizeof(wallet_script)); - - int wallet_script_len = call_get_wallet_script(dispatcher_context, - policy, - keys_merkle_root, - n_keys, - change, - address_index, - &wallet_script_buf, - NULL); + int wallet_script_len = + get_wallet_script(dispatcher_context, + policy, + &(wallet_derivation_info_t){.wallet_version = wallet_version, + .keys_merkle_root = keys_merkle_root, + .n_keys = n_keys, + .change = change, + .address_index = address_index}, + wallet_script); if (wallet_script_len < 0) { PRINTF("Failed to get wallet script\n"); return -1; // shouldn't happen diff --git a/src/handler/sign_psbt/compare_wallet_script_at_path.h b/src/handler/sign_psbt/compare_wallet_script_at_path.h index 028c1b86c..36f50665d 100644 --- a/src/handler/sign_psbt/compare_wallet_script_at_path.h +++ b/src/handler/sign_psbt/compare_wallet_script_at_path.h @@ -11,6 +11,7 @@ int compare_wallet_script_at_path(dispatcher_context_t *dispatcher_context, uint32_t change, uint32_t address_index, const policy_node_t *policy, + int wallet_version, const uint8_t keys_merkle_root[static 32], uint32_t n_keys, const uint8_t expected_script[], diff --git a/src/handler/sign_psbt/extract_bip32_derivation.c b/src/handler/sign_psbt/extract_bip32_derivation.c new file mode 100644 index 000000000..c03487650 --- /dev/null +++ b/src/handler/sign_psbt/extract_bip32_derivation.c @@ -0,0 +1,120 @@ +#include +#include + +#include "./extract_bip32_derivation.h" + +#include "../lib/stream_merkle_leaf_element.h" + +#include "../../common/psbt.h" +#include "../../common/read.h" +#include "../../common/varint.h" + +typedef struct { + int psbt_key_type; + uint8_t *out; + int total_data_length; + int out_data_length; // set to -1 before it's computed on the first call of + // fpt_der_data_callback + int result; +} fpt_der_callback_data_t; + +static void fpt_der_data_len_callback(size_t data_length, void *callback_state) { + ((fpt_der_callback_data_t *) callback_state)->total_data_length = data_length; +} + +static void fpt_der_data_callback(buffer_t *data, void *callback_state) { + fpt_der_callback_data_t *cs = (fpt_der_callback_data_t *) callback_state; + + if (cs->result < 0) return; // an error already happened, ignore the rest + + // on the first call, compute the length the fingerprint + derivation part of the message. + // - if non-taproot, then it's the entire message; + // - if taproot, it's the message after the hashes are removed. + if (cs->out_data_length == -1) { + bool is_tap = cs->psbt_key_type == PSBT_IN_TAP_BIP32_DERIVATION || + cs->psbt_key_type == PSBT_OUT_TAP_BIP32_DERIVATION; + + if (!is_tap) { + cs->out_data_length = cs->total_data_length; + } else { + uint64_t n_hashes; + if ((!buffer_read_varint(data, &n_hashes)) || + (cs->total_data_length < varint_size(n_hashes) + 32 * (int) n_hashes)) { + PRINTF("Unexpected: initial callback message too short\n"); + cs->result = -1; + return; + } + + int out_data_length = + cs->total_data_length - varint_size(n_hashes) - 32 * (int) n_hashes; + + if (out_data_length > 4 * (1 + MAX_BIP32_PATH_STEPS)) { + PRINTF("BIP32 derivation longer than supported in psbt derivation\n"); + cs->result = -1; + return; + } + cs->out_data_length = out_data_length; + } + } + + // then, keep exactly the last cs->out_data_length streamed bytes; as they might be streamed + // across multiple messages, we need to handle it appropriately + + if (data->size >= (size_t) cs->out_data_length) { + // only keep the last suffix of length cs->out_data_length + // discard any pre-existing data from previous calls + buffer_seek_end(data, cs->out_data_length); + buffer_read_bytes(data, cs->out, cs->out_data_length); + } else { + buffer_seek_set(data, 0); + // We need to concatenate the new data we are reading with any previously read data. + // Since we can only read data->size bytes, only the last d = out_data_length - data->size + // previous bytes are kept; they move from position out_data_length - d + 1 to position 0. + int d = cs->out_data_length - data->size; + memmove(cs->out, &cs->out[cs->out_data_length - d + 1], d); + // starting at position d, we read the entire data + buffer_read_bytes(data, &cs->out[d], data->size); + } +} + +int extract_bip32_derivation(dispatcher_context_t *dc, + int psbt_key_type, + const uint8_t values_root[static 32], + uint32_t merkle_tree_size, + int index, + uint32_t out[static 1 + MAX_BIP32_PATH_STEPS]) { + fpt_der_callback_data_t callback_state; + + // we could recycle out instead of creating a new array, but we rather keep the code + // clean, as this is not used in memory-critical parts. + uint8_t out_bytes[4 * (1 + MAX_BIP32_PATH_STEPS)]; + + callback_state.psbt_key_type = psbt_key_type; + callback_state.out = out_bytes; + callback_state.out_data_length = -1; + callback_state.result = 0; + + int len = call_stream_merkle_leaf_element(dc, + values_root, + merkle_tree_size, + index, + fpt_der_data_len_callback, + fpt_der_data_callback, + &callback_state); + + if (len < 0 || callback_state.result < 0 || callback_state.out_data_length < 4 || + callback_state.out_data_length % 4 != 0) { + PRINTF("Unexpected error while reading a BIP32 derivation\n"); + return -1; + } + + for (int i = 0; i < callback_state.out_data_length / 4; i++) { + if (i == 0) { + out[i] = read_u32_be(out_bytes, 4 * i); + } else { + out[i] = read_u32_le(out_bytes, 4 * i); + } + } + + return (callback_state.out_data_length / 4) - 1; +} \ No newline at end of file diff --git a/src/handler/sign_psbt/extract_bip32_derivation.h b/src/handler/sign_psbt/extract_bip32_derivation.h new file mode 100644 index 000000000..2fbda4210 --- /dev/null +++ b/src/handler/sign_psbt/extract_bip32_derivation.h @@ -0,0 +1,17 @@ +#pragma once + +#include "../../boilerplate/dispatcher.h" +#include "../../common/bip32.h" + +/** + * Convenience function to extract the BIP32 derivation part from a PSBT field key type + * PSBT_{IN,OUT}_BIP32_DERIVATION or PSBT_{IN,OUT}_TAP_BIP32_DERIVATION. + * This is needed because the tapscript versions can be very large, so it needs to + * be parsed while streaming it. + */ +int extract_bip32_derivation(dispatcher_context_t *dc, + int psbt_key_type, + const uint8_t values_root[static 32], + uint32_t merkle_tree_size, + int index, + uint32_t out[static 1 + MAX_BIP32_PATH_STEPS]); \ No newline at end of file diff --git a/src/handler/sign_psbt/get_fingerprint_and_path.c b/src/handler/sign_psbt/get_fingerprint_and_path.c deleted file mode 100644 index fcb287680..000000000 --- a/src/handler/sign_psbt/get_fingerprint_and_path.c +++ /dev/null @@ -1,90 +0,0 @@ -#include -#include - -#include "get_fingerprint_and_path.h" - -#include "../lib/get_merkleized_map_value.h" - -#include "../../common/read.h" - -int get_fingerprint_and_path(dispatcher_context_t *dispatcher_context, - const merkleized_map_commitment_t *map, - const uint8_t *key, - int key_len, - uint32_t *out_fingerprint, - uint32_t out_bip32_path[static MAX_BIP32_PATH_STEPS]) { - LOG_PROCESSOR(dispatcher_context, __FILE__, __LINE__, __func__); - - uint8_t fpt_der[4 + 4 * MAX_BIP32_PATH_STEPS]; - - int len = call_get_merkleized_map_value(dispatcher_context, - map, - key, - key_len, - fpt_der, - sizeof(fpt_der)); - - if (len < 4 || len % 4 != 0) { - return -1; - } - - int bip32_path_len = (len - 4) / 4; - - if (bip32_path_len > MAX_BIP32_PATH_STEPS) { - return -1; - } - - *out_fingerprint = read_u32_le(fpt_der, 0); - - uint8_t *derivation_path = fpt_der + 4; - for (int i = 0; i < bip32_path_len; i++) { - out_bip32_path[i] = read_u32_le(derivation_path, 4 * i); - } - - return bip32_path_len; -} - -int get_emptyhashes_fingerprint_and_path(dispatcher_context_t *dispatcher_context, - const merkleized_map_commitment_t *map, - const uint8_t *key, - int key_len, - uint32_t *out_fingerprint, - uint32_t out_bip32_path[static MAX_BIP32_PATH_STEPS]) { - LOG_PROCESSOR(dispatcher_context, __FILE__, __LINE__, __func__); - - uint8_t hasheslen_fpt_der[1 + 4 + 4 * MAX_BIP32_PATH_STEPS]; - - int len = call_get_merkleized_map_value(dispatcher_context, - map, - key, - key_len, - hasheslen_fpt_der, - sizeof(hasheslen_fpt_der)); - - if (len < 1 + 4 || (len - 1) % 4 != 0) { - return -1; - } - - if (hasheslen_fpt_der[0] != 0) { - // this function only handles the case when hashes_len == 0 - // (always the case for key path spending) - PRINTF("Unexpected hashes_len != 0"); - - return -1; - } - - int bip32_path_len = (len - 1 - 4) / 4; - - if (bip32_path_len > MAX_BIP32_PATH_STEPS) { - return -1; - } - - *out_fingerprint = read_u32_le(hasheslen_fpt_der, 1); - - uint8_t *derivation_path = hasheslen_fpt_der + 1 + 4; - for (int i = 0; i < bip32_path_len; i++) { - out_bip32_path[i] = read_u32_le(derivation_path, 4 * i); - } - - return bip32_path_len; -} \ No newline at end of file diff --git a/src/handler/sign_psbt/get_fingerprint_and_path.h b/src/handler/sign_psbt/get_fingerprint_and_path.h deleted file mode 100644 index 7426f292f..000000000 --- a/src/handler/sign_psbt/get_fingerprint_and_path.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#include "../../boilerplate/dispatcher.h" -#include "../../common/merkle.h" -#include "../../common/wallet.h" - -/** - * Used to read PSBT_IN_BIP32_DERIVATION or PSBT_OUT_BIP32_DERIVATION entries from a PSBT map. - * Returns the length of the BIP32 path on success, a negative number on failure. - * - * TODO: more precise docs - */ -int get_fingerprint_and_path(dispatcher_context_t *dispatcher_context, - const merkleized_map_commitment_t *map, - const uint8_t *key, - int key_len, - uint32_t *out_fingerprint, - uint32_t out_bip32_path[static MAX_BIP32_PATH_STEPS]); - -/** - * Used to read PSBT_IN_TAP_BIP32_DERIVATION or PSBT_OUT_TAP_BIP32_DERIVATION entries from a PSBT - * map; fails if the hashes_len is not 0 (only useful for keypath spending). - * Returns the length of the BIP32 path on success, a negative number on failure. - * - * TODO: more precise docs - */ -int get_emptyhashes_fingerprint_and_path(dispatcher_context_t *dispatcher_context, - const merkleized_map_commitment_t *map, - const uint8_t *key, - int key_len, - uint32_t *out_fingerprint, - uint32_t out_bip32_path[static MAX_BIP32_PATH_STEPS]); diff --git a/src/handler/sign_psbt/is_in_out_internal.c b/src/handler/sign_psbt/is_in_out_internal.c deleted file mode 100644 index 6baca3d94..000000000 --- a/src/handler/sign_psbt/is_in_out_internal.c +++ /dev/null @@ -1,112 +0,0 @@ -#include - -#include "is_in_out_internal.h" -#include "compare_wallet_script_at_path.h" -#include "get_fingerprint_and_path.h" - -#include "../../common/bip32.h" -#include "../../common/psbt.h" -#include "../../common/script.h" -#include "../../constants.h" - -int is_in_out_internal(dispatcher_context_t *dispatcher_context, - const transaction_signer_state_t *state, - const in_out_info_t *in_out_info, - bool is_input, - bool has_bip32_derivation) { - if (!has_bip32_derivation) { - PRINTF("No BIP32 derivation\n"); - return 0; - } -#ifdef HAVE_LIQUID - if (!state->wallet_policy_map_unwrapped) { - PRINTF("Wallet policy doesn't exist\n"); - return -1; - } -#endif - - // get path, obtain change and address_index, - int bip32_path_len; - uint32_t bip32_path[MAX_BIP32_PATH_STEPS]; - uint32_t fingerprint; - - int script_type = get_script_type(in_out_info->scriptPubKey, in_out_info->scriptPubKey_len); - if (script_type == -1) { - // OP_RETURN outputs would return -1 despite being valid; but for those, there shouldn't be - // any BIP32 derivation in the PSBT, so no special case is needed here. - - PRINTF("Invalid script type\n"); - return -1; - } else if (script_type == SCRIPT_TYPE_UNKNOWN_SEGWIT) { - // An unknown but valid segwit script type, definitely external. - return 0; - } else if (script_type == SCRIPT_TYPE_P2TR) { - // taproot output, use PSBT_{IN,OUT}_TAP_BIP32_DERIVATION - uint8_t key[1 + 32]; - key[0] = is_input ? PSBT_IN_TAP_BIP32_DERIVATION : PSBT_OUT_TAP_BIP32_DERIVATION; - memcpy(key + 1, in_out_info->bip32_derivation_pubkey, sizeof(key) - 1); - - bip32_path_len = get_emptyhashes_fingerprint_and_path(dispatcher_context, - &in_out_info->map, - key, - sizeof(key), - &fingerprint, - bip32_path); - } else { - // legacy or segwitv0 output, use PSBT_OUT_BIP32_DERIVATION - uint8_t key[1 + 33]; - key[0] = is_input ? PSBT_IN_BIP32_DERIVATION : PSBT_OUT_BIP32_DERIVATION; - memcpy(key + 1, in_out_info->bip32_derivation_pubkey, sizeof(key) - 1); - - bip32_path_len = get_fingerprint_and_path(dispatcher_context, - &in_out_info->map, - key, - sizeof(key), - &fingerprint, - bip32_path); - } - - if (bip32_path_len < 0) { - PRINTF("Could not get BIP32 path\n"); - return -1; - } - - // As per wallet policy assumptions, the path must have change and address index - if (bip32_path_len < 2) { - PRINTF("BIP32 path too short\n"); - return 0; - } - uint32_t change = bip32_path[bip32_path_len - 2]; - uint32_t address_index = bip32_path[bip32_path_len - 1]; - - if (!is_input && change != 1) { - // unlike for inputs, change must be 1 for this output to be considered internal - return 0; - } - - if (state->is_wallet_canonical) { - // for canonical wallets, the path must be exactly as expected for a change output - uint32_t coin_types[2] = {BIP44_COIN_TYPE, BIP44_COIN_TYPE_2}; - if (!is_address_path_standard(bip32_path, - bip32_path_len, - state->bip44_purpose, - coin_types, - 2, - is_input ? -1 : 1)) { - return 0; - } - } - - return compare_wallet_script_at_path(dispatcher_context, - change, - address_index, -#ifdef HAVE_LIQUID - state->wallet_policy_map_unwrapped, -#else - &state->wallet_policy_map, -#endif - state->wallet_header_keys_info_merkle_root, - state->wallet_header_n_keys, - in_out_info->scriptPubKey, - in_out_info->scriptPubKey_len); -} \ No newline at end of file diff --git a/src/handler/sign_psbt/is_in_out_internal.h b/src/handler/sign_psbt/is_in_out_internal.h deleted file mode 100644 index 965c39b42..000000000 --- a/src/handler/sign_psbt/is_in_out_internal.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include "../sign_psbt.h" -#include "../liquid_sign_pset.h" -#include "../../common/wallet.h" - -#ifdef HAVE_LIQUID -typedef sign_pset_state_t transaction_signer_state_t; -#else -typedef sign_psbt_state_t transaction_signer_state_t; -#endif - -/** - * Verifies if a certain input/output is internal (that is, controlled by the wallet being used for - * signing). This uses the state of sign_psbt and is not meant as a general-purpose function; - * rather, it avoids some substantial code duplication and removes complexity from sign_psbt. - * - * @return 1 if the given input/output is internal; 0 if external; -1 on error. - */ -int is_in_out_internal(dispatcher_context_t *dispatcher_context, - const transaction_signer_state_t *state, - const in_out_info_t *in_out_info, - bool is_input, - bool has_bip32_derivation); diff --git a/src/handler/sign_psbt/update_hashes_with_map_value.c b/src/handler/sign_psbt/update_hashes_with_map_value.c index 6cc10b79f..6f473ad1a 100644 --- a/src/handler/sign_psbt/update_hashes_with_map_value.c +++ b/src/handler/sign_psbt/update_hashes_with_map_value.c @@ -37,7 +37,7 @@ int update_hashes_with_map_value(dispatcher_context_t *dispatcher_context, int key_len, cx_hash_t *hash_unprefixed, cx_hash_t *hash_prefixed) { - LOG_PROCESSOR(dispatcher_context, __FILE__, __LINE__, __func__); + LOG_PROCESSOR(__FILE__, __LINE__, __func__); callback_state_t cb_state = {.hash_unprefixed = hash_unprefixed, .hash_prefixed = hash_prefixed}; diff --git a/src/handler/sign_psbt/update_hashes_with_map_value.h b/src/handler/sign_psbt/update_hashes_with_map_value.h index bc81d298a..e40b15854 100644 --- a/src/handler/sign_psbt/update_hashes_with_map_value.h +++ b/src/handler/sign_psbt/update_hashes_with_map_value.h @@ -4,7 +4,7 @@ #include "../../common/merkle.h" /** - * Streams the requested preimage from a merkleized map, updating the given has contexts + * Streams the requested preimage from a merkleized map, updating the given hash contexts * appropriately. Both hash_unprefixed and hash_prefixed are optional, but if not NULL, it is * responsibility of the caller to ensure that they are initialized. * diff --git a/src/liquid/blech32.h b/src/liquid/blech32.h index 299b95a48..5776d633d 100644 --- a/src/liquid/blech32.h +++ b/src/liquid/blech32.h @@ -1,4 +1,5 @@ #pragma once +#ifdef HAVE_LIQUID #include // size_t #include // uint*_t @@ -54,3 +55,5 @@ WARN_UNUSED_RESULT int blech32_addr_decode(uint8_t *witver, size_t *witdata_len, const char *hrp, const char *addr); + +#endif // HAVE_LIQUID \ No newline at end of file diff --git a/src/liquid/liquid.c b/src/liquid/liquid.c index 5351e8a79..08c4c98c0 100644 --- a/src/liquid/liquid.c +++ b/src/liquid/liquid.c @@ -1,3 +1,5 @@ +#ifdef HAVE_LIQUID + #include #include #include "crypto.h" @@ -7,8 +9,6 @@ #include "../common/script.h" #include "tests.h" -#ifdef HAVE_LIQUID - #ifdef SKIP_FOR_CMOCKA // disable problematic macros when compiling unit tests with CMOCKA #define PRINTF(...) diff --git a/src/liquid/liquid.h b/src/liquid/liquid.h index 65bb75f99..9b857e6db 100644 --- a/src/liquid/liquid.h +++ b/src/liquid/liquid.h @@ -1,4 +1,5 @@ #pragma once +#ifdef HAVE_LIQUID #include // size_t #include // uint*_t @@ -252,3 +253,5 @@ bool liquid_is_master_blinding_key_ours(const uint8_t mbk[static 32]); static inline bool liquid_policy_is_blinded(const policy_node_t *policy) { return policy && (TOKEN_CT == policy->type); } + +#endif // HAVE_LIQUID diff --git a/src/liquid/liquid_asset_metadata.c b/src/liquid/liquid_asset_metadata.c index 9e87274ca..c55ca0fb0 100644 --- a/src/liquid/liquid_asset_metadata.c +++ b/src/liquid/liquid_asset_metadata.c @@ -1,3 +1,5 @@ +#ifdef HAVE_LIQUID + #include #include @@ -416,3 +418,4 @@ asset_metadata_status_t liquid_get_asset_metadata_by_leaf_index( } #endif // SKIP_FOR_CMOCKA +#endif // HAVE_LIQUID \ No newline at end of file diff --git a/src/liquid/liquid_asset_metadata.h b/src/liquid/liquid_asset_metadata.h index 8cc3e7600..be393279f 100644 --- a/src/liquid/liquid_asset_metadata.h +++ b/src/liquid/liquid_asset_metadata.h @@ -1,4 +1,5 @@ #pragma once +#ifdef HAVE_LIQUID #include #include @@ -115,3 +116,4 @@ WARN_UNUSED_RESULT asset_metadata_status_t liquid_get_asset_metadata_by_leaf_ind asset_info_ext_t *ext_asset_info); #endif // SKIP_FOR_CMOCKA +#endif // HAVE_LIQUID diff --git a/src/liquid/liquid_assets.h b/src/liquid/liquid_assets.h index 4941e96a3..d7a462345 100644 --- a/src/liquid/liquid_assets.h +++ b/src/liquid/liquid_assets.h @@ -1,7 +1,5 @@ #pragma once - -#if defined HAVE_LIQUID && !defined(_LIQUID_ASSETS_H__) -#define _LIQUID_ASSETS_H__ +#ifdef HAVE_LIQUID #include #include @@ -121,5 +119,4 @@ WARN_UNUSED_RESULT bool liquid_compute_asset_tag(const uint8_t contract_hash[sta void liquid_format_asset_tag(const uint8_t asset_tag[static LIQUID_ASSET_TAG_LEN], char out[static LIQUID_ASSET_TAG_HEX_LEN + 1]); -#endif - +#endif // HAVE_LIQUID diff --git a/src/liquid/liquid_hash_wrappers.h b/src/liquid/liquid_hash_wrappers.h index fad9b5506..53de8651c 100644 --- a/src/liquid/liquid_hash_wrappers.h +++ b/src/liquid/liquid_hash_wrappers.h @@ -1,4 +1,5 @@ #pragma once +#ifdef HAVE_LIQUID #include // size_t #include // uint*_t @@ -120,3 +121,5 @@ WARN_UNUSED_RESULT static inline bool hash_update_u32_le(cx_hash_t *hash_context WARN_UNUSED_RESULT static inline bool hash_digest(cx_hash_t *hash_context, uint8_t *out, size_t out_len) { return CX_OK == cx_hash_no_throw(hash_context, CX_LAST, NULL, 0, out, out_len); } + +#endif // HAVE_LIQUID \ No newline at end of file diff --git a/src/liquid/liquid_proofs.h b/src/liquid/liquid_proofs.h index 6ab86059c..aad21190c 100644 --- a/src/liquid/liquid_proofs.h +++ b/src/liquid/liquid_proofs.h @@ -3,6 +3,7 @@ */ #pragma once +#ifdef HAVE_LIQUID #include // size_t #include // uint*_t @@ -90,3 +91,5 @@ WARN_UNUSED_RESULT bool liquid_surjectionproof_verify_single(const uint8_t *proo */ WARN_UNUSED_RESULT bool liquid_generator_generate(uint8_t gen[static LIQUID_GENERATOR_LEN], const uint8_t seed32_reversed[static 32]); + +#endif // HAVE_LIQUID \ No newline at end of file diff --git a/src/liquid/liquid_wallet.c b/src/liquid/liquid_wallet.c new file mode 100644 index 000000000..8d92e7699 --- /dev/null +++ b/src/liquid/liquid_wallet.c @@ -0,0 +1,630 @@ +#ifdef HAVE_LIQUID + +#include +#include +#include + +#include "../common/base58.h" +#include "../common/bip32.h" +#include "../common/buffer.h" +#include "../common/script.h" +#include "../common/segwit_addr.h" +#include "../common/wallet.h" + +#include "../cxram_stash.h" + +#include "../boilerplate/sw.h" + +#include "../debug-helpers/debug.h" + +#ifndef SKIP_FOR_CMOCKA +#include "../crypto.h" +#else +// disable problematic macros when compiling unit tests with CMOCKA +#define PRINTF(...) +#define PIC(x) (x) +#endif + + +/// Maximum length of blinding key returned token prefix in characters +#define TOKEN_PREFIX_LEN 7 + +/// Bits specifying used characters +typedef enum { + // BASIC CATEGORIES ///////////////////////////////////////////// + /// Numbers 0...9 + CHARSET_NUM = 1 << 0, + /// Lowercase latin letters a...f + CHARSET_ALPHA_AF_LOW = 1 << 1, + /// Lowercase latin letters g...z + CHARSET_ALPHA_GZ_LOW = 1 << 2, + /// Uppercase latin letters a...f + CHARSET_ALPHA_AF_UP = 1 << 3, + /// Uppercase latin letters g...z + CHARSET_ALPHA_GZ_UP = 1 << 4, + /// Brackets () + CHARSET_BRACKETS = 1 << 5, + /// Other characters + CHARSET_OTHER = 1 << 6, + + // COMBINATIONS OT TRAITS /////////////////////////////////////// + /// Lowercase hexadecimal numbers + CHARSET_HEX_LOW = (CHARSET_NUM|CHARSET_ALPHA_AF_LOW), + /// Lowercase latin letters + CHARSET_ALPHA_LOW = (CHARSET_ALPHA_AF_LOW|CHARSET_ALPHA_GZ_LOW), + /// Uppercase latin letters + CHARSET_ALPHA_UP = (CHARSET_ALPHA_AF_UP|CHARSET_ALPHA_GZ_UP), + /// Latin letters of any case + CHARSET_ALPHA = (CHARSET_ALPHA_LOW|CHARSET_ALPHA_UP), + /// Alphanumeric: numbers and latin letters of any case + CHARSET_ALPHANUM = (CHARSET_NUM|CHARSET_ALPHA), + /// Alphanumeric: numbers and lowercase latin letters + CHARSET_ALPHANUM_LOW = (CHARSET_NUM|CHARSET_ALPHA_LOW), + /// Alphanumeric: numbers and uppercase latin letters + CHARSET_ALPHANUM_UP = (CHARSET_NUM|CHARSET_ALPHA_UP), +} charset_t; + +/// Token scan result +typedef struct { + /// Detected token length + size_t token_len; + /// Charset detected, a combination of `charset_t` flags + uint32_t charset; + /// Token prefix string, null terminated. Containins up to TOKEN_PREFIX_LEN first + /// characters of the token. + char prefix[TOKEN_PREFIX_LEN + 1]; +} token_scan_result_t; + +/// Wildcard signature +typedef struct { + /// Wildcard numeric identifier. + policy_map_key_wildcard_id_t id; + /// Wildcard represented as a text string. + const char *str; +} wildcard_signature_t; + +// TODO: consider removing +/// Table of wildcard signatures +const wildcard_signature_t WILDCARD_SIGNATURES[] = { + { .id = KEY_WILDCARD_NONE, .str = "" }, + { .id = KEY_WILDCARD_ANY, .str = "/**" }, + { .id = KEY_WILDCARD_STANDARD_CHAINS, .str = "/<0;1>/*" }, + { .id = KEY_WILDCARD_EXTERNAL_CHAIN, .str = "/0/*" }, + { .id = KEY_WILDCARD_INTERNAL_CHAIN, .str = "/1/*" } +}; +/// Number of records in the table of wildcard signatures +static const size_t N_WILDCARD_SIGNATURES = + sizeof(WILDCARD_SIGNATURES) / sizeof(WILDCARD_SIGNATURES[0]); + +/** + * Scans a single token in the buffer while keeping its position. + * + * @param[in] buffer + * Input buffer with a token to scan, position is preserved. + * @param[in] separator + * A separator character on which scan process is stopped. + * @param[out] result + * Pointer to structure instance receiving scan results. + * + * @return true if sucessfull, false in case of error + */ +static bool scan_token(buffer_t *buffer, + char separator, + token_scan_result_t *result) { + buffer_snapshot_t in_buf_snapshot = buffer_snapshot(buffer); + memset(result, 0, sizeof(token_scan_result_t)); + + char c; + while (buffer_peek(buffer, (uint8_t*)&c) && c != separator) { + if (++result->token_len < sizeof(result->prefix)) { + result->prefix[result->token_len - 1] = c; + } + + if (c >= '0' && c <= '9') { + result->charset |= CHARSET_NUM; + } else if (c >= 'a' && c <= 'f') { + result->charset |= CHARSET_ALPHA_AF_LOW; + } else if (c >= 'g' && c <= 'z') { + result->charset |= CHARSET_ALPHA_GZ_LOW; + } else if (c >= 'A' && c <= 'F') { + result->charset |= CHARSET_ALPHA_AF_UP; + } else if (c >= 'G' && c <= 'Z') { + result->charset |= CHARSET_ALPHA_GZ_UP; + } else if (c == '(' || c == ')') { + result->charset |= CHARSET_BRACKETS; + } else { + result->charset |= CHARSET_OTHER; + } + buffer_seek_cur(buffer, 1); + } + + buffer_restore(buffer, in_buf_snapshot); + return !!result->token_len; +} + +/** + * Reads lowercase hexadecimal data bytes from buffer. + * + * @param[in,out] buffer + * Input buffer. + * @param[out] out + * Pointer to output buffer. It is the responsibility of the caller to make sure that the output + * buffer is not smaller than the value in variable pointed by `out_len`. + * @param[in] out_len + * Maximum number of bytes to read, must be no greater than INT_MAX. + * @param[in] terminator + * Terminating character used to stop reading input data. Set to -1 if this feature is not needed. + * + * @return length of outputted data in bytes or -1 in case of error + */ +static int read_lowercase_hex_data(buffer_t *buffer, + uint8_t *out, + size_t out_len, + int terminator) { + size_t out_idx = 0; + uint8_t c; + char num[2]; + + if (out_len > INT_MAX) { + return -1; + } + + while (buffer_peek(buffer, &c) && c != terminator && out_idx < out_len) { + if (!buffer_read_bytes(buffer, (uint8_t *) num, 2)) { + return -1; + } + if (!is_lowercase_hex(num[0]) || !is_lowercase_hex(num[1])) { + return -1; + } + out[out_idx++] = lowercase_hex_to_int(num[0]) << 4 | lowercase_hex_to_int(num[1]); + } + return (int)out_idx; +} + +/** + * Finds the numeric wildcard identifier corresponding to a given wildcard string. + * + * @param[in] wildcard_str + * Wildcard represented as a text string. + * + * @return a non-negative wildcard identifier or -1 if not found + */ +static int find_wildcard(const char *wildcard_str) { + for (size_t i = 0; i < N_WILDCARD_SIGNATURES; ++i) { + const char *curr_str = (const char *) PIC(WILDCARD_SIGNATURES[i].str); + if (0 == strncmp(curr_str, wildcard_str, MAX_POLICY_MAP_KEY_WILDCARD_LEN)) { + return (int) PIC(WILDCARD_SIGNATURES[i].id); + } + } + return -1; +} + +/** + * Prototype for function implementing blinding key parser. + * + * This function should parse a BLINDING_KEY expression enclosed in ct() tag as specified in + * ELIP: 150 and ELIP 151 from the `in_buf` buffer, aallocating the nodes and variables in + * `out_buf`. + * + * @param[in,out] ctx + * Script parser context. + * @param[in] token_len + * Size of key token in characters. + * + * @return 0 if successful, a negative number on error. + */ +typedef int (*blinding_key_parser_t)(script_parser_ctx_t *ctx, size_t token_len); + +/** + * Parses slip77() expression within BLINDING_KEY context. + * + * Corresponds to `blinding_key_parser_t` type, refer to its description for more details. + * + * @param[in,out] ctx + * Script parser context. + * @param[in] token_len + * Size of key token in characters. + * + * @return 0 if successful, a negative number on error. + */ +static int parse_ct_slip77(script_parser_ctx_t *ctx, size_t token_len) { + UNUSED(token_len); + + policy_node_blinding_privkey_t *node = (policy_node_blinding_privkey_t *) + buffer_alloc(ctx->out_buf, sizeof(policy_node_blinding_privkey_t), true); + if (NULL == node) { + return -1; + } + node->type = TOKEN_SLIP77; + + bool ok = buffer_skip_data(ctx->in_buf, (const uint8_t*) "slip77(", sizeof("slip77(") - 1); + ok = ok && sizeof(node->privkey) == + read_lowercase_hex_data(ctx->in_buf, node->privkey, sizeof(node->privkey), ')'); + ok = ok && buffer_skip_data(ctx->in_buf, (const uint8_t*) ")", 1); + + return ok ? 0 : -1; +} + +/** + * Parses hexadecimal public key expression within BLINDING_KEY context. + * + * Corresponds to `blinding_key_parser_t` type, refer to its description for more details. + * + * @param[in,out] ctx + * Script parser context. + * @param[in] token_len + * Size of key token in characters. + * + * @return 0 if successful, a negative number on error. + */ +static int parse_ct_hex_pubkey(script_parser_ctx_t *ctx, size_t token_len) { + UNUSED(token_len); + + policy_node_blinding_pubkey_t *node = (policy_node_blinding_pubkey_t *) + buffer_alloc(ctx->out_buf, sizeof(policy_node_blinding_pubkey_t), true); + if (NULL == node) { + return -1; + } + node->type = TOKEN_HEX_PUB; + + bool ok = sizeof(node->pubkey) == + read_lowercase_hex_data(ctx->in_buf, node->pubkey, sizeof(node->pubkey), ','); + + return ok && (0x02 == node->pubkey[0] || 0x03 == node->pubkey[0]) ? 0 : -1; +} + +/** + * Parses hexadecimal private key expression within BLINDING_KEY context. + * + * Corresponds to `blinding_key_parser_t` type, refer to its description for more details. + * + * @param[in,out] ctx + * Script parser context. + * @param[in] token_len + * Size of key token in characters. + * + * @return 0 if successful, a negative number on error. + */ +static int parse_ct_hex_privkey(script_parser_ctx_t *ctx, size_t token_len) { + UNUSED(token_len); + + policy_node_blinding_privkey_t *node = (policy_node_blinding_privkey_t *) + buffer_alloc(ctx->out_buf, sizeof(policy_node_blinding_privkey_t), true); + if (NULL == node) { + return -1; + } + node->type = TOKEN_HEX_PRV; + + bool ok = sizeof(node->privkey) == + read_lowercase_hex_data(ctx->in_buf, node->privkey, sizeof(node->privkey), ','); + + return ok ? 0 : -1; +} + +/** + * Parses xpub expression within BLINDING_KEY context. + * + * Corresponds to `blinding_key_parser_t` type, refer to its description for more details. + * + * @param[in,out] ctx + * Script parser context. + * @param[in] token_len + * Size of key token in characters. + * + * @return 0 if successful, a negative number on error. + */ +static int parse_ct_xpub(script_parser_ctx_t *ctx, size_t token_len) { + serialized_extended_pubkey_check_t pubkey_check; + const serialized_extended_pubkey_t *pubkey = &pubkey_check.serialized_extended_pubkey; + + if (!buffer_can_read(ctx->in_buf, token_len)) { + return -1; + } + if (sizeof(pubkey_check) != base58_decode((char*) buffer_get_cur(ctx->in_buf), + token_len, + (uint8_t *) &pubkey_check, + sizeof(pubkey_check))) { + return -1; + } + + uint8_t checksum[4]; + crypto_get_checksum((uint8_t *)&pubkey_check.serialized_extended_pubkey, + sizeof(pubkey_check.serialized_extended_pubkey), + checksum); + if (!memeq(checksum, pubkey_check.checksum, sizeof(checksum))) { + return -1; + } + if (read_u32_be(pubkey->version, 0) != ctx->bip32_pubkey_version || + !(0x02 == pubkey->compressed_pubkey[0] || 0x03 == pubkey->compressed_pubkey[0])) { + return -1; + } + + policy_node_blinding_pubkey_t *node = (policy_node_blinding_pubkey_t *) + buffer_alloc(ctx->out_buf, sizeof(policy_node_blinding_pubkey_t), true); + if (NULL == node) { + return -1; + } + node->type = TOKEN_XPUB; + memcpy(node->pubkey, pubkey->compressed_pubkey, sizeof(node->pubkey)); + + return buffer_seek_cur(ctx->in_buf, token_len) ? 0 : -1; +} + +/** + * Parses xprv expression within BLINDING_KEY context. + * + * Corresponds to `blinding_key_parser_t` type, refer to its description for more details. + * + * @param[in,out] ctx + * Script parser context. + * @param[in] token_len + * Size of key token in characters. + * + * @return 0 if successful, a negative number on error. + */ +static int parse_ct_xprv(script_parser_ctx_t *ctx, size_t token_len) { + serialized_extended_privkey_check_t privkey_check; + const serialized_extended_privkey_t *privkey = &privkey_check.serialized_extended_privkey; + + if (!buffer_can_read(ctx->in_buf, token_len)) { + return -1; + } + if (sizeof(privkey_check) != base58_decode((char*) buffer_get_cur(ctx->in_buf), + token_len, + (uint8_t *) &privkey_check, + sizeof(privkey_check))) { + return -1; + } + + uint8_t checksum[4]; + crypto_get_checksum((uint8_t *)&privkey_check.serialized_extended_privkey, + sizeof(privkey_check.serialized_extended_privkey), + checksum); + if (!memeq(checksum, privkey_check.checksum, sizeof(checksum))) { + return -1; + } + if (read_u32_be(privkey->version, 0) != ctx->bip32_privkey_version || + 0 != privkey->null_prefix) { + return -1; + } + + policy_node_blinding_privkey_t *node = (policy_node_blinding_privkey_t *) + buffer_alloc(ctx->out_buf, sizeof(policy_node_blinding_privkey_t), true); + if (NULL == node) { + return -1; + } + node->type = TOKEN_XPRV; + memcpy(node->privkey, privkey->privkey, sizeof(node->privkey)); + + return buffer_seek_cur(ctx->in_buf, token_len) ? 0 : -1; +} + +/** + * Parses elip151 expression within BLINDING_KEY context. + * + * Corresponds to `blinding_key_parser_t` type, refer to its description for more details. + * + * @param[in,out] ctx + * Script parser context. + * @param[in] token_len + * Size of key token in characters. + * + * @return 0 if successful, a negative number on error. + */ +static int parse_ct_elip151(script_parser_ctx_t *ctx, size_t token_len) { + UNUSED(token_len); + + if (!buffer_skip_data(ctx->in_buf, (const uint8_t*) "elip151", sizeof("elip151") - 1)) { + return -1; + } + + policy_node_t *node = (policy_node_t *) + buffer_alloc(ctx->out_buf, sizeof(policy_node_t), true); + + if (node) { + node->type = TOKEN_ELIP151; + node->node_data = NULL; + return 0; + } + return -1; +} + +/// Blinding key signature +typedef struct { + size_t min_len; ///< Minimum allowed length + size_t max_len; ///< Maximum allowed length + uint32_t charset; ///< Allowed charset + blinding_key_parser_t parser; ///< Pinter to a function parsing a BLINDING_KEY expression. + char prefix[TOKEN_PREFIX_LEN + 1]; ///< Token prefix +} blinding_key_signature_t; + +/// Table of known blinding key signatures +static const blinding_key_signature_t BLINDING_KEY_SIGNATURES[] = { + { + .prefix = "slip77", + .min_len = 72, + .max_len = 72, + .charset = CHARSET_ALPHANUM_LOW|CHARSET_BRACKETS, + .parser = parse_ct_slip77 + }, + { + .prefix = "xpub", + .min_len = 111, + .max_len = 112, + .charset = CHARSET_ALPHANUM, + .parser = parse_ct_xpub + }, + { + .prefix = "xprv", + .min_len = 111, + .max_len = 112, + .charset = CHARSET_ALPHANUM, + .parser = parse_ct_xprv + }, + { + .prefix = "elip151", + .min_len = 7, + .max_len = 7, + .charset = CHARSET_ALPHANUM_LOW, + .parser = parse_ct_elip151 + }, + { + .prefix = "", + .min_len = 64, + .max_len = 64, + .charset = CHARSET_HEX_LOW, + .parser = parse_ct_hex_privkey + }, + { + .prefix = "", + .min_len = 66, + .max_len = 66, + .charset = CHARSET_HEX_LOW, + .parser = parse_ct_hex_pubkey + } +}; +/// Number of records in the table of known blinding key signatures +static const size_t N_BLINDING_KEY_SIGNATURES = + sizeof(BLINDING_KEY_SIGNATURES) / sizeof(BLINDING_KEY_SIGNATURES[0]); + +/** + * Looks through the table of blinding key signatures and returns corresponding + * parsing function. + * + * @param[in] scan_result + * Results of token scan used to find blinding key type by its signature. + * + * @return pointer to function parsing identified type of blinding key or NULL if not found. + */ +blinding_key_parser_t find_blinding_key_parser(const token_scan_result_t *scan_result) { + for (size_t i = 0; i < N_BLINDING_KEY_SIGNATURES; ++i) { + uint32_t expected_charset = (uint32_t) PIC(BLINDING_KEY_SIGNATURES[i].charset); + const char *expected_prefix = (const char *) PIC(BLINDING_KEY_SIGNATURES[i].prefix); + if (0 == (scan_result->charset & ~expected_charset) && + scan_result->token_len >= (size_t) PIC(BLINDING_KEY_SIGNATURES[i].min_len) && + scan_result->token_len <= (size_t) PIC(BLINDING_KEY_SIGNATURES[i].max_len) && + 0 == strncmp(expected_prefix, + scan_result->prefix, + strnlen(expected_prefix, TOKEN_PREFIX_LEN))) { + return (blinding_key_parser_t) PIC(BLINDING_KEY_SIGNATURES[i].parser); + } + } + + return NULL; +} + +/** + * Internal function parsing blinding key script inside ct() descriptor. + * + * Parses a BLINDING_KEY expression as specified in ELIP: 150 from the in_buf + * buffer, allocating the node and variables in out_buf.The initial pointer in + * out_buf will contain the node of the BLINDING_KEY. + * + * @param[in,out] ctx + * Script parser context. + * + * @return 0 if successful, a negative number on error. + */ +static int parse_blinding_key_script(script_parser_ctx_t *ctx) { + token_scan_result_t scan_result; + if (!scan_token(ctx->in_buf, ',', &scan_result)) { + return -1; + } + + blinding_key_parser_t key_parser = find_blinding_key_parser(&scan_result); + if (key_parser) { + return (*key_parser)(ctx, scan_result.token_len); + } + return -1; +} + + +// TODO: make it a function +#if 0 + +#ifdef HAVE_LIQUID + case TOKEN_CT: { + if (depth != 0) { + return -16; // can only be top-level + } + + policy_node_ct_t *node = + (policy_node_ct_t *) buffer_alloc(ctx->out_buf, sizeof(policy_node_ct_t), true); + if (node == NULL) { + return -17; + } + node->type = token; + + inner_context_flags |= CONTEXT_WITHIN_CT; + + // the master blinding key script is recursively parsed (if successful) in the current + // location of the output buffer + node->mbk_script = (policy_node_t *) buffer_get_cur_aligned(ctx->out_buf); + if (NULL == node->mbk_script || 0 > parse_blinding_key_script(ctx)) { + // failed while parsing internal script + return -18; + } + + // scripts must be separated by comma + if (!buffer_read_u8(ctx->in_buf, (uint8_t *) &c) || c != ',') { + PRINTF("Unexpected char: %c. Was expecting: ,\n", c); + return -19; + } + + // the internal script is recursively parsed (if successful) in the current location of + // the output buffer + int res2 = 0; + node->script = (policy_node_t *) buffer_get_cur_aligned(ctx->out_buf); + if (NULL == node->script || (res2 = parse_script(ctx, depth + 1, inner_context_flags)) < 0) { + // failed while parsing internal script + return res2 * 100 - 20; + } + break; + } +#endif // HAVE_LIQUID + +#endif + +bool policy_is_multisig(const policy_node_t *policy) { + const policy_node_t *node = policy; + + while(node != NULL) { + switch(node->type) + { + case TOKEN_CT: + node = ((policy_node_ct_t *)node)->script; + break; + + case TOKEN_SH: + case TOKEN_WSH: + node = ((policy_node_with_script_t *)node)->script; + break; + + case TOKEN_MULTI: + case TOKEN_SORTEDMULTI: + return true; + + // TOKEN_PKH, TOKEN_WPKH, TOKEN_TR + // TODO: add Taproot multisig when it will be supported project-wise + default: + return false; + } + } + + return false; +} + +// TODO: consider removing +bool validate_policy_map_extended_pubkey(const policy_map_key_info_t *key_info, + uint32_t bip32_pubkey_version) { + int status = validate_serialized_extended_pubkey( + key_info->ext_pubkey, + key_info->master_key_derivation, + key_info->has_key_origin ? key_info->master_key_derivation_len : -1, + bip32_pubkey_version + ); + + return EXTENDED_PUBKEY_VALID == status; +} + +#endif // HAVE_LIQUID \ No newline at end of file diff --git a/src/liquid/liquid_wallet.h b/src/liquid/liquid_wallet.h new file mode 100644 index 000000000..99d475e8d --- /dev/null +++ b/src/liquid/liquid_wallet.h @@ -0,0 +1,84 @@ +#pragma once +#ifdef HAVE_LIQUID + +#include "../common/wallet.h" + +// TODO: remove +#ifdef HAVE_LIQUID +/// Maximum supported number of keys for a policy map. +#define MAX_POLICY_MAP_COSIGNERS 7 +#else +/// Maximum supported number of keys for a policy map. +#define MAX_POLICY_MAP_COSIGNERS 5 +#endif + + +// TODO: replace with MAX_PUBKEYS_PER_MULTISIG +/// Maximum supported number of keys for a policy map. +#define MAX_POLICY_MAP_KEYS MAX_POLICY_MAP_COSIGNERS + +// TODO: consider removing +/// Public key wildcards defining the rules for child key derivation. +typedef enum { + /// No wildcard. + KEY_WILDCARD_NONE = 0, + /// Any derivation is allowed: `/**`. + KEY_WILDCARD_ANY = 1, + /// Internal or external chain with an arbitrary address index: `/<0;1>/*`. + KEY_WILDCARD_STANDARD_CHAINS, + /// External chain with an arbitrary address index: `/0/*`. + KEY_WILDCARD_EXTERNAL_CHAIN, + /// Internal chain (change) with an arbitrary address index: `/1/*`. + KEY_WILDCARD_INTERNAL_CHAIN, +} policy_map_key_wildcard_id_t; + +/// Policy node ct() +typedef struct { + /// Type of this policy node + struct policy_node_s base; // type is TOKEN_MULTI or TOKEN_SORTEDMULTI; // == TOKEN_CT + /// Master blinding key script, typically slip77() + policy_node_t *mbk_script; + /// Inner script + policy_node_t *script; +} policy_node_ct_t; + +/// Policy node containing ELIP 150 blinding public key +typedef struct { + /// Type of this policy node, one of: TOKEN_HEX_PUB, TOKEN_XPUB + PolicyNodeType type; + /// Compressed public key + uint8_t pubkey[33]; +} policy_node_blinding_pubkey_t; + +/// Policy node containing ELIP 150 blinding private key +typedef struct { + /// Type of this policy node, one of: TOKEN_SLIP77, TOKEN_HEX_PRV, TOKEN_XPRV + PolicyNodeType type; + /// Private key + uint8_t privkey[32]; +} policy_node_blinding_privkey_t; + +/** + * Checks if the policy specifies a multisignature wallet. + * + * @param[in] policy + * Pointer to wallet's top-level policy node. + * + * @return true if the wallet is multisig, false otherwise. + */ +bool policy_is_multisig(const policy_node_t *policy); + +/** + * Validates the public key stored in key information for a policy map wallet. + * + * @param[in] key_info + * Key information. + * @param bip32_pubkey_version + * Version prefix to use for the public key. + * + * @return true if key is valid, false otherwise. + */ +bool validate_policy_map_extended_pubkey(const policy_map_key_info_t *key_info, + uint32_t bip32_pubkey_version); + +#endif // HAVE_LIQUID \ No newline at end of file diff --git a/src/main.c b/src/main.c index 560cdd871..8dc5880ad 100644 --- a/src/main.c +++ b/src/main.c @@ -1,6 +1,6 @@ /***************************************************************************** * Ledger App Bitcoin. - * (c) 2021 Ledger SAS. + * (c) 2024 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,15 +31,24 @@ #include "boilerplate/constants.h" #include "boilerplate/dispatcher.h" +#include "debug-helpers/debug.h" + +#include "handler/handlers.h" #include "commands.h" +#include "common/wallet.h" + // common declarations between legacy and new code; will refactor it out later #include "swap/swap_lib_calls.h" #include "swap/swap_globals.h" #include "swap/handle_swap_sign_transaction.h" #include "swap/handle_get_printable_amount.h" #include "swap/handle_check_address.h" -#include "main.h" + +#ifdef HAVE_NBGL +#include "nbgl_use_case.h" +#endif + #include "tests.h" #ifdef HAVE_BOLOS_APP_STACK_CANARY @@ -50,11 +59,8 @@ uint8_t G_io_seproxyhal_spi_buffer[IO_SEPROXYHAL_BUFFER_SIZE_B]; ux_state_t G_ux; bolos_ux_params_t G_ux_params; -command_state_t G_command_state; dispatcher_context_t G_dispatcher_context; -uint8_t G_app_mode; - // clang-format off const command_descriptor_t COMMAND_DESCRIPTORS[] = { { @@ -125,20 +131,6 @@ void app_main() { return; } - // if not Bitcoin or Bitcoin-testnet, we only support the legacy APDUS. - // to be removed once the apps are split - if (BIP32_PUBKEY_VERSION != 0x0488B21E && - BIP32_PUBKEY_VERSION != 0x043587CF) { - io_send_sw(SW_CLA_NOT_SUPPORTED); - return; - } - - if (G_app_mode != APP_MODE_NEW) { - explicit_bzero(&G_command_state, sizeof(G_command_state)); - - G_app_mode = APP_MODE_NEW; - } - // Reset structured APDU command memset(&cmd, 0, sizeof(cmd)); // Parse APDU command from G_io_apdu_buffer @@ -150,23 +142,30 @@ void app_main() { LOG_APDU(&cmd); - if (G_swap_state.called_from_swap && - (cmd.ins != SIGN_PSBT && cmd.ins != GET_MASTER_FINGERPRINT)) { - PRINTF("Only SIGN_PSBT and GET_MASTER_FINGERPRINT can be called during swap\n"); - io_send_sw(SW_INS_NOT_SUPPORTED); - return; + if (G_swap_state.called_from_swap) { + if (cmd.cla != CLA_APP) { + io_send_sw(SW_CLA_NOT_SUPPORTED); + continue; + } + if (cmd.ins != GET_EXTENDED_PUBKEY && cmd.ins != GET_WALLET_ADDRESS && + cmd.ins != SIGN_PSBT && cmd.ins != GET_MASTER_FINGERPRINT) { + PRINTF( + "Only GET_EXTENDED_PUBKEY, GET_WALLET_ADDRESS, SIGN_PSBT and " + "GET_MASTER_FINGERPRINT can be called during swap\n"); + io_send_sw(SW_INS_NOT_SUPPORTED); + continue; + } } // Dispatch structured APDU command to handler apdu_dispatcher(COMMAND_DESCRIPTORS, sizeof(COMMAND_DESCRIPTORS) / sizeof(COMMAND_DESCRIPTORS[0]), - (machine_context_t *) &G_command_state, - sizeof(G_command_state), ui_menu_main, &cmd); if (G_swap_state.called_from_swap && G_swap_state.should_exit) { - os_sched_exit(0); + // Bitcoin app will keep listening as long as it does not receive a valid TX + finalize_exchange_sign_transaction(true); } } } @@ -187,7 +186,13 @@ void app_exit() { static void initialize_app_globals() { io_reset_timeouts(); - memset(&G_swap_state, 0, sizeof(G_swap_state)); + + // We only zero the called_from_swap and should_exit fields and not the entire G_swap_state, as + // we need the globals initialization to happen _after_ calling copy_transaction_parameters when + // processing a SIGN_TRANSACTION request from the swap app (which initializes the other fields + // of G_swap_state). + G_swap_state.called_from_swap = false; + G_swap_state.should_exit = false; } /** @@ -205,19 +210,16 @@ void coin_main() { // assumptions on the length of data structures _Static_assert(sizeof(cx_sha256_t) <= 108, "cx_sha256_t too large"); - _Static_assert(sizeof(policy_map_key_info_t) <= 148, "policy_map_key_info_t too large"); - + _Static_assert(sizeof(policy_map_key_info_t) <= 156, "policy_map_key_info_t too large"); // we assume in display.c that the ticker size is at most 5 characters (+ null) _Static_assert(sizeof(COIN_COINID_SHORT) <= 6, "COIN_COINID_SHORT too large"); - G_app_mode = APP_MODE_UNINITIALIZED; - #if defined(HAVE_PRINT_STACK_POINTER) && defined(HAVE_BOLOS_APP_STACK_CANARY) PRINTF("STACK CANARY ADDRESS: %08x\n", &app_stack_canary); #endif #ifdef HAVE_SEMIHOSTED_PRINTF - PRINTF("APDU State size: %d\n", sizeof(command_state_t)); + PRINTF("\nApplication \"%s\" started\n", APPNAME); #endif // Reset dispatcher state @@ -237,10 +239,10 @@ void coin_main() { TRY { io_seproxyhal_init(); -#ifdef TARGET_NANOX +#ifdef HAVE_BLE // grab the current plane mode setting G_io_app.plane_mode = os_setting_get(OS_SETTING_PLANEMODE, NULL, 0); -#endif // TARGET_NANOX +#endif // HAVE_BLE USB_power(0); USB_power(1); @@ -271,42 +273,46 @@ void coin_main() { app_exit(); } -static void swap_library_main_helper(struct libargs_s *args) { +static void swap_library_main_helper(libargs_t *args) { PRINTF("Inside a library \n"); switch (args->command) { case CHECK_ADDRESS: // ensure result is zero if an exception is thrown args->check_address->result = 0; - args->check_address->result = - handle_check_address(args->check_address); + args->check_address->result = handle_check_address(args->check_address); break; - case SIGN_TRANSACTION: + case SIGN_TRANSACTION: { + // copying arguments (pointing to globals) to context *before* + // calling `initialize_app_globals` as it could override them + const bool args_are_copied = copy_transaction_parameters(args->create_transaction); initialize_app_globals(); - if (copy_transaction_parameters(args->create_transaction)) { + if (args_are_copied) { // never returns - G_app_mode = APP_MODE_UNINITIALIZED; G_swap_state.called_from_swap = 1; io_seproxyhal_init(); UX_INIT(); +#ifdef HAVE_BAGL ux_stack_push(); +#elif defined(HAVE_NBGL) + nbgl_useCaseSpinner("Signing"); +#endif // HAVE_BAGL USB_power(0); USB_power(1); // ui_idle(); PRINTF("USB power ON/OFF\n"); -#ifdef TARGET_NANOX +#ifdef HAVE_BLE // grab the current plane mode setting G_io_app.plane_mode = os_setting_get(OS_SETTING_PLANEMODE, NULL, 0); -#endif // TARGET_NANOX -#ifdef HAVE_BLE BLE_power(0, NULL); - BLE_power(1, "Nano X"); + BLE_power(1, NULL); #endif // HAVE_BLE app_main(); } break; + } case GET_PRINTABLE_AMOUNT: // ensure result is zero if an exception is thrown (compatibility breaking, disabled // until LL is ready) @@ -319,7 +325,7 @@ static void swap_library_main_helper(struct libargs_s *args) { } } -void swap_library_main(struct libargs_s *args) { +void swap_library_main(libargs_t *args) { bool end = false; /* This loop ensures that swap_library_main_helper and os_lib_end are called * within a try context, even if an exception is thrown */ @@ -347,23 +353,19 @@ __attribute__((section(".boot"))) int main(int arg0) { os_boot(); if (!arg0) { - // Bitcoin application launched from dashboard + // Application launched from dashboard coin_main(); return 0; } - struct libargs_s *args = (struct libargs_s *) arg0; - if (args->id != 0x100 || args->command == RUN_APPLICATION) { + // Application launched as library (for swap support) + libargs_t *args = (libargs_t *) arg0; + if (args->id != 0x100) { app_exit(); return 0; } -#if !defined(HAVE_LIQUID) || defined(LIQUID_HAS_SWAP) - // Called as Bitcoin library during swap swap_library_main(args); -#else - app_exit(); -#endif return 0; } diff --git a/src/main.h b/src/main.h deleted file mode 100644 index c3b761172..000000000 --- a/src/main.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#define APP_MODE_UNINITIALIZED 0 // state before any APDU is executed -#define APP_MODE_LEGACY 1 // state when the app is running legacy APDUs -#define APP_MODE_NEW 2 // state when the app is running new APDUs - -/** - * Keeps track whether the app is running in "legacy" or "new" mode. - */ -extern uint8_t G_app_mode; diff --git a/src/swap/btchip_bcd.c b/src/swap/btchip_bcd.c index 529900c38..cc7a69f5e 100644 --- a/src/swap/btchip_bcd.c +++ b/src/swap/btchip_bcd.c @@ -69,9 +69,8 @@ unsigned char btchip_convert_hex_amount_to_displayable_no_globals(const unsigned workOffset = offset; for (i = 0; i < LOOP2; i++) { unsigned char allZero = 1; - unsigned char j2; - for (j2 = i; j2 < LOOP2; j2++) { - if (scratch[workOffset + j2] != 0) { + for (j = i; j < LOOP2; j++) { + if (scratch[workOffset + j] != 0) { allZero = 0; break; } diff --git a/src/swap/handle_check_address.c b/src/swap/handle_check_address.c index 4df20bd3f..1c954ec5d 100644 --- a/src/swap/handle_check_address.c +++ b/src/swap/handle_check_address.c @@ -8,6 +8,8 @@ #include "../common/segwit_addr.h" #include "../crypto.h" +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + // constants previously defined in btchip_apdu_get_wallet_public_key.h #define P1_NO_DISPLAY 0x00 #define P1_DISPLAY 0x01 @@ -68,7 +70,11 @@ bool get_address_from_compressed_public_key(unsigned char format, uint8_t tweaked_key[32]; uint8_t parity; - if (0 != crypto_tr_tweak_pubkey(compressed_pub_key + 1, &parity, tweaked_key)) { + if (0 > crypto_tr_tweak_pubkey(compressed_pub_key + 1, + (uint8_t[]){}, + 0, + &parity, + tweaked_key)) { return false; } @@ -84,6 +90,11 @@ bool get_address_from_compressed_public_key(unsigned char format, return true; } +static int os_strcmp(const char* s1, const char* s2) { + size_t size = strlen(s1) + 1; + return memcmp(s1, s2, size); +} + int handle_check_address(check_address_parameters_t* params) { unsigned char compressed_public_key[33]; PRINTF("Params on the address %d\n", (unsigned int) params); @@ -118,10 +129,10 @@ int handle_check_address(check_address_parameters_t* params) { PRINTF("Can't create address from given public key\n"); return 0; } - if (strncmp(address, params->address_to_check, sizeof(address)) != 0) { + if (os_strcmp(address, params->address_to_check) != 0) { PRINTF("Addresses don't match\n"); return 0; } PRINTF("Addresses match\n"); return 1; -} +} \ No newline at end of file diff --git a/src/swap/handle_get_printable_amount.c b/src/swap/handle_get_printable_amount.c index 484b36bf9..2891083b0 100644 --- a/src/swap/handle_get_printable_amount.c +++ b/src/swap/handle_get_printable_amount.c @@ -1,4 +1,5 @@ #include +#include #include "handle_get_printable_amount.h" diff --git a/src/swap/handle_get_printable_amount.h b/src/swap/handle_get_printable_amount.h index ad6faffec..a1a23f361 100644 --- a/src/swap/handle_get_printable_amount.h +++ b/src/swap/handle_get_printable_amount.h @@ -2,4 +2,4 @@ #include "swap_lib_calls.h" -int handle_get_printable_amount(get_printable_amount_parameters_t* get_printable_amount_params); +int handle_get_printable_amount(get_printable_amount_parameters_t* get_printable_amount_params); \ No newline at end of file diff --git a/src/swap/handle_swap_sign_transaction.c b/src/swap/handle_swap_sign_transaction.c index 0a2ca36fa..9333e27a9 100644 --- a/src/swap/handle_swap_sign_transaction.c +++ b/src/swap/handle_swap_sign_transaction.c @@ -3,14 +3,17 @@ #include "ux.h" #include "usbd_core.h" #include "os_io_seproxyhal.h" +#include "os.h" #include "handle_swap_sign_transaction.h" -#include "../main.h" #include "../globals.h" #include "../swap/swap_globals.h" #include "../common/read.h" +// Save the BSS address where we will write the return value when finished +static uint8_t* G_swap_sign_return_value_address; + bool copy_transaction_parameters(create_transaction_parameters_t* sign_transaction_params) { char destination_address[65]; uint8_t amount[8]; @@ -42,6 +45,9 @@ bool copy_transaction_parameters(create_transaction_parameters_t* sign_transacti sign_transaction_params->fee_amount, sign_transaction_params->fee_amount_length); + os_explicit_zero_BSS_segment(); + G_swap_sign_return_value_address = &sign_transaction_params->result; + G_swap_state.amount = read_u64_be(amount, 0); G_swap_state.fees = read_u64_be(fees, 0); memcpy(G_swap_state.destination_address, @@ -49,3 +55,8 @@ bool copy_transaction_parameters(create_transaction_parameters_t* sign_transacti sizeof(G_swap_state.destination_address)); return true; } + +void __attribute__((noreturn)) finalize_exchange_sign_transaction(bool is_success) { + *G_swap_sign_return_value_address = is_success; + os_lib_end(); +} diff --git a/src/swap/handle_swap_sign_transaction.h b/src/swap/handle_swap_sign_transaction.h index d961b94cf..bbd82b24b 100644 --- a/src/swap/handle_swap_sign_transaction.h +++ b/src/swap/handle_swap_sign_transaction.h @@ -3,3 +3,5 @@ #include "swap_lib_calls.h" bool copy_transaction_parameters(create_transaction_parameters_t* sign_transaction_params); + +void __attribute__((noreturn)) finalize_exchange_sign_transaction(bool is_success); diff --git a/src/swap/swap_lib_calls.h b/src/swap/swap_lib_calls.h index baf6b197f..dc88417ae 100644 --- a/src/swap/swap_lib_calls.h +++ b/src/swap/swap_lib_calls.h @@ -1,5 +1,11 @@ #pragma once +/* This file is the shared API between Exchange and the apps started in Library mode for Exchange + * + * DO NOT MODIFY THIS FILE IN APPLICATIONS OTHER THAN EXCHANGE + * On modification in Exchange, forward the changes to all applications supporting Exchange + */ + #include "stdbool.h" #include "stdint.h" @@ -11,17 +17,27 @@ #define GET_PRINTABLE_AMOUNT 4 +/* + * Amounts are stored as bytes, with a max size of 16 (see protobuf + * specifications). Max 16B integer is 340282366920938463463374607431768211455 + * in decimal, which is a 32-long char string. + * The printable amount also contains spaces, the ticker symbol (with variable + * size, up to 12 in Ethereum for instance) and a terminating null byte, so 50 + * bytes total should be a fair maximum. + */ +#define MAX_PRINTABLE_AMOUNT_SIZE 50 + // structure that should be send to specific coin application to get address typedef struct check_address_parameters_s { // IN - unsigned char* coin_configuration; - unsigned char coin_configuration_length; + uint8_t *coin_configuration; + uint8_t coin_configuration_length; // serialized path, segwit, version prefix, hash used, dictionary etc. // fields and serialization format depends on spesific coin app - unsigned char* address_parameters; - unsigned char address_parameters_length; - char* address_to_check; - char* extra_id_to_check; + uint8_t *address_parameters; + uint8_t address_parameters_length; + char *address_to_check; + char *extra_id_to_check; // OUT int result; } check_address_parameters_t; @@ -29,28 +45,30 @@ typedef struct check_address_parameters_s { // structure that should be send to specific coin application to get printable amount typedef struct get_printable_amount_parameters_s { // IN - unsigned char* coin_configuration; - unsigned char coin_configuration_length; - unsigned char* amount; - unsigned char amount_length; + uint8_t *coin_configuration; + uint8_t coin_configuration_length; + uint8_t *amount; + uint8_t amount_length; bool is_fee; // OUT - char printable_amount[30]; - // int result; + char printable_amount[MAX_PRINTABLE_AMOUNT_SIZE]; } get_printable_amount_parameters_t; typedef struct create_transaction_parameters_s { - unsigned char* coin_configuration; - unsigned char coin_configuration_length; - unsigned char* amount; - unsigned char amount_length; - unsigned char* fee_amount; - unsigned char fee_amount_length; - char* destination_address; - char* destination_address_extra_id; + // IN + uint8_t *coin_configuration; + uint8_t coin_configuration_length; + uint8_t *amount; + uint8_t amount_length; + uint8_t *fee_amount; + uint8_t fee_amount_length; + char *destination_address; + char *destination_address_extra_id; + // OUT + uint8_t result; } create_transaction_parameters_t; -struct libargs_s { +typedef struct libargs_s { unsigned int id; unsigned int command; unsigned int unused; @@ -59,4 +77,4 @@ struct libargs_s { create_transaction_parameters_t *create_transaction; get_printable_amount_parameters_t *get_printable_amount; }; -}; +} libargs_t; diff --git a/src/ui/bagl_custom_streaming.c b/src/ui/bagl_custom_streaming.c new file mode 100644 index 000000000..1734daeee --- /dev/null +++ b/src/ui/bagl_custom_streaming.c @@ -0,0 +1,265 @@ + +/******************************************************************************* + * Ledger Nano S - Secure firmware + * (c) 2022 Ledger + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +// Inspired from ledger-secure-sdk/lib_ux/src/ux_layout_paging.c + +#ifdef HAVE_BAGL + +#include "os_helpers.h" +#include "os_math.h" +#include "os_pic.h" +#include "os_print.h" +#include "os_utils.h" +#include "ux.h" +#include +#include "os.h" +#include "ux_layout_common.h" +#include "display.h" + +const bagl_element_t *ux_layout_paging_prepro_common_streaming(const bagl_element_t *element, + const char *title, + const char *text) { + // copy element before any mod + memmove(&G_ux.tmp_element, element, sizeof(bagl_element_t)); + + switch (element->component.userid) { + case 0x01: + // no step before AND no pages before + if (ux_flow_is_first() && G_ux.layout_paging.current == 0) { + return NULL; + } + break; + + case 0x02: + if (ux_flow_is_last() && G_ux.layout_paging.current == G_ux.layout_paging.count - 1) { + return NULL; + } + break; + + case 0x10: + // We set the boldness of the text. + // display + if (title) { + SPRINTF(G_ux.string_buffer, "%s", STRPIC(title)); + } else { + SPRINTF(G_ux.string_buffer, + "%d/%d", + G_ux.layout_paging.current + 1, + G_ux.layout_paging.count); + } + + G_ux.tmp_element.component.font_id = + ((G_ux.layout_paging.format & PAGING_FORMAT_BN) == PAGING_FORMAT_BN) + ? (BAGL_FONT_OPEN_SANS_EXTRABOLD_11px | BAGL_FONT_ALIGNMENT_CENTER) + : (BAGL_FONT_OPEN_SANS_REGULAR_11px | BAGL_FONT_ALIGNMENT_CENTER); + G_ux.tmp_element.text = G_ux.string_buffer; + break; + + case 0x11: + case 0x12: + case 0x13: { + unsigned int lineidx = (element->component.userid & 0xF) - 1; + if (lineidx < UX_LAYOUT_PAGING_LINE_COUNT && G_ux.layout_paging.lengths[lineidx]) { + SPRINTF(G_ux.string_buffer, + "%.*s", + // avoid overflow + MIN(sizeof(G_ux.string_buffer) - 1, G_ux.layout_paging.lengths[lineidx]), + (text ? STRPIC(text) : G_ux.externalText) + + G_ux.layout_paging.offsets[lineidx]); + G_ux.tmp_element.text = G_ux.string_buffer; + + G_ux.tmp_element.component.font_id = + ((G_ux.layout_paging.format & PAGING_FORMAT_NB) == PAGING_FORMAT_NB) + ? (BAGL_FONT_OPEN_SANS_EXTRABOLD_11px | BAGL_FONT_ALIGNMENT_CENTER) + : (BAGL_FONT_OPEN_SANS_REGULAR_11px | BAGL_FONT_ALIGNMENT_CENTER); + } + break; + } + } + return &G_ux.tmp_element; +} + +static void ux_layout_paging_next(ux_layout_paging_redisplay_t redisplay) { + if (G_ux.layout_paging.current == G_ux.layout_paging.count - 1) { + ux_flow_next(); + } else { + // display next page, count the number of char to fit in the next page + G_ux.layout_paging.current++; + redisplay(G_ux.stack_count - 1); + } +} + +static void ux_layout_paging_prev(ux_layout_paging_redisplay_t redisplay) { + if (G_ux.layout_paging.current == 0) { + ux_flow_prev(); + } else { + // display previous page, count the number of char to fit in the previous page + G_ux.layout_paging.current--; + redisplay(G_ux.stack_count - 1); + } +} + +STATIC_IF_NOT_INDEXED unsigned int ux_layout_paging_button_callback_common_streaming( + unsigned int button_mask, + unsigned int button_mask_counter, + ux_layout_paging_redisplay_t redisplay) { + UNUSED(button_mask_counter); + switch (button_mask) { + case BUTTON_EVT_RELEASED | BUTTON_LEFT: + if (G_ux.layout_paging.current == 0) { + decrease_streaming_index(); + ux_flow_validate(); + } else { + ux_layout_paging_prev(redisplay); + } + break; + case BUTTON_EVT_RELEASED | BUTTON_RIGHT: + if (G_ux.layout_paging.count == 0 || + G_ux.layout_paging.count - 1 == G_ux.layout_paging.current) { + increase_streaming_index(); + ux_flow_validate(); + } else { + ux_layout_paging_next(redisplay); + } + break; + case BUTTON_EVT_RELEASED | BUTTON_LEFT | BUTTON_RIGHT: + increase_streaming_index(); + ux_flow_validate(); + break; + } + return 0; +} + +static const bagl_element_t *ux_layout_paging_prepro_by_addr(const bagl_element_t *element) { + // don't display if null + const void *params = ux_stack_get_current_step_params(); + if (NULL == params) { + return NULL; + } + const char *title; + const char *text; + +#if defined(HAVE_INDEXED_STRINGS) + UX_LOC_STRINGS_INDEX index = ((const ux_loc_layout_params_t *) params)->index; + title = get_ux_loc_string(index); + text = get_ux_loc_string(index + 1); +#else // defined(HAVE_INDEXED_STRINGS) + title = ((const ux_layout_paging_params_t *) params)->title; + text = ((const ux_layout_paging_params_t *) params)->text; +#endif // defined(HAVE_INDEXED_STRINGS) + return ux_layout_paging_prepro_common_streaming(element, title, text); +} + +void ux_layout_paging_init_common_streaming(unsigned int stack_slot, + const char *text, + ux_layout_paging_redisplay_t redisplay) { + bagl_font_id_e font_id; + + // At this very moment, we don't want to get rid of the format, but keep + // the one which has just been set (in case of direction backward or forward). + unsigned int backup_format = G_ux.layout_paging.format; + + // depending flow browsing direction, select the correct page to display + switch (ux_flow_direction()) { + case FLOW_DIRECTION_BACKWARD: + ux_layout_paging_reset(); + // ask the paging to start at the last page. + // This step must be performed after the 'ux_layout_paging_reset' call, + // thus we cannot mutualize the call with the one in the 'forward' case. + G_ux.layout_paging.current = -1UL; + break; + case FLOW_DIRECTION_FORWARD: + // open the first page + ux_layout_paging_reset(); + break; + case FLOW_DIRECTION_START: + // shall already be at the first page + break; + } + + G_ux.layout_paging.format = backup_format; + + // store params + ux_stack_init(stack_slot); + + // compute number of chars to display from the params complete string + if ((text == NULL) && (G_ux.externalText == NULL)) { + text = ""; // empty string to avoid disrupting the ux flow. + } + + // Use the correct font, to be able to compute correctly text width: + if (G_ux.layout_paging.format & PAGING_FORMAT_NB) { + font_id = BAGL_FONT_OPEN_SANS_EXTRABOLD_11px; + } else { + font_id = BAGL_FONT_OPEN_SANS_REGULAR_11px; + } + + // count total number of pages + G_ux.layout_paging.count = + ux_layout_paging_compute(text, -1UL, &G_ux.layout_paging, font_id); // at least one page + + // perform displaying the last page as requested (-1UL in prevstep hook does this) + if (G_ux.layout_paging.count && G_ux.layout_paging.current > G_ux.layout_paging.count - 1UL) { + G_ux.layout_paging.current = G_ux.layout_paging.count - 1; + } + + redisplay(stack_slot); +} + +void ux_layout_paging_redisplay_by_addr_streaming(unsigned int stack_slot); +STATIC_IF_NOT_INDEXED unsigned int ux_layout_paging_button_callback_by_addr_streaming( + unsigned int button_mask, + unsigned int button_mask_counter) { + return ux_layout_paging_button_callback_common_streaming( + button_mask, + button_mask_counter, + ux_layout_paging_redisplay_by_addr_streaming); +} + +void ux_layout_paging_redisplay_common(unsigned int stack_slot, + const char *text, + button_push_callback_t button_callback, + bagl_element_callback_t prepro); + +void ux_layout_paging_redisplay_by_addr_streaming(unsigned int stack_slot) { + const char *text; + const void *params = ux_stack_get_current_step_params(); + if (NULL == params) { + return; + } +#if defined(HAVE_INDEXED_STRINGS) + text = get_ux_loc_string(((const ux_loc_layout_params_t *) params)->index + 1); +#else // defined(HAVE_INDEXED_STRINGS) + text = ((const ux_layout_paging_params_t *) params)->text; +#endif // defined(HAVE_INDEXED_STRINGS) + ux_layout_paging_redisplay_common(stack_slot, + text, + ux_layout_paging_button_callback_by_addr_streaming, + ux_layout_paging_prepro_by_addr); +} + +void ux_layout_custom_init(unsigned int stack_slot) { + G_ux.layout_paging.format = PAGING_FORMAT_BN; + const ux_layout_paging_params_t *params = + (const ux_layout_paging_params_t *) ux_stack_get_step_params(stack_slot); + ux_layout_paging_init_common_streaming(stack_slot, + params->text, + ux_layout_paging_redisplay_by_addr_streaming); +} + +#endif // HAVE_BAGL diff --git a/src/ui/display.c b/src/ui/display.c index 3d089de7f..86a99776e 100644 --- a/src/ui/display.c +++ b/src/ui/display.c @@ -10,104 +10,17 @@ #include "ux.h" #include "./display.h" -#include "./display_utils.h" -#include "../constants.h" -#include "../globals.h" -#include "../boilerplate/io.h" -#include "../boilerplate/sw.h" -#include "../common/bip32.h" -#include "../common/format.h" -#include "../common/script.h" -#include "../constants.h" -#include "../liquid/liquid_assets.h" // These globals are a workaround for a limitation of the UX library that // does not allow to pass proper callbacks and context. -// the processor to call after the user approval, for UI flows that require it -static command_processor_t g_next_processor; +extern bool G_was_processing_screen_shown; -extern dispatcher_context_t G_dispatcher_context; +static bool g_ux_flow_ended; +static bool g_ux_flow_response; +static int g_current_streaming_index; -// TODO: hard to keep track of what globals are used in the same flows -// (especially since the same flow step can be shared in different flows) - -typedef struct { - char bip32_path_str[MAX_SERIALIZED_BIP32_PATH_LENGTH + 1]; -} ui_path_state_t; - -typedef struct { - char bip32_path_str[MAX_SERIALIZED_BIP32_PATH_LENGTH + 1]; - char pubkey[MAX_SERIALIZED_PUBKEY_LENGTH + 1]; -} ui_path_and_pubkey_state_t; - -typedef struct { - char bip32_path_str[MAX_SERIALIZED_BIP32_PATH_LENGTH + 1]; - char address[MAX_ADDRESS_LENGTH_STR + 1]; -} ui_path_and_address_state_t; - -typedef struct { - char bip32_path_str[MAX_SERIALIZED_BIP32_PATH_LENGTH + 1]; - char hash_hex[64 + 1]; -} ui_path_and_hash_state_t; - -typedef struct { - char wallet_name[MAX_WALLET_NAME_LENGTH + 1]; - char policy_map[MAX_POLICY_MAP_STR_LENGTH]; - char address[MAX_ADDRESS_LENGTH_STR + 1]; -} ui_wallet_state_t; - -typedef struct { - char pubkey[MAX_POLICY_KEY_INFO_LEN + 1]; - char signer_index[sizeof("Key @999 ")]; -} ui_cosigner_pubkey_and_index_state_t; - -typedef struct { - char index[sizeof("output #999")]; - char address_or_description[MAX(MAX_ADDRESS_LENGTH_STR + 1, MAX_OPRETURN_OUTPUT_DESC_SIZE)]; - char amount[MAX_AMOUNT_LENGTH + 1]; -#ifdef HAVE_LIQUID - char tag_hex[LIQUID_ASSET_TAG_HEX_LEN + 1]; - char token_ticker[sizeof("Of asset ") + MAX_ASSET_TICKER_LENGTH]; -#endif -} ui_validate_output_state_t; - -typedef struct { - char transaction_type[MAX_TRANSACTION_TYPE_LEN + 1]; - char fee[MAX_AMOUNT_LENGTH + 1]; -} ui_validate_transaction_state_t; - -#ifdef HAVE_LIQUID -typedef struct { - char tag_hex[LIQUID_ASSET_TAG_HEX_LEN + 1]; -} ui_asset_state_t; -#endif - -#ifdef HAVE_LIQUID -typedef struct { - char tag_hex[LIQUID_ASSET_TAG_HEX_LEN + 1]; - char ticker[MAX_ASSET_TICKER_LENGTH + 1]; - char name[MAX_ASSET_NAME_LENGTH + 1]; - char domain[MAX_ASSET_DOMAIN_LENGTH + 1]; -} ui_validate_asset_state_t; -#endif - -/** - * Union of all the states for each of the UI screens, in order to save memory. - */ -typedef union { - ui_path_and_pubkey_state_t path_and_pubkey; - ui_path_and_address_state_t path_and_address; - ui_path_and_hash_state_t path_and_hash; - ui_wallet_state_t wallet; - ui_cosigner_pubkey_and_index_state_t cosigner_pubkey_and_index; - ui_validate_output_state_t validate_output; - ui_validate_transaction_state_t validate_transaction; -#ifdef HAVE_LIQUID - ui_asset_state_t asset; - ui_validate_asset_state_t validate_asset; -#endif -} ui_state_t; +extern dispatcher_context_t G_dispatcher_context; ui_state_t g_ui_state; @@ -115,804 +28,303 @@ void send_deny_sw(dispatcher_context_t *dc) { SEND_SW(dc, SW_DENY); } -void continue_after_approval(bool approved) { - if (approved) { - G_dispatcher_context.next(g_next_processor); - } else { - G_dispatcher_context.next(send_deny_sw); - } - G_dispatcher_context.run(); -} - -/* - STATELESS STEPS - As these steps do not access per-step globals (except possibly a callback), they can be used in - any flow. -*/ - -// Step with icon and text for pubkey -UX_STEP_NOCB(ux_display_confirm_pubkey_step, pn, {&C_icon_eye, "Confirm public key"}); - -// Step with icon and text for address -UX_STEP_NOCB(ux_display_confirm_address_step, pn, {&C_icon_eye, "Confirm receive address"}); - -// Step with icon and text for a suspicious address -UX_STEP_NOCB(ux_display_unusual_derivation_path_step, - pnn, - { - &C_icon_warning, - "The derivation", - "path is unusual", - }); - -// Step with icon and text to caution the user to reject if unsure -UX_STEP_CB(ux_display_reject_if_not_sure_step, - pnn, - continue_after_approval(false), - { - &C_icon_crossmark, - "Reject if you're", - "not sure", - }); - -// Step with approve button -UX_STEP_CB(ux_display_approve_step, - pb, - continue_after_approval(true), - { - &C_icon_validate_14, - "Approve", - }); - -// Step with continue button -UX_STEP_CB(ux_display_continue_step, - pb, - continue_after_approval(true), - { - &C_icon_validate_14, - "Continue", - }); - -// Step with reject button -UX_STEP_CB(ux_display_reject_step, - pb, - continue_after_approval(false), - { - &C_icon_crossmark, - "Reject", - }); - -/* - STATEFUL STEPS - These can only be used in the context of specific flows, as they access a common shared space - for strings. -*/ - -// PATH/PUBKEY or PATH/ADDRESS - -// Step with title/text for BIP32 path -UX_STEP_NOCB(ux_display_path_step, - bnnn_paging, - { - .title = "Path", - .text = g_ui_state.path_and_pubkey.bip32_path_str, - }); - -// Step with title/text for pubkey -UX_STEP_NOCB(ux_display_pubkey_step, - bnnn_paging, - { - .title = "Public key", - .text = g_ui_state.path_and_pubkey.pubkey, - }); - -// Step with title/text for address -UX_STEP_NOCB(ux_display_address_step, - bnnn_paging, - { - .title = "Address", - .text = g_ui_state.path_and_address.address, - }); - -// Step with icon and text with name of a wallet being registered -UX_STEP_NOCB(ux_display_wallet_header_name_step, - pnn, - { - &C_icon_wallet, - "Register wallet", - g_ui_state.wallet.wallet_name, - }); - -// Step with description of a policy wallet -UX_STEP_NOCB(ux_display_wallet_policy_map_type_step, - bnnn_paging, - { - .title = "Policy map:", // TODO: simplify for known multisig policies - .text = g_ui_state.wallet.policy_map, - }); - -// Step with index and xpub of a cosigner of a policy_map wallet -UX_STEP_NOCB(ux_display_wallet_policy_map_cosigner_pubkey_step, - bnnn_paging, - { - .title = g_ui_state.cosigner_pubkey_and_index.signer_index, - .text = g_ui_state.cosigner_pubkey_and_index.pubkey, - }); - -// Step with icon and text with name of a wallet being registered -UX_STEP_NOCB(ux_display_receive_in_wallet_step, - pnn, - { - &C_icon_wallet, - "Receive in:", - g_ui_state.wallet.wallet_name, - }); - -// Step with title/text for address, used when showing a wallet receive address -UX_STEP_NOCB(ux_display_wallet_address_step, - bnnn_paging, - { - .title = "Address", - .text = g_ui_state.wallet.address, - }); - -// Step with icon and text with name of a wallet to spend from -UX_STEP_NOCB(ux_display_spend_from_wallet_step, - pnn, - { - &C_icon_wallet, - "Spend from:", - g_ui_state.wallet.wallet_name, - }); - -// Step with warning icon and text explaining that there are external inputs -UX_STEP_NOCB(ux_display_warning_external_inputs_step, - pnn, - { - &C_icon_warning, - "There are", - "external inputs", - }); - -// Step with eye icon and "Review" and the output index -UX_STEP_NOCB(ux_review_step, - pnn, - { - &C_icon_eye, - "Review", - g_ui_state.validate_output.index, - }); - -// Step with "Amount" and an output amount -UX_STEP_NOCB(ux_display_reissuance_token_step, - bnnn_paging, - { - .title = "Reissuance token", - .text = g_ui_state.validate_output.token_ticker, - }); - -// Step with "Amount" and an output amount -UX_STEP_NOCB(ux_validate_amount_step, - bnnn_paging, - { - .title = "Amount", - .text = g_ui_state.validate_output.amount, - }); - -// Step with "Address" and a paginated address -UX_STEP_NOCB(ux_validate_address_step, - bnnn_paging, - { - .title = "Address", - .text = g_ui_state.validate_output.address_or_description, - }); - -UX_STEP_NOCB(ux_confirm_transaction_step, - pnn, - { - &C_icon_eye, - "Confirm", - g_ui_state.validate_transaction.transaction_type, - }); - -UX_STEP_NOCB(ux_confirm_transaction_fees_step, - bnnn_paging, - { - .title = "Fees", - .text = g_ui_state.validate_transaction.fee, - }); -UX_STEP_CB(ux_accept_and_send_step, - pbb, - continue_after_approval(true), - {&C_icon_validate_14, "Accept", "and send"}); - -////////////////////////////////////////////////////////////////////// -UX_STEP_NOCB(ux_sign_message_step, - pnn, - { - &C_icon_certificate, - "Sign", - "message", - }); - -UX_STEP_NOCB(ux_message_sign_display_path_step, - bnnn_paging, - { - .title = "Path", - .text = g_ui_state.path_and_hash.bip32_path_str, - }); - -UX_STEP_NOCB(ux_message_hash_step, - bnnn_paging, - { - .title = "Message hash", - .text = g_ui_state.path_and_hash.hash_hex, - }); - -UX_STEP_CB(ux_sign_message_accept_new, - pbb, - continue_after_approval(true), - {&C_icon_validate_14, "Sign", "message"}); - -////////////////////////////////////////////////////////////////////// -#ifdef HAVE_LIQUID -// Step with warning icon and text explaining that asset is unknown -UX_STEP_NOCB(ux_display_warning_unknown_asset_step, - pnn, - { - &C_icon_warning, - "The asset", - "is unknown", - }); - -UX_STEP_NOCB(ux_asset_tag_step, - bnnn_paging, - { - .title = "Asset tag", - .text = g_ui_state.asset.tag_hex, - }); - -UX_STEP_NOCB(ux_output_asset_tag_step, - bnnn_paging, - { - .title = "Asset tag", - .text = g_ui_state.validate_output.tag_hex, - }); - -// Step with icon and text with name of a wallet being registered -UX_STEP_NOCB(ux_va_confirm_asset_step, - pnn, - { - &C_icon_eye, - "Confirm asset", - g_ui_state.validate_asset.ticker, - }); - -UX_STEP_NOCB(ux_va_review_asset_tag_step, - bnnn_paging, - { - .title = "Asset tag", - .text = g_ui_state.validate_asset.tag_hex, - }); - -UX_STEP_NOCB(ux_va_review_asset_name_step, - bnnn_paging, - { - .title = "Asset name", - .text = g_ui_state.validate_asset.name, - }); - -UX_STEP_NOCB(ux_va_review_asset_domain_step, - bnnn_paging, - { - .title = "Asset domain", - .text = g_ui_state.validate_asset.domain, - }); -#endif // HAVE_LIQUID - -// FLOW to display BIP32 path and a message hash to sign: -// #1 screen: certificate icon + "Sign message" -// #2 screen: display BIP32 Path -// #3 screen: display message hash -// #4 screen: "Sign message" and approve button -// #5 screen: reject button -UX_FLOW(ux_sign_message_flow, - &ux_sign_message_step, - &ux_message_sign_display_path_step, - &ux_message_hash_step, - &ux_sign_message_accept_new, - &ux_display_reject_step); - -// FLOW to display BIP32 path and pubkey: -// #1 screen: eye icon + "Confirm Pubkey" -// #2 screen: display BIP32 Path -// #3 screen: display pubkey -// #4 screen: approve button -// #5 screen: reject button -UX_FLOW(ux_display_pubkey_flow, - &ux_display_confirm_pubkey_step, - &ux_display_path_step, - &ux_display_pubkey_step, - &ux_display_approve_step, - &ux_display_reject_step); - -// FLOW to display BIP32 path and pubkey, for a non-standard path: -// #1 screen: warning icon + "The derivation path is unusual" -// #2 screen: crossmark icon + "Reject if not sure" (user can reject here) -// #3 screen: eye icon + "Confirm Pubkey" -// #4 screen: display BIP32 Path -// #5 screen: display pubkey -// #6 screen: approve button -// #7 screen: reject button -UX_FLOW(ux_display_pubkey_suspicious_flow, - &ux_display_unusual_derivation_path_step, - &ux_display_confirm_pubkey_step, - &ux_display_path_step, - &ux_display_reject_if_not_sure_step, - &ux_display_pubkey_step, - &ux_display_approve_step, - &ux_display_reject_step); - -// FLOW to display a receive address, for a standard path: -// #1 screen: eye icon + "Confirm Address" -// #2 screen: display address -// #3 screen: approve button -// #4 screen: reject button -UX_FLOW(ux_display_address_flow, - &ux_display_confirm_address_step, - &ux_display_address_step, - &ux_display_approve_step, - &ux_display_reject_step); - -// FLOW to display a receive address, for a non-standard path: -// #1 screen: warning icon + "The derivation path is unusual" -// #2 screen: display BIP32 Path -// #3 screen: crossmark icon + "Reject if not sure" (user can reject here) -// #4 screen: eye icon + "Confirm Address" -// #5 screen: display address -// #6 screen: approve button -// #7 screen: reject button -UX_FLOW(ux_display_address_suspicious_flow, - &ux_display_unusual_derivation_path_step, - &ux_display_path_step, - &ux_display_reject_if_not_sure_step, - &ux_display_confirm_address_step, - &ux_display_address_step, - &ux_display_approve_step, - &ux_display_reject_step); - -// FLOW to warn the user if a change output has an unusual derivation path -// (e.g. account index or address index too large): -// #1 screen: warning icon + "The derivation path is unusual" -// #2 screen: display BIP32 Path -// #3 screen: crossmark icon + "Reject if not sure" (user can reject here) -// #4 screen: approve button -// #5 screen: reject button -UX_FLOW(ux_display_unusual_derivation_path_flow, - &ux_display_unusual_derivation_path_step, - &ux_display_path_step, - &ux_display_reject_if_not_sure_step, - &ux_display_approve_step, - &ux_display_reject_step); - -// FLOW to display the header of a policy map wallet: -// #1 screen: eye icon + "Register wallet" and the wallet name -// #2 screen: display policy map (paginated) -// #3 screen: approve button -// #4 screen: reject button -UX_FLOW(ux_display_policy_map_header_flow, - &ux_display_wallet_header_name_step, - &ux_display_wallet_policy_map_type_step, - &ux_display_approve_step, - &ux_display_reject_step); - -// FLOW to display the header of a policy_map wallet: -// #1 screen: Cosigner index and pubkey (paginated) -// #2 screen: approve button -// #3 screen: reject button -UX_FLOW(ux_display_policy_map_cosigner_pubkey_flow, - &ux_display_wallet_policy_map_cosigner_pubkey_step, - &ux_display_approve_step, - &ux_display_reject_step); - -// FLOW to display the name and an address of a registered wallet: -// #1 screen: wallet name -// #2 screen: wallet address (paginated) -// #3 screen: approve button -// #4 screen: reject button -UX_FLOW(ux_display_wallet_name_address_flow, - &ux_display_receive_in_wallet_step, - &ux_display_wallet_address_step, - &ux_display_approve_step, - &ux_display_reject_step); - -// FLOW to display an address of a canonical wallet: -// #1 screen: wallet address (paginated) -// #2 screen: approve button -// #3 screen: reject button -UX_FLOW(ux_display_canonical_wallet_address_flow, - &ux_display_wallet_address_step, - &ux_display_approve_step, - &ux_display_reject_step); - -// FLOW to display a registered wallet and authorize spending: -// #1 screen: wallet name -// #2 screen: approve button -// #3 screen: reject button -UX_FLOW(ux_display_wallet_for_spending_flow, - &ux_display_spend_from_wallet_step, - &ux_display_approve_step, - &ux_display_reject_step); - -// FLOW to warn about external inputs -// #1 screen: warning icon + "There are external inputs" -// #2 screen: crossmark icon + "Reject if not sure" (user can reject here) -// #3 screen: "continue" button -UX_FLOW(ux_display_warning_external_inputs_flow, - &ux_display_warning_external_inputs_step, - &ux_display_reject_if_not_sure_step, - &ux_display_continue_step); - -// FLOW to validate a single output -// #1 screen: eye icon + "Review" + index of output to validate -// #2 screen: output amount -// #3 screen: output address (paginated) -// #4 screen: approve button -// #5 screen: reject button -UX_FLOW(ux_display_output_address_amount_flow, - &ux_review_step, - &ux_validate_amount_step, - &ux_validate_address_step, - &ux_display_approve_step, - &ux_display_reject_step); - -// FLOW to validate a single output -// #1 screen: eye icon + "Review" + index of output to validate -// #2 screen: reissuance token notice and asset ticker -// #3 screen: output amount -// #4 screen: output address (paginated) -// #5 screen: approve button -// #6 screen: reject button -UX_FLOW(ux_display_output_address_token_amount_flow, - &ux_review_step, - &ux_display_reissuance_token_step, - &ux_validate_amount_step, - &ux_validate_address_step, - &ux_display_approve_step, - &ux_display_reject_step); - -// Finalize see the transaction fees and finally accept signing -// #1 screen: eye icon + "Confirm Transaction" -// #2 screen: fee amount -// #3 screen: "Accept and send", with approve button -// #4 screen: reject button -UX_FLOW(ux_accept_transaction_flow, - &ux_confirm_transaction_step, - &ux_confirm_transaction_fees_step, - &ux_accept_and_send_step, - &ux_display_reject_step); - -#ifdef HAVE_LIQUID -// FLOW to warn about unknown asset -// #1 screen: warning icon + "The asset is unknown" -// #2 screen: asset tag -// #3 screen: crossmark icon + "Reject if not sure" (user can reject here) -// #4 screen: "continue" button -UX_FLOW(ux_display_warning_unknown_asset_flow, - &ux_display_warning_unknown_asset_step, - &ux_asset_tag_step, - &ux_display_reject_if_not_sure_step, - &ux_display_continue_step); - -// FLOW to validate a single output -// #1 screen: eye icon + "Review" + index of output to validate -// #2 screen: output amount -// #3 screen: asset tag -// #4 screen: output address (paginated) -// #5 screen: approve button -// #6 screen: reject button -UX_FLOW(ux_display_output_address_amount_asset_flow, - &ux_review_step, - &ux_validate_amount_step, - &ux_output_asset_tag_step, - &ux_validate_address_step, - &ux_display_approve_step, - &ux_display_reject_step); - -// FLOW to validate a single output -// #1 screen: eye icon + "Review" + index of output to validate -// #2 screen: reissuance token notice and asset ticker -// #3 screen: output amount -// #4 screen: asset tag -// #5 screen: output address (paginated) -// #6 screen: approve button -// #7 screen: reject button -UX_FLOW(ux_display_output_address_token_amount_asset_flow, - &ux_review_step, - &ux_display_reissuance_token_step, - &ux_validate_amount_step, - &ux_output_asset_tag_step, - &ux_validate_address_step, - &ux_display_approve_step, - &ux_display_reject_step); - -// FLOW to validate an asset -// #1 screen: eye icon + "Confirm asset" + asset ticker -// #2 screen: asset tag (paginated) -// #3 screen: asset name (paginated) -// #4 screen: asset domain (paginated) -// #5 screen: approve button -// #6 screen: reject button -UX_FLOW(ux_validate_asset_flow, - &ux_va_confirm_asset_step, - &ux_va_review_asset_tag_step, - &ux_va_review_asset_name_step, - &ux_va_review_asset_domain_step, - &ux_display_approve_step, - &ux_display_reject_step); -#endif - -void ui_display_pubkey(dispatcher_context_t *context, - const char *bip32_path_str, - bool is_path_suspicious, - const char *pubkey, - command_processor_t on_success) { - context->pause(); +void set_ux_flow_response(bool approved) { + g_ux_flow_ended = true; + g_ux_flow_response = approved; +} - ui_path_and_pubkey_state_t *state = (ui_path_and_pubkey_state_t *) &g_ui_state; +uint8_t get_streaming_index(void) { + return g_current_streaming_index; +} - strlcpy(state->bip32_path_str, bip32_path_str, sizeof(state->bip32_path_str)); - strlcpy(state->pubkey, pubkey, sizeof(state->pubkey)); +void reset_streaming_index(void) { + PRINTF("Reset streaming index\n"); + g_current_streaming_index = 0; +} - g_next_processor = on_success; +void increase_streaming_index(void) { + PRINTF("Increase streaming index\n"); + g_current_streaming_index += 1; +} - if (!is_path_suspicious) { - ux_flow_init(0, ux_display_pubkey_flow, NULL); - } else { - ux_flow_init(0, ux_display_pubkey_suspicious_flow, NULL); +void decrease_streaming_index(void) { + PRINTF("Decrease streaming index\n"); + if (g_current_streaming_index > 0) { + g_current_streaming_index -= 1; } } -void ui_display_message_hash(dispatcher_context_t *context, - const char *bip32_path_str, - const char *message_hash, - command_processor_t on_success) { - context->pause(); +// Process UI events until the current flow terminates; does not handle any APDU exchange +// This method also sets the UI state as "dirty" according to the input parameter +// so that the dispatcher refreshes resets the UI at the end of the command handler. +// Returns true/false depending if the user accepted in the corresponding UX flow. +static bool io_ui_process(dispatcher_context_t *context, bool set_dirty) { + G_was_processing_screen_shown = false; - ui_path_and_hash_state_t *state = (ui_path_and_hash_state_t *) &g_ui_state; + g_ux_flow_ended = false; - strlcpy(state->bip32_path_str, bip32_path_str, sizeof(state->bip32_path_str)); - strlcpy(state->hash_hex, message_hash, sizeof(state->hash_hex)); + if (set_dirty) { + context->set_ui_dirty(); + } - g_next_processor = on_success; + // We are not waiting for the client's input, nor we are doing computations on the device + io_clear_processing_timeout(); - ux_flow_init(0, ux_sign_message_flow, NULL); -} + io_seproxyhal_general_status(); + do { + io_seproxyhal_spi_recv(G_io_seproxyhal_spi_buffer, sizeof(G_io_seproxyhal_spi_buffer), 0); + io_seproxyhal_handle_event(); + io_seproxyhal_general_status(); + } while (io_seproxyhal_spi_is_status_sent() && !g_ux_flow_ended); -void ui_display_address(dispatcher_context_t *context, - const char *address, - bool is_path_suspicious, - const char *path_str, - command_processor_t on_success) { - context->pause(); + // We're back at work, we want to show the "Processing..." screen when appropriate + io_start_processing_timeout(); - ui_path_and_address_state_t *state = (ui_path_and_address_state_t *) &g_ui_state; + return g_ux_flow_response; +} - strlcpy(state->address, address, sizeof(state->address)); +bool ui_display_pubkey(dispatcher_context_t *context, + const char *bip32_path_str, + bool is_path_suspicious, + const char *pubkey) { + ui_path_and_pubkey_state_t *state = (ui_path_and_pubkey_state_t *) &g_ui_state; - g_next_processor = on_success; + strncpy(state->bip32_path_str, bip32_path_str, sizeof(state->bip32_path_str)); + strncpy(state->pubkey, pubkey, sizeof(state->pubkey)); if (!is_path_suspicious) { - ux_flow_init(0, ux_display_address_flow, NULL); + ui_display_pubkey_flow(); } else { - strlcpy(state->bip32_path_str, path_str, sizeof(state->bip32_path_str)); - ux_flow_init(0, ux_display_address_suspicious_flow, NULL); + ui_display_pubkey_suspicious_flow(); } + + return io_ui_process(context, true); +} + +bool ui_display_path_and_message_content(dispatcher_context_t *context, + const char *path_str, + const char *message_content, + uint8_t pageCount) { + ui_path_and_message_state_t *state = (ui_path_and_message_state_t *) &g_ui_state; + strncpy(state->bip32_path_str, path_str, sizeof(state->bip32_path_str)); + strncpy(state->message, message_content, sizeof(state->message)); + + ui_sign_message_content_flow(pageCount); + + return io_ui_process(context, true); } -void ui_display_wallet_header(dispatcher_context_t *context, - const policy_map_wallet_header_t *wallet_header, - command_processor_t on_success) { - context->pause(); +bool ui_display_message_path_hash_and_confirm(dispatcher_context_t *context, + const char *path_str, + const char *message_hash) { + ui_path_and_message_state_t *state = (ui_path_and_message_state_t *) &g_ui_state; + strncpy(state->bip32_path_str, path_str, sizeof(state->bip32_path_str)); + strncpy(state->message, message_hash, sizeof(state->message)); + ui_sign_message_path_hash_and_confirm_flow(); + + return io_ui_process(context, true); +} + +bool ui_display_message_confirm(dispatcher_context_t *context) { + (void) context; + ui_sign_message_confirm_flow(); + + return io_ui_process(context, true); +} + +bool ui_display_register_wallet(dispatcher_context_t *context, + const policy_map_wallet_header_t *wallet_header, + const char *policy_descriptor) { ui_wallet_state_t *state = (ui_wallet_state_t *) &g_ui_state; - strlcpy(state->wallet_name, wallet_header->name, sizeof(wallet_header->name)); - strlcpy(state->policy_map, wallet_header->policy_map, sizeof(wallet_header->policy_map)); + strncpy(state->wallet_name, wallet_header->name, sizeof(state->wallet_name)); + state->wallet_name[wallet_header->name_len] = 0; + strncpy(state->descriptor_template, policy_descriptor, sizeof(state->descriptor_template)); + state->descriptor_template[wallet_header->descriptor_template_len] = 0; - g_next_processor = on_success; + ui_display_register_wallet_flow(); - ux_flow_init(0, ux_display_policy_map_header_flow, NULL); + return io_ui_process(context, true); } -void ui_display_policy_map_cosigner_pubkey(dispatcher_context_t *context, +bool ui_display_policy_map_cosigner_pubkey(dispatcher_context_t *context, const char *pubkey, uint8_t cosigner_index, uint8_t n_keys, - bool is_internal, - command_processor_t on_success) { + key_type_e key_type) { (void) (n_keys); - context->pause(); - ui_cosigner_pubkey_and_index_state_t *state = (ui_cosigner_pubkey_and_index_state_t *) &g_ui_state; - strlcpy(state->pubkey, pubkey, sizeof(state->pubkey)); + strncpy(state->pubkey, pubkey, sizeof(state->pubkey)); - if (is_internal) { + if (key_type == PUBKEY_TYPE_INTERNAL) { + snprintf(state->signer_index, sizeof(state->signer_index), "Key @%u, ours", cosigner_index); + } else if (key_type == PUBKEY_TYPE_EXTERNAL) { snprintf(state->signer_index, sizeof(state->signer_index), - "Key @%u ", - cosigner_index + 1); - } else { + "Key @%u, theirs", + cosigner_index); + } else if (key_type == PUBKEY_TYPE_UNSPENDABLE) { snprintf(state->signer_index, sizeof(state->signer_index), - "Key @%u ", - cosigner_index + 1); + "Key @%u, dummy", + cosigner_index); + } else { + LEDGER_ASSERT(false, "Unreachable code"); } + ui_display_policy_map_cosigner_pubkey_flow(); - g_next_processor = on_success; - - ux_flow_init(0, ux_display_policy_map_cosigner_pubkey_flow, NULL); + return io_ui_process(context, true); } -void ui_display_wallet_address(dispatcher_context_t *context, +bool ui_display_wallet_address(dispatcher_context_t *context, const char *wallet_name, - const char *address, - command_processor_t on_success) { - context->pause(); - + const char *address) { ui_wallet_state_t *state = (ui_wallet_state_t *) &g_ui_state; - strlcpy(state->address, address, sizeof(state->address)); - g_next_processor = on_success; + strncpy(state->address, address, sizeof(state->address)); if (wallet_name == NULL) { - ux_flow_init(0, ux_display_canonical_wallet_address_flow, NULL); + ui_display_default_wallet_address_flow(); } else { - strlcpy(state->wallet_name, wallet_name, sizeof(state->wallet_name)); - ux_flow_init(0, ux_display_wallet_name_address_flow, NULL); + strncpy(state->wallet_name, wallet_name, sizeof(state->wallet_name)); + ui_display_receive_in_wallet_flow(); } -} - -void ui_display_unusual_path(dispatcher_context_t *context, - const char *bip32_path_str, - command_processor_t on_success) { - context->pause(); - - ui_path_state_t *state = (ui_path_state_t *) &g_ui_state; - - g_next_processor = on_success; - strlcpy(state->bip32_path_str, bip32_path_str, sizeof(state->bip32_path_str)); - ux_flow_init(0, ux_display_unusual_derivation_path_flow, NULL); + return io_ui_process(context, true); } -void ui_authorize_wallet_spend(dispatcher_context_t *context, - const char *wallet_name, - command_processor_t on_success) { - context->pause(); - +bool ui_authorize_wallet_spend(dispatcher_context_t *context, const char *wallet_name) { ui_wallet_state_t *state = (ui_wallet_state_t *) &g_ui_state; - strlcpy(state->wallet_name, wallet_name, sizeof(state->wallet_name)); + strncpy(state->wallet_name, wallet_name, sizeof(state->wallet_name)); + ui_display_spend_from_wallet_flow(); - g_next_processor = on_success; + return io_ui_process(context, true); +} - ux_flow_init(0, ux_display_wallet_for_spending_flow, NULL); +bool ui_warn_external_inputs(dispatcher_context_t *context) { + ui_display_warning_external_inputs_flow(); + return io_ui_process(context, true); } -void ui_warn_external_inputs(dispatcher_context_t *context, command_processor_t on_success) { - (void) (context); +bool ui_warn_unverified_segwit_inputs(dispatcher_context_t *context) { + ui_display_unverified_segwit_inputs_flows(); + return io_ui_process(context, true); +} - g_next_processor = on_success; +bool ui_warn_nondefault_sighash(dispatcher_context_t *context) { + ui_display_nondefault_sighash_flow(); + return io_ui_process(context, true); +} - ux_flow_init(0, ux_display_warning_external_inputs_flow, NULL); +bool ui_transaction_prompt(dispatcher_context_t *context, const int external_outputs_total_count) { + ui_display_transaction_prompt(external_outputs_total_count); + return io_ui_process(context, true); } -void ui_validate_output(dispatcher_context_t *context, +bool ui_validate_output(dispatcher_context_t *context, int index, + int total_count, const char *address_or_description, const char *coin_name, - uint64_t amount, - uint8_t decimals, -#ifdef HAVE_LIQUID - const uint8_t asset_tag[static 32], - bool display_asset_tag, - bool asset_is_reissuance_token, -#endif - command_processor_t on_success) { - context->pause(); - + uint64_t amount) { ui_validate_output_state_t *state = (ui_validate_output_state_t *) &g_ui_state; - snprintf(state->index, sizeof(state->index), "output #%d", index); - strlcpy(state->address_or_description, + strncpy(state->address_or_description, address_or_description, sizeof(state->address_or_description)); + format_sats_amount(coin_name, amount, state->amount); - g_next_processor = on_success; - -#ifdef HAVE_LIQUID - if (asset_is_reissuance_token) { - format_amount("token", amount, decimals, state->amount); - snprintf(state->token_ticker, sizeof(state->token_ticker), "of asset %s", coin_name); + if (total_count == 1) { + ui_display_output_address_amount_no_index_flow(index); } else { - format_amount(coin_name, amount, decimals, state->amount); + ui_display_output_address_amount_flow(index); } - if (display_asset_tag) { - liquid_format_asset_tag(asset_tag, state->tag_hex); - ux_flow_init(0, asset_is_reissuance_token ? - ux_display_output_address_token_amount_asset_flow : - ux_display_output_address_amount_asset_flow, - NULL); - } else { - ux_flow_init(0, asset_is_reissuance_token ? - ux_display_output_address_token_amount_flow : - ux_display_output_address_amount_flow, - NULL); - } -#else - format_amount(coin_name, amount, decimals, state->amount); - ux_flow_init(0, ux_display_output_address_amount_flow, NULL); -#endif + return io_ui_process(context, true); +} + +bool ui_warn_high_fee(dispatcher_context_t *context) { + ui_warn_high_fee_flow(); + + return io_ui_process(context, true); } -void ui_validate_transaction(dispatcher_context_t *context, +bool ui_validate_transaction(dispatcher_context_t *context, const char *coin_name, uint64_t fee, - uint8_t decimals, - const char *transaction_type, - command_processor_t on_success) { - context->pause(); - + bool is_self_transfer) { ui_validate_transaction_state_t *state = (ui_validate_transaction_state_t *) &g_ui_state; - g_next_processor = on_success; + format_sats_amount(coin_name, fee, state->fee); - format_amount(coin_name, fee, decimals, state->fee); + ui_accept_transaction_flow(is_self_transfer); - strlcpy(state->transaction_type, - (NULL != transaction_type) ? transaction_type : "transaction", - sizeof(state->transaction_type)); + return io_ui_process(context, true); +} - ux_flow_init(0, ux_accept_transaction_flow, NULL); +#ifdef HAVE_BAGL +bool ui_post_processing_confirm_wallet_registration(dispatcher_context_t *context, bool success) { + (void) context; + (void) success; + return true; } -#ifdef HAVE_LIQUID -void ui_warn_unknown_asset(dispatcher_context_t *context, - const uint8_t asset_tag[static 32], - const command_processor_t on_success) { - context->pause(); +bool ui_post_processing_confirm_wallet_spend(dispatcher_context_t *context, bool success) { + (void) context; + (void) success; + return true; +} - ui_asset_state_t *state = (ui_asset_state_t *) &g_ui_state; +bool ui_post_processing_confirm_transaction(dispatcher_context_t *context, bool success) { + (void) context; + (void) success; + return true; +} + +bool ui_post_processing_confirm_message(dispatcher_context_t *context, bool success) { + (void) context; + (void) success; + return true; +} - liquid_format_asset_tag(asset_tag, state->tag_hex); +void ui_pre_processing_message(void) { + return; +} +#endif // HAVE_BAGL - g_next_processor = on_success; +#ifdef HAVE_NBGL +bool ui_post_processing_confirm_wallet_registration(dispatcher_context_t *context, bool success) { + (void) context; + ui_display_post_processing_confirm_wallet_registation(success); - ux_flow_init(0, ux_display_warning_unknown_asset_flow, NULL); + return true; } -void ui_validate_asset(dispatcher_context_t *context, - const uint8_t asset_tag[static 32], - const asset_info_ext_t *asset_info, - const command_processor_t on_success) { +bool ui_post_processing_confirm_wallet_spend(dispatcher_context_t *context, bool success) { + ui_display_post_processing_confirm_wallet_spend(success); - context->pause(); + return io_ui_process(context, success); +} - ui_validate_asset_state_t *state = (ui_validate_asset_state_t *) &g_ui_state; +bool ui_post_processing_confirm_transaction(dispatcher_context_t *context, bool success) { + ui_display_post_processing_confirm_transaction(success); - liquid_format_asset_tag(asset_tag, state->tag_hex); - strlcpy(state->ticker, asset_info->info.ticker, sizeof(state->ticker)); - strlcpy(state->name, asset_info->name, sizeof(state->name)); - strlcpy(state->domain, asset_info->domain, sizeof(state->domain)); + return io_ui_process(context, success); +} - g_next_processor = on_success; +bool ui_post_processing_confirm_message(dispatcher_context_t *context, bool success) { + (void) context; + ui_display_post_processing_confirm_message(success); - ux_flow_init(0, ux_validate_asset_flow, NULL); + return true; } -#endif +void ui_pre_processing_message(void) { + ui_set_display_prompt(); +} +#endif // HAVE_NBGL diff --git a/src/ui/display.h b/src/ui/display.h index 64faeb009..7cb2176c7 100644 --- a/src/ui/display.h +++ b/src/ui/display.h @@ -4,7 +4,82 @@ #include "../boilerplate/dispatcher.h" #include "../common/wallet.h" -#include "../liquid/liquid_assets.h" +#include "./display.h" +#include "./display_utils.h" +#include "../constants.h" +#include "../globals.h" +#include "../boilerplate/io.h" +#include "../boilerplate/sw.h" +#include "../common/bip32.h" +#include "../common/format.h" +#include "../common/script.h" +#include "../constants.h" + +#define MESSAGE_CHUNK_SIZE 64 // Protocol specific +#define MESSAGE_CHUNK_PER_DISPLAY 2 // This could be changed depending on screen sizes +#define MESSAGE_MAX_DISPLAY_SIZE \ + (MESSAGE_CHUNK_SIZE * MESSAGE_CHUNK_PER_DISPLAY + 2 * sizeof("...") - 1) + +// TODO: hard to keep track of what globals are used in the same flows +// (especially since the same flow step can be shared in different flows) + +typedef struct { + char bip32_path_str[MAX_SERIALIZED_BIP32_PATH_LENGTH + 1]; +} ui_path_state_t; + +typedef struct { + char bip32_path_str[MAX_SERIALIZED_BIP32_PATH_LENGTH + 1]; + char pubkey[MAX_SERIALIZED_PUBKEY_LENGTH + 1]; +} ui_path_and_pubkey_state_t; + +typedef struct { + char bip32_path_str[MAX_SERIALIZED_BIP32_PATH_LENGTH + 1]; + char address[MAX_ADDRESS_LENGTH_STR + 1]; +} ui_path_and_address_state_t; + +typedef struct { + char bip32_path_str[MAX_SERIALIZED_BIP32_PATH_LENGTH + 1]; + char message[MESSAGE_MAX_DISPLAY_SIZE]; +} ui_path_and_message_state_t; + +typedef struct { + char wallet_name[MAX_WALLET_NAME_LENGTH + 1]; + + // no flows show together both a policy map and an address, therefore we share memory + union { + char descriptor_template[MAX_DESCRIPTOR_TEMPLATE_LENGTH + 1]; + char address[MAX_ADDRESS_LENGTH_STR + 1]; + }; +} ui_wallet_state_t; + +typedef struct { + char pubkey[MAX_POLICY_KEY_INFO_LEN + 1]; + char signer_index[sizeof("Key @999 ")]; +} ui_cosigner_pubkey_and_index_state_t; + +typedef struct { + char index[sizeof("output #999")]; + char address_or_description[MAX(MAX_ADDRESS_LENGTH_STR + 1, MAX_OPRETURN_OUTPUT_DESC_SIZE)]; + char amount[MAX_AMOUNT_LENGTH + 1]; +} ui_validate_output_state_t; + +typedef struct { + char fee[MAX_AMOUNT_LENGTH + 1]; +} ui_validate_transaction_state_t; + +/** + * Union of all the states for each of the UI screens, in order to save memory. + */ +typedef union { + ui_path_and_pubkey_state_t path_and_pubkey; + ui_path_and_address_state_t path_and_address; + ui_path_and_message_state_t path_and_message; + ui_wallet_state_t wallet; + ui_cosigner_pubkey_and_index_state_t cosigner_pubkey_and_index; + ui_validate_output_state_t validate_output; + ui_validate_transaction_state_t validate_transaction; +} ui_state_t; +extern ui_state_t g_ui_state; /** * Callback to reuse action with approve/reject in step FLOW. @@ -14,80 +89,134 @@ typedef void (*action_validate_cb)(dispatcher_context_t *dispatcher_context, boo /** * Display the derivation path and pubkey, and asks the confirmation to export. * - * @return 0 if success, negative integer otherwise. - * TODO: document params + * TODO: docs */ -void ui_display_pubkey(dispatcher_context_t *context, +bool ui_display_pubkey(dispatcher_context_t *context, const char *bip32_path_str, bool is_path_suspicious, - const char *pubkey, - command_processor_t on_success); + const char *pubkey); + +bool ui_display_path_and_message_content(dispatcher_context_t *context, + const char *path_str, + const char *message_content, + uint8_t pageCount); + +bool ui_display_message_path_hash_and_confirm(dispatcher_context_t *context, + const char *path_str, + const char *message_hash); -// TODO: docs -void ui_display_message_hash(dispatcher_context_t *context, - const char *bip32_path_str, - const char *message_hash, - command_processor_t on_success); +bool ui_display_message_confirm(dispatcher_context_t *context); -void ui_display_address(dispatcher_context_t *dispatcher_context, +bool ui_display_address(dispatcher_context_t *dispatcher_context, const char *address, bool is_path_suspicious, - const char *bip32_path_str, - command_processor_t on_success); + const char *bip32_path_str); -void ui_display_wallet_header(dispatcher_context_t *context, - const policy_map_wallet_header_t *wallet_header, - command_processor_t on_success); +bool ui_display_register_wallet(dispatcher_context_t *context, + const policy_map_wallet_header_t *wallet_header, + const char *policy_descriptor); -void ui_display_policy_map_cosigner_pubkey(dispatcher_context_t *dispatcher_context, +typedef enum { + PUBKEY_TYPE_INTERNAL = 0, // a key controlled by the wallet policy + PUBKEY_TYPE_EXTERNAL = 1, // a key not controlled by the wallet policy + PUBKEY_TYPE_UNSPENDABLE = 2 // the provably unspendable public key defined in BIP-341 +} key_type_e; + +bool ui_display_policy_map_cosigner_pubkey(dispatcher_context_t *dispatcher_context, const char *pubkey, uint8_t cosigner_index, uint8_t n_keys, - bool is_internal, - command_processor_t on_success); + key_type_e key_type); -void ui_display_wallet_address(dispatcher_context_t *context, +bool ui_display_wallet_address(dispatcher_context_t *context, const char *wallet_name, - const char *address, - command_processor_t on_success); + const char *address); -void ui_display_unusual_path(dispatcher_context_t *context, - const char *bip32_path_str, - command_processor_t on_success); +bool ui_display_unusual_path(dispatcher_context_t *context, const char *bip32_path_str); -void ui_authorize_wallet_spend(dispatcher_context_t *context, - const char *wallet_name, - command_processor_t on_success); +bool ui_authorize_wallet_spend(dispatcher_context_t *context, const char *wallet_name); + +bool ui_warn_external_inputs(dispatcher_context_t *context); -void ui_warn_external_inputs(dispatcher_context_t *context, command_processor_t on_success); +bool ui_warn_unverified_segwit_inputs(dispatcher_context_t *context); -void ui_validate_output(dispatcher_context_t *context, +bool ui_warn_nondefault_sighash(dispatcher_context_t *context); + +bool ui_validate_output(dispatcher_context_t *context, int index, + int total_count, const char *address_or_description, const char *coin_name, - uint64_t amount, - uint8_t decimals, -#ifdef HAVE_LIQUID - const uint8_t asset_tag[static 32], - bool display_asset_tag, - bool asset_is_reissuance_token, -#endif - command_processor_t on_success); + uint64_t amount); -void ui_validate_transaction(dispatcher_context_t *context, +bool ui_warn_high_fee(dispatcher_context_t *context); + +bool ui_validate_transaction(dispatcher_context_t *context, const char *coin_name, uint64_t fee, - uint8_t decimals, - const char *transaction_type, - command_processor_t on_success); - -#ifdef HAVE_LIQUID -void ui_warn_unknown_asset(dispatcher_context_t *context, - const uint8_t asset_tag[static 32], - const command_processor_t on_success); - -void ui_validate_asset(dispatcher_context_t *context, - const uint8_t asset_tag[static 32], - const asset_info_ext_t *asset_info, - const command_processor_t on_success); + bool is_self_transfer); + +void set_ux_flow_response(bool approved); + +void ui_display_pubkey_flow(void); + +void ui_display_pubkey_suspicious_flow(void); + +void ui_sign_message_path_hash_and_confirm_flow(void); + +void ui_sign_message_content_flow(uint8_t pageCount); + +void ui_sign_message_confirm_flow(void); + +void ui_display_register_wallet_flow(void); + +void ui_display_policy_map_cosigner_pubkey_flow(void); + +void ui_display_receive_in_wallet_flow(void); + +void ui_display_default_wallet_address_flow(void); + +void ui_display_spend_from_wallet_flow(void); + +void ui_display_warning_external_inputs_flow(void); + +void ui_display_unverified_segwit_inputs_flows(void); + +void ui_display_nondefault_sighash_flow(void); + +void ui_display_output_address_amount_flow(int index); + +void ui_display_output_address_amount_no_index_flow(int index); + +void ui_warn_high_fee_flow(void); + +void ui_accept_transaction_flow(bool is_self_transfer); + +void ui_display_transaction_prompt(const int external_outputs_total_count); + +bool ui_post_processing_confirm_wallet_registration(dispatcher_context_t *context, bool success); + +bool ui_post_processing_confirm_wallet_spend(dispatcher_context_t *context, bool success); + +bool ui_post_processing_confirm_transaction(dispatcher_context_t *context, bool success); + +bool ui_post_processing_confirm_message(dispatcher_context_t *context, bool success); + +void ui_pre_processing_message(void); + +#ifdef HAVE_NBGL +bool ui_transaction_prompt(dispatcher_context_t *context, const int external_outputs_total_count); +void ui_display_post_processing_confirm_message(bool success); +void ui_display_post_processing_confirm_wallet_registation(bool success); +void ui_display_post_processing_confirm_transaction(bool success); +void ui_display_post_processing_confirm_wallet_spend(bool success); +void ui_set_display_prompt(void); +#else +#define ux_layout_custom_params_t ux_layout_paging_params_t +void ux_layout_custom_init(unsigned int stack_slot); #endif + +uint8_t get_streaming_index(void); +void reset_streaming_index(void); +void increase_streaming_index(void); +void decrease_streaming_index(void); diff --git a/src/ui/display_bagl.c b/src/ui/display_bagl.c new file mode 100644 index 000000000..f6f03a087 --- /dev/null +++ b/src/ui/display_bagl.c @@ -0,0 +1,547 @@ +#ifdef HAVE_BAGL + +#pragma GCC diagnostic ignored "-Wformat-invalid-specifier" // snprintf +#pragma GCC diagnostic ignored "-Wformat-extra-args" // snprintf + +#include // bool +#include // snprintf +#include // memset +#include + +#include "os.h" +#include "ux.h" + +#include "./display.h" +#include "./display_utils.h" +#include "../constants.h" +#include "../globals.h" +#include "../boilerplate/io.h" +#include "../boilerplate/sw.h" +#include "../common/bip32.h" +#include "../common/format.h" +#include "../common/script.h" +#include "../constants.h" + +/* + STATELESS STEPS + As these steps do not access per-step globals (except possibly a callback), they can be used in + any flow. +*/ + +// Step with icon and text for pubkey +UX_STEP_NOCB(ux_display_confirm_pubkey_step, pn, {&C_icon_eye, "Confirm public key"}); + +// Step with icon and text for a suspicious address +UX_STEP_NOCB(ux_display_unusual_derivation_path_step, + pnn, + { + &C_icon_warning, + "The derivation", + "path is unusual", + }); + +// Step with icon and text to caution the user to reject if unsure +UX_STEP_CB(ux_display_reject_if_not_sure_step, + pnn, + set_ux_flow_response(false), + { + &C_icon_crossmark, + "Reject if you're", + "not sure", + }); + +// Step with approve button +UX_STEP_CB(ux_display_approve_step, + pb, + set_ux_flow_response(true), + { + &C_icon_validate_14, + "Approve", + }); + +// Step with continue button +UX_STEP_CB(ux_display_continue_step, + pb, + set_ux_flow_response(true), + { + &C_icon_validate_14, + "Continue", + }); + +// Step with reject button +UX_STEP_CB(ux_display_reject_step, + pb, + set_ux_flow_response(false), + { + &C_icon_crossmark, + "Reject", + }); + +/* + STATEFUL STEPS + These can only be used in the context of specific flows, as they access a common shared space + for strings. +*/ + +// PATH/PUBKEY or PATH/ADDRESS + +// Step with title/text for BIP32 path +UX_STEP_NOCB(ux_display_path_step, + bnnn_paging, + { + .title = "Path", + .text = g_ui_state.path_and_pubkey.bip32_path_str, + }); + +// Step with title/text for pubkey +UX_STEP_NOCB(ux_display_pubkey_step, + bnnn_paging, + { + .title = "Public key", + .text = g_ui_state.path_and_pubkey.pubkey, + }); + +// Step with description of a wallet policy +UX_STEP_NOCB(ux_display_wallet_policy_map_step, + bnnn_paging, + { + .title = "Wallet policy:", + .text = g_ui_state.wallet.descriptor_template, + }); + +// Step with index and xpub of a cosigner of a policy_map wallet +UX_STEP_NOCB(ux_display_wallet_policy_cosigner_pubkey_step, + bnnn_paging, + { + .title = g_ui_state.cosigner_pubkey_and_index.signer_index, + .text = g_ui_state.cosigner_pubkey_and_index.pubkey, + }); + +// Step with title/text for address, used when showing a wallet receive address +UX_STEP_NOCB(ux_display_wallet_address_step, + bnnn_paging, + { + .title = "Address", + .text = g_ui_state.wallet.address, + }); + +// Step with warning icon and text explaining that there are external inputs +UX_STEP_NOCB(ux_display_warning_external_inputs_step, + pnn, + { + &C_icon_warning, + "There are", + "external inputs", + }); + +// Step with warning icon for unverified inputs (segwit inputs with no non-witness-utxo) +UX_STEP_NOCB(ux_unverified_segwit_input_flow_1_step, pb, {&C_icon_warning, "Unverified inputs"}); +UX_STEP_NOCB(ux_unverified_segwit_input_flow_2_step, nn, {"Update", "Ledger Live"}); +UX_STEP_NOCB(ux_unverified_segwit_input_flow_3_step, nn, {"or third party", "wallet software"}); + +// Step with warning icon for nondefault sighash +UX_STEP_NOCB(ux_nondefault_sighash_flow_1_step, pb, {&C_icon_warning, "Non-default sighash"}); + +// Step with eye icon and "Review" and the output index +UX_STEP_NOCB(ux_review_step, + pnn, + { + &C_icon_eye, + "Review", + g_ui_state.validate_output.index, + }); + +// Step with "Amount" and an output amount +UX_STEP_NOCB(ux_validate_amount_step, + bnnn_paging, + { + .title = "Amount", + .text = g_ui_state.validate_output.amount, + }); + +// Step with "Address" and a paginated address +UX_STEP_NOCB(ux_validate_address_step, + bnnn_paging, + { + .title = "Address", + .text = g_ui_state.validate_output.address_or_description, + }); + +// Step with eye icon and a "high fees" warning +#ifdef TARGET_NANOS +UX_STEP_NOCB(ux_high_fee_step, + pnn, + { + &C_icon_eye, + "Fees over 10%", + "of total value!", + }); +#else +UX_STEP_NOCB(ux_high_fee_step, + pnn, + { + &C_icon_eye, + "Fees are above 10%", + "of total amount!", + }); +#endif + +UX_STEP_NOCB(ux_confirm_selftransfer_step, pnn, {&C_icon_eye, "Confirm", "self-transfer"}); +UX_STEP_NOCB(ux_confirm_transaction_fees_step, + bnnn_paging, + { + .title = "Fees", + .text = g_ui_state.validate_transaction.fee, + }); +UX_STEP_CB(ux_sign_transaction_step, + pbb, + set_ux_flow_response(true), + {&C_icon_validate_14, "Sign", "transaction"}); + +// Step with wallet icon and "Register wallet" +UX_STEP_NOCB(ux_display_register_wallet_step, + pb, + { + &C_icon_wallet, + "Register wallet", + }); + +// Step with wallet icon and "Receive in known wallet" +UX_STEP_NOCB(ux_display_receive_in_registered_wallet_step, + pnn, + { + &C_icon_wallet, + "Receive in", + "known wallet", + }); + +// Step with wallet icon and "Spend from known wallet" +UX_STEP_NOCB(ux_display_spend_from_registered_wallet_step, + pnn, + { + &C_icon_wallet, + "Spend from", + "known wallet", + }); + +// Step with "Wallet name:", followed by the wallet name +UX_STEP_NOCB(ux_display_wallet_name_step, + bnnn_paging, + { + .title = "Wallet name:", + .text = g_ui_state.wallet.wallet_name, + }); + +////////////////////////////////////////////////////////////////////// +UX_STEP_NOCB(ux_sign_message_step, + pnn, + { + &C_icon_certificate, + "Sign", + "message", + }); + +UX_STEP_CB(ux_message_sign_display_path_step, + bnnn_paging, + set_ux_flow_response(true), + { + .title = "Path", + .text = g_ui_state.path_and_message.bip32_path_str, + }); + +UX_STEP_NOCB(ux_message_hash_step, + bnnn_paging, + { + .title = "Message hash", + .text = g_ui_state.path_and_message.message, + }); + +UX_STEP_CB(ux_sign_message_accept_new, + pbb, + set_ux_flow_response(true), + {&C_icon_validate_14, "Sign", "message"}); + +UX_STEP_CB(ux_message_content_step, + custom, + set_ux_flow_response(true), + { + .title = "Message content", + .text = g_ui_state.path_and_message.message, + }); + +// FLOW to display BIP32 path to sign a message: +// #1 screen: certificate icon + "Sign message" +// #2 screen: display BIP32 Path +// #3 screen: first page of message content +UX_FLOW(ux_sign_message_path_and_content_flow, + &ux_sign_message_step, + &ux_message_sign_display_path_step, + &ux_message_content_step, + &ux_message_content_step); + +// FLOW to display a message hash and confirmation to sign a message: +// #1 screen: certificate icon + "Sign message" +// #2 screen: display BIP32 Path +// #3 screen: display message hash +// #4 screen: "Sign message" and approve button +// #5 screen: reject button +UX_FLOW(ux_sign_message_path_hash_and_confirm_flow, + &ux_sign_message_step, + &ux_message_sign_display_path_step, + &ux_message_hash_step, + &ux_sign_message_accept_new, + &ux_display_reject_step); + +// FLOW to display the message content: +// #1 screen: display message content +UX_FLOW(ux_sign_message_content_flow, &ux_message_content_step, FLOW_LOOP); + +// FLOW to display a confirmation to sign a message: +// #1 screen: "Sign message" and approve button +// #2 screen: reject button +UX_FLOW(ux_sign_message_confirm_flow, &ux_sign_message_accept_new, &ux_display_reject_step); + +// FLOW to display BIP32 path and pubkey: +// #1 screen: eye icon + "Confirm Pubkey" +// #2 screen: display BIP32 Path +// #3 screen: display pubkey +// #4 screen: approve button +// #5 screen: reject button +UX_FLOW(ux_display_pubkey_flow, + &ux_display_confirm_pubkey_step, + &ux_display_path_step, + &ux_display_pubkey_step, + &ux_display_approve_step, + &ux_display_reject_step); + +// FLOW to display BIP32 path and pubkey, for a non-standard path: +// #1 screen: warning icon + "The derivation path is unusual" +// #2 screen: crossmark icon + "Reject if not sure" (user can reject here) +// #3 screen: eye icon + "Confirm Pubkey" +// #4 screen: display BIP32 Path +// #5 screen: display pubkey +// #6 screen: approve button +// #7 screen: reject button +UX_FLOW(ux_display_pubkey_suspicious_flow, + &ux_display_unusual_derivation_path_step, + &ux_display_confirm_pubkey_step, + &ux_display_path_step, + &ux_display_reject_if_not_sure_step, + &ux_display_pubkey_step, + &ux_display_approve_step, + &ux_display_reject_step); + +// FLOW to display the header of a policy map wallet: +// #1 screen: Wallet icon + "Register wallet" +// #2 screen: "Wallet name:" and wallet name +// #3 screen: display policy map (paginated) +// #4 screen: approve button +// #5 screen: reject button +UX_FLOW(ux_display_register_wallet_flow, + &ux_display_register_wallet_step, + &ux_display_wallet_name_step, + &ux_display_wallet_policy_map_step, + &ux_display_approve_step, + &ux_display_reject_step); + +// FLOW to display the header of a policy_map wallet: +// #1 screen: Cosigner index and pubkey (paginated) +// #2 screen: approve button +// #3 screen: reject button +UX_FLOW(ux_display_policy_map_cosigner_pubkey_flow, + &ux_display_wallet_policy_cosigner_pubkey_step, + &ux_display_approve_step, + &ux_display_reject_step); + +// FLOW to display the name and an address of a registered wallet: +// #1 screen: Wallet icon + "Receive in known wallet" +// #2 screen: wallet name +// #3 screen: wallet address (paginated) +// #4 screen: approve button +// #5 screen: reject button +UX_FLOW(ux_display_receive_in_wallet_flow, + &ux_display_receive_in_registered_wallet_step, + &ux_display_wallet_name_step, + &ux_display_wallet_address_step, + &ux_display_approve_step, + &ux_display_reject_step); + +// FLOW to display an address of a default wallet policy: +// #1 screen: wallet address (paginated) +// #2 screen: approve button +// #3 screen: reject button +UX_FLOW(ux_display_default_wallet_address_flow, + &ux_display_wallet_address_step, + &ux_display_approve_step, + &ux_display_reject_step); + +// FLOW to display a registered wallet and authorize spending: +// #1 screen: "Spend from known wallet" +// #2 screen: wallet name +// #3 screen: "Continue" button +// #4 screen: reject button +UX_FLOW(ux_display_spend_from_wallet_flow, + &ux_display_spend_from_registered_wallet_step, + &ux_display_wallet_name_step, + &ux_display_continue_step, + &ux_display_reject_step); + +// FLOW to warn about external inputs +// #1 screen: warning icon + "There are external inputs" +// #2 screen: crossmark icon + "Reject if not sure" (user can reject here) +// #3 screen: "continue" button +UX_FLOW(ux_display_warning_external_inputs_flow, + &ux_display_warning_external_inputs_step, + &ux_display_reject_if_not_sure_step, + &ux_display_continue_step); + +// FLOW to warn about segwitv0 inputs with no non-witness-utxo +// #1 screen: warning icon + "Unverified inputs" +// #2 screen: "Update Ledger Live" +// #3 screen: "or external wallet software" +// #4 screen: "continue" button +// #5 screen: "reject" button +UX_FLOW(ux_display_unverified_segwit_inputs_flow, + &ux_unverified_segwit_input_flow_1_step, + &ux_unverified_segwit_input_flow_2_step, + &ux_unverified_segwit_input_flow_3_step, + &ux_display_continue_step, + &ux_display_reject_step); + +// FLOW to warn about segwitv1 inputs with non-default sighash +// #1 screen: warning icon + "Non default sighash" +// #2 screen: crossmark icon + "Reject if not sure" (user can reject here) +// #3 screen: "continue" button +// #4 screen: "reject" button +UX_FLOW(ux_display_nondefault_sighash_flow, + &ux_nondefault_sighash_flow_1_step, + &ux_display_reject_if_not_sure_step, + &ux_display_continue_step, + &ux_display_reject_step); + +// FLOW to validate a single output +// #1 screen: eye icon + "Review" + index of output to validate +// #2 screen: output amount +// #3 screen: output address (paginated) +// #4 screen: "Continue" button +// #5 screen: reject button +UX_FLOW(ux_display_output_address_amount_flow, + &ux_review_step, + &ux_validate_amount_step, + &ux_validate_address_step, + &ux_display_continue_step, + &ux_display_reject_step); + +// FLOW to warn about fees above 10% of total +// #1 screen: eye icon + fees too high message +// #2 screen: "Continue", with approve button +// #3 screen: reject button +UX_FLOW(ux_warn_high_fee_flow, + &ux_high_fee_step, + &ux_display_continue_step, + &ux_display_reject_step); + +// Show transaction fees and finally accept signing +// #1 screen: fee amount +// #2 screen: "Sign transaction", with approve button +// #3 screen: reject button +UX_FLOW(ux_accept_transaction_flow, + &ux_confirm_transaction_fees_step, + &ux_sign_transaction_step, + &ux_display_reject_step); + +// Show transaction fees and finally accept signing, in case of self-transfer +// Since there is no output to show, we add an initial screen to make sure +// the user understands the nature of the transaction. +// #1 screen: eye icon + "Confirm self-transfer" +// #2 screen: fee amount +// #3 screen: "Sign transaction", with approve button +// #4 screen: reject button +UX_FLOW(ux_accept_selftransfer_flow, + &ux_confirm_selftransfer_step, + &ux_confirm_transaction_fees_step, + &ux_sign_transaction_step, + &ux_display_reject_step); + +void ui_display_pubkey_flow(void) { + ux_flow_init(0, ux_display_pubkey_flow, NULL); +} + +void ui_display_pubkey_suspicious_flow(void) { + ux_flow_init(0, ux_display_pubkey_suspicious_flow, NULL); +} + +void ui_sign_message_path_hash_and_confirm_flow(void) { + ux_flow_init(0, ux_sign_message_path_hash_and_confirm_flow, NULL); +} + +void ui_sign_message_content_flow(uint8_t pageCount) { + (void) pageCount; + if (get_streaming_index() == 0) { + ux_flow_init(0, ux_sign_message_path_and_content_flow, NULL); + } else { + ux_flow_init(0, ux_sign_message_content_flow, NULL); + } +} + +void ui_sign_message_confirm_flow(void) { + ux_flow_init(0, ux_sign_message_confirm_flow, NULL); +} + +void ui_display_register_wallet_flow(void) { + ux_flow_init(0, ux_display_register_wallet_flow, NULL); +} + +void ui_display_policy_map_cosigner_pubkey_flow(void) { + ux_flow_init(0, ux_display_policy_map_cosigner_pubkey_flow, NULL); +} + +void ui_display_receive_in_wallet_flow(void) { + ux_flow_init(0, ux_display_receive_in_wallet_flow, NULL); +} + +void ui_display_default_wallet_address_flow(void) { + ux_flow_init(0, ux_display_default_wallet_address_flow, NULL); +} + +void ui_display_spend_from_wallet_flow(void) { + ux_flow_init(0, ux_display_spend_from_wallet_flow, NULL); +} + +void ui_display_warning_external_inputs_flow(void) { + ux_flow_init(0, ux_display_warning_external_inputs_flow, NULL); +} + +void ui_display_unverified_segwit_inputs_flows(void) { + ux_flow_init(0, ux_display_unverified_segwit_inputs_flow, NULL); +} + +void ui_display_nondefault_sighash_flow(void) { + ux_flow_init(0, ux_display_nondefault_sighash_flow, NULL); +} + +void ui_display_output_address_amount_flow(int index) { + snprintf(g_ui_state.validate_output.index, + sizeof(g_ui_state.validate_output.index), + "output #%d", + index); + ux_flow_init(0, ux_display_output_address_amount_flow, NULL); +} + +void ui_display_output_address_amount_no_index_flow(int index) { + // Currently we don't want any change in the UX so this function defaults to + // ui_display_output_address_amount_flow + ui_display_output_address_amount_flow(index); +} + +void ui_warn_high_fee_flow(void) { + ux_flow_init(0, ux_warn_high_fee_flow, NULL); +} + +void ui_accept_transaction_flow(bool is_self_transfer) { + ux_flow_init(0, + is_self_transfer ? ux_accept_selftransfer_flow : ux_accept_transaction_flow, + NULL); +} + +#endif // HAVE_BAGL diff --git a/src/ui/display_nbgl.c b/src/ui/display_nbgl.c new file mode 100644 index 000000000..f6edaa773 --- /dev/null +++ b/src/ui/display_nbgl.c @@ -0,0 +1,668 @@ +#ifdef HAVE_NBGL + +#include + +#include "nbgl_use_case.h" +#include "./display.h" +#include "./menu.h" +#include "io.h" + +typedef struct { + const char *confirm; // text displayed in last transaction page + const char *confirmed_status; // text displayed in confirmation page (after long press) + const char *rejected_status; // text displayed in rejection page (after reject confirmed) + nbgl_layoutTagValue_t tagValuePair[3]; + nbgl_layoutTagValueList_t tagValueList; + nbgl_pageInfoLongPress_t infoLongPress; + int extOutputCount; + int currentOutput; + bool displayPrompt; +} TransactionContext_t; + +enum { + CANCEL_TOKEN = 0, + CONFIRM_TOKEN, + SILENT_CONFIRM_TOKEN, + BACK_TOKEN_TRANSACTION, // for most transactions + BACK_TOKEN_SELFTRANSFER, // special case when it's a self-transfer (no external outputs) + BACK_TOKEN_MESSAGE, + MESSAGE_DISPLAYABLE_TOKEN, + MESSAGE_NON_DISPLAYABLE_TOKEN, + MESSAGE_CANCEL_TOKEN, + +}; + +extern bool G_was_processing_screen_shown; +static TransactionContext_t transactionContext; + +// ux_flow_response +static void ux_flow_response_false(void) { + set_ux_flow_response(false); +} + +static void ux_flow_response_true(void) { + set_ux_flow_response(true); +} + +static void ux_flow_response(bool confirm) { + if (confirm) { + ux_flow_response_true(); + } else { + ux_flow_response_false(); + } +} + +// Statuses +static void status_confirmation_callback(bool confirm) { + if (confirm) { + ux_flow_response_true(); + nbgl_useCaseStatus(transactionContext.confirmed_status, true, ui_menu_main); + } else { + ux_flow_response_false(); + nbgl_useCaseStatus(transactionContext.rejected_status, false, ui_menu_main); + } +} + +static void status_cancel(void) { + status_confirmation_callback(false); +} + +static void confirm_cancel(void) { + nbgl_useCaseConfirm("Reject transaction?", + "", + "Yes, Reject", + "Go back to transaction", + status_cancel); +} + +static void confirm_message_cancel(void) { + nbgl_useCaseConfirm("Reject message?", "", "Yes, Reject", "Go back to message", status_cancel); +} + +static void start_processing_callback_light(bool confirm) { + if (confirm) { + ux_flow_response_true(); + nbgl_useCaseSpinner("Processing"); + } else { + ux_flow_response_false(); + nbgl_useCaseStatus(transactionContext.rejected_status, false, ui_menu_main); + } +} + +static void start_processing_callback(bool confirm) { + if (confirm) { + ux_flow_response_true(); + nbgl_useCaseSpinner("Processing"); + } else { + confirm_cancel(); + } +} + +static void start_processing_message_callback(bool confirm) { + if (confirm) { + ux_flow_response_true(); + nbgl_useCaseSpinner("Processing"); + } else { + confirm_message_cancel(); + } +} + +static void transaction_confirm_callback(int token, uint8_t index) { + (void) index; + + switch (token) { + case CANCEL_TOKEN: + confirm_cancel(); + break; + case CONFIRM_TOKEN: + start_processing_callback(true); + break; + case SILENT_CONFIRM_TOKEN: + ux_flow_response(true); + break; + case BACK_TOKEN_TRANSACTION: + ui_accept_transaction_flow(false); + break; + case BACK_TOKEN_SELFTRANSFER: + ui_accept_transaction_flow(true); + break; + case BACK_TOKEN_MESSAGE: + decrease_streaming_index(); + ux_flow_response(true); + break; + case MESSAGE_DISPLAYABLE_TOKEN: + increase_streaming_index(); + ux_flow_response(true); + break; + case MESSAGE_NON_DISPLAYABLE_TOKEN: + ui_sign_message_confirm_flow(); + break; + case MESSAGE_CANCEL_TOKEN: + confirm_message_cancel(); + break; + default: + PRINTF("Unhandled token : %d", token); + } +} + +// Continue callbacks +static void continue_light_notify_callback(void) { + transactionContext.tagValueList.pairs = transactionContext.tagValuePair; + + transactionContext.infoLongPress.icon = &C_Bitcoin_64px; + transactionContext.infoLongPress.longPressText = "Approve"; + transactionContext.infoLongPress.longPressToken = CONFIRM_TOKEN; + transactionContext.infoLongPress.tuneId = TUNE_TAP_CASUAL; + transactionContext.infoLongPress.text = transactionContext.confirm; + + nbgl_useCaseStaticReviewLight(&transactionContext.tagValueList, + &transactionContext.infoLongPress, + "Cancel", + status_confirmation_callback); +} + +static void continue_light_processing_callback(void) { + transactionContext.tagValueList.pairs = transactionContext.tagValuePair; + + transactionContext.infoLongPress.icon = &C_Bitcoin_64px; + transactionContext.infoLongPress.longPressText = "Approve"; + transactionContext.infoLongPress.longPressToken = CONFIRM_TOKEN; + transactionContext.infoLongPress.tuneId = TUNE_TAP_CASUAL; + transactionContext.infoLongPress.text = transactionContext.confirm; + + nbgl_useCaseStaticReviewLight(&transactionContext.tagValueList, + &transactionContext.infoLongPress, + "Cancel", + start_processing_callback_light); +} + +static void continue_callback(void) { + transactionContext.tagValueList.pairs = transactionContext.tagValuePair; + + transactionContext.infoLongPress.icon = &C_Bitcoin_64px; + transactionContext.infoLongPress.longPressText = "Approve"; + transactionContext.infoLongPress.longPressToken = CONFIRM_TOKEN; + transactionContext.infoLongPress.tuneId = TUNE_TAP_CASUAL; + transactionContext.infoLongPress.text = transactionContext.confirm; + + nbgl_useCaseStaticReview(&transactionContext.tagValueList, + &transactionContext.infoLongPress, + "Cancel", + start_processing_callback); +} + +static void continue_message_callback(void) { + transactionContext.tagValueList.pairs = transactionContext.tagValuePair; + + transactionContext.infoLongPress.icon = &C_Bitcoin_64px; + transactionContext.infoLongPress.longPressText = "Approve"; + transactionContext.infoLongPress.longPressToken = CONFIRM_TOKEN; + transactionContext.infoLongPress.tuneId = TUNE_TAP_CASUAL; + transactionContext.infoLongPress.text = transactionContext.confirm; + + nbgl_useCaseStaticReview(&transactionContext.tagValueList, + &transactionContext.infoLongPress, + "Cancel", + start_processing_message_callback); +} + +// Transaction flow +static void transaction_confirm(int token, uint8_t index) { + (void) index; + + // If it's a self-transfer, the UX is slightly different + int backToken = + transactionContext.extOutputCount == 0 ? BACK_TOKEN_SELFTRANSFER : BACK_TOKEN_TRANSACTION; + + if (token == CONFIRM_TOKEN) { + nbgl_pageNavigationInfo_t info = {.activePage = transactionContext.extOutputCount + 1, + .nbPages = transactionContext.extOutputCount + 2, + .navType = NAV_WITH_TAP, + .progressIndicator = true, + .navWithTap.backButton = true, + .navWithTap.backToken = backToken, + .navWithTap.nextPageText = NULL, + .navWithTap.quitText = "Reject transaction", + .quitToken = CANCEL_TOKEN, + .tuneId = TUNE_TAP_CASUAL}; + + nbgl_pageContent_t content = {.type = INFO_LONG_PRESS, + .infoLongPress.icon = &C_Bitcoin_64px, + .infoLongPress.text = transactionContext.confirm, + .infoLongPress.longPressText = "Hold to sign", + .infoLongPress.longPressToken = CONFIRM_TOKEN, + .infoLongPress.tuneId = TUNE_TAP_NEXT}; + + nbgl_pageDrawGenericContent(&transaction_confirm_callback, &info, &content); + nbgl_refresh(); + } else { + confirm_cancel(); + } +} + +void ui_accept_transaction_flow(bool is_self_transfer) { + if (!is_self_transfer) { + transactionContext.tagValuePair[0].item = "Fees"; + transactionContext.tagValuePair[0].value = g_ui_state.validate_transaction.fee; + + transactionContext.tagValueList.nbPairs = 1; + } else { + transactionContext.tagValuePair[0].item = "Amount"; + transactionContext.tagValuePair[0].value = "Self-transfer"; + transactionContext.tagValuePair[1].item = "Fees"; + transactionContext.tagValuePair[1].value = g_ui_state.validate_transaction.fee; + + transactionContext.tagValueList.nbPairs = 2; + } + + transactionContext.confirm = "Sign transaction\nto send Bitcoin?"; + transactionContext.confirmed_status = "TRANSACTION\nSIGNED"; + transactionContext.rejected_status = "Transaction rejected"; + + nbgl_pageNavigationInfo_t info = {.activePage = transactionContext.extOutputCount, + .nbPages = transactionContext.extOutputCount + 2, + .navType = NAV_WITH_TAP, + .progressIndicator = true, + .navWithTap.backButton = false, + .navWithTap.nextPageText = "Tap to continue", + .navWithTap.nextPageToken = CONFIRM_TOKEN, + .navWithTap.quitText = "Reject transaction", + .quitToken = CANCEL_TOKEN, + .tuneId = TUNE_TAP_CASUAL}; + + nbgl_pageContent_t content = {.type = TAG_VALUE_LIST, + .tagValueList.nbPairs = transactionContext.tagValueList.nbPairs, + .tagValueList.pairs = transactionContext.tagValuePair}; + + nbgl_pageDrawGenericContent(&transaction_confirm, &info, &content); + nbgl_refresh(); +} + +void ui_display_transaction_prompt(const int external_outputs_total_count) { + transactionContext.currentOutput = 0; + transactionContext.extOutputCount = external_outputs_total_count; + + transactionContext.rejected_status = "Transaction rejected"; + + nbgl_useCaseReviewStart(&C_Bitcoin_64px, + "Review transaction\nto send Bitcoin", + "", + "Reject transaction", + ux_flow_response_true, + confirm_cancel); +} + +// Display outputs +static void display_output(void) { + transactionContext.rejected_status = "Transaction rejected"; + + nbgl_pageNavigationInfo_t info = {.activePage = transactionContext.currentOutput - 1, + .nbPages = transactionContext.extOutputCount + 2, + .navType = NAV_WITH_TAP, + .progressIndicator = true, + .navWithTap.backButton = false, + .navWithTap.nextPageText = "Tap to continue", + .navWithTap.nextPageToken = SILENT_CONFIRM_TOKEN, + .navWithTap.quitText = "Reject transaction", + .quitToken = CANCEL_TOKEN, + .tuneId = TUNE_TAP_CASUAL}; + + nbgl_pageContent_t content = {.type = TAG_VALUE_LIST, + .tagValueList.nbMaxLinesForValue = 8, + .tagValueList.nbPairs = transactionContext.tagValueList.nbPairs, + .tagValueList.pairs = transactionContext.tagValuePair}; + + nbgl_pageDrawGenericContent(&transaction_confirm_callback, &info, &content); + nbgl_refresh(); +} + +void ui_display_output_address_amount_flow(int index) { + snprintf(g_ui_state.validate_output.index, + sizeof(g_ui_state.validate_output.index), + "#%d", + index); + + transactionContext.currentOutput++; + + transactionContext.tagValuePair[0].item = "Output"; + transactionContext.tagValuePair[0].value = g_ui_state.validate_output.index; + + transactionContext.tagValuePair[1].item = "Amount"; + transactionContext.tagValuePair[1].value = g_ui_state.validate_output.amount; + + transactionContext.tagValuePair[2].item = "Address"; + transactionContext.tagValuePair[2].value = g_ui_state.validate_output.address_or_description; + + transactionContext.tagValueList.nbPairs = 3; + + display_output(); +} + +void ui_display_output_address_amount_no_index_flow(int index) { + (void) index; + transactionContext.currentOutput++; + + transactionContext.tagValuePair[0].item = "Amount"; + transactionContext.tagValuePair[0].value = g_ui_state.validate_output.amount; + + transactionContext.tagValuePair[1].item = "Address"; + transactionContext.tagValuePair[1].value = g_ui_state.validate_output.address_or_description; + + transactionContext.tagValueList.nbPairs = 2; + + display_output(); +} + +// Continue light notify callback +void ui_display_pubkey_flow(void) { + transactionContext.tagValuePair[0].item = "Path"; + transactionContext.tagValuePair[0].value = g_ui_state.path_and_pubkey.bip32_path_str; + + transactionContext.tagValuePair[1].item = "Public key"; + transactionContext.tagValuePair[1].value = g_ui_state.path_and_pubkey.pubkey; + transactionContext.tagValueList.nbPairs = 2; + + transactionContext.confirm = "Approve public key"; + transactionContext.confirmed_status = "PUBLIC KEY\nAPPROVED"; + transactionContext.rejected_status = "Public key rejected"; + + nbgl_useCaseReviewStart(&C_Bitcoin_64px, + "Confirm public key", + "", + "Cancel", + continue_light_notify_callback, + status_cancel); +} + +void ui_display_receive_in_wallet_flow(void) { + transactionContext.tagValuePair[0].item = "Wallet name"; + transactionContext.tagValuePair[0].value = g_ui_state.wallet.wallet_name; + + transactionContext.tagValuePair[1].item = "Wallet Address"; + transactionContext.tagValuePair[1].value = g_ui_state.wallet.address; + + transactionContext.tagValueList.nbPairs = 2; + + transactionContext.confirm = "Confirm address"; + transactionContext.confirmed_status = "ADDRESS\nCONFIRMED"; + transactionContext.rejected_status = "Address rejected"; + + nbgl_useCaseReviewStart(&C_Bitcoin_64px, + "Receive\nin known wallet", + "", + "Cancel", + continue_light_notify_callback, + status_cancel); +} + +void ui_display_policy_map_cosigner_pubkey_flow(void) { + transactionContext.tagValuePair[0].item = "Index"; + transactionContext.tagValuePair[0].value = g_ui_state.cosigner_pubkey_and_index.signer_index; + + transactionContext.tagValuePair[1].item = "Public key"; + transactionContext.tagValuePair[1].value = g_ui_state.cosigner_pubkey_and_index.pubkey; + + transactionContext.tagValueList.nbPairs = 2; + + transactionContext.confirm = "Confirm cosigner"; + transactionContext.confirmed_status = "COSIGNER\nREGISTERED"; + transactionContext.rejected_status = "Cosigner rejected"; + + nbgl_useCaseReviewStart(&C_Bitcoin_64px, + "Register cosigner", + "", + "Cancel", + continue_light_notify_callback, + ux_flow_response_false); +} + +static void suspicious_pubkey_warning(void) { + nbgl_useCaseReviewStart(&C_round_warning_64px, + "WARNING", + "The derivation path\nis unusual", + "Cancel", + continue_light_notify_callback, + ux_flow_response_false); +} + +void ui_display_pubkey_suspicious_flow(void) { + transactionContext.tagValuePair[0].item = "Path"; + transactionContext.tagValuePair[0].value = g_ui_state.path_and_pubkey.bip32_path_str; + + transactionContext.tagValuePair[1].item = "Public key"; + transactionContext.tagValuePair[1].value = g_ui_state.path_and_pubkey.pubkey; + + transactionContext.tagValueList.nbPairs = 2; + + transactionContext.confirm = "Approve public key"; + transactionContext.confirmed_status = "PUBLIC KEY\nAPPROVED"; + transactionContext.rejected_status = "Public key rejected"; + nbgl_useCaseReviewStart(&C_Bitcoin_64px, + "Confirm public key", + "", + "Cancel", + suspicious_pubkey_warning, + status_cancel); +} + +// Continue light processing callback +void ui_display_register_wallet_flow(void) { + transactionContext.tagValuePair[0].item = "Name"; + transactionContext.tagValuePair[0].value = g_ui_state.wallet.wallet_name; + + transactionContext.tagValuePair[1].item = "Policy map"; + transactionContext.tagValuePair[1].value = g_ui_state.wallet.descriptor_template; + + transactionContext.tagValueList.nbPairs = 2; + + transactionContext.confirm = "Register Wallet"; + transactionContext.confirmed_status = "WALLET\nREGISTERED"; + transactionContext.rejected_status = "Wallet rejected"; + + nbgl_useCaseReviewStart(&C_Bitcoin_64px, + "Register wallet", + "", + "Cancel", + continue_light_processing_callback, + ux_flow_response_false); +} + +static void ui_display_message_content_flow(bool displayable, uint8_t pageCount) { + uint8_t token; + if (displayable) { + token = MESSAGE_DISPLAYABLE_TOKEN; + } else { + token = MESSAGE_NON_DISPLAYABLE_TOKEN; + } + + nbgl_pageNavigationInfo_t info = { + .activePage = get_streaming_index(), + .nbPages = pageCount + 1, + .navType = NAV_WITH_TAP, + .progressIndicator = true, + .navWithTap.backButton = displayable && get_streaming_index() != 0, + .navWithTap.backToken = BACK_TOKEN_MESSAGE, + .navWithTap.nextPageText = "Tap to continue", + .navWithTap.nextPageToken = token, + .navWithTap.quitText = "Reject message", + .quitToken = MESSAGE_CANCEL_TOKEN, + .tuneId = TUNE_TAP_CASUAL}; + + nbgl_pageContent_t content = {.type = TAG_VALUE_LIST, + .tagValueList.nbPairs = transactionContext.tagValueList.nbPairs, + .tagValueList.pairs = transactionContext.tagValuePair, + .tagValueList.wrapping = true}; + + transactionContext.tagValueList.nbPairs = 0; + nbgl_pageDrawGenericContent(&transaction_confirm_callback, &info, &content); + nbgl_refresh(); +} + +void ui_set_display_prompt(void) { + transactionContext.displayPrompt = true; +} + +static void display_message_content(void) { + ui_display_message_content_flow(true, transactionContext.extOutputCount); +} + +void ui_sign_message_content_flow(uint8_t pageCount) { + transactionContext.rejected_status = "Message rejected"; + + if (get_streaming_index() == 0) { + transactionContext.tagValuePair[0].item = "Path"; + transactionContext.tagValuePair[0].value = g_ui_state.path_and_message.bip32_path_str; + transactionContext.tagValueList.nbPairs = 1; + } + + transactionContext.tagValuePair[transactionContext.tagValueList.nbPairs].item = + "Message content"; + transactionContext.tagValuePair[transactionContext.tagValueList.nbPairs].value = + g_ui_state.path_and_message.message; + + transactionContext.tagValueList.nbPairs++; + + transactionContext.extOutputCount = pageCount; + + if (transactionContext.displayPrompt) { + nbgl_useCaseReviewStart(&C_Bitcoin_64px, + "Review message", + "", + "Cancel", + display_message_content, + status_cancel); + transactionContext.displayPrompt = false; + } else { + display_message_content(); + } +} + +void ui_sign_message_path_hash_and_confirm_flow(void) { + transactionContext.rejected_status = "Message rejected"; + + transactionContext.tagValuePair[0].item = "Path"; + transactionContext.tagValuePair[0].value = g_ui_state.path_and_message.bip32_path_str; + transactionContext.tagValuePair[1].item = "Message hash"; + transactionContext.tagValuePair[1].value = g_ui_state.path_and_message.message; + + transactionContext.tagValueList.nbPairs = 2; + + ui_display_message_content_flow(false, 0); +} + +void ui_sign_message_confirm_flow(void) { + transactionContext.tagValueList.nbPairs = 0; + transactionContext.confirm = "Sign Message"; + transactionContext.confirmed_status = "MESSAGE\nSIGNED"; + transactionContext.rejected_status = "Message rejected"; + + continue_message_callback(); +} + +void ui_display_spend_from_wallet_flow(void) { + transactionContext.tagValuePair[0].item = "Wallet name"; + transactionContext.tagValuePair[0].value = g_ui_state.wallet.wallet_name; + + transactionContext.tagValueList.nbPairs = 1; + + transactionContext.confirm = "Confirm wallet name"; + transactionContext.confirmed_status = "WALLET NAME\nCONFIRMED"; + transactionContext.rejected_status = "Wallet name rejected"; + + nbgl_useCaseReviewStart(&C_Bitcoin_64px, + "Spend from\nknown wallet", + "", + "Cancel", + continue_callback, + ux_flow_response_false); +} + +// Address flow +static void address_display(void) { + nbgl_useCaseAddressConfirmation(g_ui_state.wallet.address, status_confirmation_callback); +} + +void ui_display_default_wallet_address_flow(void) { + transactionContext.confirm = "Confirm address"; + transactionContext.confirmed_status = "ADDRESS\nVERIFIED"; + transactionContext.rejected_status = "Address verification\ncancelled"; + + nbgl_useCaseReviewStart(&C_Bitcoin_64px, + "Verify Bitcoin\naddress", + "", + "Cancel", + address_display, + status_cancel); +} + +// Warning Flows +void ui_warn_high_fee_flow(void) { + nbgl_useCaseChoice(&C_round_warning_64px, + "Warning", + "Fees are above 10%\n of total amount", + "Continue", + "Reject", + ux_flow_response); +} + +void ui_display_warning_external_inputs_flow(void) { + nbgl_useCaseChoice(&C_round_warning_64px, + "Warning", + "There are external inputs", + "Continue", + "Reject if not sure", + ux_flow_response); +} + +void ui_display_unverified_segwit_inputs_flows(void) { + nbgl_useCaseChoice(&C_round_warning_64px, + "Warning", + "Unverified inputs\nUpdate Ledger Live or\nthird party wallet software", + "Continue", + "Reject if not sure", + ux_flow_response); +} + +void ui_display_nondefault_sighash_flow(void) { + nbgl_useCaseChoice(&C_round_warning_64px, + "Warning", + "Non-default sighash", + "Continue", + "Reject if not sure", + ux_flow_response); +} + +// Statuses +void ui_display_post_processing_confirm_message(bool success) { + if (success) { + nbgl_useCaseStatus("MESSAGE\nSIGNED", true, ux_flow_response_true); + } else { + nbgl_useCaseStatus("Message rejected", false, ux_flow_response_false); + } +} + +void ui_display_post_processing_confirm_wallet_registation(bool success) { + if (success) { + nbgl_useCaseStatus("WALLET\nREGISTERED", true, ux_flow_response_true); + } else { + nbgl_useCaseStatus("Wallet rejected", false, ux_flow_response_false); + } +} + +void ui_display_post_processing_confirm_transaction(bool success) { + if (success) { + nbgl_useCaseStatus("TRANSACTION\nSIGNED", true, ux_flow_response_true); + } else { + nbgl_useCaseStatus("Transaction rejected", false, ux_flow_response_false); + } +} + +void ui_display_post_processing_confirm_wallet_spend(bool success) { + if (success) { + nbgl_useCaseStatus("WALLET NAME\nCONFIRMED", true, ux_flow_response_true); + } else { + nbgl_useCaseStatus("Wallet name rejected", false, ux_flow_response_false); + } +} + +#endif // HAVE_NBGL diff --git a/src/ui/display_utils.h b/src/ui/display_utils.h index 3695b550d..b35641562 100644 --- a/src/ui/display_utils.h +++ b/src/ui/display_utils.h @@ -4,8 +4,11 @@ #include "../constants.h" +/// Maximum amount length // up to 5 chars for ticker, 1 space, up to 20 digits (20 = digits of 2^64), + 1 decimal separator #define MAX_AMOUNT_LENGTH (MAX_ASSET_TICKER_LENGTH + 1 + 20 + 1) +/// Number of decimal digits in fractional part of BTC or L-BTC +#define BITCOIN_DECIMALS 8 /** * Converts a 64-bits unsigned integer into a decimal representation. Trailing decimal zeros are not @@ -22,3 +25,21 @@ void format_amount(const char *coin_name, uint64_t amount, uint8_t decimals, char out[static MAX_AMOUNT_LENGTH + 1]); + + +/** + * Converts a 64-bits unsigned integer into a decimal rapresentation, where the `amount` is a + * multiple of 1/100_000_000th. Trailing decimal zeros are not appended (and no decimal point is + * present if the `amount` is a multiple of 100_000_000). The resulting string is prefixed with a + * ticker name (up to 5 characters long), followed by a space. + * + * @param coin_name a zero-terminated ticker name, at most 5 characterso long (not including the + * terminating 0) + * @param amount the amount to format + * @param out the output array which must be at least MAX_AMOUNT_LENGTH + 1 bytes long + */ +static inline void format_sats_amount(const char *coin_name, + uint64_t amount, + char out[static MAX_AMOUNT_LENGTH + 1]) { + format_amount(coin_name, amount, BITCOIN_DECIMALS, out); +} diff --git a/src/ui/menu.c b/src/ui/menu.c index 326e78907..5f924166d 100644 --- a/src/ui/menu.c +++ b/src/ui/menu.c @@ -1,6 +1,6 @@ /***************************************************************************** * Ledger App Bitcoin. - * (c) 2021 Ledger SAS. + * (c) 2024 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,81 +23,15 @@ #include "../globals.h" #include "menu.h" -// We have a screen with the icon and "Bitcoin is ready" for Bitcoin, -// "Bitcoin Testnet is ready" for Bitcoin Testnet, "Application is ready" for all the altcoins -UX_STEP_NOCB(ux_menu_ready_step_bitcoin, pnn, {&C_bitcoin_logo, "Bitcoin", "is ready"}); -UX_STEP_NOCB(ux_menu_ready_step_bitcoin_testnet, - pnn, - {&C_bitcoin_logo, "Bitcoin Testnet", "is ready"}); -UX_STEP_NOCB(ux_menu_ready_step_altcoin, nn, {"Application", "is ready"}); - -UX_STEP_NOCB(ux_menu_version_step, bn, {"Version", APPVERSION}); -UX_STEP_CB(ux_menu_about_step, pb, ui_menu_about(), {&C_icon_certificate, "About"}); -UX_STEP_VALID(ux_menu_exit_step, pb, os_sched_exit(-1), {&C_icon_dashboard_x, "Quit"}); - -// FLOW for the main menu (for bitcoin): -// #1 screen: ready -// #2 screen: version of the app -// #3 screen: about submenu -// #4 screen: quit -UX_FLOW(ux_menu_main_flow_bitcoin, - &ux_menu_ready_step_bitcoin, - &ux_menu_version_step, - &ux_menu_about_step, - &ux_menu_exit_step, - FLOW_LOOP); - -// FLOW for the main menu (for bitcoin testnet): -// #1 screen: ready -// #2 screen: version of the app -// #3 screen: about submenu -// #4 screen: quit -UX_FLOW(ux_menu_main_flow_bitcoin_testnet, - &ux_menu_ready_step_bitcoin_testnet, - &ux_menu_version_step, - &ux_menu_about_step, - &ux_menu_exit_step, - FLOW_LOOP); - -// FLOW for the main menu (for altcoins): -// #1 screen: ready -// #2 screen: version of the app -// #3 screen: about submenu -// #4 screen: quit -UX_FLOW(ux_menu_main_flow_altcoin, - &ux_menu_ready_step_altcoin, - &ux_menu_version_step, - &ux_menu_about_step, - &ux_menu_exit_step, - FLOW_LOOP); - #define BIP32_PUBKEY_VERSION_MAINNET 0x0488B21E #define BIP32_PUBKEY_VERSION_TESTNET 0x043587CF void ui_menu_main() { - if (G_ux.stack_count == 0) { - ux_stack_push(); - } - if (BIP32_PUBKEY_VERSION == BIP32_PUBKEY_VERSION_MAINNET) { // mainnet - ux_flow_init(0, ux_menu_main_flow_bitcoin, NULL); + ui_menu_main_flow_bitcoin(); } else if (BIP32_PUBKEY_VERSION == BIP32_PUBKEY_VERSION_TESTNET) { // testnet - ux_flow_init(0, ux_menu_main_flow_bitcoin_testnet, NULL); - } else { - ux_flow_init(0, ux_menu_main_flow_altcoin, NULL); // some altcoin + ui_menu_main_flow_bitcoin_testnet(); } } -UX_STEP_NOCB(ux_menu_info_step, bn, {"Bitcoin App", "(c) 2022 Ledger"}); -UX_STEP_CB(ux_menu_back_step, pb, ui_menu_main(), {&C_icon_back, "Back"}); - -// FLOW for the about submenu: -// #1 screen: app info -// #2 screen: back button to main menu -UX_FLOW(ux_menu_about_flow, &ux_menu_info_step, &ux_menu_back_step, FLOW_LOOP); - -void ui_menu_about() { - ux_flow_init(0, ux_menu_about_flow, NULL); -} - #endif // !defined(HAVE_LIQUID) diff --git a/src/ui/menu.h b/src/ui/menu.h index d9c69e08a..6c3568b8b 100644 --- a/src/ui/menu.h +++ b/src/ui/menu.h @@ -1,7 +1,7 @@ #pragma once /** - * Show main menu (ready screen, version, about, quit). + * Entry point function to show main menu (ready screen, version, about, quit). */ void ui_menu_main(void); @@ -9,3 +9,13 @@ void ui_menu_main(void); * Show about submenu (copyright, date). */ void ui_menu_about(void); + +/** + * Show main menu (ready screen, version, about, quit). + */ +void ui_menu_main_flow_bitcoin(void); + +/** + * Show main menu for Testnet (ready screen, version, about, quit). + */ +void ui_menu_main_flow_bitcoin_testnet(void); diff --git a/src/ui/menu_bagl.c b/src/ui/menu_bagl.c new file mode 100644 index 000000000..ee617973c --- /dev/null +++ b/src/ui/menu_bagl.c @@ -0,0 +1,87 @@ +/***************************************************************************** + * Ledger App Bitcoin. + * (c) 2024 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#ifdef HAVE_BAGL +#include "os.h" +#include "ux.h" + +#include "../globals.h" +#include "menu.h" + +// We have a screen with the icon and "Bitcoin is ready" for Bitcoin, +// "Bitcoin Testnet is ready" for Bitcoin Testnet. +UX_STEP_NOCB(ux_menu_ready_step_bitcoin, pnn, {&C_bitcoin_logo, "Bitcoin", "is ready"}); +UX_STEP_NOCB(ux_menu_ready_step_bitcoin_testnet, + pnn, + {&C_bitcoin_logo, "Bitcoin Testnet", "is ready"}); + +UX_STEP_NOCB(ux_menu_version_step, bn, {"Version", APPVERSION}); +UX_STEP_CB(ux_menu_about_step, pb, ui_menu_about(), {&C_icon_certificate, "About"}); +UX_STEP_VALID(ux_menu_exit_step, pb, os_sched_exit(-1), {&C_icon_dashboard_x, "Quit"}); + +// FLOW for the main menu (for bitcoin): +// #1 screen: ready +// #2 screen: version of the app +// #3 screen: about submenu +// #4 screen: quit +UX_FLOW(ux_menu_main_flow_bitcoin, + &ux_menu_ready_step_bitcoin, + &ux_menu_version_step, + &ux_menu_about_step, + &ux_menu_exit_step, + FLOW_LOOP); + +// FLOW for the main menu (for bitcoin testnet): +// #1 screen: ready +// #2 screen: version of the app +// #3 screen: about submenu +// #4 screen: quit +UX_FLOW(ux_menu_main_flow_bitcoin_testnet, + &ux_menu_ready_step_bitcoin_testnet, + &ux_menu_version_step, + &ux_menu_about_step, + &ux_menu_exit_step, + FLOW_LOOP); + +UX_STEP_NOCB(ux_menu_info_step, bn, {"Bitcoin App", "(c) 2024 Ledger"}); +UX_STEP_CB(ux_menu_back_step, pb, ui_menu_main(), {&C_icon_back, "Back"}); + +// FLOW for the about submenu: +// #1 screen: app info +// #2 screen: back button to main menu +UX_FLOW(ux_menu_about_flow, &ux_menu_info_step, &ux_menu_back_step, FLOW_LOOP); + +void ui_menu_main_flow_bitcoin(void) { + if (G_ux.stack_count == 0) { + ux_stack_push(); + } + + ux_flow_init(0, ux_menu_main_flow_bitcoin, NULL); +} + +void ui_menu_main_flow_bitcoin_testnet(void) { + if (G_ux.stack_count == 0) { + ux_stack_push(); + } + + ux_flow_init(0, ux_menu_main_flow_bitcoin_testnet, NULL); +} + +void ui_menu_about(void) { + ux_flow_init(0, ux_menu_about_flow, NULL); +} +#endif // HAVE_BAGL diff --git a/src/ui/menu_nbgl.c b/src/ui/menu_nbgl.c new file mode 100644 index 000000000..4473a89bb --- /dev/null +++ b/src/ui/menu_nbgl.c @@ -0,0 +1,61 @@ +/***************************************************************************** + * Ledger App Bitcoin. + * (c) 2024 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#ifdef HAVE_NBGL +#include "nbgl_use_case.h" + +#include "../globals.h" +#include "menu.h" + +static const char* const infoTypes[] = {"Version", "Developer", "Copyright"}; +static const char* const infoContents[] = {APPVERSION, "Ledger", "(c) 2024 Ledger"}; + +static bool navigation_cb(uint8_t page, nbgl_pageContent_t* content) { + UNUSED(page); + content->type = INFOS_LIST; + content->infosList.nbInfos = 3; + content->infosList.infoTypes = (const char**) infoTypes; + content->infosList.infoContents = (const char**) infoContents; + return true; +} + +static void exit(void) { + os_sched_exit(-1); +} + +void ui_menu_about(void) { + nbgl_useCaseSettings("Bitcoin", 0, 1, false, ui_menu_main, navigation_cb, NULL); +} + +void ui_menu_about_testnet(void) { + nbgl_useCaseSettings("Bitcoin Testnet", 0, 1, false, ui_menu_main, navigation_cb, NULL); +} + +void ui_menu_main_flow_bitcoin(void) { + nbgl_useCaseHome("Bitcoin", &C_Bitcoin_64px, NULL, false, ui_menu_about, exit); +} + +void ui_menu_main_flow_bitcoin_testnet(void) { + nbgl_useCaseHome("Bitcoin Testnet", + &C_Bitcoin_64px, + "This app enables signing\ntransactions on all the Bitcoin\ntest networks.", + false, + ui_menu_about_testnet, + exit); +} + +#endif // HAVE_NBGL diff --git a/test_utils/__init__.py b/test_utils/__init__.py index 3f27ea45a..f7867407a 100644 --- a/test_utils/__init__.py +++ b/test_utils/__init__.py @@ -1,8 +1,11 @@ import hashlib +from typing import Literal, Union from mnemonic import Mnemonic from bip32 import BIP32 +from bitcoin_client.ledger_bitcoin.wallet import WalletPolicy + from .slip21 import Slip21Node mnemo = Mnemonic("english") @@ -41,9 +44,15 @@ def mnemonic(mnemo: str): def ripemd160(x: bytes) -> bytes: - h = hashlib.new("ripemd160") - h.update(x) - return h.digest() + try: + h = hashlib.new("ripemd160") + h.update(x) + return h.digest() + except BaseException: + # ripemd160 is not always present in hashlib. + # Fallback to custom implementation if missing. + from . import ripemd + return ripemd.ripemd160(x) def sha256(s: bytes) -> bytes: @@ -73,3 +82,36 @@ def __init__(self, mnemonic: str, network: str = "test"): slip21_root = Slip21Node.from_seed(self.seed) self.wallet_registration_key = slip21_root.derive_child( WALLET_POLICY_SLIP21_LABEL).key + + +def get_internal_xpub(seed: str, path: str) -> str: + bip32 = BIP32.from_seed(seed, network="test") + return bip32.get_xpub_from_path(f"m/{path}") if path else bip32.get_xpub_from_path("m") + + +def count_internal_keys(seed: str, network: Union[Literal['main'], Literal['test']], wallet_policy: WalletPolicy) -> int: + """Count how many of the keys in wallet_policy are indeed internal""" + + bip32 = BIP32.from_seed(seed, network) + master_key_fingerprint = hash160(bip32.pubkey)[0:4] + + count = 0 + for key_index, key_info in enumerate(wallet_policy.keys_info): + if "]" in key_info: + key_orig_end_pos = key_info.index("]") + fpr = key_info[1:9] + path = key_info[10:key_orig_end_pos] + xpub = key_info[key_orig_end_pos + 1:] + + # support for V1 policies, where the key info contains additional derivation steps + if "/" in xpub: + xpub = xpub[:xpub.index("/")] # truncate any additional steps + + if fpr == master_key_fingerprint.hex(): + computed_xpub = get_internal_xpub(seed, path) + if computed_xpub == xpub: + # there could be multiple placeholders using the same key; we must count all of them + count += wallet_policy.descriptor_template.count( + f"@{key_index}/") + + return count diff --git a/test_utils/fixtures.py b/test_utils/fixtures.py index 2d1bbbdd9..611a7d2ac 100644 --- a/test_utils/fixtures.py +++ b/test_utils/fixtures.py @@ -52,6 +52,8 @@ def pytest_addoption(parser): parser.addoption("--hid", action="store_true") parser.addoption("--headless", action="store_true") parser.addoption("--enableslowtests", action="store_true") + parser.addoption("--model", action="store", default="nanos") + parser.addoption('--speculos_api_port', action='store') @pytest.fixture(scope="module") @@ -93,13 +95,18 @@ def enable_slow_tests(pytestconfig): return pytestconfig.getoption("enableslowtests") +@pytest.fixture +def model(pytestconfig): + return pytestconfig.getoption("model") + + @pytest.fixture(scope='session', autouse=True) def root_directory(request): return Path(str(request.config.rootdir)) @pytest.fixture -def comm(settings, root_directory, hid, headless, app_version: str) -> Union[TransportClient, SpeculosClient]: +def comm(settings, root_directory, hid, headless, model, app_version: str) -> Union[TransportClient, SpeculosClient]: if hid: client = TransportClient("hid") else: @@ -123,7 +130,7 @@ def comm(settings, root_directory, hid, headless, app_version: str) -> Union[Tra client = SpeculosClient( app_binary, - ['--sdk', '2.1', '--seed', f'{settings["mnemonic"]}'] + ['--model', model, '--seed', f'{settings["mnemonic"]}'] + ["--display", "qt" if not headless else "headless"] + lib_params ) @@ -170,3 +177,9 @@ def client(bitcoin_network: str, comm: Union[TransportClient, SpeculosClient]) - def speculos_globals(settings: dict, bitcoin_network: str) -> SpeculosGlobals: return SpeculosGlobals(mnemonic=settings["mnemonic"], network=bitcoin_network) + + +@pytest.fixture +def additional_speculos_arguments(pytestconfig): + api_port = pytestconfig.getoption("speculos_api_port") + return ["--api-port", api_port] if api_port else [] \ No newline at end of file diff --git a/test_utils/requirements.txt b/test_utils/requirements.txt index 4319aa950..c06bc9eb3 100644 --- a/test_utils/requirements.txt +++ b/test_utils/requirements.txt @@ -1,2 +1,2 @@ mnemonic==0.20 -bip32>=2.1,<4.0 \ No newline at end of file +bip32>=3.4,<4.0 \ No newline at end of file diff --git a/test_utils/ripemd.py b/test_utils/ripemd.py new file mode 100644 index 000000000..ee08cc387 --- /dev/null +++ b/test_utils/ripemd.py @@ -0,0 +1,115 @@ +# Copyright (c) 2021 Pieter Wuille +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. +# +# Taken from https://github.com/bitcoin/bitcoin/blob/124e75a41ea0f3f0e90b63b0c41813184ddce2ab/test/functional/test_framework/ripemd160.py + +""" +Pure Python RIPEMD160 implementation. + +WARNING: This implementation is NOT constant-time. +Do not use without understanding the implications. +""" + +# Message schedule indexes for the left path. +ML = [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, + 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, + 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, + 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 +] + +# Message schedule indexes for the right path. +MR = [ + 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, + 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, + 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, + 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, + 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 +] + +# Rotation counts for the left path. +RL = [ + 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, + 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, + 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, + 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, + 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 +] + +# Rotation counts for the right path. +RR = [ + 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, + 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, + 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, + 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, + 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 +] + +# K constants for the left path. +KL = [0, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e] + +# K constants for the right path. +KR = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0] + + +def fi(x, y, z, i): + """The f1, f2, f3, f4, and f5 functions from the specification.""" + if i == 0: + return x ^ y ^ z + elif i == 1: + return (x & y) | (~x & z) + elif i == 2: + return (x | ~y) ^ z + elif i == 3: + return (x & z) | (y & ~z) + elif i == 4: + return x ^ (y | ~z) + else: + assert False + + +def rol(x, i): + """Rotate the bottom 32 bits of x left by i bits.""" + return ((x << i) | ((x & 0xffffffff) >> (32 - i))) & 0xffffffff + + +def compress(h0, h1, h2, h3, h4, block): + """Compress state (h0, h1, h2, h3, h4) with block.""" + # Left path variables. + al, bl, cl, dl, el = h0, h1, h2, h3, h4 + # Right path variables. + ar, br, cr, dr, er = h0, h1, h2, h3, h4 + # Message variables. + x = [int.from_bytes(block[4*i:4*(i+1)], 'little') for i in range(16)] + + # Iterate over the 80 rounds of the compression. + for j in range(80): + rnd = j >> 4 + # Perform left side of the transformation. + al = rol(al + fi(bl, cl, dl, rnd) + x[ML[j]] + KL[rnd], RL[j]) + el + al, bl, cl, dl, el = el, al, bl, rol(cl, 10), dl + # Perform right side of the transformation. + ar = rol(ar + fi(br, cr, dr, 4 - rnd) + x[MR[j]] + KR[rnd], RR[j]) + er + ar, br, cr, dr, er = er, ar, br, rol(cr, 10), dr + + # Compose old state, left transform, and right transform into new state. + return h1 + cl + dr, h2 + dl + er, h3 + el + ar, h4 + al + br, h0 + bl + cr + + +def ripemd160(data): + """Compute the RIPEMD-160 hash of data.""" + # Initialize state. + state = (0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0) + # Process full 64-byte blocks in the input. + for b in range(len(data) >> 6): + state = compress(*state, data[64*b:64*(b+1)]) + # Construct final blocks (with padding and size). + pad = b"\x80" + b"\x00" * ((119 - len(data)) & 63) + fin = data[len(data) & ~63:] + pad + (8 * len(data)).to_bytes(8, 'little') + # Process final blocks. + for b in range(len(fin) >> 6): + state = compress(*state, fin[64*b:64*(b+1)]) + # Produce output. + return b"".join((h & 0xffffffff).to_bytes(4, 'little') for h in state) diff --git a/test_utils/txmaker.py b/test_utils/txmaker.py index bc196d1b9..e5caeee73 100644 --- a/test_utils/txmaker.py +++ b/test_utils/txmaker.py @@ -1,7 +1,7 @@ from random import randint from typing import List, Tuple, Optional -from bitcoin_client.ledger_bitcoin import PolicyMapWallet +from bitcoin_client.ledger_bitcoin import WalletPolicy, WalletType from bitcoin_client.ledger_bitcoin.key import KeyOriginInfo, parse_path, get_taproot_output_key from bitcoin_client.ledger_bitcoin.psbt import PSBT, PartiallySignedInput, PartiallySignedOutput from bitcoin_client.ledger_bitcoin.tx import CScriptWitness, CTransaction, CTxIn, CTxInWitness, CTxOut, COutPoint, CTxWitness, uint256_from_str @@ -40,27 +40,28 @@ def random_txid() -> bytes: return random_bytes(32) -def getScriptPubkeyFromWallet(wallet: PolicyMapWallet, change: bool, address_index: int) -> Script: - descriptor_str = wallet.policy_map +def getScriptPubkeyFromWallet(wallet: WalletPolicy, change: bool, address_index: int) -> Script: + descriptor_str = wallet.descriptor_template # Iterate in reverse order, as strings identifying a small-index key (like @1) can be a # prefix of substrings identifying a large-index key (like @12), but not the other way around # A more structural parsing would be more robust for i, key_info_str in enumerate(reversed(wallet.keys_info)): - if key_info_str[-3:] != "/**": + if wallet.version == WalletType.WALLET_POLICY_V1 and key_info_str[-3:] != "/**": raise ValueError("All the keys must have wildcard (/**)") - key_info_str = key_info_str[:-3] + f"/{1 if change else 0}/*" - if f"@{i}" not in descriptor_str: raise ValueError(f"Invalid policy: not using key @{i}") descriptor_str = descriptor_str.replace(f"@{i}", key_info_str) + # by doing the text substitution of '/**' at the end, this works for either V1 or V2 + descriptor_str = descriptor_str.replace("/**", f"/{1 if change else 0}/*") + return Descriptor.from_string(descriptor_str).derive(address_index).script_pubkey() -def createFakeWalletTransaction(n_inputs: int, n_outputs: int, output_amount: int, wallet: PolicyMapWallet) -> Tuple[CTransaction, int, int, int]: +def createFakeWalletTransaction(n_inputs: int, n_outputs: int, output_amount: int, wallet: WalletPolicy) -> Tuple[CTransaction, int, int, int]: """ Creates a (fake) transaction that has n_inputs inputs and n_outputs outputs, with a random output equal to output_amount. Each output of the transaction is a spend to wallet (possibly to a change address); the change/address_index of the @@ -115,7 +116,7 @@ def createFakeWalletTransaction(n_inputs: int, n_outputs: int, output_amount: in return tx, selected_output_index, selected_output_change, selected_output_address_index -def createPsbt(wallet: PolicyMapWallet, input_amounts: List[int], output_amounts: List[int], output_is_change: List[bool], output_wallet: Optional[List[Optional[PolicyMapWallet]]] = None) -> PSBT: +def createPsbt(wallet: WalletPolicy, input_amounts: List[int], output_amounts: List[int], output_is_change: List[bool], output_wallet: Optional[List[Optional[WalletPolicy]]] = None) -> PSBT: if output_wallet is None: output_wallet = [None] * len(output_amounts) @@ -127,8 +128,15 @@ def createPsbt(wallet: PolicyMapWallet, input_amounts: List[int], output_amounts if wallet.n_keys != 1: raise NotImplementedError("Only 1-key wallets supported") - if wallet.policy_map not in ["pkh(@0)", "wpkh(@0)", "tr(@0)"]: - raise NotImplementedError("Unsupported policy type") + if wallet.version == WalletType.WALLET_POLICY_V1: + if wallet.descriptor_template not in ["pkh(@0)", "wpkh(@0)", "tr(@0)"]: + raise NotImplementedError("Unsupported policy type") + elif wallet.version == WalletType.WALLET_POLICY_V2: + if wallet.descriptor_template not in ["pkh(@0/**)", "wpkh(@0/**)", "tr(@0/**)"]: + raise NotImplementedError("Unsupported policy type") + else: + raise ValueError( + f"Unknown wallet policy version: {wallet.version}") vin: List[CTxIn] = [CTxIn() for _ in input_amounts] vout: List[CTxOut] = [CTxOut() for _ in output_amounts] @@ -164,10 +172,10 @@ def createPsbt(wallet: PolicyMapWallet, input_amounts: List[int], output_amounts psbt.outputs = [PartiallySignedOutput(0) for _ in output_amounts] # simplification; good enough for the scripts we support now, but will need more work - is_legacy = wallet.policy_map.startswith("pkh(") - is_segwitv0 = wallet.policy_map.startswith( - "wpkh(") or wallet.policy_map.startswith("sh(wpkh(") - is_taproot = wallet.policy_map.startswith("tr(") + is_legacy = wallet.descriptor_template.startswith("pkh(") + is_segwitv0 = wallet.descriptor_template.startswith( + "wpkh(") or wallet.descriptor_template.startswith("sh(wpkh(") + is_taproot = wallet.descriptor_template.startswith("tr(") key_origin = wallet.keys_info[0][1:wallet.keys_info[0].index("]")] @@ -190,9 +198,9 @@ def createPsbt(wallet: PolicyMapWallet, input_amounts: List[int], output_amounts psbt.inputs[i].hd_keypaths[input_key] = KeyOriginInfo( master_key_fpr, path) elif is_taproot: - tweaked_key = get_taproot_output_key(input_key) - psbt.inputs[i].tap_bip32_paths[tweaked_key] = ( - list(), KeyOriginInfo(master_key_fpr, path)) + internal_key = input_key[1:] + psbt.inputs[i].tap_bip32_paths[internal_key] = ( + {}, KeyOriginInfo(master_key_fpr, path)) else: raise RuntimeError("Unexpected state: unknown transaction type") @@ -216,12 +224,12 @@ def createPsbt(wallet: PolicyMapWallet, input_amounts: List[int], output_amounts psbt.outputs[i].hd_keypaths[output_key] = KeyOriginInfo( master_key_fpr, path) elif is_taproot: - tweaked_key = get_taproot_output_key(output_key) - psbt.outputs[i].tap_bip32_paths[tweaked_key] = ( - list(), KeyOriginInfo(master_key_fpr, path)) + internal_key = output_key[1:] + psbt.outputs[i].tap_bip32_paths[internal_key] = ( + {}, KeyOriginInfo(master_key_fpr, path)) - psbt.outputs[i].tap_bip32_paths[tweaked_key] = ( - list(), KeyOriginInfo(master_key_fpr, path)) + psbt.outputs[i].tap_bip32_paths[internal_key] = ( + {}, KeyOriginInfo(master_key_fpr, path)) psbt.tx = tx diff --git a/tests-legacy/README.md b/tests-legacy/README.md deleted file mode 100644 index 95ea7014e..000000000 --- a/tests-legacy/README.md +++ /dev/null @@ -1,49 +0,0 @@ -# End-to-end tests using Bitcoin Testnet - -These tests are implemented in Python and can be executed either using the [Speculos](https://github.com/LedgerHQ/speculos) emulator or a Ledger Nano S/X. - -All the commands in this folder are meant to be ran from the `tests` folder, not from the root. - -Python dependencies are listed in [requirements.txt](requirements.txt), install them using [pip](https://pypi.org/project/pip/) - -``` -pip install -r requirements.txt -``` - -## Launch with Speculos - -In order to create the necessary binaries for the Bitcoin Testnet application, you can use the convenience scripts `prepare_tests_lib.sh` and `prepare_tests_native.sh`. The former compiles the Bitcoin mainnet version of the application to use as a library, then compiles the binary for the Bitcoin testnet version using the library (this is the mechanism used for the altcoins applications based on the legacy Bitcoin app). The latter natively compiles the Bitcoin application for testnet. - -``` -bash ./prepare_tests_lib.sh # or bash ./prepare_tests_native.sh -``` - -Then run all the tests using: - -``` -pytest -``` - -You can delete the test binaries with - -``` -bash ./clean_tests.sh -``` - -## Launch with your Nano S/X - -Compile and install the app on your device as normal. - -To run the tests on your Ledger Nano S/X you also need to install an optional dependency - -``` -pip install ledgercomm[hid] -``` - -Be sure to have you device connected through USB (without any other software interacting with it) and run - -``` -pytest --hid -``` - -Please note that tests that require an automation file are meant for speculos, and will currently hang the test suite. \ No newline at end of file diff --git a/tests-legacy/automations/accept.json b/tests-legacy/automations/accept.json deleted file mode 100644 index 150507c23..000000000 --- a/tests-legacy/automations/accept.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "version": 1, - "rules": [ - { - "regexp": "Review|Amount|Address|Confirm|Fees", - "actions": [ - ["button", 2, true], - ["button", 2, false] - ] - }, - { - "text": "Accept", - "actions": [ - [ "button", 1, true ], - [ "button", 2, true ], - [ "button", 2, false ], - [ "button", 1, false ] - ] - } - ] -} diff --git a/tests-legacy/automations/reject.json b/tests-legacy/automations/reject.json deleted file mode 100644 index 50d04f485..000000000 --- a/tests-legacy/automations/reject.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "version": 1, - "rules": [ - { - "regexp": "Review|Amount|Address|Confirm|Fees|Accept", - "actions": [ - ["button", 2, true], - ["button", 2, false] - ] - }, - { - "text": "Reject", - "actions": [ - [ "button", 1, true ], - [ "button", 2, true ], - [ "button", 2, false ], - [ "button", 1, false ] - ] - } - ] -} diff --git a/tests-legacy/bitcoin_client/bitcoin_base_cmd.py b/tests-legacy/bitcoin_client/bitcoin_base_cmd.py deleted file mode 100644 index 5e71fde56..000000000 --- a/tests-legacy/bitcoin_client/bitcoin_base_cmd.py +++ /dev/null @@ -1,345 +0,0 @@ -import struct -from typing import Tuple, List, Optional - -from ledgercomm import Transport - -from bitcoin_client.hwi.serialization import CTransaction, hash256 -from bitcoin_client.exception.device_exception import DeviceException -from bitcoin_client.bitcoin_cmd_builder import AddrType, InsType, BitcoinCommandBuilder - - -class BitcoinBaseCommand: - """Bitcoin Base Command. - - Send APDU command to device and get APDU response. - - Parameters - ---------- - transport : Transport - Transport interface to the device. - debug : bool - Whether you want to see logging or not. - - Attributes - ---------- - transport : Transport - Transport interface to send APDUs. - builder : BitcoinCommandBuilder - Command builder to construct APDUs. - - """ - - def __init__(self, transport: Transport, debug: bool = False) -> None: - """Init constructor.""" - self.transport = transport - self.builder = BitcoinCommandBuilder(debug=debug) - - def get_random(self, n: int = 5) -> bytes: - """Get `n` bytes random value. - - Parameters - ---------- - n : int - Number of bytes (5 <= n <= 248). - - Returns - ------- - bytes - Random bytes of length `n` from the device. - - """ - sw, response = self.transport.exchange_raw( - self.builder.get_random(n=n) - ) - - if sw != 0x9000: - raise DeviceException(error_code=sw, ins=InsType.GET_RANDOM) - - return response - - def get_firmware_version(self) -> Tuple[int, int, int]: - """Get the version of the application. - - Returns - ------- - Tuple[int, int, int] - (MAJOR, MINOR, PATCH) version of the application. - - """ - sw, response = self.transport.exchange_raw( - self.builder.get_firmware_version() - ) - - if sw != 0x9000: - raise DeviceException(error_code=sw, ins=InsType.GET_FIRMWARE_VERSION) - - # response = flag (1) [unused] || - # architecture id (1) [unused] || - # major version of the application (1) || - # minor version of the application (1) || - # patch version of the application (1) || - # loader id major version (1) [unused] || - # loader id minor version (1) [unused] || - # mode (1) [unused] - _, _, major, minor, patch, _, _, _ = struct.unpack( - "BBBBBBBB", - response - ) # type: int, int, int, int, int, int, int, int - - return major, minor, patch - - def get_coin_version(self) -> Tuple[int, int, int, str, str]: - """Get coin information depending on Bitcoin app fork. - - Returns - ------- - Tuple[int, int, int, str, str] - A tuple (p2pkh_pref, p2sh_prefix, coin_family, coin_name, coin_ticker). - - """ - sw, response = self.transport.exchange_raw( - self.builder.get_coin_version() - ) # type: int, bytes - - if sw != 0x9000: - raise DeviceException(error_code=sw, ins=InsType.GET_COIN_VERSION) - - # response = p2pkh_prefix (2) || p2sh_prefix (2) || coin_family (1) || - # len(coin_name) (1) || coin_name (var) || - # len(coin_ticker) (1) || coin_ticker (var) - offset: int = 0 - p2pkh_prefix: int = int.from_bytes(response[offset:offset + 2], byteorder="big") - offset += 2 - p2sh_prefix: int = int.from_bytes(response[offset:offset + 2], byteorder="big") - offset += 2 - coin_family: int = response[offset] - offset += 1 - coin_name_len: int = response[offset] - offset += 1 - coin_name: str = response[offset:offset + coin_name_len].decode("ascii") - offset += coin_name_len - coin_ticker_len: int = response[offset] - offset += 1 - coin_ticker: str = response[offset:offset + coin_ticker_len].decode("ascii") - offset += coin_ticker_len - - assert len(response) == offset - - return p2pkh_prefix, p2sh_prefix, coin_family, coin_name, coin_ticker - - def get_public_key(self, - addr_type: AddrType, - bip32_path: str, - display: bool = False) -> Tuple[bytes, str, bytes]: - """Get public key given address type and BIP32 path. - - Parameters - ---------- - addr_type : AddrType - Type of address. Could be AddrType.Legacy, AddrType.P2SH_P2WPKH, - AddrType.BECH32. - bip32_path : str - BIP32 path of the public key you want. - display : bool - Whether you want to display address and ask confirmation on the device. - - Returns - ------- - - """ - sw, response = self.transport.exchange_raw( - self.builder.get_public_key(addr_type=addr_type, - bip32_path=bip32_path, - display=display) - ) # type: int, bytes - - if sw != 0x9000: - raise DeviceException(error_code=sw, ins=InsType.GET_WALLET_PUBLIC_KEY) - - # response = len(pub_key) (1) || pub_key (var) || - # len(addr) (1) || addr (var) || bip32_chain_code (32) - offset: int = 0 - pub_key_len: int = response[offset] - offset += 1 - pub_key: bytes = response[offset:offset + pub_key_len] - offset += pub_key_len - addr_len: int = response[offset] - offset += 1 - addr: str = response[offset:offset + addr_len].decode("ascii") - offset += addr_len - bip32_chain_code: bytes = response[offset:offset + 32] - offset += 32 - - assert len(response) == offset - - return pub_key, addr, bip32_chain_code - - def get_trusted_input(self, - utxo: CTransaction, - output_index: int) -> bytes: - """Get trusted input given UTXO and output index. - - Parameters - ---------- - utxo : CTransaction - Serialized Bitcoin transaction to extract UTXO. - output_index : int - Index of the UTXO to build the trusted input. - - Returns - ------- - bytes - Serialized trusted input. - - """ - sw: int - response: bytes = b"" - - for chunk in self.builder.get_trusted_input(utxo, output_index): - self.transport.send_raw(chunk) - sw, response = self.transport.recv() # type: int, bytes - - if sw != 0x9000: - raise DeviceException(error_code=sw, ins=InsType.GET_TRUSTED_INPUT) - - # response = 0x32 (1) || 0x00 (1) || random (2) || prev_txid (32) || - # output_index (4) || amount (8) || HMAC (8) - assert len(response) == 56 - - offset: int = 0 - magic_trusted_input: int = response[offset] - assert magic_trusted_input == 0x32 - offset += 1 - zero: int = response[offset] - assert zero == 0x00 - offset += 1 - _: bytes = response[offset:offset + 2] # random - offset += 2 - prev_txid: bytes = response[offset:offset + 32] - assert prev_txid == hash256(utxo.serialize_without_witness()) - offset += 32 - out_index: int = int.from_bytes(response[offset:offset + 4], - byteorder="little") - assert out_index == output_index - offset += 4 - amount: int = int.from_bytes(response[offset:offset + 8], - byteorder="little") - assert amount == utxo.vout[output_index].nValue - offset += 8 - _: bytes = response[offset:offset + 8] # HMAC - offset += 8 - - assert offset == len(response) - - return response - - def untrusted_hash_tx_input_start(self, - tx: CTransaction, - inputs: List[Tuple[CTransaction, bytes]], - input_index: int, - script: bytes, - is_new_transaction: bool) -> None: - """Send trusted inputs to build the new transaction. - - Parameters - ---------- - tx : CTransaction - Serialized Bitcoin transaction to sign. - inputs : List[Tuple[CTransaction, bytes]] - List of inputs with pair of UTXO and trusted input. - input_index : int - Index of the input to process. - script : bytes - The scriptSig to add at `input_index`. - is_new_transaction: bool - First time sending this input. - - Returns - ------- - None - - """ - sw: int - - for chunk in self.builder.untrusted_hash_tx_input_start(tx=tx, - inputs=inputs, - input_index=input_index, - script=script, - is_new_transaction=is_new_transaction): - self.transport.send_raw(chunk) - sw, _ = self.transport.recv() # type: int, bytes - - if sw != 0x9000: - raise DeviceException( - error_code=sw, - ins=InsType.UNTRUSTED_HASH_TRANSACTION_INPUT_START - ) - - def untrusted_hash_tx_input_finalize(self, - tx: CTransaction, - change_path: Optional[str]) -> bytes: - """Send transaction outputs to finalize the new transaciton. - - Parameters - ---------- - tx: CTransaction - Transaction to sign. - change_path: Optional[str] - BIP32 path for the change. - - Returns - ------- - bytes - Two bytes Reserved for Future Use (RFU) and transaction validation flag. - Unused, always 0x00 and 0x00. - - - """ - sw: int - response: bytes = b"" - - for chunk in self.builder.untrusted_hash_tx_input_finalize(tx=tx, - change_path=change_path): - self.transport.send_raw(chunk) - sw, response = self.transport.recv() - - if sw != 0x9000: - raise DeviceException( - error_code=sw, - ins=InsType.UNTRUSTED_HASH_TRANSACTION_INPUT_FINALIZE - ) - # response = RFU (1) || User validation flag (1) - return response - - def untrusted_hash_sign(self, - sign_path: str, - lock_time: int = 0, - sig_hash: int = 1) -> Tuple[int, bytes]: - """Sign input just sent using `sign_path`. - - Parameters - ---------- - sign_path : str - BIP32 path to be used to sign. - lock_time : int - Block height or timestamp when transaction is final. - sig_hash : int - Either SIGHASH_ALL (0x01), SIGHASH_NONE (0x02) or SIGHASH_SINGLE (0x03). - Only SIGHASH_ALL (0x01) is supported. - - Returns - ------- - Tuple[int, bytes] - A pair (v, der_sig) with: - - v: 0x01 if y-coordinate of R is odd, 0x00 otherwise. - - der_sig: DER encoded Bitcoin ECDSA signature (with SIGHASH). - - """ - sw, response = self.transport.exchange_raw( - self.builder.untrusted_hash_sign(sign_path, lock_time, sig_hash) - ) # type: int, bytes - - if sw != 0x9000: - raise DeviceException(error_code=sw, ins=InsType.UNTRUSTED_HASH_SIGN) - - return (1, b"\x30" + response[1:]) if response[0] & 0x01 else (0, response) diff --git a/tests-legacy/bitcoin_client/bitcoin_cmd.py b/tests-legacy/bitcoin_client/bitcoin_cmd.py deleted file mode 100644 index ec5818fd8..000000000 --- a/tests-legacy/bitcoin_client/bitcoin_cmd.py +++ /dev/null @@ -1,244 +0,0 @@ -from typing import Tuple, List - -from ledgercomm import Transport - -from bitcoin_client.hwi.serialization import (CTransaction, CTxIn, CTxOut, COutPoint, - is_witness, is_p2wpkh, is_p2pkh, is_p2sh, hash160) -from bitcoin_client.hwi.bech32 import decode as bech32_decode -from bitcoin_client.hwi.base58 import decode as base58_decode -from bitcoin_client.utils import deser_trusted_input -from bitcoin_client.bitcoin_utils import bip143_digest, compress_pub_key -from bitcoin_client.bitcoin_cmd_builder import AddrType -from bitcoin_client.bitcoin_base_cmd import BitcoinBaseCommand - - -class BitcoinCommand(BitcoinBaseCommand): - """Bitcoin Command. - - Inherit from BitcoinBaseCommand and provide a high level - interface to sign Bitcoin transaction. - - Parameters - ---------- - transport : Transport - Transport interface to the device. - debug : bool - Whether you want to see logging or not. - - """ - - def __init__(self, transport: Transport, debug: bool = False) -> None: - """Init constructor.""" - super().__init__(transport, debug) - - def sign_new_tx(self, - address: str, - amount: int, - fees: int, - change_path: str, - sign_paths: List[str], - raw_utxos: List[Tuple[bytes, int]], - lock_time: int = 0) -> List[Tuple[bytes, bytes, Tuple[int, bytes]]]: - """Sign a new transaction with parameters.. - - Parameters - ---------- - address : str - Bitcoin address. - amount : int - Amount to send to address in satoshis. - fees : int - Fees of the new transaction. - change_path : str - BIP32 path for the change. - sign_paths : List[str] - BIP32 paths to sign inputs. - raw_utxos : List[Tuple[bytes, int]] - Pairs of raw hex transaction and output index to use as UTXOs. - lock_time : int - Block height or timestamp when transaction is final. - - Returns - ------- - List[Tuple[bytes, bytes, Tuple[int, bytes]]] - Tuples (tx_hash_digest, sign_pub_key, (v, der_sig)) - - """ - utxos: List[Tuple[CTransaction, int, int]] = [] - amount_available: int = 0 - for raw_tx, output_index in raw_utxos: - utxo = CTransaction.from_bytes(raw_tx) - value = utxo.vout[output_index].nValue - utxos.append((utxo, output_index, value)) - amount_available += value - - sign_pub_keys: List[bytes] = [] - for sign_path in sign_paths: - sign_pub_key, _, _ = self.get_public_key( - addr_type=AddrType.BECH32, - bip32_path=sign_path, - display=False - ) - sign_pub_keys.append(compress_pub_key(sign_pub_key)) - - inputs: List[Tuple[CTransaction, bytes]] = [ - (utxo, self.get_trusted_input(utxo=utxo, output_index=output_index)) - for utxo, output_index, _ in utxos - ] - - # new transaction - tx: CTransaction = CTransaction() - tx.nVersion = 2 - tx.nLockTime = lock_time - # prepare vin - for i, (utxo, trusted_input) in enumerate(inputs): - if utxo.sha256 is None: - utxo.calc_sha256(with_witness=False) - - _, _, _, prev_txid, output_index, _, _ = deser_trusted_input(trusted_input) - assert prev_txid != utxo.sha256 - - script_pub_key: bytes = utxo.vout[output_index].scriptPubKey - # P2WPKH - if is_p2wpkh(script_pub_key): - _, _, wit_prog = is_witness(script_pub_key) - script_pub_key = (b"\x76" + # OP_DUP - b"\xa9" + # OP_HASH160 - b"\x14" + # bytes to push (20) - wit_prog + # hash160(pubkey) - b"\x88" + # OP_EQUALVERIFY - b"\xac") # OP_CHECKSIG - # P2SH-P2WPKH or P2PKH - if (is_p2sh(script_pub_key) and not utxo.wit.is_null()) or is_p2pkh(script_pub_key): - script_pub_key = (b"\x76" + # OP_DUP - b"\xa9" + # OP_HASH160 - b"\x14" + # bytes to push (20) - hash160(sign_pub_keys[i]) + # hash160(pubkey) - b"\x88" + # OP_EQUALVERIFY - b"\xac") # OP_CHECKSIG - tx.vin.append(CTxIn(outpoint=COutPoint(h=utxo.sha256, n=output_index), - scriptSig=script_pub_key, - nSequence=0xfffffffd)) - - if amount_available - fees > amount: - change_pub_key, _, _ = self.get_public_key( - addr_type=AddrType.BECH32, - bip32_path=change_path, - display=False - ) - change_pubkey_hash = hash160(compress_pub_key(change_pub_key)) - change_script_pubkey: bytes - # Bech32 pubkey hash or script hash (mainnet and testnet) - if address.startswith("bc1") or address.startswith("tb1"): - change_script_pubkey = bytes([0, len(change_pubkey_hash)]) + change_pubkey_hash - # P2SH-P2WPKH (mainnet and testnet) - elif address.startswith("3") or address.startswith("2"): - change_script_pubkey = (b"\xa9" + # OP_HASH160 - b"\x14" + # bytes to push (20) - # hash160(redeem_script) - hash160(bytes([0, len(change_pubkey_hash)]) + change_pubkey_hash) + - b"\x87") # OP_EQUAL - # P2PKH address (mainnet and testnet) - elif address.startswith("1") or (address.startswith("m") or address.startswith("n")): - change_script_pubkey = (b"\x76" + # OP_DUP - b"\xa9" + # OP_HASH160 - b"\x14" + # bytes to push (20) - change_pubkey_hash + # hash160(pubkey) - b"\x88" + # OP_EQUALVERIFY - b"\xac") # OP_CHECKSIG - else: - raise Exception(f"Unsupported address: '{address}'") - tx.vout.append( - CTxOut(nValue=amount_available - fees - amount, - scriptPubKey=change_script_pubkey) - ) - - script_pub_key: bytes - # Bech32 pubkey hash or script hash (mainnet and testnet) - if address.startswith("bc1") or address.startswith("tb1"): - witness_version, witness_program = bech32_decode(address[0:2], address) - script_pub_key = bytes( - [witness_version + 0x50 if witness_version else 0, - len(witness_program)] + - witness_program - ) - # P2SH address (mainnet and testnet) - elif address.startswith("3") or address.startswith("2"): - script_pub_key = (b"\xa9" + # OP_HASH160 - b"\x14" + # bytes to push (20) - base58_decode(address)[1:-4] + # hash160(redeem_script) - b"\x87") # OP_EQUAL - # P2PKH address (mainnet and testnet) - elif address.startswith("1") or (address.startswith("m") or address.startswith("n")): - script_pub_key = (b"\x76" + # OP_DUP - b"\xa9" + # OP_HASH160 - b"\x14" + # bytes to push (20) - base58_decode(address)[1:-4] + # hash160(pubkey) - b"\x88" + # OP_EQUALVERIFY - b"\xac") # OP_CHECKSIG - else: - raise Exception(f"Unsupported address: '{address}'") - - tx.vout.append(CTxOut(nValue=amount, - scriptPubKey=script_pub_key)) - - for i in range(len(tx.vin)): - self.untrusted_hash_tx_input_start(tx=tx, - inputs=inputs, - input_index=i, - script=tx.vin[i].scriptSig, - is_new_transaction=(i == 0)) - - self.untrusted_hash_tx_input_finalize(tx=tx, - change_path=change_path) - - sigs: List[Tuple[bytes, bytes, Tuple[int, bytes]]] = [] - for i in range(len(tx.vin)): - self.untrusted_hash_tx_input_start(tx=tx, - inputs=[inputs[i]], - input_index=0, - script=tx.vin[i].scriptSig, - is_new_transaction=False) - _, _, amount = utxos[i] - sigs.append( - (bip143_digest(tx, amount, i), - sign_pub_keys[i], - self.untrusted_hash_sign(sign_path=sign_paths[i], - lock_time=tx.nLockTime, - sig_hash=1)) - ) - - return sigs - - def sign_tx(self, - tx: CTransaction, - change_path: str, - sign_paths: List[str], - utxos: List[Tuple[CTransaction, int, int]]) -> List[Tuple[int, bytes]]: - inputs: List[Tuple[CTransaction, bytes]] = [ - (utxo, self.get_trusted_input(utxo=utxo, output_index=output_index)) - for utxo, output_index, _ in utxos - ] - - for i in range(len(tx.vin)): - self.untrusted_hash_tx_input_start(tx=tx, - inputs=inputs, - input_index=i, - script=tx.vin[i].scriptSig, - is_new_transaction=(i == 0)) - - self.untrusted_hash_tx_input_finalize(tx=tx, - change_path=change_path) - - sigs = [] - for i in range(len(tx.vin)): - self.untrusted_hash_tx_input_start(tx=tx, - inputs=[inputs[i]], - input_index=0, - script=tx.vin[i].scriptSig, - is_new_transaction=False) - sigs.append(self.untrusted_hash_sign(sign_path=sign_paths[i], - lock_time=tx.nLockTime, - sig_hash=1)) - - return sigs diff --git a/tests-legacy/bitcoin_client/bitcoin_cmd_builder.py b/tests-legacy/bitcoin_client/bitcoin_cmd_builder.py deleted file mode 100644 index d4e3ec97e..000000000 --- a/tests-legacy/bitcoin_client/bitcoin_cmd_builder.py +++ /dev/null @@ -1,387 +0,0 @@ -import enum -import logging -import struct -from typing import Optional, List, Tuple, Iterator, Union, cast - -from bitcoin_client.hwi.serialization import CTransaction, ser_compact_size -from bitcoin_client.utils import chunkify, MAX_APDU_LEN -from bitcoin_client.bitcoin_utils import bip32_path_from_string - - -class InsType(enum.IntEnum): - """Instruction commands supported.""" - - GET_RANDOM = 0xC0 - GET_FIRMWARE_VERSION = 0xC4 - GET_COIN_VERSION = 0x16 - GET_WALLET_PUBLIC_KEY = 0x40 - GET_TRUSTED_INPUT = 0x42 - UNTRUSTED_HASH_TRANSACTION_INPUT_START = 0x44 - UNTRUSTED_HASH_TRANSACTION_INPUT_FINALIZE = 0x4A - UNTRUSTED_HASH_SIGN = 0x48 - - -class AddrType(enum.IntEnum): - """Type of Bitcoin address.""" - - Legacy = 0x00 - P2SH_P2WPKH = 0x01 - BECH32 = 0x02 - - -class BitcoinCommandBuilder: - """APDU command builder for the Bitcoin application. - - Parameters - ---------- - debug : bool - Whether you want to see logging or not. - - Attributes - ---------- - debug : bool - Whether you want to see logging or not. - - """ - - CLA: int = 0xE0 - - def __init__(self, debug: bool = False): - """Init constructor.""" - self.debug = debug - - def serialize(self, - cla: int, - ins: Union[int, enum.IntEnum], - p1: int = 0, - p2: int = 0, - cdata: bytes = b"") -> bytes: - """Serialize the whole APDU command (header + cdata). - - Parameters - ---------- - cla : int - Instruction class: CLA (1 byte) - ins : Union[int, IntEnum] - Instruction code: INS (1 byte) - p1 : int - Instruction parameter 1: P1 (1 byte). - p2 : int - Instruction parameter 2: P2 (1 byte). - cdata : bytes - Bytes of command data. - - Returns - ------- - bytes - Bytes of a complete APDU command. - - """ - ins = cast(int, ins.value) if isinstance(ins, enum.IntEnum) else cast(int, ins) - - header: bytes = struct.pack("BBBBB", - cla, - ins, - p1, - p2, - len(cdata)) # add Lc to APDU header - - if self.debug: - logging.info("header: %s", header.hex()) - logging.info("cdata: %s", cdata.hex()) - - return header + cdata - - def get_random(self, n: int = 248) -> bytes: - """Command builder for GET_RANDOM. - - Parameters - ---------- - n : int - Number of bytes (1 <= n <= 248). - - Returns - ------- - bytes - APDU command for GET_RANDOM. - - """ - return self.serialize(cla=self.CLA, - ins=InsType.GET_RANDOM, - p1=0x00, - p2=0x00, - cdata=b"\x00" * n) - - def get_firmware_version(self) -> bytes: - """Command builder for GET_FIRMWARE_VERSION. - - Returns - ------- - bytes - APDU command for GET_FIMWARE_VERSION. - - """ - ins: InsType = InsType.GET_FIRMWARE_VERSION - p1: int = 0x00 - p2: int = 0x00 - - return self.serialize(cla=self.CLA, ins=ins, p1=p1, p2=p2, cdata=b"") - - def get_coin_version(self) -> bytes: - """Command builder for GET_COIN_VERSION. - - Returns - ------- - bytes - APDU command for GET_COIN_VERSION. - - """ - ins: InsType = InsType.GET_COIN_VERSION - p1: int = 0x00 - p2: int = 0x00 - - return self.serialize(cla=self.CLA, ins=ins, p1=p1, p2=p2, cdata=b"") - - def get_public_key(self, - addr_type: AddrType, - bip32_path: str, - display: bool = False) -> bytes: - """Command builder for GET_WALLET_PUBLIC_KEY. - - Parameters - ---------- - addr_type : AddrType - The type of address expected in the response. Could be Legacy (0x00), - P2SH-P2WPKH (0x01) or BECH32 encoded P2WPKH (0x02). - bip32_path : str - String representation of BIP32 path (e.g. "m/44'/0'/0'/0" or "44'/0'/0'/0"). - display : bool - Whether you want to display address and ask confirmation on the device. - - Returns - ------- - bytes - APDU command for GET_WALLET_PUBLIC_KEY. - - """ - ins: InsType = InsType.GET_WALLET_PUBLIC_KEY - # P1: - # - 0x00, do not display the address - # - 0x01, display the address - # - 0x02, display the validation token (unused here) - p1: int = 0x01 if display else 0x00 - # P2: type of Bitcoin address in the response - p2: int = addr_type.value - - path: List[bytes] = bip32_path_from_string(bip32_path) - - cdata: bytes = b"".join([ - len(path).to_bytes(1, byteorder="big"), - *path - ]) - - return self.serialize(cla=self.CLA, ins=ins, p1=p1, p2=p2, cdata=cdata) - - def get_trusted_input(self, - utxo: CTransaction, - output_index: int) -> Iterator[bytes]: - """Command builder for GET_TRUSTED_INPUT. - - Parameters - ---------- - utxo: CTransaction - Unspent Transaction Output (UTXO) serialized. - output_index: int - Output index owned in the UTXO. - - Yields - ------ - bytes - APDU command chunk for GET_TRUSTED_INPUT. - - """ - ins: InsType = InsType.GET_TRUSTED_INPUT - # P1: - # - 0x00, first transaction data chunk - # - 0x80, other transaction data chunk - p1: int - p2: int = 0x00 - - cdata: bytes = (output_index.to_bytes(4, byteorder="big") + - utxo.serialize_without_witness()) - - for i, (is_last, chunk) in enumerate(chunkify(cdata, MAX_APDU_LEN)): - p1 = 0x00 if i == 0 else 0x80 - if is_last: - yield self.serialize(cla=self.CLA, - ins=ins, - p1=p1, - p2=p2, - cdata=chunk) - return - yield self.serialize(cla=self.CLA, - ins=ins, - p1=p1, - p2=p2, - cdata=chunk) - - def untrusted_hash_tx_input_start(self, - tx: CTransaction, - inputs: List[Tuple[CTransaction, bytes]], - input_index: int, - script: bytes, - is_new_transaction: bool - ) -> Iterator[bytes]: - """Command builder for UNTRUSTED_HASH_TRANSACTION_INPUT_START. - - Parameters - ---------- - tx: CTransaction - Serialized Bitcoin transaction to sign. - inputs: List[Tuple[CTransaction, bytes]] - List of inputs with pair of UTXO and trusted input. - input_index: int - Index of the input to process. - script : bytes - The scriptSig to add at `input_index`. - is_new_transaction: bool - First time sending this input. - - Yields - ------- - bytes - APDU command chunk for UNTRUSTED_HASH_TRANSACTION_INPUT_START. - - """ - ins: InsType = InsType.UNTRUSTED_HASH_TRANSACTION_INPUT_START - # P1: - # - 0x00, first transaction data chunk - # - 0x80, other transaction data chunk - p1: int = 0x00 - # P2: - # - 0x80, new transaction - # - 0x02, new transaction with segwit input - p2: int = 0x02 if is_new_transaction else 0x80 - - cdata: bytes = (tx.nVersion.to_bytes(4, byteorder="little") + - ser_compact_size(len(inputs))) - - yield self.serialize(cla=self.CLA, - ins=ins, - p1=p1, - p2=p2, - cdata=cdata) - - p1 = 0x80 - for i, (_, trusted_input) in enumerate(inputs): - script_sig: bytes = script if i == input_index else b"" - cdata = b"".join([ - b"\x01", # 0x01 for trusted input, 0x02 for witness, 0x00 otherwise - len(trusted_input).to_bytes(1, byteorder="big"), - trusted_input, - ser_compact_size(len(script_sig)) - ]) - - yield self.serialize(cla=self.CLA, - ins=ins, - p1=p1, - p2=p2, - cdata=cdata) - - yield self.serialize(cla=self.CLA, - ins=ins, - p1=p1, - p2=p2, - cdata=(script_sig + - 0xfffffffd.to_bytes(4, byteorder="little"))) - - def untrusted_hash_tx_input_finalize(self, - tx: CTransaction, - change_path: Optional[str] - ) -> Iterator[bytes]: - """Command builder for UNTRUSTED_HASH_TRANSACTION_INPUT_FINALIZE. - - Parameters - ---------- - tx: CTransaction - Transaction to sign. - change_path: Optional[str] - BIP32 path for the change. - - Yields - ------- - bytes - APDU command chunk for UNTRUSTED_HASH_TRANSACTION_INPUT_FINALIZE. - - """ - ins: InsType = InsType.UNTRUSTED_HASH_TRANSACTION_INPUT_FINALIZE - # P1: - # - 0x00, more input chunk to be sent - # - 0x80, last chunk to be sent - # - 0xFF, BIP32 path for the change address - p1: int - p2: int = 0x00 - - p1 = 0xFF - if change_path: - bip32_change_path: List[bytes] = bip32_path_from_string(change_path) - cdata: bytes = b"".join([ - len(bip32_change_path).to_bytes(1, byteorder="big"), - *bip32_change_path - ]) - yield self.serialize(cla=self.CLA, ins=ins, p1=p1, p2=p2, cdata=cdata) - else: - yield self.serialize(cla=self.CLA, ins=ins, p1=p1, p2=p2, cdata=b"\x00") - - vout_num = len(tx.vout) - p1 = 0x00 - yield self.serialize(cla=self.CLA, - ins=ins, - p1=p1, - p2=p2, - cdata=ser_compact_size(vout_num)) - - for i, ctxout in enumerate(tx.vout): - p1 = 0x00 if i < vout_num - 1 else 0x80 - yield self.serialize(cla=self.CLA, - ins=ins, - p1=p1, - p2=p2, - cdata=ctxout.serialize()) - - def untrusted_hash_sign(self, - sign_path: str, - lock_time: int = 0, - sig_hash: int = 1) -> bytes: - """Command builder for UNTRUSTED_HASH_SIGN. - - Parameters - ---------- - sign_path : str - BIP32 path to be used to sign. - lock_time : int - Block height or timestamp when transaction is final. - sig_hash : int - Either SIGHASH_ALL (0x01), SIGHASH_NONE (0x02) or SIGHASH_SINGLE (0x03). - Only SIGHASH_ALL (0x01) is supported. - - Returns - ------- - bytes - APDU command for UNTRUSTED_HASH_SIGN. - - """ - ins: InsType = InsType.UNTRUSTED_HASH_SIGN - p1: int = 0x00 - p2: int = 0x00 - - bip32_path: List[bytes] = bip32_path_from_string(sign_path) - cdata: bytes = b"".join([ - len(bip32_path).to_bytes(1, byteorder="big"), - *bip32_path, - b"\00", # unused (Reserved for Future Use) - lock_time.to_bytes(4, byteorder="big"), # /!\ big instead of little - sig_hash.to_bytes(1, byteorder="big") - ]) - - return self.serialize(cla=self.CLA, ins=ins, p1=p1, p2=p2, cdata=cdata) diff --git a/tests-legacy/bitcoin_client/bitcoin_utils.py b/tests-legacy/bitcoin_client/bitcoin_utils.py deleted file mode 100644 index 162d23dbd..000000000 --- a/tests-legacy/bitcoin_client/bitcoin_utils.py +++ /dev/null @@ -1,68 +0,0 @@ -import struct -from typing import List - -from bitcoin_client.hwi.serialization import CTransaction, hash256, ser_string - - -def bip143_digest(tx: CTransaction, - amount: int, - input_index: int, - sig_hash: int = 0x01) -> bytes: - hash_prev_outs: bytes = b"".join([ - txin.prevout.serialize() for txin in tx.vin - ]) - - hash_sequence: bytes = b"".join([ - struct.pack(" List[bytes]: - """Convert BIP32 path string to list of bytes.""" - splitted_path: List[str] = path.split("/") - - if "m" in splitted_path and splitted_path[0] == "m": - splitted_path = splitted_path[1:] - - return [int(p).to_bytes(4, byteorder="big") if "'" not in p - else (0x80000000 | int(p[:-1])).to_bytes(4, byteorder="big") - for p in splitted_path] - - -def compress_pub_key(pub_key: bytes) -> bytes: - """Convert uncompressed to compressed public key.""" - if pub_key[-1] & 1: - return b"\x03" + pub_key[1:33] - - return b"\x02" + pub_key[1:33] \ No newline at end of file diff --git a/tests-legacy/bitcoin_client/exception/__init__.py b/tests-legacy/bitcoin_client/exception/__init__.py deleted file mode 100644 index 4320abeb1..000000000 --- a/tests-legacy/bitcoin_client/exception/__init__.py +++ /dev/null @@ -1,64 +0,0 @@ -from .device_exception import DeviceException -from .errors import (AccessConditionNotFullfilledError, - AlgorithmNotSupportedError, - ClaNotSupportedError, - CodeBlockedError, - CodeNotInitializedError, - CommandIncompatibleFileStructureError, - ConditionOfUseNotSatisfiedError, - ContradictionInvalidationError, - ContradictionSecretCodeStatusError, - FileAlreadyExistsError, - FileNotFoundError, - GPAuthFailedError, - HaltedError, - InconsistentFileError, - IncorrectDataError, - IncorrectLengthError, - IncorrectP1P2Error, - InsNotSupportedError, - InvalidKCVError, - InvalidOffsetError, - LicensingError, - MaxValueReachedError, - MemoryProblemError, - NoEFSelectedError, - NotEnoughMemorySpaceError, - ReferencedDataNotFoundError, - SecurityStatusNotSatisfiedError, - SwapWithoutTrustedInputsError, - TechnicalProblemError, - UnknownDeviceError) - -__all__ = [ - "AccessConditionNotFullfilledError", - "AlgorithmNotSupportedError", - "ClaNotSupportedError", - "CodeBlockedError", - "CodeNotInitializedError", - "CommandIncompatibleFileStructureError", - "ConditionOfUseNotSatisfiedError", - "ContradictionInvalidationError", - "ContradictionSecretCodeStatusError", - "FileAlreadyExistsError", - "FileNotFoundError", - "GPAuthFailedError", - "HaltedError", - "InconsistentFileError", - "IncorrectDataError", - "IncorrectLengthError", - "IncorrectP1P2Error", - "InsNotSupportedError", - "InvalidKCVError", - "InvalidOffsetError", - "LicensingError", - "MaxValueReachedError", - "MemoryProblemError", - "NoEFSelectedError", - "NotEnoughMemorySpaceError", - "ReferencedDataNotFoundError", - "SecurityStatusNotSatisfiedError", - "SwapWithoutTrustedInputsError", - "TechnicalProblemError", - "UnknownDeviceError" -] diff --git a/tests-legacy/bitcoin_client/exception/device_exception.py b/tests-legacy/bitcoin_client/exception/device_exception.py deleted file mode 100644 index ce00193f8..000000000 --- a/tests-legacy/bitcoin_client/exception/device_exception.py +++ /dev/null @@ -1,53 +0,0 @@ -import enum -from typing import Dict, Any, Optional - -from .errors import * - - -class DeviceException(Exception): # pylint: disable=too-few-public-methods - exc: Dict[int, Any] = { - 0x6700: IncorrectLengthError, - 0x6981: CommandIncompatibleFileStructureError, - 0x6982: SecurityStatusNotSatisfiedError, - 0x6985: ConditionOfUseNotSatisfiedError, - 0x6A80: IncorrectDataError, - 0x6A84: NotEnoughMemorySpaceError, - 0x6A88: ReferencedDataNotFoundError, - 0x6A89: FileAlreadyExistsError, - 0x6A8A: SwapWithoutTrustedInputsError, - 0x6B00: IncorrectP1P2Error, - 0x6D00: InsNotSupportedError, - 0x6E00: ClaNotSupportedError, - 0x6F00: TechnicalProblemError, - 0x9240: MemoryProblemError, - 0x9400: NoEFSelectedError, - 0x9402: InvalidOffsetError, - 0x9404: FileNotFoundError, - 0x9408: InconsistentFileError, - 0x9484: AlgorithmNotSupportedError, - 0x9485: InvalidKCVError, - 0x9802: CodeNotInitializedError, - 0x9804: AccessConditionNotFullfilledError, - 0x9808: ContradictionSecretCodeStatusError, - 0x9810: ContradictionInvalidationError, - 0x9840: CodeBlockedError, - 0x9850: MaxValueReachedError, - 0x6300: GPAuthFailedError, - 0x6F42: LicensingError, - 0x6FAA: HaltedError - } - - def __new__(cls, - error_code: int, - ins: Optional[enum.IntEnum] = None, - message: str = "" - ) -> Any: - error_message: str = (f"Error in {ins!r} command" - if ins else "Error in command") - - if error_code in DeviceException.exc: - return DeviceException.exc[error_code](hex(error_code), - error_message, - message) - - return UnknownDeviceError(hex(error_code), error_message, message) diff --git a/tests-legacy/bitcoin_client/exception/errors.py b/tests-legacy/bitcoin_client/exception/errors.py deleted file mode 100644 index e19f4f733..000000000 --- a/tests-legacy/bitcoin_client/exception/errors.py +++ /dev/null @@ -1,118 +0,0 @@ -class UnknownDeviceError(Exception): - pass - - -class IncorrectLengthError(Exception): - pass - - -class CommandIncompatibleFileStructureError(Exception): - pass - - -class SecurityStatusNotSatisfiedError(Exception): - pass - - -class ConditionOfUseNotSatisfiedError(Exception): - pass - - -class IncorrectDataError(Exception): - pass - - -class NotEnoughMemorySpaceError(Exception): - pass - - -class ReferencedDataNotFoundError(Exception): - pass - - -class FileAlreadyExistsError(Exception): - pass - - -class SwapWithoutTrustedInputsError(Exception): - pass - - -class IncorrectP1P2Error(Exception): - pass - - -class InsNotSupportedError(Exception): - pass - - -class ClaNotSupportedError(Exception): - pass - - -class TechnicalProblemError(Exception): - pass - - -class MemoryProblemError(Exception): - pass - - -class NoEFSelectedError(Exception): - pass - - -class InvalidOffsetError(Exception): - pass - - -class FileNotFoundError(Exception): - pass - - -class InconsistentFileError(Exception): - pass - - -class AlgorithmNotSupportedError(Exception): - pass - - -class InvalidKCVError(Exception): - pass - - -class CodeNotInitializedError(Exception): - pass - - -class AccessConditionNotFullfilledError(Exception): - pass - - -class ContradictionSecretCodeStatusError(Exception): - pass - - -class ContradictionInvalidationError(Exception): - pass - - -class CodeBlockedError(Exception): - pass - - -class MaxValueReachedError(Exception): - pass - - -class GPAuthFailedError(Exception): - pass - - -class LicensingError(Exception): - pass - - -class HaltedError(Exception): - pass diff --git a/tests-legacy/bitcoin_client/hwi/base58.py b/tests-legacy/bitcoin_client/hwi/base58.py deleted file mode 100644 index e0df1152f..000000000 --- a/tests-legacy/bitcoin_client/hwi/base58.py +++ /dev/null @@ -1,110 +0,0 @@ -"""base58 module. - -Original source: git://github.com/joric/brutus.git -which was forked from git://github.com/samrushing/caesure.git - -Distributed under the MIT/X11 software license, see the accompanying -file COPYING or http://www.opensource.org/licenses/mit-license.php. - -""" - -import hashlib -from binascii import hexlify, unhexlify -from typing import List - - -b58_digits: str = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' - - -def sha256(s: bytes) -> bytes: - return hashlib.new('sha256', s).digest() - - -def hash256(s: bytes) -> bytes: - return sha256(sha256(s)) - - -def encode(b: bytes) -> str: - """Encode bytes to a base58-encoded string""" - - # Convert big-endian bytes to integer - n: int = int('0x0' + hexlify(b).decode('utf8'), 16) - - # Divide that integer into base58 - temp: List[str] = [] - while n > 0: - n, r = divmod(n, 58) - temp.append(b58_digits[r]) - res: str = ''.join(temp[::-1]) - - # Encode leading zeros as base58 zeros - czero: int = 0 - pad: int = 0 - for c in b: - if c == czero: - pad += 1 - else: - break - return b58_digits[0] * pad + res - - -def decode(s: str) -> bytes: - """Decode a base58-encoding string, returning bytes""" - if not s: - return b'' - - # Convert the string to an integer - n: int = 0 - for c in s: - n *= 58 - if c not in b58_digits: - raise ValueError('Character %r is not a valid base58 character' % c) - digit = b58_digits.index(c) - n += digit - - # Convert the integer to bytes - h: str = '%x' % n - if len(h) % 2: - h = '0' + h - res = unhexlify(h.encode('utf8')) - - # Add padding back. - pad = 0 - for c in s[:-1]: - if c == b58_digits[0]: - pad += 1 - else: - break - return b'\x00' * pad + res - - -def get_xpub_fingerprint(s: str) -> bytes: - data = decode(s) - fingerprint = data[5:9] - return fingerprint - - -def get_xpub_fingerprint_hex(xpub: str) -> str: - data = decode(xpub) - fingerprint = data[5:9] - return hexlify(fingerprint).decode() - - -def to_address(b: bytes, version: bytes) -> str: - data = version + b - checksum = hash256(data)[0:4] - data += checksum - return encode(data) - - -def xpub_to_pub_hex(xpub: str) -> str: - data = decode(xpub) - pubkey = data[-37:-4] - return hexlify(pubkey).decode() - - -def xpub_main_2_test(xpub: str) -> str: - data = decode(xpub) - test_data = b'\x04\x35\x87\xCF' + data[4:-4] - checksum = hash256(test_data)[0:4] - return encode(test_data + checksum) diff --git a/tests-legacy/bitcoin_client/hwi/serialization.py b/tests-legacy/bitcoin_client/hwi/serialization.py deleted file mode 100644 index fc1cc6437..000000000 --- a/tests-legacy/bitcoin_client/hwi/serialization.py +++ /dev/null @@ -1,524 +0,0 @@ -"""Bitcoin Object Python Serializations. - -Copyright (c) 2010 ArtForz -- public domain half-a-node -Copyright (c) 2012 Jeff Garzik -Copyright (c) 2010-2016 The Bitcoin Core developers - -Distributed under the MIT software license, see the accompanying -file COPYING or http://www.opensource.org/licenses/mit-license.php. - -Modified from the test/test_framework/mininode.py file from the -Bitcoin repository - -CTransaction,CTxIn, CTxOut, etc....: - data structures that should map to corresponding structures in - bitcoin/primitives for transactions only -ser_*, deser_*: functions that handle serialization/deserialization - -""" - -import struct -import binascii -import hashlib -import copy -import base64 -from io import BytesIO -from typing import ( - List, - Optional, - Sequence, - Tuple, - TypeVar, - Callable -) -from typing_extensions import Protocol - - -class Readable(Protocol): - def read(self, n: int = -1) -> bytes: - ... - - -class Deserializable(Protocol): - def deserialize(self, f: Readable) -> None: - ... - - -class Serializable(Protocol): - def serialize(self) -> bytes: - ... - - -def sha256(s: bytes) -> bytes: - return hashlib.new('sha256', s).digest() - - -def ripemd160(s: bytes) -> bytes: - return hashlib.new('ripemd160', s).digest() - - -def hash256(s: bytes) -> bytes: - return sha256(sha256(s)) - - -def hash160(s: bytes) -> bytes: - return ripemd160(sha256(s)) - - -# Serialization/deserialization tools -def ser_compact_size(size: int) -> bytes: - r: bytes - if size < 253: - r = struct.pack("B", size) - elif size < 0x10000: - r = struct.pack(" int: - nit: int = struct.unpack(" bytes: - nit = deser_compact_size(f) - return f.read(nit) - - -def ser_string(s: bytes) -> bytes: - return ser_compact_size(len(s)) + s - - -def deser_uint256(f: Readable) -> int: - r = 0 - for i in range(8): - t = struct.unpack(" bytes: - rs = b"" - for _ in range(8): - rs += struct.pack(">= 32 - return rs - - -def uint256_from_str(s: bytes) -> int: - r = 0 - t = struct.unpack(" List[D]: - nit = deser_compact_size(f) - r = [] - for _ in range(nit): - t = c() - t.deserialize(f) - r.append(t) - return r - - -def ser_vector(v: Sequence[Serializable]) -> bytes: - r = ser_compact_size(len(v)) - for i in v: - r += i.serialize() - return r - - -def deser_string_vector(f: Readable) -> List[bytes]: - nit = deser_compact_size(f) - r = [] - for _ in range(nit): - t = deser_string(f) - r.append(t) - return r - - -def ser_string_vector(v: List[bytes]) -> bytes: - r = ser_compact_size(len(v)) - for sv in v: - r += ser_string(sv) - return r - - -def hex_to_base64(s: str) -> bytes: - return base64.b64encode(binascii.unhexlify(s)) - - -def ser_sig_der(r: bytes, s: bytes) -> bytes: - sig = b"\x30" - - # Make r and s as short as possible - ri = 0 - for b in r: - if b == 0: - ri += 1 - else: - break - r = r[ri:] - si = 0 - for b in s: - if b == 0: - si += 1 - else: - break - s = s[si:] - - # Make positive of neg - first = r[0] - if first & (1 << 7) != 0: - r = b"\x00" + r - first = s[0] - if first & (1 << 7) != 0: - s = b"\x00" + s - - # Write total length - total_len = len(r) + len(s) + 4 - sig += struct.pack("B", total_len) - - # write r - sig += b"\x02" - sig += struct.pack("B", len(r)) - sig += r - - # write s - sig += b"\x02" - sig += struct.pack("B", len(s)) - sig += s - - sig += b"\x01" - return sig - - -def ser_sig_compact(r: bytes, s: bytes, recid: bytes) -> bytes: - rec = struct.unpack("B", recid)[0] - prefix = struct.pack("B", 27 + 4 + rec) - - sig = b"" - sig += prefix - sig += r + s - - return sig - -# Objects that map to bitcoind objects, which can be serialized/deserialized - - -MSG_WITNESS_FLAG = 1 << 30 - - -class COutPoint(object): - def __init__(self, h: int = 0, n: int = 0xffffffff): - self.hash = h - self.n = n - - def deserialize(self, f: Readable) -> None: - self.hash = deser_uint256(f) - self.n = struct.unpack(" bytes: - r = b"" - r += ser_uint256(self.hash) - r += struct.pack(" str: - return "COutPoint(hash=%064x n=%i)" % (self.hash, self.n) - - -class CTxIn(object): - def __init__( - self, - outpoint: Optional[COutPoint] = None, - scriptSig: bytes = b"", - nSequence: int = 0, - ): - if outpoint is None: - self.prevout = COutPoint() - else: - self.prevout = outpoint - self.scriptSig = scriptSig - self.nSequence = nSequence - - def deserialize(self, f: Readable) -> None: - self.prevout = COutPoint() - self.prevout.deserialize(f) - self.scriptSig = deser_string(f) - self.nSequence = struct.unpack(" bytes: - r = b"" - r += self.prevout.serialize() - r += ser_string(self.scriptSig) - r += struct.pack(" str: - return "CTxIn(prevout=%s scriptSig=%s nSequence=%i)" \ - % (repr(self.prevout), self.scriptSig.hex(), - self.nSequence) - - -def is_p2sh(script: bytes) -> bool: - return len(script) == 23 and script[0] == 0xa9 and script[1] == 0x14 and script[22] == 0x87 - - -def is_p2pkh(script: bytes) -> bool: - return (len(script) == 25 and - script[0] == 0x76 and - script[1] == 0xa9 and - script[2] == 0x14 and - script[23] == 0x88 and - script[24] == 0xac) - - -def is_p2pk(script: bytes) -> bool: - return ((len(script) == 35 or len(script) == 67) and - (script[0] == 0x21 or script[0] == 0x41) and - script[-1] == 0xac) - - -def is_witness(script: bytes) -> Tuple[bool, int, bytes]: - if len(script) < 4 or len(script) > 42: - return False, 0, b"" - - if script[0] != 0 and (script[0] < 81 or script[0] > 96): - return False, 0, b"" - - if script[1] + 2 == len(script): - return True, script[0] - 0x50 if script[0] else 0, script[2:] - - return False, 0, b"" - - -def is_p2wpkh(script: bytes) -> bool: - is_wit, wit_ver, wit_prog = is_witness(script) - if not is_wit: - return False - elif wit_ver != 0: - return False - return len(wit_prog) == 20 - - -def is_p2wsh(script: bytes) -> bool: - is_wit, wit_ver, wit_prog = is_witness(script) - if not is_wit: - return False - elif wit_ver != 0: - return False - return len(wit_prog) == 32 - - -class CTxOut(object): - def __init__(self, nValue: int = 0, scriptPubKey: bytes = b""): - self.nValue = nValue - self.scriptPubKey = scriptPubKey - - def deserialize(self, f: Readable) -> None: - self.nValue = struct.unpack(" bytes: - r = b"" - r += struct.pack(" bool: - return is_p2sh(self.scriptPubKey) - - def is_p2pkh(self) -> bool: - return is_p2pkh(self.scriptPubKey) - - def is_p2pk(self) -> bool: - return is_p2pk(self.scriptPubKey) - - def is_witness(self) -> Tuple[bool, int, bytes]: - return is_witness(self.scriptPubKey) - - def __repr__(self) -> str: - return "CTxOut(nValue=%i.%08i scriptPubKey=%s)" \ - % (self.nValue, self.nValue, self.scriptPubKey.hex()) - - -class CScriptWitness(object): - def __init__(self) -> None: - # stack is a vector of strings - self.stack: List[bytes] = [] - - def __repr__(self) -> str: - return "CScriptWitness(%s)" % \ - (",".join([x.hex() for x in self.stack])) - - def is_null(self) -> bool: - if self.stack: - return False - return True - - -class CTxInWitness(object): - def __init__(self) -> None: - self.scriptWitness = CScriptWitness() - - def deserialize(self, f: Readable) -> None: - self.scriptWitness.stack = deser_string_vector(f) - - def serialize(self) -> bytes: - return ser_string_vector(self.scriptWitness.stack) - - def __repr__(self) -> str: - return repr(self.scriptWitness) - - def is_null(self) -> bool: - return self.scriptWitness.is_null() - - -class CTxWitness(object): - def __init__(self) -> None: - self.vtxinwit: List[CTxInWitness] = [] - - def deserialize(self, f: Readable) -> None: - for i in range(len(self.vtxinwit)): - self.vtxinwit[i].deserialize(f) - - def serialize(self) -> bytes: - r = b"" - # This is different than the usual vector serialization -- - # we omit the length of the vector, which is required to be - # the same length as the transaction's vin vector. - for x in self.vtxinwit: - r += x.serialize() - return r - - def __repr__(self) -> str: - return "CTxWitness(%s)" % \ - (';'.join([repr(x) for x in self.vtxinwit])) - - def is_null(self) -> bool: - for x in self.vtxinwit: - if not x.is_null(): - return False - return True - - -class CTransaction(object): - def __init__(self, tx: Optional['CTransaction'] = None) -> None: - if tx is None: - self.nVersion = 1 - self.vin: List[CTxIn] = [] - self.vout: List[CTxOut] = [] - self.wit = CTxWitness() - self.nLockTime = 0 - self.sha256: Optional[int] = None - self.hash: Optional[str] = None - else: - self.nVersion = tx.nVersion - self.vin = copy.deepcopy(tx.vin) - self.vout = copy.deepcopy(tx.vout) - self.nLockTime = tx.nLockTime - self.sha256 = tx.sha256 - self.hash = tx.hash - self.wit = copy.deepcopy(tx.wit) - - def deserialize(self, f: Readable) -> None: - self.nVersion = struct.unpack(" bytes: - r = b"" - r += struct.pack(" bytes: - flags = 0 - if not self.wit.is_null(): - flags |= 1 - r = b"" - r += struct.pack(" bytes: - return self.serialize_without_witness() - - # Recalculate the txid (transaction hash without witness) - def rehash(self) -> None: - self.sha256 = None - self.calc_sha256() - - # We will only cache the serialization without witness in - # self.sha256 and self.hash -- those are expected to be the txid. - def calc_sha256(self, with_witness: bool = False) -> Optional[int]: - if with_witness: - # Don't cache the result, just return it - return uint256_from_str(hash256(self.serialize_with_witness())) - - if self.sha256 is None: - self.sha256 = uint256_from_str(hash256(self.serialize_without_witness())) - self.hash = hash256(self.serialize())[::-1].hex() - return None - - def is_null(self) -> bool: - return len(self.vin) == 0 and len(self.vout) == 0 - - @classmethod - def from_bytes(cls, b: bytes): - tx = cls() - tx.deserialize(BytesIO(b)) - - return tx - - def __repr__(self) -> str: - return "CTransaction(nVersion=%i vin=%s vout=%s wit=%s nLockTime=%i)" \ - % (self.nVersion, repr(self.vin), repr(self.vout), repr(self.wit), self.nLockTime) diff --git a/tests-legacy/bitcoin_client/utils.py b/tests-legacy/bitcoin_client/utils.py deleted file mode 100644 index 1027127db..000000000 --- a/tests-legacy/bitcoin_client/utils.py +++ /dev/null @@ -1,55 +0,0 @@ -from typing import Tuple, Iterator - - -MAX_APDU_LEN: int = 255 - - -def chunkify(data: bytes, chunk_len: int) -> Iterator[Tuple[bool, bytes]]: - """Split `data` into chunk of length `chunk_len`.`""" - size: int = len(data) - - if size <= chunk_len: - yield True, data - return - - chunk: int = size // chunk_len - remaining: int = size % chunk_len - offset: int = 0 - - for i in range(chunk): - yield False, data[offset:offset + chunk_len] - offset += chunk_len - - if remaining: - yield True, data[offset:] - - -def deser_trusted_input(trusted_input: bytes - ) -> Tuple[int, int, bytes, bytes, int, int, bytes]: - """Deserialize trusted input into 7 items.""" - assert len(trusted_input) == 56 - - offset: int = 0 - magic_trusted_input: int = trusted_input[offset] - assert magic_trusted_input == 0x32 - offset += 1 - zero: int = trusted_input[offset] - assert zero == 0x00 - offset += 1 - random: bytes = trusted_input[offset:offset + 2] - offset += 2 - prev_txid: bytes = trusted_input[offset:offset + 32] - offset += 32 - out_index: int = int.from_bytes(trusted_input[offset:offset + 4], - byteorder="little") - offset += 4 - amount: int = int.from_bytes(trusted_input[offset:offset + 8], - byteorder="little") - offset += 8 - hmac: bytes = trusted_input[offset:offset + 8] - offset += 8 - - assert offset == len(trusted_input) - - return (magic_trusted_input, zero, random, - prev_txid, out_index, amount, hmac) diff --git a/tests-legacy/clean_tests.sh b/tests-legacy/clean_tests.sh deleted file mode 100755 index 83b9187b3..000000000 --- a/tests-legacy/clean_tests.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -rm -rf bitcoin-bin -rm -rf bitcoin-testnet-bin diff --git a/tests-legacy/conftest.py b/tests-legacy/conftest.py deleted file mode 100644 index c9d55113e..000000000 --- a/tests-legacy/conftest.py +++ /dev/null @@ -1,92 +0,0 @@ -import subprocess -import os -import socket -import time -import logging -import pytest - -from ledgercomm import Transport - -from bitcoin_client.bitcoin_cmd import BitcoinCommand - - -logging.basicConfig(level=logging.INFO) - - -def pytest_addoption(parser): - parser.addoption("--hid", - action="store_true") - - -@pytest.fixture -def hid(pytestconfig): - return pytestconfig.getoption("hid") - - -@pytest.fixture -def device(request, hid): - # If running on real hardware, nothing to do here - if hid: - yield - return - - # Gets the speculos executable from the SPECULOS environment variable, - # or hopes that "speculos.py" is in the $PATH if not set - speculos_executable = os.environ.get("SPECULOS", "speculos.py") - - lib_path = "./bitcoin-bin/app.elf" - if os.path.isfile(lib_path): - print("Bitcoin app running with library") - lib_arg = ["-l", f"Bitcoin:{lib_path}"] - else: - print("Bitcoin app running as native application") - lib_arg = [] - - base_args = [ - speculos_executable, "./bitcoin-testnet-bin/app.elf", - *lib_arg, - "--sdk", "2.0", - "--display", "headless" - ] - - # Look for the automation_file attribute in the test function, if present - try: - automation_args = ["--automation", f"file:{request.function.automation_file}"] - except AttributeError: - automation_args = [] - - speculos_proc = subprocess.Popen([*base_args, *automation_args]) - - # Attempts to connect to speculos to make sure that it's ready when the test starts - for _ in range(100): - try: - socket.create_connection(("127.0.0.1", 9999), timeout=1.0) - connected = True - break - except ConnectionRefusedError: - time.sleep(0.1) - connected = False - - if not connected: - raise RuntimeError("Unable to connect to speculos.") - - yield - - speculos_proc.terminate() - speculos_proc.wait() - - -@pytest.fixture -def transport(device, hid): - transport = (Transport(interface="hid", debug=True) - if hid else Transport(interface="tcp", - server="127.0.0.1", - port=9999, - debug=True)) - yield transport - transport.close() - - -@pytest.fixture -def cmd(transport): - return BitcoinCommand(transport=transport, debug=False) diff --git a/tests-legacy/data/many-to-many/p2pkh/apdu_debug.log b/tests-legacy/data/many-to-many/p2pkh/apdu_debug.log deleted file mode 100644 index ac5e51b09..000000000 --- a/tests-legacy/data/many-to-many/p2pkh/apdu_debug.log +++ /dev/null @@ -1,446 +0,0 @@ -New APDU received: -E0C4000000 -New APDU received: -F026000000 -New APDU received: -E0C4000000 -New APDU received: -E024000000 -New APDU received: -E02280000130 -New APDU received: -E04000000100 -pin ok -Using private component -34AC5D784EBB4DF4727BCDDF6A6743F5D5D46D83DD74AA825866390C694F2938 -To hash -0251EC84E33A3119486461A44240E906FF94BF40CF807B025B1CA43332B80DC9DB -Hash160 -F5ACC2FD5C60B7263C4A459541C1473BC29E58F4 -Checksum -A21FB2F3 -Length to encode 25 -To encode -6FF5ACC2FD5C60B7263C4A459541C1473BC29E58F4A21FB2F3 -Length encoded 34 -Encoded -6E3375786F6B3843337A566277476A72584476344E544E516A313865335A4D4A426B -Length 34 -New APDU received: -E0400000050180000000 -pin ok -Using private component -C71AE2E616FBCCC325A71600E9C82816505A6373EFCE4CAEDA60400667E0B75C -To hash -02E5646066C2C51CEAEA66F04EC85858D34E2BD285F4A60B1402BFC03CF462E767 -Hash160 -7D825341D36FC1297A41A9839A72975815B1FE61 -Checksum -E01B4FD2 -Length to encode 25 -To encode -6F7D825341D36FC1297A41A9839A72975815B1FE61E01B4FD2 -Length encoded 34 -Encoded -6D727861744272776D555959504E774E4879334A5461567350474750716A4A68674D -Length 34 -New APDU received: -E040000009028000002C80000001 -pin ok -Using private component -D0A20FEE4287C3C34ED5C30030FED4E87A6D4A86C87F8281091482BE76E266AD -To hash -03AC9DC20F0C2E9483FBDF9060E8154A19E38B1A886E0883B1E5E7C5582D56A638 -Hash160 -7CAC5506C90EF8E1F7D8928BDC0E3DC0DA4CD714 -Checksum -0EE9DF4F -Length to encode 25 -To encode -6F7CAC5506C90EF8E1F7D8928BDC0E3DC0DA4CD7140EE9DF4F -Length encoded 34 -Encoded -6D727441586771544634423463736770507972663639336455374C3256766A5A787A -Length 34 -New APDU received: -E04000000D038000002C8000000180000000 -pin ok -Using private component -F2D80B9A6B840D409622DB675EE45A2ED8051029D298F847AA8905BEC7967453 -To hash -03E84C7F4B7662FAED9F5EB2D812D9B7BCF0E0BF2A33B17AC45E38B8459669C321 -Hash160 -0812D36245DAC14478722DB30D66285EB115661A -Checksum -E53861E3 -Length to encode 25 -To encode -6F0812D36245DAC14478722DB30D66285EB115661AE53861E3 -Length encoded 34 -Encoded -6D6746654664344D42345A6B566257644647546156356956693369426668775A617A -Length 34 -New APDU received: -E0C4000000 -New APDU received: -E042000009000000000200000001 -Init transaction parser ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH FULL: -01 -Number of inputs : 1 -Process input -New APDU received: -E042800025F4C2B478DC9CEA2DF43C8BB94938FF43F3BED5AEB3AF9E36CDB7016104626BF2000000006B -Process input ---- ADD TO HASH FULL: -F4C2B478DC9CEA2DF43C8BB94938FF43F3BED5AEB3AF9E36CDB7016104626BF200000000 ---- ADD TO HASH FULL: -6B -Script to read 107 -Process input script, remaining 107 -New APDU received: -E04280006F483045022100B7B8244B3F83648397FA3C37349ED1827BF40BFCA22D4F87CC019D3FDED63E1D02205434CE222DE35E04AB98BE54AF57D2C8B464F0DA76A0275443B33C7B1DF79344012103462F1E48396CE2A4D7694D107FEF5123FE4D1E394394A370FA4901E744B4884EFDFFFFFF -Process input script, remaining 107 ---- ADD TO HASH FULL: -483045022100B7B8244B3F83648397FA3C37349ED1827BF40BFCA22D4F87CC019D3FDED63E1D02205434CE222DE35E04AB98BE54AF57D2C8B464F0DA76A0275443B33C7B1DF79344012103462F1E48396CE2A4D7694D107FEF5123FE4D1E394394A370FA4901E744B488 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -4E ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done -New APDU received: -E04280000102 -Input hashing done ---- ADD TO HASH FULL: -02 -Number of outputs : 2 -New APDU received: -E042800009DCDB06000000000019 ---- ADD TO HASH FULL: -DCDB060000000000 ---- ADD TO HASH FULL: -19 -Script to read 25 -Process output script, remaining 25 -New APDU received: -E04280001976A914B242BA04B8526B533B17B168D27EAF0DA7BACB8588AC -Process output script, remaining 25 ---- ADD TO HASH FULL: -76A914B242BA04B8526B533B17B168D27EAF0DA7BACB8588AC -Process output script, remaining 0 -New APDU received: -E042800009706408000000000019 -Process output script, remaining 0 ---- ADD TO HASH FULL: -7064080000000000 ---- ADD TO HASH FULL: -19 -Script to read 25 -Process output script, remaining 25 -New APDU received: -E04280001976A91426C680EC6AC9C0ED760177F92096F1C5571B72EF88AC -Process output script, remaining 25 ---- ADD TO HASH FULL: -76A91426C680EC6AC9C0ED760177F92096F1C5571B72EF88AC -Process output script, remaining 0 -New APDU received: -E04280000420041D00 -Process output script, remaining 0 -Output hashing done ---- ADD TO HASH FULL: -20041D00 -Transaction parsed -New APDU received: -E042000009000000010200000001 -Init transaction parser ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH FULL: -01 -Number of inputs : 1 -Process input -New APDU received: -E0428000255DF7B9E20C52D1DA2701A244A49754215266F016F6BD77F640A5200CD1FB7E34010000006B -Process input ---- ADD TO HASH FULL: -5DF7B9E20C52D1DA2701A244A49754215266F016F6BD77F640A5200CD1FB7E3401000000 ---- ADD TO HASH FULL: -6B -Script to read 107 -Process input script, remaining 107 -New APDU received: -E04280006F483045022100C806957429935C5D61F548223C3536DC739FE351814BCE9EDC1694E5A5C25ABF022013E307B0B4885ACB64CCFFAF5F4794F205040325EBC36C258787C488B038C2BB0121038BA462D7DD65917ECE454142903BB362A0B412D1841D52087AD881646B6CDCCFFDFFFFFF -Process input script, remaining 107 ---- ADD TO HASH FULL: -483045022100C806957429935C5D61F548223C3536DC739FE351814BCE9EDC1694E5A5C25ABF022013E307B0B4885ACB64CCFFAF5F4794F205040325EBC36C258787C488B038C2BB0121038BA462D7DD65917ECE454142903BB362A0B412D1841D52087AD881646B6CDC -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -CF ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done -New APDU received: -E04280000102 -Input hashing done ---- ADD TO HASH FULL: -02 -Number of outputs : 2 -New APDU received: -E042800009140C03000000000019 ---- ADD TO HASH FULL: -140C030000000000 ---- ADD TO HASH FULL: -19 -Script to read 25 -Process output script, remaining 25 -New APDU received: -E04280001976A914B3E17C4DEF8A39148ED6FAD7DC6FEBE30DD324CB88AC -Process output script, remaining 25 ---- ADD TO HASH FULL: -76A914B3E17C4DEF8A39148ED6FAD7DC6FEBE30DD324CB88AC -Process output script, remaining 0 -New APDU received: -E042800009305705000000000019 -Process output script, remaining 0 ---- ADD TO HASH FULL: -3057050000000000 ---- ADD TO HASH FULL: -19 -Script to read 25 -Process output script, remaining 25 -New APDU received: -E04280001976A914E0A89380635F18B7EE09546D963232BCB992412B88AC -Process output script, remaining 25 ---- ADD TO HASH FULL: -76A914E0A89380635F18B7EE09546D963232BCB992412B88AC -Process output script, remaining 0 -New APDU received: -E042800004FE041D00 -Process output script, remaining 0 -Output hashing done ---- ADD TO HASH FULL: -FE041D00 -Transaction parsed -New APDU received: -E02601000101 -New APDU received: -E0440000050200000002 -Init transaction parser ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH AUTH: -02000000 ---- ADD TO HASH FULL: -02 ---- ADD TO HASH AUTH: -02 -Number of inputs : 2 -Process input -New APDU received: -E04480003B013832005E0D5DF7B9E20C52D1DA2701A244A49754215266F016F6BD77F640A5200CD1FB7E3400000000DCDB060000000000D9A1FF455D570FF519 -Process input -====> Input HMAC: D9A1FF455D570FF5 -====> Computed HMAC: D9A1FF455D570FF5 -Trusted input hash -5DF7B9E20C52D1DA2701A244A49754215266F016F6BD77F640A5200CD1FB7E3400000000 ---- ADD TO HASH FULL: -5DF7B9E20C52D1DA2701A244A49754215266F016F6BD77F640A5200CD1FB7E3400000000 ---- ADD TO HASH AUTH: -5DF7B9E20C52D1DA2701A244A49754215266F016F6BD77F640A5200CD1FB7E3400000000 -Adding amount -DCDB060000000000 -New amount -000000000006DBDC ---- ADD TO HASH FULL: -19 -Script to read 25 -Process input script, remaining 25 -New APDU received: -E04480001D76A914B242BA04B8526B533B17B168D27EAF0DA7BACB8588ACFDFFFFFF -Process input script, remaining 25 ---- ADD TO HASH FULL: -76A914B242BA04B8526B533B17B168D27EAF0DA7BACB8588 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -AC ---- ADD TO HASH FULL: -FDFFFFFF ---- ADD TO HASH AUTH: -FDFFFFFF -Process input -New APDU received: -E04480003B01383200BA0857F891351E60E944718F1DF12B4F77B642CC63146184BEDC6C7BC64A0C0B39DE010000003057050000000000124EAC0C193C39F400 -Process input -====> Input HMAC: 124EAC0C193C39F4 -====> Computed HMAC: 124EAC0C193C39F4 -Trusted input hash -57F891351E60E944718F1DF12B4F77B642CC63146184BEDC6C7BC64A0C0B39DE01000000 ---- ADD TO HASH FULL: -57F891351E60E944718F1DF12B4F77B642CC63146184BEDC6C7BC64A0C0B39DE01000000 ---- ADD TO HASH AUTH: -57F891351E60E944718F1DF12B4F77B642CC63146184BEDC6C7BC64A0C0B39DE01000000 -Adding amount -3057050000000000 -New amount -00000000000C330C ---- ADD TO HASH FULL: -00 -Script to read 0 -Process input script, remaining 0 -New APDU received: -E044800004FDFFFFFF -Process input script, remaining 0 ---- ADD TO HASH FULL: -FDFFFFFF ---- ADD TO HASH AUTH: -FDFFFFFF -Process input -Input hashing done -Presign ready -New APDU received: -E04AFF0015058000002C80000001800000000000000100000002 -state=1 -Using private component -B35419B8D5EE1629A70718308955F5E8B736EC0C843FB2BEDB94940A29ADC18C -New APDU received: -E04A000032025C900400000000001976A914D8BB03D84A3AA993AE6DB1114488488DAB43D6DB88AC20A10700000000001976A914CBAE5B -state=1 ---- ADD TO HASH FULL: -025C900400000000001976A914D8BB03D84A3AA993AE6DB1114488488DAB43D6DB88AC20A10700000000001976A914CBAE5B ---- ADD TO HASH AUTH: -025C900400000000001976A914D8BB03D84A3AA993AE6DB1114488488DAB43D6DB88AC20A10700000000001976A914CBAE5B -New APDU received: -E04A80001350CF939E6F531B8A6B7ABD788FE14B029788AC -state=2 ---- ADD TO HASH FULL: -50CF939E6F531B8A6B7ABD788FE14B029788AC ---- ADD TO HASH AUTH: -50CF939E6F531B8A6B7ABD788FE14B029788AC -Checksum -21F8E07E -Length to encode 25 -To encode -6FCBAE5B50CF939E6F531B8A6B7ABD788FE14B029721F8E07E -Length encoded 34 -Encoded -6D7A35764C57644D3177485647536D58556B684B56765A624A32673465704D58536D -New APDU received: -E04800001B058000002C8000000180000000000000010000000000001D04D901 ---- ADD TO HASH FULL: -D9041D0001000000 -Using private component -AAEAB6598E3F057858A97DBDC8E9291F6EBECBB5D5D68BE0F83B623BA6EA3471 -Hash1 -B7DC3C28B80673141EFF6523DEFC02C054F7E6F8B7D977FB4490BBAEA2613E23 -Hash2 -C16F948104A1637627CD46DDB28D454C65A58B497D725A30081074BC632DD0A7 -New APDU received: -E0440080050200000002 -Init transaction parser ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH AUTH: -02000000 ---- ADD TO HASH FULL: -02 ---- ADD TO HASH AUTH: -02 -Number of inputs : 2 -Process input -New APDU received: -E04480003B013832005E0D5DF7B9E20C52D1DA2701A244A49754215266F016F6BD77F640A5200CD1FB7E3400000000DCDB060000000000D9A1FF455D570FF500 -Process input -====> Input HMAC: D9A1FF455D570FF5 -====> Computed HMAC: D9A1FF455D570FF5 -Trusted input hash -5DF7B9E20C52D1DA2701A244A49754215266F016F6BD77F640A5200CD1FB7E3400000000 ---- ADD TO HASH FULL: -5DF7B9E20C52D1DA2701A244A49754215266F016F6BD77F640A5200CD1FB7E3400000000 ---- ADD TO HASH AUTH: -5DF7B9E20C52D1DA2701A244A49754215266F016F6BD77F640A5200CD1FB7E3400000000 -Adding amount -DCDB060000000000 -New amount -000000000006DBDC ---- ADD TO HASH FULL: -00 -Script to read 0 -Process input script, remaining 0 -New APDU received: -E044800004FDFFFFFF -Process input script, remaining 0 ---- ADD TO HASH FULL: -FDFFFFFF ---- ADD TO HASH AUTH: -FDFFFFFF -Process input -New APDU received: -E04480003B01383200BA0857F891351E60E944718F1DF12B4F77B642CC63146184BEDC6C7BC64A0C0B39DE010000003057050000000000124EAC0C193C39F419 -Process input -====> Input HMAC: 124EAC0C193C39F4 -====> Computed HMAC: 124EAC0C193C39F4 -Trusted input hash -57F891351E60E944718F1DF12B4F77B642CC63146184BEDC6C7BC64A0C0B39DE01000000 ---- ADD TO HASH FULL: -57F891351E60E944718F1DF12B4F77B642CC63146184BEDC6C7BC64A0C0B39DE01000000 ---- ADD TO HASH AUTH: -57F891351E60E944718F1DF12B4F77B642CC63146184BEDC6C7BC64A0C0B39DE01000000 -Adding amount -3057050000000000 -New amount -00000000000C330C ---- ADD TO HASH FULL: -19 -Script to read 25 -Process input script, remaining 25 -New APDU received: -E04480001D76A914E0A89380635F18B7EE09546D963232BCB992412B88ACFDFFFFFF -Process input script, remaining 25 ---- ADD TO HASH FULL: -76A914E0A89380635F18B7EE09546D963232BCB992412B88 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -AC ---- ADD TO HASH FULL: -FDFFFFFF ---- ADD TO HASH AUTH: -FDFFFFFF -Process input -Input hashing done -Presign ready -New APDU received: -E04AFF0015058000002C80000001800000000000000100000002 -state=1 -New APDU received: -E04A000032025C900400000000001976A914D8BB03D84A3AA993AE6DB1114488488DAB43D6DB88AC20A10700000000001976A914CBAE5B -state=1 ---- ADD TO HASH FULL: -025C900400000000001976A914D8BB03D84A3AA993AE6DB1114488488DAB43D6DB88AC20A10700000000001976A914CBAE5B ---- ADD TO HASH AUTH: -025C900400000000001976A914D8BB03D84A3AA993AE6DB1114488488DAB43D6DB88AC20A10700000000001976A914CBAE5B -New APDU received: -E04A80001350CF939E6F531B8A6B7ABD788FE14B029788AC -state=1 ---- ADD TO HASH FULL: -50CF939E6F531B8A6B7ABD788FE14B029788AC ---- ADD TO HASH AUTH: -50CF939E6F531B8A6B7ABD788FE14B029788AC -New APDU received: -E04800001B058000002C8000000180000000000000000000000300001D04D901 ---- ADD TO HASH FULL: -D9041D0001000000 -Using private component -BC8CF06B27565698FBD1BEE909B761B17AF6D137D2CAA6ECEA6D45FC60C0DD5A -Hash1 -357754D0F6F0755BBAB62C6567F70A85A46AB5C4C7EE43CE52931B15E9837D69 -Hash2 -3C34D939F56D25E9636E1584D31C6D7E315F5BB28BD6071220978F3B10BD27B0 diff --git a/tests-legacy/data/many-to-many/p2pkh/tx.json b/tests-legacy/data/many-to-many/p2pkh/tx.json deleted file mode 100644 index ce38b5b4d..000000000 --- a/tests-legacy/data/many-to-many/p2pkh/tx.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "txid": "6eb7ece9e847574ca460414b6c2db535cec29ba803cd79d2c0718bd66c289fba", - "raw": "02000000025df7b9e20c52d1da2701a244a49754215266f016f6bd77f640a5200cd1fb7e34000000006a4730440220186ec195f04cfedc62d6d383a855e4b0fec550efedd22c177d2031b293556c16022039f05b1b8cc40c48d07323fdf3cc0453909d54409551c7ddc259210b2862bc54012103ed3cf038f00b7ad1c3998e66cf22a688ab5dbaed8400784cbf962d54cd42c2bffdffffff57f891351e60e944718f1df12b4f77b642cc63146184bedc6c7bc64a0c0b39de010000006a47304402201592969826e01baba12c9833584e0e958c1562736192bd1264d079383e8f277902204d5aafb9566a6de419b9446536ccce62f750361530d2a8f9a3bbc5e47af685900121035879ca173a9c1b3f300ec587fb4cc6d54d618e30584e425c1b53b98828708f1dfdffffff025c900400000000001976a914d8bb03d84a3aa993ae6db1114488488dab43d6db88ac20a10700000000001976a914cbae5b50cf939e6f531b8a6b7abd788fe14b029788acd9041d00", - "amount": 500000, - "fees": 400, - "to": "mz5vLWdM1wHVGSmXUkhKVvZbJ2g4epMXSm", - "sign_paths": ["m/84'/1'/0'/1/0", "m/84'/1'/0'/0/3"], - "change_path": "m/84'/1'/0'/1/2", - "lock_time": 1901785, - "utxos": [ - { - "txid": "347efbd10c20a540f677bdf616f06652215497a444a20127dad1520ce2b9f75d", - "raw": "0200000001f4c2b478dc9cea2df43c8bb94938ff43f3bed5aeb3af9e36cdb7016104626bf2000000006b483045022100b7b8244b3f83648397fa3c37349ed1827bf40bfca22d4f87cc019d3fded63e1d02205434ce222de35e04ab98be54af57d2c8b464f0da76a0275443b33c7b1df79344012103462f1e48396ce2a4d7694d107fef5123fe4d1e394394a370fa4901e744b4884efdffffff02dcdb0600000000001976a914b242ba04b8526b533b17b168d27eaf0da7bacb8588ac70640800000000001976a91426c680ec6ac9c0ed760177f92096f1c5571b72ef88ac20041d00", - "output_indexes": [0], - "output_amounts": [449500] - }, - { - "txid": "de390b0c4ac67b6cdcbe84611463cc42b6774f2bf11d8f7144e9601e3591f857", - "raw": "02000000015df7b9e20c52d1da2701a244a49754215266f016f6bd77f640a5200cd1fb7e34010000006b483045022100c806957429935c5d61f548223c3536dc739fe351814bce9edc1694e5a5c25abf022013e307b0b4885acb64ccffaf5f4794f205040325ebc36c258787c488b038c2bb0121038ba462d7dd65917ece454142903bb362a0b412d1841d52087ad881646b6cdccffdffffff02140c0300000000001976a914b3e17c4def8a39148ed6fad7dc6febe30dd324cb88ac30570500000000001976a914e0a89380635f18b7ee09546d963232bcb992412b88acfe041d00", - "output_indexes": [1], - "output_amounts": [350000] - } - ] - -} diff --git a/tests-legacy/data/many-to-many/p2sh-p2wpkh/apdu_debug.log b/tests-legacy/data/many-to-many/p2sh-p2wpkh/apdu_debug.log deleted file mode 100644 index 053cd54d8..000000000 --- a/tests-legacy/data/many-to-many/p2sh-p2wpkh/apdu_debug.log +++ /dev/null @@ -1,359 +0,0 @@ -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E042000009000000000200000001 -Init transaction parser ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH FULL: -01 -Number of inputs : 1 -Process input -New APDU received: -E042800025C3945B596FD88FD0D3031A2DF8963A68ADF9E9F0DFEF4F3C4DD72DF7D80777AE0000000017 -Process input ---- ADD TO HASH FULL: -C3945B596FD88FD0D3031A2DF8963A68ADF9E9F0DFEF4F3C4DD72DF7D80777AE00000000 ---- ADD TO HASH FULL: -17 -Script to read 23 -Process input script, remaining 23 -New APDU received: -E04280001B16001485D33A279D6AE91E59E0C43DE832FD4C3398252DFDFFFFFF -Process input script, remaining 23 ---- ADD TO HASH FULL: -16001485D33A279D6AE91E59E0C43DE832FD4C339825 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -2D ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done -New APDU received: -E04280000102 -Input hashing done ---- ADD TO HASH FULL: -02 -Number of outputs : 2 -New APDU received: -E042800009909F07000000000017 ---- ADD TO HASH FULL: -909F070000000000 ---- ADD TO HASH FULL: -17 -Script to read 23 -Process output script, remaining 23 -New APDU received: -E042800017A914F0464D9FA0EA42D80E4D5F1457883982E23B8EEC87 -Process output script, remaining 23 ---- ADD TO HASH FULL: -A914F0464D9FA0EA42D80E4D5F1457883982E23B8EEC87 -Process output script, remaining 0 -New APDU received: -E04280000920A107000000000017 -Process output script, remaining 0 ---- ADD TO HASH FULL: -20A1070000000000 ---- ADD TO HASH FULL: -17 -Script to read 23 -Process output script, remaining 23 -New APDU received: -E042800017A91423E6F63C476F49E8ACF6AA583A0FDEC7B8ACA64587 -Process output script, remaining 23 ---- ADD TO HASH FULL: -A91423E6F63C476F49E8ACF6AA583A0FDEC7B8ACA64587 -Process output script, remaining 0 -New APDU received: -E04280000400041D00 -Process output script, remaining 0 -Output hashing done ---- ADD TO HASH FULL: -00041D00 -Transaction parsed -New APDU received: -E042000009000000010200000001 -Init transaction parser ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH FULL: -01 -Number of inputs : 1 -Process input -New APDU received: -E042800025C3945B596FD88FD0D3031A2DF8963A68ADF9E9F0DFEF4F3C4DD72DF7D80777AE0000000017 -Process input ---- ADD TO HASH FULL: -C3945B596FD88FD0D3031A2DF8963A68ADF9E9F0DFEF4F3C4DD72DF7D80777AE00000000 ---- ADD TO HASH FULL: -17 -Script to read 23 -Process input script, remaining 23 -New APDU received: -E04280001B16001485D33A279D6AE91E59E0C43DE832FD4C3398252DFDFFFFFF -Process input script, remaining 23 ---- ADD TO HASH FULL: -16001485D33A279D6AE91E59E0C43DE832FD4C339825 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -2D ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done -New APDU received: -E04280000102 -Input hashing done ---- ADD TO HASH FULL: -02 -Number of outputs : 2 -New APDU received: -E042800009909F07000000000017 ---- ADD TO HASH FULL: -909F070000000000 ---- ADD TO HASH FULL: -17 -Script to read 23 -Process output script, remaining 23 -New APDU received: -E042800017A914F0464D9FA0EA42D80E4D5F1457883982E23B8EEC87 -Process output script, remaining 23 ---- ADD TO HASH FULL: -A914F0464D9FA0EA42D80E4D5F1457883982E23B8EEC87 -Process output script, remaining 0 -New APDU received: -E04280000920A107000000000017 -Process output script, remaining 0 ---- ADD TO HASH FULL: -20A1070000000000 ---- ADD TO HASH FULL: -17 -Script to read 23 -Process output script, remaining 23 -New APDU received: -E042800017A91423E6F63C476F49E8ACF6AA583A0FDEC7B8ACA64587 -Process output script, remaining 23 ---- ADD TO HASH FULL: -A91423E6F63C476F49E8ACF6AA583A0FDEC7B8ACA64587 -Process output script, remaining 0 -New APDU received: -E04280000400041D00 -Process output script, remaining 0 -Output hashing done ---- ADD TO HASH FULL: -00041D00 -Transaction parsed -New APDU received: -E02601000101 -New APDU received: -E0440002050200000002 -Init transaction parser -Number of inputs : 2 -Process input -New APDU received: -E04480003B01383200F97C53D3C0B27291BFFBF09D6EF5BD4F6051ED911914F55BEF0E3315B258BB13108900000000909F07000000000045E1BEBC7832647019 -Process input -Trusted input used in segwit mode -====> Input HMAC: 45E1BEBC78326470 -====> Computed HMAC: 45E1BEBC78326470 -Adding amount -909F070000000000 -New amount -0000000000079F90 -Script to read 25 -Process input script, remaining 25 -New APDU received: -E04480001D76A914CB078087EFF485AAA2260E94A53D7D6D1C5DD15188ACFDFFFFFF -Process input script, remaining 25 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -FDFFFFFF -Process input -New APDU received: -E04480003B01383200F2B153D3C0B27291BFFBF09D6EF5BD4F6051ED911914F55BEF0E3315B258BB1310890100000020A10700000000005B710DFE9F3F308D00 -Process input -Trusted input used in segwit mode -====> Input HMAC: 5B710DFE9F3F308D -====> Computed HMAC: 5B710DFE9F3F308D -Adding amount -20A1070000000000 -New amount -00000000000F40B0 -Script to read 0 -Process input script, remaining 0 -New APDU received: -E044800004FDFFFFFF -Process input script, remaining 0 ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done ---- ADD TO HASH FULL: -82D397CBBCFF87BC5D0C4C70E424F9B830EFBAD7BF0BE479DA5D1D1BAFDB9798 -hashPrevout -4E7FBD6CBE534923DBDC2E194612F7040271013133C736C5AE3DFC0CF1034370 -hashSequence -957879FDCE4D8AB885E32FF307D54E75884DA52522CC53D3C4FDB60EDB69A098 -Presign ready -New APDU received: -E04AFF0015058000003180000001800000000000000100000001 -state=1 -Using private component -B2E6AA60D0137A93FF51ABE4FCA1512EF016222473B454CA9A4B4B9C8AB8402C -New APDU received: -E04A00003202840A03000000000017A914FFC91A30E33FC6D6ECFF42E4D9BD6C7E115D84988700350C000000000017A9142F5864A8ACD2 -state=1 ---- ADD TO HASH FULL: -840A03000000000017A914FFC91A30E33FC6D6ECFF42E4D9BD6C7E115D84988700350C000000000017A9142F5864A8ACD2 -New APDU received: -E04A80000F3FA85977D73E9AC30FD6B341B78C87 -state=2 ---- ADD TO HASH FULL: -3FA85977D73E9AC30FD6B341B78C87 -hashOutputs -B3B2A31981BCC4F256B0851EBE9D7A11BFBFA8559E7795190B4472D7E1E974C9 -Auth Hash: -E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855 -Checksum -CD4FBEC6 -Length to encode 25 -To encode -C42F5864A8ACD23FA85977D73E9AC30FD6B341B78CCD4FBEC6 -Length encoded 35 -Encoded -324D775A5A6479336243764568695073427963726543466971774468796B4163574E39 -Segwit parsed once -New APDU received: -E0440080050200000001 -Init transaction parser -Resume SegWit hash -SEGWIT Version -02000000 -SEGWIT HashedPrevouts -4E7FBD6CBE534923DBDC2E194612F7040271013133C736C5AE3DFC0CF1034370 -SEGWIT HashedSequence -957879FDCE4D8AB885E32FF307D54E75884DA52522CC53D3C4FDB60EDB69A098 ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH FULL: -4E7FBD6CBE534923DBDC2E194612F7040271013133C736C5AE3DFC0CF1034370 ---- ADD TO HASH FULL: -957879FDCE4D8AB885E32FF307D54E75884DA52522CC53D3C4FDB60EDB69A098 ---- ADD TO HASH AUTH: -4E7FBD6CBE534923DBDC2E194612F7040271013133C736C5AE3DFC0CF1034370957879FDCE4D8AB885E32FF307D54E75884DA52522CC53D3C4FDB60EDB69A098B3B2A31981BCC4F256B0851EBE9D7A11BFBFA8559E7795190B4472D7E1E974C9 -Number of inputs : 1 -Process input -New APDU received: -E04480003B01383200F97C53D3C0B27291BFFBF09D6EF5BD4F6051ED911914F55BEF0E3315B258BB13108900000000909F07000000000045E1BEBC7832647019 -Process input -Trusted input used in segwit mode -====> Input HMAC: 45E1BEBC78326470 -====> Computed HMAC: 45E1BEBC78326470 ---- ADD TO HASH FULL: -53D3C0B27291BFFBF09D6EF5BD4F6051ED911914F55BEF0E3315B258BB13108900000000 ---- ADD TO HASH FULL: -19 -Script to read 25 -Process input script, remaining 25 -New APDU received: -E04480001D76A914CB078087EFF485AAA2260E94A53D7D6D1C5DD15188ACFDFFFFFF -Process input script, remaining 25 ---- ADD TO HASH FULL: -76A914CB078087EFF485AAA2260E94A53D7D6D1C5DD15188 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -AC -SEGWIT Add value -909F070000000000 ---- ADD TO HASH FULL: -909F070000000000 ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done -SEGWIT hashedOutputs -B3B2A31981BCC4F256B0851EBE9D7A11BFBFA8559E7795190B4472D7E1E974C9 -Sign ready -New APDU received: -E04800001B05800000318000000180000000000000010000000000001D03D001 ---- ADD TO HASH FULL: -D0031D0001000000 -Using private component -E8AE81F93160D032A7AA82BE9B719499A5DE635639D7237B7AB2572DE86F7E52 -Hash1 -01BB2AB227D2D0978E01A7212F1C7C5BC6FA848A8D46446A8242B3B00A7EF9BC -Hash2 -86B03281CD802D9764FFAB2E1F0E4B6825FA001899924C1DB1674C3A1D51054A -New APDU received: -E0440080050200000001 -Init transaction parser -Resume SegWit hash -SEGWIT Version -02000000 -SEGWIT HashedPrevouts -4E7FBD6CBE534923DBDC2E194612F7040271013133C736C5AE3DFC0CF1034370 -SEGWIT HashedSequence -957879FDCE4D8AB885E32FF307D54E75884DA52522CC53D3C4FDB60EDB69A098 ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH FULL: -4E7FBD6CBE534923DBDC2E194612F7040271013133C736C5AE3DFC0CF1034370 ---- ADD TO HASH FULL: -957879FDCE4D8AB885E32FF307D54E75884DA52522CC53D3C4FDB60EDB69A098 ---- ADD TO HASH AUTH: -4E7FBD6CBE534923DBDC2E194612F7040271013133C736C5AE3DFC0CF1034370957879FDCE4D8AB885E32FF307D54E75884DA52522CC53D3C4FDB60EDB69A098B3B2A31981BCC4F256B0851EBE9D7A11BFBFA8559E7795190B4472D7E1E974C9 -Number of inputs : 1 -Process input -New APDU received: -E04480003B01383200F2B153D3C0B27291BFFBF09D6EF5BD4F6051ED911914F55BEF0E3315B258BB1310890100000020A10700000000005B710DFE9F3F308D19 -Process input -Trusted input used in segwit mode -====> Input HMAC: 5B710DFE9F3F308D -====> Computed HMAC: 5B710DFE9F3F308D ---- ADD TO HASH FULL: -53D3C0B27291BFFBF09D6EF5BD4F6051ED911914F55BEF0E3315B258BB13108901000000 ---- ADD TO HASH FULL: -19 -Script to read 25 -Process input script, remaining 25 -New APDU received: -E04480001D76A9143F8F2B556915A9306FD92EB5AE72217BE9DD593F88ACFDFFFFFF -Process input script, remaining 25 ---- ADD TO HASH FULL: -76A9143F8F2B556915A9306FD92EB5AE72217BE9DD593F88 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -AC -SEGWIT Add value -20A1070000000000 ---- ADD TO HASH FULL: -20A1070000000000 ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done -SEGWIT hashedOutputs -B3B2A31981BCC4F256B0851EBE9D7A11BFBFA8559E7795190B4472D7E1E974C9 -Sign ready -New APDU received: -E04800001B05800000318000000180000000000000000000000200001D03D001 ---- ADD TO HASH FULL: -D0031D0001000000 -Using private component -026553901CCECDDF76396E3B3BB2ACC48E68667FB793AAA239AC233AC99CE546 -Hash1 -FAA127DA08393CA5858E158219974145DB64C9C1F70ECB3E8582D6F562A56351 -Hash2 -D1D43A5549457E532745227067826A917150B060F55264615D077F2BA2AF530D diff --git a/tests-legacy/data/many-to-many/p2sh-p2wpkh/tx.json b/tests-legacy/data/many-to-many/p2sh-p2wpkh/tx.json deleted file mode 100644 index f62e5696d..000000000 --- a/tests-legacy/data/many-to-many/p2sh-p2wpkh/tx.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "txid": "f5ff97147f8c7cca717536325eb157c696ef9630934271905b3f8c564b18e708", - "raw": "0200000000010253d3c0b27291bffbf09d6ef5bd4f6051ed911914f55bef0e3315b258bb1310890000000017160014cb078087eff485aaa2260e94a53d7d6d1c5dd151fdffffff53d3c0b27291bffbf09d6ef5bd4f6051ed911914f55bef0e3315b258bb13108901000000171600143f8f2b556915a9306fd92eb5ae72217be9dd593ffdffffff02840a03000000000017a914ffc91a30e33fc6d6ecff42e4d9bd6c7e115d84988700350c000000000017a9142f5864a8acd23fa85977d73e9ac30fd6b341b78c8702483045022100a0173bbd3dcdfe51c24386fee905b8197f36c2024f582b1a838e7bf09a1ec16902206bcd803041b13738f7d8896561e6a8ccec9a3f5d243be8645c403e83beb19b340121024ba3b77d933de9fa3f9583348c40f3caaf2effad5b6e244ece8abbfcc7244f6702483045022100ac5701f0cc3cb4b490269674d3463c4fab74f6ee9faf7c29b3d0dea22875dd0002206ba4f4195dce69ffd3e7d832ee5d67ee0d037bad03f4e00f841fbf84649375b5012103a1989dadf0bce57f4c96cfc4d9e6aa9abeba7ac0733e99176f69432e852666f1d0031d00", - "amount": 800000, - "fees": 300, - "to": "2MwZZdy3bCvEhiPsBycreCFiqwDhykAcWN9", - "sign_paths": ["m/49'/1'/0'/1/0", "m/49'/1'/0'/0/2"], - "change_path": "m/49'/1'/0'/1/1", - "lock_time": 1901520, - "utxos": [ - { - "txid": "891013bb58b215330eef5bf5141991ed51604fbdf56e9df0fbbf9172b2c0d353", - "raw": "02000000000101c3945b596fd88fd0d3031a2df8963a68adf9e9f0dfef4f3c4dd72df7d80777ae000000001716001485d33a279d6ae91e59e0c43de832fd4c3398252dfdffffff02909f07000000000017a914f0464d9fa0ea42d80e4d5f1457883982e23b8eec8720a107000000000017a91423e6f63c476f49e8acf6aa583a0fdec7b8aca6458702483045022100da88128e41ae9ea8d6c7fe54a32ab89bbd558993924acf7d86e7039675dd3e0002207228d510d4d8e16f77ef5b82af051a6e5bd5f0263e4464984db8be777dfc6387012102549c187d80a2c8d26760d1646b40e3dce3b9e6042579dcdb9fdeee85208ceb7c00041d00", - "output_indexes": [0, 1], - "output_amounts": [499600, 500000] - } - ] - -} diff --git a/tests-legacy/data/many-to-many/p2wpkh/apdu_debug.log b/tests-legacy/data/many-to-many/p2wpkh/apdu_debug.log deleted file mode 100644 index be6dcab4c..000000000 --- a/tests-legacy/data/many-to-many/p2wpkh/apdu_debug.log +++ /dev/null @@ -1,415 +0,0 @@ -New APDU received: -E0C4000000 -New APDU received: -F026000000 -New APDU received: -E0C4000000 -New APDU received: -E024000000 -New APDU received: -E02280000130 -New APDU received: -E04000000100 -pin ok -Using private component -34AC5D784EBB4DF4727BCDDF6A6743F5D5D46D83DD74AA825866390C694F2938 -To hash -0251EC84E33A3119486461A44240E906FF94BF40CF807B025B1CA43332B80DC9DB -Hash160 -F5ACC2FD5C60B7263C4A459541C1473BC29E58F4 -Checksum -A21FB2F3 -Length to encode 25 -To encode -6FF5ACC2FD5C60B7263C4A459541C1473BC29E58F4A21FB2F3 -Length encoded 34 -Encoded -6E3375786F6B3843337A566277476A72584476344E544E516A313865335A4D4A426B -Length 34 -New APDU received: -E0400000050180000000 -pin ok -Using private component -C71AE2E616FBCCC325A71600E9C82816505A6373EFCE4CAEDA60400667E0B75C -To hash -02E5646066C2C51CEAEA66F04EC85858D34E2BD285F4A60B1402BFC03CF462E767 -Hash160 -7D825341D36FC1297A41A9839A72975815B1FE61 -Checksum -E01B4FD2 -Length to encode 25 -To encode -6F7D825341D36FC1297A41A9839A72975815B1FE61E01B4FD2 -Length encoded 34 -Encoded -6D727861744272776D555959504E774E4879334A5461567350474750716A4A68674D -Length 34 -New APDU received: -E040000009028000005480000001 -pin ok -Using private component -ADF229CD64E7ADC0915EA16BA3CD4A6923E65D2B6EA127D23DFE84E2D563D22A -To hash -0331B89176766FA4A6CA844A3A6B0DD301B55197DE3250EF47A9936019CF80CE31 -Hash160 -751B87653B01FC4A355D3E08D22995E02BEA88E4 -Checksum -57CDF1D9 -Length to encode 25 -To encode -6F751B87653B01FC4A355D3E08D22995E02BEA88E457CDF1D9 -Length encoded 34 -Encoded -6D7243414C456F71715961654368444C335233323975387578483651486145597243 -Length 34 -New APDU received: -E04000000D03800000548000000180000000 -pin ok -Using private component -08B5ED5B131552DA3B9CA9869E506420EDF4ABEC8C1BA5D468BE04CCC4EC4A48 -To hash -02668C624FDBF81D0E9D3601D5DA195E0D06E48E3F5021D9269774BD0A9E5F2CBE -Hash160 -DAAEB63EBF9E49ED7F25C491432B01D945E37A7C -Checksum -9B84A352 -Length to encode 25 -To encode -6FDAAEB63EBF9E49ED7F25C491432B01D945E37A7C9B84A352 -Length encoded 34 -Encoded -6E3154457534763756734C59696D575A5775333947553871736E7039694456676F6A -Length 34 -New APDU received: -E0C4000000 -New APDU received: -E042000009000000000200000001 -Init transaction parser ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH FULL: -01 -Number of inputs : 1 -Process input -New APDU received: -E0428000252C4CA2F29958ECF3E14DDBD449E7DFC716400D7BFEE8A9D7EEC1647C3A14A7100000000000 -Process input ---- ADD TO HASH FULL: -2C4CA2F29958ECF3E14DDBD449E7DFC716400D7BFEE8A9D7EEC1647C3A14A71000000000 ---- ADD TO HASH FULL: -00 -Script to read 0 -Process input script, remaining 0 -New APDU received: -E042800004FDFFFFFF -Process input script, remaining 0 ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done -New APDU received: -E04280000102 -Input hashing done ---- ADD TO HASH FULL: -02 -Number of outputs : 2 -New APDU received: -E042800009D02CF8000000000016 ---- ADD TO HASH FULL: -D02CF80000000000 ---- ADD TO HASH FULL: -16 -Script to read 22 -Process output script, remaining 22 -New APDU received: -E04280001600142318D66F84FEF5C4875F933B038DC63831F8DA13 -Process output script, remaining 22 ---- ADD TO HASH FULL: -00142318D66F84FEF5C4875F933B038DC63831F8DA13 -Process output script, remaining 0 -New APDU received: -E042800009008793030000000016 -Process output script, remaining 0 ---- ADD TO HASH FULL: -0087930300000000 ---- ADD TO HASH FULL: -16 -Script to read 22 -Process output script, remaining 22 -New APDU received: -E0428000160014EEE49309A5CE45D01F691AEC8E5CE206194F9A9F -Process output script, remaining 22 ---- ADD TO HASH FULL: -0014EEE49309A5CE45D01F691AEC8E5CE206194F9A9F -Process output script, remaining 0 -New APDU received: -E042800004F1F61C00 -Process output script, remaining 0 -Output hashing done ---- ADD TO HASH FULL: -F1F61C00 -Transaction parsed -New APDU received: -E042000009000000010200000001 -Init transaction parser ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH FULL: -01 -Number of inputs : 1 -Process input -New APDU received: -E0428000252C4CA2F29958ECF3E14DDBD449E7DFC716400D7BFEE8A9D7EEC1647C3A14A7100000000000 -Process input ---- ADD TO HASH FULL: -2C4CA2F29958ECF3E14DDBD449E7DFC716400D7BFEE8A9D7EEC1647C3A14A71000000000 ---- ADD TO HASH FULL: -00 -Script to read 0 -Process input script, remaining 0 -New APDU received: -E042800004FDFFFFFF -Process input script, remaining 0 ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done -New APDU received: -E04280000102 -Input hashing done ---- ADD TO HASH FULL: -02 -Number of outputs : 2 -New APDU received: -E042800009D02CF8000000000016 ---- ADD TO HASH FULL: -D02CF80000000000 ---- ADD TO HASH FULL: -16 -Script to read 22 -Process output script, remaining 22 -New APDU received: -E04280001600142318D66F84FEF5C4875F933B038DC63831F8DA13 -Process output script, remaining 22 ---- ADD TO HASH FULL: -00142318D66F84FEF5C4875F933B038DC63831F8DA13 -Process output script, remaining 0 -New APDU received: -E042800009008793030000000016 -Process output script, remaining 0 ---- ADD TO HASH FULL: -0087930300000000 ---- ADD TO HASH FULL: -16 -Script to read 22 -Process output script, remaining 22 -New APDU received: -E0428000160014EEE49309A5CE45D01F691AEC8E5CE206194F9A9F -Process output script, remaining 22 ---- ADD TO HASH FULL: -0014EEE49309A5CE45D01F691AEC8E5CE206194F9A9F -Process output script, remaining 0 -New APDU received: -E042800004F1F61C00 -Process output script, remaining 0 -Output hashing done ---- ADD TO HASH FULL: -F1F61C00 -Transaction parsed -New APDU received: -E02601000101 -New APDU received: -E0440002050200000002 -Init transaction parser -Number of inputs : 2 -Process input -New APDU received: -E04480003B0138320034B9AC4F7220317B689845CD25C42F608368B7B92A784169372D3C2CA2612EF1CD0D00000000D02CF800000000005B5ADD428D79EB3C19 -Process input -Trusted input used in segwit mode -====> Input HMAC: 5B5ADD428D79EB3C -====> Computed HMAC: 5B5ADD428D79EB3C -Adding amount -D02CF80000000000 -New amount -0000000000F82CD0 -Script to read 25 -Process input script, remaining 25 -New APDU received: -E04480001D76A9142318D66F84FEF5C4875F933B038DC63831F8DA1388ACFDFFFFFF -Process input script, remaining 25 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -FDFFFFFF -Process input -New APDU received: -E04480003B013832006616AC4F7220317B689845CD25C42F608368B7B92A784169372D3C2CA2612EF1CD0D010000000087930300000000EAA238F5DA4E088C00 -Process input -Trusted input used in segwit mode -====> Input HMAC: EAA238F5DA4E088C -====> Computed HMAC: EAA238F5DA4E088C -Adding amount -0087930300000000 -New amount -00000000048BB3D0 -Script to read 0 -Process input script, remaining 0 -New APDU received: -E044800004FDFFFFFF -Process input script, remaining 0 ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done ---- ADD TO HASH FULL: -82D397CBBCFF87BC5D0C4C70E424F9B830EFBAD7BF0BE479DA5D1D1BAFDB9798 -hashPrevout -B2790BC71EE0340E89998B4BEC430CFD8A6847CA49B6EA8185C1D6C368091185 -hashSequence -957879FDCE4D8AB885E32FF307D54E75884DA52522CC53D3C4FDB60EDB69A098 -Presign ready -New APDU received: -E04AFF0015058000005480000001800000000000000100000005 -state=1 -Using private component -6938E6DBEDECC9FF7DF29A2C73BBB8250213D96F4B16B6E947AD5CA9F4160CC7 -New APDU received: -E04A00003202FE2BF80000000000160014C132F90DE4A19728E35D8AF8B3F9EC4E43CF194801879303000000001600143318E04FAE6C12 -state=1 ---- ADD TO HASH FULL: -FE2BF80000000000160014C132F90DE4A19728E35D8AF8B3F9EC4E43CF194801879303000000001600143318E04FAE6C12 -New APDU received: -E04A80000DAFCB009C69CD57E5B2504AE6B4 -state=2 ---- ADD TO HASH FULL: -AFCB009C69CD57E5B2504AE6B4 -hashOutputs -7AB7EB5CB887AE706482C5EF7A0218686D5EECDE5F8F6D6B3565433FB2EECFD6 -Auth Hash: -E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855 -Segwit parsed once -New APDU received: -E0440080050200000001 -Init transaction parser -Resume SegWit hash -SEGWIT Version -02000000 -SEGWIT HashedPrevouts -B2790BC71EE0340E89998B4BEC430CFD8A6847CA49B6EA8185C1D6C368091185 -SEGWIT HashedSequence -957879FDCE4D8AB885E32FF307D54E75884DA52522CC53D3C4FDB60EDB69A098 ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH FULL: -B2790BC71EE0340E89998B4BEC430CFD8A6847CA49B6EA8185C1D6C368091185 ---- ADD TO HASH FULL: -957879FDCE4D8AB885E32FF307D54E75884DA52522CC53D3C4FDB60EDB69A098 ---- ADD TO HASH AUTH: -B2790BC71EE0340E89998B4BEC430CFD8A6847CA49B6EA8185C1D6C368091185957879FDCE4D8AB885E32FF307D54E75884DA52522CC53D3C4FDB60EDB69A0987AB7EB5CB887AE706482C5EF7A0218686D5EECDE5F8F6D6B3565433FB2EECFD6 -Number of inputs : 1 -Process input -New APDU received: -E04480003B0138320034B9AC4F7220317B689845CD25C42F608368B7B92A784169372D3C2CA2612EF1CD0D00000000D02CF800000000005B5ADD428D79EB3C19 -Process input -Trusted input used in segwit mode -====> Input HMAC: 5B5ADD428D79EB3C -====> Computed HMAC: 5B5ADD428D79EB3C ---- ADD TO HASH FULL: -AC4F7220317B689845CD25C42F608368B7B92A784169372D3C2CA2612EF1CD0D00000000 ---- ADD TO HASH FULL: -19 -Script to read 25 -Process input script, remaining 25 -New APDU received: -E04480001D76A9142318D66F84FEF5C4875F933B038DC63831F8DA1388ACFDFFFFFF -Process input script, remaining 25 ---- ADD TO HASH FULL: -76A9142318D66F84FEF5C4875F933B038DC63831F8DA1388 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -AC -SEGWIT Add value -D02CF80000000000 ---- ADD TO HASH FULL: -D02CF80000000000 ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done -SEGWIT hashedOutputs -7AB7EB5CB887AE706482C5EF7A0218686D5EECDE5F8F6D6B3565433FB2EECFD6 -Sign ready -New APDU received: -E04800001B05800000548000000180000000000000000000000100001D024301 ---- ADD TO HASH FULL: -43021D0001000000 -Using private component -21E9C06E0D5E169EE7E6C961D2F3F3286666EF74F2CE5EFF6F6108EB6D855DA5 -Hash1 -7F95C240698CB2D4E372B1EFDFB565D9447D4F0706249907AA8D90BF0AD615C0 -Hash2 -45EB814B30BA5E2E6C39A7326290F7DC1548484507CC230B11F84D56FE26800F -New APDU received: -E0440080050200000001 -Init transaction parser -Resume SegWit hash -SEGWIT Version -02000000 -SEGWIT HashedPrevouts -B2790BC71EE0340E89998B4BEC430CFD8A6847CA49B6EA8185C1D6C368091185 -SEGWIT HashedSequence -957879FDCE4D8AB885E32FF307D54E75884DA52522CC53D3C4FDB60EDB69A098 ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH FULL: -B2790BC71EE0340E89998B4BEC430CFD8A6847CA49B6EA8185C1D6C368091185 ---- ADD TO HASH FULL: -957879FDCE4D8AB885E32FF307D54E75884DA52522CC53D3C4FDB60EDB69A098 ---- ADD TO HASH AUTH: -B2790BC71EE0340E89998B4BEC430CFD8A6847CA49B6EA8185C1D6C368091185957879FDCE4D8AB885E32FF307D54E75884DA52522CC53D3C4FDB60EDB69A0987AB7EB5CB887AE706482C5EF7A0218686D5EECDE5F8F6D6B3565433FB2EECFD6 -Number of inputs : 1 -Process input -New APDU received: -E04480003B013832006616AC4F7220317B689845CD25C42F608368B7B92A784169372D3C2CA2612EF1CD0D010000000087930300000000EAA238F5DA4E088C19 -Process input -Trusted input used in segwit mode -====> Input HMAC: EAA238F5DA4E088C -====> Computed HMAC: EAA238F5DA4E088C ---- ADD TO HASH FULL: -AC4F7220317B689845CD25C42F608368B7B92A784169372D3C2CA2612EF1CD0D01000000 ---- ADD TO HASH FULL: -19 -Script to read 25 -Process input script, remaining 25 -New APDU received: -E04480001D76A914EEE49309A5CE45D01F691AEC8E5CE206194F9A9F88ACFDFFFFFF -Process input script, remaining 25 ---- ADD TO HASH FULL: -76A914EEE49309A5CE45D01F691AEC8E5CE206194F9A9F88 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -AC -SEGWIT Add value -0087930300000000 ---- ADD TO HASH FULL: -0087930300000000 ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done -SEGWIT hashedOutputs -7AB7EB5CB887AE706482C5EF7A0218686D5EECDE5F8F6D6B3565433FB2EECFD6 -Sign ready -New APDU received: -E04800001B05800000548000000180000000000000010000000400001D024301 ---- ADD TO HASH FULL: -43021D0001000000 -Using private component -EF8D5CCDB132BA01BAD92AA97B1DF75C7C6914809F2510E91AA1FCE703770625 -Hash1 -7A9AA279B55E743EEFE4B819CB5B6E197B32D2C19DF8A3B6DDF1E0520C3A2180 -Hash2 -94D3EBE11569A69F1A2B948C4275940854CD8ED914377B8ADEE0F2257C6AD925 diff --git a/tests-legacy/data/many-to-many/p2wpkh/tx.json b/tests-legacy/data/many-to-many/p2wpkh/tx.json deleted file mode 100644 index 1b3bdf2bb..000000000 --- a/tests-legacy/data/many-to-many/p2wpkh/tx.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "txid": "5c09c82a4efa271adb692917aa35e92b1b360e333fade6cf081952bc7fd16a7a", - "raw": "02000000000102ac4f7220317b689845cd25c42f608368b7b92a784169372d3c2ca2612ef1cd0d0000000000fdffffffac4f7220317b689845cd25c42f608368b7b92a784169372d3c2ca2612ef1cd0d0100000000fdffffff02fe2bf80000000000160014c132f90de4a19728e35d8af8b3f9ec4e43cf194801879303000000001600143318e04fae6c12afcb009c69cd57e5b2504ae6b40247304402203aed260c81d21e36cfdd5a095ad289366103ae3a2690011b20e15001173e44d902206f17e60fc169db8bc21820dfefe51271446a6305284bcfb73738ca38a2715d9f012103455ee7cedc97b0ba435b80066fc92c963a34c600317981d135330c4ee43ac7a3024730440220223a3f37f85ed5e42d6ed463ca36932db28799ff12d0391b5e02bcfef829007302206c42e9cb5817bff184e8854848032867f129814df07a96afc49baa5542ede8a4012103affafaf410b74f019028055618695f89c23478aa5fca3ba531f44d382ad7791a43021d00", - "amount": 60000001, - "fees": 209, - "to": "tb1qxvvwqnawdsf2ljcqn35u64l9kfgy4e45v3uamu", - "sign_paths": ["m/84'/1'/0'/0/1", "m/84'/1'/0'/1/4"], - "change_path": "m/84'/1'/0'/1/5", - "lock_time": 1901123, - "utxos": [ - { - "txid": "0dcdf12e61a22c3c2d376941782ab9b76883602fc425cd4598687b3120724fac", - "raw": "020000000001012c4ca2f29958ecf3e14ddbd449e7dfc716400d7bfee8a9d7eec1647c3a14a7100000000000fdffffff02d02cf800000000001600142318d66f84fef5c4875f933b038dc63831f8da130087930300000000160014eee49309a5ce45d01f691aec8e5ce206194f9a9f02483045022100badae1c06849c8ba6616af3f306e5a2fccd433f23c1fa621e0dc7114f3c84a4002205ca637953d0b6fc2431f3cf6368fa00dbcb328d46c4778d8173cdb51b22a60760121027cb75d34b005c4eb9f62bbf2c457d7638e813e757efcec8fa68677d950b63662f1f61c00", - "output_indexes": [0, 1], - "output_amounts": [16264400, 60000000] - } - ] - -} \ No newline at end of file diff --git a/tests-legacy/data/one-to-many/p2pkh/apdu_debug.log b/tests-legacy/data/one-to-many/p2pkh/apdu_debug.log deleted file mode 100644 index 74689b25f..000000000 --- a/tests-legacy/data/one-to-many/p2pkh/apdu_debug.log +++ /dev/null @@ -1,168 +0,0 @@ -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E042000009000000010200000001 -Init transaction parser ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH FULL: -01 -Number of inputs : 1 -Process input -New APDU received: -E042800025F4C2B478DC9CEA2DF43C8BB94938FF43F3BED5AEB3AF9E36CDB7016104626BF2000000006B -Process input ---- ADD TO HASH FULL: -F4C2B478DC9CEA2DF43C8BB94938FF43F3BED5AEB3AF9E36CDB7016104626BF200000000 ---- ADD TO HASH FULL: -6B -Script to read 107 -Process input script, remaining 107 -New APDU received: -E04280006F483045022100B7B8244B3F83648397FA3C37349ED1827BF40BFCA22D4F87CC019D3FDED63E1D02205434CE222DE35E04AB98BE54AF57D2C8B464F0DA76A0275443B33C7B1DF79344012103462F1E48396CE2A4D7694D107FEF5123FE4D1E394394A370FA4901E744B4884EFDFFFFFF -Process input script, remaining 107 ---- ADD TO HASH FULL: -483045022100B7B8244B3F83648397FA3C37349ED1827BF40BFCA22D4F87CC019D3FDED63E1D02205434CE222DE35E04AB98BE54AF57D2C8B464F0DA76A0275443B33C7B1DF79344012103462F1E48396CE2A4D7694D107FEF5123FE4D1E394394A370FA4901E744B488 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -4E ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done -New APDU received: -E04280000102 -Input hashing done ---- ADD TO HASH FULL: -02 -Number of outputs : 2 -New APDU received: -E042800009DCDB06000000000019 ---- ADD TO HASH FULL: -DCDB060000000000 ---- ADD TO HASH FULL: -19 -Script to read 25 -Process output script, remaining 25 -New APDU received: -E04280001976A914B242BA04B8526B533B17B168D27EAF0DA7BACB8588AC -Process output script, remaining 25 ---- ADD TO HASH FULL: -76A914B242BA04B8526B533B17B168D27EAF0DA7BACB8588AC -Process output script, remaining 0 -New APDU received: -E042800009706408000000000019 -Process output script, remaining 0 ---- ADD TO HASH FULL: -7064080000000000 ---- ADD TO HASH FULL: -19 -Script to read 25 -Process output script, remaining 25 -New APDU received: -E04280001976A91426C680EC6AC9C0ED760177F92096F1C5571B72EF88AC -Process output script, remaining 25 ---- ADD TO HASH FULL: -76A91426C680EC6AC9C0ED760177F92096F1C5571B72EF88AC -Process output script, remaining 0 -New APDU received: -E04280000420041D00 -Process output script, remaining 0 -Output hashing done ---- ADD TO HASH FULL: -20041D00 -Transaction parsed -New APDU received: -E02601000101 -New APDU received: -E0440000050200000001 -Init transaction parser ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH AUTH: -02000000 ---- ADD TO HASH FULL: -01 ---- ADD TO HASH AUTH: -01 -Number of inputs : 1 -Process input -New APDU received: -E04480003B0138320002AC5DF7B9E20C52D1DA2701A244A49754215266F016F6BD77F640A5200CD1FB7E3401000000706408000000000095CF3BF2ACF74FF919 -Process input -====> Input HMAC: 95CF3BF2ACF74FF9 -====> Computed HMAC: 95CF3BF2ACF74FF9 -Trusted input hash -5DF7B9E20C52D1DA2701A244A49754215266F016F6BD77F640A5200CD1FB7E3401000000 ---- ADD TO HASH FULL: -5DF7B9E20C52D1DA2701A244A49754215266F016F6BD77F640A5200CD1FB7E3401000000 ---- ADD TO HASH AUTH: -5DF7B9E20C52D1DA2701A244A49754215266F016F6BD77F640A5200CD1FB7E3401000000 -Adding amount -7064080000000000 -New amount -0000000000086470 ---- ADD TO HASH FULL: -19 -Script to read 25 -Process input script, remaining 25 -New APDU received: -E04480001D76A91426C680EC6AC9C0ED760177F92096F1C5571B72EF88ACFDFFFFFF -Process input script, remaining 25 ---- ADD TO HASH FULL: -76A91426C680EC6AC9C0ED760177F92096F1C5571B72EF88 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -AC ---- ADD TO HASH FULL: -FDFFFFFF ---- ADD TO HASH AUTH: -FDFFFFFF -Process input -Input hashing done -Presign ready -New APDU received: -E04AFF0015058000002C80000001800000000000000100000001 -state=1 -Using private component -885E2F32C80E1D56DABC55AC271CC3983BF122F771AB45A1C890E0DEB740FAAB -New APDU received: -E04A00003202140C0300000000001976A914B3E17C4DEF8A39148ED6FAD7DC6FEBE30DD324CB88AC30570500000000001976A914E0A893 -state=1 ---- ADD TO HASH FULL: -02140C0300000000001976A914B3E17C4DEF8A39148ED6FAD7DC6FEBE30DD324CB88AC30570500000000001976A914E0A893 ---- ADD TO HASH AUTH: -02140C0300000000001976A914B3E17C4DEF8A39148ED6FAD7DC6FEBE30DD324CB88AC30570500000000001976A914E0A893 -New APDU received: -E04A80001380635F18B7EE09546D963232BCB992412B88AC -state=2 ---- ADD TO HASH FULL: -80635F18B7EE09546D963232BCB992412B88AC ---- ADD TO HASH AUTH: -80635F18B7EE09546D963232BCB992412B88AC -Checksum -62CF1861 -Length to encode 25 -To encode -6FE0A89380635F18B7EE09546D963232BCB992412B62CF1861 -Length encoded 34 -Encoded -6E317A71627548485461746D727359476A5042597953656F4637637250696A326A53 -New APDU received: -E04800001B058000002C8000000180000000000000000000000200001D04FE01 ---- ADD TO HASH FULL: -FE041D0001000000 -Using private component -E116F09653EDEBCCC7AC55622ECFA8DE2EE60C51A5006B6B6153B184B4DA914D -Hash1 -7E0EEB79AFE7BB94A68EB1CB0BCB591C380ADAB2120DB528F2D83EBB0BB9029B -Hash2 -971753A7B93CAB3510D9DAD6D08FB1805E580D8CBE292BF89A68C6CBE3BC8A72 diff --git a/tests-legacy/data/one-to-many/p2pkh/tx.json b/tests-legacy/data/one-to-many/p2pkh/tx.json deleted file mode 100644 index b68a65640..000000000 --- a/tests-legacy/data/one-to-many/p2pkh/tx.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "txid": "de390b0c4ac67b6cdcbe84611463cc42b6774f2bf11d8f7144e9601e3591f857", - "raw": "02000000015df7b9e20c52d1da2701a244a49754215266f016f6bd77f640a5200cd1fb7e34010000006b483045022100c806957429935c5d61f548223c3536dc739fe351814bce9edc1694e5a5c25abf022013e307b0b4885acb64ccffaf5f4794f205040325ebc36c258787c488b038c2bb0121038ba462d7dd65917ece454142903bb362a0b412d1841d52087ad881646b6cdccffdffffff02140c0300000000001976a914b3e17c4def8a39148ed6fad7dc6febe30dd324cb88ac30570500000000001976a914e0a89380635f18b7ee09546d963232bcb992412b88acfe041d00", - "amount": 350000, - "fees": 300, - "to": "n1zqbuHHTatmrsYGjPBYySeoF7crPij2jS", - "sign_paths": ["m/84'/1'/0'/0/2"], - "change_path": "m/84'/1'/0'/1/1", - "lock_time": 1901822, - "utxos": [ - { - "txid": "347efbd10c20a540f677bdf616f06652215497a444a20127dad1520ce2b9f75d", - "raw": "0200000001f4c2b478dc9cea2df43c8bb94938ff43f3bed5aeb3af9e36cdb7016104626bf2000000006b483045022100b7b8244b3f83648397fa3c37349ed1827bf40bfca22d4f87cc019d3fded63e1d02205434ce222de35e04ab98be54af57d2c8b464f0da76a0275443b33c7b1df79344012103462f1e48396ce2a4d7694d107fef5123fe4d1e394394a370fa4901e744b4884efdffffff02dcdb0600000000001976a914b242ba04b8526b533b17b168d27eaf0da7bacb8588ac70640800000000001976a91426c680ec6ac9c0ed760177f92096f1c5571b72ef88ac20041d00", - "output_indexes": [1], - "output_amounts": [550000] - } - ] - -} diff --git a/tests-legacy/data/one-to-many/p2sh-p2wpkh/apdu_debug.log b/tests-legacy/data/one-to-many/p2sh-p2wpkh/apdu_debug.log deleted file mode 100644 index 2116c1fa9..000000000 --- a/tests-legacy/data/one-to-many/p2sh-p2wpkh/apdu_debug.log +++ /dev/null @@ -1,191 +0,0 @@ -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E042000009000000000200000001 -Init transaction parser ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH FULL: -01 -Number of inputs : 1 -Process input -New APDU received: -E042800025167FA3F3D4233D1660B4B3BB62E78FB35C9786B0A96E6B4D61697CA112D9BA4E0100000017 -Process input ---- ADD TO HASH FULL: -167FA3F3D4233D1660B4B3BB62E78FB35C9786B0A96E6B4D61697CA112D9BA4E01000000 ---- ADD TO HASH FULL: -17 -Script to read 23 -Process input script, remaining 23 -New APDU received: -E04280001B160014E310D044F88DAB1B42769E4A84CAF08363F9ECC1FDFFFFFF -Process input script, remaining 23 ---- ADD TO HASH FULL: -160014E310D044F88DAB1B42769E4A84CAF08363F9EC -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -C1 ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done -New APDU received: -E04280000101 -Input hashing done ---- ADD TO HASH FULL: -01 -Number of outputs : 1 -New APDU received: -E042800009AA410F000000000017 ---- ADD TO HASH FULL: -AA410F0000000000 ---- ADD TO HASH FULL: -17 -Script to read 23 -Process output script, remaining 23 -New APDU received: -E042800017A9144D7997B902D0F1A2441A0542C920413B957E8A2287 -Process output script, remaining 23 ---- ADD TO HASH FULL: -A9144D7997B902D0F1A2441A0542C920413B957E8A2287 -Process output script, remaining 0 -New APDU received: -E042800004FD031D00 -Process output script, remaining 0 -Output hashing done ---- ADD TO HASH FULL: -FD031D00 -Transaction parsed -New APDU received: -E02601000101 -New APDU received: -E0440002050200000001 -Init transaction parser -Number of inputs : 1 -Process input -New APDU received: -E04480003B013832006773C3945B596FD88FD0D3031A2DF8963A68ADF9E9F0DFEF4F3C4DD72DF7D80777AE00000000AA410F0000000000F438E5A7C4F7887819 -Process input -Trusted input used in segwit mode -====> Input HMAC: F438E5A7C4F78878 -====> Computed HMAC: F438E5A7C4F78878 -Adding amount -AA410F0000000000 -New amount -00000000000F41AA -Script to read 25 -Process input script, remaining 25 -New APDU received: -E04480001D76A91485D33A279D6AE91E59E0C43DE832FD4C3398252D88ACFDFFFFFF -Process input script, remaining 25 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done ---- ADD TO HASH FULL: -23E9829BFB4E23FBD3C4848BAA035AF15D73BCB83E510F7F097F90A21A4280D2 -hashPrevout -82C5F725DB8A39C6B9C7B3C0DAF5C67E85DDA91C1F0FE866598ECF64CAF01419 -hashSequence -CAF35E5224DE16EFA3CCAF41070F6E7B9432B6F79551E629FCA9D1C03B43BC52 -Presign ready -New APDU received: -E04AFF0015058000003180000001800000000000000100000000 -state=1 -Using private component -E8AE81F93160D032A7AA82BE9B719499A5DE635639D7237B7AB2572DE86F7E52 -New APDU received: -E04A00003202909F07000000000017A914F0464D9FA0EA42D80E4D5F1457883982E23B8EEC8720A107000000000017A91423E6F63C476F -state=1 ---- ADD TO HASH FULL: -909F07000000000017A914F0464D9FA0EA42D80E4D5F1457883982E23B8EEC8720A107000000000017A91423E6F63C476F -New APDU received: -E04A80000F49E8ACF6AA583A0FDEC7B8ACA64587 -state=2 ---- ADD TO HASH FULL: -49E8ACF6AA583A0FDEC7B8ACA64587 -hashOutputs -BBC96114CDDD96D506521DFD897A0F946AE5E59CFA4373A8A1AD62B8A5D38E14 -Auth Hash: -E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855 -Checksum -BF56514F -Length to encode 25 -To encode -C423E6F63C476F49E8ACF6AA583A0FDEC7B8ACA645BF56514F -Length encoded 35 -Encoded -324D7658344B5756424B344E717A4A766A67517952556841615538503775536B625141 -Segwit parsed once -New APDU received: -E0440080050200000001 -Init transaction parser -Resume SegWit hash -SEGWIT Version -02000000 -SEGWIT HashedPrevouts -82C5F725DB8A39C6B9C7B3C0DAF5C67E85DDA91C1F0FE866598ECF64CAF01419 -SEGWIT HashedSequence -CAF35E5224DE16EFA3CCAF41070F6E7B9432B6F79551E629FCA9D1C03B43BC52 ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH FULL: -82C5F725DB8A39C6B9C7B3C0DAF5C67E85DDA91C1F0FE866598ECF64CAF01419 ---- ADD TO HASH FULL: -CAF35E5224DE16EFA3CCAF41070F6E7B9432B6F79551E629FCA9D1C03B43BC52 ---- ADD TO HASH AUTH: -82C5F725DB8A39C6B9C7B3C0DAF5C67E85DDA91C1F0FE866598ECF64CAF01419CAF35E5224DE16EFA3CCAF41070F6E7B9432B6F79551E629FCA9D1C03B43BC52BBC96114CDDD96D506521DFD897A0F946AE5E59CFA4373A8A1AD62B8A5D38E14 -Number of inputs : 1 -Process input -New APDU received: -E04480003B013832006773C3945B596FD88FD0D3031A2DF8963A68ADF9E9F0DFEF4F3C4DD72DF7D80777AE00000000AA410F0000000000F438E5A7C4F7887819 -Process input -Trusted input used in segwit mode -====> Input HMAC: F438E5A7C4F78878 -====> Computed HMAC: F438E5A7C4F78878 ---- ADD TO HASH FULL: -C3945B596FD88FD0D3031A2DF8963A68ADF9E9F0DFEF4F3C4DD72DF7D80777AE00000000 ---- ADD TO HASH FULL: -19 -Script to read 25 -Process input script, remaining 25 -New APDU received: -E04480001D76A91485D33A279D6AE91E59E0C43DE832FD4C3398252D88ACFDFFFFFF -Process input script, remaining 25 ---- ADD TO HASH FULL: -76A91485D33A279D6AE91E59E0C43DE832FD4C3398252D88 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -AC -SEGWIT Add value -AA410F0000000000 ---- ADD TO HASH FULL: -AA410F0000000000 ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done -SEGWIT hashedOutputs -BBC96114CDDD96D506521DFD897A0F946AE5E59CFA4373A8A1AD62B8A5D38E14 -Sign ready -New APDU received: -E04800001B05800000318000000180000000000000000000000100001D040001 ---- ADD TO HASH FULL: -00041D0001000000 -Using private component -54D5FA61DC01FB1B00C7B2FD7DE49273A859AB47A572BD02E68DFB1F126867ED -Hash1 -AD7ADE5C5390D208BC4992C615545E0C1E379832D9801396C4AD20E8D670381B -Hash2 -97BC0CA93B0530F5EBC5AA69EB214948BF1A28D9637D7B0030F53FA5C951F4A5 diff --git a/tests-legacy/data/one-to-many/p2sh-p2wpkh/tx.json b/tests-legacy/data/one-to-many/p2sh-p2wpkh/tx.json deleted file mode 100644 index 23898eadb..000000000 --- a/tests-legacy/data/one-to-many/p2sh-p2wpkh/tx.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "txid": "891013bb58b215330eef5bf5141991ed51604fbdf56e9df0fbbf9172b2c0d353", - "raw": "02000000000101c3945b596fd88fd0d3031a2df8963a68adf9e9f0dfef4f3c4dd72df7d80777ae000000001716001485d33a279d6ae91e59e0c43de832fd4c3398252dfdffffff02909f07000000000017a914f0464d9fa0ea42d80e4d5f1457883982e23b8eec8720a107000000000017a91423e6f63c476f49e8acf6aa583a0fdec7b8aca6458702483045022100da88128e41ae9ea8d6c7fe54a32ab89bbd558993924acf7d86e7039675dd3e0002207228d510d4d8e16f77ef5b82af051a6e5bd5f0263e4464984db8be777dfc6387012102549c187d80a2c8d26760d1646b40e3dce3b9e6042579dcdb9fdeee85208ceb7c00041d00", - "amount": 500000, - "fees": 250, - "to": "2MvX4KWVBK4NqzJvjgQyRUhAaU8P7uSkbQA", - "sign_paths": ["m/49'/1'/0'/0/1"], - "change_path": "m/49'/1'/0'/1/0", - "lock_time": 1901568, - "utxos": [ - { - "txid": "ae7707d8f72dd74d3c4fefdff0e9f9ad683a96f82d1a03d3d08fd86f595b94c3", - "raw": "02000000000101167fa3f3d4233d1660b4b3bb62e78fb35c9786b0a96e6b4d61697ca112d9ba4e0100000017160014e310d044f88dab1b42769e4a84caf08363f9ecc1fdffffff01aa410f000000000017a9144d7997b902d0f1a2441a0542c920413b957e8a228702483045022100b8ab2d40241c406b7e232e98fc99188ed46c062cc3f49ea39cfb77ae9f4918760220078763f7e0078be84ceb939bea8a87934e64ae3502d8636eb249c7ddd97036f7012102a80f007194d53d37f6f99539f635390588c4e1c328b098295f61af40d60cb28afd031d00", - "output_indexes": [0], - "output_amounts": [999850] - } - ] - -} diff --git a/tests-legacy/data/one-to-many/p2wpkh/apdu_debug.log b/tests-legacy/data/one-to-many/p2wpkh/apdu_debug.log deleted file mode 100644 index 86fa41855..000000000 --- a/tests-legacy/data/one-to-many/p2wpkh/apdu_debug.log +++ /dev/null @@ -1,207 +0,0 @@ -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E042000009000000010200000002 -Init transaction parser ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH FULL: -02 -Number of inputs : 2 -Process input -New APDU received: -E042800025AC4F7220317B689845CD25C42F608368B7B92A784169372D3C2CA2612EF1CD0D0000000000 -Process input ---- ADD TO HASH FULL: -AC4F7220317B689845CD25C42F608368B7B92A784169372D3C2CA2612EF1CD0D00000000 ---- ADD TO HASH FULL: -00 -Script to read 0 -Process input script, remaining 0 -New APDU received: -E042800004FDFFFFFF -Process input script, remaining 0 ---- ADD TO HASH FULL: -FDFFFFFF -Process input -New APDU received: -E042800025AC4F7220317B689845CD25C42F608368B7B92A784169372D3C2CA2612EF1CD0D0100000000 -Process input ---- ADD TO HASH FULL: -AC4F7220317B689845CD25C42F608368B7B92A784169372D3C2CA2612EF1CD0D01000000 ---- ADD TO HASH FULL: -00 -Script to read 0 -Process input script, remaining 0 -New APDU received: -E042800004FDFFFFFF -Process input script, remaining 0 ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done -New APDU received: -E04280000102 -Input hashing done ---- ADD TO HASH FULL: -02 -Number of outputs : 2 -New APDU received: -E042800009FE2BF8000000000016 ---- ADD TO HASH FULL: -FE2BF80000000000 ---- ADD TO HASH FULL: -16 -Script to read 22 -Process output script, remaining 22 -New APDU received: -E0428000160014C132F90DE4A19728E35D8AF8B3F9EC4E43CF1948 -Process output script, remaining 22 ---- ADD TO HASH FULL: -0014C132F90DE4A19728E35D8AF8B3F9EC4E43CF1948 -Process output script, remaining 0 -New APDU received: -E042800009018793030000000016 -Process output script, remaining 0 ---- ADD TO HASH FULL: -0187930300000000 ---- ADD TO HASH FULL: -16 -Script to read 22 -Process output script, remaining 22 -New APDU received: -E04280001600143318E04FAE6C12AFCB009C69CD57E5B2504AE6B4 -Process output script, remaining 22 ---- ADD TO HASH FULL: -00143318E04FAE6C12AFCB009C69CD57E5B2504AE6B4 -Process output script, remaining 0 -New APDU received: -E04280000443021D00 -Process output script, remaining 0 -Output hashing done ---- ADD TO HASH FULL: -43021D00 -Transaction parsed -New APDU received: -E02601000101 -New APDU received: -E0440002050200000001 -Init transaction parser -Number of inputs : 1 -Process input -New APDU received: -E04480003B0138320001107A6AD17FBC521908CFE6AD3F330E361B2BE935AA172969DB1A27FA4E2AC8095C01000000018793030000000019D862B903E5346019 -Process input -Trusted input used in segwit mode -====> Input HMAC: 19D862B903E53460 -====> Computed HMAC: 19D862B903E53460 -Adding amount -0187930300000000 -New amount -0000000003938701 -Script to read 25 -Process input script, remaining 25 -New APDU received: -E04480001D76A9143318E04FAE6C12AFCB009C69CD57E5B2504AE6B488ACFDFFFFFF -Process input script, remaining 25 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done ---- ADD TO HASH FULL: -23E9829BFB4E23FBD3C4848BAA035AF15D73BCB83E510F7F097F90A21A4280D2 -hashPrevout -0AD0C2779F8B2F0C994FD54CA86701607C7D162C622D8BCAA2DF8A195DE98C63 -hashSequence -CAF35E5224DE16EFA3CCAF41070F6E7B9432B6F79551E629FCA9D1C03B43BC52 -Presign ready -New APDU received: -E04AFF0015058000005480000001800000000000000100000006 -state=1 -Using private component -422277B0087551BAF831C6F099FADBD0E36048ABD1497E05DC9ECD0BFCF13243 -New APDU received: -E04A00003202B895980000000000160014AE4A9E12C72BAFA7C09DA2D0D924E0552FF68C2580F0FA02000000001600141347E82A037B5D -state=1 ---- ADD TO HASH FULL: -B895980000000000160014AE4A9E12C72BAFA7C09DA2D0D924E0552FF68C2580F0FA02000000001600141347E82A037B5D -New APDU received: -E04A80000DBB38CF8C4759F242B1F5C7E09A -state=2 ---- ADD TO HASH FULL: -BB38CF8C4759F242B1F5C7E09A -hashOutputs -D00F205254FBFFF03E8A8D31FE82421C83271E803EE12B4B0E2BF307E3E8D965 -Auth Hash: -E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855 -Segwit parsed once -New APDU received: -E0440080050200000001 -Init transaction parser -Resume SegWit hash -SEGWIT Version -02000000 -SEGWIT HashedPrevouts -0AD0C2779F8B2F0C994FD54CA86701607C7D162C622D8BCAA2DF8A195DE98C63 -SEGWIT HashedSequence -CAF35E5224DE16EFA3CCAF41070F6E7B9432B6F79551E629FCA9D1C03B43BC52 ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH FULL: -0AD0C2779F8B2F0C994FD54CA86701607C7D162C622D8BCAA2DF8A195DE98C63 ---- ADD TO HASH FULL: -CAF35E5224DE16EFA3CCAF41070F6E7B9432B6F79551E629FCA9D1C03B43BC52 ---- ADD TO HASH AUTH: -0AD0C2779F8B2F0C994FD54CA86701607C7D162C622D8BCAA2DF8A195DE98C63CAF35E5224DE16EFA3CCAF41070F6E7B9432B6F79551E629FCA9D1C03B43BC52D00F205254FBFFF03E8A8D31FE82421C83271E803EE12B4B0E2BF307E3E8D965 -Number of inputs : 1 -Process input -New APDU received: -E04480003B0138320001107A6AD17FBC521908CFE6AD3F330E361B2BE935AA172969DB1A27FA4E2AC8095C01000000018793030000000019D862B903E5346019 -Process input -Trusted input used in segwit mode -====> Input HMAC: 19D862B903E53460 -====> Computed HMAC: 19D862B903E53460 ---- ADD TO HASH FULL: -7A6AD17FBC521908CFE6AD3F330E361B2BE935AA172969DB1A27FA4E2AC8095C01000000 ---- ADD TO HASH FULL: -19 -Script to read 25 -Process input script, remaining 25 -New APDU received: -E04480001D76A9143318E04FAE6C12AFCB009C69CD57E5B2504AE6B488ACFDFFFFFF -Process input script, remaining 25 ---- ADD TO HASH FULL: -76A9143318E04FAE6C12AFCB009C69CD57E5B2504AE6B488 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -AC -SEGWIT Add value -0187930300000000 ---- ADD TO HASH FULL: -0187930300000000 ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done -SEGWIT hashedOutputs -D00F205254FBFFF03E8A8D31FE82421C83271E803EE12B4B0E2BF307E3E8D965 -Sign ready -New APDU received: -E04800001B05800000548000000180000000000000000000000300001D02A401 ---- ADD TO HASH FULL: -A4021D0001000000 -Using private component -BB2A3DBCB0FF5B3F483F58A916AC39D6B1D6D6F10CAF148FBB90BC8462214DB5 -Hash1 -D9463068D03E9557C2E47D7C8AC4B9C6651E535FD0F4B6FC955E9597832D07FE -Hash2 -D89635D546800B70DD465E2C89EE6764DD454091EA23D7F936408E8C2460D460 diff --git a/tests-legacy/data/one-to-many/p2wpkh/tx.json b/tests-legacy/data/one-to-many/p2wpkh/tx.json deleted file mode 100644 index 0c0b45f9d..000000000 --- a/tests-legacy/data/one-to-many/p2wpkh/tx.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "txid": "2e06df6ac8282f8e93f49285a2dedb5d4d5821427cfd5cbcc8f98b24a925a09c", - "raw": "020000000001017a6ad17fbc521908cfe6ad3f330e361b2be935aa172969db1a27fa4e2ac8095c0100000000fdffffff02b895980000000000160014ae4a9e12c72bafa7c09da2d0d924e0552ff68c2580f0fa02000000001600141347e82a037b5dbb38cf8c4759f242b1f5c7e09a02483045022100f6e4c827b7c0ffc2cc781ea9b64ddacc9a6ac72ad50d08e84f5ae9ee26b6f88f02206441cd69a31563c6e80bd7fd21ba050d6720116330c461a4014ac6164d24e2a401210232804f473db3282d5baca4c53713463645729335b90d738e18e2286b603d3fc5a4021d00", - "amount": 50000000, - "fees": 201, - "to": "tb1qzdr7s2sr0dwmkwx033r4nujzk86u0cy6fmzfjk", - "sign_paths": ["m/84'/1'/0'/0/3"], - "change_path": "m/84'/1'/0'/1/6", - "lock_time": 1901220, - "utxos": [ - { - "txid": "5c09c82a4efa271adb692917aa35e92b1b360e333fade6cf081952bc7fd16a7a", - "raw": "02000000000102ac4f7220317b689845cd25c42f608368b7b92a784169372d3c2ca2612ef1cd0d0000000000fdffffffac4f7220317b689845cd25c42f608368b7b92a784169372d3c2ca2612ef1cd0d0100000000fdffffff02fe2bf80000000000160014c132f90de4a19728e35d8af8b3f9ec4e43cf194801879303000000001600143318e04fae6c12afcb009c69cd57e5b2504ae6b40247304402203aed260c81d21e36cfdd5a095ad289366103ae3a2690011b20e15001173e44d902206f17e60fc169db8bc21820dfefe51271446a6305284bcfb73738ca38a2715d9f012103455ee7cedc97b0ba435b80066fc92c963a34c600317981d135330c4ee43ac7a3024730440220223a3f37f85ed5e42d6ed463ca36932db28799ff12d0391b5e02bcfef829007302206c42e9cb5817bff184e8854848032867f129814df07a96afc49baa5542ede8a4012103affafaf410b74f019028055618695f89c23478aa5fca3ba531f44d382ad7791a43021d00", - "output_indexes": [1], - "output_amounts": [60000001] - } - ] - -} \ No newline at end of file diff --git a/tests-legacy/data/one-to-one/p2pkh/apdu_debug.log b/tests-legacy/data/one-to-one/p2pkh/apdu_debug.log deleted file mode 100644 index 36ff13074..000000000 --- a/tests-legacy/data/one-to-one/p2pkh/apdu_debug.log +++ /dev/null @@ -1,159 +0,0 @@ -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E042000009000000010200000001 -Init transaction parser ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH FULL: -01 -Number of inputs : 1 -Process input -New APDU received: -E042800025EC230E53095256052A2428270EEC0498944B10F6F1C578F431C23D0098B4AE5A0100000017 -Process input ---- ADD TO HASH FULL: -EC230E53095256052A2428270EEC0498944B10F6F1C578F431C23D0098B4AE5A01000000 ---- ADD TO HASH FULL: -17 -Script to read 23 -Process input script, remaining 23 -New APDU received: -E04280001B160014281539820E2DE973AE41BA6004B431C921C4D86DFEFFFFFF -Process input script, remaining 23 ---- ADD TO HASH FULL: -160014281539820E2DE973AE41BA6004B431C921C4D8 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -6D ---- ADD TO HASH FULL: -FEFFFFFF -Process input -Input hashing done -New APDU received: -E04280000102 -Input hashing done ---- ADD TO HASH FULL: -02 -Number of outputs : 2 -New APDU received: -E042800009727275000000000017 ---- ADD TO HASH FULL: -7272750000000000 ---- ADD TO HASH FULL: -17 -Script to read 23 -Process output script, remaining 23 -New APDU received: -E042800017A914C8B906AF298C70E603A28C3EFC2FAE19E6AB280F87 -Process output script, remaining 23 ---- ADD TO HASH FULL: -A914C8B906AF298C70E603A28C3EFC2FAE19E6AB280F87 -Process output script, remaining 0 -New APDU received: -E04280000940420F000000000019 -Process output script, remaining 0 ---- ADD TO HASH FULL: -40420F0000000000 ---- ADD TO HASH FULL: -19 -Script to read 25 -Process output script, remaining 25 -New APDU received: -E04280001976A914CBAE5B50CF939E6F531B8A6B7ABD788FE14B029788AC -Process output script, remaining 25 ---- ADD TO HASH FULL: -76A914CBAE5B50CF939E6F531B8A6B7ABD788FE14B029788AC -Process output script, remaining 0 -New APDU received: -E04280000484F21C00 -Process output script, remaining 0 -Output hashing done ---- ADD TO HASH FULL: -84F21C00 -Transaction parsed -New APDU received: -E02601000101 -New APDU received: -E0440000050200000001 -Init transaction parser ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH AUTH: -02000000 ---- ADD TO HASH FULL: -01 ---- ADD TO HASH AUTH: -01 -Number of inputs : 1 -Process input -New APDU received: -E04480003B013832007BB65122C2CDE6823E55754175B92C9C57A0A8E1AC83C38E1787FD3A1FF3348E95130100000040420F00000000009AC6444F05C5817019 -Process input -====> Input HMAC: 9AC6444F05C58170 -====> Computed HMAC: 9AC6444F05C58170 -Trusted input hash -5122C2CDE6823E55754175B92C9C57A0A8E1AC83C38E1787FD3A1FF3348E951301000000 ---- ADD TO HASH FULL: -5122C2CDE6823E55754175B92C9C57A0A8E1AC83C38E1787FD3A1FF3348E951301000000 ---- ADD TO HASH AUTH: -5122C2CDE6823E55754175B92C9C57A0A8E1AC83C38E1787FD3A1FF3348E951301000000 -Adding amount -40420F0000000000 -New amount -00000000000F4240 ---- ADD TO HASH FULL: -19 -Script to read 25 -Process input script, remaining 25 -New APDU received: -E04480001D76A914CBAE5B50CF939E6F531B8A6B7ABD788FE14B029788ACFDFFFFFF -Process input script, remaining 25 ---- ADD TO HASH FULL: -76A914CBAE5B50CF939E6F531B8A6B7ABD788FE14B029788 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -AC ---- ADD TO HASH FULL: -FDFFFFFF ---- ADD TO HASH AUTH: -FDFFFFFF -Process input -Input hashing done -Presign ready -New APDU received: -E04AFF000100 -state=1 -New APDU received: -E04A8000230178410F00000000001976A91413D7D58166946C3EC022934066D8C0D111D1BB4188AC -state=1 ---- ADD TO HASH FULL: -0178410F00000000001976A91413D7D58166946C3EC022934066D8C0D111D1BB4188AC ---- ADD TO HASH AUTH: -0178410F00000000001976A91413D7D58166946C3EC022934066D8C0D111D1BB4188AC -Checksum -BA597C35 -Length to encode 25 -To encode -6F13D7D58166946C3EC022934066D8C0D111D1BB41BA597C35 -Length encoded 34 -Encoded -6D684B736837457A4A6F316753553176727079656A533171734A41754B7961575767 -New APDU received: -E04800001B058000002C8000000180000000000000000000000000001D041A01 ---- ADD TO HASH FULL: -1A041D0001000000 -Using private component -4FD5547026D24A120A268D246E90DD23568459A16BCFCB54FCEE86EBCD1834FA -Hash1 -9C12EA3D3E8644284EB010F24F97D5BC1FDA5A8F9B2E11B3D65FBC40BD7089BD -Hash2 -AB3C3430727A430B162A7CD73CE0BDC87A3DAEDDBAAA1A871E232CB0674F9129 diff --git a/tests-legacy/data/one-to-one/p2pkh/tx.json b/tests-legacy/data/one-to-one/p2pkh/tx.json deleted file mode 100644 index cce076fed..000000000 --- a/tests-legacy/data/one-to-one/p2pkh/tx.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "txid": "f26b62046101b7cd369eafb3aed5bef343ff3849b98b3cf42dea9cdc78b4c2f4", - "raw": "02000000015122c2cde6823e55754175b92c9c57a0a8e1ac83c38e1787fd3a1ff3348e9513010000006b483045022100e55b3ca788721aae8def2eadff710e524ffe8c9dec1764fdaa89584f9726e196022012a30fbcf9e1a24df31a1010356b794ab8de438b4250684757ed5772402540f4012102ee8608207e21028426f69e76447d7e3d5e077049f5e683c3136c2314762a4718fdffffff0178410f00000000001976a91413d7d58166946c3ec022934066d8c0d111d1bb4188ac1a041d00", - "amount": 999800, - "fees": 200, - "to": "mhKsh7EzJo1gSU1vrpyejS1qsJAuKyaWWg", - "sign_paths": ["m/84'/1'/0'/0/0"], - "change_path": null, - "lock_time": 1901594, - "utxos": [ - { - "txid": "13958e34f31f3afd87178ec383ace1a8a0579c2cb9754175553e82e6cdc22251", - "raw": "02000000000101ec230e53095256052a2428270eec0498944b10f6f1c578f431c23d0098b4ae5a0100000017160014281539820e2de973ae41ba6004b431c921c4d86dfeffffff02727275000000000017a914c8b906af298c70e603a28c3efc2fae19e6ab280f8740420f00000000001976a914cbae5b50cf939e6f531b8a6b7abd788fe14b029788ac02473044022037ecb4248361aafd4f8c11e705f0fa7a5fbdcd595172fcd5643f3b11beff5d400220020c6d326f6c37d63cecadaf4eb335faedf7c44e05f5ef1d2b68140b023bd13d012103dac82fc0acfcfc36348d4a48a46f01cea77f2b9ece3f8c3b4c99d0b0b2f995d284f21c00", - "output_indexes": [1], - "output_amounts": [999800] - } - ] - -} diff --git a/tests-legacy/data/one-to-one/p2sh-p2wpkh/apdu_debug.log b/tests-legacy/data/one-to-one/p2sh-p2wpkh/apdu_debug.log deleted file mode 100644 index 8fed79782..000000000 --- a/tests-legacy/data/one-to-one/p2sh-p2wpkh/apdu_debug.log +++ /dev/null @@ -1,199 +0,0 @@ -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E042000009000000010200000001 -Init transaction parser ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH FULL: -01 -Number of inputs : 1 -Process input -New APDU received: -E0428000251AF94AFBD37204AF7C23D6C7B8D41617831555831F72675C4181DB82B8A650410100000017 -Process input ---- ADD TO HASH FULL: -1AF94AFBD37204AF7C23D6C7B8D41617831555831F72675C4181DB82B8A6504101000000 ---- ADD TO HASH FULL: -17 -Script to read 23 -Process input script, remaining 23 -New APDU received: -E04280001B16001431C162CDDC618B8E80049620FFAF3F9210B10783FEFFFFFF -Process input script, remaining 23 ---- ADD TO HASH FULL: -16001431C162CDDC618B8E80049620FFAF3F9210B107 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -83 ---- ADD TO HASH FULL: -FEFFFFFF -Process input -Input hashing done -New APDU received: -E04280000102 -Input hashing done ---- ADD TO HASH FULL: -02 -Number of outputs : 2 -New APDU received: -E0428000090E19B7000000000017 ---- ADD TO HASH FULL: -0E19B70000000000 ---- ADD TO HASH FULL: -17 -Script to read 23 -Process output script, remaining 23 -New APDU received: -E042800017A914C9ED58BD29EF20ADC85156DA674A03E478799F1787 -Process output script, remaining 23 ---- ADD TO HASH FULL: -A914C9ED58BD29EF20ADC85156DA674A03E478799F1787 -Process output script, remaining 0 -New APDU received: -E04280000940420F000000000017 -Process output script, remaining 0 ---- ADD TO HASH FULL: -40420F0000000000 ---- ADD TO HASH FULL: -17 -Script to read 23 -Process output script, remaining 23 -New APDU received: -E042800017A914424B246398B68142926AEDC8D85628AC224A54DC87 -Process output script, remaining 23 ---- ADD TO HASH FULL: -A914424B246398B68142926AEDC8D85628AC224A54DC87 -Process output script, remaining 0 -New APDU received: -E04280000475F21C00 -Process output script, remaining 0 -Output hashing done ---- ADD TO HASH FULL: -75F21C00 -Transaction parsed -New APDU received: -E02601000101 -New APDU received: -E0440002050200000001 -Init transaction parser -Number of inputs : 1 -Process input -New APDU received: -E04480003B013832003BEF167FA3F3D4233D1660B4B3BB62E78FB35C9786B0A96E6B4D61697CA112D9BA4E0100000040420F000000000027708A585F4E617B19 -Process input -Trusted input used in segwit mode -====> Input HMAC: 27708A585F4E617B -====> Computed HMAC: 27708A585F4E617B -Adding amount -40420F0000000000 -New amount -00000000000F4240 -Script to read 25 -Process input script, remaining 25 -New APDU received: -E04480001D76A914E310D044F88DAB1B42769E4A84CAF08363F9ECC188ACFDFFFFFF -Process input script, remaining 25 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done ---- ADD TO HASH FULL: -23E9829BFB4E23FBD3C4848BAA035AF15D73BCB83E510F7F097F90A21A4280D2 -hashPrevout -5878F55307FBC6A50458E9470B134440E1EB0AAF19172B45796FE925F031B18C -hashSequence -CAF35E5224DE16EFA3CCAF41070F6E7B9432B6F79551E629FCA9D1C03B43BC52 -Presign ready -New APDU received: -E04AFF000100 -state=1 -New APDU received: -E04A80002101AA410F000000000017A9144D7997B902D0F1A2441A0542C920413B957E8A2287 -state=1 ---- ADD TO HASH FULL: -AA410F000000000017A9144D7997B902D0F1A2441A0542C920413B957E8A2287 -hashOutputs -056D1137157786D3D8724535C9894AD074D7B1569A5E79B5221641CAB56D1900 -Auth Hash: -E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855 -Checksum -FF599171 -Length to encode 25 -To encode -C44D7997B902D0F1A2441A0542C920413B957E8A22FF599171 -Length encoded 35 -Encoded -324D7A4A736754696966747266426B636472766232394E34326273674B3177644A5938 -Segwit parsed once -New APDU received: -E0440080050200000001 -Init transaction parser -Resume SegWit hash -SEGWIT Version -02000000 -SEGWIT HashedPrevouts -5878F55307FBC6A50458E9470B134440E1EB0AAF19172B45796FE925F031B18C -SEGWIT HashedSequence -CAF35E5224DE16EFA3CCAF41070F6E7B9432B6F79551E629FCA9D1C03B43BC52 ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH FULL: -5878F55307FBC6A50458E9470B134440E1EB0AAF19172B45796FE925F031B18C ---- ADD TO HASH FULL: -CAF35E5224DE16EFA3CCAF41070F6E7B9432B6F79551E629FCA9D1C03B43BC52 ---- ADD TO HASH AUTH: -5878F55307FBC6A50458E9470B134440E1EB0AAF19172B45796FE925F031B18CCAF35E5224DE16EFA3CCAF41070F6E7B9432B6F79551E629FCA9D1C03B43BC52056D1137157786D3D8724535C9894AD074D7B1569A5E79B5221641CAB56D1900 -Number of inputs : 1 -Process input -New APDU received: -E04480003B013832003BEF167FA3F3D4233D1660B4B3BB62E78FB35C9786B0A96E6B4D61697CA112D9BA4E0100000040420F000000000027708A585F4E617B19 -Process input -Trusted input used in segwit mode -====> Input HMAC: 27708A585F4E617B -====> Computed HMAC: 27708A585F4E617B ---- ADD TO HASH FULL: -167FA3F3D4233D1660B4B3BB62E78FB35C9786B0A96E6B4D61697CA112D9BA4E01000000 ---- ADD TO HASH FULL: -19 -Script to read 25 -Process input script, remaining 25 -New APDU received: -E04480001D76A914E310D044F88DAB1B42769E4A84CAF08363F9ECC188ACFDFFFFFF -Process input script, remaining 25 ---- ADD TO HASH FULL: -76A914E310D044F88DAB1B42769E4A84CAF08363F9ECC188 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -AC -SEGWIT Add value -40420F0000000000 ---- ADD TO HASH FULL: -40420F0000000000 ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done -SEGWIT hashedOutputs -056D1137157786D3D8724535C9894AD074D7B1569A5E79B5221641CAB56D1900 -Sign ready -New APDU received: -E04800001B05800000318000000180000000000000000000000000001D03FD01 ---- ADD TO HASH FULL: -FD031D0001000000 -Using private component -C16863B6D7B2B534AB6A7E049731E79907972F4689EBFC5A95398C537D683416 -Hash1 -746039019C2B7F0ACBF215F8DFB139CE369ECD7D463C18975EE588B9109FA971 -Hash2 -1398DE4932EC3444C1C18A8D3D9D5C8FEF5FAA838F45B91AD08D242405718092 diff --git a/tests-legacy/data/one-to-one/p2sh-p2wpkh/tx.json b/tests-legacy/data/one-to-one/p2sh-p2wpkh/tx.json deleted file mode 100644 index 33ce877b2..000000000 --- a/tests-legacy/data/one-to-one/p2sh-p2wpkh/tx.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "txid": "ae7707d8f72dd74d3c4fefdff0e9f9ad683a96f82d1a03d3d08fd86f595b94c3", - "raw": "02000000000101167fa3f3d4233d1660b4b3bb62e78fb35c9786b0a96e6b4d61697ca112d9ba4e0100000017160014e310d044f88dab1b42769e4a84caf08363f9ecc1fdffffff01aa410f000000000017a9144d7997b902d0f1a2441a0542c920413b957e8a228702483045022100b8ab2d40241c406b7e232e98fc99188ed46c062cc3f49ea39cfb77ae9f4918760220078763f7e0078be84ceb939bea8a87934e64ae3502d8636eb249c7ddd97036f7012102a80f007194d53d37f6f99539f635390588c4e1c328b098295f61af40d60cb28afd031d00", - "amount": 999850, - "fees": 150, - "to": "2MzJsgTiiftrfBkcdrvb29N42bsgK1wdJY8", - "sign_paths": ["m/49'/1'/0'/0/0"], - "change_path": null, - "lock_time": 1901565, - "utxos": [ - { - "txid": "4ebad912a17c69614d6b6ea9b086975cb38fe762bbb3b460163d23d4f3a37f16", - "raw": "020000000001011af94afbd37204af7c23d6c7b8d41617831555831f72675c4181db82b8a65041010000001716001431c162cddc618b8e80049620ffaf3f9210b10783feffffff020e19b7000000000017a914c9ed58bd29ef20adc85156da674a03e478799f178740420f000000000017a914424b246398b68142926aedc8d85628ac224a54dc8702473044022072190b182ab580404974fc5f569d0497002d0018e2903a00f10d91994d257cd902207973fb20ba684a887c97914079ff6a8a4ea10f0b101e16ebbb2bc7d03b4da971012102193ba58ea7475219eb3eddd0d61ed86b664585bab55d01ef3afdc4b0c1a0dd4575f21c00", - "output_indexes": [1], - "output_amounts": [1000000] - } - ] - -} diff --git a/tests-legacy/data/one-to-one/p2wpkh/apdu_debug.log b/tests-legacy/data/one-to-one/p2wpkh/apdu_debug.log deleted file mode 100644 index e28db8ab7..000000000 --- a/tests-legacy/data/one-to-one/p2wpkh/apdu_debug.log +++ /dev/null @@ -1,188 +0,0 @@ -New APDU received: -E04000000D03800000548000000180000000 -pin ok -Using private component -08B5ED5B131552DA3B9CA9869E506420EDF4ABEC8C1BA5D468BE04CCC4EC4A48 -To hash -02668C624FDBF81D0E9D3601D5DA195E0D06E48E3F5021D9269774BD0A9E5F2CBE -Hash160 -DAAEB63EBF9E49ED7F25C491432B01D945E37A7C -Checksum -9B84A352 -Length to encode 25 -To encode -6FDAAEB63EBF9E49ED7F25C491432B01D945E37A7C9B84A352 -Length encoded 34 -Encoded -6E3154457534763756734C59696D575A5775333947553871736E7039694456676F6A -Length 34 -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E0C4000000 -New APDU received: -E042000009000000000200000001 -Init transaction parser ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH FULL: -01 -Number of inputs : 1 -Process input -New APDU received: -E04280002534AB4E0084423B9DA3B7701023A4137C362F742328C5CB6F6D5086130A88B0940000000000 -Process input ---- ADD TO HASH FULL: -34AB4E0084423B9DA3B7701023A4137C362F742328C5CB6F6D5086130A88B09400000000 ---- ADD TO HASH FULL: -00 -Script to read 0 -Process input script, remaining 0 -New APDU received: -E042800004FDFFFFFF -Process input script, remaining 0 ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done -New APDU received: -E04280000101 -Input hashing done ---- ADD TO HASH FULL: -01 -Number of outputs : 1 -New APDU received: -E0428000095EB58B040000000016 ---- ADD TO HASH FULL: -5EB58B0400000000 ---- ADD TO HASH FULL: -16 -Script to read 22 -Process output script, remaining 22 -New APDU received: -E04280001600142318D66F84FEF5C4875F933B038DC63831F8DA13 -Process output script, remaining 22 ---- ADD TO HASH FULL: -00142318D66F84FEF5C4875F933B038DC63831F8DA13 -Process output script, remaining 0 -New APDU received: -E042800004FBF41C00 -Process output script, remaining 0 -Output hashing done ---- ADD TO HASH FULL: -FBF41C00 -Transaction parsed -New APDU received: -E02601000101 -New APDU received: -E0440002050200000001 -Init transaction parser -Number of inputs : 1 -Process input -New APDU received: -E04480003B013832002BD7F3DB0E87B75A0C4A113F30906230FFAD598BAA37F3AB27FC2C339DE849B9F385000000005EB58B0400000000F926369658DFFF5A19 -Process input -Trusted input used in segwit mode -====> Input HMAC: F926369658DFFF5A -====> Computed HMAC: F926369658DFFF5A -Adding amount -5EB58B0400000000 -New amount -00000000048BB55E -Script to read 25 -Process input script, remaining 25 -New APDU received: -E04480001D76A9142318D66F84FEF5C4875F933B038DC63831F8DA1388ACFDFFFFFF -Process input script, remaining 25 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done ---- ADD TO HASH FULL: -23E9829BFB4E23FBD3C4848BAA035AF15D73BCB83E510F7F097F90A21A4280D2 -hashPrevout -C7B413870810B6E08F118FBDFA1BF67FAB8F1048FC0F943E8EC91D60733CBCF4 -hashSequence -CAF35E5224DE16EFA3CCAF41070F6E7B9432B6F79551E629FCA9D1C03B43BC52 -Presign ready -New APDU received: -E04AFF000100 -state=1 -New APDU received: -E04A80002001F0B48B04000000001600141347E82A037B5DBB38CF8C4759F242B1F5C7E09A -state=1 ---- ADD TO HASH FULL: -F0B48B04000000001600141347E82A037B5DBB38CF8C4759F242B1F5C7E09A -hashOutputs -62BBD24C452AAF0705EF8A79E2E3BF9A20A75A587DBFF2753FEB7B99A0FE6DC6 -Auth Hash: -E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855 -Segwit parsed once -New APDU received: -E0440080050200000001 -Init transaction parser -Resume SegWit hash -SEGWIT Version -02000000 -SEGWIT HashedPrevouts -C7B413870810B6E08F118FBDFA1BF67FAB8F1048FC0F943E8EC91D60733CBCF4 -SEGWIT HashedSequence -CAF35E5224DE16EFA3CCAF41070F6E7B9432B6F79551E629FCA9D1C03B43BC52 ---- ADD TO HASH FULL: -02000000 ---- ADD TO HASH FULL: -C7B413870810B6E08F118FBDFA1BF67FAB8F1048FC0F943E8EC91D60733CBCF4 ---- ADD TO HASH FULL: -CAF35E5224DE16EFA3CCAF41070F6E7B9432B6F79551E629FCA9D1C03B43BC52 ---- ADD TO HASH AUTH: -C7B413870810B6E08F118FBDFA1BF67FAB8F1048FC0F943E8EC91D60733CBCF4CAF35E5224DE16EFA3CCAF41070F6E7B9432B6F79551E629FCA9D1C03B43BC5262BBD24C452AAF0705EF8A79E2E3BF9A20A75A587DBFF2753FEB7B99A0FE6DC6 -Number of inputs : 1 -Process input -New APDU received: -E04480003B013832002BD7F3DB0E87B75A0C4A113F30906230FFAD598BAA37F3AB27FC2C339DE849B9F385000000005EB58B0400000000F926369658DFFF5A19 -Process input -Trusted input used in segwit mode -====> Input HMAC: F926369658DFFF5A -====> Computed HMAC: F926369658DFFF5A ---- ADD TO HASH FULL: -F3DB0E87B75A0C4A113F30906230FFAD598BAA37F3AB27FC2C339DE849B9F38500000000 ---- ADD TO HASH FULL: -19 -Script to read 25 -Process input script, remaining 25 -New APDU received: -E04480001D76A9142318D66F84FEF5C4875F933B038DC63831F8DA1388ACFDFFFFFF -Process input script, remaining 25 ---- ADD TO HASH FULL: -76A9142318D66F84FEF5C4875F933B038DC63831F8DA1388 -Process input script, remaining 1 -Disabling P2SH consumption ---- ADD TO HASH FULL: -AC -SEGWIT Add value -5EB58B0400000000 ---- ADD TO HASH FULL: -5EB58B0400000000 ---- ADD TO HASH FULL: -FDFFFFFF -Process input -Input hashing done -SEGWIT hashedOutputs -62BBD24C452AAF0705EF8A79E2E3BF9A20A75A587DBFF2753FEB7B99A0FE6DC6 -Sign ready -New APDU received: -E04800001B05800000548000000180000000000000000000000100001CF59001 ---- ADD TO HASH FULL: -90F51C0001000000 -Using private component -21E9C06E0D5E169EE7E6C961D2F3F3286666EF74F2CE5EFF6F6108EB6D855DA5 -Hash1 -773DB7D1831DA4C933BD8DED5563DC5E03EF752CC9601A7423059368355CFE68 -Hash2 -824F6D8B43D99E86750D9F290E26BE16CEA93ACD1B8BC045E940B34704C61D60 diff --git a/tests-legacy/data/one-to-one/p2wpkh/tx.json b/tests-legacy/data/one-to-one/p2wpkh/tx.json deleted file mode 100644 index a69ba2470..000000000 --- a/tests-legacy/data/one-to-one/p2wpkh/tx.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "txid": "10a7143a7c64c1eed7a9e8fe7b0d4016c7dfe749d4db4de1f3ec5899f2a24c2c", - "raw": "02000000000101f3db0e87b75a0c4a113f30906230ffad598baa37f3ab27fc2c339de849b9f3850000000000fdffffff01f0b48b04000000001600141347e82a037b5dbb38cf8c4759f242b1f5c7e09a0248304502210087dadcd43ba52983eb19786b20a4a8e6969e1f9330017d1ffc537effad0f7d9102200b293788f2956f6352afad08b6c9f48d213e9e96ff74ffd76a28cf448fb358a1012103455ee7cedc97b0ba435b80066fc92c963a34c600317981d135330c4ee43ac7a390f51c00", - "amount": 76264688, - "fees": 110, - "to": "tb1qzdr7s2sr0dwmkwx033r4nujzk86u0cy6fmzfjk", - "sign_paths": ["m/84'/1'/0'/0/1"], - "change_path": null, - "lock_time": 1897872, - "utxos": [ - { - "txid": "85f3b949e89d332cfc27abf337aa8b59adff306290303f114a0c5ab7870edbf3", - "raw": "0200000000010134ab4e0084423b9da3b7701023a4137c362f742328c5cb6f6d5086130a88b0940000000000fdffffff015eb58b04000000001600142318d66f84fef5c4875f933b038dc63831f8da130248304502210088e618e63f1a908022bb5fc6aaa19b454ac3eec104ffd78319acc0ccfe464378022003ce22f37a945eb2b9e70ebbc321a74c9594efd7c986a4004538b728d30ecb500121027cb75d34b005c4eb9f62bbf2c457d7638e813e757efcec8fa68677d950b63662fbf41c00", - "output_indexes": [0], - "output_amounts": [76264798] - } - ] - -} \ No newline at end of file diff --git a/tests-legacy/prepare_tests_lib.sh b/tests-legacy/prepare_tests_lib.sh deleted file mode 100755 index 39b9264eb..000000000 --- a/tests-legacy/prepare_tests_lib.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -bash ./clean_tests.sh - -# TODO: tests currently not working with DEBUG=1 - -cd .. -make clean -make -j DEBUG=0 COIN=bitcoin -mv bin/ tests-legacy/bitcoin-bin -make clean -make -j DEBUG=0 COIN=bitcoin_testnet_lib -mv bin/ tests-legacy/bitcoin-testnet-bin diff --git a/tests-legacy/prepare_tests_native.sh b/tests-legacy/prepare_tests_native.sh deleted file mode 100755 index ed3883cee..000000000 --- a/tests-legacy/prepare_tests_native.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -bash ./clean_tests.sh - -# TODO: tests currently not working with DEBUG=1 - -cd .. -make clean -make -j DEBUG=0 COIN=bitcoin_testnet -mv bin/ tests-legacy/bitcoin-testnet-bin diff --git a/tests-legacy/requirements.txt b/tests-legacy/requirements.txt deleted file mode 100644 index f8181210a..000000000 --- a/tests-legacy/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -typing-extensions>=3.7.4.3 -pytest>=6.2.1 -ledgercomm>=1.1.0 -ecdsa>=0.16.1,<0.17.0 diff --git a/tests-legacy/setup.cfg b/tests-legacy/setup.cfg deleted file mode 100644 index 5bf2168fc..000000000 --- a/tests-legacy/setup.cfg +++ /dev/null @@ -1,20 +0,0 @@ -[tool:pytest] -addopts = --strict-markers - -[pylint] -disable = C0114, # missing-module-docstring - C0115, # missing-class-docstring - C0116, # missing-function-docstring - C0103, # invalid-name - R0801, # duplicate-code - R0913 # too-many-arguments -extension-pkg-whitelist=hid - -[pycodestyle] -max-line-length = 100 - -[mypy-hid.*] -ignore_missing_imports = True - -[mypy-pytest.*] -ignore_missing_imports = True diff --git a/tests-legacy/test_get_coin_version.py b/tests-legacy/test_get_coin_version.py deleted file mode 100644 index e475a9a56..000000000 --- a/tests-legacy/test_get_coin_version.py +++ /dev/null @@ -1,9 +0,0 @@ -def test_get_coin_version(cmd): - (p2pkh_prefix, p2sh_prefix, coin_family, coin_name, coin_ticker) = cmd.get_coin_version() - - # Bitcoin app: (0x00, 0x05, 0x01, "Bitcoin", "BTC") - assert (p2pkh_prefix, - p2sh_prefix, - coin_family, - coin_name, - coin_ticker) == (0x6F, 0xC4, 0x01, "Bitcoin", "TEST") diff --git a/tests-legacy/test_get_pubkey.py b/tests-legacy/test_get_pubkey.py deleted file mode 100644 index 1dfa6939c..000000000 --- a/tests-legacy/test_get_pubkey.py +++ /dev/null @@ -1,42 +0,0 @@ -from bitcoin_client.bitcoin_base_cmd import AddrType - - -def test_get_public_key(cmd): - # legacy address - pub_key, addr, bip32_chain_code = cmd.get_public_key( - addr_type=AddrType.Legacy, - bip32_path="m/44'/1'/0'/0/0", - display=False - ) - - assert pub_key == bytes.fromhex("04" - "ee8608207e21028426f69e76447d7e3d5e077049f5e683c3136c2314762a4718" - "b45f5224b05ebbad09f43594b7bd8dc0eff4519a07cbab37ecc66e0001ab959a") - assert addr == "mz5vLWdM1wHVGSmXUkhKVvZbJ2g4epMXSm" - assert bip32_chain_code == bytes.fromhex("0322c8f681e7274e767cee09b8e41770e6d2afd504fd5f85dfaab3e1ff6cdfcc") - - # P2SH-P2WPKH address - pub_key, addr, bip32_chain_code = cmd.get_public_key( - addr_type=AddrType.P2SH_P2WPKH, - bip32_path="m/49'/1'/0'/0/0", - display=False - ) - - assert pub_key == bytes.fromhex("04" - "a80f007194d53d37f6f99539f635390588c4e1c328b098295f61af40d60cb28a" - "7b5649e8121c89148fbab7d693108654685b4e939d9c1bc55a71b43f389929fe") - assert addr == "2MyHkbusvLomaarGYMqyq7q9pSBYJRwWcsw" - assert bip32_chain_code == bytes.fromhex("dc699bc018541f456df1ebd4dea516a633a6260e0a701eba143449adc2ca63f3") - - # bech32 address - pub_key, addr, bip32_chain_code = cmd.get_public_key( - addr_type=AddrType.BECH32, - bip32_path="m/84'/1'/0'/0/0", - display=False - ) - - assert pub_key == bytes.fromhex("04" - "7cb75d34b005c4eb9f62bbf2c457d7638e813e757efcec8fa68677d950b63662" - "648e4f638cabc4e4383fa3fe8348456e46fa56742dcf500a5b50dc1d403492f0") - assert addr == "tb1qzdr7s2sr0dwmkwx033r4nujzk86u0cy6fmzfjk" - assert bip32_chain_code == bytes.fromhex("efd851020a3827ba0d3fd4375910f0ed55dbe8c5d740b37559e993b1d623a956") diff --git a/tests-legacy/test_get_random.py b/tests-legacy/test_get_random.py deleted file mode 100644 index a4570f4c5..000000000 --- a/tests-legacy/test_get_random.py +++ /dev/null @@ -1,15 +0,0 @@ -import pytest - -from bitcoin_client.exception import IncorrectLengthError - - -def test_random(cmd): - r: bytes = cmd.get_random(n=5) - assert len(r) == 5 - - r = cmd.get_random(n=32) - assert len(r) == 32 - - # max length is 248! - with pytest.raises(IncorrectLengthError): - cmd.get_random(n=249) diff --git a/tests-legacy/test_get_trusted_inputs.py b/tests-legacy/test_get_trusted_inputs.py deleted file mode 100644 index 7c2ff475c..000000000 --- a/tests-legacy/test_get_trusted_inputs.py +++ /dev/null @@ -1,174 +0,0 @@ -from io import BytesIO - -from bitcoin_client.hwi.serialization import CTransaction -from bitcoin_client.utils import deser_trusted_input - - -def test_get_trusted_inputs(cmd): - raw_tx: bytes = bytes.fromhex( - # Version no (4 bytes little endian) - "02000000" - # In-counter (varint 1-9 bytes) - "02" - # [1] Previous Transaction hash (32 bytes) - "40d1ae8a596b34f48b303e853c56f8f6f54c483babc16978eb182e2154d5f2ab" - # [1] Previous Txout-index (4 bytes little endian) - "00000000" - # [1] Txin-script length (varint 1-9 bytes) - "6b" - # [1] scriptSig (0x6b = 107 bytes) - "48" - "3045" - "0221" - # r - "00ca145f0694ffaedd333d3724ce3f4e44aabc0ed5128113660d11f917b3c52053" - "0220" - # s - "7bec7c66328bace92bd525f385a9aa1261b83e0f92310ea1850488b40bd25a5d" - # sighash - "01" - "21" - # compressed public key - "032006c64cdd0485e068c1e22ba0fa267ca02ca0c2b34cdc6dd08cba23796b6ee7" - # [1] sequence_no (4 bytes little endian) - "fdffffff" - # [2] Previous Transaction hash (32 bytes) - "40d1ae8a596b34f48b303e853c56f8f6f54c483babc16978eb182e2154d5f2ab" - # [2] Previous Txout-index (4 bytes little endian) - "01000000" - # [2] Txin-script length (varint 1-9 bytes) - "6a" - # [2] scriptSig (0x6a = 106 bytes) - "47" - "3044" - "0220" - # r - "2a5d54a1635a7a0ae22cef76d8144ca2a1c3c035c87e7cd0280ab43d34510906" - "0220" - # s - "0c7e07e384b3620ccd2f97b5c08f5893357c653edc2b8570f099d9ff34a0285c" - "01" - "21" - # compressed public key - "02d82f3fa29d38297db8e1879010c27f27533439c868b1cc6af27dd3d33b243dec" - # [2] sequence_no (4 bytes little endian) - "fdffffff" - # Out-counter (varint 1-9 bytes) - "01" - # [1] Value (8 bytes little endian) - "d7ee7c0100000000" # 0.24964823 BTC - # [1] Txout-script length (varint 1-9 bytes) - "19" - # [1] scriptPubKey (0x19 = 25 bytes) - "76a914" - "0ea263ff8b0da6e8d187de76f6a362beadab7811" - "88ac" - # lock_time (4 bytes little endian) - "e3691900" - ) - - bip141_raw_tx: bytes = bytes.fromhex( - # Version no (4 bytes little endian) - "02000000" - # marker (1 byte) + flag (1 byte) - "0001" - # In-counter (varint 1-9 bytes) - "02" - # [1] Previous Transaction hash (32 bytes) - "e7576f53b5d92f9880b125d0622782fef40b0121eb4555c9d3a7be54e635cd6e" - # [1] Previous Txout-index (4 bytes little endian) - "00000000" - # [1] Txin-script length (varint 1-9 bytes) - "17" - # [1] scriptSig (0x17 = 23 bytes) - "160014" - "4c9fca3fd23ae5cc1f0dfe46b446da611219c020" # hash160(pubkey) - # [1] sequence_no (4 bytes little endian) - "fdffffff" - # [2] Previous Transaction hash (32 bytes) - "4ba91d8e1cedbfecdceda7f3432f618a2f0e122c66a63fe0c53a14de6305e5dc" - # [2] Previous Txout-index (4 bytes little endian) - "01000000" - # [2] Txin-script length (varint 1-9 bytes) - "17" - # [2] scriptSig (0x17 = 23 bytes) - "160014" - "92a9159a0ae40a748c18bd486ea13da85422450c" # hash160(pubkey) - # [2] sequence_no (4 bytes little endian) - "fdffffff" - # Out-counter (varint 1-9 bytes) - "02" - # [1] Value (8 bytes little endian) - "7f19060000000000" - # [1] Txout-script length (varint 1-9 bytes) - "17" - # [1] scriptPubKey (0x17 = 23 bytes) - "a9141a56dea1ff8a3f633916560fed5942400d17080b87" - # [2] Value (8 bytes little endian) - "60ae0a0000000000" - # [2] Txout-script length (varint 1-9 bytes) - "17" - # [2] scriptPubKey (0x17 = 23 bytes) - "a9147c28b075f506d829e2e2bacf897c1b5b0d309c1a87" - # Witnesses - "02" # number of items to push on the stack - "48" # length of 1st stack item - # 1st item - "3045" - "0221" - # r - "00c791ff9a5886903fbd3c1289f281e1d5a3e330f1558ea5df725bcd780b285677" - "0220" - # s - "2d76349a78585ea66df6eef5ab48a0348cc337994a1d6357a6e4e4328a343f6d" - "01" - # 2nd item - "21" # length of 2nd stack item - # compressed public key - "02623ed09f8c192938f7a638fbdd5dd7c297f86e41be8d7dff4f1c904f0685f227" - "02" # number of items to push on the stack - # 1st item - "48" # length of 1st stack item - "3045" - "0221" - # r - "008f2f017f5fa4fdd7dcfe41c83f4a71a726626cdb490d652edcb408b9a4638b7a" - "0220" - # s - "439c15a7f7a03f2876dec5392f2247437b57b227fea294f4019d06462f938b53" - "01" - # 2nd item - "21" # length of 2nd stack item - # compressed public key - "0347e9143aa6457c72a48d85b5065edc40d3a49f319d54fc4979dc3b95de949a41" - # lock_time (4 bytes little endian) - "d7681900" - ) - tx: CTransaction - bip141_tx: CTransaction - output_index: int - trusted_input: bytes - - tx = CTransaction() - tx.deserialize(BytesIO(raw_tx)) - tx.calc_sha256() - - output_index = 0 - trusted_input = cmd.get_trusted_input(utxo=tx, output_index=output_index) - - _, _, _, prev_txid, out_index, amount, _ = deser_trusted_input(trusted_input) - assert out_index == output_index - assert prev_txid == tx.sha256.to_bytes(32, byteorder="little") - assert amount == tx.vout[out_index].nValue - - bip141_tx = CTransaction() - bip141_tx.deserialize(BytesIO(bip141_raw_tx)) - bip141_tx.calc_sha256() - - output_index = 1 - trusted_input = cmd.get_trusted_input(utxo=bip141_tx, output_index=output_index) - - _, _, _, prev_txid, out_index, amount, _ = deser_trusted_input(trusted_input) - assert out_index == output_index - assert prev_txid == bip141_tx.sha256.to_bytes(32, byteorder="little") - assert amount == bip141_tx.vout[out_index].nValue diff --git a/tests-legacy/test_sign.py b/tests-legacy/test_sign.py deleted file mode 100644 index 11fd12813..000000000 --- a/tests-legacy/test_sign.py +++ /dev/null @@ -1,89 +0,0 @@ -from hashlib import sha256 -import json -from pathlib import Path -from typing import Tuple, List, Dict, Any -import pytest - -from ecdsa.curves import SECP256k1 -from ecdsa.keys import VerifyingKey -from ecdsa.util import sigdecode_der - -from bitcoin_client.hwi.serialization import CTransaction -from bitcoin_client.exception import ConditionOfUseNotSatisfiedError -from utils import has_automation - - -def sign_from_json(cmd, filepath: Path): - tx_dct: Dict[str, Any] = json.load(open(filepath, "r")) - - raw_utxos: List[Tuple[bytes, int]] = [ - (bytes.fromhex(utxo_dct["raw"]), output_index) - for utxo_dct in tx_dct["utxos"] - for output_index in utxo_dct["output_indexes"] - ] - to_address: str = tx_dct["to"] - to_amount: int = tx_dct["amount"] - fees: int = tx_dct["fees"] - - sigs = cmd.sign_new_tx(address=to_address, - amount=to_amount, - fees=fees, - change_path=tx_dct["change_path"], - sign_paths=tx_dct["sign_paths"], - raw_utxos=raw_utxos, - lock_time=tx_dct["lock_time"]) - - expected_tx = CTransaction.from_bytes(bytes.fromhex(tx_dct["raw"])) - witnesses = expected_tx.wit.vtxinwit - for witness, (tx_hash_digest, sign_pub_key, (v, der_sig)) in zip(witnesses, sigs): - expected_der_sig, expected_pubkey = witness.scriptWitness.stack - assert expected_pubkey == sign_pub_key - assert expected_der_sig == der_sig - pk: VerifyingKey = VerifyingKey.from_string( - sign_pub_key, - curve=SECP256k1, - hashfunc=sha256 - ) - assert pk.verify_digest(signature=der_sig[:-1], # remove sighash - digest=tx_hash_digest, - sigdecode=sigdecode_der) is True - - -def test_untrusted_hash_sign_fail_nonzero_p1_p2(cmd, transport): - # payloads do not matter, should check and fail before checking it (but non-empty is required) - sw, _ = transport.exchange(0xE0, 0x48, 0x01, 0x01, None, b"\x00") - assert sw == 0x6B00, "should fail with p1 and p2 both non-zero" - sw, _ = transport.exchange(0xE0, 0x48, 0x01, 0x00, None, b"\x00") - assert sw == 0x6B00, "should fail with non-zero p1" - sw, _ = transport.exchange(0xE0, 0x48, 0x00, 0x01, None, b"\x00") - assert sw == 0x6B00, "should fail with non-zero p2" - - -def test_untrusted_hash_sign_fail_short_payload(cmd, transport): - # should fail if the payload is less than 7 bytes - sw, _ = transport.exchange(0xE0, 0x48, 0x00, 0x00, None, b"\x01\x02\x03\x04\x05\x06") - assert sw == 0x6700 - - -@has_automation("automations/accept.json") -def test_sign_p2wpkh_accept(cmd): - for filepath in Path("data").rglob("p2wpkh/tx.json"): - sign_from_json(cmd, filepath) - - -@has_automation("automations/accept.json") -def test_sign_p2sh_p2wpkh_accept(cmd): - for filepath in Path("data").rglob("p2sh-p2wpkh/tx.json"): - sign_from_json(cmd, filepath) - - -@has_automation("automations/accept.json") -def test_sign_p2pkh_accept(cmd): - for filepath in Path("data").rglob("p2pkh/tx.json"): - sign_from_json(cmd, filepath) - - -@has_automation("automations/reject.json") -def test_sign_fail_p2pkh_reject(cmd): - with pytest.raises(ConditionOfUseNotSatisfiedError): - sign_from_json(cmd, "./data/one-to-one/p2pkh/tx.json") diff --git a/tests-legacy/utils/__init__.py b/tests-legacy/utils/__init__.py deleted file mode 100644 index fbdcc5d6f..000000000 --- a/tests-legacy/utils/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ - -def has_automation(filename): - """Decorator that adds the automation_file attribute to a test function. - - When present, this filename will be used as the --automation file when creating the speculos fixture. - """ - def decorator(func): - func.automation_file = filename - return func - return decorator diff --git a/tests/README.md b/tests/README.md index d37f6078b..ddfc00847 100644 --- a/tests/README.md +++ b/tests/README.md @@ -24,17 +24,18 @@ Build the app as normal from the root folder. For convenience, you probably want DEBUG=1 make ``` -Then run all the tests from this folder with: +Then run all the tests from this folder, specifying the device: nanos, nanox, nanosp, stax, or all: ``` -pytest +pytest --device yourdevice ``` +You can enable the screen display with the option `--display` -## Launch with your Nano S/X +## Launch with your Nano S/X/SP or Stax Compile and install the app on your device as normal. -To run the tests on your Ledger Nano S/X you also need to install an optional dependency +To run the tests on your Ledger device you also need to install an optional dependency ``` pip install ledgercomm[hid] @@ -43,7 +44,5 @@ pip install ledgercomm[hid] Be sure to have you device connected through USB (without any other software interacting with it) and run ``` -pytest --hid -``` - -Please note that tests that require an automation file are meant for speculos, and will currently hang the test suite. \ No newline at end of file +pytest --device yourdevice --backend ledgercomm +``` \ No newline at end of file diff --git a/tests/automations/register_wallet_accept.json b/tests/automations/register_wallet_accept.json index 6371aa704..d96348a90 100644 --- a/tests/automations/register_wallet_accept.json +++ b/tests/automations/register_wallet_accept.json @@ -2,10 +2,19 @@ "version": 1, "rules": [ { - "regexp": "Register wallet|Policy map|Key", + "regexp": "Register wallet|Wallet name|Wallet policy|Key", "actions": [ ["button", 2, true], - ["button", 2, false] + ["button", 2, false], + [ "finger", 55, 550, true], + [ "finger", 55, 550, false] + ] + }, + { + "regexp": "Tap to continue", + "actions": [ + ["finger", 55, 550, true], + ["finger", 55, 550, false] ] }, { @@ -14,7 +23,14 @@ [ "button", 1, true ], [ "button", 2, true ], [ "button", 2, false ], - [ "button", 1, false ] + [ "button", 1, false ], + [ "finger", 55, 550, true] + ] + }, + { + "regexp": "Processing|REGISTERED", + "actions": [ + ["finger", 55, 550, false] ] } ] diff --git a/tests/automations/register_wallet_reject.json b/tests/automations/register_wallet_reject.json index 7e9c6ebb2..f6d928120 100644 --- a/tests/automations/register_wallet_reject.json +++ b/tests/automations/register_wallet_reject.json @@ -2,10 +2,12 @@ "version": 1, "rules": [ { - "regexp": "Register wallet|Policy map|Key|Approve", + "regexp": "Register wallet|Wallet name|Wallet policy|Key|Approve|Cancel", "actions": [ ["button", 2, true], - ["button", 2, false] + ["button", 2, false], + ["finger", 55, 650, true], + ["finger", 55, 650, false] ] }, { diff --git a/tests/automations/sign_message_accept.json b/tests/automations/sign_message_accept.json index 505f5e39c..710a2cf64 100644 --- a/tests/automations/sign_message_accept.json +++ b/tests/automations/sign_message_accept.json @@ -2,12 +2,31 @@ "version": 1, "rules": [ { - "regexp": "Path|Message hash", + "regexp": "Path|Message hash|Message content", "actions": [ ["button", 2, true], ["button", 2, false] ] }, + { + "regexp": "Tap to continue", + "actions": [ + ["finger", 55, 550, true], + ["finger", 55, 550, false] + ] + }, + { + "regexp": "Approve", + "actions": [ + [ "finger", 55, 550, true] + ] + }, + { + "regexp": "Processing", + "actions": [ + ["finger", 55, 550, false] + ] + }, { "regexp": "Sign", "conditions": [ diff --git a/tests/automations/sign_message_reject.json b/tests/automations/sign_message_reject.json index b33cfc335..2af845637 100644 --- a/tests/automations/sign_message_reject.json +++ b/tests/automations/sign_message_reject.json @@ -2,19 +2,37 @@ "version": 1, "rules": [ { - "regexp": "Sign|Path|Message hash|Approve", + "regexp": "Review message", + "actions": [ + ["finger", 55, 550, true], + ["finger", 55, 550, false] + ] + }, + { + "regexp": "Message hash|Message content", "actions": [ ["button", 2, true], - ["button", 2, false] + ["button", 2, false], + ["finger", 55, 650, true], + ["finger", 55, 650, false] ] }, { - "regexp": "Reject", + "regexp": "Yes, Reject|Reject", "actions": [ [ "button", 1, true ], [ "button", 2, true ], - [ "button", 2, false ], - [ "button", 1, false ] + [ "button", 2, false], + [ "button", 1, false], + [ "finger", 55, 550, true], + [ "finger", 55, 550, false] + ] + }, + { + "regexp": "Sign|Path", + "actions": [ + ["button", 2, true], + ["button", 2, false] ] } ] diff --git a/tests/automations/sign_with_default_wallet_accept.json b/tests/automations/sign_with_default_wallet_accept.json index 09352e5f8..128b4deb9 100644 --- a/tests/automations/sign_with_default_wallet_accept.json +++ b/tests/automations/sign_with_default_wallet_accept.json @@ -1,6 +1,16 @@ { "version": 1, "rules": [ + { + "regexp": "Approve|Accept|Hold to sign", + "actions": [ + [ "button", 1, true ], + [ "button", 2, true ], + [ "button", 2, false ], + [ "button", 1, false ], + [ "finger", 55, 550, true] + ] + }, { "regexp": "Review|Amount|Address|Confirm|Fees", "actions": [ @@ -9,12 +19,16 @@ ] }, { - "regexp": "Approve|Accept", + "regexp": "Tap to continue", "actions": [ - [ "button", 1, true ], - [ "button", 2, true ], - [ "button", 2, false ], - [ "button", 1, false ] + ["finger", 55, 550, true], + ["finger", 55, 550, false] + ] + }, + { + "regexp": "SIGNED", + "actions": [ + ["finger", 55, 550, false] ] } ] diff --git a/tests/automations/sign_with_default_wallet_accept_highfee.json b/tests/automations/sign_with_default_wallet_accept_highfee.json new file mode 100644 index 000000000..078de0e04 --- /dev/null +++ b/tests/automations/sign_with_default_wallet_accept_highfee.json @@ -0,0 +1,37 @@ +{ + "version": 1, + "rules": [ + { + "regexp": "Tap to continue|Fees are above 10%", + "actions": [ + ["button", 2, true], + ["button", 2, false], + ["finger", 55, 550, true], + ["finger", 55, 550, false] + ] + }, + { + "regexp": "Approve|Accept|Hold to sign|Continue", + "actions": [ + [ "button", 1, true ], + [ "button", 2, true ], + [ "button", 2, false ], + [ "button", 1, false ], + [ "finger", 55, 550, true] + ] + }, + { + "regexp": "Review|Amount|Address|Confirm|Fees", + "actions": [ + ["button", 2, true], + ["button", 2, false] + ] + }, + { + "regexp": "SIGNED", + "actions": [ + ["finger", 55, 550, false] + ] + } + ] +} diff --git a/tests/automations/sign_with_default_wallet_accept_nondefault_sighash.json b/tests/automations/sign_with_default_wallet_accept_nondefault_sighash.json new file mode 100644 index 000000000..2833c434d --- /dev/null +++ b/tests/automations/sign_with_default_wallet_accept_nondefault_sighash.json @@ -0,0 +1,35 @@ +{ + "version": 1, + "rules": [ + { + "regexp": "Review|Amount|Address|Confirm|Fees|Non-default sighash|Reject", + "actions": [ + ["button", 2, true], + ["button", 2, false] + ] + }, + { + "regexp": "Tap to continue|Warning", + "actions": [ + ["finger", 55, 550, true], + ["finger", 55, 550, false] + ] + }, + { + "regexp": "Hold|Accept|Continue|Approve", + "actions": [ + [ "button", 1, true ], + [ "button", 2, true ], + [ "button", 2, false ], + [ "button", 1, false ], + [ "finger", 55, 550, true] + ] + }, + { + "regexp": "SIGNED", + "actions": [ + ["finger", 55, 550, false] + ] + } + ] +} diff --git a/tests/automations/sign_with_default_wallet_missing_nonwitnessutxo_accept.json b/tests/automations/sign_with_default_wallet_missing_nonwitnessutxo_accept.json new file mode 100644 index 000000000..09093e2cc --- /dev/null +++ b/tests/automations/sign_with_default_wallet_missing_nonwitnessutxo_accept.json @@ -0,0 +1,35 @@ +{ + "version": 1, + "rules": [ + { + "regexp": "Hold to sign", + "actions": [ + ["finger", 55, 550, true] + ] + }, + { + "regexp": "Processing", + "actions": [ + ["finger", 55, 550, false] + ] + }, + { + "regexp": "Continue|Tap to continue|Approve|Accept|Warning", + "actions": [ + [ "button", 1, true ], + [ "button", 2, true ], + [ "button", 2, false ], + [ "button", 1, false ], + [ "finger", 55, 550, true], + [ "finger", 55, 550, false] + ] + }, + { + "regexp": "Unverified|Update|or third party|Review|Amount|Address|Confirm|Fees", + "actions": [ + ["button", 2, true], + ["button", 2, false] + ] + } + ] +} diff --git a/tests/automations/sign_with_wallet_accept.json b/tests/automations/sign_with_wallet_accept.json index 37a08b741..2fbf27285 100644 --- a/tests/automations/sign_with_wallet_accept.json +++ b/tests/automations/sign_with_wallet_accept.json @@ -2,19 +2,39 @@ "version": 1, "rules": [ { - "regexp": "Spend from|Review|Amount|Address|Confirm|Fees", + "regexp": "Spend from|Wallet name|Review|Amount|Address|Confirm|Fees", "actions": [ ["button", 2, true], ["button", 2, false] ] }, { - "regexp": "Approve|Accept", + "regexp": "Hold to sign", + "actions": [ + ["finger", 55, 550, true] + ] + }, + { + "regexp": "Tap to continue", + "actions": [ + ["finger", 55, 550, true], + ["finger", 55, 550, false] + ] + }, + { + "regexp": "Approve|Accept|Confirm", "actions": [ [ "button", 1, true ], [ "button", 2, true ], [ "button", 2, false ], - [ "button", 1, false ] + [ "button", 1, false ], + ["finger", 55, 550, true] + ] + }, + { + "regexp": "Processing", + "actions": [ + ["finger", 55, 550, false] ] } ] diff --git a/tests/automations/sign_with_wallet_external_inputs_accept.json b/tests/automations/sign_with_wallet_external_inputs_accept.json index d29cf62d0..90bc0e358 100644 --- a/tests/automations/sign_with_wallet_external_inputs_accept.json +++ b/tests/automations/sign_with_wallet_external_inputs_accept.json @@ -2,19 +2,39 @@ "version": 1, "rules": [ { - "regexp": "Spend from|There are|Reject if you're|Review|Amount|Address|Confirm|Fees", + "regexp": "Hold to sign", + "actions": [ + ["finger", 55, 550, true] + ] + }, + { + "regexp": "Spend from|Wallet name|There are|Reject if you['-]re|Review|Amount|Address|Confirm|Fees", "actions": [ ["button", 2, true], ["button", 2, false] ] }, + { + "regexp": "Tap to continue|Warning", + "actions": [ + ["finger", 55, 550, true], + ["finger", 55, 550, false] + ] + }, { "regexp": "Continue|Approve|Accept", "actions": [ [ "button", 1, true ], [ "button", 2, true ], [ "button", 2, false ], - [ "button", 1, false ] + [ "button", 1, false ], + [ "finger", 55, 550, true] + ] + }, + { + "regexp": "SIGNED", + "actions": [ + ["finger", 55, 550, false] ] } ] diff --git a/tests/automations/sign_with_wallet_missing_nonwitnessutxo_accept.json b/tests/automations/sign_with_wallet_missing_nonwitnessutxo_accept.json new file mode 100644 index 000000000..33fd80cad --- /dev/null +++ b/tests/automations/sign_with_wallet_missing_nonwitnessutxo_accept.json @@ -0,0 +1,45 @@ +{ + "version": 1, + "rules": [ + { + "regexp": "Hold to sign|Confirm wallet name", + "actions": [ + ["finger", 55, 550, true] + ] + }, + { + "regexp": "Processing", + "actions": [ + ["finger", 55, 550, false] + ] + }, + { + "text": "Approve", + "actions": [ + [ "button", 1, true ], + [ "button", 2, true ], + [ "button", 2, false ], + [ "button", 1, false ], + [ "finger", 55, 550, true] + ] + }, + { + "regexp": "Continue|Tap to continue|Accept|Warning", + "actions": [ + [ "button", 1, true ], + [ "button", 2, true ], + [ "button", 2, false ], + [ "button", 1, false ], + [ "finger", 55, 550, true], + [ "finger", 55, 550, false] + ] + }, + { + "regexp": "Unverified|Update|or third party|Spend from|Wallet name|Review|Amount|Address|Confirm|Fees", + "actions": [ + ["button", 2, true], + ["button", 2, false] + ] + } + ] +} diff --git a/tests/bitcoin.conf b/tests/bitcoin.conf index 80e2fe216..515039545 100644 --- a/tests/bitcoin.conf +++ b/tests/bitcoin.conf @@ -12,4 +12,6 @@ txindex=1 # [others] daemon=1 debug=1 -fallbackfee=0.00001 \ No newline at end of file +fallbackfee=0.00001 +minrelaytxfee=0 +blockmintxfee=0 diff --git a/tests/conftest.py b/tests/conftest.py index 3b0ab4746..cffd00cf6 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,6 +1,12 @@ +import sys +import os + +absolute_path = os.path.dirname(os.path.abspath(__file__)) +relative_bitcoin_path = ('../bitcoin_client') +absolute_bitcoin_client_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), '../') +sys.path.append(os.path.join(absolute_path, relative_bitcoin_path)) + import random -import binascii -import hashlib from typing import Tuple from test_utils.fixtures import * @@ -11,9 +17,36 @@ import subprocess from time import sleep from decimal import Decimal +from pathlib import Path + +from ledger_bitcoin import Chain +from ledger_bitcoin.common import sha256 +import ledger_bitcoin._base58 as base58 + +from ragger.conftest import configuration +from ragger.backend.interface import BackendInterface +from ragger.backend import RaisePolicy +from ragger_bitcoin import createRaggerClient, RaggerClient + +########################### +### CONFIGURATION START ### +########################### + +# You can configure optional parameters by overriding the value of ragger.configuration.OPTIONAL_CONFIGURATION +# Please refer to ragger/conftest/configuration.py for their descriptions and accepted values + +MNEMONIC = "glory promote mansion idle axis finger extra february uncover one trip resource lawn turtle enact monster seven myth punch hobby comfort wild raise skin" +configuration.OPTIONAL.CUSTOM_SEED = MNEMONIC +configuration.OPTIONAL.BACKEND_SCOPE = "function" -import bitcoin_client.ledger_bitcoin._base58 as base58 -from bitcoin_client.ledger_bitcoin.common import sha256 + +######################### +### CONFIGURATION END ### +######################### +TESTS_ROOT_DIR = Path(__file__).parent + +# Pull all features from the base ragger conftest using the overridden configuration +pytest_plugins = ("ragger.conftest.base_conftest", ) random.seed(0) # make sure tests are repeatable @@ -22,7 +55,7 @@ os.environ['SPECULOS_APPNAME'] = f'Bitcoin Test:{get_app_version()}' -BITCOIN_DIRNAME = os.getenv("BITCOIN_DIRNAME", ".test_bitcoin") +BITCOIN_DIRNAME = os.getenv("BITCOIN_DIRNAME", "tests/.test_bitcoin") rpc_url = "http://%s:%s@%s:%s" % ( @@ -70,7 +103,7 @@ def run_bitcoind(): # Run bitcoind in a separate folder os.makedirs(BITCOIN_DIRNAME, exist_ok=True) - bitcoind = os.getenv("BITCOIND", "bitcoind") + bitcoind = os.getenv("BITCOIND", "/bitcoin/bin/bitcoind") shutil.copy(os.path.join(os.path.dirname(__file__), "bitcoin.conf"), BITCOIN_DIRNAME) subprocess.Popen([bitcoind, f"--datadir={BITCOIN_DIRNAME}"]) @@ -134,7 +167,8 @@ def get_unique_wallet_name() -> str: def create_new_wallet() -> Tuple[str, str]: """Creates a new descriptor-enabled wallet in bitcoin-core. Each new wallet has an increasing counter as - part of it's name in order to avoid conflicts.""" + part of it's name in order to avoid conflicts. Returns the wallet name and the xpub (dropping the key origin + information).""" wallet_name = get_unique_wallet_name() @@ -144,11 +178,14 @@ def create_new_wallet() -> Tuple[str, str]: get_rpc().createwallet(wallet_name=wallet_name, descriptors=True) wallet_rpc = get_wallet_rpc(wallet_name) + all_descriptors = wallet_rpc.listdescriptors()["descriptors"] descriptor: str = next(filter(lambda d: d["desc"].startswith( - "pkh"), wallet_rpc.listdescriptors()["descriptors"]))["desc"] + "pkh") and "/0/*" in d["desc"], all_descriptors))["desc"] + core_xpub_orig = descriptor[descriptor.index("(")+1: descriptor.index("/0/*")] + core_xpub = core_xpub_orig[core_xpub_orig.find("]") + 1:] - return wallet_name, core_xpub_orig + return wallet_name, core_xpub def generate_blocks(n): @@ -163,3 +200,18 @@ def testnet_to_regtest_addr(addr: str) -> str: if (hrp != "tb"): raise ValueError("Not a valid testnet bech32m string") return segwit_addr.bech32_encode("bcrt", data, spec) + + +@pytest.fixture +def client(bitcoin_network: str, backend: BackendInterface) -> RaggerClient: + if bitcoin_network == "main": + chain = Chain.MAIN + elif bitcoin_network == "test": + chain = Chain.TEST + else: + raise ValueError( + f'Invalid value for BITCOIN_NETWORK: {bitcoin_network}') + + backend.raise_policy = RaisePolicy.RAISE_CUSTOM + backend.whitelisted_status = [0x9000, 0xE000] + return createRaggerClient(backend, chain=chain, debug=True, screenshot_dir=TESTS_ROOT_DIR) diff --git a/tests/instructions.py b/tests/instructions.py new file mode 100644 index 000000000..ad0711b3c --- /dev/null +++ b/tests/instructions.py @@ -0,0 +1,358 @@ +from ragger.navigator import NavInsID +from ragger.firmware import Firmware + +from ragger_bitcoin.ragger_instructions import Instructions + + +def message_instruction_approve(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.nano_skip_screen("Path") + instructions.same_request("Sign") + else: + instructions.confirm_message() + return instructions + + +def message_instruction_approve_long(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.nano_skip_screen("Path") + instructions.same_request("Processing") + instructions.new_request("Processing") + instructions.new_request("Processing") + instructions.new_request("Processing") + instructions.new_request("Sign") + else: + instructions.navigate_end_of_flow() + instructions.navigate_end_of_flow() + instructions.navigate_end_of_flow() + instructions.navigate_end_of_flow() + instructions.confirm_message() + return instructions + + +def message_instruction_reject(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Reject") + else: + instructions.reject_message() + + return instructions + + +def pubkey_instruction_approve(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Approve") + else: + instructions.choice_confirm() + return instructions + + +def pubkey_instruction_reject_early(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Reject") + else: + instructions.footer_cancel() + return instructions + + +def pubkey_reject(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.nano_skip_screen("Reject") + instructions.same_request("Reject") + else: + instructions.choice_reject() + + return instructions + + +def wallet_instruction_approve(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Approve") + else: + instructions.address_confirm() + return instructions + + +def register_wallet_instruction_approve(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Approve") + instructions.new_request("Approve") + instructions.new_request("Approve") + else: + instructions.choice_confirm() + instructions.choice_confirm() + instructions.choice_confirm() + return instructions + + +def register_wallet_instruction_approve_long(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Approve") + instructions.new_request("Approve") + instructions.new_request("Approve") + instructions.new_request("Approve") + else: + instructions.choice_confirm() + instructions.choice_confirm() + instructions.choice_confirm() + instructions.choice_confirm() + return instructions + + +def register_wallet_instruction_approve_unusual(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Approve") + instructions.new_request("Approve") + else: + instructions.choice_confirm() + instructions.choice_confirm() + return instructions + + +def register_wallet_instruction_reject(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Reject") + else: + instructions.choice_reject() + + return instructions + + +def sign_psbt_instruction_tap(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + return instructions + + instructions.navigate_end_of_flow() + return instructions + + +def sign_psbt_instruction_approve(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Continue") + instructions.same_request("Sign") + else: + instructions.navigate_end_of_flow() + instructions.confirm_transaction() + return instructions + + +def sign_psbt_instruction_approve_2(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Continue") + instructions.new_request("Sign") + else: + instructions.navigate_end_of_flow() + instructions.navigate_end_of_flow() + instructions.confirm_transaction() + return instructions + + +def sign_psbt_instruction_approve_3(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Continue") + instructions.new_request("Continue") + instructions.same_request("Sign") + else: + instructions.navigate_end_of_flow() + instructions.navigate_end_of_flow() + instructions.warning_accept() + instructions.same_request_confirm_transaction() + return instructions + + +def sign_psbt_instruction_approve_4(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Continue") + instructions.new_request("Continue") + instructions.same_request("Sign") + else: + instructions.warning_accept() + instructions.navigate_end_of_flow() + instructions.confirm_transaction() + return instructions + + +def sign_psbt_instruction_approve_5(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Sign") + else: + instructions.navigate_end_of_flow() + instructions.confirm_transaction() + return instructions + + +def sign_psbt_instruction_approve_6(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Continue") + instructions.new_request("Continue") + instructions.new_request("Sign") + else: + instructions.confirm_wallet() + instructions.navigate_end_of_flow() + instructions.navigate_end_of_flow() + instructions.confirm_transaction() + return instructions + + +def sign_psbt_instruction_approve_7(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Continue") + instructions.new_request("Continue") + instructions.same_request("Sign") + else: + instructions.confirm_wallet() + instructions.navigate_end_of_flow() + instructions.confirm_transaction() + return instructions + + +def sign_psbt_instruction_approve_8(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Continue") + instructions.new_request("Continue") + instructions.new_request("Continue") + instructions.same_request("Sign") + else: + instructions.confirm_wallet() + instructions.warning_accept() + instructions.navigate_end_of_flow() + instructions.confirm_transaction() + return instructions + + +def sign_psbt_instruction_approve_9(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Continue") + instructions.new_request("Continue") + instructions.same_request("Sign") + else: + instructions.navigate_end_of_flow() + instructions.navigate_end_of_flow() + instructions.confirm_transaction() + return instructions + + +def sign_psbt_instruction_approve_external_inputs(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Continue") + instructions.new_request("Continue") + instructions.new_request("Continue") + instructions.new_request("Continue") + instructions.new_request("Continue") + instructions.new_request("Continue") + instructions.same_request("Sign") + else: + instructions.warning_accept() + instructions.navigate_end_of_flow() + instructions.navigate_end_of_flow() + instructions.navigate_end_of_flow() + instructions.navigate_end_of_flow() + instructions.navigate_end_of_flow() + instructions.confirm_transaction() + return instructions + + +def sign_psbt_instruction_approve_external_inputs_2(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Continue") + instructions.new_request("Continue") + instructions.new_request("Continue") + instructions.new_request("Continue") + instructions.new_request("Continue") + instructions.same_request("Sign") + else: + instructions.warning_accept() + instructions.navigate_end_of_flow() + instructions.navigate_end_of_flow() + instructions.navigate_end_of_flow() + instructions.navigate_end_of_flow() + instructions.confirm_transaction() + return instructions + + +def sign_psbt_instruction_approve_10(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Continue") + instructions.new_request("Continue") + instructions.new_request("Sign") + else: + instructions.warning_accept() + instructions.navigate_end_of_flow() + instructions.navigate_end_of_flow() + instructions.confirm_transaction() + return instructions + + +def e2e_register_wallet_instruction(model: Firmware, n_keys) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + for _ in range(n_keys + 1): + instructions.new_request("Approve", save_screenshot=False) + else: + for _ in range(n_keys + 1): + instructions.choice_confirm(save_screenshot=False) + return instructions + + +def e2e_sign_psbt_instruction(model: Firmware) -> Instructions: + instructions = Instructions(model) + + if model.name.startswith("nano"): + instructions.new_request("Continue", save_screenshot=False) + instructions.new_request("Continue", save_screenshot=False) + instructions.new_request("Sign", save_screenshot=False) + else: + instructions.confirm_wallet(save_screenshot=False) + instructions.navigate_end_of_flow(save_screenshot=False) + instructions.navigate_end_of_flow(save_screenshot=False) + instructions.confirm_transaction(save_screenshot=False) + return instructions diff --git a/tests/psbt/sighash/sighash-all-anyone-can-pay-sign.psbt b/tests/psbt/sighash/sighash-all-anyone-can-pay-sign.psbt new file mode 100644 index 000000000..91e523b70 --- /dev/null +++ b/tests/psbt/sighash/sighash-all-anyone-can-pay-sign.psbt @@ -0,0 +1 @@ +cHNidP8BAKYCAAAAAhb3mjFj7DfoPFTG4uj/bNiDjoNe863D39WWJ8lJ7CQJAAAAAAD9////+eIbh3yB4YYiVP0DlBwDkRIoVChMa7f7sR2KzcrqwLMAAAAAAP3///8C0jOXAAAAAAAiUSALjnSGvDBqCu+3p8AK8EBVQtsazXPuzKgnccz1/l62D1UmAAAAAAAAFgAUE5m4oJhHoDmwNS9Y0hLBgLqxf3cAAAAAAAEBK400lwAAAAAAIlEgC450hrwwagrvt6fACvBAVULbGs1z7syoJ3HM9f5etg8BAwSBAAAAIRYCkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfChkA9azC/VYAAIABAACAAAAAgAEAAAACAAAAARcgApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoAAQErECcAAAAAAAAiUSBBRhSJpDy2fixk85QnJ47dMMA9bXKkuJmGFHxCjwzF8QEDBIEAAAAhFur3ZTRDvsZUN9uh2lL5ypfiMXha9WYn6PnDEc9zAPbeGQD1rML9VgAAgAEAAIAAAACAAAAAAAIAAAABFyDq92U0Q77GVDfbodpS+cqX4jF4WvVmJ+j5wxHPcwD23gABBSACkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfCiEHApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoZAPWswv1WAACAAQAAgAAAAIABAAAAAgAAAAAA diff --git a/tests/psbt/sighash/sighash-all-sign.psbt b/tests/psbt/sighash/sighash-all-sign.psbt new file mode 100644 index 000000000..8144143d8 --- /dev/null +++ b/tests/psbt/sighash/sighash-all-sign.psbt @@ -0,0 +1 @@ +cHNidP8BAKYCAAAAAhb3mjFj7DfoPFTG4uj/bNiDjoNe863D39WWJ8lJ7CQJAAAAAAD9////+eIbh3yB4YYiVP0DlBwDkRIoVChMa7f7sR2KzcrqwLMAAAAAAP3///8C0jOXAAAAAAAiUSALjnSGvDBqCu+3p8AK8EBVQtsazXPuzKgnccz1/l62D1UmAAAAAAAAFgAUE5m4oJhHoDmwNS9Y0hLBgLqxf3cAAAAAAAEBK400lwAAAAAAIlEgC450hrwwagrvt6fACvBAVULbGs1z7syoJ3HM9f5etg8BAwQBAAAAIRYCkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfChkA9azC/VYAAIABAACAAAAAgAEAAAACAAAAARcgApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoAAQErECcAAAAAAAAiUSBBRhSJpDy2fixk85QnJ47dMMA9bXKkuJmGFHxCjwzF8QEDBAEAAAAhFur3ZTRDvsZUN9uh2lL5ypfiMXha9WYn6PnDEc9zAPbeGQD1rML9VgAAgAEAAIAAAACAAAAAAAIAAAABFyDq92U0Q77GVDfbodpS+cqX4jF4WvVmJ+j5wxHPcwD23gABBSACkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfCiEHApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoZAPWswv1WAACAAQAAgAAAAIABAAAAAgAAAAAA diff --git a/tests/psbt/sighash/sighash-none-anyone-can-pay-sign.psbt b/tests/psbt/sighash/sighash-none-anyone-can-pay-sign.psbt new file mode 100644 index 000000000..2d24d9070 --- /dev/null +++ b/tests/psbt/sighash/sighash-none-anyone-can-pay-sign.psbt @@ -0,0 +1 @@ +cHNidP8BAKYCAAAAAhb3mjFj7DfoPFTG4uj/bNiDjoNe863D39WWJ8lJ7CQJAAAAAAD9////+eIbh3yB4YYiVP0DlBwDkRIoVChMa7f7sR2KzcrqwLMAAAAAAP3///8C0jOXAAAAAAAiUSALjnSGvDBqCu+3p8AK8EBVQtsazXPuzKgnccz1/l62D1UmAAAAAAAAFgAUE5m4oJhHoDmwNS9Y0hLBgLqxf3cAAAAAAAEBK400lwAAAAAAIlEgC450hrwwagrvt6fACvBAVULbGs1z7syoJ3HM9f5etg8BAwSCAAAAIRYCkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfChkA9azC/VYAAIABAACAAAAAgAEAAAACAAAAARcgApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoAAQErECcAAAAAAAAiUSBBRhSJpDy2fixk85QnJ47dMMA9bXKkuJmGFHxCjwzF8QEDBIIAAAAhFur3ZTRDvsZUN9uh2lL5ypfiMXha9WYn6PnDEc9zAPbeGQD1rML9VgAAgAEAAIAAAACAAAAAAAIAAAABFyDq92U0Q77GVDfbodpS+cqX4jF4WvVmJ+j5wxHPcwD23gABBSACkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfCiEHApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoZAPWswv1WAACAAQAAgAAAAIABAAAAAgAAAAAA diff --git a/tests/psbt/sighash/sighash-none-sign.psbt b/tests/psbt/sighash/sighash-none-sign.psbt new file mode 100644 index 000000000..e6acd46e5 --- /dev/null +++ b/tests/psbt/sighash/sighash-none-sign.psbt @@ -0,0 +1 @@ +cHNidP8BAKYCAAAAAhb3mjFj7DfoPFTG4uj/bNiDjoNe863D39WWJ8lJ7CQJAAAAAAD9////+eIbh3yB4YYiVP0DlBwDkRIoVChMa7f7sR2KzcrqwLMAAAAAAP3///8C0jOXAAAAAAAiUSALjnSGvDBqCu+3p8AK8EBVQtsazXPuzKgnccz1/l62D1UmAAAAAAAAFgAUE5m4oJhHoDmwNS9Y0hLBgLqxf3cAAAAAAAEBK400lwAAAAAAIlEgC450hrwwagrvt6fACvBAVULbGs1z7syoJ3HM9f5etg8BAwQCAAAAIRYCkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfChkA9azC/VYAAIABAACAAAAAgAEAAAACAAAAARcgApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoAAQErECcAAAAAAAAiUSBBRhSJpDy2fixk85QnJ47dMMA9bXKkuJmGFHxCjwzF8QEDBAIAAAAhFur3ZTRDvsZUN9uh2lL5ypfiMXha9WYn6PnDEc9zAPbeGQD1rML9VgAAgAEAAIAAAACAAAAAAAIAAAABFyDq92U0Q77GVDfbodpS+cqX4jF4WvVmJ+j5wxHPcwD23gABBSACkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfCiEHApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoZAPWswv1WAACAAQAAgAAAAIABAAAAAgAAAAAA diff --git a/tests/psbt/sighash/sighash-single-3-ins-2-outs.psbt b/tests/psbt/sighash/sighash-single-3-ins-2-outs.psbt new file mode 100644 index 000000000..fd2fd561d --- /dev/null +++ b/tests/psbt/sighash/sighash-single-3-ins-2-outs.psbt @@ -0,0 +1 @@ +cHNidP8BAM8CAAAAAxb3mjFj7DfoPFTG4uj/bNiDjoNe863D39WWJ8lJ7CQJAAAAAAD9////+eIbh3yB4YYiVP0DlBwDkRIoVChMa7f7sR2KzcrqwLMAAAAAAP3///9zWd5vSCPj9qJ8WTucQPYsO8WJCiKhkJZDR4O4ZyXRtAAAAAAA/f///wLSM5cAAAAAACJRIAuOdIa8MGoK77enwArwQFVC2xrNc+7MqCdxzPX+XrYPVSYAAAAAAAAWABQTmbigmEegObA1L1jSEsGAurF/dwAAAAAAAQErjTSXAAAAAAAiUSALjnSGvDBqCu+3p8AK8EBVQtsazXPuzKgnccz1/l62DwEDBAMAAAAhFgKQgezlYWqhy5kxn8SHTv7kfwjOul9gBGNsjENAml8KGQD1rML9VgAAgAEAAIAAAACAAQAAAAIAAAABFyACkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfCgABASsQJwAAAAAAACJRIEFGFImkPLZ+LGTzlCcnjt0wwD1tcqS4mYYUfEKPDMXxAQMEAwAAACEW6vdlNEO+xlQ326HaUvnKl+IxeFr1Zifo+cMRz3MA9t4ZAPWswv1WAACAAQAAgAAAAIAAAAAAAgAAAAEXIOr3ZTRDvsZUN9uh2lL5ypfiMXha9WYn6PnDEc9zAPbeAAEBK6CGAQAAAAAAIlEgaEmQnCLZJcKrtpXBQGIWvtL9aEdSTcZDdPa+sr8VmH8BAwQDAAAAIRZqOZFvW8uwbi8/4lpNmxK0CS/IGntnzSXeRuC6EKU2BxkA9azC/VYAAIABAACAAAAAgAAAAAAEAAAAARcgajmRb1vLsG4vP+JaTZsStAkvyBp7Z80l3kbguhClNgcAAQUgApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwohBwKQgezlYWqhy5kxn8SHTv7kfwjOul9gBGNsjENAml8KGQD1rML9VgAAgAEAAIAAAACAAQAAAAIAAAAAAA== diff --git a/tests/psbt/sighash/sighash-single-anyone-can-pay-sign.psbt b/tests/psbt/sighash/sighash-single-anyone-can-pay-sign.psbt new file mode 100644 index 000000000..6dc3e39da --- /dev/null +++ b/tests/psbt/sighash/sighash-single-anyone-can-pay-sign.psbt @@ -0,0 +1 @@ +cHNidP8BAKYCAAAAAhb3mjFj7DfoPFTG4uj/bNiDjoNe863D39WWJ8lJ7CQJAAAAAAD9////+eIbh3yB4YYiVP0DlBwDkRIoVChMa7f7sR2KzcrqwLMAAAAAAP3///8C0jOXAAAAAAAiUSALjnSGvDBqCu+3p8AK8EBVQtsazXPuzKgnccz1/l62D1UmAAAAAAAAFgAUE5m4oJhHoDmwNS9Y0hLBgLqxf3cAAAAAAAEBK400lwAAAAAAIlEgC450hrwwagrvt6fACvBAVULbGs1z7syoJ3HM9f5etg8BAwSDAAAAIRYCkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfChkA9azC/VYAAIABAACAAAAAgAEAAAACAAAAARcgApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoAAQErECcAAAAAAAAiUSBBRhSJpDy2fixk85QnJ47dMMA9bXKkuJmGFHxCjwzF8QEDBIMAAAAhFur3ZTRDvsZUN9uh2lL5ypfiMXha9WYn6PnDEc9zAPbeGQD1rML9VgAAgAEAAIAAAACAAAAAAAIAAAABFyDq92U0Q77GVDfbodpS+cqX4jF4WvVmJ+j5wxHPcwD23gABBSACkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfCiEHApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoZAPWswv1WAACAAQAAgAAAAIABAAAAAgAAAAAA diff --git a/tests/psbt/sighash/sighash-single-sign.psbt b/tests/psbt/sighash/sighash-single-sign.psbt new file mode 100644 index 000000000..bee912992 --- /dev/null +++ b/tests/psbt/sighash/sighash-single-sign.psbt @@ -0,0 +1 @@ +cHNidP8BAKYCAAAAAhb3mjFj7DfoPFTG4uj/bNiDjoNe863D39WWJ8lJ7CQJAAAAAAD9////+eIbh3yB4YYiVP0DlBwDkRIoVChMa7f7sR2KzcrqwLMAAAAAAP3///8C0jOXAAAAAAAiUSALjnSGvDBqCu+3p8AK8EBVQtsazXPuzKgnccz1/l62D1UmAAAAAAAAFgAUE5m4oJhHoDmwNS9Y0hLBgLqxf3cAAAAAAAEBK400lwAAAAAAIlEgC450hrwwagrvt6fACvBAVULbGs1z7syoJ3HM9f5etg8BAwQDAAAAIRYCkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfChkA9azC/VYAAIABAACAAAAAgAEAAAACAAAAARcgApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoAAQErECcAAAAAAAAiUSBBRhSJpDy2fixk85QnJ47dMMA9bXKkuJmGFHxCjwzF8QEDBAMAAAAhFur3ZTRDvsZUN9uh2lL5ypfiMXha9WYn6PnDEc9zAPbeGQD1rML9VgAAgAEAAIAAAACAAAAAAAIAAAABFyDq92U0Q77GVDfbodpS+cqX4jF4WvVmJ+j5wxHPcwD23gABBSACkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfCiEHApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoZAPWswv1WAACAAQAAgAAAAIABAAAAAgAAAAAA diff --git a/tests/psbt/sighash/sighash-unsupported.psbt b/tests/psbt/sighash/sighash-unsupported.psbt new file mode 100644 index 000000000..debe29306 --- /dev/null +++ b/tests/psbt/sighash/sighash-unsupported.psbt @@ -0,0 +1 @@ +cHNidP8BAKYCAAAAAhb3mjFj7DfoPFTG4uj/bNiDjoNe863D39WWJ8lJ7CQJAAAAAAD9////+eIbh3yB4YYiVP0DlBwDkRIoVChMa7f7sR2KzcrqwLMAAAAAAP3///8C0jOXAAAAAAAiUSALjnSGvDBqCu+3p8AK8EBVQtsazXPuzKgnccz1/l62D1UmAAAAAAAAFgAUE5m4oJhHoDmwNS9Y0hLBgLqxf3cAAAAAAAEBK400lwAAAAAAIlEgC450hrwwagrvt6fACvBAVULbGs1z7syoJ3HM9f5etg8BAwSEAAAAIRYCkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfChkA9azC/VYAAIABAACAAAAAgAEAAAACAAAAARcgApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoAAQErECcAAAAAAAAiUSBBRhSJpDy2fixk85QnJ47dMMA9bXKkuJmGFHxCjwzF8QEDBIMAAAAhFur3ZTRDvsZUN9uh2lL5ypfiMXha9WYn6PnDEc9zAPbeGQD1rML9VgAAgAEAAIAAAACAAAAAAAIAAAABFyDq92U0Q77GVDfbodpS+cqX4jF4WvVmJ+j5wxHPcwD23gABBSACkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfCiEHApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoZAPWswv1WAACAAQAAgAAAAIABAAAAAgAAAAAA diff --git a/tests/psbt/singlesig/tr-1to2-sighash-all.psbt b/tests/psbt/singlesig/tr-1to2-sighash-all.psbt new file mode 100644 index 000000000..8cecafd24 --- /dev/null +++ b/tests/psbt/singlesig/tr-1to2-sighash-all.psbt @@ -0,0 +1 @@ +cHNidP8BAH0CAAAAAaG4I9IzbWlLSTTvm25bfeF6BVE9qKKdsCouy8eppv5tAQAAAAD9////AlX/pwAAAAAAIlEgC450hrwwagrvt6fACvBAVULbGs1z7syoJ3HM9f5etg+ghgEAAAAAABYAFBOZuKCYR6A5sDUvWNISwYC6sX93AAAAAAABASunhqkAAAAAACJRINj08dGJltthuxyvVCPeJdih7unJUNN+b/oCMBLV5i4NAQMEAQAAACEWIS6ihWpc8RDmaivp1zUxR5P9vLOIsrjxPytq3pguevUZAPWswv1WAACAAQAAgAAAAIABAAAAAAAAAAEXICEuooVqXPEQ5mor6dc1MUeT/byziLK48T8rat6YLnr1AAEFIAKQgezlYWqhy5kxn8SHTv7kfwjOul9gBGNsjENAml8KIQcCkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfChkA9azC/VYAAIABAACAAAAAgAEAAAACAAAAAAA= diff --git a/tests/psbt/singlesig/tr-1to2-sighash-default.psbt b/tests/psbt/singlesig/tr-1to2-sighash-default.psbt new file mode 100644 index 000000000..c62b238f7 --- /dev/null +++ b/tests/psbt/singlesig/tr-1to2-sighash-default.psbt @@ -0,0 +1 @@ +cHNidP8BAH0CAAAAAeFoYcDSl0n1LNLt3hDLzE9ZEhBxD2QOXY4UQM6F2W3GAQAAAAD9////Ao00lwAAAAAAIlEgC450hrwwagrvt6fACvBAVULbGs1z7syoJ3HM9f5etg+ghgEAAAAAABYAFBOZuKCYR6A5sDUvWNISwYC6sX93AAAAAAABASvfu5gAAAAAACJRIImQSmNI1/+aRNSduLaoB8Yi6Gg2TFR9pCbzC1piExhqAQMEAAAAACEW6cabCV7QS1Yq/I1BaRk2ulc+tvaJvCNmAL5Po5JvZBIZAPWswv1WAACAAQAAgAAAAIABAAAAAwAAAAEXIOnGmwle0EtWKvyNQWkZNrpXPrb2ibwjZgC+T6OSb2QSAAEFIAKQgezlYWqhy5kxn8SHTv7kfwjOul9gBGNsjENAml8KIQcCkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfChkA9azC/VYAAIABAACAAAAAgAEAAAACAAAAAAA= diff --git a/tests/psbt/singlesig/tr-1to2-sighash-omitted.psbt b/tests/psbt/singlesig/tr-1to2-sighash-omitted.psbt new file mode 100644 index 000000000..046f88967 --- /dev/null +++ b/tests/psbt/singlesig/tr-1to2-sighash-omitted.psbt @@ -0,0 +1 @@ +cHNidP8BAH0CAAAAAeFoYcDSl0n1LNLt3hDLzE9ZEhBxD2QOXY4UQM6F2W3GAQAAAAD9////Ao00lwAAAAAAIlEgC450hrwwagrvt6fACvBAVULbGs1z7syoJ3HM9f5etg+ghgEAAAAAABYAFBOZuKCYR6A5sDUvWNISwYC6sX93AAAAAAABASvfu5gAAAAAACJRIImQSmNI1/+aRNSduLaoB8Yi6Gg2TFR9pCbzC1piExhqIRbpxpsJXtBLVir8jUFpGTa6Vz629om8I2YAvk+jkm9kEhkA9azC/VYAAIABAACAAAAAgAEAAAADAAAAARcg6cabCV7QS1Yq/I1BaRk2ulc+tvaJvCNmAL5Po5JvZBIAAQUgApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwohBwKQgezlYWqhy5kxn8SHTv7kfwjOul9gBGNsjENAml8KGQD1rML9VgAAgAEAAIAAAACAAQAAAAIAAAAAAA== diff --git a/tests/psbt/singlesig/tr-1to2.psbt b/tests/psbt/singlesig/tr-1to2.psbt deleted file mode 100644 index 5ae30e35d..000000000 --- a/tests/psbt/singlesig/tr-1to2.psbt +++ /dev/null @@ -1 +0,0 @@ -cHNidP8BAH0CAAAAAaG4I9IzbWlLSTTvm25bfeF6BVE9qKKdsCouy8eppv5tAQAAAAD9////AlX/pwAAAAAAIlEgC450hrwwagrvt6fACvBAVULbGs1z7syoJ3HM9f5etg+ghgEAAAAAABYAFBOZuKCYR6A5sDUvWNISwYC6sX93AAAAAAABASunhqkAAAAAACJRINj08dGJltthuxyvVCPeJdih7unJUNN+b/oCMBLV5i4NIRYhLqKFalzxEOZqK+nXNTFHk/28s4iyuPE/K2remC569RkA9azC/VYAAIABAACAAAAAgAEAAAAAAAAAARcgIS6ihWpc8RDmaivp1zUxR5P9vLOIsrjxPytq3pguevUAAQUgApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwohBwKQgezlYWqhy5kxn8SHTv7kfwjOul9gBGNsjENAml8KGQD1rML9VgAAgAEAAIAAAACAAQAAAAIAAAAAAA== diff --git a/tests/requirements.txt b/tests/requirements.txt index bf3db550a..d8554a27a 100644 --- a/tests/requirements.txt +++ b/tests/requirements.txt @@ -1,7 +1,9 @@ pytest>=6.1.1,<7.0.0 +pytest-timeout>=2.1.0,<3.0.0 ledgercomm>=1.1.0,<1.2.0 ecdsa>=0.16.1,<0.17.0 typing-extensions>=3.7,<4.0 -embit>=0.4.10,<0.5.0 +embit>=0.7.0,<0.8.0 mnemonic==0.20 -bip32>=2.1,<4.0 \ No newline at end of file +bip32>=3.4,<4.0 +ragger[speculos, ledgerwallet]>=1.6.0 \ No newline at end of file diff --git a/tests/setup_script.sh b/tests/setup_script.sh new file mode 100755 index 000000000..12278dae2 --- /dev/null +++ b/tests/setup_script.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +sudo apt update -y && sudo apt install -y curl +curl -o /tmp/bitcoin.tar.gz https://bitcoincore.org/bin/bitcoin-core-26.0/bitcoin-26.0-x86_64-linux-gnu.tar.gz && \ + sudo tar -xf /tmp/bitcoin.tar.gz -C / && \ + sudo mv /bitcoin-26.0 /bitcoin + +# Add bitcoin binaries to path +export PATH=/bitcoin/bin:$PATH diff --git a/tests/snapshots/nanos/test_dashboard/00000.png b/tests/snapshots/nanos/test_dashboard/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..38d9414f769088f2c86ad9cdcbff2f27950cd8fc GIT binary patch literal 466 zcmV;@0WJQCP)&I)G}(b@ugt_KXU9S%3$?C)XReARkSpC12uzhHnLBm__Gh20 z9X_CN$;QEJfFl0ZxI6$^`m6&O`y8)6c`PWOUiL!;vM+gIICe_rsG!j{dTrA3#hhS6 z$jVIk_NuOwi<>%NAps32z`Y5n0U=Sc)WKH)JzGE+b5au;fDR^F;W{*l9gbi-vtS`^xhCE-8KL+C2u+!Wu1il)PWqH+fdN)J)mV@*5pa+)PqKm6QYHj zedbD}hBIiz0-Me>bw`C(1G%xB2eqUp2h*Jm-O!pG$G~_CY9-7E8D;8`-lehVRCu$Y zJF!#hv5E~D{lj>G<}59w8`(BVAfjp|SO`ikNPeG4k|b&H1}a7(*RzP(QUCw|07*qo IM6N<$f`qludH?_b literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_dashboard/00001.png b/tests/snapshots/nanos/test_dashboard/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7abb49fee4c574662f60ad735930c42375ebc47d GIT binary patch literal 323 zcmV-J0lfZ+P)wLFc9P>QCK?Y7d41s!q|!rOCTl+Nh_v z7sX|^d-P-+$V>Gfz!jP5KSo1ps{b(bAQD!gNWMj08eynQTj#sYy-+M@@?M~`JMV=s zz<3e+W3aykjWFLkFfzA`415WifsqnV14bDq%Lk}$JN=*+Ya3V52_$ri_Tw`0y zW~o~dSBJ_)jqx$FVQ-p{pr~clG9JlqkTUKDen}9lbG=+9r&_RRCT`@ta9}o@5 zoGR6f6v&VngBn2&rF;h11n5AoQ(n^?5wLi<0+<0A9oYrVM?&+_T6|lSEB|J;2qA=^ ZvjZ`uW$88COrih)002ovPDHLkV1i+HiM9X$ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_dashboard/00003.png b/tests/snapshots/nanos/test_dashboard/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..e2279803e79ec6d6443deff45a1f9326b562e303 GIT binary patch literal 274 zcmV+t0qy>YP)D zPq`+h_bpEEKgJ+x(tj8nSi&r1$%l|}@K=b}8w!8IP1np9%K2s%)5~a1UA{VmQ8=+t z-ij#s)Pp=dqAA40(1ogZmgM!7LgYe8BW%&0oT%GTKL^%yGO*mni>-KbEu*nY1L z(89t8sy`0 N002ovPDHLkV1j03yj1`I literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00001.png b/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..62e8de085a84556c6fad90fc72bce7979328e04b GIT binary patch literal 378 zcmV-=0fqjFP)^3+RSMM!2I0d8)uki?O z@!ToHTyA@C>TS{)*#NrcgLrEiRo8OmrhIv56-(kZmC#qQJZs2p_g4?a=u$Jg=Y;R9 zCe+NjL@-wUh$&c$qjsFDZsMC?ZRAUp!PvT?BZ Y0#7R9g(dGA%>V!Z07*qoM6N<$f)9+W_5c6? literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00002.png b/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e36c073da6f366386ddc78d62484d87524a34d02 GIT binary patch literal 362 zcmV-w0hRuVP)!Yln=sZ-S|%JnvT3se*vP%P=6T>siFR2um_eP3Rz;4hiT2Anu51XntDO6 z+B-NtN*kR)UA5zMNs;lpcBKj}!0Db@! zq@Z8r&$Rz&dPumDj#o>?Zep&8lI>>_Bm{vgGy5tI003V30JfmM@{f!Wy#N3J07*qo IM6N<$f|eSgA^-pY literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00003.png b/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..81fc3c1f92e9a459d0abdd2a72ab4bf33d32ff9e GIT binary patch literal 427 zcmV;c0aX5pP)(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00004.png b/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..2df7fd9759abd54d7ee2765628b41df362534ca1 GIT binary patch literal 493 zcmV&d&b z)?QCacRI&)hd8E`RCcjR;_fNXSh-sQUSrkq)UpEJ6{Q%E6k~d^AIS3m2ODd{LvhBH zQPwK~6Ws8#kDr0Meo6LuPp*cueRlh=_F0O~E` zr9m&bsc*%dL)Uys;WK#3wz3L2mZ=5p2XZ4PcQ^?sbF9g3kCJwU%Oqd|)>Yz5tpI*j z{smGns~Bg7M6I(}0?Ke^g$a{pT>|puj9skt#ZGn`$17&O&Xj7|n0D^}06)!b!v}+S j(jKrRk$@lwg6Hx9M4gGC3Ns=T<62t5H`3f0$+MsvkUFY`i} zkc0lAvAhS$`tY@He#8r}6jdtRt|>)Hu_GA}fX%F*AGNc5sr*f@Y7xW zYcgO5sNiE4xS(_~_Ec}r^2|}&RfY%bVs8t~yHkij@98dZvm;ps( zBd9^i^#P1&X>4h+oI@mHl?W!QT%XR!oTzk`I(D-f6j0p{mkE<@9SW1CG8wfwg;LS- z1^X8y)r7jxT2QO@BG)n#NOR`AsINeEEThN)XBf8w$hFfN>+rrqvQL5vzg;SCOw?| m51I2b+gXP)dkB+$^ZE4m5TvPDa_U zL_T%}z~eQ%CF=S@^KU=$l`})kL@YF?lBP|norwtvxXt_h;K7<cUll28e$yBQOUO8&@SCr}iWPWf6G}|D#ldCp2o60q?V5F?1}o6f_@dk+Ds}Ief>s zLS)>2bXYJd=FygT`f{f8^o>dS>mbi(M*=KPkvh?(B%7Ez$gJ_)Nu{v8kcG(YNoWaT zYfCdv8?9cJSew@tsfkazmT#(1#z{ zbFr6RmMf{f3dMNC`mx@E4$HjfR5@)8w}=bZgxeY5&9Y)QDY`~0spfajcvuJEO3E0N zwZH}@t-9$XxFi7lNy|G(xTp0>GBV9b_=d{ovULxVyOW_>RofS?e#nJvR??MgFZvY|UQgvVPWTA+G`D!pPKEEnimC-?VMq1IUfX ztHCv=mRysF$ulaXRMU>r>;W7DhMhA0X>3lz00000NkvXXu0mjfoRHi! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00008.png b/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..79155363651e23922cc55a61669968a2a63c7f82 GIT binary patch literal 498 zcmVEIRM&M*1Q~x4|gZIUzFNc_pP-8RugKnGkShlTN?_y zOP*R87sC3iHA}jW`)~+BSwHVELPMOvG&IQUiJW>ozX9Idp0%+&x_0)*A>RN$Rv*Z3 zkDbw49995}{G}BPRGL_}qqgQ+r)tvmmb*JA+btk_ry&BZ&F}T=6R*}8kYeV1bN{p> zViY^AuCo$8_$60~Lg%DoWFaHZB}n=%$j47i&3ejBgcDGwqXI0efOSoe&V-Rng3VXKzX-DR4Fa{Q zwya;})i6B=cEx@0+m`>R{$%Q`e`hA3y>dkU)ru| zP2}g7tN^VH=rcM54fH{|uB#t}i5s4``@0I1z?uLK*fTJE1INaMBcTf5F_1lo{rQL# oTsQ&z^B*$*PdFe5g5bKm0Y1N@SocQ_bN~PV07*qoM6N<$f?*`z{{R30 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00009.png b/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_0_0/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..ee353e2af841eaaee071cba2507593a798fa89eb GIT binary patch literal 496 zcmV3`Om(`2GjZB3Y0kM2L?VzD*Oo%A##+LSoKwIF92u&K$lzfB&kI;ANk>om5>7 zI6UUf8T3m>G|VVzROyq%>c%i=1$fOhr&Fp57%N6GAgT7~{ZVt>@v_?E@+{kps5Jv) zms!h?iMD=-@txOvFWVv|uw`T2 z6|cdQ{Fhm1O)5#wkLlv;Q$;G>R+22|jz&^ZzFEl*V$1G=()~m0Zmp?KBaSS_|1xk8 zi@}8-BGzh~#fB{3pNT7)^OA?AQdFvis3^k5vDve)o&iS(s2JwzBmQA|1OlogxV98; zT5n#fj;g7szRVaH0mg2UkBs mnfGVj6tvRT!f_nOvG5J0KA~bci%z`&0000Nklhy*&H2B*--GZnlH5qEH%nEq>Rpf{;opRH>m@|> z9k?$6>P08~5CnFzcriE35)^Mi@F)BpF#3{G97BD`PK{|h^Nod(lq)>5 hg6RkV0002s$PZ3FC&;737Bc_<002ovPDHLkV1l_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_0/00000.png b/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..e61c4b75c7b41ef7454e44b203662abb81c97aaa GIT binary patch literal 419 zcmV;U0bKrxP)Pp=dqAA40(1ogZmgM!7LgYe8BW%&0oT%GTKL^%yGO*mni>-KbEu*nY1L z(89t8sy`0 N002ovPDHLkV1j03yj1`I literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_0/00001.png b/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..62e8de085a84556c6fad90fc72bce7979328e04b GIT binary patch literal 378 zcmV-=0fqjFP)^3+RSMM!2I0d8)uki?O z@!ToHTyA@C>TS{)*#NrcgLrEiRo8OmrhIv56-(kZmC#qQJZs2p_g4?a=u$Jg=Y;R9 zCe+NjL@-wUh$&c$qjsFDZsMC?ZRAUp!PvT?BZ Y0#7R9g(dGA%>V!Z07*qoM6N<$f)9+W_5c6? literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_0/00002.png b/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..df6ab5dfce60f2c49ae322a6ca859206bce4376b GIT binary patch literal 309 zcmV-50m}Y~P)Tu<#&DVdqi1`ioPr?dI6%JDD&Y#GT)jay!; zJMeToWB^NPJ#fG3`cG=pRKknsPoNlNM1LAgs1g0iU<_7*DzuW>>+rGXKC23CM}th4 zDC&L&nLWkRW3pByaNTWE)cxGR%{yVbE$UOW{=U`^hufWSH*~`+QG7F40o0X|54G`g z7)LJ}C5m~R48Wg8KiFLZ*!V{1wam3bi+igR000000HDnmCyLlqk8^#e00000NkvXX Hu0mjfH<^UZ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_0/00003.png b/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..81fc3c1f92e9a459d0abdd2a72ab4bf33d32ff9e GIT binary patch literal 427 zcmV;c0aX5pP)(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00000.png b/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..fa09ac376616b6bf08de71f1b3456759d3c4334e GIT binary patch literal 476 zcmV<20VDp2P)yQ zdQ%VQV88B=fhi@GO~xc~^XzD>+${iiTXj6GsDQbm6a$i?PZQgYEI%KtuLoX=8CQE* zuLLCcz~eCxxTaR?i9-OUS-zA8@?0(kZ9t}&`Y-H%GR+WAShEG znL6qr&niWXLDs8$liri$U>DD^E+(>e09tf;cG#^s>;Iw}+U2Hg|6J!sHv`HuXU0Qi5#V{ohGynBP|(A1L98&)9;^i?g0zpzgraD1VIo4m*5S@zh(4P S_bwy=0000 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00001.png b/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..a694b49ee020794edecc95c880e8ff5a5261c09c GIT binary patch literal 511 zcmVV&bHHXI6@cfR`}amLy4%Br$w_{{B=+(C8a(r=Cc( zwzTl&49+{9+CFS64nWsL4q6^pd!qyJid84mS{v9aMlm2s04}qBKd7^OQ)7=$j>jc;z&uI}aPO`D zRhh5@MDVc-Tu{3hd#YEmK6Au&k?8?@*lWS^b_!AG9sZ)-x9-R1gU-z7<^HlO5)50` z)~Av&xRd{K3a!asC+|XceGik67_VsYIanG?OYhh6_}6u7A?JE)0p3D}@J72CeM9Wk zO+4K392_i{ZqRsK4aGz5uLY5OR5PM3oVDUll;9zJo08|9s-dOI4cI_K`uRT+TRXG5 z%IIn#nkS%IRRvvYI`fr+AwaToqZoF8yG)4X&omJaTvcA2ZV=<@#LGa$;IV1NILFrB zkI~a$Ttgtm7%fP10&qb|!&2#70WAiGBM8T^H37bYz&n+T*~^?j1L-wdB@W?Yq7z~+ z;Vv%zj$8AyvD2zI|3l{ex#|y@Sk%{jk|arD;2S^tpG$M0`2zp|002ovPDHLkV1k{+ B@JIjv literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00002.png b/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..509768f3ff52e401bbcbaea205af2c94b123bcef GIT binary patch literal 523 zcmV+m0`&cfP)dO9b^4X4)6*41`^YoGyI7Vp;1cEDqaW3{g-HkTIa=@R82O6!OBg!JPE1bHscBX|L?++BW78qw z7MABF3}26WUo$)1M!Zz{L&JqQY`qU)`>>^PrXuv()Ml~`*V0=Tl0Z2S(p6d+c!lVr ze+Z`o&cBnPgh`Wmp;rdHQF#rwUgB>XS^nEv*-(*9(}(ySqh!wx(CJ2f2gLmwQ(V%O zFV4dfn~IKn_Eb9_UVco+_b{f%D%!`g(h>BL1pgs(X6UYYe3dcj%u6gKIr3{EXZahpQ)6a zjs2OsBiJ^xxwj-@a3z0{g{I}`!;SD&JA6*IHJ)Fef9Xw2jgQKs`kG=M8SN zVtKoNz{6Ot6&|7oY^&jLTd9H^I@LG<+lV21lTsC4;N^{FrQ27f%9*iTbzs$Yx&_y2 z+6fcwqBn6>=1y4rSE_K$+#R4d^Ui`dq^6GP)mo^#CnlQ#`&z8WkAZIn_f-V<~3<~iE* zqu4Gv;wKqgyySX_8A{#2nF;2^-xDzif*=US@B#3Ta;=Jl=1Bkm002ovPDHLkV1jZe B^}GN8 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00004.png b/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..503893b77e8015560663d761a30a3c9434681597 GIT binary patch literal 510 zcmVt-bbKy4kK!@0!Z5~TM7(0g>v)rwI}kgTrg^-+y= z!%em1X_W0ssyX9UiTbk-0Tguj7fmCS;u=CjNv4N6{fOKHqOsj@up&$c=VQno5QjYn z^3$;^+KYe+s6yUpg#f`2%W?Ed?lNeInyv73E_Pb5oSjZl*gE`zA5UDZD?sAR_16Bh zGpaZ?t*@&hbMQ_43k%JO&meD=$MogUxHIqaf-u_T;aRZF1e^>yR#Gvpv&NaGM^#Rk z1`Ty28)k|P*kuG^uH|B^JWHpDyJK(l2zHIWdFJJL6Be49s!s>FbC}$A@8L#!ZK1}T z@g2gI9s=!67#7q~O7wp}P|e!QmhxmivM^t!o+Ym695;lx{!r>l)IQnW>|N`UYFE26b*BgiwSU%sh4?C4lKis zbnjAC0L}I&ToVgX4Tm59Ad`r~%)QJ+B9T}HPk9uS3%5use*gdg07*qoM6N<$g1UU~ AfdBvi literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00005.png b/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..65c8634a801b402a08f1dc4f7cb4db7416102a51 GIT binary patch literal 499 zcmV>iwQSVU|MWGzG293}~1OZz0HKp+qZ1Z?p0{rPn*m6vnwIH3GlKFC!?i`GFLz|#Zny6`$Nq2#LMo8tFw#;5j9ih zuBVn?hOyo#{EpK;IBSSCF_)SggsSDuoWMbV+t?o`PnJj1&U)Ok2lydtpntu0M32H@ z28hsiS|vd=#d;n`EwfGWDhrYB>n`VJrv>EfWD;=J{lz~oJX?2wwr1`(_LuFEKx|pA zyCO9BPdsH6S`(clcW>ma17+)ekJL56QV$5EAlRxdh|HDR97toxvB^wlgV$2JZP7PZ z1W&h4LTBgeWA!1H zg55uD?T-t&lqepd+LV2dZ*b mjC}?9cZuUTj^jAaq`U!${1@#Dz`D@@0000_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00008.png b/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_0_1/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..9c7e7049cb3e9bcfb1601ec510ee465d38229d4d GIT binary patch literal 340 zcmV-a0jvIrP)b=%MgRq*37h4eRxPbkJCLY|1VIo49_}P}TKpH4$L<8?X{t;p zy+UQc_4@p%0?~E_&igM#?#L~IOHR(-<@sYotiy&C*Y&GII0yeh-p3zW9cv$Q0k>6Y_)5~SfP=m zSMUtz)%Ex|-o}7!H9hbQ(8{%C?kQVa?C`*Uj-J(h>P7(Y#?ZWvi?6}@n{fGLp>YTp myqR(V_$?>^<%seR_VWh!Pp=dqAA40(1ogZmgM!7LgYe8BW%&0oT%GTKL^%yGO*mni>-KbEu*nY1L z(89t8sy`0 N002ovPDHLkV1j03yj1`I literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_early_0_0/00001.png b/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_early_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..62e8de085a84556c6fad90fc72bce7979328e04b GIT binary patch literal 378 zcmV-=0fqjFP)^3+RSMM!2I0d8)uki?O z@!ToHTyA@C>TS{)*#NrcgLrEiRo8OmrhIv56-(kZmC#qQJZs2p_g4?a=u$Jg=Y;R9 zCe+NjL@-wUh$&c$qjsFDZsMC?ZRAUp!PvT?BZ Y0#7R9g(dGA%>V!Z07*qoM6N<$f)9+W_5c6? literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_early_0_0/00002.png b/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_early_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..df6ab5dfce60f2c49ae322a6ca859206bce4376b GIT binary patch literal 309 zcmV-50m}Y~P)Tu<#&DVdqi1`ioPr?dI6%JDD&Y#GT)jay!; zJMeToWB^NPJ#fG3`cG=pRKknsPoNlNM1LAgs1g0iU<_7*DzuW>>+rGXKC23CM}th4 zDC&L&nLWkRW3pByaNTWE)cxGR%{yVbE$UOW{=U`^hufWSH*~`+QG7F40o0X|54G`g z7)LJ}C5m~R48Wg8KiFLZ*!V{1wam3bi+igR000000HDnmCyLlqk8^#e00000NkvXX Hu0mjfH<^UZ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_early_0_0/00003.png b/tests/snapshots/nanos/test_get_extended_pubkey_non_standard_reject_early_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..81fc3c1f92e9a459d0abdd2a72ab4bf33d32ff9e GIT binary patch literal 427 zcmV;c0aX5pP)(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00000.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba8eab69b843fcf583cf4cc6cb6d41ad8ad4e17 GIT binary patch literal 370 zcmV-&0ge8NP)> z0{Av`TbZ1I28iGmVwnw`%R$bWcfoC7iEG~y*S;mL{aX;rPId7~2VUb5wc@!`hPmAK zV9{?f8QB23;e&W<1{Ldw{7^oxm10Z$O)d0MY-a;&$Nj}xjFvg8ror~E5Q6&%N7qJ`Ri|`0&W#eG+1>-o*$Zz>@ QhyVZp07*qoM6N<$f=nEwH2?qr literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00001.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..bc4c1180857fe1f8555683b1db5676791c33382f GIT binary patch literal 302 zcmV+}0nz@6P)Nkl50csnJbgJ_m3^p|((;uYELI@$`t*qV~(Ac+Qz5cA97(Izj z8Gv#<=7z`DdjmsMWszRfGv$7EU@2VXJhih$a)Ymi2o=z#GrX*JA_Sn@Mygg5mXG%a z-cE!H=pvm5;ZNQ8MGcK2FV&xbC^FTbMn`I@KN-fr6Luj_(9dCM1M0A0-!A#g!ChX3 zN+8MJj)2N}+__J8;Rn)9SeoOv_SVf}X#u#k!34mr{V!Z07*qoM6N<$f-Loh AqyPW_ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00002.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..8dea2c22bcc25ed79e48b96e126bc1aa84320b41 GIT binary patch literal 468 zcmV;_0W1EAP)JpQa>e)D4%D4`;pI zTj=Wy+BK(mF`=Yzh)xm@Pl3kD%@S~(tB$9Z6|h!>VnDJP)1B>(JYNqs){4gFjH6MO zD*+Q+@i@k9qOLc|KkLc$e3T}pgodiM#2^8OdB5GuU|E7xKw>kT<4#{2XSL6xq!M@~*C1V0y%E*G$*^WKFO#HP5>&B6Mp)Qt8YKHCZh*aDOsb-&mU~jpprb&2-@>T`ki_u z+PX}S3(sExZows>gTZSk?H?7^On@uo6)FxN)llkUUM~Z+v-J_IfP4|L%S~SCWKYOc zG^X-8)+a1JDCLwxB;|{X=-QDIWwu;D;BnCV^QCwNV%V0000< KMNUMnLSTZ~FV$!O literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00003.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9238bfd0487afd230784063caed55026867ce242 GIT binary patch literal 514 zcmV+d0{#7oP)S%NVUa{(UdiN$gD@HLv63MT=a-(2l?YO9}I2vWU z5=+Vj`OsW`1nTvdiB-|SLi&qq|!XdOe1h1gs24H0d`~WqDMMQ9$m|pr~us(r)rrS}g%WtXaR|EjeP^!_p+^O+0CO$k4bg zEdf5i17;&`Y7%~*lK=n!07*qoM6N<$ Ef~}D8-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00004.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..3e66ba977e96819e18bd67c6e8296b646acdd35b GIT binary patch literal 492 zcmVD2H1GewU9<~Zk0bDliiSz}CYvZCf>&OzAP9mWu;J(X^ED+w;aGD$Wk;;F zse}$^vft&D_F-Fb0J=IFK=OFA);a)hTXj6r*uYv*iUG+=-uuk8g7x)4VROb&FYA@i z-=+Zgo#V?;*B{xw^byRgR=9;7=YolscvLFE4tUu1$Su46;9FHw$z&cV4aP8h1 z-OGX%z=BU&;GojQ*pI!EdBZ82G^4dVoHx5IXzorX3P+p2>uSfV^$wst^L}&R?T8q| z+}e6qA_iCTlwHUt4JS+YMK;Ze(}Y#Vu_*@1X}_Rh7gCymCPCTEsN@q(j%(0F)>bO1 z%*-e=rfdjj0-!V%v}!8RS-9&V)}*vme-*~hsPs!Umka1PKQdQb!6yP>ZgTu~(|B-l9h1g|pyIQb literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00005.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..2b8c3f1ccc5759b76b0f12b8f3077869cf1f566a GIT binary patch literal 515 zcmV+e0{s1nP))c!c#RN$rFZ-@#tgJ=S z*A+L5lbw4RSCab+iphrQ>AeJg+(byQo`_CX)tEF*r9m#mj?&{ zUgD1hx}+4jQbD!y+@Miu<7PBWnuhNIQciJ&SIy4Fx)@Q=2E>Wm{*@;S*VNo|$OjqZ z4G%Fgsqq-&5MwO5(9jlu0oIT2Vr)EWH{la9W|PAFCfUQu9(epEt#Znf9|p))Nz4!+ zYm|0%;={#jYkjDg7M|7iq|Tc_tF1=wUtyPgIF94Y<^!Vrlf_lfS3>{*002ovPDHLk FV1n?_@?BykhXTu^R@Wk>ZJD#x%Y?b(q19OfTUW{>qCuo z!^7&9mr>@Gs5vWDN%gi54lQW+&%2Gt7S|9O*<^Y;ryZVWfHy9;W3W6-JLlt+Gr$j9 z4)Ex?6>WvX4p4zlS`eT-#5j&t$xY@krJ61GbT0O`z`Q#RQP?{DdK{j3x2^!xGuNyA zX;-8;Hm$F#B69Fa{7M&^6O|x?;Syy?>9shK(*uA<0>a?sXKa!2?C&n$ZV9UxxUf>1 zF^^OdAV*1OOrr$)zJ#TD5IeO(8}<pm!H+dbz$MFHK>U^^r{{b|Q&`U8f(Am(0XcC)9!II?z!5Q{m=lEX zp`$x0!eC-f*2K7cIsrXl#XKc$vL%Zuqp50;g}*;h9V@jd)z;u+){5%6$4p!gmeq}D uLEa5#X|yJw)FP_M_=Vb!S_}jNUxFvM64F*JJMi}a0000^B@VFr}nY#U?4ME8Pf7z|GejPcJLNT2YD#lI)D$A2!y8kHZ;9qpUZ==1f?- zk-5A(+WMvWcRc)!qmED)w$M}~Fk8`{0|F9on)k;82P>lM;C!622gFfxAh(`7qh|?N z0W9)PD+CCJSdQbYWR+=Jtq{q&;pyD$w4gaVxfryn-*EGVSL+T)HFLkYf7uZ+j$PK* zUCA7Ll5eR(*W^9O2h*(FhmmAYad=-v7g6}J*DtHyRN%2vR!9E#3=Uz(sEo!Enm59! zgW&or^pt?$|7#-i=HrY#W4P!H9>wQ(5TZw+@1;rwZ`H76wxazi$M`umG2WmxrhIwN}_kWNjn rLuW)H*-B+IGOTq;k|arzBuObRwux?IJknVl00000NkvXXu0mjf$|vRP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00008.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..a01e717474c57d15a68d96141fc87be387929320 GIT binary patch literal 432 zcmV;h0Z;ykP) zph9!qHmr(^g_G-$4w2#~0~wV7;_!KaP6e@cIUQ>w+2&3KH%27@B^8>fELa0*7dC{> zF*O0HG_qpl)^Kr09ZXHY6wF8;u#^D)bta#lRoxMW-oH-5(g+xjf%PCc39k+FZ0tCW a^9;TkbRbB3c^VY}0000_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00000.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba8eab69b843fcf583cf4cc6cb6d41ad8ad4e17 GIT binary patch literal 370 zcmV-&0ge8NP)> z0{Av`TbZ1I28iGmVwnw`%R$bWcfoC7iEG~y*S;mL{aX;rPId7~2VUb5wc@!`hPmAK zV9{?f8QB23;e&W<1{Ldw{7^oxm10Z$O)d0MY-a;&$Nj}xjFvg8ror~E5Q6&%N7qJ`Ri|`0&W#eG+1>-o*$Zz>@ QhyVZp07*qoM6N<$f=nEwH2?qr literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00001.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1d4f62e4653fe24bda5b27c3207ffd4184a905cf GIT binary patch literal 304 zcmV-00nh%4P)XaHh&&f2tQ zpAqOVE=|%jXEpnbc$JpQa>e)D4%D4`;pI zTj=Wy+BK(mF`=Yzh)xm@Pl3kD%@S~(tB$9Z6|h!>VnDJP)1B>(JYNqs){4gFjH6MO zD*+Q+@i@k9qOLc|KkLc$e3T}pgodiM#2^8OdB5GuU|E7xKw>kT<4#{2XSL6xq!M@~*C1V0y%E*G$*^WKFO#HP5>&B6Mp)Qt8YKHCZh*aDOsb-&mU~jpprb&2-@>T`ki_u z+PX}S3(sExZows>gTZSk?H?7^On@uo6)FxN)llkUUM~Z+v-J_IfP4|L%S~SCWKYOc zG^X-8)+a1JDCLwxB;|{X=-QDIWwu;D;BnCV^QCwNV%V0000< KMNUMnLSTZ~FV$!O literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00003.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..df33b1427d7dc8de28d888ce7fd4c4be6efe8330 GIT binary patch literal 515 zcmV+e0{s1nP)60R^pj0>8Rwxt-g+dIT-+w>T5;XdT^Jphh z+3qcJId9IJj+P(hiW4w3kprWMo4wHqxW~HFF^Z=_ zOXF)I;RL9_Wfz2?4Ka??tYuqs)OHo=3A@;Bfw?<{IP?y`_uWg+u0OU=}&GCr9#tUqR5_2bQpAa)WhD+U;^ zc!&P;4>Bao|DLDy-6jn=pCtJ^z5~7^Z+@aF6bgmU!w;(guW(t46yg8?002ovPDHLk FV1g~H>Inb< literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00004.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..c401bb3cc7f220510b20666ccde41439fa99abef GIT binary patch literal 499 zcmV;`(0{<~+c7ox8_8r6*BUbYM2 zk7@_-IL6IU)|+hKC?YEQT$6-kXn4W5*=w{;s{ttuUS_^8;V$t-Y zlDRwhJ>j~lY}HWWS<4Xu}G?3LHPh<6+~Q6)%(;4JK(|A9Gf*=T5cmdbIwD9PMMV$Zu002ovPDHLkV1iZA?}h*X literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00005.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..37a2e110ae897a310d937255d6a0dd0d27ec5e6c GIT binary patch literal 486 zcmV@P)Wi_W5RS_25bMvRm4oi5Ud2DzvqL`jk)Niu-vAqa`Y$!g83k~Q7<5OeH@mLo3MghsGI`r}M`C3y zR9ko4bdz0L86Twf7ZkG&35Nz>UcEEq?+9${W01B zGm$=!tz(|P7e_#ZNjB3ka7Z(aSf-o;w5$d4>BmRrn_fRJ5E6&{Xg)*SEY&jX3?Cxd`Zo;Gm^|UWeNs=T< ck|dYr7nyQYnkglK=n! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00006.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..305afb2df0ef084da06ee8279198ada86d7064a1 GIT binary patch literal 508 zcmV+!yLJwMmYolF3al`PNS#fFFb6@ zamiyZ>pLOmtP~~UZ65|HDA{M7MsSL2a1Bl}J(;r}%Nk(K^?=T@7}|I~rqlpC;vDc# z=SFlb1}lJsue6MVau@S{td)#1Kt-G_^XWWnx1iZO4e78|{RST|yjo9y%bDlJ{<3dG z7`Cjfr{Z()Oa4n1T9a=lU&Q0Q4(HOPjT)G?QW=k8`Xo@20U46l#WrJm@QY9knt+BsVRGk|)b-1`zaA)$BE%XtI0acFo~9`~ z3A=vAOQ)eTOJ%1A`MI2r?ktvF0jZ008zHx1q%Kg*AvX`8ZY%2~5W|Y1dE`K3l9~2* y(*`UR?<5KfH~&Lse|}wr+t?-cJxw`|vo?R87;1q{gfV{r0000o&Nui2P5~~Z{FiXH=tT~=iRzR%?#egKcqW6c5wc=rQ#pO|!8)0(> zYS%KC&w;l7i2j|g@y5wOWC&eof{`>^)}ALABw(8N=Zgl*Vrb)hOgRJW2syxS=dS2h z3@U&HpR^!AX^3$gTP1@`)QTGs)-_M(X14{&-D!wHt@?w$UbtF!0PUIkt^H+Z#5lIB zue;(oxRSfwQ))h$TObg(^*2BqDjwr~g#!upsD$ zTK5#m#yzKh2}(9^)mb`YQvtdiscK5z?<}bw*}kW+*)-_&Eab`+)TaOC|B(59JOPg5 bIQQiZZX<_>K|E`O00000NkvXXu0mjfw`JpX literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00008.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..738c7f0d4f0583a4f0d3458c29f33f8e468fa29f GIT binary patch literal 423 zcmV;Y0a*TtP)V&uPAA- zyNsXS)T@qfAGQ?-ph^*gxI4C7EdYnCxHP%3fw@9#23jUFdVP|uohP8E7ECxM! z%3Ekm3QpFGfnQl9YQd#SLBp!3ZWx9U@dbgQKZ?54 RS_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00000.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba8eab69b843fcf583cf4cc6cb6d41ad8ad4e17 GIT binary patch literal 370 zcmV-&0ge8NP)> z0{Av`TbZ1I28iGmVwnw`%R$bWcfoC7iEG~y*S;mL{aX;rPId7~2VUb5wc@!`hPmAK zV9{?f8QB23;e&W<1{Ldw{7^oxm10Z$O)d0MY-a;&$Nj}xjFvg8ror~E5Q6&%N7qJ`Ri|`0&W#eG+1>-o*$Zz>@ QhyVZp07*qoM6N<$f=nEwH2?qr literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00001.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..764943b8013505fcf660f16df372d126ad26960a GIT binary patch literal 342 zcmV-c0jd6pP){{Mr0&<7GnpoLO|mUz#DVWiZ0p~d000RRAaE4y_7HO}MT-ha{|LQ7C5 zo`ATmGxNvSIsg?(T7;kB8rJ@8fK=$EytMBg&dhx_tdIfua&|APoE0X3EF(#&S(cA= z0B>i73?Sk5gXMSK^^@8)6?vil1Xz)w{xk@wq5fnr2bQ1;Sz@yfb8f3g20eS!?DFs0g1i>8Muisx+5)|5+^OVii z(e5SnbPo3Gj+huJNj9-b;^x`VSh<@69&^>{w7ddxg%kslU7PM~Pc-uDq1xI|*p0Z_ z%DfT~;D*;@d`;B#Lmr=ZaJ^r$iz%k5)q3LKfYV05J*BZcx_0)*DSLn)yAN>fxe+~z zLk6heofa6VG%>d0sH7^>^_IIkS3lv(~CZ9&$lRJK)hGV#&sdJ-!+ptaD6S7yN_ z(~k6k8AAC=4w%BIHA^3;Ynn4X2Z)p34md=LLXiIXVf3WYy{%-#NTplndn)_@0000Pume==uxprrn%K6~Xipk*)OMA0hh6NpfZUxz1bSb;^T&to$LnLo%&@C#w$~ao~p^bPc zH;#xzjHN%VzgsUql4+FsE^7pnFI!0}jkYj1$V+5P8a`_Xyn1ddz;BA9cwF>{d$*@mvAc{Nx{G&QF~IBe00NN^B{LqHyv8 XL#mSs%}3ly00000NkvXXu0mjfkP7I< literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00004.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..cc7117303e4f36779848d6a4e1dcca5102883e4f GIT binary patch literal 482 zcmV<80UiE{P)T((JtIkDTuGYQ61i75nBi_Alc$}YnrBMnjF49e}Af^a5FaD4m33N z_P9eIXVGps&_CH%IRP$10l0{(quB{~iS{$cYo$9M~0AzSZEFv6#@i9EXUC+IW`6z{4A_)+-?Gnb)iRZJ%i3 z*tWi2mCnH{d6!*iPm~~Ax@oADh=yo$#^s!)nacGBXpht4OrY#!{b{|t#RRN$5Mv2& z-7(sdv9y~+{n|k+y|F_T$|j)qst?>}G%QT+{3Uy3aT4m!flDJwyL@T<?}k=`Qn->)hRQ97zPM<^(%!<1nfA)ZUcyrh`%jcUue}WK!K!JRrfC|E YZ*T3qhBVyudjJ3c07*qoM6N<$g8QxEpa1{> literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00005.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..66e2245410e6245ad3c36b28cd6d1e7875376308 GIT binary patch literal 486 zcmV@P)gh9qNH)sbA7UhN*lTB7}mA6f%x+oJnyPB@*Xb(f# zZ?P#fzpGI)9srvOJW*Iog&0|6l66pR9`|+0PH(HE+K$L|A~HJ7hDg8x9XJCth_zk^ ztxRO%Jkkek-E7H(S{M7Kj5c*9DKfz2Ho31Cg!L&LFOh3pxRdYq1D?0{0-tLjR zp_9?HS4nvmMF8+pxOuQ88o8l4rU<`Vc5SD<7Dt%2NXV?>hs1P0a|wE5-fxe=Q8FM& clH`~82NZ0VGRh2?Y5)KL07*qoM6N<$fWi_XG1i313~MvO`MP8Nw5AgCBgNq2lX<3#)?ZRrN`^<=JVd~yM;`E>)I?Y-^GWgliYul)|30%S^=9WEyWpqe?(t* z6q-w(dl?rZj#+J%n2*PB2tk{D-eH7?xDMCwAaf*gw&S@6c=LEsXL+c09*-$|fFF4b z^xC;Ix)p~NAfoTIii1iQ>wau)ncI*q=4iPO=gqzrkZ-3U0(-kZY4yUZ^$ut;^L}%G z**6jlTh`XQ5@T>C-x7t^#Bj1+&1=h}yz6PcRg0JrN|n7qPaoC3p-Gn1EUAfVpk}&h zG~yauHKGOYNL*%W0ZWi7;~-Y{N!ZHd%nhs9mqsWtQCORf$y0-eZR#4(jClef^>u$G6v)ww^}EI yPiDyMTVyd=T>OX3^_lfUW+oSz`#}%{r}GP@qnDP-Dy5hJ0000j literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00007.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..79172927ec3152d8d21c13b67d4488812656d292 GIT binary patch literal 508 zcmVNDuaHC?Jjotg+1NrMrME1ESy$JwADd3!U(wen$uBZ#i$if%#c(wdVi>~9(dTyI2mQ!h{~B! zyOCUeIokTc<==VtH_jGfON@o47@=%MdrlBQz%=jAI}cXG(!qR8=>c&l9N2H?W^^wC zDnNzZX^jBU5ZiI=l`Jxs*0mAYy5V$gc3MErPA&#V)o=Xu!qvJ1tUYtT++X&K6vvkJ zbyp+@e~JIH3$2OYK|Yn&wLYxgJbRlq<5*s%YBs5&v8c4)>lkYtIxL?goh00009LI4Srw`xH@ykkrn{C6(i6>$W z-kWLf#d*bv?ZdX>08~xXKsp>-E*5}SUv)fZ&j!{?p%{>4GkShlUpL&$W?bs!awRzZ zYn#`2chvPK*tc%|m6M6c6kS}Cs+B|_0BY8+8+BIO)Y#*~@le?V_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00000.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba8eab69b843fcf583cf4cc6cb6d41ad8ad4e17 GIT binary patch literal 370 zcmV-&0ge8NP)> z0{Av`TbZ1I28iGmVwnw`%R$bWcfoC7iEG~y*S;mL{aX;rPId7~2VUb5wc@!`hPmAK zV9{?f8QB23;e&W<1{Ldw{7^oxm10Z$O)d0MY-a;&$Nj}xjFvg8ror~E5Q6&%N7qJ`Ri|`0&W#eG+1>-o*$Zz>@ QhyVZp07*qoM6N<$f=nEwH2?qr literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00001.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c0e9ce050ea9ef014cee1f430ff7f8f7b3978b05 GIT binary patch literal 342 zcmV-c0jd6pP)L4PwJ&%+zam;Ksp)TH>2Qcc;6VrU?y0FW@5b$CkmgNKQ@rau&qtn z5}CNwHx&gsu%6=7!?T5YuU7r7Hc(?Jp!p>%IhW4`BsG-&5p9!D`w}jCKO7y8d%^gx zi`sCuXF>ikLKu>INniOWBQl23)d@hneL02IQ(J#NoLW3|mY~>N4ePb_{}uJu&|HA( oCD-2}6I*5V{sRC2003|@UoZLUDhXb_9smFU07*qoM6N<$g1;e_2><{9 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00002.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..10ded984eb9ff6a0e89e3582a9dd17c7c576523f GIT binary patch literal 479 zcmV<50U-W~P)P$PFJnn zTjX*M>NO`@7&(%h(l-)MkB-K|%>r;AD^8~r6_6|BFfg*})1BLfEdM=JUw1TCcbxPx zF9dAxj-SVP43zaD+GoAFUe8>`5Z6etmKX$Jn)SCWcb0`}<9JN@53pm80q&iwzmun z7!bv%OS{^wnpKLx$VhiMTCGE5yRsD5^H?JQ0oG@D31nkRc34lZ1uPSQP>Vs<+ZQmI zSZdmhQb#}pAkEoon#)FTAV}gm*E=hU@KxBO_%khKkT+I3f_{b5QqwcQaUADbya5H7 VsTd5~9ku`f002ovPDHLkV1hfm(;NT* literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00003.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..8d86eb7640b355cd43ad8acdb0fb7e214a5d19bd GIT binary patch literal 514 zcmV+d0{#7oP)5C{YU0Ux|y-;X*I5c`(fQ3?{Z z%@n?!opOhx)DP>59nd7G12v1Qquvg9__C8x+Z(tm#%W+CnSb?@>jlx)9YpoSaVy)I zSX>U~yZZ9ak=H*~{g$Ucb0Ua{=r&EsinASw0S-7!`{hZE)h8NTe6T+bc>~5F`v8xg zYF`xtZh#0Jc7X{>6JtxY&Mae&NEb2OVUuMGmfXpOVej$>9X|Cw&JPqb=R5nC-I1W! zWp$ku;e#{rD^cj0*cy2ehIxLLwuxP)8=q^=1Xr+Pj%X=Uc@7FF7X8U_ER`o})U*OxV9qr|2wzP~?e5a&?|lcqUtUV7ne{^J2NQGeH#kTScsf9F&Q^AI8K zr?to|xz(;b7o zOgP2erh|&`akYKsjJttJYZqGI09A}TNGPzh$v7-aO3r;!2rJG3TCe>Lu!lvkq$wTb z5VwS*C3%@Ta%e)|c{t|5&5OsI{~>dKgaZPBK;U=r0bU}T;qc{TH~;_u07*qoM6N<$ Ef=(&pumAu6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00004.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..d68d18e3c5e63f576b535be8f6b0ddb82f688fb6 GIT binary patch literal 495 zcmVH9x$7c&ccY)0@G2^eGfPB&441jGy7wjcfJiUZI!kb;`Wo4wWnc-X4rseK#B6`>fAEaYdOxmK{gRx~ze9QCqX z34Lq|fX8$E80vbH?c1OB%8P-DA#|=uO0qVp))R*S46}ZJmd^4R+BqIW_5eRp3~=w* z8QqIR2C(3r7C7kWV(iCW$-LkkUuj0mJ)Dc379?jU6NTE>A7%H%*}4K~&0KHpPy0oT zVbj{WDiMP#`Ic2^PX0T2XS(S=EZLls-YnL;pV#CIwHuiwv`Zq)wp$4o27pHqY;B8` zX^KfSV71LUrJ|@QFBwT5I}1nJi&*o@LvK2pcuwh#!uLEts{+7YBWe0)*z}|~PxbPp zV_4A;(h5NKMN#>piRM&F^g9;}j&}t?2CyzTZ!yRiI?B4oGeH2Hyl~GY+Z-4GT5V4) zwC;%a0Cu&djgl5xOA%I5fdQ1}GUl_T8SfG8a@| z2RhBoF1_rZr1sNEh81f^?-aCYHhN9TW!o`D9JnWjodKh9dvG@eM6;b#^ZUqn^bWw0 zkTH;>1OrnJopcf$5&(SCVh1^MS}P@>F(WZHRAVk%=fHD!>NstP_s)keav_@)NtM@0000VS8|Ctz1L}>l`P`(pp6dN|6v8$8j7-hxhCJ6?-y`ZNufH6QK&n zTllndUcggVTnHg-`}gAgIe{6}>*Fts5GP zTOL|jE(G-%wMvS&eHetGLqF><0z+JbX<(4)iJbLVegmx8_S{$&QycqZ$Tz@_=mY-g z*cDxi!45#-zqE{jQWNubtnC^5WJ8MHGI!@<*@7f@QW4lX{E@5mb3nrD&y_3NwXR2L6EEsm7JclQ0#aBH0PE!H$x^ zQpKSX{5M5BMacmwx}p^Vv=OxqI!ZEQkLF|iR0u&@8f-fvCpMz({oDWE^L&lnw5y>^ z0a9*R-4L9v<*Ie9{w2T=grGy4Fi59!qGIlw_P5Y2lPS;3N6?mF{3mKz5GDHlCA?u-kRqT$CFQvM?v5b4nkjKHaHCm;)YT*~zGRML8=@GKEsy(fdQRb;qE&(yrwbKxWz0)7`^}?rh2WT;KzrDZgiUh@$ z)pb{-5AMXLM4>hD-^i!%8s}l+5_lz!<3U1c)^>^re>=xwcJmIm4Ph=B?XfG?9<3 z7XR(9?L19HF|pO$~e7rL!(#0CBU=seMJ!2Rcl5z~O+V=9)=d3u4`J zMLy(yd(EZG+cy;O-fAZF%zGDJDH$0e qXn(9^pf~>@^ZrN&Boc|l=i&wOz<2}loI1(?0000sxZE5XBm zw0Mm#MO`mW|Bk1=a%PB`Pzg<`))IpREc5<&@?g!G#t}Ep$C5q3j+_JBx^_g5VlV?l z@J_@I4UX1G_z%%&dp8>J!dBsg|posyxH+=-2t>_?l<<`ev#mqTVHo2a&RY~ zvI_a+Z;%h6*Qac6Kny7%Nxwb1%F}7IcB7V@`kk9&B ipF|FVAP9mWrSuDCf;cHH{aG0R0000_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00000.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba8eab69b843fcf583cf4cc6cb6d41ad8ad4e17 GIT binary patch literal 370 zcmV-&0ge8NP)> z0{Av`TbZ1I28iGmVwnw`%R$bWcfoC7iEG~y*S;mL{aX;rPId7~2VUb5wc@!`hPmAK zV9{?f8QB23;e&W<1{Ldw{7^oxm10Z$O)d0MY-a;&$Nj}xjFvg8ror~E5Q6&%N7qJ`Ri|`0&W#eG+1>-o*$Zz>@ QhyVZp07*qoM6N<$f=nEwH2?qr literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00001.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..a3f1303bda3069ef45aa8dbababb3c824704f390 GIT binary patch literal 312 zcmV-80muG{P)@BhGFxC;^_P)4WWw4LX>FbE}L{|IGS2qA<#mDPFyBaZ!SubXy?Qj&}* z4N$hPiTUGgy?{$pVUb?bGx>fNU?|+>yKCp3o|yY+h!6p-JG)n_o(KjI(@2$S!t%0S zz|)Bk0V2KqApEWyKd4MO@St|d&8DM!=L zR1LUr@t&H74b7}yW!hJV;I__oy+kDd0000< KMNUMnLSTaG=7)0t literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00002.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..d84ab2d8a765248e0ecb3d6293241ef7a7d487d4 GIT binary patch literal 468 zcmV;_0W1EAP)|?}o?aY{mAeJtYO9W?7Zp$|N--cQ`gCWzBg?-J*4Gn*V#c*z z)++%CKJoJyH$z=-ihbV6^?cAJOkC5d^~50n%dFq-)L9-&JI7ww{%Y z!GH2Ar%+7(I(cIrAH0WI4J5R+0C;3eF-&Pp5$dD^5~E&Jc}- zYi_j?@A1v9YDH+!>>=iBLYpFLA_V|<){4xz`0{S3Im;_ds(|`fV6QcOo0Gj)HCbQJ zYBkRtzQCB?5@e7y%&|aY9==0_+(M)~zz_HITtLY5Ns=T6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00003.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..a81de684e42350f8d069223e44ed42fc35605422 GIT binary patch literal 505 zcmVp zBzk+c@a0^zI~=Wl*jJnYm!SZ95m$S&6Y$EVlhIonI4j0sU?dqo`_9dR80$czy5o41 z?If0zgYl`kd`sl|!nc3>kxxzx5fkCiv{amSBnBklHt+X?1}kP7M|^NTZn*=-;miT< zeKfu*2Alv9xa@)uv?0ck@{Vk4j@T|@c)}KYEm+=8DTLAKFWUX+d0Zc;X0EsQr(KcY z*tEW`ips&0_%BsxPAEaXEeAk1RaF6_kSA)H+^GGwu-L^S%0ycnD0IDE@7i1~me5>J z07L(maBu6`_moQu^TMd4259kjVAsMK^d`KOj0z<_0UN6lzyz)>;syddgcGMkWY(hZ zlp-vd2(WP_lBfb$^JxjWHg`^Jsd{dN(Q=X`X+LcJV%&aEQr;4#+Cpc%CFB!TT`25- z%%9(Y39zV%E>}b<;^oDN7|)8zARfd4{`l2UwF=o)NzOwG2w1$u1iqr%0%dnKwzN1B v->nlpfhWQr|3hYFgm1#3RE0vJP{_k49WLw=t!}qp00000NkvXXu0mjf;``$j literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00004.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..0a862b64d659944c14b9f06b5757273ee0fdb6fc GIT binary patch literal 504 zcmVW}66GeKD0>`%r!+wl}5$R#DoCcX8rlb&YGcmay)LS0rOB|AkW^L z(Oyj00W9Q7D>w+cSoWirvK}~)MUB?sKL#9t?$%(PI4Au}bTcRNUFH|OuG%?7N*dkwn+1+(;i~5=cPtIhLRMmFr()cwI|kkVmE7`t08M2(-x!sUSYO1 z#qu7Fv@-TM)lbNBHU3v|?HIHK^_6ExO=l|tW{o$hJ-jl|!OG?xTbyEA)H3N=U8ot? z<38%CtMM0#T_8Ha%E%+|*Vsq9p~X|xU!8HKSFg@|53u-`U^{~9xk1gcuXEBP!_`tX uI;i%sp=2tA_Fu00005(`~DByi|$2tQzC-DD8{CI)9Ivm0KrpeNJ*^@kK6Vt3p?5 z&c){b%EKwxwz9dGBw}zTU$F}<%hAbOp;&sue95yQ>DjkkD7BKb=zy06s#MCUf%em% zl92alw*1hbNiJ2ZW`vr0Zq<%R5M#iMQ%mA{Ts9O>Vbc0wLbUiSDK&4Toy~b~Ngm)o zz?*PuevPiOqVM)RJ73GZlz&T#5T!cR-e^rE&jD;WKmdxHxPj__HM^pL$3XvkC7&X@ zTw0DTN1Fh&hQ`zg6aGMOe}y8XPYXb00000NkvXXu0mjf`9$xQ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00006.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..f675b7fac5bc477130fdd493b3735176320b8098 GIT binary patch literal 510 zcmVP`m0$BL4tbFtxO)bAUq^yK+!t$@{(nxaRqkErX4 z!t9dgTE;sOZFc1)+1EAO}>-qk) zGZF-wR@PN<8+?*q*@fohUCEp9nO`r{lIlRs`+17c7WRqLWDk*PO>t^h^W_4Q-jqV# zTN&-iSUuU&0-mT5!*WsLNU5n8UV~l4;^C>z_|dZzQb!{m7o-$7a%1Anc@sXhu{7L- zxl%++Txklt2J4-G;!RA~R7BBK`NoQPBJQw8dPgEzNqEByfG>QaR+6A*@JF;*@T4h*Cf@s;|6dX$N63U0Rn$^c|Ffn0RR9107*qoM6N<$g0gh( AegFUf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00007.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..a27c31c487c4adf5d45ee44da6dacd09b1362fcc GIT binary patch literal 487 zcmVAosayo-{-4PQbN0K6aBe6K?hFb!jbJgk8vI1&_90o?JEBbuYSa&=$S6mroUWuAB zP`jSF{F!ZO8!gr7Yv5>1wUhS?fTUjn7tFSlk$D_He*+)g&;_ z_gg?02)NYbCm7jeivV84%Des)gic^W%w+u$d9bgQ`(M$p>L#3%=M^V7y<#q?+qBVG1M5=r$0QblSY0}KMkH%5+ zXC;+LfJZb%3k*=!O~+QSlEzx+DnK+E)o%;P6X{c_wmk5N?tjO&R`Ziz6HV;7N`fE= df*=S!%^NeRrzr1zXMz9#002ovPDHLkV1l^;;I#k% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00008.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..9b94295636ec3eb5eaf6dc07a62a0affd46ae533 GIT binary patch literal 418 zcmV;T0bTxyP)EO$88##Q0qP8hCb4eq(HCBLI@#*^x^sV{Hh~Cqi(vKaG|Wj z`(@gDa$R#m|FEw(0Zj`jNT*}Z%@T0yYc5ae-oRcF4g({z6+J)MSSuQ<6_-X?ZUmQq z>*YD_9c{fi{9CvF#-oLzCAx$rHEW4M0^Gb`w>Vh3rE$cK^WpLiuw%~w?)9zcRt$DP z7W}3K0SZHmS9nk{T6o*yjy1gJu~O4{bBDYuVQm&d&N?fk_RE-C#IxXnriSIZwmX0=x;&pfjBzS2-7T_>p zovt*+9hU?gv1q-+P&EVM^DjT9N7@1Me{#}H>@A9_Cxj3}2q9PS0#c7)_7^>G!T_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00000.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba8eab69b843fcf583cf4cc6cb6d41ad8ad4e17 GIT binary patch literal 370 zcmV-&0ge8NP)> z0{Av`TbZ1I28iGmVwnw`%R$bWcfoC7iEG~y*S;mL{aX;rPId7~2VUb5wc@!`hPmAK zV9{?f8QB23;e&W<1{Ldw{7^oxm10Z$O)d0MY-a;&$Nj}xjFvg8ror~E5Q6&%N7qJ`Ri|`0&W#eG+1>-o*$Zz>@ QhyVZp07*qoM6N<$f=nEwH2?qr literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00001.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..a003218b92a057721cfb92c4a2c569827d640a71 GIT binary patch literal 342 zcmV-c0jd6pP)=!^kPrxaDQt zfv4la1B!6#f%{e0zf&)bATQLP04p-opGHAys6QEufhCASmKdzV$Id=hOd*`w=H+0} z`W*4sN}sP_FvW}Mnpne$l@{tYVsoxl-&;mwcM{IC_W2n~QEiT% z;+x5j`#m6N9fv__-)f_&X?@ESEJ9Gac+!YCyNsG0SR~`d#v;$^&qBEk&2Kd}aT_Xr oJFD+)=4?X&0000001**=0eThMJZue5mH+?%07*qoM6N<$g1j%56aWAK literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00002.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..7c54fdeb4b4f7bde8d23d034a758356376719bbf GIT binary patch literal 486 zcmV@P)q%HQV;||5RBpV{CreP@X*$rr)(}p zyFF=#bFg1`s)3P~WD}buZk`j3ox2s_KGvN~uPR`zkY>PA&FRMNfg(R2Vy+Dj)fv}j znRfyvxZ&q9{s#K`C&%YKxn9q@iy^6L-Fo6sfN9a+9(A%jx^}L|lrzAOtp@n*+!?(W zhZP`#Pg;YNA6XxzT#G$qMy?(v$YP|wz&%EB;Uv@-7V9UmO zRiXypWRuV?+Bn2P*h3wr{ z0MejWX`&bHk65XBRadBdVJ$DO)%VKM12H7NtvZTcck}M+y^J!wJNb@iw%|Xt1w+c5@({iT^wAv!@F7(F cAPCOD8$`gU!U{nnYXATM07*qoM6N<$g4KxMsQ>@~ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00003.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..5437be487cf11631ef65df102157bad3b39b5f0b GIT binary patch literal 489 zcmV zdb>;N=}g)UN9iB-6(?ZGkO8fTcSpSw@bab8(V83BE2J9G6#92xxn59XZ4h=>TpeYe zgh@Hjcg^L8Bi9>;f9vK?E({41=FpT>HEkpU5^$RL>n4L`GmRr2oR3rPfH>?qz@wMO zw~K%spaLJeAOvNIaim5y%QHuns|Zin!`>E{cPAG@>*FsueCd9CKG2!@ytRMZ87Yq4 z*4L*Zb8sd8%PDkE{0{P}4CC^0AMFb3%Y5{P7y7EjmVWI?&89jtYDMJ)aj?AR*xEao zhct?NmO|d`Z%=k=RT8p?+D338CMu)4P{Nyrw}MOJgI`^MWcj9A0ks>q*trC#F1Cci zs@kh5)h4@O;3=H2tc({?|}&oeJTE}o4;~k2$<*#&90R z>+7s!4*tnqcA+s5f=rg_rjB5%a3?E%Ysxk9WS0UrEldptzIjKQBO_*;Z}%ClWms$q zb-N_GVQmnJcJ=Fw#jgx4Q1Vn6|Wmu5N8eZ)cO#-t~vN>w-G#;K5TYS--y_rxXD#WlO3 z%2(E~GxorrO5cgZ%0Yl?B}$!tDPLO0gwg{C&#%Wls={k-K@*V)NRlME ZFCYAZg^o%TXgB}>002ovPDHLkV1igs*(m@3 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00005.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..188d64046e2da1a6edc42d6ef1311387c69146ef GIT binary patch literal 512 zcmV+b0{{JqP)bb6rFn>|}=#VH0PnLM`LnOIp1 z)z%%2)x|EY?C-?-*C~b-YiD!{`e+s%Q!;D^rih7aB5V(cW_xlobqvi`l4bWue~fm( zOr#IwTY`=$UtP2lOmP6-X|aKvIjvO^$W%QM>#CT;)-`y}P6NB``u4$J-{e5HD&v6Gj3R?by5>kDctNUJS)3HniE zxta_#M%;wUsXAAgG>Td|u-3}Qj@1@wH#hT~r=(HJTWTA$J3#h6BsHtyX*t80))l`<{&}cb4bb9b?B33tM|H*K{vviQyRFM&z)9<)x`LO+70`Na z+f{5Te0ox?m8L<9MK$AN#h4G)iMAw3k|arzwfP0XI(mr(*Q@3L00000tAQvE}6a+yK1Y>wTKOeQF@UX4BoqQmu z@cxs(?HreJA1f}Ul(xtF%j^01-YjGSe5^zBd@erRoaBCyYfrwHV#U}@XbC;~`oOhr zc&LUvUuC-xXtR=+s6YE~NI{2w-f4uVxQ3z2>fFHXJ z zc1A$4Wp%wOVS``tU$W4ed@u3_UY9CR@Z6@3!KIZt!kaB@OyrYh!chXwNY(@{NOQrl zu00P3V~7mtD0C6zTL!Y%x{dmDFybQCR{Vic(mcd*yeoOGG3<=JczZq_TeQ_1K)5=p z(Mp~erwS)I>dHcH#j;AWACSJb*=YvghK1%8R3Q)5j=Q?tF}Zx=@?+sTB-<1Snxkk2 zSma_{@;F{Y9(b9DHW>il%b4RmEVx$~}PZb+85r)4efcz$!oAcyjXgu+rJX zAyAzHRC3ziQ|G3?INB;9QqYf?^@q%|G#{m+Y!d{*`S}Akr+TYANxk|c9@KHeWw5;Xd{^VHo{ zhs#enoI$(cGy@|g$u2%g+?{kIECIK<>U8$90_F-S1|-!tdVSPbI~vV5PDYtmqUH?D z-N;=2Ow{$u=HK-`UwLDwG2shMQBr3s+VhHl1RUo5_1*?6!gO#x4%q|ZC^^7SkA0(i z377#Yc&7ycszZ$9*eh9NwqDypg!_i4bFtF`b9S1d(A)jiK0fhmT>-RauJ`Vrc0`I} zr}cGJG6(<3x2!_v#0YYIAv8;yxM;-`=F~C(s2wpHFlJpr)h2r}cFiJ(joATIW0=_O zweUqD-c>2a6qHo45u<9=|>mGV;CrbOyj>uWd@sskkI07uzdF_{@^F6I0erXZ~DUW|3p6Y!mXBsi)TG>9yG zn(_?p6`Xg*lI%>t$P68%HwUE7g1Ig+ViLmP88g5g8ktU%;$$`Ft_~Ns=Vr%L`uS)V3AJGztI!002ovPDHLkV1grn B>A?U1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00008.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..807bfe449596c02f655b679e093de4e0a8ddbb01 GIT binary patch literal 390 zcmV;10eSw3P)r z>C=mL)k*!szTyNl84^HW$DXStVC}1p=j_`+tyGEuNp?oh4;yR2U~$ILDAy~&)4%oh z8n2GJz8wB7TYu%5q0B^=&``CSC?sH*_sf@{sDT#9N?#8XLKtH6~Kc3 zv>-rfh;bZSC0Utbw$#%(*>0g`@6<)1^z}7=Y`9uy0Iiwx&3&_9#5iWw*IDr#+{sf` zA)6F}JU$0($B~}?Yq}I?Jp(&^p~5aG3_QoC7UNYfFW_SHwHL(sKRgM`qDJ?BX~+LQ z%p`zzb_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00000.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba8eab69b843fcf583cf4cc6cb6d41ad8ad4e17 GIT binary patch literal 370 zcmV-&0ge8NP)> z0{Av`TbZ1I28iGmVwnw`%R$bWcfoC7iEG~y*S;mL{aX;rPId7~2VUb5wc@!`hPmAK zV9{?f8QB23;e&W<1{Ldw{7^oxm10Z$O)d0MY-a;&$Nj}xjFvg8ror~E5Q6&%N7qJ`Ri|`0&W#eG+1>-o*$Zz>@ QhyVZp07*qoM6N<$f=nEwH2?qr literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00001.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ccbe69dc0e49f100fb1634a5ad64d5ac0e4ac733 GIT binary patch literal 347 zcmV-h0i^zkP)&0J8$4tHUC!HwRgZ@UP?eEFYTWX& zp1{-bkO5V={lNXM>p!WtMhGvWzW_GKi2gDvp+@u(<0001h5WcMB=kkx?o&Nv;002ovPDHLkV1iZ=pdJ7K literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00002.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2bf618ef1338566c2c553c3447da133245f1f129 GIT binary patch literal 485 zcmV5h`~DByMZ3t1!yx_;6>Af|(?x0!kxRU!6a+yK1Y>wT|9+|@Xl(0lhjtgO z-CN4(bdKu|o0w73*riPpch8Q-%H0BR8>>#H78Ot{Mlm3%`gCV|Aj`iG(bo-)YQ~jb zwkrV%-tf1N`#@bkWc$36>-FSA3~^1V))R*SOtXG_aA$c8?HrFOYk(hn4Dj2z8GRIo z3J}37EpQNZG4|t8Nl`|PmU}o?-{&60vUeJyu(kV*zh1an&j9*no-g;8osnSJvbLU; zh`}eh%2#Mj{yTXSUJqG^MLjIQS%3-WzoI;Cq#9DH!nROi{<3E#IS`ymog>yNQk3i)R0{yOZ&9ns zE}8n4pPU)$A(k0NXSYAlRHN-+=sx>rT}7yr-(mn*GiuK2_Egmp&}gWMWddMl>~Y;# zJy=7kFY+2+ejDmX|4k~ssr|)P0W?R%`m$GI_o^jmwq&v2j$rEHDNbsmiBHgni2wva b5L}lx1uS42R)Lfq00000NkvXXu0mjfu0+}u literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00003.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..c7fab7a468516c0218dbc28b34e1a1d5d6e6ad1f GIT binary patch literal 499 zcmV-zxv9Jf{k^JIP zDOcn}bNLmh>qYTz+vAlZL&!vPXrL;pb|eE5FwOgI$H8hdtw(%tKBm-waU40&XHSi< z$$%Zeq940T2w;fyNYzThGlv~#8J@6<-4;A|rx1m$e}CfXQ}^Tb(ay~4t^H-6h;eLL zU$08$;7smv3a!cCAaBfce;uaRL6lnas%Od|c_=JhF(o(PU>T7V>Q*ETx~gFGMx!)> zrmFU$)T?pcK~48qfzEdN8|y_3V z*&bF^R`fkf^;C7uoSyg{t~x^;!ed$y?16gpS1HKOtXHNZ50oGXKL1pcwm{{crT&eRhLQXpY|E57yp;PdoaBQ p_)fRD literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00004.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..2f25076ca4cfd5f7fe4d06bee43c5ef344faf2d6 GIT binary patch literal 500 zcmVH9x$7d?w~r~~+m3aLr?CX0p`O=2Pzk+7 zJED6Dm;oyIOA7*2h8V}Owg{Sjky9LYM$wlGl>v#Tm;n{ix(3*L@vA?WG ziebyzdQ~z9-{e}@}TTATnID(vHUF_qP9Eh<2X21txb zmQ8^CZMJ9hAjUSV^ZQqgr-nAf?khvW9=jRp$bW#-@NiYGd z-mBg+`_x6Ymq{h3s;2nO09l%6ODE18RwAi=UAOp8j&w>6l!Mk!$37y~F1dMKkCXo) qbABey0h`l|b{wH#T}qN9Nd*6mB&m8fN68NW0000y^}Am15Yj4lf(ktsD_C%;o+;^q)ISx zsLRHqlq4px@z^Ye?TXt7t8I=FUtwkpp(4tRKA9={Xt vQS16XO6^y_0SDdzfkm-6a~TK(0@uYqH&lhwtqiCA00000NkvXXu0mjfP>bk~ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00006.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..9ada3a41eb11e4d203925dfb5296f16a70f6c38b GIT binary patch literal 481 zcmV<70UrK|P)UxQM^L-2nh>_y33IqM`$4IF^~}YJQB05|XY~4zwsusi zA&;$W?}YRjH%rvwIRciTL%--{1TS$8)8Iws%*xqLscCU>UF?6s$hU@`x>^_j+ zj-Ao11VjLdyweH>Dorfgu~l-HshX(X3U}vXrv=N|sY{36=C}Iw#L>C}(we#6+@JP~ z2*sw=byd;_SMn>X(3~hn#;@@;9be7KXnkmQ4(jO)Eb1#0o6@X&Ie%BFXu8mWj(H} zS{aL~=5|RJ1_yK>IP!ZMuq$AZbWMNI9l-r1#D(E`hTX>Pqi~kxf{(0W`0{M%_oGEX z_kUL$q2tSjHWdM7Y0Ax}l&tn4E~{!+dl2$6dij2E9r4G|psivRwu{G~D^8OnNq&nL Xk%5(=$G0b~00000NkvXXu0mjf4TS8K literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00007.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9549ea56636940c2883c7dc62627976dc3a58019 GIT binary patch literal 525 zcmV+o0`mQdP)m>>}f}+x8NhA`9L}CnnzTdw?NzmA)&O@r3 zgtt#Uoz8K?QA~`KBvslZu{ud3EC7$O=4{lW0`>|i1|-cDJwHreH#8ouIPGQLh#51m zcOzr@HPF@zJHPcg-gq%kF+`hdHX|}x(aZ$`0&p7p^;tSAV(8#_oN@-lVT%FoJ$FTW z5wHVH;FA_ONV*vN(JQ&h>{@#w!n)z%ob0y1+?|FPY*l}h-51`iGXUkx`PTkrXJin& zEZ13)G5Ak>N*1~%{yKRzy2%S!VQUwb7IZJePYRpQ-Qw;j$>`Tv!N+8xsp6K!ny)z= z7DjOGhR)I^)~XeJbcv>+ro@k4s|eNVNL*pq^AZMB^hyNk@>ABr;%Z)UEZL}A+HT?a zK@Ji85|&R>nH=O)&5XzRLK~FB$%F&)(joughmj`$wai``TO+Z5*_P{@D@go&dNmNHs#HyK9p7s*5z81TX;1Jre9PvNp-r zLAKW!aX2!j;Z3(N+c4A#0dNX0{EfQ2f3o4 P00000NkvXXu0mjfWb5?5 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00008.png b/tests/snapshots/nanos/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..bbd751dcb46ded03ce314eb090162d090685de26 GIT binary patch literal 439 zcmV;o0Z9IdP)Y2=(?7=~f=;r;quMM==u_Bfw-Aktue zoA;g^SDe^BY%2~x)j$p8k7LWl0`Taoj^=1?V68C4fFzmG>qGjwp|O~8xtIA$aQfHY zp5xh3*Oy@5w)a<_43rGf#WlHFNdy9Lnf2SAI;(AH>~Z0ET(Sqq;bVY%ug&OM1XchE z-f4k@Vi#jS)=H8x#b}9#bFtF`=j_x)Ve8|Mw0q#yx&r8(xnAxMJ0rrdVQpO%i-9J0 zc?*rnzmqqjTYVpnO~i-ABx8;&&lQpfR^KQ({Sn+-rdU#~txWi)X5*r1IpiOD@U(dm)C#3UItHeorwUIVm5%_k&DmR84t} z0B~kb?y*3UIqrDJJiTgYa0jSa4(YPKXm7%N_`%5agRNryEtf;bG@ot7O#VY=ew0o@ hfx8^N4Z|=-_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00000.png b/tests/snapshots/nanos/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..06873a14fce7922d49264c5065fffa0772460bd8 GIT binary patch literal 413 zcmV;O0b>4%P)7W{Wv-$$qXtSTv8>Klj+5l|YabOvRoXVnTKGdWIf zDhJTdvt8x80Ve@YcafVNXBD{vX#2vTmfA?#h0v2+8y%vGfc+swmvs6!J04oFfJoba zvpq~T3pq}^BSB_4;U%1m;$TWpro9au%tiT~oz@PRA<3Q(@PV}hBJ*$nStwFacUo85 zoD~j#734o+h)PC_wh!7>kblGVgg>c~m^=k(?^FR!wCoPSp|Mmx+dorE+YIWCrNO|C zU4dg&@2lX?I=ViJ8}X4)SnWvMT2yCc)9@i?wc<1>0a?-g)#YGA#;OcwMYcMdm9fCb zGE`T(fSwb1QQh$b97F(zo)yjNRLBnIuWH~y5ClOG1jBg&4=o~CVV$=900000NkvXX Hu0mjff-$p* literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00001.png b/tests/snapshots/nanos/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf54452ee659d4aeb23f2f9f6119170100ca01b GIT binary patch literal 393 zcmV;40e1e0P)}T-~WNVs0&Y?H5jrfu-5-wbaF9Bm@I!w2><{9FyXa*y)O>sDK&$+c-XpM zRz8ofEiG%m+lgxP433|tQYgt`c2snK&8M)g=wLCDd#16{<+Tz|o-cY>n6EfanFTXX>u*BNRycK+{*)sFEdoIZW_IIH6D?-}3(q-lfn&5LHH>X<5Xa%W2+oOXXmb z!N7Rkh_UxF^!AGVRGvu1QCZ-W^-;me52F_^WzDiSQZrVnr=gnY08&IB-3o!V{@TcI z7T}^vLpu*umb^NTy&Ae>v7lsrj{LkZ9}%7=Qg7^r+3HsL-GB+ge(r)- n3j!6qTF}TS|Cs>*0MqdX$SL-T#utq300000NkvXXu0mjf(-5?C literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00002.png b/tests/snapshots/nanos/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..8712e685f15c60956cb6402f6d6c662039e6e63d GIT binary patch literal 515 zcmV+e0{s1nP)YhiAv-%^2G`=}#-m&i+2F+Y%2mL!h;v9$9 zRCWM>`+DcyaSm{Xp5UGs=!9rn(2dd2)=QPryM z|Ak1*kYEFex*_L0U_!b+kIp;aK&O3pHh3ffkDDR;?UR93=eRhizH zN04cppR+2oQ;XPfmRJGsyOD)MZ2%b8-7T5hcyh3v&58T7m7AyhmRJI+0bp-tg?1v} zf{gCrWI>;<&a;SK)_I~T!3F>=0JU2f9V072S7fue4N}rnF~~MpI{+EcurP2w42)1( z#m}s#WXW?2t=!+j?zQ2PA7lbDp8HpXiQRKQ5C{Yw$3K{mp?*88UG@L~002ovPDHLk FV1ig~>ec`N literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00003.png b/tests/snapshots/nanos/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..fb25c9706c8f9c6daedebde80d8f434d01c74a67 GIT binary patch literal 523 zcmV+m0`&cfP)QVpbh{t|E<6DOfj}S-@Wp-ARSE5TM!&D;BO8>p zW7T*KX?jAfrLa>0u0*Kycfhar04$7lPbJ4${WtKSTmj_ohC<{p`(iS#0IvHu{J2U7 z0JyIw9*=XtWXc`f;sZ`4^qVX3#FQ;)U=ShGq@5@E7&Hs^)H=X_1pvTtKA)fb+{eOF zTg>_ZaQKQB7C16lszrrJLfawC4ay1UMxTLAZodD~JgMQlFVJLzaR)x zhxI2TeDEe>7kU%D=P;SLlj&$87pthyfkD8L5Ts(VwnAc2&Rs~($IQ;i&lm^xBVOz* zkQ^ndD3zq*VW1+66l2Oi?Wv}a=Aa3bxh`r`X1}%kDA_<|XDtx3In4nwZ&iyt`BbHm zJP%MNK#tEPlZ8ejl3ns%mYCDfM8+jMsz$U-)hNw)T3DiFR7jD*RJn_eV?#-8I;V#u za3s_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_wallet_address_singlesig_legacy_v1_ui_0_0_0/00000.png b/tests/snapshots/nanos/test_get_wallet_address_singlesig_legacy_v1_ui_0_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..931a29c148d1d904f004d16ca16f4180ee44c2d8 GIT binary patch literal 466 zcmV;@0WJQCP)iq2taMm>Hj~thxUVKGmc!nP}#7a$`lZRij;yN2!gCd92|G#b;qC@%jBT23KuBnB>1>W zPbsDI_>a47pRgI#L9Hslyv(-GvD3^YC1~P)su}{72hKPlpFSJ^3`oDQ@^eZRv)6|3 zAkGU;3Xv}0G29`?OPwId-`Sq0aERZZ5S z$@~Fu|CV@%suR0?+Um+m3+c)cdn^ck>ldVUAIaR5*Cv$pVgLXD literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_wallet_address_singlesig_legacy_v1_ui_0_0_0/00001.png b/tests/snapshots/nanos/test_get_wallet_address_singlesig_legacy_v1_ui_0_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..b57f67c8718393ad52667eea58c32e87acce504d GIT binary patch literal 532 zcmV+v0_**WP)Bc1~C~!U`w_xVM7z5*!JM*LjmA?bvZ&~F{o2*%5 z2|tW|09bO>^9iGbP=>8UNHokH!kSTAx#)j7Uh?MqAJdZxXQQL=mF&Zl0$}NUEBgz+SM*ms8#5US9nsb>{j=*+NXwz^(WrU4X(ya_-ikt z0qE9+hP>*UcB+jH061Ljlp^p->A#GSG7IX_`gE0Wo%YqK>s||@R$E@i&C!N~z|c~J zSlA*H^V}`lA$EV!L|1uRIMPh~3VG>?oAY}sAua$;+ng+vjP8tB$Ham8ZzX05YD*~2 zW$TZ@C@E3wlbk@##0000Tl)}8TBrKPIf&+a6qTg=_MZrpnsz;D;QDU$Beq&IB zo?r^~#PNHWx0NFYnZ|GAMBby1({CGEg|k1vepV5#$SyLqaCltZfZuh(EIr<28CREC rQvbnW0p`Nh2y!*t0RR9106>BrFVxPMjVK=a00000NkvXXu0mjf9l4UO literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_wallet_address_singlesig_legacy_v1_ui_0_0_0/00003.png b/tests/snapshots/nanos/test_get_wallet_address_singlesig_legacy_v1_ui_0_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00000.png b/tests/snapshots/nanos/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..5025a84203e11bca744be15d47d201396ac28c2b GIT binary patch literal 505 zcmV5(O+Ll^me?6@Jy1#_2q~51+U`}m4*V1zw)cyoC~oHu-d$vwof+zt00000NkvXXu0mjfM$_qA literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00001.png b/tests/snapshots/nanos/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..19b7b91461f5af274c7c75d8de0b5c9873befb44 GIT binary patch literal 481 zcmV<70UrK|P)p zW6fAb>Yh-mDeN?WD-mk_1MusufJN!|RC1i=+u)&`0pxW&a2%9COYH4paGI^aJ80N^;EpP&3Z#==zF z%=-Xv_=*=MIC5F4MTJO0+a}B@<%DzEXYi6Y-@i0>YPdHl0$=HU*eL*#%(r@fLkL%g z_a_rESV^oxD;cv7r^KOr&^H}Z$y2W09;KoQ8*=WPhJ$*eS(-e|@&L$rS(A!E?G>pA z^2C&?@&nHIzdYbr#mbFKi*G0awM%46YA(P*YNYGk}vr z8qZM*=dyMBLNy)9IHf-BtlzH@-BuN$yzCy|3|a%=*MV}>4`jdBymep1tjNP(Np-!N zPTvyr1@%g~E}2|FzP(g8SkxG;S7nMcU)GhIu+@wmSvwf}x1~O&e2@uvA^<@U1pk*0 Xadc`UIQ7Vs00000NkvXXu0mjfsAt*p literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00002.png b/tests/snapshots/nanos/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00000.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..dddd4a222064af9e80f99ff185359f68da1d54dc GIT binary patch literal 442 zcmV;r0Y(0aP)L`ON1EkPH zyxHK#fEax#zR(+29=v-C$YJ|v15X5h=ladf?CiCCUyxc=ZwWj_^=nBy?+zYZ2{ z8GNFeoE80^tmu!%?Me9lLA-v@-xw&SiLgS;P^kFAv&xSgd2dxhTg~HWS{zhvS`^b8 z;CflPC;XOlC}E{sPM>pY*P<<-Y8$a6ONv^MMW?6WohW>$Th?0I4ucgtG1e}9FV%L5 zLKVPfU${CbNjar=d-``VYldA<)+1&L84yd7?(W#2C^d^pTPcy7NMo8#g$cRN5Tpy$ zYgW0M`}^5Z;zAH>E`-V%fU+rlrAr02kzRt+0BTfv$W?3Xgne&rC!Ik;-RQ21pX2CB kX?q-vQht!#@8ZdP0Y@aw?B;Si_@% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00001.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ec975a255bb9e32ee4276b8f789622fb52381a73 GIT binary patch literal 407 zcmV;I0cie-P)HhCxsSTh73zIqr0001}aGgKb$xv3|1fIo9*StUS ze!NcSkAAZcip|@2{@9g5NP<|1==~e3WKGeV$(`6Toy!gH6?J*6uFY@O0dTp@z{%*@pEXxI%0<|H^K5vkWcc@N@CFq3rcf$t0@;*O=v=F} z%Y**m?MT7B@csf=C&T;8$haEbUkqYk39^tSigh^AT^3HE@vs|YVdNl&Ba$k_y-N;a zT%VF&3x^;o;~KXMH6D|6&V_y|UH>j{DM)TWayL1dqE@AFje5-!jj=&1BB8jm^g5#! zm1DC2RJLDQ8=SFL3~ea&Ssq}s0NgC=n6^$4>cqUYO$`87$2f%Ko2`L@qAcT&s;`gK za#jmWp!>)&J3HxrkO3mzdI5H{o+oB!e*ge5=L38W`mPYZLy!Of002ovPDHLkV1g@u Bw!Q!W literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00002.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..edc71f63b382282a03280e0fe2d88974ef95692d GIT binary patch literal 427 zcmV;c0aX5pP)aYA3 zbZfmpHI#bRE0oPqYF5B_H=8UCK=`kB+Qn9ve-+FD014DYK8-t#$T(N8fXDQbzDj{T z6F4aEhRRl&0Gj0{jnRZVch~}_5NX5QSP1~7+^+Y-yupJLI}?Zr)84m;$6zJz%tBUB zw+|DQ38L{z*71}7R1$wQw`K=kNJjvgs!8>-gmpG#4`Our6D>~?-D(b5sC6O+%1`N| z5amgF!V)d$Ev@h|WeF|<&Oc=8VLj`Eg|+Rs+C$zVi;e(@J%3szDqYB;BLJZ*1~GML ze6^@Wyc*iK-Q{)ck~k_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00000.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a2871f2191e9deebafddedac17d36304d6129f77 GIT binary patch literal 515 zcmV+e0{s1nP)l3VA{jF7dh&i9{liaO3eMj{|brKfbgK#3Qb{ z&XCoWM#|QV3jt!6xkoheXy^|7_zZLY>b~9SOu_9=SGAulOTYla+iDS2bkzmS*nn=5 zY6C*7#hoR-#5!P~)I^ChxIjgd;3LNNgEpF4Q})zE54;xgtP*|qW4HwII&*&h)}nNP zsbd*XfMcPoVsC5GtW2FrAv}oT3@E61V7cNrFOYdDw=1C`a`4WIEIgH4dQOQAI}7+0 z)gA#ZIa3gpZ)e>6V%RR^MJim3OV8j>d=afj?#X`S8SF&v{!UnTpM06{@ko7l^*%vU zOlvUIS4E6w&^ys=Fxlsy)b~JIVhx{e+ecd(>|$A9<1#$NT35B_MysrSp0qRIfhMZJ z4saosr%-@~*rs`^jqQ3Va0X~eszr^qn-+R+E&{7GnOIKO82cncs1?CaIGm)e(6G>R zn(oZj-rS64TtR6B*|Emq)4Mbi55R@o{U<^tNW5D}6(W5~-nPUS6z>&>>krZLVE+~c zW)L!9Ile_kFX8`*(GPhOU<9n= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00001.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0bff2d4577cdd2f2d6becaaf043ac9d4ad4292cb GIT binary patch literal 547 zcmV+;0^I$HP)^`JJDK{07rc=&zI*AuV1SF@mLZMJ76sGZam!BPS@Q-(;0oD?g z;RASkDzG-|LJYBK+cT6A^@-5%*FE#O_Hm;vCypEK)n4%whXQ0SUPWADWw{HX8>HF; z8B7LD`IqgX-9}B6Ex$>7_Xfd_Z`uRco3JYH$%!)<(NK&ecoz3QkL47^^UU?*8j_Ns zs@)rhwFo$2`@-4V-7U#K2{6>ovVIGQfD;f0jw?k z?C?SR7S%oirsRacEq{DsXXK_GhKNnbP6-EK4c_GY*RP23A=sqMl#DuqcOo?l6$oC9 zdu}VIgDee}yb_E2o6e>= z#g?qf&GjM1&u|mJXtOa*a

q#9j=IyIr7KgT93Mdb1vcZ3?0waq<7gj>Lg(LJ*H! z^a+g(>zzjg7erQq_27paAwO&)TR?J`tsK|Etu40zLmU^>QaLOOgV7+?1?g}_fVM*) zMNSN1ybhXd!0#p$-h4=A1c+B0(95`e{N@StJ8nLawj95%#j3Hr?r!Ru-Bg=g5g+>r l8FvX6T&M#m6bgm!#Xt82sAU>hCqn=L002ovPDHLkV1mlE@nir1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00002.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..28fa8c93d8af5f7915a281259f687eb0cddff155 GIT binary patch literal 548 zcmV+<0^9wGP)%)|9@}~&A}a&vWd;IJK;?Zi45pz0Swu;Mx)VaG~D?9;=c#%zz==23}Y^q z3>Bc`O99#BjVNZ9El(lC@~L3>8P@!rdq42ViT%J&rJqnGKmh5&S=cEu(>(}NCzZY+ zVI<(XU-}K54oaprZgt3l^3;QmnA#8EZGu$piHROe8SclQ)lsiv*X~C;1kpJ2e7_z+ z=>b%89&kdx3+GdPwZmyvx=zs*P9p6ACx#ycQk*07L|$smz@%X?b{V6k{7M8#O#7_vETqS;fwD61LExC!0btH(_-`)+=-=8sDV(H zho|p0(uh*i8)fv=!oF4+U$i7^l%X^Nm%!2}gJer;=13c@_k50Jf=1>4vGWW{rx2p1mAJElES*b6}b(Dan|fFmtpg(@6L~@HQo3#UC<_ m1TILzNxaS7Z!{W>+wlTG9Q|&0t^`6I#y`g}0HV%$38-WaXJWXkPL)_U`bD~_UZ(x$&Q17CkP1Rec zEfLXY-Rnt}xwvyuF$a+519_LAW6tll1ZB64`*(t{1E`ryo03M|cF)Oo(KCk~sdm9( zB&}QIIawZtco*#*0;a}ULU4Rz_rYU3Cb?wH1FO>+2cRc+#Qy!ih%P~SE%~MnlRmhT zbE{AyncIhlXK}}=y;lstpF@_z zVOS`si^h@_pzxjF(B2GCgGeq=0AF6S@vDZShmGkl;oDlIq1hx$rdgD5JC~ruz;&DO h_wt>aO_C&uA>OpF(Nv(wocM52PiZd*|lMNx$L{n5WC^z?9p~i>M zHfb$PAhf^KIN)yts$>X~0#^43U%74{`rXu<@=i>QfGymQ&!?AXUZuW!oZ%28CCpArzsWo_$sZpq4 zoF{o#9?RMeF5qnE3)xA%?{cQ9!d77eCzpqy{VbC1R13 zA6xs#0*ssly#rnTQl_@t0v_}Yf*v5_DYeU|n{Rhey_ya2ba?TQv%&JesZ>t)KD7o# dQ4~c1_ybzlt=R+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00005.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..137eae5387062dac8bee14b1d832e92a8b622e64 GIT binary patch literal 527 zcmV+q0`UEbP)53L-$iSe zfRLUcH0$>_G$beWaERIk;bOr6Xu^}`{{N1%a{#|d{!EL>F?f=tQ7B=A_hIv9-{XpY zUWAgS&K`dhKba?{Dk$0FoO#3#W(&TS|4u98@mw0shgzZj>Zy{29u4NQZo3A{NM$VrUoL3Fw24eH-OtS1 z;hsBFp+(GE6YdZsmoUU!t=6yyX{2n;yb_>xn|r_*(Vh$oKZi&D&3(RTOXGaeUhT0TGGG81+s`6SF*Dtb5c5N5 zo3s`p5ZYgOhnkI=DzSxV0KE}D#)kdU@21|A_vFL~Q44ugiN42~PC-1++&`|bqy$XG zy?M+wT1A%199Ln8n0qi3JWM? zR6{q=l8NY&S=3w?kr_nJ0H+u}mZPVlScw#CqFN!-XB+BKi;}euL2p+O&Ut({HRoRmhd*C(naT8mYMpf4Keuh&}nrH0Cbx2AE zR2_=|5AO@Um$xya z;=zX`ACIvE=*5^j3po4$vK$oz#_oWYOR{Buk2(VY0001hKjZ^iDOo7<=Em#*0000< KMNUMnLSTYF&a<5W literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00008.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00000.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..dddd4a222064af9e80f99ff185359f68da1d54dc GIT binary patch literal 442 zcmV;r0Y(0aP)L`ON1EkPH zyxHK#fEax#zR(+29=v-C$YJ|v15X5h=ladf?CiCCUyxc=ZwWj_^=nBy?+zYZ2{ z8GNFeoE80^tmu!%?Me9lLA-v@-xw&SiLgS;P^kFAv&xSgd2dxhTg~HWS{zhvS`^b8 z;CflPC;XOlC}E{sPM>pY*P<<-Y8$a6ONv^MMW?6WohW>$Th?0I4ucgtG1e}9FV%L5 zLKVPfU${CbNjar=d-``VYldA<)+1&L84yd7?(W#2C^d^pTPcy7NMo8#g$cRN5Tpy$ zYgW0M`}^5Z;zAH>E`-V%fU+rlrAr02kzRt+0BTfv$W?3Xgne&rC!Ik;-RQ21pX2CB kX?q-vQht!#@8ZdP0Y@aw?B;Si_@% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00001.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..60493dda2f52ce75708d5886198799b0a4ec0e78 GIT binary patch literal 445 zcmV;u0Yd(XP)X_}^4_%-r2Q6`)PGhc0$|d`ug5VO7zW=nd3N$2yub!vupb z1llI-uAu_P2Udeozheklvqivr2ue=CzF0`do%lwNi*SHeNLzrxMTVJ7p8lw@5JBD_ zWBmEM9&z?<2WoyXq0`Jf0qWiqu1d=cmqH313;9vlKy3UGRBdtDpY#F>E+j?rm%Tr# z{s^YRKkofX7+1IVi|I8ula4}Xl6w!U>3b56LV{6GEJQy^#J(w$ayUJE`b7UmCcMPE zhCVA`q2jh$Vx!t9F!`EU0!#d`iMp`1MUa^ZBVev8Z!~oqvPEf!8Do+F!`8s*Yay_1)+bfM%;&FZ@2rf!6kdH)CQp*=X05>Rko+W$Mn1QChgk~jwd0089ie%-EFQLhpcm=3j&b&3ke zr*nG5%r#BPl9@uxMv-bvS~%F#gGW77i&^6w+amr87_?isM`y0q0A7I>8HQAE#1HE($}NBs?W2R z9jv%DqrC6>Mu0gsm8mkNhgm5_w#EF&1`t~v$o!+Is$$ti`Tzz@NQUG;d*6*(5k!Um z-1{R5xEkIc4Bo*^kcDQl!908&Hryue>!nU`om2zCq802`*G!9+KxFdFp5xu^lNKO@$rE23%M*K3mMzrdI{-T$t zTWuq$A=k59;n*Ct%nIo5W|OG_2;cS2yV&aTFG4v0D1n;Dr*WqlGS1m6;5NO$S1Gh- zA_viKN!daZNb|T!V>IE)4tu~UWVB&ztOS5lZrA%kZt&>Du0+CwY42OaV=$9vW+5xA zz7I2n3g+gOyW@xcloP)-XJ~tup&A){f&i&*KAr{5|r>oK8*v0000&=z` literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00004.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00000.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a2871f2191e9deebafddedac17d36304d6129f77 GIT binary patch literal 515 zcmV+e0{s1nP)l3VA{jF7dh&i9{liaO3eMj{|brKfbgK#3Qb{ z&XCoWM#|QV3jt!6xkoheXy^|7_zZLY>b~9SOu_9=SGAulOTYla+iDS2bkzmS*nn=5 zY6C*7#hoR-#5!P~)I^ChxIjgd;3LNNgEpF4Q})zE54;xgtP*|qW4HwII&*&h)}nNP zsbd*XfMcPoVsC5GtW2FrAv}oT3@E61V7cNrFOYdDw=1C`a`4WIEIgH4dQOQAI}7+0 z)gA#ZIa3gpZ)e>6V%RR^MJim3OV8j>d=afj?#X`S8SF&v{!UnTpM06{@ko7l^*%vU zOlvUIS4E6w&^ys=Fxlsy)b~JIVhx{e+ecd(>|$A9<1#$NT35B_MysrSp0qRIfhMZJ z4saosr%-@~*rs`^jqQ3Va0X~eszr^qn-+R+E&{7GnOIKO82cncs1?CaIGm)e(6G>R zn(oZj-rS64TtR6B*|Emq)4Mbi55R@o{U<^tNW5D}6(W5~-nPUS6z>&>>krZLVE+~c zW)L!9Ile_kFX8`*(GPhOU<9n= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00001.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0bff2d4577cdd2f2d6becaaf043ac9d4ad4292cb GIT binary patch literal 547 zcmV+;0^I$HP)^`JJDK{07rc=&zI*AuV1SF@mLZMJ76sGZam!BPS@Q-(;0oD?g z;RASkDzG-|LJYBK+cT6A^@-5%*FE#O_Hm;vCypEK)n4%whXQ0SUPWADWw{HX8>HF; z8B7LD`IqgX-9}B6Ex$>7_Xfd_Z`uRco3JYH$%!)<(NK&ecoz3QkL47^^UU?*8j_Ns zs@)rhwFo$2`@-4V-7U#K2{6>ovVIGQfD;f0jw?k z?C?SR7S%oirsRacEq{DsXXK_GhKNnbP6-EK4c_GY*RP23A=sqMl#DuqcOo?l6$oC9 zdu}VIgDee}yb_E2o6e>= z#g?qf&GjM1&u|mJXtOa*a

q#9j=IyIr7KgT93Mdb1vcZ3?0waq<7gj>Lg(LJ*H! z^a+g(>zzjg7erQq_27paAwO&)TR?J`tsK|Etu40zLmU^>QaLOOgV7+?1?g}_fVM*) zMNSN1ybhXd!0#p$-h4=A1c+B0(95`e{N@StJ8nLawj95%#j3Hr?r!Ru-Bg=g5g+>r l8FvX6T&M#m6bgm!#Xt82sAU>hCqn=L002ovPDHLkV1mlE@nir1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00002.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..28fa8c93d8af5f7915a281259f687eb0cddff155 GIT binary patch literal 548 zcmV+<0^9wGP)%)|9@}~&A}a&vWd;IJK;?Zi45pz0Swu;Mx)VaG~D?9;=c#%zz==23}Y^q z3>Bc`O99#BjVNZ9El(lC@~L3>8P@!rdq42ViT%J&rJqnGKmh5&S=cEu(>(}NCzZY+ zVI<(XU-}K54oaprZgt3l^3;QmnA#8EZGu$piHROe8SclQ)lsiv*X~C;1kpJ2e7_z+ z=>b%89&kdx3+GdPwZmyvx=zs*P9p6ACx#ycQk*07L|$smz@%X?b{V6k{7M8#O#7_vETqS;fwD61LExC!0btH(_-`)+=-=8sDV(H zho|p0(uh*i8)fv=!oF4+U$i7^l%X^Nm%!2}gJer;=13c@_k50Jf=1>4vGWW{rx2p1mAJElES*b6}b(Dan|fFmtpg(@6L~@HQo3#UC<_ m1TILzNxaS7Z!{W>+wlTG9Q|&0t^`6I#y`g}0HV%$38-WaXJWXkPL)_U`bD~_UZ(x$&Q17CkP1Rec zEfLXY-Rnt}xwvyuF$a+519_LAW6tll1ZB64`*(t{1E`ryo03M|cF)Oo(KCk~sdm9( zB&}QIIawZtco*#*0;a}ULU4Rz_rYU3Cb?wH1FO>+2cRc+#Qy!ih%P~SE%~MnlRmhT zbE{AyncIhlXK}}=y;lstpF@_z zVOS`si^h@_pzxjF(B2GCgGeq=0AF6S@vDZShmGkl;oDlIq1hx$rdgD5JC~ruz;&DO h_wt>aO_C&uA>OpF(Nv(wocM52PiZd*|lMNx$L{n5WC^z?9p~i>M zHfb$PAhf^KIN)yts$>X~0#^43U%74{`rXu<@=i>QfGymQ&!?AXUZuW!oZ%28CCpArzsWo_$sZpq4 zoF{o#9?RMeF5qnE3)xA%?{cQ9!d77eCzpqy{VbC1R13 zA6xs#0*ssly#rnTQl_@t0v_}Yf*v5_DYeU|n{Rhey_ya2ba?TQv%&JesZ>t)KD7o# dQ4~c1_ybzlt=R+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00005.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..137eae5387062dac8bee14b1d832e92a8b622e64 GIT binary patch literal 527 zcmV+q0`UEbP)53L-$iSe zfRLUcH0$>_G$beWaERIk;bOr6Xu^}`{{N1%a{#|d{!EL>F?f=tQ7B=A_hIv9-{XpY zUWAgS&K`dhKba?{Dk$0FoO#3#W(&TS|4u98@mw0shgzZj>Zy{29u4NQZo3A{NM$VrUoL3Fw24eH-OtS1 z;hsBFp+(GE6YdZsmoUU!t=6yyX{2n;yb_>xn|r_*(Vh$oKZi&D&3(RTOXGaeUhT0TGGG81+s`6SF*Dtb5c5N5 zo3s`p5ZYgOhnkI=DzSxV0KE}D#)kdU@21|A_vFL~Q44ugiN42~PC-1++&`|bqy$XG zy?M+wT1A%199Ln8n0qi3JWM? zR6{q=l8NY&S=3w?kr_nJ0H+u}mZPVlScw#CqFN!-XB+BKi;}euL2p+O&Ut({HRoRmhd*C(naT8mYMpf4Keuh&}nrH0Cbx2AE zR2_=|5AO@Um$xya z;=zX`ACIvE=*5^j3po4$vK$oz#_oWYOR{Buk2(VY0001hKjZ^iDOo7<=Em#*0000< KMNUMnLSTYF&a<5W literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00008.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00000.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..dddd4a222064af9e80f99ff185359f68da1d54dc GIT binary patch literal 442 zcmV;r0Y(0aP)L`ON1EkPH zyxHK#fEax#zR(+29=v-C$YJ|v15X5h=ladf?CiCCUyxc=ZwWj_^=nBy?+zYZ2{ z8GNFeoE80^tmu!%?Me9lLA-v@-xw&SiLgS;P^kFAv&xSgd2dxhTg~HWS{zhvS`^b8 z;CflPC;XOlC}E{sPM>pY*P<<-Y8$a6ONv^MMW?6WohW>$Th?0I4ucgtG1e}9FV%L5 zLKVPfU${CbNjar=d-``VYldA<)+1&L84yd7?(W#2C^d^pTPcy7NMo8#g$cRN5Tpy$ zYgW0M`}^5Z;zAH>E`-V%fU+rlrAr02kzRt+0BTfv$W?3Xgne&rC!Ik;-RQ21pX2CB kX?q-vQht!#@8ZdP0Y@aw?B;Si_@% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00001.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5cf20064c2a3e483af8ba8729d71f3c70150a52d GIT binary patch literal 444 zcmV;t0Ymkr>a39h&IeV4Q~!VoTeC-CbP=SifO)Yc4QKM3TrS1}>LDxuq-BPhOq~8zwit`N zPeecCO|Lxr?gx8)FiVFSxdNJV)7UCKBkW2k(iZchF@eogfSCBx)aSUfhEiC?P}`9c?HsV$ZlqjX5Y`(g^oPUc@eH zwM_YJ+-{@{nRBIftCA*4`S%yKKNJ$7_yADF@3y2zRWEiFSEclmZNH+#eUYU05*)~^f8W)cB-8zf*PA} msr)z<;jM8300000co;8ZLNbsQx^d_L00006kdH)CQp*=X05>Rko+W$Mn1QChgk~jwd0089ie%-EFQLhpcm=3j&b&3ke zr*nG5%r#BPl9@uxMv-bvS~%F#gGW77i&^6w+amr87_?isM`y0q0A7I>8HQAE#1HE($}NBs?W2R z9jv%DqrC6>Mu0gsm8mkNhgm5_w#EF&1`t~v$o!+Is$$ti`Tzz@NQUG;d*6*(5k!Um z-1{R5xEkIc4Bo*^kcDQl!908&HOM7;H#ug+ifFDEQ<3`Zq>D^(7L4qgHVu zuHY+>_v6Vw3^$^KAHG)#?@g(g1IWOm$9KO(V%4vuY++JaehA&eTi4Os zi~dApR|hNyiPFw+ZjRa}0>;U5VyOe#U%cxk&KmwE1UmpF&=mO;PMRrtu8x4y^wM9Y z(3y!0M9J8-MiGefyiJod;rgmQp$eHTI2u_TpfS&D{pP1Us@Q|Th)8Yyj3^(h#Ajxq zESPZ)pLPodxmoxh*&IIfFKPLyxRG83SwiZ7&8s9M=*=Bw=zygU0+HfWh)J~)6)8P7 z^c`hg`TnIsW~sv1r%-}m(+w&GDU78Vwq1(G5(f)^MTEleG-dg9O#NQSL>Dh{TaN}} zAB%Lx6;2L_RPmSpoEuu-N0J7vaD63dG*jObwf9GF_yAJJ#@FkxLm0ts=zGT<<*#c3 z1UHf!dyh&0%QhU@s`Mabi-2+XoxpAV`+y*1+L&8m<78bZ6bhe*A8CYE4j!}%I{*Lx M07*qoM6N<$f*Oa@4gdfE literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00004.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00000.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a2871f2191e9deebafddedac17d36304d6129f77 GIT binary patch literal 515 zcmV+e0{s1nP)l3VA{jF7dh&i9{liaO3eMj{|brKfbgK#3Qb{ z&XCoWM#|QV3jt!6xkoheXy^|7_zZLY>b~9SOu_9=SGAulOTYla+iDS2bkzmS*nn=5 zY6C*7#hoR-#5!P~)I^ChxIjgd;3LNNgEpF4Q})zE54;xgtP*|qW4HwII&*&h)}nNP zsbd*XfMcPoVsC5GtW2FrAv}oT3@E61V7cNrFOYdDw=1C`a`4WIEIgH4dQOQAI}7+0 z)gA#ZIa3gpZ)e>6V%RR^MJim3OV8j>d=afj?#X`S8SF&v{!UnTpM06{@ko7l^*%vU zOlvUIS4E6w&^ys=Fxlsy)b~JIVhx{e+ecd(>|$A9<1#$NT35B_MysrSp0qRIfhMZJ z4saosr%-@~*rs`^jqQ3Va0X~eszr^qn-+R+E&{7GnOIKO82cncs1?CaIGm)e(6G>R zn(oZj-rS64TtR6B*|Emq)4Mbi55R@o{U<^tNW5D}6(W5~-nPUS6z>&>>krZLVE+~c zW)L!9Ile_kFX8`*(GPhOU<9n= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00001.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0bff2d4577cdd2f2d6becaaf043ac9d4ad4292cb GIT binary patch literal 547 zcmV+;0^I$HP)^`JJDK{07rc=&zI*AuV1SF@mLZMJ76sGZam!BPS@Q-(;0oD?g z;RASkDzG-|LJYBK+cT6A^@-5%*FE#O_Hm;vCypEK)n4%whXQ0SUPWADWw{HX8>HF; z8B7LD`IqgX-9}B6Ex$>7_Xfd_Z`uRco3JYH$%!)<(NK&ecoz3QkL47^^UU?*8j_Ns zs@)rhwFo$2`@-4V-7U#K2{6>ovVIGQfD;f0jw?k z?C?SR7S%oirsRacEq{DsXXK_GhKNnbP6-EK4c_GY*RP23A=sqMl#DuqcOo?l6$oC9 zdu}VIgDee}yb_E2o6e>= z#g?qf&GjM1&u|mJXtOa*a

q#9j=IyIr7KgT93Mdb1vcZ3?0waq<7gj>Lg(LJ*H! z^a+g(>zzjg7erQq_27paAwO&)TR?J`tsK|Etu40zLmU^>QaLOOgV7+?1?g}_fVM*) zMNSN1ybhXd!0#p$-h4=A1c+B0(95`e{N@StJ8nLawj95%#j3Hr?r!Ru-Bg=g5g+>r l8FvX6T&M#m6bgm!#Xt82sAU>hCqn=L002ovPDHLkV1mlE@nir1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00002.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..28fa8c93d8af5f7915a281259f687eb0cddff155 GIT binary patch literal 548 zcmV+<0^9wGP)%)|9@}~&A}a&vWd;IJK;?Zi45pz0Swu;Mx)VaG~D?9;=c#%zz==23}Y^q z3>Bc`O99#BjVNZ9El(lC@~L3>8P@!rdq42ViT%J&rJqnGKmh5&S=cEu(>(}NCzZY+ zVI<(XU-}K54oaprZgt3l^3;QmnA#8EZGu$piHROe8SclQ)lsiv*X~C;1kpJ2e7_z+ z=>b%89&kdx3+GdPwZmyvx=zs*P9p6ACx#ycQk*07L|$smz@%X?b{V6k{7M8#O#7_vETqS;fwD61LExC!0btH(_-`)+=-=8sDV(H zho|p0(uh*i8)fv=!oF4+U$i7^l%X^Nm%!2}gJer;=13c@_k50Jf=1>4vGWW{rx2p1mAJElES*b6}b(Dan|fFmtpg(@6L~@HQo3#UC<_ m1TILzNxaS7Z!{W>+wlTG9Q|&0t^`6I#y`g}0HV%$38-WaXJWXkPL)_U`bD~_UZ(x$&Q17CkP1Rec zEfLXY-Rnt}xwvyuF$a+519_LAW6tll1ZB64`*(t{1E`ryo03M|cF)Oo(KCk~sdm9( zB&}QIIawZtco*#*0;a}ULU4Rz_rYU3Cb?wH1FO>+2cRc+#Qy!ih%P~SE%~MnlRmhT zbE{AyncIhlXK}}=y;lstpF@_z zVOS`si^h@_pzxjF(B2GCgGeq=0AF6S@vDZShmGkl;oDlIq1hx$rdgD5JC~ruz;&DO h_wt>aO_C&uA>OpF(Nv(wocM52PiZd*|lMNx$L{n5WC^z?9p~i>M zHfb$PAhf^KIN)yts$>X~0#^43U%74{`rXu<@=i>QfGymQ&!?AXUZuW!oZ%28CCpArzsWo_$sZpq4 zoF{o#9?RMeF5qnE3)xA%?{cQ9!d77eCzpqy{VbC1R13 zA6xs#0*ssly#rnTQl_@t0v_}Yf*v5_DYeU|n{Rhey_ya2ba?TQv%&JesZ>t)KD7o# dQ4~c1_ybzlt=R+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00005.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..137eae5387062dac8bee14b1d832e92a8b622e64 GIT binary patch literal 527 zcmV+q0`UEbP)53L-$iSe zfRLUcH0$>_G$beWaERIk;bOr6Xu^}`{{N1%a{#|d{!EL>F?f=tQ7B=A_hIv9-{XpY zUWAgS&K`dhKba?{Dk$0FoO#3#W(&TS|4u98@mw0shgzZj>Zy{29u4NQZo3A{NM$VrUoL3Fw24eH-OtS1 z;hsBFp+(GE6YdZsmoUU!t=6yyX{2n;yb_>xn|r_*(Vh$oKZi&D&3(RTOXGaeUhT0TGGG81+s`6SF*Dtb5c5N5 zo3s`p5ZYgOhnkI=DzSxV0KE}D#)kdU@21|A_vFL~Q44ugiN42~PC-1++&`|bqy$XG zy?M+wT1A%199Ln8n0qi3JWM? zR6{q=l8NY&S=3w?kr_nJ0H+u}mZPVlScw#CqFN!-XB+BKi;}euL2p+O&Ut({HRoRmhd*C(naT8mYMpf4Keuh&}nrH0Cbx2AE zR2_=|5AO@Um$xya z;=zX`ACIvE=*5^j3po4$vK$oz#_oWYOR{Buk2(VY0001hKjZ^iDOo7<=Em#*0000< KMNUMnLSTYF&a<5W literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00008.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00000.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..dddd4a222064af9e80f99ff185359f68da1d54dc GIT binary patch literal 442 zcmV;r0Y(0aP)L`ON1EkPH zyxHK#fEax#zR(+29=v-C$YJ|v15X5h=ladf?CiCCUyxc=ZwWj_^=nBy?+zYZ2{ z8GNFeoE80^tmu!%?Me9lLA-v@-xw&SiLgS;P^kFAv&xSgd2dxhTg~HWS{zhvS`^b8 z;CflPC;XOlC}E{sPM>pY*P<<-Y8$a6ONv^MMW?6WohW>$Th?0I4ucgtG1e}9FV%L5 zLKVPfU${CbNjar=d-``VYldA<)+1&L84yd7?(W#2C^d^pTPcy7NMo8#g$cRN5Tpy$ zYgW0M`}^5Z;zAH>E`-V%fU+rlrAr02kzRt+0BTfv$W?3Xgne&rC!Ik;-RQ21pX2CB kX?q-vQht!#@8ZdP0Y@aw?B;Si_@% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00001.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..f361cbe00e67b3de0e48baa1977d4b0d16bcbad8 GIT binary patch literal 392 zcmV;30eAk1P) z)lgf;7vr)ltN7w96>GNd6$b%0D2c%xxtxL`$7R==lGfSxh>Bt%B_oEg#aFhIJRHJ* mhqHa=CIvke1ONa4p34X3sQ`SqxW2Fe0000AP9m$pM5*E(Iu}!2`G-LUl&(+ zb+o;#^&h!!X<7d_tL3;mW69@e%;exL@xly}_d$dnYPgxc0tBA_kT`GYfga z$2we=2jHiCM5!~6D1oj_;@%(4x^z{BujdGL`2mb#f?81CRaJLGc@rerQkBLN8-vOB zOHwta)4jAh0MzHLS5N#>tuNEcYqEH_PUF zz*rCpSJh2fY`Z6+4s4Tl_OL#m@Q{M0$=5*;1VNz52k+Pv51;8qdjJ3c07*qoM6N<$ Ef>vs~Q2+n{ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00003.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00000.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a2871f2191e9deebafddedac17d36304d6129f77 GIT binary patch literal 515 zcmV+e0{s1nP)l3VA{jF7dh&i9{liaO3eMj{|brKfbgK#3Qb{ z&XCoWM#|QV3jt!6xkoheXy^|7_zZLY>b~9SOu_9=SGAulOTYla+iDS2bkzmS*nn=5 zY6C*7#hoR-#5!P~)I^ChxIjgd;3LNNgEpF4Q})zE54;xgtP*|qW4HwII&*&h)}nNP zsbd*XfMcPoVsC5GtW2FrAv}oT3@E61V7cNrFOYdDw=1C`a`4WIEIgH4dQOQAI}7+0 z)gA#ZIa3gpZ)e>6V%RR^MJim3OV8j>d=afj?#X`S8SF&v{!UnTpM06{@ko7l^*%vU zOlvUIS4E6w&^ys=Fxlsy)b~JIVhx{e+ecd(>|$A9<1#$NT35B_MysrSp0qRIfhMZJ z4saosr%-@~*rs`^jqQ3Va0X~eszr^qn-+R+E&{7GnOIKO82cncs1?CaIGm)e(6G>R zn(oZj-rS64TtR6B*|Emq)4Mbi55R@o{U<^tNW5D}6(W5~-nPUS6z>&>>krZLVE+~c zW)L!9Ile_kFX8`*(GPhOU<9n= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00001.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0bff2d4577cdd2f2d6becaaf043ac9d4ad4292cb GIT binary patch literal 547 zcmV+;0^I$HP)^`JJDK{07rc=&zI*AuV1SF@mLZMJ76sGZam!BPS@Q-(;0oD?g z;RASkDzG-|LJYBK+cT6A^@-5%*FE#O_Hm;vCypEK)n4%whXQ0SUPWADWw{HX8>HF; z8B7LD`IqgX-9}B6Ex$>7_Xfd_Z`uRco3JYH$%!)<(NK&ecoz3QkL47^^UU?*8j_Ns zs@)rhwFo$2`@-4V-7U#K2{6>ovVIGQfD;f0jw?k z?C?SR7S%oirsRacEq{DsXXK_GhKNnbP6-EK4c_GY*RP23A=sqMl#DuqcOo?l6$oC9 zdu}VIgDee}yb_E2o6e>= z#g?qf&GjM1&u|mJXtOa*a

q#9j=IyIr7KgT93Mdb1vcZ3?0waq<7gj>Lg(LJ*H! z^a+g(>zzjg7erQq_27paAwO&)TR?J`tsK|Etu40zLmU^>QaLOOgV7+?1?g}_fVM*) zMNSN1ybhXd!0#p$-h4=A1c+B0(95`e{N@StJ8nLawj95%#j3Hr?r!Ru-Bg=g5g+>r l8FvX6T&M#m6bgm!#Xt82sAU>hCqn=L002ovPDHLkV1mlE@nir1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00002.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..28fa8c93d8af5f7915a281259f687eb0cddff155 GIT binary patch literal 548 zcmV+<0^9wGP)%)|9@}~&A}a&vWd;IJK;?Zi45pz0Swu;Mx)VaG~D?9;=c#%zz==23}Y^q z3>Bc`O99#BjVNZ9El(lC@~L3>8P@!rdq42ViT%J&rJqnGKmh5&S=cEu(>(}NCzZY+ zVI<(XU-}K54oaprZgt3l^3;QmnA#8EZGu$piHROe8SclQ)lsiv*X~C;1kpJ2e7_z+ z=>b%89&kdx3+GdPwZmyvx=zs*P9p6ACx#ycQk*07L|$smz@%X?b{V6k{7M8#O#7_vETqS;fwD61LExC!0btH(_-`)+=-=8sDV(H zho|p0(uh*i8)fv=!oF4+U$i7^l%X^Nm%!2}gJer;=13c@_k50Jf=1>4vGWW{rx2p1mAJElES*b6}b(Dan|fFmtpg(@6L~@HQo3#UC<_ m1TILzNxaS7Z!{W>+wlTG9Q|&0t^`6I#y`g}0HV%$38-WaXJWXkPL)_U`bD~_UZ(x$&Q17CkP1Rec zEfLXY-Rnt}xwvyuF$a+519_LAW6tll1ZB64`*(t{1E`ryo03M|cF)Oo(KCk~sdm9( zB&}QIIawZtco*#*0;a}ULU4Rz_rYU3Cb?wH1FO>+2cRc+#Qy!ih%P~SE%~MnlRmhT zbE{AyncIhlXK}}=y;lstpF@_z zVOS`si^h@_pzxjF(B2GCgGeq=0AF6S@vDZShmGkl;oDlIq1hx$rdgD5JC~ruz;&DO h_wt>aO_C&uA>OpF(Nv(wocM52PiZd*|lMNx$L{n5WC^z?9p~i>M zHfb$PAhf^KIN)yts$>X~0#^43U%74{`rXu<@=i>QfGymQ&!?AXUZuW!oZ%28CCpArzsWo_$sZpq4 zoF{o#9?RMeF5qnE3)xA%?{cQ9!d77eCzpqy{VbC1R13 zA6xs#0*ssly#rnTQl_@t0v_}Yf*v5_DYeU|n{Rhey_ya2ba?TQv%&JesZ>t)KD7o# dQ4~c1_ybzlt=R+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00005.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..137eae5387062dac8bee14b1d832e92a8b622e64 GIT binary patch literal 527 zcmV+q0`UEbP)53L-$iSe zfRLUcH0$>_G$beWaERIk;bOr6Xu^}`{{N1%a{#|d{!EL>F?f=tQ7B=A_hIv9-{XpY zUWAgS&K`dhKba?{Dk$0FoO#3#W(&TS|4u98@mw0shgzZj>Zy{29u4NQZo3A{NM$VrUoL3Fw24eH-OtS1 z;hsBFp+(GE6YdZsmoUU!t=6yyX{2n;yb_>xn|r_*(Vh$oKZi&D&3(RTOXGaeUhT0TGGG81+s`6SF*Dtb5c5N5 zo3s`p5ZYgOhnkI=DzSxV0KE}D#)kdU@21|A_vFL~Q44ugiN42~PC-1++&`|bqy$XG zy?M+wT1A%199Ln8n0qi3JWM? zR6{q=l8NY&S=3w?kr_nJ0H+u}mZPVlScw#CqFN!-XB+BKi;}euL2p+O&Ut({HRoRmhd*C(naT8mYMpf4Keuh&}nrH0Cbx2AE zR2_=|5AO@Um$xya z;=zX`ACIvE=*5^j3po4$vK$oz#_oWYOR{Buk2(VY0001hKjZ^iDOo7<=Em#*0000< KMNUMnLSTYF&a<5W literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00008.png b/tests/snapshots/nanos/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_0_0/00000.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..dddd4a222064af9e80f99ff185359f68da1d54dc GIT binary patch literal 442 zcmV;r0Y(0aP)L`ON1EkPH zyxHK#fEax#zR(+29=v-C$YJ|v15X5h=ladf?CiCCUyxc=ZwWj_^=nBy?+zYZ2{ z8GNFeoE80^tmu!%?Me9lLA-v@-xw&SiLgS;P^kFAv&xSgd2dxhTg~HWS{zhvS`^b8 z;CflPC;XOlC}E{sPM>pY*P<<-Y8$a6ONv^MMW?6WohW>$Th?0I4ucgtG1e}9FV%L5 zLKVPfU${CbNjar=d-``VYldA<)+1&L84yd7?(W#2C^d^pTPcy7NMo8#g$cRN5Tpy$ zYgW0M`}^5Z;zAH>E`-V%fU+rlrAr02kzRt+0BTfv$W?3Xgne&rC!Ik;-RQ21pX2CB kX?q-vQht!#@8ZdP0Y@aw?B;Si_@% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_0_0/00001.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf54452ee659d4aeb23f2f9f6119170100ca01b GIT binary patch literal 393 zcmV;40e1e0P)}T-~WNVs0&Y?H5jrfu-5-wbaF9Bm@I!w2><{9FyXa*y)O>sDK&$+c-XpM zRz8ofEiG%m+lgxP433|tQYgt`c2snK&8M)g=wLCDd#16{<+Tz|o-cY>n6EfanFTXX>u*BNRycK+{*)sFEdoIZW_IIH6D?-}3(q-lfn&5LHH>X<5Xa%W2+oOXXmb z!N7Rkh_UxF^!AGVRGvu1QCZ-W^-;me52F_^WzDiSQZrVnr=gnY08&IB-3o!V{@TcI z7T}^vLpu*umb^NTy&Ae>v7lsrj{LkZ9}%7=Qg7^r+3HsL-GB+ge(r)- n3j!6qTF}TS|Cs>*0MqdX$SL-T#utq300000NkvXXu0mjf(-5?C literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_0_0/00002.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..14a8a2ffb7eaef7e7bf2e9a5f90a149ddd6feefb GIT binary patch literal 534 zcmV+x0_pvUP)}#pp-?Ck3Iq80e)}&Tv4}-Tv}$Dv z;2I~qUPT-~3f$X>=R=%DlTwtlg~n4X@A}uAm;-Lj?cvjIk2i<8h^30lYPD?;h`%Pa z%mZd`0dYXO=S35Of4UkhW?Z3rT7mr$!c-6(9|7yMO`yXC1W*{qYyka+Fka%_!yF=G z^=W4v_x8#z+?b*&v0?5NO>y8Y>r0Y7-4Rz$GzmKU1beY9pL|MT|_-kDaW zkhSdTp8zR!s18I_eBmo-sLQd~5;?sBKcWl3n^y+B2q0WNuaWmbWc6E&raCy7gavp) z6XZz4vSme0p4&()!gD^UYz$I5c`IN^eF9fJ?+wAC2NVJ4V>^RJU>SdDrwWBap>P#E Y0Yn|j*4!^Q6951J07*qoM6N<$f`U-=;s5{u literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_0_0/00003.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..7c127d28f1d35f2e4000065096fc8e64946225dc GIT binary patch literal 440 zcmV;p0Z0CcP)ja5Q>xjX95wrLEhHQUaMZTq>iz?71zbS_pK9}?4#MG5mv zlllwa0TdT3sG%538+t zxz=Ov0f&v3k=03)5@K!dAB?gp`&&DUj3suAy9pkHnJiX?{tU*+*T;ZfG4>sC5huEp zS+%vD2@Nc6@v8nP-F=exZLq3IsQrjZz%IZI%hIT%$x6h)zqU_GABd8ME1dys$+D3I zQ(<>&Tg?&ns0{?*!HcMpws%z3DlOE_)H6Vcfqi->s@&ZZ8yj&ooB_CRg{z0v!m=z= i{)xP@IgaBvQ}_UqZe>hAPdnTI0000_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00000.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..65857e6192851da1fe6a1a31ff003f89510e939b GIT binary patch literal 521 zcmV+k0`~ohP)rl3IZXYqPAf0z77zs|WN>)BtK7{Dh=GjB^K=vKFU3QJcrre3nITxXFef z9%pu2tsZ+wbXq}b1)SiKKWlN{u1UIf>C~ohk?aaMxz>SaL*wrPouhy_ibO_Jg6$Dy z_~IVrxuj|8GVm^{B>^EllSsF?S6^;vY)NpKHvkpoF*~+85$#4hXFWXzD{1eqB;ft= zl;SzGn4zC*5Oo4QX5NogY4;YBWW@dk2)*gK!vWfycR|=Bt+!?&eW4V+ePYxSF*DhT zW@lzYSjNn0xfz}(9z8jk*Z>f3npxkQ-2i*Q=_LqFqAPL2yaDb3FkK*4X<>x_m%!a^ z-XocA)l`MvEy`HbLePjfLgF0`@O};w$M?FBF}QC4Jk0R^!Tt#QKi)qA1HiXaa^q+U zXnM#K9=Q3|>h!X>2P9&PN6(b~rW3YXC>=w$KSgX!&)}wMng;L(K*Qwpv}3HE00000 LNkvXXu0mjfqs8v8 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00001.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba47815fc1a345233ce4e6f5885b603117b1bea0 GIT binary patch literal 532 zcmV+v0_**WP)@m4IqN{j2*7kVKU)ADSv>kB9sxHs4gxPU&8$`>Mtz0YXq8|+q74ad zu(>cw^)YcW;IAFR?g!E?bdn@V{xv_P Wnxq{QlovYy0000wG9P{)ASKfLX`0evjKMYpciW1hD2l?%<41l@=;{A>Q^KBc zF(NFQ#|3huBEU z@qOlQS?sZg>`p64Wxxsc{Mm}<)`E0x>Wqc(AlVE!X?c)1&@{28iex&0$Y@HiJ)%sX z+}cSVGBw7;Siq;Kb_uxDBq!++N9Qtks#CNr*&MEO0Fs#-`?q={x*Njc)OvlG^1(_z zu?rO%-g8)!!vg%>1{b!7LjGQ)y)TJ10IUkk#T?5CurPe%$-PmT%dJ@^cEL^90j4&- zBA#ax(L!AVyoibS6jBV~0zg|6XP)4N6&nKPWNVm+9UgJi9Szv#6YfX82mP{`=z8BT~`MBL}LAQJVc62MNEV(}a13TSA z(yXfVRZc7xQH5;AJ53QW1?fxKBAmrrz8Jg2tDME$uW(i#s*|4wwPUidT`u)O2p? z-Pi^EJwS>W3HqR4i?U&w7H)pV3W$hc64#x5eqMJ`V)sWu6Pxe_zKWtKilQj~GY_40 V&tGsR0FM9w002ovPDHLkV1iD!>(u}N literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00004.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..2406ea8d9caac38dd15180e55995c8b1edd42df1 GIT binary patch literal 519 zcmV+i0{H!jP)ne((C<-gzU-ET85B>3`fIoS$ zP8fJd1!7i$P}_MWKrPU}dd%1d;Hux5Pj82ROZQ85>wfjE+AZzkGTr`xp6;P&H0Ho& z#Qfme6m$l)Td^ZIr(GNU!5jQiQV+&!^^Rs4Pg7XCc1v~VHaM0qA7^4 z!D&%!@h3ffc|PJ@X%5v|@z`4Y?u{Niki|qJ;FlH$fdfqwYpQspQ#u(<3HC>np~0=4 zgwHXw%1kR{4f_t<8 z#x1avaOD-J-PM&iZN}aiEdX$xvThin=F=*#33i+TXTmFMkMPI>;FQ&dt(7plhnY&J zu@#7ItzCOK)5}@!#4&k^1re|#kjI?qRq;oxe0ye;7e!H+`2iI1t>J^QxJm#3002ov JPDHLkV1iv+^hp2! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00005.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..5d7126988d65a47c61f5c4aa7eeaebe1d6afca6f GIT binary patch literal 533 zcmV+w0_y#VP)1g9H5d%#)yl_PBvBSML`zc7T+<81*#!oR_+r?`v^3%tTWV z&ojSm7hCjH*=Yx%9dLtJ{%*x%D?z$<>-2^2a_|co&X1x6u>;Q3)ECaq%`*TWX_c5} z;vKM%17iW7qS{BmR7pm{9(%_!cBn(FZAlLE76A1b8~cALt1d^FoSd)4!}~N1id7wMfp@m(B+WZIr_M2kD zmR;`5v`P`xYV+t0ucsJCJ<-9dH2iuJqB}lU5{6n3FbxE?9Lttnlz_OOE#)cx+i96& zn_P?QXfY1Mi(E#4-mP2;n00000NkvXXu0mjf|9$pj literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00006.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..fb2e06671d0523795c20e69d76b74726012cda25 GIT binary patch literal 551 zcmV+?0@(eDP)2zE}2uXk_Zd=ndP1AV!{n4)jdgz~Q3fPku zW5U2fDi9kb2pv1G1gHi2ubwk7Z-b`J8}mKe;WN_y;&%@A7jLzG(k@d&pZ|d#c2gZR zWwPEi~ozfE6s(kRMa^9ASflRzQY+Yw*$|VxW?t7c6rAHLU35*!8$#4E!woY5IcGi z^EjIHAXzX`JJOq$Usy%W82R$2r`Eeogy3ic@zlDZkO=*~O12T-e+$59JX^UNwTiADB$^!cWfE5@B9Jz}X(-2p40%Bq~a zW8l~TXMstcmOzzt2w$2*)Do$zMXTR6rAehl>=0G8xv66;Otf#}gUs_8ei33+IQ614 p;06Lq6Ubw+XMtG9rfHgL{s7;~s3TVFmNftX002ovPDHLkV1iK6`=bB= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00007.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..ea5bf06efe69d66bcabbada75dea8733f54ec8f5 GIT binary patch literal 459 zcmV;+0W|)JP)XqmodME*XC4OkzAYV3ekXA}xwQ6^KGM~6{swl~O|em% z1I{!!i4${iV@dO8c>368+o`3z@<3Tj0?pnw&vvveupdx6wLJiDY0Q~s z;+-&&6W0RXMQbksOI=c8ZgI3PbGtglnoDw6Hvvdz?%MySthyaxaALeR6La9njw}?^ z*t!pQA->j&hozd6O6S2@d3E>CyTtWHBvFL#02U+(3gfm+a9W>gmck<(1TRk`W}u)U$IuJ6KQ4-oTAxd)VL z;2%fK#nM_2hLiiaTJXbga<55a^ex1w1wjz_@c~J2l%(B1B_aR-002ovPDHLkV1lo8 B+A075 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00008.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_1_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_2_0/00000.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..698b65ccf1521a97e47bebda23675583916881e6 GIT binary patch literal 520 zcmV+j0{8uiP)R zsy8zX(%u8>4EkMf4uhkqb{U9RZaV2gnsC$AZXR?5P894i>mQFOeZ$C8*c_ zi5TWEk^q;SC4}YU12<<3+l72cg=^rgd+>-aqWejk>?ikNCu#kiIIPb;PUQ2<5$`I0 z4)cCnPOmuep+1IXeC9IhCkulJsVUl(oSvD653y0<2MsI{qtoqW98?X>P-u&hqp2#8 zZLUd>-BYSVS`azIJ|oj%8=z*1%$m|_msyJ*s$lgm6;-CpR5xNI*rk+sDMB@O0B;hH z^uNge0B{dj+XrSvF|JW-K{%5uY0)hY^yjds7#CpPkG$S}B+(5}uT$oOtW+s0m&TpU zhBx`(H7M_Zz}bSx0q>jOo%GD0J_XErqX;840000< KMNUMnLSTX)hVw-L literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_2_0/00001.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..27e17988c114a3e12acf638b6f4f1df4c5bb8038 GIT binary patch literal 536 zcmV+z0_XjSP)AqgHnv6fx64ecdtj}Pw8LeaZr&C{(*>Ic_?Rf|vVUYcDq z(kT@&N-uiyHOs*{r2-QSsxcVVbK@LxfO=w2i=C50j@dvCIe@b-`0^;vH;S*WD%r6A zGzZvojcUuD9b&E#{Nh0rSysK;hF@gC4QK1U1DSOYUrU}dE}tJ{k_8@f2E?#0`X@<} aydgiZE2bU!4rvDf0000(zbEAMf4FNIO&4hl z9)R1I(p%#f!inAD0I~%?Z^RpTpPu=n`?_IE<+@=n_isO?0mKRhfbqQ+QU$5*_c07o z?gtnwFL`-!$t!f&C@3QHp|aP)+uXEo`qk8%vL`267+QGUFHeV~ihOoE?i7Uc%=vNM zlF|XD`XZnruZ7wxKWz(|m7x=~gq^q}pwi-CVvEx+L+nLPopR>@fy*5VaER9d7#4bn|3mhN~erW9tnL{%}XY{#1v@XpU}J+Rz@-DwCq3C}eT!l;y8^%Rq~8f#Qm{WQ#^SS5^us zhbRl5COL|UK^HO74r@8H1eGeQYO;)jdu3hZor|0`dl!4m0RV8%1g}7-9$VpV%Q!#a z7Nzfp7hsF=J_j@lK*o%%bNORJNtFHiqDagK8QelzkHcAssaRABn|#Q@vT$x|jU%EQ zT{+7qmPOVGg-?vJaGT+T1a1vs7w-4j3CrA%@uWB-Q;qS1%o!gs q{u1aW{7>*_Ff3|+f=ZGkvGE1(%cu_Dzrm0I0000eV{7`mlkLQNCP1%6bgkxA&1Ye{oNsl|LLi1Fm>s{ zYedl7NmcR~7vhP%*8yfsG(VDf^=GKU;_a~)d(H3{Vgmv}B#LOgSRuKkO?wth z8&UxxoP_wyQ|Bp)2LnYOZ6PPc*1Xb|Jd-csj&Q%Mk@xP2i7r;q~TTkZr6Q z^fVp>46QjgP04 znj5{^8*yzw{y(}LU~=VCnvFL#9p;^*kL(2Az*vSEy&$q&B4)Rlr`-&;Y)vQe%O{Af z<}x3X9B`s}r%zV_YV05e_C$wUr+Eh;9cJ>QKIoY8^?m>D=xE0dZbSqY3WY+UP$(1> Z{s4(h;L`bPFl+z-002ovPDHLkV1kQI=$!xn literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_2_0/00004.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_2_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..3d26cdfa98017ce714b8e2030407b75f60da5ee7 GIT binary patch literal 537 zcmV+!0_OdRP)EOOyVrX!$GF$J&^n*w`!~q5w*%ND%@j=T!Igw&p@i_? z$UA6mZ&&Y*t}7QT{=o8){z@PUK&_;Y@OnzFo15)6EE&f*d>gc0zh*Kj!Csjmtx8Qs z5@Ih#8PRKBUc3)6xc`$?Mp(s+tQIJ>+ZwxF2^HI$w6_702w3lx3c@jT->Vy1PCJS` zhJ9IAse~ic4d@!tqM5XQ={&H&?bt4rSdf^Q59j+7$ckcIJiJ_7zx$*q)I;c;a^XZV z?jGgb#qh+X{6}vE>INuh2yq8T9aOrH`rrehDU}=TV|b*}Bg8InBn4f1SS24o)^3v| b`7r(f54ffo@+vaD00000NkvXXu0mjf?tuLe literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_2_0/00005.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_2_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..c52b8c83715f4317a4387ccbad9e8649ee81421d GIT binary patch literal 542 zcmV+(0^$9MP)11ym!C(8vDHDlfrq)*4iz9g%Dy51w?;73LF9s_xFJD zp~*~yjYE^SjSI$s_(MaK4nev@T+cdheXo7Pt%ieMPiF z#rnC!C=8j#A)ral6uRZdUvzrjG{Y%k7lexi8(?+5$@Vvhv)cjIB$sJ1xd%_OGzukx z--~>LW}~*FZv$h11d%6jhA3)tSO zQHe#8)Y;4nX^DNr0P2W5?}{7v9Nzh>`+D(_itEK^TYu6mH<(yJfUT!mR28ba{|7Zc zbh!!hanHEuS?q8M zAQKb;U2>LSSiXOwv2xQ1mxv8W7Xb!9i#PfH0eSW~D0hGL6Fo zXhj{{BU;po@BmPECR4g#@)n$O{MS8dm?#5`@!QvG^~h~x(;CTzs)0U7Xvfh$gLhV&F`>XbJJa$JxPVp(57z3jrq zSz#1{Od$#Ak~4*2`TB{Ck&AXXMeK%fvEcxu!HaC)L7a65^G@P5Z6?m(BwM3UfH-px zQ!VtzkG{T$s*=h|st5D(u!fY>RmLtkMp1{DkqOTQRb5aQ+pd=k52e#6vye4R%7h1~ zWw5pEv@6@B$toRyG#)yDa~_cE7N{UIt3ETeV7U~3A?OKjZ6f{-AdwPVvzYp19NYmc z^lt`@92noc0|FDqUqPO58G`;3=R(jJf5`TOAPA204I>g~mL{^$a{vGU07*qoM6N<$ Ef_%%%Gynhq literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_2_0/00008.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_2_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_0_0/00000.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..dddd4a222064af9e80f99ff185359f68da1d54dc GIT binary patch literal 442 zcmV;r0Y(0aP)L`ON1EkPH zyxHK#fEax#zR(+29=v-C$YJ|v15X5h=ladf?CiCCUyxc=ZwWj_^=nBy?+zYZ2{ z8GNFeoE80^tmu!%?Me9lLA-v@-xw&SiLgS;P^kFAv&xSgd2dxhTg~HWS{zhvS`^b8 z;CflPC;XOlC}E{sPM>pY*P<<-Y8$a6ONv^MMW?6WohW>$Th?0I4ucgtG1e}9FV%L5 zLKVPfU${CbNjar=d-``VYldA<)+1&L84yd7?(W#2C^d^pTPcy7NMo8#g$cRN5Tpy$ zYgW0M`}^5Z;zAH>E`-V%fU+rlrAr02kzRt+0BTfv$W?3Xgne&rC!Ik;-RQ21pX2CB kX?q-vQht!#@8ZdP0Y@aw?B;Si_@% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_0_0/00001.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf54452ee659d4aeb23f2f9f6119170100ca01b GIT binary patch literal 393 zcmV;40e1e0P)}T-~WNVs0&Y?H5jrfu-5-wbaF9Bm@I!w2><{9FyXa*y)O>sDK&$+c-XpM zRz8ofEiG%m+lgxP433|tQYgt`c2snK&8M)g=wLCDd#16{<+Tz|o-cY>n6EfanFTXX>u*BNRycK+{*)sFEdoIZW_IIH6D?-}3(q-lfn&5LHH>X<5Xa%W2+oOXXmb z!N7Rkh_UxF^!AGVRGvu1QCZ-W^-;me52F_^WzDiSQZrVnr=gnY08&IB-3o!V{@TcI z7T}^vLpu*umb^NTy&Ae>v7lsrj{LkZ9}%7=Qg7^r+3HsL-GB+ge(r)- n3j!6qTF}TS|Cs>*0MqdX$SL-T#utq300000NkvXXu0mjf(-5?C literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_0_0/00002.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..309ca3c24e461c9597240ccc36d62a0af82abbc5 GIT binary patch literal 518 zcmV+h0{Q)kP)ECZhfI$F!fn>d3mxfsb4jk_3*`lGLz0_x4}snc%H-GFJ6nkm{=n$0gk^R3gG zd%*1_z!pexy-0%bp=hDTv>Q}cEAZb!=t_e588A*;1TtMf0+}%<0O^~;c#2m~a|n;w zPyGR48z|mS7ePL0#{Kjg?6eF}x0gH}De*H?W;&x4+ZwxImg#%2jEegYwd@v>)%Imy ze^hJT-Sr-Ocm8?tZRF~pNy)L=+TY;iRk5r+3k6TsaqdqLF*p+!+l77%$|PH2plSw_ z;3ad)mrPs4iXr{UPaSSF!#4o-hAsgxI^Rm`l|^lZSgm486){pJ7ey|nUew6!jjXnq z8Y(r^++EYPJCiLnpfi9dD0NVk4ET6KwW^`UuT6`c*%{7&yH4q_JGfVzeit~fAhm5l zO>)PeHgb9?eyki|&VYo==rQs-u*`nWQI7%k9>NUtKx1T!a+yy>N$v|IZo)KIb{b=u z6VE`}-yIIk<}0rE41DpY&$S|;$>tRNWB?8*ZUTWoAn>>N0Q!Tr?z)@k-2eap07*qo IM6N<$f^s_N>i_@% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_0_0/00003.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..623fc5ef354819012aeb2f0f83ff18be25210be9 GIT binary patch literal 399 zcmV;A0dW3_P)?F{McxIcG@t{ zG^xMxS0dK?P}ES9lq+OstK0zLUjgegU|#G(NHURh(MX^*0SK>rZ@bud`nUb7RK7+7 zKnkdfdKy<6iJf2Zepr|RY?w@E`RXo;SMZpp~#{CJ1!Ie0xLO%xMWV11d7m#^1uU$+U z9E(AdM6kC^UILJ@>>#E{+#DBARoFK#M{@Jpd+}+8ofiQsK>#ks!x|9rQ&@friMz22 tT1b9@mG6Aq?u9%AAUO6f0000`_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00000.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..65857e6192851da1fe6a1a31ff003f89510e939b GIT binary patch literal 521 zcmV+k0`~ohP)rl3IZXYqPAf0z77zs|WN>)BtK7{Dh=GjB^K=vKFU3QJcrre3nITxXFef z9%pu2tsZ+wbXq}b1)SiKKWlN{u1UIf>C~ohk?aaMxz>SaL*wrPouhy_ibO_Jg6$Dy z_~IVrxuj|8GVm^{B>^EllSsF?S6^;vY)NpKHvkpoF*~+85$#4hXFWXzD{1eqB;ft= zl;SzGn4zC*5Oo4QX5NogY4;YBWW@dk2)*gK!vWfycR|=Bt+!?&eW4V+ePYxSF*DhT zW@lzYSjNn0xfz}(9z8jk*Z>f3npxkQ-2i*Q=_LqFqAPL2yaDb3FkK*4X<>x_m%!a^ z-XocA)l`MvEy`HbLePjfLgF0`@O};w$M?FBF}QC4Jk0R^!Tt#QKi)qA1HiXaa^q+U zXnM#K9=Q3|>h!X>2P9&PN6(b~rW3YXC>=w$KSgX!&)}wMng;L(K*Qwpv}3HE00000 LNkvXXu0mjfqs8v8 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00001.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba47815fc1a345233ce4e6f5885b603117b1bea0 GIT binary patch literal 532 zcmV+v0_**WP)@m4IqN{j2*7kVKU)ADSv>kB9sxHs4gxPU&8$`>Mtz0YXq8|+q74ad zu(>cw^)YcW;IAFR?g!E?bdn@V{xv_P Wnxq{QlovYy0000wG9P{)ASKfLX`0evjKMYpciW1hD2l?%<41l@=;{A>Q^KBc zF(NFQ#|3huBEU z@qOlQS?sZg>`p64Wxxsc{Mm}<)`E0x>Wqc(AlVE!X?c)1&@{28iex&0$Y@HiJ)%sX z+}cSVGBw7;Siq;Kb_uxDBq!++N9Qtks#CNr*&MEO0Fs#-`?q={x*Njc)OvlG^1(_z zu?rO%-g8)!!vg%>1{b!7LjGQ)y)TJ10IUkk#T?5CurPe%$-PmT%dJ@^cEL^90j4&- zBA#ax(L!AVyoibS6jBV~0zg|6XP)4N6&nKPWNVm+9UgJi9Szv#6YfX82mP{`=z8BT~`MBL}LAQJVc62MNEV(}a13TSA z(yXfVRZc7xQH5;AJ53QW1?fxKBAmrrz8Jg2tDME$uW(i#s*|4wwPUidT`u)O2p? z-Pi^EJwS>W3HqR4i?U&w7H)pV3W$hc64#x5eqMJ`V)sWu6Pxe_zKWtKilQj~GY_40 V&tGsR0FM9w002ovPDHLkV1iD!>(u}N literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00004.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..2406ea8d9caac38dd15180e55995c8b1edd42df1 GIT binary patch literal 519 zcmV+i0{H!jP)ne((C<-gzU-ET85B>3`fIoS$ zP8fJd1!7i$P}_MWKrPU}dd%1d;Hux5Pj82ROZQ85>wfjE+AZzkGTr`xp6;P&H0Ho& z#Qfme6m$l)Td^ZIr(GNU!5jQiQV+&!^^Rs4Pg7XCc1v~VHaM0qA7^4 z!D&%!@h3ffc|PJ@X%5v|@z`4Y?u{Niki|qJ;FlH$fdfqwYpQspQ#u(<3HC>np~0=4 zgwHXw%1kR{4f_t<8 z#x1avaOD-J-PM&iZN}aiEdX$xvThin=F=*#33i+TXTmFMkMPI>;FQ&dt(7plhnY&J zu@#7ItzCOK)5}@!#4&k^1re|#kjI?qRq;oxe0ye;7e!H+`2iI1t>J^QxJm#3002ov JPDHLkV1iv+^hp2! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00005.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..5d7126988d65a47c61f5c4aa7eeaebe1d6afca6f GIT binary patch literal 533 zcmV+w0_y#VP)1g9H5d%#)yl_PBvBSML`zc7T+<81*#!oR_+r?`v^3%tTWV z&ojSm7hCjH*=Yx%9dLtJ{%*x%D?z$<>-2^2a_|co&X1x6u>;Q3)ECaq%`*TWX_c5} z;vKM%17iW7qS{BmR7pm{9(%_!cBn(FZAlLE76A1b8~cALt1d^FoSd)4!}~N1id7wMfp@m(B+WZIr_M2kD zmR;`5v`P`xYV+t0ucsJCJ<-9dH2iuJqB}lU5{6n3FbxE?9Lttnlz_OOE#)cx+i96& zn_P?QXfY1Mi(E#4-mP2;n00000NkvXXu0mjf|9$pj literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00006.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..fb2e06671d0523795c20e69d76b74726012cda25 GIT binary patch literal 551 zcmV+?0@(eDP)2zE}2uXk_Zd=ndP1AV!{n4)jdgz~Q3fPku zW5U2fDi9kb2pv1G1gHi2ubwk7Z-b`J8}mKe;WN_y;&%@A7jLzG(k@d&pZ|d#c2gZR zWwPEi~ozfE6s(kRMa^9ASflRzQY+Yw*$|VxW?t7c6rAHLU35*!8$#4E!woY5IcGi z^EjIHAXzX`JJOq$Usy%W82R$2r`Eeogy3ic@zlDZkO=*~O12T-e+$59JX^UNwTiADB$^!cWfE5@B9Jz}X(-2p40%Bq~a zW8l~TXMstcmOzzt2w$2*)Do$zMXTR6rAehl>=0G8xv66;Otf#}gUs_8ei33+IQ614 p;06Lq6Ubw+XMtG9rfHgL{s7;~s3TVFmNftX002ovPDHLkV1iK6`=bB= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00007.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_1_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..050c2d2790938d65687fc8af6c0df98a38e41285 GIT binary patch literal 492 zcmVf_q-4w7RZktGd2dajvMpqFz>DD{@`~C_Xls)e$q#VRM&4Hhuv%{ z^%-!OZb)hutTXGdBmyjEbfc%64{?GT41%Ab-f!sI0j8YAXb)C_C}7W*Ry?-4NY94O+!Ef7mh$9*QcD8e(RR;vR2SF}s2pt%z*`zK zrki*dIC9}yz`LmS5)f*V5x2(Kv8)~H5@|=0L!1LppS5fMo3iS58k3XrwVCw6Np@tR zL}Tkdtf^?e?l%vzngpXFO(`y5j4HBoeu>+QMa?FBAFJz@gElxo;4MWMp#$)}?pF!T z$7!pq(m1pLAH`H^?gbX(IQ4X7I{AKz0NFEMkUo#l<`kjN{}!-!1vzIJs-B iIr|=R){-PiuE!rY8n%*{HQ^`#0000_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_2_0/00000.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..698b65ccf1521a97e47bebda23675583916881e6 GIT binary patch literal 520 zcmV+j0{8uiP)R zsy8zX(%u8>4EkMf4uhkqb{U9RZaV2gnsC$AZXR?5P894i>mQFOeZ$C8*c_ zi5TWEk^q;SC4}YU12<<3+l72cg=^rgd+>-aqWejk>?ikNCu#kiIIPb;PUQ2<5$`I0 z4)cCnPOmuep+1IXeC9IhCkulJsVUl(oSvD653y0<2MsI{qtoqW98?X>P-u&hqp2#8 zZLUd>-BYSVS`azIJ|oj%8=z*1%$m|_msyJ*s$lgm6;-CpR5xNI*rk+sDMB@O0B;hH z^uNge0B{dj+XrSvF|JW-K{%5uY0)hY^yjds7#CpPkG$S}B+(5}uT$oOtW+s0m&TpU zhBx`(H7M_Zz}bSx0q>jOo%GD0J_XErqX;840000< KMNUMnLSTX)hVw-L literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_2_0/00001.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..27e17988c114a3e12acf638b6f4f1df4c5bb8038 GIT binary patch literal 536 zcmV+z0_XjSP)AqgHnv6fx64ecdtj}Pw8LeaZr&C{(*>Ic_?Rf|vVUYcDq z(kT@&N-uiyHOs*{r2-QSsxcVVbK@LxfO=w2i=C50j@dvCIe@b-`0^;vH;S*WD%r6A zGzZvojcUuD9b&E#{Nh0rSysK;hF@gC4QK1U1DSOYUrU}dE}tJ{k_8@f2E?#0`X@<} aydgiZE2bU!4rvDf0000(zbEAMf4FNIO&4hl z9)R1I(p%#f!inAD0I~%?Z^RpTpPu=n`?_IE<+@=n_isO?0mKRhfbqQ+QU$5*_c07o z?gtnwFL`-!$t!f&C@3QHp|aP)+uXEo`qk8%vL`267+QGUFHeV~ihOoE?i7Uc%=vNM zlF|XD`XZnruZ7wxKWz(|m7x=~gq^q}pwi-CVvEx+L+nLPopR>@fy*5VaER9d7#4bn|3mhN~erW9tnL{%}XY{#1v@XpU}J+Rz@-DwCq3C}eT!l;y8^%Rq~8f#Qm{WQ#^SS5^us zhbRl5COL|UK^HO74r@8H1eGeQYO;)jdu3hZor|0`dl!4m0RV8%1g}7-9$VpV%Q!#a z7Nzfp7hsF=J_j@lK*o%%bNORJNtFHiqDagK8QelzkHcAssaRABn|#Q@vT$x|jU%EQ zT{+7qmPOVGg-?vJaGT+T1a1vs7w-4j3CrA%@uWB-Q;qS1%o!gs q{u1aW{7>*_Ff3|+f=ZGkvGE1(%cu_Dzrm0I0000eV{7`mlkLQNCP1%6bgkxA&1Ye{oNsl|LLi1Fm>s{ zYedl7NmcR~7vhP%*8yfsG(VDf^=GKU;_a~)d(H3{Vgmv}B#LOgSRuKkO?wth z8&UxxoP_wyQ|Bp)2LnYOZ6PPc*1Xb|Jd-csj&Q%Mk@xP2i7r;q~TTkZr6Q z^fVp>46QjgP04 znj5{^8*yzw{y(}LU~=VCnvFL#9p;^*kL(2Az*vSEy&$q&B4)Rlr`-&;Y)vQe%O{Af z<}x3X9B`s}r%zV_YV05e_C$wUr+Eh;9cJ>QKIoY8^?m>D=xE0dZbSqY3WY+UP$(1> Z{s4(h;L`bPFl+z-002ovPDHLkV1kQI=$!xn literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_2_0/00004.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_2_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..3d26cdfa98017ce714b8e2030407b75f60da5ee7 GIT binary patch literal 537 zcmV+!0_OdRP)EOOyVrX!$GF$J&^n*w`!~q5w*%ND%@j=T!Igw&p@i_? z$UA6mZ&&Y*t}7QT{=o8){z@PUK&_;Y@OnzFo15)6EE&f*d>gc0zh*Kj!Csjmtx8Qs z5@Ih#8PRKBUc3)6xc`$?Mp(s+tQIJ>+ZwxF2^HI$w6_702w3lx3c@jT->Vy1PCJS` zhJ9IAse~ic4d@!tqM5XQ={&H&?bt4rSdf^Q59j+7$ckcIJiJ_7zx$*q)I;c;a^XZV z?jGgb#qh+X{6}vE>INuh2yq8T9aOrH`rrehDU}=TV|b*}Bg8InBn4f1SS24o)^3v| b`7r(f54ffo@+vaD00000NkvXXu0mjf?tuLe literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_2_0/00005.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_2_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..c52b8c83715f4317a4387ccbad9e8649ee81421d GIT binary patch literal 542 zcmV+(0^$9MP)11ym!C(8vDHDlfrq)*4iz9g%Dy51w?;73LF9s_xFJD zp~*~yjYE^SjSI$s_(MaK4nev@T+cdheXo7Pt%ieMPiF z#rnC!C=8j#A)ral6uRZdUvzrjG{Y%k7lexi8(?+5$@Vvhv)cjIB$sJ1xd%_OGzukx z--~>LW}~*FZv$h11d%6jhA3)tSO zQHe#8)Y;4nX^DNr0P2W5?}{7v9Nzh>`+D(_itEK^TYu6mH<(yJfUT!mR28ba{|7Zc zbh!!hanHEuS?q8M zAQKb;U2>LSSiXOwv2xQ1mxv8W7Xb!9i#PfH0eSW~D0hGL6Fo zXhj{{BU;po@BmPECR4g#@)n$O{MS8dm?#5`@!QvG^~h<6qZz2;pKKrAx=&_35fsvy<<9#tnT zJ%Gl%$@9j=TWGbAQAEZ=VQmXHUAH&6HRVH@6BApg?(2Sh%?^7NIrnzVAqdBr_5C^p zr3Hp+^MDiH7S39Jw#jKcU8j=?8!>ypN%8~55hpi8yo)7u!jl6yZjztGlD-0J$${w^ zVHAu^<`U2(rweNN@{X03gJ#%8tV6hP*Z{8aAlqLc&MpVBCb3M;#2(DVH3|g)*K?Ts z$dTs}LH1FYG1VQ3Oj@NQ-X<>0CN{}2imDEeDH%Ygi84t`g*GiZzLeqyKqFq|yc}Pr7swYGU_wwes+0=Ja(N26wRUhI>XD4ou|_WJ zO)_)lVGQ#&U_)`anl$}K9M1p}{C9#xPHvvMNPWGXR$>3RT%M^RD42N<;JJY92SE@_ Z=LMKJl|m@gQf&YL002ovPDHLkV1g<-&1e7s literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_2_0/00008.png b/tests/snapshots/nanos/test_register_wallet_accept_legacy_v1_2_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_0_0/00000.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..dddd4a222064af9e80f99ff185359f68da1d54dc GIT binary patch literal 442 zcmV;r0Y(0aP)L`ON1EkPH zyxHK#fEax#zR(+29=v-C$YJ|v15X5h=ladf?CiCCUyxc=ZwWj_^=nBy?+zYZ2{ z8GNFeoE80^tmu!%?Me9lLA-v@-xw&SiLgS;P^kFAv&xSgd2dxhTg~HWS{zhvS`^b8 z;CflPC;XOlC}E{sPM>pY*P<<-Y8$a6ONv^MMW?6WohW>$Th?0I4ucgtG1e}9FV%L5 zLKVPfU${CbNjar=d-``VYldA<)+1&L84yd7?(W#2C^d^pTPcy7NMo8#g$cRN5Tpy$ zYgW0M`}^5Z;zAH>E`-V%fU+rlrAr02kzRt+0BTfv$W?3Xgne&rC!Ik;-RQ21pX2CB kX?q-vQht!#@8ZdP0Y@aw?B;Si_@% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_0_0/00001.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf54452ee659d4aeb23f2f9f6119170100ca01b GIT binary patch literal 393 zcmV;40e1e0P)}T-~WNVs0&Y?H5jrfu-5-wbaF9Bm@I!w2><{9FyXa*y)O>sDK&$+c-XpM zRz8ofEiG%m+lgxP433|tQYgt`c2snK&8M)g=wLCDd#16{<+Tz|o-cY>n6EfanFTXX>u*BNRycK+{*)sFEdoIZW_IIH6D?-}3(q-lfn&5LHH>X<5Xa%W2+oOXXmb z!N7Rkh_UxF^!AGVRGvu1QCZ-W^-;me52F_^WzDiSQZrVnr=gnY08&IB-3o!V{@TcI z7T}^vLpu*umb^NTy&Ae>v7lsrj{LkZ9}%7=Qg7^r+3HsL-GB+ge(r)- n3j!6qTF}TS|Cs>*0MqdX$SL-T#utq300000NkvXXu0mjf(-5?C literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_0_0/00002.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..890692eb236dccd20895cd0c322cebbe5753cd93 GIT binary patch literal 515 zcmV+e0{s1nP)C>|f>Dlc$~jK(JRJpJ;Z8nC2osokmOr$N7<<;lM(%+ zMow%J!K;c~&53He{NfJeK(2t6C8Au~We1P}A8Vq$daAN^BBQbtG-}A$&SbLQew$E7 zMk@tb2_0Q_COh4JjP-b~h=7D2(2REVE#^n1odL2Rbnct}LzqB$5OvuhWR3QjPeo21 zTS(1yyr#yl5=yZ*e(Y=ka2}3Jmx2Pr2!S~e2m}H(`~ZkJjI##(GoW8=B9KgwE+Z1iX9Ln-zRMwAJpJYP4k}-* z8vq4#i+XyzX)J!868+?u0cv?U!jTfbGkKEm^HDkM&2@ z)@-izwRgwq#mmU<(4<6GJNs`&d6oUGokhlzb)35hu?I8RtO|V@N|49a+-y%#=rU#< zkX`aKWNemHancd5Y6=PC(jB{@QcNv|JT`#g@FRA7%Ub@GU?B|n6z^!3W-VPN;Euv8M&5ZByb$Uh10x`;Qt<4FHj_?`6))v&+@P-wTOG}z0KhFdc(`M$g67}^6% z!>cD`Rcpr@+T$yTmr+P+_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_1_0/00000.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..726b3321f913567117dace2586ee482b640b41a9 GIT binary patch literal 522 zcmV+l0`>igP)3r#KoiEnmOt){Khc&83 zhYq+L`x3*H>|HS7UX*1rz~aU*d%)eP8bGgsAD8q88au$1wHW>J`b@L=x>jeyOmqv9 z`^;|HYVn8dPAdpyzy)6Us~6u}3(~czlMCS_(G0j~d0=^<$+18u6;M}^$@G+9e^eQn z+*Dpl4qaUaev0;90$h3~5w^J3y*y%U$>uO`0W!*cer$Cj+Krl=_0$@yq-K95_t`&9 zqU@whPhGS{p6Vd*|CM(~`9OC`oyjlIRvHPjg^4TTFzEJw?@#r%kHv4(J(Y+Ii1yFa` z;ki?NY_Qmunpt(zILkc`y?GqglciqR9wBuM-ToA@H5I`{Q4|H>A9gso@w!+JkN^Mx M07*qoM6N<$f`$n4rT_o{ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_1_0/00001.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..53c08bb46228760f9a53d1a1e84ca56d18c33bee GIT binary patch literal 555 zcmV+`0@VG9P);uFEoKlh`Ns`3M<4-6we$onF;`wzmw0uK$4_a#9TH z6R??XN@@qhm>5jS0E>)n_H<8@V?KY5@H1rnPy6fuDSI*MG1}A=;m2ZcnDI_Qe4aTi zi!FM{>?DG(hH+)U1s?h9YPW4<{@DU($l~5F{tURNdEj`VX=c@xnDrH6qdCEPL>rRa zU~yrTI>y9@5x+&XO~6t~M%)pjZJFEDDc-isPU{8$+01?Rk6IC(hR`|LUmqsNU?-oL zg%XYTPQD43g9|CJYJ7!di@d@LJ4M+jiEBjSb{1mEORP8<1&npCFCi=imZ5^rLn-;< znq?fV&V#E-gBtXW7%4jP2eZH;39$^qH$ea~V~BpDkPGH_8AF$*(?rkj=mP+%J>9+- z+8K%xBQs&Ey!FFXiBDA|I^RY2{KQHTQ?QpV)>mc_HM&--D4vWzU;sGVJGwO83f}n_ zF{wumfQEfi=4G;>C>1aXPog&f-S-Jz^Jtdf+aZR$KUXh9D`Fi~3s*aB=2y?d_h_q^ tq{|3=kU5IjcfoJqi<+0U*d$338&CE4x$m15Tu}f3002ovPDHLkV1g3F{=WbK literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_1_0/00002.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f2cc7127ed0acae272ed4c47c26e2d62be9b009 GIT binary patch literal 556 zcmV+{0@MA8P)v{ifURYI=M|Arm%QFNLk zuo!MiY7a!12u#TUgoc|v?s`Zp7_9)lLejtJW5=Mf79by2W=MM+ znRm-#gb!JrRv?uD4ff2pR=aO!kgiRgu@D|aHUk>YJV-mn9Il%HOJ;8DztxH8-5?B3jn~bnIarB1 zR-uB1@IEXa)%izW7j(}#wmLCl1FT!%O`Ot(b&6Ydiysc~@(ypp2d?iDZr^oeU-Xc< zL0BQ`3L+P=@q0(l23I84qLTx^C4rWClo+*JoF0FjQ{-?L3h_aF)fBZ?kwD_vl@$4F zoki5)gZNk}LS!>2!&TBjbn5cbA+DPyfH{p!fWfIxI+qqAMm(mm_FMy!-ezt@%6T4#u@K`V%fqYz8ljFKXmqY2 zlMYZLBBFHmbX;)> zTws7LMZ_pn*OoR0qe@_z8$%F_3^d%kQCn@n5BbqU%dSz=i_pn|woH_V|2*z;B_GE4 qUy_AX+~XFs8Q{gHP$(4sJAMJsVcTAz<$>D(00005A-w-O`|af zF2-CRhJr%Qpm%F_)aJZv(jOe)#aV*1fY+TMlmR-%#|>|X-y1;q*CzS?#w22Oc@C?RB_nsqs@+ru?*Q~? z+Y;1dNwdo1xz=Ll7|2BI{(J<2z;yV$O}O+{;d%KxbIMrOWkBut&o1)Phtq9Uv1waM zJ*sZl4OP+J1&T|aK+^Fh++fe^M=918nnv-hf@n}Rb*;E`@U^LRl%r4RHODi*-uu}) z(zLP+jyZL>!!FUl$jZoQ8*o`~MlvoFou_wVmMvj7RaIfVonDnQ+<>0D{In7&V8!Ye z(*_u0%R-E|%3|RnaH~SV4LC@}|KNVuE1rrjJ25sQvp+c)GvEeG-s#OmU5WKn0$I=# s+*ri8G&BhjO+%l|mz@11Ns{Hf0Nn`cwGAt#pa1{>07*qoM6N<$f+#5gga7~l literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_1_0/00006.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_1_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..beeb4d3a6494681662bfa4c62272ad94219b8a0a GIT binary patch literal 556 zcmV+{0@MA8P)}Z&YEtap4{Jk% z8`@LLp;R9e=YswfmA2SRB^e2O%=Tq&SEsbLWpP;d0yLYsbN{Fv(P=P)Q{(k8^$vFO z#41!sd=B!(6tfwXMiMXRp|t&?NtpJzZ=<)88G1+^H6a}|tf;4|0)kmR)Yq6{Vq{8F zQvS!DWuyl>yYlxarEJf1NeM2Q+(8UFmS)Y0qdc8=UKi*HWYv^C?vu%vgI&REs!o0hu=bOK|c)oe7_LKf)sO$1==wUCb zoz58mrkRr30~2NfAsNtPMl*Yw_0TR*gGul=Bz;5Yj$sOxPJ3*bD{rX3G@E7XII|^4 z)|u0?xW^t=oe)fAz=a+8tJU_cOj2y>_@?l7w2~(`lv)vJdfVLF(Y}oJfa=lK0DDPe z#xx6WKp+F>g1w4rhk&Ifbu!(f*OypVL$pDP!@2-iGO=_2m#XS^Dua{bwV8|ok{wkj z(b&2UhhT4fSyS_5i*-=+E)HU+9cTlAo_KGB0kc;TQP3G7uPr^}CG|*cY(65w_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_2_0/00000.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f42feee35ab892e5f3d15676f4d880430636d285 GIT binary patch literal 518 zcmV+h0{Q)kP)m+&W`qc-8o9y(S*5wx(SBuSDaiJSYEe-6ljfArNd(2A() z)`H%yoFqS+aUqh}EgQh9rt6(yfp>W1zwXzCTPm*$zmh!wXiB!br7TK z&2)oQdO)3xekaXAQQd9S6)7`ePs=1>u?VQ>zEI!lt8GEEGIS=n@F2qxP-$^sx#H+pBXk!fb;g?m1+L^JG{ma}_S!!Y z#T-f!;F2?iuzdT#%^AaXAzxDA8n|>19`QxAp0vq+au0Tr*58T4`sm|?K93ynuJUI$ z@7Lu>#fdNVQ7q##mr_5O7(|wuqF%|7%+!5|jS9=*uq9$pjg)afH84YgElQ5Ys<3Qx zO@j2ERGp<|ikzP5Y#YF4iO8DNYPVX8?y5lbFBVoN%~Us{B-o{tcqxK4cK~k^Z|Q%7 z{{h%NU~V5XGm3GIS_`r>xRMs#^dNo?lZtTx#{J0a-A5AL0QNdXK8Q+{v~sE3$!K_! zZ@en$9S}HM!g5&2C2%J_GpJ9&X1!hnobx&HAkuM@BuNqrAAfSiG<)WG*Z=?k07*qo IM6N<$f{Q2bDgXcg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_2_0/00001.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..481c8bea32df93ae3975dd8f39d7275d2ef706b0 GIT binary patch literal 549 zcmV+=0^0qFP)QU5F+276+&$a=bfc;B&g?pYG$uOHPg#ueJWAT{=uGFo3nET2vLPy8nl} zNv#jo7%zFexbO;f3tdH4FEv_D@iEu!7rL6LDfh(05h50z_zJ%lPVf&j<^=@19G<8Y;kXo>6^}XFi$u?fz zX;Ug<2rGKZH7mghr3SMLt}z(bbFJ|$72pmBxF`0s*f}}unB9w97Vq5Q0Lk{?OC_r- zG%aWDDS{4&CmP+BmK|!M5&Ya?gQC!RqCS$58u?&B&00000NkvXXu0mjfZcqQ> literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_2_0/00002.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1afd99e33cac0ff55ea34028c96d11b264e609b7 GIT binary patch literal 536 zcmV+z0_XjSP)nb(v4-XW*{;Gty{U8FI1 z0=~YK+M018oY+eoKwiP?_1J;G?mIuaj}ud`- zFJQ79@^Wy=5vpDk6p{7NINHLa@3uE}G}WeDQxjWIEj-Sz)#0on*WS)>3Bq+||GX|m zX#-QoG9V+zLLQY@TaspF>Nth)Aj27uDS6QGh_i-%exovT(h6O~E+`iZ93V}e6#E<0+3g_qB(`ZW;e#t#T7?3@_a-02 zu%&xb1o@t2Km>qSb@?R0b(w_a2-?+kHBB}eps1;Ty0k)7b;hB@_lJEuOLkFaoDO1S zY1=Yga0Y_|NR{Mn*5C1Yos^8{;OMqHtThQR_CCsZ5TumcN{}P?@12!B%jNx1KL@Dq zAwmz!ahLb#aoXv10N72?OrG>^3LL50h9~0+nGDvFwRF;AZ^o^Hoy6l0nP7l$KoA7M a@A3~O1)5hsMT;i@0000``Af{E=COfD(x)S}#@>ZPBUi z1$GXu06|W&_)Hp38c1(c29jtaJ1({Y0tz@DCfRO?F@~)s&S!Q7ocIp)J{h!9-CDK) z0PlTIqDrMXb5bz}0Otex7F5TioabIBwA;q{CqdW&&`hS4q>;CMdUP$M;fyB-60W}1 zROl$M(p;4uhKfNY32@m-LD0Ujd*^2}CYfS$!S1xi0opHT#Qy#_qFcZ$ORdymln?I2 zx?QM1@wvzc^O}}-K6>;nThfKBwd1|9v8>n&yTq1lcNx+78?T`wx7Cb_N7RB|!0A?; z&?`%+N8y=TfQcnyQXYgtMiK;@#n72Z)+}juIwUP32X_k|F9aMQtzZj9s#o$!zu6(; zIp;vyY_S=0e?}=nL4;p=9fozG%Na&W9%;t@A=Bj{X)^_RHDSkas0Eq>V2H+K1wgOv zNOzkQ`1g`W@z(c$Y zfXDtQE1W`+sT2V&Ia3JBw@>VhTy%$1#BN9z8w{WgUgY~X$g{Tt>`89ZX3_>%vNa1O z1jjjSthO!1Fl;o!>c5NLBvAC!H8(!Fx*pr~72Tutr%C?V-ZhLxo+LJ4fE6~g5v_zR zE?}vFCE?xAE+O?RRGaj9ppb5SC^4OyZ>W-Iop_-3H;KD@3Rp3VV>sHo;yg6d3*+(ugwAo{OY&kxS0H uY8u8W!OvY&(AzNS51AJx(@2seugec?tnDVW9RHL60000Ib literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_2_0/00005.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_2_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..ed19982c76527c41eeb056ef72cbb20029b962da GIT binary patch literal 545 zcmV++0^a?JP)H1t2@cr4cjmZEpGL`?}#jmFtG3qn~|~1`x|A0P6R>kX?}7{XfX~ zpfVF+f`Jap^9D;BKxt?RbY|Vb@t*KY#nV6_ys^N7HeYZZ7W7p#jK{(Ew z@7FCT9iXbu11h{N)KY%5&1rVJPLK&ZaeF|e`GH}Jlba!4#Zh;{odY;-li$RWz5+@~ z#q6vw3PvV#2~f!i!7N|ia8h&82t&kf2p1a`fUCU7_78}&$3e_VPSa*`4W49c6iNVp zC;1|Z$rDxIj6ZULRg|Z6M!6$KAgL|R|L|(aht^k?2xN3qqs_khPZXmhlKiwP)Y+!$ zsFhNh?;>V%3-b14GYycU5jN@Jjdb)plBpj;L@uZ)!FSK3h(R@Q&y=8A34FipXRt*= z{5|a&OPirt0LMD(2+Yz*bk_P%nOPfSUI@(sXyl#(bD%JrQD_=fpA9`DiRc34`pF6) zF}Eb|R!Yn($;#5WG~Ml0W&w284gu5$XA0XMW+c!RV$XuY`Ukjj#0#0kLC^~s4|{CC j0wUD`uOyQsNgm`4S6Gla-+rs|00000NkvXXu0mjfl|cFv literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_2_0/00006.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_2_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..e564207a7c0d4d132406a49831c877abe00471af GIT binary patch literal 516 zcmV+f0{i`mP)6k`~DByi}u2utOfk#U^JQGo4tr9Kt)_BB}tMbNzDBI$lne*?TrJgGdt#ymtA+ejiF3CT4naK5-2YskK?#_O zTjvow0Tt{EwRJe#^;hmB7Y-6W0hRL{IIcLoqw!trsZ-t@^(T;UWz zCU^vxW|DkAk7bv+d%5k%DK;Sx;iBd)4JYkQYE9`U^o&@Px zQ&L*MR9gg`U|%>}@oZDjc!tg(7dB#!fRhvl9Y>tr4a;4W)G1F661Yiz63fO4X=M%T zXNFS%ncx!8BxeZS^7R8NJtxg@h**bo;jjUy^CaJ2AkQubvnH`j&cq(viE9=L2-ij4 znP&SJRj#8+8mKH0Y2-tYylFK6_s12jCOmF`mV*}*m&hYqjj0aT>yuIT1A(+nr~*x3P6U*ps;P;R&MPqAk_iz&Vp&>o{oJ}gY9&}tmy|y5 u5SG9-(QjqFL-@;ZIfSKiG6;eoxRnnZ8H=57$LPHP0000_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_0_0/00000.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..dddd4a222064af9e80f99ff185359f68da1d54dc GIT binary patch literal 442 zcmV;r0Y(0aP)L`ON1EkPH zyxHK#fEax#zR(+29=v-C$YJ|v15X5h=ladf?CiCCUyxc=ZwWj_^=nBy?+zYZ2{ z8GNFeoE80^tmu!%?Me9lLA-v@-xw&SiLgS;P^kFAv&xSgd2dxhTg~HWS{zhvS`^b8 z;CflPC;XOlC}E{sPM>pY*P<<-Y8$a6ONv^MMW?6WohW>$Th?0I4ucgtG1e}9FV%L5 zLKVPfU${CbNjar=d-``VYldA<)+1&L84yd7?(W#2C^d^pTPcy7NMo8#g$cRN5Tpy$ zYgW0M`}^5Z;zAH>E`-V%fU+rlrAr02kzRt+0BTfv$W?3Xgne&rC!Ik;-RQ21pX2CB kX?q-vQht!#@8ZdP0Y@aw?B;Si_@% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_0_0/00001.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf54452ee659d4aeb23f2f9f6119170100ca01b GIT binary patch literal 393 zcmV;40e1e0P)}T-~WNVs0&Y?H5jrfu-5-wbaF9Bm@I!w2><{9FyXa*y)O>sDK&$+c-XpM zRz8ofEiG%m+lgxP433|tQYgt`c2snK&8M)g=wLCDd#16{<+Tz|o-cY>n6EfanFTXX>u*BNRycK+{*)sFEdoIZW_IIH6D?-}3(q-lfn&5LHH>X<5Xa%W2+oOXXmb z!N7Rkh_UxF^!AGVRGvu1QCZ-W^-;me52F_^WzDiSQZrVnr=gnY08&IB-3o!V{@TcI z7T}^vLpu*umb^NTy&Ae>v7lsrj{LkZ9}%7=Qg7^r+3HsL-GB+ge(r)- n3j!6qTF}TS|Cs>*0MqdX$SL-T#utq300000NkvXXu0mjf(-5?C literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_0_0/00002.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..890692eb236dccd20895cd0c322cebbe5753cd93 GIT binary patch literal 515 zcmV+e0{s1nP)C>|f>Dlc$~jK(JRJpJ;Z8nC2osokmOr$N7<<;lM(%+ zMow%J!K;c~&53He{NfJeK(2t6C8Au~We1P}A8Vq$daAN^BBQbtG-}A$&SbLQew$E7 zMk@tb2_0Q_COh4JjP-b~h=7D2(2REVE#^n1odL2Rbnct}LzqB$5OvuhWR3QjPeo21 zTS(1yyr#yl5=yZ*e(Y=ka2}3Jmx2Pr2!S~e2m}H(`~Zkrx-Twu5PzQT5`c%Nb$r|s`nt%*MHVeUV9LI4gcs+lv;U}+B5*X-J&lJ=M zJQ@{9N9R3P9&l82qDrRIrLji%D0gT5-lir%z1beJ*!K9YEKn(#qPnTsc#~1zCuQ6- z4UJd&6U1sSvKC5`dV}I>)jOaZRWQE-`o$Ik#RTOtqJZWkAbjeb53%v`=i@tQ`)W-9 zY@nyuPh+Ri_<2b5!^8>@x0e`>5U^*al@4NAUF8&DncjzG1n&sESHn_bZC@Vik7%uV zy4JRL!(rpw$l0MqiCA0vJEOeHe%7uc}!X(Dk^ZTqC@q#f6sPCW{=y9?gcR=@scw1YE4c zOaiWoCtxuKdO)PPH(F|{Cq#2VCjKv`G45|cdD2b@9ktY8MMXx}X{2Y(nydiFaUAEm Zya9>dHYp>@7>xh`002ovPDHLkV1loi#gYI3 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_0_0/00004.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_1_0/00000.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..726b3321f913567117dace2586ee482b640b41a9 GIT binary patch literal 522 zcmV+l0`>igP)3r#KoiEnmOt){Khc&83 zhYq+L`x3*H>|HS7UX*1rz~aU*d%)eP8bGgsAD8q88au$1wHW>J`b@L=x>jeyOmqv9 z`^;|HYVn8dPAdpyzy)6Us~6u}3(~czlMCS_(G0j~d0=^<$+18u6;M}^$@G+9e^eQn z+*Dpl4qaUaev0;90$h3~5w^J3y*y%U$>uO`0W!*cer$Cj+Krl=_0$@yq-K95_t`&9 zqU@whPhGS{p6Vd*|CM(~`9OC`oyjlIRvHPjg^4TTFzEJw?@#r%kHv4(J(Y+Ii1yFa` z;ki?NY_Qmunpt(zILkc`y?GqglciqR9wBuM-ToA@H5I`{Q4|H>A9gso@w!+JkN^Mx M07*qoM6N<$f`$n4rT_o{ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_1_0/00001.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..53c08bb46228760f9a53d1a1e84ca56d18c33bee GIT binary patch literal 555 zcmV+`0@VG9P);uFEoKlh`Ns`3M<4-6we$onF;`wzmw0uK$4_a#9TH z6R??XN@@qhm>5jS0E>)n_H<8@V?KY5@H1rnPy6fuDSI*MG1}A=;m2ZcnDI_Qe4aTi zi!FM{>?DG(hH+)U1s?h9YPW4<{@DU($l~5F{tURNdEj`VX=c@xnDrH6qdCEPL>rRa zU~yrTI>y9@5x+&XO~6t~M%)pjZJFEDDc-isPU{8$+01?Rk6IC(hR`|LUmqsNU?-oL zg%XYTPQD43g9|CJYJ7!di@d@LJ4M+jiEBjSb{1mEORP8<1&npCFCi=imZ5^rLn-;< znq?fV&V#E-gBtXW7%4jP2eZH;39$^qH$ea~V~BpDkPGH_8AF$*(?rkj=mP+%J>9+- z+8K%xBQs&Ey!FFXiBDA|I^RY2{KQHTQ?QpV)>mc_HM&--D4vWzU;sGVJGwO83f}n_ zF{wumfQEfi=4G;>C>1aXPog&f-S-Jz^Jtdf+aZR$KUXh9D`Fi~3s*aB=2y?d_h_q^ tq{|3=kU5IjcfoJqi<+0U*d$338&CE4x$m15Tu}f3002ovPDHLkV1g3F{=WbK literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_1_0/00002.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f2cc7127ed0acae272ed4c47c26e2d62be9b009 GIT binary patch literal 556 zcmV+{0@MA8P)v{ifURYI=M|Arm%QFNLk zuo!MiY7a!12u#TUgoc|v?s`Zp7_9)lLejtJW5=Mf79by2W=MM+ znRm-#gb!JrRv?uD4ff2pR=aO!kgiRgu@D|aHUk>YJV-mn9Il%HOJ;8DztxH8-5?B3jn~bnIarB1 zR-uB1@IEXa)%izW7j(}#wmLCl1FT!%O`Ot(b&6Ydiysc~@(ypp2d?iDZr^oeU-Xc< zL0BQ`3L+P=@q0(l23I84qLTx^C4rWClo+*JoF0FjQ{-?L3h_aF)fBZ?kwD_vl@$4F zoki5)gZNk}LS!>2!&TBjbn5cbA+DPyfH{p!fWfIxI+qqAMm(mm_FMy!-ezt@%6T4#u@K`V%fqYz8ljFKXmqY2 zlMYZLBBFHmbX;)> zTws7LMZ_pn*OoR0qe@_z8$%F_3^d%kQCn@n5BbqU%dSz=i_pn|woH_V|2*z;B_GE4 qUy_AX+~XFs8Q{gHP$(4sJAMJsVcTAz<$>D(00005A-w-O`|af zF2-CRhJr%Qpm%F_)aJZv(jOe)#aV*1fY+TMlmR-%#|>|X-y1;q*CzS?#w22Oc@C?RB_nsqs@+ru?*Q~? z+Y;1dNwdo1xz=Ll7|2BI{(J<2z;yV$O}O+{;d%KxbIMrOWkBut&o1)Phtq9Uv1waM zJ*sZl4OP+J1&T|aK+^Fh++fe^M=918nnv-hf@n}Rb*;E`@U^LRl%r4RHODi*-uu}) z(zLP+jyZL>!!FUl$jZoQ8*o`~MlvoFou_wVmMvj7RaIfVonDnQ+<>0D{In7&V8!Ye z(*_u0%R-E|%3|RnaH~SV4LC@}|KNVuE1rrjJ25sQvp+c)GvEeG-s#OmU5WKn0$I=# s+*ri8G&BhjO+%l|mz@11Ns{Hf0Nn`cwGAt#pa1{>07*qoM6N<$f+#5gga7~l literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_1_0/00006.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_1_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..beeb4d3a6494681662bfa4c62272ad94219b8a0a GIT binary patch literal 556 zcmV+{0@MA8P)}Z&YEtap4{Jk% z8`@LLp;R9e=YswfmA2SRB^e2O%=Tq&SEsbLWpP;d0yLYsbN{Fv(P=P)Q{(k8^$vFO z#41!sd=B!(6tfwXMiMXRp|t&?NtpJzZ=<)88G1+^H6a}|tf;4|0)kmR)Yq6{Vq{8F zQvS!DWuyl>yYlxarEJf1NeM2Q+(8UFmS)Y0qdc8=UKi*HW@gC<1C9k0eQwB$?&^(=Hq2(2uM#=;LoD z8#k4yPgt#ILS~_T`-K3pK>qGAV`V_CUYVCcypa(X!cr!=O_ zFz_xgut?*z}HC8fL$XobmukokZs#ZF1zLCN69v&H!4R1_STb zhoG>HI0Nj<0Zp#Dxj15g$&k&Ot(`KOQA7U#h$j4M^J0fh#~(7u3htAH&1{WqNs=UY Z<_qOal|pPhft>&V002ovPDHLkV1hp_){X!G literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_1_0/00008.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_1_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00000.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f42feee35ab892e5f3d15676f4d880430636d285 GIT binary patch literal 518 zcmV+h0{Q)kP)m+&W`qc-8o9y(S*5wx(SBuSDaiJSYEe-6ljfArNd(2A() z)`H%yoFqS+aUqh}EgQh9rt6(yfp>W1zwXzCTPm*$zmh!wXiB!br7TK z&2)oQdO)3xekaXAQQd9S6)7`ePs=1>u?VQ>zEI!lt8GEEGIS=n@F2qxP-$^sx#H+pBXk!fb;g?m1+L^JG{ma}_S!!Y z#T-f!;F2?iuzdT#%^AaXAzxDA8n|>19`QxAp0vq+au0Tr*58T4`sm|?K93ynuJUI$ z@7Lu>#fdNVQ7q##mr_5O7(|wuqF%|7%+!5|jS9=*uq9$pjg)afH84YgElQ5Ys<3Qx zO@j2ERGp<|ikzP5Y#YF4iO8DNYPVX8?y5lbFBVoN%~Us{B-o{tcqxK4cK~k^Z|Q%7 z{{h%NU~V5XGm3GIS_`r>xRMs#^dNo?lZtTx#{J0a-A5AL0QNdXK8Q+{v~sE3$!K_! zZ@en$9S}HM!g5&2C2%J_GpJ9&X1!hnobx&HAkuM@BuNqrAAfSiG<)WG*Z=?k07*qo IM6N<$f{Q2bDgXcg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00001.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..481c8bea32df93ae3975dd8f39d7275d2ef706b0 GIT binary patch literal 549 zcmV+=0^0qFP)QU5F+276+&$a=bfc;B&g?pYG$uOHPg#ueJWAT{=uGFo3nET2vLPy8nl} zNv#jo7%zFexbO;f3tdH4FEv_D@iEu!7rL6LDfh(05h50z_zJ%lPVf&j<^=@19G<8Y;kXo>6^}XFi$u?fz zX;Ug<2rGKZH7mghr3SMLt}z(bbFJ|$72pmBxF`0s*f}}unB9w97Vq5Q0Lk{?OC_r- zG%aWDDS{4&CmP+BmK|!M5&Ya?gQC!RqCS$58u?&B&00000NkvXXu0mjfZcqQ> literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00002.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1afd99e33cac0ff55ea34028c96d11b264e609b7 GIT binary patch literal 536 zcmV+z0_XjSP)nb(v4-XW*{;Gty{U8FI1 z0=~YK+M018oY+eoKwiP?_1J;G?mIuaj}ud`- zFJQ79@^Wy=5vpDk6p{7NINHLa@3uE}G}WeDQxjWIEj-Sz)#0on*WS)>3Bq+||GX|m zX#-QoG9V+zLLQY@TaspF>Nth)Aj27uDS6QGh_i-%exovT(h6O~E+`iZ93V}e6#E<0+3g_qB(`ZW;e#t#T7?3@_a-02 zu%&xb1o@t2Km>qSb@?R0b(w_a2-?+kHBB}eps1;Ty0k)7b;hB@_lJEuOLkFaoDO1S zY1=Yga0Y_|NR{Mn*5C1Yos^8{;OMqHtThQR_CCsZ5TumcN{}P?@12!B%jNx1KL@Dq zAwmz!ahLb#aoXv10N72?OrG>^3LL50h9~0+nGDvFwRF;AZ^o^Hoy6l0nP7l$KoA7M a@A3~O1)5hsMT;i@0000``Af{E=COfD(x)S}#@>ZPBUi z1$GXu06|W&_)Hp38c1(c29jtaJ1({Y0tz@DCfRO?F@~)s&S!Q7ocIp)J{h!9-CDK) z0PlTIqDrMXb5bz}0Otex7F5TioabIBwA;q{CqdW&&`hS4q>;CMdUP$M;fyB-60W}1 zROl$M(p;4uhKfNY32@m-LD0Ujd*^2}CYfS$!S1xi0opHT#Qy#_qFcZ$ORdymln?I2 zx?QM1@wvzc^O}}-K6>;nThfKBwd1|9v8>n&yTq1lcNx+78?T`wx7Cb_N7RB|!0A?; z&?`%+N8y=TfQcnyQXYgtMiK;@#n72Z)+}juIwUP32X_k|F9aMQtzZj9s#o$!zu6(; zIp;vyY_S=0e?}=nL4;p=9fozG%Na&W9%;t@A=Bj{X)^_RHDSkas0Eq>V2H+K1wgOv zNOzkQ`1g`W@z(c$Y zfXDtQE1W`+sT2V&Ia3JBw@>VhTy%$1#BN9z8w{WgUgY~X$g{Tt>`89ZX3_>%vNa1O z1jjjSthO!1Fl;o!>c5NLBvAC!H8(!Fx*pr~72Tutr%C?V-ZhLxo+LJ4fE6~g5v_zR zE?}vFCE?xAE+O?RRGaj9ppb5SC^4OyZ>W-Iop_-3H;KD@3Rp3VV>sHo;yg6d3*+(ugwAo{OY&kxS0H uY8u8W!OvY&(AzNS51AJx(@2seugec?tnDVW9RHL60000Ib literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00005.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..ed19982c76527c41eeb056ef72cbb20029b962da GIT binary patch literal 545 zcmV++0^a?JP)H1t2@cr4cjmZEpGL`?}#jmFtG3qn~|~1`x|A0P6R>kX?}7{XfX~ zpfVF+f`Jap^9D;BKxt?RbY|Vb@t*KY#nV6_ys^N7HeYZZ7W7p#jK{(Ew z@7FCT9iXbu11h{N)KY%5&1rVJPLK&ZaeF|e`GH}Jlba!4#Zh;{odY;-li$RWz5+@~ z#q6vw3PvV#2~f!i!7N|ia8h&82t&kf2p1a`fUCU7_78}&$3e_VPSa*`4W49c6iNVp zC;1|Z$rDxIj6ZULRg|Z6M!6$KAgL|R|L|(aht^k?2xN3qqs_khPZXmhlKiwP)Y+!$ zsFhNh?;>V%3-b14GYycU5jN@Jjdb)plBpj;L@uZ)!FSK3h(R@Q&y=8A34FipXRt*= z{5|a&OPirt0LMD(2+Yz*bk_P%nOPfSUI@(sXyl#(bD%JrQD_=fpA9`DiRc34`pF6) zF}Eb|R!Yn($;#5WG~Ml0W&w284gu5$XA0XMW+c!RV$XuY`Ukjj#0#0kLC^~s4|{CC j0wUD`uOyQsNgm`4S6Gla-+rs|00000NkvXXu0mjfl|cFv literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00006.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..e564207a7c0d4d132406a49831c877abe00471af GIT binary patch literal 516 zcmV+f0{i`mP)6k`~DByi}u2utOfk#U^JQGo4tr9Kt)_BB}tMbNzDBI$lne*?TrJgGdt#ymtA+ejiF3CT4naK5-2YskK?#_O zTjvow0Tt{EwRJe#^;hmB7Y-6W0hRL{IIcLoqw!trsZ-t@^(T;UWz zCU^vxW|DkAk7bv+d%5k%DK;Sx;iBd)4JYkQYE9`U^o&aKqtT5E#JP6lfJn)PFgDcZJShxS;NH_y7Y92VYIC~iOvnaVU?i?g>tNm)0%@tD0 zcFfNmK>=)nOTdtwDY)(18!9z#8sQYP3zmxo6M!n;6#E;jv)jRZll)AJ$vJqErK?av z`25HRQ#^Dod|MhhhXDnNSR)5M@@BLHxIR#>T1~0%dE_MRC$hl;5sCa|RTs6n-LF(Z z(vIA&1!5O591Fb?sWyp2E?MfW(0*-HRYi-DnP5%PqD_Lxl4`1oDV9PlDyBmR4J5$~ zEy%|jEsT7fDwcq`2RSOKqybrJk{0Bkmr>Qq#jtbs4S}^Hs6DDR@GwX$1Nv#VXrH9= z4m{VBKn9RpmcF=sZ0h($ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00008.png b/tests/snapshots/nanos/test_register_wallet_accept_sh_wit_v1_2_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_0_0/00000.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..dddd4a222064af9e80f99ff185359f68da1d54dc GIT binary patch literal 442 zcmV;r0Y(0aP)L`ON1EkPH zyxHK#fEax#zR(+29=v-C$YJ|v15X5h=ladf?CiCCUyxc=ZwWj_^=nBy?+zYZ2{ z8GNFeoE80^tmu!%?Me9lLA-v@-xw&SiLgS;P^kFAv&xSgd2dxhTg~HWS{zhvS`^b8 z;CflPC;XOlC}E{sPM>pY*P<<-Y8$a6ONv^MMW?6WohW>$Th?0I4ucgtG1e}9FV%L5 zLKVPfU${CbNjar=d-``VYldA<)+1&L84yd7?(W#2C^d^pTPcy7NMo8#g$cRN5Tpy$ zYgW0M`}^5Z;zAH>E`-V%fU+rlrAr02kzRt+0BTfv$W?3Xgne&rC!Ik;-RQ21pX2CB kX?q-vQht!#@8ZdP0Y@aw?B;Si_@% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_0_0/00001.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf54452ee659d4aeb23f2f9f6119170100ca01b GIT binary patch literal 393 zcmV;40e1e0P)}T-~WNVs0&Y?H5jrfu-5-wbaF9Bm@I!w2><{9FyXa*y)O>sDK&$+c-XpM zRz8ofEiG%m+lgxP433|tQYgt`c2snK&8M)g=wLCDd#16{<+Tz|o-cY>n6EfanFTXX>u*BNRycK+{*)sFEdoIZW_IIH6D?-}3(q-lfn&5LHH>X<5Xa%W2+oOXXmb z!N7Rkh_UxF^!AGVRGvu1QCZ-W^-;me52F_^WzDiSQZrVnr=gnY08&IB-3o!V{@TcI z7T}^vLpu*umb^NTy&Ae>v7lsrj{LkZ9}%7=Qg7^r+3HsL-GB+ge(r)- n3j!6qTF}TS|Cs>*0MqdX$SL-T#utq300000NkvXXu0mjf(-5?C literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_0_0/00002.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..037fe2f3a8653859620ed30e4764c5b4b4cf4fbc GIT binary patch literal 528 zcmV+r0`L8aP)~c) z9#h-!bfd@KQw|?qM(z%tloF@K{)H&3n%CN0XjpQNasLGAgPpip75ZZ^HhIhkW*1=* zq8gv|OVMq_Jw*PihoTHdh;@KpFvI~)<9lhoMyY-g6Fo)otlgoC(w;QQ%}5db42>+_ z)aGexAwin1>qDH#o?GDvxN*()r(o7nPBP%*fa>j!I!C*LUFhk|fF~F;(3Sp^wPO3% z!LlprL^H0q&6@0%Y`>hZY!JW<;5D&XAJN5H(RMp{cAs*ze}SVJU>-Z%VS?=GWzwlw zlgAv1MfjOts%Qg8da-r@5SHVP@lL=W{`^_H1nkFg2K7KQ{??01Boc|lQFsHxH^S}) SozqSL0000J4LM1@Lh-cf9Z;?+=wAW#ViQ5dgvzBw0rg2h_|`ig;>F9Kk8h*)WlaET zpr`1k@lB)gb4c_<#|jYJOAJQ{_?<~B9f>9PDor5G@ON~K&^H3_RkM_=)|cD*BWg37 zv%dBoczN+Qa&}-*Vpco*2d%tH{;i!w!jpBJy9u6ynVhT(T?`?}V{*Vu1$YPI7?SpM zW_YPFG+~i$>82L&%E4U6Y$zd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_0_0/00004.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_1_0/00000.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..60d2ec5b40b8a3bb3af521ac4ba23a478ebe6dca GIT binary patch literal 529 zcmV+s0`C2ZP)yQoWFP4@TXgmj5YqDyX^VT!di7WGx%#I| zl--o+t&6tETb-xHG>ye%NlI3P)N3NE4i#mGB`wAtyzn zV-9SlnUdN85hemtGQi?SGkcmR$uX~=J^XY@|5HCZz?Hoi{V~dv6ye8WG|Y^aAYNxq z%VLW^q&kV-G8qa`C$%BCxnkH6MiCJGDGMW)G6AwRHtS>tcOp22reQy^17_rIkYmOaNzlpi>n% z@XpT|i-E$C6QE%)%Dhe1Wu*X$@FZFj(0rfZHIF6^6DHFG6sGrxKs yzDHZVBwdE%gUnI*z6*W>Uo^bv#RfqT*mwagg}vz<#+CvA0000es!C%9 zY{oDodkrSc1g1oQ#f)L}4D%sl08b70a!LPz`VKH5*W2R2drF zy`9`;st*%=0q>%{L%>p#j0kJY&SmaYr?72F4(nb3l9}uKkNP5d8kEJU^|~4L4tC;> zEL7;>j(yl(MYy|^_-P5&Xem?xX7wBIzH+JM9Z>rc1;q%w6(`(@1>g{P5R-Ke+NQkt z^kF}vu}Y_^LLQFV&-bY83T$A@G_2RkMF8Y+&=u*GE!8&2Eh>+ZcG!tS$|Vm50ylR? zK%y3;qB$M&j&+G8eCEguly@Of-_O;8RLEH^Ejq?HWkPH1A)(B535;FM`&X5g8<2^S~~S3L_h;f=^-fBUh<%UmcF3Qxr^RJZ!lO~;()00000NkvXXu0mjf D?w<&p literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_1_0/00003.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..7ad4e9e81c91fc9889ebb1a03355a9cc68c6b5fd GIT binary patch literal 570 zcmV-A0>%A_P)^k{C8QZZmA1C1evi#BBMSGWkeSG{_?9pyMP@ZUQimJCnr>zrU2_*XdtxiNY z1Q?$hvWro3@J?)xLIne_gM5H$m{fU+k5WBGXCfOz>gXnJn6?0=#uJkszz5iO-6h@``|T38mGF1csM09o}+6Zbei zml0bW6X3k%rd*3@hn-ma zATz-`-PBO_NrdCwr#^?V@$Ugq1|bM%O!rM4)6bs}xNt#4_JH;X2S~5+W{h|rO`Z10 z*x69ehsIEo9+Nv9AGRm3{w_9$puz|XA7oPSkA1&TC=}j~AEge)7w9mc9{>OV07*qo IM6N<$g0W)-O8@`> literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_1_0/00004.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..afc3b3b90890e115eb13fd64d8dd3a219bac0be3 GIT binary patch literal 534 zcmV+x0_pvUP)x6-aR3K(02(_J80@MQitJ{oy0IvF-`Sw=$vvj;8mF4NaP(9=B>jm8|< zjJQ6yCI#(5?N+SF&1u(0fA9ov$`Zr{wCV;z5y0oT-|%wmdjpvMR}mdQ`mhTxKhY(K zkHOQT*y2yR`|^CntI{=8E5&WQ;&*TK;D#(F8UZI)90WErP3%&|Bc0O8XiBg@q6`gg zZ6|lR>SN+uz`Lk+#9r!>k+8*VTjn-(inc9_!@2=LGIQtt(+)+CLg<|8ubZhc*vTEM zP@(bJ$%jy!JV@Eke>`>59saN$Q4HjTxN>hxagGZMTdGWEcnlpr$ym{HN|{V5NDA2< z`$T^ccd`%yR!kcX=*l3d7#foM{`*fp7qL2U)so(ME3^ zt$U6c^Ae~tA^@zUXJ6d>@h@g;*ouy>QQ~;4-I@P4OY?Dr#0QyT2A(Bo#fDiFMN#bI Y4e;8}J>&i?_5c6?07*qoM6N<$g6Z%2)Bpeg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_1_0/00005.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..961297c4ef5de2ebadf4aecbb358f9b4a2b51903 GIT binary patch literal 516 zcmV+f0{i`mP)OYXyD*F?KV2)9K`ZLVyruw=GGMBuTWKU;MFSp8Aj8a@aF2 zMujB{>$^TJPHNrblYnW#{Ij1K+W<_p8}n%$@T+M*c(eASy(^v8Lrkj6e=tvTkyYw5 zU@>fcFeOFpLFtqoNYzQlN_%jEZ-46~5Rir|_%KO-Q|AsaWi3j3x-$DAzRlM$>kT#D z5=86Fe|w8H_B7RL1+F*X0!RM3i=V9|>DpIkEQN0eFUW9xWM^OnaHXzw;p*J|2H;Ox zV@$X31_UxN7w}h9+5}8BNr_wI=(EH=YRGI$io?7BAeq?Qf2XQ?JB)MEUpJF6Sjin# zD3LIHhuLK%uJ3qB*S)S;9pPRDSS3s9z!hn+OP8MAhJ<;?gICa+fp~}}RM^F{1Auot z-T8HX7}yD`b@a1CsY~*gJ~K?h8yBHy(BuNsM?=Smvz)$<9n*w^~ z&4e*f*c!xo3DWjG?*zC7{&zn!kXNA8aWS8xH~jQ;Jmi(i@sO?F*Y=j7uFwC#kGN=d z8WV6aW_}o26zvFlU(FkJciv}GkJ$xY{@Md*CHNS!e$lQSAmv&}J)@f2Xs(~l(V&T@ zAf0FK7R8Jnk)2F%>olPVsNk8et=(r6`R5YmmhdFe2&kNK5ZKT>v(uG`bb+w(oM1hs zjSlYCUR!phjqDnjf<;Eosa~xE z@3ixkLb4>e%3%*VkTx7;m|40f?{9-F~H^`L}hLQNX#cOV;q#Y!4=)w zHRz5kIr{j8oM6KQXzAeP9^Xq&8;`k{c$VGmusD0k2ouFP6Hf|L@R}~|E=Gu{@>VCM zxd|8=EOKz~JO>-#QjnQj&w{hK4)QF{MP$Y|eKOv3@lvmG&8eA@r^VduXOg{ykGwnJ rG_2kOk`pd{4iyYIRL`vMg3D;1BrI<4BSuNfIyrFFD;IhyL244tvI{ zwUtF|xPq2VEXez$0Huaog%7-RnAIQ+PRA$ZI#0S`aW>Ywqo+F0dX@IocY4mo#RK z8F(iQrT3GTaZ0x=J@j?#$;53t-lzLz*0j^nm&AjC zlW>&K-k*Zc(t{?M=^LYUH#k@x&6EdcY4ez^sn&dgmEL|BJRPK!h6c&0QB;iwpwDF^ z^xlSU$NcOg679!dyW)*uE}r9yuqRw#4{)Y0<6;k>dqL*l>;qxRsnzP#tJm7}EmN2H n$i7}I-4P~9k|arzBwxG%T|4=Gb8Af500000NkvXXu0mjf-SF!f literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_1_0/00008.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_1_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_2_0/00000.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f66be86c1b5d74444c6b542862ac2d58261ef59f GIT binary patch literal 531 zcmV+u0_^>XP)L5nd zhnWVc^nf}W_nl;eqI%k>D^e_BPsM!&fQP?2%_iA{o{8W zN;fby7Xcl8FZ8$iY)8=S44p+=I7vDJIwKA&R~#K{gs!5b&Uka6z?F6h4e>64z4q^j z;tnMVaLHLhSiXJW;f&$9kPoSF4cxj0U-3n>pYq9hY7I_O-am=M`{?6@K4*@2SNU_A z_v><`;zYg=orUfhpSzU$$-*GA)D-nfj^w84Lu`~}gS|7rmWV-frHlirff)*HQF1g^ zg=Lw05~TN}>MSi5InzEf*Vz_;%@UC}sn;&G7Clvg>R&9ZOq!`4L`kq)Yw=P9>+S&F zB;L~h0{;WB?|@97L@8oLF>cUnL3WZQ6nG7`=nlw}o5iAHT!4H5%e%WjL0WHg0odyl z?Lkzkq?JqMPDaCreB(7p?|{JBVw9uL0`_q)RV8d0Y~GtizXP)o1 zo3!^q8e^Bo&V@ZxEmQ~U^%A3{iw|G7A6jo}RoN30N3dup?xgxH&V8Ke5X9rm`TM#C zC7>#wU@k73U{*7oo!kXkVEhcTSlciB8A^ctB zOQ?3=sKma+sQjMC%T)#1zE~hmM%e*rD^VF$&LdcIEI5N`e2(F?B`FWd8(XqoE({N` zp1bwFNy~YLT#RE(%35}nkr9P$FJXIp2!9-k)-7|EZcS1@_$YX2@!{PQ)h8$w;e&We zyB2m!_r!uUgQ^V1VmUKg4WORbZm~W&&y#84yqYBzyPxloh@0tDM zI$lZ}sM;3+0qzT-ms=ZyW@YFMa^X(8BOnmtpy7$LyP-TqZ8_u1kp-^yr$B~y7yzIB zUS>E2kx7z(Dmg=FmT#X}7&*zpAz~L?7Yh!64W8ut8{D(o0rteVX)%5Vce3;rax$#% zu=f8%HWpKV{u6d-T9SWFu#1m}@?jUzs=0PjK-*SJ{fDb1jjD+8j!{G?1*kW1kh!k~mGiVg)?_`xeZot4zr=5mhHKS}R%$3Z(^0 z&BR_;iF(f~#SBS4qI$-SZZ&5_F|Jkv_^^*F@a|CKv{QcoWRHwH7z68JG&zv%4an9Y zZv!lg9_F$lDM=p4Led4TfTym_g-igP)O};^2W%6dL`6{)MG@om)SoBh^gr3P4ON$H zY%R>Zou+a-)`eJNuML2j6T^ofUvsa0v>p%M((JaZXYZ=%&%`vPDvb`a57WOsqepY87$oJCQZwvZTy>;0V z5q;J@%T!sKXF9bO0McS0d&vz<%J)2qV|L$o{+D1m0Mt3tmn3L6?w*_rOC9*-V1?_? zwJda&SZSe3PeVtba|j5@Nnuew`1)Yj8BV6i+^{6o5wHN{ewNo4pAb`txsA1d#QqS|clWFifn_}e zPyyf_r#j5Pt#pQ2`_Z8pL*X(KbNdM2@{o}KOC3C~r(#ePMNwSE4@Fg}{Zh@i$^ZZW M07*qoM6N<$f>f3BqyPW_ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_2_0/00004.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_2_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..7122760313d0a58be786cbcda95c3cfdaa172315 GIT binary patch literal 547 zcmV+;0^I$HP)#-jk?*p;Ht zqs(v$L8fpCFv&^5Enh$IrspIJQ^YPv7YjB(>O9H!H^{TwL99tF(_(55o@8kjDggf% z`6Qa<1N(UPdW*T}C$a=i4kuhFD{%q^O$4p*dGuBkKA4h2LI+lT4c62o%j8N)xo1{R zxYb_SItukgtZkh&M>(9)D&G+n!GdV2QMwJ_4C8L0xHRMoJ-ogEaDA1h5NgzsSuYD-}QD1CuzzJ8@8%XE49i`d;P$tvArN`l#mBop8gK8xWFe>1SiVaXE zS<_+9Ub6VX8(y4K|bo@y^c>wFdF>9i!WE++7hfEOw-Gp6kdH)CAi|$1_t^+@a;;B=<*^4zQf&z)86a+yK1kL=s@c#}u<&SqQgIEOh zfr_nE5^LiZB8lB{0B}*>J7NdEyJvpZzHa*D;ks$B)GViDh*(7dGQL~|E&-SOd%*nA zAU?pZr_5L1v|mbZDplE&6I-Zic->;`KL4TZ?YL7A&ok%8 zbxukLsOpP=2i+H*UftRpG%G`AkPAC;N5DglgN|36-3|FEO3NAF93*hF{45s63h9N4 z^)tgM6q(8;ph?aUy5-v^Rz^;;aERCi>0-eFXoDyD{sDRRIKZC7HZ3O3U?)qnP(axB z9=3n&C_YyHgw5@jA^kYlR0N5N`w1I{Uxzo0m08&cBN)ZkMERbupqE>V#A!Nqx;?p0PkrD(9rRsXDDj0IW6k z6(HdN{Uyww@S|#4t~%J5#NjFS?a8?~zc?o`L5%}a(EsMzt$>U@+bp2#6Eg^c;BemE WBDLYe__5Xi0000h*f;!1wUXkL|}(jwBvW`L*?DIVB_10tbYAX+<@mn)`jI z^}!S-BF5E_$H9dov^$6m0Z%}6GV(Px?T0d&N>{F_i59FL)>);l-Oh9gs_V@C^EwwL z;41#=$6N*^a4e*+-PP{Da-BkWlIaXc^!Ng^ zj^gPrMp}cU4-DnR)6$C-T-IOdb{4UuD$KVn88MSKK5x_lXevP*POS)rv9iFVMV3rK z-HLP*rcRNX(A+9E9>Ag1A|OV}U~Np}a}k_Hk8bGwDcfgfuQj`up$zD@JX`sz7L74; zssn2M0e#6gB literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_2_0/00007.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_2_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..d18c5c464a319415ed6d577d72f2b55cd9f2e529 GIT binary patch literal 462 zcmV;<0WtoGP)d`N8!iF?p(Tunl}|iVm_>FZQ4up4Z#zcvOjNZ>Kv2@jSDC zT&JY8!BqPq;70d_yH#Ip3Yy5!8RWv9bVtBViUY?MSMP@0iY0ZGI|m8eBtMB2V}-Pe z6Z12}DHNH?A)ral5Zv_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_0_0/00000.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..dddd4a222064af9e80f99ff185359f68da1d54dc GIT binary patch literal 442 zcmV;r0Y(0aP)L`ON1EkPH zyxHK#fEax#zR(+29=v-C$YJ|v15X5h=ladf?CiCCUyxc=ZwWj_^=nBy?+zYZ2{ z8GNFeoE80^tmu!%?Me9lLA-v@-xw&SiLgS;P^kFAv&xSgd2dxhTg~HWS{zhvS`^b8 z;CflPC;XOlC}E{sPM>pY*P<<-Y8$a6ONv^MMW?6WohW>$Th?0I4ucgtG1e}9FV%L5 zLKVPfU${CbNjar=d-``VYldA<)+1&L84yd7?(W#2C^d^pTPcy7NMo8#g$cRN5Tpy$ zYgW0M`}^5Z;zAH>E`-V%fU+rlrAr02kzRt+0BTfv$W?3Xgne&rC!Ik;-RQ21pX2CB kX?q-vQht!#@8ZdP0Y@aw?B;Si_@% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_0_0/00001.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf54452ee659d4aeb23f2f9f6119170100ca01b GIT binary patch literal 393 zcmV;40e1e0P)}T-~WNVs0&Y?H5jrfu-5-wbaF9Bm@I!w2><{9FyXa*y)O>sDK&$+c-XpM zRz8ofEiG%m+lgxP433|tQYgt`c2snK&8M)g=wLCDd#16{<+Tz|o-cY>n6EfanFTXX>u*BNRycK+{*)sFEdoIZW_IIH6D?-}3(q-lfn&5LHH>X<5Xa%W2+oOXXmb z!N7Rkh_UxF^!AGVRGvu1QCZ-W^-;me52F_^WzDiSQZrVnr=gnY08&IB-3o!V{@TcI z7T}^vLpu*umb^NTy&Ae>v7lsrj{LkZ9}%7=Qg7^r+3HsL-GB+ge(r)- n3j!6qTF}TS|Cs>*0MqdX$SL-T#utq300000NkvXXu0mjf(-5?C literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_0_0/00002.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..037fe2f3a8653859620ed30e4764c5b4b4cf4fbc GIT binary patch literal 528 zcmV+r0`L8aP)~c) z9#h-!bfd@KQw|?qM(z%tloF@K{)H&3n%CN0XjpQNasLGAgPpip75ZZ^HhIhkW*1=* zq8gv|OVMq_Jw*PihoTHdh;@KpFvI~)<9lhoMyY-g6Fo)otlgoC(w;QQ%}5db42>+_ z)aGexAwin1>qDH#o?GDvxN*()r(o7nPBP%*fa>j!I!C*LUFhk|fF~F;(3Sp^wPO3% z!LlprL^H0q&6@0%Y`>hZY!JW<;5D&XAJN5H(RMp{cAs*ze}SVJU>-Z%VS?=GWzwlw zlgAv1MfjOts%Qg8da-r@5SHVP@lL=W{`^_H1nkFg2K7KQ{??01Boc|lQFsHxH^S}) SozqSL0000jF6_a;Y84wW!2j>6)0DuZ!&!1=Vns1U4P_(M2i%Zvo>opkHhvB$-IMXe7{>0Ju-S=Ur?({qz1+DqpPu zAO&=Zdg@o25{x5&}66?V_VDY<{Gz5X=7E{lMXAOMqDXASVIP*^TRmAkPE t8VJ9};yWMgg_P-;yo+Q2004md@&**MAL=!+)aL*I002ovPDHLkV1j5avkU+L literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_0_0/00004.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_1_0/00000.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..60d2ec5b40b8a3bb3af521ac4ba23a478ebe6dca GIT binary patch literal 529 zcmV+s0`C2ZP)yQoWFP4@TXgmj5YqDyX^VT!di7WGx%#I| zl--o+t&6tETb-xHG>ye%NlI3P)N3NE4i#mGB`wAtyzn zV-9SlnUdN85hemtGQi?SGkcmR$uX~=J^XY@|5HCZz?Hoi{V~dv6ye8WG|Y^aAYNxq z%VLW^q&kV-G8qa`C$%BCxnkH6MiCJGDGMW)G6AwRHtS>tcOp22reQy^17_rIkYmOaNzlpi>n% z@XpT|i-E$C6QE%)%Dhe1Wu*X$@FZFj(0rfZHIF6^6DHFG6sGrxKs yzDHZVBwdE%gUnI*z6*W>Uo^bv#RfqT*mwagg}vz<#+CvA0000es!C%9 zY{oDodkrSc1g1oQ#f)L}4D%sl08b70a!LPz`VKH5*W2R2drF zy`9`;st*%=0q>%{L%>p#j0kJY&SmaYr?72F4(nb3l9}uKkNP5d8kEJU^|~4L4tC;> zEL7;>j(yl(MYy|^_-P5&Xem?xX7wBIzH+JM9Z>rc1;q%w6(`(@1>g{P5R-Ke+NQkt z^kF}vu}Y_^LLQFV&-bY83T$A@G_2RkMF8Y+&=u*GE!8&2Eh>+ZcG!tS$|Vm50ylR? zK%y3;qB$M&j&+G8eCEguly@Of-_O;8RLEH^Ejq?HWkPH1A)(B535;FM`&X5g8<2^S~~S3L_h;f=^-fBUh<%UmcF3Qxr^RJZ!lO~;()00000NkvXXu0mjf D?w<&p literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_1_0/00003.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..7ad4e9e81c91fc9889ebb1a03355a9cc68c6b5fd GIT binary patch literal 570 zcmV-A0>%A_P)^k{C8QZZmA1C1evi#BBMSGWkeSG{_?9pyMP@ZUQimJCnr>zrU2_*XdtxiNY z1Q?$hvWro3@J?)xLIne_gM5H$m{fU+k5WBGXCfOz>gXnJn6?0=#uJkszz5iO-6h@``|T38mGF1csM09o}+6Zbei zml0bW6X3k%rd*3@hn-ma zATz-`-PBO_NrdCwr#^?V@$Ugq1|bM%O!rM4)6bs}xNt#4_JH;X2S~5+W{h|rO`Z10 z*x69ehsIEo9+Nv9AGRm3{w_9$puz|XA7oPSkA1&TC=}j~AEge)7w9mc9{>OV07*qo IM6N<$g0W)-O8@`> literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_1_0/00004.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..afc3b3b90890e115eb13fd64d8dd3a219bac0be3 GIT binary patch literal 534 zcmV+x0_pvUP)x6-aR3K(02(_J80@MQitJ{oy0IvF-`Sw=$vvj;8mF4NaP(9=B>jm8|< zjJQ6yCI#(5?N+SF&1u(0fA9ov$`Zr{wCV;z5y0oT-|%wmdjpvMR}mdQ`mhTxKhY(K zkHOQT*y2yR`|^CntI{=8E5&WQ;&*TK;D#(F8UZI)90WErP3%&|Bc0O8XiBg@q6`gg zZ6|lR>SN+uz`Lk+#9r!>k+8*VTjn-(inc9_!@2=LGIQtt(+)+CLg<|8ubZhc*vTEM zP@(bJ$%jy!JV@Eke>`>59saN$Q4HjTxN>hxagGZMTdGWEcnlpr$ym{HN|{V5NDA2< z`$T^ccd`%yR!kcX=*l3d7#foM{`*fp7qL2U)so(ME3^ zt$U6c^Ae~tA^@zUXJ6d>@h@g;*ouy>QQ~;4-I@P4OY?Dr#0QyT2A(Bo#fDiFMN#bI Y4e;8}J>&i?_5c6?07*qoM6N<$g6Z%2)Bpeg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_1_0/00005.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..961297c4ef5de2ebadf4aecbb358f9b4a2b51903 GIT binary patch literal 516 zcmV+f0{i`mP)OYXyD*F?KV2)9K`ZLVyruw=GGMBuTWKU;MFSp8Aj8a@aF2 zMujB{>$^TJPHNrblYnW#{Ij1K+W<_p8}n%$@T+M*c(eASy(^v8Lrkj6e=tvTkyYw5 zU@>fcFeOFpLFtqoNYzQlN_%jEZ-46~5Rir|_%KO-Q|AsaWi3j3x-$DAzRlM$>kT#D z5=86Fe|w8H_B7RL1+F*X0!RM3i=V9|>DpIkEQN0eFUW9xWM^OnaHXzw;p*J|2H;Ox zV@$X31_UxN7w}h9+5}8BNr_wI=(EH=YRGI$io?7BAeq?Qf2XQ?JB)MEUpJF6Sjin# zD3LIHhuLK%uJ3qB*S)S;9pPRDSS3s9z!hn+OP8MAhJ<;?gICa+fp~}}RM^F{1Auot z-T8HX7}yD`b@a1CsY~*gJ~K?h8yBHy(BuNsM?=Smvz)$<9n*w^~ z&4e*f*c!xo3DWjG?*zC7{&zn!kXNA8aWS8xH~jQ;Jmi(i@sO?F*Y=j7uFwC#kGN=d z8WV6aW_}o26zvFlU(FkJciv}GkJ$xY{@Md*CHNS!e$lQSAmv&}J)@f2Xs(~l(V&T@ zAf0FK7R8Jnk)2F%>olPVsNk8et=(r6`R5YmmhdFe2&kNK5ZKT>v(uG`bb+w(oM1hs zjSlYCUR!phjqDnjf<;Eosa~xE z@3ixkLb4>e%3%*VkTx7;m|40f?{9-F~H^`L}hLQNX#cOV;q#Y!4=)w zHRz5kIr{j8oM6KQXzAeP9^Xq&8;`k{c$VGmusD0k2ouFP6Hf|L@R}~|E=Gu{@>VCM zxd|8=EOKz~JO>-#QjnQj&w{hK4)QF{MP$Y|eKOv3@lvmG&8eA@r^VduXOg{ykGwnJ rG_2kOk`pd{gB@y5;!;Bs?AL0ZR41$kP?HAN{fGK-%+Joz~xS{Q((L9#M$)=z& z&%9d{d+cG^X$PqYXyB1=rMPX~N%w}%oD1KMmh#30rIrND)|zWOste2qRE{UK@H8XO1w@WsCiM5xwJjd&Czs!E^ z3}|z+5;81E_9z0NIg|_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_2_0/00000.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f66be86c1b5d74444c6b542862ac2d58261ef59f GIT binary patch literal 531 zcmV+u0_^>XP)L5nd zhnWVc^nf}W_nl;eqI%k>D^e_BPsM!&fQP?2%_iA{o{8W zN;fby7Xcl8FZ8$iY)8=S44p+=I7vDJIwKA&R~#K{gs!5b&Uka6z?F6h4e>64z4q^j z;tnMVaLHLhSiXJW;f&$9kPoSF4cxj0U-3n>pYq9hY7I_O-am=M`{?6@K4*@2SNU_A z_v><`;zYg=orUfhpSzU$$-*GA)D-nfj^w84Lu`~}gS|7rmWV-frHlirff)*HQF1g^ zg=Lw05~TN}>MSi5InzEf*Vz_;%@UC}sn;&G7Clvg>R&9ZOq!`4L`kq)Yw=P9>+S&F zB;L~h0{;WB?|@97L@8oLF>cUnL3WZQ6nG7`=nlw}o5iAHT!4H5%e%WjL0WHg0odyl z?Lkzkq?JqMPDaCreB(7p?|{JBVw9uL0`_q)RV8d0Y~GtizXP)o1 zo3!^q8e^Bo&V@ZxEmQ~U^%A3{iw|G7A6jo}RoN30N3dup?xgxH&V8Ke5X9rm`TM#C zC7>#wU@k73U{*7oo!kXkVEhcTSlciB8A^ctB zOQ?3=sKma+sQjMC%T)#1zE~hmM%e*rD^VF$&LdcIEI5N`e2(F?B`FWd8(XqoE({N` zp1bwFNy~YLT#RE(%35}nkr9P$FJXIp2!9-k)-7|EZcS1@_$YX2@!{PQ)h8$w;e&We zyB2m!_r!uUgQ^V1VmUKg4WORbZm~W&&y#84yqYBzyPxloh@0tDM zI$lZ}sM;3+0qzT-ms=ZyW@YFMa^X(8BOnmtpy7$LyP-TqZ8_u1kp-^yr$B~y7yzIB zUS>E2kx7z(Dmg=FmT#X}7&*zpAz~L?7Yh!64W8ut8{D(o0rteVX)%5Vce3;rax$#% zu=f8%HWpKV{u6d-T9SWFu#1m}@?jUzs=0PjK-*SJ{fDb1jjD+8j!{G?1*kW1kh!k~mGiVg)?_`xeZot4zr=5mhHKS}R%$3Z(^0 z&BR_;iF(f~#SBS4qI$-SZZ&5_F|Jkv_^^*F@a|CKv{QcoWRHwH7z68JG&zv%4an9Y zZv!lg9_F$lDM=p4Led4TfTym_g-igP)O};^2W%6dL`6{)MG@om)SoBh^gr3P4ON$H zY%R>Zou+a-)`eJNuML2j6T^ofUvsa0v>p%M((JaZXYZ=%&%`vPDvb`a57WOsqepY87$oJCQZwvZTy>;0V z5q;J@%T!sKXF9bO0McS0d&vz<%J)2qV|L$o{+D1m0Mt3tmn3L6?w*_rOC9*-V1?_? zwJda&SZSe3PeVtba|j5@Nnuew`1)Yj8BV6i+^{6o5wHN{ewNo4pAb`txsA1d#QqS|clWFifn_}e zPyyf_r#j5Pt#pQ2`_Z8pL*X(KbNdM2@{o}KOC3C~r(#ePMNwSE4@Fg}{Zh@i$^ZZW M07*qoM6N<$f>f3BqyPW_ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_2_0/00004.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_2_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..7122760313d0a58be786cbcda95c3cfdaa172315 GIT binary patch literal 547 zcmV+;0^I$HP)#-jk?*p;Ht zqs(v$L8fpCFv&^5Enh$IrspIJQ^YPv7YjB(>O9H!H^{TwL99tF(_(55o@8kjDggf% z`6Qa<1N(UPdW*T}C$a=i4kuhFD{%q^O$4p*dGuBkKA4h2LI+lT4c62o%j8N)xo1{R zxYb_SItukgtZkh&M>(9)D&G+n!GdV2QMwJ_4C8L0xHRMoJ-ogEaDA1h5NgzsSuYD-}QD1CuzzJ8@8%XE49i`d;P$tvArN`l#mBop8gK8xWFe>1SiVaXE zS<_+9Ub6VX8(y4K|bo@y^c>wFdF>9i!WE++7hfEOw-Gp6kdH)CAi|$1_t^+@a;;B=<*^4zQf&z)86a+yK1kL=s@c#}u<&SqQgIEOh zfr_nE5^LiZB8lB{0B}*>J7NdEyJvpZzHa*D;ks$B)GViDh*(7dGQL~|E&-SOd%*nA zAU?pZr_5L1v|mbZDplE&6I-Zic->;`KL4TZ?YL7A&ok%8 zbxukLsOpP=2i+H*UftRpG%G`AkPAC;N5DglgN|36-3|FEO3NAF93*hF{45s63h9N4 z^)tgM6q(8;ph?aUy5-v^Rz^;;aERCi>0-eFXoDyD{sDRRIKZC7HZ3O3U?)qnP(axB z9=3n&C_YyHgw5@jA^kYlR0N5N`w1I{Uxzo0m08&cBN)ZkMERbupqE>V#A!Nqx;?p0PkrD(9rRsXDDj0IW6k z6(HdN{Uyww@S|#4t~%J5#NjFS?a8?~zc?o`L5%}a(EsMzt$>U@+bp2#6Eg^c;BemE WBDLYe__5Xi0000h*f;!1wUXkL|}(jwBvW`L*?DIVB_10tbYAX+<@mn)`jI z^}!S-BF5E_$H9dov^$6m0Z%}6GV(Px?T0d&N>{F_i59FL)>);l-Oh9gs_V@C^EwwL z;41#=$6N*^a4e*+-PP{Da-BkWlIaXc^!Ng^ zj^gPrMp}cU4-DnR)6$C-T-IOdb{4UuD$KVn88MSKK5x_lXevP*POS)rv9iFVMV3rK z-HLP*rcRNX(A+9E9>Ag1A|OV}U~Np}a}k_Hk8bGwDcfgfuQj`up$zD@JX`sz7L74; zssn2M0e#6gB literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_2_0/00007.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_2_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..bbd7af6d4550813545b62d13f6bb0f4cfb6aeca7 GIT binary patch literal 482 zcmV<80UiE{P)mQ|*%91|$@IJ+CtRg}6j?i?s^!9JK}V+ED6 z1M{=ODHNN^Az;W(2yXlKhMk&=W*A~NAzdUafL3{t?{AQ2w}W{n^_r5YHF%TMEL0%g z*@rDXN(zBvNKzAvGSSseW*`>GIbegs;e+q{di0w_kqg5i#)A%G0INhEf@aw@1^-CV zJk%o?J>n_>!M<)w5NzeC4-Ns{9`f_rXIr7GiL#Psbc&A9f-G!!AYcPUkvv01P#`)5 zNhAa;lJhLtoJzTEQTHN(tOZEGx0fnwkivompb<(pOev7jHXA}WX;5{uD2k#eilSJ| Y4-Ha*oW1F1yZ`_I07*qoM6N<$f^34(YXATM literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_2_0/00008.png b/tests/snapshots/nanos/test_register_wallet_accept_wit_v1_2_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_invalid_pubkey_version_0_0/00000.png b/tests/snapshots/nanos/test_register_wallet_invalid_pubkey_version_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..dddd4a222064af9e80f99ff185359f68da1d54dc GIT binary patch literal 442 zcmV;r0Y(0aP)L`ON1EkPH zyxHK#fEax#zR(+29=v-C$YJ|v15X5h=ladf?CiCCUyxc=ZwWj_^=nBy?+zYZ2{ z8GNFeoE80^tmu!%?Me9lLA-v@-xw&SiLgS;P^kFAv&xSgd2dxhTg~HWS{zhvS`^b8 z;CflPC;XOlC}E{sPM>pY*P<<-Y8$a6ONv^MMW?6WohW>$Th?0I4ucgtG1e}9FV%L5 zLKVPfU${CbNjar=d-``VYldA<)+1&L84yd7?(W#2C^d^pTPcy7NMo8#g$cRN5Tpy$ zYgW0M`}^5Z;zAH>E`-V%fU+rlrAr02kzRt+0BTfv$W?3Xgne&rC!Ik;-RQ21pX2CB kX?q-vQht!#@8ZdP0Y@aw?B;Si_@% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_invalid_pubkey_version_0_0/00001.png b/tests/snapshots/nanos/test_register_wallet_invalid_pubkey_version_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf54452ee659d4aeb23f2f9f6119170100ca01b GIT binary patch literal 393 zcmV;40e1e0P)}T-~WNVs0&Y?H5jrfu-5-wbaF9Bm@I!w2><{9FyXa*y)O>sDK&$+c-XpM zRz8ofEiG%m+lgxP433|tQYgt`c2snK&8M)g=wLCDd#16{<+Tz|o-cY>n6EfanFTXX>u*BNRycK+{*)sFEdoIZW_IIH6D?-}3(q-lfn&5LHH>X<5Xa%W2+oOXXmb z!N7Rkh_UxF^!AGVRGvu1QCZ-W^-;me52F_^WzDiSQZrVnr=gnY08&IB-3o!V{@TcI z7T}^vLpu*umb^NTy&Ae>v7lsrj{LkZ9}%7=Qg7^r+3HsL-GB+ge(r)- n3j!6qTF}TS|Cs>*0MqdX$SL-T#utq300000NkvXXu0mjf(-5?C literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_invalid_pubkey_version_0_0/00002.png b/tests/snapshots/nanos/test_register_wallet_invalid_pubkey_version_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..037fe2f3a8653859620ed30e4764c5b4b4cf4fbc GIT binary patch literal 528 zcmV+r0`L8aP)~c) z9#h-!bfd@KQw|?qM(z%tloF@K{)H&3n%CN0XjpQNasLGAgPpip75ZZ^HhIhkW*1=* zq8gv|OVMq_Jw*PihoTHdh;@KpFvI~)<9lhoMyY-g6Fo)otlgoC(w;QQ%}5db42>+_ z)aGexAwin1>qDH#o?GDvxN*()r(o7nPBP%*fa>j!I!C*LUFhk|fF~F;(3Sp^wPO3% z!LlprL^H0q&6@0%Y`>hZY!JW<;5D&XAJN5H(RMp{cAs*ze}SVJU>-Z%VS?=GWzwlw zlgAv1MfjOts%Qg8da-r@5SHVP@lL=W{`^_H1nkFg2K7KQ{??01Boc|lQFsHxH^S}) SozqSL0000J4LM1@Lh-cf9Z;?+=wAW#ViQ5dgvzBw0rg2h_|`ig;>F9Kk8h*)WlaET zpr`1k@lB)gb4c_<#|jYJOAJQ{_?<~B9f>9PDor5G@ON~K&^H3_RkM_=)|cD*BWg37 zv%dBoczN+Qa&}-*Vpco*2d%tH{;i!w!jpBJy9u6ynVhT(T?`?}V{*Vu1$YPI7?SpM zW_YPFG+~i$>82L&%E4U6Y$zd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_invalid_pubkey_version_0_0/00004.png b/tests/snapshots/nanos/test_register_wallet_invalid_pubkey_version_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_reject_header_0_0/00000.png b/tests/snapshots/nanos/test_register_wallet_reject_header_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..dddd4a222064af9e80f99ff185359f68da1d54dc GIT binary patch literal 442 zcmV;r0Y(0aP)L`ON1EkPH zyxHK#fEax#zR(+29=v-C$YJ|v15X5h=ladf?CiCCUyxc=ZwWj_^=nBy?+zYZ2{ z8GNFeoE80^tmu!%?Me9lLA-v@-xw&SiLgS;P^kFAv&xSgd2dxhTg~HWS{zhvS`^b8 z;CflPC;XOlC}E{sPM>pY*P<<-Y8$a6ONv^MMW?6WohW>$Th?0I4ucgtG1e}9FV%L5 zLKVPfU${CbNjar=d-``VYldA<)+1&L84yd7?(W#2C^d^pTPcy7NMo8#g$cRN5Tpy$ zYgW0M`}^5Z;zAH>E`-V%fU+rlrAr02kzRt+0BTfv$W?3Xgne&rC!Ik;-RQ21pX2CB kX?q-vQht!#@8ZdP0Y@aw?B;Si_@% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_reject_header_0_0/00001.png b/tests/snapshots/nanos/test_register_wallet_reject_header_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf54452ee659d4aeb23f2f9f6119170100ca01b GIT binary patch literal 393 zcmV;40e1e0P)}T-~WNVs0&Y?H5jrfu-5-wbaF9Bm@I!w2><{9FyXa*y)O>sDK&$+c-XpM zRz8ofEiG%m+lgxP433|tQYgt`c2snK&8M)g=wLCDd#16{<+Tz|o-cY>n6EfanFTXX>u*BNRycK+{*)sFEdoIZW_IIH6D?-}3(q-lfn&5LHH>X<5Xa%W2+oOXXmb z!N7Rkh_UxF^!AGVRGvu1QCZ-W^-;me52F_^WzDiSQZrVnr=gnY08&IB-3o!V{@TcI z7T}^vLpu*umb^NTy&Ae>v7lsrj{LkZ9}%7=Qg7^r+3HsL-GB+ge(r)- n3j!6qTF}TS|Cs>*0MqdX$SL-T#utq300000NkvXXu0mjf(-5?C literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_reject_header_0_0/00002.png b/tests/snapshots/nanos/test_register_wallet_reject_header_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..037fe2f3a8653859620ed30e4764c5b4b4cf4fbc GIT binary patch literal 528 zcmV+r0`L8aP)~c) z9#h-!bfd@KQw|?qM(z%tloF@K{)H&3n%CN0XjpQNasLGAgPpip75ZZ^HhIhkW*1=* zq8gv|OVMq_Jw*PihoTHdh;@KpFvI~)<9lhoMyY-g6Fo)otlgoC(w;QQ%}5db42>+_ z)aGexAwin1>qDH#o?GDvxN*()r(o7nPBP%*fa>j!I!C*LUFhk|fF~F;(3Sp^wPO3% z!LlprL^H0q&6@0%Y`>hZY!JW<;5D&XAJN5H(RMp{cAs*ze}SVJU>-Z%VS?=GWzwlw zlgAv1MfjOts%Qg8da-r@5SHVP@lL=W{`^_H1nkFg2K7KQ{??01Boc|lQFsHxH^S}) SozqSL0000J4LM1@Lh-cf9Z;?+=wAW#ViQ5dgvzBw0rg2h_|`ig;>F9Kk8h*)WlaET zpr`1k@lB)gb4c_<#|jYJOAJQ{_?<~B9f>9PDor5G@ON~K&^H3_RkM_=)|cD*BWg37 zv%dBoczN+Qa&}-*Vpco*2d%tH{;i!w!jpBJy9u6ynVhT(T?`?}V{*Vu1$YPI7?SpM zW_YPFG+~i$>82L&%E4U6Y$zd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_reject_header_0_0/00004.png b/tests/snapshots/nanos/test_register_wallet_reject_header_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_reject_header_0_0/00005.png b/tests/snapshots/nanos/test_register_wallet_reject_header_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..9c7e7049cb3e9bcfb1601ec510ee465d38229d4d GIT binary patch literal 340 zcmV-a0jvIrP)b=%MgRq*37h4eRxPbkJCLY|1VIo49_}P}TKpH4$L<8?X{t;p zy+UQc_4@p%0?~E_&igM#?#L~IOHR(-<@sYotiy&C*Y&GII0yeh-p3zW9cv$Q0k>6Y_)5~SfP=m zSMUtz)%Ex|-o}7!H9hbQ(8{%C?kQVa?C`*Uj-J(h>P7(Y#?ZWvi?6}@n{fGLp>YTp myqR(V_$?>^<%seR_VWh!L`ON1EkPH zyxHK#fEax#zR(+29=v-C$YJ|v15X5h=ladf?CiCCUyxc=ZwWj_^=nBy?+zYZ2{ z8GNFeoE80^tmu!%?Me9lLA-v@-xw&SiLgS;P^kFAv&xSgd2dxhTg~HWS{zhvS`^b8 z;CflPC;XOlC}E{sPM>pY*P<<-Y8$a6ONv^MMW?6WohW>$Th?0I4ucgtG1e}9FV%L5 zLKVPfU${CbNjar=d-``VYldA<)+1&L84yd7?(W#2C^d^pTPcy7NMo8#g$cRN5Tpy$ zYgW0M`}^5Z;zAH>E`-V%fU+rlrAr02kzRt+0BTfv$W?3Xgne&rC!Ik;-RQ21pX2CB kX?q-vQht!#@8ZdP0Y@aw?B;Si_@% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_reject_header_v1_0_0/00001.png b/tests/snapshots/nanos/test_register_wallet_reject_header_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf54452ee659d4aeb23f2f9f6119170100ca01b GIT binary patch literal 393 zcmV;40e1e0P)}T-~WNVs0&Y?H5jrfu-5-wbaF9Bm@I!w2><{9FyXa*y)O>sDK&$+c-XpM zRz8ofEiG%m+lgxP433|tQYgt`c2snK&8M)g=wLCDd#16{<+Tz|o-cY>n6EfanFTXX>u*BNRycK+{*)sFEdoIZW_IIH6D?-}3(q-lfn&5LHH>X<5Xa%W2+oOXXmb z!N7Rkh_UxF^!AGVRGvu1QCZ-W^-;me52F_^WzDiSQZrVnr=gnY08&IB-3o!V{@TcI z7T}^vLpu*umb^NTy&Ae>v7lsrj{LkZ9}%7=Qg7^r+3HsL-GB+ge(r)- n3j!6qTF}TS|Cs>*0MqdX$SL-T#utq300000NkvXXu0mjf(-5?C literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_reject_header_v1_0_0/00002.png b/tests/snapshots/nanos/test_register_wallet_reject_header_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..037fe2f3a8653859620ed30e4764c5b4b4cf4fbc GIT binary patch literal 528 zcmV+r0`L8aP)~c) z9#h-!bfd@KQw|?qM(z%tloF@K{)H&3n%CN0XjpQNasLGAgPpip75ZZ^HhIhkW*1=* zq8gv|OVMq_Jw*PihoTHdh;@KpFvI~)<9lhoMyY-g6Fo)otlgoC(w;QQ%}5db42>+_ z)aGexAwin1>qDH#o?GDvxN*()r(o7nPBP%*fa>j!I!C*LUFhk|fF~F;(3Sp^wPO3% z!LlprL^H0q&6@0%Y`>hZY!JW<;5D&XAJN5H(RMp{cAs*ze}SVJU>-Z%VS?=GWzwlw zlgAv1MfjOts%Qg8da-r@5SHVP@lL=W{`^_H1nkFg2K7KQ{??01Boc|lQFsHxH^S}) SozqSL0000jF6_a;Y84wW!2j>6)0DuZ!&!1=Vns1U4P_(M2i%Zvo>opkHhvB$-IMXe7{>0Ju-S=Ur?({qz1+DqpPu zAO&=Zdg@o25{x5&}66?V_VDY<{Gz5X=7E{lMXAOMqDXASVIP*^TRmAkPE t8VJ9};yWMgg_P-;yo+Q2004md@&**MAL=!+)aL*I002ovPDHLkV1j5avkU+L literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_reject_header_v1_0_0/00004.png b/tests/snapshots/nanos/test_register_wallet_reject_header_v1_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_reject_header_v1_0_0/00005.png b/tests/snapshots/nanos/test_register_wallet_reject_header_v1_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..9c7e7049cb3e9bcfb1601ec510ee465d38229d4d GIT binary patch literal 340 zcmV-a0jvIrP)b=%MgRq*37h4eRxPbkJCLY|1VIo49_}P}TKpH4$L<8?X{t;p zy+UQc_4@p%0?~E_&igM#?#L~IOHR(-<@sYotiy&C*Y&GII0yeh-p3zW9cv$Q0k>6Y_)5~SfP=m zSMUtz)%Ex|-o}7!H9hbQ(8{%C?kQVa?C`*Uj-J(h>P7(Y#?ZWvi?6}@n{fGLp>YTp myqR(V_$?>^<%seR_VWh!L`ON1EkPH zyxHK#fEax#zR(+29=v-C$YJ|v15X5h=ladf?CiCCUyxc=ZwWj_^=nBy?+zYZ2{ z8GNFeoE80^tmu!%?Me9lLA-v@-xw&SiLgS;P^kFAv&xSgd2dxhTg~HWS{zhvS`^b8 z;CflPC;XOlC}E{sPM>pY*P<<-Y8$a6ONv^MMW?6WohW>$Th?0I4ucgtG1e}9FV%L5 zLKVPfU${CbNjar=d-``VYldA<)+1&L84yd7?(W#2C^d^pTPcy7NMo8#g$cRN5Tpy$ zYgW0M`}^5Z;zAH>E`-V%fU+rlrAr02kzRt+0BTfv$W?3Xgne&rC!Ik;-RQ21pX2CB kX?q-vQht!#@8ZdP0Y@aw?B;Si_@% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_pk_0_0/00001.png b/tests/snapshots/nanos/test_register_wallet_tr_script_pk_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..d400e7534733c127b83d3071b18808162fb16c74 GIT binary patch literal 435 zcmV;k0ZjghP)Mw{jOwU^>F2N`d2% zWy-#k4z)P9NoESjLSzgV5Au(?4n~H(vL< z9(neh6}nAqcT%FzzCSx#@%tABqdJms9Lb8q+Nv8p>#=Cna()DWLXa%;x`nZ1kCLy*LAIXfsw)2W>UaQUolL5T+XG8~|vqS;nKD z7kOqI{{SqFf1>vffN;`8PLC{+l8sJnT zX&=ZDgyVOp(5l7(s@DlzJYZbRq@%V==_0^g?0jh21|%vn)MVz3->u6lKt1}q9&t8X z35u7-aUwH4fPFU`N2O%`s*r+p;iv*)4p|SHa*f%Bo%SQ$0fz&Lk-YQjC$BGps_@NM z-xFe~WA&YhJy=OZp_Qo5Vdq_0ZopL4_H%JC@t-yTA-IU;TShGbSzev+WhWPfNll3* zcw}%`bQY_(*Al0CW3#F2SE@70zPb^Ym}t`+F$?x002ovPDHLkV1kSkzWx9J literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_pk_0_0/00003.png b/tests/snapshots/nanos/test_register_wallet_tr_script_pk_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..cbe590e866b7702fb40c598681a5f71eb6b39ca7 GIT binary patch literal 409 zcmV;K0cQS*P)DWxC?f*@$){klAZBHyJX;7)EKm{cx+ zTYY8(%oR;(l5wHraj~_-?C0&C0=Z4wE{kpZcYT2_q$*qqYI4nZtfR;n_5NYfbBAF52?L?L`8;@jGq2cW2y1D-}Q*I z=d3_6s6%rHh-;HMDr;V3Ye?Y_;d}w{lBCVUR^GH9=>`}aNP^_b-cMFv1V!P+y>AKO z>hQiX@eVwRDCEgcp2OPrUNh#jsuwYXG%=bNF%dpt37*N6=UKyC-||}$sS}H>0-sRi zvzw(#(At?I)u$sDGz8U|<3&yW=W@k01Zn>m!Et83AmhCQ(ly*0D?eIYqyJ2YFqs?` zd*zk9A1n0-9K-jD_mMC`2wEH05adh!pPwKIfDf=00000NkvXXu0mjf DE&aAK literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_pk_0_0/00004.png b/tests/snapshots/nanos/test_register_wallet_tr_script_pk_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..0b4ab99a09a01a3c4e43afa0c5698504e1f3ec28 GIT binary patch literal 480 zcmV<60U!Q}P)RH#jy&EfWFH#e8Dw1f*ZQ(=PTJ{wx?z07#%N@@ZaahVYyn0k`R;+)9Bp z6F8_AYw9wG0G7wSG)@z)F6{wT$moHs;bj6S<9@xL^vHvX-3W~#TzlUmVh(2FKeLb* zn5@HfHDCVfTbMd=tAoZ!V$24{(^veqjog%>+b>MrK6)Zzm`^#xdOJvxLJV{wo5f46 zSvVC?Z9I{W%4vTB8cbrGUM!QCEtpM5?9Jjt04FohOgf0w@*Tvwg23{F3_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_pk_1_0/00000.png b/tests/snapshots/nanos/test_register_wallet_tr_script_pk_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..60d2ec5b40b8a3bb3af521ac4ba23a478ebe6dca GIT binary patch literal 529 zcmV+s0`C2ZP)yQoWFP4@TXgmj5YqDyX^VT!di7WGx%#I| zl--o+t&6tETb-xHG>ye%NlI3P)N3NE4i#mGB`wAtyzn zV-9SlnUdN85hemtGQi?SGkcmR$uX~=J^XY@|5HCZz?Hoi{V~dv6ye8WG|Y^aAYNxq z%VLW^q&kV-G8qa`C$%BCxnkH6MiCJGDGMW)G6AwRHtS>tcOp22reQy^17_rIkYmOaNzlpi>n% z@XpT|i-E$C6QE%)%Dhe1Wu*X$@FZFj(0rfZHIF6^6DHFG6sGrxKs yzDHZVBwdE%gUnI*z6*W>Uo^bv#RfqT*mwagg}vz<#+CvA0000es!C%9 zY{oDodkrSc1g1oQ#f)L}4D%sl08b70a!LPz`VKH5*W2R2drF zy`9`;st*%=0q>%{L%>p#j0kJY&SmaYr?72F4(nb3l9}uKkNP5d8kEJU^|~4L4tC;> zEL7;>j(yl(MYy|^_-P5&Xem?xX7wBIzH+JM9Z>rc1;q%w6(`(@1>g{P5R-Ke+NQkt z^kF}vu}Y_^LLQFV&-bY83T$A@G_2RkMF8Y+&=u*GE!8&2Eh>+ZcG!tS$|Vm50ylR? zK%y3;qB$M&j&+G8eCEguly@Of-_O;8RLEH^Ejq?HWkPH1A)(B535;FM`&X5g8<2^S~~S3L_h;f=^-fBUh<%UmcF3Qxr^RJZ!lO~;()00000NkvXXu0mjf D?w<&p literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_pk_1_0/00003.png b/tests/snapshots/nanos/test_register_wallet_tr_script_pk_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..7ad4e9e81c91fc9889ebb1a03355a9cc68c6b5fd GIT binary patch literal 570 zcmV-A0>%A_P)^k{C8QZZmA1C1evi#BBMSGWkeSG{_?9pyMP@ZUQimJCnr>zrU2_*XdtxiNY z1Q?$hvWro3@J?)xLIne_gM5H$m{fU+k5WBGXCfOz>gXnJn6?0=#uJkszz5iO-6h@``|T38mGF1csM09o}+6Zbei zml0bW6X3k%rd*3@hn-ma zATz-`-PBO_NrdCwr#^?V@$Ugq1|bM%O!rM4)6bs}xNt#4_JH;X2S~5+W{h|rO`Z10 z*x69ehsIEo9+Nv9AGRm3{w_9$puz|XA7oPSkA1&TC=}j~AEge)7w9mc9{>OV07*qo IM6N<$g0W)-O8@`> literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_pk_1_0/00004.png b/tests/snapshots/nanos/test_register_wallet_tr_script_pk_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..afc3b3b90890e115eb13fd64d8dd3a219bac0be3 GIT binary patch literal 534 zcmV+x0_pvUP)x6-aR3K(02(_J80@MQitJ{oy0IvF-`Sw=$vvj;8mF4NaP(9=B>jm8|< zjJQ6yCI#(5?N+SF&1u(0fA9ov$`Zr{wCV;z5y0oT-|%wmdjpvMR}mdQ`mhTxKhY(K zkHOQT*y2yR`|^CntI{=8E5&WQ;&*TK;D#(F8UZI)90WErP3%&|Bc0O8XiBg@q6`gg zZ6|lR>SN+uz`Lk+#9r!>k+8*VTjn-(inc9_!@2=LGIQtt(+)+CLg<|8ubZhc*vTEM zP@(bJ$%jy!JV@Eke>`>59saN$Q4HjTxN>hxagGZMTdGWEcnlpr$ym{HN|{V5NDA2< z`$T^ccd`%yR!kcX=*l3d7#foM{`*fp7qL2U)so(ME3^ zt$U6c^Ae~tA^@zUXJ6d>@h@g;*ouy>QQ~;4-I@P4OY?Dr#0QyT2A(Bo#fDiFMN#bI Y4e;8}J>&i?_5c6?07*qoM6N<$g6Z%2)Bpeg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_pk_1_0/00005.png b/tests/snapshots/nanos/test_register_wallet_tr_script_pk_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..961297c4ef5de2ebadf4aecbb358f9b4a2b51903 GIT binary patch literal 516 zcmV+f0{i`mP)OYXyD*F?KV2)9K`ZLVyruw=GGMBuTWKU;MFSp8Aj8a@aF2 zMujB{>$^TJPHNrblYnW#{Ij1K+W<_p8}n%$@T+M*c(eASy(^v8Lrkj6e=tvTkyYw5 zU@>fcFeOFpLFtqoNYzQlN_%jEZ-46~5Rir|_%KO-Q|AsaWi3j3x-$DAzRlM$>kT#D z5=86Fe|w8H_B7RL1+F*X0!RM3i=V9|>DpIkEQN0eFUW9xWM^OnaHXzw;p*J|2H;Ox zV@$X31_UxN7w}h9+5}8BNr_wI=(EH=YRGI$io?7BAeq?Qf2XQ?JB)MEUpJF6Sjin# zD3LIHhuLK%uJ3qB*S)S;9pPRDSS3s9z!hn+OP8MAhJ<;?gICa+fp~}}RM^F{1Auot z-T8HX7}yD`b@a1CsY~*gJ~K?h8yBHy(BuNsM?=Smvz)$<9n*w^~ z&4e*f*c!xo3DWjG?*zC7{&zn!kXNA8aWS8xH~jQ;Jmi(i@sO?F*Y=j7uFwC#kGN=d z8WV6aW_}o26zvFlU(FkJciv}GkJ$xY{@Md*CHNS!e$lQSAmv&}J)@f2Xs(~l(V&T@ zAf0FK7R8Jnk)2F%>olPVsNk8et=(r6`R5YmmhdFe2&kNK5ZKT>v(uG`bb+w(oM1hs zjSlYCUR!phjqDnjf<;Eosa~xE z@3ixkLb4>e%3%*VkTx7;m|40f?{9-F~H^`L}hLQNX#cOV;q#Y!4=)w zHRz5kIr{j8oM6KQXzAeP9^Xq&8;`k{c$VGmusD0k2ouFP6Hf|L@R}~|E=Gu{@>VCM zxd|8=EOKz~JO>-#QjnQj&w{hK4)QF{MP$Y|eKOv3@lvmG&8eA@r^VduXOg{ykGwnJ rG_2kOk`pd{4iyYIRL`vMg3D;1BrI<4BSuNfIyrFFD;IhyL244tvI{ zwUtF|xPq2VEXez$0Huaog%7-RnAIQ+PRA$ZI#0S`aW>Ywqo+F0dX@IocY4mo#RK z8F(iQrT3GTaZ0x=J@j?#$;53t-lzLz*0j^nm&AjC zlW>&K-k*Zc(t{?M=^LYUH#k@x&6EdcY4ez^sn&dgmEL|BJRPK!h6c&0QB;iwpwDF^ z^xlSU$NcOg679!dyW)*uE}r9yuqRw#4{)Y0<6;k>dqL*l>;qxRsnzP#tJm7}EmN2H n$i7}I-4P~9k|arzBwxG%T|4=Gb8Af500000NkvXXu0mjf-SF!f literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_pk_1_0/00008.png b/tests/snapshots/nanos/test_register_wallet_tr_script_pk_1_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_pk_2_0/00000.png b/tests/snapshots/nanos/test_register_wallet_tr_script_pk_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f66be86c1b5d74444c6b542862ac2d58261ef59f GIT binary patch literal 531 zcmV+u0_^>XP)L5nd zhnWVc^nf}W_nl;eqI%k>D^e_BPsM!&fQP?2%_iA{o{8W zN;fby7Xcl8FZ8$iY)8=S44p+=I7vDJIwKA&R~#K{gs!5b&Uka6z?F6h4e>64z4q^j z;tnMVaLHLhSiXJW;f&$9kPoSF4cxj0U-3n>pYq9hY7I_O-am=M`{?6@K4*@2SNU_A z_v><`;zYg=orUfhpSzU$$-*GA)D-nfj^w84Lu`~}gS|7rmWV-frHlirff)*HQF1g^ zg=Lw05~TN}>MSi5InzEf*Vz_;%@UC}sn;&G7Clvg>R&9ZOq!`4L`kq)Yw=P9>+S&F zB;L~h0{;WB?|@97L@8oLF>cUnL3WZQ6nG7`=nlw}o5iAHT!4H5%e%WjL0WHg0odyl z?Lkzkq?JqMPDaCreB(7p?|{JBVw9uL0`_q)RV8d0Y~GtizXP)o1 zo3!^q8e^Bo&V@ZxEmQ~U^%A3{iw|G7A6jo}RoN30N3dup?xgxH&V8Ke5X9rm`TM#C zC7>#wU@k73U{*7oo!kXkVEhcTSlciB8A^ctB zOQ?3=sKma+sQjMC%T)#1zE~hmM%e*rD^VF$&LdcIEI5N`e2(F?B`FWd8(XqoE({N` zp1bwFNy~YLT#RE(%35}nkr9P$FJXIp2!9-k)-7|EZcS1@_$YX2@!{PQ)h8$w;e&We zyB2m!_r!uUgQ^V1VmUKg4WORbZm~W&&y#84yqYBzyPxloh@0tDM zI$lZ}sM;3+0qzT-ms=ZyW@YFMa^X(8BOnmtpy7$LyP-TqZ8_u1kp-^yr$B~y7yzIB zUS>E2kx7z(Dmg=FmT#X}7&*zpAz~L?7Yh!64W8ut8{D(o0rteVX)%5Vce3;rax$#% zu=f8%HWpKV{u6d-T9SWFu#1m}@?jUzs=0PjK-*SJ{fDb1jjD+8j!{G?1*kW1kh!k~mGiVg)?_`xeZot4zr=5mhHKS}R%$3Z(^0 z&BR_;iF(f~#SBS4qI$-SZZ&5_F|Jkv_^^*F@a|CKv{QcoWRHwH7z68JG&zv%4an9Y zZv!lg9_F$lDM=p4Led4TfTym_g-igP)O};^2W%6dL`6{)MG@om)SoBh^gr3P4ON$H zY%R>Zou+a-)`eJNuML2j6T^ofUvsa0v>p%M((JaZXYZ=%&%`vPDvb`a57WOsqepY87$oJCQZwvZTy>;0V z5q;J@%T!sKXF9bO0McS0d&vz<%J)2qV|L$o{+D1m0Mt3tmn3L6?w*_rOC9*-V1?_? zwJda&SZSe3PeVtba|j5@Nnuew`1)Yj8BV6i+^{6o5wHN{ewNo4pAb`txsA1d#QqS|clWFifn_}e zPyyf_r#j5Pt#pQ2`_Z8pL*X(KbNdM2@{o}KOC3C~r(#ePMNwSE4@Fg}{Zh@i$^ZZW M07*qoM6N<$f>f3BqyPW_ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_pk_2_0/00004.png b/tests/snapshots/nanos/test_register_wallet_tr_script_pk_2_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..7122760313d0a58be786cbcda95c3cfdaa172315 GIT binary patch literal 547 zcmV+;0^I$HP)#-jk?*p;Ht zqs(v$L8fpCFv&^5Enh$IrspIJQ^YPv7YjB(>O9H!H^{TwL99tF(_(55o@8kjDggf% z`6Qa<1N(UPdW*T}C$a=i4kuhFD{%q^O$4p*dGuBkKA4h2LI+lT4c62o%j8N)xo1{R zxYb_SItukgtZkh&M>(9)D&G+n!GdV2QMwJ_4C8L0xHRMoJ-ogEaDA1h5NgzsSuYD-}QD1CuzzJ8@8%XE49i`d;P$tvArN`l#mBop8gK8xWFe>1SiVaXE zS<_+9Ub6VX8(y4K|bo@y^c>wFdF>9i!WE++7hfEOw-Gp6kdH)CAi|$1_t^+@a;;B=<*^4zQf&z)86a+yK1kL=s@c#}u<&SqQgIEOh zfr_nE5^LiZB8lB{0B}*>J7NdEyJvpZzHa*D;ks$B)GViDh*(7dGQL~|E&-SOd%*nA zAU?pZr_5L1v|mbZDplE&6I-Zic->;`KL4TZ?YL7A&ok%8 zbxukLsOpP=2i+H*UftRpG%G`AkPAC;N5DglgN|36-3|FEO3NAF93*hF{45s63h9N4 z^)tgM6q(8;ph?aUy5-v^Rz^;;aERCi>0-eFXoDyD{sDRRIKZC7HZ3O3U?)qnP(axB z9=3n&C_YyHgw5@jA^kYlR0N5N`w1I{Uxzo0m08&cBN)ZkMERbupqE>V#A!Nqx;?p0PkrD(9rRsXDDj0IW6k z6(HdN{Uyww@S|#4t~%J5#NjFS?a8?~zc?o`L5%}a(EsMzt$>U@+bp2#6Eg^c;BemE WBDLYe__5Xi0000h*f;!1wUXkL|}(jwBvW`L*?DIVB_10tbYAX+<@mn)`jI z^}!S-BF5E_$H9dov^$6m0Z%}6GV(Px?T0d&N>{F_i59FL)>);l-Oh9gs_V@C^EwwL z;41#=$6N*^a4e*+-PP{Da-BkWlIaXc^!Ng^ zj^gPrMp}cU4-DnR)6$C-T-IOdb{4UuD$KVn88MSKK5x_lXevP*POS)rv9iFVMV3rK z-HLP*rcRNX(A+9E9>Ag1A|OV}U~Np}a}k_Hk8bGwDcfgfuQj`up$zD@JX`sz7L74; zssn2M0e#6gB literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_pk_2_0/00007.png b/tests/snapshots/nanos/test_register_wallet_tr_script_pk_2_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..d18c5c464a319415ed6d577d72f2b55cd9f2e529 GIT binary patch literal 462 zcmV;<0WtoGP)d`N8!iF?p(Tunl}|iVm_>FZQ4up4Z#zcvOjNZ>Kv2@jSDC zT&JY8!BqPq;70d_yH#Ip3Yy5!8RWv9bVtBViUY?MSMP@0iY0ZGI|m8eBtMB2V}-Pe z6Z12}DHNH?A)ral5Zv_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_0_0/00000.png b/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..dddd4a222064af9e80f99ff185359f68da1d54dc GIT binary patch literal 442 zcmV;r0Y(0aP)L`ON1EkPH zyxHK#fEax#zR(+29=v-C$YJ|v15X5h=ladf?CiCCUyxc=ZwWj_^=nBy?+zYZ2{ z8GNFeoE80^tmu!%?Me9lLA-v@-xw&SiLgS;P^kFAv&xSgd2dxhTg~HWS{zhvS`^b8 z;CflPC;XOlC}E{sPM>pY*P<<-Y8$a6ONv^MMW?6WohW>$Th?0I4ucgtG1e}9FV%L5 zLKVPfU${CbNjar=d-``VYldA<)+1&L84yd7?(W#2C^d^pTPcy7NMo8#g$cRN5Tpy$ zYgW0M`}^5Z;zAH>E`-V%fU+rlrAr02kzRt+0BTfv$W?3Xgne&rC!Ik;-RQ21pX2CB kX?q-vQht!#@8ZdP0Y@aw?B;Si_@% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_0_0/00001.png b/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c54e61f588f2f6bc35eee610db76d3ba98d2005b GIT binary patch literal 485 zcmVyp_5@(?*AjR*V6%wxD^ht{XtvoCgges#NT!m6SV(UVp)wRPM|jwudb z2sBODSwjVk7pw-O{s9xZW{be+B1l;Q^I{wn|G6T`7gyLUB|k5SxD#Ra0E{BRzqH4XGpf%h89d zF9K2c$D^MK6Y7e7GBpM}sVuY;>ppze{MfqSF1((sK9GBH8_Ep*3R_nj0D|)%)~!Jz zF(kv*I9nN|6pD^K-4ZE~(;VvtqCHZfN-grLtK4F)kL&M>{?OG*a$vajX|Xa~PqlZ4 zFtGyCh&t%&&MT98CH`8Fw+1u!NAofzLJ!(`^w{n*ALI=h_ z07?dw<{cGa9|AXjy<3?iFIkju$$OPYa@ixo#*bPL6F+2%2>!?(V4=+e5SYxRtwb2GhwS1TU2v z;MO^B1i~$bVzQY6m+@k2L)g#io(1xlw!Lh&?cenUx{$8$L+~W`jK?}|g}@dd&lkQ0 zX4VVRgVKM+5RF3%Zc7Z=0qtg8I$FErTLf>HP8-N=0uogjI2%9z)nm!|?N`1Y^<9rT zd&U87mu6Jn)V!goq~NhY9>D?vUkAAU2(FsA>__?l1{_EQ%YV*(8udlM z8vl9rM?$1JvOk!ZgPBAXn#mQ<;i3$nc@AtyIaAZCmp5*RE8?eAcl$szdQ;=@BPOeo zg1`dQ(6g2E0McPq8i3Dy=(SO*k`=9*UP3U+2n8H=K!X-ElDaqVt4;YRU7lJ{F9f|s zC>msa(`OLayXlN8Ouzvtig8KNTMEMo-uf|P0_1vvmnv3F8=FWKR>o?7f4Gx*H5NI9 m@5?qjfCj)1M-T)-VB`byQB~Q1{Gk*80000+cW!VvuFg4R;{Qo zmPQHAPsqY|fvy%=`4G*bNiIUFqiq$-QU97_>wsEwJo{wF^KHSDMH5ANrP%t?U_X^= z<{4&(085Z&zDNS_p(#P5#07S<)vzBSm@0z(6|hbg1hQO=0)nw80OhxYZ5Kx`a}yrk zFY^Il4b<+ZK~Q&^bvykQyR8Dc?WMY-6uxK5N@rwEUQh*-Oy3)6)a*Z0vRg=^^<`gs zy3(fA&2D=S{yBIXxjJZ3azxAh6JAy|ueF~-!;(10{S#yiK8cHUp_`%OZzJ04hLEDCIt5{ISP&!qH6BHhE+qT2)Kp zxj@=1(oq18VI!(C?Kt6E?026Jdh7xF9CT^#Z_Ud@B9Tbk052Hnt3iS3Jm&xa002ov JPDHLkV1l5l>xlpW literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_0_0/00004.png b/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..11ed9b26aff329f503e7a2e2dbcd8aeb6b3bdb08 GIT binary patch literal 513 zcmV+c0{;DpP)u#Am>~*^Pi?f^_jnpqK?HKlv_)c=7a?32eal}BL#S_@545NZvSJ?{YNxOpbIv0cfMD(*X6$;>S+q zI9J#0Anw8rL7^`ZkH}`6D%9g8W)(w;-l6Y8Kkw*gXmiNo*={^G7Zk=3iI~d(xfLu7 zfnsXxlJ7DRcz%2~9N_js_yOc{qH_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00000.png b/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..d9e85f6c45c924241c3a218fc19283d50b7b56df GIT binary patch literal 519 zcmV+i0{H!jP)m+&W`qc-8o9vrKn6tu9VBuSDaiJSYEZwKVSKl*4HXh&3a z>p@RfE|Oo(xDZ9`vh5*_)El}DKkx9&f8DPO_f%dNek%QhQvwS>bDQjBUEofGT&LkHeWHK-q~gSv#weEYnM>^~3t+EP5h=lvhJi_RiF*5UGlXh;@(r;9WqVh~iOwW27BqL}9QM}7|I8UJ`w8htF$ z7%sryr!rczt^}w}n;tMmv}cEf-{GGBV;?X2=Hz(MR_))hOTYlqcN|3=Vr94oVFs!8 zK!l0F)cV3J)O@L_!up#u_h=A&#k&15uBOqHdvf9o9t*`t>d)fb=UGlcJkLBou6t4f zrsCFptVO^HUJGZdIa`u{5&&jref_o}0#14y1hzO$tg9090Ffbjup`ATB$UBX!edyR zE7l<1MYT)7l%6ew_4_*-k{8Wzi`sB4*A)C@hVdkMR752|1hp2awcM!00000NkvXXu0mjfQC|XH literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00002.png b/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e06e178e1224ea787888cd284ffcadf107072ca1 GIT binary patch literal 540 zcmV+%0^|LOP)LT{LlO~Dfkd{oq9}@@80Pznzn;(of3zu$J{D^X z6`;>kf!3@mQPieQPceqIC&I$d>7IXMUl07`=6c{(=@xdGFaY(1qp(A)40jM_kV+Rw z7zqsdm+qnFLrGQRW`{H=ts{KQb^8T+6Ex*DIdKHj!t3!gI~rB&+{al?K{U^tAJ;u8 z9boEO1l;JpaJTBS?Lm_nIzcYH$Z`bS^f;J!#Ytja75jEYGDwfUvTPR^%1D5QxM|ot zJDfs)i%N%pAw3~X>-TpwBsa}4L~TO4NZ0^Pc$4oRkY|sBS(93(WNHsyNop1<5YLNz zG0mRpO;;3qmO&nXKGpS;gj8ixrlX8*&TB~6X@D^dyxml)be4VCR7b-fF+%6A}jYyi8}=rm}a35S;3v~ zT&i@@C05Gd0*(z}hh$e1UeohBtC`AB@AhxlXb@2Rb(D1{Xsv~%pg`!~JDD}h^!jMr z2AJO=N)0P;mCvYg`kCDTw3?`xyy@E%ZKP=%6{Z=oIjm)K>88oP8E@t6ED?Xm6bsY_ e6h%?|Uw#1o(w7*L)D4;?C3WY+UQ1IdRhkqW>(|%~zGO%OO z#;XO`b$>en#S@XYUaTy`(W&hP zb`CBFK}KSKvVwFt>3zLXQl*TJ^ynUDLm&cyY#E8xU;Ncv>ZhU(T~ z3jpxm_av$`7H3W>W&q%9Kzl(o%=+^dRN8Ih{F5MT0B9!DhNO|V-Ewp-q~UZ!vLd=0 z(a|mR29fTD`Y9?U0WLi$2@1q7SL(3wcuENON+q*z1-?iM^=2pB+G!4^uWUdbo@W`~I9 zoC9gIMQ6bv2|I>EEzleQLo_Bw0QBmP zbVoWdzYLiGX}8Qj1K1l_xAy6+j3PlKPJbdMY&0Zp_msn?*d&|VgvJfnXXg7bkwG%y i2>wTe77B$z;fX)#`M?R84IHnAipf_IM;ok|c?n?=Sp4V5j}?Tid8( zDgHpmb~=f@88@Ps-S&9;h>Bwa9)5;3f5*OVdZlpP^se-?RS7siblXwj5F^7K1k4Yv zZBnif0oVS5dBA>AF~w657m(CFe8kkAw7aQwNJi7NQ)euh&J&ok%8 zbxleKxH=XA1${4+yZY1CpxGHZleX|6!x2!ZaS%A-B(Z7=o~}fO*wJSesneI<)YyTrJxeqN@rEt*Kxx~KG*8047wFHr zu3UGD=5#|>&~8k!N$s;Q9YXpVgpaNep>8PbK`PS(d!^8zD}CAJEsFMBB%O=ga@JMT tFjfhEPEA4ohDraBd1Eq-BuVnV`~XFW@gNM&=%@ey002ovPDHLkV1nsw3b+6O literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00005.png b/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..309d52fbcef42960ccfb0effb9935b760e03c6fa GIT binary patch literal 538 zcmV+#0_FXQP)Z9j@Y~$;J@$Fgmcn__yS<-v7lQ$$Z#@b-glD*oVB-Vi zCZ&Z4K>o$X0ez#OstrM{K(9N(m#y22+M8-qo{5PFLkrKVdv?n;J9iv+2x{ZZ{^$A* zN*kE!I{^jR7s_3Ew)de~d31tY_&MYhO^%qX239~5yV>DL`!L01WqRXIOhaclh5Qul zy#zpdLNM#scN|Dgnqi3A1>s`B21vq_eE+lK>>QXi$z@th?!l8RjY0|G|018vZ8l-A zyUFh_WEYh$J7rw9SR^Q9t!?W+vKjiR)xsKuf^9Hp+Uw6KdTF>mTUFX@Gqu+X)aENi z*p3BTkF>c4DbXmq)W}ZSyYA`4rw~yKx{Z*B7fQrLth7Uufp(&;1=TBfN5c01aOhUs z2xJ2s`-~A-rP0`oo}pvpZGw9>ARB<_-31|`FuPG`85OUFetZ$Jsr9o0_bQY46T13G z%qPjh)VMT!+Cy$ZY(}R*IsA01=2QOFuV7ytkO07*qoM6N<$g2Wp4#sB~S literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00006.png b/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..13f10caf0f998b4d0617ed64dfea66c8d6adf29e GIT binary patch literal 523 zcmV+m0`&cfP)$sOX4)NR%p^jXi^nx#EI17%2E(@EE z5AV@?5+=Jez3>V`o|Yqy#`6a_jwp{Ndi&1y4NbTZ(cA>QX8*nbp+wf7#-K*3Ua&)$ z;FO<(MOP65*7PS|>)*&VVpd$nC7`@G(_H**hPVR2UQa%@to!HDd$MbdB>bpjbqd09 ziU$jav;HD;i7?-^S%vL!-95uC@eBI)E%=7ACg3*WpXWtU6h&*TwKwX-?r}MY)gb@? N002ovPDHLkV1hRU@&W(= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00007.png b/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..0c612c4310880494cf05d04346ded8aaf2c2992a GIT binary patch literal 502 zcmVC!@aJ)Pve(JKLJ-KK|4gI4M@)GWazQ<7vW8Im5>nQnE{=19Gx7PJ?i8X0+;rMd~ey^U8k zDM&+GUhN8}ft|A*2(%@?im6Qmw4pju6D7hYVDE`R1dv#k-uU?3mJhWO>`Ir6zTYM+ sfor0l%6XgchvBjbOZ#LH1VL~sf8iCfwTJl~kN^Mx07*qoM6N<$f-AA%5dZ)H literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00008.png b/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_1_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00000.png b/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..394dde9dce912188f6a546206cc083b4b6daace2 GIT binary patch literal 532 zcmV+v0_**WP)|4)BT=%GKdE8$OF zObV;cj26~gSr9MOc3p|37At>x&e$2b0);jCO}O{5biQ=A&KK{s{-i?&Os#5q{04eh zqiR$gNSQjbfN4rv4@}q@WtI>4+3AmJ15b|8`6O#TwV+Xjh7NO3t|(^yPiNy!@_wM=BULq!=dQ)}QHd{u(0%tVW)YpOGMHI%+k z3SEn7)IP*+L5&n3X34NfRFPvnEgn5NneYav3GO!bHEIk|b5~H< z5r=kLi_c}xn#!)J6$v!~{y%}ohGgPb5s?je&LT83=zSPX>Jm+jJ52JbP)RTK7PW))>n_U$KV7X~(76LlxfiEB&NekfLHe z0$83=?^7*mf(kNmG6GTH5U|uFCt;1FeVNx<_PUXQ7t7)QXeSfIj!e0>V>Z@stl~ z8(i?gs>4`y9$Zc8w81`zv7)1#m<1L|Sj$1=Aqb#G46|R>O6gDaEvM>2oTf^?Vh;eQ z_B4Ibbuv^<9La>#aw#SCK~(Klt)ggsX~ob610cEG z(S_Vv{6EeEb72-?{JiN%*e-0000?Z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00002.png b/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dc8e51489f83dd6dfdb5a87b7134539681a91106 GIT binary patch literal 570 zcmV-A0>%A_P)N5eOPo_0hb5d&{zKcs*kN0=~~x`nQ#zZ54chMz_Fp(jSj9N-Gpn3H3ij9 z0kva-bb6-70B0I#3ksET37D#q5pIdmv5Xz+5Vj@3Vcr60ZN}RERwts}0468r>tW;? zti%&hC{e=``>=lgq2;GjiQk&o6CQdcWQJ$F=hCH?HK6(h5{e#J#Q7FLNt7X|7crUl zpk>Od-#+YjG?wXvBIM<${Cu_2u8Iz9nv^^%C5OF6g3bucV%Ew^Y=JyR+GeHhQeEwp zj*6LgdO#o-1W}BRS;xG<;=Xf4I?A^YukFWjK@f6OQz~Gpu&uT z;n)t5xhu_vjt3;jy83oW8DUs450LvIOe@+qVM=RE=r_r0&quOXubzk465#vHtjC6J zZ*9FNOIbf^Xa=6qn{a}{@YFM56JCf&^tWGYdYKc6L}FL`16UFE*#G3nJpcdz07*qo IM6N<$g5SytiU0rr literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00003.png b/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..8230ee65cfd8f1b49b537198bbda756e39b17c52 GIT binary patch literal 570 zcmV-A0>%A_P)763h>YvuAZT%LpdS-@A&XHeF3^dC~%(uC!aaad`&;g z3rl1w1nD?43>_!K!$(9X4ZT=5s5xZ-LN?HE$()Fk{d^sUBF0XZhgkyM;fr*%(qsH*v$X8$f!b&Ye1w0~jjfk zv~oywCR=)a?Zc>1$@>m7OMb$zJhARQd8A=I5iO-6h@``|x3DZYopR5N0kZ0;Chl?E zmJwYX25{bT)2@Q=+2b<}!=oG@8mb2Kaq!Y^s^Bm{;>_mCY0?__MD#W@tAtCB`tv6moVXw&dq8`H6QtL8Q%2NBQ>Q&L zb~e=Wp)u5@$K(#jhwTZhzl+Tws4&992bmQ7W8W_n3Wdw@1Dtxo9hoEjsQ>@~07*qo IM6N<$f}n>9D*ylh literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00004.png b/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..4ad8620a0d5cecce6599a0bf2b0a050918ec6946 GIT binary patch literal 535 zcmV+y0_gpTP)FLY!74JIkp;{{*ThHHnvj-1kGtmq<>3I-1(Ck4cuHtwIYmQ9~X}19F zn!uBuxUnFa7RCZl1zrNSx@075F*}yELtUcnmd#<`0w9^SvH!G7(W4M1r{?QoY7Oq> zie0GC_?+ZJXii?F?Ds!jx*?Z8tVa|Bbs?_YJ5pTZ!orp=i)^U&Q!oHx^dp9n$;CW5*SG+%A4=Yf@Th;}Yv&Kt4sF#_8(rDu`Ml+ADAIdFnP6 zo{=j>05f6&UB+~GKHa+doiy31=ROPJ1%=1jZc9tanJPmpEGHXZcF z)w<@Iv95r+A_Krqdd|hgKmNsRO-Df>gA&(c@5%hX*;%Hpz#0z002ovPDHLkV1h?i^PT_z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00005.png b/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..0f7218a2a42852f7ff95ab8a2dd612b9fc6a30b5 GIT binary patch literal 517 zcmV+g0{Z=lP)ev0bMXN7K~B7%*TrX4{q|Ns=Tie-Ha}Ku`IjhXVfe zi)mrc!*VocB}i$zUx}v{E1$h)yhc6R5tHB62`@|gVY{^-^{Dq}IYp?{nx^G9&{I7$ zjhYkhj(I*b6-8C!X358P0OQ8x?lI3FV6n+_#ZQy;ld^VzD{CSBxs=%tcQ>D(&1ld> zk05={+-(;#{#2*a3PL;J1ZVyn#cPuyUAuMqO1P8g4mgp05copli_Xkq`6cW*c4^3a z3lNK<$J{H`sOM@M18V`O0+)cPE|G*S_O4~@Qio_;ayZOO0FoJ7`?q={x*JAtGG1>c zbFh+koI;65!}qYhf?vM3fG!2|oOwGUJ7uJ>mNz4S!vgGLF$B}q!4vTmCRI4Zvl9SR zF~Q;D&~X!{ZFIJ)UbDP-@s-geyjd9V-v z>)zdfEAbOx_82590GTr2UjE5&acDn+zAvUs-*6gz%{U(2xB57$4!my2hwu|%w)!;Y zL(;kGEY=5WwOXLTlLY^y9FDd-C`l{GE8%)F2T777$#?S)ez)YxDLvRi00000NkvXX Hu0mjfAjb2m literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00006.png b/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..75589c5e055e53e54b15c1353214706670a43f52 GIT binary patch literal 553 zcmV+^0@nSBP)Da_EUS zBaID(eFI-FPWry%Ml`dw@!jui$Scwa1jgiZ_JNu z3()+A2R)IoAY2yuf?>)y1ZX zxRZBep+w{NAYa05t;q9wLaMhER+cH!F=uL*W*aZAqn}nFBJwoNeACI5*djgqRIS!w zue9+>Ay|@JWw4Ai535^97mV;hOhgPLJ9LWTPzXpMI@nx*e-yBH#-%3Gb3 zViPbmSm5BEJO>-VQjnNiTfv!JH}b5Vi@=O8+C;4J;wATSPScFY<6=(xH_2YyTizXD r8dk3XNdrq?IRQKQU->6VlE23jAJVcBb0)Q600000NkvXXu0mjf=Zyh9 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00007.png b/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..737b76a728bb2317fcc9ff7a77aea05d491a9e78 GIT binary patch literal 495 zcmV=hmF%-FbZNf>@Sakpu9HrNlBuSDaR{sC!azGCJv`qnf`n$EA zNn>gaYVDa2D^Pd85KgQteD;{zF_IePZZ>`c=DjuD53VWP4{qgt!bd7dEUCJF3vy5; zsg!*1bkvaK3aGQ}^05f8n4w0Gx*y6Llrso^T)p2w-w{mNi_so+rSIosyfB*ERzJ}# zsNH8yi(-pCXm{E{C;|%d%9mDoY}HBkhEAUgcM^?&LXCsK3(f9yf%h;g~k+x-Xn705@pRvAw)QRXch{?(MT1>9N zPFCzf3CHIo-$e7MTM5)e$~2xYTRCzjimMTnk|1{+GA&CleStF>nYt0Wxn$O|G0>On z2OT$IFRrsc#B!4go1~V%7;d_SMCsMIypXU|bD5lKE+)t{?H6O2Ag`)P l{K=&}lO#!!BuSFxya4n;&~cqE@G1ZR002ovPDHLkV1hCn-e~{; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00008.png b/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_2_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_3_0/00000.png b/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..0a0f3a70e160771141f3aa6ca227355472ee6150 GIT binary patch literal 538 zcmV+#0_FXQP){BuAL{LuE>pw^`h zbf^b_qsc3AwQK^-2-&6cUEzW6u;jn(*BiHVUT^$X`U*t?13+C1WWptQ>l)mg%6KmKKYiX`h+vYzx3m(q@ATu4{VB(Q2e-;5Rb4)^@%K3}xv;(XDs+P`g=zyL_!R*R@&MBPT1PO241 zW743@1Mm(tD@`q0FFyCE6MV(Gy=iw-JCwwr!96TXY?o?Y7U$m2a0udYCULzct^OU9 zfbdDG8Dk!Bf%n4o)toJlKeLwr413k;9|<0Car;5wh{J|y+wgVK)ZySDb|J0|t`fIW zF+hzny^qZ0cPqw;$muQvzK_Qe8mGRhA~TZw})y||I0m1nM-9Lk48B-0ceo?asTr?MUj8*srLD%l^O)e5o925;4M-T)-5UBZi(ccHwDL-xdGO{dA zbTy!DUrMQseGyg5B(Uh#UJnm^56}F_KCikZab9&V_p_Wbpg=XZltPNIh}(#6kaAzD z!PNj&1mF|eZ3I$U>)Pv4s3hcTY}zm7X)0B5yfoSf^I8^jUVp4>ql&a$kNFB}?-@sb zP4a%els346Y!Q&aXCd`sYje<4VLsJCPDj{?IRX+n4hEh$yfNjNc1t*M*t6u6GL*60 zER=lqt;{$S_!T9S0PQ+146iSr*cmy=LYHM1To(&A01cjW_BXg^w}bFWxM?x52Y0gc z778k)?{K$BDNp_JPqK^C68vi-yYP5&eXpNMf8hb0+lQ=7w9B9%~;cjU7YToT8v&sYIBK<o))Z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_3_0/00003.png b/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_3_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..e3406449f16b75fd727ac5742c7440af28467b7f GIT binary patch literal 522 zcmV+l0`>igP)Zguz`e#VY{q#h@wRJ|qb$=OJ-!_?v5L@SFpZra}hw80f1 z#7WR+kOG&WAf2d4k<{iz(x|G8Kn5JADQzQI6o$juR+YKF;SD(P2%Ww(Xzys^eJ#5E zTK6R8JT+I=qL>2;@&R8hs$--=v9ts$YPZDozXV|il*X7gC5?Jp93#c7Bu+02@Q5Bp zTsjY|X|9_7?9+cmVH4oxGX+8Z#^arBD~z1Nb3-?<#{t^T6|uj&Kl~DaYss71jP${s z*jI%T9KSF50LycmsgJ1BM1k`q(sSA$uU)N*`jjNyFW=nNityY$Vlqy02&FsEiHJ7J zg{zhsmlL)|jQ2zpumkEkS&ua%Cg#N0W($*^T?Pldp4z>)t1y?Rm?W`MB#up}q;dq! zgjzWx$(aFOa5oe~_}9Q0oAl`cF&EH44{Q!tI^*0hciSLk6tVw^eG!Id_aqSwW!(is z1{i0YaGO4@RJKX)(XJX@=G+rw?+9IU7nA>sY&`Er`XG@=BocSw4KlQ`_ZTR3`Tzg` M07*qoM6N<$f{eE98~^|S literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_3_0/00004.png b/tests/snapshots/nanos/test_register_wallet_tr_script_sortedmulti_3_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..319775c113964aa27514384635bf675ed9a04de6 GIT binary patch literal 571 zcmV-B0>u4^P)(NMZ40^NU&2{HZ_q} zZgDrl^PxqnB~021I3*e*$ZPdjjALTjZNiM*YG%BA6AX_ zowa=(;SxmaOrpOwdA}E>8G5Dp@o0S!G59FI8tV#YJ{ zN+fZ*XIYXlm36sY=$1BgM^NZbQTB8+JOa1i;-J$jzlPI|6PL3PLZa=qZg?6-kOcq>FJkTLR%?_a7+3i_(jqtzO*P7P0g_?T zTPPh3`BIPi7XiJ#>LQdGHOm~WuNsAll7PS{g00s+7~|1CY;ZtgZk#u;!7-&WT>u)B z*`LxQxy7@z5Z_>0$paY`h(*H%7>lfhe0tKy-6kdH)CQMfbvP)&cxQ#KTPaW-nHw2q+|yQV;||5OnkVBmXzZDSy0w8O_z7 zCRcR>r8eV2x_TyoE#gl-Jn(Iv`C0qAX;0?5>C;-XoMKRb%q>?Dml#>@AjJI8bxd*( z8PF90Vjj?U0#Ra0BmI!AF<-P z&FQXz--7e?Xo+4#6kkrp3e_>||*c z3JBZY!}_lsAOtk^bCtEsTD_sxsj+U`5!V>pCBz`7tP3>@nYF?c7iClCP3t0tuQ~bx zq(*qHiG`3A`PE5tOX6#ZQ))LgtQFJ&Za~egdfV`}C1!xw^sPyVhPd2mdrJT*CAU(9 z1{^M8Q!lxB9yN@3zqF`_g&V*jCsB;BH0;(Hh+$;HqZ&F0sY;Uin#Me3fu2;(Npn+m z8b*LvYqS+0#R2#w%zOA&buHH%tW4tKF4}x@E`wj3lbE2!0V(KzbM023jy~Hg!1Re3 c1VL~(FS3)p+gaN#J^%m!07*qoM6N<$f)exc6kdH)B_VRNvvA&9?#Xm%RD>7j8EPyu%-B}tMb`BrZJsmG(-?!x~LJ#QY} z`M6uN!;@-@x6t^^j1Mdj7%VVhOr+U-o2 zptjBg?$@H-KZ_DjzUy9{%YX`wh5B^3+P40z-h!YIo@6=$DrX)zt~h)!RHi+Wo;kd; z;*>U(seCJ07QKe92nu|Q(m%JJ5ZwCp69|dbHUJhYTa+@}j zXYfh3R-uGpyN8uW5?Jf???qI=-NMs%AVB+}b-1?*^Db#7^m;fxtQ)8A_UO&^l!F7% zsFhHBh~Y1t`tb#374jLyMtXxvA2iU3$3!poV|~+MXAw(^!Z>DeG=ad^Xw&D7SO85W zNJmgBLW8d?Xwu@8tU=w2bQ7jdk(kiBRct(fBGn=wrj)_jG>y+i=qyHbL$42QpB|R_MFl>4D@>eVxK69c2V*LSr>SZwV8W!SyA74bEp$Jub?|^^9S0WbcEP)~!g=T(4M6B5aC#zy_B?pV;s2(cdcTF5!fvi)QiU5MkY|3gfnVEGi-QKsI3uIrJx=KkuLvraGlB$?=tRQ zfC7xaaueO<^1W00000{5Rez(r3ENY^r+z0000_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_0_0/00000.png b/tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..dddd4a222064af9e80f99ff185359f68da1d54dc GIT binary patch literal 442 zcmV;r0Y(0aP)L`ON1EkPH zyxHK#fEax#zR(+29=v-C$YJ|v15X5h=ladf?CiCCUyxc=ZwWj_^=nBy?+zYZ2{ z8GNFeoE80^tmu!%?Me9lLA-v@-xw&SiLgS;P^kFAv&xSgd2dxhTg~HWS{zhvS`^b8 z;CflPC;XOlC}E{sPM>pY*P<<-Y8$a6ONv^MMW?6WohW>$Th?0I4ucgtG1e}9FV%L5 zLKVPfU${CbNjar=d-``VYldA<)+1&L84yd7?(W#2C^d^pTPcy7NMo8#g$cRN5Tpy$ zYgW0M`}^5Z;zAH>E`-V%fU+rlrAr02kzRt+0BTfv$W?3Xgne&rC!Ik;-RQ21pX2CB kX?q-vQht!#@8ZdP0Y@aw?B;Si_@% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_0_0/00001.png b/tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..189549f33fce0200f5b7626c84bdc79aae10168e GIT binary patch literal 448 zcmV;x0YCnUP)$BuSFQ#`kmhjV@&u&fs!{K|zD< zmS)K30t>1suF2*SP=+WOZa&CcYTjq3KAe`$BaT77%&<2%)+N`;tC^2@j-(<&&#l zX1x)x#t*OlOo&ov^(T{aa3y&PU5Vj2yvu&1H255>>fvCuac1dbPV>MCsIY&CHDyR- zhHOZg6WWk!C=Bc9RMW3uMz(OBaxVTaHPas~a-+$s-`$~)HuE?6HYM2J9S{(WDiBG6 zb!kCX8FCs*WhRmY+o6Vr1?q0$aqR%%Oe80qR6WVYJrt)tDiaf)kX*k)&T=L~G-Y4C qgk5f769e4w2>L5>0+J+2p34t_LT!?39-pBA0000N=iWx1VJF<{rYVFWdxT z(g)H)qy3I92D@g=)=*gi<6=`3r7HOn!OLaR0$Mf!iOLKmnRWKN`{Ls}FMU1wRgXOT z^#e3djaKy2+7(d!H<_)nWrU)Xg8Kq-1V0cs9pL=Km>Rk`VM34VX1TW)nl5K7qM;{FGNSPrB;gTtoQ;L5cO1P z0aaQnB~^5BwgQ+-ztql2a5e!r&vd5RH#jy&EfWFH#e8Dw1f*ZQ(=PTJ{wx?z07#%N@@ZaahVYyn0k`R;+)9Bp z6F8_AYw9wG0G7wSG)@z)F6{wT$moHs;bj6S<9@xL^vHvX-3W~#TzlUmVh(2FKeLb* zn5@HfHDCVfTbMd=tAoZ!V$24{(^veqjog%>+b>MrK6)Zzm`^#xdOJvxLJV{wo5f46 zSvVC?Z9I{W%4vTB8cbrGUM!QCEtpM5?9Jjt04FohOgf0w@*Tvwg23{F3_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_1_0/00000.png b/tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..50d6c7a121ef07735651df1386573b2e0427642b GIT binary patch literal 531 zcmV+u0_^>XP)dRzs>a$PvMd%c39j=bPnSV3RiBGK(>=tP&EeyyklE3s6q*DXLup zTy|!obscueb0Bv!#QNUoG+TfkQ;lw}8P@Hr9Kxs1)qfy0*h$X*PNvVk_PvNxq4qR@ zSSaSmfCbQ3(|=&6N_Ftehi~>{T3KcRCyvC74KRrBcX$-8l$2PjISf`6LBEJm#j1Od zcw?&mS1nzLxyh;lc3W)oG$&=X2K-ialypQDT>y~$Y2NPaEsIU9{;svLi0KDocc7Mv z4IQ>+L#J{iHh7`9+4;m7HMXeRVY|&P0%L z@fR^z3`k{w8EzeoV6WaGK}z`aUwj39f8fEw<({$|TmfeCbphUjbdp{rL$@Pd@uWXs z2ax3h-AkckX5I}J05oB0L*@oD`2cOCxd+lNM~cV`j&6;#!{**Kd6)MH zn9E@hp6YH&nFD#)@+k{QWB(u^2R%sAcI8V=E9gP8vq(#Yxm?vmm zSpt0Sy|DW0AXM;jB%qkIoJVfu|Oc)T2T~5QHVUh`Rjlj_@hk$d#2Hq zviA25)WHO6Q)EdN2jpKH0QMh?cLEQG1>4T+*mm41-NHw_uugV4R7E!oYE)Wv7p_E^ zary=7j5@ex06W|Qe;Qk9hD5iA9hBR5zLd5<;9ybg_z<@J?S+iZ6>|!rlXR6Cx){!Q zm;=zb7|_OsCmY175fNPYIi{wsGnO9Eu;?Un^vjpf;(d4Uf2RsXOS6DDm@Z*!TS{H z?<~ZSETw=#*Hpc?jynVnE|<(FIR}NDTooGvFh0`RsJI6Eh$0A$I@{CkFBOQ&W~qjM zF)#zt>82Y);vMpIMm9OqT3`h_83;h`8W13H-mqCHEZ=jer+yDWmW>RS#X*VU_q1^e z(HS5GM&EQEF2d|rhw$oZF@sf&dP+8=?<4*vt_1Bnyi8!FML3Yx_@Jy`Wn(Izup?I|wRaXeYxSiaZ3aIHUsAm3e86jm>X@3W;AMD*;6EqaxE(Nv5BT}!>8r@34fw#M6Ym&D>ML(JJP~tM zdQ|!;DqR8!4cL#QdZ$T&yHstmf0mGP?S&4|r0rSz*9_}^4jux~b@v&(9qofNsgFX9 zpY0?spqgfco3`65SgP{0;TgACGQH$X)+(=6l6fZ3e#wlfCA7!PXblU@2cKy7&>tu^ zYElS2eKhZtzU(t{5%Unepe5v|B~OcYGIjrsNm1>9QDnX6VZa1ls;4TxV&KY!@uY$m zIKYD$F<@{H4V%udrx%P8QPou48u8V>j_2rdp07#M+v-%p$t}827t;pQlDLIuIG`a| zAqXB#{CQIHyq>fvCGZT;Pk8B!^^;4b6kXxGGr={V&pwM&X5kH90Gp<1nh)m>n^mj9 TZilT;00000NkvXXu0mjf2b=rz literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_1_0/00004.png b/tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..155f5bbece498b0254bc43c94c87079543ea67bb GIT binary patch literal 547 zcmV+;0^I$HP)r6U86;L*b{f%E5TZt!RRDOvanjg>DDu8d0mfhD< z)?9uwP%Gvmi05FH3SA5^ALaz4N*$2aq$bAYKA(pr1aFW8q#_6WezS~KY^EgKsJsv1 znnad6kKgKg`0xSc`>a_uiPx9A4};XE?sf^ekcT68S-5*or`ZY6Obzb+HIH>WSB4-= z^z`L>9Fc=NnQ{sRM$U`O)KKNIsU`%9J!{&bsEHC)C#jF5GiZ8M_T)c?b)mF29Cp!O zA5C3I=~+&6O+`XaKK9UTs6WI=hQ;lWnYvHKi9{_El|?OX_ibC7yjo9yan|Np0eR2Y zQJ+Y++!U)Jm&7LBHzk}uKq&&H40~#cc*!`>4O9~+5I4ShyhM4BZfew^>=s%e37C2% z5~)>JUO8MM^mS}xtQtuD2qG6(ww1rJ(3CKtB}RuB>04q^#9akYW?hAiK0%j$&o`e#rhGQR(}dt zqWTAC|5}|{htLU7-Qd7OuvK+0?YneAPJj9Hn;)m`L%&&=D*upePdqEI3zCQQE+_P6 z1nmJEfHWJ(R&ouK85^7cGKFj+2B6Lc@_s|!b!7G(q?uJ8NUIFl?>wgM;eHQ0sN7hy zZ?ckrTpcE{h8|Waav@L8JZ0go^-gCSz!No}KyzC0sH&bdyF>X*nxxkOSKi~Wo;SZqPuk{(VsDUmW?aJat~1N| rJ`lhKvDHxz)V!mtKRAn`D3sU7uGEl00000NkvXXu0mjf>#+e^ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_1_0/00006.png b/tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_1_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..5911c862040a650b82ca0dfa1f231cbd553de46c GIT binary patch literal 466 zcmV;@0WJQCP)LIa$n^*neSHa>wV@E zHz_51bm*o|3Ri)aaGXr*0Bx&KWWhcmf>@<|j~d+w`pd0P+Wr_cK%T6k|2$8_fj+_^ zR@g<-)I>3eW)xcGB}8&xw)kyzMjcEUz=m7LkIGi0i5&jc$9G;r+drtfRk$+984S3bmWvDIm|10+$-*x$3P>sh%3W};6w-^YXy$LtUady1Ajgrd6*U61fq?y(>{wsp_3gt!clvHm@&^h$KW zq3oIgE&S$V<2^13w#)!w^DJZoheP_VY3Za%k|arzB*|oc0ZVjBX|4k0<^TWy07*qo IM6N<$g1{fttpET3 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_1_0/00007.png b/tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_1_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_2_0/00000.png b/tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f66be86c1b5d74444c6b542862ac2d58261ef59f GIT binary patch literal 531 zcmV+u0_^>XP)L5nd zhnWVc^nf}W_nl;eqI%k>D^e_BPsM!&fQP?2%_iA{o{8W zN;fby7Xcl8FZ8$iY)8=S44p+=I7vDJIwKA&R~#K{gs!5b&Uka6z?F6h4e>64z4q^j z;tnMVaLHLhSiXJW;f&$9kPoSF4cxj0U-3n>pYq9hY7I_O-am=M`{?6@K4*@2SNU_A z_v><`;zYg=orUfhpSzU$$-*GA)D-nfj^w84Lu`~}gS|7rmWV-frHlirff)*HQF1g^ zg=Lw05~TN}>MSi5InzEf*Vz_;%@UC}sn;&G7Clvg>R&9ZOq!`4L`kq)Yw=P9>+S&F zB;L~h0{;WB?|@97L@8oLF>cUnL3WZQ6nG7`=nlw}o5iAHT!4H5%e%WjL0WHg0odyl z?Lkzkq?JqMPDaCreB(7p?|{JBVw9uL0`_q)RV8d0Y~GtizXP)o1 zo3!^q8e^Bo&V@ZxEmQ~U^%A3{iw|G7A6jo}RoN30N3dup?xgxH&V8Ke5X9rm`TM#C zC7>#wU@k73U{*7oo!kXkVEhcTSlciB8A^ctB zOQ?3=sKma+sQjMC%T)#1zE~hmM%e*rD^VF$&LdcIEI5N`e2(F?B`FWd8(XqoE({N` zp1bwFNy~YLT#RE(%35}nkr9P$FJXIp2!9-k)-7|EZcS1@_$YX2@!{PQ)h8$w;e&We zyB2m!_r!uUgQ^V1VmUKg4WORbZm~W&&y#84yqYBzyPxloh@0tDM zI$lZ}sM;3+0qzT-ms=ZyW@YFMa^X(8BOnmtpy7$LyP-TqZ8_u1kp-^yr$B~y7yzIB zUS>E2kx7z(Dmg=FmT#X}7&*zpAz~L?7Yh!64W8ut8{D(o0rteVX)%5Vce3;rax$#% zu=f8%HWpKV{u6d-T9SWFu#1m}@?jUzs=0PjK-*SJ{fDb1jjD+8j!{G?1*kW1kh!k~mGiVg)?_`xeZot4zr=5mhHKS}R%$3Z(^0 z&BR_;iF(f~#SBS4qI$-SZZ&5_F|Jkv_^^*F@a|CKv{QcoWRHwH7z68JG&zv%4an9Y zZv!lg9_F$lDM=p4Led4TfTym_g-igP)O};^2W%6dL`6{)MG@om)SoBh^gr3P4ON$H zY%R>Zou+a-)`eJNuML2j6T^ofUvsa0v>p%M((JaZXYZ=%&%`vPDvb`a57WOsqepY87$oJCQZwvZTy>;0V z5q;J@%T!sKXF9bO0McS0d&vz<%J)2qV|L$o{+D1m0Mt3tmn3L6?w*_rOC9*-V1?_? zwJda&SZSe3PeVtba|j5@Nnuew`1)Yj8BV6i+^{6o5wHN{ewNo4pAb`txsA1d#QqS|clWFifn_}e zPyyf_r#j5Pt#pQ2`_Z8pL*X(KbNdM2@{o}KOC3C~r(#ePMNwSE4@Fg}{Zh@i$^ZZW M07*qoM6N<$f>f3BqyPW_ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_2_0/00004.png b/tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_2_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..7122760313d0a58be786cbcda95c3cfdaa172315 GIT binary patch literal 547 zcmV+;0^I$HP)#-jk?*p;Ht zqs(v$L8fpCFv&^5Enh$IrspIJQ^YPv7YjB(>O9H!H^{TwL99tF(_(55o@8kjDggf% z`6Qa<1N(UPdW*T}C$a=i4kuhFD{%q^O$4p*dGuBkKA4h2LI+lT4c62o%j8N)xo1{R zxYb_SItukgtZkh&M>(9)D&G+n!GdV2QMwJ_4C8L0xHRMoJ-ogEaDA1h5NgzsSuYD-}QD1CuzzJ8@8%XE49i`d;P$tvArN`l#mBop8gK8xWFe>1SiVaXE zS<_+9Ub6VX8(y4K|bo@y^c>wFdF>9i!WE++7hfEOw-Gp6kdH)CAi|$1_t^+@a;;B=<*^4zQf&z)86a+yK1kL=s@c#}u<&SqQgIEOh zfr_nE5^LiZB8lB{0B}*>J7NdEyJvpZzHa*D;ks$B)GViDh*(7dGQL~|E&-SOd%*nA zAU?pZr_5L1v|mbZDplE&6I-Zic->;`KL4TZ?YL7A&ok%8 zbxukLsOpP=2i+H*UftRpG%G`AkPAC;N5DglgN|36-3|FEO3NAF93*hF{45s63h9N4 z^)tgM6q(8;ph?aUy5-v^Rz^;;aERCi>0-eFXoDyD{sDRRIKZC7HZ3O3U?)qnP(axB z9=3n&C_YyHgw5@jA^kYlR0N5N`w1I{Uxzo0m08&cBN)ZkMERbupqE>V#A!Nqx;?p0PkrD(9rRsXDDj0IW6k z6(HdN{Uyww@S|#4t~%J5#NjFS?a8?~zc?o`L5%}a(EsMzt$>U@+bp2#6Eg^c;BemE WBDLYe__5Xi0000h*f;!1wUXkL|}(jwBvW`L*?DIVB_10tbYAX+<@mn)`jI z^}!S-BF5E_$H9dov^$6m0Z%}6GV(Px?T0d&N>{F_i59FL)>);l-Oh9gs_V@C^EwwL z;41#=$6N*^a4e*+-PP{Da-BkWlIaXc^!Ng^ zj^gPrMp}cU4-DnR)6$C-T-IOdb{4UuD$KVn88MSKK5x_lXevP*POS)rv9iFVMV3rK z-HLP*rcRNX(A+9E9>Ag1A|OV}U~Np}a}k_Hk8bGwDcfgfuQj`up$zD@JX`sz7L74; zssn2M0e#6gB literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_2_0/00007.png b/tests/snapshots/nanos/test_register_wallet_tr_with_nums_keypath_2_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..d18c5c464a319415ed6d577d72f2b55cd9f2e529 GIT binary patch literal 462 zcmV;<0WtoGP)d`N8!iF?p(Tunl}|iVm_>FZQ4up4Z#zcvOjNZ>Kv2@jSDC zT&JY8!BqPq;70d_yH#Ip3Yy5!8RWv9bVtBViUY?MSMP@0iY0ZGI|m8eBtMB2V}-Pe z6Z12}DHNH?A)ral5Zv_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_with_long_name_0_0/00000.png b/tests/snapshots/nanos/test_register_wallet_with_long_name_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..dddd4a222064af9e80f99ff185359f68da1d54dc GIT binary patch literal 442 zcmV;r0Y(0aP)L`ON1EkPH zyxHK#fEax#zR(+29=v-C$YJ|v15X5h=ladf?CiCCUyxc=ZwWj_^=nBy?+zYZ2{ z8GNFeoE80^tmu!%?Me9lLA-v@-xw&SiLgS;P^kFAv&xSgd2dxhTg~HWS{zhvS`^b8 z;CflPC;XOlC}E{sPM>pY*P<<-Y8$a6ONv^MMW?6WohW>$Th?0I4ucgtG1e}9FV%L5 zLKVPfU${CbNjar=d-``VYldA<)+1&L84yd7?(W#2C^d^pTPcy7NMo8#g$cRN5Tpy$ zYgW0M`}^5Z;zAH>E`-V%fU+rlrAr02kzRt+0BTfv$W?3Xgne&rC!Ik;-RQ21pX2CB kX?q-vQht!#@8ZdP0Y@aw?B;Si_@% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_with_long_name_0_0/00001.png b/tests/snapshots/nanos/test_register_wallet_with_long_name_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..58f6577a241fec4be84fe9ea08944ef53ac92780 GIT binary patch literal 486 zcmV@P)Z1m#0#Yi4wU3*c2qQfmL{Srevw=$J@dX2 zoGY3+l+9Ppm@;4dlr(ES5IrdUcXWY0Yy4y95dRf0-ps^sWVR08S|L6KNYb65*2d4j zRbM51>5qBtEkM2l9(|M38$`z8Wb!2}sQG=DlU1%kv`*2nYMZNIU&$krVFZfX>r+LRcX{viE zECgpv`-52RX+`rbHspdR7B#UZ3Y?_R=O%t!ik&zfag2_NfL^e~I%Vxjt+7%uZPG!@ z{EFhPCLR!s4mT-6PxnK-x8~YJZ!fD0aQb>gX@0=fq-hdit3aDl>UkyUF`*3KE^WIu z4{DRPwynU-^fuzn6CAr1!XwUa_2&yW-3GSqt zb6Y`Uu9Rk>5ox~iOCZ+z0oB0NFEG(+x};51kMS#@Urc3S>yUJbbS@W?F$D5CG_2UIyNFKe>Sq1q{=yONwnBVTjX9PNNiZO7^y)`|c;VgoT~ zvSwHnVAcxdH8{VT%JW2G}defLKn_8rG@oG%}1p+Gr!YbJ#4=MBuSDaNd@oM&owIQCQ^mzls!a2 zp$hCBZ(I+L(YEvLy(ED@?(*5hsRr;@h_G%%9RVHYaG%gpFJ_!JB zXOQaj^B>h#30?Yap1lb;cEGc3RQzMm`P3Y8w-s@S%q94NL1o9o%Ve@a1 zXTk9_1|D7sp^y2hCV|C00013dB1+XSyNX@2`nc%Fxjd1 zRL$;DtZ|&l;T~tj2)^oD5sfvQV2?3B+f8u7VJRu`Vm_npZ>SPAB|BM9Xj%Fq!&-3y zdVDQ1qX^?An@p_qBWl5Dzruy=Ps!_EbQfs`?|^o(E{g5zwDEvVGavyJI~h_k zbLcW_i;;}XJ)=((6QGIRHv034gc{MG405m%oI)$v_a44O`nR6rh{0_=VIrbqv42?; z^-U%~q5@%2QFK$LuJJFu2}`+A_ULufq7r8Fb4oj7N)a8&7Ula|o4)+FPXOg=pGB2X zCBDYDn%~c) z9#h-!bfd@KQw|?qM(z%tloF@K{)H&3n%CN0XjpQNasLGAgPpip75ZZ^HhIhkW*1=* zq8gv|OVMq_Jw*PihoTHdh;@KpFvI~)<9lhoMyY-g6Fo)otlgoC(w;QQ%}5db42>+_ z)aGexAwin1>qDH#o?GDvxN*()r(o7nPBP%*fa>j!I!C*LUFhk|fF~F;(3Sp^wPO3% z!LlprL^H0q&6@0%Y`>hZY!JW<;5D&XAJN5H(RMp{cAs*ze}SVJU>-Z%VS?=GWzwlw zlgAv1MfjOts%Qg8da-r@5SHVP@lL=W{`^_H1nkFg2K7KQ{??01Boc|lQFsHxH^S}) SozqSL0000J4LM1@Lh-cf9Z;?+=wAW#ViQ5dgvzBw0rg2h_|`ig;>F9Kk8h*)WlaET zpr`1k@lB)gb4c_<#|jYJOAJQ{_?<~B9f>9PDor5G@ON~K&^H3_RkM_=)|cD*BWg37 zv%dBoczN+Qa&}-*Vpco*2d%tH{;i!w!jpBJy9u6ynVhT(T?`?}V{*Vu1$YPI7?SpM zW_YPFG+~i$>82L&%E4U6Y$zd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_with_long_name_0_0/00007.png b/tests/snapshots/nanos/test_register_wallet_with_long_name_0_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_with_long_name_1_0/00000.png b/tests/snapshots/nanos/test_register_wallet_with_long_name_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..60d2ec5b40b8a3bb3af521ac4ba23a478ebe6dca GIT binary patch literal 529 zcmV+s0`C2ZP)yQoWFP4@TXgmj5YqDyX^VT!di7WGx%#I| zl--o+t&6tETb-xHG>ye%NlI3P)N3NE4i#mGB`wAtyzn zV-9SlnUdN85hemtGQi?SGkcmR$uX~=J^XY@|5HCZz?Hoi{V~dv6ye8WG|Y^aAYNxq z%VLW^q&kV-G8qa`C$%BCxnkH6MiCJGDGMW)G6AwRHtS>tcOp22reQy^17_rIkYmOaNzlpi>n% z@XpT|i-E$C6QE%)%Dhe1Wu*X$@FZFj(0rfZHIF6^6DHFG6sGrxKs yzDHZVBwdE%gUnI*z6*W>Uo^bv#RfqT*mwagg}vz<#+CvA0000es!C%9 zY{oDodkrSc1g1oQ#f)L}4D%sl08b70a!LPz`VKH5*W2R2drF zy`9`;st*%=0q>%{L%>p#j0kJY&SmaYr?72F4(nb3l9}uKkNP5d8kEJU^|~4L4tC;> zEL7;>j(yl(MYy|^_-P5&Xem?xX7wBIzH+JM9Z>rc1;q%w6(`(@1>g{P5R-Ke+NQkt z^kF}vu}Y_^LLQFV&-bY83T$A@G_2RkMF8Y+&=u*GE!8&2Eh>+ZcG!tS$|Vm50ylR? zK%y3;qB$M&j&+G8eCEguly@Of-_O;8RLEH^Ejq?HWkPH1A)(B535;FM`&X5g8<2^S~~S3L_h;f=^-fBUh<%UmcF3Qxr^RJZ!lO~;()00000NkvXXu0mjf D?w<&p literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_with_long_name_1_0/00003.png b/tests/snapshots/nanos/test_register_wallet_with_long_name_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..7ad4e9e81c91fc9889ebb1a03355a9cc68c6b5fd GIT binary patch literal 570 zcmV-A0>%A_P)^k{C8QZZmA1C1evi#BBMSGWkeSG{_?9pyMP@ZUQimJCnr>zrU2_*XdtxiNY z1Q?$hvWro3@J?)xLIne_gM5H$m{fU+k5WBGXCfOz>gXnJn6?0=#uJkszz5iO-6h@``|T38mGF1csM09o}+6Zbei zml0bW6X3k%rd*3@hn-ma zATz-`-PBO_NrdCwr#^?V@$Ugq1|bM%O!rM4)6bs}xNt#4_JH;X2S~5+W{h|rO`Z10 z*x69ehsIEo9+Nv9AGRm3{w_9$puz|XA7oPSkA1&TC=}j~AEge)7w9mc9{>OV07*qo IM6N<$g0W)-O8@`> literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_with_long_name_1_0/00004.png b/tests/snapshots/nanos/test_register_wallet_with_long_name_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..afc3b3b90890e115eb13fd64d8dd3a219bac0be3 GIT binary patch literal 534 zcmV+x0_pvUP)x6-aR3K(02(_J80@MQitJ{oy0IvF-`Sw=$vvj;8mF4NaP(9=B>jm8|< zjJQ6yCI#(5?N+SF&1u(0fA9ov$`Zr{wCV;z5y0oT-|%wmdjpvMR}mdQ`mhTxKhY(K zkHOQT*y2yR`|^CntI{=8E5&WQ;&*TK;D#(F8UZI)90WErP3%&|Bc0O8XiBg@q6`gg zZ6|lR>SN+uz`Lk+#9r!>k+8*VTjn-(inc9_!@2=LGIQtt(+)+CLg<|8ubZhc*vTEM zP@(bJ$%jy!JV@Eke>`>59saN$Q4HjTxN>hxagGZMTdGWEcnlpr$ym{HN|{V5NDA2< z`$T^ccd`%yR!kcX=*l3d7#foM{`*fp7qL2U)so(ME3^ zt$U6c^Ae~tA^@zUXJ6d>@h@g;*ouy>QQ~;4-I@P4OY?Dr#0QyT2A(Bo#fDiFMN#bI Y4e;8}J>&i?_5c6?07*qoM6N<$g6Z%2)Bpeg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_with_long_name_1_0/00005.png b/tests/snapshots/nanos/test_register_wallet_with_long_name_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..961297c4ef5de2ebadf4aecbb358f9b4a2b51903 GIT binary patch literal 516 zcmV+f0{i`mP)OYXyD*F?KV2)9K`ZLVyruw=GGMBuTWKU;MFSp8Aj8a@aF2 zMujB{>$^TJPHNrblYnW#{Ij1K+W<_p8}n%$@T+M*c(eASy(^v8Lrkj6e=tvTkyYw5 zU@>fcFeOFpLFtqoNYzQlN_%jEZ-46~5Rir|_%KO-Q|AsaWi3j3x-$DAzRlM$>kT#D z5=86Fe|w8H_B7RL1+F*X0!RM3i=V9|>DpIkEQN0eFUW9xWM^OnaHXzw;p*J|2H;Ox zV@$X31_UxN7w}h9+5}8BNr_wI=(EH=YRGI$io?7BAeq?Qf2XQ?JB)MEUpJF6Sjin# zD3LIHhuLK%uJ3qB*S)S;9pPRDSS3s9z!hn+OP8MAhJ<;?gICa+fp~}}RM^F{1Auot z-T8HX7}yD`b@a1CsY~*gJ~K?h8yBHy(BuNsM?=Smvz)$<9n*w^~ z&4e*f*c!xo3DWjG?*zC7{&zn!kXNA8aWS8xH~jQ;Jmi(i@sO?F*Y=j7uFwC#kGN=d z8WV6aW_}o26zvFlU(FkJciv}GkJ$xY{@Md*CHNS!e$lQSAmv&}J)@f2Xs(~l(V&T@ zAf0FK7R8Jnk)2F%>olPVsNk8et=(r6`R5YmmhdFe2&kNK5ZKT>v(uG`bb+w(oM1hs zjSlYCUR!phjqDnjf<;Eosa~xE z@3ixkLb4>e%3%*VkTx7;m|40f?{9-F~H^`L}hLQNX#cOV;q#Y!4=)w zHRz5kIr{j8oM6KQXzAeP9^Xq&8;`k{c$VGmusD0k2ouFP6Hf|L@R}~|E=Gu{@>VCM zxd|8=EOKz~JO>-#QjnQj&w{hK4)QF{MP$Y|eKOv3@lvmG&8eA@r^VduXOg{ykGwnJ rG_2kOk`pd{4iyYIRL`vMg3D;1BrI<4BSuNfIyrFFD;IhyL244tvI{ zwUtF|xPq2VEXez$0Huaog%7-RnAIQ+PRA$ZI#0S`aW>Ywqo+F0dX@IocY4mo#RK z8F(iQrT3GTaZ0x=J@j?#$;53t-lzLz*0j^nm&AjC zlW>&K-k*Zc(t{?M=^LYUH#k@x&6EdcY4ez^sn&dgmEL|BJRPK!h6c&0QB;iwpwDF^ z^xlSU$NcOg679!dyW)*uE}r9yuqRw#4{)Y0<6;k>dqL*l>;qxRsnzP#tJm7}EmN2H n$i7}I-4P~9k|arzBwxG%T|4=Gb8Af500000NkvXXu0mjf-SF!f literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_with_long_name_1_0/00008.png b/tests/snapshots/nanos/test_register_wallet_with_long_name_1_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_with_long_name_2_0/00000.png b/tests/snapshots/nanos/test_register_wallet_with_long_name_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f66be86c1b5d74444c6b542862ac2d58261ef59f GIT binary patch literal 531 zcmV+u0_^>XP)L5nd zhnWVc^nf}W_nl;eqI%k>D^e_BPsM!&fQP?2%_iA{o{8W zN;fby7Xcl8FZ8$iY)8=S44p+=I7vDJIwKA&R~#K{gs!5b&Uka6z?F6h4e>64z4q^j z;tnMVaLHLhSiXJW;f&$9kPoSF4cxj0U-3n>pYq9hY7I_O-am=M`{?6@K4*@2SNU_A z_v><`;zYg=orUfhpSzU$$-*GA)D-nfj^w84Lu`~}gS|7rmWV-frHlirff)*HQF1g^ zg=Lw05~TN}>MSi5InzEf*Vz_;%@UC}sn;&G7Clvg>R&9ZOq!`4L`kq)Yw=P9>+S&F zB;L~h0{;WB?|@97L@8oLF>cUnL3WZQ6nG7`=nlw}o5iAHT!4H5%e%WjL0WHg0odyl z?Lkzkq?JqMPDaCreB(7p?|{JBVw9uL0`_q)RV8d0Y~GtizXP)o1 zo3!^q8e^Bo&V@ZxEmQ~U^%A3{iw|G7A6jo}RoN30N3dup?xgxH&V8Ke5X9rm`TM#C zC7>#wU@k73U{*7oo!kXkVEhcTSlciB8A^ctB zOQ?3=sKma+sQjMC%T)#1zE~hmM%e*rD^VF$&LdcIEI5N`e2(F?B`FWd8(XqoE({N` zp1bwFNy~YLT#RE(%35}nkr9P$FJXIp2!9-k)-7|EZcS1@_$YX2@!{PQ)h8$w;e&We zyB2m!_r!uUgQ^V1VmUKg4WORbZm~W&&y#84yqYBzyPxloh@0tDM zI$lZ}sM;3+0qzT-ms=ZyW@YFMa^X(8BOnmtpy7$LyP-TqZ8_u1kp-^yr$B~y7yzIB zUS>E2kx7z(Dmg=FmT#X}7&*zpAz~L?7Yh!64W8ut8{D(o0rteVX)%5Vce3;rax$#% zu=f8%HWpKV{u6d-T9SWFu#1m}@?jUzs=0PjK-*SJ{fDb1jjD+8j!{G?1*kW1kh!k~mGiVg)?_`xeZot4zr=5mhHKS}R%$3Z(^0 z&BR_;iF(f~#SBS4qI$-SZZ&5_F|Jkv_^^*F@a|CKv{QcoWRHwH7z68JG&zv%4an9Y zZv!lg9_F$lDM=p4Led4TfTym_g-igP)O};^2W%6dL`6{)MG@om)SoBh^gr3P4ON$H zY%R>Zou+a-)`eJNuML2j6T^ofUvsa0v>p%M((JaZXYZ=%&%`vPDvb`a57WOsqepY87$oJCQZwvZTy>;0V z5q;J@%T!sKXF9bO0McS0d&vz<%J)2qV|L$o{+D1m0Mt3tmn3L6?w*_rOC9*-V1?_? zwJda&SZSe3PeVtba|j5@Nnuew`1)Yj8BV6i+^{6o5wHN{ewNo4pAb`txsA1d#QqS|clWFifn_}e zPyyf_r#j5Pt#pQ2`_Z8pL*X(KbNdM2@{o}KOC3C~r(#ePMNwSE4@Fg}{Zh@i$^ZZW M07*qoM6N<$f>f3BqyPW_ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_with_long_name_2_0/00004.png b/tests/snapshots/nanos/test_register_wallet_with_long_name_2_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..7122760313d0a58be786cbcda95c3cfdaa172315 GIT binary patch literal 547 zcmV+;0^I$HP)#-jk?*p;Ht zqs(v$L8fpCFv&^5Enh$IrspIJQ^YPv7YjB(>O9H!H^{TwL99tF(_(55o@8kjDggf% z`6Qa<1N(UPdW*T}C$a=i4kuhFD{%q^O$4p*dGuBkKA4h2LI+lT4c62o%j8N)xo1{R zxYb_SItukgtZkh&M>(9)D&G+n!GdV2QMwJ_4C8L0xHRMoJ-ogEaDA1h5NgzsSuYD-}QD1CuzzJ8@8%XE49i`d;P$tvArN`l#mBop8gK8xWFe>1SiVaXE zS<_+9Ub6VX8(y4K|bo@y^c>wFdF>9i!WE++7hfEOw-Gp6kdH)CAi|$1_t^+@a;;B=<*^4zQf&z)86a+yK1kL=s@c#}u<&SqQgIEOh zfr_nE5^LiZB8lB{0B}*>J7NdEyJvpZzHa*D;ks$B)GViDh*(7dGQL~|E&-SOd%*nA zAU?pZr_5L1v|mbZDplE&6I-Zic->;`KL4TZ?YL7A&ok%8 zbxukLsOpP=2i+H*UftRpG%G`AkPAC;N5DglgN|36-3|FEO3NAF93*hF{45s63h9N4 z^)tgM6q(8;ph?aUy5-v^Rz^;;aERCi>0-eFXoDyD{sDRRIKZC7HZ3O3U?)qnP(axB z9=3n&C_YyHgw5@jA^kYlR0N5N`w1I{Uxzo0m08&cBN)ZkMERbupqE>V#A!Nqx;?p0PkrD(9rRsXDDj0IW6k z6(HdN{Uyww@S|#4t~%J5#NjFS?a8?~zc?o`L5%}a(EsMzt$>U@+bp2#6Eg^c;BemE WBDLYe__5Xi0000h*f;!1wUXkL|}(jwBvW`L*?DIVB_10tbYAX+<@mn)`jI z^}!S-BF5E_$H9dov^$6m0Z%}6GV(Px?T0d&N>{F_i59FL)>);l-Oh9gs_V@C^EwwL z;41#=$6N*^a4e*+-PP{Da-BkWlIaXc^!Ng^ zj^gPrMp}cU4-DnR)6$C-T-IOdb{4UuD$KVn88MSKK5x_lXevP*POS)rv9iFVMV3rK z-HLP*rcRNX(A+9E9>Ag1A|OV}U~Np}a}k_Hk8bGwDcfgfuQj`up$zD@JX`sz7L74; zssn2M0e#6gB literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_register_wallet_with_long_name_2_0/00007.png b/tests/snapshots/nanos/test_register_wallet_with_long_name_2_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..d18c5c464a319415ed6d577d72f2b55cd9f2e529 GIT binary patch literal 462 zcmV;<0WtoGP)d`N8!iF?p(Tunl}|iVm_>FZQ4up4Z#zcvOjNZ>Kv2@jSDC zT&JY8!BqPq;70d_yH#Ip3Yy5!8RWv9bVtBViUY?MSMP@0iY0ZGI|m8eBtMB2V}-Pe z6Z12}DHNH?A)ral5Zv_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_input_changed_0_0/00000.png b/tests/snapshots/nanos/test_sighash_all_anyone_input_changed_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_input_changed_0_0/00002.png b/tests/snapshots/nanos/test_sighash_all_anyone_input_changed_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrYJfRP4$go3_M{L^5kFSq)d-? zW>whQH!y1!XdPjrQOQ*fDl-WRa@{EKL<1Q#N7oXIwJPEh2 zi(`@x*lj=0J4Ig^fXcrz@5c#)%$(WJhLb(-^kJTY;z$o5EuWtstO3p#)_~ETL8fE* t-6l`%v&bsdQv;5)p@a}Z2q6Rj@B*Xb$w5F?002ovPDHLkV1mu4lXn0B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_input_changed_1_0/00002.png b/tests/snapshots/nanos/test_sighash_all_anyone_input_changed_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_input_changed_1_0/00003.png b/tests/snapshots/nanos/test_sighash_all_anyone_input_changed_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_input_changed_1_0/00004.png b/tests/snapshots/nanos/test_sighash_all_anyone_input_changed_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_input_changed_1_0/00005.png b/tests/snapshots/nanos/test_sighash_all_anyone_input_changed_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)1gB9mjDW2qcsw(gts9{dm^{@p^|KAtB)K|6bQ!PBO`$v}c1@8}D z9vv=D@(gn?@Ni6;CBN;a3UgAn8sj-TVHJ*gMy=e~pX&_mZgKe>i$7Mo!Bg5xo0Bi` zLi5`a8|EJl@?az!5kGnP*Y?{1WucLBF*gIvu4ioWRoSbmq`76AC2w@~oyfzLNoPNL zZryMxGm7PFZm*WA(9|byCx1|R!c=+7sLwb3x3gySccHVc|4*2(t7si7y}wDiY2NB7 zG0{yrv+dY<>&0am4j(_DcAxo;LTq=~T*kE%g|40W!m)7s5|xMrpuk{Q^N1~+bA8Ou ROKRO9uBWS?%Q~loCIHR|g3|y1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_input_changed_1_1/00001.png b/tests/snapshots/nanos/test_sighash_all_anyone_input_changed_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_output_changed_0_0/00000.png b/tests/snapshots/nanos/test_sighash_all_anyone_output_changed_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_output_changed_0_0/00002.png b/tests/snapshots/nanos/test_sighash_all_anyone_output_changed_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrYJfRP4$go3_M{L^5kFSq)d-? zW>whQH!y1!XdPjrQOQ*fDl-WRa@{EKL<1Q#N7oXIwJPEh2 zi(`@x*lj=0J4Ig^fXcrz@5c#)%$(WJhLb(-^kJTY;z$o5EuWtstO3p#)_~ETL8fE* t-6l`%v&bsdQv;5)p@a}Z2q6Rj@B*Xb$w5F?002ovPDHLkV1mu4lXn0B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_output_changed_1_0/00002.png b/tests/snapshots/nanos/test_sighash_all_anyone_output_changed_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_output_changed_1_0/00003.png b/tests/snapshots/nanos/test_sighash_all_anyone_output_changed_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_output_changed_1_0/00004.png b/tests/snapshots/nanos/test_sighash_all_anyone_output_changed_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_output_changed_1_0/00005.png b/tests/snapshots/nanos/test_sighash_all_anyone_output_changed_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)jv*Cu-p)A9*J8lo`Zndy zfBtz#cPMjhIq1du)>hlKm*Z267*OHnphcnvAO6ewot9d1e2W45p6>iDOnWDUYbeZc zxyN8NQP4r?v}2x}5My=rCi$4X?J7V1${O6d^&`i~?jje@vNb1bKTI$SNfQ!Dyx{z< zU=H&S1vxMhim;!w_^a)$fYRuj^J1@NZo8Jfs&>hqCrX(m+k5#p8W&ikU)y81#%!C_ z@-oNTZspV7wiUls=FFRT+QM|s=krUm?j_Iq-Fs76_P~_e>KD%BDcELvt$Mm}`t9I= zw9D5eBzLS}Ja{L9`5c>0?xa-CiPQI}OncI2s}1xK!+}(@EcvBHoS!v*fViHnelF{r G5}E+iUV*^? literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_output_changed_1_1/00001.png b/tests/snapshots/nanos/test_sighash_all_anyone_output_changed_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_sign_0_0/00000.png b/tests/snapshots/nanos/test_sighash_all_anyone_sign_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_sign_0_0/00002.png b/tests/snapshots/nanos/test_sighash_all_anyone_sign_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrYJfRP4$go3_M{L^5kFSq)d-? zW>whQH!y1!XdPjrQOQ*fDl-WRa@{EKL<1Q#N7oXIwJPEh2 zi(`@x*lj=0J4Ig^fXcrz@5c#)%$(WJhLb(-^kJTY;z$o5EuWtstO3p#)_~ETL8fE* t-6l`%v&bsdQv;5)p@a}Z2q6Rj@B*Xb$w5F?002ovPDHLkV1mu4lXn0B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_sign_1_0/00002.png b/tests/snapshots/nanos/test_sighash_all_anyone_sign_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_sign_1_0/00003.png b/tests/snapshots/nanos/test_sighash_all_anyone_sign_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_sign_1_0/00004.png b/tests/snapshots/nanos/test_sighash_all_anyone_sign_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_sign_1_0/00005.png b/tests/snapshots/nanos/test_sighash_all_anyone_sign_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)1gB9mjDW2qcsw(gts9{dm^{@p^|KAtB)K|6bQ!PBO`$v}c1@8}D z9vv=D@(gn?@Ni6;CBN;a3UgAn8sj-TVHJ*gMy=e~pX&_mZgKe>i$7Mo!Bg5xo0Bi` zLi5`a8|EJl@?az!5kGnP*Y?{1WucLBF*gIvu4ioWRoSbmq`76AC2w@~oyfzLNoPNL zZryMxGm7PFZm*WA(9|byCx1|R!c=+7sLwb3x3gySccHVc|4*2(t7si7y}wDiY2NB7 zG0{yrv+dY<>&0am4j(_DcAxo;LTq=~T*kE%g|40W!m)7s5|xMrpuk{Q^N1~+bA8Ou ROKRO9uBWS?%Q~loCIHR|g3|y1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_anyone_sign_1_1/00001.png b/tests/snapshots/nanos/test_sighash_all_anyone_sign_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_input_modified_0_0/00000.png b/tests/snapshots/nanos/test_sighash_all_input_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrYJfRP4$go3_M{L^5kFSq)d-? zW>whQH!y1!XdPjrQOQ*fDl-WRa@{EKL<1Q#N7oXIwJPEh2 zi(`@x*lj=0J4Ig^fXcrz@5c#)%$(WJhLb(-^kJTY;z$o5EuWtstO3p#)_~ETL8fE* t-6l`%v&bsdQv;5)p@a}Z2q6Rj@B*Xb$w5F?002ovPDHLkV1mu4lXn0B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_input_modified_0_0/00002.png b/tests/snapshots/nanos/test_sighash_all_input_modified_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_input_modified_0_0/00003.png b/tests/snapshots/nanos/test_sighash_all_input_modified_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_input_modified_0_0/00004.png b/tests/snapshots/nanos/test_sighash_all_input_modified_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_input_modified_0_0/00005.png b/tests/snapshots/nanos/test_sighash_all_input_modified_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)1gB9mjDW2qcsw(gts9{dm^{@p^|KAtB)K|6bQ!PBO`$v}c1@8}D z9vv=D@(gn?@Ni6;CBN;a3UgAn8sj-TVHJ*gMy=e~pX&_mZgKe>i$7Mo!Bg5xo0Bi` zLi5`a8|EJl@?az!5kGnP*Y?{1WucLBF*gIvu4ioWRoSbmq`76AC2w@~oyfzLNoPNL zZryMxGm7PFZm*WA(9|byCx1|R!c=+7sLwb3x3gySccHVc|4*2(t7si7y}wDiY2NB7 zG0{yrv+dY<>&0am4j(_DcAxo;LTq=~T*kE%g|40W!m)7s5|xMrpuk{Q^N1~+bA8Ou ROKRO9uBWS?%Q~loCIHR|g3|y1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_input_modified_0_1/00001.png b/tests/snapshots/nanos/test_sighash_all_input_modified_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_output_modified_0_0/00000.png b/tests/snapshots/nanos/test_sighash_all_output_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrYJfRP4$go3_M{L^5kFSq)d-? zW>whQH!y1!XdPjrQOQ*fDl-WRa@{EKL<1Q#N7oXIwJPEh2 zi(`@x*lj=0J4Ig^fXcrz@5c#)%$(WJhLb(-^kJTY;z$o5EuWtstO3p#)_~ETL8fE* t-6l`%v&bsdQv;5)p@a}Z2q6Rj@B*Xb$w5F?002ovPDHLkV1mu4lXn0B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_output_modified_0_0/00002.png b/tests/snapshots/nanos/test_sighash_all_output_modified_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_output_modified_0_0/00003.png b/tests/snapshots/nanos/test_sighash_all_output_modified_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_output_modified_0_0/00004.png b/tests/snapshots/nanos/test_sighash_all_output_modified_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_output_modified_0_0/00005.png b/tests/snapshots/nanos/test_sighash_all_output_modified_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)jv*Cu-p)A9*J8lo`Zndy zfBtz#cPMjhIq1du)>hlKm*Z267*OHnphcnvAO6ewot9d1e2W45p6>iDOnWDUYbeZc zxyN8NQP4r?v}2x}5My=rCi$4X?J7V1${O6d^&`i~?jje@vNb1bKTI$SNfQ!Dyx{z< zU=H&S1vxMhim;!w_^a)$fYRuj^J1@NZo8Jfs&>hqCrX(m+k5#p8W&ikU)y81#%!C_ z@-oNTZspV7wiUls=FFRT+QM|s=krUm?j_Iq-Fs76_P~_e>KD%BDcELvt$Mm}`t9I= zw9D5eBzLS}Ja{L9`5c>0?xa-CiPQI}OncI2s}1xK!+}(@EcvBHoS!v*fViHnelF{r G5}E+iUV*^? literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_output_modified_0_1/00001.png b/tests/snapshots/nanos/test_sighash_all_output_modified_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_sign_psbt_0_0/00000.png b/tests/snapshots/nanos/test_sighash_all_sign_psbt_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrYJfRP4$go3_M{L^5kFSq)d-? zW>whQH!y1!XdPjrQOQ*fDl-WRa@{EKL<1Q#N7oXIwJPEh2 zi(`@x*lj=0J4Ig^fXcrz@5c#)%$(WJhLb(-^kJTY;z$o5EuWtstO3p#)_~ETL8fE* t-6l`%v&bsdQv;5)p@a}Z2q6Rj@B*Xb$w5F?002ovPDHLkV1mu4lXn0B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_sign_psbt_0_0/00002.png b/tests/snapshots/nanos/test_sighash_all_sign_psbt_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_sign_psbt_0_0/00003.png b/tests/snapshots/nanos/test_sighash_all_sign_psbt_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_sign_psbt_0_0/00004.png b/tests/snapshots/nanos/test_sighash_all_sign_psbt_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_sign_psbt_0_0/00005.png b/tests/snapshots/nanos/test_sighash_all_sign_psbt_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)1gB9mjDW2qcsw(gts9{dm^{@p^|KAtB)K|6bQ!PBO`$v}c1@8}D z9vv=D@(gn?@Ni6;CBN;a3UgAn8sj-TVHJ*gMy=e~pX&_mZgKe>i$7Mo!Bg5xo0Bi` zLi5`a8|EJl@?az!5kGnP*Y?{1WucLBF*gIvu4ioWRoSbmq`76AC2w@~oyfzLNoPNL zZryMxGm7PFZm*WA(9|byCx1|R!c=+7sLwb3x3gySccHVc|4*2(t7si7y}wDiY2NB7 zG0{yrv+dY<>&0am4j(_DcAxo;LTq=~T*kE%g|40W!m)7s5|xMrpuk{Q^N1~+bA8Ou ROKRO9uBWS?%Q~loCIHR|g3|y1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_all_sign_psbt_0_1/00001.png b/tests/snapshots/nanos/test_sighash_all_sign_psbt_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_input_changed_0_0/00000.png b/tests/snapshots/nanos/test_sighash_none_anyone_input_changed_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_input_changed_0_0/00002.png b/tests/snapshots/nanos/test_sighash_none_anyone_input_changed_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrYJfRP4$go3_M{L^5kFSq)d-? zW>whQH!y1!XdPjrQOQ*fDl-WRa@{EKL<1Q#N7oXIwJPEh2 zi(`@x*lj=0J4Ig^fXcrz@5c#)%$(WJhLb(-^kJTY;z$o5EuWtstO3p#)_~ETL8fE* t-6l`%v&bsdQv;5)p@a}Z2q6Rj@B*Xb$w5F?002ovPDHLkV1mu4lXn0B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_input_changed_1_0/00002.png b/tests/snapshots/nanos/test_sighash_none_anyone_input_changed_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_input_changed_1_0/00003.png b/tests/snapshots/nanos/test_sighash_none_anyone_input_changed_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_input_changed_1_0/00004.png b/tests/snapshots/nanos/test_sighash_none_anyone_input_changed_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_input_changed_1_0/00005.png b/tests/snapshots/nanos/test_sighash_none_anyone_input_changed_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)1gB9mjDW2qcsw(gts9{dm^{@p^|KAtB)K|6bQ!PBO`$v}c1@8}D z9vv=D@(gn?@Ni6;CBN;a3UgAn8sj-TVHJ*gMy=e~pX&_mZgKe>i$7Mo!Bg5xo0Bi` zLi5`a8|EJl@?az!5kGnP*Y?{1WucLBF*gIvu4ioWRoSbmq`76AC2w@~oyfzLNoPNL zZryMxGm7PFZm*WA(9|byCx1|R!c=+7sLwb3x3gySccHVc|4*2(t7si7y}wDiY2NB7 zG0{yrv+dY<>&0am4j(_DcAxo;LTq=~T*kE%g|40W!m)7s5|xMrpuk{Q^N1~+bA8Ou ROKRO9uBWS?%Q~loCIHR|g3|y1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_input_changed_1_1/00001.png b/tests/snapshots/nanos/test_sighash_none_anyone_input_changed_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_output_changed_0_0/00000.png b/tests/snapshots/nanos/test_sighash_none_anyone_output_changed_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_output_changed_0_0/00002.png b/tests/snapshots/nanos/test_sighash_none_anyone_output_changed_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrYJfRP4$go3_M{L^5kFSq)d-? zW>whQH!y1!XdPjrQOQ*fDl-WRa@{EKL<1Q#N7oXIwJPEh2 zi(`@x*lj=0J4Ig^fXcrz@5c#)%$(WJhLb(-^kJTY;z$o5EuWtstO3p#)_~ETL8fE* t-6l`%v&bsdQv;5)p@a}Z2q6Rj@B*Xb$w5F?002ovPDHLkV1mu4lXn0B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_output_changed_1_0/00002.png b/tests/snapshots/nanos/test_sighash_none_anyone_output_changed_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_output_changed_1_0/00003.png b/tests/snapshots/nanos/test_sighash_none_anyone_output_changed_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_output_changed_1_0/00004.png b/tests/snapshots/nanos/test_sighash_none_anyone_output_changed_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_output_changed_1_0/00005.png b/tests/snapshots/nanos/test_sighash_none_anyone_output_changed_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)jv*Cu-p)A9*J8lo`Zndy zfBtz#cPMjhIq1du)>hlKm*Z267*OHnphcnvAO6ewot9d1e2W45p6>iDOnWDUYbeZc zxyN8NQP4r?v}2x}5My=rCi$4X?J7V1${O6d^&`i~?jje@vNb1bKTI$SNfQ!Dyx{z< zU=H&S1vxMhim;!w_^a)$fYRuj^J1@NZo8Jfs&>hqCrX(m+k5#p8W&ikU)y81#%!C_ z@-oNTZspV7wiUls=FFRT+QM|s=krUm?j_Iq-Fs76_P~_e>KD%BDcELvt$Mm}`t9I= zw9D5eBzLS}Ja{L9`5c>0?xa-CiPQI}OncI2s}1xK!+}(@EcvBHoS!v*fViHnelF{r G5}E+iUV*^? literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_output_changed_1_1/00001.png b/tests/snapshots/nanos/test_sighash_none_anyone_output_changed_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_sign_0_0/00000.png b/tests/snapshots/nanos/test_sighash_none_anyone_sign_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_sign_0_0/00002.png b/tests/snapshots/nanos/test_sighash_none_anyone_sign_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrYJfRP4$go3_M{L^5kFSq)d-? zW>whQH!y1!XdPjrQOQ*fDl-WRa@{EKL<1Q#N7oXIwJPEh2 zi(`@x*lj=0J4Ig^fXcrz@5c#)%$(WJhLb(-^kJTY;z$o5EuWtstO3p#)_~ETL8fE* t-6l`%v&bsdQv;5)p@a}Z2q6Rj@B*Xb$w5F?002ovPDHLkV1mu4lXn0B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_sign_1_0/00002.png b/tests/snapshots/nanos/test_sighash_none_anyone_sign_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_sign_1_0/00003.png b/tests/snapshots/nanos/test_sighash_none_anyone_sign_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_sign_1_0/00004.png b/tests/snapshots/nanos/test_sighash_none_anyone_sign_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_sign_1_0/00005.png b/tests/snapshots/nanos/test_sighash_none_anyone_sign_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)1gB9mjDW2qcsw(gts9{dm^{@p^|KAtB)K|6bQ!PBO`$v}c1@8}D z9vv=D@(gn?@Ni6;CBN;a3UgAn8sj-TVHJ*gMy=e~pX&_mZgKe>i$7Mo!Bg5xo0Bi` zLi5`a8|EJl@?az!5kGnP*Y?{1WucLBF*gIvu4ioWRoSbmq`76AC2w@~oyfzLNoPNL zZryMxGm7PFZm*WA(9|byCx1|R!c=+7sLwb3x3gySccHVc|4*2(t7si7y}wDiY2NB7 zG0{yrv+dY<>&0am4j(_DcAxo;LTq=~T*kE%g|40W!m)7s5|xMrpuk{Q^N1~+bA8Ou ROKRO9uBWS?%Q~loCIHR|g3|y1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_anyone_sign_1_1/00001.png b/tests/snapshots/nanos/test_sighash_none_anyone_sign_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_input_modified_0_0/00000.png b/tests/snapshots/nanos/test_sighash_none_input_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_input_modified_0_0/00002.png b/tests/snapshots/nanos/test_sighash_none_input_modified_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrYJfRP4$go3_M{L^5kFSq)d-? zW>whQH!y1!XdPjrQOQ*fDl-WRa@{EKL<1Q#N7oXIwJPEh2 zi(`@x*lj=0J4Ig^fXcrz@5c#)%$(WJhLb(-^kJTY;z$o5EuWtstO3p#)_~ETL8fE* t-6l`%v&bsdQv;5)p@a}Z2q6Rj@B*Xb$w5F?002ovPDHLkV1mu4lXn0B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_input_modified_1_0/00002.png b/tests/snapshots/nanos/test_sighash_none_input_modified_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_input_modified_1_0/00003.png b/tests/snapshots/nanos/test_sighash_none_input_modified_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_input_modified_1_0/00004.png b/tests/snapshots/nanos/test_sighash_none_input_modified_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_input_modified_1_0/00005.png b/tests/snapshots/nanos/test_sighash_none_input_modified_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)1gB9mjDW2qcsw(gts9{dm^{@p^|KAtB)K|6bQ!PBO`$v}c1@8}D z9vv=D@(gn?@Ni6;CBN;a3UgAn8sj-TVHJ*gMy=e~pX&_mZgKe>i$7Mo!Bg5xo0Bi` zLi5`a8|EJl@?az!5kGnP*Y?{1WucLBF*gIvu4ioWRoSbmq`76AC2w@~oyfzLNoPNL zZryMxGm7PFZm*WA(9|byCx1|R!c=+7sLwb3x3gySccHVc|4*2(t7si7y}wDiY2NB7 zG0{yrv+dY<>&0am4j(_DcAxo;LTq=~T*kE%g|40W!m)7s5|xMrpuk{Q^N1~+bA8Ou ROKRO9uBWS?%Q~loCIHR|g3|y1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_input_modified_1_1/00001.png b/tests/snapshots/nanos/test_sighash_none_input_modified_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_output_modified_0_0/00000.png b/tests/snapshots/nanos/test_sighash_none_output_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_output_modified_0_0/00002.png b/tests/snapshots/nanos/test_sighash_none_output_modified_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrYJfRP4$go3_M{L^5kFSq)d-? zW>whQH!y1!XdPjrQOQ*fDl-WRa@{EKL<1Q#N7oXIwJPEh2 zi(`@x*lj=0J4Ig^fXcrz@5c#)%$(WJhLb(-^kJTY;z$o5EuWtstO3p#)_~ETL8fE* t-6l`%v&bsdQv;5)p@a}Z2q6Rj@B*Xb$w5F?002ovPDHLkV1mu4lXn0B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_output_modified_1_0/00002.png b/tests/snapshots/nanos/test_sighash_none_output_modified_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_output_modified_1_0/00003.png b/tests/snapshots/nanos/test_sighash_none_output_modified_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_output_modified_1_0/00004.png b/tests/snapshots/nanos/test_sighash_none_output_modified_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_output_modified_1_0/00005.png b/tests/snapshots/nanos/test_sighash_none_output_modified_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)jv*Cu-p)A9*J8lo`Zndy zfBtz#cPMjhIq1du)>hlKm*Z267*OHnphcnvAO6ewot9d1e2W45p6>iDOnWDUYbeZc zxyN8NQP4r?v}2x}5My=rCi$4X?J7V1${O6d^&`i~?jje@vNb1bKTI$SNfQ!Dyx{z< zU=H&S1vxMhim;!w_^a)$fYRuj^J1@NZo8Jfs&>hqCrX(m+k5#p8W&ikU)y81#%!C_ z@-oNTZspV7wiUls=FFRT+QM|s=krUm?j_Iq-Fs76_P~_e>KD%BDcELvt$Mm}`t9I= zw9D5eBzLS}Ja{L9`5c>0?xa-CiPQI}OncI2s}1xK!+}(@EcvBHoS!v*fViHnelF{r G5}E+iUV*^? literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_output_modified_1_1/00001.png b/tests/snapshots/nanos/test_sighash_none_output_modified_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_sign_psbt_0_0/00000.png b/tests/snapshots/nanos/test_sighash_none_sign_psbt_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_sign_psbt_0_0/00002.png b/tests/snapshots/nanos/test_sighash_none_sign_psbt_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrYJfRP4$go3_M{L^5kFSq)d-? zW>whQH!y1!XdPjrQOQ*fDl-WRa@{EKL<1Q#N7oXIwJPEh2 zi(`@x*lj=0J4Ig^fXcrz@5c#)%$(WJhLb(-^kJTY;z$o5EuWtstO3p#)_~ETL8fE* t-6l`%v&bsdQv;5)p@a}Z2q6Rj@B*Xb$w5F?002ovPDHLkV1mu4lXn0B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_sign_psbt_1_0/00002.png b/tests/snapshots/nanos/test_sighash_none_sign_psbt_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_sign_psbt_1_0/00003.png b/tests/snapshots/nanos/test_sighash_none_sign_psbt_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_sign_psbt_1_0/00004.png b/tests/snapshots/nanos/test_sighash_none_sign_psbt_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_sign_psbt_1_0/00005.png b/tests/snapshots/nanos/test_sighash_none_sign_psbt_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)1gB9mjDW2qcsw(gts9{dm^{@p^|KAtB)K|6bQ!PBO`$v}c1@8}D z9vv=D@(gn?@Ni6;CBN;a3UgAn8sj-TVHJ*gMy=e~pX&_mZgKe>i$7Mo!Bg5xo0Bi` zLi5`a8|EJl@?az!5kGnP*Y?{1WucLBF*gIvu4ioWRoSbmq`76AC2w@~oyfzLNoPNL zZryMxGm7PFZm*WA(9|byCx1|R!c=+7sLwb3x3gySccHVc|4*2(t7si7y}wDiY2NB7 zG0{yrv+dY<>&0am4j(_DcAxo;LTq=~T*kE%g|40W!m)7s5|xMrpuk{Q^N1~+bA8Ou ROKRO9uBWS?%Q~loCIHR|g3|y1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_none_sign_psbt_1_1/00001.png b/tests/snapshots/nanos/test_sighash_none_sign_psbt_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash1_0_0/00000.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxr1c->OR=(165GDmB)BPZf0W!1a zAbv79)u;+UX=Fp?pfszE z%AANe-%&eKU&KnUmothdnJwO)78@GaqLYfZB_En$R%h)u;W#s0KxRYKi@RbjNwg&z z)sfn&-4@&jYRxc=p|2Fdd6nc1kG0a^!*q?}4o1=?n@E=PvD#4|s=feJnG_E(Qv!s% zEkmnPq0M;!-PO<`RsJ4;>MKRSSMk#S0l@9_^dckqMUAK|G9zgY)?7j7H%IO5y&Oya jka3jZ0dP1Rj{l1fuT69qz%l=w00000NkvXXu0mjfvI*pD literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash1_0_0/00003.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9f3ae167e403ba80cf7a815b469b9c724f522fbf GIT binary patch literal 499 zcmV_)fK~!(;}_sJx&sxX-b=}{cK=Ndqy<#(2MXDO*^S9)0a|lEenO=a z5$)TtAD7i(GSY)v)<7E)yVpu0xy1!JZX%|d;(5v%Q%i$aY6FP303uq}?Mw_N_oPlV00%O9U zc@GLf+8HzlBeW+?d!}i76PEdOoGi2Tt#)z##d3B%zdyFo{PER9tx zSN>vf>ewPg^Dw>IcTu;*riX{V2S~*gZwtI9Yx^L6uKbo{oD0Tu9y9!=C#;^I?CiCl zvHf^hz}eP}{zq~SkU;aM{4h-g(Z2v)uAmym*@a-I>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)HQzLMeQ5~bi5Io|F0Q!FC+lAa`7;w5ita|*5I zoLIBJQ_YNYss=#~528x<70JilAz$x=t4PJB=1fU#7$kJmwFh{pyf>OvqC04^s&hQ04qp=q!2)F<$&7Q@ndA3Lio}sNjVs`0ssI20QB(y Xe5b8e;N>RI00000NkvXXu0mjf=#GlF literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash1_1_0/00001.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash2_0_0/00000.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash2_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash2_0_0/00002.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash2_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxr1c->OR=(165GDmB)BPZf0W!1a zAbv79)u;+UX=Fp?pfszE z%AANe-%&eKU&KnUmothdnJwO)78@GaqLYfZB_En$R%h)u;W#s0KxRYKi@RbjNwg&z z)sfn&-4@&jYRxc=p|2Fdd6nc1kG0a^!*q?}4o1=?n@E=PvD#4|s=feJnG_E(Qv!s% zEkmnPq0M;!-PO<`RsJ4;>MKRSSMk#S0l@9_^dckqMUAK|G9zgY)?7j7H%IO5y&Oya jka3jZ0dP1Rj{l1fuT69qz%l=w00000NkvXXu0mjfvI*pD literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash2_1_0/00003.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash2_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9f3ae167e403ba80cf7a815b469b9c724f522fbf GIT binary patch literal 499 zcmV_)fK~!(;}_sJx&sxX-b=}{cK=Ndqy<#(2MXDO*^S9)0a|lEenO=a z5$)TtAD7i(GSY)v)<7E)yVpu0xy1!JZX%|d;(5v%Q%i$aY6FP303uq}?Mw_N_oPlV00%O9U zc@GLf+8HzlBeW+?d!}i76PEdOoGi2Tt#)z##d3B%zdyFo{PER9tx zSN>vf>ewPg^Dw>IcTu;*riX{V2S~*gZwtI9Yx^L6uKbo{oD0Tu9y9!=C#;^I?CiCl zvHf^hz}eP}{zq~SkU;aM{4h-g(Z2v)uAmym*@a-I>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)HQzLMeQ5~bi5Io|F0Q!FC+lAa`7;w5ita|*5I zoLIBJQ_YNYss=#~528x<70JilAz$x=t4PJB=1fU#7$kJmwFh{pyf>OvqC04^s&hQ04qp=q!2)F<$&7Q@ndA3Lio}sNjVs`0ssI20QB(y Xe5b8e;N>RI00000NkvXXu0mjf=#GlF literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash2_2_0/00001.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash2_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash3_0_0/00000.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash3_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash3_0_0/00002.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash3_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxr1c->OR=(165GDmB)BPZf0W!1a zAbv79)u;+UX=Fp?pfszE z%AANe-%&eKU&KnUmothdnJwO)78@GaqLYfZB_En$R%h)u;W#s0KxRYKi@RbjNwg&z z)sfn&-4@&jYRxc=p|2Fdd6nc1kG0a^!*q?}4o1=?n@E=PvD#4|s=feJnG_E(Qv!s% zEkmnPq0M;!-PO<`RsJ4;>MKRSSMk#S0l@9_^dckqMUAK|G9zgY)?7j7H%IO5y&Oya jka3jZ0dP1Rj{l1fuT69qz%l=w00000NkvXXu0mjfvI*pD literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash3_1_0/00003.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash3_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9f3ae167e403ba80cf7a815b469b9c724f522fbf GIT binary patch literal 499 zcmV_)fK~!(;}_sJx&sxX-b=}{cK=Ndqy<#(2MXDO*^S9)0a|lEenO=a z5$)TtAD7i(GSY)v)<7E)yVpu0xy1!JZX%|d;(5v%Q%i$aY6FP303uq}?Mw_N_oPlV00%O9U zc@GLf+8HzlBeW+?d!}i76PEdOoGi2Tt#)z##d3B%zdyFo{PER9tx zSN>vf>ewPg^Dw>IcTu;*riX{V2S~*gZwtI9Yx^L6uKbo{oD0Tu9y9!=C#;^I?CiCl zvHf^hz}eP}{zq~SkU;aM{4h-g(Z2v)uAmym*@a-I>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)HQzLMeQ5~bi5Io|F0Q!FC+lAa`7;w5ita|*5I zoLIBJQ_YNYss=#~528x<70JilAz$x=t4PJB=1fU#7$kJmwFh{pyf>OvqC04^s&hQ04qp=q!2)F<$&7Q@ndA3Lio}sNjVs`0ssI20QB(y Xe5b8e;N>RI00000NkvXXu0mjf=#GlF literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash3_2_0/00001.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash3_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash81_0_0/00000.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash81_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash81_0_0/00002.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash81_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxr1c->OR=(165GDmB)BPZf0W!1a zAbv79)u;+UX=Fp?pfszE z%AANe-%&eKU&KnUmothdnJwO)78@GaqLYfZB_En$R%h)u;W#s0KxRYKi@RbjNwg&z z)sfn&-4@&jYRxc=p|2Fdd6nc1kG0a^!*q?}4o1=?n@E=PvD#4|s=feJnG_E(Qv!s% zEkmnPq0M;!-PO<`RsJ4;>MKRSSMk#S0l@9_^dckqMUAK|G9zgY)?7j7H%IO5y&Oya jka3jZ0dP1Rj{l1fuT69qz%l=w00000NkvXXu0mjfvI*pD literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash81_1_0/00003.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash81_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9f3ae167e403ba80cf7a815b469b9c724f522fbf GIT binary patch literal 499 zcmV_)fK~!(;}_sJx&sxX-b=}{cK=Ndqy<#(2MXDO*^S9)0a|lEenO=a z5$)TtAD7i(GSY)v)<7E)yVpu0xy1!JZX%|d;(5v%Q%i$aY6FP303uq}?Mw_N_oPlV00%O9U zc@GLf+8HzlBeW+?d!}i76PEdOoGi2Tt#)z##d3B%zdyFo{PER9tx zSN>vf>ewPg^Dw>IcTu;*riX{V2S~*gZwtI9Yx^L6uKbo{oD0Tu9y9!=C#;^I?CiCl zvHf^hz}eP}{zq~SkU;aM{4h-g(Z2v)uAmym*@a-I>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)HQzLMeQ5~bi5Io|F0Q!FC+lAa`7;w5ita|*5I zoLIBJQ_YNYss=#~528x<70JilAz$x=t4PJB=1fU#7$kJmwFh{pyf>OvqC04^s&hQ04qp=q!2)F<$&7Q@ndA3Lio}sNjVs`0ssI20QB(y Xe5b8e;N>RI00000NkvXXu0mjf=#GlF literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash81_2_0/00001.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash81_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash82_0_0/00000.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash82_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash82_0_0/00002.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash82_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxr1c->OR=(165GDmB)BPZf0W!1a zAbv79)u;+UX=Fp?pfszE z%AANe-%&eKU&KnUmothdnJwO)78@GaqLYfZB_En$R%h)u;W#s0KxRYKi@RbjNwg&z z)sfn&-4@&jYRxc=p|2Fdd6nc1kG0a^!*q?}4o1=?n@E=PvD#4|s=feJnG_E(Qv!s% zEkmnPq0M;!-PO<`RsJ4;>MKRSSMk#S0l@9_^dckqMUAK|G9zgY)?7j7H%IO5y&Oya jka3jZ0dP1Rj{l1fuT69qz%l=w00000NkvXXu0mjfvI*pD literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash82_1_0/00003.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash82_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9f3ae167e403ba80cf7a815b469b9c724f522fbf GIT binary patch literal 499 zcmV_)fK~!(;}_sJx&sxX-b=}{cK=Ndqy<#(2MXDO*^S9)0a|lEenO=a z5$)TtAD7i(GSY)v)<7E)yVpu0xy1!JZX%|d;(5v%Q%i$aY6FP303uq}?Mw_N_oPlV00%O9U zc@GLf+8HzlBeW+?d!}i76PEdOoGi2Tt#)z##d3B%zdyFo{PER9tx zSN>vf>ewPg^Dw>IcTu;*riX{V2S~*gZwtI9Yx^L6uKbo{oD0Tu9y9!=C#;^I?CiCl zvHf^hz}eP}{zq~SkU;aM{4h-g(Z2v)uAmym*@a-I>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)HQzLMeQ5~bi5Io|F0Q!FC+lAa`7;w5ita|*5I zoLIBJQ_YNYss=#~528x<70JilAz$x=t4PJB=1fU#7$kJmwFh{pyf>OvqC04^s&hQ04qp=q!2)F<$&7Q@ndA3Lio}sNjVs`0ssI20QB(y Xe5b8e;N>RI00000NkvXXu0mjf=#GlF literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash82_2_0/00001.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash82_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash83_0_0/00000.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash83_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash83_0_0/00002.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash83_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxr1c->OR=(165GDmB)BPZf0W!1a zAbv79)u;+UX=Fp?pfszE z%AANe-%&eKU&KnUmothdnJwO)78@GaqLYfZB_En$R%h)u;W#s0KxRYKi@RbjNwg&z z)sfn&-4@&jYRxc=p|2Fdd6nc1kG0a^!*q?}4o1=?n@E=PvD#4|s=feJnG_E(Qv!s% zEkmnPq0M;!-PO<`RsJ4;>MKRSSMk#S0l@9_^dckqMUAK|G9zgY)?7j7H%IO5y&Oya jka3jZ0dP1Rj{l1fuT69qz%l=w00000NkvXXu0mjfvI*pD literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash83_1_0/00003.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash83_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9f3ae167e403ba80cf7a815b469b9c724f522fbf GIT binary patch literal 499 zcmV_)fK~!(;}_sJx&sxX-b=}{cK=Ndqy<#(2MXDO*^S9)0a|lEenO=a z5$)TtAD7i(GSY)v)<7E)yVpu0xy1!JZX%|d;(5v%Q%i$aY6FP303uq}?Mw_N_oPlV00%O9U zc@GLf+8HzlBeW+?d!}i76PEdOoGi2Tt#)z##d3B%zdyFo{PER9tx zSN>vf>ewPg^Dw>IcTu;*riX{V2S~*gZwtI9Yx^L6uKbo{oD0Tu9y9!=C#;^I?CiCl zvHf^hz}eP}{zq~SkU;aM{4h-g(Z2v)uAmym*@a-I>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)HQzLMeQ5~bi5Io|F0Q!FC+lAa`7;w5ita|*5I zoLIBJQ_YNYss=#~528x<70JilAz$x=t4PJB=1fU#7$kJmwFh{pyf>OvqC04^s&hQ04qp=q!2)F<$&7Q@ndA3Lio}sNjVs`0ssI20QB(y Xe5b8e;N>RI00000NkvXXu0mjf=#GlF literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_segwitv0_sighash83_2_0/00001.png b/tests/snapshots/nanos/test_sighash_segwitv0_sighash83_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_input_changed_0_0/00000.png b/tests/snapshots/nanos/test_sighash_single_anyone_input_changed_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_input_changed_0_0/00002.png b/tests/snapshots/nanos/test_sighash_single_anyone_input_changed_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrYJfRP4$go3_M{L^5kFSq)d-? zW>whQH!y1!XdPjrQOQ*fDl-WRa@{EKL<1Q#N7oXIwJPEh2 zi(`@x*lj=0J4Ig^fXcrz@5c#)%$(WJhLb(-^kJTY;z$o5EuWtstO3p#)_~ETL8fE* t-6l`%v&bsdQv;5)p@a}Z2q6Rj@B*Xb$w5F?002ovPDHLkV1mu4lXn0B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_input_changed_1_0/00002.png b/tests/snapshots/nanos/test_sighash_single_anyone_input_changed_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_input_changed_1_0/00003.png b/tests/snapshots/nanos/test_sighash_single_anyone_input_changed_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_input_changed_1_0/00004.png b/tests/snapshots/nanos/test_sighash_single_anyone_input_changed_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_input_changed_1_0/00005.png b/tests/snapshots/nanos/test_sighash_single_anyone_input_changed_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)1gB9mjDW2qcsw(gts9{dm^{@p^|KAtB)K|6bQ!PBO`$v}c1@8}D z9vv=D@(gn?@Ni6;CBN;a3UgAn8sj-TVHJ*gMy=e~pX&_mZgKe>i$7Mo!Bg5xo0Bi` zLi5`a8|EJl@?az!5kGnP*Y?{1WucLBF*gIvu4ioWRoSbmq`76AC2w@~oyfzLNoPNL zZryMxGm7PFZm*WA(9|byCx1|R!c=+7sLwb3x3gySccHVc|4*2(t7si7y}wDiY2NB7 zG0{yrv+dY<>&0am4j(_DcAxo;LTq=~T*kE%g|40W!m)7s5|xMrpuk{Q^N1~+bA8Ou ROKRO9uBWS?%Q~loCIHR|g3|y1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_input_changed_1_1/00001.png b/tests/snapshots/nanos/test_sighash_single_anyone_input_changed_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_output_changed_0_0/00000.png b/tests/snapshots/nanos/test_sighash_single_anyone_output_changed_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_output_changed_0_0/00002.png b/tests/snapshots/nanos/test_sighash_single_anyone_output_changed_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrYJfRP4$go3_M{L^5kFSq)d-? zW>whQH!y1!XdPjrQOQ*fDl-WRa@{EKL<1Q#N7oXIwJPEh2 zi(`@x*lj=0J4Ig^fXcrz@5c#)%$(WJhLb(-^kJTY;z$o5EuWtstO3p#)_~ETL8fE* t-6l`%v&bsdQv;5)p@a}Z2q6Rj@B*Xb$w5F?002ovPDHLkV1mu4lXn0B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_output_changed_1_0/00002.png b/tests/snapshots/nanos/test_sighash_single_anyone_output_changed_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_output_changed_1_0/00003.png b/tests/snapshots/nanos/test_sighash_single_anyone_output_changed_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_output_changed_1_0/00004.png b/tests/snapshots/nanos/test_sighash_single_anyone_output_changed_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_output_changed_1_0/00005.png b/tests/snapshots/nanos/test_sighash_single_anyone_output_changed_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)jv*Cu-p)A9*J8lo`Zndy zfBtz#cPMjhIq1du)>hlKm*Z267*OHnphcnvAO6ewot9d1e2W45p6>iDOnWDUYbeZc zxyN8NQP4r?v}2x}5My=rCi$4X?J7V1${O6d^&`i~?jje@vNb1bKTI$SNfQ!Dyx{z< zU=H&S1vxMhim;!w_^a)$fYRuj^J1@NZo8Jfs&>hqCrX(m+k5#p8W&ikU)y81#%!C_ z@-oNTZspV7wiUls=FFRT+QM|s=krUm?j_Iq-Fs76_P~_e>KD%BDcELvt$Mm}`t9I= zw9D5eBzLS}Ja{L9`5c>0?xa-CiPQI}OncI2s}1xK!+}(@EcvBHoS!v*fViHnelF{r G5}E+iUV*^? literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_output_changed_1_1/00001.png b/tests/snapshots/nanos/test_sighash_single_anyone_output_changed_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_sign_0_0/00000.png b/tests/snapshots/nanos/test_sighash_single_anyone_sign_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_sign_0_0/00002.png b/tests/snapshots/nanos/test_sighash_single_anyone_sign_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrYJfRP4$go3_M{L^5kFSq)d-? zW>whQH!y1!XdPjrQOQ*fDl-WRa@{EKL<1Q#N7oXIwJPEh2 zi(`@x*lj=0J4Ig^fXcrz@5c#)%$(WJhLb(-^kJTY;z$o5EuWtstO3p#)_~ETL8fE* t-6l`%v&bsdQv;5)p@a}Z2q6Rj@B*Xb$w5F?002ovPDHLkV1mu4lXn0B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_sign_1_0/00002.png b/tests/snapshots/nanos/test_sighash_single_anyone_sign_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_sign_1_0/00003.png b/tests/snapshots/nanos/test_sighash_single_anyone_sign_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_sign_1_0/00004.png b/tests/snapshots/nanos/test_sighash_single_anyone_sign_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_sign_1_0/00005.png b/tests/snapshots/nanos/test_sighash_single_anyone_sign_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)1gB9mjDW2qcsw(gts9{dm^{@p^|KAtB)K|6bQ!PBO`$v}c1@8}D z9vv=D@(gn?@Ni6;CBN;a3UgAn8sj-TVHJ*gMy=e~pX&_mZgKe>i$7Mo!Bg5xo0Bi` zLi5`a8|EJl@?az!5kGnP*Y?{1WucLBF*gIvu4ioWRoSbmq`76AC2w@~oyfzLNoPNL zZryMxGm7PFZm*WA(9|byCx1|R!c=+7sLwb3x3gySccHVc|4*2(t7si7y}wDiY2NB7 zG0{yrv+dY<>&0am4j(_DcAxo;LTq=~T*kE%g|40W!m)7s5|xMrpuk{Q^N1~+bA8Ou ROKRO9uBWS?%Q~loCIHR|g3|y1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_anyone_sign_1_1/00001.png b/tests/snapshots/nanos/test_sighash_single_anyone_sign_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_input_modified_0_0/00000.png b/tests/snapshots/nanos/test_sighash_single_input_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_input_modified_0_0/00002.png b/tests/snapshots/nanos/test_sighash_single_input_modified_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrYJfRP4$go3_M{L^5kFSq)d-? zW>whQH!y1!XdPjrQOQ*fDl-WRa@{EKL<1Q#N7oXIwJPEh2 zi(`@x*lj=0J4Ig^fXcrz@5c#)%$(WJhLb(-^kJTY;z$o5EuWtstO3p#)_~ETL8fE* t-6l`%v&bsdQv;5)p@a}Z2q6Rj@B*Xb$w5F?002ovPDHLkV1mu4lXn0B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_input_modified_1_0/00002.png b/tests/snapshots/nanos/test_sighash_single_input_modified_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_input_modified_1_0/00003.png b/tests/snapshots/nanos/test_sighash_single_input_modified_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_input_modified_1_0/00004.png b/tests/snapshots/nanos/test_sighash_single_input_modified_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_input_modified_1_0/00005.png b/tests/snapshots/nanos/test_sighash_single_input_modified_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)1gB9mjDW2qcsw(gts9{dm^{@p^|KAtB)K|6bQ!PBO`$v}c1@8}D z9vv=D@(gn?@Ni6;CBN;a3UgAn8sj-TVHJ*gMy=e~pX&_mZgKe>i$7Mo!Bg5xo0Bi` zLi5`a8|EJl@?az!5kGnP*Y?{1WucLBF*gIvu4ioWRoSbmq`76AC2w@~oyfzLNoPNL zZryMxGm7PFZm*WA(9|byCx1|R!c=+7sLwb3x3gySccHVc|4*2(t7si7y}wDiY2NB7 zG0{yrv+dY<>&0am4j(_DcAxo;LTq=~T*kE%g|40W!m)7s5|xMrpuk{Q^N1~+bA8Ou ROKRO9uBWS?%Q~loCIHR|g3|y1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_input_modified_1_1/00001.png b/tests/snapshots/nanos/test_sighash_single_input_modified_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_output_different_index_modified_0_0/00000.png b/tests/snapshots/nanos/test_sighash_single_output_different_index_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_output_different_index_modified_0_0/00002.png b/tests/snapshots/nanos/test_sighash_single_output_different_index_modified_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrtdoVL^_03`sCfIjx z2i7SyO3UvuE%gJXMUJa^@E`2_{Org#Kpo4$d7~>gZwCMrtF>I|a}Xv4O{RM$OaNqN zpMwAaC@UwvS!lC1s%05H@e5jnCtHBlY{*OX4OkVK>YJfRP4$go3_M{L^5kFSq}=Z9 z%&M@pPhi$8&^p3KrzmfkS=9D-CkN#1n7VPPT6WqSQ<)7^Cr2cV7-vC|xp=2`W literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_output_different_index_modified_1_0/00002.png b/tests/snapshots/nanos/test_sighash_single_output_different_index_modified_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_output_different_index_modified_1_0/00003.png b/tests/snapshots/nanos/test_sighash_single_output_different_index_modified_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_output_different_index_modified_1_0/00004.png b/tests/snapshots/nanos/test_sighash_single_output_different_index_modified_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_output_different_index_modified_1_0/00005.png b/tests/snapshots/nanos/test_sighash_single_output_different_index_modified_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)jv*Cu-p)A9*J8lo`Zndy zfBtz#cPMjhIq1du)>hlKm*Z267*OHnphcnvAO6ewot9d1e2W45p6>iDOnWDUYbeZc zxyN8NQP4r?v}2x}5My=rCi$4X?J7V1${O6d^&`i~?jje@vNb1bKTI$SNfQ!Dyx{z< zU=H&S1vxMhim;!w_^a)$fYRuj^J1@NZo8Jfs&>hqCrX(m+k5#p8W&ikU)y81#%!C_ z@-oNTZspV7wiUls=FFRT+QM|s=krUm?j_Iq-Fs76_P~_e>KD%BDcELvt$Mm}`t9I= zw9D5eBzLS}Ja{L9`5c>0?xa-CiPQI}OncI2s}1xK!+}(@EcvBHoS!v*fViHnelF{r G5}E+iUV*^? literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_output_different_index_modified_1_1/00001.png b/tests/snapshots/nanos/test_sighash_single_output_different_index_modified_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_output_same_index_modified_0_0/00000.png b/tests/snapshots/nanos/test_sighash_single_output_same_index_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_output_same_index_modified_0_0/00002.png b/tests/snapshots/nanos/test_sighash_single_output_same_index_modified_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrYJfRP4$go3_M{L^5kFSq)d-? zW>whQH!y1!XdPjrQOQ*fDl-WRa@{EKL<1Q#N7oXIwJPEh2 zi(`@x*lj=0J4Ig^fXcrz@5c#)%$(WJhLb(-^kJTY;z$o5EuWtstO3p#)_~ETL8fE* t-6l`%v&bsdQv;5)p@a}Z2q6Rj@B*Xb$w5F?002ovPDHLkV1mu4lXn0B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_output_same_index_modified_1_0/00002.png b/tests/snapshots/nanos/test_sighash_single_output_same_index_modified_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_output_same_index_modified_1_0/00003.png b/tests/snapshots/nanos/test_sighash_single_output_same_index_modified_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_output_same_index_modified_1_0/00004.png b/tests/snapshots/nanos/test_sighash_single_output_same_index_modified_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_output_same_index_modified_1_0/00005.png b/tests/snapshots/nanos/test_sighash_single_output_same_index_modified_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)jv*Cu-p)A9*J8lo`Zndy zfBtz#cPMjhIq1du)>hlKm*Z267*OHnphcnvAO6ewot9d1e2W45p6>iDOnWDUYbeZc zxyN8NQP4r?v}2x}5My=rCi$4X?J7V1${O6d^&`i~?jje@vNb1bKTI$SNfQ!Dyx{z< zU=H&S1vxMhim;!w_^a)$fYRuj^J1@NZo8Jfs&>hqCrX(m+k5#p8W&ikU)y81#%!C_ z@-oNTZspV7wiUls=FFRT+QM|s=krUm?j_Iq-Fs76_P~_e>KD%BDcELvt$Mm}`t9I= zw9D5eBzLS}Ja{L9`5c>0?xa-CiPQI}OncI2s}1xK!+}(@EcvBHoS!v*fViHnelF{r G5}E+iUV*^? literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_output_same_index_modified_1_1/00001.png b/tests/snapshots/nanos/test_sighash_single_output_same_index_modified_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_sign_psbt_0_0/00000.png b/tests/snapshots/nanos/test_sighash_single_sign_psbt_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7372ec63f466c553bad4692c635e7527f9f5b6de GIT binary patch literal 432 zcmV;h0Z;ykP)r-1gx7skD~-~ z6@Y4?pZ_LUHz3kg002%~5hwuF{My=Yi_uFN6>Pm7)3>==0FIr|hch%ylQXy4L@O__30$v7ie%H4R zOd1URg-%d)#`pxSh@477AP4r{xN<~p%E77982_hs2Y|)}?qhH&xuPtXx{Ycz>k0O$ zQrYqpRMsWEP+ZOMAXlt~rW?5YH9EO_5}1`IaH=%M0~UPYU4KR=xC7pex4$H>MtQ>p akKqT4tk3#V3QV2=0000(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_sign_psbt_0_0/00002.png b/tests/snapshots/nanos/test_sighash_single_sign_psbt_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrYJfRP4$go3_M{L^5kFSq)d-? zW>whQH!y1!XdPjrQOQ*fDl-WRa@{EKL<1Q#N7oXIwJPEh2 zi(`@x*lj=0J4Ig^fXcrz@5c#)%$(WJhLb(-^kJTY;z$o5EuWtstO3p#)_~ETL8fE* t-6l`%v&bsdQv;5)p@a}Z2q6Rj@B*Xb$w5F?002ovPDHLkV1mu4lXn0B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_sign_psbt_1_0/00002.png b/tests/snapshots/nanos/test_sighash_single_sign_psbt_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_sign_psbt_1_0/00003.png b/tests/snapshots/nanos/test_sighash_single_sign_psbt_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_sign_psbt_1_0/00004.png b/tests/snapshots/nanos/test_sighash_single_sign_psbt_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_sign_psbt_1_0/00005.png b/tests/snapshots/nanos/test_sighash_single_sign_psbt_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)1gB9mjDW2qcsw(gts9{dm^{@p^|KAtB)K|6bQ!PBO`$v}c1@8}D z9vv=D@(gn?@Ni6;CBN;a3UgAn8sj-TVHJ*gMy=e~pX&_mZgKe>i$7Mo!Bg5xo0Bi` zLi5`a8|EJl@?az!5kGnP*Y?{1WucLBF*gIvu4ioWRoSbmq`76AC2w@~oyfzLNoPNL zZryMxGm7PFZm*WA(9|byCx1|R!c=+7sLwb3x3gySccHVc|4*2(t7si7y}wDiY2NB7 zG0{yrv+dY<>&0am4j(_DcAxo;LTq=~T*kE%g|40W!m)7s5|xMrpuk{Q^N1~+bA8Ou ROKRO9uBWS?%Q~loCIHR|g3|y1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_single_sign_psbt_1_1/00001.png b/tests/snapshots/nanos/test_sighash_single_sign_psbt_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_unsupported_0_0/00000.png b/tests/snapshots/nanos/test_sighash_unsupported_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrYJfRP4$go3_M{L^5kFSq)d-? zW>whQH!y1!XdPjrQOQ*fDl-WRa@{EKL<1Q#N7oXIwJPEh2 zi(`@x*lj=0J4Ig^fXcrz@5c#)%$(WJhLb(-^kJTY;z$o5EuWtstO3p#)_~ETL8fE* t-6l`%v&bsdQv;5)p@a}Z2q6Rj@B*Xb$w5F?002ovPDHLkV1mu4lXn0B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_unsupported_0_0/00002.png b/tests/snapshots/nanos/test_sighash_unsupported_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_unsupported_0_0/00003.png b/tests/snapshots/nanos/test_sighash_unsupported_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_unsupported_0_0/00004.png b/tests/snapshots/nanos/test_sighash_unsupported_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_unsupported_0_0/00005.png b/tests/snapshots/nanos/test_sighash_unsupported_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)1gB9mjDW2qcsw(gts9{dm^{@p^|KAtB)K|6bQ!PBO`$v}c1@8}D z9vv=D@(gn?@Ni6;CBN;a3UgAn8sj-TVHJ*gMy=e~pX&_mZgKe>i$7Mo!Bg5xo0Bi` zLi5`a8|EJl@?az!5kGnP*Y?{1WucLBF*gIvu4ioWRoSbmq`76AC2w@~oyfzLNoPNL zZryMxGm7PFZm*WA(9|byCx1|R!c=+7sLwb3x3gySccHVc|4*2(t7si7y}wDiY2NB7 zG0{yrv+dY<>&0am4j(_DcAxo;LTq=~T*kE%g|40W!m)7s5|xMrpuk{Q^N1~+bA8Ou ROKRO9uBWS?%Q~loCIHR|g3|y1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_unsupported_0_1/00001.png b/tests/snapshots/nanos/test_sighash_unsupported_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_unsupported_for_segwitv0_0_0/00000.png b/tests/snapshots/nanos/test_sighash_unsupported_for_segwitv0_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrYJfRP4$go3_M{L^5kFSq)d-? zW>whQH!y1!XdPjrQOQ*fDl-WRa@{EKL<1Q#N7oXIwJPEh2 zi(`@x*lj=0J4Ig^fXcrz@5c#)%$(WJhLb(-^kJTY;z$o5EuWtstO3p#)_~ETL8fE* t-6l`%v&bsdQv;5)p@a}Z2q6Rj@B*Xb$w5F?002ovPDHLkV1mu4lXn0B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_unsupported_for_segwitv0_0_0/00002.png b/tests/snapshots/nanos/test_sighash_unsupported_for_segwitv0_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_unsupported_for_segwitv0_0_0/00003.png b/tests/snapshots/nanos/test_sighash_unsupported_for_segwitv0_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_unsupported_for_segwitv0_0_0/00004.png b/tests/snapshots/nanos/test_sighash_unsupported_for_segwitv0_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_unsupported_for_segwitv0_0_0/00005.png b/tests/snapshots/nanos/test_sighash_unsupported_for_segwitv0_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)1gB9mjDW2qcsw(gts9{dm^{@p^|KAtB)K|6bQ!PBO`$v}c1@8}D z9vv=D@(gn?@Ni6;CBN;a3UgAn8sj-TVHJ*gMy=e~pX&_mZgKe>i$7Mo!Bg5xo0Bi` zLi5`a8|EJl@?az!5kGnP*Y?{1WucLBF*gIvu4ioWRoSbmq`76AC2w@~oyfzLNoPNL zZryMxGm7PFZm*WA(9|byCx1|R!c=+7sLwb3x3gySccHVc|4*2(t7si7y}wDiY2NB7 zG0{yrv+dY<>&0am4j(_DcAxo;LTq=~T*kE%g|40W!m)7s5|xMrpuk{Q^N1~+bA8Ou ROKRO9uBWS?%Q~loCIHR|g3|y1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sighash_unsupported_for_segwitv0_0_1/00001.png b/tests/snapshots/nanos/test_sighash_unsupported_for_segwitv0_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_0_0/00000.png b/tests/snapshots/nanos/test_sign_message_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..ab16f62bfcfb15701d788a6a84fe55001d152730 GIT binary patch literal 368 zcmV-$0gwKPP)m1gYoarBO3LH$euV2HeiC{**okfHIi+m$sv2p+{O|Q}I5aNh^Ys5dP#v zj%1qABdJ+S6K!y2Hbl8uvs5Q~cSHZe-9%(GG&6lVhU>>5GXsQK^2D%BBCpwrIq!n_ zbF$#pv0JKROAs&1vS|{M6`m6<_23d_XsOOAL5k@8zo4r@s|o-B(!2ofEx#wWs1tqw O00005dzR{BUP&j%g1^G zvlF2Lx=`yu_*FN4QM-n5FTAe+>123cjgG6~ePs{>OVEWZv0sO&pJ0y@_HBqpa`i3j zQ=IyHl;f&_M00h(ULA?bwWcm=p&1;aD5(jPJ-)jyYI{8fwhJ0@O3$ z)9k&^YS+!Cai>?U-|joaopR)Qvm41=b%7TdA<7Lt-2%0Pjawtbh|g!dNJpw@!-Vun~as*w3z^ zlgRaM7`C@_?-AFb@&Cnd=V2<8=6hK!L2E|;z!rO5giznTv~PzH@XWz9)KF&*CeR6T zbPmLg4LH8KTVvYbKFL{J{ECCHvaE>LqqBf{hb|&HyB8FPv3q(q7D#~D=V`%b;5GNq z1{O#_-DD>{l=faJGk4@>;!3?h0_+TRtqYFmga3j8c=TVAcUYI^R)D4T2tw9^ZpOKhuwqImhz8AYi9XQ2?7#~MhQSs6h-l=9BGT!^V{@PB}JIWe+RG` zujlXkw8U^=1^~cu(pyodTSA1cvKAyL6Box%p2dzcVi;q>3~13Dr~CjUI4o(`+zQ~2 zj@<=mCHh3UrBdw0?#ML^^Oe%}!69m`I7BTqgI&0iNSf@9E~0k;>^TT*8e*OH{6vDS zv?Ow$Yna*5*b?OCoirKij}2L=Y|Rcy(A5NbKf>Y+xbP!v3q^Atr09ouFoL(^bPYS1 zx!$EAd%NyE;y$qWAGEm+Q&VBzOSA;-nf-w+_Pz+IzWda^9YVru43?p$y2fAuPLl2B zwhzI(k*Q<0rWf8_pF$)^ro&Fc##c@}j(!y5&(1s~OA%rO#vcOEk29ie3G8g4@V-Jdf6kgPBh ztNVhNsTj#>=-uDY1&GCYoy-hqu7fqdND!o?N^T=2apys71NuZ z%{f@uig`DQG%ai2ZoNhy|dH)s(AG#+`#%=bVG0Ic}lY&{`de0_Wl;M3(l1T+2 P00000NkvXXu0mjfKzF^4 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_0_1/00005.png b/tests/snapshots/nanos/test_sign_message_0_1/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..8fbe2b11e3b63e3326bb194e71bfc34428b651ac GIT binary patch literal 403 zcmV;E0c`$>P)#WGM9HZWL*Apcma~r^5djRtFpO1k(h~qU_V2aZ-XGm2HJ!yc z_LBkD<0(A>LKp$mHa?e0vo7amPHLv z==E;Xsy^Jc2p9TnxRx@{Ygunc;VaAboE{CLqhKX}p?3;0Z{>-CzH%p=%P`&5kNicA zQG+tN!2obp#C-n}9~)GqAX+$@`j=>p030R4)Gy(@jc-_lBe_le68bk$bX13ONS_CU zt<7YQlkU{&?m#|gmTU%ZV}f1~MkNhTG)z({ngheWY4TSo?(nAz x_+;`GMt^4QtxlYR)m1gYoarBO3LH$euV2HeiC{**okfHIi+m$sv2p+{O|Q}I5aNh^Ys5dP#v zj%1qABdJ+S6K!y2Hbl8uvs5Q~cSHZe-9%(GG&6lVhU>>5GXsQK^2D%BBCpwrIq!n_ zbF$#pv0JKROAs&1vS|{M6`m6<_23d_XsOOAL5k@8zo4r@s|o-B(!2ofEx#wWs1tqw O0000Uo&;>~)luAdXrQyGYLHrU@+9GvX0002Y%IZCV7W;O#*Pr$kr4qEs z7a(unla0sMdjhv8!Xn+KYw~>(AQYZ*?b_5M$%c=H2ob>Dd3dwxiLe0GG*YCRuzb8H zFgp<1C4&}jZ`G@o{6fRivU-}A$iriT;ZP-b`%rn+%%m+60=7)C&{H7$cu z-&^DD0j?>CGCNQ4)8JZ+LoTvL`5DS@l^Q<&wMH`n000000O-I093;kI!qYZsWw5N}**`dK*BJBuR2rmdzH=$J=yOB}p^4e>*T4 z&&T)wG{mqY0{~!I=}%F|Eg{0HvgRZxiHrRw&tm)8V%SDN1{80WRek{C9F~+aw*vUl zvAZC(M4u>^P>Q|S9aRmRxo^_0gI&~Wv5Q)0I=iS!TEb*^v=iO|uyYVt8e*OD{6vDS zv>@^}#}L_3-xO4hJE=0}9~&}L*_sYXV^aZm7hy32c3gyQp=i#X6x$&!7|z>%Rt=p* z&Uc$3dpq|YaUPieH(H&CsZiK@iKd`Aqu;T`o);n1M^Ej;Ap|_fU>Itsa|{Mh33AXF zh_?l{=74{LeU^@Jpt1{sv#fH{!os`vU66y8^NXf~w-aKy{q4ocr{8jh!k>@4y#P{} ziiCe_hCX2!12ceMg7Wh9m|zOJ_NsIISCZv$Uq%s^cWF7Ee`f%>Rdwrh8j7zp=DeFp fk|arzBsm2y4Hp-*$A@w^00000NkvXXu0mjf3)RCp literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_0_1/00001.png b/tests/snapshots/nanos/test_sign_message_accept_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..8fbe2b11e3b63e3326bb194e71bfc34428b651ac GIT binary patch literal 403 zcmV;E0c`$>P)#WGM9HZWL*Apcma~r^5djRtFpO1k(h~qU_V2aZ-XGm2HJ!yc z_LBkD<0(A>LKp$mHa?e0vo7amPHLv z==E;Xsy^Jc2p9TnxRx@{Ygunc;VaAboE{CLqhKX}p?3;0Z{>-CzH%p=%P`&5kNicA zQG+tN!2obp#C-n}9~)GqAX+$@`j=>p030R4)Gy(@jc-_lBe_le68bk$bX13ONS_CU zt<7YQlkU{&?m#|gmTU%ZV}f1~MkNhTG)z({ngheWY4TSo?(nAz x_+;`GMt^4QtxlYR)m1gYoarBO3LH$euV2HeiC{**okfHIi+m$sv2p+{O|Q}I5aNh^Ys5dP#v zj%1qABdJ+S6K!y2Hbl8uvs5Q~cSHZe-9%(GG&6lVhU>>5GXsQK^2D%BBCpwrIq!n_ zbF$#pv0JKROAs&1vS|{M6`m6<_23d_XsOOAL5k@8zo4r@s|o-B(!2ofEx#wWs1tqw O0000u~cSVrLD|67=%K|K#SCAB7_h!Dzo(jTCB^rJb%zGpe1Qj zEV$9B=JhqnWw)h6o-Yx3ha$aUv{0HH_>+O;}#m z6BwNc9#BO)55k|i@txW=4SA`42UL-%em5#oQ~l0x4J=_4vc&QnUKe%zW-ejZ_bMBt z^+GJScr|a6Yc#RS0%G%Pq1k#f4sOCSeJ?LlNR1@IrL5ykIOmN^U0nSuAz!njdXFM|~AFbg1f9A{Or z6VLgs8Me3U-XpF<5&wg~j>D8I#d?`dL2G9J!WMg7gjDZd+S?%{JjP%eYN}%lCQwPT zeGJl`P* z+x84pKshhrn=-76?KG*|?c*+tn0Os3KxDhM;e&JJvj$+_1C(>*@t5SyOsN3lVkL@c zy5c_s*b6o#YAvzM?!unSOiV#H69W(gLGZo20R>Psbc808+yDRo07*qoM6N<$f*_R8 AzW@LL literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_long_0_1/00001.png b/tests/snapshots/nanos/test_sign_message_accept_long_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7747353fdf97b3a710f9852ea2211243c9a308c0 GIT binary patch literal 462 zcmV;<0WtoGP)cB}v*I!^p5>NHD0XeyV2q{71G@x!y|ae54WOjrRan&Xro0D|L^)XuGl z{^{s0pcnK(Ii*tcqB}AT-TYK(+wc%ey*$KHYC2t*5>J|RM}ugc0DTQowhXyWdVY{_ zt5Op4G1oBDQC|r%^A24~{n3F+rE4}woI_2Z^(8E>fPpVzT_~F8L5kzR2ukpJoTgzT zGwWS7u(xa8Bkn^M{{y?@Fg2CzeaTADp4so%V(*KP>bo!P+aV-8=3p7cRL2}Fz)13_ zIdC3R_hCqE<{%ej0QQkvF+8670qYN9+!@>~@-|!#^k-qe-B&-E|)}G^CSq5 zVEXk0Go2Jc{wX$;wkQ#mb)ly*P^hc<7=0VM4-3lO2p69_0c%P@)kV5Q-vsc|31xI8 z`MubESh50~*?}8Y_*#YEHjk~!?{53LAP9mW2!fmN20uSPhtiB?w9|_ykCjBuT!N?X<<~_%Yp8N#f>lw*!;$ zI{yBrOAH$_006d~zKS|w2@zJ6H77wyTP`uf8`2&b^SW=$36~I3o zy9rWC^oeo_rPzwyP}R`Q^OSZS?4nkRUDQI;*hE$036tGWC!!r-=OC~(2si3D3| zLF9E_!^no(hM;QPNs%%B*pQLR)(l9TRSh6I35yxfaT2zLqB(a`tcTQKIB)w|H4HLx zygLn9+lAMN^T7On(Bj-o4Ta5@Xb74!`VC9$c@aXrdTK9+5b*4S%TPm|eQ*JlAg|sB z0soyl-Y$_@J-kCOI)E&K2hiy(h-}Kpi6d9|eFn$Ihcvnh5NpGPn$L;(_sL?ZF8*t#`d$47N%M-pZ{&L(g% zypHepX^CPW0{~##@kdg|J%R>RVU8p)iCgnWYms?c6m6K00fo)B(+fc4>XGu?Y61Mn z$S%+O_7_eDRQ9+x==?fVUisUf_DSt9E2tfYnifsG*WAE zL2PZV!AwW75~Ri*O$qf!2C7uDq+`TrY6843VKM^-zJ%pLQoSWf+Cdfs@-k0V(TSP$ zt{doV=RPA|2MzxRp3ckER5b6)ssvp#`hg?%bwPys?x}q{5CP9USOzxKxd#iN1o_-O zaCl!scoeY#Y$GOAPQBfTAfKtQ5$n8&ajnquj2evqSfJLG4Z3B}>4Lje$#+I_A*2P1 z!NK6ZedIIQr*s&U&2pAiRx0OSmHyNm-3@IKzh2nulIm!9y$Tzgya8=e2kitM4X+7d zgG+vrB>UC3b~FyI3?RGnAeQE~2Wc^=TJGvZqEiF#8)n=^yTOExlLD9jiZ~g$0f|H+ b@xOQjz;#()w6L!J00000NkvXXu0mjf+g;Gk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_long_0_1/00004.png b/tests/snapshots/nanos/test_sign_message_accept_long_0_1/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..d56b02c1a5c9b9cd8ee63c6315e46dc73ea36397 GIT binary patch literal 493 zcmVxCw;N~j3~xfkO9q`w@`|$*bTXgVSc)#eXxsKEp|~0&0rI5NhC~mLzBo3fSrTD(h$qE{*w}{ zr3I1O+{4O-#-<=Q?xf0?e{9H1WlJVXf~FRbU4+F9n79brg`zrlQnW)X7|z>%x{66w z&Uf9Ay5=}wZjQ+qD`??6B{`A!TID~-L7;Hlgb&bIWoFH!= zgRbV*`4+L<_F%71&ZT4*-rMt8T2l;)_f7)@t|D3+;-!sy0&)*ESkXPv;A=>J2(q7p zuQ3u^LCucXg(T!OBt9Fph8T`!ua;QLza#d!8yZFiaLWOMvu{Ifw7~Iy`hMmfgTh_d zI{=`}McVcHPPiL`)?!@am85u~oioyUo{Q!bH#!Mtz-!UtOKTTy4}f|Eiv5OA_Yx>Hsdr zf#6uW2s_HUG)ef@&g2!>Xik+<7 z@0wwEyY4&UbrA92cy~UgmLkr}Y74q%_6M%m*F{P7yD#mxLrHkf!8XiP=NxRnN%GD) zh`d@ytgWWQqjL+Q8K>MwE~8n466y6y5!R~&KT^PB&4|PF2)tOPDR;MUbmrYj>? z%OUFHYuXx~;X0v~dCkhu2hg z?oce-#gsXayHl%fjF0 dNs=UA%o791QFz|+LXH3c002ovPDHLkV1jQt;^P1S literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_long_0_1/00006.png b/tests/snapshots/nanos/test_sign_message_accept_long_0_1/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..d1739b5ce7d4dd04ea262c1263e8f149dc37f438 GIT binary patch literal 433 zcmV;i0Z#sjP)gfg#4*Nz3P{mxyFLIB9G9f$+>7YT z#_vLCg}pFNsZ@LMJ1RPc`8#A?hKFcrd5BhO8oMY;B5CqF>O}1X_%%pb8FHI6ej(vr zRuc0z&tYUoZA(xw??UCQKR#lm@+~VQ!KMaKy9uim&~X#?g{pfVq}q;X!3o}vv*=jK z$o1|p;@z(L9dRA9_#aY@!_-i+{gN#~Yi7UU6?b6Pf5YZ2`{ zmj58*BNKEbYZvz5>X&?!F5%DnPy5CwJk_uQ0_PPF3^7cYD9u00000 b06P)33`2<>m89HwVK?xei<6y-YLI@#W5WERqdlSF%(%!&0MbTj+ zffj&EXd!oTk~~H3JV$sD(ZOnOV1)RZTQ_iNZ_sK0A%D+VMHtP3QlW+JurWX*3Y`Xk z>MMZkJcJNJ2+?LqFDU(1S=Orw9C;%=Vhwp_or^F5ZK~bETL8 zwX~=mZu9xtf}RI$bA(=%0aN<*xmd#J0eyc}0H)|7ZX&Ek3~#x@sU0x1ZfK5m(&al{ z#X5EMjb;%}NmYxYh{=3SPZ@8}DB7dRM8;@W@3r7t5I9hOMNCBHa85Sl1JFmALNoMV QIRF3v07*qoM6N<$f|v<|EC2ui literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_long_1_0/00000.png b/tests/snapshots/nanos/test_sign_message_accept_long_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..17da9d4def04864b07b044a129c522d37157a9ff GIT binary patch literal 456 zcmV;(0XP1MP)@4uC!fflR~H=j=bSq)}24 zX`5r{nW%0FGV6{WDeI38TB&r;0*kY$4wP=f>Fr~ix)V>`|!D9@DA(lGEU;svu=N|(_ zVOQ}@8aKXzpxZ9zyf&DP<_bx9^ABPk%(Dz@)DJRxBbABR)Si1^Q}zX*qZ2jio~*Op zCYwcRguOlW=QUI3(E2uXFrIEpV=ukzJv7MNd;qep)#!TVyx?o1LEypvl4Nhu$Ezre y`@TN(2juT^b8f=Ojyl-*5;O>cAP9osS-b&fB0Hi7D_Lv#0??7h!e;bX6!E%FGcd@= z`K}tYw+rtP*MaDN;MaMW8VXr2iz#T$>^E$&*M&*-?n8S!n1p8^OhZg{_Q3>CM|S z_C69lOMfWpV1_I9n2f3spbM^~_ibp5eP_mI0WbcEP)gw{r?}_MO}D083KY|!{WJG4D=l)QwI>B~Wv_T7Wa2 zkI(;UNnpne0D$AfKS`fv3o=%nIg!9j++06;7FnkzP{)KBkklL}{QyW@Zb{c=6u_5{ z+y%Oe{E>4?CE1JIQ8iG_-Q-;-m&o1CC330h?4oMXq)F~*5Um3s&p{}rVeXTjA6fD! zE{SEEYna(lUkR$_9o-V@j|{3*vS))u+0+DDU&7=J82A#FjbwN!l57XHAc&WBRs$QE zS?|oCwO#WX(GP|G8@?Tzsi_q2%d7R(xV+G6`cCJ_vv0&qa0i^_=19MFLPnq#71hlY*I=oQleY(G z8^v7+&YZtcG?Z>t4aye!7=0RQ#pmV&))nhZzlfnTQE%7}_Zx8VNwRGWQk2^Xq~_8R zB%Dy9(^eBbv7|g?*?h>y;kI^Ja8QDR{rG_o13?f34tN1Wvnz`VffT0z0000>Y!1{w>D;3rZNSsYgAi4>w8F1kyjD@PXbW&}HwE&#Qewv0s zX0CVLu(MtGjJOZN{|A4am#L|U{jyqu_Kg0(5qn>hP``U>za2`za}I8!8S0#a8!&>r z=NtsQ@|c*%s=#F!x4CC{*WjEXzp`JgB3g=Iw=h;>lnUR^BrYtiD;4Mhv{st~g(75? zC^-s@>WNx4xfr$j$evZ9s$iO9tJa^+uh8qH-)#pgKFADSXr;N?+QuvI)#YdpgXyW( zM8TqADlFx%e3Dd4;#~@h2xS1+R|B?PYUY+M@fRt(X2>~^BuSDaNs>h46MJhnd#b8X!w`viP;3Z0kk|arzZ)NMYcs+kjcU6)!^SC;I z#dtmc=F=3zffYbR+s^-rI&KLQn#x*`q%7Pre)cRl&KAQq0#?8g&9=)Az=A6!$M4#T z=${Vmg0(VzrhKGQ>;-pZ8aDIOrEOD&sI`_MYN;9Q!j!b633qf7-T}aCkg8=^>KxC{ zB&C&>#M@0eD}+;tDwNC5(llc^#zahj{?O<2X%2 zCz1PIH|%WZJ|nI}75{@b=VdCC>U~*kL2G7z;E260LaOh+v~P!y@En6_sHx5|n1GRF z_ZUPBUeJUvPg8LdF>s3CWdJmv?7TbTs)zoImI%T+KvqCyCP2sZqnWgLtK$cnjUOtKBuSDaNfL`Uwxl_Q+s?%300000NkvXX Hu0mjfyN=dr literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_long_1_0/00005.png b/tests/snapshots/nanos/test_sign_message_accept_long_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..90014bef5196e3ea098acebecbcbc67dbcd6a876 GIT binary patch literal 500 zcmVA#{*SVDwVWi3fi3K!>3+G6MFG4wH^0!lX9E;oQAhb84Vw*vUm zu|trjM4u>^t`wu#fvSdX?oHZtaEjVfoTAn>ogu0cPdC|t1`! zbt3n%rEl}=tf z24!P&{I%MiOCW(@&OJ@FZOJZkpy#nTuRYpvTt$>H+WCuIE&@;mZ0p2%QHu4o)0XIv zAGN}*5F?KNK%%{;;&1V8((r7|KcY_}^wf}@XSfx9w>qP5Lyy@0!8hK%K%jxAnXs#t zscFIh@Vf4CQdPr&hJ@~Sb@B(9BZ)POr1(KbObaqiK$%HBHXb`Of5a%GNG~_nr{Y42^ zc|p`|u3=_JeN#|1?xHG~e`3T;6mqDsz`#W~E;QxZNwXc%Lg0MtXI0q9 z%=zvzVsF>HN8AVH|4mloFf|pmUa~1@&**n-vG>IY^{1!y$6*8B*?ByIJxP)33`2<>m89HwVK?xei<6y-YLI@#W5WERqdlSF%(%!&0MbTj+ zffj&EXd!oTk~~H3JV$sD(ZOnOV1)RZTQ_iNZ_sK0A%D+VMHtP3QlW+JurWX*3Y`Xk z>MMZkJcJNJ2+?LqFDU(1S=Orw9C;%=Vhwp_or^F5ZK~bETL8 zwX~=mZu9xtf}RI$bA(=%0aN<*xmd#J0eyc}0H)|7ZX&Ek3~#x@sU0x1ZfK5m(&al{ z#X5EMjb;%}NmYxYh{=3SPZ@8}DB7dRM8;@W@3r7t5I9hOMNCBHa85Sl1JFmALNoMV QIRF3v07*qoM6N<$f|v<|EC2ui literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_long_2_0/00000.png b/tests/snapshots/nanos/test_sign_message_accept_long_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..77257342e615ae14c9fe67d408891f05cbd677c3 GIT binary patch literal 444 zcmV;t0YmftyZ;OBpbmU0LqPnUTi<)M5QO2-=^_FE0PwGD#TL)U+jLhYz|HOG02br< z_&!fl3>zwdh_;>o6m_a4Oqf;Hf+VGI zU9eWB&y+(dMK89atf8BGk#?RqM6ERrQA$8BoUKb(NXD{v3AtW4QFby@;7=sC9l8iC% zP@N^Dw-5dD*!wI`?wE7u(WMtXL(2K@#gUR~J*b$YnOWw}u^;0aIs>;Vc` mGJW`01em}DJ|qADzyMx|s~f6*lY|EV0000^6K0h)CrL@%*nc(`+fR?7j}93SyxDen0?fHs5sw>HP8ErvxM!({UJugD2S5NKb5CV=h7={{Ztib>>L0)*k+fAXl{t#=0R#g=%tahO^Ta?w_Vw99N=~pgVF4!Z>P!Ki6BB-I} zA7UV_tD#Ns$HIQQ%(dalOt}E$D^SOOj~EJbv;JR_VljLj?#=+Q&`-YI!>&HEgT2NX f000000MMEjGT#TyeJrng00000NkvXXu0mjfnsmOw literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_long_2_0/00002.png b/tests/snapshots/nanos/test_sign_message_accept_long_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..b4fd10388344467a5dda6e158c49fa41afe9c4f8 GIT binary patch literal 479 zcmV<50U-W~P)-qVfmKb)-001~n{L1QtB}iy0OHP6?aclokUvxh`hCU|Dfa1+@@*P0V)spf|tpL7s z^d?X#(nrcAlx!<{L#CmdpC)aa+C{0fc2NpVXA`Ex6DGZ(K|}{YpMyZAVXag8k0iB~ z6hvC*8fG@sw*;ASM@7o|qk~o|T{9qYRyBd>Cd|%&ft#={WX-9QY(1z3#d+ON(=f=) z^{yF|+l6z)eIWinaB&`{rb711Y6;pi`W-3uzA&M_`_#T2Ou%ytmLY~Z$6x_Qko(7A zCDWl(+w(wQ&1YRGeSiV4Ob<Q_)oJlTC~m0Q~~)Dw?jiuVeK8 zfEz(?)2^U<0Odk8cZ@ zjMwx3@9C7lKnDQ8w&Sm?PqPIXO=n3Y2#s6nNB5%Z^aT1C&;f^ofx! z8M)q7gWm0$-x245=zrkLxtSUYd0rMv(45&1ykgG_lj^It_T^v_o;5fPG1Xav6EKq8 zT!VP=A|rSQoI&ns^ze6}hN>ez0N4hr4tnVK3zap061_$~{k|a0c4W-{bYfEH>p8x;=07*qo IM6N<$g0!I0p8x;= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_long_2_0/00004.png b/tests/snapshots/nanos/test_sign_message_accept_long_2_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..130341173de50f4c8979057b8292cebae3f2b7c7 GIT binary patch literal 461 zcmV;;0W$uHP)=BuSG0%293cdcI9hRg#2xTFy-u-724Wr%gk{Syhc z(t^nQT*J(P`cjY^chY3!9~+XXY|REqu&W8QZo=XU7`O@BLeZQ%DfUBpFr2sjbPXGs zneVD0?{>}ai2K0&f6(SUOihLDmna488U2n|?0peJefOn(JA{De94tc(b!eoMwT-uSGrAgTQ(N!ElBti|b*Xvn1VF6vELJ_I&cSubWWom-oZNY$7nLKy z6^q{YXZZ?ngBaN%HO;DSjV5=p#qSeIk|arzBuSWGj8r$To*2DK00000NkvXXu0mjf D1t-{d literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_long_2_0/00005.png b/tests/snapshots/nanos/test_sign_message_accept_long_2_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..a380871a7b78d5c4ccbc54bc0bacfdc6351b2c96 GIT binary patch literal 492 zcmV$g)TVbVD8~29rGYHNv7XgXb(C7v+pjt0>>0QwvRG7W2+^8Bcz zZY2eg_PK_cj{24$Gw!HLS$}lUN~K#ilsLPZKh@s9gSbz~^ zrP@C{&NFJL&#`{T3h0OoIfz|)ms3)Bn?S-FOhrgJMfRGy)Q>9C2?+I|xUTb*Y?jI6 z7v9H@?ZMPWZwG+RL}Lq;3swgGHGQ#tI%`LXCydU9_RyTRT%aUs;AW=*V3VDn8UsB; zK2Fm1pCsAuO|Ma@uXmv6iAd_+ghBY5L^olSUe%5LQbQkJ%!hiJjY)haGYD=E+b=;$ i;^iNFu1J#P%Xk7URb66R!0{sh00000@K%IzAfW8KyScX{VczzC~a<&Vf5!a#c|3RDcGBuQ9zeFi$&FD8AvDbwO_0^a5e2q#w?Kr_QDXpYG_rtxY243Y+)78L2V|9W}f^c ziD2vMl3J(2fo}zL$wH)ndMc1lOA~f8$&>SMts88I-%&M5k|arzBpJgS8-+!SO@va( P00000NkvXXu0mjf8<*K3 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_long_2_0/00007.png b/tests/snapshots/nanos/test_sign_message_accept_long_2_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..027e89d6ba9864c53ec6ffc810275e04fe5c2fc2 GIT binary patch literal 405 zcmV;G0c!qP)33`2<>m89HwVK?xei<6y-YLI@#W5WERqdlSF%(%!&0MbTj+ zffj&EXd!oTk~~H3JV$sD(ZOnOV1)RZTQ_iNZ_sK0A%D+VMHtP3QlW+JurWX*3Y`Xk z>MMZkJcJNJ2+?LqFDU(1S=Orw9C;%=Vhwp_or^F5ZK~bETL8 zwX~=mZu9xtf}RI$bA(=%0aN<*xmd#J0eyc}0H)|7ZX&Ek3~#x@sU0x1ZfK5m(&al{ z#X5EMjb;%}NmYxYh{=3SPZ@8}DB7dRM8;@W@3r7t5I9hOMNCBHa85Sl1JFmALNoMV QIRF3v07*qoM6N<$f|v<|EC2ui literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_long_3_0/00000.png b/tests/snapshots/nanos/test_sign_message_accept_long_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f8944f36827dbd53afa126617a822db774d0c5 GIT binary patch literal 468 zcmV;_0W1EAP)cTR@t}UpsIZ zujkMIX^Y}O29#2+oBvd0x?5OdC~P@djKrn>v$^P69;OAfwX-H-2{8sKR#@w@+CW3l0z+^cN11KVB#k1H>&E=Np&1Hg5$jJXQB&bkzlMIPrt zYB|q&Ny|`E1|*Xdd2^D|Ta@u}X0!N8vM!D%oUzrK z`2nM1f00000ppiG?+&`CK?k9Hu0000< KMNUMnLSTaF#obB( literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_long_3_0/00001.png b/tests/snapshots/nanos/test_sign_message_accept_long_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..176dda3b8910640dc1bc9cd20b7a6c001f78b90c GIT binary patch literal 472 zcmV;}0Vn>6P)NklQJxj>cWSi;g8BAPP|=3W6XA{wqhd#_Rd3dS)eoo5$4- zY{u*Pxu2FOc4Pn%9Vh-(=QK+|Se%@5k}`?Q{fBe0{q!jMn2-U+t46dFMyqcB+`)2N#_p| zu9XX-TyqUG4fU0vV%%ZKs6RGPsqC2z66aDAXx)U>3>dfx+d@@cI;pM$D;Un(eijuQ znOX0ufoHqsXT*IF{y%UyUZ$oZ_DfcR_KbeVBlf;1p}u=+-wq|`^y-P+P4z)Afw*hTfg!wK2Yk3F>?LJq*eKUQ%Uw-4@wUo1tQ|wgfp{ zhgK`7`we+)8M?MJeEu!&wsp*|iRHq9-fv1n|GBxB)n{bDRwr^nI9gcXp~9H%}2A&$4C>)eaz z!v=RD?h1QhoKmUwf;%cYy7{ZJF2f~Scez9>HJx1)TRdsP9Sx#&0`MB7Y#DN!G=9;- zy{shWF|T1}M}1pRG4J9Q*nco$r^1#EEzVFAXnhE)D`4P57&of!xkxpRhycW6okhn+ zX6|>@hf}$7YNa}0RIUKEE>CcC%&U){fG^)MB}Nzx3v+5v&G6`gAP9mW2!5C+#I{L!6MM&V P00000NkvXXu0mjfO$gb; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_long_3_0/00003.png b/tests/snapshots/nanos/test_sign_message_accept_long_3_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3815cb3ab07370a34f09aafe390a1ae769980992 GIT binary patch literal 497 zcmV<~aEQAaQj|`Aoe4 z{@Lgu&{JfOj7uunD0-l#qnR(4b(>nE^t6^JrKU4Pv&E7oJJ8s?NqvDpvBnL1fqv9y8;Ft!g?d?PDQf)pdJ+Qy3VF! zkeU0P8}x1$en;E~qW^&(=VfXt z?^j8%_f99(N?FG^Y*~sn8qHjdikVS^>w_h(zLfQ$5e8L5w>rHoV!|cTKrEF(6R_3& z$RdUEBogWD{Y`jw^|}7-}QAu;XQg-Go~W n#zg*CL{hjxtv^YU00000NkvXXu0mjf(~{{# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_long_3_0/00004.png b/tests/snapshots/nanos/test_sign_message_accept_long_3_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..112fb9241d5cd9fb9a5a60e6ad19f12f07e0732f GIT binary patch literal 457 zcmV;)0XF`LP)}yPM+a~+ zo{#VEX^CM+1rX7;^RJ?gTf&4@Wi3cj3OA3R^##XiF|;wE0#Y>FE_Z+hmrK%fX+`v- zgI%z!G4@LYp{yGj*Qz_QVYzjJO_B*!N=S4{MznAvkAtXG;U>RzvV+gd_4XX@=EhouH+}eNkF20``#T*kdpm?+G`U^1U>YDN_wTS-6 z_+7A8CeMURDAiv4jzYyW&nD@Z+C{6icF_vWU>9LcCQN=uC(%0qeh!jI!&;`iKdY&= ztRPC8Yna*5*b)@Roi#b@j}Kd^e94ZQq^Sw?Zo+B?oVW@5m8!aQQnkY@IL`ZihKilc zT<@A;-*(;Ki1$JG|KQCyOie}Xm(>z<&*%?)V&4}f)Zd=kUxyNKjKMO@P-6@h5Cr+E zF}QH-PwBe#7!M9s4uD|bF37qT4bNFtu^3@DMb4H+E%-&tGJ7Msc1E)!lC1Qb ztYYRN=|j>~(ugCYisd-_HuM+ks#2Yveb&bPX;PUp*{2Nvxl4^KW=xGcGpN#ZZJuNK zFG=|mO`dhjolker$1N;mW(HU(9PXbU1b*=ya0001hc0RL0O^(;;lQ#eW N002ovPDHLkV1ne$*E|3K literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_long_3_0/00006.png b/tests/snapshots/nanos/test_sign_message_accept_long_3_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..4ad1e08a65a7c0287e372fef165d480f074693bc GIT binary patch literal 450 zcmV;z0X_bSP)=*RfS$)z@)inMT7)GM7&G{007`qIhrkA&mYs%lz=pkyB*k! z*Yo%Pw8Zd21`yG4%AcxEw?qg-Wy?u25|{fg#^U>#G0ZU`1By4tsSiLn$0em)TM_-y z@w*VULSHDCP^!K79fgKzzM8aSxQkXTchL&X#V$fgCQN=ugXoP&KceRNE0PIL`ZihK8NY zT<@9@XS?n*;yzUVKV&s7Q&Xw-OSS~<8T|`K?0r!}{qCv#b|?YI94x~OHRfOeL6HCV z9Na#-+Z||NhOhgLfAm|BgLT1CFEXX9Ui#EFRW;|b#?K)i@jXL*uoUHtj?=93b|$Kl zR!dlz0U4aTNXIqBdMH9qji>QhnSGt44LPoK+bhc1U$! s4IeD2{ofh}THU&>0ssI2000=oH$z<==xUraJOBUy07*qoM6N<$f;j@l>;M1& literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_long_3_0/00007.png b/tests/snapshots/nanos/test_sign_message_accept_long_3_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..6af664846683974542ef3a602f73f38c987a9206 GIT binary patch literal 318 zcmV-E0m1%>P)33`2<>m89HwVK?xei<6y-YLI@#W5WERqdlSF%(%!&0MbTj+ zffj&EXd!oTk~~H3JV$sD(ZOnOV1)RZTQ_iNZ_sK0A%D+VMHtP3QlW+JurWX*3Y`Xk z>MMZkJcJNJ2+?LqFDU(1S=Orw9C;%=Vhwp_or^F5ZK~bETL8 zwX~=mZu9xtf}RI$bA(=%0aN<*xmd#J0eyc}0H)|7ZX&Ek3~#x@sU0x1ZfK5m(&al{ z#X5EMjb;%}NmYxYh{=3SPZ@8}DB7dRM8;@W@3r7t5I9hOMNCBHa85Sl1JFmALNoMV QIRF3v07*qoM6N<$f|v<|EC2ui literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_long_4_0/00000.png b/tests/snapshots/nanos/test_sign_message_accept_long_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..bfba6951162ee1da1f353c61261d1b9200380687 GIT binary patch literal 468 zcmV;_0W1EAP)8nf;De>~&#MefFh&I+%p#985z@b literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_long_4_0/00001.png b/tests/snapshots/nanos/test_sign_message_accept_long_4_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..754d07d9a8fc720c42401016924561a6ef160c55 GIT binary patch literal 446 zcmV;v0YUzWP)fC@itveN#N%8ZwDsh z`S`w1Lkt@-fQXir->N#*5+=+lTTYUZxT*i_S+JiTLmwS7VDn~K^#@?irIPJhS`q!| z;2~Hm(`U+CDAiH$Kv_dK_af~)sf$)?>Y^2z#v!s2PnhsPJ5f6UI0s3jVXCt|Ka-?Z zRuE;MW9T_hTM5d>oi%~_gJG2lYgR~{U3H*#5mqx`$3++mRdea2+7IgiIFJ3z8dlP? z-W9|4cGY{tc@X~JcyoMAbw#X~NeP-W`VCv`c~L@r^wd5aO2A_dhGB*}=3oGsAorew z!E;>t+1#7!zT%TifMD-`L0LW<0PC+R{@Iy5jgYs_52dS|YN$0q3UR9?1h>xNhUdg7 z4rK5g_&fPWMH*g$c88T3S$T^38O|v(fV8u@2^Lrn6K8;273Eqj)xcT`n$%su$yZ~{ oLEhhX&QgL7OH4oz1i^KA0gqc5y4jRf7ytkO07*qoM6N<$g6tN_I{*Lx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_long_4_0/00002.png b/tests/snapshots/nanos/test_sign_message_accept_long_4_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..8fbe2b11e3b63e3326bb194e71bfc34428b651ac GIT binary patch literal 403 zcmV;E0c`$>P)#WGM9HZWL*Apcma~r^5djRtFpO1k(h~qU_V2aZ-XGm2HJ!yc z_LBkD<0(A>LKp$mHa?e0vo7amPHLv z==E;Xsy^Jc2p9TnxRx@{Ygunc;VaAboE{CLqhKX}p?3;0Z{>-CzH%p=%P`&5kNicA zQG+tN!2obp#C-n}9~)GqAX+$@`j=>p030R4)Gy(@jc-_lBe_le68bk$bX13ONS_CU zt<7YQlkU{&?m#|gmTU%ZV}f1~MkNhTG)z({ngheWY4TSo?(nAz x_+;`GMt^4QtxlYR)m1gYoarBO3LH$euV2HeiC{**okfHIi+m$sv2p+{O|Q}I5aNh^Ys5dP#v zj%1qABdJ+S6K!y2Hbl8uvs5Q~cSHZe-9%(GG&6lVhU>>5GXsQK^2D%BBCpwrIq!n_ zbF$#pv0JKROAs&1vS|{M6`m6<_23d_XsOOAL5k@8zo4r@s|o-B(!2ofEx#wWs1tqw O0000u~cSVrLD|67=%K|K#SCAB7_h!Dzo(jTCB^rJb%zGpe1Qj zEV$9B=JhqnWw)h6o-Yx3ha$aUv{0HH_>+O;}#m z6BwNc9#BO)55k|i@txW=4SA`42UL-%em5#oQ~l0x4J=_4vc&QnUKe%zW-ejZ_bMBt z^+GJScr|a6Yc#RS0%G%Pq1k#f4sOCSeJ?LlNR1@IrL5ykIOmN^U0nStadH1I96N0Qi3^IC+Fb`D_I$7J(dQ5WGtJ6L-+uP zoNiY|+S#}Gpt@&~HO>*?$`eph%H32BjlR0J7-WX=#EU6P&gfl$eD1hI6(t9O^iT~6 zMINr%JMC7uoA~$fqu-@`)g@d7N;z(Bujw02H`<{s|H!{ZKA0VX%1K%-VG_e`o}1;) zgc_hi0m&9*Gw$)xb9Pro53S$g%%D+wkwHXt2)f{s37jB>!F%_9Mk+pUtgaUTOzn$j z`%J_d+=-`0q3_1|Pu{@ms%m{Rp0h^IBTGU3uV6 ze#i{FPe%7Ro6yU$pxbVznZXB@=wg;bkT8ouZ;hU~V)7;JXpSmA%HhSuJQpKLV6W_w z1yI9FH#5h`g27bEsL=a`Bg-l8?MbIhDPKJ>4TTwG>!YbxHri`}Kp+qZ1Og0y!KKHp T6S5h`00000NkvXXu0mjfvYhd) literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_non_ascii_0_1/00001.png b/tests/snapshots/nanos/test_sign_message_accept_non_ascii_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1595214cbee85401e19b9a799874b754c0d36dbb GIT binary patch literal 511 zcmV@$WdZS0001hmt#-I-mrW!nd!agY91GF zY+E{0`s-@_TWt5o!LiH7WEo(=1W-abQRk^>(Rvx-Y@fUhci2UqkB}|}Y!|%<|pJAdCKuF#Z$B~)?%{)W0#C#mWdUrcNXu2#RzntZ9gSE2r-&43!gGrXC4$ zTEgKJLZyh6)xj5BTm3aPkF0AJ?xz_v+|e}wvAaB8Ec^|nTJ}rQc=e;;Q4pE{{$@9R z4~Q+bdZ*D{R8>(xxHpeQ4B;H9ry~FW0000e_y<-Hgt=+Oo`C=W002ovPDHLkV1hTu B@B#n; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_non_ascii_0_1/00002.png b/tests/snapshots/nanos/test_sign_message_accept_non_ascii_0_1/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e49d18f2bed293843a672e385c97180476b7463a GIT binary patch literal 526 zcmV+p0`dKcP)jHmZy9y$<^12uzrh;9J+9apHKG^%q; zc;w-ny=M2q-NfbNt{-Cln5K}9CQ#~eb9+wz&}^XrZgiFSSu#5W)kY$Ra8YA7+2%bn zdqLTpe##ngpiw`&E29^s-=fT*P_W2&;n6<6!uJydEeziK?Gvc}{1APvfMD7eTl<;F zJ-8E}9)-Re?~A+%k9o66Y(F){ZLvBnBeQBcr+}=uEeb20zssD4=u2~&daoY4dNtu$ zdjAJ!RU})y63v0$o071q5)Na1S{#$Ot`b(dK+|XSfK;})xIpy-n&U0tyYq|XePZSw z3tYGtn+o)#cqMZFuyiJa%G5b!-;c-0m$d(jY?khhUunb;A$G#MPf@Gib}& zT%4t$1SKCebG}$62PTDzxE@8fMfu08{16q-fTQ!TDLZV5L?V$$BogoV1vNIw#&+WN Qb^rhX07*qoM6N<$f>Po1umAu6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_non_ascii_0_1/00003.png b/tests/snapshots/nanos/test_sign_message_accept_non_ascii_0_1/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..ab1518e49756656c2d5a11c72fc933d605926f2f GIT binary patch literal 492 zcmVecjIwERX-V9j?700=riiF>0P>3Cp;VHb1kyuQ zBq{T7%dIc0rMo6Od~s_D(AM!7y#hqifR&wY#5#0-sWBk>8Lc6r<1usq%Do8Lgh@$R zr4G00qNQWExjRT;FJDSiyAJi-^_ED6I5mv0sz+TtDFXxv>%h8k?w2v--;EL8?%pr_ zg~S-_%Y^Ibfg|jGe_r>v`{cdkDuQF&Ce1_4OX6_y*w#mT74Y^LzbiI`h(|n( zKc9j`kd;0*8@Sf;&S7jJ^I0+g-M!zs2%0<|=le(7(hEC=jzat6#XUIo30;r&QF7Ta iGzfwq2!bFWBBEdZj(9>KgH|@ zz8wshkB{~MB4`H0-uM*3M1j}m%A!300N{kCpu~9KJs1LQ1E{7`qHO>OJQ#XfRy9Bv z^==(ieYk597RD@{OEdS6GT+Lmuf_h$vek1^KVM4p7nbmHWt7bot=9>X{;(33tDmYc z&D9U$Wf)T#sV`+WTVz^Qo=ISYs`0?ozXTD=g%{*$&h`n6Q%*!K%L9vjA?<}S_3O~y z51_40w#ON-)XL64x@JligSXK^F9>U5TpZCDR;l1-dd45KJ?)^knt8<|^tT^?&`+$? zRq8>0Bcb3GkI=CJNF3=@I3K*Rlqo0JRixhcTL&d5MMji-{W*PXyu+hM-x=UTI}_BI zGx^;Gypw%}(Vkv=s~wl1InZ7QJjtlNRl_ihQog8p&yJp0VZ8tV002ovPDHLkV1iJ- Bw$=au literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_too_long_0_0/00000.png b/tests/snapshots/nanos/test_sign_message_accept_too_long_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..ab16f62bfcfb15701d788a6a84fe55001d152730 GIT binary patch literal 368 zcmV-$0gwKPP)m1gYoarBO3LH$euV2HeiC{**okfHIi+m$sv2p+{O|Q}I5aNh^Ys5dP#v zj%1qABdJ+S6K!y2Hbl8uvs5Q~cSHZe-9%(GG&6lVhU>>5GXsQK^2D%BBCpwrIq!n_ zbF$#pv0JKROAs&1vS|{M6`m6<_23d_XsOOAL5k@8zo4r@s|o-B(!2ofEx#wWs1tqw O0000u~cSVrLD|67=%K|K#SCAB7_h!Dzo(jTCB^rJb%zGpe1Qj zEV$9B=JhqnWw)h6o-Yx3ha$aUv{0HH_>+O;}#m z6BwNc9#BO)55k|i@txW=4SA`42UL-%em5#oQ~l0x4J=_4vc&QnUKe%zW-ejZ_bMBt z^+GJScr|a6Yc#RS0%G%Pq1k#f4sOCSeJ?LlNR1@IrL5ykIOmN^U0nSHe7_^gm=w?&s91zGH7(+f+w?NtV4=%d`{U9CusTaFVG;g; zMPIL*vew*JVrYh^=!$JboH+yXntU|nMKRW{AqItEKI!EUBU|=%K$>?xprR%vf%Q*O zG?aO~<=$r3(%pft&rkhb#;;n0i$uxu=JYyzptYUuu$F$-KScgGItAs8R2E^QX*ab^ zSu>#pXppe_f@0zrADw4+?dYNRTY?#Msvk1UtV}^CEHc3cmIm(~`-%1NdE@E&0zlKg zxV4{2^ue8cdKUU_wl8@CkBd|5zwCD72*tW?c)UAkoQUzLpdx%knptZF*R8qk-sUJ5 zEWH=DMP>7Lg^2Yk=8s57L_icHuD3k$I$9it;!qvixCK!uZ#2Dy^?uIN~!%RP7k$|C1y?~|J1}pJ7#vub#x8#Erp|q!6mWwit|1o+ksjz zqL{{o9pDka3iN(FAd1ahO3p}^?2Z{&_X~Zq#%pVcYr|< e1VIo4&*lxh5$exdLF`Nb0000Pza^0o7-#nho(15k>6=dGNsy@@MsCjJBcj9p(0ti z4~?l(6J@n}Y>Qp1!Ed}*rmou2v#no}OlPCuA>-sx{ybyuI|)e!ul@ED>HK+?v4~t08O0RU@0K0ruVl zzkXpYavboEx8`ZRN>VNAEfDyMK3R1VHi3U8-@k8eIthaZOMG4P5N~F3c0<8Ol~NmJsIz5C9x2d;JszhPfL+-!PvxU} zqdrPHE~>P0AF;tUPp!8u`7O-MfFtGjp|OmP$@DVI(t&^yh~11sGys%$(jZ1*rb|y` z<&l!TZr94)!0D5z9}@l;W{?e5DDAqrJcoa1ZKVNebd~s8GP(pEokSMlV%Bc*&AVpS zigI)KuB#`3dh_h69lfgk5@R}*f`^P39{lx;+)og!GI;H`PoVSXP3)Ng#kDW?_MXTX zT#36^q3_1~BrnQqc4~cN7u$Kp#wd30rN$$58GRl^j@J=&Ct@7n<0>uv&(+-J{mD>!zw*>aG1tkqoMN$fVou!!ZK_FzTa5yi)(S*rV{yc0jn%@@%$& z5&7r+l8hzt<*ku{wWtDr0AzVJ{tegz1M0x#Cw8C#9Z4h-i9{liNOa>D6BUBFm9n8O P00000NkvXXu0mjf^acD- literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_too_long_0_1/00003.png b/tests/snapshots/nanos/test_sign_message_accept_too_long_0_1/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..a8062d395d3ed032ba5ff5680cb1f3182b3338de GIT binary patch literal 497 zcmVhR4OjiAh<&}?9UYjT-7RH$C@n;=C`zV?(gB@PT0{EniWh-Emj1z4vf>DMhmzKoc$&TC4GDSo?2cWMw9?B%?Nud3i ziX>$oZaMnETDl9_;fq^KfVPfD_6iVb12%TL5o_xFQe!~$J6c0T$0KzB#&;3&5+)^O zjXK<>i8}02 zUr3F?nS6B?x;*clyb0CE-^1FmW!gCZh5%gSh!XO4;`~e(a>1=F>X~Gw^PwRet3Zi% zlf&(clE?v!;xtB4R{Cb4tZ3a5V+_o~)C?&8fJq&IDRl9(!Fc1iFPrluquHNm nRfyA32e)4oMNt$*QNX+axC?+K>X#9a00000NkvXXu0mjfDd_7f literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_accept_too_long_0_1/00004.png b/tests/snapshots/nanos/test_sign_message_accept_too_long_0_1/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..f5c2d6774a86d59f5cad0974eb03748765433d08 GIT binary patch literal 407 zcmV;I0cie-P)H|@ zz8wshkB{~MB4`H0-uM*3M1j}m%A!300N{kCpu~9KJs1LQ1E{7`qHO>OJQ#XfRy9Bv z^==(ieYk597RD@{OEdS6GT+Lmuf_h$vek1^KVM4p7nbmHWt7bot=9>X{;(33tDmYc z&D9U$Wf)T#sV`+WTVz^Qo=ISYs`0?ozXTD=g%{*$&h`n6Q%*!K%L9vjA?<}S_3O~y z51_40w#ON-)XL64x@JligSXK^F9>U5TpZCDR;l1-dd45KJ?)^knt8<|^tT^?&`+$? zRq8>0Bcb3GkI=CJNF3=@I3K*Rlqo0JRixhcTL&d5MMji-{W*PXyu+hM-x=UTI}_BI zGx^;Gypw%}(Vkv=s~wl1InZ7QJjtlNRl_ihQog8p&yJp0VZ8tV002ovPDHLkV1iJ- Bw$=au literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_hash_reject_0_0/00000.png b/tests/snapshots/nanos/test_sign_message_hash_reject_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..ab16f62bfcfb15701d788a6a84fe55001d152730 GIT binary patch literal 368 zcmV-$0gwKPP)m1gYoarBO3LH$euV2HeiC{**okfHIi+m$sv2p+{O|Q}I5aNh^Ys5dP#v zj%1qABdJ+S6K!y2Hbl8uvs5Q~cSHZe-9%(GG&6lVhU>>5GXsQK^2D%BBCpwrIq!n_ zbF$#pv0JKROAs&1vS|{M6`m6<_23d_XsOOAL5k@8zo4r@s|o-B(!2ofEx#wWs1tqw O00005dzR{BUP&j%g1^G zvlF2Lx=`yu_*FN4QM-n5FTAe+>123cjgG6~ePs{>OVEWZv0sO&pJ0y@_HBqpa`i3j zQ=IyHl;f&_M00h(ULA?tadH1I96N0Qi3^IC+Fb`D_I$7J(dQ5WGtJ6L-+uP zoNiY|+S#}Gpt@&~HO>*?$`eph%H32BjlR0J7-WX=#EU6P&gfl$eD1hI6(t9O^iT~6 zMINr%JMC7uoA~$fqu-@`)g@d7N;z(Bujw02H`<{s|H!{ZKA0VX%1K%-VG_e`o}1;) zgc_hi0m&9*Gw$)xb9Pro53S$g%%D+wkwHXt2)f{s37jB>!F%_9Mk+pUtgaUTOzn$j z`%J_d+=-`0q3_1|Pu{@ms%m{Rp0h^IBTGU3uV6 ze#i{FPe%7Ro6yU$pxbVznZXB@=wg;bkT8ouZ;hU~V)7;JXpSmA%HhSuJQpKLV6W_w z1yI9FH#5h`g27bEsL=a`Bg-l8?MbIhDPKJ>4TTwG>!YbxHri`}Kp+qZ1Og0y!KKHp T6S5h`00000NkvXXu0mjfvYhd) literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_hash_reject_0_0/00003.png b/tests/snapshots/nanos/test_sign_message_hash_reject_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1595214cbee85401e19b9a799874b754c0d36dbb GIT binary patch literal 511 zcmV@$WdZS0001hmt#-I-mrW!nd!agY91GF zY+E{0`s-@_TWt5o!LiH7WEo(=1W-abQRk^>(Rvx-Y@fUhci2UqkB}|}Y!|%<|pJAdCKuF#Z$B~)?%{)W0#C#mWdUrcNXu2#RzntZ9gSE2r-&43!gGrXC4$ zTEgKJLZyh6)xj5BTm3aPkF0AJ?xz_v+|e}wvAaB8Ec^|nTJ}rQc=e;;Q4pE{{$@9R z4~Q+bdZ*D{R8>(xxHpeQ4B;H9ry~FW0000e_y<-Hgt=+Oo`C=W002ovPDHLkV1hTu B@B#n; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_hash_reject_0_0/00004.png b/tests/snapshots/nanos/test_sign_message_hash_reject_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..e49d18f2bed293843a672e385c97180476b7463a GIT binary patch literal 526 zcmV+p0`dKcP)jHmZy9y$<^12uzrh;9J+9apHKG^%q; zc;w-ny=M2q-NfbNt{-Cln5K}9CQ#~eb9+wz&}^XrZgiFSSu#5W)kY$Ra8YA7+2%bn zdqLTpe##ngpiw`&E29^s-=fT*P_W2&;n6<6!uJydEeziK?Gvc}{1APvfMD7eTl<;F zJ-8E}9)-Re?~A+%k9o66Y(F){ZLvBnBeQBcr+}=uEeb20zssD4=u2~&daoY4dNtu$ zdjAJ!RU})y63v0$o071q5)Na1S{#$Ot`b(dK+|XSfK;})xIpy-n&U0tyYq|XePZSw z3tYGtn+o)#cqMZFuyiJa%G5b!-;c-0m$d(jY?khhUunb;A$G#MPf@Gib}& zT%4t$1SKCebG}$62PTDzxE@8fMfu08{16q-fTQ!TDLZV5L?V$$BogoV1vNIw#&+WN Qb^rhX07*qoM6N<$f>Po1umAu6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_hash_reject_0_0/00005.png b/tests/snapshots/nanos/test_sign_message_hash_reject_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..ab1518e49756656c2d5a11c72fc933d605926f2f GIT binary patch literal 492 zcmVecjIwERX-V9j?700=riiF>0P>3Cp;VHb1kyuQ zBq{T7%dIc0rMo6Od~s_D(AM!7y#hqifR&wY#5#0-sWBk>8Lc6r<1usq%Do8Lgh@$R zr4G00qNQWExjRT;FJDSiyAJi-^_ED6I5mv0sz+TtDFXxv>%h8k?w2v--;EL8?%pr_ zg~S-_%Y^Ibfg|jGe_r>v`{cdkDuQF&Ce1_4OX6_y*w#mT74Y^LzbiI`h(|n( zKc9j`kd;0*8@Sf;&S7jJ^I0+g-M!zs2%0<|=le(7(hEC=jzat6#XUIo30;r&QF7Ta iGzfwq2!bFWBBEdZj(9>KgH|@ zz8wshkB{~MB4`H0-uM*3M1j}m%A!300N{kCpu~9KJs1LQ1E{7`qHO>OJQ#XfRy9Bv z^==(ieYk597RD@{OEdS6GT+Lmuf_h$vek1^KVM4p7nbmHWt7bot=9>X{;(33tDmYc z&D9U$Wf)T#sV`+WTVz^Qo=ISYs`0?ozXTD=g%{*$&h`n6Q%*!K%L9vjA?<}S_3O~y z51_40w#ON-)XL64x@JligSXK^F9>U5TpZCDR;l1-dd45KJ?)^knt8<|^tT^?&`+$? zRq8>0Bcb3GkI=CJNF3=@I3K*Rlqo0JRixhcTL&d5MMji-{W*PXyu+hM-x=UTI}_BI zGx^;Gypw%}(Vkv=s~wl1InZ7QJjtlNRl_ihQog8p&yJp0VZ8tV002ovPDHLkV1iJ- Bw$=au literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_hash_reject_0_0/00007.png b/tests/snapshots/nanos/test_sign_message_hash_reject_0_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9c7e7049cb3e9bcfb1601ec510ee465d38229d4d GIT binary patch literal 340 zcmV-a0jvIrP)b=%MgRq*37h4eRxPbkJCLY|1VIo49_}P}TKpH4$L<8?X{t;p zy+UQc_4@p%0?~E_&igM#?#L~IOHR(-<@sYotiy&C*Y&GII0yeh-p3zW9cv$Q0k>6Y_)5~SfP=m zSMUtz)%Ex|-o}7!H9hbQ(8{%C?kQVa?C`*Uj-J(h>P7(Y#?ZWvi?6}@n{fGLp>YTp myqR(V_$?>^<%seR_VWh!m1gYoarBO3LH$euV2HeiC{**okfHIi+m$sv2p+{O|Q}I5aNh^Ys5dP#v zj%1qABdJ+S6K!y2Hbl8uvs5Q~cSHZe-9%(GG&6lVhU>>5GXsQK^2D%BBCpwrIq!n_ zbF$#pv0JKROAs&1vS|{M6`m6<_23d_XsOOAL5k@8zo4r@s|o-B(!2ofEx#wWs1tqw O00005dzR{BUP&j%g1^G zvlF2Lx=`yu_*FN4QM-n5FTAe+>123cjgG6~ePs{>OVEWZv0sO&pJ0y@_HBqpa`i3j zQ=IyHl;f&_M00h(ULA?77!H&%#*uH5tLv-qX3TMIL@vd)fUgk+w@FIoMLX)4lKs= z@%=wdF>J^H060$klhsj6kT9#9auO1W8~cymMfS7Au#5p25WG1~{soY8u_QcGD}Wyz zc?i^s^pSE1B|C~dP}Z=RdzE&c*u_+9>|!c3jYDK5C1H{W>V$Rzm zQbDAB&SB(0Z6zohchn@*9~o4sWKD&nu&V)R7hyI7IxfPpkTs`Hvi+bQ1m|TxvxZ7W z*1KxZ-cG$oTnFO+4LAG8)KJKJ8I_eC#`y5Ol6J(P) zXdkrjtJs_cU3&SX@C@xxuSxH-pf02iAgKa-l!VSZ*$&~K?yoe^3}ByyhjNo_>vXIy zWIlgV_C#+37AQf6ac2)%=d!>A2$x?-t$Vx{sQacRh~6vJW<%rgTrl6V^r`3=DfSlA s0_#P1d+IM_Oc=3R%2zs$<2W1e2jNQ>kDM-e1poj507*qoM6N<$f_W6hN&o-= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_reject_0_0/00003.png b/tests/snapshots/nanos/test_sign_message_reject_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..8fbe2b11e3b63e3326bb194e71bfc34428b651ac GIT binary patch literal 403 zcmV;E0c`$>P)#WGM9HZWL*Apcma~r^5djRtFpO1k(h~qU_V2aZ-XGm2HJ!yc z_LBkD<0(A>LKp$mHa?e0vo7amPHLv z==E;Xsy^Jc2p9TnxRx@{Ygunc;VaAboE{CLqhKX}p?3;0Z{>-CzH%p=%P`&5kNicA zQG+tN!2obp#C-n}9~)GqAX+$@`j=>p030R4)Gy(@jc-_lBe_le68bk$bX13ONS_CU zt<7YQlkU{&?m#|gmTU%ZV}f1~MkNhTG)z({ngheWY4TSo?(nAz x_+;`GMt^4QtxlYR)b=%MgRq*37h4eRxPbkJCLY|1VIo49_}P}TKpH4$L<8?X{t;p zy+UQc_4@p%0?~E_&igM#?#L~IOHR(-<@sYotiy&C*Y&GII0yeh-p3zW9cv$Q0k>6Y_)5~SfP=m zSMUtz)%Ex|-o}7!H9hbQ(8{%C?kQVa?C`*Uj-J(h>P7(Y#?ZWvi?6}@n{fGLp>YTp myqR(V_$?>^<%seR_VWh!d!#l~DqPMB{( zgN6*q4W%kTVD!-)O%{-LL=K?mLa@-m1Se!xq}~Da{K8aSbjoxQWdISdoLGh=h4FI7 zTmx&ZCp%h?8@QbyWW*(V(OUlj{ksl}aA=6ctIqsyAP?{9F5q}d3iyaBm%%j;#8eYV-_KT)YjfO8>1}oNH;K2xPK^(_%9LI5P%o|!bAV-ethrs{< N002ovPDHLkV1i0%vtj@M literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1b5bb48f8d971a18221f9b159e10445cf32efac5 GIT binary patch literal 432 zcmV;h0Z;ykP)5JW-U(+tTsH$WmYbiBLTgPi{V8(zi z1luO+u8{)42USB*e}@TMb3~vw2$n>^xY(4ABl%5+ixEIAq%8nxnV}|=r+=0$#w70( z(Y?Rxk!R0wu-6}E>NGPWz}=h1Q5l(GQ%aGxm>-P|q~;$()ex8cNngN%1Idy6XYbRh zKZ2_8pL>5LimT!M#b6C~f-JO?lylgv+B=l|Bw~)D5W7?*HET((v$Vp!nS~gMg2ir8 z`<8W?>{~NrT(Xu$)A=mrT|?^EZPZeb+aA2>?2~k@#04aiqAEE8NR;VovO%7e*_x9V zKwg!s3ENaFt+%iy1Gk}ZSYibQlOmvYcCoWjUP-!Za~_`R)u}re^^$dPH()aX00000 a4D$h$mpBwoRu-QC00005h^ZpM!i*}K7W*9&a@Df|TRZI~HQ8a%`Ns=T<5*x3df7hrfcc~dH2S$h< z3L4N~*E|slR}IBvvxHj4)n5Z)KixeQU`)rUn;qxh{6bw=SM(;j13lBRuBH&!2EcsL zCNi^LupS!yJBA1jEx6T~vI62}T{>F3z$HSLOQ!`i>;)9AGSqCw`FD>c=eJ+^dic9u zb@n$7)ZCg`*)L;PfI2sYt+M3_O(lhnh4P3d5IP;u`Xjgsaoa=s1SV`qisd(Fzsx!j zRE@tp`!iuuo!OsEzJrxy6>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxr1K^fVM6g!1a9bqS9q)4u1_J0ssI2;@Q^d6U@x6zMBuyIQt%b zfHqvCvb_J6MLxhSdM(~VM`zdPXGdp%xz>yCjiKD44?sjLT6v_;L7EaYneLS|4$zf- z4iY$kcTRd$poJ+gDZ)LYJ%Q8#%%MX0G$u$7cUd*@YR5t{coWMZ~O0000G!~=lMlR(?^ R`b7W$002ovPDHLkV1g=1i536= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..ec6a7529b3624ff369d1e75fdd1b33253c8681d8 GIT binary patch literal 502 zcmVmY3x(Y(NMjD#QFvWDcoBy=5R_Tivtau0Z(!xys@R78S3@(&F;u9Nkc(6km6jo? zL)0Ku)ofucQ`MbNm9TvR`5~4%xAvt&i_@% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..2aa6c98d14d4b787e2ab8c3ee0c7d5c9d96b25a8 GIT binary patch literal 499 zcmVXwH{fsd1WAy250Ygq{^>YiZ$R{Wg-~r6f0;lqjL&{}4fQS} zvTw(ET-FYY$tH-IB7~&Ai^#I}iIc`9C8*B%Nj!juMvNtWm`4$tm&PBm==xYHXlf6K| zvhng&4CjZGMq3gLK}A%Yvh$E$!%2s!S2G3sre;+nt;7dY1M<9s|1m6ChUv*H(}^8s zxw-5@fRIrEZ43k#luFszfFu!9mX;F024`4@AdJz}LQyaxLY1J=WQa{l%Zv;m+JYj_ zL@<}Ip#WslRhrG{b(}?o!rG9#0rsI6Bw;aDlJy2SNHycWMQl=IvzAe9G(i=A%kaTC plDPa;ban~)dH4o691h3t;ti(-gZP+plN$g4002ovPDHLkV1ifP;;R4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..a1748d3d392faa8ccb8e5896f662535647b72ec3 GIT binary patch literal 324 zcmV-K0lWT*P)2t{$#-2cE{q#GBh7!OH|r~aodT8O}Wu%o0z0001hEvLWc%3S{>`{~0+y&(3s zUB)oDyo|TT_;3L!OU7&8fVXvmB$c|e#T}P_fUTDe|jIDgx%y_zaHZUF;mn>Inb5$cR-hSK_CqpFc>soFzYu!{gWL400000%*_W8 WV!W^Kf#A3R0000>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)HQzLMeP^^b-YAK{@<#wW(ZI&Z5sdpfK>_B3RG|&x7)BA>9H)#0pH?p ztw1m271|I?A|C*q$Q?kEnv1z{vIAmkvH(v$LlT7l1610&^4-b!Su3DS*eCaalQLAE zBuK)bhq<@o8o&qkzz6og2bRG4mfWpBT!tn`mF31Y*~;b$&14ZNm-Hm@Qm*8!N2@t! z)*SCt3nQJTK~Tpr|PjO&8b~DtXfcW0Mjf!_dU8n zLSHoYIqx1p?o3Zvp^zTNaPmLE3RWN~1khVKpfz@Aj4V@#TzX1U4@Rv300000V_dzI Vtz1PDro{jN002ovPDHLkV1mG$h!p?; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_1_1/00001.png b/tests/snapshots/nanos/test_sign_psbt_against_wrong_tapleaf_hash_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_highfee_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_highfee_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrT8ViJ*y%0cO~DGMG`jYrskb0002^^L}}+ATuBJ%{&NW_S1U- zZMa5d`8}4Uet}11yBde~W^eCjM}7fnTQ;r-U3qvffQZ;`nF3y z$o`#7D?-{Cv2%8mU2`L?d54%H@4#f8M>TRX-WjTD$cvyek^Wp$iE$Tn2XdpGiI`*i zPq=@99F~bGNMLI~^#gd`k8FclpC%C?1x1$regYVf8`l~z`cZE;pt6L>uK$qZ%o-U0 d00000Fjh$!tw?2#e_sFq002ovPDHLkV1lCOh)w_i literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_highfee_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_highfee_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..67cc27f5cc81b2c10c3e506e1c026250eba8a97b GIT binary patch literal 473 zcmV;~0Ve*5P)W+)WWy8o*h?%|~-HD4xALU`h15mmFvIR}3fL92|G#b%9WgWl|_Sg%_yKN$}{Z z9RT3I-f?%F4F;n+D7Oo5p5r*%*qO|bC8*(eqBX>?JbsP=`E+giX8?S{s-IJ$m>nC! zm2}PkoZwDE`bc$L*dToq_MNKc;m0Q=)9=Ji2E~JF?hQrZmfnYzCP31;tM?a#aJ6}V zFg6D>u~ld$<@>NuP1|zjWLJdc5TS-zTi8%*vvQ^Lr^zbchVmS5hzGIIx!g&IJK%Vt z@_@S_Pe6hsY#*w^y+jf$Bvo;0BMtr}hz;hbJ<1hiR$~1!{Q`fgyGxp0}B#D P00000NkvXXu0mjfxUAOP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_highfee_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_highfee_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..54a169e0b44738a8ed9026979e566d298840b542 GIT binary patch literal 515 zcmV+e0{s1nP)9! z+p%igMlsKL>nZ$D0jF|->$4UXP`h2SQ z7esJ%dVew*gFDGp=uT$r!(v)d%S2Y&in>=KoRlH044j(OG^E7>;&*w%AQsk|fClegGpNmG$>K{gMCx002ovPDHLk FV1g9C>Tdu5 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_highfee_0_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_highfee_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..34ac2789dabe22dae9d5e568dc5f92fa9765031c GIT binary patch literal 370 zcmV-&0ge8NP)2t{$#-2cE?q?^=I!2=%fkp8DEQi!nqv588E00000TduRrm3Y2o^y|E@-~-az zcN)|1%S(7Q#>NT6ED5iD0^ZgGL{aMQE$%4(32x*G2;Ns1S;90)l_iJ`p^4d#muYk& zqU*f(qdPh*CM!^O2zUI<#7{5iwP#2P>bM?OTYTm5IVPd$+Ss1}`fe*bQP`dxyM-HZ zw&CSw^cE(W_c9}kQ1=p+gKB~Y=WotFd#8ZvMRivr6Y!Dh(@F_Q#eAyz3lfkT>JJ7v zmC%FZ9aR}I03$YxwDjYtdRgou&>$W>+$|o3jhEB0N??900YPZ7yJLl QyZ`_I07*qoM6N<$g8lHM!2kdN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_highfee_0_0/00005.png b/tests/snapshots/nanos/test_sign_psbt_highfee_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)b)eEg27;82UgGP(2hpEMNet$6*T_UXqJu<_W1DNE?9q z?`6QAhl@7VEE&@i29N?pa-Y2`!Bn(Gx`b&@;}Txk*o!@M2%_%*b_20peHG-$K2p=M zp}A0qUKK~s$Ch3#D4l+CC!mNi;T%YAUhZ#U+6h3qF4bE&-ouG(sHE;GSMeEN?y-lP zca+|Le!3K5&fLgjN%aIe#3b~Nx;hn+w>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)=73<^NViIYWR5I0pa#U{}1g0t&v@?be@0dTdMNfVDWR z6)1(gLK`BI@E1TKd$V9e*U|_rE_V{za&> hC;4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4f6ae5978014701165e255cc71b61711a4fa4bc9 GIT binary patch literal 419 zcmV;U0bKrxP)d!#l~DqPMB{( zgN6*q4W%kTVD!-)O%{-LL=K?mLa@-m1Se!xq}~Da{K8aSbjoxQWdISdoLGh=h4FI7 zTmx&ZCp%h?8@QbyWW*(V(OUlj{ksl}aA=6ctIqsyAP?{9F5q}d3iyaBm%%j;#8eYV-_KT)YjfO8>1}oNH;K2xPK^(_%9LI5P%o|!bAV-ethrs{< N002ovPDHLkV1i0%vtj@M literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_0_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..f33bb930d149a52150df0803bf2440447dfc0dd3 GIT binary patch literal 434 zcmV;j0ZsmiP)aXY`)|?TjT?A8BK)YC%hAr_;FPC5el`!lDkQEs`nQ{7i^(E-! zeIoj)Z@S0X!w&KIkLfzhkt^VIZU$RrW`so{MfWBA7)&5D{sgL;xa>#z1SV`qCz4P0 zKF#_faD^Z4{h1i9hW96fcd!yfp_O#lhjpgV%pG>YOaSm-QQPGxlhirj7AGk)C3g#y zd&eBa^zllRlaskP|$+`A;{dO4l;9}YcSEZUZ;U2v7LE(=>Y%$ c004LrA3sG!+M`Y^KmY&$07*qoM6N<$g3A}dyZ`_I literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..8c87abb51b1b65e0a8b441bb7e451613f111c5c9 GIT binary patch literal 387 zcmV-}0et?6P)NklddY%zcQ_7@ovRmE?TJE3Mi*V$AI+knttyh+4z zFQOU}^%qQ0IklqJVn_tki!~XTJ0uJd9xjansM`Z@vCJUJ^wVEFm+s$o>FZHG^vttg zJ4kbDMtR@$jR13RDo16?3bRrQpNsgBY#{P>!1Irys)}V_(g!f$Kr$rn?0q-tjX)H> zx%WpBaW%X@7(9cSAPddpI_I!dJdkRc=}P*sk$Y{T#hHS7!&G{Hh-G0`H=~jq{z0T@ zzQ%WZV-l;IPKbbF&68L%0(Q~df{J2XbNtaOC-l=?%}NiT32X0n&N3;;rTH!_YD&Gz h&qx3O000261|Ol(4kAR5SYH4D002ovPDHLkV1i_3r|tj% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxr1K^fVM6g!1a9bqS9q)4u1_J0ssI2;@Q^d6U@x6zMBuyIQt%b zfHqvCvb_J6MLxhSdM(~VM`zdPXGdp%xz>yCjiKD44?sjLT6v_;L7EaYneLS|4$zf- z4iY$kcTRd$poJ+gDZ)LYJ%Q8#%%MX0G$u$7cUd*@YR5t{coWMZ~O0000G!~=lMlR(?^ R`b7W$002ovPDHLkV1g=1i536= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_1_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..ad73a90a6da5a112b7e7808128db285f188eb52c GIT binary patch literal 499 zcmVF~j0%}vaD#GQ1V66Y zQ%dQ+KJ)H4Ck#dmkkv$SFLRu8{8Y1K3z|5dW)CSlPswotF?}}vDIV9ka4{;n2fJ@rO#f%@80a3<^k@hQUm5-Mqy%s}-x~b~f`mGv zznI9uPGT3@N#}c*k$0qRaJU;_ zcZa>|$_T1r$}z@tHUw)iSXU<^8t|g-g=)4To?j}PQAeAwafd3(8D4Jk(_~2FWW~P! z0r22#R^5+AWOOnD%0i)5r;b$#XnaLs4sA@TL=8$q9iUq-%c=w@N2>{qHE^iH+7O(} zCbf*i3e8di_?Iwa64hf;#k*AcHb@bEyZML6hyCIPMU6Yx9RfQm8hEIH2R)8Iy~fZ}n7FiV(yF#%^RI{o;Ws-1}F zbKUdtI2{I44UokIyObRh(Q*3tY37kF$Zg9l0l7)<0GhwEo?>X{|hSZK);?qKN;ws@T8z6qrGl1oPg)6B^GmXh2g8T{y>i`E_E@MfTrlD#V=V1 zlR8IIn{EA7Jz9Ueo?dSa3E(7a@k(29=c*M;q%sq&-%pH&jC#^zEfj8M7GiXx)!Pk5 t_s9pCKxf^*B8*I$q#MlrAP9oxd;z;J%6qdtPYVD5002ovPDHLkV1lP7>xTdU literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_1_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_miniscript_multikey_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..8e0035da98b7b446a9d545f7f894ac1b2902c666 GIT binary patch literal 351 zcmV-l0igbgP)Lkzw(cKwfzK=^)gSU)6&6I$g&AUc_LX=P=`h!6Z zJV6)o)*xdZ$TZshNcrUWEKR{AOX%G0nYgS xC0U3%;FQh%QX}Z=@PL@21v!HR006*q`2bNd+>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)@p0I^t3e6z?3$h}$o;MHfu!ry-YMqeA>b;biN;ACQQ9)m^7 zP@PG*36matFUNbp7~o+H@Gu5Q=zSzx?+-0Qt7FUkCbrtv{wg}F1*N_<)6&X}=DhIc z|6S|Oc&BM7ba;|~f7X=g>YcC=T(dT17+39DmupaEsxegglmHZp^Stjl3_6#J@^P|p zDaf4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4f6ae5978014701165e255cc71b61711a4fa4bc9 GIT binary patch literal 419 zcmV;U0bKrxP)d!#l~DqPMB{( zgN6*q4W%kTVD!-)O%{-LL=K?mLa@-m1Se!xq}~Da{K8aSbjoxQWdISdoLGh=h4FI7 zTmx&ZCp%h?8@QbyWW*(V(OUlj{ksl}aA=6ctIqsyAP?{9F5q}d3iyaBm%%j;#8eYV-_KT)YjfO8>1}oNH;K2xPK^(_%9LI5P%o|!bAV-ethrs{< N002ovPDHLkV1i0%vtj@M literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_0_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf54452ee659d4aeb23f2f9f6119170100ca01b GIT binary patch literal 393 zcmV;40e1e0P)}T-~WNVs0&Y?H5jrfu-5-wbaF9Bm@I!w2><{9FyXa*y)O>sDK&$+c-XpM zRz8ofEiG%m+lgxP433|tQYgt`c2snK&8M)g=wLCDd#16{<+Tz|o-cY>n6EfanFTXX>u*BNRycK+{*)sFEdoIZW_IIH6D?-}3(q-lfn&5LHH>X<5Xa%W2+oOXXmb z!N7Rkh_UxF^!AGVRGvu1QCZ-W^-;me52F_^WzDiSQZrVnr=gnY08&IB-3o!V{@TcI z7T}^vLpu*umb^NTy&Ae>v7lsrj{LkZ9}%7=Qg7^r+3HsL-GB+ge(r)- n3j!6qTF}TS|Cs>*0MqdX$SL-T#utq300000NkvXXu0mjf(-5?C literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrm77RoH004kL@0Yg+EAvs`ECykM{q%OA zPOj0m|1P(^ydk&naj_1agPrbQ9sUmx$9ynvbmigg01;)oHQ(uL5GDmJrh6hx0C;9! zg8%`@D<^%k&}D5D%Q9)=7qkd3wgIiVkQeG3P!$>Kn;}RI^^HLcJV6%n)58CXwr+7HWdJqGhu*cTpY%7 y(HvGaK)ah#vy+z)J~d{UbS6y!0000006hogABuSDabNL+CZYkw&*8Vvd=fzTP zp~7#VHcz?hG2RS7ibTrC@Gv<3XICKN)V*4^{qiM6vcDYK@7VtxMzb%oM*j$qe2(L9 zs&@c@&++Sb+diN%bO!h2KzE3S1+~m1WC|MCiI6mP=BYV`dkV&?4-q2(0Ji=2o9DmH zaraOQS0AR20Mw)+O-TmT$P}(E;9rDmrDk}n!|0T}iq2!?6T?)@LQi`Gr!n7|(%(5B&=b?EF5MJCSwF>kB{TeRXY*U zd0gvp+XqaB@8A|6XhSNlHHjxvwxEHFs4z|1d6JLm$$~wt4){j^5pDbR^V6UE7=+r( ztWQLnuX+&Rg~?KDAuKes9l~0tnsTl88GI!3z0*9Y;nsLi_(|*2n;d|2e%1OfL@;$& ze=^~NmBcQzlDm;v8Y(7U#u^LGENk;Qo+E<%HOc+5MsYk~%Hl|R^I9AtxTwM4s7y*Sg zy9VAnR|tfb3#}J%);7!$V0ksq7h1ZFuRam+2CYuO&z1ayF!tyK9|^>v8rocTwj0j4 z0}S_sXxzSYb=?=Sx54-KDLcN+0b(j?$$7*%>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)7V=;NbV-ir3APv(o;eLSW_dQG&sXF;RL?YZ+qyq*lJ;y76*$&@v^HT0&(oPK z(+yrEzJ2_I=K*sq82KjD`u1Iu*K^*y_*Bv3S-Gj_xz6SYp4`4}%8}@`rt3nA=S39n z3D)f?nZ@QP+x;@D&_B6X0PZ!TiK}dtije{)5VmzD>Gekq-L#nuB39z3eS)k|I#2tQ8O-O>CQrQ}VJTPkE_q=Q Z$1}&2b)%EX>8Al8uBWS?%Q~loCIBe(jUWI3 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_1_1/00001.png b/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4f6ae5978014701165e255cc71b61711a4fa4bc9 GIT binary patch literal 419 zcmV;U0bKrxP)d!#l~DqPMB{( zgN6*q4W%kTVD!-)O%{-LL=K?mLa@-m1Se!xq}~Da{K8aSbjoxQWdISdoLGh=h4FI7 zTmx&ZCp%h?8@QbyWW*(V(OUlj{ksl}aA=6ctIqsyAP?{9F5q}d3iyaBm%%j;#8eYV-_KT)YjfO8>1}oNH;K2xPK^(_%9LI5P%o|!bAV-ethrs{< N002ovPDHLkV1i0%vtj@M literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf54452ee659d4aeb23f2f9f6119170100ca01b GIT binary patch literal 393 zcmV;40e1e0P)}T-~WNVs0&Y?H5jrfu-5-wbaF9Bm@I!w2><{9FyXa*y)O>sDK&$+c-XpM zRz8ofEiG%m+lgxP433|tQYgt`c2snK&8M)g=wLCDd#16{<+Tz|o-cY>n6EfanFTXX>u*BNRycK+{*)sFEdoIZW_IIH6D?-}3(q-lfn&5LHH>X<5Xa%W2+oOXXmb z!N7Rkh_UxF^!AGVRGvu1QCZ-W^-;me52F_^WzDiSQZrVnr=gnY08&IB-3o!V{@TcI z7T}^vLpu*umb^NTy&Ae>v7lsrj{LkZ9}%7=Qg7^r+3HsL-GB+ge(r)- n3j!6qTF}TS|Cs>*0MqdX$SL-T#utq300000NkvXXu0mjf(-5?C literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)9t0MI2bM(iEs5w`648Ge!Vj@xU^#u)&$^(VA#0@LvMsNZ zeTuiW0FF93G+u+TQw+U^mr4d~>(B8Po>3OpDGV*q>-2$rovx48k5no*C)3QGJw7W1#?{0T9#E2Y|YV@oZ&#V{56D*8gs7 sorBsl5}Dx3y_c+>ucN0R3<&<451R6~)ys{xoB#j-07*qoM6N<$f^UDb{{R30 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..daf511fa4228a25939080b1f9432af80a863e7fb GIT binary patch literal 354 zcmV-o0iFJdP);mgh2@p}q2mf1iDkYc@NQO}72qAn1Mi!+ zwE_ylNt`}%yV%n|`cE&obqL2HE2$6^w&xowWUc982k0rzEYj3_#&Up*LXG$<5~C+! zcqVHF{t@%7CJDz2U(C84Bw@TLiKtRF1zRvp#nh^rq&cv5!YWpcV9|I+ffCH3VJ~i8wnQ6Fh?topva+?MBn~1PQ6pXtS zvu^mt4EiyjMfJZWdVm))#(-VOq|k>ELI@#hz9#Ot-+6=rr2qf`07*qoM6N<$f|Qz< A^Z)<= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..d8e9b0063c6c839befa94c90f9bf87cf3f3ec4b8 GIT binary patch literal 407 zcmV;I0cie-P)}aA}EZ+LDo$&vCXCzg^OxygSDVjZE5vCgZh@*%@anR)s*c0Rll?WZ#&ga zah59FSn?*mI^Jw1;15(g@zvw#$dvGNWI)xnKB@bI)^i2=(!#FZYvjK^XgkmutE}67F?AzPQl2o$}Ru^0000G`2ZwO2#Ht}Bpd($002ovPDHLkV1hZE BtwaC- literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrm77RoH004kL@0Yg+EAvs`ECykM{q%OA zPOj0m|1P(^ydk&naj_1agPrbQ9sUmx$9ynvbmigg01;)oHQ(uL5GDmJrh6hx0C;9! zg8%`@D<^%k&}D5D%Q9)=7qkd3wgIiVkQeG3P!$>Kn;}RI^^HLcJV6%n)58CXwr+7HWdJqGhu*cTpY%7 y(HvGaK)ah#vy+z)J~d{UbS6y!0000006hogABuSDabNL+CZYkw&*8Vvd=fzTP zp~7#VHcz?hG2RS7ibTrC@Gv<3XICKN)V*4^{qiM6vcDYK@7VtxMzb%oM*j$qe2(L9 zs&@c@&++Sb+diN%bO!h2KzE3S1+~m1WC|MCiI6mP=BYV`dkV&?4-q2(0Ji=2o9DmH zaraOQS0AR20Mw)+O-TmT$P}(E;9rDmrDk}n!|0T}iq2!?6T?)@LQi`Gr!n7|(%(5B&=b?EF5MJCSwF>kB{TeRXY*U zd0gvp+XqaB@8A|6XhSNlHHjxvwxEHFs4z|1d6JLm$$~wt4){j^5pDbR^V6UE7=+r( ztWQLnuX+&Rg~?KDAuKes9l~0tnsTl88GI!3z0*9Y;nsLi_(|*2n;d|2e%1OfL@;$& ze=^~NmBcQzlDm;v8Y(7U#u^LGENk;Qo+E<%HOc+5MsYk~%Hl|R^I9AtxTwM4s7y*Sg zy9VAnR|tfb3#}J%);7!$V0ksq7h1ZFuRam+2CYuO&z1ayF!tyK9|^>v8rocTwj0j4 z0}S_sXxzSYb=?=Sx54-KDLcN+0b(j?$$7*%>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)7V=;NbV-ir3APv(o;eLSW_dQG&sXF;RL?YZ+qyq*lJ;y76*$&@v^HT0&(oPK z(+yrEzJ2_I=K*sq82KjD`u1Iu*K^*y_*Bv3S-Gj_xz6SYp4`4}%8}@`rt3nA=S39n z3D)f?nZ@QP+x;@D&_B6X0PZ!TiK}dtije{)5VmzD>Gekq-L#nuB39z3eS)k|I#2tQ8O-O>CQrQ}VJTPkE_q=Q Z$1}&2b)%EX>8Al8uBWS?%Q~loCIBe(jUWI3 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_1/00001.png b/tests/snapshots/nanos/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4f6ae5978014701165e255cc71b61711a4fa4bc9 GIT binary patch literal 419 zcmV;U0bKrxP)d!#l~DqPMB{( zgN6*q4W%kTVD!-)O%{-LL=K?mLa@-m1Se!xq}~Da{K8aSbjoxQWdISdoLGh=h4FI7 zTmx&ZCp%h?8@QbyWW*(V(OUlj{ksl}aA=6ctIqsyAP?{9F5q}d3iyaBm%%j;#8eYV-_KT)YjfO8>1}oNH;K2xPK^(_%9LI5P%o|!bAV-ethrs{< N002ovPDHLkV1i0%vtj@M literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_0_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf54452ee659d4aeb23f2f9f6119170100ca01b GIT binary patch literal 393 zcmV;40e1e0P)}T-~WNVs0&Y?H5jrfu-5-wbaF9Bm@I!w2><{9FyXa*y)O>sDK&$+c-XpM zRz8ofEiG%m+lgxP433|tQYgt`c2snK&8M)g=wLCDd#16{<+Tz|o-cY>n6EfanFTXX>u*BNRycK+{*)sFEdoIZW_IIH6D?-}3(q-lfn&5LHH>X<5Xa%W2+oOXXmb z!N7Rkh_UxF^!AGVRGvu1QCZ-W^-;me52F_^WzDiSQZrVnr=gnY08&IB-3o!V{@TcI z7T}^vLpu*umb^NTy&Ae>v7lsrj{LkZ9}%7=Qg7^r+3HsL-GB+ge(r)- n3j!6qTF}TS|Cs>*0MqdX$SL-T#utq300000NkvXXu0mjf(-5?C literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxr-%8|Nq?f^nuvI$H{x>8tm}=>hK*Pj`?8RXv)jl0V0Z4YrN9ez)cETO!t7B0PxJd z1`YxcS5Eq6p=xau%QE%E&uI}}YyoOhkr(PKkQEu~t071Y^_4*kEI}5sveyY#dGByPod-&GiRBZM0{&vmYJQ;;j^sX^#a zIi~$#=b#y9MPtja>-m1PYC!MW3C&JkLikjRrOU~x&<_;=00000fMxjrn8MR0+DoFZ P00000NkvXXu0mjfBi*OL literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_1_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..67cc27f5cc81b2c10c3e506e1c026250eba8a97b GIT binary patch literal 473 zcmV;~0Ve*5P)W+)WWy8o*h?%|~-HD4xALU`h15mmFvIR}3fL92|G#b%9WgWl|_Sg%_yKN$}{Z z9RT3I-f?%F4F;n+D7Oo5p5r*%*qO|bC8*(eqBX>?JbsP=`E+giX8?S{s-IJ$m>nC! zm2}PkoZwDE`bc$L*dToq_MNKc;m0Q=)9=Ji2E~JF?hQrZmfnYzCP31;tM?a#aJ6}V zFg6D>u~ld$<@>NuP1|zjWLJdc5TS-zTi8%*vvQ^Lr^zbchVmS5hzGIIx!g&IJK%Vt z@_@S_Pe6hsY#*w^y+jf$Bvo;0BMtr}hz;hbJ<1hiR$~1!{Q`fgyGxp0}B#D P00000NkvXXu0mjfxUAOP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_1_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..54a169e0b44738a8ed9026979e566d298840b542 GIT binary patch literal 515 zcmV+e0{s1nP)9! z+p%igMlsKL>nZ$D0jF|->$4UXP`h2SQ z7esJ%dVew*gFDGp=uT$r!(v)d%S2Y&in>=KoRlH044j(OG^E7>;&*w%AQsk|fClegGpNmG$>K{gMCx002ovPDHLk FV1g9C>Tdu5 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_1_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..34ac2789dabe22dae9d5e568dc5f92fa9765031c GIT binary patch literal 370 zcmV-&0ge8NP)2t{$#-2cE?q?^=I!2=%fkp8DEQi!nqv588E00000TduRrm3Y2o^y|E@-~-az zcN)|1%S(7Q#>NT6ED5iD0^ZgGL{aMQE$%4(32x*G2;Ns1S;90)l_iJ`p^4d#muYk& zqU*f(qdPh*CM!^O2zUI<#7{5iwP#2P>bM?OTYTm5IVPd$+Ss1}`fe*bQP`dxyM-HZ zw&CSw^cE(W_c9}kQ1=p+gKB~Y=WotFd#8ZvMRivr6Y!Dh(@F_Q#eAyz3lfkT>JJ7v zmC%FZ9aR}I03$YxwDjYtdRgou&>$W>+$|o3jhEB0N??900YPZ7yJLl QyZ`_I07*qoM6N<$g8lHM!2kdN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_1_0/00005.png b/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)S|Nn#custj>R;ZyWg7u#4VWZtjKt%3B00026E795k0pHK*V?2!f*p?yz z&*E+EKr1OLsUQjqy#X{rDz1?15z7C3uPvS9fSKp1P`cb)OFc0ieUIM2Z% z$56VHpb3K(e3#=MAP4p!2lgNbmLU3;oTJ};3}vOt`ryirvR4O9_7F)gHCQSxT|Kn^ z`x3N<^CFu4lWIlMxg`X(iAC%~bK^M0>FJa35HvL4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4f6ae5978014701165e255cc71b61711a4fa4bc9 GIT binary patch literal 419 zcmV;U0bKrxP)d!#l~DqPMB{( zgN6*q4W%kTVD!-)O%{-LL=K?mLa@-m1Se!xq}~Da{K8aSbjoxQWdISdoLGh=h4FI7 zTmx&ZCp%h?8@QbyWW*(V(OUlj{ksl}aA=6ctIqsyAP?{9F5q}d3iyaBm%%j;#8eYV-_KT)YjfO8>1}oNH;K2xPK^(_%9LI5P%o|!bAV-ethrs{< N002ovPDHLkV1i0%vtj@M literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_0_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf54452ee659d4aeb23f2f9f6119170100ca01b GIT binary patch literal 393 zcmV;40e1e0P)}T-~WNVs0&Y?H5jrfu-5-wbaF9Bm@I!w2><{9FyXa*y)O>sDK&$+c-XpM zRz8ofEiG%m+lgxP433|tQYgt`c2snK&8M)g=wLCDd#16{<+Tz|o-cY>n6EfanFTXX>u*BNRycK+{*)sFEdoIZW_IIH6D?-}3(q-lfn&5LHH>X<5Xa%W2+oOXXmb z!N7Rkh_UxF^!AGVRGvu1QCZ-W^-;me52F_^WzDiSQZrVnr=gnY08&IB-3o!V{@TcI z7T}^vLpu*umb^NTy&Ae>v7lsrj{LkZ9}%7=Qg7^r+3HsL-GB+ge(r)- n3j!6qTF}TS|Cs>*0MqdX$SL-T#utq300000NkvXXu0mjf(-5?C literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxr-%8|Nq?f^nuvI$H{x>8tm}=>hK*Pj`?8RXv)jl0V0Z4YrN9ez)cETO!t7B0PxJd z1`YxcS5Eq6p=xau%QE%E&uI}}YyoOhkr(PKkQEu~t071Y^_4*kEI}5sveyY#dGByPod-&GiRBZM0{&vmYJQ;;j^sX^#a zIi~$#=b#y9MPtja>-m1PYC!MW3C&JkLikjRrOU~x&<_;=00000fMxjrn8MR0+DoFZ P00000NkvXXu0mjfBi*OL literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_1_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..67cc27f5cc81b2c10c3e506e1c026250eba8a97b GIT binary patch literal 473 zcmV;~0Ve*5P)W+)WWy8o*h?%|~-HD4xALU`h15mmFvIR}3fL92|G#b%9WgWl|_Sg%_yKN$}{Z z9RT3I-f?%F4F;n+D7Oo5p5r*%*qO|bC8*(eqBX>?JbsP=`E+giX8?S{s-IJ$m>nC! zm2}PkoZwDE`bc$L*dToq_MNKc;m0Q=)9=Ji2E~JF?hQrZmfnYzCP31;tM?a#aJ6}V zFg6D>u~ld$<@>NuP1|zjWLJdc5TS-zTi8%*vvQ^Lr^zbchVmS5hzGIIx!g&IJK%Vt z@_@S_Pe6hsY#*w^y+jf$Bvo;0BMtr}hz;hbJ<1hiR$~1!{Q`fgyGxp0}B#D P00000NkvXXu0mjfxUAOP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_1_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..54a169e0b44738a8ed9026979e566d298840b542 GIT binary patch literal 515 zcmV+e0{s1nP)9! z+p%igMlsKL>nZ$D0jF|->$4UXP`h2SQ z7esJ%dVew*gFDGp=uT$r!(v)d%S2Y&in>=KoRlH044j(OG^E7>;&*w%AQsk|fClegGpNmG$>K{gMCx002ovPDHLk FV1g9C>Tdu5 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_1_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..34ac2789dabe22dae9d5e568dc5f92fa9765031c GIT binary patch literal 370 zcmV-&0ge8NP)2t{$#-2cE?q?^=I!2=%fkp8DEQi!nqv588E00000TduRrm3Y2o^y|E@-~-az zcN)|1%S(7Q#>NT6ED5iD0^ZgGL{aMQE$%4(32x*G2;Ns1S;90)l_iJ`p^4d#muYk& zqU*f(qdPh*CM!^O2zUI<#7{5iwP#2P>bM?OTYTm5IVPd$+Ss1}`fe*bQP`dxyM-HZ zw&CSw^cE(W_c9}kQ1=p+gKB~Y=WotFd#8ZvMRivr6Y!Dh(@F_Q#eAyz3lfkT>JJ7v zmC%FZ9aR}I03$YxwDjYtdRgou&>$W>+$|o3jhEB0N??900YPZ7yJLl QyZ`_I07*qoM6N<$g8lHM!2kdN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_1_0/00005.png b/tests/snapshots/nanos/test_sign_psbt_multisig_wsh_v1_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)S|Nn#custj>R;ZyWg7u#4VWZtjKt%3B00026E795k0pHK*V?2!f*p?yz z&*E+EKr1OLsUQjqy#X{rDz1?15z7C3uPvS9fSKp1P`cb)OFc0ieUIM2Z% z$56VHpb3K(e3#=MAP4p!2lgNbmLU3;oTJ};3}vOt`ryirvR4O9_7F)gHCQSxT|Kn^ z`x3N<^CFu4lWIlMxg`X(iAC%~bK^M0>FJa35HvL4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrSLoPGCR zKpU>nG=E>GS$5!-vMuJJt+Utu*(pyzwOuyO8(q11FMx>HZsj{Y2Vp``GTm3gIG~K| zISAkYo;m3gg@(DYnwIH^|AHprWE;?$fxJ-PfTqY$-;9dXP~RB%z!O9vPqrdYmCyak zOgO23-_o*BQU7&nN-vAna50rm;VaZEk520_4G&r8+Q+hSay`3=aTk;rJqJ9N_ron< zgx*zz2yHy>?~i&%Gti|Lt>Kq2%mIo$Ek!qXLzo<(Rv!ErdLc;Ekv|+sF~fS_+5Zpn lI*a%rhlT?H0001hE>Bj42uo(1Hnac$002ovPDHLkV1g7ak8A({ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..62c5c93b17892999dd80d0ad7a1ff19b912ef3f8 GIT binary patch literal 479 zcmV<50U-W~P){aOk>Yzc&cYwaf~YS@eLKya~Rh zY6k!~kDqn7?E``_6XZ34?j^Q;jGxskIf4epQ=B1q@?edDkSAGBwwj)?1s43qX)B zVtI0GeI- zLP$R=wb3!GD#DUp5RACfvlU_+3G3;IZdC!im|fzl+sJ?DFukMzqgq-Rr=+l_2Kn)= z^zTgHoT{vDsQwbx{m3=sa~smc_9=6T;v1UF|2w?m#`B6Gd%5d7;59@6f*=Uq%Li+I VgQO=|H2nYo002ovPDHLkV1ko}<+uO< literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..265c5506d8282d58134d37acda9d0aa2656a63ef GIT binary patch literal 503 zcmVNm!bxq3iE!NND`iT$l zR$n(>BXv({wFny>$Vrse{sZva+dvj$+>>P6t8aq~z5>MS2SPGn_Qj+)W6|lyPgm^# za30ru+;)e~6a!>2kz69z0Jh!7PcuVOkYj&HZb_LZjWJkExid2*sQxPe|I?~px5=DU zrtoCZ2e9>3&pVtXBxI?T2#JPgn{dvku3YrLJBxhze)G6f?$IbHTr&EYX#g~xt44o9 zgiuHH2NPrPCXt2Sq;((W^}?d$v8~z{b5#d^TDEv-?1iq`xxA{B2`v)RI^ZL(SUxJM zvO8HD0RV-Quvb-9oEQA8q?hCQ_5GEW3YvX}R++myna86R^k;w{DM^v*-YOn1YtNs# z=kK?vETNxxE#$0_(q7WcPuddd0Epg;kAZcYd)x^n`pATdmnFQY*F2;ccZV!Y_b7}l zCby%m0CD;>V#!5zL=CpJ--CES002ovPDHLkV1l&D>v{kH literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_0_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..593b9d039a9a7bdbe3656b51efce5c292cd6bc18 GIT binary patch literal 376 zcmV-;0f+vHP){r?Z{L-(+bWS|sVQS@@MhZPz`pcnxNf*=S2TaLX>CA|M+^OTp|RPHKU3=f z0LOmTW7-;Q<}yH+OQh|`6Lc@DwWmu9YPcWLTd?zBj)BG0H}+oue9Ou%D5PflmheN8 zt$ALIC?O$3EfEq6_YPscsK$8Ke{<%koeFMms(Can3@#ac@RR__=Bm+mNG8+~{mw)V zMiO0UBx|0-r75Pj?RfL24YjjwPmG&}%9L)lrCaVtC|sbXnol@D(@%sxLsX8xgD$fm z3-lH3yY{C|fF9qoxj7S1Thxwo;Pns|AZ^`od-=zBt#{6xEodPoY(X;f)P4{I!EoMf W-0Wu9Njg9P0000>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)kcTa%i(93jruXHECGG_ zT6dsU%u1XPS&MuDmE;VFEt(tOUNQsHXl4Vv_)ctL`2T@2*2@1n^RezgV_|llgO_YW zntTX8c3in4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_v1_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrSLoPGCR zKpU>nG=E>GS$5!-vMuJJt+Utu*(pyzwOuyO8(q11FMx>HZsj{Y2Vp``GTm3gIG~K| zISAkYo;m3gg@(DYnwIH^|AHprWE;?$fxJ-PfTqY$-;9dXP~RB%z!O9vPqrdYmCyak zOgO23-_o*BQU7&nN-vAna50rm;VaZEk520_4G&r8+Q+hSay`3=aTk;rJqJ9N_ron< zgx*zz2yHy>?~i&%Gti|Lt>Kq2%mIo$Ek!qXLzo<(Rv!ErdLc;Ekv|+sF~fS_+5Zpn lI*a%rhlT?H0001hE>Bj42uo(1Hnac$002ovPDHLkV1g7ak8A({ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_v1_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..62c5c93b17892999dd80d0ad7a1ff19b912ef3f8 GIT binary patch literal 479 zcmV<50U-W~P){aOk>Yzc&cYwaf~YS@eLKya~Rh zY6k!~kDqn7?E``_6XZ34?j^Q;jGxskIf4epQ=B1q@?edDkSAGBwwj)?1s43qX)B zVtI0GeI- zLP$R=wb3!GD#DUp5RACfvlU_+3G3;IZdC!im|fzl+sJ?DFukMzqgq-Rr=+l_2Kn)= z^zTgHoT{vDsQwbx{m3=sa~smc_9=6T;v1UF|2w?m#`B6Gd%5d7;59@6f*=Uq%Li+I VgQO=|H2nYo002ovPDHLkV1ko}<+uO< literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_v1_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_v1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..265c5506d8282d58134d37acda9d0aa2656a63ef GIT binary patch literal 503 zcmVNm!bxq3iE!NND`iT$l zR$n(>BXv({wFny>$Vrse{sZva+dvj$+>>P6t8aq~z5>MS2SPGn_Qj+)W6|lyPgm^# za30ru+;)e~6a!>2kz69z0Jh!7PcuVOkYj&HZb_LZjWJkExid2*sQxPe|I?~px5=DU zrtoCZ2e9>3&pVtXBxI?T2#JPgn{dvku3YrLJBxhze)G6f?$IbHTr&EYX#g~xt44o9 zgiuHH2NPrPCXt2Sq;((W^}?d$v8~z{b5#d^TDEv-?1iq`xxA{B2`v)RI^ZL(SUxJM zvO8HD0RV-Quvb-9oEQA8q?hCQ_5GEW3YvX}R++myna86R^k;w{DM^v*-YOn1YtNs# z=kK?vETNxxE#$0_(q7WcPuddd0Epg;kAZcYd)x^n`pATdmnFQY*F2;ccZV!Y_b7}l zCby%m0CD;>V#!5zL=CpJ--CES002ovPDHLkV1l&D>v{kH literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_v1_0_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_large_amount_v1_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..593b9d039a9a7bdbe3656b51efce5c292cd6bc18 GIT binary patch literal 376 zcmV-;0f+vHP){r?Z{L-(+bWS|sVQS@@MhZPz`pcnxNf*=S2TaLX>CA|M+^OTp|RPHKU3=f z0LOmTW7-;Q<}yH+OQh|`6Lc@DwWmu9YPcWLTd?zBj)BG0H}+oue9Ou%D5PflmheN8 zt$ALIC?O$3EfEq6_YPscsK$8Ke{<%koeFMms(Can3@#ac@RR__=Bm+mNG8+~{mw)V zMiO0UBx|0-r75Pj?RfL24YjjwPmG&}%9L)lrCaVtC|sbXnol@D(@%sxLsX8xgD$fm z3-lH3yY{C|fF9qoxj7S1Thxwo;Pns|AZ^`od-=zBt#{6xEodPoY(X;f)P4{I!EoMf W-0Wu9Njg9P0000>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)kcTa%i(93jruXHECGG_ zT6dsU%u1XPS&MuDmE;VFEt(tOUNQsHXl4Vv_)ctL`2T@2*2@1n^RezgV_|llgO_YW zntTX8c3in4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrBqKLy;Ql8-o~lf-L08R^*~gUq6{O zfgJZ_dKS{oh=a4EoSJ9(n_J{P@vygNO}1N4H-TF~P!IX%l{Py?KCtpR6unM}v>OHQ3q7xSkdv`nr6 f0000006AF!M!CfxU6qFE00000NkvXXu0mjf#R-Zl literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2a3a9cfe70b8fa9ff273b1c05338f9887ee523b8 GIT binary patch literal 506 zcmV9lJ{&m&gP#OoPBfPc}ITlFjnU>Y1FR(&Ziyz zT)hJT+}CH`9jC!y@D8r2f$XqY7TDs6DO-@?Br2%MJ5R1Lj4?QueVDNV0N^-3A3y)k z8h0Fk613Mht@s7b}Z994;XHqal!IcPOK(&6lqZ1T_d8{LC4XQSe9OZMTH3LyF1 zmHi(CL3OY{8Bv3kh+SwU%+BHJy}wm`E5t}_>Bv^@&c)?IRJ~PUImP7ybhFl^L~2|q z!*Lc_NgalG5#z3x`EJ6gkH!5(-%*(i*%A8`+O$T;jqw-@iVF66pjRS`eM9iWbtE5= zTaaEfRgR)b-Rs~4J9)rCiXgB4eRq0t3fpP}PYq+m+X5dk4lh8BKsHBsNmHIwRad}G z4aJO)zYj2}kfAP{Ml_a{ry82~qK+ds0iS7{D}5ABKqXyuyX=CVVaAY+B`4IpB%X(aS{8t+bq4qHC z1Hh6?F9bMJ*|~})5rgj~%n9YlIq7%cC11Y(a6eSIHadi_)IL1P021e0wf{g6sxIx{ zjIzN@R2G_v^!ISvdPJ4ILxiu~HSH(wG7YW#=@7cUBUDNfcSjRB5XVNY+M#Ymv^5J? z`v}DgIZu{9!hZQ|+&Q@=vL18;St7WIlih*bX6i%=4kbr`Ub;pE;&%*5eg?zMI6>0Y zovpsWh0*@sTa{@wduD%k3>%=USw|OI?!%balyptTzVgC@<+dij|pv z$}5qZQs=``2S85|8O{}``fOW>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)MixLhU{AVKOxY1TPQ)003B(VC{f_^TXr!!wXp#Kz%_J3&Mw7kZ)oY>!uYU)Gu@>IzjE}Vg%7oo{4knSI zWhcQ$7_{KK9M=Fjum?G?2RX0=(YGXzzK#s7?k}IG+3I|Ir#`F7viz%yrLUYFI-Ij; z{y)Ax?0J6L4z;b4bo$2ICt>%DO~83vM`~G{vD;AA{?fkhd|{y0yB)M3=bk=7Sy^%eWa*fFJqMi(;8HyDE0001B62ALTojsmr6;1#E002ovPDHLk FV1hnfi9-MY literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_0_1/00001.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrBqKLy;Ql8-o~lf-L08R^*~gUq6{O zfgJZ_dKS{oh=a4EoSJ9(n_J{P@vygNO}1N4H-TF~P!IX%l{Py?KCtpR6unM}v>OHQ3q7xSkdv`nr6 f0000006AF!M!CfxU6qFE00000NkvXXu0mjf#R-Zl literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2a3a9cfe70b8fa9ff273b1c05338f9887ee523b8 GIT binary patch literal 506 zcmV9lJ{&m&gP#OoPBfPc}ITlFjnU>Y1FR(&Ziyz zT)hJT+}CH`9jC!y@D8r2f$XqY7TDs6DO-@?Br2%MJ5R1Lj4?QueVDNV0N^-3A3y)k z8h0Fk613Mht@s7b}Z994;XHqal!IcPOK(&6lqZ1T_d8{LC4XQSe9OZMTH3LyF1 zmHi(CL3OY{8Bv3kh+SwU%+BHJy}wm`E5t}_>Bv^@&c)?IRJ~PUImP7ybhFl^L~2|q z!*Lc_NgalG5#z3x`EJ6gkH!5(-%*(i*%A8`+O$T;jqw-@iVF66pjRS`eM9iWbtE5= zTaaEfRgR)b-Rs~4J9)rCiXgB4eRq0t3fpP}PYq+m+X5dk4lh8BKsHBsNmHIwRad}G z4aJO)zYj2}kfAP{Ml_a{ry82~qK+ds0iS7{D}5ABKqXyuyX=CVVaAY+B`4IpB%X(aS{8t+bq4qHC z1Hh6?F9bMJ*|~})5rgj~%n9YlIq7%cC11Y(a6eSIHadi_)IL1P021e0wf{g6sxIx{ zjIzN@R2G_v^!ISvdPJ4ILxiu~HSH(wG7YW#=@7cUBUDNfcSjRB5XVNY+M#Ymv^5J? z`v}DgIZu{9!hZQ|+&Q@=vL18;St7WIlih*bX6i%=4kbr`Ub;pE;&%*5eg?zMI6>0Y zovpsWh0*@sTa{@wduD%k3>%=USw|OI?!%balyptTzVgC@<+dij|pv z$}5qZQs=``2S85|8O{}``fOW>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)MixLhU{AVKOxY1TPQ)003B(VC{f_^TXr!!wXp#Kz%_J3&Mw7kZ)oY>!uYU)Gu@>IzjE}Vg%7oo{4knSI zWhcQ$7_{KK9M=Fjum?G?2RX0=(YGXzzK#s7?k}IG+3I|Ir#`F7viz%yrLUYFI-Ij; z{y)Ax?0J6L4z;b4bo$2ICt>%DO~83vM`~G{vD;AA{?fkhd|{y0yB)M3=bk=7Sy^%eWa*fFJqMi(;8HyDE0001B62ALTojsmr6;1#E002ovPDHLk FV1hnfi9-MY literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_1/00001.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrBqKLy;Ql8-o~lf-L08R^*~gUq6{O zfgJZ_dKS{oh=a4EoSJ9(n_J{P@vygNO}1N4H-TF~P!IX%l{Py?KCtpR6unM}v>OHQ3q7xSkdv`nr6 f0000006AF!M!CfxU6qFE00000NkvXXu0mjf#R-Zl literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2a3a9cfe70b8fa9ff273b1c05338f9887ee523b8 GIT binary patch literal 506 zcmV9lJ{&m&gP#OoPBfPc}ITlFjnU>Y1FR(&Ziyz zT)hJT+}CH`9jC!y@D8r2f$XqY7TDs6DO-@?Br2%MJ5R1Lj4?QueVDNV0N^-3A3y)k z8h0Fk613Mht@s7b}Z994;XHqal!IcPOK(&6lqZ1T_d8{LC4XQSe9OZMTH3LyF1 zmHi(CL3OY{8Bv3kh+SwU%+BHJy}wm`E5t}_>Bv^@&c)?IRJ~PUImP7ybhFl^L~2|q z!*Lc_NgalG5#z3x`EJ6gkH!5(-%*(i*%A8`+O$T;jqw-@iVF66pjRS`eM9iWbtE5= zTaaEfRgR)b-Rs~4J9)rCiXgB4eRq0t3fpP}PYq+m+X5dk4lh8BKsHBsNmHIwRad}G z4aJO)zYj2}kfAP{Ml_a{ry82~qK+ds0iS7{D}5ABKqXyuyX=CVVaAY+B`4IpB%X(aS{8t+bq4qHC z1Hh6?F9bMJ*|~})5rgj~%n9YlIq7%cC11Y(a6eSIHadi_)IL1P021e0wf{g6sxIx{ zjIzN@R2G_v^!ISvdPJ4ILxiu~HSH(wG7YW#=@7cUBUDNfcSjRB5XVNY+M#Ymv^5J? z`v}DgIZu{9!hZQ|+&Q@=vL18;St7WIlih*bX6i%=4kbr`Ub;pE;&%*5eg?zMI6>0Y zovpsWh0*@sTa{@wduD%k3>%=USw|OI?!%balyptTzVgC@<+dij|pv z$}5qZQs=``2S85|8O{}``fOW>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)MixLhU{AVKOxY1TPQ)003B(VC{f_^TXr!!wXp#Kz%_J3&Mw7kZ)oY>!uYU)Gu@>IzjE}Vg%7oo{4knSI zWhcQ$7_{KK9M=Fjum?G?2RX0=(YGXzzK#s7?k}IG+3I|Ir#`F7viz%yrLUYFI-Ij; z{y)Ax?0J6L4z;b4bo$2ICt>%DO~83vM`~G{vD;AA{?fkhd|{y0yB)M3=bk=7Sy^%eWa*fFJqMi(;8HyDE0001B62ALTojsmr6;1#E002ovPDHLk FV1hnfi9-MY literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_1/00001.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrBqKLy;Ql8-o~lf-L08R^*~gUq6{O zfgJZ_dKS{oh=a4EoSJ9(n_J{P@vygNO}1N4H-TF~P!IX%l{Py?KCtpR6unM}v>OHQ3q7xSkdv`nr6 f0000006AF!M!CfxU6qFE00000NkvXXu0mjf#R-Zl literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2a3a9cfe70b8fa9ff273b1c05338f9887ee523b8 GIT binary patch literal 506 zcmV9lJ{&m&gP#OoPBfPc}ITlFjnU>Y1FR(&Ziyz zT)hJT+}CH`9jC!y@D8r2f$XqY7TDs6DO-@?Br2%MJ5R1Lj4?QueVDNV0N^-3A3y)k z8h0Fk613Mht@s7b}Z994;XHqal!IcPOK(&6lqZ1T_d8{LC4XQSe9OZMTH3LyF1 zmHi(CL3OY{8Bv3kh+SwU%+BHJy}wm`E5t}_>Bv^@&c)?IRJ~PUImP7ybhFl^L~2|q z!*Lc_NgalG5#z3x`EJ6gkH!5(-%*(i*%A8`+O$T;jqw-@iVF66pjRS`eM9iWbtE5= zTaaEfRgR)b-Rs~4J9)rCiXgB4eRq0t3fpP}PYq+m+X5dk4lh8BKsHBsNmHIwRad}G z4aJO)zYj2}kfAP{Ml_a{ry82~qK+ds0iS7{D}5ABKqXyuyX=CVVaAY+B`4IpB%X(aS{8t+bq4qHC z1Hh6?F9bMJ*|~})5rgj~%n9YlIq7%cC11Y(a6eSIHadi_)IL1P021e0wf{g6sxIx{ zjIzN@R2G_v^!ISvdPJ4ILxiu~HSH(wG7YW#=@7cUBUDNfcSjRB5XVNY+M#Ymv^5J? z`v}DgIZu{9!hZQ|+&Q@=vL18;St7WIlih*bX6i%=4kbr`Ub;pE;&%*5eg?zMI6>0Y zovpsWh0*@sTa{@wduD%k3>%=USw|OI?!%balyptTzVgC@<+dij|pv z$}5qZQs=``2S85|8O{}``fOW>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)MixLhU{AVKOxY1TPQ)003B(VC{f_^TXr!!wXp#Kz%_J3&Mw7kZ)oY>!uYU)Gu@>IzjE}Vg%7oo{4knSI zWhcQ$7_{KK9M=Fjum?G?2RX0=(YGXzzK#s7?k}IG+3I|Ir#`F7viz%yrLUYFI-Ij; z{y)Ax?0J6L4z;b4bo$2ICt>%DO~83vM`~G{vD;AA{?fkhd|{y0yB)M3=bk=7Sy^%eWa*fFJqMi(;8HyDE0001B62ALTojsmr6;1#E002ovPDHLk FV1hnfi9-MY literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_v1_0_1/00001.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_pkh_1to1_v1_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxr%zV6W7K1RsetR2m zPU)kx{2tT750nzQW_sut?0kN9EZgm+DZZZl00002+x9o+>xj4xni?{#)002ovPDHLkV1l1jnhF2_ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..67cc27f5cc81b2c10c3e506e1c026250eba8a97b GIT binary patch literal 473 zcmV;~0Ve*5P)W+)WWy8o*h?%|~-HD4xALU`h15mmFvIR}3fL92|G#b%9WgWl|_Sg%_yKN$}{Z z9RT3I-f?%F4F;n+D7Oo5p5r*%*qO|bC8*(eqBX>?JbsP=`E+giX8?S{s-IJ$m>nC! zm2}PkoZwDE`bc$L*dToq_MNKc;m0Q=)9=Ji2E~JF?hQrZmfnYzCP31;tM?a#aJ6}V zFg6D>u~ld$<@>NuP1|zjWLJdc5TS-zTi8%*vvQ^Lr^zbchVmS5hzGIIx!g&IJK%Vt z@_@S_Pe6hsY#*w^y+jf$Bvo;0BMtr}hz;hbJ<1hiR$~1!{Q`fgyGxp0}B#D P00000NkvXXu0mjfxUAOP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..54a169e0b44738a8ed9026979e566d298840b542 GIT binary patch literal 515 zcmV+e0{s1nP)9! z+p%igMlsKL>nZ$D0jF|->$4UXP`h2SQ z7esJ%dVew*gFDGp=uT$r!(v)d%S2Y&in>=KoRlH044j(OG^E7>;&*w%AQsk|fClegGpNmG$>K{gMCx002ovPDHLk FV1g9C>Tdu5 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..34ac2789dabe22dae9d5e568dc5f92fa9765031c GIT binary patch literal 370 zcmV-&0ge8NP)2t{$#-2cE?q?^=I!2=%fkp8DEQi!nqv588E00000TduRrm3Y2o^y|E@-~-az zcN)|1%S(7Q#>NT6ED5iD0^ZgGL{aMQE$%4(32x*G2;Ns1S;90)l_iJ`p^4d#muYk& zqU*f(qdPh*CM!^O2zUI<#7{5iwP#2P>bM?OTYTm5IVPd$+Ss1}`fe*bQP`dxyM-HZ zw&CSw^cE(W_c9}kQ1=p+gKB~Y=WotFd#8ZvMRivr6Y!Dh(@F_Q#eAyz3lfkT>JJ7v zmC%FZ9aR}I03$YxwDjYtdRgou&>$W>+$|o3jhEB0N??900YPZ7yJLl QyZ`_I07*qoM6N<$g8lHM!2kdN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00005.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)_8mhJ}%SEhO*5;BP+?*se%qY&8 zHt$!hh4#*0O`*09(%|OO+bd!BOliic?(C{SrH(~essYvY6az4E(|g~E8R$T;laUV9 zU~n6|E69oJ3rulS#DEO5F3ADiQ0c|z-!f^ax{-Y|WJ1X3G*pW1-**830002oa{vq6 VsaL`a{X+l%002ovPDHLkV1g7IjF$ia literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_1_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxr%zV6W7K1RsetR2m zPU)kx{2tT750nzQW_sut?0kN9EZgm+DZZZl00002+x9o+>xj4xni?{#)002ovPDHLkV1l1jnhF2_ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..67cc27f5cc81b2c10c3e506e1c026250eba8a97b GIT binary patch literal 473 zcmV;~0Ve*5P)W+)WWy8o*h?%|~-HD4xALU`h15mmFvIR}3fL92|G#b%9WgWl|_Sg%_yKN$}{Z z9RT3I-f?%F4F;n+D7Oo5p5r*%*qO|bC8*(eqBX>?JbsP=`E+giX8?S{s-IJ$m>nC! zm2}PkoZwDE`bc$L*dToq_MNKc;m0Q=)9=Ji2E~JF?hQrZmfnYzCP31;tM?a#aJ6}V zFg6D>u~ld$<@>NuP1|zjWLJdc5TS-zTi8%*vvQ^Lr^zbchVmS5hzGIIx!g&IJK%Vt z@_@S_Pe6hsY#*w^y+jf$Bvo;0BMtr}hz;hbJ<1hiR$~1!{Q`fgyGxp0}B#D P00000NkvXXu0mjfxUAOP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..54a169e0b44738a8ed9026979e566d298840b542 GIT binary patch literal 515 zcmV+e0{s1nP)9! z+p%igMlsKL>nZ$D0jF|->$4UXP`h2SQ z7esJ%dVew*gFDGp=uT$r!(v)d%S2Y&in>=KoRlH044j(OG^E7>;&*w%AQsk|fClegGpNmG$>K{gMCx002ovPDHLk FV1g9C>Tdu5 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..34ac2789dabe22dae9d5e568dc5f92fa9765031c GIT binary patch literal 370 zcmV-&0ge8NP)2t{$#-2cE?q?^=I!2=%fkp8DEQi!nqv588E00000TduRrm3Y2o^y|E@-~-az zcN)|1%S(7Q#>NT6ED5iD0^ZgGL{aMQE$%4(32x*G2;Ns1S;90)l_iJ`p^4d#muYk& zqU*f(qdPh*CM!^O2zUI<#7{5iwP#2P>bM?OTYTm5IVPd$+Ss1}`fe*bQP`dxyM-HZ zw&CSw^cE(W_c9}kQ1=p+gKB~Y=WotFd#8ZvMRivr6Y!Dh(@F_Q#eAyz3lfkT>JJ7v zmC%FZ9aR}I03$YxwDjYtdRgou&>$W>+$|o3jhEB0N??900YPZ7yJLl QyZ`_I07*qoM6N<$g8lHM!2kdN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00005.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)_8mhJ}%SEhO*5;BP+?*se%qY&8 zHt$!hh4#*0O`*09(%|OO+bd!BOliic?(C{SrH(~essYvY6az4E(|g~E8R$T;laUV9 zU~n6|E69oJ3rulS#DEO5F3ADiQ0c|z-!f^ax{-Y|WJ1X3G*pW1-**830002oa{vq6 VsaL`a{X+l%002ovPDHLkV1g7IjF$ia literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_1_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxr1c->OR=(165GDmB)BPZf0W!1a zAbv79)u;+UX=Fp?pfszE z%AANe-%&eKU&KnUmothdnJwO)78@GaqLYfZB_En$R%h)u;W#s0KxRYKi@RbjNwg&z z)sfn&-4@&jYRxc=p|2Fdd6nc1kG0a^!*q?}4o1=?n@E=PvD#4|s=feJnG_E(Qv!s% zEkmnPq0M;!-PO<`RsJ4;>MKRSSMk#S0l@9_^dckqMUAK|G9zgY)?7j7H%IO5y&Oya jka3jZ0dP1Rj{l1fuT69qz%l=w00000NkvXXu0mjfvI*pD literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9f3ae167e403ba80cf7a815b469b9c724f522fbf GIT binary patch literal 499 zcmV_)fK~!(;}_sJx&sxX-b=}{cK=Ndqy<#(2MXDO*^S9)0a|lEenO=a z5$)TtAD7i(GSY)v)<7E)yVpu0xy1!JZX%|d;(5v%Q%i$aY6FP303uq}?Mw_N_oPlV00%O9U zc@GLf+8HzlBeW+?d!}i76PEdOoGi2Tt#)z##d3B%zdyFo{PER9tx zSN>vf>ewPg^Dw>IcTu;*riX{V2S~*gZwtI9Yx^L6uKbo{oD0Tu9y9!=C#;^I?CiCl zvHf^hz}eP}{zq~SkU;aM{4h-g(Z2v)uAmym*@a-I>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)HQzLMeQ5~bi5Io|F0Q!FC+lAa`7;w5ita|*5I zoLIBJQ_YNYss=#~528x<70JilAz$x=t4PJB=1fU#7$kJmwFh{pyf>OvqC04^s&hQ04qp=q!2)F<$&7Q@ndA3Lio}sNjVs`0ssI20QB(y Xe5b8e;N>RI00000NkvXXu0mjf=#GlF literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_1_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxr1c->OR=(165GDmB)BPZf0W!1a zAbv79)u;+UX=Fp?pfszE z%AANe-%&eKU&KnUmothdnJwO)78@GaqLYfZB_En$R%h)u;W#s0KxRYKi@RbjNwg&z z)sfn&-4@&jYRxc=p|2Fdd6nc1kG0a^!*q?}4o1=?n@E=PvD#4|s=feJnG_E(Qv!s% zEkmnPq0M;!-PO<`RsJ4;>MKRSSMk#S0l@9_^dckqMUAK|G9zgY)?7j7H%IO5y&Oya jka3jZ0dP1Rj{l1fuT69qz%l=w00000NkvXXu0mjfvI*pD literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9f3ae167e403ba80cf7a815b469b9c724f522fbf GIT binary patch literal 499 zcmV_)fK~!(;}_sJx&sxX-b=}{cK=Ndqy<#(2MXDO*^S9)0a|lEenO=a z5$)TtAD7i(GSY)v)<7E)yVpu0xy1!JZX%|d;(5v%Q%i$aY6FP303uq}?Mw_N_oPlV00%O9U zc@GLf+8HzlBeW+?d!}i76PEdOoGi2Tt#)z##d3B%zdyFo{PER9tx zSN>vf>ewPg^Dw>IcTu;*riX{V2S~*gZwtI9Yx^L6uKbo{oD0Tu9y9!=C#;^I?CiCl zvHf^hz}eP}{zq~SkU;aM{4h-g(Z2v)uAmym*@a-I>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)HQzLMeQ5~bi5Io|F0Q!FC+lAa`7;w5ita|*5I zoLIBJQ_YNYss=#~528x<70JilAz$x=t4PJB=1fU#7$kJmwFh{pyf>OvqC04^s&hQ04qp=q!2)F<$&7Q@ndA3Lio}sNjVs`0ssI20QB(y Xe5b8e;N>RI00000NkvXXu0mjf=#GlF literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrVSQ-kD4?!c1QPCfvTCfoSHVgI0002Q^L|CopfacWZXTpD`x!lf zK3t=1|2}TJ?7(YuS&Tzhvs?e_=pA5|b>aWYP#)0}AR@L}`AV-rnh;b>_eL56bY!nV z0t0yFq)!x@=0-Cu(;fekCgEZW(3^?8P~U;B$WY%6Lu#n+3_OSgQ7DqD$eYo;^kgPH z9$(k=YREc14vv+&Nz|Ap+7+yp_g93Pdgt}_;Jqn_5C+Zwvqc002ovPDHLkV1jERj+Foa literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..cf122072779d8507c6610702b59cf151b621edec GIT binary patch literal 487 zcmVKWKMzK@+~PZ# zhTl->008F!KY!6`49rArTszgz%EA6I20peF8x7sI^xDaYHwhOviZZ=Ljn@|%iJ3;7 zY893TmNrS-%u;5nEzZyOrCzk!>+f)hl#{78*9ms3oA8tTOXIdiqw?5tXigccChA>GvKtO>P>Y464^ST!lx zg}1NtR;N%{Rg0rD?{cjAAAs>Fob1_%bF2giDRdv3e#jIo#=Trz>q&!v3^_skFUfg^ z{w357^L1Vfh7}-h!Yy*K)3S+;3b#YvwQrT|*N3XnewJm}(19X_KOqIZnys6#3%fsK dk|ar<%NH)2eU_1180Y{1002ovPDHLkV1hA{+sOa` literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..a0201ce2a0f95f2f3d261628dcbe7a7ced9704fa GIT binary patch literal 477 zcmV<30V4j1P)_UGgE>rRJD z)(W$MYXPlgL>hoCVQT{o@asBy6Q$lu$?ZP;Xcp{t|NLE#sXc)GZzv>c(mT_TFs(rr z@#8l%z4Uo{UJ>3f!ipx937^<>IDD*rdQ>UuMVU);c zLk;UkH;oh#iw$APHkpKFiQ zN>#a4@kjVniRd!TCe$CqWYi$U2IeGAXTuIeEM?hs;c3v5MS6Q;m4g=yKz6NmC{;dS z1{~KfFp{E*kpH+!SXKcUfCMra>~U8h?%ps85-&-KviZSAN=ipGvDF-a*AvsZC1sHa z#)dTSxav0Xne;`hfa!KT5!dmy4r^GziZ5yoz_*Fz^)shaa$l&nIgw4Ll!aLYLSbrM y_%DQ?J{tnc8-J2?XjpFzcm{gaI)}sIu*3(7+LgztX+>uM0000=H2taA4-v7WZ>>^WY2_YXLVJvUasfr=trxJi52!bH6;@JBx3G!On^ON!!-6{R@ zv>O@#;Mn1@nJ%Ck*4B@$B4fsDnx-$kQJJjMbttH=286?)87D2Hl+O5n;3P3ni&I*h}I;z$V#@zXk+XET!2vur`$p< zh#4%lOL9_N0FXE{L{UvVR lf>bz%IjLPySb`u3GTtY}E=pTg41WLs002ovPDHLkV1l&7$*uqZ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_0_0/00006.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_0_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)&{J&LEoe)GWApigXSe0n4Kmq^X={9agdMpcbz`OWb zE1-qELIJ@f@&%woMgU1lE_^dd1RSl&HhA(Kl3@EcpwQNZ-#X)Ctw3ku=G+I9l%et@ zK@tWUe23#2zz6og2ll`RmcaU!oUPxY3{6fe^Sx`bo4u+vlXawg)I=hc4A&*EqQLFg zoHJ`aZ&ou?ovK;T?L|_7s=q(r?VWHQ2R&NPVO%nD9jy5trYBnnjW=4XrKba!e#div z3O5ieW08AW?5E*Jkbl#U4b!!AfCC2RfZCct9<{VL4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f43aea1c0d7e43be3a7d4967bb32b09b783e514e GIT binary patch literal 398 zcmV;90df9`P)9t0MI2bM(iEs5w`648Ge!Vj@xU^#u)&$^(VA#0@LvMsNZ zeTuiW0FF93G+u+TQw+U^mr4d~>(B8Po>3OpDGV*q>-2$rovx48k5no*C)3QGJw7W1#?{0T9#E2Y|YV@oZ&#V{56D*8gs7 sorBsl5}Dx3y_c+>ucN0R3<&<451R6~)ys{xoB#j-07*qoM6N<$f^UDb{{R30 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..daf511fa4228a25939080b1f9432af80a863e7fb GIT binary patch literal 354 zcmV-o0iFJdP);mgh2@p}q2mf1iDkYc@NQO}72qAn1Mi!+ zwE_ylNt`}%yV%n|`cE&obqL2HE2$6^w&xowWUc982k0rzEYj3_#&Up*LXG$<5~C+! zcqVHF{t@%7CJDz2U(C84Bw@TLiKtRF1zRvp#nh^rq&cv5!YWpcV9|I+ffCH3VJ~i8wnQ6Fh?topva+?MBn~1PQ6pXtS zvu^mt4EiyjMfJZWdVm))#(-VOq|k>ELI@#hz9#Ot-+6=rr2qf`07*qoM6N<$f|Qz< A^Z)<= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..d8e9b0063c6c839befa94c90f9bf87cf3f3ec4b8 GIT binary patch literal 407 zcmV;I0cie-P)}aA}EZ+LDo$&vCXCzg^OxygSDVjZE5vCgZh@*%@anR)s*c0Rll?WZ#&ga zah59FSn?*mI^Jw1;15(g@zvw#$dvGNWI)xnKB@bI)^i2=(!#FZYvjK^XgkmutE}67F?AzPQl2o$}Ru^0000G`2ZwO2#Ht}Bpd($002ovPDHLkV1hZE BtwaC- literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrVSQ-kD4?!c1QPCfvTCfoSHVgI0002Q^L|CopfacWZXTpD`x!lf zK3t=1|2}TJ?7(YuS&Tzhvs?e_=pA5|b>aWYP#)0}AR@L}`AV-rnh;b>_eL56bY!nV z0t0yFq)!x@=0-Cu(;fekCgEZW(3^?8P~U;B$WY%6Lu#n+3_OSgQ7DqD$eYo;^kgPH z9$(k=YREc14vv+&Nz|Ap+7+yp_g93Pdgt}_;Jqn_5C+Zwvqc002ovPDHLkV1jERj+Foa literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..cf122072779d8507c6610702b59cf151b621edec GIT binary patch literal 487 zcmVKWKMzK@+~PZ# zhTl->008F!KY!6`49rArTszgz%EA6I20peF8x7sI^xDaYHwhOviZZ=Ljn@|%iJ3;7 zY893TmNrS-%u;5nEzZyOrCzk!>+f)hl#{78*9ms3oA8tTOXIdiqw?5tXigccChA>GvKtO>P>Y464^ST!lx zg}1NtR;N%{Rg0rD?{cjAAAs>Fob1_%bF2giDRdv3e#jIo#=Trz>q&!v3^_skFUfg^ z{w357^L1Vfh7}-h!Yy*K)3S+;3b#YvwQrT|*N3XnewJm}(19X_KOqIZnys6#3%fsK dk|ar<%NH)2eU_1180Y{1002ovPDHLkV1hA{+sOa` literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..a0201ce2a0f95f2f3d261628dcbe7a7ced9704fa GIT binary patch literal 477 zcmV<30V4j1P)_UGgE>rRJD z)(W$MYXPlgL>hoCVQT{o@asBy6Q$lu$?ZP;Xcp{t|NLE#sXc)GZzv>c(mT_TFs(rr z@#8l%z4Uo{UJ>3f!ipx937^<>IDD*rdQ>UuMVU);c zLk;UkH;oh#iw$APHkpKFiQ zN>#a4@kjVniRd!TCe$CqWYi$U2IeGAXTuIeEM?hs;c3v5MS6Q;m4g=yKz6NmC{;dS z1{~KfFp{E*kpH+!SXKcUfCMra>~U8h?%ps85-&-KviZSAN=ipGvDF-a*AvsZC1sHa z#)dTSxav0Xne;`hfa!KT5!dmy4r^GziZ5yoz_*Fz^)shaa$l&nIgw4Ll!aLYLSbrM y_%DQ?J{tnc8-J2?XjpFzcm{gaI)}sIu*3(7+LgztX+>uM0000=H2taA4-v7WZ>>^WY2_YXLVJvUasfr=trxJi52!bH6;@JBx3G!On^ON!!-6{R@ zv>O@#;Mn1@nJ%Ck*4B@$B4fsDnx-$kQJJjMbttH=286?)87D2Hl+O5n;3P3ni&I*h}I;z$V#@zXk+XET!2vur`$p< zh#4%lOL9_N0FXE{L{UvVR lf>bz%IjLPySb`u3GTtY}E=pTg41WLs002ovPDHLkV1l&7$*uqZ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00006.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)&{J&LEoe)GWApigXSe0n4Kmq^X={9agdMpcbz`OWb zE1-qELIJ@f@&%woMgU1lE_^dd1RSl&HhA(Kl3@EcpwQNZ-#X)Ctw3ku=G+I9l%et@ zK@tWUe23#2zz6og2ll`RmcaU!oUPxY3{6fe^Sx`bo4u+vlXawg)I=hc4A&*EqQLFg zoHJ`aZ&ou?ovK;T?L|_7s=q(r?VWHQ2R&NPVO%nD9jy5trYBnnjW=4XrKba!e#div z3O5ieW08AW?5E*Jkbl#U4b!!AfCC2RfZCct9<{VL4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrVSQ-kD4?!c1QPCfvTCfoSHVgI0002Q^L|CopfacWZXTpD`x!lf zK3t=1|2}TJ?7(YuS&Tzhvs?e_=pA5|b>aWYP#)0}AR@L}`AV-rnh;b>_eL56bY!nV z0t0yFq)!x@=0-Cu(;fekCgEZW(3^?8P~U;B$WY%6Lu#n+3_OSgQ7DqD$eYo;^kgPH z9$(k=YREc14vv+&Nz|Ap+7+yp_g93Pdgt}_;Jqn_5C+Zwvqc002ovPDHLkV1jERj+Foa literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..cf122072779d8507c6610702b59cf151b621edec GIT binary patch literal 487 zcmVKWKMzK@+~PZ# zhTl->008F!KY!6`49rArTszgz%EA6I20peF8x7sI^xDaYHwhOviZZ=Ljn@|%iJ3;7 zY893TmNrS-%u;5nEzZyOrCzk!>+f)hl#{78*9ms3oA8tTOXIdiqw?5tXigccChA>GvKtO>P>Y464^ST!lx zg}1NtR;N%{Rg0rD?{cjAAAs>Fob1_%bF2giDRdv3e#jIo#=Trz>q&!v3^_skFUfg^ z{w357^L1Vfh7}-h!Yy*K)3S+;3b#YvwQrT|*N3XnewJm}(19X_KOqIZnys6#3%fsK dk|ar<%NH)2eU_1180Y{1002ovPDHLkV1hA{+sOa` literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..a0201ce2a0f95f2f3d261628dcbe7a7ced9704fa GIT binary patch literal 477 zcmV<30V4j1P)_UGgE>rRJD z)(W$MYXPlgL>hoCVQT{o@asBy6Q$lu$?ZP;Xcp{t|NLE#sXc)GZzv>c(mT_TFs(rr z@#8l%z4Uo{UJ>3f!ipx937^<>IDD*rdQ>UuMVU);c zLk;UkH;oh#iw$APHkpKFiQ zN>#a4@kjVniRd!TCe$CqWYi$U2IeGAXTuIeEM?hs;c3v5MS6Q;m4g=yKz6NmC{;dS z1{~KfFp{E*kpH+!SXKcUfCMra>~U8h?%ps85-&-KviZSAN=ipGvDF-a*AvsZC1sHa z#)dTSxav0Xne;`hfa!KT5!dmy4r^GziZ5yoz_*Fz^)shaa$l&nIgw4Ll!aLYLSbrM y_%DQ?J{tnc8-J2?XjpFzcm{gaI)}sIu*3(7+LgztX+>uM0000=H2taA4-v7WZ>>^WY2_YXLVJvUasfr=trxJi52!bH6;@JBx3G!On^ON!!-6{R@ zv>O@#;Mn1@nJ%Ck*4B@$B4fsDnx-$kQJJjMbttH=286?)87D2Hl+O5n;3P3ni&I*h}I;z$V#@zXk+XET!2vur`$p< zh#4%lOL9_N0FXE{L{UvVR lf>bz%IjLPySb`u3GTtY}E=pTg41WLs002ovPDHLkV1l&7$*uqZ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00006.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)&{J&LEoe)GWApigXSe0n4Kmq^X={9agdMpcbz`OWb zE1-qELIJ@f@&%woMgU1lE_^dd1RSl&HhA(Kl3@EcpwQNZ-#X)Ctw3ku=G+I9l%et@ zK@tWUe23#2zz6og2ll`RmcaU!oUPxY3{6fe^Sx`bo4u+vlXawg)I=hc4A&*EqQLFg zoHJ`aZ&ou?ovK;T?L|_7s=q(r?VWHQ2R&NPVO%nD9jy5trYBnnjW=4XrKba!e#div z3O5ieW08AW?5E*Jkbl#U4b!!AfCC2RfZCct9<{VL4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrczW)Pz(1Q`#Eq}#Gn{>VtI}k#q(6Ru85JHGO&xiF2BJ*~CTMXO;`)<8} zHl;`D_>4VQuSpBaJPY{aOk>Yzc&cYwaf~YS@eLKya~Rh zY6k!~kDqn7?E``_6XZ34?j^Q;jGxskIf4epQ=B1q@?edDkSAGBwwj)?1s43qX)B zVtI0GeI- zLP$R=wb3!GD#DUp5RACfvlU_+3G3;IZdC!im|fzl+sJ?DFukMzqgq-Rr=+l_2Kn)= z^zTgHoT{vDsQwbx{m3=sa~smc_9=6T;v1UF|2w?m#`B6Gd%5d7;59@6f*=Uq%Li+I VgQO=|H2nYo002ovPDHLkV1ko}<+uO< literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..265c5506d8282d58134d37acda9d0aa2656a63ef GIT binary patch literal 503 zcmVNm!bxq3iE!NND`iT$l zR$n(>BXv({wFny>$Vrse{sZva+dvj$+>>P6t8aq~z5>MS2SPGn_Qj+)W6|lyPgm^# za30ru+;)e~6a!>2kz69z0Jh!7PcuVOkYj&HZb_LZjWJkExid2*sQxPe|I?~px5=DU zrtoCZ2e9>3&pVtXBxI?T2#JPgn{dvku3YrLJBxhze)G6f?$IbHTr&EYX#g~xt44o9 zgiuHH2NPrPCXt2Sq;((W^}?d$v8~z{b5#d^TDEv-?1iq`xxA{B2`v)RI^ZL(SUxJM zvO8HD0RV-Quvb-9oEQA8q?hCQ_5GEW3YvX}R++myna86R^k;w{DM^v*-YOn1YtNs# z=kK?vETNxxE#$0_(q7WcPuddd0Epg;kAZcYd)x^n`pATdmnFQY*F2;ccZV!Y_b7}l zCby%m0CD;>V#!5zL=CpJ--CES002ovPDHLkV1l&D>v{kH literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_0_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..593b9d039a9a7bdbe3656b51efce5c292cd6bc18 GIT binary patch literal 376 zcmV-;0f+vHP){r?Z{L-(+bWS|sVQS@@MhZPz`pcnxNf*=S2TaLX>CA|M+^OTp|RPHKU3=f z0LOmTW7-;Q<}yH+OQh|`6Lc@DwWmu9YPcWLTd?zBj)BG0H}+oue9Ou%D5PflmheN8 zt$ALIC?O$3EfEq6_YPscsK$8Ke{<%koeFMms(Can3@#ac@RR__=Bm+mNG8+~{mw)V zMiO0UBx|0-r75Pj?RfL24YjjwPmG&}%9L)lrCaVtC|sbXnol@D(@%sxLsX8xgD$fm z3-lH3yY{C|fF9qoxj7S1Thxwo;Pns|AZ^`od-=zBt#{6xEodPoY(X;f)P4{I!EoMf W-0Wu9Njg9P0000>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)U=!o2}_X^@Bil+;5WmPXaZt)o7|6mz< zWVrj=GeB~6lf=#NMo literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_1_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..03d00da6ae5941079f7c350e3a8176fd42934221 GIT binary patch literal 337 zcmV-X0j~auP)f~@`c>O*Tp%s4|aNgcKAO)T=T_sqbm<@2Z$)Ut@%x#gD@#*GTjql0>Cr- z90UkJUODNTg_^ZdEX&jrzo12UvI}TULtdzFKviU@Z-yW>)Hen(@B~@NlfB4`u-)64 z6=BmSFf|KF9ih@G@~x)j;54ae(H+w{A#cag%A;sGXjhKvT6Fo={Lw+#BE~G}zZiOj z@B9+h$Hgw3NL-?29Crqw@Ho%=USUW+BnQq}#$ldk$w|o@+iE3u-tYvWMW#gE0o?(|gl@1;8h*`Z2Cl002ovPDHLkV1l^a+8+P_ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_1_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3e11559bc99d536ced8b09bfc88c46abd85469fc GIT binary patch literal 491 zcmVmyDm zM{V7B3~71FC?Xtmpe9j9{S)x#ZJ-J;?n$!k&8LA2We14I9YU5cyqOed5S@1TxN0XN zI*+R!x7}bdw*f*-B$wDR5pBDTpD?CuL5AyLdrR7RQjV#JY3a;L8dHm`-SLtq-(Peu$~+o33SSw0S}6gV&bLN? zK?tFa=ubxE;7P!y>Da`t0Qya}2uAe*`^=pTiU(Ca8z&AQnSC0m04bkO&HjKGsYdo2 zgBtV%yHHQ=^d1)Sq%$^C@;uT(8`C|24AK&2mWP3d-AN7IA8?LNNuI~e)0{H^eyZ3> z4f@H^Ci(=c?OHxF?E>veU-VcggB8F`u8@nJll0Wp{?2|h5#yYAq+qAemaE}}YK2Kg zD!`ZPHMo@=Jhf7i2Tn)xbZK0000003OK)s%#3Y#fc%000000NkvXXu0mjf Ddf&F! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_1_0/00005.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)XaSD{006+Q1ZxE{_-lP&VS7@q5q0RR9106>x-ez?+R?QA6~ P00000NkvXXu0mjfl}CnH literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_1_1/00001.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrczW)Pz(1Q`#Eq}#Gn{>VtI}k#q(6Ru85JHGO&xiF2BJ*~CTMXO;`)<8} zHl;`D_>4VQuSpBaJPY{aOk>Yzc&cYwaf~YS@eLKya~Rh zY6k!~kDqn7?E``_6XZ34?j^Q;jGxskIf4epQ=B1q@?edDkSAGBwwj)?1s43qX)B zVtI0GeI- zLP$R=wb3!GD#DUp5RACfvlU_+3G3;IZdC!im|fzl+sJ?DFukMzqgq-Rr=+l_2Kn)= z^zTgHoT{vDsQwbx{m3=sa~smc_9=6T;v1UF|2w?m#`B6Gd%5d7;59@6f*=Uq%Li+I VgQO=|H2nYo002ovPDHLkV1ko}<+uO< literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..265c5506d8282d58134d37acda9d0aa2656a63ef GIT binary patch literal 503 zcmVNm!bxq3iE!NND`iT$l zR$n(>BXv({wFny>$Vrse{sZva+dvj$+>>P6t8aq~z5>MS2SPGn_Qj+)W6|lyPgm^# za30ru+;)e~6a!>2kz69z0Jh!7PcuVOkYj&HZb_LZjWJkExid2*sQxPe|I?~px5=DU zrtoCZ2e9>3&pVtXBxI?T2#JPgn{dvku3YrLJBxhze)G6f?$IbHTr&EYX#g~xt44o9 zgiuHH2NPrPCXt2Sq;((W^}?d$v8~z{b5#d^TDEv-?1iq`xxA{B2`v)RI^ZL(SUxJM zvO8HD0RV-Quvb-9oEQA8q?hCQ_5GEW3YvX}R++myna86R^k;w{DM^v*-YOn1YtNs# z=kK?vETNxxE#$0_(q7WcPuddd0Epg;kAZcYd)x^n`pATdmnFQY*F2;ccZV!Y_b7}l zCby%m0CD;>V#!5zL=CpJ--CES002ovPDHLkV1l&D>v{kH literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..593b9d039a9a7bdbe3656b51efce5c292cd6bc18 GIT binary patch literal 376 zcmV-;0f+vHP){r?Z{L-(+bWS|sVQS@@MhZPz`pcnxNf*=S2TaLX>CA|M+^OTp|RPHKU3=f z0LOmTW7-;Q<}yH+OQh|`6Lc@DwWmu9YPcWLTd?zBj)BG0H}+oue9Ou%D5PflmheN8 zt$ALIC?O$3EfEq6_YPscsK$8Ke{<%koeFMms(Can3@#ac@RR__=Bm+mNG8+~{mw)V zMiO0UBx|0-r75Pj?RfL24YjjwPmG&}%9L)lrCaVtC|sbXnol@D(@%sxLsX8xgD$fm z3-lH3yY{C|fF9qoxj7S1Thxwo;Pns|AZ^`od-=zBt#{6xEodPoY(X;f)P4{I!EoMf W-0Wu9Njg9P0000>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)U=!o2}_X^@Bil+;5WmPXaZt)o7|6mz< zWVrj=GeB~6lf=#NMo literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..03d00da6ae5941079f7c350e3a8176fd42934221 GIT binary patch literal 337 zcmV-X0j~auP)f~@`c>O*Tp%s4|aNgcKAO)T=T_sqbm<@2Z$)Ut@%x#gD@#*GTjql0>Cr- z90UkJUODNTg_^ZdEX&jrzo12UvI}TULtdzFKviU@Z-yW>)Hen(@B~@NlfB4`u-)64 z6=BmSFf|KF9ih@G@~x)j;54ae(H+w{A#cag%A;sGXjhKvT6Fo={Lw+#BE~G}zZiOj z@B9+h$Hgw3NL-?29Crqw@Ho%=USUW+BnQq}#$ldk$w|o@+iE3u-tYvWMW#gE0o?(|gl@1;8h*`Z2Cl002ovPDHLkV1l^a+8+P_ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3e11559bc99d536ced8b09bfc88c46abd85469fc GIT binary patch literal 491 zcmVmyDm zM{V7B3~71FC?Xtmpe9j9{S)x#ZJ-J;?n$!k&8LA2We14I9YU5cyqOed5S@1TxN0XN zI*+R!x7}bdw*f*-B$wDR5pBDTpD?CuL5AyLdrR7RQjV#JY3a;L8dHm`-SLtq-(Peu$~+o33SSw0S}6gV&bLN? zK?tFa=ubxE;7P!y>Da`t0Qya}2uAe*`^=pTiU(Ca8z&AQnSC0m04bkO&HjKGsYdo2 zgBtV%yHHQ=^d1)Sq%$^C@;uT(8`C|24AK&2mWP3d-AN7IA8?LNNuI~e)0{H^eyZ3> z4f@H^Ci(=c?OHxF?E>veU-VcggB8F`u8@nJll0Wp{?2|h5#yYAq+qAemaE}}YK2Kg zD!`ZPHMo@=Jhf7i2Tn)xbZK0000003OK)s%#3Y#fc%000000NkvXXu0mjf Ddf&F! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00005.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)XaSD{006+Q1ZxE{_-lP&VS7@q5q0RR9106>x-ez?+R?QA6~ P00000NkvXXu0mjfl}CnH literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_1_1/00001.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_4to3_v1_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..6e53386f7906f868d48091cc6b7a6ce2c980f1fe GIT binary patch literal 388 zcmV-~0ek+5P)JfH=Y%&nV>O;|HjrfmHR31kUZ%N@V&qGf$?GhqH!kgE>6oA||+)_)Xa^IwCq&H^O>0000Ss d0002!#Rc5AyBPQZ%kTgI002ovPDHLkV1hHVjj{j$ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_all_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_all_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrR1nc51R6@UH}oXY~`6A12-ionC=BP2I$Hj z0|y51&PkstH0+JlwoG^YbJ~Q1CE#iX@@TZ z2Uigpk%PSMyC|BoaI*ud{I&EM-v$K0O$icLn|B*Pxg6D>B=wYz000000D!f;0Pk#@ UI$PiJ8~^|S07*qoM6N<$g7wyku>b%7 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_all_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_all_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_all_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_all_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_all_0_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_all_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_all_0_0/00005.png b/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_all_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)#8PrGH;ZII=*?(>C*KhZ%fADKzApTBG9KOnjM9lr?|X9gevdLVIjzk1uE}opSFM?>BlROAi4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrR1nc51R6@UH}oXY~`6A12-ionC=BP2I$Hj z0|y51&PkstH0+JlwoG^YbJ~Q1CE#iX@@TZ z2Uigpk%PSMyC|BoaI*ud{I&EM-v$K0O$icLn|B*Pxg6D>B=wYz000000D!f;0Pk#@ UI$PiJ8~^|S07*qoM6N<$g7wyku>b%7 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00005.png b/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)#8PrGH;ZII=*?(>C*KhZ%fADKzApTBG9KOnjM9lr?|X9gevdLVIjzk1uE}opSFM?>BlROAi4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrR1nc51R6@UH}oXY~`6A12-ionC=BP2I$Hj z0|y51&PkstH0+JlwoG^YbJ~Q1CE#iX@@TZ z2Uigpk%PSMyC|BoaI*ud{I&EM-v$K0O$icLn|B*Pxg6D>B=wYz000000D!f;0Pk#@ UI$PiJ8~^|S07*qoM6N<$g7wyku>b%7 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00005.png b/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)#8PrGH;ZII=*?(>C*KhZ%fADKzApTBG9KOnjM9lr?|X9gevdLVIjzk1uE}opSFM?>BlROAi4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_v1_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrR1nc51R6@UH}oXY~`6A12-ionC=BP2I$Hj z0|y51&PkstH0+JlwoG^YbJ~Q1CE#iX@@TZ z2Uigpk%PSMyC|BoaI*ud{I&EM-v$K0O$icLn|B*Pxg6D>B=wYz000000D!f;0Pk#@ UI$PiJ8~^|S07*qoM6N<$g7wyku>b%7 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_v1_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_v1_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_v1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_v1_0_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_v1_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_v1_0_0/00005.png b/tests/snapshots/nanos/test_sign_psbt_taproot_1to2_v1_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)#8PrGH;ZII=*?(>C*KhZ%fADKzApTBG9KOnjM9lr?|X9gevdLVIjzk1uE}opSFM?>BlROAi4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4f6ae5978014701165e255cc71b61711a4fa4bc9 GIT binary patch literal 419 zcmV;U0bKrxP)d!#l~DqPMB{( zgN6*q4W%kTVD!-)O%{-LL=K?mLa@-m1Se!xq}~Da{K8aSbjoxQWdISdoLGh=h4FI7 zTmx&ZCp%h?8@QbyWW*(V(OUlj{ksl}aA=6ctIqsyAP?{9F5q}d3iyaBm%%j;#8eYV-_KT)YjfO8>1}oNH;K2xPK^(_%9LI5P%o|!bAV-ethrs{< N002ovPDHLkV1i0%vtj@M literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_0_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..d400e7534733c127b83d3071b18808162fb16c74 GIT binary patch literal 435 zcmV;k0ZjghP)Mw{jOwU^>F2N`d2% zWy-#k4z)P9NoESjLSzgV5Au(?4n~H(vL< z9(neh6}nAqcT%FzzCSx#@%tABqdJms9Lb8q+Nv8p>#=Cna()DWLXa%;x`nZ1kCLy*LAIXfsw)2W>UaQUolL5T+XG8~|vqS;nKD z7kOqI{{SqFf1>vffN;`8PLC{+l8sJnT zX&=ZDgyVOp(5l7(s@DlzJYZbRq@%V==_0^g?0jh21|%vn)MVz3->u6lKt1}q9&t8X z35u7-aUwH4fPFU`N2O%`s*r+p;iv*)4p|SHa*f%Bo%SQ$0fz&Lk-YQjC$BGps_@NM z-xFe~WA&YhJy=OZp_Qo5Vdq_0ZopL4_H%JC@t-yTA-IU;TShGbSzev+WhWPfNll3* zcw}%`bQY_(*Al0CW3#F2SE@70zPb^Ym}t`+F$?x002ovPDHLkV1kSkzWx9J literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..cbe590e866b7702fb40c598681a5f71eb6b39ca7 GIT binary patch literal 409 zcmV;K0cQS*P)DWxC?f*@$){klAZBHyJX;7)EKm{cx+ zTYY8(%oR;(l5wHraj~_-?C0&C0=Z4wE{kpZcYT2_q$*qqYI4nZtfR;n_5NYfbBAF52?L?L`8;@jGq2cW2y1D-}Q*I z=d3_6s6%rHh-;HMDr;V3Ye?Y_;d}w{lBCVUR^GH9=>`}aNP^_b-cMFv1V!P+y>AKO z>hQiX@eVwRDCEgcp2OPrUNh#jsuwYXG%=bNF%dpt37*N6=UKyC-||}$sS}H>0-sRi zvzw(#(At?I)u$sDGz8U|<3&yW=W@k01Zn>m!Et83AmhCQ(ly*0D?eIYqyJ2YFqs?` zd*zk9A1n0-9K-jD_mMC`2wEH05adh!pPwKIfDf=00000NkvXXu0mjf DE&aAK literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_0_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxr+_L1w<{n|Tn%?5B4E z`_vjO>;G|C+ZXBxA2;jJ*6i|rcKAO)9P`2TpeqmW1c<2Gt@TdNL6{PhO!q<<19)Z6 zK>!2l&Pl&2bl4lkwoD`b1#QB~HlQ^J@Cux} zW1D^hvlk)hM5vq;`P7t1=Z%w+v(5>52bNYI#YksdS!&8aOrR(K83iN8U62<6zQXSO z64tMa!_rf@XxeYN(|{(wy6#7|q2yVTLM~Ad1VIqY^|_(3xR=#N=Pj9_CI`XC zROv)S=kdMowtc{4iVmt(k<7c;_Az$CEJ;BF=fiSH$~hK0RpxJehCx{sU25 z9o}C|tihc`7P^z)PTrJmwOI`Jig>JVcvgYBDeULsE|%!Aerk|Sx{rAGB2(}*vdoTjDDmuAhngnbj17f2+I z)C}XlB9&5Q!cjHi@3!p>meZ_RGYbXx{U4BEYgR0%$whLi8cfKjD3q#I8?3I3CB--v z<_(ci1S$5-F6=ZF9G64@JJNKPx{xT5W1d>0E-gSF$UsJ`E(Oa>%2EgTRj4|aNKr|J xs!j@b4$z3YMZ~oZV97Tiu!#i-f*|<6d;zaWeiyi)Zxa9j002ovPDHLkV1mcy=zahI literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_1_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53339b3c5b589b3de41c71ce70d4b3aa70220339 GIT binary patch literal 481 zcmV<70UrK|P)i=*a@|W)~?x4D7qhRon*{3@#fMxTk z*}ox5sw4Z8i8Z*As6toLdJos?g%h+kH@F+BhUy#BL{W`FrbHZ_1Ly`4tXDuSNfC&? zsE)DUqB#L4_ePTg*jp+0q&nMCpMG-ud88V(oGX`{4(eRWbKqeSY90-Ut6 zNC0A7adWi;s>+Ui#LkM3vyy>S0;5GxS^!mU#7yhnocBetCZj4=9v`yA^}>*|OfWfG z7Fh>i-E_N=YWD;wP0r<|@)8Dbm8$<~sF$97OUnTgcHmm}K9X+fVev8#f*=TjAoycG Xyv~iCu+N_T00000NkvXXu0mjf-@n|? literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_1_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..7389b566f67ecb8cd7d3ee2d5a4edb46b16a3cd1 GIT binary patch literal 383 zcmV-_0f7FAP)H9bi-^XElJvjnBGriaQ8I%>0001hE!%pmOL_my?AyBk#23=u zzHUq-E>G#LX*}sbu0`p!55UuUf-IG~$Cj`h{tI@}6Cge}G_ruz1T{@TY>FD2{dkyK zCnDO`eLse!!(xg86{iTxk0;SRvDcm_lOEcI*~D zNw77aZpPTcB#XVQky&W_2&a?Q7#ICF=Q?}m0L_c)u13M&E!8Ja0nlvTRegsDQbYa0 zAO{%3^2RC?KE|K2JV4!|MqU(eG92M|r|= z0N%o}TJbkx1*tg78IA+cCY*1%Q;e&j&FHn#+}E{c6e!bnDLD2ju@^%wWI&!vr68kG d008i>ya1mg_-y6sQCI)~002ovPDHLkV1oQTuTKB~ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_1_0/00005.png b/tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)jlpK2AzvBN75#8?1-A2Q}A)F&cScy4w>0cw;!yi&^DM+!uI{3QmTf%=Y$qV z{*8wV`5!RXgOPtit-sgn=qU>yZP|2hch}uF+oOWlDF0Lz_FTGat&Yq21JC9}eEy%d z)#z&GEY`2QeJ1u>AH17eP~pb+_((zA7Jb!Ox3}I@mUWo2TW-O@y8-t#lB!;${t^_q z^QArI@5IJ#nE<1|6Xwidj$$_RpH#{9uz!t8%-i{|L1Dna@V175$!mE|ztu}g5ZBYy K&t;ucLK6V7nui?# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_1_1/00001.png b/tests/snapshots/nanos/test_sign_psbt_tr_script_pk_sighash_all_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..10c895733e7eaa6f650d929a1447c79459f35e6f GIT binary patch literal 410 zcmV;L0cHM)P)Kv z^!U@fq&tw{v;mbul!+gCt;k>hXFQApF1t z{o*D-Y2<2(K0BB{!L|+8K>^f<4xLK=K&vG#1x^N6RDkp%rVKVpZ7yiz{d*-;aLzef z0|dC*puqsQ^W8*{1F?ZAKmxL1sSU>AnXYm>F^lVVv4;Zup=`wY?3v~{*=D`U0Fw{* z6Go@k1bXZ$Yp7o+qP==_84wboltw#1ERzR5qwb{!nl_sG1v-~+yQ<@SmlN#F432^{ zs8ZBcT_$9KXehrF!_mD`!3pk+Gr}_q7@$<46^h2u&_U!~uda6v2t8&;cC9@9h_nJS z7pv1L)h%xAw!~MY{7p5BunI(FpPcq06k6N9e-Df;s5{u07*qoM6N<$ Ef+ftdQvd(} literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_0_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..81fc3c1f92e9a459d0abdd2a72ab4bf33d32ff9e GIT binary patch literal 427 zcmV;c0aX5pP)(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9eded7d0f0091fbf8e0631984d9f06f7e7c22de3 GIT binary patch literal 316 zcmV-C0mJ@@P)+Z@=ZGeK zVHE>d{gh4PXeN{aXB8%_`V`E7g76@+`V`CnmY78ku09bZ>j2u(RVb|bbdUl5dkG{8y~Do>)MAd*FdR@W38;0R9TogIJwyo$Y-2)KX`H(R4QQtDFPg)&VH= z_0GOg%3tH+E{I3UD|-IfOnNj6f5O>ioY1izuhrq_l#f*t^Dlp=|2PXz2I%z-LlZT8N?2_-L8z4B)a`R{*hL-hBN&hkJ>L0RR91n8ODU$917($ehFg O0000TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrR1nc51R6@UH}oXY~`6A12-ionC=BP2I$Hj z0|y51&PkstH0+JlwoG^YbJ~Q1CE#iX@@TZ z2Uigpk%PSMyC|BoaI*ud{I&EM-v$K0O$icLn|B*Pxg6D>B=wYz000000D!f;0Pk#@ UI$PiJ8~^|S07*qoM6N<$g7wyku>b%7 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_1_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_1_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_1_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_1_0/00005.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)U=!o2}_X^@Bil+;5WmPXaZt)o7|6mz< zWVrj=GeB~6lf=#NMo literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_2_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..50d7a3258e9d8625b089bea0b535de14aedaa732 GIT binary patch literal 353 zcmV-n0iOPeP)&`C|8{J+zMW1ENl5U4}|004kL*Ne9YD|1)hECykMefD;s zO{r1ZUYBXBA1Ez+T+Ku8!OqXG4*v&;V?Oxa=*r340U|20waoN22vdR<(>)U=0KBrV zL4W|1os*tbXty_tZJ9Lj3)+MiOF(OO_#w~W@sVoK@$-m+5#uaK3s0hO z`>9c8?u7ft#WBen?8;B>`9a?@GXRx;WdV&723|R{pC(S4m!LS(6H(e8zdqB_pMJFm z{1JvdK)Yt({B?1{(nIkX0000005E|Y!REz6PvPe!00000NkvXXu0mjfg^`=1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_2_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..3c12ed1d3bed894b24f93ff81d16252358830c32 GIT binary patch literal 470 zcmV;{0V)28P)fnvMi5bfnwEE1T4zB)uu^~|Ns=USWZ(M!68cYS-#13M++sTz z!rN6k0KmS%>+3y@j*&DQV~6^QRQ5-?@Ui8vQP(Y{)?R2_WVx7eOr{ppcs6-Tt0=dF!P{~VZx?Gq(=G1-vKxcr$9bp3$+xt zU2>4X$nbPPF%2{gn~s_}>fAxU2@C#ES~)sR-RcDZ0H$Z;cPMdJwg^i(KoWRM>#qr8 z>a>0^>4PiDEOaHa`*5uTTWFkzJ^eOYWP#?mYj2ikX~D+?q5e~=+cX7w401xI;vjZ5 zZtcj!mU$8OFia~4wd=95(NWP#C##XY(94wj57Mk}wWw=)v$y^`;&h@h4T4qxP(v+_ZGNbCL+5z$=EIa~a zteR)BPmv8Y`JqdNa^>n}uJT1wcw3FvdzDPZgU{Fl7A75#BuVmIe!*CQpbBG{^8f$< M07*qoM6N<$g5A5)I{*Lx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_2_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_2_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..27301e1e1dfc9a677d87a3b1e06f3981febe32d6 GIT binary patch literal 477 zcmV<30V4j1P)U6lp z)|mx37EoHo%mA=0Z12PX++0U5Ldkn-x!jxob~|>t|NgGW$WH)!-O)&B(jTTKXG((@ z;p#Uuz-L1N*lepjgLg2MTq4(t;GcpFw+|sJWu6pcsBtRvl9M_sHvR#?+s$cwOcwcz zA#;kmCY}t>0FY%QYS?sC%~9Au{}3kez&1*jXQ!!Cy#N5f@QS?Oi5(}~1X~3_8t|0t z?+J$LV1F_q1}hO+XeEZ8!y^$YsRBf#+~Jv7(oH+2sMYFO9UzyH9x!~%w(?NWDh8*> z7OO7Aa+wfc3sn+u#juiec@W^rSK=X|lF%o(TJlFGfo(T{EKimUH1`TANUx7J87S>N zeBj_FMJTs`w^GDnClNv+M<M06=vD7RiJSX!20AgxtoB z1ZOo=Z<8;nPc)T%Ap5r@&B~5dEzkB*6Iwnun$Kc>%Qu`qNd{_&00aVo!2jX}v;c>A TS***-FEGRSa>ob3s9wj)Ue}7ol&KM{Uu!1gW6kIUOlEB^#cF^hBJ!(O&sX#Cb(4r zqzxa*{yo7^o$N10)?g=c3hhM4d)QJB*~VDWS^8H??^HdG8w)o6)YcS06?q&mM&%37 zVq+%VrUh9zs$7;Gp(=5#$JP#27;<}}frUO}cxp*d)fnw0LCCBw)Er7Ps=Bl;jAlYN z2!YW@YVDv)>h7iv$+})X?6@+$WmqqrhpRbfwFq#ke(@jV_*yU9-`Q l;J+jj8nOV1L?ZEj@dfd(!r(Jws*C^t002ovPDHLkV1liB;CKK4 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_2_0/00005.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_2_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..7fbd5c20569d5f28cf3a54e4b723bbd7cf8935d5 GIT binary patch literal 463 zcmV;=0WkiFP)gK3YK)wkx{vZc=QOt&i?EZh4OvlhBovt2ceOS){ zTyM{_{<09J4(ksld@z&9LNgh?50~ef{FCd#2VjYOw@FI?Hy^YEk3{YOm8)89c5GfTJ?L;P0>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)S|Nn#g&_1|yOcZN1qT`+{i**`1Km>FS004khyz=_T{%!lMZerDVkcKLN zw$1R;et`_f{`okj7~Yv1Y+k!JNXn>7gMUxSTl)owbf{0S64}J^Ei!=ug4`n^RvoaW zPvgt~J~Knv1@VRM4^Fn{qhSZ|KNfo0?a^;(ztlc>KAz?Qvg2M*5QAXpOIsKk2^w-Q zLig))xH}de0f)$E)T>97xSW)AbeL$@7}ED`{j-*dR38k!ULT1W9Ejxixz{~~T< zB389f$5}!iH+COu-v_vq=}|KY?daMdd5ch-#aGPzy4EIcqF7y!JF8~#b@>@K{1`(R zO7L5!M5zLM3W%<5v?Dir3JCr^7`xMt*|hHiaN+I%3ZS gO$HPI004G50XAapYqbu{X8-^I07*qoM6N<$f}FsnS^xk5 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_3_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..826adf1f26e68661a74c7203f331de67aeecc7fc GIT binary patch literal 333 zcmV-T0kZyyP)BqKLy;Ql8-o~lf-L08R^*~gUq6{O zfgJZ_dKS{oh=a4EoSJ9(n_J{P@vygNO}1N4H-TF~P!IX%l{Py?KCtpR6unM}v>OHQ3q7xSkdv`nr6 f0000006AF!M!CfxU6qFE00000NkvXXu0mjf#R-Zl literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_3_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_3_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2a3a9cfe70b8fa9ff273b1c05338f9887ee523b8 GIT binary patch literal 506 zcmV9lJ{&m&gP#OoPBfPc}ITlFjnU>Y1FR(&Ziyz zT)hJT+}CH`9jC!y@D8r2f$XqY7TDs6DO-@?Br2%MJ5R1Lj4?QueVDNV0N^-3A3y)k z8h0Fk613Mht@s7b}Z994;XHqal!IcPOK(&6lqZ1T_d8{LC4XQSe9OZMTH3LyF1 zmHi(CL3OY{8Bv3kh+SwU%+BHJy}wm`E5t}_>Bv^@&c)?IRJ~PUImP7ybhFl^L~2|q z!*Lc_NgalG5#z3x`EJ6gkH!5(-%*(i*%A8`+O$T;jqw-@iVF66pjRS`eM9iWbtE5= zTaaEfRgR)b-Rs~4J9)rCiXgB4eRq0t3fpP}PYq+m+X5dk4lh8BKsHBsNmHIwRad}G z4aJO)zYj2}kfAP{Ml_a{ry82~qK+ds0iS7{D}5ABKqXyuyX=CVVaAY+B`4IpB%X(aS{8t+bq4qHC z1Hh6?F9bMJ*|~})5rgj~%n9YlIq7%cC11Y(a6eSIHadi_)IL1P021e0wf{g6sxIx{ zjIzN@R2G_v^!ISvdPJ4ILxiu~HSH(wG7YW#=@7cUBUDNfcSjRB5XVNY+M#Ymv^5J? z`v}DgIZu{9!hZQ|+&Q@=vL18;St7WIlih*bX6i%=4kbr`Ub;pE;&%*5eg?zMI6>0Y zovpsWh0*@sTa{@wduD%k3>%=USw|OI?!%balyptTzVgC@<+dij|pv z$}5qZQs=``2S85|8O{}``fOW>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)bDa1II7B{L1F`>Rz&VI*b8P<-hMfR0NdVIP`r(djXiVJqa>Zg+^}1B+$Xk%# zgj>*c((e!S3ZHiAIcD-%T@P?l^gy@C*$&DEVih4fi?0}ah@oObHoK7SteVBwjrp*N z&J5Sk#n@9oP`cq>XI1?lL?P!msWec&W!`GD05h~+X9N#>w_P&JFM4qEu5h|iu6 gPzDqL004G*0aM-Zfl4vnL;wH)07*qoM6N<$g7%)UFaQ7m literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_4_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_4_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..246d839d41452c45b19c8ee62faba84cd50951aa GIT binary patch literal 366 zcmV-!0g?WRP)2@p}XTJx1Y2Vp|cWV$E9IDkj? zISAl@Jaf`J3N>@1n3k!>e?gP*WDC%mhP+VUfJ2d?z8QklP~RB%z!O9vPxc}&!sFhZ zS>d*N1?H%Qq#a>pr&v7FREoq7oBb$llzbs?N7t2Gu|?Tl=}I$7rH-T@LY(9k0V75& zC^CajY9mj=^>VQR&9iPgPWzpQM>?Q*t32)xdSPDG;EkevVWU|n7cD095HxPBUG;ex zs!#uu1AbF|GR*5)nX(-NLqgZf*=TjpfBfPyCjTnoc%m9&M(V# zDH;3*Fg@XFiLo&NE)s4%+{4K6={*5UVcpTP?dGo(&i-;}-(^2n7}Z|R8il*)0o8dE z{B-pW0B|0^eYfon$*2XgPJ!WFY`agK#SA%u9P>%e5IlKsje*p3ZTjy3_-m_vMM-*g zYzsHic?Zx9ep#|LQVVwZIJOp*VbH^#_;{9p`n)0>xB8+px`|-YLtR?Fg!*irPhNp>f z9H>&%DF^fZeT;e`lV~;7B*%h_R&!T=8nMSS>5W)*!zS7pRm~>IXH94ea4!=!h>#(t zXqGe=9n<4rp;@ST75Z6@1t06&|7bQdl`2YX_07*qo IM6N<$g7QYuhx^UM1bY61u{m{`FJV`~NCvoh<%4vFVsEn^$vIx2{-3CTQdZ8WP>lO>H85A-AF4cNtyQt_O z(Mv_JH=W}fFP!8N+q3r?UB09dYza>Ga_4Hprir>2wBwQVu62l;ZhBH`!?yQIvj~(T zj8dY=l(ZZBr7TT(-8}by05WpjCo^;;1(cC>FvP1{l5q;*>EAZ%XY_1fw!F=6%RD^* z2YD%Y*SvO_aWrLcqmUG9q6L{iO?o4JabA+HT qW`a}Dgc#>OiTEF literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_4_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_4_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..a6374e723552401d9d916421b5459c7a39eb99be GIT binary patch literal 358 zcmV-s0h#`ZP)SbcD`+*siw@)@1+9Go-qs6bQO2DmVQKye4&oD#{C+|x5~fLN+=9ds8k_xinOY|z z+Sa2U!_r|h)c{qO2+NNr>|Ro9&yW_>aX+HBaOdG1QxsF**q;FUl$BjjM9q#Z;fn-Y z^KmhK=`X!COY3JSCuH^RCf%NFvmT{$P-U znV<{J9tXaUsX!`|6|*X!#DP2(D%_n!J%xQ#>CyI{|hK zA9E^sOaedynucEPOO)yU{!YNWSCS*at4aU>0001I>`~zX`HceG;s5{u07*qoM6N<$ Ef_xmA>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)_52Pezo8Yvw&l{#k_hGA&MGwZ+3XY7wQ!KV2J4Rin; ztKr4{012-1`*FxI_+o0Zdhb?1+GxrEe~aYJ{Q$r^u%1y=QH zeAnN;FwB=Atf+o6IhMyj2H-yyu8hZ{Kj^wNK3N{U=YV|S-p~+>K*yJ{ZD?d@vwIPk zul?Y1ocU>BfPJJM#QvKJd5{Wo3;!CXWdPYEF!KDa!vo#Wl)3j>if?mt_htLk&Aj8t zL99v9M5#XqkHa^yK^XZ7xEXIq_AGHr@b~61T^D> z0JCQy`pyB-s~hf}n?47GNcYDxV1>H`rFxl}CUdlFY?8v-u`IVsc7VHXOhjJ^5{5az cFbqR4A6_u>Tc(t|Jpcdz07*qoM6N<$f_b5@f&c&j literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_5_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_5_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..92924defc4710578aadfd11a82b760efab4d428c GIT binary patch literal 324 zcmV-K0lWT*P)1c->OR=(165GDmB)BPZf0W!1a zAbv79)u;+UX=Fp?pfszE z%AANe-%&eKU&KnUmothdnJwO)78@GaqLYfZB_En$R%h)u;W#s0KxRYKi@RbjNwg&z z)sfn&-4@&jYRxc=p|2Fdd6nc1kG0a^!*q?}4o1=?n@E=PvD#4|s=feJnG_E(Qv!s% zEkmnPq0M;!-PO<`RsJ4;>MKRSSMk#S0l@9_^dckqMUAK|G9zgY)?7j7H%IO5y&Oya jka3jZ0dP1Rj{l1fuT69qz%l=w00000NkvXXu0mjfvI*pD literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_5_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_0_5_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9f3ae167e403ba80cf7a815b469b9c724f522fbf GIT binary patch literal 499 zcmV_)fK~!(;}_sJx&sxX-b=}{cK=Ndqy<#(2MXDO*^S9)0a|lEenO=a z5$)TtAD7i(GSY)v)<7E)yVpu0xy1!JZX%|d;(5v%Q%i$aY6FP303uq}?Mw_N_oPlV00%O9U zc@GLf+8HzlBeW+?d!}i76PEdOoGi2Tt#)z##d3B%zdyFo{PER9tx zSN>vf>ewPg^Dw>IcTu;*riX{V2S~*gZwtI9Yx^L6uKbo{oD0Tu9y9!=C#;^I?CiCl zvHf^hz}eP}{zq~SkU;aM{4h-g(Z2v)uAmym*@a-I>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)-U1ktx8OFoNg7&5 z5?sPygxK!52C#uYuz^3YfhW+uCr9niNJH6frChtR)od%*Wb?@S)sz`Q$X34Fg<)|{ zw0XT)6}mcIy`ZsyM$Q?Le|C8i2^R52<0zz+MKaIyz-9 zmpAhF5ENGR0+x=8JKzlCusN?AN(9xUq3nm`pQ&+$Sf`;~i75a80002!4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..10c895733e7eaa6f650d929a1447c79459f35e6f GIT binary patch literal 410 zcmV;L0cHM)P)Kv z^!U@fq&tw{v;mbul!+gCt;k>hXFQApF1t z{o*D-Y2<2(K0BB{!L|+8K>^f<4xLK=K&vG#1x^N6RDkp%rVKVpZ7yiz{d*-;aLzef z0|dC*puqsQ^W8*{1F?ZAKmxL1sSU>AnXYm>F^lVVv4;Zup=`wY?3v~{*=D`U0Fw{* z6Go@k1bXZ$Yp7o+qP==_84wboltw#1ERzR5qwb{!nl_sG1v-~+yQ<@SmlN#F432^{ zs8ZBcT_$9KXehrF!_mD`!3pk+Gr}_q7@$<46^h2u&_U!~uda6v2t8&;cC9@9h_nJS z7pv1L)h%xAw!~MY{7p5BunI(FpPcq06k6N9e-Df;s5{u07*qoM6N<$ Ef+ftdQvd(} literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_0_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..81fc3c1f92e9a459d0abdd2a72ab4bf33d32ff9e GIT binary patch literal 427 zcmV;c0aX5pP)(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9eded7d0f0091fbf8e0631984d9f06f7e7c22de3 GIT binary patch literal 316 zcmV-C0mJ@@P)+Z@=ZGeK zVHE>d{gh4PXeN{aXB8%_`V`E7g76@+`V`CnmY78ku09bZ>j2u(RVb|bbdUl5dkG{8y~Do>)MAd*FdR@W38;0R9TogIJwyo$Y-2)KX`H(R4QQtDFPg)&VH= z_0GOg%3tH+E{I3UD|-IfOnNj6f5O>ioY1izuhrq_l#f*t^Dlp=|2PXz2I%z-LlZT8N?2_-L8z4B)a`R{*hL-hBN&hkJ>L0RR91n8ODU$917($ehFg O0000TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrR1nc51R6@UH}oXY~`6A12-ionC=BP2I$Hj z0|y51&PkstH0+JlwoG^YbJ~Q1CE#iX@@TZ z2Uigpk%PSMyC|BoaI*ud{I&EM-v$K0O$icLn|B*Pxg6D>B=wYz000000D!f;0Pk#@ UI$PiJ8~^|S07*qoM6N<$g7wyku>b%7 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_1_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_1_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_1_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_1_0/00005.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)U=!o2}_X^@Bil+;5WmPXaZt)o7|6mz< zWVrj=GeB~6lf=#NMo literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_2_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..826adf1f26e68661a74c7203f331de67aeecc7fc GIT binary patch literal 333 zcmV-T0kZyyP)BqKLy;Ql8-o~lf-L08R^*~gUq6{O zfgJZ_dKS{oh=a4EoSJ9(n_J{P@vygNO}1N4H-TF~P!IX%l{Py?KCtpR6unM}v>OHQ3q7xSkdv`nr6 f0000006AF!M!CfxU6qFE00000NkvXXu0mjf#R-Zl literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_2_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2a3a9cfe70b8fa9ff273b1c05338f9887ee523b8 GIT binary patch literal 506 zcmV9lJ{&m&gP#OoPBfPc}ITlFjnU>Y1FR(&Ziyz zT)hJT+}CH`9jC!y@D8r2f$XqY7TDs6DO-@?Br2%MJ5R1Lj4?QueVDNV0N^-3A3y)k z8h0Fk613Mht@s7b}Z994;XHqal!IcPOK(&6lqZ1T_d8{LC4XQSe9OZMTH3LyF1 zmHi(CL3OY{8Bv3kh+SwU%+BHJy}wm`E5t}_>Bv^@&c)?IRJ~PUImP7ybhFl^L~2|q z!*Lc_NgalG5#z3x`EJ6gkH!5(-%*(i*%A8`+O$T;jqw-@iVF66pjRS`eM9iWbtE5= zTaaEfRgR)b-Rs~4J9)rCiXgB4eRq0t3fpP}PYq+m+X5dk4lh8BKsHBsNmHIwRad}G z4aJO)zYj2}kfAP{Ml_a{ry82~qK+ds0iS7{D}5ABKqXyuyX=CVVaAY+B`4IpB%X(aS{8t+bq4qHC z1Hh6?F9bMJ*|~})5rgj~%n9YlIq7%cC11Y(a6eSIHadi_)IL1P021e0wf{g6sxIx{ zjIzN@R2G_v^!ISvdPJ4ILxiu~HSH(wG7YW#=@7cUBUDNfcSjRB5XVNY+M#Ymv^5J? z`v}DgIZu{9!hZQ|+&Q@=vL18;St7WIlih*bX6i%=4kbr`Ub;pE;&%*5eg?zMI6>0Y zovpsWh0*@sTa{@wduD%k3>%=USw|OI?!%balyptTzVgC@<+dij|pv z$}5qZQs=``2S85|8O{}``fOW>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)S|Nn#g&_1|yOcZN1qT`+{i**`1Km>FS004khyz=_T{%!lMZerDVkcKLN zw$1R;et`_f{`okj7~Yv1Y+k!JNXn>7gMUxSTl)owbf{0S64}J^Ei!=ug4`n^RvoaW zPvgt~J~Knv1@VRM4^Fn{qhSZ|KNfo0?a^;(ztlc>KAz?Qvg2M*5QAXpOIsKk2^w-Q zLig))xH}de0f)$E)T>97xSW)AbeL$@7}ED`{j-*dR38k!ULT1W9Ejxixz{~~T< zB389f$5}!iH+COu-v_vq=}|KY?daMdd5ch-#aGPzy4EIcqF7y!JF8~#b@>@K{1`(R zO7L5!M5zLM3W%<5v?Dir3JCr^7`xMt*|hHiaN+I%3ZS gO$HPI004G50XAapYqbu{X8-^I07*qoM6N<$f}FsnS^xk5 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_3_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..246d839d41452c45b19c8ee62faba84cd50951aa GIT binary patch literal 366 zcmV-!0g?WRP)2@p}XTJx1Y2Vp|cWV$E9IDkj? zISAl@Jaf`J3N>@1n3k!>e?gP*WDC%mhP+VUfJ2d?z8QklP~RB%z!O9vPxc}&!sFhZ zS>d*N1?H%Qq#a>pr&v7FREoq7oBb$llzbs?N7t2Gu|?Tl=}I$7rH-T@LY(9k0V75& zC^CajY9mj=^>VQR&9iPgPWzpQM>?Q*t32)xdSPDG;EkevVWU|n7cD095HxPBUG;ex zs!#uu1AbF|GR*5)nX(-NLqgZf*=TjpfBfPyCjTnoc%m9&M(V# zDH;3*Fg@XFiLo&NE)s4%+{4K6={*5UVcpTP?dGo(&i-;}-(^2n7}Z|R8il*)0o8dE z{B-pW0B|0^eYfon$*2XgPJ!WFY`agK#SA%u9P>%e5IlKsje*p3ZTjy3_-m_vMM-*g zYzsHic?Zx9ep#|LQVVwZIJOp*VbH^#_;{9p`n)0>xB8+px`|-YLtR?Fg!*irPhNp>f z9H>&%DF^fZeT;e`lV~;7B*%h_R&!T=8nMSS>5W)*!zS7pRm~>IXH94ea4!=!h>#(t zXqGe=9n<4rp;@ST75Z6@1t06&|7bQdl`2YX_07*qo IM6N<$g7QYuhx^UM1bY61u{m{`FJV`~NCvoh<%4vFVsEn^$vIx2{-3CTQdZ8WP>lO>H85A-AF4cNtyQt_O z(Mv_JH=W}fFP!8N+q3r?UB09dYza>Ga_4Hprir>2wBwQVu62l;ZhBH`!?yQIvj~(T zj8dY=l(ZZBr7TT(-8}by05WpjCo^;;1(cC>FvP1{l5q;*>EAZ%XY_1fw!F=6%RD^* z2YD%Y*SvO_aWrLcqmUG9q6L{iO?o4JabA+HT qW`a}Dgc#>OiTEF literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_3_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_3_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..a6374e723552401d9d916421b5459c7a39eb99be GIT binary patch literal 358 zcmV-s0h#`ZP)SbcD`+*siw@)@1+9Go-qs6bQO2DmVQKye4&oD#{C+|x5~fLN+=9ds8k_xinOY|z z+Sa2U!_r|h)c{qO2+NNr>|Ro9&yW_>aX+HBaOdG1QxsF**q;FUl$BjjM9q#Z;fn-Y z^KmhK=`X!COY3JSCuH^RCf%NFvmT{$P-U znV<{J9tXaUsX!`|6|*X!#DP2(D%_n!J%xQ#>CyI{|hK zA9E^sOaedynucEPOO)yU{!YNWSCS*at4aU>0001I>`~zX`HceG;s5{u07*qoM6N<$ Ef_xmA>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)bDa1II7B{L1F`>Rz&VI*b8P<-hMfR0NdVIP`r(djXiVJqa>Zg+^}1B+$Xk%# zgj>*c((e!S3ZHiAIcD-%T@P?l^gy@C*$&DEVih4fi?0}ah@oObHoK7SteVBwjrp*N z&J5Sk#n@9oP`cq>XI1?lL?P!msWec&W!`GD05h~+X9N#>w_P&JFM4qEu5h|iu6 gPzDqL004G*0aM-Zfl4vnL;wH)07*qoM6N<$g7%)UFaQ7m literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_4_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_4_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..92924defc4710578aadfd11a82b760efab4d428c GIT binary patch literal 324 zcmV-K0lWT*P)1c->OR=(165GDmB)BPZf0W!1a zAbv79)u;+UX=Fp?pfszE z%AANe-%&eKU&KnUmothdnJwO)78@GaqLYfZB_En$R%h)u;W#s0KxRYKi@RbjNwg&z z)sfn&-4@&jYRxc=p|2Fdd6nc1kG0a^!*q?}4o1=?n@E=PvD#4|s=feJnG_E(Qv!s% zEkmnPq0M;!-PO<`RsJ4;>MKRSSMk#S0l@9_^dckqMUAK|G9zgY)?7j7H%IO5y&Oya jka3jZ0dP1Rj{l1fuT69qz%l=w00000NkvXXu0mjfvI*pD literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_4_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_1_4_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9f3ae167e403ba80cf7a815b469b9c724f522fbf GIT binary patch literal 499 zcmV_)fK~!(;}_sJx&sxX-b=}{cK=Ndqy<#(2MXDO*^S9)0a|lEenO=a z5$)TtAD7i(GSY)v)<7E)yVpu0xy1!JZX%|d;(5v%Q%i$aY6FP303uq}?Mw_N_oPlV00%O9U zc@GLf+8HzlBeW+?d!}i76PEdOoGi2Tt#)z##d3B%zdyFo{PER9tx zSN>vf>ewPg^Dw>IcTu;*riX{V2S~*gZwtI9Yx^L6uKbo{oD0Tu9y9!=C#;^I?CiCl zvHf^hz}eP}{zq~SkU;aM{4h-g(Z2v)uAmym*@a-I>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)-U1ktx8OFoNg7&5 z5?sPygxK!52C#uYuz^3YfhW+uCr9niNJH6frChtR)od%*Wb?@S)sz`Q$X34Fg<)|{ zw0XT)6}mcIy`ZsyM$Q?Le|C8i2^R52<0zz+MKaIyz-9 zmpAhF5ENGR0+x=8JKzlCusN?AN(9xUq3nm`pQ&+$Sf`;~i75a80002!4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..10c895733e7eaa6f650d929a1447c79459f35e6f GIT binary patch literal 410 zcmV;L0cHM)P)Kv z^!U@fq&tw{v;mbul!+gCt;k>hXFQApF1t z{o*D-Y2<2(K0BB{!L|+8K>^f<4xLK=K&vG#1x^N6RDkp%rVKVpZ7yiz{d*-;aLzef z0|dC*puqsQ^W8*{1F?ZAKmxL1sSU>AnXYm>F^lVVv4;Zup=`wY?3v~{*=D`U0Fw{* z6Go@k1bXZ$Yp7o+qP==_84wboltw#1ERzR5qwb{!nl_sG1v-~+yQ<@SmlN#F432^{ zs8ZBcT_$9KXehrF!_mD`!3pk+Gr}_q7@$<46^h2u&_U!~uda6v2t8&;cC9@9h_nJS z7pv1L)h%xAw!~MY{7p5BunI(FpPcq06k6N9e-Df;s5{u07*qoM6N<$ Ef+ftdQvd(} literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_0_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..81fc3c1f92e9a459d0abdd2a72ab4bf33d32ff9e GIT binary patch literal 427 zcmV;c0aX5pP)(JnGERun-|N$0=m!itJPL1o(j004kBeBRfu+OktoqSO%E(Wa8v z#e7Vybc9Bhr{Od#37@pTu9~<^rL=pHhVDmwNlO1#r*V|CjcH$xWIccucxl%9B}Jv( zs@2Zxt*Se5-~rj4GCz!%Bb#K?0#Fy0ODT!N#+7^*=g21cXji~{x|R^2S8+@rISj_r z;o-w-bb9g0e6jn)fQ(~xWw{u4Ol+c3Gm3$OFdOz@8tDjum=8@spPcg-!L z^Fm0Z-LGO>_=|@dWc>-NYZ9_l>QY_J-Y3r`fSA)Nkx<{QKigcwHZxS-ZDu!4SB{FktpkdE$wMjl}oH{9O?HV2v14qSQwpN8b~ul!21Cn*5{0001hC0~BB VDq+7FunGVG002ovPDHLkV1k3NxnBSP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9eded7d0f0091fbf8e0631984d9f06f7e7c22de3 GIT binary patch literal 316 zcmV-C0mJ@@P)+Z@=ZGeK zVHE>d{gh4PXeN{aXB8%_`V`E7g76@+`V`CnmY78ku09bZ>j2u(RVb|bbdUl5dkG{8y~Do>)MAd*FdR@W38;0R9TogIJwyo$Y-2)KX`H(R4QQtDFPg)&VH= z_0GOg%3tH+E{I3UD|-IfOnNj6f5O>ioY1izuhrq_l#f*t^Dlp=|2PXz2I%z-LlZT8N?2_-L8z4B)a`R{*hL-hBN&hkJ>L0RR91n8ODU$917($ehFg O0000TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrR1nc51R6@UH}oXY~`6A12-ionC=BP2I$Hj z0|y51&PkstH0+JlwoG^YbJ~Q1CE#iX@@TZ z2Uigpk%PSMyC|BoaI*ud{I&EM-v$K0O$icLn|B*Pxg6D>B=wYz000000D!f;0Pk#@ UI$PiJ8~^|S07*qoM6N<$g7wyku>b%7 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_1_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748ff7f091a1900094392509742bf9d035ec8f0e GIT binary patch literal 485 zcmV3`ONseE$P`;Veiff<^{`aJ^7+>6KM*3- zk^RNQ9PA`cp`G;K!-AT&aptguIoGY9F5BEdP+Fd_b)5R(JT&nkRwkEw>2MF64EN^B zHOtSH!&J(7;bu__37B&vEY63V_4v<)u*Ye0Xv1+aQG=>wTJ+h|e z*)Rd}B`gH4JXqRxK)O|9sluu;(9>D}^VE2|TAD0j;UyeU9KP;1{Gq|TLga4XAM!yE b1pk09t$1_qmvLlo00000NkvXXu0mjf%?0Et literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_1_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9124a230b520d1b7f2f4f479b6cb04b16d20780c GIT binary patch literal 490 zcmVB>b^P$$EgKBQg{Q8Ca0BuSDaNi6r(R;9Eb8U4PV58Hs& z`l_)EoSsr^DI8QlDp6|V7vMK~01>0zvE(?Lza|g#1hCH?g~fu|50j#dMW!D=q0#{W z?(5l)$LTPcs(~y+pi0Fv034@}o@S=FAjkO>z6CuGt}zgsQe}2>Q1K@K{ba?6d%y%(q&9 zLl{%1^(T{Su#)sbD{;PuX&^eXicNjzZx`c;Eva7;h&8?TQtM9-<^2g&o|w0mieSSf ztg70&8u-xo=)3$|2-{JSLxVf2trSADlVU@*LI^wP5aTIKsj4;KDLpi4$hI6&-d-!< zos65C%eAHoq!R-M4TG~0UCB7ydc_`OlWsH9a8et+S*V6Jx=w)NjxBwuPq#FaI?}5} z5om0T#3$nn3t+!b*p`+Z>gcKT`;Z=4Rzuc_uQ??PUnq6E7`trGlpkagnRWk)P+(vD gVU-g|k|cR8AN^T*@!AUk-T(jq07*qoM6N<$f^PHN-2eap literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_1_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..542cb49a9644dee6a1aa24725adc67f71abc572c GIT binary patch literal 389 zcmV;00eb$4P)*w0V!0;wJA z#x!_)32lk6(}9>Iq18{oQ+t6Zg>h$z+p2$p6Zr%Lzc&cIgq0*!wjghb5}V_As9Gl? zI`*?3-8Nt|*#KpiaNCb3>|Ri-&m}Er;C{T`!kve6Od_UhqyGfZr>yjX;??Z6CESVA zH7|>iC0@u_>j^yzZ7*TDXo>Nl|LWMOoeG*aH9Q&_gSU)6t(1V2&AUc_K?0#h^e+ZE zmxdHJiEQpKvF#emloOAVcC*Bry<8%v{%L zL4tYb0WrSE2DM{=*e$_P#~N5@LFJel!@V(^fOo8A$y>|8dM$_}n4VKsfuqVUOjUF( jW?Rr*Kmq^&;D31m7)}fsxRdN@00000NkvXXu0mjfSo5Zk literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_1_0/00005.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_1_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)U=!o2}_X^@Bil+;5WmPXaZt)o7|6mz< zWVrj=GeB~6lf=#NMo literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_2_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..50d7a3258e9d8625b089bea0b535de14aedaa732 GIT binary patch literal 353 zcmV-n0iOPeP)&`C|8{J+zMW1ENl5U4}|004kL*Ne9YD|1)hECykMefD;s zO{r1ZUYBXBA1Ez+T+Ku8!OqXG4*v&;V?Oxa=*r340U|20waoN22vdR<(>)U=0KBrV zL4W|1os*tbXty_tZJ9Lj3)+MiOF(OO_#w~W@sVoK@$-m+5#uaK3s0hO z`>9c8?u7ft#WBen?8;B>`9a?@GXRx;WdV&723|R{pC(S4m!LS(6H(e8zdqB_pMJFm z{1JvdK)Yt({B?1{(nIkX0000005E|Y!REz6PvPe!00000NkvXXu0mjfg^`=1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_2_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..3c12ed1d3bed894b24f93ff81d16252358830c32 GIT binary patch literal 470 zcmV;{0V)28P)fnvMi5bfnwEE1T4zB)uu^~|Ns=USWZ(M!68cYS-#13M++sTz z!rN6k0KmS%>+3y@j*&DQV~6^QRQ5-?@Ui8vQP(Y{)?R2_WVx7eOr{ppcs6-Tt0=dF!P{~VZx?Gq(=G1-vKxcr$9bp3$+xt zU2>4X$nbPPF%2{gn~s_}>fAxU2@C#ES~)sR-RcDZ0H$Z;cPMdJwg^i(KoWRM>#qr8 z>a>0^>4PiDEOaHa`*5uTTWFkzJ^eOYWP#?mYj2ikX~D+?q5e~=+cX7w401xI;vjZ5 zZtcj!mU$8OFia~4wd=95(NWP#C##XY(94wj57Mk}wWw=)v$y^`;&h@h4T4qxP(v+_ZGNbCL+5z$=EIa~a zteR)BPmv8Y`JqdNa^>n}uJT1wcw3FvdzDPZgU{Fl7A75#BuVmIe!*CQpbBG{^8f$< M07*qoM6N<$g5A5)I{*Lx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_2_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_2_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..27301e1e1dfc9a677d87a3b1e06f3981febe32d6 GIT binary patch literal 477 zcmV<30V4j1P)U6lp z)|mx37EoHo%mA=0Z12PX++0U5Ldkn-x!jxob~|>t|NgGW$WH)!-O)&B(jTTKXG((@ z;p#Uuz-L1N*lepjgLg2MTq4(t;GcpFw+|sJWu6pcsBtRvl9M_sHvR#?+s$cwOcwcz zA#;kmCY}t>0FY%QYS?sC%~9Au{}3kez&1*jXQ!!Cy#N5f@QS?Oi5(}~1X~3_8t|0t z?+J$LV1F_q1}hO+XeEZ8!y^$YsRBf#+~Jv7(oH+2sMYFO9UzyH9x!~%w(?NWDh8*> z7OO7Aa+wfc3sn+u#juiec@W^rSK=X|lF%o(TJlFGfo(T{EKimUH1`TANUx7J87S>N zeBj_FMJTs`w^GDnClNv+M<M06=vD7RiJSX!20AgxtoB z1ZOo=Z<8;nPc)T%Ap5r@&B~5dEzkB*6Iwnun$Kc>%Qu`qNd{_&00aVo!2jX}v;c>A TS***-FEGRSa>ob3s9wj)Ue}7ol&KM{Uu!1gW6kIUOlEB^#cF^hBJ!(O&sX#Cb(4r zqzxa*{yo7^o$N10)?g=c3hhM4d)QJB*~VDWS^8H??^HdG8w)o6)YcS06?q&mM&%37 zVq+%VrUh9zs$7;Gp(=5#$JP#27;<}}frUO}cxp*d)fnw0LCCBw)Er7Ps=Bl;jAlYN z2!YW@YVDv)>h7iv$+})X?6@+$WmqqrhpRbfwFq#ke(@jV_*yU9-`Q l;J+jj8nOV1L?ZEj@dfd(!r(Jws*C^t002ovPDHLkV1liB;CKK4 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_2_0/00005.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_2_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..7fbd5c20569d5f28cf3a54e4b723bbd7cf8935d5 GIT binary patch literal 463 zcmV;=0WkiFP)gK3YK)wkx{vZc=QOt&i?EZh4OvlhBovt2ceOS){ zTyM{_{<09J4(ksld@z&9LNgh?50~ef{FCd#2VjYOw@FI?Hy^YEk3{YOm8)89c5GfTJ?L;P0>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)S|Nn#g&_1|yOcZN1qT`+{i**`1Km>FS004khyz=_T{%!lMZerDVkcKLN zw$1R;et`_f{`okj7~Yv1Y+k!JNXn>7gMUxSTl)owbf{0S64}J^Ei!=ug4`n^RvoaW zPvgt~J~Knv1@VRM4^Fn{qhSZ|KNfo0?a^;(ztlc>KAz?Qvg2M*5QAXpOIsKk2^w-Q zLig))xH}de0f)$E)T>97xSW)AbeL$@7}ED`{j-*dR38k!ULT1W9Ejxixz{~~T< zB389f$5}!iH+COu-v_vq=}|KY?daMdd5ch-#aGPzy4EIcqF7y!JF8~#b@>@K{1`(R zO7L5!M5zLM3W%<5v?Dir3JCr^7`xMt*|hHiaN+I%3ZS gO$HPI004G50XAapYqbu{X8-^I07*qoM6N<$f}FsnS^xk5 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_3_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..826adf1f26e68661a74c7203f331de67aeecc7fc GIT binary patch literal 333 zcmV-T0kZyyP)BqKLy;Ql8-o~lf-L08R^*~gUq6{O zfgJZ_dKS{oh=a4EoSJ9(n_J{P@vygNO}1N4H-TF~P!IX%l{Py?KCtpR6unM}v>OHQ3q7xSkdv`nr6 f0000006AF!M!CfxU6qFE00000NkvXXu0mjf#R-Zl literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_3_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_3_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2a3a9cfe70b8fa9ff273b1c05338f9887ee523b8 GIT binary patch literal 506 zcmV9lJ{&m&gP#OoPBfPc}ITlFjnU>Y1FR(&Ziyz zT)hJT+}CH`9jC!y@D8r2f$XqY7TDs6DO-@?Br2%MJ5R1Lj4?QueVDNV0N^-3A3y)k z8h0Fk613Mht@s7b}Z994;XHqal!IcPOK(&6lqZ1T_d8{LC4XQSe9OZMTH3LyF1 zmHi(CL3OY{8Bv3kh+SwU%+BHJy}wm`E5t}_>Bv^@&c)?IRJ~PUImP7ybhFl^L~2|q z!*Lc_NgalG5#z3x`EJ6gkH!5(-%*(i*%A8`+O$T;jqw-@iVF66pjRS`eM9iWbtE5= zTaaEfRgR)b-Rs~4J9)rCiXgB4eRq0t3fpP}PYq+m+X5dk4lh8BKsHBsNmHIwRad}G z4aJO)zYj2}kfAP{Ml_a{ry82~qK+ds0iS7{D}5ABKqXyuyX=CVVaAY+B`4IpB%X(aS{8t+bq4qHC z1Hh6?F9bMJ*|~})5rgj~%n9YlIq7%cC11Y(a6eSIHadi_)IL1P021e0wf{g6sxIx{ zjIzN@R2G_v^!ISvdPJ4ILxiu~HSH(wG7YW#=@7cUBUDNfcSjRB5XVNY+M#Ymv^5J? z`v}DgIZu{9!hZQ|+&Q@=vL18;St7WIlih*bX6i%=4kbr`Ub;pE;&%*5eg?zMI6>0Y zovpsWh0*@sTa{@wduD%k3>%=USw|OI?!%balyptTzVgC@<+dij|pv z$}5qZQs=``2S85|8O{}``fOW>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)bDa1II7B{L1F`>Rz&VI*b8P<-hMfR0NdVIP`r(djXiVJqa>Zg+^}1B+$Xk%# zgj>*c((e!S3ZHiAIcD-%T@P?l^gy@C*$&DEVih4fi?0}ah@oObHoK7SteVBwjrp*N z&J5Sk#n@9oP`cq>XI1?lL?P!msWec&W!`GD05h~+X9N#>w_P&JFM4qEu5h|iu6 gPzDqL004G*0aM-Zfl4vnL;wH)07*qoM6N<$g7%)UFaQ7m literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_4_0/00001.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_4_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..92924defc4710578aadfd11a82b760efab4d428c GIT binary patch literal 324 zcmV-K0lWT*P)1c->OR=(165GDmB)BPZf0W!1a zAbv79)u;+UX=Fp?pfszE z%AANe-%&eKU&KnUmothdnJwO)78@GaqLYfZB_En$R%h)u;W#s0KxRYKi@RbjNwg&z z)sfn&-4@&jYRxc=p|2Fdd6nc1kG0a^!*q?}4o1=?n@E=PvD#4|s=feJnG_E(Qv!s% zEkmnPq0M;!-PO<`RsJ4;>MKRSSMk#S0l@9_^dckqMUAK|G9zgY)?7j7H%IO5y&Oya jka3jZ0dP1Rj{l1fuT69qz%l=w00000NkvXXu0mjfvI*pD literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_4_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_with_external_inputs_2_4_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9f3ae167e403ba80cf7a815b469b9c724f522fbf GIT binary patch literal 499 zcmV_)fK~!(;}_sJx&sxX-b=}{cK=Ndqy<#(2MXDO*^S9)0a|lEenO=a z5$)TtAD7i(GSY)v)<7E)yVpu0xy1!JZX%|d;(5v%Q%i$aY6FP303uq}?Mw_N_oPlV00%O9U zc@GLf+8HzlBeW+?d!}i76PEdOoGi2Tt#)z##d3B%zdyFo{PER9tx zSN>vf>ewPg^Dw>IcTu;*riX{V2S~*gZwtI9Yx^L6uKbo{oD0Tu9y9!=C#;^I?CiCl zvHf^hz}eP}{zq~SkU;aM{4h-g(Z2v)uAmym*@a-I>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)-U1ktx8OFoNg7&5 z5?sPygxK!52C#uYuz^3YfhW+uCr9niNJH6frChtR)od%*Wb?@S)sz`Q$X34Fg<)|{ zw0XT)6}mcIy`ZsyM$Q?Le|C8i2^R52<0zz+MKaIyz-9 zmpAhF5ENGR0+x=8JKzlCusN?AN(9xUq3nm`pQ&+$Sf`;~i75a80002!4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_naked_opreturn_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_with_naked_opreturn_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrQ4q9Sb{2K$ywy0ytciW zi9_&xp3{qvcE9v+?=+Y9DniXRHG9cAj62J6AG4su#4%u7Uk{JO$H6G#BBFHix*wye z>cq(amB`W`1UDc)aY~Sweco*Vb$S{V!Z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_naked_opreturn_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_with_naked_opreturn_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..a04ab94bd4f571c1881a513bef54fe84665ecccf GIT binary patch literal 373 zcmV-*0gC>KP)H60^z3xvO4=s4+Rx)Ljpt*LI@!Qf@ANyRJi{pysQThaO~o? z2WZ;G+j;;s8YjN5aa(thT%5Xu;%5K4S3#zdiGuZRv~1Edf%P?RXP z_{igJ92QN1@cac@Ktytr(bq(h`KwW7)WVGyVSq{TWGeDf{ROBZ zQ~hORq^A0dp$#ly6td)739;Ewy>crKU?03rd_1l)AH^%d-FhSPJe~mnU?v{ z9@o-4S|eIfYqMoMLqR$TBe48wz+U6SmFWc`wVgLme`f1pc}zRR+H&qd=Chj;VXm?LI@xqYA(M* TNf;v(00000NkvXXu0mjfPx7FM literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_naked_opreturn_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_with_naked_opreturn_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)!Iow=G#M%Jx<6KWKy%#ueF++? z>z#9cS}z^E1B_`dL3`;*p^!4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrQ4q9Sb{2K$ywy0ytciW zi9_&xp3{qvcE9v+?=+Y9DniXRHG9cAj62J6AG4su#4%u7Uk{JO$H6G#BBFHix*wye z>cq(amB`W`1UDc)aY~Sweco*Vb$S{V!Z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..6e3ee423a64b899af7a708477c4342a76d0b1b0b GIT binary patch literal 421 zcmV;W0b2fvP)m`>RzS%Bwc*VkS~W-zQ~-h?2!g7hDL5JmmB2~z{%9(V=5g0 zVBgMlx2y`2!5LiQgR;PDSdcq}B`zsQaY|VZNtq}47?4dHggg4cJ^}z>SuT?fcF;iRghmjmmlKEEa z4+vrEu)Z_lgPued>dC*67oywZ;FYd%xlBts0tcu>= z2fwNI0E-0ORuyAaN1VIo4!GQb#E&2ewd+)n> P00000NkvXXu0mjftp396 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..6ab726a5e73a07eba73b6c4503caf163fddbcef9 GIT binary patch literal 478 zcmV<40U`d0P) zPV<1x$Ow-3KvRj`SLHi%NeCLaB^Fz9@|!Fr9y!$oc3RsG$0N#?uf^rnVe<3Qjmtxr#KfF<*-)_))s zQ-}30CVX%w5ryt#Z)A~%8j06B)BeW!3l_tWoR3Y^vP{_`XBnyOSgkZ^nrkB|e6i@Q+D0GS?4~fIwy>9HtYQXUQ?3s2a}I(6s*(;1P>X$i%hsua9;( zp!&`-#v}lM4o!G#)j~@(RHk>#0d~}@CVWjTb}Z5o#~!VaG#6AO2!bF8f*>gP0RuLK UE%~(nU;qFB07*qoM6N<$f=QasW&i*H literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..f4a306a83245de9da9783e500c6f2e40db25e974 GIT binary patch literal 487 zcmVBsxjuS%GnhJ9_*1v0+i9U{|Y zOA6rP)^v7X3YqUyue%K$P98G00NL5NdIn?|*D0f-I_M-k)Gw ztdCc7d6JH=eaYx=zjXv1uZ}0yffdl@Faf9hyl_fg%N5S=K3&NLks;y03Z~R^%3Zf;c z>VIX|4mg*fvbBdSI#iv(mII5~decxZp7@ubfs;YCrLNlau{DxWqFcnS+^R6`IL+kT>SFdMr~VML0#LH67u<)Wv-rmg|RFp;JaBt(Hr?j@%%+ z<9blD$iE#u3%?7L(d?OiEjNanu&}|W=vZh)Uo9QwzTI11=(QZ(&l?yLz&5#Pn}G@~ zc2u2K4Y`&iY9EE^*mWJ*ay>``mwG{A?GZK&s&`A*GXR^@{sheJBU-#K+4XEej-d$Q z&kBuSDaNq&+Ku48tN^DriJ00000NkvXXu0mjf D<`~Lx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00006.png b/tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..923349e6840340568e9f6dfeff003a4dd6fe1bda GIT binary patch literal 464 zcmV;>0WbcEP)VZ^r?Pxg{-O=A82x^XOtbs;2@DFrx_o?e-fnmh;4)Y^8j!EC>(6Sz8Kh}0 zf8Lr`oa&up0o!8kYva;4d0Q~e`-P{+=?|vM323+^a=)Kr49KSy$~(p&{saKE@0#l` zlG1akmnl{~-i&e{$AfYPH@<|iQHyeN{^2}l?>MMlRC8}A3V+i3@J#`bbpERMzYxOJ z>HW@R3`UY!Xe3uBqcW5%9Cum1)Z=7;Dlxgju0miN;f!+fiBb*-h1EOgK; zda4EN?NwpK(gAgKJ5y3s~}pGG7!5Ur{7saY^4 zX<6~@t$Fk_{pJkd2&UdzZu@30Da(rUfiB1H`$JYh!;skdp5_>crVir+bI^YUz-Q9+ zTgYf_HCbw-So)f$lTqHsX`{S@D<8u2>7p^tj=wwqGj|NQgKDlu!Qd^`hbtvOvUyka zF9;)bs6UvcHDnrQ&Vga zw73PiFeZRX0J>07A3@5>KFR@5il%ZE6o(oK)mxBI?a_}(S%!2^v|%M3yQ8{lsAKMr z=fdhkp&FVyt0~`G$$eNmtxk%{M$>uGtp-#*B!VCaf*=TP$qS&QX3a}&&zArI002ov JPDHLkV1n;r)ja?J literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00008.png b/tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..8018a1a00cbfa39c33fbce86c3736aa132d4bc1f GIT binary patch literal 486 zcmV@P)Ua0B1n@79TAF^X02>WKbiVhmOiS!gBiLEePd#lfpMVv};((@umWU2yDjQi~=;1oX)r1O`}KYciW_ zZw3@qs`VDJr9+NojbcT(Uer_&t(tAHcFIk-o8$)eL@e=(-KO2D%!V{->1|*iaS!M?0&;=itZXs6s`25OBM5>Z c2!dc8f5#AbTKLaINB{r;07*qoM6N<$g8shSIsgCw literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00009.png b/tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..d9e33c51436c74c8bb817c8fc10751276e2a39a5 GIT binary patch literal 480 zcmV<60U!Q}P)CYNBtA<^q!yyQ1@h6Ugpcd0e%AX4Tu}Fgds`gB?vqpK6toBCnDO` zV?Qph4vSIb6E8(FXC{eWDZVp?l%S4F%4$ohJSoS-G;IhzFbDo8fautCeswuJTV0OY zC@j9=`DRR(OtLhZ8F`7wMwLsE#_odz7x}y6fA)?6&5P=;MkU}a)u&%dfEM$v>i-}F zsYCt2h#bsBRH2#p7MZ<q~eSMbV{K%VpSyQeWC9)OtZkgO`7f@( zEkPh{J8B8w^^R`=?qhWj{Y|%IsOr-8_-UJ3C1dP{I`s>YeIy*Rzk(u|8 z*hQ3T(S-JyL<1(HCLr~7l|spV&fVbizaO|R$b$#JU14alv@yT9mOvm72m}Iwo8k>) Wp@LNXFH_|J0000m{q5=7L{YW{Ebu&IH78W9ly007|2GM9BJ;~TXvvmktLiF&V{ z#xPbhQpWTQ0RN-+`Ul|atssff?|Vy_iZ7qQpa3lM-$%#g#v6%Fjgg~?`I@`_D7KU^ zHQjFD<0pD!H()iUU0NhWzsyRA{3|{oJn6CnE;LD8@5dOEy5z+jX6*IBe+Ljzn6{sv z{OC}6PWBRf#q-6epX0od9}!Wna;Ye_2p8w?&U4mI0o6ub?v0GVS9+iB6aY=;TfKin z1XsiRok0vnf>UTDXD72Xv_0`!71(n}ag0TdqMg*2GBMc|wd=YnaL;Rt3W~}YUO=_% zPNkMtJ>L0L7*`F|F)oveJ<)>0w&+_6YIIZTco8?sE+_R`E4~Kn+PS)Bx&%O+cVxfC zHpSgVa&+O@AYIB0z6Z2WEyOYbKE~ns*`*p9F`&X#POnKiR6|qgWAf4#64w{-IpC( literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00011.png b/tests/snapshots/nanos/test_sign_psbt_with_opreturn_0_0/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)!Iow=G#M%Jx<6KWKy%#ueF++? z>z#9cS}z^E1B_`dL3`;*p^!4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxrQ4q9Sb{2K$ywy0ytciW zi9_&xp3{qvcE9v+?=+Y9DniXRHG9cAj62J6AG4su#4%u7Uk{JO$H6G#BBFHix*wye z>cq(amB`W`1UDc)aY~Sweco*Vb$S{V!Z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..6e3ee423a64b899af7a708477c4342a76d0b1b0b GIT binary patch literal 421 zcmV;W0b2fvP)m`>RzS%Bwc*VkS~W-zQ~-h?2!g7hDL5JmmB2~z{%9(V=5g0 zVBgMlx2y`2!5LiQgR;PDSdcq}B`zsQaY|VZNtq}47?4dHggg4cJ^}z>SuT?fcF;iRghmjmmlKEEa z4+vrEu)Z_lgPued>dC*67oywZ;FYd%xlBts0tcu>= z2fwNI0E-0ORuyAaN1VIo4!GQb#E&2ewd+)n> P00000NkvXXu0mjftp396 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..6ab726a5e73a07eba73b6c4503caf163fddbcef9 GIT binary patch literal 478 zcmV<40U`d0P) zPV<1x$Ow-3KvRj`SLHi%NeCLaB^Fz9@|!Fr9y!$oc3RsG$0N#?uf^rnVe<3Qjmtxr#KfF<*-)_))s zQ-}30CVX%w5ryt#Z)A~%8j06B)BeW!3l_tWoR3Y^vP{_`XBnyOSgkZ^nrkB|e6i@Q+D0GS?4~fIwy>9HtYQXUQ?3s2a}I(6s*(;1P>X$i%hsua9;( zp!&`-#v}lM4o!G#)j~@(RHk>#0d~}@CVWjTb}Z5o#~!VaG#6AO2!bF8f*>gP0RuLK UE%~(nU;qFB07*qoM6N<$f=QasW&i*H literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00004.png b/tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..f4a306a83245de9da9783e500c6f2e40db25e974 GIT binary patch literal 487 zcmVBsxjuS%GnhJ9_*1v0+i9U{|Y zOA6rP)^v7X3YqUyue%K$P98G00NL5NdIn?|*D0f-I_M-k)Gw ztdCc7d6JH=eaYx=zjXv1uZ}0yffdl@Faf9hyl_fg%N5S=K3&NLks;y03Z~R^%3Zf;c z>VIX|4mg*fvbBdSI#iv(mII5~decxZp7@ubfs;YCrLNlau{DxWqFcnS+^R6`IL+kT>SFdMr~VML0#LH67u<)Wv-rmg|RFp;JaBt(Hr?j@%%+ z<9blD$iE#u3%?7L(d?OiEjNanu&}|W=vZh)Uo9QwzTI11=(QZ(&l?yLz&5#Pn}G@~ zc2u2K4Y`&iY9EE^*mWJ*ay>``mwG{A?GZK&s&`A*GXR^@{sheJBU-#K+4XEej-d$Q z&kBuSDaNq&+Ku48tN^DriJ00000NkvXXu0mjf D<`~Lx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00006.png b/tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..923349e6840340568e9f6dfeff003a4dd6fe1bda GIT binary patch literal 464 zcmV;>0WbcEP)VZ^r?Pxg{-O=A82x^XOtbs;2@DFrx_o?e-fnmh;4)Y^8j!EC>(6Sz8Kh}0 zf8Lr`oa&up0o!8kYva;4d0Q~e`-P{+=?|vM323+^a=)Kr49KSy$~(p&{saKE@0#l` zlG1akmnl{~-i&e{$AfYPH@<|iQHyeN{^2}l?>MMlRC8}A3V+i3@J#`bbpERMzYxOJ z>HW@R3`UY!Xe3uBqcW5%9Cum1)Z=7;Dlxgju0miN;f!+fiBb*-h1EOgK; zda4EN?NwpK(gAgKJ5y3s~}pGG7!5Ur{7saY^4 zX<6~@t$Fk_{pJkd2&UdzZu@30Da(rUfiB1H`$JYh!;skdp5_>crVir+bI^YUz-Q9+ zTgYf_HCbw-So)f$lTqHsX`{S@D<8u2>7p^tj=wwqGj|NQgKDlu!Qd^`hbtvOvUyka zF9;)bs6UvcHDnrQ&Vga zw73PiFeZRX0J>07A3@5>KFR@5il%ZE6o(oK)mxBI?a_}(S%!2^v|%M3yQ8{lsAKMr z=fdhkp&FVyt0~`G$$eNmtxk%{M$>uGtp-#*B!VCaf*=TP$qS&QX3a}&&zArI002ov JPDHLkV1n;r)ja?J literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00008.png b/tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..8018a1a00cbfa39c33fbce86c3736aa132d4bc1f GIT binary patch literal 486 zcmV@P)Ua0B1n@79TAF^X02>WKbiVhmOiS!gBiLEePd#lfpMVv};((@umWU2yDjQi~=;1oX)r1O`}KYciW_ zZw3@qs`VDJr9+NojbcT(Uer_&t(tAHcFIk-o8$)eL@e=(-KO2D%!V{->1|*iaS!M?0&;=itZXs6s`25OBM5>Z c2!dc8f5#AbTKLaINB{r;07*qoM6N<$g8shSIsgCw literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00009.png b/tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..d9e33c51436c74c8bb817c8fc10751276e2a39a5 GIT binary patch literal 480 zcmV<60U!Q}P)CYNBtA<^q!yyQ1@h6Ugpcd0e%AX4Tu}Fgds`gB?vqpK6toBCnDO` zV?Qph4vSIb6E8(FXC{eWDZVp?l%S4F%4$ohJSoS-G;IhzFbDo8fautCeswuJTV0OY zC@j9=`DRR(OtLhZ8F`7wMwLsE#_odz7x}y6fA)?6&5P=;MkU}a)u&%dfEM$v>i-}F zsYCt2h#bsBRH2#p7MZ<q~eSMbV{K%VpSyQeWC9)OtZkgO`7f@( zEkPh{J8B8w^^R`=?qhWj{Y|%IsOr-8_-UJ3C1dP{I`s>YeIy*Rzk(u|8 z*hQ3T(S-JyL<1(HCLr~7l|spV&fVbizaO|R$b$#JU14alv@yT9mOvm72m}Iwo8k>) Wp@LNXFH_|J0000m{q5=7L{YW{Ebu&IH78W9ly007|2GM9BJ;~TXvvmktLiF&V{ z#xPbhQpWTQ0RN-+`Ul|atssff?|Vy_iZ7qQpa3lM-$%#g#v6%Fjgg~?`I@`_D7KU^ zHQjFD<0pD!H()iUU0NhWzsyRA{3|{oJn6CnE;LD8@5dOEy5z+jX6*IBe+Ljzn6{sv z{OC}6PWBRf#q-6epX0od9}!Wna;Ye_2p8w?&U4mI0o6ub?v0GVS9+iB6aY=;TfKin z1XsiRok0vnf>UTDXD72Xv_0`!71(n}ag0TdqMg*2GBMc|wd=YnaL;Rt3W~}YUO=_% zPNkMtJ>L0L7*`F|F)oveJ<)>0w&+_6YIIZTco8?sE+_R`E4~Kn+PS)Bx&%O+cVxfC zHpSgVa&+O@AYIB0z6Z2WEyOYbKE~ns*`*p9F`&X#POnKiR6|qgWAf4#64w{-IpC( literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00011.png b/tests/snapshots/nanos/test_sign_psbt_with_opreturn_v1_0_0/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)!Iow=G#M%Jx<6KWKy%#ueF++? z>z#9cS}z^E1B_`dL3`;*p^!4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxr1K^fVM6g!1a9bqS9q)4u1_J0ssI2;@Q^d6U@x6zMBuyIQt%b zfHqvCvb_J6MLxhSdM(~VM`zdPXGdp%xz>yCjiKD44?sjLT6v_;L7EaYneLS|4$zf- z4iY$kcTRd$poJ+gDZ)LYJ%Q8#%%MX0G$u$7cUd*@YR5t{coWMZ~O0000G!~=lMlR(?^ R`b7W$002ovPDHLkV1g=1i536= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..430c04c9e44f66b0de7580194956213c1d42d936 GIT binary patch literal 381 zcmV-@0fPRCP)ZA)Tlq$`>_`qZ(HUL zM(}cNorvhzY5RCj!!VMrF?Oi$$j*K!7d~5(My5we&7SqR$a0xRnoMm|^Y07BOeU*S zmHpOQo`iD<;tf7!S;+`Ks8lg1#o`}=CN7^$ERH~NbNn^xVdtjzNOBU`oPENga3lKESC+$|n}VYJarVO}eG zvQglW4Mjw b0G`Vi??F@Tt%Ro%00000NkvXXu0mjfczLDx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1477899ae25981d4a7bc515c5b0b422de48554e8 GIT binary patch literal 343 zcmV-d0jU0oP)w&d@YKOe07WO-IEX#Vgbw!om+;r&49>Gvp#^qm&LreGVRK3gJ~M)_+fC;V!Z002ovPDHLkV1hgHG$0vC)+!qC7VSMtqwXAWOLy_~#N6`#yWS^00m<(tf`Lperp76#I&QA# zLA>O;COS40(U@&jmM<>GxaDUiJUu()Q_#Te6Ntr`hdrhXng%CT%NuzEco{+mdEe1I zN>J?ThfzEkk_H6JU}=)+sG6hv2JM%y??>FeMP=1SfW!6soU14 zdQAfW96LNV)d4g^YW>(MK5D$odiv5jD}y>skA<$Q6Jo+i(@z*iE}ijrhcOa}6I9N- zP3=pdxddTqi%h6vuZYsuMY{gjqPzqNPMk<4TzN3YP*gL@MbeYwBaLzZZ~#gv9C8bL zi5|%>fxNODA8FJA5DfsOA(x}-8g+KyZ^DImkRLhdCc`4T{|Axb2x?MkYBBX;z5tY3 zTTlIIA*6Qojqw;RfsnVvPQObe;?pUH+aUU>0oT-f&Ha7j0Z^Z1uie`EhF(u1ofLTRT zXb%_*0Kc?pW^5&Gfh??&#<}2J3K|=w&}@9UJ>cK)06320+?O}{O-uR{vNAyc0000< KMNUMnLSTa0CbIhg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_0_0/00006.png b/tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_0_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)=13_zt*?|8u`GcDp2gc* zfl|Cz{DBB0@&PDBo&YaNS&YpjC*Ww!;0ITq@e+Rj3MAS(@!i3ASu4;Ow-4@vNy<jQ6f;H+xlUs&%Bi)kqRiyP&{r*qjH} zyx*)wraD=(pn}Emi;-|qBa%G56V9c3*Vb|vr#7oI_N7-{ca6QYbU>irF@R3whIlf# zy^-!AXd=^hfgE5=#~hGbGx$leOd;}CEy>?qs1g7G007A32Vh#Ga+!MaOaK4?07*qo IM6N<$f?4f_+W-In literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_0_1/00001.png b/tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_v1_0_0/00000.png b/tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4545e54ed1befa2ce759e3477a0524a508f7f1 GIT binary patch literal 370 zcmV-&0ge8NP)TBt?T(>7BpbpDHJFn0002+N>sMLt!FtdeGR+ngEFZD z(y|*~+8ZCEfOESayUShxjhwhn(T@$S9 z+4viO$GRaOf~cYP%EhuhCPo1LW5<*E{uq~XT$-PGCp5f}%xZjSEXg4hTsCJ6w~?>sz_4Xw%jtf@GaLuwh_Xin^n zGaIokLxQdN4APBgp9h4}?jh@y*_1_Z8(UF}{7YPLnO)!?cD15*Yn%BS!7@}Ce-6lw zZnRf!{v2?G__&+}RkY6oYPn1%$()@ZbhV<^!3f%MLlA!<$QW<{008)92lxr1K^fVM6g!1a9bqS9q)4u1_J0ssI2;@Q^d6U@x6zMBuyIQt%b zfHqvCvb_J6MLxhSdM(~VM`zdPXGdp%xz>yCjiKD44?sjLT6v_;L7EaYneLS|4$zf- z4iY$kcTRd$poJ+gDZ)LYJ%Q8#%%MX0G$u$7cUd*@YR5t{coWMZ~O0000G!~=lMlR(?^ R`b7W$002ovPDHLkV1g=1i536= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_v1_0_0/00002.png b/tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..430c04c9e44f66b0de7580194956213c1d42d936 GIT binary patch literal 381 zcmV-@0fPRCP)ZA)Tlq$`>_`qZ(HUL zM(}cNorvhzY5RCj!!VMrF?Oi$$j*K!7d~5(My5we&7SqR$a0xRnoMm|^Y07BOeU*S zmHpOQo`iD<;tf7!S;+`Ks8lg1#o`}=CN7^$ERH~NbNn^xVdtjzNOBU`oPENga3lKESC+$|n}VYJarVO}eG zvQglW4Mjw b0G`Vi??F@Tt%Ro%00000NkvXXu0mjfczLDx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_v1_0_0/00003.png b/tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_v1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1477899ae25981d4a7bc515c5b0b422de48554e8 GIT binary patch literal 343 zcmV-d0jU0oP)w&d@YKOe07WO-IEX#Vgbw!om+;r&49>Gvp#^qm&LreGVRK3gJ~M)_+fC;V!Z002ovPDHLkV1hgHG$0vC)+!qC7VSMtqwXAWOLy_~#N6`#yWS^00m<(tf`Lperp76#I&QA# zLA>O;COS40(U@&jmM<>GxaDUiJUu()Q_#Te6Ntr`hdrhXng%CT%NuzEco{+mdEe1I zN>J?ThfzEkk_H6JU}=)+sG6hv2JM%y??>FeMP=1SfW!6soU14 zdQAfW96LNV)d4g^YW>(MK5D$odiv5jD}y>skA<$Q6Jo+i(@z*iE}ijrhcOa}6I9N- zP3=pdxddTqi%h6vuZYsuMY{gjqPzqNPMk<4TzN3YP*gL@MbeYwBaLzZZ~#gv9C8bL zi5|%>fxNODA8FJA5DfsOA(x}-8g+KyZ^DImkRLhdCc`4T{|Axb2x?MkYBBX;z5tY3 zTTlIIA*6Qojqw;RfsnVvPQObe;?pUH+aUU>0oT-f&Ha7j0Z^Z1uie`EhF(u1ofLTRT zXb%_*0Kc?pW^5&Gfh??&#<}2J3K|=w&}@9UJ>cK)06320+?O}{O-uR{vNAyc0000< KMNUMnLSTa0CbIhg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_v1_0_0/00006.png b/tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_v1_0_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..12b06a78ec36fc859b72ee163d3946fd5302ae82 GIT binary patch literal 326 zcmV-M0lEH(P)>!{(>{q>6p(ubE6XzpB2qAt(os$OgJBLLVHJwxf97FCs5cv-8?p9xxVW6JkHXp$1aomA zkGl_8^NtR{;g5HgS<19(H)lcGQg8A7w|dI0qwpt^9mW}tZF_4+uglc8X8P~G&cAUK znG)c?|4}3DFp8^Y`AX1uLZ|LbBfyJzR85X0Q(OYH?6wuaOqd66KTdZpF)=13_zt*?|8u`GcDp2gc* zfl|Cz{DBB0@&PDBo&YaNS&YpjC*Ww!;0ITq@e+Rj3MAS(@!i3ASu4;Ow-4@vNy<jQ6f;H+xlUs&%Bi)kqRiyP&{r*qjH} zyx*)wraD=(pn}Emi;-|qBa%G56V9c3*Vb|vr#7oI_N7-{ca6QYbU>irF@R3whIlf# zy^-!AXd=^hfgE5=#~hGbGx$leOd;}CEy>?qs1g7G007A32Vh#Ga+!MaOaK4?07*qo IM6N<$f?4f_+W-In literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_v1_0_1/00001.png b/tests/snapshots/nanos/test_sign_psbt_with_segwit_v16_v1_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccdcd1f00c595515c160800e23c9bfc987bbb21 GIT binary patch literal 413 zcmV;O0b>4%P)a!;mR?K=hBPztIW4`^ylKZvK-Zqbo)@qFKqei&QWG-w6>E4{b?s$ufCLF zhO3{Amt~yFNZl0OY?2w3d5pja)#C$KzX>E%$Y0clIa?=iiWEftFAkO&`?LRLeCM4O zt2$=gkSk+PlE_1RKq4=B%Dy31}5BqJ> z7rzCe+94Ijht^{6cOC#8CDQA&gx2YeKAEt}xIr~k0*}@rS(0h`R+Sq&pp~NBP0pZ= z=lD|F0V!QbyNb$H3SJH4)Xx?(vc^RNV3zuh<2a7vIA-|(nvLIec>;{-00000NkvXX Hu0mjf8i2j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_dashboard/00000.png b/tests/snapshots/nanosp/test_dashboard/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..d73deb1de6696efb1f398bb50d9617696cc2590f GIT binary patch literal 537 zcmV+!0_OdRP)%aF;=ECB`#g6_7%#XF6^>!mEH#ggeIAN(l-` z3Fz!FSdHkp+kqi)Cw>O00yMb=1=wU@Cm?~{x0x|&!=!s7VA%rME@1{}E;eCkRgSQi6fMo5q+0Fy2gSw@8 zQd8!BX+#@bT3%O;-*9G@|D~O0-n4Gwl<`H2uRwXT`Hx_8TO*cZ;U>>G!4`cNgW z;p^^>5DTE(-983_IFxEtDF^&)Q!S9J;fB@99cA%qZe z!j(=(CgV8)US7=7!lzj5*sH3loT=3}p>%RR_2RAK_*PyucCFJj$MI4DB|US~(3Y`q zmw-;qQt#Eh2m*HrNG$5kSzq(h{oN&?M-w%4%IbHBBfMn==?5AF8}X_DA%qY@2qA}6ba4!+nDh2#EMK#NfLq|L z67@Iro|~uJO_(IeqPykXg?pb+fmsajfF`$*|YG{7b-w-Cr5LJ=G}Plo&l#MgFpt^F{5e53Co< zCDyYp(Oj9Hs{Ss(_jb~??N(K%Z8z&XxZ7`96k_+;_DLb9m3(UU-<9RNbp0b4CLiB1 z$8V#e{_edc+1ek&R!?oNm|oox7igSvY5y6&D@*DPvl2Q(PY8Wa^e)|FKDltt^`Cjh z*IFFsdKa%b$=RQOsQ&2J?F%ID-D|vVw&%o;_$D!f%}0V8A}5EP_DkkUMCl?!SoAMtd?CI*~vd$@?2>_+9j#dBw literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_dashboard/00002.png b/tests/snapshots/nanosp/test_dashboard/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..7e1a28c65f77030ad7ed3d1b28cd5e3f15ba7106 GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}Bba4!+nDh2VAm1Sc0oOp2 zcP)SQGrv7@7dB#Ax;1NN`1_y2CW`q9TE3h>O%SkS)9p8`GKpz-KhF7lQv2tf+HXwv zwoUt2p|$2XQ2a_>+0ieP^B6B>Kk7Q0t{B5`_k!(1rUE9l%e;4m^%&F>jDP}rs}CH# zqJH3vO4+m*`~R8U`(0tR;2@W(*#2FmF5jmt^1HI6-YCmJI5uNh?}U{H{RQ>E8E($n zyhZuCz(=*1rhiF~5?`x-(_7IJ@h&D?`RS?0@9k2b98t~ZC}+BL?y-H?&7ThJ(tG}B zJ(tn?E3$#1`|Ofkx~gfDCAn`ki7d8JyT$Tg}e1&P( zg<|UtodolD7x+GLS#VfwY~I79_sp!SLEQG|Hc1JStDnm{r-UW|D(8I) literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_0_0/00000.png b/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..8583e39efd65ff8275a2f940b088b17a1e4c9b3e GIT binary patch literal 493 zcmVi5O#yakmyj zeD7A^?KpNo8vEXZz$?#ifY%5RM)&IjuMT(&E*(%E?@oijr30SC*KP$aqmT3u!ZJ-v z@Erjm1a}q}ICH@1MDK1T_}Q(%5bn$k0002+PFB3O#lMU<-1uyF6N}$v7d2;?E}o(B z-VH?F`nru+YBf(DR13u|MM(ZL#+a^o{i86Iq@TxCJW}c-o^9{1LaC=cN(7YiQfceP z`rTsn2TuzJ*%JX(u6C)<1h>jqh_S!f0awGYJ8Z?2wTp7*@tusTl4kiEW~xh-b~+$m z9))INyy0csawAqv9O{|Kyh1f0 zs@D;T%rf6l-c`i5OEbiHCtP+wc%sb2R&At6?o*>%Y;`0VGCdVxn8KYg08hovUWZn! z0plk)4+-YBXcRm31gfXAp_8mI!?o=gPeJ;3M^Vyl(5qiAbs>sa-+%pZqv)ORGzC2p j8~^|S0000001NpA<78XjwR=lR00000NkvXXu0mjf1+LS- literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_0_0/00001.png b/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fb5c9c6731d1b8cfed9cddf0f162ddee4e353aa7 GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{)ba4!+nDh2#bl)KZ9*2t! zH$1=ZU-G84-)rJj^Sr3*Pv`XuwzOHDTkYcn)C2_$m-nn;zR+#B?E39(l5RyUr}-wV zoNiOryr0kG=Jc2A#CCny#^<2vy=C{FYSH8=ul@h8<&H~dIJ2c~=kbT~f6g`NT$c;p z|M|O!$h@x-vx-foEJ~0)y~c4xU(};;ji!c7{@Z<#eOg4T&PM)drM>+H9~fi8 z_N2LN`B!Qvd3bNz+k^6UYP~PZ8`k~Ol6Rf^O8?&{k0mxncf7ytU+Ge}WqP`3bi3|V z<&$4ppS}+JFnN0Ex+za@roQHN4=&Bx{;c}{BR|)#zNZg8j8Zw?`^!7Z#P|XK)aI(I zyIk0PG_TJL?e2MI^B~TjHTk2duKs^6IpN)udu{K+Dp$So{k=Oxeb1GyMBz2J ws`blfckHUzBj;(yHv0q9WNvX-5HaY~Fy5J9DSW5x@=B1Hr>mdKI;Vst0M=5thyVZp literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_0_0/00002.png b/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..3f9a1347fdaea6e266cafb92b9d57af2545e7f1a GIT binary patch literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{&ba4!+nDh3gW8Yx~9*2ut zUit3$KXHe*c;Lj=#tB}1hQIPn7jib|6lhxV0d+kn)PK*|^JLD`RIiuUnm>QHuBzsL zaLY%g_+03=ML#O|ADBtLFg9Phbk>ihwNIA{B(R2DI=@gU?$+t0r#bRDH!!WbCA8(r z7Z#6(IVXxvy`R`wp_*ZQP$=M8U2(fqxjqZf2H{UT-2QJey=(pN`p@LsHxu?Vf4lu` zeW{3{#Y-Q}x%KA$%Cn~L`uxmsWzPD%+buk+c^2)v($C}f=!@;yuM7VleQ@wu?y_sK zjGH!^tEwk2sg77a<)_MmE5foj<8m{fC2R_NVYS(BV&_NI7@@Q)hkvg0{<=QA;i$qF z7MT~Ke_#FnT=VnmeedHl*?T7yUR)cS8ngV_H=A$w*1r0wYag-PC~r+H&-M8W%VOdl tPhj@H8!)+P)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000{RJ8t?J4UJF>iW08*4>dY`B0a6HXW2ng~IUQ68N$I0fa|GX*_4cRL6-#Nzo*o}Pj_PR^Kg@*Ah+UDGpF zbz=hHE{!b79^bIN*vOKzkUyE|>!W3IVJ}*9Q z5MtJ74$9)<-=gId*Kklt4b3`3pI>!4$BxxNA26>gYn2)#Ku3Z9Ib!OE3np9np{-|u z$~ie4ybBFN-f|Fwf-o$r@qv2-GRH{)iX3Rl;9C;#0C{l~PCji|02b`u@{8C;MAY~K zbgXUE51jdpL?!@Q8K*NiS^FCgtEE2$kIlyV5@umclk2}j(sGcb@C_fZD7h`ReP8XqrBi2g zofvOdQ`PSFd(*W#CPjA>Y98#MsZH!JaDmoXo( z$i$LHK0fnYD<|ROI2ZxsYQ|XGsBrLFw{~wz+1}-IoB&JZADwW#5zXL3?s}dlwMI2tZ%C;GCp)8A{j$Tu|!G$ZTbPPD1mIbQi#bCLg~E0hR&AEk!A8+gbn filQirVgr8w<>Y6ky1ldY00000NkvXXu0mjf_f+Ie literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_0_0/00005.png b/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..45d9d59ac402e04943671d7dece08b7ee33238aa GIT binary patch literal 963 zcmV;!13dhRP)Z?fs^65pqTV4w&P^U)r!Bu9?fXX=Zr6*YaR>!1dlq zMQzaFro5%)Bu^_w?B`4S=-9p<6^RtMt-LyMR z(<*S`5F9$V=x8^x(~fOF@aMe`J`(Y`}3Bb^bNynlS!A}KUvm_9$dRenyG!=2Hrn|US1xJ7;i0-7D zOMkx?Aw4EJ(*MJ$^5TJfafF9?07Tk@{_h<-oDTjhYKM5(f$K@Gzy3%ms%5> zat*foavh>INZ1_#cs^=EN?1qS(dJ;C&g0%IMWRLEU_U4G1504){Lu lFXh|a`--9{ilX=oegSU?9fVLbFoOU9002ovPDHLkV1j>4w|xKr literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_0_0/00006.png b/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_0_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..80dbc0c24bff313d7adbf76fd6eaa262eb471db8 GIT binary patch literal 490 zcmVmN;+bUQ^s);3C%|rB^BORXT|9FkNl17Y!Ovc zrZu0g&b0_`RHY}r`st?=JeXXMIo|+3X9{w@tgnSgO&K3lZ?Wn?Y`L5y9bZqt!_bCW6nI&>0daFteO@S){PTT zU7|TlGUxX)UMystU8vf-^qN>4NZ$h{u8E(iF&`s0jERG6YeC!1DqG6mG^NG?;K4@U zhW05}sO8%sy>hi)SXzhsjP4JOr&&*=zu~NJK}S3Ze{-oGF##Um@=SZ{b*6&Y za(Nnh-)f{YtZ@|g)%3U+|68hTD>KPtf0;_E$^K%@!A^9cowyJ0M0x=L0000000000 g000000D#;410?*ee56e{E&u=k07*qoM6N<$f;QXKng9R* literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_0_0/00007.png b/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_0_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Yi5O#yakmyj zeD7A^?KpNo8vEXZz$?#ifY%5RM)&IjuMT(&E*(%E?@oijr30SC*KP$aqmT3u!ZJ-v z@Erjm1a}q}ICH@1MDK1T_}Q(%5bn$k0002+PFB3O#lMU<-1uyF6N}$v7d2;?E}o(B z-VH?F`nru+YBf(DR13u|MM(ZL#+a^o{i86Iq@TxCJW}c-o^9{1LaC=cN(7YiQfceP z`rTsn2TuzJ*%JX(u6C)<1h>jqh_S!f0awGYJ8Z?2wTp7*@tusTl4kiEW~xh-b~+$m z9))INyy0csawAqv9O{|Kyh1f0 zs@D;T%rf6l-c`i5OEbiHCtP+wc%sb2R&At6?o*>%Y;`0VGCdVxn8KYg08hovUWZn! z0plk)4+-YBXcRm31gfXAp_8mI!?o=gPeJ;3M^Vyl(5qiAbs>sa-+%pZqv)ORGzC2p j8~^|S0000001NpA<78XjwR=lR00000NkvXXu0mjf1+LS- literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_0_0/00001.png b/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fb5c9c6731d1b8cfed9cddf0f162ddee4e353aa7 GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{)ba4!+nDh2#bl)KZ9*2t! zH$1=ZU-G84-)rJj^Sr3*Pv`XuwzOHDTkYcn)C2_$m-nn;zR+#B?E39(l5RyUr}-wV zoNiOryr0kG=Jc2A#CCny#^<2vy=C{FYSH8=ul@h8<&H~dIJ2c~=kbT~f6g`NT$c;p z|M|O!$h@x-vx-foEJ~0)y~c4xU(};;ji!c7{@Z<#eOg4T&PM)drM>+H9~fi8 z_N2LN`B!Qvd3bNz+k^6UYP~PZ8`k~Ol6Rf^O8?&{k0mxncf7ytU+Ge}WqP`3bi3|V z<&$4ppS}+JFnN0Ex+za@roQHN4=&Bx{;c}{BR|)#zNZg8j8Zw?`^!7Z#P|XK)aI(I zyIk0PG_TJL?e2MI^B~TjHTk2duKs^6IpN)udu{K+Dp$So{k=Oxeb1GyMBz2J ws`blfckHUzBj;(yHv0q9WNvX-5HaY~Fy5J9DSW5x@=B1Hr>mdKI;Vst0M=5thyVZp literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_0_0/00002.png b/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..690fd02682d1474ff1fddbfd29c3623c45305fae GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|^K^TM@|{+)}TPOv$)+R5GFB$*I=EGjDRAy5FKZ z@%QGyhUIDZpT2LHeaFpk|LucQMW5_+V_UUk`rbRNWs`lrP1js9>y5q}uZbad<|>t$ iQa-L#j6gpkfriX|LI)X~Y+PhRK%$P)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000126oEP) z`@UmIA<#cG1xPzF9LLey(U#kjews}{sK@ZVsQ*IBa_sw_VuyrC9r16&%ccDfLekUX z@w2FJLL`pPsm+R+5H^#Jmp6a)0&K41`raewVK0&31hqzg=3oE)^yNa zS7MVW6tDvzIIJNXF8&shjEm>t7K)o6)D8ehwBgQJe_t_`t${g%A^M5WZXG>e#y8s169RbZbHLv5%ap%zDCh7=j6Lav7t93^PO;5tC-G0p-?D%B7OmC#Ta_^4v)+L0000bqm-AKZe;fz> zy6?N+k~N?g)drxQIgaBPcE&)g2^uVN(sDxC*QreojtC3ZmQgvxcm0vqAUHnM$+ z?@DJ2wrc3KS_^FxOIuxWczgA~R)VeT#mPljvjcFzH9qFc+7@hTX#0&+hSzm#9b`A$ zaU86pwP|qHBw!)}rweY4jektg9O0%>OHh$DCFsi9?ZCodC#TN^)kfv&5;SmfhNKg} zaY|JinL?yjg%cB?-lBmEZOm`jp54HJRY=yZ@qr#2%#l0;7Ty!TCr&XinFKs#%7g{b2k(k=kUbl{>xO;{-6%>TH69b!Kd5 z`Pbw-a*U7@Rq}OfE)~~r}!|!ol6TeGKs2dCSI}%u6~tv zSR_tg9JOOG%m*%zv$=lArpFJQ{TGkO!N<=2U33oaq^r=K1e4r3IF*&t8~)zJ{+pHF zq>F=KUGaN4u6>)ar)7kt=CN7g$STPl823z`rnahQlkE&DFU*c{<=A^^vW6I&QFqEXI^aV*c4 zvr5{e3wgb=Ak@Its&AokGns(1HNtCLJOM8ODPhvtkBEME%P$I`FBuz~jmj>c+yU9j z%W{Bp2g`lR)M&;I-mJm*;z6^%1&Fcj5tB>_%fKf<~AeHS6~T2Sga1y^r|>gV^h3`)IhBHA!E>qW%G z8z?_q@n#&0l3w4i*Jk7(ErX7@Cfm<}=)|}(ap$Xv)9)p2#yqN;47;N4kF}&m^q?o< zaj3}CMdc;d%Zsc!UH?X6%Hx9)uoJdI)mGm;T$_VXC&oP{N)U38s%_M0>c^uqLRy+D uUhsQ|KSOIij0csV&!iL3G)>bqH}M~Sl4ZRT$CthU0000^Oqq6yQOH5 zzgcYH9Os%CV}9vf?GB4=(g>G*S~@3P!VyB~GLDl7Xu7(XQrqv_)!OLxr~J2ct`V~) z4{N$z9c$6pn3bOP#ZS*BxG}gMeVzb6X9!ZfYLA5oP2PS}wWT%>#5;#c(rs!FjbEPx zT(|?Hi+?on{ZoK0(B(zv!zfdi^(jFkYqvq%hFCeDX>EAfD?3xBltQ!+h z+@d+BWQy-$d$EyqR-t0;(tBcYA-x84+!L?K$Vbb9(Q%MzC1|={)0XL9)n$$Yz`|Nj zL+>Wej_gAP`)D@b7VF(4YiU7kGk*Ba;edIsxeN6zr=fnuBh0Pq-tLYu*HJuJHxAeG z(@p(Sk6FBg-F>jhPk`;zKV>iVf?vWq^n0;dW95870y^3=m;aqIJ&Q5{kNWMN4j>np z>AQpQJ}UaFss@?p4^s#=(I1Q)%tRHMiFJ4;!V3TZ0000000000000000Nmyaa4mDc Te~~+d00000NkvXXu0mjf-DKFG literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_0_1/00003.png b/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_0_1/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Yj&LwL#RobX?V zbQiII^4uMl|Z~1l7yy12MZ$b&j z?TtJM^{@JVDT&uHZn5nzWh-TPv_J7m;jgq0f(|YbTZHdAM)myZxO-=(=&Jp4l55=A zUQcBF*M05wg}=Y7bG1(&{&siyl(&8#-KTdql}}rLm3hWhy}m5glJN5fpDsOd=_5x% z{HDvZre)46&g0e%{pDoXaPf-VTe-XJSGLU(Jj!tDNp8H)+;exzHoZ2kko_Ba_xXNR zr;WUGZIbufwyah@qN*6%Wc!qrE&9UV%v{IGH{4)eXE1ondwSC@^_ATTjUX{kS3j3^ HP6i5O#yakmyj zeD7A^?KpNo8vEXZz$?#ifY%5RM)&IjuMT(&E*(%E?@oijr30SC*KP$aqmT3u!ZJ-v z@Erjm1a}q}ICH@1MDK1T_}Q(%5bn$k0002+PFB3O#lMU<-1uyF6N}$v7d2;?E}o(B z-VH?F`nru+YBf(DR13u|MM(ZL#+a^o{i86Iq@TxCJW}c-o^9{1LaC=cN(7YiQfceP z`rTsn2TuzJ*%JX(u6C)<1h>jqh_S!f0awGYJ8Z?2wTp7*@tusTl4kiEW~xh-b~+$m z9))INyy0csawAqv9O{|Kyh1f0 zs@D;T%rf6l-c`i5OEbiHCtP+wc%sb2R&At6?o*>%Y;`0VGCdVxn8KYg08hovUWZn! z0plk)4+-YBXcRm31gfXAp_8mI!?o=gPeJ;3M^Vyl(5qiAbs>sa-+%pZqv)ORGzC2p j8~^|S0000001NpA<78XjwR=lR00000NkvXXu0mjf1+LS- literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_early_0_0/00001.png b/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_early_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fb5c9c6731d1b8cfed9cddf0f162ddee4e353aa7 GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{)ba4!+nDh2#bl)KZ9*2t! zH$1=ZU-G84-)rJj^Sr3*Pv`XuwzOHDTkYcn)C2_$m-nn;zR+#B?E39(l5RyUr}-wV zoNiOryr0kG=Jc2A#CCny#^<2vy=C{FYSH8=ul@h8<&H~dIJ2c~=kbT~f6g`NT$c;p z|M|O!$h@x-vx-foEJ~0)y~c4xU(};;ji!c7{@Z<#eOg4T&PM)drM>+H9~fi8 z_N2LN`B!Qvd3bNz+k^6UYP~PZ8`k~Ol6Rf^O8?&{k0mxncf7ytU+Ge}WqP`3bi3|V z<&$4ppS}+JFnN0Ex+za@roQHN4=&Bx{;c}{BR|)#zNZg8j8Zw?`^!7Z#P|XK)aI(I zyIk0PG_TJL?e2MI^B~TjHTk2duKs^6IpN)udu{K+Dp$So{k=Oxeb1GyMBz2J ws`blfckHUzBj;(yHv0q9WNvX-5HaY~Fy5J9DSW5x@=B1Hr>mdKI;Vst0M=5thyVZp literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_early_0_0/00002.png b/tests/snapshots/nanosp/test_get_extended_pubkey_non_standard_reject_early_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..690fd02682d1474ff1fddbfd29c3623c45305fae GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|^K^TM@|{+)}TPOv$)+R5GFB$*I=EGjDRAy5FKZ z@%QGyhUIDZpT2LHeaFpk|LucQMW5_+V_UUk`rbRNWs`lrP1js9>y5q}uZbad<|>t$ iQa-L#j6gpkfriX|LI)X~Y+PhRK%$P)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000!=rsfhW|S9x_j394F@4YLrt5MH#(UG=ZT!i;-*!RA*5eo4 z|J`e1TEB4i2Ma-AL4DV~y89PDtqoxRwu0H)<-X9x?Ji&P9gSYS$*j)2xGP*n#qacn z@Xdcesf$mZEg9aR_ghQfb>6d>b#X!~(^na))-9XzC%{MF=$lydEaQhYt0Hs0bJc&^ za&YF+Ki_V>e7D8aba&bM{r&!ODIxJ&{O0tzR_+e0_v~NB{%7H?!1YqoS2P5_Doneo zusD+c#_P2Y!n@joKd(so@_z^W678jT4QfK-vi|UQzMR=wB7Qk~!>;>#-&_+cefn{i mN~N?-i@1el0V6DE4jhu+y+eWFN|j?BNXXOG&t;ucLK6UpC9qNe literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00001.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..8b32f1dfd0eded609029382be53b8c08f6825218 GIT binary patch literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|^K@ba4!+nDh2#Am1Sco`#2+ zdpN(_3zdI7cw++7x*0pR{iyekZl1X1fP^(4P}74V^Y?r;LD{+a-kRR_Teg>%e1CVq z(pxTj?W(9qn?2SW*7$x|Z6*}R9RFzIa;GNA1yi;!KE30}(`!rHy@k#&Y~7|3o0TRc zvOxC4+X?p<3;mq7;H-*vL(kube5UW?IDi(MOZ$Do%x+Iu^@XcuaY=jGBQ~vn^oh;D z`e$ISm!{w+JtonFX-DktnQwNf67+k$NaVo0zh_-E4~Xk*?Tp_qz*?bu>QhUIe8jIG zeoiv(tC^pFV?J%L&-i;_+8qww*>krQ+Uwc=EdT!Ie{<%flmAlLR;v9LU(7ZyqSfZ3 k%r}=RMxYCjK*Rh>rX?RvCS*r+@qmOqUHx3vIVCg!0R0P&NB{r; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00002.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e7191ca07f531755734c8a4d81a88246a7df84f8 GIT binary patch literal 960 zcmV;x13&zUP)=5N?Rgb4~6pK?RUACY}7jsr%G) z&#byI0p=-r)GTzC@GVxH9 zBuVm-jH;m~%mLICh&JL-Z}uFju)2SyD{SMr%`3z)eVZ7gZFTDhb;Ay4aC1f?HG63F zs(_>jp=5=cxcFaK0`yCQuz%B@Ur8NKK69Y*v~PYEcvFL!iTZE3J9pf1<4ab+vaF-B z;Wfl)6|YRdI^f_k6J-f0LVJ0-US0>{bIz-gD?oo$Avc~E!Kq7J43C>dDO#4;65KbJ<9B#(Ky2q zTO4%dGLi{WM60FTjkgnK$J;j}fI>ruSBm>>Zl)~4U)57zjYdUVS{<3sbK^bHgwpwI6SxtNh~TP;`S z0XZ5gonAn_9pddYCxCecv00U>^(?6EMGnHAXDO^9<43P0@LmUwSYF4hL6>+T^UYlH zyP$6PHz&O1bZ)C`Ns=U2L+t_H0UT>1;#og5(}S7=m0MGuZ-LtC$-3S}UNCNU5nnfj zQgD}-59=nlpH@PlH~iLv{S;RDVOHO)(UVk9XWerxT%R)PgQ`Y<0;c=zNm_L&6Jv=c zbzRa5t7!(f=eXIH0JEBFVMj->?!+@&4N|N&^Ta2wEdd=eCzh{Q0IVe zHDQeQ-yb^OytcX(_;>|)U7LFVs6W`uv&4{1$SR?A@+N2A&BOw=f>z42bP4(fR(TGX i!gm#oBuSFw?fe6uhy`g3_;-{50000?nHWl%E%c#ttZ{1r_LG>z(w0TULlrrTT$GZY%%H}BNmxttM3EYhh=~&x9&z) z8EsSLOhD`z6O|~;sfeLMu_E}KWm$E+T_dT}NPiyELbqR*1(H<9wmtI!;4dGpzwbAy zE(vP&M{&bzvo>T>&Hh1*r@B=4Mn$IE(hZXLI>_l+hgzoO8Sll zV6OpC3n$sAA(tO@H2~JrT@s@-<+kEym0$CWnuX)hpnm~Sd1y3uFSOp z3s*ydc(aFp`PK0trZ{?%*iPE892)`JPC z9?^_LGR3!BUL0hNt59|AD$m5?LFFFccqV>NjeN{(7>TY|Rp8nz67mCG0hfHyXK z8|q6txr#dj?G)I(KFX`x?{Pm!b;UJ6W(KYsxfy@sB5Sl*xoaD<&po8cdT^dke<1VncaQ)=Yw)^pbuJw4%7)UId~M| q1poj50000000000000009`g%pTyf*>bT5nm0000FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y!=rsfhW|S9x_j394F@4YLrt5MH#(UG=ZT!i;-*!RA*5eo4 z|J`e1TEB4i2Ma-AL4DV~y89PDtqoxRwu0H)<-X9x?Ji&P9gSYS$*j)2xGP*n#qacn z@Xdcesf$mZEg9aR_ghQfb>6d>b#X!~(^na))-9XzC%{MF=$lydEaQhYt0Hs0bJc&^ za&YF+Ki_V>e7D8aba&bM{r&!ODIxJ&{O0tzR_+e0_v~NB{%7H?!1YqoS2P5_Doneo zusD+c#_P2Y!n@joKd(so@_z^W678jT4QfK-vi|UQzMR=wB7Qk~!>;>#-&_+cefn{i mN~N?-i@1el0V6DE4jhu+y+eWFN|j?BNXXOG&t;ucLK6UpC9qNe literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00001.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..d3ffef10d91bd730559463434ac16f9eaaf753a7 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}8ba4!+nDh2#Am1Sc0oRLJ zcQ}8?3srwyJaGbJl)=Q~4{YPD77C^}1XalZH61A7FJ)hMMB?*$#g>KKzi)HfUX|T( zee!XM#VezA^(J?*s1o~)GiVEKz&##*~w$-;{;!SS~ooBSYY5sA` z$9&lzFH&>I%KHrwFTr%s8zZ>tA mh}J1P__Zg-0Ud!19;Dw3-EgIE|HVzaLBgJ{elF{r5}E+NM3dnF literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00002.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..49973feea36cb6191141aac51516ee72b226d605 GIT binary patch literal 975 zcmV;=12FuFP)y(6OkIM;nX?4lxpo^cH`v2-P3~TT2xHEW>BI}Cbk%fE zR9!d$YLy0tB#p1zo)xm-Dr7Gv@_1_*e6SbWW=`Sw17pe~=dmT|ac1pZ#*KU|6N{pv zD2k6{R1H-@3Q$!b+JK^7wd|^}(mrC!ZqsucSBQOb4>3gBO6v!0$AmL>cSIspEkwN{ zEGdF1S*|9|{%0)>p;8Cc{Mx(CdLA0!*H!7& z8u+4Tw{#-OzQ!WUt|a{cd<5p?cYESf(|jpdiu_K%OGp2udZ)fjz41<7N_VJh4sO61 zYA6^IAP03>k{-NGZ%!v4&v9-;@%zCq1RT za!<*FxWZ#!0xXVwHS{F(8BZ_t62@iA1CZ>mVAfWV;b=kWBx2uasun=wGOt_x`L^mA zSKUMICB?Y(d~9Aa$u$>Wiw2(=h7X3rArB>)2|zqk$2u(|Blj7KiFJ0J;Ryim^U^!q zwa@=o7*m!vNE$g4V3&8ut8hd{Z4dTpLEBGhO=eptKfv_|slW3K7J{~s!5v?yduaY{ zW{DRvSL15*53XSIUrF}fY0M&*^`U)CQ4~di)-!aL6ey-=NqI}Y$x{2aKaU36rIC6@ z+E=fO*a2Pg_W|H%du}ZcS~H}ctG8XGKrnw;gSi)V%24T0C@pf(hbrLQ_wva&sHPD< zxXix%2Pa&H_9D~{d3jda$<3wefIK)octJJH#h(CVUk-|$gCs)rIu4=vY(i6M8~5zY z+=xY^xTmGK&w$67m{pJzAvd?~8lBJuUk44#d26{<6wLrvPN8N|52UH_X_Nl6{)gV8 xu*mD#znd$HpTEhUP(we8=$^1BilQhAogZ#6L>mAf384T0002ovPDHLkV1ge}(3AiG literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00003.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..c06925f25fdba30025a0c3cba9e0c720458f26b3 GIT binary patch literal 953 zcmV;q14jIbP)RTR(BR}Oz`_WODtK#T{@p-pxIrVPpddLZXlL#=Aj2R#r_F|JBeFXMb&NGbmJ>fX zO=TOtgh;IjFD`(1L<1eI+t)2m4lrOA;<>AT7`F}55#Iw6&%{3yV?BZ!Mph%oQqXa- z+_v0bCB?^!q9}eaz8Wg3H^%Xc$N(KpP&E1_J!)rv@HRkH3ZpN(9WsTfNrfP%X5)BA zJ{V=DdK9}xx^ugZT$qE(=!z79sAC|agsF95JlC2Pg?l5WjVe>#Z3o;4v;c05i_=32 zH)+D7E!?g}<=Hlz_*dN4u9r*!EdaQfoOph81vT8)QV{)&FA3s053jtC=|r}>FCwB* z|G!d1I%BXteun7bGy=GXA}Mc5dC!FhyStf#n{bnyI=BHi380jd4X8#g>u*CabyV9%h;Q}Q6hTAC z{2VlG)zDnEk|4em5n0dCvyc}6ykFv*V+@Jn9q(7u=5jSPJ{K@7(zGC3&NXTodL%b- zQ|vXH1hg!QEQXt}+P@2Lk0)&b7Nm3W4Hx$vq^Wr31tnEuGvLn=-c>^pY#j+P>rOd3 z9bXOIxm8Atcu)`&dBzicBi38#zdj$t)0kM7R2&gESh8;;TO}#OYq?`{rO-WF_m}Ze z{w{)yuwKX<=KLnSz_<8*rKzGQKAgq>lHl z(AQ3aBXLeanlj_MA#w2Wl4ZOt5Q7Q4%{ApprCrKqrPFKX+uh6YZM9`<;+jXh3cKBf z8*Q`gfDQ7W;JmbA8fpKiy%33O*ZSFxL<2?iOS_9%e?NHWg#4?c< zd?^A{^_Jnf*al(Q2-$Hb;K#glUWtH2Wf+ky@#+nbPIJe6o(~$z3Eb(I8hV&ofTAdh bqBz7~-r?cC@;!MW00000NkvXXu0mjft0A>a literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00004.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..44531783a31c4ead6e7755cb6271096b7a1ea2e2 GIT binary patch literal 517 zcmV+g0{Z=lP)m&9J?qbfq?<$!?@-SgE45NZfe=ehs@0D$Fw2J3t8f8m=y;)b;&!r7~&xTmD8Wmxx&t zhc$FJjkPFTnU$LI*>CR-@L+H?Z0-O(We7sNO1FgwOTK#ylQvt+YAkpj-~c1hg9>+WlhP3>Sa@yS1Th{PvXaoh>0A( z{k+a5^RV;`%Im2%+yS@#zH9D@Qk5fY7=T+z%8s2-`A{>y2{!JxoA-bP z(x+pkU11A30FyejEH$s($(wa2X@vKP)zkLr+j_;$JgS!!rw_oD?a$M?n5BQ-BC5>m zQnypb;2n-%g^tz;GGj0m;ROHy0000000000000000H*l|WyYZ9A2Jn#00000NkvXX Hu0mjfz`5+g literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00005.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y!=rsfhW|S9x_j394F@4YLrt5MH#(UG=ZT!i;-*!RA*5eo4 z|J`e1TEB4i2Ma-AL4DV~y89PDtqoxRwu0H)<-X9x?Ji&P9gSYS$*j)2xGP*n#qacn z@Xdcesf$mZEg9aR_ghQfb>6d>b#X!~(^na))-9XzC%{MF=$lydEaQhYt0Hs0bJc&^ za&YF+Ki_V>e7D8aba&bM{r&!ODIxJ&{O0tzR_+e0_v~NB{%7H?!1YqoS2P5_Doneo zusD+c#_P2Y!n@joKd(so@_z^W678jT4QfK-vi|UQzMR=wB7Qk~!>;>#-&_+cefn{i mN~N?-i@1el0V6DE4jhu+y+eWFN|j?BNXXOG&t;ucLK6UpC9qNe literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00001.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4830a91db50f820d727e723deba48f56d5b8fc81 GIT binary patch literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9hba4!+nDh2VAYZcrPebCi zH)?nOd+a?eC&tOR>cA1EpZnF_1+oR-l<)!dRNOgj)nKe7^#98}^SKfC?_aoW)sSsk zDKar-TiC~qd|WPDGa{e+)|n(>fq8$ET6g8?vH;zuxaE~Wp1z#=)YLki_GN`zR!k~3Uzxr2 z_64EoGIPG~wApLXXVxT^{`1&7gFpQ}4-==aqS$6DQ5$++?+Hy&$U$bNo#mD%XEPoTy9p`z5*dY<2BW??Klg=MRPOlWt z|H<+uB5-s}9hT2TW;5vc{N_{7!Dc_scP>NB2;d=Oy!4khEX??=gS3uTFt?OeF;kx| zrCZWVi~|N50gCX}L>H7knn(N0oPy?wnSyrC-2l-Hv3Nd{-BVBj_>6HUzi}GgHSLM2 zg$^)xX=F&2{%z(L8(DG|!jp+kuPu`cdvYAmh4TwW$ddE6Dd_D)on7XQd@O;Rq9jR@ zk7QO2)iAqHQyr=wfkYuTfJ#BOIvtCeK)k}WH?^!bV=EXVY}MicX+#%k8e!_i?@0E* zj1gCg5HeO%5Es`X=N|Zv6D7Yl4#2SRx`M1!;5y*$bfHEy8`qn222<`fXBe}%emif1 zVk{3h@@C2RfHAPXe^_0~$Zg(wqazFyUw58(kORDlPTVpRE;;N-9}L47e~<%0=|SEc+|E_%m?3I(@K#Mkl8amZH12p@!n)=)j__m-;&;Y74-~ zL7sToB_Zqv$dfasNL6yoxM$W&G#j>>fRnJ6tIXS@{|tq7$K!QN*Ja!+r3a!OPv!_C zTRsjBe-Jp$U=L698qjR;Rmty+oqUBH(%+u6q}8>PAwOx6dIQ;*vF#bKkCmJ5nm{6UfTybr*XuoH zUN~gS2+A@dmxvhdgI@F+-Fyt7P_BuSDa$#3Hu XmQhLtQza9;00000NkvXXu0mjf3);Pz literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00003.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..5a41bfd00461e885cc8a7f6cf9bfdbdf6f94830a GIT binary patch literal 984 zcmV;}11J26P)|mYm?JDVp&LgN?T1@@-x%8v1B-o<5(gGgbt{T17=t=Pu7w3hxk9! z*n&k39abyQiU@5r;_&+Fua<+Y^2xzPSTh4~z!-1iWlak*O}ptbSs)@KJ8a21kkSNnr*8%&Yh0~Vf%zZ1tFlN-h=A(t&dm$NEt zGyF}K#CVb<$#bdi6e9;PDs#pRR=8Y|R5~PoetbNGtUtms!)*~EGY$yLmr>#iiKHUb zG$&Q2raz0gzo;eUJ%zwTIVm<@`;a0DyHqkuibxr$m(U36+%LkT~U@XmTjuF3$U#3+AT+I)G|Mf zgP7M%;~*-)66B}Sy$RFC@`ASTrp_)tj$T~gsX3fgbR3{&aSPnNp%}M5it6gRWZ#lk zW%cshHGW_Q;6fW}YQDZ_FNU(MYA3DN5AD~NxnR1wYK1%(DG`cFv94nc{ZXX-0nrAg17ZCJPF>6tL#%Y7--{)G!~g4$9Q@ zLThiqd;s2ICLuic+t8cvg>S?@CH9jfNiGNaPkDJ<3tYt5(kxGbzD(qtCsmBv<_ov- zR7kR9_;~81eASYGSo-J-9KDN#i7A>Vb069QguT%P#@sV@EkxbP&XF(7=T*oN08JdH+d_E z3?2t!Te?%>)EIgqGiObwZDvC+=8k*7-8d=slO#!!r}GOai8ifT=`{`hQQYjS2xHLze{r0021LYx4Y@bNw}?G>#Mj z^}%L<@jBb&oaB^@axm+KgbgqFLDDYg9ft{0=@zw$eCa*vob zby`bvb*@G5U{+e~?f@Oc94j43Gj>OB@BHFf-=YD;e(h$E|mq+@yyjh)W` zY-qvY6#Lag|4V{4(B(ys$DmAY=2L=>tla~m8RE?u)6pfU7>t=^IPD9knN`yP6Klr- zXfDx=Q?lfDHC`-aja8^wyY!k^+(^Fz9M{D6G#HPW7lz|SPAfsD^P09y|1Os~4gfbc zyBq4lvQ^-Fuj2Gq=q{Uak%`Ts(_LTydK>ZekvgH4U4DG1_bl~S5jOs?da(KRL>GGk z#s{w`&;T_5z$rg1H!Ug8-HHf8J^^u-2Q|HR)PHS`D^-wAt)%xhh4n3Fce<^L+1wdn zd(>!H*tX7y+^MIGK}-*-LIJHLnK9TE=>-4)0000000000000000Cw{SG%i-*>cg|w P00000NkvXXu0mjf;$YTG literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00005.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y!=rsfhW|S9x_j394F@4YLrt5MH#(UG=ZT!i;-*!RA*5eo4 z|J`e1TEB4i2Ma-AL4DV~y89PDtqoxRwu0H)<-X9x?Ji&P9gSYS$*j)2xGP*n#qacn z@Xdcesf$mZEg9aR_ghQfb>6d>b#X!~(^na))-9XzC%{MF=$lydEaQhYt0Hs0bJc&^ za&YF+Ki_V>e7D8aba&bM{r&!ODIxJ&{O0tzR_+e0_v~NB{%7H?!1YqoS2P5_Doneo zusD+c#_P2Y!n@joKd(so@_z^W678jT4QfK-vi|UQzMR=wB7Qk~!>;>#-&_+cefn{i mN~N?-i@1el0V6DE4jhu+y+eWFN|j?BNXXOG&t;ucLK6UpC9qNe literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00001.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4fe72c3ac556731cb35c3f98201b63e3c534c295 GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2#;G|{+o`%Ho z<>n9nxu1&tc2M)Mf=2{rrq%!NAuE~GI#wKK1nSE9{`hXAwNg;tvMI~>uDpN$;`(mp z}(lm*V!Sv}y{so;}Y`F2&a+^-(ziV%d|CF!V_UzYJorzB0 zRqVswKWVpr*FS4*{Wku++w#tRxz8hi#3kj2)tg<-%a(-ypL}ai#9rUa@}qbT9h) z`;!@4rp=zkuk)+lz&lI3I(64S$q><^mD0ZECtT`hyRGQ_m-gg<@a75X?+(x7&<8pc b86-U8-?r3Z^}?#jTR_5|u6{1-oD!M2!Rm@eC)Qhq9}@@D2k%EoIi{8_kAC~ zZrf&C5`(c&Gywg?*!O+(!#($s@iMyssUG9+V*P`Z;n=n<#SaLXI^=8T=+gFqSZcL! z{w>xQArptssV2pY7>kn*w-`rsnutNmW4Qf$4NTQRwK9cULmQE z*Wx{yB_{xZP8d~iZ)6Di7_Gx&CZ?cua#GNhx!ZtrgKVD9<6F)eGPfgd% zsuKesp3=Z6*~izlCkI(D3)#tpmye#ojlF2i4B`5Qk+S97mV$04>)vJE$=8y2C@PAg zC??R-#|#q$1>=2pE~_~g8UV44am~8RoEI7if!FHS`LtZ2F+Oz&Y<2W!xBg`JzLxM%s1>K~Q+}EC zJ1n6(=&=HjMLY(@I!jroSi~9RiovPy;Z@%a)y|7kM?>y}pTmd^xwCJWq`?n@MhVh? zGE!sbwL5mvN&F0Li;Lk++o&kElGx(Z;?@+#DW6D-s}JRgK02#_rZgIM;(peu9P5BD zR?UgwGeL^rDMGv+_w^}I_0%pK$&F)YdNSdEr+VIPkPdUK0N|>F-LonCFz&@`v(D^Ey0DN%m zcX-6*$+fc-@e5}$-dQ*S(4-Q+(6k3$i=20_dvUxq{1qS$!FrDo`F>VFej|PWP8x-m zrtEZ_2QuR@ZS1Yh_8CWe4?v_!u!KvYMj<``l%FHjGK5_s=uqET|cTJ!ctT$&1Cf wsV7C(KUM-+{XgSe#52aT7HLrwMN!TbSsc@#wewT92rQYVLj5i)ubkWW*Q4i%yFLQ5;-KbL9HJs#Y8<@$JX!S z?@Z$eldK6rJ7YIMsiAgG%!X*=vO5F`V9uE73|+lK1M?g0zW#GeV6kI4;Vm5|3m(BrIf z+jResB|e@cN%D=9S8TcbRIM0+s*uztYK0|48rrV0Sk;g}A`jBEtb2$C(trd~4cB&L z?_+;Ny^}*=26#(0wC-EwtyG2jB2!+o^O8tlE<1Hi#mq7B(xEGX==R79am2Yl590{f zSzObAE`YnKN1zKF>&Os<$HElibuf4lQ&Z~B`BVg)25Wddt+REuL>jtNd%?WF!*xbN z5YzEz-w*lGHG^393K$7z{~Hdps!@XhV;fcy^m|ity#k8&p8B9)E7~sQg=!s?x?TY? zo3L$;`?BvW-503th+OQDBMs3&o{idHLTKc){x%#_r}a0JbMPb?g`T8g?U5;5~?IkvvOa4~1RtHOWE-1PxAFsKAF*`DWr3+EX{yQv_f$yR{0rTp*cXYSV zwT|10>2ceefEgMgXo(W?O{*<*%a^3>CMC?!WwgZ~W=Ya*#cDr0VoD}?DBlNja7-4Tf?Vlu;SRr(*$J>ml$;D9gF%ucZ%#)x^a#?K zN1O;exQzj4Ox+`?n^drA5`II9QY>Am(B`9VCi8;LCP(lI7cPm!;>0Sz)d9=l)3lho zz736Voqf;2DY{0_TyORwDlR( zz7i#q-QYW!6<-Cj56vdyuyi-&=_WxR;WChH0OZQxVI=I{16-c+)93`Xla4(=h_);n zwehQ%T3VEIZN9E?vCZeVS@&$JN|to=`Mi~ZzW0C1zX>@3Ns=T<@(}+3aK(Dp)i=Ei P00000NkvXXu0mjf(;L(f literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00004.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..82e479d2223ea535f80166141a79e81f932372b9 GIT binary patch literal 520 zcmV+j0{8uiP)&pL)G1enR zKz>jSaE{aGx~}}IZ`Kv6F=>Qu-yM*oHCA+NNDeAD&b7NjT!wgZzNXzvP*SOxr=0$c)5xxA!^B!x z0CkJzoRTTO&3Lhqb*@6{+Ewm}#TS*&fQftJ_f)CJ$OB{IAjg)V<7Q1;roU;*90!0m zHrfsKusWvAeX82$QID4`Ownc#n@g*`(QJRdGJw~|KNsa_>yj@(>>#? zep$z8`8aAXwsPVrCkt@9Gv!Z{)!cTDQx0n_bRDC0IA4I0nrrpR(bt>YlUb)%EWq^F zjp_s0dHQOf)rxqjxqp*)!1PNjoARFbi&lU-a{ZO3cs7WD&F>5v>0Ny(bY?;&345|b z4T72k^0FBM0000< KMNUMnLSTYA*ZD#K literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00005.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y!=rsfhW|S9x_j394F@4YLrt5MH#(UG=ZT!i;-*!RA*5eo4 z|J`e1TEB4i2Ma-AL4DV~y89PDtqoxRwu0H)<-X9x?Ji&P9gSYS$*j)2xGP*n#qacn z@Xdcesf$mZEg9aR_ghQfb>6d>b#X!~(^na))-9XzC%{MF=$lydEaQhYt0Hs0bJc&^ za&YF+Ki_V>e7D8aba&bM{r&!ODIxJ&{O0tzR_+e0_v~NB{%7H?!1YqoS2P5_Doneo zusD+c#_P2Y!n@joKd(so@_z^W678jT4QfK-vi|UQzMR=wB7Qk~!>;>#-&_+cefn{i mN~N?-i@1el0V6DE4jhu+y+eWFN|j?BNXXOG&t;ucLK6UpC9qNe literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00001.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..6b083fceec94a34ca6e71b308affc61db8adf5be GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hrba4!+nDh2#Am1Sco`#2+ zdpN(_2fcsPEUDPaxnj%fKl_*W8Xk^vIJS)!sL7!GbKU`KrJ#AsrYy^oS^xgUySokh zCR%iLoC*`+f6wNl&HVS2uU??6{q*^j8Y~iwUbk{Xj}%whm1aJi!l3MMR@ZU)EM-Qa zfU+l>PRAWWB0lf*q-P%&Sv?KCS^LSOQKofewL#JK zoVmZYL~iQ)+C8JAvDhk-|2ILbB>v||MA$iZ~fwR&vbb=%iK_P zIJ^I+;_LV7^+)v>v%-HqDV``jJ8#7`t*?*XX9WGqo%<}SB9q0+{@?t`4I2+D2-h0- u1_;+CKRF=0d4l@Cc3Z(Xpj(hZ!c6tBjqI}}f45|UggssTT-G@yGywosmY5j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00002.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..d237bbc4150f012e34eabb020898af67ce715f7c GIT binary patch literal 959 zcmV;w13>(VP)oN3edawf}n@ z2QDcJ^cT$nq#Yl%*4~b`+^+PG*$Rm2K0br>PquW&aU5IhkciL`e;cPu#}A_9s20yx zu)c{1934}|8Z%MY3_8BNd3Q9xWh%Lh6Sys05_n?n0L&|s+xQG{dWl^;^U#*V( z3p^Rw7Z**hm}50m26w~*lkXA_@qg$Bsl5M1o~Ftf&M^Kx>KXnz&M`=~;Lk!yoJl9= z7+lJOy0>=dTjuZfml69!E1*&S6@913csZk9X0%3f0G6(}mm$Fc8195ep~uJ6$dxUj zF`7L=`#3CcyNpezH||gZ!OPEpqOt^N0_PSpfPfug6Ay`LdD{DHVjMFP4r^LN7CJL2 zS5!-yuD?YB_qSqzk=#-VadcUX(;pHupB9s*iffMd26e^hxrN(*pFaXL08N~V`v*+v zldMRO#6QUGC!ap>+3wHsdB8La`OX51l|aD5GfkLf#Kl!teUIj6%Zg>Ysdpj|WS)xq zO?auPBuSEFBg@~0f^}G(eSFE(<$W;Ai!H^-?P+tS9nh|BVjCk72A7=v6}R}eH1C6{ z;gC&$?atKNQgf4ySg$BeN8ZO7jH6)|+dAz}aML%MFWBGlOjxg@rJq>kSVZo|QfAJ_l@002ovPDHLkV1iyq$B6&{ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00003.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..ed56331c4738a9adf98a9ba331713b5051ec3420 GIT binary patch literal 989 zcmV<310wv1P)071j&B}F@K!}Ad&jzm%t_3*WiqiLF^X_}^KZs%*W{upEZ zd7h_Tk`!1kiUmMBImQ^%&TNPl;o8!*)@CH%JC!FT-Ep30i5-x&LwO#Mz-D;73@;zz z-%e!>k~M3$YKeBR)D|-iFE9S94X}27vvUz@W&jSDfE9WERI@rVW{+U#GqJUPICs}Nti=9hKbAddJRP66c9b#Cp@8#sZqp!E76_T7}% z`CR7z@=whX;?%~qww847fqB3p&;XQ3fbLTyV=v)=#rBtD@nOaxDSe^Ao?P-k<_5t0 zx|3Wm&y^z9E*85xq&7bmIs=S$;)*VQyqT7B^A~rz4kW3VaEC*>&Y8743H6+0OdnG3 zLG`;C(61YSP{~>Zzni&VczoXHIguC?k3kdSs#T~#a5}li;8J+^I%=qK_n+_$z9JVj zyZ%JpkeDU4)*07{7h=%3m?xy|8Ac3EZ3jc1vtuCTLCFuP6>6z3MTj?Ip^+aF{b8xK*Te(0#cjlt4(F&J0*x zl5?9q^}xu$jWn^}@?c(0$)YE=?$jT$SDl`BxnXB}_~u!~b05fj2t5Ez(=?xps)k0D z!b3Usk>i@HOw77Q(6&Zvt4W40a>Nuvjrz)?>6e;PsGS-?X)q*e+GcU7()K8p4EaK^ zZp1En`N_^-Qj)||8;Q&2Z5J{v-tcDJIGCPQDu(4>98QFYXH&s!L`-S}a3Ih~CD(g>j1G=MHM%iC7^aSznWXpD7ka z=Q{d&I)8F9e~Q-=F>$l}z_S|3Eo)kwcus_PW|lNf(=<)fG@s57?+Y~={{9lg00000 LNkvXXu0mjf2j|%! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00004.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..dd175d24f6ee3e71908c16a8c909d586d2f0971a GIT binary patch literal 517 zcmV+g0{Z=lP)IG5;7suv>}- z`IprO&T-nr81qA)v@@)>Nh37->FJyd2}cNF$T&_Spy}wMq>lezr?n~D-}2kjStF_@ z4{JKzGS;H8QI($d)&Jg2aA$Bm##{k@&Jd({X_tivP2T<}<`%6E#5b2oD%)rmjo+9A zG@OCa#Xp+({V6~V%IT%dhcQhx8#4v1oVyL;G{l|rnO09hiIFo;I{gc$o>kL=!kUJrUak}1BI?ZraYISWC4dSu9?;{U$FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y!=rsfhW|S9x_j394F@4YLrt5MH#(UG=ZT!i;-*!RA*5eo4 z|J`e1TEB4i2Ma-AL4DV~y89PDtqoxRwu0H)<-X9x?Ji&P9gSYS$*j)2xGP*n#qacn z@Xdcesf$mZEg9aR_ghQfb>6d>b#X!~(^na))-9XzC%{MF=$lydEaQhYt0Hs0bJc&^ za&YF+Ki_V>e7D8aba&bM{r&!ODIxJ&{O0tzR_+e0_v~NB{%7H?!1YqoS2P5_Doneo zusD+c#_P2Y!n@joKd(so@_z^W678jT4QfK-vi|UQzMR=wB7Qk~!>;>#-&_+cefn{i mN~N?-i@1el0V6DE4jhu+y+eWFN|j?BNXXOG&t;ucLK6UpC9qNe literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00001.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fbc75a1c4f1d655e27d855a62e8482885e998c05 GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2#v{17Gk3-c?{b{>*jo0Fu zkh`E~)#>j3Qs!MR9oE+h2Ty90zx>`tROU>B%MG2#Bgs{JOfwV3*^Lzg&2*G+qPrmmyYqbOq9{JC3~JgGYWAm{v>W%F5E1wQR}|McSj+Ly)& zy`^v3j{VtN85LBOy|eA0&=UK3r#ni&*>US M>FVdQ&MBb@00tbQhX4Qo literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00002.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..4dd921265a85c57358ffacf5d11d483094ed17ca GIT binary patch literal 959 zcmV;w13>(VP)WiiTsb`LybFD{fE?4TuECQnW9N&xWZ(Q7QU6+d<5;1hd&%$le^@osbwc`0% zY;Ph4jviCVikT2L2OTeO-facg^y9j78GPOV9&(Hqf3;ovTsZYfqVQ=e|7 zEg8ip024-lCcHM`g5slfbj-{tXdRy^Xy@Dw5N3$Q^GtS6K?M*qCY*fYG@Ui=8C4Gk zz|7LfAzA#}l^2ODISb**L|?BplM8#05)9$`g5k2{yfy{Bj@RC0UCGDdm=py;5PT%7 z)ldPGdYYvnaZ4nZqDi;rI@h+PMBKt@sHlSIM`M{=zL=_3T{*x?z&~W~WXW?##;kl` zQ-Myq6d`I@-D?ty?R_ZM#p=>TX}&*$N zHx+*5JYWKImtVtF)`m{j9#vASO7Pt}Whbl)zl$DpwC7Py3BYFV_o*B=lG%}NJJDPq zr=V7vWv)Uv=V?g_(@71Cn7-1=AcoY|N`@S5W@Si2cU3%x15LW&v)F-_2R`kYCXrSd zVxt?J*E!InA%=!i8 z6|KA7r$CS!RQ->cDGymQCv5uSp#Wh2l6&cyoiN_ckb4|+e`Ge#?c)35#*OS309uiT z4F|y7zT*D0jDEK6(MKYR7ImnE{#FyF-$!w%1$8&yz%Ll>loca+J=?sW4*xXKJQdmC znw|BWqXUp=UtF%=Yx4cB$EiOBiIr-irl{8dt%TJ1N};ipCWs@co#$xI{O9`Z=~K|h h69EWyG#$zvtxab%@! zrN4@l94{0Kg%5_qhQ|1rSwQ0pxn@EYq#te~4aGadhH+vTr-~hmc|)94JoLn4(A9kD z;fX9qqc@fq6l4`!R0OBG>}?TCYAs3K9(xPoICEM2PCzCNU^xKuQbo%+xKnJVnoP%E zty)i8cQ=WgXqdYwd^!#%09NOqS}z8!xo11#Vt2Y^D&jpa&(qiQRbRk&<6a`ClPZ8itLI@ zG>R`$&^FK*<08KFlGvp}xe8n?Ffhh4hAl)CrW6BL$rc$Gv%?+ePN8vm2qkB1AUDA| z57?&7K`b=%%s|OFz6b3$Gw%V{DK0XR!wO~?$iOfi>jXdyuVKpSz|<Xq;6g zQfZno+SCXFiSow33p##5I!BumZCUf)e+hhJ0ItR$4aLF|jzO$WI^P2{vaosOeu?bl zpFU=V#yLcWr{wR@X|F;wGIm4xM#Mt3di_Q4jV0(+xa5Dt-i+97su-F=q44dnNil@R z>c1d8;y_Ue*RW)>xCEC>>=W#{#MLbs>_Bu7xdJ!ccUq6pKrC4@*jR!lwlk?aP`w3l ze#YP?4I=_i5{(){z7~+4L})L*%{P}C0F5;Sfsm#ytIV|xC0zfU&R`_)7dyB>5iyG5 zXC!GfeTTZG9B;UVn+zd!7A!J$!)W8bGVC9C<3mhjhHZI7Y^Q?bQ{dlOPppw~w_!B~ zpw6@5)+I!YBWCdO4hXx(;8sO#;zazs+}gBq__T4dctf>yh69v$jQ-^ba?NlT*pWxG~QhdDfj>FN-;YABfldjmxxi5 zrZqmU&b0`xj7m#<_P?JNcrdvZb7p{@F$FPSrD-8jlg2yMTT0_V9BCFw$CM_G-JAk+ zJVE6Y`_;tvj|u9a+l#J8rA>94(}H&P?h5f3;>~%d-7P4p)XY*&`@(5t)wE$?Ei6EG ziDn#G)N?W);-8*vKaRs!DuK0s6A0e~pMg&s|c6y9$uzYkaSxbPKnA@1f$Z z0<3WPPjX8(WJYASaUSgXGr-+F3FHh|)OqL9+qupCOA&Kwk~PwM?J#+gVv@=JHknkD z{mrPsNpzu;8cC)GOOajx000000000000000003Z_HwC0d>CA0^sQ>@~07*qoM6N<$ Ef}26mjQ{`u literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00005.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y!=rsfhW|S9x_j394F@4YLrt5MH#(UG=ZT!i;-*!RA*5eo4 z|J`e1TEB4i2Ma-AL4DV~y89PDtqoxRwu0H)<-X9x?Ji&P9gSYS$*j)2xGP*n#qacn z@Xdcesf$mZEg9aR_ghQfb>6d>b#X!~(^na))-9XzC%{MF=$lydEaQhYt0Hs0bJc&^ za&YF+Ki_V>e7D8aba&bM{r&!ODIxJ&{O0tzR_+e0_v~NB{%7H?!1YqoS2P5_Doneo zusD+c#_P2Y!n@joKd(so@_z^W678jT4QfK-vi|UQzMR=wB7Qk~!>;>#-&_+cefn{i mN~N?-i@1el0V6DE4jhu+y+eWFN|j?BNXXOG&t;ucLK6UpC9qNe literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00001.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..6879d256524079800e9417a636d77674f3ba6bd1 GIT binary patch literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9hba4!+nDh2#AYZcrPebDN zH)?nOd+a?ecZP$J`$bF8=X!rGu4Nv_3vPpSzl^)aAE2!CGLz%smEOPCrK_Ut9ishZ zTveoX_3f_l7eqV=Enk6T2+D8k1jF9v9o%cb6-B{tYu3vEPv4adt z^oxF-vQJj|vvfgwp&7%+yY?{)f5mb$GB7--d-^J%?onn`X~p!inDtkqvcG+uBbqDu zv`XO;v+k6qZ@+4vzBX%XRQ&enNBt2yv#$kj5}vqb)&G0*Ze479&)O<*>b!D!uE_L@ z?&~Hs&AL73?4)^H$|8yuu6LZ~;duSXomkID|4r=D^DJ-lT}!cid#oZdZJXd{zvwoz z-*5km6tCKv7C-4i)t+S+A2^5Y%MNb#`Lf)S!}Q|(9>WbTVw;Y<-=KPk8yFJEfaf!7 W-g(0x7P*ltK*FA`elF{r5}E){!ll&! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00002.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..8f1f1533c2f1a2b93ca59be56528f40de6a770d5 GIT binary patch literal 967 zcmV;&133JNP);T$X<2=vN4!7J}#@p;2$nZ7(1jk>bgyT4l6gwbf>X5IU%cbK#q^C9t z=WlSl2$?v1PBkfKq_a5b@c!aowFHZCj0YDXX9eJZbG*k(TNdK{9Vh8HTaCS?dxdO$ zd=&R&mYf7EIAILIt&tG)7{%c^6Str^Ia|=3d$$2`gB+gkjNW@y2RM@sX=Xhhb;TM~eStS20B_1G4ge#pCgt`uQ&B_@(= zPzTM0-(2qPHTN(1Es{VGhQzm(hczhlvfcgNW6+>;Z{W5(QP4rnk}xyuda*= zx`!yK;H5c`8hSB4+GRzoFdfNqjN!Sc9p0UW^NBUU$;ZCvs4U{x6Dg_wyq{e*wNG8~Z1m0qzBe zb6lI`b3xQcvxHy66AevX#U0zHwk9*)m|N|A0uTI$%x4B#W7qG3K;BT-7e!HgEb1A+ zr3Fv};8J4$Y>1S0iETTO`y9tBSEH8I%Ihih*KwtN7ys-UhHIHqQmA3!w)&MTotpNk zc{SzF;)7W39K@A4*A5wIufL`|OM+KPS$2K`MiJEbRi$mAkJ4JQ5M3oVA~y1@jHV3P zCwMQJ4`SUpGOf7EFY5l9g_qNBPy|8IreNJa;a^BU&~M{cb_->j`&2mZ~x4?Oo|<`Hhup=^86dI4`=;3 ppe4OZ4O-|dyhSOBq9}?d`3I)R+KjTzm*M~b002ovPDHLkV1k1e&OZPE literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00003.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..61c42641553a5c82a7f4c180bfb9a470444b3187 GIT binary patch literal 991 zcmV<510ei~P)#Cl(e!y*eIpzV~BBuSDaNs=U&^RrpM*4lqP zjsuqz1^SC-0kWMnYOSrEb|apJ{hju;HZA$xsoV&0$8j7X?U3{i)o~yUYv$=Py8IM> zJC!{|)bwuk0rq&K84uH8uBLl7ZcUWF*V8|?_b65M&FB_sGy#@sCiN6yt9-9kBR3o>gpxcQG z+YEn~kQh&rB>7@?)ld>30Yx=pN}I(}3xr$|g%+cP_;K5E9ljEJn{=i}z4zbjn&|@6 z8b}d3=uFYE_<=TT){7K=(!8pWu3?VNqEl1&69hgXuzNBG6Av}e$h@z(9o&>IhWjDa5G9~M0jDo{_8Pd>#T7Ha zqb&gDvoo@V_WAm4Mo5ox0QyGt8oLHq$-y(ig<7+niYm(X*ngDwU%b~CJdHQaLJwi!MJ&{F9{Cq z`bL<^x;Oy6j9h6oxS7=&F@F`Rk-n}k;vB-H4$su^cM%2D0K|5G_AN0igv+qlLiiVE z08Hhiz{$AGWr7;ti|1CctyuGZdGd={Z^C#6gb1RI*?B|uE;P%jucCV2mnf;FVn%Ac zSR}V$Hg?bC^lfPPI`L&(^j?t3dri_LNs{M*)&S--0VK>dMQ|ug_R5E;$YSBa(?9fG zfGfq4L(J|(;W?%@hzmmCLOY})3qCCO4)k5mLeOku?j#JX@e~Wsh}ykV)d1yp==MLuZI;BMl&OHa{^QRV47&+4fD6%3)fxI-d|LiUD+yHpV*R*mtCp<)h&3#kun2pL! zUz_GJ2c6v+upc9OM0sCFDY9mF`?nS&NB5XHWXd4Z-CoJhIw7yE1neI)3Vh$uEI=v^ zOtJ9s(1Ivq#?Tu(t8o~-1?O#hK8SoEb2E`@=z_W#a9m81BuSDFgIt7nIvenGa=~y3A(_nz?r?#4yAs=bmP7L5Y$xOFHcbr;$_Bgo$-y z0;)$erBL-Mh*&v3OAV8Q^#({!U6hMm{hcJ6W~`E$20Dnf^^Ka~uG^ z*l0EM4wfoV^|08j#fIXPsn;hSs#|Lm)q+zU4tC}4mTIUjpMB!XnqFSF#HhP^l)Ij? z0;+|~>K~^r>dji;Y+Iw6X2A*wh98oYpAA|qmB!V=ktkfRvLFGLcW$rx+QYYJadc%h zG)>9(Zcv7D&ye|&D`3Ksv~Mptdos%YEm!8~gm=|+bA0apE2cTZg+qT-0z!3=3+KM? zqdy`6VXGWG(2l#%b991C4sJzw0RR9100000000000001h+x!8eqN4FJR$ROQ0000< KMNUMnLSTX*@8`t; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00005.png b/tests/snapshots/nanosp/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00001.png b/tests/snapshots/nanosp/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsB%b4qF3HrZA` z-`kdoy^^2g<=&!7z3|Ox&bbcpMBh`QmbtTZi7GEY>rTx%mj&v(K?;{8>nhD!5#!Q- z1SrkZ-F~IkSW)D%rM$E$J5_nLvlmWE)>Z1DhHE`z{s=IZypn>Wb$dZ0o=G7c@E+0X zUQ4ZkY){SUi$53cVo+{& z@I2FB=3M?%yIcK_ScIikx#z3}3CkK}8m`Io7FO$)%R}REskJ=!c)c$KYJ0rXw-MFa zlsW1@PC-kVJO$Z(>PO1QbifU%FF%k)#}c{&LLWZriP!uPxLddRP*sPFEgw1o7dz=) z>IGSh&&v0lZ^(cO@hT5|-VD2-a@hS@^WGP^P#^J0 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_miniscript_long_policy_0_0/00002.png b/tests/snapshots/nanosp/test_register_miniscript_long_policy_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..ebc70b370981781114ab4e89910603cf49fb3242 GIT binary patch literal 865 zcmV-n1D^beP)car@tiM{k85|{DM!4N}0$=J{`FLMjDrzNNm|-sGTsOj-Eq6*}Zi*WgAAay-5_;gx6LQYn#4y)&xkMj)tZfyG z+^D5fzoQQvqlbJZkO}7H4{^h?oWdbi2%bV;}1B;<=Wi9r8rSEavP^TKuVR;$!Q1 z_#RKYntg8C*uv5jbPz5x_w4DP=B$88t11YBAn3qdU>W#AKGlkmI0e0ogBDb%Wf^|W zB}^b{a)njXT=A6Tn!Z-|iIt70g~s}CVtwG^5>86Iymk|}Fv-d=o-3dUP%e4N+0HDp zf?2l*+)`SXAhY0`7Z3qF6F<6Eg>KKCsG=dysFqId=J8Y6y zDL;0B`f2y85 zrbnD%rVl`g3w|k+ROymGoBs`&;37C%{=|T<#QZvs%AdSEuii{qxVl)zg}uZ$ue^~r zmOlx54Zt_ZpM<>zAhpJzq>ddX?-|sm#ySZAaS>c#L-xX!y1>Iz>5Y*X4)Msp*fB@k rj-kYL_w*X_rzgj+1BCpEP);P~)#aQoCF0$6y;p& zqQ12{VI*kuS@F#nIXMEzl6}5oN`XAf*TM&`jvi2kq22*!gyNh?`eUh+H*qd{z+{*> zL(~DZssVU6FjPp6O6(sZbWqec?f|iL5;v1I>jG_UYGY~#K~Oc|YL}+HRa~8^ zVZO)c?I3V1R*brgSCXm1%x0dfXGYa{{wbdxH49VFNZ#=BPZ>Sl#Rev>Bo=mnh;$wx zCHA1qiw#VyYwaM6`@oCz=}lSv=5-^o1F-j%qYXcf>GGhY(ALo(Oj0T*UBGyA8UsYC z23KCEDYb!-r>fjr1WcjTutl|#1%As1-Uo^mIbp6s&107ic9e`b%Po%f=@^X`?YIrM zsiO}zP-*1ogQYyEdC47x*3E!Hlg5>N22J}aeVZ^NR_)}T?dT1Zt*MW_c)PjZLbrE! z1OcfBXjsZuM8K1I^SL1Jxb>rWa|Z;7MbpsoLTvVV>3-d|;M>?XAKl5TQqW^}K!YF% zg215iPx&g$xYsu}no`#!$NYNg9TL!ATU*6N0ilO9bqUP0uWxFIrNF!s++n7zpk7ak zG}WYGFDP4wEWsn~cL};4DD$YvVoXQ@Nb$bor;OB{D`Bx)dH$@n+RK)^Z4m$tSiIe?q&QZiCxiwuUL_Q0x21p4YkKK<=-BtaM;iB2Z+u@nSlyEx9MqpS2yveY@ z%At^aU+mqUhTLumtvI=L3i=@ID%%e(|8mU;xM)-*5{bm003OQtCQqDj(TREb)A=Z5 zwpjAE(H*er8hBP~nY)soY|B4~%BWwyOyrZYO8&-v*Ec7HM zot!zi6xhAex1q)QnryHMZ4JHM7;%MXeN&>r^O1gqhl>*1aFPg#lp)oV>z506IpGCA zqQXiXigQWqB&?*AR~DLyhp+yxcNp9PQ8x_{TO10tgBP0=lvsUuQ8Xhq3MKRDNE9#7 z0I(Vb&I_kJ z*EH^Vn-wS`k9bRz7^C`P=(<8)5xB@{S@F|w>Le@*pGB4!(Rr&NQ*I=b#8I-0o6c5Z z`S+<_mKgDhqHc=zQ-)J+3MJi-3Z4M-VN5g68xIkkf|LY=;wlxO@F6*1YG@S%MHD_w zHZ4h~%HdJqvv0xWYUm>p<91xf{A>ceLAoF@Mi)%9S3XNsu5gKWx&`Nc5{X12kw_#G biRbYH^M&$xg2c)}00000NkvXXu0mjf>^QeP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_miniscript_long_policy_0_0/00005.png b/tests/snapshots/nanosp/test_register_miniscript_long_policy_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..621f3009e1395f745026eb02278160fe238c21d3 GIT binary patch literal 858 zcmV-g1Eu_lP)x7M!f z8o$ZkpWjGBt!4^$sO!BGA)@3_IL7CPVT^0ZZ{rymdfSvRy?3r6%ynHUqwki?8i!u4 z+U?q(kcF}Wr01mm_{%3%^r^;TQIyXsYjTDSfoV(e8!G|`qKWg&y9SM}@(9&D*H{OZ z)Da_%K^I*i7FCFynGpcij5&_j$`~44OKfoMR{}1_i2y!_;u~*CC2`455?*IEy~ki- z3EE_HxWx%GWEzj$_XO8FFO`T29Df3gZjU$s{bH^!?rS;P_D(bmQHL98)X~<%#$FzX zoi8PKd%7exOEn_rb4$=cB>L>B?%(c-fSaPKD2k#;fUMDdVw9w4*%$JK7^D2f6R?{L zdK{jP)e^L?8uvG%xw-wK2GCUXbyB+Ls*~Exf@o5BOwn3M~6a9EAeq%G2h~w*~NN0g!37EJw3J1?* zLp4K}7VCzEl&w@m{C1d>xY9s%kENr@B@@TjUls$nE4!#5!(;S&rEKv_zJh|7)Rr-lkYYBa)ud&LW60VE0{9b5aq; zQAH~Z2yePW1yYZ5wrTe z2Um#X--eNj8m8q_`SVtGsyecon2V}>S=f?u+7RlttP$hPfC<&avHxAO&Zf$FYK`3K zp&At#b(4|6>FTTKG$k!eo&jXZwc(@I0-=`Ig2%perPV{OD2d+zuNi8o4~@rBX2{A! z`u@JP$rr*Ib7**%46O1v@Dk@Y5fM%a#pKQZeUftJ9tWBP37^99i@-#pO0M$r! zlS(RmM{>8PA+h_aNeQ=xpbsKtZ`aI#i)K|(6vZdvWJ6nIJEf**Kt9!~#b|W5 zePl9Ht%zFzgf!UF6*hAQ?$+MQvtre<47gY}m6yqwYJpM_YSN1DYB%RaGPYqYVTmW) zrd8MOHKz{5xAM6nE(R3Rz}+0Y3beAO&;GyJ9Aj@7{h zFwbqmf^gXi(w^iF;FmrNH9;25wlebHgv?aLzW2Y7c^f)8QTh}t!tMlQc6ipVRDHw(9V0)cYhn~n6|-!6qZxpcfWH-|1IG1G^@z1#X03IWDEaUp{%0YZ zBWsb%JHI#il95ytMNt$*kpp?s3uUaL>iQ4ziTY5A!X+(%s#R7QpbHfCd4~>=Zy9w{ zVb`<30HD_`N&3P6HnhdRt(0X(Ypjn-(@!otDHC}+p4Vh^u$&c3_~c(G5xAB<9Bavd zGd^*Lwi-z+?e1^}o*~20N-{25#j4f0gijYAk~VD&l7^)uR>`o&5bl6wyVc0!I%3mP z3~MUfKuYrP-&FCBUpILFabkS} literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_miniscript_long_policy_0_0/00007.png b/tests/snapshots/nanosp/test_register_miniscript_long_policy_0_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..36f9c90a03f5bf39d0b9935253c251e72378e9b7 GIT binary patch literal 985 zcmV;~119{5P)j(q;%R*L}#4}2|xMgS8;pLsW+p)2(x6!$M_ zA?j`j5;VG+!ukXDs0NQ~?HmDQ$+?cB)&i3(?}Zt-ttp#FHH8zCvy*^xg!T_(z47)w z@I}bC<>LgVphXtjU7e$VO>oP7Pw*klRqXK-03N#^n2fW&yt=NHSj#&#FvcApq%?w~ zwbl_2j`$_^E>A;dce!Tl+&2Zi5gYsLyLSI_%?P+?R3%B0yeYmKdZNlq?pnLAt7hYTfd>k>0XbWX3q294xVmG2R#G#|J5Opak%0i7cSj z9aLy}AfumyU+i0vgBbSiBw|xg?ZosV1pO_+t+&3~9}5h7#rPtz1nljnk}GVM>%(4Q zT!yNXm%HR*7M-DGsJzH5Ov|g{&#V-O!XQXs9E2?|qV%Uuasy@~XY1dF($v}dHdXTX+b@f9SRIA zVA*v9iiL)5|?FJiL{GaqDJ;gggMhnYPZ`mV9h zC|Voc4Xpkhy~1x6DQ{!)lcajetRoB2m6(!Jm?WLb&v3Y+<<5#{`}e*iNs=Tm5>&OJ+N!abu^*Fgmj)zY@v4FuoLcE zll-NH+?%L7KDoQ8gq}JrDlpr<6($qVx5D}G+jRvgmPtpJFLhtqn^I9X$%Aq76BC~& zDgiR+sPeaGHl(RSnYz!IBuSDa$@}pQNPo@*+V#sX00000NkvXX Hu0mjfJ#yKI literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_miniscript_long_policy_0_0/00008.png b/tests/snapshots/nanosp/test_register_miniscript_long_policy_0_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..c34650f1295f64cdcb980596c476d9ca5d5af963 GIT binary patch literal 479 zcmV<50U-W~P)741i%y=j??2FNwYM!5M}L0iu9{{l6z$DTGUq>Kp(70C2m%`t1;cbIyAouf@mX z+VaCv$suMm7eWvnKcqFsw$w7QhKf)9wi_`X!8*{}b; zIAt4_o{RGFV?L>+r6+Pxtv@eZswc*9cG`w4nnnf)YKZCNH)D!j&6BjW%EXuIu4rja z1X&sMQTc5Na&QJ1OI}+$>aQyMti2U`;^x^?DPz%|fFncG&Xk^bV>>)a{=j_Jxh<$u z=eVnTRHe?!t>$yW7|(@Y38o3CbUUtnV;|D;>bW*oI^n5-S(>v4DPpKkSm_Y)V7m7j zdptc=?U1G|mE5`oZDiE4-FW%CITFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YlN%IGsF2x8-oZcid9`ok|arzBuSFo&M&@dt+kYL z97lU@KYcVIQdIvc(u9v%t5ilUQS}@?$NY{c8n^!Op>#&?Ulrk}Z!JPq> z{J2#F19qsujG*&*Y3vM5%jSkD+n10tOts_Q0kJ#-fHnKBw(_aFs^2u;@&fysay1`$2#vu^F!B3w2xl!KpY zg}y|6-cm>QB5s*WH`HhOb4x2gCeWnVW|}_uzOr=SEB8N06``8jAqOkx zt6#f(I6nd+byj=P6S@%_SWRz5^e)#hSiB=3POulDWL$)x-bGyUJhI@#+jTlX4X48x zJgzs6!%s_y`gxO2hCvwv9BT_H2lt|{GmQuOXNeE6ap-?eV!)mQ#eW7i+H}*L+(G)_ zNz(dHlGc9`Y5kpd!s;GN?oFrV%zlv+=r{~pEm~V=Rhef{Czq8*1(m0h6eJ^MInJb# zFzHVp^MjZ*+^pxJW}M&7h zQGmyCK}C#|-WI&4EwM7GfCch{o$(wgsyyp}X~cGm^~o8+Y)}VM)RPX71Q%Z{Sx&g} z_`YT7O0vM*Cs`BRXsU~bHJs(LJN4PL4#?(O?W!eGREYPS-1chnl78*H5lbArD+b)d zOIH6RNs{+cuc+m%q<)1LaV%nG)~j9H7;8AgIt$T$p3 zm`cM&xsES=?7%ry=c^}RLr6$HEYk6Y&+B1U|P o1HSlQ5wGQ|$BQIMk|bgI1E7()P~oDs_W%F@07*qoM6N<$f-GC=p8x;= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_miniscript_long_policy_1_0/00001.png b/tests/snapshots/nanosp/test_register_miniscript_long_policy_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e7cd9faf503e211700c1ae22d11af2c3a87fb783 GIT binary patch literal 1017 zcmVV`G>Z?V}lOPm!YlT9gP$(1%g~ILl0sHOy-dfwX z?fiXS=5Pw(qWW7SDstHO{Zy)XdPYMuwU^-HPukG&=x_hgI#>H!jpgZT^y=yLkY#B>{7P75_(T(HgDgMBt%nMgQ zpKaR{w-0~uy3&Xlc8dW%|Ja?=id;-shH6VO(jtm7ba8>2C`~VUA@M%k4CB2bzPAkD z!91Y}h$0l_18(OV_5@QD-Da(0#FF`a9OGuMcl>*!Unmp`ufkQUpaXoB=C<(VX3ymG z584{>1(>nY<;*DQ>{^u|xMsq56&qZFNGnF)>RNwLuXtDFU_w@LKx`j3W!47{ky~e95}ok zSE>z&xey%;0ZPC`>!(aUA>;<;ZO9)CMe0tpF~4`#d|e4JF;g2a#^t zdek+;70xq}TSwTIYeJmly^X+G;;*XoZP7pQlpMS>`U_DxSc#g2R>BE#<=|5A@W$9s zkz;5cN2E#6Z0Za`GgUxE~nMm&I`I9G~mM?nr6LrkY}%a*C}j&7xfN?8*g_1E@J z1o~|#r@z6c`pfBLK&~vnt)-!~zZ`T5CF8Wy25yANpyjsjJiep@`S{0HAu_mzaMB)i zij%S;!e2)dBU-T7MS$bcPR1ZK;UJ|d4i5LJ2A&7B&uPxKLwv^~k>wNdGx^KLoEjO6 zegeQr7J1z5nUfC|`$SyGhT;I{4TGL^pM3(vLCsIW`b)880ip}XS&A;jbf?~OAoEz< z{aw%%@^3El@0vmjg+gIH_D`gR7?=37Agd^LGibX(@2&+%E8;>Da!9ajA!4|>oU}0~ zoQ;@9w~@yE^PE82p4h^*OIrxhnENb_>oUG50r%dZ4ORlQu;RYCpWN_okoe_XQb=?p zlr2Ltk%k~oMMPnji+G7kp0XhriGG@oyDtG8WF(3e)}FW75o;)o^;E>h{%6wHGJc}# z9@uT>SDvfbZ>s{tqdV<9&n-RPA<8N8RE5;JosmggOJOc1&&6#_Dvpb6SU&~59M`g; nBX|z!_=wY$LZMJ7{672x$RtrY_OBuP00000NkvXXu0mjfTbTCb literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_miniscript_long_policy_1_0/00002.png b/tests/snapshots/nanosp/test_register_miniscript_long_policy_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e82fc9df1a36eff8cff84d77347bdd9216132c23 GIT binary patch literal 732 zcmV<20wev2P)GHa^K>2z{i-xr-W0@hded5+wee@D?Oa2b;X_!s!o8fIS7q0@?syHKxOW7g z?|@P8v=ez#L=CvJJ% zu)3JqtY`Pax->1wajG*v>wtRPjL4{xmSju0+r>m)M1US*?z2c&x*m?#MfGg4`VkvO zjgOahto*TiJ?Qh6q$?b+*?2((3m?&j?;H0r-ReSU4WY$+Dq@1Uuz)|OWsSF1`Vc`f z!%A9vz#*hMpuo9uWWL;C2R$ao5U{(M?*Z>f^+hb-A1&$~09tnZ{h$~NRQeGyq&wFD zH~s{6;xYkv^Un0%l)xFiR^CnWbs24S-}pbz0gKs2r|qqSe;o(BPMS8`2SoEg6e2=r zlIeq6d8g^^radMG(`vGq&RZe-CA@{XXVlPyroGgX9H7Tjm9GMrR}cYt)>chgFT~UP zp-QkJUgVv;jg9F{ThncYBtE5(9Ht-61-;J2T)>l{TX^^kNc*joUgO};_de`6(7i85LIvh O0000FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YNkl8-}36F~^h~_4Lt3It~|MkWAd>-Q2n9b8VCe&RC z(U;ftVR<^Je~Z1cfE&;Fw>ue}b;? z{dUI9Pa{E(RmXy}P2jL@@L#&UHkepvRK zrfGgWn@>T*kpMjr)YEN5iBL7n=HrC(hK|M5N6&I#ZbwDr7eq7QbxeIRK8&xU&lFtg z+U0|L5fieSchT@Zi<*lZ4uICo86*4`9-5Nsgi4{c$TSu11JE&>x%S$EH9Z$s?#$eC zZby4%j;fX3MbgZU1Z62=J7B1#NpJ?#yUsGzNjE>u{SQEMd!h$RT(IXKfQy006CZ#F zz9<}E-$`fxPA)8R#riJm8D%B4f2E)8M1Ij;7k9mJehM*IRJrAl8y1~(m|14whXML8KCz=Q!>Oi zVQzLp98K$Zo(F}9tGwZL8tn}yT#V|;QkU-v4Y9L%6K*)j8>H{_Ml5Az^~bL@Rm;0f zHBHlO2l`KWBG6k93!XAVr&V!>(CU-Ef{O0UJ8H1L&z<7ER^079n+hnT1kFo_LT(x9 zE-smntw78s;2Bpia|$wVo8AKt)JIcly%BSAdvWPY==hugAo&Bp?}xh*y6cu-#S<9J zxJ02RsH7p}58#Y(y4Mta=84e5nd%51_KHzeW|pAE5xO^8(3IX7^`F~8B0XJ-Cy&jIlPIA1kb0K&zoQ lbF&)yo5z0BG)?o{`49LEt*qk__*DP^002ovPDHLkV1l821B(Cv literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_miniscript_long_policy_2_0/00001.png b/tests/snapshots/nanosp/test_register_miniscript_long_policy_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..29c873c3df506125ffc4396d6818f321f3c5653c GIT binary patch literal 1034 zcmV+l1oiugP)(>}nh$yNZjugc-9unJiti819SK;l{+Ftg!KchO$TmN`b{`#Zyjo967BT|PO z0(C>3tNaq3*YA)v?KC=vcMY`mZKPbEuNYyhFG|M1#7OMS*J>+jvmWeb&a;#YHD1tE1-atZMg6XhHlXqbAb_C22#+)wYcj2 zlhmWV-$vB@E5sOaR58uXox&J2*iqYt+G;q@0i*EYUlALJckT;WqQmZqgtzLS$^2Zl zTH|5XPm&~gJd1Zhg)5pGwTc2aF7iRaDA{Vl1C@qOtUbr~?&7Qs0N$>}D>I{LWeL7c zDaz!#lfu;pG4ytUu;QzU{F4!>3@Jw|4r=NZZ=qaMMo}{hO9g|-sCF4wv=7=>Q6Ll1 zqwN`;UA67TF2kjW4rBh>;lT#n?0kI?j}Tn6MG#}w0YzG~sGq2=aXc`CYaLCQvOQ3W z?Eo|oW3rp>{-n3|>^=A*woC7Tzyyp;db|!xCvUiO3`e$I@nAaIT^JQ@6W{FsLlk2i(hkEf=LW`bqk|kP zup(y~7s*4*Q5_(@$rID2-T9uOr;YRVG7^@U>Pt$D8rWFVtvvAzB zRxE>S610}0sy77zj=T2gW-E8^JrbYvL6Rg%@^JijL$$48kv3l9m3AY`@5yZ8CA6FD zcA{8lv2_mY%NOiHnWCW4YqXfEjoV!b?2+7RtF1Fr_;iOrrk;c~_hO_QMLj#97?_0^ zV9ztuj#7j;6LF2B+pw|GUGrnrOWfU5IP)~@wb<)%#4(Bn62(|PZ256bhx#NL>n4`od1bSZ>GO`Gee zBjelrm$If^hOkcv^yJ%DmC zd{*Mjm^G}o&BEZ`#oklp6eEJc?|>}v<6kj_rz`gt@)8?XFJ!t@|4h!WWvMs5%=-WU zU(buHpq62q#jHw)O(*k1rz4~#gEfh`&)!>-%@FUe={J5;!O`psx2>unYYK{VJ9?V^ znfQmPUlm!ChR-*q=Wcz>^;cS0YjB24Rpy878!>wOZHPFiH=5d{;Ed+f{szp2Y>IR* z=tDSqHR7(G?)*5j%oz6}3@^{~mvAIq_z@6%z781y@hUAsTMLQ+H@l4bUuN;{W>2$O zx#|E~!(h_eUpsf8>twvY48zrUe=+RAJ0T0blYx`jgG<4^00000000000000000000 f000000GII(WbSC~gm0cx00000NkvXXu0mjf@B|iY literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_miniscript_long_policy_2_0/00003.png b/tests/snapshots/nanosp/test_register_miniscript_long_policy_2_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y|&`7Zn6ib_L6tM!QUSo&kikr5yedUP_SBoc{4B9TZW61U?Ie|?^3 zDdjkh`dmNGp(;UD6Z%{Cc1dDKbkc2UhgJnlcf{XOht{KiJW!gTyP0-1khcWY;)KJ| z$5wd>#zlHv_!)A=ov@|Jf17z%zMU!8^EF5GS&YiDbZ|171h)>mGnZKJHV#3m020l1 zNVUBi{kbx#y-dQ4HuNnTkx?G$i3D7=*emkkf?5FuqRjOYbZ6O?J*Mj$54Ua$r$Q}j zMTwLEQ>VsWR}Ar_ayHKBl6y@LLEVILC5_OPiI(!#kdf3ey|^u|iqjZaf-clOvptY> z{b={wNNxKNiM4hW8O1kpwjn-aujm-cedyc+Mxjst3Z9bnDYk-Ld(wTQm_Db!Ef$A! zYc#$u`iVp$@!i;b3Mv8r7m=WDJ8Hm7xO>INE0xYl7VjKM&Y;mjvl30_LNjv^n%hy8 zTW&-cxb1{p=(gz0#OMj4)r?jmHxS`P%+PAlEhBn1lJ5!Qr(3ws9#ohBtRuaghYEiP z8>2Af8?J%aKIhUf6>$%0`rS$3E>Pvk1^1*Y&YLDc$8D?JlMD@iCHch|n&YNAu~D%VjbnnmQ689o?V!XWF}xEW`das*o%zk zE0NKEB{KT21V(>=4UHH+mqauzMPm^-9~p6?*q2zrz7eC<^^lLn^xANbGkhUoB1JK7 zi|FJQMJu8Su2Wo3h#0#GpAXcQjlW?cge}gOl^KMih{U3L(xZ%Xv}>Bt(JuejmFF_0 z;eJIbalL*qoduS!MH3jV)1$Hx{R%LRViDBj8!n;S9b*x7(W8b7H&O-bm95knf^k6; zbh+s}>QEHZl`r{3zJ8ibGloVn!-nefg-ag2-z!F{CL*Qyym5!q(fLNKK9jd1lw&9t zGuuWhhW#^EU~xZ$LxxQFrn%>KNKuSMHJuN=x)=k_!@{aDH=Y%Wv1C z=LmSyCfPCq;+Gcst4SCaiO0MV_27d^qg&>HILuEPw9utpM-k z?nPf$_!5k6Bnl?UxJ9eS1B-g9HnY@RIGcZI-e_oxs)`TzZD@O>*+LqdY`OW10=+#4 zYze|030pX6s%wrKr-32X)z*}B{UI`Kp5A|TeKB@T>Ipp`umpWKKK>sx7BO+6BYF~v dL?V$Gz(2eA$@3aS5!(O&002ovPDHLkV1mOd^%MXA literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_miniscript_long_policy_3_0/00001.png b/tests/snapshots/nanosp/test_register_miniscript_long_policy_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee8b13fba48cdd80652197eb77890dc8bd90ef5 GIT binary patch literal 1072 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00003.png b/tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YOOy099@t8>z6@-PQMzWpRR_Pv#g)Kss1~) zBtK;rodL@PkP&qLofS2u10p>GoM_Uf&hjw&Tc*(f;vxm6&#FRI zKvgSiA^w~cmms!WP(M;^+(Oh6X^strtj}`LEH0Jl4zNP@A~<4_o0s^L`!{xr$_$_# z?zbeAksEKQjk)2MI3UZ5Rk2XZqOu83&gFjYpJ!p{U%21m3aO-A&DmzlzAgCXFM7_Q z!y$1G$bt|5Nho~7(y{kw@FcZu`5jnv`z>1ixzTT$ruiPsQxH1^T9^LXUauZ8t;2)N zO{y0WD#p&BS((Mwscu*5tAERnE69`v=m||Ug{suV2`*D>FIX$Sh*>!`%a|NWY~HA2 zT$=D3P`d^fWSDPOORc|gyBvQ8Osrbqq(S7fa}i0>F`d4i&>6f?Qb|R~9xhMP)X+fW zrA%1DvgkLn^dd&d=C@Ka&M+13FmI{K6PljN{pC5L!!lm|Y4gOZ8N^7_N9$V08; z1`~5U_jeJ?de9h1?*9ec;TP34N97%j<$V(E85(z!`?1kspIRdeBz{|?b51)sxJPVI7aOvvmW zbIdZdEf*vQ%Y+ur_2Hr{&D0#;cW@ud-pU9__RN51GrA0LHmK)<`>D(TtA({oHVcIF z5eykJ?r?{%?j&yps9W4i`{5?O^K2YhM?Uv@`OJe% zGwBX!nx<*;I0p}zu(J|vYHH6BIDYX>XKR5C!Bcpu8=J9I%RsZ!v~<)`h>{{LhD#*w{-q_Q+ML(*Yc;%7;B-L1S12y=mp-l%GkTGKcD^@i3uv0iKt zRfxCXH5mGJbYTdm$>{i{b!Eugu5Cq%~X-&zVBYC_N2Wv#85{ME`QU3&bR*cMH?POMKF{BwfkUe1)sf~KOTZbXU0ORPVl%*K&GAutx!d|nrcnbL zMI6FfVu^-9ZVb)cObR0DVhke0!X-p3;nk6$fW+)h=*esu>j16Et^vc0^Ky!R_^9y0 zGhpm(`$=3IzVN!eGpbd7s9tu zA)9g7MkSDWZs6De0qOvE%(^N9(Mmf=#D)OH9U_oTG7+c~@a;M-_d*?DZ@y=uCoMQL zl#D8H1-`

_?xkKyB)T>=fCui>{f2+$%2zpLvjC_ zja>+eoo=CBsa=9Apd-*ucyhC<$+_AvxxYgS(_xJM4}Y>SFr@{76OAZbqS{65yMHbd zxy@&bouSrGXA=BIv;#C5Clpo)q@`A-S_x#~5o5r0;*)CVJoZrmH@LqaJtlGyx1a3$ zKnKjM1mgq})%KWZmBp^~2(cN!^Jy>VR~t4uxQa=}>A_~o#SlGg*g|dS&QpC*6h%=K z7BMyShCg>f&@@O;_;jO9#G`4k&D{5Dw;+~KSlsEtHyl@kj9yL0=4!6dND$DCn7CPe z{%}8j;y=ORW0-++k?imIPMFjs{&aU$d-sg4bk3)UJ!$MAZ_G2-8=nE12X|U)(Kh{n zgxm${=Wm<`?4S!6e0|dNl7&?x4RU>9n@!2loP8QdNS*F1d}Y`~SPgX#L#9K55Z3^E zH5y0m=k!NL4K-fKmMljJCuC%d=WZcau01! i;M1~yQ4~e-+xZXlw5EE15WUC%0000rL6!THp2l{3d3%3m`11HoFRIP1jB<6Ex{! zYyhO8s*so$3qy!oW1DlG8~H?aS?aMeLyQeT%VmcEh*@sl;xFzG?114FAV(YbB(ive zlEn;_6&`Y{-G7F@&3))H9E2;^c3Rj^fWBevOCjrTop?f^vZ z0i(pHf2AvY!`88+q1&wO81a_?+{9 zQd)lrPiHr$RvNdbv`GK5SuJ~U51|2Y`v4>p zlLb>1O2^s9h=vFtVzm@@16Ygv7W4{$(KvyV81G}^pM-7EO-4mjW&Q`e1)1))ueyhV zg)4HcHoXGy`4SUPVXB(0S`~ZT3E1+BIzBD&T|`^!P>u|^If3)6e973x% z1K{$kMX*;4$mLUWGK3I92qAFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBJ%=P)&Yt4wu z@ev>>cK3P{O0gnH!%p(4&2&@9i<_3ZB&n-trH-*aVSfZTC3{TJTGvuKV@;akfLBC| zXDyTh*>9T1gMX&3Q>mZnQ&1;cHbRws+VHt(mIL${@`*dN3?`SatgfEw-rgHZ0RR91 z;84VlZP^CS%Kf$WWc`lw^n+Lr4~)M4+_%U9F(bdJ%R;O!Q#Wy*+E3>K|j&p#Optr<&R6MIV zmO~fe;`F_;sgzNly)4TJ=u|02d)riH`&ggoTT`3X;-BBSjXB-7R&LBo-gN<{k+J?V z3Z};Ti@^swVHVoSjgj%eR6fSMtyveb%ha3Bj~V$1JTsO^nORMp=85A{5fAv>EaktG3V{fz@j4x91gk5 z%|HHg|D^Z##FawEUc;m}Pxki9h6l1JrQH+&YGPoR_Sv*>?UW!6#bYyWKYD%f-OPx| zCAXHZ-eq=Q_`1-#^Jh$rmM#h95l*hT@LREE{?T7v_rFHyJ^36i8zMN>M&;b1o%_Vr zt)2YcKs(3Szu~~0q(90L*SI#VjI>)HSzYA1e5Ppil}_JZsjJle9hN_dIAoYURZ-^N zjXMTDdAKvskuZ_MI=gXD*h?Hf#H0YiOwTnfZc&wf*n8Y*Rix zt6qC-PnWgvj+J~>g`Z}X8+`M1)Nf?iQt_wUh~dEQ6<0sqn)_1NHe`0)s&l_KP&&8Slt?=@~Q&~wrCGB*@=RONa-eR_Q zt#$CgMDYA0Gvop@b$$G<1%xEi$mRNska zxqbU6Rn~dX`lbf=-U-6$!pz|X`rt@FBO0XlpINt`qxtV_8<32rtDnm{r-UW|q=@3f literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00003.png b/tests/snapshots/nanosp/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YOOy099@t8>z6@-PQMzWpRR_Pv#g)Kss1~) zBtK;rodL@PkP&qLofS2u10p>GoM_Uf&hjw&Tc*(f;vxm6&#FRI zKvgSiA^w~cmms!WP(M;^+(Oh6X^strtj}`LEH0Jl4zNP@A~<4_o0s^L`!{xr$_$_# z?zbeAksEKQjk)2MI3UZ5Rk2XZqOu83&gFjYpJ!p{U%21m3aO-A&DmzlzAgCXFM7_Q z!y$1G$bt|5Nho~7(y{kw@FcZu`5jnv`z>1ixzTT$ruiPsQxH1^T9^LXUauZ8t;2)N zO{y0WD#p&BS((Mwscu*5tAERnE69`v=m||Ug{suV2`*D>FIX$Sh*>!`%a|NWY~HA2 zT$=D3P`d^fWSDPOORc|gyBvQ8Osrbqq(S7fa}i0>F`d4i&>6f?Qb|R~9xhMP)X+fW zrA%1DvgkLn^dd&d=C@Ka&M+13FmI{K6PljN{pC5L!!lm|Y4gOZ8N^7_N9$V08; z1`~5U_jeJ?de9h1?*9ec;TP34N97%j<$V(E85(z!`?1kspIRdeBz{|?b51)sxJPVI7aOvvmW zbIdZdEf*vQ%Y+ur_2Hr{&D0#;cW@ud-pU9__RN51GrA0LHmK)<`>D(TtA({oHVcIF z5eykJ?r?{%?j&yps9W4i`{5?O^K2YhM?Uv@`OJe% zGwBX!nx<*;I0p}zu(J|vYHH6BIDYX>XKR5C!Bcpu8=J9I%RsZ!v~<)`h>{{LhD#*w{-q_Q+ML(*Yc;%7;B-L1S12y=mp-l%GkTGKcD^@i3uv0iKt zRfxCXH5mGJbYTdm$>{i{b!Eugu5Cq%~X-&zVBYC_N2Wv#85{ME`QU3&bR*cMH?POMKF{BwfkUe1)sf~KOTZbXU0ORPVl%*K&GAutx!d|nrcnbL zMI6FfVu^-9ZVb)cObR0DVhke0!X-p3;nk6$fW+)h=*esu>j16Et^vc0^Ky!R_^9y0 zGhpm(`$=3IzVN!eGpbd7s9tu zA)9g7MkSDWZs6De0qOvE%(^N9(Mmf=#D)OH9U_oTG7+c~@a;M-_d*?DZ@y=uCoMQL zl#D8H1-`

_?xkKyB)T>=fCui>{f2+$%2zpLvjC_ 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

_?xkKyB)T>=fCui>{f2+$%2zpLvjC_ zja>+eoo=CBsa=9Apd-*ucyhC<$+_AvxxYgS(_xJM4}Y>SFr@{76OAZbqS{65yMHbd zxy@&bouSrGXA=BIv;#C5Clpo)q@`A-S_x#~5o5r0;*)CVJoZrmH@LqaJtlGyx1a3$ zKnKjM1mgq})%KWZmBp^~2(cN!^Jy>VR~t4uxQa=}>A_~o#SlGg*g|dS&QpC*6h%=K z7BMyShCg>f&@@O;_;jO9#G`4k&D{5Dw;+~KSlsEtHyl@kj9yL0=4!6dND$DCn7CPe z{%}8j;y=ORW0-++k?imIPMFjs{&aU$d-sg4bk3)UJ!$MAZ_G2-8=nE12X|U)(Kh{n zgxm${=Wm<`?4S!6e0|dNl7&?x4RU>9n@!2loP8QdNS*F1d}Y`~SPgX#L#9K55Z3^E zH5y0m=k!NL4K-fKmMljJCuC%d=WZcau01! i;M1~yQ4~e-+xZXlw5EE15WUC%0000rL6!THp2l{3d3%3m`11HoFRIP1jB<6Ex{! zYyhO8s*so$3qy!oW1DlG8~H?aS?aMeLyQeT%VmcEh*@sl;xFzG?114FAV(YbB(ive zlEn;_6&`Y{-G7F@&3))H9E2;^c3Rj^fWBevOCjrTop?f^vZ z0i(pHf2AvY!`88+q1&wO81a_?+{9 zQd)lrPiHr$RvNdbv`GK5SuJ~U51|2Y`v4>p zlLb>1O2^s9h=vFtVzm@@16Ygv7W4{$(KvyV81G}^pM-7EO-4mjW&Q`e1)1))ueyhV zg)4HcHoXGy`4SUPVXB(0S`~ZT3E1+BIzBD&T|`^!P>u|^If3)6e973x% z1K{$kMX*;4$mLUWGK3I92qAFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsB6P)Nklyx>C8e`N|{6{}7wdQ?i84?kne(FJuG3EjKZb-p-q%Kk{wPIe* zp8-NK-Q!Ov%@rXvJH@AKrjsIGoUB!sB6Sg6siCbS{AYkM@=h0AEnBN}#WQKi0Gu;g z+-spUk?mbG-1xETZdPiydKOm; z7PT3mH-aoDYcbtYjUvN|UCn%q&u*xocY}4n@Ri33ZsWfhcka1&d#bqgZ@>OfYCHH3 zz{xTOA4x7j-PJ%49oH?}Sk{Z*0viR5EH&nepC^ka!}W)7r+eRU54yLpnt*#|dpx0; zg&dxc)*cUO>8r=U-P>0oU!6{743?sM0RR9100000000000001hWqtvP?}B(zZz_)f O0000gRS` zb7L-Lr+RiRuI#5_UaISZwvF`Or$wCRoSWGDBJw-9ytwabTCUQEpJ`B4RKg`S7R~(A z#JPMz9a@F0oH><&i#FJhp9jBm+F7~@QM-}ocTuRr8hEZuBfI_pwvtQYOIKBB^ zn=+T;${E}&4z)VA9` zFnTX2ruMnaZOgEGQ{L3fWiG`S@OooEt?5a1>Cgz+owDW*f~S24#QUAwvHBN5otf@w z0f?zRDDz;tnQOoy7yll(jls=}-z<06gF+6KiOt)O-g3oGaqB!>=|b9Rmw0@Wvn8(6 z`!cXHQ(A2lx>WDK0Wp~A9<$I>-DVwrB)S&>000000000000000008Lb4@J+FLFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YOOy099@t8>z6@-PQMzWpRR_Pv#g)Kss1~) zBtK;rodL@PkP&qLofS2u10p>GoM_Uf&hjw&Tc*(f;vxm6&#FRI zKvgSiA^w~cmms!WP(M;^+(Oh6X^strtj}`LEH0Jl4zNP@A~<4_o0s^L`!{xr$_$_# z?zbeAksEKQjk)2MI3UZ5Rk2XZqOu83&gFjYpJ!p{U%21m3aO-A&DmzlzAgCXFM7_Q z!y$1G$bt|5Nho~7(y{kw@FcZu`5jnv`z>1ixzTT$ruiPsQxH1^T9^LXUauZ8t;2)N zO{y0WD#p&BS((Mwscu*5tAERnE69`v=m||Ug{suV2`*D>FIX$Sh*>!`%a|NWY~HA2 zT$=D3P`d^fWSDPOORc|gyBvQ8Osrbqq(S7fa}i0>F`d4i&>6f?Qb|R~9xhMP)X+fW zrA%1DvgkLn^dd&d=C@Ka&M+13FmI{K6PljN{pC5L!!lm|Y4gOZ8N^7_N9$V08; z1`~5U_jeJ?de9h1?*9ec;TP34N97%j<$V(E85(z!`?1kspIRdeBz{|?b51)sxJPVI7aOvvmW zbIdZdEf*vQ%Y+ur_2Hr{&D0#;cW@ud-pU9__RN51GrA0LHmK)<`>D(TtA({oHVcIF z5eykJ?r?{%?j&yps9W4i`{5?O^K2YhM?Uv@`OJe% zGwBX!nx<*;I0p}zu(J|vYHH6BIDYX>XKR5C!Bcpu8=J9I%RsZ!v~<)`h>{{LhD#*w{-q_Q+ML(*Yc;%7;B-L1S12y=mp-l%GkTGKcD^@i3uv0iKt zRfxCXH5mGJbYTdm$>{i{b!Eugu5Cq%~X-&zVBYC_N2Wv#85{ME`QU3&bR*cMH?POMKF{BwfkUe1)sf~KOTZbXU0ORPVl%*K&GAutx!d|nrcnbL zMI6FfVu^-9ZVb)cObR0DVhke0!X-p3;nk6$fW+)h=*esu>j16Et^vc0^Ky!R_^9y0 zGhpm(`$=3IzVN!eGpbd7s9tu zA)9g7MkSDWZs6De0qOvE%(^N9(Mmf=#D)OH9U_oTG7+c~@a;M-_d*?DZ@y=uCoMQL zl#D8H1-`

_?xkKyB)T>=fCui>{f2+$%2zpLvjC_ zja>+eoo=CBsa=9Apd-*ucyhC<$+_AvxxYgS(_xJM4}Y>SFr@{76OAZbqS{65yMHbd zxy@&bouSrGXA=BIv;#C5Clpo)q@`A-S_x#~5o5r0;*)CVJoZrmH@LqaJtlGyx1a3$ zKnKjM1mgq})%KWZmBp^~2(cN!^Jy>VR~t4uxQa=}>A_~o#SlGg*g|dS&QpC*6h%=K z7BMyShCg>f&@@O;_;jO9#G`4k&D{5Dw;+~KSlsEtHyl@kj9yL0=4!6dND$DCn7CPe z{%}8j;y=ORW0-++k?imIPMFjs{&aU$d-sg4bk3)UJ!$MAZ_G2-8=nE12X|U)(Kh{n zgxm${=Wm<`?4S!6e0|dNl7&?x4RU>9n@!2loP8QdNS*F1d}Y`~SPgX#L#9K55Z3^E zH5y0m=k!NL4K-fKmMljJCuC%d=WZcau01! i;M1~yQ4~e-+xZXlw5EE15WUC%0000rL6!THp2l{3d3%3m`11HoFRIP1jB<6Ex{! zYyhO8s*so$3qy!oW1DlG8~H?aS?aMeLyQeT%VmcEh*@sl;xFzG?114FAV(YbB(ive zlEn;_6&`Y{-G7F@&3))H9E2;^c3Rj^fWBevOCjrTop?f^vZ z0i(pHf2AvY!`88+q1&wO81a_?+{9 zQd)lrPiHr$RvNdbv`GK5SuJ~U51|2Y`v4>p zlLb>1O2^s9h=vFtVzm@@16Ygv7W4{$(KvyV81G}^pM-7EO-4mjW&Q`e1)1))ueyhV zg)4HcHoXGy`4SUPVXB(0S`~ZT3E1+BIzBD&T|`^!P>u|^If3)6e973x% z1K{$kMX*;4$mLUWGK3I92qAFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBZ=3?r2II?mhcXQUCw| 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_accept_legacy_1_0/00001.png b/tests/snapshots/nanosp/test_register_wallet_accept_legacy_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c9b7dc7275b4037793c0e0919b85ef6067a6ff13 GIT binary patch literal 990 zcmV<410np0P)HAF$LD}k}QOXp*%+opvO5}4aF(^^p!MNt$*QEcazaqm3O z*4l9#{dIqvqZ{F-=qfx%E{Db{dS`fN%aTL@7=Xc1P`RE@%G%_A~tFd_+j2L$f zy77e1gOj3%*L87pV*Ab?+z%sRhXz`Enj_b1J3B--xP6|OJQIiTQJ=x$({AMwqT^S9 z5luRte%+0Jx{UeyO#^MTkAba zU~&5sFcj&~liQ3lS+gMcOh4;6vboMoLq&4wrHMti5@%X5_EBuRo_2B z58VA0H%ME~Tf5Mvd2pMj4*#I`7;3m-odcra>ECf1-@RwpEb(FAK++HCZ)Sc(n_}{n z(JzXk_->L!s7#I@5aAoaQFODMQ z!=yH&9>mW7b#VTg=VoK6fuDvFxP2j4+%CFh`*EJPSul2Ll>XG-HY_#xTf3OFkK27E zeA7l}55YDij))SIA_l}F2tg0}hMJ!?9%>faX;u~Y)C43zCT!Ju1=BEGaWiAYYT=-x_M4qB#^Y5~Ytt>&pr6x90MzP=j32--ZzC zivDJ54xXe|p(k;ITytI)~J1vTXml+FS%m6rUTo$>k(#J<4e9&`?{%TV*l?OU`QVvrEJuE~E+S{?v{i}ZV! z6k+JM3zJb4itYA;hY8D|A`N=APmBXgXM+zr`*Pga4VBUCfjP*jbwyDWMNzz)zx9ez`gqk-ssI20 M07*qoM6N<$f+C{gasU7T literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_accept_legacy_1_0/00002.png b/tests/snapshots/nanosp/test_register_wallet_accept_legacy_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..037a81b226e3b4fcbd3116014399ccca4d29f532 GIT binary patch literal 749 zcmV00002Mc7BZCa?UBG<2a~H zfA&E_q$vKAe+aJOtd_E4u>w*K39q&x31M>1B$1cwa z$#mGFf!3b;$XO0~2cME0u3D3>JDAE`=f2G+wd&*7IY4za`FyCpx%%Bfj5^ZLMZKn; zHmO3mCWqHFry$!HY9x;V3XKPY(#R3w!LMGi;-2Y9qe^?&hL^NMP_apQy{DOEY1AhC zmiBAD0@n_ZVN}DjL!B*Cm#O-8n2bNGMHR(s(K@7L$m6}7zL}pWGdmkZpDSF`F6<8YH01%ucQXtwN|Sk)LEdwkr- zo5)Qth$|Nq%CAQ0jxDmwC!UJ2WSqgEUrhI`bsXX&S`qqXjX`OE>MAsSKeKOP$=oqA zN@%_28soTr4V9I0P~$?}{RyGrWUG@o`x9HC11zpiPhYk1hE&>419T(@yVaX8(4Iu* zpqD)`;o7azZ8iYu-Y5hbiwqkq<>|{SLu$Ul>#NOeSwxDGm)WerB>M-%a*yC zX)oa@#xo}>!FV}pdD-W1j{%BBISZi|d{Ppt@>h=nN2UYEC_vOjP7s+bn0J= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_accept_legacy_1_0/00003.png b/tests/snapshots/nanosp/test_register_wallet_accept_legacy_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YD-I9Ag~E z0oQPw1B{5Ku)A%X=ZQV?7~lyG9tx1xUH%lqt!MxEX8ddq(l&b_PPG`WXqQC(Hxs7b zFCacrAkvSn>#GL^>%d1LF$>wjPsE;U7uuUKcFJdSVd|=lllWl0T(qdGU44ATQRKtveG(kzVhXF?3wbulQs!?>V!rjpRM`8f(9ZH3{Cb2JGR!*}rL;<`W62p_+aP zf3>%s+6g`~7susK{^IO!WQffvJynw*76>!80BNY0qBN*IiFnuaMKQwJy{7FbZq1F2 zaMvy<-tyuxbrkk0MB{W7P{Wt@%M|`%x~Fg2hH@Fwu0}<^Cy5Xh(1E7M#L3pq`&96y z2GCT@Rf;rNyDskDzpsklm2EH!{+%#?B1WH9!Q$n~g5)lnuJI{lKS#9z_J2Y$(6%39 z+rQ*I>^Fe6WN9kq*fMEEbk?8+tq;u#%R6{OH?K3hQ%u;5GpB~8KRGoT_x@iIucbbN jaZ}GvP)*Y`&1dlsdH;aUW$tj~00000NkvXXu0mjfVc+jM literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_accept_legacy_2_0/00001.png b/tests/snapshots/nanosp/test_register_wallet_accept_legacy_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..f9f7eb594ed8d25058f73364cdbdda58346d6864 GIT binary patch literal 1027 zcmV+e1pNDnP)_dj#=M%1Qgcgr}>v-fC?u{%cnr*{qc{By_M`_VrhwCDL?bF&8NfOPEQx<1AE z|7k~Q^x0Zq29`ZtMAzqQ`2+_bS1445unH~Mm@y{VuZ zZcx-EJSF2@i-z79bg7d}LA?X|A+b7gNlbR+cFiIl^wxcp)f6@{^8948OG=&+c14fB2|BhC$}x{<-Wu3GUQK;eo+)f!I9bge8B#+ z%)oviD{5dyZCIP}L#OMK+lY1V=)rfOZ#-1>+tFSl6Tm)1`U-lByAIBDZUUS_>=ox( zTC(ACEU|X1deE)=)Eik%N0%co8*)A`N4M1UxPeeD<=B|=Dz6W9s@^E?Qdf-HIB=ek znE>z#Vs9ziw9%>|yFOU2G*)s;3+iA=HvW!fmM5}zrXjmGvdzzWhJt2*ITLW<=Je@Z z1ba+4re?OZ8GuiK+X{G-rJ8~3R%U1q#d!3&0gb=t#z=z{C%n7z;Ge<_az%d`N~kOP zi>W!-NoAp(I6ph=UM~b_Dx9cMpMYEp|2J`w;&VOeZ3RoOaN9c>9?bTqIDjPx$XO@hSECG ze$q<%`bur_00&ag-p#7`e$-N{D2n2X3H?GwEgc)&kbzjJo&~L@`nQ&biq(atmBdmh z2@1WI5Q~lP9$Ub^6#vSSB!N^3j8%KLi=p;i`-q4eVS*GfI$(U*I0>$C&QDrJvi51$ z))lMSHWK$vs18sc^ZutLB1&W?Q8mj^88TO(sAkNL$#iFw^ xF9ENLH`Q@#57^Ai-v_)c@45Diq9}^L&Mygwg(LQZ$TR=|002ovPDHLkV1iMy^=JS9 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_accept_legacy_2_0/00002.png b/tests/snapshots/nanosp/test_register_wallet_accept_legacy_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..4d184932cf60d1dcb3d0e8faeb611aed99beaeb8 GIT binary patch literal 755 zcmVfFbik#(>3!~n(v{PUrc=Zz+{}3Q zgb*z>WSk}yf+?sdpbvrB5ldoRQB!s0agVh;z3_M#Y061=05q3f1VfCoINdMa)tf|C z0FAjl9?uf?NZRM6rWsr~9ER!fi)_M$JKdN4^KNXKNcY>YYO0iHb7Lph+AFL0UTx<+ zaajY0eA)t&(@Wm_N`K&yAX@3u~v>W?S!QK9LwI zMRcKA?@XptV9I5+*^l4dBY{~IfPjfS2D4_Lryni+e61L1$}{S9D00000 l00000000000002Ifo}w|_QOQZhKB$E002ovPDHLkV1ga>X)yo* literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_accept_legacy_2_0/00003.png b/tests/snapshots/nanosp/test_register_wallet_accept_legacy_2_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBZ=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjff+)&{O@Gzb z@{VGx*y{tzcysjW&|qiftj_@JIbf*V#ayvn1{j(diaQ??fvv{MlCE??{#DuYq!wWJ zjrJ+%8~^&ccL=bT*?n=*gC7}ypuCx^x5yW68QCSFBxNtIJ5Q=oK=eMDuu%=6e zNACY_K2m)$mons~Wb|0>{xWU?U53OM4@Z|F>znfD^Ctnmir5SSu$cqa0OFv;@=;ja zja^V6Qjs3|?D^pw5P)>De*pjh000000000000000003Yozi^XV@QF?avH$=807*qo IM6N<$f>%`^5dZ)H literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_0_0/00003.png b/tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y-Fl_{pTEAiB%)wC;(1g?Ft!Da3DFJr@UHOE~ z(NC$o1&;=5o&4eL00UMDFvH}$P6voJ!|J!uX$PZi z{&X1iifTA3g-krzLK`B=S|)~ifXZ5t4JT9tG~;Eg6tFUhG4SSLck^x8p)eHLc?YN< zRgI-$mi4e@;9bdEeh1VdY^TwPR3@6ou`thEgv~9{)6GfPDd^;ktiFDdMx^U4uTV;^ zYdZmZ8(_Ar6>USY4d@&&3P1cisqo!v24>xctxqw%Nq=V+pJ<;$KGOR|Q54_H@q@fx z$&^_Qu1=uGN~Qv;IeUGdOzN?Os7Wl$vDSIwMH*o#tveN^sti(j5dU2 z(xielgDGM3%*nK&4p81avV7BF@^=hwa@)-_yKP}rZwT7~sSDg&(KKQ+k=EU~gVXK@ zs)p(=%A_n!K@#vXM1s9PhnmMP@yj+Y>i~v3yx+{rpa01FZRmx}c_H8R$ih@0(xXc3 z#BG;W(#!4|Ffq3U%(ars6Kd-^8S;Q_n*Xi z|H^m5y$$#LC4b^mTO_<0YesaUjy9L8iIBNqNwb*pCz-u?go$jcTYWMcD$n;X;?rL@ zWp?f0wKk+lBy5#?ki?eTIEa*!gdJd8a-S-yOG-A{bS5XtSC_|ZW%gV$!zw4w##?hi zF7NzlkQ?_=5ZJm*k3Qc4fX#QqGK zWTBgyWz3FH_JCyYHDUBVyTf*aF*sp)D`Wo=D=w$jfY#!JPEi!aXOsL>9(-4lW<4V@ zkW*B3o7s@4a=V=cs?rB^+u}15Hd!*1lJPZ;-et0zQBKj8;9GX@=vIuh$!sHE3*(wM znGIEy*R!4~1qO2HcWgpba(AwJ2b@etNjd-r5#K9!xK;Mzk$suVXVAL5s@?@~(mRrg zxcD64&fQVxrOU$#czCL$vCU57_3uJ<9K=TRx1*Zd)K}(jl3dx8ig4$L&Dmz#`Uxq| zj1L=6X|3T!_*!|KQ?xy_I0LxmskH=Dl+~H^>McAqX1}f7kOvLg+_XJv+`+(iLC-{7 fQ4~c{d@6qdK47WcF0%YF00000NkvXXu0mjfzDD!O literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_1_0/00001.png b/tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c9b7dc7275b4037793c0e0919b85ef6067a6ff13 GIT binary patch literal 990 zcmV<410np0P)HAF$LD}k}QOXp*%+opvO5}4aF(^^p!MNt$*QEcazaqm3O z*4l9#{dIqvqZ{F-=qfx%E{Db{dS`fN%aTL@7=Xc1P`RE@%G%_A~tFd_+j2L$f zy77e1gOj3%*L87pV*Ab?+z%sRhXz`Enj_b1J3B--xP6|OJQIiTQJ=x$({AMwqT^S9 z5luRte%+0Jx{UeyO#^MTkAba zU~&5sFcj&~liQ3lS+gMcOh4;6vboMoLq&4wrHMti5@%X5_EBuRo_2B z58VA0H%ME~Tf5Mvd2pMj4*#I`7;3m-odcra>ECf1-@RwpEb(FAK++HCZ)Sc(n_}{n z(JzXk_->L!s7#I@5aAoaQFODMQ z!=yH&9>mW7b#VTg=VoK6fuDvFxP2j4+%CFh`*EJPSul2Ll>XG-HY_#xTf3OFkK27E zeA7l}55YDij))SIA_l}F2tg0}hMJ!?9%>faX;u~Y)C43zCT!Ju1=BEGaWiAYYT=-x_M4qB#^Y5~Ytt>&pr6x90MzP=j32--ZzC zivDJ54xXe|p(k;ITytI)~J1vTXml+FS%m6rUTo$>k(#J<4e9&`?{%TV*l?OU`QVvrEJuE~E+S{?v{i}ZV! z6k+JM3zJb4itYA;hY8D|A`N=APmBXgXM+zr`*Pga4VBUCfjP*jbwyDWMNzz)zx9ez`gqk-ssI20 M07*qoM6N<$f+C{gasU7T literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_1_0/00002.png b/tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dfbf1104da723a17c6b32d65ed64b4c504464ac1 GIT binary patch literal 782 zcmV+p1M&QcP)lH2iViv?u5MUU?kl*Jsm-~?$F0ioQIn{+&_-kkmPCe}JO)m^=0 zo;0XVxFmC`3_twfN!G`o)zkBSyHabtuVg-?AF+D9m0**cHhoVrv>JD>la8{&P#hCxw$i2 zI@l#q%9Vtoy#u27!@prR-hF21EV1F-Kz85C-@^Qe4$a9|&OQJDd^am^K}*mxGtNt) zKNH!VTS~{SCX~hcB%&ud&yh%#9$iYu?v}CY#$i9iJh8^(hz5ufwzN_TD4xhPZPo`e z^XS#r!7zWPt8?XosB~UQ-|?otVas6}lGZD}an9y2Am*ViQ3?vN6=1f^4Q%L)#2TNE zaTC4>CUND0LiyDw>Ai(_`NUH(mW)%FjEm)wwU3K^MC-PGUZc=EU^okA>{s$Ftf(u7 z?-Ek4wa&QiUqg8%SE^iy)1MHGAlseHIiJ`H9bj>DGJVCy2U2M#9gs*4rp;TR=u9GW zGRhv9a7~-^HXnfU-dzY7lMEkh`|WBPU7-DDGJFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YD-I9Ag~E z0oQPw1B{5Ku)A%X=ZQV?7~lyG9tx1xUH%lqt!MxEX8ddq(l&b_PPG`WXqQC(Hxs7b zFCacrAkvSn>#GL^>%d1LF$>wjPsE;U7uuUKcFJdSVd|=lllWl0T(qdGU44ATQRKtveG(kzVhXF?3wbulQs!?>V!rjpRM`8f(9ZH3{Cb2JGR!*}rL;<`W62p_+aP zf3>%s+6g`~7susK{^IO!WQffvJynw*76>!80BNY0qBN*IiFnuaMKQwJy{7FbZq1F2 zaMvy<-tyuxbrkk0MB{W7P{Wt@%M|`%x~Fg2hH@Fwu0}<^Cy5Xh(1E7M#L3pq`&96y z2GCT@Rf;rNyDskDzpsklm2EH!{+%#?B1WH9!Q$n~g5)lnuJI{lKS#9z_J2Y$(6%39 z+rQ*I>^Fe6WN9kq*fMEEbk?8+tq;u#%R6{OH?K3hQ%u;5GpB~8KRGoT_x@iIucbbN jaZ}GvP)*Y`&1dlsdH;aUW$tj~00000NkvXXu0mjfVc+jM literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_2_0/00001.png b/tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..f9f7eb594ed8d25058f73364cdbdda58346d6864 GIT binary patch literal 1027 zcmV+e1pNDnP)_dj#=M%1Qgcgr}>v-fC?u{%cnr*{qc{By_M`_VrhwCDL?bF&8NfOPEQx<1AE z|7k~Q^x0Zq29`ZtMAzqQ`2+_bS1445unH~Mm@y{VuZ zZcx-EJSF2@i-z79bg7d}LA?X|A+b7gNlbR+cFiIl^wxcp)f6@{^8948OG=&+c14fB2|BhC$}x{<-Wu3GUQK;eo+)f!I9bge8B#+ z%)oviD{5dyZCIP}L#OMK+lY1V=)rfOZ#-1>+tFSl6Tm)1`U-lByAIBDZUUS_>=ox( zTC(ACEU|X1deE)=)Eik%N0%co8*)A`N4M1UxPeeD<=B|=Dz6W9s@^E?Qdf-HIB=ek znE>z#Vs9ziw9%>|yFOU2G*)s;3+iA=HvW!fmM5}zrXjmGvdzzWhJt2*ITLW<=Je@Z z1ba+4re?OZ8GuiK+X{G-rJ8~3R%U1q#d!3&0gb=t#z=z{C%n7z;Ge<_az%d`N~kOP zi>W!-NoAp(I6ph=UM~b_Dx9cMpMYEp|2J`w;&VOeZ3RoOaN9c>9?bTqIDjPx$XO@hSECG ze$q<%`bur_00&ag-p#7`e$-N{D2n2X3H?GwEgc)&kbzjJo&~L@`nQ&biq(atmBdmh z2@1WI5Q~lP9$Ub^6#vSSB!N^3j8%KLi=p;i`-q4eVS*GfI$(U*I0>$C&QDrJvi51$ z))lMSHWK$vs18sc^ZutLB1&W?Q8mj^88TO(sAkNL$#iFw^ xF9ENLH`Q@#57^Ai-v_)c@45Diq9}^L&Mygwg(LQZ$TR=|002ovPDHLkV1iMy^=JS9 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_2_0/00002.png b/tests/snapshots/nanosp/test_register_wallet_accept_legacy_v1_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..878bfd46ac20475fd977c0b85a8109643602d543 GIT binary patch literal 773 zcmV+g1N!`lP)j4*&p9W3UVAHjCmettdAQn!Nv& zEym4p>)c7_U63u-c}OL-hz05Tz;7Vz_Mt+%MZ01gx?wbGI;R}A4f&%{7O$g452$~< z^WwnKw0Vx%%^bHr<+k{d`=EJ6+ow*NS0;eol23iHzMw6h6E!s#woZ@Dw%yfwBC&K8 zF@@&6vzStWOAf0;J^pa7Bqk{V0T+1=t{QzFJzDztTrtX&r`LHiAb>az?lV-(++4Z0 zA@m90gU;Un@pcVu;@brwEe9Nb#iNpZHJ->^=Iza=-4vzyqZ&$%$YT>A+e$Vc*sb5k z7H2l+;Ng5q6?!IvAR`C2vLU?n9qxzW6P4#m=qrylTfg?|>k*@4^n9pfMbFSNqva-c zo`kD(@2?5W>f|>|?YWch9{8(UkAWEp5PKpXx&2ot^jk$gMR&G%lxe&1JI@zmlpud$ z2}t@&pWp5sT={#zEXLojCA%?vxR0F)DEhw$?DZ;>)HOiFdEePBs`R^Ma;QEn$8i=n zmtVo=5(GZ<7qKUdeEFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBZ=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjffQ@-BVYspA478kA)Fe@{tN5Q(THDFFZg0001RoG(XNrIeIX&beNb z+t;170(}`QB!8$yVV4oR-5X7hC8dGvEDh)q3P4(Qg2pgA_HYSSk zaVooeAQilW+4qLd0CCMp{nyI45KYM;mBlq&lux!Fyty5{2}x0qL9j3Bb6R~{?UNIN z(s^Z1VHL5gJ48+hz0O-VNRKxDiNFVu_(vgNXE4a{!B)-qLpc0oLh@~;BDB40%*F0gzoCxgs`4`KiS0000000000000000002+;ujA%7u?5| R?;`*J002ovPDHLkV1nIeJ{bT2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_0_0/00003.png b/tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 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 bMRACKuT^x7h}6gV00000NkvXXu0mjfr~B&D literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_2_0/00001.png b/tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..91a9f0afa436c3feccf439cffc0b700b15b0c5d9 GIT binary patch literal 1058 zcmV+-1l{|IP)4bF!o4XC?dCnH4K2BngKeP&Q{#&72AN}JS<8?mJ+}s07fD*fKl`kRx zFHIDVK8giYL8=df=z6}w$JqfIp~&qV8d$=HErs-Id1QoFfHIn}!?WBRecILO%1Of< z6gGsHWV|bAprMn}L^1`<2H-;?I&w*jHe@!9M%>BPT*_<;3L!iJ(vTehN;Qg`)BU>< z%d7x6=X!t4I%p+1GcTL9Oxm!rzdowD{8X0NgeR_aKljh8(4+|W+jP^gQJT$_om?tM ztY~EDc~41GIs*5ADE#3+!B)QQLa?NvN3JhCa@+E=s1tsdF8{>QZ!{W>-v;{>WS+rM zW#uH}@!;`^N>~XKwZ)c8ex%Au7mBB94Tw!~YfYH5CR7VyYwFeXuK8~gl@mwxB6dAc zHC(@!p_rB8bdczSn%5&IZfQB931(Lqi~IyggE*nA(~B|tm-VkVfH3i>73`;FKKpwmdB(fD9!zYT@y&%ATN zkDj9;dvl(JtT#y*pjT+;1=WAz^f;skag)4(s0xwGAR*42qA)otTEPc=Ybm@AWe2=YB*?zs1l7wPYq)!ghsIn*^Q{|aQ9jQ{C2RC-^T zt^`W*GKjA0D|~_ju&YpYn_VMYKxj89okjBs0N#`X&h1t2TQB6Uf@V~m;)ZZF<6Qya zS_ouI-;X5iCINe)ym@$Yi)Y5^8wOSkmd;}x$F=CG0Wz3zj;@$(z62O zoa6CCmT*K8pO>m;SmEwzm_C0!n{ehz_j&)k8mlJC{kB`RRBE$1*vU)n$|}28 z9GHgpfL7w+pK*n^y%0=Mbj$0DPv5qDFXIM3WytU7eL@KNZ%jJ{;Q~=I2Q}3mIhBH{ z22j^J1lfbM$`-iXZ>GA-(HXsc^HH!46}`DzSSZ^7e{{;P%orA@0jGgOL@y5p%l6*6h? z*`@3^X6TF9T!Nosrj(MNLuCRskGAxUY=dfSlKkEhF)5yfbPDS0-G1J(;S5fwvyk1+ z`qYDQS1l+HSKPb7FMA$*GQ~kH9c^FdA2|WZ9oN%_I(|HVIBzfqAIv>jh+I^h%sE(! zb??G&!a?lGtaN@=CtcOjaRzlyimp|+zm6;fRE^ZF-I?9JI=G0dVtuupR_4@#ETsqn zaXLN9RDgqccje!nQaRIYEY&Q5quNIo-N5t=MlxYJsDPc)BdF_mA9XDtV%&m z1S?!pI0bf2`yl8oiA=RK1ua|wP36pBEqVi+E!nyP;$s`HYXa4!J^9l%;RFwG4~h5N zdBi6CpIP`GkUnWG6G8|fgb+dqA%qY@2qAFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBZ=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjffo|^-QqH+t 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 bMRACKuT^x7h}6gV00000NkvXXu0mjfr~B&D literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_v1_2_0/00001.png b/tests/snapshots/nanosp/test_register_wallet_accept_sh_wit_v1_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..91a9f0afa436c3feccf439cffc0b700b15b0c5d9 GIT binary patch literal 1058 zcmV+-1l{|IP)4bF!o4XC?dCnH4K2BngKeP&Q{#&72AN}JS<8?mJ+}s07fD*fKl`kRx zFHIDVK8giYL8=df=z6}w$JqfIp~&qV8d$=HErs-Id1QoFfHIn}!?WBRecILO%1Of< z6gGsHWV|bAprMn}L^1`<2H-;?I&w*jHe@!9M%>BPT*_<;3L!iJ(vTehN;Qg`)BU>< z%d7x6=X!t4I%p+1GcTL9Oxm!rzdowD{8X0NgeR_aKljh8(4+|W+jP^gQJT$_om?tM ztY~EDc~41GIs*5ADE#3+!B)QQLa?NvN3JhCa@+E=s1tsdF8{>QZ!{W>-v;{>WS+rM zW#uH}@!;`^N>~XKwZ)c8ex%Au7mBB94Tw!~YfYH5CR7VyYwFeXuK8~gl@mwxB6dAc zHC(@!p_rB8bdczSn%5&IZfQB931(Lqi~IyggE*nA(~B|tm-VkVfH3i>73`;FKKpwmdB(fD9!zYT@y&%ATN zkDj9;dvl(JtT#y*pjT+;1=WAz^f;skag)4(s0xZ1=Mw{J_Rzjod4=}R7PL9 zt^`{0GKsG1D}9m;u%l3^t)Y>3Kx*GII*Z#Q07O$ZxZV$=Z=+CECEW;v;-+vo<6Q~i zdI)5aE>$|GplU!~bYw^0BxVhTrd7l<-rDKK_6L}zlHBfqR>%$k5VI_v?ia7>Aw45N z_Bn1(W(a2_@qQ_E!wPqI!}R{^S%fRsbYIuc>t^VpTyMKgOQUu+2P=8&zVgbh)p*_m zI}Xf^bHH8l>0fb$mmLVE7<%OR;?uV*Kg+noyEOSXMxPKu{u|SFLAXFv%tlS!&+JM; zRRfs2+XSgWdSwe-?)KNJTCpQ?D-)p%mUpcvF?q*6N;>bpf@>|V^1iAJItjZ?a=o00 zwK8bvd?ByZ&q0T+l4)6wQ(Il*zEKI{%7-}^{sgaQ^oNcCqqjzLWvCP(ZRe-*(wIq; z@4l7w&J2AKn@jRj%#>2nJ_H@GxV5csWD87Vm*n@Bj7#}hNKZk1+U@5po6cZ|It!_G z)~6nfJ8D6BI0)~8xU6|`XPS+AYis+I|H%$0Zo77C>iG72bACY|{9&G%g~&w^WcI;Z zc{03iaiVqlw{-?u;;}9GxUt$&$jw8{=4s`$(1fLM2ukxENu=2)I?YoRv7^Y~smVMnJx8 zV67fE-CC3J`nhJFoD2x}4q3J{8+{S`pG-IhlpXfMgb+dqA%qY@2qAFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBZ=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjffQ@-F?6sbc{V6?K!m&ySt#ieI28Y(fA400000U^`!qZKae#2r|s24@3YJG7ik?Zi7Z;Vw$2w}^!MVPOhz+x^XXIV>{@+=-n2a#Nxk}Tq6VLjnG zPC2;pGgS1&YZ-+Vd3`|{f9x&oTI{5q-W@O=2Xt-!Nnde1G0?R$x){uc@~!P9T&sSN zb=nX54k&%1=pVbXwHs2qE3jxk@6mw?(j8#5cJtUN4Mv2;GhA%{N+~PV?dVlV%7Lsl z~O~?iaJdL}1A)mZ1iZ50*x-UK}vMg=KAuA&gkse5=Ra z(evSf3@KHTk+sw#Z+W1jQ(kB*L@CV&B5XInKu1RmaPqYj^2VI_aIcOAICcgM^9o0? zh?y*=rS6PvUU3bb+3)<8*?bEa%(8Pa!m|MY0000000000000000000U$S-2d^jFF_ Rb{zl!002ovPDHLkV1l!JFqHrR literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_accept_wit_0_0/00003.png b/tests/snapshots/nanosp/test_register_wallet_accept_wit_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y` zm9nrJvL3b!yeoOjuYg*FaT>J<>sa%+UzsNtVYwwbtxm#DK__Qq_4Si9B3y5IfwJbh zv=e7<z;%sPh zQ+=|;$;mh+p=!Sx9%!B9rF^T-_KS6xeAG047R6a|{XKG`Ij=<)qN&zHu9am&SVuB< z5W50$q=Ye{M&b}`%aky3a&=nnBrJbUDU+>KzOWg?aF}on4eM>6aGLX3ih!Y0!g-nT zDZUD|AX0@IH+%g5BZZxqRk7MCE))Ko5GTVBU0l8rDbExVklM@YdoWANbxQB64 zr)e9^gP2t2+y_|Cs^%j6;j0-DqwEilhfHpDsJaQK4J9kg4#007`r2ws*0fAq$tXz6 zr5x*;WutcGv@nU=o^T&Pe(F>ZTtU~4UhZ|m#Sgi^1CZMt-Gt+uHUEU13@o150T%qE zymA%e%td}r7~l5wQ6nrc#Ea5sMmg!dDt@`~$%K$vFI~;mzVM(uw=?0Y^zFaBpHf=m4pV zRP0>XzQq4|t3Ny3dw14S9m6-V?tBs~MF6gc!;~Sv2urbv&# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_accept_wit_1_0/00001.png b/tests/snapshots/nanosp/test_register_wallet_accept_wit_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ef611217bef32c7b5ea1d9ed8cf33958cd277679 GIT binary patch literal 1035 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_accept_wit_2_0/00002.png b/tests/snapshots/nanosp/test_register_wallet_accept_wit_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9e49cd05db6b930c31f4678c0682701615128c3d GIT binary patch literal 734 zcmV<40wMj0P)Sz@<{~yZ6b^L_lm7-XUB>?m8>+ou zm|h6f$74#2L$qFZr|eiKaXE~TsJUIBqO^?>Dl)BDy7(iLb%(<$y0Zf3l5 zLbw(NGN4JqUlA`r7Ar~Bkxy~)T5 z&@qq4gDhc0GCnUg&9K75VOSo&kxf`Q)4lAU=gX#vdcPf3t(Dqr9_-|`_k~qyRxCiutPk+G`PP-5+QFP1o#b<0=zL$A}pEBfk^gbbk{5RUCAn?4naQAPX`dy{g zPTcaiVR1IKh0o@hb;>QsUaHGJ^Yj+u>_e9^u4JuqSH(bSM1U@0?j=jV49@SmVQ_P? z{UbK?8Xr&XxbxeN_F&9wlCE$(XX6PKOnjs_eBHPw>6!|mHiQ~erHEd}(gJ>$mN{OV z>0RJoCfwBw4k0xF8(c0&{N)Zi(3qS(PqbhXl}?t zL})mfF}Rd>a&NQjF))}~lgV=44B0o~C5&C8x*VEzQ%eef9#8RnK7e%v5s+(b(WG`m zJiOnk1PkIJ_vB?PEN9v`%~nX^Qy!Aj^v$)P=N!xhya>94oA-dUpIhlU4*quUqxOIs z8T&Ah7K6M1*mZ3;Or(ao$|=oMlerEEA%qY@2qAFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBZ=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjffYuPbvL8++OWF&&ZiQeU(9FQK4IG zEvofP<5oS?hp4bct^kJG#r#LoM$4d~l0DVgnz`&pH7k0WW1U==sdlaar{!3}QA^b! z9PU_b7=izX~o(3UNfhZ(v%`<*+gDTiO~=pJ;rkGByr|4G|QG~Dpfot2QjV95Q`*aYzwaA z)Sat8Q^Q}fl+)O-w~GFNOD2D(;87lUf3T-s5_t>PP5 z=lx`_fI26t`LRo_eL&h>fyeu_Mh6DSSAa9xx7$t~FlMao;cEStq-+%TV;5nP1DkEe zmTn9|{qyq1y|FX&#Q9Fx5B~La>k!agbGX0WG5{fiQYtyxSto)R?BuyD1SB_3MhuoB z-5dFC=mW3;NL5E_K1+{LpT({8cqsMq literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_accept_wit_v1_0_0/00003.png b/tests/snapshots/nanosp/test_register_wallet_accept_wit_v1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y` zm9nrJvL3b!yeoOjuYg*FaT>J<>sa%+UzsNtVYwwbtxm#DK__Qq_4Si9B3y5IfwJbh zv=e7<z;%sPh zQ+=|;$;mh+p=!Sx9%!B9rF^T-_KS6xeAG047R6a|{XKG`Ij=<)qN&zHu9am&SVuB< z5W50$q=Ye{M&b}`%aky3a&=nnBrJbUDU+>KzOWg?aF}on4eM>6aGLX3ih!Y0!g-nT zDZUD|AX0@IH+%g5BZZxqRk7MCE))Ko5GTVBU0l8rDbExVklM@YdoWANbxQB64 zr)e9^gP2t2+y_|Cs^%j6;j0-DqwEilhfHpDsJaQK4J9kg4#007`r2ws*0fAq$tXz6 zr5x*;WutcGv@nU=o^T&Pe(F>ZTtU~4UhZ|m#Sgi^1CZMt-Gt+uHUEU13@o150T%qE zymA%e%td}r7~l5wQ6nrc#Ea5sMmg!dDt@`~$%K$vFI~;mzVM(uw=?0Y^zFaBpHf=m4pV zRP0>XzQq4|t3Ny3dw14S9m6-V?tBs~MF6gc!;~Sv2urbv&# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_accept_wit_v1_1_0/00001.png b/tests/snapshots/nanosp/test_register_wallet_accept_wit_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ef611217bef32c7b5ea1d9ed8cf33958cd277679 GIT binary patch literal 1035 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_accept_wit_v1_2_0/00002.png b/tests/snapshots/nanosp/test_register_wallet_accept_wit_v1_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..d3ea50bde4a2334a7664ee90b9baae02f1560417 GIT binary patch literal 760 zcmVO^7d?(++qQk* zr7S=8A)UBgmBTILI1V+zKrvTFdI0$zQFq+>`-|;;&dN7yPzH4slivn1P0IgtD_UA# zsjdWS^5r5r%jfa|Ct!D>>Q+os)&xttY0z0T?|{IX<%Fd^wZ652bOoxB8pU10X~a7h zgsWj71F9r+h9DWBEOe}nz941?N{3b!N3^x!#rh)%Qy|R_sF`dp2*fOl!~Nn@J*8&{ zls=E=gKS|$GQKaRYFOcJH%#|m&mkyHK zxN*cZyaQUnm%rc&FMAM78R(Yhi%;LNd@th)KV{0FXnjHm`ETU6An?98@$^q`{qCSv zPh9i3p}L#e#AkYE9Wo1YmX>Lsaaxmcw$P-ED_QH@9ik&OB0vu@_mNdr2KV=}VeoRX z{UbWGDjzTHxbxet_Mp#elCE&PX5$4FEPSLleBZb?>DmxNZ3;DpQW356g$4XAEo;2C z(wo4)Ot`xloWfEEY;d|9v6nmTV8q2S1RQSYljH}XK8mgPM-9CLK+X2|uZgjM>K_q9 zhI18g<4>R`E)#$^Pt1E!_NMh(c{Pi#%V?|X=KuE`Fqmp|+Fm;O=Q!XwIoj1eASE|M zAtEG3rVlRViRMky8y!m5njmSrDJeFb)i2>D`kqToW}1?;7-6yl$_c3QSpf3~A|TIK z)ui?kJiNb22{uHW#|<{YLmtwaiD^q)leR(Q?58TkN7-&~q-}g1b@F_AO;> z%@h`$0n7fZO4%#bswO6tL17AyK7^a-J4*u}tYN+b><+aDCXy?iWt22%?DhXtAcPP? q2qA(IJpwfV0000FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBZ=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjffQ@-F?6sbc{V6?K!m&ySt#ieI28Y(fA400000U^`!qZKae#2r|s24@3YJG7ik?Zi7Z;Vw$2w}^!MVPOhz+x^XXIV>{@+=-n2a#Nxk}Tq6VLjnG zPC2;pGgS1&YZ-+Vd3`|{f9x&oTI{5q-W@O=2Xt-!Nnde1G0?R$x){uc@~!P9T&sSN zb=nX54k&%1=pVbXwHs2qE3jxk@6mw?(j8#5cJtUN4Mv2;GhA%{N+~PV?dVlV%7Lsl z~O~?iaJdL}1A)mZ1iZ50*x-UK}vMg=KAuA&gkse5=Ra z(evSf3@KHTk+sw#Z+W1jQ(kB*L@CV&B5XInKu1RmaPqYj^2VI_aIcOAICcgM^9o0? zh?y*=rS6PvUU3bb+3)<8*?bEa%(8Pa!m|MY0000000000000000000U$S-2d^jFF_ Rb{zl!002ovPDHLkV1l!JFqHrR literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_invalid_pubkey_version_0_0/00003.png b/tests/snapshots/nanosp/test_register_wallet_invalid_pubkey_version_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBZ=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjffQ@-F?6sbc{V6?K!m&ySt#ieI28Y(fA400000U^`!qZKae#2r|s24@3YJG7ik?Zi7Z;Vw$2w}^!MVPOhz+x^XXIV>{@+=-n2a#Nxk}Tq6VLjnG zPC2;pGgS1&YZ-+Vd3`|{f9x&oTI{5q-W@O=2Xt-!Nnde1G0?R$x){uc@~!P9T&sSN zb=nX54k&%1=pVbXwHs2qE3jxk@6mw?(j8#5cJtUN4Mv2;GhA%{N+~PV?dVlV%7Lsl z~O~?iaJdL}1A)mZ1iZ50*x-UK}vMg=KAuA&gkse5=Ra z(evSf3@KHTk+sw#Z+W1jQ(kB*L@CV&B5XInKu1RmaPqYj^2VI_aIcOAICcgM^9o0? zh?y*=rS6PvUU3bb+3)<8*?bEa%(8Pa!m|MY0000000000000000000U$S-2d^jFF_ Rb{zl!002ovPDHLkV1l!JFqHrR literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_reject_header_0_0/00003.png b/tests/snapshots/nanosp/test_register_wallet_reject_header_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Yj&LwL#RobX?V zbQiII^4uMl|Z~1l7yy12MZ$b&j z?TtJM^{@JVDT&uHZn5nzWh-TPv_J7m;jgq0f(|YbTZHdAM)myZxO-=(=&Jp4l55=A zUQcBF*M05wg}=Y7bG1(&{&siyl(&8#-KTdql}}rLm3hWhy}m5glJN5fpDsOd=_5x% z{HDvZre)46&g0e%{pDoXaPf-VTe-XJSGLU(Jj!tDNp8H)+;exzHoZ2kko_Ba_xXNR zr;WUGZIbufwyah@qN*6%Wc!qrE&9UV%v{IGH{4)eXE1ondwSC@^_ATTjUX{kS3j3^ HP6#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBZ=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjffYuPbvL8++OWF&&ZiQeU(9FQK4IG zEvofP<5oS?hp4bct^kJG#r#LoM$4d~l0DVgnz`&pH7k0WW1U==sdlaar{!3}QA^b! z9PU_b7=izX~o(3UNfhZ(v%`<*+gDTiO~=pJ;rkGByr|4G|QG~Dpfot2QjV95Q`*aYzwaA z)Sat8Q^Q}fl+)O-w~GFNOD2D(;87lUf3T-s5_t>PP5 z=lx`_fI26t`LRo_eL&h>fyeu_Mh6DSSAa9xx7$t~FlMao;cEStq-+%TV;5nP1DkEe zmTn9|{qyq1y|FX&#Q9Fx5B~La>k!agbGX0WG5{fiQYtyxSto)R?BuyD1SB_3MhuoB z-5dFC=mW3;NL5E_K1+{LpT({8cqsMq literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_reject_header_v1_0_0/00003.png b/tests/snapshots/nanosp/test_register_wallet_reject_header_v1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Yj&LwL#RobX?V zbQiII^4uMl|Z~1l7yy12MZ$b&j z?TtJM^{@JVDT&uHZn5nzWh-TPv_J7m;jgq0f(|YbTZHdAM)myZxO-=(=&Jp4l55=A zUQcBF*M05wg}=Y7bG1(&{&siyl(&8#-KTdql}}rLm3hWhy}m5glJN5fpDsOd=_5x% z{HDvZre)46&g0e%{pDoXaPf-VTe-XJSGLU(Jj!tDNp8H)+;exzHoZ2kko_Ba_xXNR zr;WUGZIbufwyah@qN*6%Wc!qrE&9UV%v{IGH{4)eXE1ondwSC@^_ATTjUX{kS3j3^ HP6#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsB3`I#QH}UC*P4tq%O~+|USiSp3EMu6F;W*N^0UNi-glZIDeTiN9n=_OZa|-gWSm>lENm{1 zd1*fb3fSsi{{(KX6r^S+`&4F1EbNQKn!994vrwmsw)U`o1}H5@y5Mf!np2N=lFITwT2gDhDH3F|cTSmZSTv<-RS4tE-p+Y4`3O?GYVD^39b z0001h6=rJagiYhEnv87R4pw1jE}29HRl1R zFd@*F17N-gs~rx9`e7M0U=ua9tz}di$ays})dnXTxuxy>r1lR4aBIKnJX3QY%oiM8o z<|*u#PxMx=Up8w(OV;epl+tWyJyoo{O0Uf}aUDXYUgnew%v0`4n6@pFTcHLrw?^U=-V?|8V^9nbkoSCG|u$R>kXyZ-MC-*a8(!f+YX|fGv2;zW151eSOLRto$yBl@(J8t9NP? zS?Xm(Lwz#x)@e|8G}lm_SgZxPww%>acMDA`Ls0GiG#Hj|qM^F7UJaGSFW16%&`>ve z2`k0ani$#a#6GbWykS09mcJ6#hoBGVbN@a-*g60J001-i1z$qYoPYU*2mk;807*qo IM6N<$g6tqhmH+?% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_tr_script_pk_0_0/00002.png b/tests/snapshots/nanosp/test_register_wallet_tr_script_pk_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..c4d79c7ec7ec55f382ce2988ba916a5451fc8ae3 GIT binary patch literal 544 zcmV+*0^j|KP)F475+P?F&T-ev2eNaVIYLS?W zs{h`2iyIRl)Qa|uWNstw_^ zu(e@W9Dr?xwv8FBcy~4U5N*;6A}|G={|7joC$p)eyU)Ig{?5l1wtEcr3yVb^6#dK5 z$nwkpPiC-{ObF}kCxp#Sf}76)?NHsG#ihS^bI9SNgpGL6K}=j3sSh3}%a_3=!bU{> zA8^sGKx2!+?!Eu@!d%$0+6~<9dSG~P8XNM|-K4SDcLIo literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_tr_script_pk_0_0/00003.png b/tests/snapshots/nanosp/test_register_wallet_tr_script_pk_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y` zm9nrJvL3b!yeoOjuYg*FaT>J<>sa%+UzsNtVYwwbtxm#DK__Qq_4Si9B3y5IfwJbh zv=e7<z;%sPh zQ+=|;$;mh+p=!Sx9%!B9rF^T-_KS6xeAG047R6a|{XKG`Ij=<)qN&zHu9am&SVuB< z5W50$q=Ye{M&b}`%aky3a&=nnBrJbUDU+>KzOWg?aF}on4eM>6aGLX3ih!Y0!g-nT zDZUD|AX0@IH+%g5BZZxqRk7MCE))Ko5GTVBU0l8rDbExVklM@YdoWANbxQB64 zr)e9^gP2t2+y_|Cs^%j6;j0-DqwEilhfHpDsJaQK4J9kg4#007`r2ws*0fAq$tXz6 zr5x*;WutcGv@nU=o^T&Pe(F>ZTtU~4UhZ|m#Sgi^1CZMt-Gt+uHUEU13@o150T%qE zymA%e%td}r7~l5wQ6nrc#Ea5sMmg!dDt@`~$%K$vFI~;mzVM(uw=?0Y^zFaBpHf=m4pV zRP0>XzQq4|t3Ny3dw14S9m6-V?tBs~MF6gc!;~Sv2urbv&# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_tr_script_pk_1_0/00001.png b/tests/snapshots/nanosp/test_register_wallet_tr_script_pk_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ef611217bef32c7b5ea1d9ed8cf33958cd277679 GIT binary patch literal 1035 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_tr_script_pk_2_0/00002.png b/tests/snapshots/nanosp/test_register_wallet_tr_script_pk_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9e49cd05db6b930c31f4678c0682701615128c3d GIT binary patch literal 734 zcmV<40wMj0P)Sz@<{~yZ6b^L_lm7-XUB>?m8>+ou zm|h6f$74#2L$qFZr|eiKaXE~TsJUIBqO^?>Dl)BDy7(iLb%(<$y0Zf3l5 zLbw(NGN4JqUlA`r7Ar~Bkxy~)T5 z&@qq4gDhc0GCnUg&9K75VOSo&kxf`Q)4lAU=gX#vdcPf3t(Dqr9_-|`_k~qyRxCiutPk+G`PP-5+QFP1o#b<0=zL$A}pEBfk^gbbk{5RUCAn?4naQAPX`dy{g zPTcaiVR1IKh0o@hb;>QsUaHGJ^Yj+u>_e9^u4JuqSH(bSM1U@0?j=jV49@SmVQ_P? z{UbK?8Xr&XxbxeN_F&9wlCE$(XX6PKOnjs_eBHPw>6!|mHiQ~erHEd}(gJ>$mN{OV z>0RJoCfwBw4k0xF8(c0&{N)Zi(3qS(PqbhXl}?t zL})mfF}Rd>a&NQjF))}~lgV=44B0o~C5&C8x*VEzQ%eef9#8RnK7e%v5s+(b(WG`m zJiOnk1PkIJ_vB?PEN9v`%~nX^Qy!Aj^v$)P=N!xhya>94oA-dUpIhlU4*quUqxOIs z8T&Ah7K6M1*mZ3;Or(ao$|=oMlerEEA%qY@2qAFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBss-6Z!vl6TpUY|erZu%f2@-e0LfP>32aO$h)10001h>3j{>m~&1k9mi3w z$^~9Y#ovG!O)zwnn+Iqn#00000 z00<{Pv${FIbnj`$s-4HomPOdwKLEZ|gp?qxOX|YrsemHW%x)4fi(PI`Y6kCMvlk>= zCnfI`Cv+k`8qIW-Ug)YNHNdFBa>3Plb=v!=&_4pE!5_D7JuWMAI_u7cM(4*RbH*4b zXC_j{zuYBO=Hvm_oCkQ}-ccm&I$c)k<1?cP3p4AB+q&BCU2?@}hoOBN+u z@^;}1_jXJy`@BI*%XOTIAxa+gjZgRtWI6S4`KLR!`;36}ynBz(JXWEh2*e<|8Znr_ zg_9A3P&Re1B?)m^PGmY}ZK+Doy0Q`8{7HxAA(9a>7{3!Hc}gjrnb?ajNr>{qr;-p& z&J8NpS(~=&*%4z-vE#0#meLqw3l$zRA^-pY literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_0_0/00002.png b/tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..071d74207921de223cf91a0a7f474823370155ae GIT binary patch literal 728 zcmV;}0w?{6P)car@t$-VSpPCb^JL{KyB|2<`*f&$){lmY+%0002Mc0Lki)mlp_*LAgL z^7HlVX{gm))X$~rY(5iZ5z{wv2U%<7DyF%v>!9^ZDPNoQ^|tejoYZeWxl@T(S`nFx zqI_OilhgW;<+jWjKoGll{ZORQ653E({U%e3T=G&}6+P-mC)cf1Cue}O=G=lKw(4Ct z-LYIZBs<_WL;JyKJKm`Q-=bgi7O`*%3KF!txJDT=jUv8JBzh&^0miUf>^le0*B8&V z9C0gluHd3N;AN53Ry*UlOVB?74zM_WPX+*hCqfPe^*6joYi<;6Bcf5eZwI>Llg014 zVyS3oXWJkXIgf~zX(3iBg5;sZv|`Jy*hxoCcrkq-COeHZC!c(UUEGYsrFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Ye?)&qX9AUBma3HUtp~D(TjWq9}@@D2ie`fBd57dA8P$ zI`FYFSLH-JvK zJ`z)gFTAFA%BmG1lcc{Q5$nd_}zA(iCWd{}IUy8+wuq^E2; z6ei9Av-rcmV+wCb9l2YBCy6b~Z(z~vSB(05ymWwEk+!$Wk)(Ydo}m)hg=d=e1DDiY z>=Yf)W4g{Y0oMqj>aLf2?PQ-d%rmVdFZmbhOsTVG0bNH4mLj0L1A27hV)7@chx;QS zSH{oM7qNla^48)=`rFMD@fWdFj9Xznj%K6#odhQUE~i5b9-m(vho6!X_;}avTq^k* z5XdcIJy3IVtOxk9B8IYYpg)Z@Am>2wpP@U=+%y+Es5y9&^8S;Q_n(A&KjE7&+**V}zHIhP)aL1kiIMu_M-mHdBx!bg7y>ubf)d%>b zD%H@2{9syWPXO!^dXrvzsxDB5N4I~%W?ur1zjBaOzk1z4Y#4dg2ZmVh8%Ub~b05Ov zJu4|u!bRz)i2psEdXp|zEjx~8E1<&ysI1sdYhf07*qoM6N<$g57iG{{R30 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_1_0/00001.png b/tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0352ca6d0a2fe2838b910b42c26d865f846dcf11 GIT binary patch literal 1055 zcmV+)1mOFLP)_pdp65FToLHB&^6^E`W@T1|Uvh*HN0CSPfx^R0h8XhT)USB>@4ZpPxoG1s}C zi&YTQYy8hi1Ot{N(9(~?=lUEPIHYJ^9BIDsiF1Z&uhx!<*bD%zIaaklH(P(nG-{4U z5r?q0uta5$jG?)kS%S!NF^UMWa0?Ni@Z!i&@MtzC^yF$8>j16EjscL2bMq2^@mBJ} zGhpm(ToW@5-+0YvL@!7)@jijgN`C{Pv;sD;wXB^we?!)1VdMclVQ z-JSj9?SLquR=zM3-*6{bQqXN`4G}L{-{+Z^{rZak-qtUQqWDwTry%nHP7;d=W(-aq zlROdqOH!8jT#KV6231HHSzd^m$=x-PUChGm5HTfAhO4GY6-!AsOV|w+rSR(#xQI12 zX0>tJl&fD`WalN&rX%TKafXTHJ3wp14w$F?n#%tbEL0!B%3;yU?5>H?k4_+#`(V^+?6yL9YHv6Tbz2t;A~Z4Kt>CXt+l^Mh9qDc@oswMuhX(GK_XAZ#Ye!nK2~W=~+1| zl3aq02O!O98J07STW)1*l1>B#T91pN{A{v!4P)G|^O#Rr4_HgsJ6%sbck)pIly zZ_fRp7)>(<_!ZiDLG_k{7TLj!_u{#sa1c5<3XY+$pjnhJ?H(JZ0k?5ij@^u@fu4ZUIPUyzmRzEz?qilQhy Zd;^+sx882M*Rucs002ovPDHLkV1g6i?Z^NC literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_1_0/00002.png b/tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..d705c90af9583278f755999a9d2b4ab154848d1d GIT binary patch literal 769 zcmV+c1OEJpP)7;5T+EHRfVOdX{VHNnsn2* z0Mt-c2>8XsBSfu{-Kmr7X~Kp~^+=g6`WB!zWf#E^lWY$0H~SBEgYF$bSKA(mXY)EG zlUOP#+%>H-{&cmCHB{+7gbR1LFX!i7*)*Fd zKrepxFEoWWgpMg4ZL_vv#3S*2oN=?CANc3aJ^%pxE2iCo>>N=Nw=`DoNdy^*4Wql> zAy5s}Dw*R_@4iyij_Z(`oM_6}@@g+kjMm7XoW`q7>~xE&JeHWT-h|a5sa8%z_A=N} z{)3j;3-MG0C6m{8&*H0*)Y*0^ z`;CdDqZeUhZ=~1>t2Kqj0&E`bl+R=i3!})+UcrnjJA#l@}WURqbncGG1wfjg*rQ&g>b{B>j@M%IWu%9B|=tDT#;DHhA^^fD(GB&m6j;iuER zj5)aB@2dRAQ%h&6m9?CuAt@UgdTP1PTHBh;bdE^I?TN5#Hs!y{QvLW@$Epz2g)_rN zg_Gmtlno7SiA1WMA!y+a=t^fgbI}{vY{}Lg;2+y~UeoBhb|$~=5KiU=?ht=}oFfk5 z|IEVofb^!l3;+NC00000000000000000{951(I+MD>T|u00000NkvXXu0mjfw3>5Z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_1_0/00003.png b/tests/snapshots/nanosp/test_register_wallet_tr_script_sortedmulti_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_tr_with_nums_keypath_0_0/00003.png b/tests/snapshots/nanosp/test_register_wallet_tr_with_nums_keypath_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_tr_with_nums_keypath_2_0/00002.png b/tests/snapshots/nanosp/test_register_wallet_tr_with_nums_keypath_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9e49cd05db6b930c31f4678c0682701615128c3d GIT binary patch literal 734 zcmV<40wMj0P)Sz@<{~yZ6b^L_lm7-XUB>?m8>+ou zm|h6f$74#2L$qFZr|eiKaXE~TsJUIBqO^?>Dl)BDy7(iLb%(<$y0Zf3l5 zLbw(NGN4JqUlA`r7Ar~Bkxy~)T5 z&@qq4gDhc0GCnUg&9K75VOSo&kxf`Q)4lAU=gX#vdcPf3t(Dqr9_-|`_k~qyRxCiutPk+G`PP-5+QFP1o#b<0=zL$A}pEBfk^gbbk{5RUCAn?4naQAPX`dy{g zPTcaiVR1IKh0o@hb;>QsUaHGJ^Yj+u>_e9^u4JuqSH(bSM1U@0?j=jV49@SmVQ_P? z{UbK?8Xr&XxbxeN_F&9wlCE$(XX6PKOnjs_eBHPw>6!|mHiQ~erHEd}(gJ>$mN{OV z>0RJoCfwBw4k0xF8(c0&{N)Zi(3qS(PqbhXl}?t zL})mfF}Rd>a&NQjF))}~lgV=44B0o~C5&C8x*VEzQ%eef9#8RnK7e%v5s+(b(WG`m zJiOnk1PkIJ_vB?PEN9v`%~nX^Qy!Aj^v$)P=N!xhya>94oA-dUpIhlU4*quUqxOIs z8T&Ah7K6M1*mZ3;Or(ao$|=oMlerEEA%qY@2qAFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsB$+!Yf#FTuaT%9z-lfGq&|Rqf#RyjW7L+IFAe|5H~e+m@IT- zJfox8B*V45+yR<)-&$?Y^X+=51KygUxRP`8*z2u@ z_n!w)F7kH2SAj0&tiz`R?7hg?zU0f*O}Yfm-c7P=Ntu^geehl1y-GV`*GX^P1A@Xv zdw~1uUp?#xK@bGX+2If}?}PDtZHESO1~kqcoAHPJGKZJv&i^MYuUAQz8)X(|29}eA zR>~6X0tYT@jxREK($qL*N^^FDO6p7&EtKR5Kcv@=@#sBZ%xU+rRvi$=fB!BW>`!0B z2Abr4hhhcd@2Ao=6U@?Nqnq%%AfYrK*bU>{0ZlmppZ+&eanv?Ia8}6zwN2Pv8~;Fd oJc@J@YUs;E2LwS71i?%E0#YfUx2#tjJpcdz07*qoM6N<$f)>=1(f|Me literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_with_long_name_0_0/00002.png b/tests/snapshots/nanosp/test_register_wallet_with_long_name_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748c3b048dc785eab74b3da82e886bc063eaed40 GIT binary patch literal 504 zcmV#~007JVc!FY#A%x>N^07Eg z$DV{*=zLd*+KGUR>0&%aL`G zI#Z)ycKN%U^$;fY0B7Wt0cSL=mZ`t9if&{~2}8UMkb1N|KKh$I-*c#}M%I3#nR@Pj z@Txn(uH$&&hA-O>QJlmq~PCBAdwdf-KDrTrV#^*vyo@-0l;;1m~!k{D^VTYb^n zlc*_sGu__8(|&EPVb3ozpj7$cW;2u+ans<6E*5r`-(8zhfl(z z#JsYA>;Wqu0q4{=Gzw`SFVlxGBfB+|aHo3rU$lJywUVj*Wg1mY?Jq_fJc&{0Nu5fj u4W^=c0RR9100000000000001hY5oDFnw2WE*bUDB0000Q@-F?6sbc{V6?K!m&ySt#ieI28Y(fA400000U^`!qZKae#2r|s24@3YJG7ik?Zi7Z;Vw$2w}^!MVPOhz+x^XXIV>{@+=-n2a#Nxk}Tq6VLjnG zPC2;pGgS1&YZ-+Vd3`|{f9x&oTI{5q-W@O=2Xt-!Nnde1G0?R$x){uc@~!P9T&sSN zb=nX54k&%1=pVbXwHs2qE3jxk@6mw?(j8#5cJtUN4Mv2;GhA%{N+~PV?dVlV%7Lsl z~O~?iaJdL}1A)mZ1iZ50*x-UK}vMg=KAuA&gkse5=Ra z(evSf3@KHTk+sw#Z+W1jQ(kB*L@CV&B5XInKu1RmaPqYj^2VI_aIcOAICcgM^9o0? zh?y*=rS6PvUU3bb+3)<8*?bEa%(8Pa!m|MY0000000000000000000U$S-2d^jFF_ Rb{zl!002ovPDHLkV1l!JFqHrR literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_with_long_name_0_0/00004.png b/tests/snapshots/nanosp/test_register_wallet_with_long_name_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y` zm9nrJvL3b!yeoOjuYg*FaT>J<>sa%+UzsNtVYwwbtxm#DK__Qq_4Si9B3y5IfwJbh zv=e7<z;%sPh zQ+=|;$;mh+p=!Sx9%!B9rF^T-_KS6xeAG047R6a|{XKG`Ij=<)qN&zHu9am&SVuB< z5W50$q=Ye{M&b}`%aky3a&=nnBrJbUDU+>KzOWg?aF}on4eM>6aGLX3ih!Y0!g-nT zDZUD|AX0@IH+%g5BZZxqRk7MCE))Ko5GTVBU0l8rDbExVklM@YdoWANbxQB64 zr)e9^gP2t2+y_|Cs^%j6;j0-DqwEilhfHpDsJaQK4J9kg4#007`r2ws*0fAq$tXz6 zr5x*;WutcGv@nU=o^T&Pe(F>ZTtU~4UhZ|m#Sgi^1CZMt-Gt+uHUEU13@o150T%qE zymA%e%td}r7~l5wQ6nrc#Ea5sMmg!dDt@`~$%K$vFI~;mzVM(uw=?0Y^zFaBpHf=m4pV zRP0>XzQq4|t3Ny3dw14S9m6-V?tBs~MF6gc!;~Sv2urbv&# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_with_long_name_1_0/00001.png b/tests/snapshots/nanosp/test_register_wallet_with_long_name_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ef611217bef32c7b5ea1d9ed8cf33958cd277679 GIT binary patch literal 1035 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_register_wallet_with_long_name_2_0/00002.png b/tests/snapshots/nanosp/test_register_wallet_with_long_name_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9e49cd05db6b930c31f4678c0682701615128c3d GIT binary patch literal 734 zcmV<40wMj0P)Sz@<{~yZ6b^L_lm7-XUB>?m8>+ou zm|h6f$74#2L$qFZr|eiKaXE~TsJUIBqO^?>Dl)BDy7(iLb%(<$y0Zf3l5 zLbw(NGN4JqUlA`r7Ar~Bkxy~)T5 z&@qq4gDhc0GCnUg&9K75VOSo&kxf`Q)4lAU=gX#vdcPf3t(Dqr9_-|`_k~qyRxCiutPk+G`PP-5+QFP1o#b<0=zL$A}pEBfk^gbbk{5RUCAn?4naQAPX`dy{g zPTcaiVR1IKh0o@hb;>QsUaHGJ^Yj+u>_e9^u4JuqSH(bSM1U@0?j=jV49@SmVQ_P? z{UbK?8Xr&XxbxeN_F&9wlCE$(XX6PKOnjs_eBHPw>6!|mHiQ~erHEd}(gJ>$mN{OV z>0RJoCfwBw4k0xF8(c0&{N)Zi(3qS(PqbhXl}?t zL})mfF}Rd>a&NQjF))}~lgV=44B0o~C5&C8x*VEzQ%eef9#8RnK7e%v5s+(b(WG`m zJiOnk1PkIJ_vB?PEN9v`%~nX^Qy!Aj^v$)P=N!xhya>94oA-dUpIhlU4*quUqxOIs z8T&Ah7K6M1*mZ3;Or(ao$|=oMlerEEA%qY@2qAFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_1_1/00000.png b/tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_1_1/00001.png b/tests/snapshots/nanosp/test_sighash_all_anyone_input_changed_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_1_1/00000.png b/tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4033d25ff8d69d5bf44de6d75d544f27bb8fe8e0 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WLba4!+nDh3AW8Yx~9*4lF zuWI}LPpp})r=%#=BkU^R{OkUz$0uFZ*$OcnB2dn zdYc1t*{Rft)xqp%Ppf_D^LsF3)w8TTd6y+?Hc8%j@?eWt1>21O&+G&vQ(4z+XI*-~ z>6z2}RWaWjLYKci$P^urCU$Y9%GgDr#-g>F*i>>2Bt}20kxg(3&C$6YdStZ~3iW%s4WN^5K@vOMO-lOZk=7WSi MUHx3vIVCg!07_q`rvLx| literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_1_1/00001.png b/tests/snapshots/nanosp/test_sighash_all_anyone_output_changed_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_anyone_sign_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_all_anyone_sign_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_anyone_sign_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_all_anyone_sign_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_anyone_sign_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_all_anyone_sign_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_anyone_sign_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_all_anyone_sign_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_anyone_sign_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_all_anyone_sign_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_anyone_sign_1_1/00000.png b/tests/snapshots/nanosp/test_sighash_all_anyone_sign_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_anyone_sign_1_1/00001.png b/tests/snapshots/nanosp/test_sighash_all_anyone_sign_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_input_modified_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_all_input_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_input_modified_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_all_input_modified_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_input_modified_0_0/00002.png b/tests/snapshots/nanosp/test_sighash_all_input_modified_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_input_modified_0_1/00000.png b/tests/snapshots/nanosp/test_sighash_all_input_modified_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_input_modified_0_1/00001.png b/tests/snapshots/nanosp/test_sighash_all_input_modified_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_output_modified_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_all_output_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_output_modified_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_all_output_modified_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_output_modified_0_0/00002.png b/tests/snapshots/nanosp/test_sighash_all_output_modified_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_output_modified_0_1/00000.png b/tests/snapshots/nanosp/test_sighash_all_output_modified_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4033d25ff8d69d5bf44de6d75d544f27bb8fe8e0 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WLba4!+nDh3AW8Yx~9*4lF zuWI}LPpp})r=%#=BkU^R{OkUz$0uFZ*$OcnB2dn zdYc1t*{Rft)xqp%Ppf_D^LsF3)w8TTd6y+?Hc8%j@?eWt1>21O&+G&vQ(4z+XI*-~ z>6z2}RWaWjLYKci$P^urCU$Y9%GgDr#-g>F*i>>2Bt}20kxg(3&C$6YdStZ~3iW%s4WN^5K@vOMO-lOZk=7WSi MUHx3vIVCg!07_q`rvLx| literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_output_modified_0_1/00001.png b/tests/snapshots/nanosp/test_sighash_all_output_modified_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_sign_psbt_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_all_sign_psbt_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_sign_psbt_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_all_sign_psbt_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_sign_psbt_0_0/00002.png b/tests/snapshots/nanosp/test_sighash_all_sign_psbt_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_sign_psbt_0_1/00000.png b/tests/snapshots/nanosp/test_sighash_all_sign_psbt_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_all_sign_psbt_0_1/00001.png b/tests/snapshots/nanosp/test_sighash_all_sign_psbt_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_1_1/00000.png b/tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_1_1/00001.png b/tests/snapshots/nanosp/test_sighash_none_anyone_input_changed_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_1_1/00000.png b/tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4033d25ff8d69d5bf44de6d75d544f27bb8fe8e0 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WLba4!+nDh3AW8Yx~9*4lF zuWI}LPpp})r=%#=BkU^R{OkUz$0uFZ*$OcnB2dn zdYc1t*{Rft)xqp%Ppf_D^LsF3)w8TTd6y+?Hc8%j@?eWt1>21O&+G&vQ(4z+XI*-~ z>6z2}RWaWjLYKci$P^urCU$Y9%GgDr#-g>F*i>>2Bt}20kxg(3&C$6YdStZ~3iW%s4WN^5K@vOMO-lOZk=7WSi MUHx3vIVCg!07_q`rvLx| literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_1_1/00001.png b/tests/snapshots/nanosp/test_sighash_none_anyone_output_changed_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_sign_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_none_anyone_sign_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_sign_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_none_anyone_sign_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_sign_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_none_anyone_sign_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_sign_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_none_anyone_sign_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_sign_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_none_anyone_sign_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_sign_1_1/00000.png b/tests/snapshots/nanosp/test_sighash_none_anyone_sign_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_anyone_sign_1_1/00001.png b/tests/snapshots/nanosp/test_sighash_none_anyone_sign_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_input_modified_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_none_input_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_input_modified_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_none_input_modified_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_input_modified_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_none_input_modified_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_input_modified_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_none_input_modified_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_input_modified_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_none_input_modified_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_input_modified_1_1/00000.png b/tests/snapshots/nanosp/test_sighash_none_input_modified_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_input_modified_1_1/00001.png b/tests/snapshots/nanosp/test_sighash_none_input_modified_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_output_modified_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_none_output_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_output_modified_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_none_output_modified_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_output_modified_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_none_output_modified_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_output_modified_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_none_output_modified_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_output_modified_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_none_output_modified_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_output_modified_1_1/00000.png b/tests/snapshots/nanosp/test_sighash_none_output_modified_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4033d25ff8d69d5bf44de6d75d544f27bb8fe8e0 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WLba4!+nDh3AW8Yx~9*4lF zuWI}LPpp})r=%#=BkU^R{OkUz$0uFZ*$OcnB2dn zdYc1t*{Rft)xqp%Ppf_D^LsF3)w8TTd6y+?Hc8%j@?eWt1>21O&+G&vQ(4z+XI*-~ z>6z2}RWaWjLYKci$P^urCU$Y9%GgDr#-g>F*i>>2Bt}20kxg(3&C$6YdStZ~3iW%s4WN^5K@vOMO-lOZk=7WSi MUHx3vIVCg!07_q`rvLx| literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_output_modified_1_1/00001.png b/tests/snapshots/nanosp/test_sighash_none_output_modified_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_sign_psbt_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_none_sign_psbt_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_sign_psbt_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_none_sign_psbt_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_sign_psbt_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_none_sign_psbt_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_sign_psbt_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_none_sign_psbt_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_sign_psbt_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_none_sign_psbt_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_sign_psbt_1_1/00000.png b/tests/snapshots/nanosp/test_sighash_none_sign_psbt_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_none_sign_psbt_1_1/00001.png b/tests/snapshots/nanosp/test_sighash_none_sign_psbt_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash1_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash1_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash1_0_0/00002.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash1_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97499543f93907238233469136f8c9365cd7e79a GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2Vbl+hE4u`<< zD|0veSFP0lEO_#hgwK@{8K3I&;a-h-qd2??B8XOyg_-mU+uxpUeAyNVwTz7h-!53KiA^O#Cc`{x;WKX}dL zMU`xGYq#oMs((7Cs+srd72D=W@rNewY_cx4&J4QWUvz1o!e#r1SJU2qy5x6kRosNU zi*N2sC_Hm%-q!_jTeBESve)d;&e0Q>+G4z2&+(<#{W8|{>Wbh~WnXgJm@nU`w?!n%&i<#ku;UFS?GVG>t6(q-9l-GJ?*L~})tqsl7z&R6b>egVS(85}U$FU~2^ TVzGavDM;AU)z4*}Q$iB}p_iTd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash1_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_2_0/00000.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97499543f93907238233469136f8c9365cd7e79a GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2Vbl+hE4u`<< zD|0veSFP0lEO_#hgwK@{8K3I&;a-h-qd2??B8XOyg_-mU+uxpUeAyNVwTz7h-!53KiA^O#Cc`{x;WKX}dL zMU`xGYq#oMs((7Cs+srd72D=W@rNewY_cx4&J4QWUvz1o!e#r1SJU2qy5x6kRosNU zi*N2sC_Hm%-q!_jTeBESve)d;&e0Q>+G4z2&+(<#{W8|{>Wbh~WnXgJm@nU`w?!n%&i<#ku;UFS?GVG>t6(q-9l-GJ?*L~})tqsl7z&R6b>egVS(85}U$FU~2^ TVzGavDM;AU)z4*}Q$iB}p_iTd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_2_0/00001.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash2_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_2_0/00000.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97499543f93907238233469136f8c9365cd7e79a GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2Vbl+hE4u`<< zD|0veSFP0lEO_#hgwK@{8K3I&;a-h-qd2??B8XOyg_-mU+uxpUeAyNVwTz7h-!53KiA^O#Cc`{x;WKX}dL zMU`xGYq#oMs((7Cs+srd72D=W@rNewY_cx4&J4QWUvz1o!e#r1SJU2qy5x6kRosNU zi*N2sC_Hm%-q!_jTeBESve)d;&e0Q>+G4z2&+(<#{W8|{>Wbh~WnXgJm@nU`w?!n%&i<#ku;UFS?GVG>t6(q-9l-GJ?*L~})tqsl7z&R6b>egVS(85}U$FU~2^ TVzGavDM;AU)z4*}Q$iB}p_iTd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_2_0/00001.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash3_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_2_0/00000.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97499543f93907238233469136f8c9365cd7e79a GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2Vbl+hE4u`<< zD|0veSFP0lEO_#hgwK@{8K3I&;a-h-qd2??B8XOyg_-mU+uxpUeAyNVwTz7h-!53KiA^O#Cc`{x;WKX}dL zMU`xGYq#oMs((7Cs+srd72D=W@rNewY_cx4&J4QWUvz1o!e#r1SJU2qy5x6kRosNU zi*N2sC_Hm%-q!_jTeBESve)d;&e0Q>+G4z2&+(<#{W8|{>Wbh~WnXgJm@nU`w?!n%&i<#ku;UFS?GVG>t6(q-9l-GJ?*L~})tqsl7z&R6b>egVS(85}U$FU~2^ TVzGavDM;AU)z4*}Q$iB}p_iTd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_2_0/00001.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash81_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_2_0/00000.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97499543f93907238233469136f8c9365cd7e79a GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2Vbl+hE4u`<< zD|0veSFP0lEO_#hgwK@{8K3I&;a-h-qd2??B8XOyg_-mU+uxpUeAyNVwTz7h-!53KiA^O#Cc`{x;WKX}dL zMU`xGYq#oMs((7Cs+srd72D=W@rNewY_cx4&J4QWUvz1o!e#r1SJU2qy5x6kRosNU zi*N2sC_Hm%-q!_jTeBESve)d;&e0Q>+G4z2&+(<#{W8|{>Wbh~WnXgJm@nU`w?!n%&i<#ku;UFS?GVG>t6(q-9l-GJ?*L~})tqsl7z&R6b>egVS(85}U$FU~2^ TVzGavDM;AU)z4*}Q$iB}p_iTd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_2_0/00001.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash82_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_2_0/00000.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97499543f93907238233469136f8c9365cd7e79a GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2Vbl+hE4u`<< zD|0veSFP0lEO_#hgwK@{8K3I&;a-h-qd2??B8XOyg_-mU+uxpUeAyNVwTz7h-!53KiA^O#Cc`{x;WKX}dL zMU`xGYq#oMs((7Cs+srd72D=W@rNewY_cx4&J4QWUvz1o!e#r1SJU2qy5x6kRosNU zi*N2sC_Hm%-q!_jTeBESve)d;&e0Q>+G4z2&+(<#{W8|{>Wbh~WnXgJm@nU`w?!n%&i<#ku;UFS?GVG>t6(q-9l-GJ?*L~})tqsl7z&R6b>egVS(85}U$FU~2^ TVzGavDM;AU)z4*}Q$iB}p_iTd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_2_0/00001.png b/tests/snapshots/nanosp/test_sighash_segwitv0_sighash83_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_1_1/00000.png b/tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_1_1/00001.png b/tests/snapshots/nanosp/test_sighash_single_anyone_input_changed_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_1_1/00000.png b/tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4033d25ff8d69d5bf44de6d75d544f27bb8fe8e0 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WLba4!+nDh3AW8Yx~9*4lF zuWI}LPpp})r=%#=BkU^R{OkUz$0uFZ*$OcnB2dn zdYc1t*{Rft)xqp%Ppf_D^LsF3)w8TTd6y+?Hc8%j@?eWt1>21O&+G&vQ(4z+XI*-~ z>6z2}RWaWjLYKci$P^urCU$Y9%GgDr#-g>F*i>>2Bt}20kxg(3&C$6YdStZ~3iW%s4WN^5K@vOMO-lOZk=7WSi MUHx3vIVCg!07_q`rvLx| literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_1_1/00001.png b/tests/snapshots/nanosp/test_sighash_single_anyone_output_changed_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_sign_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_single_anyone_sign_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_sign_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_single_anyone_sign_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_sign_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_single_anyone_sign_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_sign_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_single_anyone_sign_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_sign_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_single_anyone_sign_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_sign_1_1/00000.png b/tests/snapshots/nanosp/test_sighash_single_anyone_sign_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_anyone_sign_1_1/00001.png b/tests/snapshots/nanosp/test_sighash_single_anyone_sign_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_input_modified_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_single_input_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_input_modified_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_single_input_modified_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_input_modified_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_single_input_modified_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_input_modified_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_single_input_modified_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_input_modified_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_single_input_modified_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_input_modified_1_1/00000.png b/tests/snapshots/nanosp/test_sighash_single_input_modified_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_input_modified_1_1/00001.png b/tests/snapshots/nanosp/test_sighash_single_input_modified_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c9bd49ec631dd78cff2584463261f18b6b5ac9dd GIT binary patch literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{&ba4!+nDh2Vbl+hG9*01y zS#vl1SFP0lEXeD$?c{34-LGupr?j!#I=4W6~xc2&Q@CtLwXgP_{{5y@`&b+f;`Zp`Gf34%v4Z)Wrzs`Ac-}36FHtUn_ z|D2cnP@Z=4&HSH7q9#P^o!gqj8+s}(;SqDd_YJ`|94W@nS1{zU+ZBng4i1=iVfufr z2fdoMJEq)Z)|)-sBme!IGF|gk&;N*C{kZCF+{d7P>!pW1Z$(?bPvF>kleNuJ?bm6G ug=)XLKk_I|Y*pIG@2<257&ge@fJy!N2EW7S`%9jJggssTT-G@yGywqi+OsAA literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_1_1/00000.png b/tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4033d25ff8d69d5bf44de6d75d544f27bb8fe8e0 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WLba4!+nDh3AW8Yx~9*4lF zuWI}LPpp})r=%#=BkU^R{OkUz$0uFZ*$OcnB2dn zdYc1t*{Rft)xqp%Ppf_D^LsF3)w8TTd6y+?Hc8%j@?eWt1>21O&+G&vQ(4z+XI*-~ z>6z2}RWaWjLYKci$P^urCU$Y9%GgDr#-g>F*i>>2Bt}20kxg(3&C$6YdStZ~3iW%s4WN^5K@vOMO-lOZk=7WSi MUHx3vIVCg!07_q`rvLx| literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_1_1/00001.png b/tests/snapshots/nanosp/test_sighash_single_output_different_index_modified_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_1_1/00000.png b/tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4033d25ff8d69d5bf44de6d75d544f27bb8fe8e0 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WLba4!+nDh3AW8Yx~9*4lF zuWI}LPpp})r=%#=BkU^R{OkUz$0uFZ*$OcnB2dn zdYc1t*{Rft)xqp%Ppf_D^LsF3)w8TTd6y+?Hc8%j@?eWt1>21O&+G&vQ(4z+XI*-~ z>6z2}RWaWjLYKci$P^urCU$Y9%GgDr#-g>F*i>>2Bt}20kxg(3&C$6YdStZ~3iW%s4WN^5K@vOMO-lOZk=7WSi MUHx3vIVCg!07_q`rvLx| literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_1_1/00001.png b/tests/snapshots/nanosp/test_sighash_single_output_same_index_modified_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_sign_psbt_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_single_sign_psbt_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_sign_psbt_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_single_sign_psbt_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_sign_psbt_1_0/00000.png b/tests/snapshots/nanosp/test_sighash_single_sign_psbt_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_sign_psbt_1_0/00001.png b/tests/snapshots/nanosp/test_sighash_single_sign_psbt_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_sign_psbt_1_0/00002.png b/tests/snapshots/nanosp/test_sighash_single_sign_psbt_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_sign_psbt_1_1/00000.png b/tests/snapshots/nanosp/test_sighash_single_sign_psbt_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_single_sign_psbt_1_1/00001.png b/tests/snapshots/nanosp/test_sighash_single_sign_psbt_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_unsupported_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_unsupported_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_unsupported_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_unsupported_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_unsupported_0_0/00002.png b/tests/snapshots/nanosp/test_sighash_unsupported_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_unsupported_0_1/00000.png b/tests/snapshots/nanosp/test_sighash_unsupported_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_unsupported_0_1/00001.png b/tests/snapshots/nanosp/test_sighash_unsupported_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_unsupported_for_segwitv0_0_0/00000.png b/tests/snapshots/nanosp/test_sighash_unsupported_for_segwitv0_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_unsupported_for_segwitv0_0_0/00001.png b/tests/snapshots/nanosp/test_sighash_unsupported_for_segwitv0_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_unsupported_for_segwitv0_0_0/00002.png b/tests/snapshots/nanosp/test_sighash_unsupported_for_segwitv0_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_unsupported_for_segwitv0_0_1/00000.png b/tests/snapshots/nanosp/test_sighash_unsupported_for_segwitv0_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sighash_unsupported_for_segwitv0_0_1/00001.png b/tests/snapshots/nanosp/test_sighash_unsupported_for_segwitv0_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_0_0/00000.png b/tests/snapshots/nanosp/test_sign_message_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..1b271542d4bdb2b420bf296e4efb75129bcde20b GIT binary patch literal 415 zcmV;Q0bu@#P)5YKJ%(KU&1ONcAAJx@!`E?Y1^<~WN}zCyXs#X zo?o6k@9c|LZskJhD8km*o@uZbHa}-B?&(7HD5C%IYmwHRbJ)2) z`V`bZme<8JnX>F>hL3vOBL0b~>J+pM|9!ySI57nP0000WkROv_^0k3i)wKWs002ov JPDHLkV1lAe!YTj& literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_0_0/00001.png b/tests/snapshots/nanosp/test_sign_message_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..71c80df0ebab547cc8681bb8a0c27b0a3b8993e4 GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}Bba4!+nDh2#E?<)YPeY=~ zy_E0vLGK^&Ki>4Fxim0}>-}eLZ`B)pme02_0(Cu;yJx<^-R0DD&817tUwxLf-J74_ z7wj&$a+m1Q)4$oKO>O=6Ma_LxcW#Xaz5wfPJL;g(NSW4;#S4%Wu05j?Uzr#&QSX`|LK)z!CCkI%zJFj)FU+^{X>?P z{L%M^Gpu*r3ex-U^zzvI(+NCT(-tn?lIgem)UERuV;=Uah3|XFlaL>gvMPUBaMr5) q9=VDnu}??7Z%{wQ4fH26ka@=Y^$&MPZqtP0AYo5eKbLh*2~7Z`xR}=f literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_0_1/00000.png b/tests/snapshots/nanosp/test_sign_message_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..04bb6f43c46cbcb9c9891a601782329fd9257adf GIT binary patch literal 698 zcmV;r0!96aP)T>pFTDatD23)?7u^y|nDmbBA~*ng z4yGmz>pI8#lajiX6vWnM%y}mJRDf5pGnW^-effA#s5d;@uHUn;4g!MwU zdFv!=hgeXY*Zu4^+ySz;3vcyS2Iqi>aZf>$xw6Fu005x#z#1TJH(m4lEk-^XR=~Mv zrIaaa{iu|GrIDsw{YwHL^t4k3lmWwTKWQhS_FTN4<8$nAQ z;9V>+07MI8qiLKF+O~nQnYjQgF#twfcX$s1(PvX_96PI_ub7u+XMp7{rWCdAC&|t~ zwehz1kGSG_g>Coa>$CG|2mk;8a8oMIlA+yA=%wv0Rw3r3;~Zd7Z1!fvyZa7etOxDM z#jaciu7@by>8CKo4WscQ+&yiL4Eapi6k|pFw#1_Kdo_A}g6h@`{2*Z|^iD)Wq=@j8 z{q~br;M*Ui1qGDL^!^2=o~DfW)X=wop%d_4Fm+_WVcIAbTAUzvG%Ytl?YBi^_evp! g0ssI20DzC+7iJ63Mz=_xwg3PC07*qoM6N<$f)N=#V*mgE literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_0_1/00001.png b/tests/snapshots/nanosp/test_sign_message_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..098d70fca69784d7f95018ff1a808513fb6032da GIT binary patch literal 576 zcmV-G0>AxM(&kK(1itoUeOh5<(D!Xi5M80001w^VMr`9LM=1=d4K} z&iCp7_To5>>wbF1aC`=&lyc7EZ&PPjB80B87GzQ;ZW+JmiyddgFv$EFa7L4JZgxNf zS4#39smgn)V>cnL3Voq`rn1?J-H>Y-=ch~Cr3_KKT85~l=4KPFB$6h(p;-(LfISCO zH4RIhv;RU;T4_nFeU1g+%SRi!wFJ3&7nh9n$40DFw&s8&=;{*;K7^YyVB$mA7B%MtFa|4O6zIX5Zur&{N!#E}eZddqf9tg+B|4 zX5ZvyKr^LVH~ZS;mizz!06+}CZWh=Hk3pAG+Ml|cuUe~8@VDG;jsMYaU>w(sGho>i zYC|k@ldcD8D!rinBiz%}6B1a`t3(~##B1ONa|3tI(^J}8y<*2t(w*7m z{kO<{KyQrr4oNS}GE@G^xUnI+{Fb?<>E;lhl(7}zAH4PNjy2fdA-HgePs&(;&X4pl zac%G(JtpllyKI_<@7*%CA~s3cpMReItiN>=F6j(tLwhr*H?Qn(8}v^u4}tef-Zag4 o3i>MA-O!V0ngRd-005B1AH-_2LJ#707*qoM6N<$f@(+05C8xG literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_0_0/00000.png b/tests/snapshots/nanosp/test_sign_message_accept_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..1b271542d4bdb2b420bf296e4efb75129bcde20b GIT binary patch literal 415 zcmV;Q0bu@#P)5YKJ%(KU&1ONcAAJx@!`E?Y1^<~WN}zCyXs#X zo?o6k@9c|LZskJhD8km*o@uZbHa}-B?&(7HD5C%IYmwHRbJ)2) z`V`bZme<8JnX>F>hL3vOBL0b~>J+pM|9!ySI57nP0000WkROv_^0k3i)wKWs002ov JPDHLkV1lAe!YTj& literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_0_0/00001.png b/tests/snapshots/nanosp/test_sign_message_accept_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..3ecf97960253a6930996bfec61b46e29279a6a0b GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}8ba4!+nDh2#Am1Sco`#2+ zdpN(_2fcrESm~gVn`g_dxBusfi|Q(+?d?-_ZtnfE?d+rFZ6{_X#jnk*5FUcYXv>UjR`&&AXhXQnj_q0vp#W=&(@ z)KD+7e7b&OXNBsEq$X8`^M4P^X5HB<0JK2O>ZaPXx9!(o-HiXb@y=e3(v)R+Tbn}T zB7XJ6mApUq?7y>*%axUpwH;}hD+?vQt1b=s?;qs;KkwSw2HR_vyvP1+{=MTo!+D`8 z+SRd--XH#KF)OMh;gyL=o^$l!7vEOiufKQvQ``Mld;ZLGP1u+=q4S>+`$Dx}-4mJp mLlpgM_^Xxn03Cr04w&TgRkOvkEx0=iB<$(x=d#Wzp$PzE(3da( literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_0_1/00000.png b/tests/snapshots/nanosp/test_sign_message_accept_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..8cb0af7a98a8e1a271bdddf2999498589345ac04 GIT binary patch literal 462 zcmV;<0WtoGP)K_t!r0002X{hVzOLWl?6`%($o zy>AV5< z7WMB*LDjsAuZ;P}CT1$TW=Bb5S2J`zgw+u+@F8p$ zs?GBt)qX?|M(}o=)rQ|dtnIp&dUwWqz-FhXpvA5%u>kd^B3QmT{g>Zr%!7#*jG5ux)G3Xg678$w0{bE z_`B7=e+b7-v3M8L;~_l{>BlBVz`zS=A$C=}>s)N8{-iM@6_q|8J{_-7OfuPDMoBf< zUyOUO6SL4xl_YZyrXsxn000000000000000006)=Z#Za~jtxUI4gdfE07*qoM6N<$ Ef*|G0B>(^b literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_0_1/00001.png b/tests/snapshots/nanosp/test_sign_message_accept_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c52ba90853b5b28ff731ea096329de997cf8cfd4 GIT binary patch literal 446 zcmV;v0YUzWP)zIX5Zur&{N!#E}eZddqf9tg+B|4 zX5ZvyKr^LVH~ZS;mizz!06+}CZWh=Hk3pAG+Ml|cuUe~8@VDG;jsMYaU>w(sGho>i zYC|k@ldcD8D!rinBiz%}6B1a`t3(~##B1ONa|3tI(^J}8y<*2t(w*7m z{kO<{KyQrr4oNS}GE@G^xUnI+{Fb?<>E;lhl(7}zAH4PNjy2fdA-HgePs&(;&X4pl zac%G(JtpllyKI_<@7*%CA~s3cpMReItiN>=F6j(tLwhr*H?Qn(8}v^u4}tef-Zag4 o3i>MA-O!V0ngRd-005B1AH-_2LJ#707*qoM6N<$f@(+05C8xG literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_long_0_0/00000.png b/tests/snapshots/nanosp/test_sign_message_accept_long_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..1b271542d4bdb2b420bf296e4efb75129bcde20b GIT binary patch literal 415 zcmV;Q0bu@#P)5YKJ%(KU&1ONcAAJx@!`E?Y1^<~WN}zCyXs#X zo?o6k@9c|LZskJhD8km*o@uZbHa}-B?&(7HD5C%IYmwHRbJ)2) z`V`bZme<8JnX>F>hL3vOBL0b~>J+pM|9!ySI57nP0000WkROv_^0k3i)wKWs002ov JPDHLkV1lAe!YTj& literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_long_0_0/00001.png b/tests/snapshots/nanosp/test_sign_message_accept_long_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7d73593625e5d56654950a32651919dd6481a50c GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh2#Am1Sco`#2+ zdpN(_2fcsPJTaj$aFS!|-}{$Y+&mh)DrA6q4wUe}XPhHA@k=tt!q=|V)$ac98Mj0} z(oo9U7WVOzoWpjL3-fn&s%AYr{;B>R7xxYC1em(5e2?CAL|=yc-0`pL!bS6CdXmDpY%m#VX}H1)jMc5g?+ z&CfOe+1adL{NGHxQfe1Z@9_(_3})qi`gi_zMAeS4#hND_9njxAYo5eKbLh*2~7aU`IW2y literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_long_0_1/00000.png b/tests/snapshots/nanosp/test_sign_message_accept_long_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..8a9399404ad5a2612c0d0d271a3b9331f49e4073 GIT binary patch literal 753 zcmVSF8kI6CP+0xmT%MzI1+ z98HOTgsk1Eja>x0%j}u))s$i>c0ol)KR;F0MW{sWE|sV?&BG#!DV}Ds3+hE<2iRjU zWW$i!T=i!u)Jto`JkK`qwG1uj(G*l{cXrE|e{9%HWm`6+II|i-<4af^0Uck$cB1H> zixl%=IT+$?okhntz}9xnOTC@JK43A`Q_y6dEU^Iq0E{Bt`6RAYRf}^wy)R-MW^$q3 zvzplfont{k*^g+O6m8dI_+CG?uo81`$ltDx77SjtJTpc>J}=pkGTYbAr^?-*zg>kc z6L0?!Aac^IdS|rqNgZ(R25Pi&gd!HhM}YHVMHSAMm1w51Jct=1z}Y%1^!Owa z>G#dGRh7Hjx()yU00022phLI@#*5JI-|9dsTBkl;pPaKxCrCI zX7f78rX67c1drqFHv9y{-Y&e=donx++>Cn)+RVrnn-D_CI}zCA?AaHs3(UO>8tJf6 zJXjh-jCG5@Zx^IVq35*_8q@39#G;#y*Abc0PF48K*z8Etg2muu#K{O>H+9N@L2OpD z+>NRmv$qM3zsY1Zw8khsVhghzO`p5Q4X%9v^`IWKGw5jgoG@;1hZND&s~0)i;AJjy z1lR{M)*wYmy{uUbb}hS{3`kP^VUF-%+%P75{r#0Hy)_2v>f6ji|+x>>Gf1drc zJp+6OcfwidPC7~EGg!*w((4LnUGx^q$1AHtlD;2h`9?*-qHek9OA)7!^56qbJwPt4 z?}~;NY4fsKAH?uAkS)cRdfwx-W~bSOAOXR$yzc6nu~yBy^-qiaIt&dk0LI@#*tOY9>wSXu32ia4Vne`#JF4LXxCp$ z<|>*oYp$O99>D5PJO>+2R5VAvYIQYvgc>@Lxr*ineH4uVv0m9lzUF$BZ0|l^))oQQ o8_QR%Wi?8ngb+dqA>$S0|q{X{lsGR ze2~RweW+8T){X?OuW=JMxMR0Qg2XdRdzN7IY*uHwtUJsc%8n zN$U1lom0x^)~0=Lr4p-I-$iY#{LjT>POFU7T1)PQR^Ny@!FtBVc<^!bSm_@iR_@)c zJ_E!!?tTnC0~-IVIHGvCFYdyfA7QFzxOCm8^l9(UwoxkWKlq2X4l~F^f0{z5iT-5V zgDbHLU8xde?!l=DF8}}l000000000000000aGF22B7!>HG{w^Z0000;HQxZl2nyWzk|lO;E5oC^Yozyrc2=?g{^JHGJV{EU3?z zy})-zck>RfxXQeM?gx*b+BOz%J09b5%YIhm9$SWrJ=VF0K6(X6We9&?VA+w*T{4Sd z(R+owr;H2?6*~ma?)WnM(FVVntB$=o727fWYFGdDUf=IKZuqR5UtE!K>~i<)=MSD` zFWtfPZQ9YeY(@F|)(fAyeKs**Tic+wf7+9SMy+;9cjc!v=oK1@8!kO2BNuh~<-83Q zZ!?@-e5U5F(NcOO_xEU_u;0?a+f7MqpNpfmee625thUVX;hbOZY$JXMiNtQ$zx2za fPept%KQi#g>#e;0xnwo797xF1)z4*}Q$iB}OIeXg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_long_1_0/00000.png b/tests/snapshots/nanosp/test_sign_message_accept_long_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b1e001b7baded3ddb1f08451a4be92bba6224709 GIT binary patch literal 720 zcmV;>0x$iEP)3`I#QH{t$A;x1XZlA>fyh|%u>N-5WmoU@by z{Cw|r;4Dfh|M%0Hg7FcMQp!1#ziggx3Q06GOHL+X;MV?=w&;F(3OX4-0xoZI&TIpS zb9GAoBi-U&=h3SmS4n=7`3fali(Zjg(9cg(Zj;(Y>1yqw6q?Q|%oI;QcX zrrR*A^IYvGDRn6+hxpdf zyOXRPVnK0U_tPx+2FTtnywy7yoC7w~JOwSLXNwI00N`yX8=I^7fXoNQ*@CR>YQgjG-d^_o>TF<1>qJiLl z2x^4)ggfH(h(Sj5m%)S@(O(SuU?-S`c47n>eK3{J3h%(y&I{b<9>i)kinYVkQ1i^f zzQ`qs1pj6gd9qG#I=hkIp5xo;QmCXa*1u!QVnD(SxDgX;`=!uyh#2?WrK#WZBRb%e zM;Yz(dwxU*1h~H$_)x}lfU>Rz%Eq#>OR@Q^(NkRV%IW!QQC5Di0{savm`EuF5eEQ( z)7dC;vGq#+3=tJhq^Uhq8!s96S31ePxnIcWdL*llCdbPo$x=hZ^6K3;$-QULBqI9N zN5zOgo9TnoLMNNGAmc@)eJooHc0LiiKEFP8-SdA(-oyS!lCeIxN*z0Z{Op{9q-B27Upp#~Ccs%0zMlkI=^|bp*F9f7w2%at*KH>$5kd$dgb=cwKfM*M>$*SW zoLeOX=kMtRp2c-t-{)yh#rOOC3W0}j)@1Z`&Ih)oC~*}tzCojsA8Wa>#-iaGoaH4_gxk5#?EO^F0OUzA z_End1y`=W;g~X;VN_zr;|AbOIg^x zD_k#17Z*V{@RExd&h>dKsV)z=8qa6iZ^Ejm8PGvh88x+q()v#|D^Phg;vzOD!8K7s zS&S)^h~619?#edCRxz$u#RUDNEn3^6jbZBmwB8czZCkG(I*VAgHt*SlAF&YkGjj&m z>Yyqgil+&Y7;!FH4zjW*gA%qY@4s!V42h_*VuDWN>e^U~GE@Ff4QP~Fh zLpa0+)(O=9MeO?d%A-&#k+(v7Z!5LXXiJZ3Xv1NBj|;a#jTm@c#Q{+Y5k*t={KbfC z1hSP&B+qawaJL3a#JH}-(Rlg-fhKMYVOL%2)%*dNqD_J$A(p|3vgnAbt}3h4(5(Ic z1$zQb+|M_(0-XV^jnw$TNJyUIX*E2w3c)1RJi&^FD?9me7S7*<2_b|KLI|15e<-JT UV59N)C;$Ke07*qoM6N<$g3lju1ONa4 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_long_1_0/00002.png b/tests/snapshots/nanosp/test_sign_message_accept_long_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..0b161d12dbfdb03227155cdcd724dc9e6769f9c5 GIT binary patch literal 488 zcmVP)3^#PBcsT{F+>Ca007wTV>BS=e7s00SuKeB zygPws$vOXgpY{aK&j1lgDXF*3KGQ9#vD?{7QjCdP=C3}BpJya6X#EU0vPmg5KY&WE zY)LOt)xGTF5222#{;Km)%H}BkK;6K&uc6*uWs26(GDWL2Cx_^^M9Sn3w94cK@aLdZ z)3EGwe16qZMp;Fy&pDU;s7nVrbqng&T^(}nKR$J*@_SCS1W$E^$sgh73|ROh>^C;U z>m-}!QD<jHhc@(?93xJ0N}4W^S~324KAmzGxHR*r!;G0 zA8U9k;;4eP98-IZ@_TurV#Qt`b;oVS*8SDdV2G1|6}y#M9Qm)CTa{KH>um9HgPE)v z`n(+rF(>1yd7OD|HQD4{%4!EBAQ#)ka`9T{aN8}L#mc~8&ds-OW-;=v0Z+M zKXfy;e9-VGdYQl1fiLL>W|67>HjPqK{mr-rcj7K|r%sW%2A86|000000000000000 e0002MWxfG_5X`L-!$blA0000;HQxZl2nyWzk|lO;E5oC^Yozyrc2=?g{^JHGJV{EU3?z zy})-zck>RfxXQeM?gx*b+BOz%J09b5%YIhm9$SWrJ=VF0K6(X6We9&?VA+w*T{4Sd z(R+owr;H2?6*~ma?)WnM(FVVntB$=o727fWYFGdDUf=IKZuqR5UtE!K>~i<)=MSD` zFWtfPZQ9YeY(@F|)(fAyeKs**Tic+wf7+9SMy+;9cjc!v=oK1@8!kO2BNuh~<-83Q zZ!?@-e5U5F(NcOO_xEU_u;0?a+f7MqpNpfmee625thUVX;hbOZY$JXMiNtQ$zx2za fPept%KQi#g>#e;0xnwo797xF1)z4*}Q$iB}OIeXg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_long_2_0/00000.png b/tests/snapshots/nanosp/test_sign_message_accept_long_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f1c7143a1b0b24cc50179e20598e20b1fde075d1 GIT binary patch literal 703 zcmV;w0zmzVP)cK!BM(WJ&-400000Z0Daf!gXEuL(aJu z0`&Zxb|4nlb$!04JrVsqAf=RZCO?}t?hq0v8uy$`osL`jPs+mksfnm$eh;|4$vHO* zK%6T>@*k)D81W5|wVivZ7a8mW4r3mIHZ!us1^@s6<}-0IhE>pECTl@WO6}$I z+}yVGq*i9L)7z1eeIj|qWU5K?VUW#K9jLSv(_x}$lr=|2N+3)(b4Pe@` zne_0vytV-dwRRQ++5pPKikfnEB@b!R$JLyc2QBsPHIF^42-W-4Szbqw(skVk;@>*r z6tLk*9OqUL@F3yq+8`9)I|@ZWsAROkQeIxYjz!6XlyL?C00000Jb<06a>wN#lY1M=a&jX!Uc5MKc6V7OY{Z!T4u6$1 z6?-31x$NnkdU2HG%iIdcKD)FD7sd0ut>~00000002nmYu2H)b{*7O zr4r!h&(i|VqP6yYKjk>CkAPB2t(E*_ZI(+&p=m6MEW*I;^^mK+lu>KU}NsE@B+Y^$6QGS}cAyxyCr>Gj67zOATr3*`f?2^V~&%uT#0002U!@pfLzlB<;Gq&AW0Xvm^)PKlCeGi(++(wMe z8cN5+QYw_rN;T-&*6%%3zgL=SxBTose}Yy@?uKDzA9o68lb~$2Rd0)}(|I;Z{77~x zLLom1>Q^#r;OC$Y$WMZrVx&L^N;;?mSlIt__h(y^S@`mGcM&eaZ8EzE`;(wkQa!%@ wi;|>*gP2_&K58ETUQKK57i|Cm002DCKP@_0l*u_2j{pDw07*qoM6N<$g0SXd_W%F@ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_long_2_0/00002.png b/tests/snapshots/nanosp/test_sign_message_accept_long_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..03fafd9da8172ef6563bc2da882b87fa8d3b7706 GIT binary patch literal 571 zcmV-B0>u4^P){# zdcN;AU@f+7JAO}d6#I8TN-5_ozN#|aEut|Lwv0^1#x3m^bMfu0QLJSA4%n^9Ija*8 z#+5DkkM!a9QpO)bJQeancz2~bia$`OSkF(BbVzBU^|Un6a?Qyh!j>90`2&rja{>H4 zm_D{)DYMUCw3J$w6F>XxGrpBe2RapkLcfbgPWJAwA680Na z^-m+!enbzB@xGm*;u{cWyY8dj%8&=#OmhgD%$XxL003Oekdw)o9^Q8@Y5>QbCq4yP zDUYA*RF*amVJDplbFQZPsG66BmmH20tRBV_*17!Zm?Nyp_>J9Ss)}V>rD12vc5yMT zFIFrbVZst=tNq>ct*VALm5Wbm%|R`!mTS-&NxCBsrHFsjy1FG+d8rU0cYxaOkSHVy zsE2^KTAJ`Svn)Bjwwj@Ks451_wr03^8K#r*{xlR<;HQxZl2nyWzk|lO;E5oC^Yozyrc2=?g{^JHGJV{EU3?z zy})-zck>RfxXQeM?gx*b+BOz%J09b5%YIhm9$SWrJ=VF0K6(X6We9&?VA+w*T{4Sd z(R+owr;H2?6*~ma?)WnM(FVVntB$=o727fWYFGdDUf=IKZuqR5UtE!K>~i<)=MSD` zFWtfPZQ9YeY(@F|)(fAyeKs**Tic+wf7+9SMy+;9cjc!v=oK1@8!kO2BNuh~<-83Q zZ!?@-e5U5F(NcOO_xEU_u;0?a+f7MqpNpfmee625thUVX;hbOZY$JXMiNtQ$zx2za fPept%KQi#g>#e;0xnwo797xF1)z4*}Q$iB}OIeXg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_long_3_0/00000.png b/tests/snapshots/nanosp/test_sign_message_accept_long_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..9403307a587a49a9de3eeea17ba698e049dc3512 GIT binary patch literal 750 zcmVS3lM_P#000000AM>`y#rE8`5?w9 zwE#Qcrvtc)l+x>d+B0x`280k|jO1Uo&u|NAY<8A{48p`M<0sdm$7va8#D50lXkv`) z1(4v%miR}g@?Q4QU68Y+Kk1xP$$HTpH3!=H>FV923{g5;hA5?G(nYhyk|y1e7lS{5 zJ_kcJ4a+|H`bkSUN=jmFb1e8?mO7d$LCw6AQ%e2OA(cw+InZJ>wSvJ#n4JNRi?H6v z4zGh`?GOt}@Oqrhf$so$wi|xbyBWL(9HzSjZD!^X8vps9#$N?+F4F9d7=tPZNU9thh`BfWRtBX5S7WMqFEOsbLn&EPjU398UZ8cD`) zu#^Moy-oZ&?)@0Lyz{X*sG+O|`8rPjcTxsbaV%|;vrVP59ve8xvka*gYb|mqd*O%4 zA=ZD{1LasbYgZo!hAS~hVyf39b{6BF&i>kX(HF5x7}()FgU<{oOKM$Such8zxMGOT z))Hh4U6LN{^?7{BeXOqImT#PPum((l+n-_G49H*i78wTsfY0TjwRJx1 zj;Ej*XBUdnN(?T68I4%gP)W|bb4TWwHEFEAk46$)*#M@n$eB$MvCE)QQr)Ac>W(Z5 zE6YMD!sR99hB9SjEYwv$z~wtKS1=apj=iBvT|Aw>86e4-N^!hlN2YE~56ljY7lTIOt-OQTEq72+tKWU4t(^JsN{1Na{Q)?9) zK*Y5v^@qaxz0G5XApes5B=f5)#VB^5Zb3i)LbmfB5;%%MXf}a3c+ohL!H-mk^VZu|;W=59S0000c;M{W#R(MLxNZcbzl95I_ zjx0t)ac8k8u4@(4nkTkr>D+b^Ly^>GN7Mv}Vu-=JXwLNkxI z{3E@7gB$O`_i*(r^zn2$8TVi*ynAo|BDM|fNPzPM(N$Z~TS$y%Qe?w?5Z(!k=R5ds zacdKDQjOyzMmSRNy?t|T6+P`0MRr})IgB`(Vm#R+(|4AnozY)i$mtRAkY^zR(RdrW$_fscKxzV38G8?(UZ`KT|K- zbK_>&Z~0EUa0F;WIQsR@a37t<}u)M*si-07*qo IM6N<$f5y5}n;OmQ9%Xb1oR0Kjrzy#-QA`69+xOM&0_ z?hc$KrS$ndttmJ@0zwEeM)9YbXE;S9HZ#{c87c#}?7w&xyPuwdPS1~k+?yDq`T(MH zWlH=LE^#mO*iDGLBEQI-L#ei6H`FZX_tTZTsqA9yZrR0JXl^#qO!0)tZs;k4FTfsy z;W7-%Jo))WN?EEF#A}^no$ocZp<7c>Gw$M+G5^@aOl9XBNO4v*!{8#Uj(`UjVLMSR ze(j`MkEp@uyxq@c!8Z`!cEg`~Cu1M5S@#sQ*qu*o0090S_z`vPSI~jMn&IKIAVY0~ zqi$sKwYuq3>r}HDo3-*d=!F}oEA_xqTzm2u)f#7K;+C`28tX=YhjC8nJi-)3JoW6I z>kfJW<-a@px14pBDYeu5Esk4+)x+)2t=UbiCr7}*ugpWNkm|bHJg^M?@1PlIb?L5M z+}Eh;oZrQZRfA0Qmr+7Z^cUkD?8GdzQzOW{gQ*BF0000000000000000000m%`bw^ Vq2p?f7byS$002ovPDHLkV1hx~-je_T literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_long_3_0/00003.png b/tests/snapshots/nanosp/test_sign_message_accept_long_3_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..93bf9bc960ef586881a858edd08e9208e39c33cb GIT binary patch literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|^K?ba4!+nDh2lAYZcrPebDN zH)?zTPpq15J3}H!pwQXt>;HQxZl2nyWzk|lO;E5oC^Yozyrc2=?g{^JHGJV{EU3?z zy})-zck>RfxXQeM?gx*b+BOz%J09b5%YIhm9$SWrJ=VF0K6(X6We9&?VA+w*T{4Sd z(R+owr;H2?6*~ma?)WnM(FVVntB$=o727fWYFGdDUf=IKZuqR5UtE!K>~i<)=MSD` zFWtfPZQ9YeY(@F|)(fAyeKs**Tic+wf7+9SMy+;9cjc!v=oK1@8!kO2BNuh~<-83Q zZ!?@-e5U5F(NcOO_xEU_u;0?a+f7MqpNpfmee625thUVX;hbOZY$JXMiNtQ$zx2za fPept%KQi#g>#e;0xnwo797xF1)z4*}Q$iB}OIeXg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_long_4_0/00000.png b/tests/snapshots/nanosp/test_sign_message_accept_long_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..80943953e9f524bf875f93c6359aef955724b7e2 GIT binary patch literal 598 zcmV-c0;&CpP)3`I#QH{t$A;x1XZ(nSe0AT#H`m0JiTgApLRLjV8(0001BI$y07QcBN7jFFQ7 zJKw7v*o&0X=Xsh_(LV!12r)+Tv#R5k5TUBfIT@IVoBL1hMfTHD(MbOp@OTqrtlj`| zE|2 zOv7B~xql+bYjK@ew&`=em7#`Sg&?)xNs$nLWJsivH60RTQzLLL!qpkjaS@h<)#{~_ z)pke=g7dPUYQ-BMdpq}5Z)b20SWI&Wn#`LmHUI#CeYtN-17^_oxf#0);!>x1T9Ig0 z)$*TZvz#rGbSiVV>bni~{J8t!iyWiW3!xULFJ#|jLl!lM^;SA(Ll@E|GB_GB=2kiG z8Gz83))rcDSagrU&8dhdM!$SQ?S_1H=?t*D`_U{fS`k(=u1FU8urI3Bl(5Bw(nY6i z%!O`3hh0aCkWQ@U3)_3n@4_ZGW0;AY= z0A{Bm@>APKC}co`cK(u6r(D9d>X=Y^53PyGCZX`tmzSNu4Y?qB4D5|8iAcw1LrJJ{ zXQfs}o*QOBsQpu6hXvNczB8a)6`Nin3LlJCKi3sj@Bhdt&+mIK2|?$A0RR9100000 k0000000000000c+7jPz30s}v~=l}o!07*qoM6N<$fPx# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_long_4_0/00001.png b/tests/snapshots/nanosp/test_sign_message_accept_long_4_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c52ba90853b5b28ff731ea096329de997cf8cfd4 GIT binary patch literal 446 zcmV;v0YUzWP)zIX5Zur&{N!#E}eZddqf9tg+B|4 zX5ZvyKr^LVH~ZS;mizz!06+}CZWh=Hk3pAG+Ml|cuUe~8@VDG;jsMYaU>w(sGho>i zYC|k@ldcD8D!rinBiz%}6B1a`t3(~##B1ONa|3tI(^J}8y<*2t(w*7m z{kO<{KyQrr4oNS}GE@G^xUnI+{Fb?<>E;lhl(7}zAH4PNjy2fdA-HgePs&(;&X4pl zac%G(JtpllyKI_<@7*%CA~s3cpMReItiN>=F6j(tLwhr*H?Qn(8}v^u4}tef-Zag4 o3i>MA-O!V0ngRd-005B1AH-_2LJ#707*qoM6N<$f@(+05C8xG literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_non_ascii_0_0/00000.png b/tests/snapshots/nanosp/test_sign_message_accept_non_ascii_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..1b271542d4bdb2b420bf296e4efb75129bcde20b GIT binary patch literal 415 zcmV;Q0bu@#P)5YKJ%(KU&1ONcAAJx@!`E?Y1^<~WN}zCyXs#X zo?o6k@9c|LZskJhD8km*o@uZbHa}-B?&(7HD5C%IYmwHRbJ)2) z`V`bZme<8JnX>F>hL3vOBL0b~>J+pM|9!ySI57nP0000WkROv_^0k3i)wKWs002ov JPDHLkV1lAe!YTj& literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_non_ascii_0_0/00001.png b/tests/snapshots/nanosp/test_sign_message_accept_non_ascii_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7d73593625e5d56654950a32651919dd6481a50c GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh2#Am1Sco`#2+ zdpN(_2fcsPJTaj$aFS!|-}{$Y+&mh)DrA6q4wUe}XPhHA@k=tt!q=|V)$ac98Mj0} z(oo9U7WVOzoWpjL3-fn&s%AYr{;B>R7xxYC1em(5e2?CAL|=yc-0`pL!bS6CdXmDpY%m#VX}H1)jMc5g?+ z&CfOe+1adL{NGHxQfe1Z@9_(_3})qi`gi_zMAeS4#hND_9njxAYo5eKbLh*2~7aU`IW2y literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_non_ascii_0_1/00000.png b/tests/snapshots/nanosp/test_sign_message_accept_non_ascii_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..263a4391ecf8788ea7f9424c1ccd47f032c2122c GIT binary patch literal 918 zcmV;H18Mw;P)Ahvz)D!M7CKG^2xf^yaq^5Hr1VsVb z1;-!E6sdR*mo#6Zjcf#Lg`k(czN4ELUO-EjSC^o$%Jz0v$ZNC=8FvUk4 zUY0sv%TD2;Ec?U)q~WF9*|M`>ZYo78j8eOlISs{`U%AEA|2=7_n?Xi(+*R3yEw%Fu z3X*V=HT#d@OtohJVYCLHL{aFIB$KQ)xD`9SY&Eo%ii`bL^hro0ZmqcG4cC+L7N}oN zE#;B&f?MpA2l)CTb9|5bER`r$TgVy)5RACD8tR@q^rm-&Dn&#wB&`KrJJ%q}xjoxT z2qIg`<{~P!ptQ(*2{yJyNB_t}9GyX>!M0$dWx>WQKy8-yi<-YAQr%Sz1r?|#E6m?d zWdZCjJO6^o{m_#UccZEsK&&>V#Wg{Wlo1p{2qAdpaNzm5j%e9>pk z6{N@tOfu6yb>SmwrCy%%m$Y*k7QV7g}7w%vz sZjy~Hy2F{YU6Y0iA%qY@2yqAh0Iod2bAI9#-T(jq07*qoM6N<$f~P~U9RL6T literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_non_ascii_0_1/00001.png b/tests/snapshots/nanosp/test_sign_message_accept_non_ascii_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..a8cf42f7d7a1575ac2faa1c4d8e70efdc7b54064 GIT binary patch literal 558 zcmV+}0@3}6P)b$axN@%AOi#Iw@ZR)e8h{&I*<$N^3az;yQSE`nPg#TEKV z>TT$%X_%~^vx8&fIAAM wdI10c00000000000000000000006e}3*77lnHQPMBLDyZ07*qoM6N<$f;+7S;s5{u literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_non_ascii_0_1/00002.png b/tests/snapshots/nanosp/test_sign_message_accept_non_ascii_0_1/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e7ffedd90f5279e10fd67907e6122c12c1bbafd7 GIT binary patch literal 457 zcmV;)0XF`LP)Bo7fQz-)#Q&A!PMpz3O%n|+fjfT!4#E}eZd``R7A6>%04 z&A!Rq0acf7-Rx_VTk-<{0APxR-Amm`Z_ezOhUqW=r@`mED)n>^wO4fWLn<5k8hwp+ z*c7VQlDSFeL7Ml1+K3Zc$L1++d!-5U?%MEvn{hd75c|*Sy20_M8!B3Zc2Y_%-kP`W z6B3uv5sEp6+7}?3cGS-jo%#RmC+k+Iq6=2ZCt{yO@|m#fhCEXc001~`+bXE-Sq__* zaSL|sh|S-mJG0AswVnF_Z;Zqai5F&=srY7G+YlXo%RjEI;O00000NkvXXu0mjf&CAl) literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_too_long_0_0/00000.png b/tests/snapshots/nanosp/test_sign_message_accept_too_long_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..1b271542d4bdb2b420bf296e4efb75129bcde20b GIT binary patch literal 415 zcmV;Q0bu@#P)5YKJ%(KU&1ONcAAJx@!`E?Y1^<~WN}zCyXs#X zo?o6k@9c|LZskJhD8km*o@uZbHa}-B?&(7HD5C%IYmwHRbJ)2) z`V`bZme<8JnX>F>hL3vOBL0b~>J+pM|9!ySI57nP0000WkROv_^0k3i)wKWs002ov JPDHLkV1lAe!YTj& literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_too_long_0_0/00001.png b/tests/snapshots/nanosp/test_sign_message_accept_too_long_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7d73593625e5d56654950a32651919dd6481a50c GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh2#Am1Sco`#2+ zdpN(_2fcsPJTaj$aFS!|-}{$Y+&mh)DrA6q4wUe}XPhHA@k=tt!q=|V)$ac98Mj0} z(oo9U7WVOzoWpjL3-fn&s%AYr{;B>R7xxYC1em(5e2?CAL|=yc-0`pL!bS6CdXmDpY%m#VX}H1)jMc5g?+ z&CfOe+1adL{NGHxQfe1Z@9_(_3})qi`gi_zMAeS4#hND_9njxAYo5eKbLh*2~7aU`IW2y literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_accept_too_long_0_1/00000.png b/tests/snapshots/nanosp/test_sign_message_accept_too_long_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..17edb9d3006e1f20c47ff969cc7bbc9f4ff06a35 GIT binary patch literal 917 zcmV;G18V$VUd`R@%|;W&*UT{Nb}Xj>8St8f^x= z#Z4DDyE%}-?JABUM~N|6F|0lTb>`hW@6u{5$3Kd>z19bJVVf|)tuwfXVZepCn{#2v6|XfdJ+kW=tBv@CvHQ@waK5`SCYw3!tS}Wz!KzI z7~J4YRy<@;nu~BFpz<)a==`K)l?RlR=tCPkYDi}5Ugh1$I2Ws05RY9oh{`VXTycoS8jH_?0eP3-W_|2DL>W4BZyjlTHCY6tcN z7LYAtiEauTS4offz%8=iIOO&@@&q54{6WAuW5hSAp(m|&@t$AHj1+-O2XKolj6&eH zbv1x4CXjEjg~?&aI8XFUrKkAlIOV8hFHc?$}$H;oxe%-cdQLfI+ zpyS);=PaLqU5lEztMuze&?KGyiQwIf%3TU8@ylbs4V`iM`~*bt!@#2m^K{>HeCL;Yi3xHcklu0002saX$RZrIhPO&e^iO z%N5VPV1{!`DZ_=gB5Jz)*gkK>{YR+TOh%R~tzC|h<6Hj4qscj|TCGvKk6YAOoxy4h zLGe~3Qq$I@VPHd6E1=$Xb>&@5ttI~_iM+RCd>3*`L|hJb)@80dh7Hh!CoPR!)`94arV=wRD@hLtR7X!od<(+fJOwlpC@WEy!xn zDt`a*={i+B!YSq33eI20XtC6SE@yQ|C#}6W7HhwBYO0HPNK$r6q>I0nm!mH`?cQy4 ziY{x;9eO36Ln535Om=NsUuSRHD_bSoNw?NyMo-CaAxG z#jPYQR&|#KUqK4C6XV?@=yXbdmciWPw-=lwll{j~QcdBo7fQz-)#Q&A!PMpz3O%n|+fjfT!4#E}eZd``R7A6>%04 z&A!Rq0acf7-Rx_VTk-<{0APxR-Amm`Z_ezOhUqW=r@`mED)n>^wO4fWLn<5k8hwp+ z*c7VQlDSFeL7Ml1+K3Zc$L1++d!-5U?%MEvn{hd75c|*Sy20_M8!B3Zc2Y_%-kP`W z6B3uv5sEp6+7}?3cGS-jo%#RmC+k+Iq6=2ZCt{yO@|m#fhCEXc001~`+bXE-Sq__* zaSL|sh|S-mJG0AswVnF_Z;Zqai5F&=srY7G+YlXo%RjEI;O00000NkvXXu0mjf&CAl) literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_hash_reject_0_0/00000.png b/tests/snapshots/nanosp/test_sign_message_hash_reject_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..1b271542d4bdb2b420bf296e4efb75129bcde20b GIT binary patch literal 415 zcmV;Q0bu@#P)5YKJ%(KU&1ONcAAJx@!`E?Y1^<~WN}zCyXs#X zo?o6k@9c|LZskJhD8km*o@uZbHa}-B?&(7HD5C%IYmwHRbJ)2) z`V`bZme<8JnX>F>hL3vOBL0b~>J+pM|9!ySI57nP0000WkROv_^0k3i)wKWs002ov JPDHLkV1lAe!YTj& literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_hash_reject_0_0/00001.png b/tests/snapshots/nanosp/test_sign_message_hash_reject_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..71c80df0ebab547cc8681bb8a0c27b0a3b8993e4 GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}Bba4!+nDh2#E?<)YPeY=~ zy_E0vLGK^&Ki>4Fxim0}>-}eLZ`B)pme02_0(Cu;yJx<^-R0DD&817tUwxLf-J74_ z7wj&$a+m1Q)4$oKO>O=6Ma_LxcW#Xaz5wfPJL;g(NSW4;#S4%Wu05j?Uzr#&QSX`|LK)z!CCkI%zJFj)FU+^{X>?P z{L%M^Gpu*r3ex-U^zzvI(+NCT(-tn?lIgem)UERuV;=Uah3|XFlaL>gvMPUBaMr5) q9=VDnu}??7Z%{wQ4fH26ka@=Y^$&MPZqtP0AYo5eKbLh*2~7Z`xR}=f literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_hash_reject_0_0/00002.png b/tests/snapshots/nanosp/test_sign_message_hash_reject_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..263a4391ecf8788ea7f9424c1ccd47f032c2122c GIT binary patch literal 918 zcmV;H18Mw;P)Ahvz)D!M7CKG^2xf^yaq^5Hr1VsVb z1;-!E6sdR*mo#6Zjcf#Lg`k(czN4ELUO-EjSC^o$%Jz0v$ZNC=8FvUk4 zUY0sv%TD2;Ec?U)q~WF9*|M`>ZYo78j8eOlISs{`U%AEA|2=7_n?Xi(+*R3yEw%Fu z3X*V=HT#d@OtohJVYCLHL{aFIB$KQ)xD`9SY&Eo%ii`bL^hro0ZmqcG4cC+L7N}oN zE#;B&f?MpA2l)CTb9|5bER`r$TgVy)5RACD8tR@q^rm-&Dn&#wB&`KrJJ%q}xjoxT z2qIg`<{~P!ptQ(*2{yJyNB_t}9GyX>!M0$dWx>WQKy8-yi<-YAQr%Sz1r?|#E6m?d zWdZCjJO6^o{m_#UccZEsK&&>V#Wg{Wlo1p{2qAdpaNzm5j%e9>pk z6{N@tOfu6yb>SmwrCy%%m$Y*k7QV7g}7w%vz sZjy~Hy2F{YU6Y0iA%qY@2yqAh0Iod2bAI9#-T(jq07*qoM6N<$f~P~U9RL6T literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_hash_reject_0_0/00003.png b/tests/snapshots/nanosp/test_sign_message_hash_reject_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..a8cf42f7d7a1575ac2faa1c4d8e70efdc7b54064 GIT binary patch literal 558 zcmV+}0@3}6P)b$axN@%AOi#Iw@ZR)e8h{&I*<$N^3az;yQSE`nPg#TEKV z>TT$%X_%~^vx8&fIAAM wdI10c00000000000000000000006e}3*77lnHQPMBLDyZ07*qoM6N<$f;+7S;s5{u literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_hash_reject_0_0/00004.png b/tests/snapshots/nanosp/test_sign_message_hash_reject_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..e7ffedd90f5279e10fd67907e6122c12c1bbafd7 GIT binary patch literal 457 zcmV;)0XF`LP)Bo7fQz-)#Q&A!PMpz3O%n|+fjfT!4#E}eZd``R7A6>%04 z&A!Rq0acf7-Rx_VTk-<{0APxR-Amm`Z_ezOhUqW=r@`mED)n>^wO4fWLn<5k8hwp+ z*c7VQlDSFeL7Ml1+K3Zc$L1++d!-5U?%MEvn{hd75c|*Sy20_M8!B3Zc2Y_%-kP`W z6B3uv5sEp6+7}?3cGS-jo%#RmC+k+Iq6=2ZCt{yO@|m#fhCEXc001~`+bXE-Sq__* zaSL|sh|S-mJG0AswVnF_Z;Zqai5F&=srY7G+YlXo%RjEI;O00000NkvXXu0mjf&CAl) literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_hash_reject_0_0/00005.png b/tests/snapshots/nanosp/test_sign_message_hash_reject_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..e90cd9db37ed7e4c669da0b1abe6e4a823770f3c GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-$ba4!+nDh2#^r}M!BCQWK z&Z&HszcjC#zcHvdGud%d*x&ujm6to+(Vp%*SqP{N3M2&u1+V{G{c>j&LwL#RobX?V zbQiII^4uMl|Z~1l7yy12MZ$b&j z?TtJM^{@JVDT&uHZn5nzWh-TPv_J7m;jgq0f(|YbTZHdAM)myZxO-=(=&Jp4l55=A zUQcBF*M05wg}=Y7bG1(&{&siyl(&8#-KTdql}}rLm3hWhy}m5glJN5fpDsOd=_5x% z{HDvZre)46&g0e%{pDoXaPf-VTe-XJSGLU(Jj!tDNp8H)+;exzHoZ2kko_Ba_xXNR zr;WUGZIbufwyah@qN*6%Wc!qrE&9UV%v{IGH{4)eXE1ondwSC@^_ATTjUX{kS3j3^ HP65YKJ%(KU&1ONcAAJx@!`E?Y1^<~WN}zCyXs#X zo?o6k@9c|LZskJhD8km*o@uZbHa}-B?&(7HD5C%IYmwHRbJ)2) z`V`bZme<8JnX>F>hL3vOBL0b~>J+pM|9!ySI57nP0000WkROv_^0k3i)wKWs002ov JPDHLkV1lAe!YTj& literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_reject_0_0/00001.png b/tests/snapshots/nanosp/test_sign_message_reject_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..71c80df0ebab547cc8681bb8a0c27b0a3b8993e4 GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}Bba4!+nDh2#E?<)YPeY=~ zy_E0vLGK^&Ki>4Fxim0}>-}eLZ`B)pme02_0(Cu;yJx<^-R0DD&817tUwxLf-J74_ z7wj&$a+m1Q)4$oKO>O=6Ma_LxcW#Xaz5wfPJL;g(NSW4;#S4%Wu05j?Uzr#&QSX`|LK)z!CCkI%zJFj)FU+^{X>?P z{L%M^Gpu*r3ex-U^zzvI(+NCT(-tn?lIgem)UERuV;=Uah3|XFlaL>gvMPUBaMr5) q9=VDnu}??7Z%{wQ4fH26ka@=Y^$&MPZqtP0AYo5eKbLh*2~7Z`xR}=f literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_reject_0_0/00002.png b/tests/snapshots/nanosp/test_sign_message_reject_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..d20a083f5140c5f6a4aa9cc9c1d6d6979fe80a37 GIT binary patch literal 476 zcmV<20VDp2P)bPfOj09fwtY=IC$Jn-I^QqbL72$=W~wiDIj zd5~&7q6Q;)JI-psZy?ro-AlbY<2_)r(^Jr5BTH-mzypl0Z5rQ-p@`ko(OF`JIy0t) zChrAJQQCmaGpJihV!uvChKDR z{{Z9Tm&i7~zwR*a%PDB({g{7OI@|i-_FVYruA!sFfz!K93{U-vxrS)#m7ci6kobm|JsW>kUb`MzO2;4;Fa#bNK1#UH||9000000000000000;4*IzIX5Zur&{N!#E}eZddqf9tg+B|4 zX5ZvyKr^LVH~ZS;mizz!06+}CZWh=Hk3pAG+Ml|cuUe~8@VDG;jsMYaU>w(sGho>i zYC|k@ldcD8D!rinBiz%}6B1a`t3(~##B1ONa|3tI(^J}8y<*2t(w*7m z{kO<{KyQrr4oNS}GE@G^xUnI+{Fb?<>E;lhl(7}zAH4PNjy2fdA-HgePs&(;&X4pl zac%G(JtpllyKI_<@7*%CA~s3cpMReItiN>=F6j(tLwhr*H?Qn(8}v^u4}tef-Zag4 o3i>MA-O!V0ngRd-005B1AH-_2LJ#707*qoM6N<$f@(+05C8xG literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_reject_0_0/00004.png b/tests/snapshots/nanosp/test_sign_message_reject_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..e90cd9db37ed7e4c669da0b1abe6e4a823770f3c GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-$ba4!+nDh2#^r}M!BCQWK z&Z&HszcjC#zcHvdGud%d*x&ujm6to+(Vp%*SqP{N3M2&u1+V{G{c>j&LwL#RobX?V zbQiII^4uMl|Z~1l7yy12MZ$b&j z?TtJM^{@JVDT&uHZn5nzWh-TPv_J7m;jgq0f(|YbTZHdAM)myZxO-=(=&Jp4l55=A zUQcBF*M05wg}=Y7bG1(&{&siyl(&8#-KTdql}}rLm3hWhy}m5glJN5fpDsOd=_5x% z{HDvZre)46&g0e%{pDoXaPf-VTe-XJSGLU(Jj!tDNp8H)+;exzHoZ2kko_Ba_xXNR zr;WUGZIbufwyah@qN*6%Wc!qrE&9UV%v{IGH{4)eXE1ondwSC@^_ATTjUX{kS3j3^ HP6n#41T;ja7{`{nSVx}kGBaHfL-ebj~IiH0Z>Lc zTnxUwJMih&2|%EQS6U|kv1XoPod5(CY!S{m>r+j*=O9=Bwtz#di!=odF0-*#<4CE9 zVx?pp001!I`5ij{dA!xI(fW_$2mL!^6pzKn|9UV-Z!0sM)nKWPAAke zPo!kr0_xk#=m|Jo+3Lcl`!F7vXz}Ga0!{QM`Sj7yp0GwaieC>_)WqEMFc-000000000T YzhPoi+DKpawEzGB07*qoM6N<$g7>N082|tP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..66ec5c34ac6a3535fffbf2cc08cd4b497478599f GIT binary patch literal 635 zcmV->0)+jEP)H-t#d^Qe*RmT+&hi000000NBn~xW`&+DdoDZ zcFk^I*Peu$88pU zm+>Qj(arAlN9m0fMk{u+Z$8^YX3rjK;hLpPB7-{0I>Y%9;Iv$+g1c$8pc!jYN&~z` zH0x`nH<0~RGhO((aEn3xq)$PM9N7pN`?T=6D60Wv8R*1a?i7aF8>_1)xi|MpPyhe` z008hT*hXz`-}XOudyjq*i)xZ5H*KyKWJru%(NU%~P8W*cv+;eUNbQS#6h#R8Bo)GL<-@CY;`<+4iOSAEd9oUs-C15+^5cTqjjyA-I%2yv^vGt`Txn9MW-QZc-n4hX zp+i~NVXlTzq}x@fv`c?kY`@~D>89N$6W$EBo;UEjPMk_A<;=ICcbS-uLJsLX*_ab= z8s{5;sx$`c-;#z1LE6kS-3Ip-VS1v(PM4;6!b-Tvirky{b#%M7jfV$~TF*5S8iME| z+RXNreP~hF4a~_w&aVN-(YC^Si2pCiTTE}9LzW)^0000000000000000000$Hot}N VNSpB~L$?3`002ovPDHLkV1gtRCv5-# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..527667d5233d35bcc2d9edd558a3bcfb3d021868 GIT binary patch literal 377 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9cba4!+nDh2#;-qE;p0>nY zo6R5ob3YaPjeWC^TEnffFWzr||5>Clg{{-en-QpO-?W)CXI6| z`o8+B%n?SLqq4b!^|ut+Cq_MvZmn|)|7Rllmy08O(f=Ds&$%CNsVn)eUGq6^-PWwd z@kTxlpF?zxb*P_I*FQ0-$@!*?TB%kU*(LI1@~2?mW#tz?wr#xl zCp%mY==f{SUynZgnSUoF;_Xi#={{Tk`7XzuCAT$CF*9olGi85mzKe_X?P`ZEal@%R z;&rq}k3HfiWdSPR+>O*}> z;r}kimh>e+<@}FZvW7 R@0bh{_jL7hS?83{1OQolpR51? literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..317b8b9ff8094162ea10dcf319976a4fbbdcb084 GIT binary patch literal 707 zcmV;!0zCbRP)CFgTM+K^OpL+UyGZ0b74=M8Z!4he^N?c2j{lW z1Tjx)=~Rp8`zK)l0001h&&2f_s=b?gZj$2I+SvZ6y`+mwM`XIA2E;rsrcRyX@B)h{ zFnNtMiU)>fL)f+_G@VnGQ(i-^1+~s4u~rw^*b}V)iSdD8iAGj5kc|haHWTOiH+{$$ z!2jg-0H|8NUE>PW;`3mwTUI2uS<07F&Cq8HH5OvyO#Fqq-Vv zZ~+}BV-2>#-RrG}rqO@Y5Xs3LFf-hr=ZapVU1dxFqpH*0E{5dVm$|h=qSk7?o*CEF zg4$RZhzoJJQ=xW0B6L437-Nm;jNZ03H?>8y>Y%>{Y2U@PU1GG`(}gCo8$DeiV>lzV zpw|)UDLiPBK=J>_)?jK~{9xMO= p0000000000000000001BBfsJm85}M=eUAVD002ovPDHLkV1l|`JD30f literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_1_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..1562d40dfb38bb878a33fe128b0a2095a9cc1a8f GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9dba4!+nDh2VVBTQ`o`yuT zuWI}LPuy`@PD!z?_p)9o&)xsFOY@{G)dXIF_1~^dRe!K@>o<8<7469u{cl*#)u!B? z&C8Z>!N1$g%qnBvwgvBjf>)!WP5YSzU#`w!hW8%hv*dTe6Jyg3)OiQ|jJ*){ zV&SR35?7+8%Qo{)TX0NgQSi;L*XM7#E_8*RU;cv-8w10S`RnqW&$cbyAAIGxNcQrK zcaG`tM_qrdPy0S8f5ozQl4o{tEH8W>FVdQ&MBb@08t{OCIA2c literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_1_1/00001.png b/tests/snapshots/nanosp/test_sign_psbt_against_wrong_tapleaf_hash_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_highfee_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_highfee_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_highfee_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_highfee_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..00a5104dc2e31fe6a3a24ef39a5254c54f4bb02f GIT binary patch literal 392 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{t3ba4!+nDh2#U{Q+#PebCZ zm%cmxPb`{lXK>hnQz5%`$>aaF8#P|EnP!=(0(Cvu>f++E=lr3A+rM)znG(eNccW>? z=6m+{)D2XWET0Q4yQT4Vm-F`JvP+)@25;S6`Eftf75$BWBa*J0UCAqb{Z#SR!>x0R zzxCF2ZD2U+zHx&f|0Mssj!8}b@>%|$_{o(KyxI4i^0%nM^D5h0Jsfj`{$+T4*UQS6 znEY`4-cLa5Yii%l2(i6=v+3Z9d6#7~(%;#o-ts;Ft*1}=`jQjIuOi>f_gN~nYSWe* z#`f1XJMHOsyW!I|nTO)FTg0yDD!6wXx^qpWq=fN`_>3vSPLVoQ_aD!1QfmLl@SnB9 za&FT$wWk-IpFa}3THm|UGJ5w*IqUPm#^T}+mzq@{FgW4ze}>JK#dKP) zNf80eSi!kJrh!`A^5~uH-vi2mP4yrY&**#io}CUjM^2Z5*P1ScBlEN&lXLwkrF?B{ zyS*l;`=qsA)7pfM;q}+ zMfPx(T2*s=L>9}lp)6T{CsUS3D>oGvXpF_U8ate-@GKfWC^R4d>@!ni@X10msPj!BV7o=UmFm)0mo^3D%`wS=k%bmi23` zv5hUhBdR%{;dUp`n-^>!*Lssn5w(#n#XH~5K}B#<5tU$-1nKJQ*r|+V+0;JEp0kdr z!KBs-Mz;E~V?6BHvZI_1(sQadIXt(D`p|H2FnX>RT0?GFe_Ad`CVbqsS;cr;Qg|$4 zhMQA~51EqU$GH?Xouy?X_brxMS3qr-)pC2-MLGwt+p+lA+CGq8WG;!f+a>8bzU6>; z-tiP`-@{351J^aG=0&xNNN28SBE-lho&$G7-pj*p#PXAF510;HNH^Y50{}oacK(Z! zWbH`~#7S~Syn*bepsHO7uv3jJVUeUNNkTdYM9zrqI}p`RX-Ve*IcFtrVc8(>`X+qw xN1u6kR|h}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_highfee_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_highfee_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..3fa33760f370a269cab85fed47877808feef9af3 GIT binary patch literal 526 zcmV+p0`dKcP)E_wA(_j0uwservfYB@|DLKfY8Ofs-Npa_00000;IH^N9l$u}TsXGY z9*kthlN}H@eeA_&MNVO?<+?(*X=h8v40*f0c7Co`32epYZA(fMZI-{KesK z-n|2owtlhcz4zXN46mV=_#F!|0001ByV(V!`)*NG3+xLwp+gh7Mq9uE{G$OJG&1&mo zZKmK%oXR^OIjESr11iHdnGguy{Q50b zQ&?nWQ{=Ix<|~%>U0ax?5mYa@aA$O2-?W)H}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_highfee_1_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_highfee_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7a139ba8e4ff7aedba26d951d1dfd3b93724813e GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|dl>8#sD=T_S=zFxZE zi{u5N7iy=zN_2SKFpN-O70nXpJ#p;3edbz`5c9me4IIo23^tcJZwG8m%gh)1ojqw= zWXSe~)yw}~zEpmxBK!hxp77ayIUB+~B(_O!my)~k-c--7YcpKPWanTb7xm z>ruN)_HocE=lfG8wVnH=C(OQJeV?lF+Vf#fVaM0S_o^+OWg8yuJlmS3j3^P6@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..fb4c2106140c43fa3b221c5fca4409b1f9df3a69 GIT binary patch literal 482 zcmV<80UiE{P)n#41T;ja7{`{nSVx}kGBaHfL-ebj~IiH0Z>Lc zTnxUwJMih&2|%EQS6U|kv1XoPod5(CY!S{m>r+j*=O9=Bwtz#di!=odF0-*#<4CE9 zVx?pp001!I`5ij{dA!xI(fW_$2mL!^6pzKn|9UV-Z!0sM)nKWPAAke zPo!kr0_xk#=m|Jo+3Lcl`!F7vXz}Ga0!{QM`Sj7yp0GwaieC>_)WqEMFc-000000000T YzhPoi+DKpawEzGB07*qoM6N<$g7>N082|tP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..6f55ea25dd62a7100693c63fb8a6cf2d73ff36bd GIT binary patch literal 536 zcmV+z0_XjSP)T-Mq zD5BH7{*YL$DEzX$ytnBGmAo2Ex$}}%#X2omYYXcupir_W1hu*;r!%feQxb4jv^v)$ zR>BWOU+_J`OMX|M7?zO38w%6001zG zmTqXY10!?p*;7pdPsXX$-HW3$#oC0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_1_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..527667d5233d35bcc2d9edd558a3bcfb3d021868 GIT binary patch literal 377 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9cba4!+nDh2#;-qE;p0>nY zo6R5ob3YaPjeWC^TEnffFWzr||5>Clg{{-en-QpO-?W)CXI6| z`o8+B%n?SLqq4b!^|ut+Cq_MvZmn|)|7Rllmy08O(f=Ds&$%CNsVn)eUGq6^-PWwd z@kTxlpF?zxb*P_I*FQ0-$@!*?TB%kU*(LI1@~2?mW#tz?wr#xl zCp%mY==f{SUynZgnSUoF;_Xi#={{Tk`7XzuCAT$CF*9olGi85mzKe_X?P`ZEal@%R z;&rq}k3HfiWdSPR+>O*}> z;r}kimh>e+<@}FZvW7 R@0bh{_jL7hS?83{1OQolpR51? literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_1_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..f67a3aa62b644f4617ca3a0f703564e326a57401 GIT binary patch literal 781 zcmV+o1M>WdP)^jC3a@LI@#*5JEna^E}V<^nV59 zU&mMU08)14pYdrI|Dy+BqQ*mA4aad@?Z=Mc=w* zKaW@e!dcF_Kc=DdxE0Zz#P0#=hE4S-NG+$w?mdwK$ah|*f-9%j!k&2wWS*ISQcC{< zZR4Dv?vvJbYR%~9Z^DESLI@!Q(N(SVXcHZ`orY!%?XJQ$9dtEL-V)G%2g8PL8lhPW zDxE71FZtx69%1mQ$LdvfcOJy7ft4SD>0Cxt8&wm+8}&umOVtc+T=zxu+9Re;b2SAG zsKWJBtG#QSU4}e^ED5WIis>V+XRv-Vus)6v2u5<5Y#Ep?WTNsRaY}XqEw}S8K92VPLXWTlV#+vJibsi&urY-h^k&jg1Wm zpfRj{(o!E%mprr1tJ((GqA$M6FIXAhfJhQQKgitSef&f}taFvByTRFCari4%^xwdA zHDj=WhLahCTUqAb@{nB@6-48_)rHSaxV=j_5>EjH2zwMRL9IABg`4e5X#X#$p3!4~ zLR&sDh@*p59c!++++H6lt%+hi2iEPv-1!@Dr-P{K@CvX}P&q!}4iJE5Z17OKgz^14 zg_{9bQwu7m$z*jfwMr=WWdkQxFviX$3j#1~dkl}QdU=6fmM~Bl!3Z zyThUFs{UKTekC(g&=r6jYMc`$E1e+iWJIwu+4WaoWq!TZS>AHO0>X2ye+<2m7#+?^ z9`Sy_C-aCmWB_-}(}&D`LI@%2smnxxgZV^o0q1E%zNFWr^q~3&I&obJt9?ly{_3W) zWcxsP5DSI@2!;U&<~5}V>s|Q#?JF|=%lHJJG6e<001!e5AwhftB>0oI3NkF600000 LNkvXXu0mjf;gMvd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_1_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_1_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..184d002d4bfc09f28f8c1b5cada107075059130a GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2VVBTQ^j)uhb zw|sZ}pSZ(YevzWN!1C2H$;wKk2Q%{!GZ5FmD zKfP-Id$DWM@;v&pFDP3#7O%>>ddIHABlfAmj*Snth*hw+#D6vujC{%&k(H!Ik$n^|d5e5B30 z)>!@`gT0!z_M7E(`diOfFPpoK^=!mdKI;Vst E0LU7eEC2ui literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_1_1/00001.png b/tests/snapshots/nanosp/test_sign_psbt_miniscript_multikey_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..fb4c2106140c43fa3b221c5fca4409b1f9df3a69 GIT binary patch literal 482 zcmV<80UiE{P)n#41T;ja7{`{nSVx}kGBaHfL-ebj~IiH0Z>Lc zTnxUwJMih&2|%EQS6U|kv1XoPod5(CY!S{m>r+j*=O9=Bwtz#di!=odF0-*#<4CE9 zVx?pp001!I`5ij{dA!xI(fW_$2mL!^6pzKn|9UV-Z!0sM)nKWPAAke zPo!kr0_xk#=m|Jo+3Lcl`!F7vXz}Ga0!{QM`Sj7yp0GwaieC>_)WqEMFc-000000000T YzhPoi+DKpawEzGB07*qoM6N<$g7>N082|tP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4d888576f634186774863daba1124e4b565d5197 GIT binary patch literal 465 zcmV;?0WSWDP)Z=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjff}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_1_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..84d33c06e33dd3e279715f08de0c1d84388d341f GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2VAYZcrPebCi zH)?nOd)!IoS8LhQ(BQTE&Hs54UCF6pxg0<}2kv`mE}gO_J@G-VZKHtGiG}yKvDIDs zoow5h;nYT4gTbIkIu2a?votJj>AD_VgBcC1%?%t&6ciP>5|00=rw+-EH zzhLL*E|}5P+P7nJ&87q1T)*ye#HG}*PgxnM{#~qg{fzWUsd_;HGp8(X3n>rWn^@BJ z|Lt6M28M*!rG7(5MD=lr*%Q!g1HsauC0{$vm$J6&9!SH zPjtUrooklQP<_fJ?$kxOHBT4KUaPyij_Z`m`5)J}%DH}7sBIg(-=ij`?%_j%Y6C*tc(|+KIF76QI1W_@FImOn6`&ldR)cblTc|p@>$r|qZEeYX zwpanmSzzw>^&mYSMRX?X&ww)EP(1{t=Jd5^&&mMYGnZSzwWr(4NS-Ej_S}C;DPIf6 z&i4fOoQ#gsD5Lj3gb5*p5JEnaC$FLI6~MQ))h)m1+vqHrL*TuQtRiTQdi~-{PXxoYA@`?%+xjV5cDpAZ+L#=W!IfdmqmL^@eJC912 zR)Zt4L^4~9+fxx!AXZ(ejYK8yY705~=9*7++0Ha(^eB1@0w?bt%Q^X>jWm>PUGLaL6+FheZ2UC7s44RprA3N&XQweuODQ{hl1Z42_b|KLI@#*5JCtcgb+dqAx-=O X@S5L@MWyCG00000NkvXXu0mjfU)V=e literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_1_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_1_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..78a269ed2349ce48444a0589b0b7a0b3b1644fe3 GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9dba4!+nDh2VVBTQ`o`%G* zuWEPxd+hU;U!>F~yFA#rXY>E+S9f$A%@|*S^`HLh!hb+n>F@ll*H%nC^SMXvz{coj zdp!dh9REjcx%FZ}<;^C!i_8{kO1iUew?}2qPc`0=c`#M=2J@NBcdNIiRWg6lb$nXx z6uqcj=ew!E#MJBw37lDHRIFyk*8kPqIc&7{UZCG^U=zEKKonJf7e*exA>ke>TvJZ zi6!Z=Z|+P@4>R`LeynTvJiY91dv=y^o|^jWQ{MBJwmbLUxj$V!)!OPpKu_qhDR!*9 z)eZNA&eUHqH(Y;ZyOnm5-HY|^7RPhV4jozHXp<$-FXf{2d*X>Yl}-G>z(WQ;pPAmj VmUTZUe`6C!*wfX|Wt~$(69CXZrl$Y^ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_1_1/00001.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..fb4c2106140c43fa3b221c5fca4409b1f9df3a69 GIT binary patch literal 482 zcmV<80UiE{P)n#41T;ja7{`{nSVx}kGBaHfL-ebj~IiH0Z>Lc zTnxUwJMih&2|%EQS6U|kv1XoPod5(CY!S{m>r+j*=O9=Bwtz#di!=odF0-*#<4CE9 zVx?pp001!I`5ij{dA!xI(fW_$2mL!^6pzKn|9UV-Z!0sM)nKWPAAke zPo!kr0_xk#=m|Jo+3Lcl`!F7vXz}Ga0!{QM`Sj7yp0GwaieC>_)WqEMFc-000000000T YzhPoi+DKpawEzGB07*qoM6N<$g7>N082|tP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4d888576f634186774863daba1124e4b565d5197 GIT binary patch literal 465 zcmV;?0WSWDP)Z=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjff}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..e0409140bae521e1f652a4d827e83ed169ce2a92 GIT binary patch literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=lvba4!+nDh2#U{Q+#Ps799 z<>n9nxj)jY-Ei1Iall>83Vt41!;qT4W{%GR;u_*%y+OgYLaj8{I&l?b)y9Prz>hk1sX+)K@+x0MV9tJ#)JIg}d1 z5!SGs|5y8ZmfVViTna6>yF4_Ha#i?WIUsNP!R4Fn#9IH9|Ao)?we&N|-M9O?QTJkz zr0M3rtJ34dzopmhVGg)*GxPJ-8Pz_4)3V{cOGDUasE7R`s3dr4n|tZOd-s{upCb*)N`VY-|6U*PrbEUEDMM;K|L5 zXG9k~`SMu2VOQ(di>tORTeoy`)&HthuVW&s!;G5k&GQS7|FchE7J&sE14H$1*0q0l T*ZrCD8Z7AP>gTe~DWM4fMuWRv literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..3c91cc8f18b96a7554a78329eca981b446489055 GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2lpiq;7Ktp2I zuFmiFLggPTwjrk^*JosDYRnm#ssvH5XRy6MuNqBQ5oQf3>*qN^unan%}xvhO$>F!}G*DJRtv zf5)xf@;&aO*~xR;CwW#>KTc1N{pz_xD6ZLg$>yllX}ixF-uBxpnmsLZ;#0S%byz&7ci`ULW%mN7C;Inpoa9{@pNt`rm@w08Q1)b8J%iYN{@1J-MKC@=T+q`^&9$ z7q`b9xj!$B$uB*?ZW;RSytl2~t#`h;nrS|lRnvOy`m~SsKPL6(eV09Uc7NTK(kX>H z&m8`DrcIxF{9>i#*}ZE{i%mOT@VV`KNzmhc@eR*bzpq&>Qus=xD{S#{ZU2<7cbVZK c$iR^Im+AhDqGuahTmnI&p00i_>zopr0O=CWG5`Po literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..84d33c06e33dd3e279715f08de0c1d84388d341f GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2VAYZcrPebCi zH)?nOd)!IoS8LhQ(BQTE&Hs54UCF6pxg0<}2kv`mE}gO_J@G-VZKHtGiG}yKvDIDs zoow5h;nYT4gTbIkIu2a?votJj>AD_VgBcC1%?%t&6ciP>5|00=rw+-EH zzhLL*E|}5P+P7nJ&87q1T)*ye#HG}*PgxnM{#~qg{fzWUsd_;HGp8(X3n>rWn^@BJ z|Lt6M28M*!rG7(5MD=lr*%Q!g1HsauC0{$vm$J6&9!SH zPjtUrooklQP<_fJ?$kxOHBT4KUaPyij_Z`m`5)J}%DH}7sBIg(-=ij`?%_j%Y6C*tc(|+KIF76QI1W_@FImOn6`&ldR)cblTc|p@>$r|qZEeYX zwpanmSzzw>^&mYSMRX?X&ww)EP(1{t=Jd5^&&mMYGnZSzwWr(4NS-Ej_S}C;DPIf6 z&i4fOoQ#gsD5Lj3gb5*p5JEnaC$FLI6~MQ))h)m1+vqHrL*TuQtRiTQdi~-{PXxoYA@`?%+xjV5cDpAZ+L#=W!IfdmqmL^@eJC912 zR)Zt4L^4~9+fxx!AXZ(ejYK8yY705~=9*7++0Ha(^eB1@0w?bt%Q^X>jWm>PUGLaL6+FheZ2UC7s44RprA3N&XQweuODQ{hl1Z42_b|KLI@#*5JCtcgb+dqAx-=O X@S5L@MWyCG00000NkvXXu0mjfU)V=e literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..78a269ed2349ce48444a0589b0b7a0b3b1644fe3 GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9dba4!+nDh2VVBTQ`o`%G* zuWEPxd+hU;U!>F~yFA#rXY>E+S9f$A%@|*S^`HLh!hb+n>F@ll*H%nC^SMXvz{coj zdp!dh9REjcx%FZ}<;^C!i_8{kO1iUew?}2qPc`0=c`#M=2J@NBcdNIiRWg6lb$nXx z6uqcj=ew!E#MJBw37lDHRIFyk*8kPqIc&7{UZCG^U=zEKKonJf7e*exA>ke>TvJZ zi6!Z=Z|+P@4>R`LeynTvJiY91dv=y^o|^jWQ{MBJwmbLUxj$V!)!OPpKu_qhDR!*9 z)eZNA&eUHqH(Y;ZyOnm5-HY|^7RPhV4jozHXp<$-FXf{2d*X>Yl}-G>z(WQ;pPAmj VmUTZUe`6C!*wfX|Wt~$(69CXZrl$Y^ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_1/00001.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..fb4c2106140c43fa3b221c5fca4409b1f9df3a69 GIT binary patch literal 482 zcmV<80UiE{P)n#41T;ja7{`{nSVx}kGBaHfL-ebj~IiH0Z>Lc zTnxUwJMih&2|%EQS6U|kv1XoPod5(CY!S{m>r+j*=O9=Bwtz#di!=odF0-*#<4CE9 zVx?pp001!I`5ij{dA!xI(fW_$2mL!^6pzKn|9UV-Z!0sM)nKWPAAke zPo!kr0_xk#=m|Jo+3Lcl`!F7vXz}Ga0!{QM`Sj7yp0GwaieC>_)WqEMFc-000000000T YzhPoi+DKpawEzGB07*qoM6N<$g7>N082|tP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4d888576f634186774863daba1124e4b565d5197 GIT binary patch literal 465 zcmV;?0WSWDP)Z=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjff}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_1_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c94c15959db785216a68125bd89876bcf975a517 GIT binary patch literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=lvba4!+nDh4L#dXaJJPnCu zo6H~nmG3OK6jy7R!X&Gadh>s*rKqawsuD$@CI)-$rBi}Fy=!f@f6vz<;KcWLo1sPe zp8NM?GrTm9N~||{+M8`Xf5AJ==+4(2-cy%Xew@$v$Wy02ZlkvOk<6bjK8U4$-Xoj* zrMJ!^kwH)X=%T(Kia%2hX==WxR^D-{L=T|mun*A+A*JJJj_cPb@ObbgdB}Di+`tvrt2wPtC zzZ^X$bQC$YIfefQ4CZQeZJ-jVM>?Dovs5-EMXe_=Y- zVe*^a?A$*2vVMbO#mcjJ7kG>=-go0Py?DRJ@PmukCld~%gTe~DWM4f9YMQN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_1_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..fda030d56c962bf18cefd5b175cf5f284825a115 GIT binary patch literal 767 zcmVJK#dKP) zNf80eSi!kJrh!`A^5~uH-vi2mP4yrY&**#io}CUjM^2Z5*P1ScBlEN&lXLwkrF?B{ zyS*l;`=qsA)7pfM;q}+ zMfPx(T2*s=L>9}lp)6T{CsUS3D>oGvXpF_U8ate-@GKfWC^R4d>@!ni@X10msPj!BV7o=UmFm)0mo^3D%`wS=k%bmi23` zv5hUhBdR%{;dUp`n-^>!*Lssn5w(#n#XH~5K}B#<5tU$-1nKJQ*r|+V+0;JEp0kdr z!KBs-Mz;E~V?6BHvZI_1(sQadIXt(D`p|H2FnX>RT0?GFe_Ad`CVbqsS;cr;Qg|$4 zhMQA~51EqU$GH?Xouy?X_brxMS3qr-)pC2-MLGwt+p+lA+CGq8WG;!f+a>8bzU6>; z-tiP`-@{351J^aG=0&xNNN28SBE-lho&$G7-pj*p#PXAF510;HNH^Y50{}oacK(Z! zWbH`~#7S~Syn*bepsHO7uv3jJVUeUNNkTdYM9zrqI}p`RX-Ve*IcFtrVc8(>`X+qw xN1u6kR|h}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_2_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73bcd7be8129111556869a06498a505ad48fa2b5 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|6gw#apSdL;!B!fP0>-o7)vc-~Xa8S7b=o^Q!o z6dt*)SV8IVxq~dK9-)(8q?G;nHTjvAV_89Av#SIH!vp)jyLi`{>HM9WROz?st;p)? z3u~R(-R8`FeQo-$>-}3!rQI~X@k;4UpY?RB*RI|n+vKlSOms8;E8KT!>*R~8#Y61Q zF`K3QnYH+N3GeRfEK}BQG>N!-Cu@^g+Mn-_Ht*QN!aJ$Ty>#hS)&q8i>7~Dx<+zsz z-TS@zWZA3Qr3Wm6ziEYNS+;qpy+ j;$M#xd0?O*gBQgTe~DWM4f_8qIv literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_2_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..fb4c2106140c43fa3b221c5fca4409b1f9df3a69 GIT binary patch literal 482 zcmV<80UiE{P)n#41T;ja7{`{nSVx}kGBaHfL-ebj~IiH0Z>Lc zTnxUwJMih&2|%EQS6U|kv1XoPod5(CY!S{m>r+j*=O9=Bwtz#di!=odF0-*#<4CE9 zVx?pp001!I`5ij{dA!xI(fW_$2mL!^6pzKn|9UV-Z!0sM)nKWPAAke zPo!kr0_xk#=m|Jo+3Lcl`!F7vXz}Ga0!{QM`Sj7yp0GwaieC>_)WqEMFc-000000000T YzhPoi+DKpawEzGB07*qoM6N<$g7>N082|tP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4d888576f634186774863daba1124e4b565d5197 GIT binary patch literal 465 zcmV;?0WSWDP)Z=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjff}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_1_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c94c15959db785216a68125bd89876bcf975a517 GIT binary patch literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=lvba4!+nDh4L#dXaJJPnCu zo6H~nmG3OK6jy7R!X&Gadh>s*rKqawsuD$@CI)-$rBi}Fy=!f@f6vz<;KcWLo1sPe zp8NM?GrTm9N~||{+M8`Xf5AJ==+4(2-cy%Xew@$v$Wy02ZlkvOk<6bjK8U4$-Xoj* zrMJ!^kwH)X=%T(Kia%2hX==WxR^D-{L=T|mun*A+A*JJJj_cPb@ObbgdB}Di+`tvrt2wPtC zzZ^X$bQC$YIfefQ4CZQeZJ-jVM>?Dovs5-EMXe_=Y- zVe*^a?A$*2vVMbO#mcjJ7kG>=-go0Py?DRJ@PmukCld~%gTe~DWM4f9YMQN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_1_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..fda030d56c962bf18cefd5b175cf5f284825a115 GIT binary patch literal 767 zcmVJK#dKP) zNf80eSi!kJrh!`A^5~uH-vi2mP4yrY&**#io}CUjM^2Z5*P1ScBlEN&lXLwkrF?B{ zyS*l;`=qsA)7pfM;q}+ zMfPx(T2*s=L>9}lp)6T{CsUS3D>oGvXpF_U8ate-@GKfWC^R4d>@!ni@X10msPj!BV7o=UmFm)0mo^3D%`wS=k%bmi23` zv5hUhBdR%{;dUp`n-^>!*Lssn5w(#n#XH~5K}B#<5tU$-1nKJQ*r|+V+0;JEp0kdr z!KBs-Mz;E~V?6BHvZI_1(sQadIXt(D`p|H2FnX>RT0?GFe_Ad`CVbqsS;cr;Qg|$4 zhMQA~51EqU$GH?Xouy?X_brxMS3qr-)pC2-MLGwt+p+lA+CGq8WG;!f+a>8bzU6>; z-tiP`-@{351J^aG=0&xNNN28SBE-lho&$G7-pj*p#PXAF510;HNH^Y50{}oacK(Z! zWbH`~#7S~Syn*bepsHO7uv3jJVUeUNNkTdYM9zrqI}p`RX-Ve*IcFtrVc8(>`X+qw xN1u6kR|h}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_2_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73bcd7be8129111556869a06498a505ad48fa2b5 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|6gw#apSdL;!B!fP0>-o7)vc-~Xa8S7b=o^Q!o z6dt*)SV8IVxq~dK9-)(8q?G;nHTjvAV_89Av#SIH!vp)jyLi`{>HM9WROz?st;p)? z3u~R(-R8`FeQo-$>-}3!rQI~X@k;4UpY?RB*RI|n+vKlSOms8;E8KT!>*R~8#Y61Q zF`K3QnYH+N3GeRfEK}BQG>N!-Cu@^g+Mn-_Ht*QN!aJ$Ty>#hS)&q8i>7~Dx<+zsz z-TS@zWZA3Qr3Wm6ziEYNS+;qpy+ j;$M#xd0?O*gBQgTe~DWM4f_8qIv literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_2_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_multisig_wsh_v1_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..75480f35c8d1509e500ff5b2de620a44c58b52d5 GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|$OV9NWYgHeZC%h%v z%lpDhmn(8s{(sI0wW;ja5qmBpwQ}!7+lj}jbG|0tp0i+9$|ieX#j7dxM%NAqg`T+N lHYu`sp@%*&RFHwe8FBWN1>1}kvm5~ld%F6$taD0e0suD2tR(;d literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_0_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..99f53dd6c681cb5c62096f7e222d26ab67c712bf GIT binary patch literal 780 zcmV+n1M~ceP)` zEU^NFvB21GlTcdR^XN$C?*ZwCO?4|sXGWj9_sn#_G4nDN>^WUGM&dMRvu6HDDg8_w zJI)E_KIv_zUPQ0I2@^sHA%u{Ks%mAY*jx|{ijNzM0)+&^J0(D(gTwvh4gl|hL-$lT z5IQBewV=|t;_z~uT+AbkIO7QY^f^fMie-9-CeZ+IfBZC$;$^8-&q&t__q%~8QyCX; z1$ZS)u$kE=aEW<0?j8>j+|_?UX}XOmN;9Yy)Z%|7A(lC@rq(mNC90tsF{Qn5CZa5E zFp{33M>wEA{CAFd1{Kq0LzL-Tr1C1=YDLLS*j(4(&Xz0_h$Pq+s(NUA*A*`;O(lnM z;@4}{nwXSV#x=|3_M!tk49nbMEIJ@ykPnE-xGY38Cq||ZZbh57<)yrMsylr~j72pZ z5xidJb)hY;p6-Y!CL}iqLC1)zH{KO-_wEPZxDbSh!Zoa&{?5rsxIqt3jxe{5)?AZbJl}ZLOulY35Tjru%Q{IigzCu!y*SP$tkHM+1S8aMRN6DWx=R-1B z&p2^_IRUd-QZv^|-$7vgVK9 z0Op2Ms`mgraL;2Xf)~+Z0mTJsa92P&;$yv*MUu=VYApIj?0Z<^KV)#0iv9Pe8bSzp z3T4&hsuC7KiO&ivv+h$+X*>PZjo02gw+}cQzm1>}U3-1yb@1SW7#P%x$NqyI0J3;} z^r;T0itCkqu}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_0_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..905cdba55118864eb63efbf4c62d6a6ccac3648f GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}6ba4!+nDh3gW8Yx~9*01y zSH3m>m4E7Oc5pSZnBdy%`y=0V?h2%lE1kNhV)z*Ex zQQtk1aasCuJMP#9S(lql=lJG|i#xvjcYXN{n>_uk6El_m8*l9P@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_v1_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_v1_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..75480f35c8d1509e500ff5b2de620a44c58b52d5 GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|$OV9NWYgHeZC%h%v z%lpDhmn(8s{(sI0wW;ja5qmBpwQ}!7+lj}jbG|0tp0i+9$|ieX#j7dxM%NAqg`T+N lHYu`sp@%*&RFHwe8FBWN1>1}kvm5~ld%F6$taD0e0suD2tR(;d literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_v1_0_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..99f53dd6c681cb5c62096f7e222d26ab67c712bf GIT binary patch literal 780 zcmV+n1M~ceP)` zEU^NFvB21GlTcdR^XN$C?*ZwCO?4|sXGWj9_sn#_G4nDN>^WUGM&dMRvu6HDDg8_w zJI)E_KIv_zUPQ0I2@^sHA%u{Ks%mAY*jx|{ijNzM0)+&^J0(D(gTwvh4gl|hL-$lT z5IQBewV=|t;_z~uT+AbkIO7QY^f^fMie-9-CeZ+IfBZC$;$^8-&q&t__q%~8QyCX; z1$ZS)u$kE=aEW<0?j8>j+|_?UX}XOmN;9Yy)Z%|7A(lC@rq(mNC90tsF{Qn5CZa5E zFp{33M>wEA{CAFd1{Kq0LzL-Tr1C1=YDLLS*j(4(&Xz0_h$Pq+s(NUA*A*`;O(lnM z;@4}{nwXSV#x=|3_M!tk49nbMEIJ@ykPnE-xGY38Cq||ZZbh57<)yrMsylr~j72pZ z5xidJb)hY;p6-Y!CL}iqLC1)zH{KO-_wEPZxDbSh!Zoa&{?5rsxIqt3jxe{5)?AZbJl}ZLOulY35Tjru%Q{IigzCu!y*SP$tkHM+1S8aMRN6DWx=R-1B z&p2^_IRUd-QZv^|-$7vgVK9 z0Op2Ms`mgraL;2Xf)~+Z0mTJsa92P&;$yv*MUu=VYApIj?0Z<^KV)#0iv9Pe8bSzp z3T4&hsuC7KiO&ivv+h$+X*>PZjo02gw+}cQzm1>}U3-1yb@1SW7#P%x$NqyI0J3;} z^r;T0itCkqu}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_v1_0_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_large_amount_v1_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..905cdba55118864eb63efbf4c62d6a6ccac3648f GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}6ba4!+nDh3gW8Yx~9*01y zSH3m>m4E7Oc5pSZnBdy%`y=0V?h2%lE1kNhV)z*Ex zQQtk1aasCuJMP#9S(lql=lJG|i#xvjcYXN{n>_uk6El_m8*l9P@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..05ccaac79741aac66e30b935ffdee643ba8e1b43 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Jr`_=;_!R_^H9`=wn<4ooIqU_I)Z`|U##Z%AYRL;xirLie-7Wb zneWTLu$FXsoZH#5(#&i3ybCsqs%I9S3HY@|S0JDtB$JLl%jxcqAO;r(;iUPwLN|*i;g<@5<7jB47D? zn&0)uRswC`7-!68T5TO~@ZxImEZM&&&c-gQ&%QVDenG&Km$H_Xe-c)(_EzV9bbfPk z+O?)xtWVBP-=>*&Kkp^WjQ0frelwo|c`PoJ!|=Tm%Vwy85}Sb4q9e07_i0YybcN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_0_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8efd1df120d50b84cd15a7884717514b7c131c GIT binary patch literal 724 zcmV;_0xSKAP)j{ZUbD*c$mB4IF76RI1Vu;-m;6$J3u&8>;~Z)vr!1iV@yYjcXiAC zJYok3X9d@OpM=umUPSL?{~3@L9I8h_syTh{*|ReMdFEv*xN^E499gGe%ro;(O6g~# zZk!X$bJ9Cby%qiZLzoak2qA>DQN6E%0;k!S@meBsw9LpD?+PuZv*OCOsubbfr#!%y z{)hqCWpN`T()vIF5WXlcu3~_$nwdAF>Wgt>yx!b}Yj#bl^tnUNUh}qNPs`mcO?qx}+GV_h2M}&ULP*LTmZV zaRy47jYG0n0a(h{0!4VD(+qJnYE54 zYw_ti9U$NBdXe`#?nKWCfZh8d?|0*U*Dli4Jm4E*@DM&B3%!?$lNp1h+~HocoFH1d z1?tC$4IPTG+4?c4;#Rz(&`1D+63qHcldjUmxQI09{f1i5X_Wv=3-Y6P*D%}l#i!}w zR;u$X^txux&b8v@Yr6jRJVYA2dAfNU6JN zy9Xrbj_K=bqU%@3a{8@;5JCtcgb+dqA%qY@2qA=!&)^>!)Ke!g;}B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_0_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_0_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..70f4c453def4bff430d638699a988c47376899e5 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`htba4!+nDh4LZQer$JPsEd zZXEgD|0MRuiVmlFLM9t8-}@Zu)Y{`4e7yyzhe7B22EGOEp_ivCC5fK2(SOZwOmF7* zjAo{kOQ)5tEsI$*@7aaRRt<)sy*F+6TvW~$m3|ZuzkBO}T)^L%-#bs}g&(Mk4*21h z;Zrj0=@zzCuePyC=QswMcFsNX>wf*Axafdg6*~_2N-!`yn73@p!mFBT`)hU1b8h{% z@z#uO_pDNveqFG=QD^p3g@vY366?zCUVUj!45`2M((}ipX<`ocm!?i-wAfN25q|Ep zQ+f3F$r>N{W7SWkrmJIJgt9|x}Wpr3)al1i|*b0buP7k#@Fu8w=Ni+ldt%f y{z&hI^_xKE>MI9?ZfCFRP*CuI!L_J;oT-G@yGywo8{GZ|g literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_0_1/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..05ccaac79741aac66e30b935ffdee643ba8e1b43 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Jr`_=;_!R_^H9`=wn<4ooIqU_I)Z`|U##Z%AYRL;xirLie-7Wb zneWTLu$FXsoZH#5(#&i3ybCsqs%I9S3HY@|S0JDtB$JLl%jxcqAO;r(;iUPwLN|*i;g<@5<7jB47D? zn&0)uRswC`7-!68T5TO~@ZxImEZM&&&c-gQ&%QVDenG&Km$H_Xe-c)(_EzV9bbfPk z+O?)xtWVBP-=>*&Kkp^WjQ0frelwo|c`PoJ!|=Tm%Vwy85}Sb4q9e07_i0YybcN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8efd1df120d50b84cd15a7884717514b7c131c GIT binary patch literal 724 zcmV;_0xSKAP)j{ZUbD*c$mB4IF76RI1Vu;-m;6$J3u&8>;~Z)vr!1iV@yYjcXiAC zJYok3X9d@OpM=umUPSL?{~3@L9I8h_syTh{*|ReMdFEv*xN^E499gGe%ro;(O6g~# zZk!X$bJ9Cby%qiZLzoak2qA>DQN6E%0;k!S@meBsw9LpD?+PuZv*OCOsubbfr#!%y z{)hqCWpN`T()vIF5WXlcu3~_$nwdAF>Wgt>yx!b}Yj#bl^tnUNUh}qNPs`mcO?qx}+GV_h2M}&ULP*LTmZV zaRy47jYG0n0a(h{0!4VD(+qJnYE54 zYw_ti9U$NBdXe`#?nKWCfZh8d?|0*U*Dli4Jm4E*@DM&B3%!?$lNp1h+~HocoFH1d z1?tC$4IPTG+4?c4;#Rz(&`1D+63qHcldjUmxQI09{f1i5X_Wv=3-Y6P*D%}l#i!}w zR;u$X^txux&b8v@Yr6jRJVYA2dAfNU6JN zy9Xrbj_K=bqU%@3a{8@;5JCtcgb+dqA%qY@2qA=!&)^>!)Ke!g;}B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..70f4c453def4bff430d638699a988c47376899e5 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`htba4!+nDh4LZQer$JPsEd zZXEgD|0MRuiVmlFLM9t8-}@Zu)Y{`4e7yyzhe7B22EGOEp_ivCC5fK2(SOZwOmF7* zjAo{kOQ)5tEsI$*@7aaRRt<)sy*F+6TvW~$m3|ZuzkBO}T)^L%-#bs}g&(Mk4*21h z;Zrj0=@zzCuePyC=QswMcFsNX>wf*Axafdg6*~_2N-!`yn73@p!mFBT`)hU1b8h{% z@z#uO_pDNveqFG=QD^p3g@vY366?zCUVUj!45`2M((}ipX<`ocm!?i-wAfN25q|Ep zQ+f3F$r>N{W7SWkrmJIJgt9|x}Wpr3)al1i|*b0buP7k#@Fu8w=Ni+ldt%f y{z&hI^_xKE>MI9?ZfCFRP*CuI!L_J;oT-G@yGywo8{GZ|g literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_1/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..05ccaac79741aac66e30b935ffdee643ba8e1b43 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Jr`_=;_!R_^H9`=wn<4ooIqU_I)Z`|U##Z%AYRL;xirLie-7Wb zneWTLu$FXsoZH#5(#&i3ybCsqs%I9S3HY@|S0JDtB$JLl%jxcqAO;r(;iUPwLN|*i;g<@5<7jB47D? zn&0)uRswC`7-!68T5TO~@ZxImEZM&&&c-gQ&%QVDenG&Km$H_Xe-c)(_EzV9bbfPk z+O?)xtWVBP-=>*&Kkp^WjQ0frelwo|c`PoJ!|=Tm%Vwy85}Sb4q9e07_i0YybcN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8efd1df120d50b84cd15a7884717514b7c131c GIT binary patch literal 724 zcmV;_0xSKAP)j{ZUbD*c$mB4IF76RI1Vu;-m;6$J3u&8>;~Z)vr!1iV@yYjcXiAC zJYok3X9d@OpM=umUPSL?{~3@L9I8h_syTh{*|ReMdFEv*xN^E499gGe%ro;(O6g~# zZk!X$bJ9Cby%qiZLzoak2qA>DQN6E%0;k!S@meBsw9LpD?+PuZv*OCOsubbfr#!%y z{)hqCWpN`T()vIF5WXlcu3~_$nwdAF>Wgt>yx!b}Yj#bl^tnUNUh}qNPs`mcO?qx}+GV_h2M}&ULP*LTmZV zaRy47jYG0n0a(h{0!4VD(+qJnYE54 zYw_ti9U$NBdXe`#?nKWCfZh8d?|0*U*Dli4Jm4E*@DM&B3%!?$lNp1h+~HocoFH1d z1?tC$4IPTG+4?c4;#Rz(&`1D+63qHcldjUmxQI09{f1i5X_Wv=3-Y6P*D%}l#i!}w zR;u$X^txux&b8v@Yr6jRJVYA2dAfNU6JN zy9Xrbj_K=bqU%@3a{8@;5JCtcgb+dqA%qY@2qA=!&)^>!)Ke!g;}B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..70f4c453def4bff430d638699a988c47376899e5 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`htba4!+nDh4LZQer$JPsEd zZXEgD|0MRuiVmlFLM9t8-}@Zu)Y{`4e7yyzhe7B22EGOEp_ivCC5fK2(SOZwOmF7* zjAo{kOQ)5tEsI$*@7aaRRt<)sy*F+6TvW~$m3|ZuzkBO}T)^L%-#bs}g&(Mk4*21h z;Zrj0=@zzCuePyC=QswMcFsNX>wf*Axafdg6*~_2N-!`yn73@p!mFBT`)hU1b8h{% z@z#uO_pDNveqFG=QD^p3g@vY366?zCUVUj!45`2M((}ipX<`ocm!?i-wAfN25q|Ep zQ+f3F$r>N{W7SWkrmJIJgt9|x}Wpr3)al1i|*b0buP7k#@Fu8w=Ni+ldt%f y{z&hI^_xKE>MI9?ZfCFRP*CuI!L_J;oT-G@yGywo8{GZ|g literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_1/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..05ccaac79741aac66e30b935ffdee643ba8e1b43 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Jr`_=;_!R_^H9`=wn<4ooIqU_I)Z`|U##Z%AYRL;xirLie-7Wb zneWTLu$FXsoZH#5(#&i3ybCsqs%I9S3HY@|S0JDtB$JLl%jxcqAO;r(;iUPwLN|*i;g<@5<7jB47D? zn&0)uRswC`7-!68T5TO~@ZxImEZM&&&c-gQ&%QVDenG&Km$H_Xe-c)(_EzV9bbfPk z+O?)xtWVBP-=>*&Kkp^WjQ0frelwo|c`PoJ!|=Tm%Vwy85}Sb4q9e07_i0YybcN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8efd1df120d50b84cd15a7884717514b7c131c GIT binary patch literal 724 zcmV;_0xSKAP)j{ZUbD*c$mB4IF76RI1Vu;-m;6$J3u&8>;~Z)vr!1iV@yYjcXiAC zJYok3X9d@OpM=umUPSL?{~3@L9I8h_syTh{*|ReMdFEv*xN^E499gGe%ro;(O6g~# zZk!X$bJ9Cby%qiZLzoak2qA>DQN6E%0;k!S@meBsw9LpD?+PuZv*OCOsubbfr#!%y z{)hqCWpN`T()vIF5WXlcu3~_$nwdAF>Wgt>yx!b}Yj#bl^tnUNUh}qNPs`mcO?qx}+GV_h2M}&ULP*LTmZV zaRy47jYG0n0a(h{0!4VD(+qJnYE54 zYw_ti9U$NBdXe`#?nKWCfZh8d?|0*U*Dli4Jm4E*@DM&B3%!?$lNp1h+~HocoFH1d z1?tC$4IPTG+4?c4;#Rz(&`1D+63qHcldjUmxQI09{f1i5X_Wv=3-Y6P*D%}l#i!}w zR;u$X^txux&b8v@Yr6jRJVYA2dAfNU6JN zy9Xrbj_K=bqU%@3a{8@;5JCtcgb+dqA%qY@2qA=!&)^>!)Ke!g;}B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_v1_0_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_v1_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..70f4c453def4bff430d638699a988c47376899e5 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`htba4!+nDh4LZQer$JPsEd zZXEgD|0MRuiVmlFLM9t8-}@Zu)Y{`4e7yyzhe7B22EGOEp_ivCC5fK2(SOZwOmF7* zjAo{kOQ)5tEsI$*@7aaRRt<)sy*F+6TvW~$m3|ZuzkBO}T)^L%-#bs}g&(Mk4*21h z;Zrj0=@zzCuePyC=QswMcFsNX>wf*Axafdg6*~_2N-!`yn73@p!mFBT`)hU1b8h{% z@z#uO_pDNveqFG=QD^p3g@vY366?zCUVUj!45`2M((}ipX<`ocm!?i-wAfN25q|Ep zQ+f3F$r>N{W7SWkrmJIJgt9|x}Wpr3)al1i|*b0buP7k#@Fu8w=Ni+ldt%f y{z&hI^_xKE>MI9?ZfCFRP*CuI!L_J;oT-G@yGywo8{GZ|g literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_v1_0_1/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_pkh_1to1_v1_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..760425304657bf273b8136e3420d3c5248b7561d GIT binary patch literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x2ba4!+nDh2#w9p|19*2uB zb_jplzvRu){&NOC6;q--3-&zc{_Vh{n!A_-sOiJ@kkHV@?t%{_Z5ae7%2aK)ypg^y z{vz{>psQ0Z2`;;1aqDNpvuU4nF89A&WuxQuhsz*5>F39e*qa9JPxmg551cpew&v0s zFHZ9b7wiz}wt6)C$z=XFlbY(xo6K3)HyD{-Ke=~#oc6<+Pm-gTEHKiHw^~{$zBXT? z`SSm=r;H2?N2=DmzGd_9YHD*_=<>>>yTzX)H{VO$cIL_ypZ5K~Cn*}~eEqV`Cr`d4 zRqE`zG`B||7Hv4%eZ#6;FK&Le{Q|KoK1>@=@0q!yrcK0v@mV`>7uRbO?kkGd59(>2 z_&j|+o7H_ww(S%0Z!VR2o3<~+y#9}D8I#Pk#P9^K2 z=S}F`H`{GR=RV_S3PO<@mpmuTY+lNt4-6z^u;Gk!umflBpK!TUkg%t#pUXO@geCxp Cz_pVA literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..fda030d56c962bf18cefd5b175cf5f284825a115 GIT binary patch literal 767 zcmVJK#dKP) zNf80eSi!kJrh!`A^5~uH-vi2mP4yrY&**#io}CUjM^2Z5*P1ScBlEN&lXLwkrF?B{ zyS*l;`=qsA)7pfM;q}+ zMfPx(T2*s=L>9}lp)6T{CsUS3D>oGvXpF_U8ate-@GKfWC^R4d>@!ni@X10msPj!BV7o=UmFm)0mo^3D%`wS=k%bmi23` zv5hUhBdR%{;dUp`n-^>!*Lssn5w(#n#XH~5K}B#<5tU$-1nKJQ*r|+V+0;JEp0kdr z!KBs-Mz;E~V?6BHvZI_1(sQadIXt(D`p|H2FnX>RT0?GFe_Ad`CVbqsS;cr;Qg|$4 zhMQA~51EqU$GH?Xouy?X_brxMS3qr-)pC2-MLGwt+p+lA+CGq8WG;!f+a>8bzU6>; z-tiP`-@{351J^aG=0&xNNN28SBE-lho&$G7-pj*p#PXAF510;HNH^Y50{}oacK(Z! zWbH`~#7S~Syn*bepsHO7uv3jJVUeUNNkTdYM9zrqI}p`RX-Ve*IcFtrVc8(>`X+qw xN1u6kR|h}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f71b3a662be11839d927664dffdafa58cb40cc7c GIT binary patch literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WOba4!+nDh2Vv{17Gk3-VZL*FkFQJEO~%(t7krTl z;4Tq-TEiPsddoCIfmPDHqxZzQ`Sq8gG&SV!#5_>sVPN<$ziQgTyw96rO|M;7S)Wz% z`r_XHT|HOcm!H0})z#$nzk_k^4-58u486;L@8?&&uqxqwO9b~Slw136?Ot1WW!}}e z`!B_n#TMjEUYZsqe?G6{(YX`;`!i1MQ`TYi75dd?cza5ELw>}hH}`qhmT#05cTK@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..760425304657bf273b8136e3420d3c5248b7561d GIT binary patch literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x2ba4!+nDh2#w9p|19*2uB zb_jplzvRu){&NOC6;q--3-&zc{_Vh{n!A_-sOiJ@kkHV@?t%{_Z5ae7%2aK)ypg^y z{vz{>psQ0Z2`;;1aqDNpvuU4nF89A&WuxQuhsz*5>F39e*qa9JPxmg551cpew&v0s zFHZ9b7wiz}wt6)C$z=XFlbY(xo6K3)HyD{-Ke=~#oc6<+Pm-gTEHKiHw^~{$zBXT? z`SSm=r;H2?N2=DmzGd_9YHD*_=<>>>yTzX)H{VO$cIL_ypZ5K~Cn*}~eEqV`Cr`d4 zRqE`zG`B||7Hv4%eZ#6;FK&Le{Q|KoK1>@=@0q!yrcK0v@mV`>7uRbO?kkGd59(>2 z_&j|+o7H_ww(S%0Z!VR2o3<~+y#9}D8I#Pk#P9^K2 z=S}F`H`{GR=RV_S3PO<@mpmuTY+lNt4-6z^u;Gk!umflBpK!TUkg%t#pUXO@geCxp Cz_pVA literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..fda030d56c962bf18cefd5b175cf5f284825a115 GIT binary patch literal 767 zcmVJK#dKP) zNf80eSi!kJrh!`A^5~uH-vi2mP4yrY&**#io}CUjM^2Z5*P1ScBlEN&lXLwkrF?B{ zyS*l;`=qsA)7pfM;q}+ zMfPx(T2*s=L>9}lp)6T{CsUS3D>oGvXpF_U8ate-@GKfWC^R4d>@!ni@X10msPj!BV7o=UmFm)0mo^3D%`wS=k%bmi23` zv5hUhBdR%{;dUp`n-^>!*Lssn5w(#n#XH~5K}B#<5tU$-1nKJQ*r|+V+0;JEp0kdr z!KBs-Mz;E~V?6BHvZI_1(sQadIXt(D`p|H2FnX>RT0?GFe_Ad`CVbqsS;cr;Qg|$4 zhMQA~51EqU$GH?Xouy?X_brxMS3qr-)pC2-MLGwt+p+lA+CGq8WG;!f+a>8bzU6>; z-tiP`-@{351J^aG=0&xNNN28SBE-lho&$G7-pj*p#PXAF510;HNH^Y50{}oacK(Z! zWbH`~#7S~Syn*bepsHO7uv3jJVUeUNNkTdYM9zrqI}p`RX-Ve*IcFtrVc8(>`X+qw xN1u6kR|h}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f71b3a662be11839d927664dffdafa58cb40cc7c GIT binary patch literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WOba4!+nDh2Vv{17Gk3-VZL*FkFQJEO~%(t7krTl z;4Tq-TEiPsddoCIfmPDHqxZzQ`Sq8gG&SV!#5_>sVPN<$ziQgTyw96rO|M;7S)Wz% z`r_XHT|HOcm!H0})z#$nzk_k^4-58u486;L@8?&&uqxqwO9b~Slw136?Ot1WW!}}e z`!B_n#TMjEUYZsqe?G6{(YX`;`!i1MQ`TYi75dd?cza5ELw>}hH}`qhmT#05cTK@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_0_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97499543f93907238233469136f8c9365cd7e79a GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2Vbl+hE4u`<< zD|0veSFP0lEO_#hgwK@{8K3I&;a-h-qd2??B8XOyg_-mU+uxpUeAyNVwTz7h-!53KiA^O#Cc`{x;WKX}dL zMU`xGYq#oMs((7Cs+srd72D=W@rNewY_cx4&J4QWUvz1o!e#r1SJU2qy5x6kRosNU zi*N2sC_Hm%-q!_jTeBESve)d;&e0Q>+G4z2&+(<#{W8|{>Wbh~WnXgJm@nU`w?!n%&i<#ku;UFS?GVG>t6(q-9l-GJ?*L~})tqsl7z&R6b>egVS(85}U$FU~2^ TVzGavDM;AU)z4*}Q$iB}p_iTd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_1_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97499543f93907238233469136f8c9365cd7e79a GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2Vbl+hE4u`<< zD|0veSFP0lEO_#hgwK@{8K3I&;a-h-qd2??B8XOyg_-mU+uxpUeAyNVwTz7h-!53KiA^O#Cc`{x;WKX}dL zMU`xGYq#oMs((7Cs+srd72D=W@rNewY_cx4&J4QWUvz1o!e#r1SJU2qy5x6kRosNU zi*N2sC_Hm%-q!_jTeBESve)d;&e0Q>+G4z2&+(<#{W8|{>Wbh~WnXgJm@nU`w?!n%&i<#ku;UFS?GVG>t6(q-9l-GJ?*L~})tqsl7z&R6b>egVS(85}U$FU~2^ TVzGavDM;AU)z4*}Q$iB}p_iTd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..700453f77358dbd81ba0271da35c7fdc921d320c GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2VF5e*qo`yt| zdo91^SC)Td=Ty|);A)qBl#ov1C zx;8K#T^eztgZ-qse8;4wI`gLZqJ7M_uH;Pq-LW_Pj`7LkPD>V;X~w_0RNHln{n(P< z+sfsDPG5ig(a$T{^KHE)WWSbJ-oPtEZ@ytVtRVb1)oP*IukMZP^G-O;tKh3v+5-#$WN;w&-u?YQ#ZINg QaD#+BUHx3vIVCg!033IwcK`qY literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..6c57d4dd591edcb595d432c52143dba70d3e23c6 GIT binary patch literal 917 zcmV;G18V$>=D9~t?h z{IRQ}DfJ(%;!*spFnSPom&O!F##+r*O1YlW-*%}PeurDMQQM%-hEhr^5O~U%4@TK= zmdt?GaH9cbPi33s&?}{=fo5f83adh9K#*03uy6)2kHN7&W`PE@)uRTkkrB(n4hSDC za-`F~ImdNWrQ5cy_$BCaozC<#Kr%BjzKlG``U5iT-XyC|L3F`oiEMBoYwMM#by8F_ zfK{kR09pl2+_^u0iup^%>TAmPneTuoPm&}_lEjZo-Rx$o1S19U=a&1|rgKqO4m=aP zt{A~W9(8>S0XG=c_Z=yM2A5rD)T@^Cua&_Iy-Tb8bm|c5-MbQPmANFFW2D$^VcDde zL0U6_MFGjC&e`swgcw)zx29&RRM+@qS(Sb71Fj)i8@kZZ7<5K{uLEG>PIkYLVIaX} zYs(C-_cnW2CC0^q>&&#b0()*9deXx|l@UnFl zw9?WQmNHWX=&-l>!~XF4ym7Q;pC>cl0eDLXr3iL0VTUN=OeJqL($tk%y(rNXDJoFK z$*_Z~5ynleY65NiVbUx6(I3W)ZjCa~c$AZ%1F~$_KDY!yGhl4#Fywn_e{A5~wWdjj zr6=IWy!{Tq<2XiFqXvtII0L#NWxnB+Crk}JeVU2mTej$vD2MwqV0e203%cyv+v#0M zug0{}S)LG!C-~sv9WP`)Ow23E8>U;sha^do1m{;b$Nc&(HIsP>1+nARosNn7;3~Wd zC}?C-C`IhJst9T3817S$sv~w22aF#Ly>kP#_l;@mDRmo^hx@LyejM-sWWS~Q=(PjR z0I9{Q3T0RFWb!BI5;&_IQp9AQ#H$q^ r#Q9W1Z{~4(z&Ch;Je(v+l02P19Wsnw&}-*700000NkvXXu0mjf-*>yw literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..562b8c3a7d73de03a021e86dd7b6a40d2558ecef GIT binary patch literal 504 zcmVO-XHi(D?sxm170001wQA#PL_zxNNXZ1&1 z%kD#4C#ZYxh(_z%h-m+;HjX*xq;;<@Z|g+d&foMF4eAZ3Gco7fi-NyI)jQ-oeY*K8 zKm=5*261m{Vd~6THPGVRwxoB7vwDl>M^P(4bk{leueDGI*BNe6?bPI$D{26y&y;qi z*JE=`eCI_y)s{WICa0ipzw1O^C)#b^@}9GFGcJPXdupin zsklJMcC^9X-R*7o_@}43IES^?@btPAZOz4qMi7i|4c`*+w*s9gr&S`x6w z=0a2J7sTom)Z^dF^gA-o=DRn$3_uDP1F<<;=NyrLZX{FCf^MCPvOOwx;`XO?bx$>t`F?6Bp*+#>Hie;far@KWQ^ZuZl^ziwpypp)(tgdu)rY5 uj6o>E3jhEB000000000000000g!uq`W2>+d#rh`z0000hKx> literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_0/00004.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7a3d318ff4b1e9cedb9d6b003137028319b063ca GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2Vw9p|19*4k^ zJD%V6FL`sc|6Gbd&<98972j(#!+a)xnlJ^V`|{mI%o%}K|E%qBaV?tTUcyj2{mkyj z1q`h<5fQns+`ez(yt|nBMR4fpXWyJ$KI!c4mCl}XjVZg~_l)hGC$y9k_G)VERl6b- zn_{`Xag|?mGwU*i$7&lV-u(G|{+4SZQ_S=9HgGUAF#K80cst}0)*&&{(v+LiiL@{`S6Th_Dle@$+G8NZ%!deHkOpNp6NCEe|; zPQ81zTsQB@TZ3=EDvwX-6|QsQeH7SSaYaGsX1~if<%zXG|09D32L8)7@coGT_e>Wg N?CI*~vd$@?2>|oyr8EEl literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_1/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..e0409140bae521e1f652a4d827e83ed169ce2a92 GIT binary patch literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=lvba4!+nDh2#U{Q+#Ps799 z<>n9nxj)jY-Ei1Iall>83Vt41!;qT4W{%GR;u_*%y+OgYLaj8{I&l?b)y9Prz>hk1sX+)K@+x0MV9tJ#)JIg}d1 z5!SGs|5y8ZmfVViTna6>yF4_Ha#i?WIUsNP!R4Fn#9IH9|Ao)?we&N|-M9O?QTJkz zr0M3rtJ34dzopmhVGg)*GxPJ-8Pz_4)3V{cOGDUasE7R`s3dr4n|tZOd-s{upCb*)N`VY-|6U*PrbEUEDMM;K|L5 zXG9k~`SMu2VOQ(di>tORTeoy`)&HthuVW&s!;G5k&GQS7|FchE7J&sE14H$1*0q0l T*ZrCD8Z7AP>gTe~DWM4fMuWRv literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..3c91cc8f18b96a7554a78329eca981b446489055 GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2lpiq;7Ktp2I zuFmiFLggPTwjrk^*JosDYRnm#ssvH5XRy6MuNqBQ5oQf3>*qN^unan%}xvhO$>F!}G*DJRtv zf5)xf@;&aO*~xR;CwW#>KTc1N{pz_xD6ZLg$>yllX}ixF-uBxpnmsLZ;#0S%byz&7ci`ULW%mN7C;Inpoa9{@pNt`rm@w08Q1)b8J%iYN{@1J-MKC@=T+q`^&9$ z7q`b9xj!$B$uB*?ZW;RSytl2~t#`h;nrS|lRnvOy`m~SsKPL6(eV09Uc7NTK(kX>H z&m8`DrcIxF{9>i#*}ZE{i%mOT@VV`KNzmhc@eR*bzpq&>Qus=xD{S#{ZU2<7cbVZK c$iR^Im+AhDqGuahTmnI&p00i_>zopr0O=CWG5`Po literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..700453f77358dbd81ba0271da35c7fdc921d320c GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2VF5e*qo`yt| zdo91^SC)Td=Ty|);A)qBl#ov1C zx;8K#T^eztgZ-qse8;4wI`gLZqJ7M_uH;Pq-LW_Pj`7LkPD>V;X~w_0RNHln{n(P< z+sfsDPG5ig(a$T{^KHE)WWSbJ-oPtEZ@ytVtRVb1)oP*IukMZP^G-O;tKh3v+5-#$WN;w&-u?YQ#ZINg QaD#+BUHx3vIVCg!033IwcK`qY literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..6c57d4dd591edcb595d432c52143dba70d3e23c6 GIT binary patch literal 917 zcmV;G18V$>=D9~t?h z{IRQ}DfJ(%;!*spFnSPom&O!F##+r*O1YlW-*%}PeurDMQQM%-hEhr^5O~U%4@TK= zmdt?GaH9cbPi33s&?}{=fo5f83adh9K#*03uy6)2kHN7&W`PE@)uRTkkrB(n4hSDC za-`F~ImdNWrQ5cy_$BCaozC<#Kr%BjzKlG``U5iT-XyC|L3F`oiEMBoYwMM#by8F_ zfK{kR09pl2+_^u0iup^%>TAmPneTuoPm&}_lEjZo-Rx$o1S19U=a&1|rgKqO4m=aP zt{A~W9(8>S0XG=c_Z=yM2A5rD)T@^Cua&_Iy-Tb8bm|c5-MbQPmANFFW2D$^VcDde zL0U6_MFGjC&e`swgcw)zx29&RRM+@qS(Sb71Fj)i8@kZZ7<5K{uLEG>PIkYLVIaX} zYs(C-_cnW2CC0^q>&&#b0()*9deXx|l@UnFl zw9?WQmNHWX=&-l>!~XF4ym7Q;pC>cl0eDLXr3iL0VTUN=OeJqL($tk%y(rNXDJoFK z$*_Z~5ynleY65NiVbUx6(I3W)ZjCa~c$AZ%1F~$_KDY!yGhl4#Fywn_e{A5~wWdjj zr6=IWy!{Tq<2XiFqXvtII0L#NWxnB+Crk}JeVU2mTej$vD2MwqV0e203%cyv+v#0M zug0{}S)LG!C-~sv9WP`)Ow23E8>U;sha^do1m{;b$Nc&(HIsP>1+nARosNn7;3~Wd zC}?C-C`IhJst9T3817S$sv~w22aF#Ly>kP#_l;@mDRmo^hx@LyejM-sWWS~Q=(PjR z0I9{Q3T0RFWb!BI5;&_IQp9AQ#H$q^ r#Q9W1Z{~4(z&Ch;Je(v+l02P19Wsnw&}-*700000NkvXXu0mjf-*>yw literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..562b8c3a7d73de03a021e86dd7b6a40d2558ecef GIT binary patch literal 504 zcmVO-XHi(D?sxm170001wQA#PL_zxNNXZ1&1 z%kD#4C#ZYxh(_z%h-m+;HjX*xq;;<@Z|g+d&foMF4eAZ3Gco7fi-NyI)jQ-oeY*K8 zKm=5*261m{Vd~6THPGVRwxoB7vwDl>M^P(4bk{leueDGI*BNe6?bPI$D{26y&y;qi z*JE=`eCI_y)s{WICa0ipzw1O^C)#b^@}9GFGcJPXdupin zsklJMcC^9X-R*7o_@}43IES^?@btPAZOz4qMi7i|4c`*+w*s9gr&S`x6w z=0a2J7sTom)Z^dF^gA-o=DRn$3_uDP1F<<;=NyrLZX{FCf^MCPvOOwx;`XO?bx$>t`F?6Bp*+#>Hie;far@KWQ^ZuZl^ziwpypp)(tgdu)rY5 uj6o>E3jhEB000000000000000g!uq`W2>+d#rh`z0000hKx> literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00004.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7a3d318ff4b1e9cedb9d6b003137028319b063ca GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2Vw9p|19*4k^ zJD%V6FL`sc|6Gbd&<98972j(#!+a)xnlJ^V`|{mI%o%}K|E%qBaV?tTUcyj2{mkyj z1q`h<5fQns+`ez(yt|nBMR4fpXWyJ$KI!c4mCl}XjVZg~_l)hGC$y9k_G)VERl6b- zn_{`Xag|?mGwU*i$7&lV-u(G|{+4SZQ_S=9HgGUAF#K80cst}0)*&&{(v+LiiL@{`S6Th_Dle@$+G8NZ%!deHkOpNp6NCEe|; zPQ81zTsQB@TZ3=EDvwX-6|QsQeH7SSaYaGsX1~if<%zXG|09D32L8)7@coGT_e>Wg N?CI*~vd$@?2>|oyr8EEl literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_1/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..700453f77358dbd81ba0271da35c7fdc921d320c GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2VF5e*qo`yt| zdo91^SC)Td=Ty|);A)qBl#ov1C zx;8K#T^eztgZ-qse8;4wI`gLZqJ7M_uH;Pq-LW_Pj`7LkPD>V;X~w_0RNHln{n(P< z+sfsDPG5ig(a$T{^KHE)WWSbJ-oPtEZ@ytVtRVb1)oP*IukMZP^G-O;tKh3v+5-#$WN;w&-u?YQ#ZINg QaD#+BUHx3vIVCg!033IwcK`qY literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..6c57d4dd591edcb595d432c52143dba70d3e23c6 GIT binary patch literal 917 zcmV;G18V$>=D9~t?h z{IRQ}DfJ(%;!*spFnSPom&O!F##+r*O1YlW-*%}PeurDMQQM%-hEhr^5O~U%4@TK= zmdt?GaH9cbPi33s&?}{=fo5f83adh9K#*03uy6)2kHN7&W`PE@)uRTkkrB(n4hSDC za-`F~ImdNWrQ5cy_$BCaozC<#Kr%BjzKlG``U5iT-XyC|L3F`oiEMBoYwMM#by8F_ zfK{kR09pl2+_^u0iup^%>TAmPneTuoPm&}_lEjZo-Rx$o1S19U=a&1|rgKqO4m=aP zt{A~W9(8>S0XG=c_Z=yM2A5rD)T@^Cua&_Iy-Tb8bm|c5-MbQPmANFFW2D$^VcDde zL0U6_MFGjC&e`swgcw)zx29&RRM+@qS(Sb71Fj)i8@kZZ7<5K{uLEG>PIkYLVIaX} zYs(C-_cnW2CC0^q>&&#b0()*9deXx|l@UnFl zw9?WQmNHWX=&-l>!~XF4ym7Q;pC>cl0eDLXr3iL0VTUN=OeJqL($tk%y(rNXDJoFK z$*_Z~5ynleY65NiVbUx6(I3W)ZjCa~c$AZ%1F~$_KDY!yGhl4#Fywn_e{A5~wWdjj zr6=IWy!{Tq<2XiFqXvtII0L#NWxnB+Crk}JeVU2mTej$vD2MwqV0e203%cyv+v#0M zug0{}S)LG!C-~sv9WP`)Ow23E8>U;sha^do1m{;b$Nc&(HIsP>1+nARosNn7;3~Wd zC}?C-C`IhJst9T3817S$sv~w22aF#Ly>kP#_l;@mDRmo^hx@LyejM-sWWS~Q=(PjR z0I9{Q3T0RFWb!BI5;&_IQp9AQ#H$q^ r#Q9W1Z{~4(z&Ch;Je(v+l02P19Wsnw&}-*700000NkvXXu0mjf-*>yw literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..562b8c3a7d73de03a021e86dd7b6a40d2558ecef GIT binary patch literal 504 zcmVO-XHi(D?sxm170001wQA#PL_zxNNXZ1&1 z%kD#4C#ZYxh(_z%h-m+;HjX*xq;;<@Z|g+d&foMF4eAZ3Gco7fi-NyI)jQ-oeY*K8 zKm=5*261m{Vd~6THPGVRwxoB7vwDl>M^P(4bk{leueDGI*BNe6?bPI$D{26y&y;qi z*JE=`eCI_y)s{WICa0ipzw1O^C)#b^@}9GFGcJPXdupin zsklJMcC^9X-R*7o_@}43IES^?@btPAZOz4qMi7i|4c`*+w*s9gr&S`x6w z=0a2J7sTom)Z^dF^gA-o=DRn$3_uDP1F<<;=NyrLZX{FCf^MCPvOOwx;`XO?bx$>t`F?6Bp*+#>Hie;far@KWQ^ZuZl^ziwpypp)(tgdu)rY5 uj6o>E3jhEB000000000000000g!uq`W2>+d#rh`z0000hKx> literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00004.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7a3d318ff4b1e9cedb9d6b003137028319b063ca GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2Vw9p|19*4k^ zJD%V6FL`sc|6Gbd&<98972j(#!+a)xnlJ^V`|{mI%o%}K|E%qBaV?tTUcyj2{mkyj z1q`h<5fQns+`ez(yt|nBMR4fpXWyJ$KI!c4mCl}XjVZg~_l)hGC$y9k_G)VERl6b- zn_{`Xag|?mGwU*i$7&lV-u(G|{+4SZQ_S=9HgGUAF#K80cst}0)*&&{(v+LiiL@{`S6Th_Dle@$+G8NZ%!deHkOpNp6NCEe|; zPQ81zTsQB@TZ3=EDvwX-6|QsQeH7SSaYaGsX1~if<%zXG|09D32L8)7@coGT_e>Wg N?CI*~vd$@?2>|oyr8EEl literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_1/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_2to2_v1_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9e01669d18a8c8abfc35dfe1455d689c87ecc75d GIT binary patch literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s}ba4!+nDh2#G#`^9k3*oz zyOzKDE2}>?w+L_@KFqUrX7xS+M$d_SNgO~u2a-EGIwH;=I&iy+NwH;ubA1l)pEci) zS24vZ2_^d^o@xy_$2-e3b$!;HtQDJPivE@js1-gvU9&88Vb-+!vUM&uZKo&qY`e%W zC#DeD)!MgXa?PfL-dw-#bNo9|!9HbWr22Qcz2Rq!PnwBquJAeK9XrcE@b7^gFaF(_ z%g(@%@cQd-fvcW=@%&%%@@L6@J#p4}Xzuk7%BWAMcw>C|U>*u$>F;!rF`}ynI!iMyQjlU#z&0V&-@0Y|a z>%Flxi|pKA)yr4+&c3^vbB=u*-=WiY-!R@)5dNDiwNUL>`$o2DC!D6SIi~UExmGX& eg98aP+^%6` zEU^NFvB21GlTcdR^XN$C?*ZwCO?4|sXGWj9_sn#_G4nDN>^WUGM&dMRvu6HDDg8_w zJI)E_KIv_zUPQ0I2@^sHA%u{Ks%mAY*jx|{ijNzM0)+&^J0(D(gTwvh4gl|hL-$lT z5IQBewV=|t;_z~uT+AbkIO7QY^f^fMie-9-CeZ+IfBZC$;$^8-&q&t__q%~8QyCX; z1$ZS)u$kE=aEW<0?j8>j+|_?UX}XOmN;9Yy)Z%|7A(lC@rq(mNC90tsF{Qn5CZa5E zFp{33M>wEA{CAFd1{Kq0LzL-Tr1C1=YDLLS*j(4(&Xz0_h$Pq+s(NUA*A*`;O(lnM z;@4}{nwXSV#x=|3_M!tk49nbMEIJ@ykPnE-xGY38Cq||ZZbh57<)yrMsylr~j72pZ z5xidJb)hY;p6-Y!CL}iqLC1)zH{KO-_wEPZxDbSh!Zoa&{?5rsxIqt3jxe{5)?AZbJl}ZLOulY35Tjru%Q{IigzCu!y*SP$tkHM+1S8aMRN6DWx=R-1B z&p2^_IRUd-QZv^|-$7vgVK9 z0Op2Ms`mgraL;2Xf)~+Z0mTJsa92P&;$yv*MUu=VYApIj?0Z<^KV)#0iv9Pe8bSzp z3T4&hsuC7KiO&ivv+h$+X*>PZjo02gw+}cQzm1>}U3-1yb@1SW7#P%x$NqyI0J3;} z^r;T0itCkqu}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b0e1548fa41115c7d06c960e2af409d9c09f2a1c GIT binary patch literal 426 zcmV;b0agBqP)P@)+k+{o#AVrq>NXZ&(m-qQmF&b8C0u4@%0{{R30002H__6N5eL3f| zoKiCE$$x|#02z8I;xNP;fHV3s+|9}meyuxjlL~aWxJQ+9mg~>>&k&-{0GR2W<`GZ- zBkl}Pv5pw}BHmTd!DXlu-?0$`0000U=Y7MNh1rG=b?M_=cU7e}4SVt^`PE|Ng5@R=p%*t)sXDK%dj6!<2#O1|G}r6v;1oA2B36K1#v3Z<~cE^ zqVLXl2~tN+9o#H?;BE%g0w98*SV!vk2qLsaEypUZyKnig7>SX@;l&E(4%$(WrT2xcKZc z042mJrL$1#&6j?gY-lfMIar<5eS&vd^&+e4$)3LJE3ejfS%TbR00000006*3e@pj9 U47?QzQ~&?~07*qoM6N<$f_Fp8NB{r; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_1_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c2b649401859ea056f013d81f485d539bdc780a9 GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|BL1^N^iu2;Gjz%X|T(Jb|d9c;R#bu3q;)85khUas*7si{h|335m zd=-PM(xbihheWvCE$2*F+ZnC;S0(o7^2m+xj3?(x{I^LG7oT+b(8Xt}kDe`jvv+&% zzT1gRe9My-D(~~Olic9VRh7r0ZxqK^n04*sUYGTvpM8vSx&`gyyyB!ZTWU~uifT1+jc#FW4+Yw%9@w=eOFz-!k)Hl)6(EoFW0OuDP2{N zm2ckkDT8`KD+nB{2goR^v!QK$$G@xoYk2(ry=FY)U(a0U!Hx7IP0=H_(B~2 zI^GXF2Gf=;=;U7e< literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_1_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..037d61c4dbf376b2f65143d72c1aa65c2176c9d8 GIT binary patch literal 804 zcmV+<1Ka$GP)XPT# zVgv|hfqj2WL+f!bqEE7Z4M;aEsz*cWIeqQgvoZkn&fBS=%;{Pf>8F9rp7T#i>1$!z z@tk0;liqUb_2~TR%>fm4Uc z>nG1)4MD}Zr*T|WbP}%4ZF4NbP;X3VNnL_SngX7w!fa2#tR5sMw0T}z^RpUp!?@U3 zVIU)-5~~U-;`X$@_WT|S)f8c6(RCUagHhfr!9}WgBhE8EfflSv>q?g zW-aeJ#=On?*UY{jcU!L`cRRbMLH`cefDE;`In%jF*v^jZ3Av!#y8zH4UJ*2GEZaK3 z)c|x8yt;E;kIk5d;e1&Esd&fDqT>r0dicBqUbls~Jl=Gm2Qf((YOaoe+DtoUMWG3j zD~>D1bpyY5TLf*x6}~?YOx8EG_~}o?mhd z}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_1_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..25f4bd2baa191b1c548bc9f7dce46b42318f7db3 GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-&ba4!+nDh3gW8Yx~9*01y zS+jrqbN>{ZCdgZKP;qLMf#3h=rG8!$=Q5}+1?plrZM(?YV9}~?i#uGtrp&wlf-h!w z>b=!0tQj|sFS@pjf7kTf7wWs1uZL_+`)nZ~I6Kw6V#UE+)fvopZrAv@Y_ehe*|y-* zoC~vFsGZ)%wrW={uMm&p)Y(TI)4t2sd#zJE!NzYsqlJ-yVc+H5rvu6l7wrjpvtIL_ z*TvZ8d2^#AH!d%Wd|-C-&3B%2WrBK-o0mE9<(S9amy$g3#lJ#ce$V%GQHTFGPb|3~ z^=7m3`88*E)Mc;XIevNl))J0gj;~%zbNtqNB&)f7F|#T6lGwbJb)r|!F#etLpl)OS zk-eMpvr?Z-JvV>nS(h0SrXB9Qj{=)LQtX9p_PcxoItUpwWd37tD3j#jw+!qAiF>;G KxvX@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9e01669d18a8c8abfc35dfe1455d689c87ecc75d GIT binary patch literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s}ba4!+nDh2#G#`^9k3*oz zyOzKDE2}>?w+L_@KFqUrX7xS+M$d_SNgO~u2a-EGIwH;=I&iy+NwH;ubA1l)pEci) zS24vZ2_^d^o@xy_$2-e3b$!;HtQDJPivE@js1-gvU9&88Vb-+!vUM&uZKo&qY`e%W zC#DeD)!MgXa?PfL-dw-#bNo9|!9HbWr22Qcz2Rq!PnwBquJAeK9XrcE@b7^gFaF(_ z%g(@%@cQd-fvcW=@%&%%@@L6@J#p4}Xzuk7%BWAMcw>C|U>*u$>F;!rF`}ynI!iMyQjlU#z&0V&-@0Y|a z>%Flxi|pKA)yr4+&c3^vbB=u*-=WiY-!R@)5dNDiwNUL>`$o2DC!D6SIi~UExmGX& eg98aP+^%6` zEU^NFvB21GlTcdR^XN$C?*ZwCO?4|sXGWj9_sn#_G4nDN>^WUGM&dMRvu6HDDg8_w zJI)E_KIv_zUPQ0I2@^sHA%u{Ks%mAY*jx|{ijNzM0)+&^J0(D(gTwvh4gl|hL-$lT z5IQBewV=|t;_z~uT+AbkIO7QY^f^fMie-9-CeZ+IfBZC$;$^8-&q&t__q%~8QyCX; z1$ZS)u$kE=aEW<0?j8>j+|_?UX}XOmN;9Yy)Z%|7A(lC@rq(mNC90tsF{Qn5CZa5E zFp{33M>wEA{CAFd1{Kq0LzL-Tr1C1=YDLLS*j(4(&Xz0_h$Pq+s(NUA*A*`;O(lnM z;@4}{nwXSV#x=|3_M!tk49nbMEIJ@ykPnE-xGY38Cq||ZZbh57<)yrMsylr~j72pZ z5xidJb)hY;p6-Y!CL}iqLC1)zH{KO-_wEPZxDbSh!Zoa&{?5rsxIqt3jxe{5)?AZbJl}ZLOulY35Tjru%Q{IigzCu!y*SP$tkHM+1S8aMRN6DWx=R-1B z&p2^_IRUd-QZv^|-$7vgVK9 z0Op2Ms`mgraL;2Xf)~+Z0mTJsa92P&;$yv*MUu=VYApIj?0Z<^KV)#0iv9Pe8bSzp z3T4&hsuC7KiO&ivv+h$+X*>PZjo02gw+}cQzm1>}U3-1yb@1SW7#P%x$NqyI0J3;} z^r;T0itCkqu}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b0e1548fa41115c7d06c960e2af409d9c09f2a1c GIT binary patch literal 426 zcmV;b0agBqP)P@)+k+{o#AVrq>NXZ&(m-qQmF&b8C0u4@%0{{R30002H__6N5eL3f| zoKiCE$$x|#02z8I;xNP;fHV3s+|9}meyuxjlL~aWxJQ+9mg~>>&k&-{0GR2W<`GZ- zBkl}Pv5pw}BHmTd!DXlu-?0$`0000U=Y7MNh1rG=b?M_=cU7e}4SVt^`PE|Ng5@R=p%*t)sXDK%dj6!<2#O1|G}r6v;1oA2B36K1#v3Z<~cE^ zqVLXl2~tN+9o#H?;BE%g0w98*SV!vk2qLsaEypUZyKnig7>SX@;l&E(4%$(WrT2xcKZc z042mJrL$1#&6j?gY-lfMIar<5eS&vd^&+e4$)3LJE3ejfS%TbR00000006*3e@pj9 U47?QzQ~&?~07*qoM6N<$f_Fp8NB{r; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c2b649401859ea056f013d81f485d539bdc780a9 GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|BL1^N^iu2;Gjz%X|T(Jb|d9c;R#bu3q;)85khUas*7si{h|335m zd=-PM(xbihheWvCE$2*F+ZnC;S0(o7^2m+xj3?(x{I^LG7oT+b(8Xt}kDe`jvv+&% zzT1gRe9My-D(~~Olic9VRh7r0ZxqK^n04*sUYGTvpM8vSx&`gyyyB!ZTWU~uifT1+jc#FW4+Yw%9@w=eOFz-!k)Hl)6(EoFW0OuDP2{N zm2ckkDT8`KD+nB{2goR^v!QK$$G@xoYk2(ry=FY)U(a0U!Hx7IP0=H_(B~2 zI^GXF2Gf=;=;U7e< literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..037d61c4dbf376b2f65143d72c1aa65c2176c9d8 GIT binary patch literal 804 zcmV+<1Ka$GP)XPT# zVgv|hfqj2WL+f!bqEE7Z4M;aEsz*cWIeqQgvoZkn&fBS=%;{Pf>8F9rp7T#i>1$!z z@tk0;liqUb_2~TR%>fm4Uc z>nG1)4MD}Zr*T|WbP}%4ZF4NbP;X3VNnL_SngX7w!fa2#tR5sMw0T}z^RpUp!?@U3 zVIU)-5~~U-;`X$@_WT|S)f8c6(RCUagHhfr!9}WgBhE8EfflSv>q?g zW-aeJ#=On?*UY{jcU!L`cRRbMLH`cefDE;`In%jF*v^jZ3Av!#y8zH4UJ*2GEZaK3 z)c|x8yt;E;kIk5d;e1&Esd&fDqT>r0dicBqUbls~Jl=Gm2Qf((YOaoe+DtoUMWG3j zD~>D1bpyY5TLf*x6}~?YOx8EG_~}o?mhd z}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_1_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_4to3_v1_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..25f4bd2baa191b1c548bc9f7dce46b42318f7db3 GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-&ba4!+nDh3gW8Yx~9*01y zS+jrqbN>{ZCdgZKP;qLMf#3h=rG8!$=Q5}+1?plrZM(?YV9}~?i#uGtrp&wlf-h!w z>b=!0tQj|sFS@pjf7kTf7wWs1uZL_+`)nZ~I6Kw6V#UE+)fvopZrAv@Y_ehe*|y-* zoC~vFsGZ)%wrW={uMm&p)Y(TI)4t2sd#zJE!NzYsqlJ-yVc+H5rvu6l7wrjpvtIL_ z*TvZ8d2^#AH!d%Wd|-C-&3B%2WrBK-o0mE9<(S9amy$g3#lJ#ce$V%GQHTFGPb|3~ z^=7m3`88*E)Mc;XIevNl))J0gj;~%zbNtqNB&)f7F|#T6lGwbJb)r|!F#etLpl)OS zk-eMpvr?Z-JvV>nS(h0SrXB9Qj{=)LQtX9p_PcxoItUpwWd37tD3j#jw+!qAiF>;G KxvX@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..822b63031d46579ee55232a9563b7ef056cbe88b GIT binary patch literal 427 zcmV;c0aX5pP)^)!BY8!)~L_+`o00000z^{0%4xpcioXauB zg^_&2Wdo$CPkC$xe+_VEKTUUWr3-(n1L&j@?JnJR?zf&#apn|Q`V3;+NCxZS=JMoDzZ=%|+HCm)oZ2C;QLAp|%afs-J+#9Gd5ZKq<%&<)F^7E^-JSDAETDp zQXdUwWwaJjF%p+9tCgSj0K0nnQN^?)lCdV0B2*D-;Ni9ZlwE>fH7Lz!0QHtvD4RaKS`u!I%A0m4#;ux(Eb;bWN*%^X@>$s%i4BDdGNqYTms&a3}hi zEw=%~)KBRXk1yk$b(ZhT#@)=tt7dJkjP3B4nQB~d@?bJ+1oN3pJ2j=iI>wJ)0l#Km znDavG^izoyuQnzNEMQ4Z6JnofyZ_&k2-OularY7g*%%mp%#XX+KP%J;EUGB literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_all_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_all_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_all_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_all_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba54aafe987c26d92d9abc6c27e37786612bb39c GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2VV9{X(9@oHI zFa2)(pR{Fqok5}mi-n)?ysZ15T{{l;7#vbl1?qaR?aY}oR~8HW2;)~+IwkAH_Op(2 ze*O#OPdIg^=$xw0)__xAn-YC*uX?@w^{Tx-uKSsGsc-xnnRH!j*XdXL+qY-TzFu@L zQu?n*B2!oJ#t(x0lls_lG^1`6N{_C}8#!e^beKi|P(X znCyRhikX4o!mnF3``>LnKVS7sUsW4#?fJvv0spTXn}%<*_&@WiP2~O;uQn+BRO9%l zsHR@?VX;qx?H1ERA9IAC8my~k6IbUI7fxm6iM9UX`hs)EV%wS5_p_E(H{2KEYu|pu zsU|$#x_)|d^qrLZmuIofe35U=VS4d?k7a-ox8_EEZNWI8=aIpK OiF>;GxvXSm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_all_0_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_all_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43fdfdd3c89dd138ce825233d66fbd4dc1ad7d09 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2VAYYRKPs78^ zJ)ZCDm)twbJ}GTelu2I6;s4c#xKg$lxOp=IHTjjFmUD0keLY`klIf&Extq)uWheK{ zX64!tY%dlz+w8?VvxU{)82VPON-e%EFwyFCUP1D~Ox+KB1^J(6bgcQrvc{Zs>h+eW zMdgv}vKOqnd@Z3-^TZBM9wY1je}b>gYI^nH8Iyh@(3StMBuc*ert|n{(r*8cV%_hI zzTAy(Ryx>vX6vrIshe}9_hhTc9BU5dy;aaIBJ;I->b@5Lf`7iY8^o`aWv0D5dF0i^ z=;@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba54aafe987c26d92d9abc6c27e37786612bb39c GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2VV9{X(9@oHI zFa2)(pR{Fqok5}mi-n)?ysZ15T{{l;7#vbl1?qaR?aY}oR~8HW2;)~+IwkAH_Op(2 ze*O#OPdIg^=$xw0)__xAn-YC*uX?@w^{Tx-uKSsGsc-xnnRH!j*XdXL+qY-TzFu@L zQu?n*B2!oJ#t(x0lls_lG^1`6N{_C}8#!e^beKi|P(X znCyRhikX4o!mnF3``>LnKVS7sUsW4#?fJvv0spTXn}%<*_&@WiP2~O;uQn+BRO9%l zsHR@?VX;qx?H1ERA9IAC8my~k6IbUI7fxm6iM9UX`hs)EV%wS5_p_E(H{2KEYu|pu zsU|$#x_)|d^qrLZmuIofe35U=VS4d?k7a-ox8_EEZNWI8=aIpK OiF>;GxvXSm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_0_0_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_0_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43fdfdd3c89dd138ce825233d66fbd4dc1ad7d09 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2VAYYRKPs78^ zJ)ZCDm)twbJ}GTelu2I6;s4c#xKg$lxOp=IHTjjFmUD0keLY`klIf&Extq)uWheK{ zX64!tY%dlz+w8?VvxU{)82VPON-e%EFwyFCUP1D~Ox+KB1^J(6bgcQrvc{Zs>h+eW zMdgv}vKOqnd@Z3-^TZBM9wY1je}b>gYI^nH8Iyh@(3StMBuc*ert|n{(r*8cV%_hI zzTAy(Ryx>vX6vrIshe}9_hhTc9BU5dy;aaIBJ;I->b@5Lf`7iY8^o`aWv0D5dF0i^ z=;@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba54aafe987c26d92d9abc6c27e37786612bb39c GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2VV9{X(9@oHI zFa2)(pR{Fqok5}mi-n)?ysZ15T{{l;7#vbl1?qaR?aY}oR~8HW2;)~+IwkAH_Op(2 ze*O#OPdIg^=$xw0)__xAn-YC*uX?@w^{Tx-uKSsGsc-xnnRH!j*XdXL+qY-TzFu@L zQu?n*B2!oJ#t(x0lls_lG^1`6N{_C}8#!e^beKi|P(X znCyRhikX4o!mnF3``>LnKVS7sUsW4#?fJvv0spTXn}%<*_&@WiP2~O;uQn+BRO9%l zsHR@?VX;qx?H1ERA9IAC8my~k6IbUI7fxm6iM9UX`hs)EV%wS5_p_E(H{2KEYu|pu zsU|$#x_)|d^qrLZmuIofe35U=VS4d?k7a-ox8_EEZNWI8=aIpK OiF>;GxvXSm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_1_0_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_sighash_default_1_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43fdfdd3c89dd138ce825233d66fbd4dc1ad7d09 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2VAYYRKPs78^ zJ)ZCDm)twbJ}GTelu2I6;s4c#xKg$lxOp=IHTjjFmUD0keLY`klIf&Extq)uWheK{ zX64!tY%dlz+w8?VvxU{)82VPON-e%EFwyFCUP1D~Ox+KB1^J(6bgcQrvc{Zs>h+eW zMdgv}vKOqnd@Z3-^TZBM9wY1je}b>gYI^nH8Iyh@(3StMBuc*ert|n{(r*8cV%_hI zzTAy(Ryx>vX6vrIshe}9_hhTc9BU5dy;aaIBJ;I->b@5Lf`7iY8^o`aWv0D5dF0i^ z=;@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_v1_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_v1_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba54aafe987c26d92d9abc6c27e37786612bb39c GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2VV9{X(9@oHI zFa2)(pR{Fqok5}mi-n)?ysZ15T{{l;7#vbl1?qaR?aY}oR~8HW2;)~+IwkAH_Op(2 ze*O#OPdIg^=$xw0)__xAn-YC*uX?@w^{Tx-uKSsGsc-xnnRH!j*XdXL+qY-TzFu@L zQu?n*B2!oJ#t(x0lls_lG^1`6N{_C}8#!e^beKi|P(X znCyRhikX4o!mnF3``>LnKVS7sUsW4#?fJvv0spTXn}%<*_&@WiP2~O;uQn+BRO9%l zsHR@?VX;qx?H1ERA9IAC8my~k6IbUI7fxm6iM9UX`hs)EV%wS5_p_E(H{2KEYu|pu zsU|$#x_)|d^qrLZmuIofe35U=VS4d?k7a-ox8_EEZNWI8=aIpK OiF>;GxvXSm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_v1_0_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_taproot_1to2_v1_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43fdfdd3c89dd138ce825233d66fbd4dc1ad7d09 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2VAYYRKPs78^ zJ)ZCDm)twbJ}GTelu2I6;s4c#xKg$lxOp=IHTjjFmUD0keLY`klIf&Extq)uWheK{ zX64!tY%dlz+w8?VvxU{)82VPON-e%EFwyFCUP1D~Ox+KB1^J(6bgcQrvc{Zs>h+eW zMdgv}vKOqnd@Z3-^TZBM9wY1je}b>gYI^nH8Iyh@(3StMBuc*ert|n{(r*8cV%_hI zzTAy(Ryx>vX6vrIshe}9_hhTc9BU5dy;aaIBJ;I->b@5Lf`7iY8^o`aWv0D5dF0i^ z=;@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..fb4c2106140c43fa3b221c5fca4409b1f9df3a69 GIT binary patch literal 482 zcmV<80UiE{P)n#41T;ja7{`{nSVx}kGBaHfL-ebj~IiH0Z>Lc zTnxUwJMih&2|%EQS6U|kv1XoPod5(CY!S{m>r+j*=O9=Bwtz#di!=odF0-*#<4CE9 zVx?pp001!I`5ij{dA!xI(fW_$2mL!^6pzKn|9UV-Z!0sM)nKWPAAke zPo!kr0_xk#=m|Jo+3Lcl`!F7vXz}Ga0!{QM`Sj7yp0GwaieC>_)WqEMFc-000000000T YzhPoi+DKpawEzGB07*qoM6N<$g7>N082|tP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..a0a62f0ab250d76a50c28c3846c0f7dce1eb0513 GIT binary patch literal 726 zcmV;{0xA88P)3`I#QH}UC*P4tq%O~+|USiSp3EMu6F;W*N^0UNi-glZIDeTiN9n=_OZa|-gWSm>lENm{1 zd1*fb3fSsi{{(KX6r^S+`&4F1EbNQKn!994vrwmsw)U`o1}H5@y5Mf!np2N=lFITwT2gDhDH3F|cTSmZSTv<-RS4tE-p+Y4`3O?GYVD^39b z0001h6=rJagiYhEnv87R4pw1jE}29HRl1R zFd@*F17N-gs~rx9`e7M0U=ua9tz}di$ays})dnXTxuxy>r1lR4aBIKnJX3QY%oiM8o z<|*u#PxMx=Up8w(OV;epl+tWyJyoo{O0Uf}aUDXYUgnew%v0`4n6@pFTcHLrw?^U=-V?|8V^9nbkoSCG|u$R>kXyZ-MC-*a8(!f+YX|fGv2;zW151eSOLRto$yBl@(J8t9NP? zS?Xm(Lwz#x)@e|8G}lm_SgZxPww%>acMDA`Ls0GiG#Hj|qM^F7UJaGSFW16%&`>ve z2`k0ani$#a#6GbWykS09mcJ6#hoBGVbN@a-*g60J001-i1z$qYoPYU*2mk;807*qo IM6N<$g6tqhmH+?% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_0_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_1_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..90fa38faef05c77418b92d04cc5b0fe55d21e257 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>4@&vYHdJ03^vm`Iyy>4*zR3pY!Pts`n%2a!{&SP zuNh{!s2r=$=V2&la&fb^Uo|!mHSj`vz8r z<*T1EGBDhz`fKO)?l^O>&p_wReF9j|s@Kb-zj9ovhX0xw*!TaIbv>!sdy(c`s zaz1*8ME^eaihyYgTC;Cgy_hp+|BrOTeqZ@r*Nl69I^C#k{<6t@x1;gNl=|6Tt4{t) sThpkzYQj>-Ns-Ob6XQT(g9IL!#qX4tjJ?19K`lts)78&qol`;+09!S*!vFvP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_1_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..22ac6174c043966722d92955bed292ba3d347400 GIT binary patch literal 787 zcmV+u1MK{XP)$|C*TAPVN}^_5Z{O*b^KJ@=ME2qA-e5+KsjCcZ+zOs&ujx+%y^iqVcWLj`L=DM4E|&mlUIOns8|icHReOn$XUj8w5Y3} zJkJspB=h%xa>J&&Rg}!>bN8N^0XRoqr-CD=>%z!94a%&Ue@ZD| z6Z?*Hg1Jw6+o?CB*WZK*A%qY@J`?m9>K)HpFOzjU^*tbHaL9dC_jP4N$SHQfNmpwu zW&!*r>D_p>gb@63k+@~BJH!~!VD~0`I=8k-c+i_cx@7TZTq~vrMUQyc^f0~d;?}%T zr?_I=q4Cx(OBb(rB}@mkgpPz`_K4T*n;9afd7~Bi7JSOMZlgQT(mWR>VLcYD7Z8318uy^xWNcCLL8 zok>ON0C$C^V~O`o?U=&eIXG=fA3Dr3(LhEW_3mix-{87sxW5MZLgIgKkULkjYV#|0tMu3}vh&&xaP&3_Xmw58703d_K9U@3>!pP+dxs}w< z^<_=8P`@?rfciRZ-XCj3r&=R2OL}rIc(+2lm*9EI40!yosaE_dt{xP=G77NM)+CW@ zLFweWPUq^Yo!p+$e(I?!`cAX!lnO z(a8CCUu&@$=68ad6wtm8M<#8XFu1EUX`<$)mnw_k=_}aYaS(TF3)9V<5JCtcguIn? zbiGfcTYy}O`M-=a5k3X4fqk`zL7&{%ElEyf(G_6QCpRwZ`h#@?pyd~lLxLY92enpX z-2n7CZgF>OX8ue008>>@rCFpF$w5AljjA=BCH}XRPv%W2=%!kP5JJctegQ=qYLf}7 Ris%3U002ovPDHLkV1h2=bU^?B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_1_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_1_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_tr_script_pk_sighash_all_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..6af6144d6dfba6bd6e47c46dcacb5aba218ba25a GIT binary patch literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WKba4!+nDh3AW8Yx~9*4kX zvu6MJ=l&^nS4Rtn#32`ff@k|fy;e_~l_1j&)Wl%(F8wP@RETM{hE6_=YB%^m7Y(F3#bTd-PzN%pAsNx%bqR;>sHKi-??K z>}@=^XwJIERe8JF_<{mb*ft8@{QKGe!_=lr2M=@eB?8^~Khr@n>zmH)qe(w!CWv;Y zNk&y?pYZq@@qF2Vvx_3P@n-e5oc?$$oOl0=nf3MVOWK#KKMbFBgWG8PXSeEa`kQ86 zmkKcViD}qmEjBB&R{pK@Q@8SM4_}IGseI8a`gf)DbmIq4eyUimk&Ze&Y2k`{zuvFk z@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..3016710d230676a6bf0f75e037e58882f6d42e2c GIT binary patch literal 453 zcmV;$0XqJPP)6%5dhT;NIG3N2C4yg49Nf-j(5={kPN_+d`35*m_O1(2)DJQ3GECB zA;|T3LM#CPPV{n5g5S{%xJ0hI0RRBr$^LB{`6isSW__iKF{-~?`KG(U#}tA)6gfLMaI2mBqybf2va+b!bPwZj#3^?TX(b>@nYe&i0mkEHM zu+GtBswui`b9UwttA?tx@z%(I^{KUO7aesb8UI88006*a|7gCUqF1kZ@AT{L8v@yW zJ;0V5_Zvm!N&DsHyHn1V5cWTsbA{w0hfURZWy`5wX4X5MZReDt->Tc$R{K(fUFTZ& zoDH1P8yh&k_bB4G4?t-XD{jdzaCXvZ#k6}hbZv1mrRr*aBaJg4^I^43N_7vn>s{cl vdfIQwJcK1om5VIM3`PI|00000z>WR@z}`V%5IAk500000NkvXXu0mjfIF!y9 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*00009+(ZA*VCed@|PAoy2fib<{Kb!IN{@_S#z zRiaKVjsEoC?DqF3PQNC4*vpxAxbr>=Wd1Y##N2}0xBc>#or?F}s=WL5$=oX@yEpik zFz@+SaP~~d*1hli9=)3S$)o=Nt+_>+`Zj56HY-d|uHNgr{9oABqgU?ywU58P|Dz$Z z=z{&!gF70`aSjHN*M*|Fo>_m>pv73RYH c2c#b;#sBhK(bQyCCJhqxboFyt=akR{0O4Ja%>V!Z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_1_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba54aafe987c26d92d9abc6c27e37786612bb39c GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2VV9{X(9@oHI zFa2)(pR{Fqok5}mi-n)?ysZ15T{{l;7#vbl1?qaR?aY}oR~8HW2;)~+IwkAH_Op(2 ze*O#OPdIg^=$xw0)__xAn-YC*uX?@w^{Tx-uKSsGsc-xnnRH!j*XdXL+qY-TzFu@L zQu?n*B2!oJ#t(x0lls_lG^1`6N{_C}8#!e^beKi|P(X znCyRhikX4o!mnF3``>LnKVS7sUsW4#?fJvv0spTXn}%<*_&@WiP2~O;uQn+BRO9%l zsHR@?VX;qx?H1ERA9IAC8my~k6IbUI7fxm6iM9UX`hs)EV%wS5_p_E(H{2KEYu|pu zsU|$#x_)|d^qrLZmuIofe35U=VS4d?k7a-ox8_EEZNWI8=aIpK OiF>;GxvXSm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_2_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b0e1548fa41115c7d06c960e2af409d9c09f2a1c GIT binary patch literal 426 zcmV;b0agBqP)P@)+k+{o#AVrq>NXZ&(m-qQmF&b8C0u4@%0{{R30002H__6N5eL3f| zoKiCE$$x|#02z8I;xNP;fHV3s+|9}meyuxjlL~aWxJQ+9mg~>>&k&-{0GR2W<`GZ- zBkl}Pv5pw}BHmTd!DXlu-?0$`0000U=Y7MNh1rG=b?M_=cU7e}4SVt^`PE|Ng5@R=p%*t)sXDK%dj6!<2#O1|G}r6v;1oA2B36K1#v3Z<~cE^ zqVLXl2~tN+9o#H?;BE%g0w98*SV!vk2qLsaEypUZyKnig7>SX@;l&E(4%$(WrT2xcKZc z042mJrL$1#&6j?gY-lfMIar<5eS&vd^&+e4$)3LJE3ejfS%TbR00000006*3e@pj9 U47?QzQ~&?~07*qoM6N<$f_Fp8NB{r; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_2_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..55624c5d6388f98b0451a739ae16d902c7ac6162 GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2V;G|{+o`%G2 zo6R5ob3YaP>%o-7Nef(CFMRtyFG5SFMJhK4q^oXPM~BB3Ehd{q;uC_rRKHw4moWG9 zzy3If$sJGTY&V#C?3$kV4%@F9rv0;4?bGr4BfDT<=hyksZ(g zdh4PdGML3~+#ndQGJnnnFRovAIO0TV*srX-srFs0dVNd!q|4Jh97}`VNj&~Z-jw&zpy4f1tw>MRvncrb;{_+Ze6KUtd7;7fn)XbQB zVR<;~hXT*X`~JOjp3ivSW%&Z>^V_~&`uXgSnQZymvwY?1A>LWG%t9;Jz`O0q07jU~E1fPx4a9JXPs`Y#jvtns5RNZ8ZW&t;ucLK6UE)U}oX literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_2_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..8c57f8c13bbc2371ec1181243d48894d1ced3b51 GIT binary patch literal 898 zcmV-|1AY97P)O^ZMgt#Zu0uA(T4q9}@@_$GSqy?6YP zA|K_CZf?HQe~_9-@hd~=HMyG_Q=B!{tXOMpJe{xgRww)p*Qmq313Ma8Yf>QaJ3b$j zw&A3V04d$(fRd-{JFltNT4MuE+OBtqiB$k$H623Y2p}GVx$o032UO}&1yg3klGp*^ z$+Bkp+&6b#M;U$W(-l7j4cF(9eg|k3M)FIMLFOM2w|j?Vt%BwWm)s=Dh0Lu(Mp`Md z0-yzq9_U%rUGY(Ia3uAQ5fc2rcTj-QV$6C zV=Y1`7ofrnCr@!KGy)XE z?6q=p{X3rO6HbT^tbn75axL-n?*S(CtW2s3kl!J)$*Ki?6k}ioeygH%zCQx)jJwlq zzK%69uDANZL1xmaKs!LvrGJE3STV5ekRh`HGC!D1fSHTy)PIxMbXDLIOub1YiU#6_o}PU|kukZq?GjSA@UzxEq@LKm!z@OcfawFuBdRW8(qr9|gdMNIvMELM zf9oFXxv2hLfrx##tv}szz;qRkJv_RZf{?Pti=~hD!?^QeHu%_o0~+uj0k(Z`egO1t zr8jg(-{hVY1RwF$P^)L|5xxEndU3VM^^VCRA}r0!powqht+^4Wig7Pf9Z(cSQ4}xn Y2j--}&V2jpoB#j-07*qoM6N<$f}C=#b^rhX literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_2_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_2_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..0da504c40e39d62c7a04781782b22bbef2f85b48 GIT binary patch literal 521 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_u9>EaktG3V`!z`mmj9IkVx z-}L;xf62R4JF7~?MIxfNwpc#Dyy%hWmLQNR3~IOqNcLEc&18E%iZ<=Tq=(eFi(bbruM)^j-ahA7 zfQ#DKWyX7$^cDMi-b_Drn)7CZfIrX!>zuBOw|kW?{x7%JEB(Co?%&q>asNMswQSh! zGsSI^ho-x?+x@>~9N(3$%y3Pgm#(z`b9YQspWfO{EjcUqnay7*oPY7zkF#!(UXpWD z`@ZmOcsaH6$@NvI!lugfX_%Rnb}Y;a;+US-aP4UPp+C3gm(2|OFP3+%!Dt`*rf$E9 z=_}*E$QHb3S~4Z*=0fAB+ZO)co=p`#-ML3{`oFjPFKP3|D4cMws|fpKH|5odzxGW= zSN7X}3->7fccVG#gZt~RI=g~4vx^rf8C6f<`UHwY46x)QyOiiHb+w&mv_W#7u6{1- HoD!M}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_3_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..311e4672e3bbe08e11e17c17ac61df44067da8c2 GIT binary patch literal 427 zcmV;c0aX5pP)s|J`u75bm+B+-4L$>-qF|L?rsd>$GQP0Re=r{_ozff&p-30Aw)d_U}iMTBM$!* z_XwzB9WnGpyk9|ypP^2C$3hGM006k1_XVRUs}*l*(&bz?wMuOow&Yg&tHsC#>BFL% z1!|Mh-R<4-^K#BkhgUa7mlWDZL%IRKhVAH@UvXS|2cJYle>HaF zOfTi?&Y$j$K!>&3PaM6v(ZcO8i!k4~RIB~mHlb}e1;w}?aI2iNVS;{_4yZ2C_&MwD z(g9_DFM~aK%G23oLq|EwNiw;*PVk>vqbPsJpUVvRnKv%9%M|1m9RL6T0000U^am4n VLkzuR`MLlA002ovPDHLkV1f(Cy?X!v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_3_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..05ccaac79741aac66e30b935ffdee643ba8e1b43 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Jr`_=;_!R_^H9`=wn<4ooIqU_I)Z`|U##Z%AYRL;xirLie-7Wb zneWTLu$FXsoZH#5(#&i3ybCsqs%I9S3HY@|S0JDtB$JLl%jxcqAO;r(;iUPwLN|*i;g<@5<7jB47D? zn&0)uRswC`7-!68T5TO~@ZxImEZM&&&c-gQ&%QVDenG&Km$H_Xe-c)(_EzV9bbfPk z+O?)xtWVBP-=>*&Kkp^WjQ0frelwo|c`PoJ!|=Tm%Vwy85}Sb4q9e07_i0YybcN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_3_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_3_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8efd1df120d50b84cd15a7884717514b7c131c GIT binary patch literal 724 zcmV;_0xSKAP)j{ZUbD*c$mB4IF76RI1Vu;-m;6$J3u&8>;~Z)vr!1iV@yYjcXiAC zJYok3X9d@OpM=umUPSL?{~3@L9I8h_syTh{*|ReMdFEv*xN^E499gGe%ro;(O6g~# zZk!X$bJ9Cby%qiZLzoak2qA>DQN6E%0;k!S@meBsw9LpD?+PuZv*OCOsubbfr#!%y z{)hqCWpN`T()vIF5WXlcu3~_$nwdAF>Wgt>yx!b}Yj#bl^tnUNUh}qNPs`mcO?qx}+GV_h2M}&ULP*LTmZV zaRy47jYG0n0a(h{0!4VD(+qJnYE54 zYw_ti9U$NBdXe`#?nKWCfZh8d?|0*U*Dli4Jm4E*@DM&B3%!?$lNp1h+~HocoFH1d z1?tC$4IPTG+4?c4;#Rz(&`1D+63qHcldjUmxQI09{f1i5X_Wv=3-Y6P*D%}l#i!}w zR;u$X^txux&b8v@Yr6jRJVYA2dAfNU6JN zy9Xrbj_K=bqU%@3a{8@;5JCtcgb+dqA%qY@2qA=!&)^>!)Ke!g;}B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_3_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_3_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_4_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..2ed1dca4462885177fde18bdc869cd18cac94b65 GIT binary patch literal 425 zcmV;a0apHrP)u`9#VF(4p5dHbcG!ct>A{ySXuiAMXmBWCEQo?pcY5?tjK#Q^x`k_<$DU+cnl5VJ0@ZP006+{qE8q_nLY5LDlHefswTDRSd&ZXzm_8xq;HF6 z7N|~2H@7#-_ba6Yy}X(+T2iP#9q9`EI@Y6Uyy7@@hL}V||Fv)puvg9maVpmqIWcFV zAI`W7GJ8(#+$={B?hdHwA?xt+nc5iu006kp;auTPp_6gvg3>!`a5l%;na_Jc^;}8M z(f6`>?Wg$`(BV<_FZNCnJxQ?8VG3cqaq6i0cYE(N(gi)#BO1W0&(uo=j_U*ol5wBY zUA*q=%^=}21~@c8FJU=&Iy8#}|2e7`&8LjC%SFrMukwg7ATk;N000000Nm&g7w}4K T8KqOw00000NkvXXu0mjfC^5MM literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_4_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_4_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e9fb0b0ab264fc4eab03dfd6dbee3e7da760a0e6 GIT binary patch literal 418 zcmV;T0bTxyP)HyO38Z_4({Fy2qAQPn)vRAo0W{&zriC6*tr*p-c{TmE)MkTjagso=M(zL<%aC@=HV1r>J~j zbcX-!od*B_;OqAJ6xExYEDyA*H|jt+v-(b1ePyW>sS^(8G4}D-De1J17>{?RvYbVB z?lfAX)J0DD4{^jFv6HR7%oo;z)U>ekwjEZRtHQO5g&R=)s!s7>7Pai$+4WYr+j61I zx|nvSpmo>UtcdK4e)ySZz?Vip$P_ej_SQ?MaekSg^V-zhJv^NpWtqqF)9eP}r8c`k zGsr}L8zt04e>3*L6Isa9Ajs^&QiK-(000000000000000003C#329X^U2!rjVgLXD M07*qoM6N<$g4{5`)Bpeg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_4_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_4_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dd90178a3abae7252f095f924cd857191d1dfad7 GIT binary patch literal 751 zcmVaa`rcagaLxl2t680mPtWHW1UWg+xfM!y1~rTbImd ziy1(S%=Vd6kVtQTKGftH{d&ZxX($B)S z^_ak}lhSf3jp+RsVE_OC005xTl&y?yS7~}eE3HC^s9Tcj91B}voCB29LZIWr)3Hqg z#glM0ZYhp*n?1tR1A&yV2{_Z)uiouo=lHtOd<#Ni~zyPtViv zSIi!DSVLk)HgsH!%8*Y2txV8RVp2M~&cO6R!a^O3x^+uI>b2^#=6gW*fF(({I)@tK zl9^BkkPeh)$^%5t`m*E5Gq~zHBLYj^3$tHNIZlo&=8o2rknw1%WKGP%fq0bY z(<#IOO--BGxBEi+FiyhcxKU;T@={Lz%=MKck0f7eG5O9rM1hVv^@*C*us)EJuGQ8s zl{a*i#+^TL*ecB

L{0i6Ya~Q0bI1FZFq|{%+`I6yYIc~rCLjdmMOd%Kc8@G^?9y!t)UP_5 z>wFZRO$P|uaZ0-ne-js5grFz0eiyVG&aqFTf55IE005@5@?VsuF=*cjn%Qt;zSlNX zPwkQH8~JSt0WL~|661OjlkAHr;v>=^_L>3X2+#UO@e~Ju20Q^>k4s62{u|DKN2DUK h4Fv!I0002sAAc++gZM&ZE06#H002ovPDHLkV1mkFVlMyy literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_4_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_4_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_5_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_5_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..e1fa952d66f880e523c9ad565a12d49c77bdd726 GIT binary patch literal 430 zcmV;f0a5;mP)jGKo%?_pC%juRr5oQ^-04;AU%>XB_@Z z-WgzWoiX*Re0M<$x1m9N$3_eQ006jM^bMmZvlreJ(&a*jYD$}qk=#muv>de{JuSLb zptdO8J>G49UMVH$@apF1l1BT}kq+S3F^;bB6UV7nh)G2BM+?^hYj7rsQ?<6pg*lV` zaK=lJIdkgdZaac-GoYpaWbF>0sgnT!0N^F@w<6A{8zR11vE$gjY3r&%$;gY_3~0AY zdYits&G77w*4?YxcQmj0#DTwCMHnBPx~hHOZtdD@DkLaH+)B?LmjH4+kU7shqH$mP ztEY6pI?_uiwc#DnAD<;?t7bVUCY!s)|6H||i_@%07*qoM6N<$f)q2s4gdfE literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_5_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_5_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_5_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_5_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_5_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_0_5_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..223063c8a431e4a19b080edcec045d6472be600f GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh3AW8Yx~9*4kX zvu6MJ=l&^nS4WFPlFXtH2CXH5JYk0_yruYQI_iLEzO-Ydg-&@|<)3rtpq$ zCw8Pu>o_dEBUYJvuK8Iich%W>2TViHUbKnp@Q_R`{xE@k`qqPz33kuy1aGFYznR{2 z>3+jAhwwnX>kgsQW1D${0@BzncE0)bQ~mAKrc(zGGxH?^9r{1hK{D%`&flbuHNKm= zTsQON)|#Xo(M*pn-`J%!>-jdv)e{RW-~9=>(><^9+jch@>%YQvOAf?M*jah~*0yQ$ zcpg7Fwwp=(!5vv|=jCz>uU4*=n_Htl|Ne>X!520yEN{t+IoH5_F|#@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..3016710d230676a6bf0f75e037e58882f6d42e2c GIT binary patch literal 453 zcmV;$0XqJPP)6%5dhT;NIG3N2C4yg49Nf-j(5={kPN_+d`35*m_O1(2)DJQ3GECB zA;|T3LM#CPPV{n5g5S{%xJ0hI0RRBr$^LB{`6isSW__iKF{-~?`KG(U#}tA)6gfLMaI2mBqybf2va+b!bPwZj#3^?TX(b>@nYe&i0mkEHM zu+GtBswui`b9UwttA?tx@z%(I^{KUO7aesb8UI88006*a|7gCUqF1kZ@AT{L8v@yW zJ;0V5_Zvm!N&DsHyHn1V5cWTsbA{w0hfURZWy`5wX4X5MZReDt->Tc$R{K(fUFTZ& zoDH1P8yh&k_bB4G4?t-XD{jdzaCXvZ#k6}hbZv1mrRr*aBaJg4^I^43N_7vn>s{cl vdfIQwJcK1om5VIM3`PI|00000z>WR@z}`V%5IAk500000NkvXXu0mjfIF!y9 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*00009+(ZA*VCed@|PAoy2fib<{Kb!IN{@_S#z zRiaKVjsEoC?DqF3PQNC4*vpxAxbr>=Wd1Y##N2}0xBc>#or?F}s=WL5$=oX@yEpik zFz@+SaP~~d*1hli9=)3S$)o=Nt+_>+`Zj56HY-d|uHNgr{9oABqgU?ywU58P|Dz$Z z=z{&!gF70`aSjHN*M*|Fo>_m>pv73RYH c2c#b;#sBhK(bQyCCJhqxboFyt=akR{0O4Ja%>V!Z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_1_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba54aafe987c26d92d9abc6c27e37786612bb39c GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2VV9{X(9@oHI zFa2)(pR{Fqok5}mi-n)?ysZ15T{{l;7#vbl1?qaR?aY}oR~8HW2;)~+IwkAH_Op(2 ze*O#OPdIg^=$xw0)__xAn-YC*uX?@w^{Tx-uKSsGsc-xnnRH!j*XdXL+qY-TzFu@L zQu?n*B2!oJ#t(x0lls_lG^1`6N{_C}8#!e^beKi|P(X znCyRhikX4o!mnF3``>LnKVS7sUsW4#?fJvv0spTXn}%<*_&@WiP2~O;uQn+BRO9%l zsHR@?VX;qx?H1ERA9IAC8my~k6IbUI7fxm6iM9UX`hs)EV%wS5_p_E(H{2KEYu|pu zsU|$#x_)|d^qrLZmuIofe35U=VS4d?k7a-ox8_EEZNWI8=aIpK OiF>;GxvXSm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_2_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b0e1548fa41115c7d06c960e2af409d9c09f2a1c GIT binary patch literal 426 zcmV;b0agBqP)P@)+k+{o#AVrq>NXZ&(m-qQmF&b8C0u4@%0{{R30002H__6N5eL3f| zoKiCE$$x|#02z8I;xNP;fHV3s+|9}meyuxjlL~aWxJQ+9mg~>>&k&-{0GR2W<`GZ- zBkl}Pv5pw}BHmTd!DXlu-?0$`0000U=Y7MNh1rG=b?M_=cU7e}4SVt^`PE|Ng5@R=p%*t)sXDK%dj6!<2#O1|G}r6v;1oA2B36K1#v3Z<~cE^ zqVLXl2~tN+9o#H?;BE%g0w98*SV!vk2qLsaEypUZyKnig7>SX@;l&E(4%$(WrT2xcKZc z042mJrL$1#&6j?gY-lfMIar<5eS&vd^&+e4$)3LJE3ejfS%TbR00000006*3e@pj9 U47?QzQ~&?~07*qoM6N<$f_Fp8NB{r; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_2_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..05ccaac79741aac66e30b935ffdee643ba8e1b43 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Jr`_=;_!R_^H9`=wn<4ooIqU_I)Z`|U##Z%AYRL;xirLie-7Wb zneWTLu$FXsoZH#5(#&i3ybCsqs%I9S3HY@|S0JDtB$JLl%jxcqAO;r(;iUPwLN|*i;g<@5<7jB47D? zn&0)uRswC`7-!68T5TO~@ZxImEZM&&&c-gQ&%QVDenG&Km$H_Xe-c)(_EzV9bbfPk z+O?)xtWVBP-=>*&Kkp^WjQ0frelwo|c`PoJ!|=Tm%Vwy85}Sb4q9e07_i0YybcN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_2_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8efd1df120d50b84cd15a7884717514b7c131c GIT binary patch literal 724 zcmV;_0xSKAP)j{ZUbD*c$mB4IF76RI1Vu;-m;6$J3u&8>;~Z)vr!1iV@yYjcXiAC zJYok3X9d@OpM=umUPSL?{~3@L9I8h_syTh{*|ReMdFEv*xN^E499gGe%ro;(O6g~# zZk!X$bJ9Cby%qiZLzoak2qA>DQN6E%0;k!S@meBsw9LpD?+PuZv*OCOsubbfr#!%y z{)hqCWpN`T()vIF5WXlcu3~_$nwdAF>Wgt>yx!b}Yj#bl^tnUNUh}qNPs`mcO?qx}+GV_h2M}&ULP*LTmZV zaRy47jYG0n0a(h{0!4VD(+qJnYE54 zYw_ti9U$NBdXe`#?nKWCfZh8d?|0*U*Dli4Jm4E*@DM&B3%!?$lNp1h+~HocoFH1d z1?tC$4IPTG+4?c4;#Rz(&`1D+63qHcldjUmxQI09{f1i5X_Wv=3-Y6P*D%}l#i!}w zR;u$X^txux&b8v@Yr6jRJVYA2dAfNU6JN zy9Xrbj_K=bqU%@3a{8@;5JCtcgb+dqA%qY@2qA=!&)^>!)Ke!g;}B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_2_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_2_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_3_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..311e4672e3bbe08e11e17c17ac61df44067da8c2 GIT binary patch literal 427 zcmV;c0aX5pP)s|J`u75bm+B+-4L$>-qF|L?rsd>$GQP0Re=r{_ozff&p-30Aw)d_U}iMTBM$!* z_XwzB9WnGpyk9|ypP^2C$3hGM006k1_XVRUs}*l*(&bz?wMuOow&Yg&tHsC#>BFL% z1!|Mh-R<4-^K#BkhgUa7mlWDZL%IRKhVAH@UvXS|2cJYle>HaF zOfTi?&Y$j$K!>&3PaM6v(ZcO8i!k4~RIB~mHlb}e1;w}?aI2iNVS;{_4yZ2C_&MwD z(g9_DFM~aK%G23oLq|EwNiw;*PVk>vqbPsJpUVvRnKv%9%M|1m9RL6T0000U^am4n VLkzuR`MLlA002ovPDHLkV1f(Cy?X!v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_3_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e9fb0b0ab264fc4eab03dfd6dbee3e7da760a0e6 GIT binary patch literal 418 zcmV;T0bTxyP)HyO38Z_4({Fy2qAQPn)vRAo0W{&zriC6*tr*p-c{TmE)MkTjagso=M(zL<%aC@=HV1r>J~j zbcX-!od*B_;OqAJ6xExYEDyA*H|jt+v-(b1ePyW>sS^(8G4}D-De1J17>{?RvYbVB z?lfAX)J0DD4{^jFv6HR7%oo;z)U>ekwjEZRtHQO5g&R=)s!s7>7Pai$+4WYr+j61I zx|nvSpmo>UtcdK4e)ySZz?Vip$P_ej_SQ?MaekSg^V-zhJv^NpWtqqF)9eP}r8c`k zGsr}L8zt04e>3*L6Isa9Ajs^&QiK-(000000000000000003C#329X^U2!rjVgLXD M07*qoM6N<$g4{5`)Bpeg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_3_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_3_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dd90178a3abae7252f095f924cd857191d1dfad7 GIT binary patch literal 751 zcmVaa`rcagaLxl2t680mPtWHW1UWg+xfM!y1~rTbImd ziy1(S%=Vd6kVtQTKGftH{d&ZxX($B)S z^_ak}lhSf3jp+RsVE_OC005xTl&y?yS7~}eE3HC^s9Tcj91B}voCB29LZIWr)3Hqg z#glM0ZYhp*n?1tR1A&yV2{_Z)uiouo=lHtOd<#Ni~zyPtViv zSIi!DSVLk)HgsH!%8*Y2txV8RVp2M~&cO6R!a^O3x^+uI>b2^#=6gW*fF(({I)@tK zl9^BkkPeh)$^%5t`m*E5Gq~zHBLYj^3$tHNIZlo&=8o2rknw1%WKGP%fq0bY z(<#IOO--BGxBEi+FiyhcxKU;T@={Lz%=MKck0f7eG5O9rM1hVv^@*C*us)EJuGQ8s zl{a*i#+^TL*ecB

L{0i6Ya~Q0bI1FZFq|{%+`I6yYIc~rCLjdmMOd%Kc8@G^?9y!t)UP_5 z>wFZRO$P|uaZ0-ne-js5grFz0eiyVG&aqFTf55IE005@5@?VsuF=*cjn%Qt;zSlNX zPwkQH8~JSt0WL~|661OjlkAHr;v>=^_L>3X2+#UO@e~Ju20Q^>k4s62{u|DKN2DUK h4Fv!I0002sAAc++gZM&ZE06#H002ovPDHLkV1mkFVlMyy literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_3_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_3_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_4_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..2ed1dca4462885177fde18bdc869cd18cac94b65 GIT binary patch literal 425 zcmV;a0apHrP)u`9#VF(4p5dHbcG!ct>A{ySXuiAMXmBWCEQo?pcY5?tjK#Q^x`k_<$DU+cnl5VJ0@ZP006+{qE8q_nLY5LDlHefswTDRSd&ZXzm_8xq;HF6 z7N|~2H@7#-_ba6Yy}X(+T2iP#9q9`EI@Y6Uyy7@@hL}V||Fv)puvg9maVpmqIWcFV zAI`W7GJ8(#+$={B?hdHwA?xt+nc5iu006kp;auTPp_6gvg3>!`a5l%;na_Jc^;}8M z(f6`>?Wg$`(BV<_FZNCnJxQ?8VG3cqaq6i0cYE(N(gi)#BO1W0&(uo=j_U*ol5wBY zUA*q=%^=}21~@c8FJU=&Iy8#}|2e7`&8LjC%SFrMukwg7ATk;N000000Nm&g7w}4K T8KqOw00000NkvXXu0mjfC^5MM literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_4_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_4_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_4_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_4_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_4_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_1_4_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..223063c8a431e4a19b080edcec045d6472be600f GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh3AW8Yx~9*4kX zvu6MJ=l&^nS4WFPlFXtH2CXH5JYk0_yruYQI_iLEzO-Ydg-&@|<)3rtpq$ zCw8Pu>o_dEBUYJvuK8Iich%W>2TViHUbKnp@Q_R`{xE@k`qqPz33kuy1aGFYznR{2 z>3+jAhwwnX>kgsQW1D${0@BzncE0)bQ~mAKrc(zGGxH?^9r{1hK{D%`&flbuHNKm= zTsQON)|#Xo(M*pn-`J%!>-jdv)e{RW-~9=>(><^9+jch@>%YQvOAf?M*jah~*0yQ$ zcpg7Fwwp=(!5vv|=jCz>uU4*=n_Htl|Ne>X!520yEN{t+IoH5_F|#@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..3016710d230676a6bf0f75e037e58882f6d42e2c GIT binary patch literal 453 zcmV;$0XqJPP)6%5dhT;NIG3N2C4yg49Nf-j(5={kPN_+d`35*m_O1(2)DJQ3GECB zA;|T3LM#CPPV{n5g5S{%xJ0hI0RRBr$^LB{`6isSW__iKF{-~?`KG(U#}tA)6gfLMaI2mBqybf2va+b!bPwZj#3^?TX(b>@nYe&i0mkEHM zu+GtBswui`b9UwttA?tx@z%(I^{KUO7aesb8UI88006*a|7gCUqF1kZ@AT{L8v@yW zJ;0V5_Zvm!N&DsHyHn1V5cWTsbA{w0hfURZWy`5wX4X5MZReDt->Tc$R{K(fUFTZ& zoDH1P8yh&k_bB4G4?t-XD{jdzaCXvZ#k6}hbZv1mrRr*aBaJg4^I^43N_7vn>s{cl vdfIQwJcK1om5VIM3`PI|00000z>WR@z}`V%5IAk500000NkvXXu0mjfIF!y9 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*00009+(ZA*VCed@|PAoy2fib<{Kb!IN{@_S#z zRiaKVjsEoC?DqF3PQNC4*vpxAxbr>=Wd1Y##N2}0xBc>#or?F}s=WL5$=oX@yEpik zFz@+SaP~~d*1hli9=)3S$)o=Nt+_>+`Zj56HY-d|uHNgr{9oABqgU?ywU58P|Dz$Z z=z{&!gF70`aSjHN*M*|Fo>_m>pv73RYH c2c#b;#sBhK(bQyCCJhqxboFyt=akR{0O4Ja%>V!Z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_1_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba54aafe987c26d92d9abc6c27e37786612bb39c GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2VV9{X(9@oHI zFa2)(pR{Fqok5}mi-n)?ysZ15T{{l;7#vbl1?qaR?aY}oR~8HW2;)~+IwkAH_Op(2 ze*O#OPdIg^=$xw0)__xAn-YC*uX?@w^{Tx-uKSsGsc-xnnRH!j*XdXL+qY-TzFu@L zQu?n*B2!oJ#t(x0lls_lG^1`6N{_C}8#!e^beKi|P(X znCyRhikX4o!mnF3``>LnKVS7sUsW4#?fJvv0spTXn}%<*_&@WiP2~O;uQn+BRO9%l zsHR@?VX;qx?H1ERA9IAC8my~k6IbUI7fxm6iM9UX`hs)EV%wS5_p_E(H{2KEYu|pu zsU|$#x_)|d^qrLZmuIofe35U=VS4d?k7a-ox8_EEZNWI8=aIpK OiF>;GxvXSm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_2_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b0e1548fa41115c7d06c960e2af409d9c09f2a1c GIT binary patch literal 426 zcmV;b0agBqP)P@)+k+{o#AVrq>NXZ&(m-qQmF&b8C0u4@%0{{R30002H__6N5eL3f| zoKiCE$$x|#02z8I;xNP;fHV3s+|9}meyuxjlL~aWxJQ+9mg~>>&k&-{0GR2W<`GZ- zBkl}Pv5pw}BHmTd!DXlu-?0$`0000U=Y7MNh1rG=b?M_=cU7e}4SVt^`PE|Ng5@R=p%*t)sXDK%dj6!<2#O1|G}r6v;1oA2B36K1#v3Z<~cE^ zqVLXl2~tN+9o#H?;BE%g0w98*SV!vk2qLsaEypUZyKnig7>SX@;l&E(4%$(WrT2xcKZc z042mJrL$1#&6j?gY-lfMIar<5eS&vd^&+e4$)3LJE3ejfS%TbR00000006*3e@pj9 U47?QzQ~&?~07*qoM6N<$f_Fp8NB{r; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_2_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..55624c5d6388f98b0451a739ae16d902c7ac6162 GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2V;G|{+o`%G2 zo6R5ob3YaP>%o-7Nef(CFMRtyFG5SFMJhK4q^oXPM~BB3Ehd{q;uC_rRKHw4moWG9 zzy3If$sJGTY&V#C?3$kV4%@F9rv0;4?bGr4BfDT<=hyksZ(g zdh4PdGML3~+#ndQGJnnnFRovAIO0TV*srX-srFs0dVNd!q|4Jh97}`VNj&~Z-jw&zpy4f1tw>MRvncrb;{_+Ze6KUtd7;7fn)XbQB zVR<;~hXT*X`~JOjp3ivSW%&Z>^V_~&`uXgSnQZymvwY?1A>LWG%t9;Jz`O0q07jU~E1fPx4a9JXPs`Y#jvtns5RNZ8ZW&t;ucLK6UE)U}oX literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_2_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..8c57f8c13bbc2371ec1181243d48894d1ced3b51 GIT binary patch literal 898 zcmV-|1AY97P)O^ZMgt#Zu0uA(T4q9}@@_$GSqy?6YP zA|K_CZf?HQe~_9-@hd~=HMyG_Q=B!{tXOMpJe{xgRww)p*Qmq313Ma8Yf>QaJ3b$j zw&A3V04d$(fRd-{JFltNT4MuE+OBtqiB$k$H623Y2p}GVx$o032UO}&1yg3klGp*^ z$+Bkp+&6b#M;U$W(-l7j4cF(9eg|k3M)FIMLFOM2w|j?Vt%BwWm)s=Dh0Lu(Mp`Md z0-yzq9_U%rUGY(Ia3uAQ5fc2rcTj-QV$6C zV=Y1`7ofrnCr@!KGy)XE z?6q=p{X3rO6HbT^tbn75axL-n?*S(CtW2s3kl!J)$*Ki?6k}ioeygH%zCQx)jJwlq zzK%69uDANZL1xmaKs!LvrGJE3STV5ekRh`HGC!D1fSHTy)PIxMbXDLIOub1YiU#6_o}PU|kukZq?GjSA@UzxEq@LKm!z@OcfawFuBdRW8(qr9|gdMNIvMELM zf9oFXxv2hLfrx##tv}szz;qRkJv_RZf{?Pti=~hD!?^QeHu%_o0~+uj0k(Z`egO1t zr8jg(-{hVY1RwF$P^)L|5xxEndU3VM^^VCRA}r0!powqht+^4Wig7Pf9Z(cSQ4}xn Y2j--}&V2jpoB#j-07*qoM6N<$f}C=#b^rhX literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_2_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_2_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..0da504c40e39d62c7a04781782b22bbef2f85b48 GIT binary patch literal 521 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_u9>EaktG3V`!z`mmj9IkVx z-}L;xf62R4JF7~?MIxfNwpc#Dyy%hWmLQNR3~IOqNcLEc&18E%iZ<=Tq=(eFi(bbruM)^j-ahA7 zfQ#DKWyX7$^cDMi-b_Drn)7CZfIrX!>zuBOw|kW?{x7%JEB(Co?%&q>asNMswQSh! zGsSI^ho-x?+x@>~9N(3$%y3Pgm#(z`b9YQspWfO{EjcUqnay7*oPY7zkF#!(UXpWD z`@ZmOcsaH6$@NvI!lugfX_%Rnb}Y;a;+US-aP4UPp+C3gm(2|OFP3+%!Dt`*rf$E9 z=_}*E$QHb3S~4Z*=0fAB+ZO)co=p`#-ML3{`oFjPFKP3|D4cMws|fpKH|5odzxGW= zSN7X}3->7fccVG#gZt~RI=g~4vx^rf8C6f<`UHwY46x)QyOiiHb+w&mv_W#7u6{1- HoD!M}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_3_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..311e4672e3bbe08e11e17c17ac61df44067da8c2 GIT binary patch literal 427 zcmV;c0aX5pP)s|J`u75bm+B+-4L$>-qF|L?rsd>$GQP0Re=r{_ozff&p-30Aw)d_U}iMTBM$!* z_XwzB9WnGpyk9|ypP^2C$3hGM006k1_XVRUs}*l*(&bz?wMuOow&Yg&tHsC#>BFL% z1!|Mh-R<4-^K#BkhgUa7mlWDZL%IRKhVAH@UvXS|2cJYle>HaF zOfTi?&Y$j$K!>&3PaM6v(ZcO8i!k4~RIB~mHlb}e1;w}?aI2iNVS;{_4yZ2C_&MwD z(g9_DFM~aK%G23oLq|EwNiw;*PVk>vqbPsJpUVvRnKv%9%M|1m9RL6T0000U^am4n VLkzuR`MLlA002ovPDHLkV1f(Cy?X!v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_3_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..05ccaac79741aac66e30b935ffdee643ba8e1b43 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Jr`_=;_!R_^H9`=wn<4ooIqU_I)Z`|U##Z%AYRL;xirLie-7Wb zneWTLu$FXsoZH#5(#&i3ybCsqs%I9S3HY@|S0JDtB$JLl%jxcqAO;r(;iUPwLN|*i;g<@5<7jB47D? zn&0)uRswC`7-!68T5TO~@ZxImEZM&&&c-gQ&%QVDenG&Km$H_Xe-c)(_EzV9bbfPk z+O?)xtWVBP-=>*&Kkp^WjQ0frelwo|c`PoJ!|=Tm%Vwy85}Sb4q9e07_i0YybcN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_3_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_3_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8efd1df120d50b84cd15a7884717514b7c131c GIT binary patch literal 724 zcmV;_0xSKAP)j{ZUbD*c$mB4IF76RI1Vu;-m;6$J3u&8>;~Z)vr!1iV@yYjcXiAC zJYok3X9d@OpM=umUPSL?{~3@L9I8h_syTh{*|ReMdFEv*xN^E499gGe%ro;(O6g~# zZk!X$bJ9Cby%qiZLzoak2qA>DQN6E%0;k!S@meBsw9LpD?+PuZv*OCOsubbfr#!%y z{)hqCWpN`T()vIF5WXlcu3~_$nwdAF>Wgt>yx!b}Yj#bl^tnUNUh}qNPs`mcO?qx}+GV_h2M}&ULP*LTmZV zaRy47jYG0n0a(h{0!4VD(+qJnYE54 zYw_ti9U$NBdXe`#?nKWCfZh8d?|0*U*Dli4Jm4E*@DM&B3%!?$lNp1h+~HocoFH1d z1?tC$4IPTG+4?c4;#Rz(&`1D+63qHcldjUmxQI09{f1i5X_Wv=3-Y6P*D%}l#i!}w zR;u$X^txux&b8v@Yr6jRJVYA2dAfNU6JN zy9Xrbj_K=bqU%@3a{8@;5JCtcgb+dqA%qY@2qA=!&)^>!)Ke!g;}B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_3_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_3_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_4_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..2ed1dca4462885177fde18bdc869cd18cac94b65 GIT binary patch literal 425 zcmV;a0apHrP)u`9#VF(4p5dHbcG!ct>A{ySXuiAMXmBWCEQo?pcY5?tjK#Q^x`k_<$DU+cnl5VJ0@ZP006+{qE8q_nLY5LDlHefswTDRSd&ZXzm_8xq;HF6 z7N|~2H@7#-_ba6Yy}X(+T2iP#9q9`EI@Y6Uyy7@@hL}V||Fv)puvg9maVpmqIWcFV zAI`W7GJ8(#+$={B?hdHwA?xt+nc5iu006kp;auTPp_6gvg3>!`a5l%;na_Jc^;}8M z(f6`>?Wg$`(BV<_FZNCnJxQ?8VG3cqaq6i0cYE(N(gi)#BO1W0&(uo=j_U*ol5wBY zUA*q=%^=}21~@c8FJU=&Iy8#}|2e7`&8LjC%SFrMukwg7ATk;N000000Nm&g7w}4K T8KqOw00000NkvXXu0mjfC^5MM literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_4_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_4_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_4_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_4_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_4_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_external_inputs_2_4_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..223063c8a431e4a19b080edcec045d6472be600f GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh3AW8Yx~9*4kX zvu6MJ=l&^nS4WFPlFXtH2CXH5JYk0_yruYQI_iLEzO-Ydg-&@|<)3rtpq$ zCw8Pu>o_dEBUYJvuK8Iich%W>2TViHUbKnp@Q_R`{xE@k`qqPz33kuy1aGFYznR{2 z>3+jAhwwnX>kgsQW1D${0@BzncE0)bQ~mAKrc(zGGxH?^9r{1hK{D%`&flbuHNKm= zTsQON)|#Xo(M*pn-`J%!>-jdv)e{RW-~9=>(><^9+jch@>%YQvOAf?M*jah~*0yQ$ zcpg7Fwwp=(!5vv|=jCz>uU4*=n_Htl|Ne>X!520yEN{t+IoH5_F|#@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_naked_opreturn_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_naked_opreturn_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_naked_opreturn_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_naked_opreturn_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4c3776135d420a23d4d553d2001ad7454d0be370 GIT binary patch literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`huba4!+nDh2#qEM59KwDzg zF3#`vm+mc<_u<*xutIhBliz=ggp%!&Ot~0=ns(?43JSgsl&FZ}S7;F^`f~Z%f%7%{ z*RWquRWdv#5^U#j{AWv=_f79u_t;f7XS@D#1>8UKDfQGkn}Fp{%iHAx%g!G+bi4hf zxt-I4FEvp8-I9589xP>9JNv=(o^XfAS+5`63tlh!*{f()w@`@KQ|H)OIfK!+~pus~Bcg>8&xBuBvuC+xKGs&Ssj)pxyXJGSa>0g7MWA!#6-!F1j<$Ym){WDVq-q+u`Hs^Jl z&#%iSi`4#}oWblJqUhZ`VP>`RxvR!5xu{9kv_Qh1u6{1-oD!Mx3ba4!+nDh2V;HG8;9*4kR z%d8Xsdnf6?KP=hKsTicqd9B(`@TeM_h9)CW)Alg$B0(q58vKCjIxaZEhWykj1kK0{XI}&*7em|cV z;J#;ip#R5ghglm|JoB>Rs(N!vcxJ=j>DPk~nl0Zx*L`2`;`6gU`+L0zT$OC zzUAB6i?8($ft>JU3$JK>Sx@fL+V>CZw&aRfhgA2kF574Om1XVTlsO)^&83oWru*hT zKJhyyyK`|z=^OUddDARBYxF^`{RM_B{OhgGK4Y`d>~z%97j` z>UeOP-rr}e`ryd{U-K(Z4jgoxaPnYCi#X7g$Y91Z`Lp+BPH5_FsRappy85}Sb4q9e E0D$4PU;qFB literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_naked_opreturn_0_0/00003.png b/tests/snapshots/nanosp/test_sign_psbt_with_naked_opreturn_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_naked_opreturn_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_naked_opreturn_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..80f6eb6a48cbbbb3d041f0cade284c8687b033f2 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hoba4!+nDh2VAm1Sco`yt| zdrQ9C2fcrE*r;i7v*dBF=l^Zbc1dSSDrhnSHBGOsC|}?jdb(ff(bdU?arb0j>`uM6 znSu3&Mtpb7Y^w~j*%vPFX0BZ|YxB;S4v(3s#yd_N%w&yVK9hJ)O)2nRLq%}FFP{v* zFKVY#c|%HXNwLgmGBWP$J#)_f|B{H{0Lhp;34&}43_twUbDYl_pZ=D%F>mskvx|1} z-u->b{89eov%hX6yjNH#oqs3mg6q#C%DHudFXw+??c;e>%>M5H(~DI-J=HM*%>0jE zUEXN&{LM|{k~=ZBtVg|Sqx`=dE1hlnK<`!Tg*4t3(^)>ZfAu{x?d#feT{HN9t-8&- xrs>~`M*FM>{ZbW5zvrFUr@o0F=wD>O^O;Tb73WK_sZ0w&!k(^vF6*2Ung9tSnmGUf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_naked_opreturn_1_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_naked_opreturn_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_opreturn_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_opreturn_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_opreturn_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_opreturn_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4c3776135d420a23d4d553d2001ad7454d0be370 GIT binary patch literal 360 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 Xo$&u9D(CjF00000NkvXXu0mjfUP6d% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_opreturn_0_0/00005.png b/tests/snapshots/nanosp/test_sign_psbt_with_opreturn_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_opreturn_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_opreturn_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..80f6eb6a48cbbbb3d041f0cade284c8687b033f2 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hoba4!+nDh2VAm1Sco`yt| zdrQ9C2fcrE*r;i7v*dBF=l^Zbc1dSSDrhnSHBGOsC|}?jdb(ff(bdU?arb0j>`uM6 znSu3&Mtpb7Y^w~j*%vPFX0BZ|YxB;S4v(3s#yd_N%w&yVK9hJ)O)2nRLq%}FFP{v* zFKVY#c|%HXNwLgmGBWP$J#)_f|B{H{0Lhp;34&}43_twUbDYl_pZ=D%F>mskvx|1} z-u->b{89eov%hX6yjNH#oqs3mg6q#C%DHudFXw+??c;e>%>M5H(~DI-J=HM*%>0jE zUEXN&{LM|{k~=ZBtVg|Sqx`=dE1hlnK<`!Tg*4t3(^)>ZfAu{x?d#feT{HN9t-8&- xrs>~`M*FM>{ZbW5zvrFUr@o0F=wD>O^O;Tb73WK_sZ0w&!k(^vF6*2Ung9tSnmGUf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_opreturn_1_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_opreturn_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_opreturn_v1_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_opreturn_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_opreturn_v1_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_opreturn_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4c3776135d420a23d4d553d2001ad7454d0be370 GIT binary patch literal 360 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 Xo$&u9D(CjF00000NkvXXu0mjfUP6d% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_opreturn_v1_0_0/00005.png b/tests/snapshots/nanosp/test_sign_psbt_with_opreturn_v1_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_opreturn_v1_1_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_opreturn_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..80f6eb6a48cbbbb3d041f0cade284c8687b033f2 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hoba4!+nDh2VAm1Sco`yt| zdrQ9C2fcrE*r;i7v*dBF=l^Zbc1dSSDrhnSHBGOsC|}?jdb(ff(bdU?arb0j>`uM6 znSu3&Mtpb7Y^w~j*%vPFX0BZ|YxB;S4v(3s#yd_N%w&yVK9hJ)O)2nRLq%}FFP{v* zFKVY#c|%HXNwLgmGBWP$J#)_f|B{H{0Lhp;34&}43_twUbDYl_pZ=D%F>mskvx|1} z-u->b{89eov%hX6yjNH#oqs3mg6q#C%DHudFXw+??c;e>%>M5H(~DI-J=HM*%>0jE zUEXN&{LM|{k~=ZBtVg|Sqx`=dE1hlnK<`!Tg*4t3(^)>ZfAu{x?d#feT{HN9t-8&- xrs>~`M*FM>{ZbW5zvrFUr@o0F=wD>O^O;Tb73WK_sZ0w&!k(^vF6*2Ung9tSnmGUf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_opreturn_v1_1_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_opreturn_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..527667d5233d35bcc2d9edd558a3bcfb3d021868 GIT binary patch literal 377 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9cba4!+nDh2#;-qE;p0>nY zo6R5ob3YaPjeWC^TEnffFWzr||5>Clg{{-en-QpO-?W)CXI6| z`o8+B%n?SLqq4b!^|ut+Cq_MvZmn|)|7Rllmy08O(f=Ds&$%CNsVn)eUGq6^-PWwd z@kTxlpF?zxb*P_I*FQ0-$@!*?TB%kU*(LI1@~2?mW#tz?wr#xl zCp%mY==f{SUynZgnSUoF;_Xi#={{Tk`7XzuCAT$CF*9olGi85mzKe_X?P`ZEal@%R z;&rq}k3HfiWdSPR+>O*}> z;r}kimh>e+<@}FZvW7 R@0bh{_jL7hS?83{1OQolpR51? literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_0_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..687e6d5cde9fae2b37cb3b9d50328181b295fed0 GIT binary patch literal 519 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>Aw>EaktG3V_p&!Qs=Jg#%s z-D&wP-?=;G;gO{VkvD`YD)O&>J=maXcyg}}P!j`#ztS;@UO2gV=cJN};TI;9=Qcg&@o-zy^EX-7qxqW6tp(afIfW$+l^dQ+ z)T`ZmY-{N9!`t+Jt7b^=n)7mX#_xW?X#kN>?&+;WAT57d%`VrFeET^($# zDW)IDShiZEW z#r38vENR}uCVt!T&4OuM`A@Eyy5@@&%M?2%AytUvrsrFRt_%z3o-sGZ&n-#uF+j=b)VT)@Ka!^ZB@=3B9%V$SOn;rWVr8(4hV z*nw_6VEs_ZEac7OCeEYL-L5;p>flPb)kN}j;YxiTvEOfBee_9(R4^#2JYD@<);T3K F0RXD6obga3umFKm_nuFJ1?CxW2mk;8z+y_#RHKlaGOHJtS28?L=3s2g2vJC#9Xo_5M* z9YQvfYQ;5b1uK_B#_E&G!?|>TOHBX(_y@-B(Q0?4=rezryr&OluOf_RtDTAA_kF6Y zs(M7P9oHL0p9i$tPG{;6yEoA*gZ&7= zKr N002ovPDHLkV1ltr+NS^j literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_0_0/00004.png b/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_0_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cc1210f5c64ebc7f72d02d084bd63eff1b9dc306 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2VAYZcrPebCi zH)?zTPpq15J3~Ni>nskDJO6EWp3~gcC9BB@)O2|7BK8M?S3fQ8aOqt#-~S84Ia{Om zHw8;_LAYo5eKbLh*2~7Zb C^_JHF literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_0_1/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_v1_0_0/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_v1_0_0/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..527667d5233d35bcc2d9edd558a3bcfb3d021868 GIT binary patch literal 377 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9cba4!+nDh2#;-qE;p0>nY zo6R5ob3YaPjeWC^TEnffFWzr||5>Clg{{-en-QpO-?W)CXI6| z`o8+B%n?SLqq4b!^|ut+Cq_MvZmn|)|7Rllmy08O(f=Ds&$%CNsVn)eUGq6^-PWwd z@kTxlpF?zxb*P_I*FQ0-$@!*?TB%kU*(LI1@~2?mW#tz?wr#xl zCp%mY==f{SUynZgnSUoF;_Xi#={{Tk`7XzuCAT$CF*9olGi85mzKe_X?P`ZEal@%R z;&rq}k3HfiWdSPR+>O*}> z;r}kimh>e+<@}FZvW7 R@0bh{_jL7hS?83{1OQolpR51? literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_v1_0_0/00002.png b/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..687e6d5cde9fae2b37cb3b9d50328181b295fed0 GIT binary patch literal 519 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>Aw>EaktG3V_p&!Qs=Jg#%s z-D&wP-?=;G;gO{VkvD`YD)O&>J=maXcyg}}P!j`#ztS;@UO2gV=cJN};TI;9=Qcg&@o-zy^EX-7qxqW6tp(afIfW$+l^dQ+ z)T`ZmY-{N9!`t+Jt7b^=n)7mX#_xW?X#kN>?&+;WAT57d%`VrFeET^($# zDW)IDShiZEW z#r38vENR}uCVt!T&4OuM`A@Eyy5@@&%M?2%AytUvrsrFRt_%z3o-sGZ&n-#uF+j=b)VT)@Ka!^ZB@=3B9%V$SOn;rWVr8(4hV z*nw_6VEs_ZEac7OCeEYL-L5;p>flPb)kN}j;YxiTvEOfBee_9(R4^#2JYD@<);T3K F0RXD6obga3umFKm_nuFJ1?CxW2mk;8z+y_#RHKlaGOHJtS28?L=3s2g2vJC#9Xo_5M* z9YQvfYQ;5b1uK_B#_E&G!?|>TOHBX(_y@-B(Q0?4=rezryr&OluOf_RtDTAA_kF6Y zs(M7P9oHL0p9i$tPG{;6yEoA*gZ&7= zKr N002ovPDHLkV1ltr+NS^j literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_v1_0_0/00004.png b/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_v1_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_v1_0_1/00000.png b/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_v1_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cc1210f5c64ebc7f72d02d084bd63eff1b9dc306 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2VAYZcrPebCi zH)?zTPpq15J3~Ni>nskDJO6EWp3~gcC9BB@)O2|7BK8M?S3fQ8aOqt#-~S84Ia{Om zHw8;_LAYo5eKbLh*2~7Zb C^_JHF literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_v1_0_1/00001.png b/tests/snapshots/nanosp/test_sign_psbt_with_segwit_v16_v1_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_dashboard/00000.png b/tests/snapshots/nanox/test_dashboard/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..d73deb1de6696efb1f398bb50d9617696cc2590f GIT binary patch literal 537 zcmV+!0_OdRP)%aF;=ECB`#g6_7%#XF6^>!mEH#ggeIAN(l-` z3Fz!FSdHkp+kqi)Cw>O00yMb=1=wU@Cm?~{x0x|&!=!s7VA%rME@1{}E;eCkRgSQi6fMo5q+0Fy2gSw@8 zQd8!BX+#@bT3%O;-*9G@|D~O0-n4Gwl<`H2uRwXT`Hx_8TO*cZ;U>>G!4`cNgW z;p^^>5DTE(-983_IFxEtDF^&)Q!S9J;fB@99cA%qZe z!j(=(CgV8)US7=7!lzj5*sH3loT=3}p>%RR_2RAK_*PyucCFJj$MI4DB|US~(3Y`q zmw-;qQt#Eh2m*HrNG$5kSzq(h{oN&?M-w%4%IbHBBfMn==?5AF8}X_DA%qY@2qA}6ba4!+nDh2#EMK#NfLq|L z67@Iro|~uJO_(IeqPykXg?pb+fmsajfF`$*|YG{7b-w-Cr5LJ=G}Plo&l#MgFpt^F{5e53Co< zCDyYp(Oj9Hs{Ss(_jb~??N(K%Z8z&XxZ7`96k_+;_DLb9m3(UU-<9RNbp0b4CLiB1 z$8V#e{_edc+1ek&R!?oNm|oox7igSvY5y6&D@*DPvl2Q(PY8Wa^e)|FKDltt^`Cjh z*IFFsdKa%b$=RQOsQ&2J?F%ID-D|vVw&%o;_$D!f%}0V8A}5EP_DkkUMCl?!SoAMtd?CI*~vd$@?2>_+9j#dBw literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_dashboard/00002.png b/tests/snapshots/nanox/test_dashboard/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..7e1a28c65f77030ad7ed3d1b28cd5e3f15ba7106 GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}Bba4!+nDh2VAm1Sc0oOp2 zcP)SQGrv7@7dB#Ax;1NN`1_y2CW`q9TE3h>O%SkS)9p8`GKpz-KhF7lQv2tf+HXwv zwoUt2p|$2XQ2a_>+0ieP^B6B>Kk7Q0t{B5`_k!(1rUE9l%e;4m^%&F>jDP}rs}CH# zqJH3vO4+m*`~R8U`(0tR;2@W(*#2FmF5jmt^1HI6-YCmJI5uNh?}U{H{RQ>E8E($n zyhZuCz(=*1rhiF~5?`x-(_7IJ@h&D?`RS?0@9k2b98t~ZC}+BL?y-H?&7ThJ(tG}B zJ(tn?E3$#1`|Ofkx~gfDCAn`ki7d8JyT$Tg}e1&P( zg<|UtodolD7x+GLS#VfwY~I79_sp!SLEQG|Hc1JStDnm{r-UW|D(8I) literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_0_0/00000.png b/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..8583e39efd65ff8275a2f940b088b17a1e4c9b3e GIT binary patch literal 493 zcmVi5O#yakmyj zeD7A^?KpNo8vEXZz$?#ifY%5RM)&IjuMT(&E*(%E?@oijr30SC*KP$aqmT3u!ZJ-v z@Erjm1a}q}ICH@1MDK1T_}Q(%5bn$k0002+PFB3O#lMU<-1uyF6N}$v7d2;?E}o(B z-VH?F`nru+YBf(DR13u|MM(ZL#+a^o{i86Iq@TxCJW}c-o^9{1LaC=cN(7YiQfceP z`rTsn2TuzJ*%JX(u6C)<1h>jqh_S!f0awGYJ8Z?2wTp7*@tusTl4kiEW~xh-b~+$m z9))INyy0csawAqv9O{|Kyh1f0 zs@D;T%rf6l-c`i5OEbiHCtP+wc%sb2R&At6?o*>%Y;`0VGCdVxn8KYg08hovUWZn! z0plk)4+-YBXcRm31gfXAp_8mI!?o=gPeJ;3M^Vyl(5qiAbs>sa-+%pZqv)ORGzC2p j8~^|S0000001NpA<78XjwR=lR00000NkvXXu0mjf1+LS- literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_0_0/00001.png b/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fb5c9c6731d1b8cfed9cddf0f162ddee4e353aa7 GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{)ba4!+nDh2#bl)KZ9*2t! zH$1=ZU-G84-)rJj^Sr3*Pv`XuwzOHDTkYcn)C2_$m-nn;zR+#B?E39(l5RyUr}-wV zoNiOryr0kG=Jc2A#CCny#^<2vy=C{FYSH8=ul@h8<&H~dIJ2c~=kbT~f6g`NT$c;p z|M|O!$h@x-vx-foEJ~0)y~c4xU(};;ji!c7{@Z<#eOg4T&PM)drM>+H9~fi8 z_N2LN`B!Qvd3bNz+k^6UYP~PZ8`k~Ol6Rf^O8?&{k0mxncf7ytU+Ge}WqP`3bi3|V z<&$4ppS}+JFnN0Ex+za@roQHN4=&Bx{;c}{BR|)#zNZg8j8Zw?`^!7Z#P|XK)aI(I zyIk0PG_TJL?e2MI^B~TjHTk2duKs^6IpN)udu{K+Dp$So{k=Oxeb1GyMBz2J ws`blfckHUzBj;(yHv0q9WNvX-5HaY~Fy5J9DSW5x@=B1Hr>mdKI;Vst0M=5thyVZp literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_0_0/00002.png b/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..3f9a1347fdaea6e266cafb92b9d57af2545e7f1a GIT binary patch literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{&ba4!+nDh3gW8Yx~9*2ut zUit3$KXHe*c;Lj=#tB}1hQIPn7jib|6lhxV0d+kn)PK*|^JLD`RIiuUnm>QHuBzsL zaLY%g_+03=ML#O|ADBtLFg9Phbk>ihwNIA{B(R2DI=@gU?$+t0r#bRDH!!WbCA8(r z7Z#6(IVXxvy`R`wp_*ZQP$=M8U2(fqxjqZf2H{UT-2QJey=(pN`p@LsHxu?Vf4lu` zeW{3{#Y-Q}x%KA$%Cn~L`uxmsWzPD%+buk+c^2)v($C}f=!@;yuM7VleQ@wu?y_sK zjGH!^tEwk2sg77a<)_MmE5foj<8m{fC2R_NVYS(BV&_NI7@@Q)hkvg0{<=QA;i$qF z7MT~Ke_#FnT=VnmeedHl*?T7yUR)cS8ngV_H=A$w*1r0wYag-PC~r+H&-M8W%VOdl tPhj@H8!)+P)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000{RJ8t?J4UJF>iW08*4>dY`B0a6HXW2ng~IUQ68N$I0fa|GX*_4cRL6-#Nzo*o}Pj_PR^Kg@*Ah+UDGpF zbz=hHE{!b79^bIN*vOKzkUyE|>!W3IVJ}*9Q z5MtJ74$9)<-=gId*Kklt4b3`3pI>!4$BxxNA26>gYn2)#Ku3Z9Ib!OE3np9np{-|u z$~ie4ybBFN-f|Fwf-o$r@qv2-GRH{)iX3Rl;9C;#0C{l~PCji|02b`u@{8C;MAY~K zbgXUE51jdpL?!@Q8K*NiS^FCgtEE2$kIlyV5@umclk2}j(sGcb@C_fZD7h`ReP8XqrBi2g zofvOdQ`PSFd(*W#CPjA>Y98#MsZH!JaDmoXo( z$i$LHK0fnYD<|ROI2ZxsYQ|XGsBrLFw{~wz+1}-IoB&JZADwW#5zXL3?s}dlwMI2tZ%C;GCp)8A{j$Tu|!G$ZTbPPD1mIbQi#bCLg~E0hR&AEk!A8+gbn filQirVgr8w<>Y6ky1ldY00000NkvXXu0mjf_f+Ie literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_0_0/00005.png b/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..45d9d59ac402e04943671d7dece08b7ee33238aa GIT binary patch literal 963 zcmV;!13dhRP)Z?fs^65pqTV4w&P^U)r!Bu9?fXX=Zr6*YaR>!1dlq zMQzaFro5%)Bu^_w?B`4S=-9p<6^RtMt-LyMR z(<*S`5F9$V=x8^x(~fOF@aMe`J`(Y`}3Bb^bNynlS!A}KUvm_9$dRenyG!=2Hrn|US1xJ7;i0-7D zOMkx?Aw4EJ(*MJ$^5TJfafF9?07Tk@{_h<-oDTjhYKM5(f$K@Gzy3%ms%5> zat*foavh>INZ1_#cs^=EN?1qS(dJ;C&g0%IMWRLEU_U4G1504){Lu lFXh|a`--9{ilX=oegSU?9fVLbFoOU9002ovPDHLkV1j>4w|xKr literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_0_0/00006.png b/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_0_0/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..80dbc0c24bff313d7adbf76fd6eaa262eb471db8 GIT binary patch literal 490 zcmVmN;+bUQ^s);3C%|rB^BORXT|9FkNl17Y!Ovc zrZu0g&b0_`RHY}r`st?=JeXXMIo|+3X9{w@tgnSgO&K3lZ?Wn?Y`L5y9bZqt!_bCW6nI&>0daFteO@S){PTT zU7|TlGUxX)UMystU8vf-^qN>4NZ$h{u8E(iF&`s0jERG6YeC!1DqG6mG^NG?;K4@U zhW05}sO8%sy>hi)SXzhsjP4JOr&&*=zu~NJK}S3Ze{-oGF##Um@=SZ{b*6&Y za(Nnh-)f{YtZ@|g)%3U+|68hTD>KPtf0;_E$^K%@!A^9cowyJ0M0x=L0000000000 g000000D#;410?*ee56e{E&u=k07*qoM6N<$f;QXKng9R* literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_0_0/00007.png b/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_0_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Yi5O#yakmyj zeD7A^?KpNo8vEXZz$?#ifY%5RM)&IjuMT(&E*(%E?@oijr30SC*KP$aqmT3u!ZJ-v z@Erjm1a}q}ICH@1MDK1T_}Q(%5bn$k0002+PFB3O#lMU<-1uyF6N}$v7d2;?E}o(B z-VH?F`nru+YBf(DR13u|MM(ZL#+a^o{i86Iq@TxCJW}c-o^9{1LaC=cN(7YiQfceP z`rTsn2TuzJ*%JX(u6C)<1h>jqh_S!f0awGYJ8Z?2wTp7*@tusTl4kiEW~xh-b~+$m z9))INyy0csawAqv9O{|Kyh1f0 zs@D;T%rf6l-c`i5OEbiHCtP+wc%sb2R&At6?o*>%Y;`0VGCdVxn8KYg08hovUWZn! z0plk)4+-YBXcRm31gfXAp_8mI!?o=gPeJ;3M^Vyl(5qiAbs>sa-+%pZqv)ORGzC2p j8~^|S0000001NpA<78XjwR=lR00000NkvXXu0mjf1+LS- literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_0_0/00001.png b/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fb5c9c6731d1b8cfed9cddf0f162ddee4e353aa7 GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{)ba4!+nDh2#bl)KZ9*2t! zH$1=ZU-G84-)rJj^Sr3*Pv`XuwzOHDTkYcn)C2_$m-nn;zR+#B?E39(l5RyUr}-wV zoNiOryr0kG=Jc2A#CCny#^<2vy=C{FYSH8=ul@h8<&H~dIJ2c~=kbT~f6g`NT$c;p z|M|O!$h@x-vx-foEJ~0)y~c4xU(};;ji!c7{@Z<#eOg4T&PM)drM>+H9~fi8 z_N2LN`B!Qvd3bNz+k^6UYP~PZ8`k~Ol6Rf^O8?&{k0mxncf7ytU+Ge}WqP`3bi3|V z<&$4ppS}+JFnN0Ex+za@roQHN4=&Bx{;c}{BR|)#zNZg8j8Zw?`^!7Z#P|XK)aI(I zyIk0PG_TJL?e2MI^B~TjHTk2duKs^6IpN)udu{K+Dp$So{k=Oxeb1GyMBz2J ws`blfckHUzBj;(yHv0q9WNvX-5HaY~Fy5J9DSW5x@=B1Hr>mdKI;Vst0M=5thyVZp literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_0_0/00002.png b/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..690fd02682d1474ff1fddbfd29c3623c45305fae GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|^K^TM@|{+)}TPOv$)+R5GFB$*I=EGjDRAy5FKZ z@%QGyhUIDZpT2LHeaFpk|LucQMW5_+V_UUk`rbRNWs`lrP1js9>y5q}uZbad<|>t$ iQa-L#j6gpkfriX|LI)X~Y+PhRK%$P)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000126oEP) z`@UmIA<#cG1xPzF9LLey(U#kjews}{sK@ZVsQ*IBa_sw_VuyrC9r16&%ccDfLekUX z@w2FJLL`pPsm+R+5H^#Jmp6a)0&K41`raewVK0&31hqzg=3oE)^yNa zS7MVW6tDvzIIJNXF8&shjEm>t7K)o6)D8ehwBgQJe_t_`t${g%A^M5WZXG>e#y8s169RbZbHLv5%ap%zDCh7=j6Lav7t93^PO;5tC-G0p-?D%B7OmC#Ta_^4v)+L0000bqm-AKZe;fz> zy6?N+k~N?g)drxQIgaBPcE&)g2^uVN(sDxC*QreojtC3ZmQgvxcm0vqAUHnM$+ z?@DJ2wrc3KS_^FxOIuxWczgA~R)VeT#mPljvjcFzH9qFc+7@hTX#0&+hSzm#9b`A$ zaU86pwP|qHBw!)}rweY4jektg9O0%>OHh$DCFsi9?ZCodC#TN^)kfv&5;SmfhNKg} zaY|JinL?yjg%cB?-lBmEZOm`jp54HJRY=yZ@qr#2%#l0;7Ty!TCr&XinFKs#%7g{b2k(k=kUbl{>xO;{-6%>TH69b!Kd5 z`Pbw-a*U7@Rq}OfE)~~r}!|!ol6TeGKs2dCSI}%u6~tv zSR_tg9JOOG%m*%zv$=lArpFJQ{TGkO!N<=2U33oaq^r=K1e4r3IF*&t8~)zJ{+pHF zq>F=KUGaN4u6>)ar)7kt=CN7g$STPl823z`rnahQlkE&DFU*c{<=A^^vW6I&QFqEXI^aV*c4 zvr5{e3wgb=Ak@Its&AokGns(1HNtCLJOM8ODPhvtkBEME%P$I`FBuz~jmj>c+yU9j z%W{Bp2g`lR)M&;I-mJm*;z6^%1&Fcj5tB>_%fKf<~AeHS6~T2Sga1y^r|>gV^h3`)IhBHA!E>qW%G z8z?_q@n#&0l3w4i*Jk7(ErX7@Cfm<}=)|}(ap$Xv)9)p2#yqN;47;N4kF}&m^q?o< zaj3}CMdc;d%Zsc!UH?X6%Hx9)uoJdI)mGm;T$_VXC&oP{N)U38s%_M0>c^uqLRy+D uUhsQ|KSOIij0csV&!iL3G)>bqH}M~Sl4ZRT$CthU0000^Oqq6yQOH5 zzgcYH9Os%CV}9vf?GB4=(g>G*S~@3P!VyB~GLDl7Xu7(XQrqv_)!OLxr~J2ct`V~) z4{N$z9c$6pn3bOP#ZS*BxG}gMeVzb6X9!ZfYLA5oP2PS}wWT%>#5;#c(rs!FjbEPx zT(|?Hi+?on{ZoK0(B(zv!zfdi^(jFkYqvq%hFCeDX>EAfD?3xBltQ!+h z+@d+BWQy-$d$EyqR-t0;(tBcYA-x84+!L?K$Vbb9(Q%MzC1|={)0XL9)n$$Yz`|Nj zL+>Wej_gAP`)D@b7VF(4YiU7kGk*Ba;edIsxeN6zr=fnuBh0Pq-tLYu*HJuJHxAeG z(@p(Sk6FBg-F>jhPk`;zKV>iVf?vWq^n0;dW95870y^3=m;aqIJ&Q5{kNWMN4j>np z>AQpQJ}UaFss@?p4^s#=(I1Q)%tRHMiFJ4;!V3TZ0000000000000000Nmyaa4mDc Te~~+d00000NkvXXu0mjf-DKFG literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_0_1/00003.png b/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_0_1/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Yj&LwL#RobX?V zbQiII^4uMl|Z~1l7yy12MZ$b&j z?TtJM^{@JVDT&uHZn5nzWh-TPv_J7m;jgq0f(|YbTZHdAM)myZxO-=(=&Jp4l55=A zUQcBF*M05wg}=Y7bG1(&{&siyl(&8#-KTdql}}rLm3hWhy}m5glJN5fpDsOd=_5x% z{HDvZre)46&g0e%{pDoXaPf-VTe-XJSGLU(Jj!tDNp8H)+;exzHoZ2kko_Ba_xXNR zr;WUGZIbufwyah@qN*6%Wc!qrE&9UV%v{IGH{4)eXE1ondwSC@^_ATTjUX{kS3j3^ HP6i5O#yakmyj zeD7A^?KpNo8vEXZz$?#ifY%5RM)&IjuMT(&E*(%E?@oijr30SC*KP$aqmT3u!ZJ-v z@Erjm1a}q}ICH@1MDK1T_}Q(%5bn$k0002+PFB3O#lMU<-1uyF6N}$v7d2;?E}o(B z-VH?F`nru+YBf(DR13u|MM(ZL#+a^o{i86Iq@TxCJW}c-o^9{1LaC=cN(7YiQfceP z`rTsn2TuzJ*%JX(u6C)<1h>jqh_S!f0awGYJ8Z?2wTp7*@tusTl4kiEW~xh-b~+$m z9))INyy0csawAqv9O{|Kyh1f0 zs@D;T%rf6l-c`i5OEbiHCtP+wc%sb2R&At6?o*>%Y;`0VGCdVxn8KYg08hovUWZn! z0plk)4+-YBXcRm31gfXAp_8mI!?o=gPeJ;3M^Vyl(5qiAbs>sa-+%pZqv)ORGzC2p j8~^|S0000001NpA<78XjwR=lR00000NkvXXu0mjf1+LS- literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_early_0_0/00001.png b/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_early_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fb5c9c6731d1b8cfed9cddf0f162ddee4e353aa7 GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{)ba4!+nDh2#bl)KZ9*2t! zH$1=ZU-G84-)rJj^Sr3*Pv`XuwzOHDTkYcn)C2_$m-nn;zR+#B?E39(l5RyUr}-wV zoNiOryr0kG=Jc2A#CCny#^<2vy=C{FYSH8=ul@h8<&H~dIJ2c~=kbT~f6g`NT$c;p z|M|O!$h@x-vx-foEJ~0)y~c4xU(};;ji!c7{@Z<#eOg4T&PM)drM>+H9~fi8 z_N2LN`B!Qvd3bNz+k^6UYP~PZ8`k~Ol6Rf^O8?&{k0mxncf7ytU+Ge}WqP`3bi3|V z<&$4ppS}+JFnN0Ex+za@roQHN4=&Bx{;c}{BR|)#zNZg8j8Zw?`^!7Z#P|XK)aI(I zyIk0PG_TJL?e2MI^B~TjHTk2duKs^6IpN)udu{K+Dp$So{k=Oxeb1GyMBz2J ws`blfckHUzBj;(yHv0q9WNvX-5HaY~Fy5J9DSW5x@=B1Hr>mdKI;Vst0M=5thyVZp literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_early_0_0/00002.png b/tests/snapshots/nanox/test_get_extended_pubkey_non_standard_reject_early_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..690fd02682d1474ff1fddbfd29c3623c45305fae GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|^K^TM@|{+)}TPOv$)+R5GFB$*I=EGjDRAy5FKZ z@%QGyhUIDZpT2LHeaFpk|LucQMW5_+V_UUk`rbRNWs`lrP1js9>y5q}uZbad<|>t$ iQa-L#j6gpkfriX|LI)X~Y+PhRK%$P)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000!=rsfhW|S9x_j394F@4YLrt5MH#(UG=ZT!i;-*!RA*5eo4 z|J`e1TEB4i2Ma-AL4DV~y89PDtqoxRwu0H)<-X9x?Ji&P9gSYS$*j)2xGP*n#qacn z@Xdcesf$mZEg9aR_ghQfb>6d>b#X!~(^na))-9XzC%{MF=$lydEaQhYt0Hs0bJc&^ za&YF+Ki_V>e7D8aba&bM{r&!ODIxJ&{O0tzR_+e0_v~NB{%7H?!1YqoS2P5_Doneo zusD+c#_P2Y!n@joKd(so@_z^W678jT4QfK-vi|UQzMR=wB7Qk~!>;>#-&_+cefn{i mN~N?-i@1el0V6DE4jhu+y+eWFN|j?BNXXOG&t;ucLK6UpC9qNe literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00001.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..8b32f1dfd0eded609029382be53b8c08f6825218 GIT binary patch literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|^K@ba4!+nDh2#Am1Sco`#2+ zdpN(_3zdI7cw++7x*0pR{iyekZl1X1fP^(4P}74V^Y?r;LD{+a-kRR_Teg>%e1CVq z(pxTj?W(9qn?2SW*7$x|Z6*}R9RFzIa;GNA1yi;!KE30}(`!rHy@k#&Y~7|3o0TRc zvOxC4+X?p<3;mq7;H-*vL(kube5UW?IDi(MOZ$Do%x+Iu^@XcuaY=jGBQ~vn^oh;D z`e$ISm!{w+JtonFX-DktnQwNf67+k$NaVo0zh_-E4~Xk*?Tp_qz*?bu>QhUIe8jIG zeoiv(tC^pFV?J%L&-i;_+8qww*>krQ+Uwc=EdT!Ie{<%flmAlLR;v9LU(7ZyqSfZ3 k%r}=RMxYCjK*Rh>rX?RvCS*r+@qmOqUHx3vIVCg!0R0P&NB{r; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00002.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e7191ca07f531755734c8a4d81a88246a7df84f8 GIT binary patch literal 960 zcmV;x13&zUP)=5N?Rgb4~6pK?RUACY}7jsr%G) z&#byI0p=-r)GTzC@GVxH9 zBuVm-jH;m~%mLICh&JL-Z}uFju)2SyD{SMr%`3z)eVZ7gZFTDhb;Ay4aC1f?HG63F zs(_>jp=5=cxcFaK0`yCQuz%B@Ur8NKK69Y*v~PYEcvFL!iTZE3J9pf1<4ab+vaF-B z;Wfl)6|YRdI^f_k6J-f0LVJ0-US0>{bIz-gD?oo$Avc~E!Kq7J43C>dDO#4;65KbJ<9B#(Ky2q zTO4%dGLi{WM60FTjkgnK$J;j}fI>ruSBm>>Zl)~4U)57zjYdUVS{<3sbK^bHgwpwI6SxtNh~TP;`S z0XZ5gonAn_9pddYCxCecv00U>^(?6EMGnHAXDO^9<43P0@LmUwSYF4hL6>+T^UYlH zyP$6PHz&O1bZ)C`Ns=U2L+t_H0UT>1;#og5(}S7=m0MGuZ-LtC$-3S}UNCNU5nnfj zQgD}-59=nlpH@PlH~iLv{S;RDVOHO)(UVk9XWerxT%R)PgQ`Y<0;c=zNm_L&6Jv=c zbzRa5t7!(f=eXIH0JEBFVMj->?!+@&4N|N&^Ta2wEdd=eCzh{Q0IVe zHDQeQ-yb^OytcX(_;>|)U7LFVs6W`uv&4{1$SR?A@+N2A&BOw=f>z42bP4(fR(TGX i!gm#oBuSFw?fe6uhy`g3_;-{50000?nHWl%E%c#ttZ{1r_LG>z(w0TULlrrTT$GZY%%H}BNmxttM3EYhh=~&x9&z) z8EsSLOhD`z6O|~;sfeLMu_E}KWm$E+T_dT}NPiyELbqR*1(H<9wmtI!;4dGpzwbAy zE(vP&M{&bzvo>T>&Hh1*r@B=4Mn$IE(hZXLI>_l+hgzoO8Sll zV6OpC3n$sAA(tO@H2~JrT@s@-<+kEym0$CWnuX)hpnm~Sd1y3uFSOp z3s*ydc(aFp`PK0trZ{?%*iPE892)`JPC z9?^_LGR3!BUL0hNt59|AD$m5?LFFFccqV>NjeN{(7>TY|Rp8nz67mCG0hfHyXK z8|q6txr#dj?G)I(KFX`x?{Pm!b;UJ6W(KYsxfy@sB5Sl*xoaD<&po8cdT^dke<1VncaQ)=Yw)^pbuJw4%7)UId~M| q1poj50000000000000009`g%pTyf*>bT5nm0000FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y!=rsfhW|S9x_j394F@4YLrt5MH#(UG=ZT!i;-*!RA*5eo4 z|J`e1TEB4i2Ma-AL4DV~y89PDtqoxRwu0H)<-X9x?Ji&P9gSYS$*j)2xGP*n#qacn z@Xdcesf$mZEg9aR_ghQfb>6d>b#X!~(^na))-9XzC%{MF=$lydEaQhYt0Hs0bJc&^ za&YF+Ki_V>e7D8aba&bM{r&!ODIxJ&{O0tzR_+e0_v~NB{%7H?!1YqoS2P5_Doneo zusD+c#_P2Y!n@joKd(so@_z^W678jT4QfK-vi|UQzMR=wB7Qk~!>;>#-&_+cefn{i mN~N?-i@1el0V6DE4jhu+y+eWFN|j?BNXXOG&t;ucLK6UpC9qNe literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00001.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..d3ffef10d91bd730559463434ac16f9eaaf753a7 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}8ba4!+nDh2#Am1Sc0oRLJ zcQ}8?3srwyJaGbJl)=Q~4{YPD77C^}1XalZH61A7FJ)hMMB?*$#g>KKzi)HfUX|T( zee!XM#VezA^(J?*s1o~)GiVEKz&##*~w$-;{;!SS~ooBSYY5sA` z$9&lzFH&>I%KHrwFTr%s8zZ>tA mh}J1P__Zg-0Ud!19;Dw3-EgIE|HVzaLBgJ{elF{r5}E+NM3dnF literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00002.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..49973feea36cb6191141aac51516ee72b226d605 GIT binary patch literal 975 zcmV;=12FuFP)y(6OkIM;nX?4lxpo^cH`v2-P3~TT2xHEW>BI}Cbk%fE zR9!d$YLy0tB#p1zo)xm-Dr7Gv@_1_*e6SbWW=`Sw17pe~=dmT|ac1pZ#*KU|6N{pv zD2k6{R1H-@3Q$!b+JK^7wd|^}(mrC!ZqsucSBQOb4>3gBO6v!0$AmL>cSIspEkwN{ zEGdF1S*|9|{%0)>p;8Cc{Mx(CdLA0!*H!7& z8u+4Tw{#-OzQ!WUt|a{cd<5p?cYESf(|jpdiu_K%OGp2udZ)fjz41<7N_VJh4sO61 zYA6^IAP03>k{-NGZ%!v4&v9-;@%zCq1RT za!<*FxWZ#!0xXVwHS{F(8BZ_t62@iA1CZ>mVAfWV;b=kWBx2uasun=wGOt_x`L^mA zSKUMICB?Y(d~9Aa$u$>Wiw2(=h7X3rArB>)2|zqk$2u(|Blj7KiFJ0J;Ryim^U^!q zwa@=o7*m!vNE$g4V3&8ut8hd{Z4dTpLEBGhO=eptKfv_|slW3K7J{~s!5v?yduaY{ zW{DRvSL15*53XSIUrF}fY0M&*^`U)CQ4~di)-!aL6ey-=NqI}Y$x{2aKaU36rIC6@ z+E=fO*a2Pg_W|H%du}ZcS~H}ctG8XGKrnw;gSi)V%24T0C@pf(hbrLQ_wva&sHPD< zxXix%2Pa&H_9D~{d3jda$<3wefIK)octJJH#h(CVUk-|$gCs)rIu4=vY(i6M8~5zY z+=xY^xTmGK&w$67m{pJzAvd?~8lBJuUk44#d26{<6wLrvPN8N|52UH_X_Nl6{)gV8 xu*mD#znd$HpTEhUP(we8=$^1BilQhAogZ#6L>mAf384T0002ovPDHLkV1ge}(3AiG literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00003.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..c06925f25fdba30025a0c3cba9e0c720458f26b3 GIT binary patch literal 953 zcmV;q14jIbP)RTR(BR}Oz`_WODtK#T{@p-pxIrVPpddLZXlL#=Aj2R#r_F|JBeFXMb&NGbmJ>fX zO=TOtgh;IjFD`(1L<1eI+t)2m4lrOA;<>AT7`F}55#Iw6&%{3yV?BZ!Mph%oQqXa- z+_v0bCB?^!q9}eaz8Wg3H^%Xc$N(KpP&E1_J!)rv@HRkH3ZpN(9WsTfNrfP%X5)BA zJ{V=DdK9}xx^ugZT$qE(=!z79sAC|agsF95JlC2Pg?l5WjVe>#Z3o;4v;c05i_=32 zH)+D7E!?g}<=Hlz_*dN4u9r*!EdaQfoOph81vT8)QV{)&FA3s053jtC=|r}>FCwB* z|G!d1I%BXteun7bGy=GXA}Mc5dC!FhyStf#n{bnyI=BHi380jd4X8#g>u*CabyV9%h;Q}Q6hTAC z{2VlG)zDnEk|4em5n0dCvyc}6ykFv*V+@Jn9q(7u=5jSPJ{K@7(zGC3&NXTodL%b- zQ|vXH1hg!QEQXt}+P@2Lk0)&b7Nm3W4Hx$vq^Wr31tnEuGvLn=-c>^pY#j+P>rOd3 z9bXOIxm8Atcu)`&dBzicBi38#zdj$t)0kM7R2&gESh8;;TO}#OYq?`{rO-WF_m}Ze z{w{)yuwKX<=KLnSz_<8*rKzGQKAgq>lHl z(AQ3aBXLeanlj_MA#w2Wl4ZOt5Q7Q4%{ApprCrKqrPFKX+uh6YZM9`<;+jXh3cKBf z8*Q`gfDQ7W;JmbA8fpKiy%33O*ZSFxL<2?iOS_9%e?NHWg#4?c< zd?^A{^_Jnf*al(Q2-$Hb;K#glUWtH2Wf+ky@#+nbPIJe6o(~$z3Eb(I8hV&ofTAdh bqBz7~-r?cC@;!MW00000NkvXXu0mjft0A>a literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00004.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..44531783a31c4ead6e7755cb6271096b7a1ea2e2 GIT binary patch literal 517 zcmV+g0{Z=lP)m&9J?qbfq?<$!?@-SgE45NZfe=ehs@0D$Fw2J3t8f8m=y;)b;&!r7~&xTmD8Wmxx&t zhc$FJjkPFTnU$LI*>CR-@L+H?Z0-O(We7sNO1FgwOTK#ylQvt+YAkpj-~c1hg9>+WlhP3>Sa@yS1Th{PvXaoh>0A( z{k+a5^RV;`%Im2%+yS@#zH9D@Qk5fY7=T+z%8s2-`A{>y2{!JxoA-bP z(x+pkU11A30FyejEH$s($(wa2X@vKP)zkLr+j_;$JgS!!rw_oD?a$M?n5BQ-BC5>m zQnypb;2n-%g^tz;GGj0m;ROHy0000000000000000H*l|WyYZ9A2Jn#00000NkvXX Hu0mjfz`5+g literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00005.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y!=rsfhW|S9x_j394F@4YLrt5MH#(UG=ZT!i;-*!RA*5eo4 z|J`e1TEB4i2Ma-AL4DV~y89PDtqoxRwu0H)<-X9x?Ji&P9gSYS$*j)2xGP*n#qacn z@Xdcesf$mZEg9aR_ghQfb>6d>b#X!~(^na))-9XzC%{MF=$lydEaQhYt0Hs0bJc&^ za&YF+Ki_V>e7D8aba&bM{r&!ODIxJ&{O0tzR_+e0_v~NB{%7H?!1YqoS2P5_Doneo zusD+c#_P2Y!n@joKd(so@_z^W678jT4QfK-vi|UQzMR=wB7Qk~!>;>#-&_+cefn{i mN~N?-i@1el0V6DE4jhu+y+eWFN|j?BNXXOG&t;ucLK6UpC9qNe literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00001.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4830a91db50f820d727e723deba48f56d5b8fc81 GIT binary patch literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9hba4!+nDh2VAYZcrPebCi zH)?nOd+a?eC&tOR>cA1EpZnF_1+oR-l<)!dRNOgj)nKe7^#98}^SKfC?_aoW)sSsk zDKar-TiC~qd|WPDGa{e+)|n(>fq8$ET6g8?vH;zuxaE~Wp1z#=)YLki_GN`zR!k~3Uzxr2 z_64EoGIPG~wApLXXVxT^{`1&7gFpQ}4-==aqS$6DQ5$++?+Hy&$U$bNo#mD%XEPoTy9p`z5*dY<2BW??Klg=MRPOlWt z|H<+uB5-s}9hT2TW;5vc{N_{7!Dc_scP>NB2;d=Oy!4khEX??=gS3uTFt?OeF;kx| zrCZWVi~|N50gCX}L>H7knn(N0oPy?wnSyrC-2l-Hv3Nd{-BVBj_>6HUzi}GgHSLM2 zg$^)xX=F&2{%z(L8(DG|!jp+kuPu`cdvYAmh4TwW$ddE6Dd_D)on7XQd@O;Rq9jR@ zk7QO2)iAqHQyr=wfkYuTfJ#BOIvtCeK)k}WH?^!bV=EXVY}MicX+#%k8e!_i?@0E* zj1gCg5HeO%5Es`X=N|Zv6D7Yl4#2SRx`M1!;5y*$bfHEy8`qn222<`fXBe}%emif1 zVk{3h@@C2RfHAPXe^_0~$Zg(wqazFyUw58(kORDlPTVpRE;;N-9}L47e~<%0=|SEc+|E_%m?3I(@K#Mkl8amZH12p@!n)=)j__m-;&;Y74-~ zL7sToB_Zqv$dfasNL6yoxM$W&G#j>>fRnJ6tIXS@{|tq7$K!QN*Ja!+r3a!OPv!_C zTRsjBe-Jp$U=L698qjR;Rmty+oqUBH(%+u6q}8>PAwOx6dIQ;*vF#bKkCmJ5nm{6UfTybr*XuoH zUN~gS2+A@dmxvhdgI@F+-Fyt7P_BuSDa$#3Hu XmQhLtQza9;00000NkvXXu0mjf3);Pz literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00003.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..5a41bfd00461e885cc8a7f6cf9bfdbdf6f94830a GIT binary patch literal 984 zcmV;}11J26P)|mYm?JDVp&LgN?T1@@-x%8v1B-o<5(gGgbt{T17=t=Pu7w3hxk9! z*n&k39abyQiU@5r;_&+Fua<+Y^2xzPSTh4~z!-1iWlak*O}ptbSs)@KJ8a21kkSNnr*8%&Yh0~Vf%zZ1tFlN-h=A(t&dm$NEt zGyF}K#CVb<$#bdi6e9;PDs#pRR=8Y|R5~PoetbNGtUtms!)*~EGY$yLmr>#iiKHUb zG$&Q2raz0gzo;eUJ%zwTIVm<@`;a0DyHqkuibxr$m(U36+%LkT~U@XmTjuF3$U#3+AT+I)G|Mf zgP7M%;~*-)66B}Sy$RFC@`ASTrp_)tj$T~gsX3fgbR3{&aSPnNp%}M5it6gRWZ#lk zW%cshHGW_Q;6fW}YQDZ_FNU(MYA3DN5AD~NxnR1wYK1%(DG`cFv94nc{ZXX-0nrAg17ZCJPF>6tL#%Y7--{)G!~g4$9Q@ zLThiqd;s2ICLuic+t8cvg>S?@CH9jfNiGNaPkDJ<3tYt5(kxGbzD(qtCsmBv<_ov- zR7kR9_;~81eASYGSo-J-9KDN#i7A>Vb069QguT%P#@sV@EkxbP&XF(7=T*oN08JdH+d_E z3?2t!Te?%>)EIgqGiObwZDvC+=8k*7-8d=slO#!!r}GOai8ifT=`{`hQQYjS2xHLze{r0021LYx4Y@bNw}?G>#Mj z^}%L<@jBb&oaB^@axm+KgbgqFLDDYg9ft{0=@zw$eCa*vob zby`bvb*@G5U{+e~?f@Oc94j43Gj>OB@BHFf-=YD;e(h$E|mq+@yyjh)W` zY-qvY6#Lag|4V{4(B(ys$DmAY=2L=>tla~m8RE?u)6pfU7>t=^IPD9knN`yP6Klr- zXfDx=Q?lfDHC`-aja8^wyY!k^+(^Fz9M{D6G#HPW7lz|SPAfsD^P09y|1Os~4gfbc zyBq4lvQ^-Fuj2Gq=q{Uak%`Ts(_LTydK>ZekvgH4U4DG1_bl~S5jOs?da(KRL>GGk z#s{w`&;T_5z$rg1H!Ug8-HHf8J^^u-2Q|HR)PHS`D^-wAt)%xhh4n3Fce<^L+1wdn zd(>!H*tX7y+^MIGK}-*-LIJHLnK9TE=>-4)0000000000000000Cw{SG%i-*>cg|w P00000NkvXXu0mjf;$YTG literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00005.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y!=rsfhW|S9x_j394F@4YLrt5MH#(UG=ZT!i;-*!RA*5eo4 z|J`e1TEB4i2Ma-AL4DV~y89PDtqoxRwu0H)<-X9x?Ji&P9gSYS$*j)2xGP*n#qacn z@Xdcesf$mZEg9aR_ghQfb>6d>b#X!~(^na))-9XzC%{MF=$lydEaQhYt0Hs0bJc&^ za&YF+Ki_V>e7D8aba&bM{r&!ODIxJ&{O0tzR_+e0_v~NB{%7H?!1YqoS2P5_Doneo zusD+c#_P2Y!n@joKd(so@_z^W678jT4QfK-vi|UQzMR=wB7Qk~!>;>#-&_+cefn{i mN~N?-i@1el0V6DE4jhu+y+eWFN|j?BNXXOG&t;ucLK6UpC9qNe literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00001.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4fe72c3ac556731cb35c3f98201b63e3c534c295 GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2#;G|{+o`%Ho z<>n9nxu1&tc2M)Mf=2{rrq%!NAuE~GI#wKK1nSE9{`hXAwNg;tvMI~>uDpN$;`(mp z}(lm*V!Sv}y{so;}Y`F2&a+^-(ziV%d|CF!V_UzYJorzB0 zRqVswKWVpr*FS4*{Wku++w#tRxz8hi#3kj2)tg<-%a(-ypL}ai#9rUa@}qbT9h) z`;!@4rp=zkuk)+lz&lI3I(64S$q><^mD0ZECtT`hyRGQ_m-gg<@a75X?+(x7&<8pc b86-U8-?r3Z^}?#jTR_5|u6{1-oD!M2!Rm@eC)Qhq9}@@D2k%EoIi{8_kAC~ zZrf&C5`(c&Gywg?*!O+(!#($s@iMyssUG9+V*P`Z;n=n<#SaLXI^=8T=+gFqSZcL! z{w>xQArptssV2pY7>kn*w-`rsnutNmW4Qf$4NTQRwK9cULmQE z*Wx{yB_{xZP8d~iZ)6Di7_Gx&CZ?cua#GNhx!ZtrgKVD9<6F)eGPfgd% zsuKesp3=Z6*~izlCkI(D3)#tpmye#ojlF2i4B`5Qk+S97mV$04>)vJE$=8y2C@PAg zC??R-#|#q$1>=2pE~_~g8UV44am~8RoEI7if!FHS`LtZ2F+Oz&Y<2W!xBg`JzLxM%s1>K~Q+}EC zJ1n6(=&=HjMLY(@I!jroSi~9RiovPy;Z@%a)y|7kM?>y}pTmd^xwCJWq`?n@MhVh? zGE!sbwL5mvN&F0Li;Lk++o&kElGx(Z;?@+#DW6D-s}JRgK02#_rZgIM;(peu9P5BD zR?UgwGeL^rDMGv+_w^}I_0%pK$&F)YdNSdEr+VIPkPdUK0N|>F-LonCFz&@`v(D^Ey0DN%m zcX-6*$+fc-@e5}$-dQ*S(4-Q+(6k3$i=20_dvUxq{1qS$!FrDo`F>VFej|PWP8x-m zrtEZ_2QuR@ZS1Yh_8CWe4?v_!u!KvYMj<``l%FHjGK5_s=uqET|cTJ!ctT$&1Cf wsV7C(KUM-+{XgSe#52aT7HLrwMN!TbSsc@#wewT92rQYVLj5i)ubkWW*Q4i%yFLQ5;-KbL9HJs#Y8<@$JX!S z?@Z$eldK6rJ7YIMsiAgG%!X*=vO5F`V9uE73|+lK1M?g0zW#GeV6kI4;Vm5|3m(BrIf z+jResB|e@cN%D=9S8TcbRIM0+s*uztYK0|48rrV0Sk;g}A`jBEtb2$C(trd~4cB&L z?_+;Ny^}*=26#(0wC-EwtyG2jB2!+o^O8tlE<1Hi#mq7B(xEGX==R79am2Yl590{f zSzObAE`YnKN1zKF>&Os<$HElibuf4lQ&Z~B`BVg)25Wddt+REuL>jtNd%?WF!*xbN z5YzEz-w*lGHG^393K$7z{~Hdps!@XhV;fcy^m|ity#k8&p8B9)E7~sQg=!s?x?TY? zo3L$;`?BvW-503th+OQDBMs3&o{idHLTKc){x%#_r}a0JbMPb?g`T8g?U5;5~?IkvvOa4~1RtHOWE-1PxAFsKAF*`DWr3+EX{yQv_f$yR{0rTp*cXYSV zwT|10>2ceefEgMgXo(W?O{*<*%a^3>CMC?!WwgZ~W=Ya*#cDr0VoD}?DBlNja7-4Tf?Vlu;SRr(*$J>ml$;D9gF%ucZ%#)x^a#?K zN1O;exQzj4Ox+`?n^drA5`II9QY>Am(B`9VCi8;LCP(lI7cPm!;>0Sz)d9=l)3lho zz736Voqf;2DY{0_TyORwDlR( zz7i#q-QYW!6<-Cj56vdyuyi-&=_WxR;WChH0OZQxVI=I{16-c+)93`Xla4(=h_);n zwehQ%T3VEIZN9E?vCZeVS@&$JN|to=`Mi~ZzW0C1zX>@3Ns=T<@(}+3aK(Dp)i=Ei P00000NkvXXu0mjf(;L(f literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00004.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..82e479d2223ea535f80166141a79e81f932372b9 GIT binary patch literal 520 zcmV+j0{8uiP)&pL)G1enR zKz>jSaE{aGx~}}IZ`Kv6F=>Qu-yM*oHCA+NNDeAD&b7NjT!wgZzNXzvP*SOxr=0$c)5xxA!^B!x z0CkJzoRTTO&3Lhqb*@6{+Ewm}#TS*&fQftJ_f)CJ$OB{IAjg)V<7Q1;roU;*90!0m zHrfsKusWvAeX82$QID4`Ownc#n@g*`(QJRdGJw~|KNsa_>yj@(>>#? zep$z8`8aAXwsPVrCkt@9Gv!Z{)!cTDQx0n_bRDC0IA4I0nrrpR(bt>YlUb)%EWq^F zjp_s0dHQOf)rxqjxqp*)!1PNjoARFbi&lU-a{ZO3cs7WD&F>5v>0Ny(bY?;&345|b z4T72k^0FBM0000< KMNUMnLSTYA*ZD#K literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00005.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y!=rsfhW|S9x_j394F@4YLrt5MH#(UG=ZT!i;-*!RA*5eo4 z|J`e1TEB4i2Ma-AL4DV~y89PDtqoxRwu0H)<-X9x?Ji&P9gSYS$*j)2xGP*n#qacn z@Xdcesf$mZEg9aR_ghQfb>6d>b#X!~(^na))-9XzC%{MF=$lydEaQhYt0Hs0bJc&^ za&YF+Ki_V>e7D8aba&bM{r&!ODIxJ&{O0tzR_+e0_v~NB{%7H?!1YqoS2P5_Doneo zusD+c#_P2Y!n@joKd(so@_z^W678jT4QfK-vi|UQzMR=wB7Qk~!>;>#-&_+cefn{i mN~N?-i@1el0V6DE4jhu+y+eWFN|j?BNXXOG&t;ucLK6UpC9qNe literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00001.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..6b083fceec94a34ca6e71b308affc61db8adf5be GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hrba4!+nDh2#Am1Sco`#2+ zdpN(_2fcsPEUDPaxnj%fKl_*W8Xk^vIJS)!sL7!GbKU`KrJ#AsrYy^oS^xgUySokh zCR%iLoC*`+f6wNl&HVS2uU??6{q*^j8Y~iwUbk{Xj}%whm1aJi!l3MMR@ZU)EM-Qa zfU+l>PRAWWB0lf*q-P%&Sv?KCS^LSOQKofewL#JK zoVmZYL~iQ)+C8JAvDhk-|2ILbB>v||MA$iZ~fwR&vbb=%iK_P zIJ^I+;_LV7^+)v>v%-HqDV``jJ8#7`t*?*XX9WGqo%<}SB9q0+{@?t`4I2+D2-h0- u1_;+CKRF=0d4l@Cc3Z(Xpj(hZ!c6tBjqI}}f45|UggssTT-G@yGywosmY5j; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00002.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..d237bbc4150f012e34eabb020898af67ce715f7c GIT binary patch literal 959 zcmV;w13>(VP)oN3edawf}n@ z2QDcJ^cT$nq#Yl%*4~b`+^+PG*$Rm2K0br>PquW&aU5IhkciL`e;cPu#}A_9s20yx zu)c{1934}|8Z%MY3_8BNd3Q9xWh%Lh6Sys05_n?n0L&|s+xQG{dWl^;^U#*V( z3p^Rw7Z**hm}50m26w~*lkXA_@qg$Bsl5M1o~Ftf&M^Kx>KXnz&M`=~;Lk!yoJl9= z7+lJOy0>=dTjuZfml69!E1*&S6@913csZk9X0%3f0G6(}mm$Fc8195ep~uJ6$dxUj zF`7L=`#3CcyNpezH||gZ!OPEpqOt^N0_PSpfPfug6Ay`LdD{DHVjMFP4r^LN7CJL2 zS5!-yuD?YB_qSqzk=#-VadcUX(;pHupB9s*iffMd26e^hxrN(*pFaXL08N~V`v*+v zldMRO#6QUGC!ap>+3wHsdB8La`OX51l|aD5GfkLf#Kl!teUIj6%Zg>Ysdpj|WS)xq zO?auPBuSEFBg@~0f^}G(eSFE(<$W;Ai!H^-?P+tS9nh|BVjCk72A7=v6}R}eH1C6{ z;gC&$?atKNQgf4ySg$BeN8ZO7jH6)|+dAz}aML%MFWBGlOjxg@rJq>kSVZo|QfAJ_l@002ovPDHLkV1iyq$B6&{ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00003.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..ed56331c4738a9adf98a9ba331713b5051ec3420 GIT binary patch literal 989 zcmV<310wv1P)071j&B}F@K!}Ad&jzm%t_3*WiqiLF^X_}^KZs%*W{upEZ zd7h_Tk`!1kiUmMBImQ^%&TNPl;o8!*)@CH%JC!FT-Ep30i5-x&LwO#Mz-D;73@;zz z-%e!>k~M3$YKeBR)D|-iFE9S94X}27vvUz@W&jSDfE9WERI@rVW{+U#GqJUPICs}Nti=9hKbAddJRP66c9b#Cp@8#sZqp!E76_T7}% z`CR7z@=whX;?%~qww847fqB3p&;XQ3fbLTyV=v)=#rBtD@nOaxDSe^Ao?P-k<_5t0 zx|3Wm&y^z9E*85xq&7bmIs=S$;)*VQyqT7B^A~rz4kW3VaEC*>&Y8743H6+0OdnG3 zLG`;C(61YSP{~>Zzni&VczoXHIguC?k3kdSs#T~#a5}li;8J+^I%=qK_n+_$z9JVj zyZ%JpkeDU4)*07{7h=%3m?xy|8Ac3EZ3jc1vtuCTLCFuP6>6z3MTj?Ip^+aF{b8xK*Te(0#cjlt4(F&J0*x zl5?9q^}xu$jWn^}@?c(0$)YE=?$jT$SDl`BxnXB}_~u!~b05fj2t5Ez(=?xps)k0D z!b3Usk>i@HOw77Q(6&Zvt4W40a>Nuvjrz)?>6e;PsGS-?X)q*e+GcU7()K8p4EaK^ zZp1En`N_^-Qj)||8;Q&2Z5J{v-tcDJIGCPQDu(4>98QFYXH&s!L`-S}a3Ih~CD(g>j1G=MHM%iC7^aSznWXpD7ka z=Q{d&I)8F9e~Q-=F>$l}z_S|3Eo)kwcus_PW|lNf(=<)fG@s57?+Y~={{9lg00000 LNkvXXu0mjf2j|%! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00004.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..dd175d24f6ee3e71908c16a8c909d586d2f0971a GIT binary patch literal 517 zcmV+g0{Z=lP)IG5;7suv>}- z`IprO&T-nr81qA)v@@)>Nh37->FJyd2}cNF$T&_Spy}wMq>lezr?n~D-}2kjStF_@ z4{JKzGS;H8QI($d)&Jg2aA$Bm##{k@&Jd({X_tivP2T<}<`%6E#5b2oD%)rmjo+9A zG@OCa#Xp+({V6~V%IT%dhcQhx8#4v1oVyL;G{l|rnO09hiIFo;I{gc$o>kL=!kUJrUak}1BI?ZraYISWC4dSu9?;{U$FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y!=rsfhW|S9x_j394F@4YLrt5MH#(UG=ZT!i;-*!RA*5eo4 z|J`e1TEB4i2Ma-AL4DV~y89PDtqoxRwu0H)<-X9x?Ji&P9gSYS$*j)2xGP*n#qacn z@Xdcesf$mZEg9aR_ghQfb>6d>b#X!~(^na))-9XzC%{MF=$lydEaQhYt0Hs0bJc&^ za&YF+Ki_V>e7D8aba&bM{r&!ODIxJ&{O0tzR_+e0_v~NB{%7H?!1YqoS2P5_Doneo zusD+c#_P2Y!n@joKd(so@_z^W678jT4QfK-vi|UQzMR=wB7Qk~!>;>#-&_+cefn{i mN~N?-i@1el0V6DE4jhu+y+eWFN|j?BNXXOG&t;ucLK6UpC9qNe literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00001.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..fbc75a1c4f1d655e27d855a62e8482885e998c05 GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2#v{17Gk3-c?{b{>*jo0Fu zkh`E~)#>j3Qs!MR9oE+h2Ty90zx>`tROU>B%MG2#Bgs{JOfwV3*^Lzg&2*G+qPrmmyYqbOq9{JC3~JgGYWAm{v>W%F5E1wQR}|McSj+Ly)& zy`^v3j{VtN85LBOy|eA0&=UK3r#ni&*>US M>FVdQ&MBb@00tbQhX4Qo literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00002.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..4dd921265a85c57358ffacf5d11d483094ed17ca GIT binary patch literal 959 zcmV;w13>(VP)WiiTsb`LybFD{fE?4TuECQnW9N&xWZ(Q7QU6+d<5;1hd&%$le^@osbwc`0% zY;Ph4jviCVikT2L2OTeO-facg^y9j78GPOV9&(Hqf3;ovTsZYfqVQ=e|7 zEg8ip024-lCcHM`g5slfbj-{tXdRy^Xy@Dw5N3$Q^GtS6K?M*qCY*fYG@Ui=8C4Gk zz|7LfAzA#}l^2ODISb**L|?BplM8#05)9$`g5k2{yfy{Bj@RC0UCGDdm=py;5PT%7 z)ldPGdYYvnaZ4nZqDi;rI@h+PMBKt@sHlSIM`M{=zL=_3T{*x?z&~W~WXW?##;kl` zQ-Myq6d`I@-D?ty?R_ZM#p=>TX}&*$N zHx+*5JYWKImtVtF)`m{j9#vASO7Pt}Whbl)zl$DpwC7Py3BYFV_o*B=lG%}NJJDPq zr=V7vWv)Uv=V?g_(@71Cn7-1=AcoY|N`@S5W@Si2cU3%x15LW&v)F-_2R`kYCXrSd zVxt?J*E!InA%=!i8 z6|KA7r$CS!RQ->cDGymQCv5uSp#Wh2l6&cyoiN_ckb4|+e`Ge#?c)35#*OS309uiT z4F|y7zT*D0jDEK6(MKYR7ImnE{#FyF-$!w%1$8&yz%Ll>loca+J=?sW4*xXKJQdmC znw|BWqXUp=UtF%=Yx4cB$EiOBiIr-irl{8dt%TJ1N};ipCWs@co#$xI{O9`Z=~K|h h69EWyG#$zvtxab%@! zrN4@l94{0Kg%5_qhQ|1rSwQ0pxn@EYq#te~4aGadhH+vTr-~hmc|)94JoLn4(A9kD z;fX9qqc@fq6l4`!R0OBG>}?TCYAs3K9(xPoICEM2PCzCNU^xKuQbo%+xKnJVnoP%E zty)i8cQ=WgXqdYwd^!#%09NOqS}z8!xo11#Vt2Y^D&jpa&(qiQRbRk&<6a`ClPZ8itLI@ zG>R`$&^FK*<08KFlGvp}xe8n?Ffhh4hAl)CrW6BL$rc$Gv%?+ePN8vm2qkB1AUDA| z57?&7K`b=%%s|OFz6b3$Gw%V{DK0XR!wO~?$iOfi>jXdyuVKpSz|<Xq;6g zQfZno+SCXFiSow33p##5I!BumZCUf)e+hhJ0ItR$4aLF|jzO$WI^P2{vaosOeu?bl zpFU=V#yLcWr{wR@X|F;wGIm4xM#Mt3di_Q4jV0(+xa5Dt-i+97su-F=q44dnNil@R z>c1d8;y_Ue*RW)>xCEC>>=W#{#MLbs>_Bu7xdJ!ccUq6pKrC4@*jR!lwlk?aP`w3l ze#YP?4I=_i5{(){z7~+4L})L*%{P}C0F5;Sfsm#ytIV|xC0zfU&R`_)7dyB>5iyG5 zXC!GfeTTZG9B;UVn+zd!7A!J$!)W8bGVC9C<3mhjhHZI7Y^Q?bQ{dlOPppw~w_!B~ zpw6@5)+I!YBWCdO4hXx(;8sO#;zazs+}gBq__T4dctf>yh69v$jQ-^ba?NlT*pWxG~QhdDfj>FN-;YABfldjmxxi5 zrZqmU&b0`xj7m#<_P?JNcrdvZb7p{@F$FPSrD-8jlg2yMTT0_V9BCFw$CM_G-JAk+ zJVE6Y`_;tvj|u9a+l#J8rA>94(}H&P?h5f3;>~%d-7P4p)XY*&`@(5t)wE$?Ei6EG ziDn#G)N?W);-8*vKaRs!DuK0s6A0e~pMg&s|c6y9$uzYkaSxbPKnA@1f$Z z0<3WPPjX8(WJYASaUSgXGr-+F3FHh|)OqL9+qupCOA&Kwk~PwM?J#+gVv@=JHknkD z{mrPsNpzu;8cC)GOOajx000000000000000003Z_HwC0d>CA0^sQ>@~07*qoM6N<$ Ef}26mjQ{`u literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00005.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y!=rsfhW|S9x_j394F@4YLrt5MH#(UG=ZT!i;-*!RA*5eo4 z|J`e1TEB4i2Ma-AL4DV~y89PDtqoxRwu0H)<-X9x?Ji&P9gSYS$*j)2xGP*n#qacn z@Xdcesf$mZEg9aR_ghQfb>6d>b#X!~(^na))-9XzC%{MF=$lydEaQhYt0Hs0bJc&^ za&YF+Ki_V>e7D8aba&bM{r&!ODIxJ&{O0tzR_+e0_v~NB{%7H?!1YqoS2P5_Doneo zusD+c#_P2Y!n@joKd(so@_z^W678jT4QfK-vi|UQzMR=wB7Qk~!>;>#-&_+cefn{i mN~N?-i@1el0V6DE4jhu+y+eWFN|j?BNXXOG&t;ucLK6UpC9qNe literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00001.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..6879d256524079800e9417a636d77674f3ba6bd1 GIT binary patch literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9hba4!+nDh2#AYZcrPebDN zH)?nOd+a?ecZP$J`$bF8=X!rGu4Nv_3vPpSzl^)aAE2!CGLz%smEOPCrK_Ut9ishZ zTveoX_3f_l7eqV=Enk6T2+D8k1jF9v9o%cb6-B{tYu3vEPv4adt z^oxF-vQJj|vvfgwp&7%+yY?{)f5mb$GB7--d-^J%?onn`X~p!inDtkqvcG+uBbqDu zv`XO;v+k6qZ@+4vzBX%XRQ&enNBt2yv#$kj5}vqb)&G0*Ze479&)O<*>b!D!uE_L@ z?&~Hs&AL73?4)^H$|8yuu6LZ~;duSXomkID|4r=D^DJ-lT}!cid#oZdZJXd{zvwoz z-*5km6tCKv7C-4i)t+S+A2^5Y%MNb#`Lf)S!}Q|(9>WbTVw;Y<-=KPk8yFJEfaf!7 W-g(0x7P*ltK*FA`elF{r5}E){!ll&! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00002.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..8f1f1533c2f1a2b93ca59be56528f40de6a770d5 GIT binary patch literal 967 zcmV;&133JNP);T$X<2=vN4!7J}#@p;2$nZ7(1jk>bgyT4l6gwbf>X5IU%cbK#q^C9t z=WlSl2$?v1PBkfKq_a5b@c!aowFHZCj0YDXX9eJZbG*k(TNdK{9Vh8HTaCS?dxdO$ zd=&R&mYf7EIAILIt&tG)7{%c^6Str^Ia|=3d$$2`gB+gkjNW@y2RM@sX=Xhhb;TM~eStS20B_1G4ge#pCgt`uQ&B_@(= zPzTM0-(2qPHTN(1Es{VGhQzm(hczhlvfcgNW6+>;Z{W5(QP4rnk}xyuda*= zx`!yK;H5c`8hSB4+GRzoFdfNqjN!Sc9p0UW^NBUU$;ZCvs4U{x6Dg_wyq{e*wNG8~Z1m0qzBe zb6lI`b3xQcvxHy66AevX#U0zHwk9*)m|N|A0uTI$%x4B#W7qG3K;BT-7e!HgEb1A+ zr3Fv};8J4$Y>1S0iETTO`y9tBSEH8I%Ihih*KwtN7ys-UhHIHqQmA3!w)&MTotpNk zc{SzF;)7W39K@A4*A5wIufL`|OM+KPS$2K`MiJEbRi$mAkJ4JQ5M3oVA~y1@jHV3P zCwMQJ4`SUpGOf7EFY5l9g_qNBPy|8IreNJa;a^BU&~M{cb_->j`&2mZ~x4?Oo|<`Hhup=^86dI4`=;3 ppe4OZ4O-|dyhSOBq9}?d`3I)R+KjTzm*M~b002ovPDHLkV1k1e&OZPE literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00003.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..61c42641553a5c82a7f4c180bfb9a470444b3187 GIT binary patch literal 991 zcmV<510ei~P)#Cl(e!y*eIpzV~BBuSDaNs=U&^RrpM*4lqP zjsuqz1^SC-0kWMnYOSrEb|apJ{hju;HZA$xsoV&0$8j7X?U3{i)o~yUYv$=Py8IM> zJC!{|)bwuk0rq&K84uH8uBLl7ZcUWF*V8|?_b65M&FB_sGy#@sCiN6yt9-9kBR3o>gpxcQG z+YEn~kQh&rB>7@?)ld>30Yx=pN}I(}3xr$|g%+cP_;K5E9ljEJn{=i}z4zbjn&|@6 z8b}d3=uFYE_<=TT){7K=(!8pWu3?VNqEl1&69hgXuzNBG6Av}e$h@z(9o&>IhWjDa5G9~M0jDo{_8Pd>#T7Ha zqb&gDvoo@V_WAm4Mo5ox0QyGt8oLHq$-y(ig<7+niYm(X*ngDwU%b~CJdHQaLJwi!MJ&{F9{Cq z`bL<^x;Oy6j9h6oxS7=&F@F`Rk-n}k;vB-H4$su^cM%2D0K|5G_AN0igv+qlLiiVE z08Hhiz{$AGWr7;ti|1CctyuGZdGd={Z^C#6gb1RI*?B|uE;P%jucCV2mnf;FVn%Ac zSR}V$Hg?bC^lfPPI`L&(^j?t3dri_LNs{M*)&S--0VK>dMQ|ug_R5E;$YSBa(?9fG zfGfq4L(J|(;W?%@hzmmCLOY})3qCCO4)k5mLeOku?j#JX@e~Wsh}ykV)d1yp==MLuZI;BMl&OHa{^QRV47&+4fD6%3)fxI-d|LiUD+yHpV*R*mtCp<)h&3#kun2pL! zUz_GJ2c6v+upc9OM0sCFDY9mF`?nS&NB5XHWXd4Z-CoJhIw7yE1neI)3Vh$uEI=v^ zOtJ9s(1Ivq#?Tu(t8o~-1?O#hK8SoEb2E`@=z_W#a9m81BuSDFgIt7nIvenGa=~y3A(_nz?r?#4yAs=bmP7L5Y$xOFHcbr;$_Bgo$-y z0;)$erBL-Mh*&v3OAV8Q^#({!U6hMm{hcJ6W~`E$20Dnf^^Ka~uG^ z*l0EM4wfoV^|08j#fIXPsn;hSs#|Lm)q+zU4tC}4mTIUjpMB!XnqFSF#HhP^l)Ij? z0;+|~>K~^r>dji;Y+Iw6X2A*wh98oYpAA|qmB!V=ktkfRvLFGLcW$rx+QYYJadc%h zG)>9(Zcv7D&ye|&D`3Ksv~Mptdos%YEm!8~gm=|+bA0apE2cTZg+qT-0z!3=3+KM? zqdy`6VXGWG(2l#%b991C4sJzw0RR9100000000000001h+x!8eqN4FJR$ROQ0000< KMNUMnLSTX*@8`t; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00005.png b/tests/snapshots/nanox/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00001.png b/tests/snapshots/nanox/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsB%b4qF3HrZA` z-`kdoy^^2g<=&!7z3|Ox&bbcpMBh`QmbtTZi7GEY>rTx%mj&v(K?;{8>nhD!5#!Q- z1SrkZ-F~IkSW)D%rM$E$J5_nLvlmWE)>Z1DhHE`z{s=IZypn>Wb$dZ0o=G7c@E+0X zUQ4ZkY){SUi$53cVo+{& z@I2FB=3M?%yIcK_ScIikx#z3}3CkK}8m`Io7FO$)%R}REskJ=!c)c$KYJ0rXw-MFa zlsW1@PC-kVJO$Z(>PO1QbifU%FF%k)#}c{&LLWZriP!uPxLddRP*sPFEgw1o7dz=) z>IGSh&&v0lZ^(cO@hT5|-VD2-a@hS@^WGP^P#^J0 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_miniscript_long_policy_0_0/00002.png b/tests/snapshots/nanox/test_register_miniscript_long_policy_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..ebc70b370981781114ab4e89910603cf49fb3242 GIT binary patch literal 865 zcmV-n1D^beP)car@tiM{k85|{DM!4N}0$=J{`FLMjDrzNNm|-sGTsOj-Eq6*}Zi*WgAAay-5_;gx6LQYn#4y)&xkMj)tZfyG z+^D5fzoQQvqlbJZkO}7H4{^h?oWdbi2%bV;}1B;<=Wi9r8rSEavP^TKuVR;$!Q1 z_#RKYntg8C*uv5jbPz5x_w4DP=B$88t11YBAn3qdU>W#AKGlkmI0e0ogBDb%Wf^|W zB}^b{a)njXT=A6Tn!Z-|iIt70g~s}CVtwG^5>86Iymk|}Fv-d=o-3dUP%e4N+0HDp zf?2l*+)`SXAhY0`7Z3qF6F<6Eg>KKCsG=dysFqId=J8Y6y zDL;0B`f2y85 zrbnD%rVl`g3w|k+ROymGoBs`&;37C%{=|T<#QZvs%AdSEuii{qxVl)zg}uZ$ue^~r zmOlx54Zt_ZpM<>zAhpJzq>ddX?-|sm#ySZAaS>c#L-xX!y1>Iz>5Y*X4)Msp*fB@k rj-kYL_w*X_rzgj+1BCpEP);P~)#aQoCF0$6y;p& zqQ12{VI*kuS@F#nIXMEzl6}5oN`XAf*TM&`jvi2kq22*!gyNh?`eUh+H*qd{z+{*> zL(~DZssVU6FjPp6O6(sZbWqec?f|iL5;v1I>jG_UYGY~#K~Oc|YL}+HRa~8^ zVZO)c?I3V1R*brgSCXm1%x0dfXGYa{{wbdxH49VFNZ#=BPZ>Sl#Rev>Bo=mnh;$wx zCHA1qiw#VyYwaM6`@oCz=}lSv=5-^o1F-j%qYXcf>GGhY(ALo(Oj0T*UBGyA8UsYC z23KCEDYb!-r>fjr1WcjTutl|#1%As1-Uo^mIbp6s&107ic9e`b%Po%f=@^X`?YIrM zsiO}zP-*1ogQYyEdC47x*3E!Hlg5>N22J}aeVZ^NR_)}T?dT1Zt*MW_c)PjZLbrE! z1OcfBXjsZuM8K1I^SL1Jxb>rWa|Z;7MbpsoLTvVV>3-d|;M>?XAKl5TQqW^}K!YF% zg215iPx&g$xYsu}no`#!$NYNg9TL!ATU*6N0ilO9bqUP0uWxFIrNF!s++n7zpk7ak zG}WYGFDP4wEWsn~cL};4DD$YvVoXQ@Nb$bor;OB{D`Bx)dH$@n+RK)^Z4m$tSiIe?q&QZiCxiwuUL_Q0x21p4YkKK<=-BtaM;iB2Z+u@nSlyEx9MqpS2yveY@ z%At^aU+mqUhTLumtvI=L3i=@ID%%e(|8mU;xM)-*5{bm003OQtCQqDj(TREb)A=Z5 zwpjAE(H*er8hBP~nY)soY|B4~%BWwyOyrZYO8&-v*Ec7HM zot!zi6xhAex1q)QnryHMZ4JHM7;%MXeN&>r^O1gqhl>*1aFPg#lp)oV>z506IpGCA zqQXiXigQWqB&?*AR~DLyhp+yxcNp9PQ8x_{TO10tgBP0=lvsUuQ8Xhq3MKRDNE9#7 z0I(Vb&I_kJ z*EH^Vn-wS`k9bRz7^C`P=(<8)5xB@{S@F|w>Le@*pGB4!(Rr&NQ*I=b#8I-0o6c5Z z`S+<_mKgDhqHc=zQ-)J+3MJi-3Z4M-VN5g68xIkkf|LY=;wlxO@F6*1YG@S%MHD_w zHZ4h~%HdJqvv0xWYUm>p<91xf{A>ceLAoF@Mi)%9S3XNsu5gKWx&`Nc5{X12kw_#G biRbYH^M&$xg2c)}00000NkvXXu0mjf>^QeP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_miniscript_long_policy_0_0/00005.png b/tests/snapshots/nanox/test_register_miniscript_long_policy_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..621f3009e1395f745026eb02278160fe238c21d3 GIT binary patch literal 858 zcmV-g1Eu_lP)x7M!f z8o$ZkpWjGBt!4^$sO!BGA)@3_IL7CPVT^0ZZ{rymdfSvRy?3r6%ynHUqwki?8i!u4 z+U?q(kcF}Wr01mm_{%3%^r^;TQIyXsYjTDSfoV(e8!G|`qKWg&y9SM}@(9&D*H{OZ z)Da_%K^I*i7FCFynGpcij5&_j$`~44OKfoMR{}1_i2y!_;u~*CC2`455?*IEy~ki- z3EE_HxWx%GWEzj$_XO8FFO`T29Df3gZjU$s{bH^!?rS;P_D(bmQHL98)X~<%#$FzX zoi8PKd%7exOEn_rb4$=cB>L>B?%(c-fSaPKD2k#;fUMDdVw9w4*%$JK7^D2f6R?{L zdK{jP)e^L?8uvG%xw-wK2GCUXbyB+Ls*~Exf@o5BOwn3M~6a9EAeq%G2h~w*~NN0g!37EJw3J1?* zLp4K}7VCzEl&w@m{C1d>xY9s%kENr@B@@TjUls$nE4!#5!(;S&rEKv_zJh|7)Rr-lkYYBa)ud&LW60VE0{9b5aq; zQAH~Z2yePW1yYZ5wrTe z2Um#X--eNj8m8q_`SVtGsyecon2V}>S=f?u+7RlttP$hPfC<&avHxAO&Zf$FYK`3K zp&At#b(4|6>FTTKG$k!eo&jXZwc(@I0-=`Ig2%perPV{OD2d+zuNi8o4~@rBX2{A! z`u@JP$rr*Ib7**%46O1v@Dk@Y5fM%a#pKQZeUftJ9tWBP37^99i@-#pO0M$r! zlS(RmM{>8PA+h_aNeQ=xpbsKtZ`aI#i)K|(6vZdvWJ6nIJEf**Kt9!~#b|W5 zePl9Ht%zFzgf!UF6*hAQ?$+MQvtre<47gY}m6yqwYJpM_YSN1DYB%RaGPYqYVTmW) zrd8MOHKz{5xAM6nE(R3Rz}+0Y3beAO&;GyJ9Aj@7{h zFwbqmf^gXi(w^iF;FmrNH9;25wlebHgv?aLzW2Y7c^f)8QTh}t!tMlQc6ipVRDHw(9V0)cYhn~n6|-!6qZxpcfWH-|1IG1G^@z1#X03IWDEaUp{%0YZ zBWsb%JHI#il95ytMNt$*kpp?s3uUaL>iQ4ziTY5A!X+(%s#R7QpbHfCd4~>=Zy9w{ zVb`<30HD_`N&3P6HnhdRt(0X(Ypjn-(@!otDHC}+p4Vh^u$&c3_~c(G5xAB<9Bavd zGd^*Lwi-z+?e1^}o*~20N-{25#j4f0gijYAk~VD&l7^)uR>`o&5bl6wyVc0!I%3mP z3~MUfKuYrP-&FCBUpILFabkS} literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_miniscript_long_policy_0_0/00007.png b/tests/snapshots/nanox/test_register_miniscript_long_policy_0_0/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..36f9c90a03f5bf39d0b9935253c251e72378e9b7 GIT binary patch literal 985 zcmV;~119{5P)j(q;%R*L}#4}2|xMgS8;pLsW+p)2(x6!$M_ zA?j`j5;VG+!ukXDs0NQ~?HmDQ$+?cB)&i3(?}Zt-ttp#FHH8zCvy*^xg!T_(z47)w z@I}bC<>LgVphXtjU7e$VO>oP7Pw*klRqXK-03N#^n2fW&yt=NHSj#&#FvcApq%?w~ zwbl_2j`$_^E>A;dce!Tl+&2Zi5gYsLyLSI_%?P+?R3%B0yeYmKdZNlq?pnLAt7hYTfd>k>0XbWX3q294xVmG2R#G#|J5Opak%0i7cSj z9aLy}AfumyU+i0vgBbSiBw|xg?ZosV1pO_+t+&3~9}5h7#rPtz1nljnk}GVM>%(4Q zT!yNXm%HR*7M-DGsJzH5Ov|g{&#V-O!XQXs9E2?|qV%Uuasy@~XY1dF($v}dHdXTX+b@f9SRIA zVA*v9iiL)5|?FJiL{GaqDJ;gggMhnYPZ`mV9h zC|Voc4Xpkhy~1x6DQ{!)lcajetRoB2m6(!Jm?WLb&v3Y+<<5#{`}e*iNs=Tm5>&OJ+N!abu^*Fgmj)zY@v4FuoLcE zll-NH+?%L7KDoQ8gq}JrDlpr<6($qVx5D}G+jRvgmPtpJFLhtqn^I9X$%Aq76BC~& zDgiR+sPeaGHl(RSnYz!IBuSDa$@}pQNPo@*+V#sX00000NkvXX Hu0mjfJ#yKI literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_miniscript_long_policy_0_0/00008.png b/tests/snapshots/nanox/test_register_miniscript_long_policy_0_0/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..c34650f1295f64cdcb980596c476d9ca5d5af963 GIT binary patch literal 479 zcmV<50U-W~P)741i%y=j??2FNwYM!5M}L0iu9{{l6z$DTGUq>Kp(70C2m%`t1;cbIyAouf@mX z+VaCv$suMm7eWvnKcqFsw$w7QhKf)9wi_`X!8*{}b; zIAt4_o{RGFV?L>+r6+Pxtv@eZswc*9cG`w4nnnf)YKZCNH)D!j&6BjW%EXuIu4rja z1X&sMQTc5Na&QJ1OI}+$>aQyMti2U`;^x^?DPz%|fFncG&Xk^bV>>)a{=j_Jxh<$u z=eVnTRHe?!t>$yW7|(@Y38o3CbUUtnV;|D;>bW*oI^n5-S(>v4DPpKkSm_Y)V7m7j zdptc=?U1G|mE5`oZDiE4-FW%CITFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YlN%IGsF2x8-oZcid9`ok|arzBuSFo&M&@dt+kYL z97lU@KYcVIQdIvc(u9v%t5ilUQS}@?$NY{c8n^!Op>#&?Ulrk}Z!JPq> z{J2#F19qsujG*&*Y3vM5%jSkD+n10tOts_Q0kJ#-fHnKBw(_aFs^2u;@&fysay1`$2#vu^F!B3w2xl!KpY zg}y|6-cm>QB5s*WH`HhOb4x2gCeWnVW|}_uzOr=SEB8N06``8jAqOkx zt6#f(I6nd+byj=P6S@%_SWRz5^e)#hSiB=3POulDWL$)x-bGyUJhI@#+jTlX4X48x zJgzs6!%s_y`gxO2hCvwv9BT_H2lt|{GmQuOXNeE6ap-?eV!)mQ#eW7i+H}*L+(G)_ zNz(dHlGc9`Y5kpd!s;GN?oFrV%zlv+=r{~pEm~V=Rhef{Czq8*1(m0h6eJ^MInJb# zFzHVp^MjZ*+^pxJW}M&7h zQGmyCK}C#|-WI&4EwM7GfCch{o$(wgsyyp}X~cGm^~o8+Y)}VM)RPX71Q%Z{Sx&g} z_`YT7O0vM*Cs`BRXsU~bHJs(LJN4PL4#?(O?W!eGREYPS-1chnl78*H5lbArD+b)d zOIH6RNs{+cuc+m%q<)1LaV%nG)~j9H7;8AgIt$T$p3 zm`cM&xsES=?7%ry=c^}RLr6$HEYk6Y&+B1U|P o1HSlQ5wGQ|$BQIMk|bgI1E7()P~oDs_W%F@07*qoM6N<$f-GC=p8x;= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_miniscript_long_policy_1_0/00001.png b/tests/snapshots/nanox/test_register_miniscript_long_policy_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e7cd9faf503e211700c1ae22d11af2c3a87fb783 GIT binary patch literal 1017 zcmVV`G>Z?V}lOPm!YlT9gP$(1%g~ILl0sHOy-dfwX z?fiXS=5Pw(qWW7SDstHO{Zy)XdPYMuwU^-HPukG&=x_hgI#>H!jpgZT^y=yLkY#B>{7P75_(T(HgDgMBt%nMgQ zpKaR{w-0~uy3&Xlc8dW%|Ja?=id;-shH6VO(jtm7ba8>2C`~VUA@M%k4CB2bzPAkD z!91Y}h$0l_18(OV_5@QD-Da(0#FF`a9OGuMcl>*!Unmp`ufkQUpaXoB=C<(VX3ymG z584{>1(>nY<;*DQ>{^u|xMsq56&qZFNGnF)>RNwLuXtDFU_w@LKx`j3W!47{ky~e95}ok zSE>z&xey%;0ZPC`>!(aUA>;<;ZO9)CMe0tpF~4`#d|e4JF;g2a#^t zdek+;70xq}TSwTIYeJmly^X+G;;*XoZP7pQlpMS>`U_DxSc#g2R>BE#<=|5A@W$9s zkz;5cN2E#6Z0Za`GgUxE~nMm&I`I9G~mM?nr6LrkY}%a*C}j&7xfN?8*g_1E@J z1o~|#r@z6c`pfBLK&~vnt)-!~zZ`T5CF8Wy25yANpyjsjJiep@`S{0HAu_mzaMB)i zij%S;!e2)dBU-T7MS$bcPR1ZK;UJ|d4i5LJ2A&7B&uPxKLwv^~k>wNdGx^KLoEjO6 zegeQr7J1z5nUfC|`$SyGhT;I{4TGL^pM3(vLCsIW`b)880ip}XS&A;jbf?~OAoEz< z{aw%%@^3El@0vmjg+gIH_D`gR7?=37Agd^LGibX(@2&+%E8;>Da!9ajA!4|>oU}0~ zoQ;@9w~@yE^PE82p4h^*OIrxhnENb_>oUG50r%dZ4ORlQu;RYCpWN_okoe_XQb=?p zlr2Ltk%k~oMMPnji+G7kp0XhriGG@oyDtG8WF(3e)}FW75o;)o^;E>h{%6wHGJc}# z9@uT>SDvfbZ>s{tqdV<9&n-RPA<8N8RE5;JosmggOJOc1&&6#_Dvpb6SU&~59M`g; nBX|z!_=wY$LZMJ7{672x$RtrY_OBuP00000NkvXXu0mjfTbTCb literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_miniscript_long_policy_1_0/00002.png b/tests/snapshots/nanox/test_register_miniscript_long_policy_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e82fc9df1a36eff8cff84d77347bdd9216132c23 GIT binary patch literal 732 zcmV<20wev2P)GHa^K>2z{i-xr-W0@hded5+wee@D?Oa2b;X_!s!o8fIS7q0@?syHKxOW7g z?|@P8v=ez#L=CvJJ% zu)3JqtY`Pax->1wajG*v>wtRPjL4{xmSju0+r>m)M1US*?z2c&x*m?#MfGg4`VkvO zjgOahto*TiJ?Qh6q$?b+*?2((3m?&j?;H0r-ReSU4WY$+Dq@1Uuz)|OWsSF1`Vc`f z!%A9vz#*hMpuo9uWWL;C2R$ao5U{(M?*Z>f^+hb-A1&$~09tnZ{h$~NRQeGyq&wFD zH~s{6;xYkv^Un0%l)xFiR^CnWbs24S-}pbz0gKs2r|qqSe;o(BPMS8`2SoEg6e2=r zlIeq6d8g^^radMG(`vGq&RZe-CA@{XXVlPyroGgX9H7Tjm9GMrR}cYt)>chgFT~UP zp-QkJUgVv;jg9F{ThncYBtE5(9Ht-61-;J2T)>l{TX^^kNc*joUgO};_de`6(7i85LIvh O0000FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YNkl8-}36F~^h~_4Lt3It~|MkWAd>-Q2n9b8VCe&RC z(U;ftVR<^Je~Z1cfE&;Fw>ue}b;? z{dUI9Pa{E(RmXy}P2jL@@L#&UHkepvRK zrfGgWn@>T*kpMjr)YEN5iBL7n=HrC(hK|M5N6&I#ZbwDr7eq7QbxeIRK8&xU&lFtg z+U0|L5fieSchT@Zi<*lZ4uICo86*4`9-5Nsgi4{c$TSu11JE&>x%S$EH9Z$s?#$eC zZby4%j;fX3MbgZU1Z62=J7B1#NpJ?#yUsGzNjE>u{SQEMd!h$RT(IXKfQy006CZ#F zz9<}E-$`fxPA)8R#riJm8D%B4f2E)8M1Ij;7k9mJehM*IRJrAl8y1~(m|14whXML8KCz=Q!>Oi zVQzLp98K$Zo(F}9tGwZL8tn}yT#V|;QkU-v4Y9L%6K*)j8>H{_Ml5Az^~bL@Rm;0f zHBHlO2l`KWBG6k93!XAVr&V!>(CU-Ef{O0UJ8H1L&z<7ER^079n+hnT1kFo_LT(x9 zE-smntw78s;2Bpia|$wVo8AKt)JIcly%BSAdvWPY==hugAo&Bp?}xh*y6cu-#S<9J zxJ02RsH7p}58#Y(y4Mta=84e5nd%51_KHzeW|pAE5xO^8(3IX7^`F~8B0XJ-Cy&jIlPIA1kb0K&zoQ lbF&)yo5z0BG)?o{`49LEt*qk__*DP^002ovPDHLkV1l821B(Cv literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_miniscript_long_policy_2_0/00001.png b/tests/snapshots/nanox/test_register_miniscript_long_policy_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..29c873c3df506125ffc4396d6818f321f3c5653c GIT binary patch literal 1034 zcmV+l1oiugP)(>}nh$yNZjugc-9unJiti819SK;l{+Ftg!KchO$TmN`b{`#Zyjo967BT|PO z0(C>3tNaq3*YA)v?KC=vcMY`mZKPbEuNYyhFG|M1#7OMS*J>+jvmWeb&a;#YHD1tE1-atZMg6XhHlXqbAb_C22#+)wYcj2 zlhmWV-$vB@E5sOaR58uXox&J2*iqYt+G;q@0i*EYUlALJckT;WqQmZqgtzLS$^2Zl zTH|5XPm&~gJd1Zhg)5pGwTc2aF7iRaDA{Vl1C@qOtUbr~?&7Qs0N$>}D>I{LWeL7c zDaz!#lfu;pG4ytUu;QzU{F4!>3@Jw|4r=NZZ=qaMMo}{hO9g|-sCF4wv=7=>Q6Ll1 zqwN`;UA67TF2kjW4rBh>;lT#n?0kI?j}Tn6MG#}w0YzG~sGq2=aXc`CYaLCQvOQ3W z?Eo|oW3rp>{-n3|>^=A*woC7Tzyyp;db|!xCvUiO3`e$I@nAaIT^JQ@6W{FsLlk2i(hkEf=LW`bqk|kP zup(y~7s*4*Q5_(@$rID2-T9uOr;YRVG7^@U>Pt$D8rWFVtvvAzB zRxE>S610}0sy77zj=T2gW-E8^JrbYvL6Rg%@^JijL$$48kv3l9m3AY`@5yZ8CA6FD zcA{8lv2_mY%NOiHnWCW4YqXfEjoV!b?2+7RtF1Fr_;iOrrk;c~_hO_QMLj#97?_0^ zV9ztuj#7j;6LF2B+pw|GUGrnrOWfU5IP)~@wb<)%#4(Bn62(|PZ256bhx#NL>n4`od1bSZ>GO`Gee zBjelrm$If^hOkcv^yJ%DmC zd{*Mjm^G}o&BEZ`#oklp6eEJc?|>}v<6kj_rz`gt@)8?XFJ!t@|4h!WWvMs5%=-WU zU(buHpq62q#jHw)O(*k1rz4~#gEfh`&)!>-%@FUe={J5;!O`psx2>unYYK{VJ9?V^ znfQmPUlm!ChR-*q=Wcz>^;cS0YjB24Rpy878!>wOZHPFiH=5d{;Ed+f{szp2Y>IR* z=tDSqHR7(G?)*5j%oz6}3@^{~mvAIq_z@6%z781y@hUAsTMLQ+H@l4bUuN;{W>2$O zx#|E~!(h_eUpsf8>twvY48zrUe=+RAJ0T0blYx`jgG<4^00000000000000000000 f000000GII(WbSC~gm0cx00000NkvXXu0mjf@B|iY literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_miniscript_long_policy_2_0/00003.png b/tests/snapshots/nanox/test_register_miniscript_long_policy_2_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y|&`7Zn6ib_L6tM!QUSo&kikr5yedUP_SBoc{4B9TZW61U?Ie|?^3 zDdjkh`dmNGp(;UD6Z%{Cc1dDKbkc2UhgJnlcf{XOht{KiJW!gTyP0-1khcWY;)KJ| z$5wd>#zlHv_!)A=ov@|Jf17z%zMU!8^EF5GS&YiDbZ|171h)>mGnZKJHV#3m020l1 zNVUBi{kbx#y-dQ4HuNnTkx?G$i3D7=*emkkf?5FuqRjOYbZ6O?J*Mj$54Ua$r$Q}j zMTwLEQ>VsWR}Ar_ayHKBl6y@LLEVILC5_OPiI(!#kdf3ey|^u|iqjZaf-clOvptY> z{b={wNNxKNiM4hW8O1kpwjn-aujm-cedyc+Mxjst3Z9bnDYk-Ld(wTQm_Db!Ef$A! zYc#$u`iVp$@!i;b3Mv8r7m=WDJ8Hm7xO>INE0xYl7VjKM&Y;mjvl30_LNjv^n%hy8 zTW&-cxb1{p=(gz0#OMj4)r?jmHxS`P%+PAlEhBn1lJ5!Qr(3ws9#ohBtRuaghYEiP z8>2Af8?J%aKIhUf6>$%0`rS$3E>Pvk1^1*Y&YLDc$8D?JlMD@iCHch|n&YNAu~D%VjbnnmQ689o?V!XWF}xEW`das*o%zk zE0NKEB{KT21V(>=4UHH+mqauzMPm^-9~p6?*q2zrz7eC<^^lLn^xANbGkhUoB1JK7 zi|FJQMJu8Su2Wo3h#0#GpAXcQjlW?cge}gOl^KMih{U3L(xZ%Xv}>Bt(JuejmFF_0 z;eJIbalL*qoduS!MH3jV)1$Hx{R%LRViDBj8!n;S9b*x7(W8b7H&O-bm95knf^k6; zbh+s}>QEHZl`r{3zJ8ibGloVn!-nefg-ag2-z!F{CL*Qyym5!q(fLNKK9jd1lw&9t zGuuWhhW#^EU~xZ$LxxQFrn%>KNKuSMHJuN=x)=k_!@{aDH=Y%Wv1C z=LmSyCfPCq;+Gcst4SCaiO0MV_27d^qg&>HILuEPw9utpM-k z?nPf$_!5k6Bnl?UxJ9eS1B-g9HnY@RIGcZI-e_oxs)`TzZD@O>*+LqdY`OW10=+#4 zYze|030pX6s%wrKr-32X)z*}B{UI`Kp5A|TeKB@T>Ipp`umpWKKK>sx7BO+6BYF~v dL?V$Gz(2eA$@3aS5!(O&002ovPDHLkV1mOd^%MXA literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_miniscript_long_policy_3_0/00001.png b/tests/snapshots/nanox/test_register_miniscript_long_policy_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee8b13fba48cdd80652197eb77890dc8bd90ef5 GIT binary patch literal 1072 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00003.png b/tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YOOy099@t8>z6@-PQMzWpRR_Pv#g)Kss1~) zBtK;rodL@PkP&qLofS2u10p>GoM_Uf&hjw&Tc*(f;vxm6&#FRI zKvgSiA^w~cmms!WP(M;^+(Oh6X^strtj}`LEH0Jl4zNP@A~<4_o0s^L`!{xr$_$_# z?zbeAksEKQjk)2MI3UZ5Rk2XZqOu83&gFjYpJ!p{U%21m3aO-A&DmzlzAgCXFM7_Q z!y$1G$bt|5Nho~7(y{kw@FcZu`5jnv`z>1ixzTT$ruiPsQxH1^T9^LXUauZ8t;2)N zO{y0WD#p&BS((Mwscu*5tAERnE69`v=m||Ug{suV2`*D>FIX$Sh*>!`%a|NWY~HA2 zT$=D3P`d^fWSDPOORc|gyBvQ8Osrbqq(S7fa}i0>F`d4i&>6f?Qb|R~9xhMP)X+fW zrA%1DvgkLn^dd&d=C@Ka&M+13FmI{K6PljN{pC5L!!lm|Y4gOZ8N^7_N9$V08; z1`~5U_jeJ?de9h1?*9ec;TP34N97%j<$V(E85(z!`?1kspIRdeBz{|?b51)sxJPVI7aOvvmW zbIdZdEf*vQ%Y+ur_2Hr{&D0#;cW@ud-pU9__RN51GrA0LHmK)<`>D(TtA({oHVcIF z5eykJ?r?{%?j&yps9W4i`{5?O^K2YhM?Uv@`OJe% zGwBX!nx<*;I0p}zu(J|vYHH6BIDYX>XKR5C!Bcpu8=J9I%RsZ!v~<)`h>{{LhD#*w{-q_Q+ML(*Yc;%7;B-L1S12y=mp-l%GkTGKcD^@i3uv0iKt zRfxCXH5mGJbYTdm$>{i{b!Eugu5Cq%~X-&zVBYC_N2Wv#85{ME`QU3&bR*cMH?POMKF{BwfkUe1)sf~KOTZbXU0ORPVl%*K&GAutx!d|nrcnbL zMI6FfVu^-9ZVb)cObR0DVhke0!X-p3;nk6$fW+)h=*esu>j16Et^vc0^Ky!R_^9y0 zGhpm(`$=3IzVN!eGpbd7s9tu zA)9g7MkSDWZs6De0qOvE%(^N9(Mmf=#D)OH9U_oTG7+c~@a;M-_d*?DZ@y=uCoMQL zl#D8H1-`

_?xkKyB)T>=fCui>{f2+$%2zpLvjC_ zja>+eoo=CBsa=9Apd-*ucyhC<$+_AvxxYgS(_xJM4}Y>SFr@{76OAZbqS{65yMHbd zxy@&bouSrGXA=BIv;#C5Clpo)q@`A-S_x#~5o5r0;*)CVJoZrmH@LqaJtlGyx1a3$ zKnKjM1mgq})%KWZmBp^~2(cN!^Jy>VR~t4uxQa=}>A_~o#SlGg*g|dS&QpC*6h%=K z7BMyShCg>f&@@O;_;jO9#G`4k&D{5Dw;+~KSlsEtHyl@kj9yL0=4!6dND$DCn7CPe z{%}8j;y=ORW0-++k?imIPMFjs{&aU$d-sg4bk3)UJ!$MAZ_G2-8=nE12X|U)(Kh{n zgxm${=Wm<`?4S!6e0|dNl7&?x4RU>9n@!2loP8QdNS*F1d}Y`~SPgX#L#9K55Z3^E zH5y0m=k!NL4K-fKmMljJCuC%d=WZcau01! i;M1~yQ4~e-+xZXlw5EE15WUC%0000rL6!THp2l{3d3%3m`11HoFRIP1jB<6Ex{! zYyhO8s*so$3qy!oW1DlG8~H?aS?aMeLyQeT%VmcEh*@sl;xFzG?114FAV(YbB(ive zlEn;_6&`Y{-G7F@&3))H9E2;^c3Rj^fWBevOCjrTop?f^vZ z0i(pHf2AvY!`88+q1&wO81a_?+{9 zQd)lrPiHr$RvNdbv`GK5SuJ~U51|2Y`v4>p zlLb>1O2^s9h=vFtVzm@@16Ygv7W4{$(KvyV81G}^pM-7EO-4mjW&Q`e1)1))ueyhV zg)4HcHoXGy`4SUPVXB(0S`~ZT3E1+BIzBD&T|`^!P>u|^If3)6e973x% z1K{$kMX*;4$mLUWGK3I92qAFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBJ%=P)&Yt4wu z@ev>>cK3P{O0gnH!%p(4&2&@9i<_3ZB&n-trH-*aVSfZTC3{TJTGvuKV@;akfLBC| zXDyTh*>9T1gMX&3Q>mZnQ&1;cHbRws+VHt(mIL${@`*dN3?`SatgfEw-rgHZ0RR91 z;84VlZP^CS%Kf$WWc`lw^n+Lr4~)M4+_%U9F(bdJ%R;O!Q#Wy*+E3>K|j&p#Optr<&R6MIV zmO~fe;`F_;sgzNly)4TJ=u|02d)riH`&ggoTT`3X;-BBSjXB-7R&LBo-gN<{k+J?V z3Z};Ti@^swVHVoSjgj%eR6fSMtyveb%ha3Bj~V$1JTsO^nORMp=85A{5fAv>EaktG3V{fz@j4x91gk5 z%|HHg|D^Z##FawEUc;m}Pxki9h6l1JrQH+&YGPoR_Sv*>?UW!6#bYyWKYD%f-OPx| zCAXHZ-eq=Q_`1-#^Jh$rmM#h95l*hT@LREE{?T7v_rFHyJ^36i8zMN>M&;b1o%_Vr zt)2YcKs(3Szu~~0q(90L*SI#VjI>)HSzYA1e5Ppil}_JZsjJle9hN_dIAoYURZ-^N zjXMTDdAKvskuZ_MI=gXD*h?Hf#H0YiOwTnfZc&wf*n8Y*Rix zt6qC-PnWgvj+J~>g`Z}X8+`M1)Nf?iQt_wUh~dEQ6<0sqn)_1NHe`0)s&l_KP&&8Slt?=@~Q&~wrCGB*@=RONa-eR_Q zt#$CgMDYA0Gvop@b$$G<1%xEi$mRNska zxqbU6Rn~dX`lbf=-U-6$!pz|X`rt@FBO0XlpINt`qxtV_8<32rtDnm{r-UW|q=@3f literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00003.png b/tests/snapshots/nanox/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YOOy099@t8>z6@-PQMzWpRR_Pv#g)Kss1~) zBtK;rodL@PkP&qLofS2u10p>GoM_Uf&hjw&Tc*(f;vxm6&#FRI zKvgSiA^w~cmms!WP(M;^+(Oh6X^strtj}`LEH0Jl4zNP@A~<4_o0s^L`!{xr$_$_# z?zbeAksEKQjk)2MI3UZ5Rk2XZqOu83&gFjYpJ!p{U%21m3aO-A&DmzlzAgCXFM7_Q z!y$1G$bt|5Nho~7(y{kw@FcZu`5jnv`z>1ixzTT$ruiPsQxH1^T9^LXUauZ8t;2)N zO{y0WD#p&BS((Mwscu*5tAERnE69`v=m||Ug{suV2`*D>FIX$Sh*>!`%a|NWY~HA2 zT$=D3P`d^fWSDPOORc|gyBvQ8Osrbqq(S7fa}i0>F`d4i&>6f?Qb|R~9xhMP)X+fW zrA%1DvgkLn^dd&d=C@Ka&M+13FmI{K6PljN{pC5L!!lm|Y4gOZ8N^7_N9$V08; z1`~5U_jeJ?de9h1?*9ec;TP34N97%j<$V(E85(z!`?1kspIRdeBz{|?b51)sxJPVI7aOvvmW zbIdZdEf*vQ%Y+ur_2Hr{&D0#;cW@ud-pU9__RN51GrA0LHmK)<`>D(TtA({oHVcIF z5eykJ?r?{%?j&yps9W4i`{5?O^K2YhM?Uv@`OJe% zGwBX!nx<*;I0p}zu(J|vYHH6BIDYX>XKR5C!Bcpu8=J9I%RsZ!v~<)`h>{{LhD#*w{-q_Q+ML(*Yc;%7;B-L1S12y=mp-l%GkTGKcD^@i3uv0iKt zRfxCXH5mGJbYTdm$>{i{b!Eugu5Cq%~X-&zVBYC_N2Wv#85{ME`QU3&bR*cMH?POMKF{BwfkUe1)sf~KOTZbXU0ORPVl%*K&GAutx!d|nrcnbL zMI6FfVu^-9ZVb)cObR0DVhke0!X-p3;nk6$fW+)h=*esu>j16Et^vc0^Ky!R_^9y0 zGhpm(`$=3IzVN!eGpbd7s9tu zA)9g7MkSDWZs6De0qOvE%(^N9(Mmf=#D)OH9U_oTG7+c~@a;M-_d*?DZ@y=uCoMQL zl#D8H1-`

_?xkKyB)T>=fCui>{f2+$%2zpLvjC_ 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

_?xkKyB)T>=fCui>{f2+$%2zpLvjC_ zja>+eoo=CBsa=9Apd-*ucyhC<$+_AvxxYgS(_xJM4}Y>SFr@{76OAZbqS{65yMHbd zxy@&bouSrGXA=BIv;#C5Clpo)q@`A-S_x#~5o5r0;*)CVJoZrmH@LqaJtlGyx1a3$ zKnKjM1mgq})%KWZmBp^~2(cN!^Jy>VR~t4uxQa=}>A_~o#SlGg*g|dS&QpC*6h%=K z7BMyShCg>f&@@O;_;jO9#G`4k&D{5Dw;+~KSlsEtHyl@kj9yL0=4!6dND$DCn7CPe z{%}8j;y=ORW0-++k?imIPMFjs{&aU$d-sg4bk3)UJ!$MAZ_G2-8=nE12X|U)(Kh{n zgxm${=Wm<`?4S!6e0|dNl7&?x4RU>9n@!2loP8QdNS*F1d}Y`~SPgX#L#9K55Z3^E zH5y0m=k!NL4K-fKmMljJCuC%d=WZcau01! i;M1~yQ4~e-+xZXlw5EE15WUC%0000rL6!THp2l{3d3%3m`11HoFRIP1jB<6Ex{! zYyhO8s*so$3qy!oW1DlG8~H?aS?aMeLyQeT%VmcEh*@sl;xFzG?114FAV(YbB(ive zlEn;_6&`Y{-G7F@&3))H9E2;^c3Rj^fWBevOCjrTop?f^vZ z0i(pHf2AvY!`88+q1&wO81a_?+{9 zQd)lrPiHr$RvNdbv`GK5SuJ~U51|2Y`v4>p zlLb>1O2^s9h=vFtVzm@@16Ygv7W4{$(KvyV81G}^pM-7EO-4mjW&Q`e1)1))ueyhV zg)4HcHoXGy`4SUPVXB(0S`~ZT3E1+BIzBD&T|`^!P>u|^If3)6e973x% z1K{$kMX*;4$mLUWGK3I92qAFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsB6P)Nklyx>C8e`N|{6{}7wdQ?i84?kne(FJuG3EjKZb-p-q%Kk{wPIe* zp8-NK-Q!Ov%@rXvJH@AKrjsIGoUB!sB6Sg6siCbS{AYkM@=h0AEnBN}#WQKi0Gu;g z+-spUk?mbG-1xETZdPiydKOm; z7PT3mH-aoDYcbtYjUvN|UCn%q&u*xocY}4n@Ri33ZsWfhcka1&d#bqgZ@>OfYCHH3 zz{xTOA4x7j-PJ%49oH?}Sk{Z*0viR5EH&nepC^ka!}W)7r+eRU54yLpnt*#|dpx0; zg&dxc)*cUO>8r=U-P>0oU!6{743?sM0RR9100000000000001hWqtvP?}B(zZz_)f O0000gRS` zb7L-Lr+RiRuI#5_UaISZwvF`Or$wCRoSWGDBJw-9ytwabTCUQEpJ`B4RKg`S7R~(A z#JPMz9a@F0oH><&i#FJhp9jBm+F7~@QM-}ocTuRr8hEZuBfI_pwvtQYOIKBB^ zn=+T;${E}&4z)VA9` zFnTX2ruMnaZOgEGQ{L3fWiG`S@OooEt?5a1>Cgz+owDW*f~S24#QUAwvHBN5otf@w z0f?zRDDz;tnQOoy7yll(jls=}-z<06gF+6KiOt)O-g3oGaqB!>=|b9Rmw0@Wvn8(6 z`!cXHQ(A2lx>WDK0Wp~A9<$I>-DVwrB)S&>000000000000000008Lb4@J+FLFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YOOy099@t8>z6@-PQMzWpRR_Pv#g)Kss1~) zBtK;rodL@PkP&qLofS2u10p>GoM_Uf&hjw&Tc*(f;vxm6&#FRI zKvgSiA^w~cmms!WP(M;^+(Oh6X^strtj}`LEH0Jl4zNP@A~<4_o0s^L`!{xr$_$_# z?zbeAksEKQjk)2MI3UZ5Rk2XZqOu83&gFjYpJ!p{U%21m3aO-A&DmzlzAgCXFM7_Q z!y$1G$bt|5Nho~7(y{kw@FcZu`5jnv`z>1ixzTT$ruiPsQxH1^T9^LXUauZ8t;2)N zO{y0WD#p&BS((Mwscu*5tAERnE69`v=m||Ug{suV2`*D>FIX$Sh*>!`%a|NWY~HA2 zT$=D3P`d^fWSDPOORc|gyBvQ8Osrbqq(S7fa}i0>F`d4i&>6f?Qb|R~9xhMP)X+fW zrA%1DvgkLn^dd&d=C@Ka&M+13FmI{K6PljN{pC5L!!lm|Y4gOZ8N^7_N9$V08; z1`~5U_jeJ?de9h1?*9ec;TP34N97%j<$V(E85(z!`?1kspIRdeBz{|?b51)sxJPVI7aOvvmW zbIdZdEf*vQ%Y+ur_2Hr{&D0#;cW@ud-pU9__RN51GrA0LHmK)<`>D(TtA({oHVcIF z5eykJ?r?{%?j&yps9W4i`{5?O^K2YhM?Uv@`OJe% zGwBX!nx<*;I0p}zu(J|vYHH6BIDYX>XKR5C!Bcpu8=J9I%RsZ!v~<)`h>{{LhD#*w{-q_Q+ML(*Yc;%7;B-L1S12y=mp-l%GkTGKcD^@i3uv0iKt zRfxCXH5mGJbYTdm$>{i{b!Eugu5Cq%~X-&zVBYC_N2Wv#85{ME`QU3&bR*cMH?POMKF{BwfkUe1)sf~KOTZbXU0ORPVl%*K&GAutx!d|nrcnbL zMI6FfVu^-9ZVb)cObR0DVhke0!X-p3;nk6$fW+)h=*esu>j16Et^vc0^Ky!R_^9y0 zGhpm(`$=3IzVN!eGpbd7s9tu zA)9g7MkSDWZs6De0qOvE%(^N9(Mmf=#D)OH9U_oTG7+c~@a;M-_d*?DZ@y=uCoMQL zl#D8H1-`

_?xkKyB)T>=fCui>{f2+$%2zpLvjC_ zja>+eoo=CBsa=9Apd-*ucyhC<$+_AvxxYgS(_xJM4}Y>SFr@{76OAZbqS{65yMHbd zxy@&bouSrGXA=BIv;#C5Clpo)q@`A-S_x#~5o5r0;*)CVJoZrmH@LqaJtlGyx1a3$ zKnKjM1mgq})%KWZmBp^~2(cN!^Jy>VR~t4uxQa=}>A_~o#SlGg*g|dS&QpC*6h%=K z7BMyShCg>f&@@O;_;jO9#G`4k&D{5Dw;+~KSlsEtHyl@kj9yL0=4!6dND$DCn7CPe z{%}8j;y=ORW0-++k?imIPMFjs{&aU$d-sg4bk3)UJ!$MAZ_G2-8=nE12X|U)(Kh{n zgxm${=Wm<`?4S!6e0|dNl7&?x4RU>9n@!2loP8QdNS*F1d}Y`~SPgX#L#9K55Z3^E zH5y0m=k!NL4K-fKmMljJCuC%d=WZcau01! i;M1~yQ4~e-+xZXlw5EE15WUC%0000rL6!THp2l{3d3%3m`11HoFRIP1jB<6Ex{! zYyhO8s*so$3qy!oW1DlG8~H?aS?aMeLyQeT%VmcEh*@sl;xFzG?114FAV(YbB(ive zlEn;_6&`Y{-G7F@&3))H9E2;^c3Rj^fWBevOCjrTop?f^vZ z0i(pHf2AvY!`88+q1&wO81a_?+{9 zQd)lrPiHr$RvNdbv`GK5SuJ~U51|2Y`v4>p zlLb>1O2^s9h=vFtVzm@@16Ygv7W4{$(KvyV81G}^pM-7EO-4mjW&Q`e1)1))ueyhV zg)4HcHoXGy`4SUPVXB(0S`~ZT3E1+BIzBD&T|`^!P>u|^If3)6e973x% z1K{$kMX*;4$mLUWGK3I92qAFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBZ=3?r2II?mhcXQUCw| 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_accept_legacy_1_0/00001.png b/tests/snapshots/nanox/test_register_wallet_accept_legacy_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c9b7dc7275b4037793c0e0919b85ef6067a6ff13 GIT binary patch literal 990 zcmV<410np0P)HAF$LD}k}QOXp*%+opvO5}4aF(^^p!MNt$*QEcazaqm3O z*4l9#{dIqvqZ{F-=qfx%E{Db{dS`fN%aTL@7=Xc1P`RE@%G%_A~tFd_+j2L$f zy77e1gOj3%*L87pV*Ab?+z%sRhXz`Enj_b1J3B--xP6|OJQIiTQJ=x$({AMwqT^S9 z5luRte%+0Jx{UeyO#^MTkAba zU~&5sFcj&~liQ3lS+gMcOh4;6vboMoLq&4wrHMti5@%X5_EBuRo_2B z58VA0H%ME~Tf5Mvd2pMj4*#I`7;3m-odcra>ECf1-@RwpEb(FAK++HCZ)Sc(n_}{n z(JzXk_->L!s7#I@5aAoaQFODMQ z!=yH&9>mW7b#VTg=VoK6fuDvFxP2j4+%CFh`*EJPSul2Ll>XG-HY_#xTf3OFkK27E zeA7l}55YDij))SIA_l}F2tg0}hMJ!?9%>faX;u~Y)C43zCT!Ju1=BEGaWiAYYT=-x_M4qB#^Y5~Ytt>&pr6x90MzP=j32--ZzC zivDJ54xXe|p(k;ITytI)~J1vTXml+FS%m6rUTo$>k(#J<4e9&`?{%TV*l?OU`QVvrEJuE~E+S{?v{i}ZV! z6k+JM3zJb4itYA;hY8D|A`N=APmBXgXM+zr`*Pga4VBUCfjP*jbwyDWMNzz)zx9ez`gqk-ssI20 M07*qoM6N<$f+C{gasU7T literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_accept_legacy_1_0/00002.png b/tests/snapshots/nanox/test_register_wallet_accept_legacy_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..037a81b226e3b4fcbd3116014399ccca4d29f532 GIT binary patch literal 749 zcmV00002Mc7BZCa?UBG<2a~H zfA&E_q$vKAe+aJOtd_E4u>w*K39q&x31M>1B$1cwa z$#mGFf!3b;$XO0~2cME0u3D3>JDAE`=f2G+wd&*7IY4za`FyCpx%%Bfj5^ZLMZKn; zHmO3mCWqHFry$!HY9x;V3XKPY(#R3w!LMGi;-2Y9qe^?&hL^NMP_apQy{DOEY1AhC zmiBAD0@n_ZVN}DjL!B*Cm#O-8n2bNGMHR(s(K@7L$m6}7zL}pWGdmkZpDSF`F6<8YH01%ucQXtwN|Sk)LEdwkr- zo5)Qth$|Nq%CAQ0jxDmwC!UJ2WSqgEUrhI`bsXX&S`qqXjX`OE>MAsSKeKOP$=oqA zN@%_28soTr4V9I0P~$?}{RyGrWUG@o`x9HC11zpiPhYk1hE&>419T(@yVaX8(4Iu* zpqD)`;o7azZ8iYu-Y5hbiwqkq<>|{SLu$Ul>#NOeSwxDGm)WerB>M-%a*yC zX)oa@#xo}>!FV}pdD-W1j{%BBISZi|d{Ppt@>h=nN2UYEC_vOjP7s+bn0J= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_accept_legacy_1_0/00003.png b/tests/snapshots/nanox/test_register_wallet_accept_legacy_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YD-I9Ag~E z0oQPw1B{5Ku)A%X=ZQV?7~lyG9tx1xUH%lqt!MxEX8ddq(l&b_PPG`WXqQC(Hxs7b zFCacrAkvSn>#GL^>%d1LF$>wjPsE;U7uuUKcFJdSVd|=lllWl0T(qdGU44ATQRKtveG(kzVhXF?3wbulQs!?>V!rjpRM`8f(9ZH3{Cb2JGR!*}rL;<`W62p_+aP zf3>%s+6g`~7susK{^IO!WQffvJynw*76>!80BNY0qBN*IiFnuaMKQwJy{7FbZq1F2 zaMvy<-tyuxbrkk0MB{W7P{Wt@%M|`%x~Fg2hH@Fwu0}<^Cy5Xh(1E7M#L3pq`&96y z2GCT@Rf;rNyDskDzpsklm2EH!{+%#?B1WH9!Q$n~g5)lnuJI{lKS#9z_J2Y$(6%39 z+rQ*I>^Fe6WN9kq*fMEEbk?8+tq;u#%R6{OH?K3hQ%u;5GpB~8KRGoT_x@iIucbbN jaZ}GvP)*Y`&1dlsdH;aUW$tj~00000NkvXXu0mjfVc+jM literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_accept_legacy_2_0/00001.png b/tests/snapshots/nanox/test_register_wallet_accept_legacy_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..f9f7eb594ed8d25058f73364cdbdda58346d6864 GIT binary patch literal 1027 zcmV+e1pNDnP)_dj#=M%1Qgcgr}>v-fC?u{%cnr*{qc{By_M`_VrhwCDL?bF&8NfOPEQx<1AE z|7k~Q^x0Zq29`ZtMAzqQ`2+_bS1445unH~Mm@y{VuZ zZcx-EJSF2@i-z79bg7d}LA?X|A+b7gNlbR+cFiIl^wxcp)f6@{^8948OG=&+c14fB2|BhC$}x{<-Wu3GUQK;eo+)f!I9bge8B#+ z%)oviD{5dyZCIP}L#OMK+lY1V=)rfOZ#-1>+tFSl6Tm)1`U-lByAIBDZUUS_>=ox( zTC(ACEU|X1deE)=)Eik%N0%co8*)A`N4M1UxPeeD<=B|=Dz6W9s@^E?Qdf-HIB=ek znE>z#Vs9ziw9%>|yFOU2G*)s;3+iA=HvW!fmM5}zrXjmGvdzzWhJt2*ITLW<=Je@Z z1ba+4re?OZ8GuiK+X{G-rJ8~3R%U1q#d!3&0gb=t#z=z{C%n7z;Ge<_az%d`N~kOP zi>W!-NoAp(I6ph=UM~b_Dx9cMpMYEp|2J`w;&VOeZ3RoOaN9c>9?bTqIDjPx$XO@hSECG ze$q<%`bur_00&ag-p#7`e$-N{D2n2X3H?GwEgc)&kbzjJo&~L@`nQ&biq(atmBdmh z2@1WI5Q~lP9$Ub^6#vSSB!N^3j8%KLi=p;i`-q4eVS*GfI$(U*I0>$C&QDrJvi51$ z))lMSHWK$vs18sc^ZutLB1&W?Q8mj^88TO(sAkNL$#iFw^ xF9ENLH`Q@#57^Ai-v_)c@45Diq9}^L&Mygwg(LQZ$TR=|002ovPDHLkV1iMy^=JS9 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_accept_legacy_2_0/00002.png b/tests/snapshots/nanox/test_register_wallet_accept_legacy_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..4d184932cf60d1dcb3d0e8faeb611aed99beaeb8 GIT binary patch literal 755 zcmVfFbik#(>3!~n(v{PUrc=Zz+{}3Q zgb*z>WSk}yf+?sdpbvrB5ldoRQB!s0agVh;z3_M#Y061=05q3f1VfCoINdMa)tf|C z0FAjl9?uf?NZRM6rWsr~9ER!fi)_M$JKdN4^KNXKNcY>YYO0iHb7Lph+AFL0UTx<+ zaajY0eA)t&(@Wm_N`K&yAX@3u~v>W?S!QK9LwI zMRcKA?@XptV9I5+*^l4dBY{~IfPjfS2D4_Lryni+e61L1$}{S9D00000 l00000000000002Ifo}w|_QOQZhKB$E002ovPDHLkV1ga>X)yo* literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_accept_legacy_2_0/00003.png b/tests/snapshots/nanox/test_register_wallet_accept_legacy_2_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBZ=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjff+)&{O@Gzb z@{VGx*y{tzcysjW&|qiftj_@JIbf*V#ayvn1{j(diaQ??fvv{MlCE??{#DuYq!wWJ zjrJ+%8~^&ccL=bT*?n=*gC7}ypuCx^x5yW68QCSFBxNtIJ5Q=oK=eMDuu%=6e zNACY_K2m)$mons~Wb|0>{xWU?U53OM4@Z|F>znfD^Ctnmir5SSu$cqa0OFv;@=;ja zja^V6Qjs3|?D^pw5P)>De*pjh000000000000000003Yozi^XV@QF?avH$=807*qo IM6N<$f>%`^5dZ)H literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_0_0/00003.png b/tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y-Fl_{pTEAiB%)wC;(1g?Ft!Da3DFJr@UHOE~ z(NC$o1&;=5o&4eL00UMDFvH}$P6voJ!|J!uX$PZi z{&X1iifTA3g-krzLK`B=S|)~ifXZ5t4JT9tG~;Eg6tFUhG4SSLck^x8p)eHLc?YN< zRgI-$mi4e@;9bdEeh1VdY^TwPR3@6ou`thEgv~9{)6GfPDd^;ktiFDdMx^U4uTV;^ zYdZmZ8(_Ar6>USY4d@&&3P1cisqo!v24>xctxqw%Nq=V+pJ<;$KGOR|Q54_H@q@fx z$&^_Qu1=uGN~Qv;IeUGdOzN?Os7Wl$vDSIwMH*o#tveN^sti(j5dU2 z(xielgDGM3%*nK&4p81avV7BF@^=hwa@)-_yKP}rZwT7~sSDg&(KKQ+k=EU~gVXK@ zs)p(=%A_n!K@#vXM1s9PhnmMP@yj+Y>i~v3yx+{rpa01FZRmx}c_H8R$ih@0(xXc3 z#BG;W(#!4|Ffq3U%(ars6Kd-^8S;Q_n*Xi z|H^m5y$$#LC4b^mTO_<0YesaUjy9L8iIBNqNwb*pCz-u?go$jcTYWMcD$n;X;?rL@ zWp?f0wKk+lBy5#?ki?eTIEa*!gdJd8a-S-yOG-A{bS5XtSC_|ZW%gV$!zw4w##?hi zF7NzlkQ?_=5ZJm*k3Qc4fX#QqGK zWTBgyWz3FH_JCyYHDUBVyTf*aF*sp)D`Wo=D=w$jfY#!JPEi!aXOsL>9(-4lW<4V@ zkW*B3o7s@4a=V=cs?rB^+u}15Hd!*1lJPZ;-et0zQBKj8;9GX@=vIuh$!sHE3*(wM znGIEy*R!4~1qO2HcWgpba(AwJ2b@etNjd-r5#K9!xK;Mzk$suVXVAL5s@?@~(mRrg zxcD64&fQVxrOU$#czCL$vCU57_3uJ<9K=TRx1*Zd)K}(jl3dx8ig4$L&Dmz#`Uxq| zj1L=6X|3T!_*!|KQ?xy_I0LxmskH=Dl+~H^>McAqX1}f7kOvLg+_XJv+`+(iLC-{7 fQ4~c{d@6qdK47WcF0%YF00000NkvXXu0mjfzDD!O literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_1_0/00001.png b/tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c9b7dc7275b4037793c0e0919b85ef6067a6ff13 GIT binary patch literal 990 zcmV<410np0P)HAF$LD}k}QOXp*%+opvO5}4aF(^^p!MNt$*QEcazaqm3O z*4l9#{dIqvqZ{F-=qfx%E{Db{dS`fN%aTL@7=Xc1P`RE@%G%_A~tFd_+j2L$f zy77e1gOj3%*L87pV*Ab?+z%sRhXz`Enj_b1J3B--xP6|OJQIiTQJ=x$({AMwqT^S9 z5luRte%+0Jx{UeyO#^MTkAba zU~&5sFcj&~liQ3lS+gMcOh4;6vboMoLq&4wrHMti5@%X5_EBuRo_2B z58VA0H%ME~Tf5Mvd2pMj4*#I`7;3m-odcra>ECf1-@RwpEb(FAK++HCZ)Sc(n_}{n z(JzXk_->L!s7#I@5aAoaQFODMQ z!=yH&9>mW7b#VTg=VoK6fuDvFxP2j4+%CFh`*EJPSul2Ll>XG-HY_#xTf3OFkK27E zeA7l}55YDij))SIA_l}F2tg0}hMJ!?9%>faX;u~Y)C43zCT!Ju1=BEGaWiAYYT=-x_M4qB#^Y5~Ytt>&pr6x90MzP=j32--ZzC zivDJ54xXe|p(k;ITytI)~J1vTXml+FS%m6rUTo$>k(#J<4e9&`?{%TV*l?OU`QVvrEJuE~E+S{?v{i}ZV! z6k+JM3zJb4itYA;hY8D|A`N=APmBXgXM+zr`*Pga4VBUCfjP*jbwyDWMNzz)zx9ez`gqk-ssI20 M07*qoM6N<$f+C{gasU7T literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_1_0/00002.png b/tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dfbf1104da723a17c6b32d65ed64b4c504464ac1 GIT binary patch literal 782 zcmV+p1M&QcP)lH2iViv?u5MUU?kl*Jsm-~?$F0ioQIn{+&_-kkmPCe}JO)m^=0 zo;0XVxFmC`3_twfN!G`o)zkBSyHabtuVg-?AF+D9m0**cHhoVrv>JD>la8{&P#hCxw$i2 zI@l#q%9Vtoy#u27!@prR-hF21EV1F-Kz85C-@^Qe4$a9|&OQJDd^am^K}*mxGtNt) zKNH!VTS~{SCX~hcB%&ud&yh%#9$iYu?v}CY#$i9iJh8^(hz5ufwzN_TD4xhPZPo`e z^XS#r!7zWPt8?XosB~UQ-|?otVas6}lGZD}an9y2Am*ViQ3?vN6=1f^4Q%L)#2TNE zaTC4>CUND0LiyDw>Ai(_`NUH(mW)%FjEm)wwU3K^MC-PGUZc=EU^okA>{s$Ftf(u7 z?-Ek4wa&QiUqg8%SE^iy)1MHGAlseHIiJ`H9bj>DGJVCy2U2M#9gs*4rp;TR=u9GW zGRhv9a7~-^HXnfU-dzY7lMEkh`|WBPU7-DDGJFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YD-I9Ag~E z0oQPw1B{5Ku)A%X=ZQV?7~lyG9tx1xUH%lqt!MxEX8ddq(l&b_PPG`WXqQC(Hxs7b zFCacrAkvSn>#GL^>%d1LF$>wjPsE;U7uuUKcFJdSVd|=lllWl0T(qdGU44ATQRKtveG(kzVhXF?3wbulQs!?>V!rjpRM`8f(9ZH3{Cb2JGR!*}rL;<`W62p_+aP zf3>%s+6g`~7susK{^IO!WQffvJynw*76>!80BNY0qBN*IiFnuaMKQwJy{7FbZq1F2 zaMvy<-tyuxbrkk0MB{W7P{Wt@%M|`%x~Fg2hH@Fwu0}<^Cy5Xh(1E7M#L3pq`&96y z2GCT@Rf;rNyDskDzpsklm2EH!{+%#?B1WH9!Q$n~g5)lnuJI{lKS#9z_J2Y$(6%39 z+rQ*I>^Fe6WN9kq*fMEEbk?8+tq;u#%R6{OH?K3hQ%u;5GpB~8KRGoT_x@iIucbbN jaZ}GvP)*Y`&1dlsdH;aUW$tj~00000NkvXXu0mjfVc+jM literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_2_0/00001.png b/tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..f9f7eb594ed8d25058f73364cdbdda58346d6864 GIT binary patch literal 1027 zcmV+e1pNDnP)_dj#=M%1Qgcgr}>v-fC?u{%cnr*{qc{By_M`_VrhwCDL?bF&8NfOPEQx<1AE z|7k~Q^x0Zq29`ZtMAzqQ`2+_bS1445unH~Mm@y{VuZ zZcx-EJSF2@i-z79bg7d}LA?X|A+b7gNlbR+cFiIl^wxcp)f6@{^8948OG=&+c14fB2|BhC$}x{<-Wu3GUQK;eo+)f!I9bge8B#+ z%)oviD{5dyZCIP}L#OMK+lY1V=)rfOZ#-1>+tFSl6Tm)1`U-lByAIBDZUUS_>=ox( zTC(ACEU|X1deE)=)Eik%N0%co8*)A`N4M1UxPeeD<=B|=Dz6W9s@^E?Qdf-HIB=ek znE>z#Vs9ziw9%>|yFOU2G*)s;3+iA=HvW!fmM5}zrXjmGvdzzWhJt2*ITLW<=Je@Z z1ba+4re?OZ8GuiK+X{G-rJ8~3R%U1q#d!3&0gb=t#z=z{C%n7z;Ge<_az%d`N~kOP zi>W!-NoAp(I6ph=UM~b_Dx9cMpMYEp|2J`w;&VOeZ3RoOaN9c>9?bTqIDjPx$XO@hSECG ze$q<%`bur_00&ag-p#7`e$-N{D2n2X3H?GwEgc)&kbzjJo&~L@`nQ&biq(atmBdmh z2@1WI5Q~lP9$Ub^6#vSSB!N^3j8%KLi=p;i`-q4eVS*GfI$(U*I0>$C&QDrJvi51$ z))lMSHWK$vs18sc^ZutLB1&W?Q8mj^88TO(sAkNL$#iFw^ xF9ENLH`Q@#57^Ai-v_)c@45Diq9}^L&Mygwg(LQZ$TR=|002ovPDHLkV1iMy^=JS9 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_2_0/00002.png b/tests/snapshots/nanox/test_register_wallet_accept_legacy_v1_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..878bfd46ac20475fd977c0b85a8109643602d543 GIT binary patch literal 773 zcmV+g1N!`lP)j4*&p9W3UVAHjCmettdAQn!Nv& zEym4p>)c7_U63u-c}OL-hz05Tz;7Vz_Mt+%MZ01gx?wbGI;R}A4f&%{7O$g452$~< z^WwnKw0Vx%%^bHr<+k{d`=EJ6+ow*NS0;eol23iHzMw6h6E!s#woZ@Dw%yfwBC&K8 zF@@&6vzStWOAf0;J^pa7Bqk{V0T+1=t{QzFJzDztTrtX&r`LHiAb>az?lV-(++4Z0 zA@m90gU;Un@pcVu;@brwEe9Nb#iNpZHJ->^=Iza=-4vzyqZ&$%$YT>A+e$Vc*sb5k z7H2l+;Ng5q6?!IvAR`C2vLU?n9qxzW6P4#m=qrylTfg?|>k*@4^n9pfMbFSNqva-c zo`kD(@2?5W>f|>|?YWch9{8(UkAWEp5PKpXx&2ot^jk$gMR&G%lxe&1JI@zmlpud$ z2}t@&pWp5sT={#zEXLojCA%?vxR0F)DEhw$?DZ;>)HOiFdEePBs`R^Ma;QEn$8i=n zmtVo=5(GZ<7qKUdeEFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBZ=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjffQ@-BVYspA478kA)Fe@{tN5Q(THDFFZg0001RoG(XNrIeIX&beNb z+t;170(}`QB!8$yVV4oR-5X7hC8dGvEDh)q3P4(Qg2pgA_HYSSk zaVooeAQilW+4qLd0CCMp{nyI45KYM;mBlq&lux!Fyty5{2}x0qL9j3Bb6R~{?UNIN z(s^Z1VHL5gJ48+hz0O-VNRKxDiNFVu_(vgNXE4a{!B)-qLpc0oLh@~;BDB40%*F0gzoCxgs`4`KiS0000000000000000002+;ujA%7u?5| R?;`*J002ovPDHLkV1nIeJ{bT2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_accept_sh_wit_0_0/00003.png b/tests/snapshots/nanox/test_register_wallet_accept_sh_wit_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 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 bMRACKuT^x7h}6gV00000NkvXXu0mjfr~B&D literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_accept_sh_wit_2_0/00001.png b/tests/snapshots/nanox/test_register_wallet_accept_sh_wit_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..91a9f0afa436c3feccf439cffc0b700b15b0c5d9 GIT binary patch literal 1058 zcmV+-1l{|IP)4bF!o4XC?dCnH4K2BngKeP&Q{#&72AN}JS<8?mJ+}s07fD*fKl`kRx zFHIDVK8giYL8=df=z6}w$JqfIp~&qV8d$=HErs-Id1QoFfHIn}!?WBRecILO%1Of< z6gGsHWV|bAprMn}L^1`<2H-;?I&w*jHe@!9M%>BPT*_<;3L!iJ(vTehN;Qg`)BU>< z%d7x6=X!t4I%p+1GcTL9Oxm!rzdowD{8X0NgeR_aKljh8(4+|W+jP^gQJT$_om?tM ztY~EDc~41GIs*5ADE#3+!B)QQLa?NvN3JhCa@+E=s1tsdF8{>QZ!{W>-v;{>WS+rM zW#uH}@!;`^N>~XKwZ)c8ex%Au7mBB94Tw!~YfYH5CR7VyYwFeXuK8~gl@mwxB6dAc zHC(@!p_rB8bdczSn%5&IZfQB931(Lqi~IyggE*nA(~B|tm-VkVfH3i>73`;FKKpwmdB(fD9!zYT@y&%ATN zkDj9;dvl(JtT#y*pjT+;1=WAz^f;skag)4(s0xwGAR*42qA)otTEPc=Ybm@AWe2=YB*?zs1l7wPYq)!ghsIn*^Q{|aQ9jQ{C2RC-^T zt^`W*GKjA0D|~_ju&YpYn_VMYKxj89okjBs0N#`X&h1t2TQB6Uf@V~m;)ZZF<6Qya zS_ouI-;X5iCINe)ym@$Yi)Y5^8wOSkmd;}x$F=CG0Wz3zj;@$(z62O zoa6CCmT*K8pO>m;SmEwzm_C0!n{ehz_j&)k8mlJC{kB`RRBE$1*vU)n$|}28 z9GHgpfL7w+pK*n^y%0=Mbj$0DPv5qDFXIM3WytU7eL@KNZ%jJ{;Q~=I2Q}3mIhBH{ z22j^J1lfbM$`-iXZ>GA-(HXsc^HH!46}`DzSSZ^7e{{;P%orA@0jGgOL@y5p%l6*6h? z*`@3^X6TF9T!Nosrj(MNLuCRskGAxUY=dfSlKkEhF)5yfbPDS0-G1J(;S5fwvyk1+ z`qYDQS1l+HSKPb7FMA$*GQ~kH9c^FdA2|WZ9oN%_I(|HVIBzfqAIv>jh+I^h%sE(! zb??G&!a?lGtaN@=CtcOjaRzlyimp|+zm6;fRE^ZF-I?9JI=G0dVtuupR_4@#ETsqn zaXLN9RDgqccje!nQaRIYEY&Q5quNIo-N5t=MlxYJsDPc)BdF_mA9XDtV%&m z1S?!pI0bf2`yl8oiA=RK1ua|wP36pBEqVi+E!nyP;$s`HYXa4!J^9l%;RFwG4~h5N zdBi6CpIP`GkUnWG6G8|fgb+dqA%qY@2qAFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBZ=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjffo|^-QqH+t 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 bMRACKuT^x7h}6gV00000NkvXXu0mjfr~B&D literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_accept_sh_wit_v1_2_0/00001.png b/tests/snapshots/nanox/test_register_wallet_accept_sh_wit_v1_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..91a9f0afa436c3feccf439cffc0b700b15b0c5d9 GIT binary patch literal 1058 zcmV+-1l{|IP)4bF!o4XC?dCnH4K2BngKeP&Q{#&72AN}JS<8?mJ+}s07fD*fKl`kRx zFHIDVK8giYL8=df=z6}w$JqfIp~&qV8d$=HErs-Id1QoFfHIn}!?WBRecILO%1Of< z6gGsHWV|bAprMn}L^1`<2H-;?I&w*jHe@!9M%>BPT*_<;3L!iJ(vTehN;Qg`)BU>< z%d7x6=X!t4I%p+1GcTL9Oxm!rzdowD{8X0NgeR_aKljh8(4+|W+jP^gQJT$_om?tM ztY~EDc~41GIs*5ADE#3+!B)QQLa?NvN3JhCa@+E=s1tsdF8{>QZ!{W>-v;{>WS+rM zW#uH}@!;`^N>~XKwZ)c8ex%Au7mBB94Tw!~YfYH5CR7VyYwFeXuK8~gl@mwxB6dAc zHC(@!p_rB8bdczSn%5&IZfQB931(Lqi~IyggE*nA(~B|tm-VkVfH3i>73`;FKKpwmdB(fD9!zYT@y&%ATN zkDj9;dvl(JtT#y*pjT+;1=WAz^f;skag)4(s0xZ1=Mw{J_Rzjod4=}R7PL9 zt^`{0GKsG1D}9m;u%l3^t)Y>3Kx*GII*Z#Q07O$ZxZV$=Z=+CECEW;v;-+vo<6Q~i zdI)5aE>$|GplU!~bYw^0BxVhTrd7l<-rDKK_6L}zlHBfqR>%$k5VI_v?ia7>Aw45N z_Bn1(W(a2_@qQ_E!wPqI!}R{^S%fRsbYIuc>t^VpTyMKgOQUu+2P=8&zVgbh)p*_m zI}Xf^bHH8l>0fb$mmLVE7<%OR;?uV*Kg+noyEOSXMxPKu{u|SFLAXFv%tlS!&+JM; zRRfs2+XSgWdSwe-?)KNJTCpQ?D-)p%mUpcvF?q*6N;>bpf@>|V^1iAJItjZ?a=o00 zwK8bvd?ByZ&q0T+l4)6wQ(Il*zEKI{%7-}^{sgaQ^oNcCqqjzLWvCP(ZRe-*(wIq; z@4l7w&J2AKn@jRj%#>2nJ_H@GxV5csWD87Vm*n@Bj7#}hNKZk1+U@5po6cZ|It!_G z)~6nfJ8D6BI0)~8xU6|`XPS+AYis+I|H%$0Zo77C>iG72bACY|{9&G%g~&w^WcI;Z zc{03iaiVqlw{-?u;;}9GxUt$&$jw8{=4s`$(1fLM2ukxENu=2)I?YoRv7^Y~smVMnJx8 zV67fE-CC3J`nhJFoD2x}4q3J{8+{S`pG-IhlpXfMgb+dqA%qY@2qAFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBZ=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjffQ@-F?6sbc{V6?K!m&ySt#ieI28Y(fA400000U^`!qZKae#2r|s24@3YJG7ik?Zi7Z;Vw$2w}^!MVPOhz+x^XXIV>{@+=-n2a#Nxk}Tq6VLjnG zPC2;pGgS1&YZ-+Vd3`|{f9x&oTI{5q-W@O=2Xt-!Nnde1G0?R$x){uc@~!P9T&sSN zb=nX54k&%1=pVbXwHs2qE3jxk@6mw?(j8#5cJtUN4Mv2;GhA%{N+~PV?dVlV%7Lsl z~O~?iaJdL}1A)mZ1iZ50*x-UK}vMg=KAuA&gkse5=Ra z(evSf3@KHTk+sw#Z+W1jQ(kB*L@CV&B5XInKu1RmaPqYj^2VI_aIcOAICcgM^9o0? zh?y*=rS6PvUU3bb+3)<8*?bEa%(8Pa!m|MY0000000000000000000U$S-2d^jFF_ Rb{zl!002ovPDHLkV1l!JFqHrR literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_accept_wit_0_0/00003.png b/tests/snapshots/nanox/test_register_wallet_accept_wit_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y` zm9nrJvL3b!yeoOjuYg*FaT>J<>sa%+UzsNtVYwwbtxm#DK__Qq_4Si9B3y5IfwJbh zv=e7<z;%sPh zQ+=|;$;mh+p=!Sx9%!B9rF^T-_KS6xeAG047R6a|{XKG`Ij=<)qN&zHu9am&SVuB< z5W50$q=Ye{M&b}`%aky3a&=nnBrJbUDU+>KzOWg?aF}on4eM>6aGLX3ih!Y0!g-nT zDZUD|AX0@IH+%g5BZZxqRk7MCE))Ko5GTVBU0l8rDbExVklM@YdoWANbxQB64 zr)e9^gP2t2+y_|Cs^%j6;j0-DqwEilhfHpDsJaQK4J9kg4#007`r2ws*0fAq$tXz6 zr5x*;WutcGv@nU=o^T&Pe(F>ZTtU~4UhZ|m#Sgi^1CZMt-Gt+uHUEU13@o150T%qE zymA%e%td}r7~l5wQ6nrc#Ea5sMmg!dDt@`~$%K$vFI~;mzVM(uw=?0Y^zFaBpHf=m4pV zRP0>XzQq4|t3Ny3dw14S9m6-V?tBs~MF6gc!;~Sv2urbv&# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_accept_wit_1_0/00001.png b/tests/snapshots/nanox/test_register_wallet_accept_wit_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ef611217bef32c7b5ea1d9ed8cf33958cd277679 GIT binary patch literal 1035 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_accept_wit_2_0/00002.png b/tests/snapshots/nanox/test_register_wallet_accept_wit_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9e49cd05db6b930c31f4678c0682701615128c3d GIT binary patch literal 734 zcmV<40wMj0P)Sz@<{~yZ6b^L_lm7-XUB>?m8>+ou zm|h6f$74#2L$qFZr|eiKaXE~TsJUIBqO^?>Dl)BDy7(iLb%(<$y0Zf3l5 zLbw(NGN4JqUlA`r7Ar~Bkxy~)T5 z&@qq4gDhc0GCnUg&9K75VOSo&kxf`Q)4lAU=gX#vdcPf3t(Dqr9_-|`_k~qyRxCiutPk+G`PP-5+QFP1o#b<0=zL$A}pEBfk^gbbk{5RUCAn?4naQAPX`dy{g zPTcaiVR1IKh0o@hb;>QsUaHGJ^Yj+u>_e9^u4JuqSH(bSM1U@0?j=jV49@SmVQ_P? z{UbK?8Xr&XxbxeN_F&9wlCE$(XX6PKOnjs_eBHPw>6!|mHiQ~erHEd}(gJ>$mN{OV z>0RJoCfwBw4k0xF8(c0&{N)Zi(3qS(PqbhXl}?t zL})mfF}Rd>a&NQjF))}~lgV=44B0o~C5&C8x*VEzQ%eef9#8RnK7e%v5s+(b(WG`m zJiOnk1PkIJ_vB?PEN9v`%~nX^Qy!Aj^v$)P=N!xhya>94oA-dUpIhlU4*quUqxOIs z8T&Ah7K6M1*mZ3;Or(ao$|=oMlerEEA%qY@2qAFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBZ=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjffYuPbvL8++OWF&&ZiQeU(9FQK4IG zEvofP<5oS?hp4bct^kJG#r#LoM$4d~l0DVgnz`&pH7k0WW1U==sdlaar{!3}QA^b! z9PU_b7=izX~o(3UNfhZ(v%`<*+gDTiO~=pJ;rkGByr|4G|QG~Dpfot2QjV95Q`*aYzwaA z)Sat8Q^Q}fl+)O-w~GFNOD2D(;87lUf3T-s5_t>PP5 z=lx`_fI26t`LRo_eL&h>fyeu_Mh6DSSAa9xx7$t~FlMao;cEStq-+%TV;5nP1DkEe zmTn9|{qyq1y|FX&#Q9Fx5B~La>k!agbGX0WG5{fiQYtyxSto)R?BuyD1SB_3MhuoB z-5dFC=mW3;NL5E_K1+{LpT({8cqsMq literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_accept_wit_v1_0_0/00003.png b/tests/snapshots/nanox/test_register_wallet_accept_wit_v1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y` zm9nrJvL3b!yeoOjuYg*FaT>J<>sa%+UzsNtVYwwbtxm#DK__Qq_4Si9B3y5IfwJbh zv=e7<z;%sPh zQ+=|;$;mh+p=!Sx9%!B9rF^T-_KS6xeAG047R6a|{XKG`Ij=<)qN&zHu9am&SVuB< z5W50$q=Ye{M&b}`%aky3a&=nnBrJbUDU+>KzOWg?aF}on4eM>6aGLX3ih!Y0!g-nT zDZUD|AX0@IH+%g5BZZxqRk7MCE))Ko5GTVBU0l8rDbExVklM@YdoWANbxQB64 zr)e9^gP2t2+y_|Cs^%j6;j0-DqwEilhfHpDsJaQK4J9kg4#007`r2ws*0fAq$tXz6 zr5x*;WutcGv@nU=o^T&Pe(F>ZTtU~4UhZ|m#Sgi^1CZMt-Gt+uHUEU13@o150T%qE zymA%e%td}r7~l5wQ6nrc#Ea5sMmg!dDt@`~$%K$vFI~;mzVM(uw=?0Y^zFaBpHf=m4pV zRP0>XzQq4|t3Ny3dw14S9m6-V?tBs~MF6gc!;~Sv2urbv&# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_accept_wit_v1_1_0/00001.png b/tests/snapshots/nanox/test_register_wallet_accept_wit_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ef611217bef32c7b5ea1d9ed8cf33958cd277679 GIT binary patch literal 1035 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_accept_wit_v1_2_0/00002.png b/tests/snapshots/nanox/test_register_wallet_accept_wit_v1_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..d3ea50bde4a2334a7664ee90b9baae02f1560417 GIT binary patch literal 760 zcmVO^7d?(++qQk* zr7S=8A)UBgmBTILI1V+zKrvTFdI0$zQFq+>`-|;;&dN7yPzH4slivn1P0IgtD_UA# zsjdWS^5r5r%jfa|Ct!D>>Q+os)&xttY0z0T?|{IX<%Fd^wZ652bOoxB8pU10X~a7h zgsWj71F9r+h9DWBEOe}nz941?N{3b!N3^x!#rh)%Qy|R_sF`dp2*fOl!~Nn@J*8&{ zls=E=gKS|$GQKaRYFOcJH%#|m&mkyHK zxN*cZyaQUnm%rc&FMAM78R(Yhi%;LNd@th)KV{0FXnjHm`ETU6An?98@$^q`{qCSv zPh9i3p}L#e#AkYE9Wo1YmX>Lsaaxmcw$P-ED_QH@9ik&OB0vu@_mNdr2KV=}VeoRX z{UbWGDjzTHxbxet_Mp#elCE&PX5$4FEPSLleBZb?>DmxNZ3;DpQW356g$4XAEo;2C z(wo4)Ot`xloWfEEY;d|9v6nmTV8q2S1RQSYljH}XK8mgPM-9CLK+X2|uZgjM>K_q9 zhI18g<4>R`E)#$^Pt1E!_NMh(c{Pi#%V?|X=KuE`Fqmp|+Fm;O=Q!XwIoj1eASE|M zAtEG3rVlRViRMky8y!m5njmSrDJeFb)i2>D`kqToW}1?;7-6yl$_c3QSpf3~A|TIK z)ui?kJiNb22{uHW#|<{YLmtwaiD^q)leR(Q?58TkN7-&~q-}g1b@F_AO;> z%@h`$0n7fZO4%#bswO6tL17AyK7^a-J4*u}tYN+b><+aDCXy?iWt22%?DhXtAcPP? q2qA(IJpwfV0000FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBZ=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjffQ@-F?6sbc{V6?K!m&ySt#ieI28Y(fA400000U^`!qZKae#2r|s24@3YJG7ik?Zi7Z;Vw$2w}^!MVPOhz+x^XXIV>{@+=-n2a#Nxk}Tq6VLjnG zPC2;pGgS1&YZ-+Vd3`|{f9x&oTI{5q-W@O=2Xt-!Nnde1G0?R$x){uc@~!P9T&sSN zb=nX54k&%1=pVbXwHs2qE3jxk@6mw?(j8#5cJtUN4Mv2;GhA%{N+~PV?dVlV%7Lsl z~O~?iaJdL}1A)mZ1iZ50*x-UK}vMg=KAuA&gkse5=Ra z(evSf3@KHTk+sw#Z+W1jQ(kB*L@CV&B5XInKu1RmaPqYj^2VI_aIcOAICcgM^9o0? zh?y*=rS6PvUU3bb+3)<8*?bEa%(8Pa!m|MY0000000000000000000U$S-2d^jFF_ Rb{zl!002ovPDHLkV1l!JFqHrR literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_invalid_pubkey_version_0_0/00003.png b/tests/snapshots/nanox/test_register_wallet_invalid_pubkey_version_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBZ=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjffQ@-F?6sbc{V6?K!m&ySt#ieI28Y(fA400000U^`!qZKae#2r|s24@3YJG7ik?Zi7Z;Vw$2w}^!MVPOhz+x^XXIV>{@+=-n2a#Nxk}Tq6VLjnG zPC2;pGgS1&YZ-+Vd3`|{f9x&oTI{5q-W@O=2Xt-!Nnde1G0?R$x){uc@~!P9T&sSN zb=nX54k&%1=pVbXwHs2qE3jxk@6mw?(j8#5cJtUN4Mv2;GhA%{N+~PV?dVlV%7Lsl z~O~?iaJdL}1A)mZ1iZ50*x-UK}vMg=KAuA&gkse5=Ra z(evSf3@KHTk+sw#Z+W1jQ(kB*L@CV&B5XInKu1RmaPqYj^2VI_aIcOAICcgM^9o0? zh?y*=rS6PvUU3bb+3)<8*?bEa%(8Pa!m|MY0000000000000000000U$S-2d^jFF_ Rb{zl!002ovPDHLkV1l!JFqHrR literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_reject_header_0_0/00003.png b/tests/snapshots/nanox/test_register_wallet_reject_header_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Yj&LwL#RobX?V zbQiII^4uMl|Z~1l7yy12MZ$b&j z?TtJM^{@JVDT&uHZn5nzWh-TPv_J7m;jgq0f(|YbTZHdAM)myZxO-=(=&Jp4l55=A zUQcBF*M05wg}=Y7bG1(&{&siyl(&8#-KTdql}}rLm3hWhy}m5glJN5fpDsOd=_5x% z{HDvZre)46&g0e%{pDoXaPf-VTe-XJSGLU(Jj!tDNp8H)+;exzHoZ2kko_Ba_xXNR zr;WUGZIbufwyah@qN*6%Wc!qrE&9UV%v{IGH{4)eXE1ondwSC@^_ATTjUX{kS3j3^ HP6#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBZ=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjffYuPbvL8++OWF&&ZiQeU(9FQK4IG zEvofP<5oS?hp4bct^kJG#r#LoM$4d~l0DVgnz`&pH7k0WW1U==sdlaar{!3}QA^b! z9PU_b7=izX~o(3UNfhZ(v%`<*+gDTiO~=pJ;rkGByr|4G|QG~Dpfot2QjV95Q`*aYzwaA z)Sat8Q^Q}fl+)O-w~GFNOD2D(;87lUf3T-s5_t>PP5 z=lx`_fI26t`LRo_eL&h>fyeu_Mh6DSSAa9xx7$t~FlMao;cEStq-+%TV;5nP1DkEe zmTn9|{qyq1y|FX&#Q9Fx5B~La>k!agbGX0WG5{fiQYtyxSto)R?BuyD1SB_3MhuoB z-5dFC=mW3;NL5E_K1+{LpT({8cqsMq literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_reject_header_v1_0_0/00003.png b/tests/snapshots/nanox/test_register_wallet_reject_header_v1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Yj&LwL#RobX?V zbQiII^4uMl|Z~1l7yy12MZ$b&j z?TtJM^{@JVDT&uHZn5nzWh-TPv_J7m;jgq0f(|YbTZHdAM)myZxO-=(=&Jp4l55=A zUQcBF*M05wg}=Y7bG1(&{&siyl(&8#-KTdql}}rLm3hWhy}m5glJN5fpDsOd=_5x% z{HDvZre)46&g0e%{pDoXaPf-VTe-XJSGLU(Jj!tDNp8H)+;exzHoZ2kko_Ba_xXNR zr;WUGZIbufwyah@qN*6%Wc!qrE&9UV%v{IGH{4)eXE1ondwSC@^_ATTjUX{kS3j3^ HP6#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsB3`I#QH}UC*P4tq%O~+|USiSp3EMu6F;W*N^0UNi-glZIDeTiN9n=_OZa|-gWSm>lENm{1 zd1*fb3fSsi{{(KX6r^S+`&4F1EbNQKn!994vrwmsw)U`o1}H5@y5Mf!np2N=lFITwT2gDhDH3F|cTSmZSTv<-RS4tE-p+Y4`3O?GYVD^39b z0001h6=rJagiYhEnv87R4pw1jE}29HRl1R zFd@*F17N-gs~rx9`e7M0U=ua9tz}di$ays})dnXTxuxy>r1lR4aBIKnJX3QY%oiM8o z<|*u#PxMx=Up8w(OV;epl+tWyJyoo{O0Uf}aUDXYUgnew%v0`4n6@pFTcHLrw?^U=-V?|8V^9nbkoSCG|u$R>kXyZ-MC-*a8(!f+YX|fGv2;zW151eSOLRto$yBl@(J8t9NP? zS?Xm(Lwz#x)@e|8G}lm_SgZxPww%>acMDA`Ls0GiG#Hj|qM^F7UJaGSFW16%&`>ve z2`k0ani$#a#6GbWykS09mcJ6#hoBGVbN@a-*g60J001-i1z$qYoPYU*2mk;807*qo IM6N<$g6tqhmH+?% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_tr_script_pk_0_0/00002.png b/tests/snapshots/nanox/test_register_wallet_tr_script_pk_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..c4d79c7ec7ec55f382ce2988ba916a5451fc8ae3 GIT binary patch literal 544 zcmV+*0^j|KP)F475+P?F&T-ev2eNaVIYLS?W zs{h`2iyIRl)Qa|uWNstw_^ zu(e@W9Dr?xwv8FBcy~4U5N*;6A}|G={|7joC$p)eyU)Ig{?5l1wtEcr3yVb^6#dK5 z$nwkpPiC-{ObF}kCxp#Sf}76)?NHsG#ihS^bI9SNgpGL6K}=j3sSh3}%a_3=!bU{> zA8^sGKx2!+?!Eu@!d%$0+6~<9dSG~P8XNM|-K4SDcLIo literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_tr_script_pk_0_0/00003.png b/tests/snapshots/nanox/test_register_wallet_tr_script_pk_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y` zm9nrJvL3b!yeoOjuYg*FaT>J<>sa%+UzsNtVYwwbtxm#DK__Qq_4Si9B3y5IfwJbh zv=e7<z;%sPh zQ+=|;$;mh+p=!Sx9%!B9rF^T-_KS6xeAG047R6a|{XKG`Ij=<)qN&zHu9am&SVuB< z5W50$q=Ye{M&b}`%aky3a&=nnBrJbUDU+>KzOWg?aF}on4eM>6aGLX3ih!Y0!g-nT zDZUD|AX0@IH+%g5BZZxqRk7MCE))Ko5GTVBU0l8rDbExVklM@YdoWANbxQB64 zr)e9^gP2t2+y_|Cs^%j6;j0-DqwEilhfHpDsJaQK4J9kg4#007`r2ws*0fAq$tXz6 zr5x*;WutcGv@nU=o^T&Pe(F>ZTtU~4UhZ|m#Sgi^1CZMt-Gt+uHUEU13@o150T%qE zymA%e%td}r7~l5wQ6nrc#Ea5sMmg!dDt@`~$%K$vFI~;mzVM(uw=?0Y^zFaBpHf=m4pV zRP0>XzQq4|t3Ny3dw14S9m6-V?tBs~MF6gc!;~Sv2urbv&# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_tr_script_pk_1_0/00001.png b/tests/snapshots/nanox/test_register_wallet_tr_script_pk_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ef611217bef32c7b5ea1d9ed8cf33958cd277679 GIT binary patch literal 1035 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_tr_script_pk_2_0/00002.png b/tests/snapshots/nanox/test_register_wallet_tr_script_pk_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9e49cd05db6b930c31f4678c0682701615128c3d GIT binary patch literal 734 zcmV<40wMj0P)Sz@<{~yZ6b^L_lm7-XUB>?m8>+ou zm|h6f$74#2L$qFZr|eiKaXE~TsJUIBqO^?>Dl)BDy7(iLb%(<$y0Zf3l5 zLbw(NGN4JqUlA`r7Ar~Bkxy~)T5 z&@qq4gDhc0GCnUg&9K75VOSo&kxf`Q)4lAU=gX#vdcPf3t(Dqr9_-|`_k~qyRxCiutPk+G`PP-5+QFP1o#b<0=zL$A}pEBfk^gbbk{5RUCAn?4naQAPX`dy{g zPTcaiVR1IKh0o@hb;>QsUaHGJ^Yj+u>_e9^u4JuqSH(bSM1U@0?j=jV49@SmVQ_P? z{UbK?8Xr&XxbxeN_F&9wlCE$(XX6PKOnjs_eBHPw>6!|mHiQ~erHEd}(gJ>$mN{OV z>0RJoCfwBw4k0xF8(c0&{N)Zi(3qS(PqbhXl}?t zL})mfF}Rd>a&NQjF))}~lgV=44B0o~C5&C8x*VEzQ%eef9#8RnK7e%v5s+(b(WG`m zJiOnk1PkIJ_vB?PEN9v`%~nX^Qy!Aj^v$)P=N!xhya>94oA-dUpIhlU4*quUqxOIs z8T&Ah7K6M1*mZ3;Or(ao$|=oMlerEEA%qY@2qAFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsBss-6Z!vl6TpUY|erZu%f2@-e0LfP>32aO$h)10001h>3j{>m~&1k9mi3w z$^~9Y#ovG!O)zwnn+Iqn#00000 z00<{Pv${FIbnj`$s-4HomPOdwKLEZ|gp?qxOX|YrsemHW%x)4fi(PI`Y6kCMvlk>= zCnfI`Cv+k`8qIW-Ug)YNHNdFBa>3Plb=v!=&_4pE!5_D7JuWMAI_u7cM(4*RbH*4b zXC_j{zuYBO=Hvm_oCkQ}-ccm&I$c)k<1?cP3p4AB+q&BCU2?@}hoOBN+u z@^;}1_jXJy`@BI*%XOTIAxa+gjZgRtWI6S4`KLR!`;36}ynBz(JXWEh2*e<|8Znr_ zg_9A3P&Re1B?)m^PGmY}ZK+Doy0Q`8{7HxAA(9a>7{3!Hc}gjrnb?ajNr>{qr;-p& z&J8NpS(~=&*%4z-vE#0#meLqw3l$zRA^-pY literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_0_0/00002.png b/tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..071d74207921de223cf91a0a7f474823370155ae GIT binary patch literal 728 zcmV;}0w?{6P)car@t$-VSpPCb^JL{KyB|2<`*f&$){lmY+%0002Mc0Lki)mlp_*LAgL z^7HlVX{gm))X$~rY(5iZ5z{wv2U%<7DyF%v>!9^ZDPNoQ^|tejoYZeWxl@T(S`nFx zqI_OilhgW;<+jWjKoGll{ZORQ653E({U%e3T=G&}6+P-mC)cf1Cue}O=G=lKw(4Ct z-LYIZBs<_WL;JyKJKm`Q-=bgi7O`*%3KF!txJDT=jUv8JBzh&^0miUf>^le0*B8&V z9C0gluHd3N;AN53Ry*UlOVB?74zM_WPX+*hCqfPe^*6joYi<;6Bcf5eZwI>Llg014 zVyS3oXWJkXIgf~zX(3iBg5;sZv|`Jy*hxoCcrkq-COeHZC!c(UUEGYsrFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Ye?)&qX9AUBma3HUtp~D(TjWq9}@@D2ie`fBd57dA8P$ zI`FYFSLH-JvK zJ`z)gFTAFA%BmG1lcc{Q5$nd_}zA(iCWd{}IUy8+wuq^E2; z6ei9Av-rcmV+wCb9l2YBCy6b~Z(z~vSB(05ymWwEk+!$Wk)(Ydo}m)hg=d=e1DDiY z>=Yf)W4g{Y0oMqj>aLf2?PQ-d%rmVdFZmbhOsTVG0bNH4mLj0L1A27hV)7@chx;QS zSH{oM7qNla^48)=`rFMD@fWdFj9Xznj%K6#odhQUE~i5b9-m(vho6!X_;}avTq^k* z5XdcIJy3IVtOxk9B8IYYpg)Z@Am>2wpP@U=+%y+Es5y9&^8S;Q_n(A&KjE7&+**V}zHIhP)aL1kiIMu_M-mHdBx!bg7y>ubf)d%>b zD%H@2{9syWPXO!^dXrvzsxDB5N4I~%W?ur1zjBaOzk1z4Y#4dg2ZmVh8%Ub~b05Ov zJu4|u!bRz)i2psEdXp|zEjx~8E1<&ysI1sdYhf07*qoM6N<$g57iG{{R30 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_1_0/00001.png b/tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0352ca6d0a2fe2838b910b42c26d865f846dcf11 GIT binary patch literal 1055 zcmV+)1mOFLP)_pdp65FToLHB&^6^E`W@T1|Uvh*HN0CSPfx^R0h8XhT)USB>@4ZpPxoG1s}C zi&YTQYy8hi1Ot{N(9(~?=lUEPIHYJ^9BIDsiF1Z&uhx!<*bD%zIaaklH(P(nG-{4U z5r?q0uta5$jG?)kS%S!NF^UMWa0?Ni@Z!i&@MtzC^yF$8>j16EjscL2bMq2^@mBJ} zGhpm(ToW@5-+0YvL@!7)@jijgN`C{Pv;sD;wXB^we?!)1VdMclVQ z-JSj9?SLquR=zM3-*6{bQqXN`4G}L{-{+Z^{rZak-qtUQqWDwTry%nHP7;d=W(-aq zlROdqOH!8jT#KV6231HHSzd^m$=x-PUChGm5HTfAhO4GY6-!AsOV|w+rSR(#xQI12 zX0>tJl&fD`WalN&rX%TKafXTHJ3wp14w$F?n#%tbEL0!B%3;yU?5>H?k4_+#`(V^+?6yL9YHv6Tbz2t;A~Z4Kt>CXt+l^Mh9qDc@oswMuhX(GK_XAZ#Ye!nK2~W=~+1| zl3aq02O!O98J07STW)1*l1>B#T91pN{A{v!4P)G|^O#Rr4_HgsJ6%sbck)pIly zZ_fRp7)>(<_!ZiDLG_k{7TLj!_u{#sa1c5<3XY+$pjnhJ?H(JZ0k?5ij@^u@fu4ZUIPUyzmRzEz?qilQhy Zd;^+sx882M*Rucs002ovPDHLkV1g6i?Z^NC literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_1_0/00002.png b/tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..d705c90af9583278f755999a9d2b4ab154848d1d GIT binary patch literal 769 zcmV+c1OEJpP)7;5T+EHRfVOdX{VHNnsn2* z0Mt-c2>8XsBSfu{-Kmr7X~Kp~^+=g6`WB!zWf#E^lWY$0H~SBEgYF$bSKA(mXY)EG zlUOP#+%>H-{&cmCHB{+7gbR1LFX!i7*)*Fd zKrepxFEoWWgpMg4ZL_vv#3S*2oN=?CANc3aJ^%pxE2iCo>>N=Nw=`DoNdy^*4Wql> zAy5s}Dw*R_@4iyij_Z(`oM_6}@@g+kjMm7XoW`q7>~xE&JeHWT-h|a5sa8%z_A=N} z{)3j;3-MG0C6m{8&*H0*)Y*0^ z`;CdDqZeUhZ=~1>t2Kqj0&E`bl+R=i3!})+UcrnjJA#l@}WURqbncGG1wfjg*rQ&g>b{B>j@M%IWu%9B|=tDT#;DHhA^^fD(GB&m6j;iuER zj5)aB@2dRAQ%h&6m9?CuAt@UgdTP1PTHBh;bdE^I?TN5#Hs!y{QvLW@$Epz2g)_rN zg_Gmtlno7SiA1WMA!y+a=t^fgbI}{vY{}Lg;2+y~UeoBhb|$~=5KiU=?ht=}oFfk5 z|IEVofb^!l3;+NC00000000000000000{951(I+MD>T|u00000NkvXXu0mjfw3>5Z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_1_0/00003.png b/tests/snapshots/nanox/test_register_wallet_tr_script_sortedmulti_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_tr_with_nums_keypath_0_0/00003.png b/tests/snapshots/nanox/test_register_wallet_tr_with_nums_keypath_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_tr_with_nums_keypath_2_0/00002.png b/tests/snapshots/nanox/test_register_wallet_tr_with_nums_keypath_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9e49cd05db6b930c31f4678c0682701615128c3d GIT binary patch literal 734 zcmV<40wMj0P)Sz@<{~yZ6b^L_lm7-XUB>?m8>+ou zm|h6f$74#2L$qFZr|eiKaXE~TsJUIBqO^?>Dl)BDy7(iLb%(<$y0Zf3l5 zLbw(NGN4JqUlA`r7Ar~Bkxy~)T5 z&@qq4gDhc0GCnUg&9K75VOSo&kxf`Q)4lAU=gX#vdcPf3t(Dqr9_-|`_k~qyRxCiutPk+G`PP-5+QFP1o#b<0=zL$A}pEBfk^gbbk{5RUCAn?4naQAPX`dy{g zPTcaiVR1IKh0o@hb;>QsUaHGJ^Yj+u>_e9^u4JuqSH(bSM1U@0?j=jV49@SmVQ_P? z{UbK?8Xr&XxbxeN_F&9wlCE$(XX6PKOnjs_eBHPw>6!|mHiQ~erHEd}(gJ>$mN{OV z>0RJoCfwBw4k0xF8(c0&{N)Zi(3qS(PqbhXl}?t zL})mfF}Rd>a&NQjF))}~lgV=44B0o~C5&C8x*VEzQ%eef9#8RnK7e%v5s+(b(WG`m zJiOnk1PkIJ_vB?PEN9v`%~nX^Qy!Aj^v$)P=N!xhya>94oA-dUpIhlU4*quUqxOIs z8T&Ah7K6M1*mZ3;Or(ao$|=oMlerEEA%qY@2qAFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y#amAJZy>QUUht*YX?JMyLj#)dBQz&KcuROaFKpu>$OB4P3DXk_9lb zELVfy)dBo>?_5)gx1jUeAoe!P&EjD03GAA6KpgSFXN`yS z-aoe6UJ~2Hm2loU@^Hh#B)=eDvl!QG-`DD-!PeSx_`A37w!}7I)=D^pRm<9DZfxzR z;wzK%CATe>Ha{LG%Y79;e)u?fY-6tJ0mat0jSfn+Hf7)TaI?NxjP`iCKGN=*0_;Nt3vT$ zekz^@l7q$_dZTT;N%4DoZ?aets7&0GDeVWm(yjXeNt1ub>K6b20000000025_6Hj} VD==hsB$+!Yf#FTuaT%9z-lfGq&|Rqf#RyjW7L+IFAe|5H~e+m@IT- zJfox8B*V45+yR<)-&$?Y^X+=51KygUxRP`8*z2u@ z_n!w)F7kH2SAj0&tiz`R?7hg?zU0f*O}Yfm-c7P=Ntu^geehl1y-GV`*GX^P1A@Xv zdw~1uUp?#xK@bGX+2If}?}PDtZHESO1~kqcoAHPJGKZJv&i^MYuUAQz8)X(|29}eA zR>~6X0tYT@jxREK($qL*N^^FDO6p7&EtKR5Kcv@=@#sBZ%xU+rRvi$=fB!BW>`!0B z2Abr4hhhcd@2Ao=6U@?Nqnq%%AfYrK*bU>{0ZlmppZ+&eanv?Ia8}6zwN2Pv8~;Fd oJc@J@YUs;E2LwS71i?%E0#YfUx2#tjJpcdz07*qoM6N<$f)>=1(f|Me literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_with_long_name_0_0/00002.png b/tests/snapshots/nanox/test_register_wallet_with_long_name_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..748c3b048dc785eab74b3da82e886bc063eaed40 GIT binary patch literal 504 zcmV#~007JVc!FY#A%x>N^07Eg z$DV{*=zLd*+KGUR>0&%aL`G zI#Z)ycKN%U^$;fY0B7Wt0cSL=mZ`t9if&{~2}8UMkb1N|KKh$I-*c#}M%I3#nR@Pj z@Txn(uH$&&hA-O>QJlmq~PCBAdwdf-KDrTrV#^*vyo@-0l;;1m~!k{D^VTYb^n zlc*_sGu__8(|&EPVb3ozpj7$cW;2u+ans<6E*5r`-(8zhfl(z z#JsYA>;Wqu0q4{=Gzw`SFVlxGBfB+|aHo3rU$lJywUVj*Wg1mY?Jq_fJc&{0Nu5fj u4W^=c0RR9100000000000001hY5oDFnw2WE*bUDB0000Q@-F?6sbc{V6?K!m&ySt#ieI28Y(fA400000U^`!qZKae#2r|s24@3YJG7ik?Zi7Z;Vw$2w}^!MVPOhz+x^XXIV>{@+=-n2a#Nxk}Tq6VLjnG zPC2;pGgS1&YZ-+Vd3`|{f9x&oTI{5q-W@O=2Xt-!Nnde1G0?R$x){uc@~!P9T&sSN zb=nX54k&%1=pVbXwHs2qE3jxk@6mw?(j8#5cJtUN4Mv2;GhA%{N+~PV?dVlV%7Lsl z~O~?iaJdL}1A)mZ1iZ50*x-UK}vMg=KAuA&gkse5=Ra z(evSf3@KHTk+sw#Z+W1jQ(kB*L@CV&B5XInKu1RmaPqYj^2VI_aIcOAICcgM^9o0? zh?y*=rS6PvUU3bb+3)<8*?bEa%(8Pa!m|MY0000000000000000000U$S-2d^jFF_ Rb{zl!002ovPDHLkV1l!JFqHrR literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_with_long_name_0_0/00004.png b/tests/snapshots/nanox/test_register_wallet_with_long_name_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2#AYZeBfa}G~ z%X2sUSKTFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y` zm9nrJvL3b!yeoOjuYg*FaT>J<>sa%+UzsNtVYwwbtxm#DK__Qq_4Si9B3y5IfwJbh zv=e7<z;%sPh zQ+=|;$;mh+p=!Sx9%!B9rF^T-_KS6xeAG047R6a|{XKG`Ij=<)qN&zHu9am&SVuB< z5W50$q=Ye{M&b}`%aky3a&=nnBrJbUDU+>KzOWg?aF}on4eM>6aGLX3ih!Y0!g-nT zDZUD|AX0@IH+%g5BZZxqRk7MCE))Ko5GTVBU0l8rDbExVklM@YdoWANbxQB64 zr)e9^gP2t2+y_|Cs^%j6;j0-DqwEilhfHpDsJaQK4J9kg4#007`r2ws*0fAq$tXz6 zr5x*;WutcGv@nU=o^T&Pe(F>ZTtU~4UhZ|m#Sgi^1CZMt-Gt+uHUEU13@o150T%qE zymA%e%td}r7~l5wQ6nrc#Ea5sMmg!dDt@`~$%K$vFI~;mzVM(uw=?0Y^zFaBpHf=m4pV zRP0>XzQq4|t3Ny3dw14S9m6-V?tBs~MF6gc!;~Sv2urbv&# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_with_long_name_1_0/00001.png b/tests/snapshots/nanox/test_register_wallet_with_long_name_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ef611217bef32c7b5ea1d9ed8cf33958cd277679 GIT binary patch literal 1035 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_register_wallet_with_long_name_2_0/00002.png b/tests/snapshots/nanox/test_register_wallet_with_long_name_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9e49cd05db6b930c31f4678c0682701615128c3d GIT binary patch literal 734 zcmV<40wMj0P)Sz@<{~yZ6b^L_lm7-XUB>?m8>+ou zm|h6f$74#2L$qFZr|eiKaXE~TsJUIBqO^?>Dl)BDy7(iLb%(<$y0Zf3l5 zLbw(NGN4JqUlA`r7Ar~Bkxy~)T5 z&@qq4gDhc0GCnUg&9K75VOSo&kxf`Q)4lAU=gX#vdcPf3t(Dqr9_-|`_k~qyRxCiutPk+G`PP-5+QFP1o#b<0=zL$A}pEBfk^gbbk{5RUCAn?4naQAPX`dy{g zPTcaiVR1IKh0o@hb;>QsUaHGJ^Yj+u>_e9^u4JuqSH(bSM1U@0?j=jV49@SmVQ_P? z{UbK?8Xr&XxbxeN_F&9wlCE$(XX6PKOnjs_eBHPw>6!|mHiQ~erHEd}(gJ>$mN{OV z>0RJoCfwBw4k0xF8(c0&{N)Zi(3qS(PqbhXl}?t zL})mfF}Rd>a&NQjF))}~lgV=44B0o~C5&C8x*VEzQ%eef9#8RnK7e%v5s+(b(WG`m zJiOnk1PkIJ_vB?PEN9v`%~nX^Qy!Aj^v$)P=N!xhya>94oA-dUpIhlU4*quUqxOIs z8T&Ah7K6M1*mZ3;Or(ao$|=oMlerEEA%qY@2qAFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Y5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_anyone_input_changed_0_0/00001.png b/tests/snapshots/nanox/test_sighash_all_anyone_input_changed_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_anyone_input_changed_1_0/00000.png b/tests/snapshots/nanox/test_sighash_all_anyone_input_changed_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_anyone_input_changed_1_0/00001.png b/tests/snapshots/nanox/test_sighash_all_anyone_input_changed_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_anyone_input_changed_1_0/00002.png b/tests/snapshots/nanox/test_sighash_all_anyone_input_changed_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_anyone_input_changed_1_1/00000.png b/tests/snapshots/nanox/test_sighash_all_anyone_input_changed_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_anyone_input_changed_1_1/00001.png b/tests/snapshots/nanox/test_sighash_all_anyone_input_changed_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_anyone_output_changed_0_0/00000.png b/tests/snapshots/nanox/test_sighash_all_anyone_output_changed_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_anyone_output_changed_0_0/00001.png b/tests/snapshots/nanox/test_sighash_all_anyone_output_changed_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_anyone_output_changed_1_0/00000.png b/tests/snapshots/nanox/test_sighash_all_anyone_output_changed_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_anyone_output_changed_1_0/00001.png b/tests/snapshots/nanox/test_sighash_all_anyone_output_changed_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_anyone_output_changed_1_0/00002.png b/tests/snapshots/nanox/test_sighash_all_anyone_output_changed_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_anyone_output_changed_1_1/00000.png b/tests/snapshots/nanox/test_sighash_all_anyone_output_changed_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4033d25ff8d69d5bf44de6d75d544f27bb8fe8e0 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WLba4!+nDh3AW8Yx~9*4lF zuWI}LPpp})r=%#=BkU^R{OkUz$0uFZ*$OcnB2dn zdYc1t*{Rft)xqp%Ppf_D^LsF3)w8TTd6y+?Hc8%j@?eWt1>21O&+G&vQ(4z+XI*-~ z>6z2}RWaWjLYKci$P^urCU$Y9%GgDr#-g>F*i>>2Bt}20kxg(3&C$6YdStZ~3iW%s4WN^5K@vOMO-lOZk=7WSi MUHx3vIVCg!07_q`rvLx| literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_anyone_output_changed_1_1/00001.png b/tests/snapshots/nanox/test_sighash_all_anyone_output_changed_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_anyone_sign_0_0/00000.png b/tests/snapshots/nanox/test_sighash_all_anyone_sign_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_anyone_sign_0_0/00001.png b/tests/snapshots/nanox/test_sighash_all_anyone_sign_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_anyone_sign_1_0/00000.png b/tests/snapshots/nanox/test_sighash_all_anyone_sign_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_anyone_sign_1_0/00001.png b/tests/snapshots/nanox/test_sighash_all_anyone_sign_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_anyone_sign_1_0/00002.png b/tests/snapshots/nanox/test_sighash_all_anyone_sign_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_anyone_sign_1_1/00000.png b/tests/snapshots/nanox/test_sighash_all_anyone_sign_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_anyone_sign_1_1/00001.png b/tests/snapshots/nanox/test_sighash_all_anyone_sign_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_input_modified_0_0/00000.png b/tests/snapshots/nanox/test_sighash_all_input_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_input_modified_0_0/00001.png b/tests/snapshots/nanox/test_sighash_all_input_modified_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_input_modified_0_0/00002.png b/tests/snapshots/nanox/test_sighash_all_input_modified_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_input_modified_0_1/00000.png b/tests/snapshots/nanox/test_sighash_all_input_modified_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_input_modified_0_1/00001.png b/tests/snapshots/nanox/test_sighash_all_input_modified_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_output_modified_0_0/00000.png b/tests/snapshots/nanox/test_sighash_all_output_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_output_modified_0_0/00001.png b/tests/snapshots/nanox/test_sighash_all_output_modified_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_output_modified_0_0/00002.png b/tests/snapshots/nanox/test_sighash_all_output_modified_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_output_modified_0_1/00000.png b/tests/snapshots/nanox/test_sighash_all_output_modified_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4033d25ff8d69d5bf44de6d75d544f27bb8fe8e0 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WLba4!+nDh3AW8Yx~9*4lF zuWI}LPpp})r=%#=BkU^R{OkUz$0uFZ*$OcnB2dn zdYc1t*{Rft)xqp%Ppf_D^LsF3)w8TTd6y+?Hc8%j@?eWt1>21O&+G&vQ(4z+XI*-~ z>6z2}RWaWjLYKci$P^urCU$Y9%GgDr#-g>F*i>>2Bt}20kxg(3&C$6YdStZ~3iW%s4WN^5K@vOMO-lOZk=7WSi MUHx3vIVCg!07_q`rvLx| literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_output_modified_0_1/00001.png b/tests/snapshots/nanox/test_sighash_all_output_modified_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_sign_psbt_0_0/00000.png b/tests/snapshots/nanox/test_sighash_all_sign_psbt_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_sign_psbt_0_0/00001.png b/tests/snapshots/nanox/test_sighash_all_sign_psbt_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_sign_psbt_0_0/00002.png b/tests/snapshots/nanox/test_sighash_all_sign_psbt_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_sign_psbt_0_1/00000.png b/tests/snapshots/nanox/test_sighash_all_sign_psbt_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_all_sign_psbt_0_1/00001.png b/tests/snapshots/nanox/test_sighash_all_sign_psbt_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_input_changed_0_0/00000.png b/tests/snapshots/nanox/test_sighash_none_anyone_input_changed_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_input_changed_0_0/00001.png b/tests/snapshots/nanox/test_sighash_none_anyone_input_changed_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_input_changed_1_0/00000.png b/tests/snapshots/nanox/test_sighash_none_anyone_input_changed_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_input_changed_1_0/00001.png b/tests/snapshots/nanox/test_sighash_none_anyone_input_changed_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_input_changed_1_0/00002.png b/tests/snapshots/nanox/test_sighash_none_anyone_input_changed_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_input_changed_1_1/00000.png b/tests/snapshots/nanox/test_sighash_none_anyone_input_changed_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_input_changed_1_1/00001.png b/tests/snapshots/nanox/test_sighash_none_anyone_input_changed_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_output_changed_0_0/00000.png b/tests/snapshots/nanox/test_sighash_none_anyone_output_changed_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_output_changed_0_0/00001.png b/tests/snapshots/nanox/test_sighash_none_anyone_output_changed_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_output_changed_1_0/00000.png b/tests/snapshots/nanox/test_sighash_none_anyone_output_changed_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_output_changed_1_0/00001.png b/tests/snapshots/nanox/test_sighash_none_anyone_output_changed_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_output_changed_1_0/00002.png b/tests/snapshots/nanox/test_sighash_none_anyone_output_changed_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_output_changed_1_1/00000.png b/tests/snapshots/nanox/test_sighash_none_anyone_output_changed_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4033d25ff8d69d5bf44de6d75d544f27bb8fe8e0 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WLba4!+nDh3AW8Yx~9*4lF zuWI}LPpp})r=%#=BkU^R{OkUz$0uFZ*$OcnB2dn zdYc1t*{Rft)xqp%Ppf_D^LsF3)w8TTd6y+?Hc8%j@?eWt1>21O&+G&vQ(4z+XI*-~ z>6z2}RWaWjLYKci$P^urCU$Y9%GgDr#-g>F*i>>2Bt}20kxg(3&C$6YdStZ~3iW%s4WN^5K@vOMO-lOZk=7WSi MUHx3vIVCg!07_q`rvLx| literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_output_changed_1_1/00001.png b/tests/snapshots/nanox/test_sighash_none_anyone_output_changed_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_sign_0_0/00000.png b/tests/snapshots/nanox/test_sighash_none_anyone_sign_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_sign_0_0/00001.png b/tests/snapshots/nanox/test_sighash_none_anyone_sign_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_sign_1_0/00000.png b/tests/snapshots/nanox/test_sighash_none_anyone_sign_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_sign_1_0/00001.png b/tests/snapshots/nanox/test_sighash_none_anyone_sign_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_sign_1_0/00002.png b/tests/snapshots/nanox/test_sighash_none_anyone_sign_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_sign_1_1/00000.png b/tests/snapshots/nanox/test_sighash_none_anyone_sign_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_anyone_sign_1_1/00001.png b/tests/snapshots/nanox/test_sighash_none_anyone_sign_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_input_modified_0_0/00000.png b/tests/snapshots/nanox/test_sighash_none_input_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_input_modified_0_0/00001.png b/tests/snapshots/nanox/test_sighash_none_input_modified_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_input_modified_1_0/00000.png b/tests/snapshots/nanox/test_sighash_none_input_modified_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_input_modified_1_0/00001.png b/tests/snapshots/nanox/test_sighash_none_input_modified_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_input_modified_1_0/00002.png b/tests/snapshots/nanox/test_sighash_none_input_modified_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_input_modified_1_1/00000.png b/tests/snapshots/nanox/test_sighash_none_input_modified_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_input_modified_1_1/00001.png b/tests/snapshots/nanox/test_sighash_none_input_modified_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_output_modified_0_0/00000.png b/tests/snapshots/nanox/test_sighash_none_output_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_output_modified_0_0/00001.png b/tests/snapshots/nanox/test_sighash_none_output_modified_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_output_modified_1_0/00000.png b/tests/snapshots/nanox/test_sighash_none_output_modified_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_output_modified_1_0/00001.png b/tests/snapshots/nanox/test_sighash_none_output_modified_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_output_modified_1_0/00002.png b/tests/snapshots/nanox/test_sighash_none_output_modified_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_output_modified_1_1/00000.png b/tests/snapshots/nanox/test_sighash_none_output_modified_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4033d25ff8d69d5bf44de6d75d544f27bb8fe8e0 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WLba4!+nDh3AW8Yx~9*4lF zuWI}LPpp})r=%#=BkU^R{OkUz$0uFZ*$OcnB2dn zdYc1t*{Rft)xqp%Ppf_D^LsF3)w8TTd6y+?Hc8%j@?eWt1>21O&+G&vQ(4z+XI*-~ z>6z2}RWaWjLYKci$P^urCU$Y9%GgDr#-g>F*i>>2Bt}20kxg(3&C$6YdStZ~3iW%s4WN^5K@vOMO-lOZk=7WSi MUHx3vIVCg!07_q`rvLx| literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_output_modified_1_1/00001.png b/tests/snapshots/nanox/test_sighash_none_output_modified_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_sign_psbt_0_0/00000.png b/tests/snapshots/nanox/test_sighash_none_sign_psbt_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_sign_psbt_0_0/00001.png b/tests/snapshots/nanox/test_sighash_none_sign_psbt_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_sign_psbt_1_0/00000.png b/tests/snapshots/nanox/test_sighash_none_sign_psbt_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_sign_psbt_1_0/00001.png b/tests/snapshots/nanox/test_sighash_none_sign_psbt_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_sign_psbt_1_0/00002.png b/tests/snapshots/nanox/test_sighash_none_sign_psbt_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_sign_psbt_1_1/00000.png b/tests/snapshots/nanox/test_sighash_none_sign_psbt_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_none_sign_psbt_1_1/00001.png b/tests/snapshots/nanox/test_sighash_none_sign_psbt_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash1_0_0/00000.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash1_0_0/00001.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash1_0_0/00002.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash1_1_0/00000.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97499543f93907238233469136f8c9365cd7e79a GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2Vbl+hE4u`<< zD|0veSFP0lEO_#hgwK@{8K3I&;a-h-qd2??B8XOyg_-mU+uxpUeAyNVwTz7h-!53KiA^O#Cc`{x;WKX}dL zMU`xGYq#oMs((7Cs+srd72D=W@rNewY_cx4&J4QWUvz1o!e#r1SJU2qy5x6kRosNU zi*N2sC_Hm%-q!_jTeBESve)d;&e0Q>+G4z2&+(<#{W8|{>Wbh~WnXgJm@nU`w?!n%&i<#ku;UFS?GVG>t6(q-9l-GJ?*L~})tqsl7z&R6b>egVS(85}U$FU~2^ TVzGavDM;AU)z4*}Q$iB}p_iTd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash1_1_0/00001.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash2_0_0/00000.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash2_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash2_0_0/00001.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash2_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash2_1_0/00000.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash2_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash2_1_0/00001.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash2_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash2_1_0/00002.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash2_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash2_2_0/00000.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash2_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97499543f93907238233469136f8c9365cd7e79a GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2Vbl+hE4u`<< zD|0veSFP0lEO_#hgwK@{8K3I&;a-h-qd2??B8XOyg_-mU+uxpUeAyNVwTz7h-!53KiA^O#Cc`{x;WKX}dL zMU`xGYq#oMs((7Cs+srd72D=W@rNewY_cx4&J4QWUvz1o!e#r1SJU2qy5x6kRosNU zi*N2sC_Hm%-q!_jTeBESve)d;&e0Q>+G4z2&+(<#{W8|{>Wbh~WnXgJm@nU`w?!n%&i<#ku;UFS?GVG>t6(q-9l-GJ?*L~})tqsl7z&R6b>egVS(85}U$FU~2^ TVzGavDM;AU)z4*}Q$iB}p_iTd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash2_2_0/00001.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash2_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash3_0_0/00000.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash3_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash3_0_0/00001.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash3_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash3_1_0/00000.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash3_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash3_1_0/00001.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash3_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash3_1_0/00002.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash3_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash3_2_0/00000.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash3_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97499543f93907238233469136f8c9365cd7e79a GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2Vbl+hE4u`<< zD|0veSFP0lEO_#hgwK@{8K3I&;a-h-qd2??B8XOyg_-mU+uxpUeAyNVwTz7h-!53KiA^O#Cc`{x;WKX}dL zMU`xGYq#oMs((7Cs+srd72D=W@rNewY_cx4&J4QWUvz1o!e#r1SJU2qy5x6kRosNU zi*N2sC_Hm%-q!_jTeBESve)d;&e0Q>+G4z2&+(<#{W8|{>Wbh~WnXgJm@nU`w?!n%&i<#ku;UFS?GVG>t6(q-9l-GJ?*L~})tqsl7z&R6b>egVS(85}U$FU~2^ TVzGavDM;AU)z4*}Q$iB}p_iTd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash3_2_0/00001.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash3_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash81_0_0/00000.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash81_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash81_0_0/00001.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash81_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash81_1_0/00000.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash81_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash81_1_0/00001.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash81_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash81_1_0/00002.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash81_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash81_2_0/00000.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash81_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97499543f93907238233469136f8c9365cd7e79a GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2Vbl+hE4u`<< zD|0veSFP0lEO_#hgwK@{8K3I&;a-h-qd2??B8XOyg_-mU+uxpUeAyNVwTz7h-!53KiA^O#Cc`{x;WKX}dL zMU`xGYq#oMs((7Cs+srd72D=W@rNewY_cx4&J4QWUvz1o!e#r1SJU2qy5x6kRosNU zi*N2sC_Hm%-q!_jTeBESve)d;&e0Q>+G4z2&+(<#{W8|{>Wbh~WnXgJm@nU`w?!n%&i<#ku;UFS?GVG>t6(q-9l-GJ?*L~})tqsl7z&R6b>egVS(85}U$FU~2^ TVzGavDM;AU)z4*}Q$iB}p_iTd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash81_2_0/00001.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash81_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash82_0_0/00000.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash82_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash82_0_0/00001.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash82_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash82_1_0/00000.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash82_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash82_1_0/00001.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash82_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash82_1_0/00002.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash82_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash82_2_0/00000.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash82_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97499543f93907238233469136f8c9365cd7e79a GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2Vbl+hE4u`<< zD|0veSFP0lEO_#hgwK@{8K3I&;a-h-qd2??B8XOyg_-mU+uxpUeAyNVwTz7h-!53KiA^O#Cc`{x;WKX}dL zMU`xGYq#oMs((7Cs+srd72D=W@rNewY_cx4&J4QWUvz1o!e#r1SJU2qy5x6kRosNU zi*N2sC_Hm%-q!_jTeBESve)d;&e0Q>+G4z2&+(<#{W8|{>Wbh~WnXgJm@nU`w?!n%&i<#ku;UFS?GVG>t6(q-9l-GJ?*L~})tqsl7z&R6b>egVS(85}U$FU~2^ TVzGavDM;AU)z4*}Q$iB}p_iTd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash82_2_0/00001.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash82_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash83_0_0/00000.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash83_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash83_0_0/00001.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash83_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash83_1_0/00000.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash83_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash83_1_0/00001.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash83_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash83_1_0/00002.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash83_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash83_2_0/00000.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash83_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97499543f93907238233469136f8c9365cd7e79a GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2Vbl+hE4u`<< zD|0veSFP0lEO_#hgwK@{8K3I&;a-h-qd2??B8XOyg_-mU+uxpUeAyNVwTz7h-!53KiA^O#Cc`{x;WKX}dL zMU`xGYq#oMs((7Cs+srd72D=W@rNewY_cx4&J4QWUvz1o!e#r1SJU2qy5x6kRosNU zi*N2sC_Hm%-q!_jTeBESve)d;&e0Q>+G4z2&+(<#{W8|{>Wbh~WnXgJm@nU`w?!n%&i<#ku;UFS?GVG>t6(q-9l-GJ?*L~})tqsl7z&R6b>egVS(85}U$FU~2^ TVzGavDM;AU)z4*}Q$iB}p_iTd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_segwitv0_sighash83_2_0/00001.png b/tests/snapshots/nanox/test_sighash_segwitv0_sighash83_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_input_changed_0_0/00000.png b/tests/snapshots/nanox/test_sighash_single_anyone_input_changed_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_input_changed_0_0/00001.png b/tests/snapshots/nanox/test_sighash_single_anyone_input_changed_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_input_changed_1_0/00000.png b/tests/snapshots/nanox/test_sighash_single_anyone_input_changed_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_input_changed_1_0/00001.png b/tests/snapshots/nanox/test_sighash_single_anyone_input_changed_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_input_changed_1_0/00002.png b/tests/snapshots/nanox/test_sighash_single_anyone_input_changed_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_input_changed_1_1/00000.png b/tests/snapshots/nanox/test_sighash_single_anyone_input_changed_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_input_changed_1_1/00001.png b/tests/snapshots/nanox/test_sighash_single_anyone_input_changed_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_output_changed_0_0/00000.png b/tests/snapshots/nanox/test_sighash_single_anyone_output_changed_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_output_changed_0_0/00001.png b/tests/snapshots/nanox/test_sighash_single_anyone_output_changed_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_output_changed_1_0/00000.png b/tests/snapshots/nanox/test_sighash_single_anyone_output_changed_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_output_changed_1_0/00001.png b/tests/snapshots/nanox/test_sighash_single_anyone_output_changed_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_output_changed_1_0/00002.png b/tests/snapshots/nanox/test_sighash_single_anyone_output_changed_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_output_changed_1_1/00000.png b/tests/snapshots/nanox/test_sighash_single_anyone_output_changed_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4033d25ff8d69d5bf44de6d75d544f27bb8fe8e0 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WLba4!+nDh3AW8Yx~9*4lF zuWI}LPpp})r=%#=BkU^R{OkUz$0uFZ*$OcnB2dn zdYc1t*{Rft)xqp%Ppf_D^LsF3)w8TTd6y+?Hc8%j@?eWt1>21O&+G&vQ(4z+XI*-~ z>6z2}RWaWjLYKci$P^urCU$Y9%GgDr#-g>F*i>>2Bt}20kxg(3&C$6YdStZ~3iW%s4WN^5K@vOMO-lOZk=7WSi MUHx3vIVCg!07_q`rvLx| literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_output_changed_1_1/00001.png b/tests/snapshots/nanox/test_sighash_single_anyone_output_changed_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_sign_0_0/00000.png b/tests/snapshots/nanox/test_sighash_single_anyone_sign_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_sign_0_0/00001.png b/tests/snapshots/nanox/test_sighash_single_anyone_sign_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_sign_1_0/00000.png b/tests/snapshots/nanox/test_sighash_single_anyone_sign_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_sign_1_0/00001.png b/tests/snapshots/nanox/test_sighash_single_anyone_sign_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_sign_1_0/00002.png b/tests/snapshots/nanox/test_sighash_single_anyone_sign_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_sign_1_1/00000.png b/tests/snapshots/nanox/test_sighash_single_anyone_sign_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_anyone_sign_1_1/00001.png b/tests/snapshots/nanox/test_sighash_single_anyone_sign_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_input_modified_0_0/00000.png b/tests/snapshots/nanox/test_sighash_single_input_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_input_modified_0_0/00001.png b/tests/snapshots/nanox/test_sighash_single_input_modified_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_input_modified_1_0/00000.png b/tests/snapshots/nanox/test_sighash_single_input_modified_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_input_modified_1_0/00001.png b/tests/snapshots/nanox/test_sighash_single_input_modified_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_input_modified_1_0/00002.png b/tests/snapshots/nanox/test_sighash_single_input_modified_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_input_modified_1_1/00000.png b/tests/snapshots/nanox/test_sighash_single_input_modified_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_input_modified_1_1/00001.png b/tests/snapshots/nanox/test_sighash_single_input_modified_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_output_different_index_modified_0_0/00000.png b/tests/snapshots/nanox/test_sighash_single_output_different_index_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_output_different_index_modified_0_0/00001.png b/tests/snapshots/nanox/test_sighash_single_output_different_index_modified_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_output_different_index_modified_1_0/00000.png b/tests/snapshots/nanox/test_sighash_single_output_different_index_modified_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_output_different_index_modified_1_0/00001.png b/tests/snapshots/nanox/test_sighash_single_output_different_index_modified_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c9bd49ec631dd78cff2584463261f18b6b5ac9dd GIT binary patch literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{&ba4!+nDh2Vbl+hG9*01y zS#vl1SFP0lEXeD$?c{34-LGupr?j!#I=4W6~xc2&Q@CtLwXgP_{{5y@`&b+f;`Zp`Gf34%v4Z)Wrzs`Ac-}36FHtUn_ z|D2cnP@Z=4&HSH7q9#P^o!gqj8+s}(;SqDd_YJ`|94W@nS1{zU+ZBng4i1=iVfufr z2fdoMJEq)Z)|)-sBme!IGF|gk&;N*C{kZCF+{d7P>!pW1Z$(?bPvF>kleNuJ?bm6G ug=)XLKk_I|Y*pIG@2<257&ge@fJy!N2EW7S`%9jJggssTT-G@yGywqi+OsAA literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_output_different_index_modified_1_0/00002.png b/tests/snapshots/nanox/test_sighash_single_output_different_index_modified_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_output_different_index_modified_1_1/00000.png b/tests/snapshots/nanox/test_sighash_single_output_different_index_modified_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4033d25ff8d69d5bf44de6d75d544f27bb8fe8e0 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WLba4!+nDh3AW8Yx~9*4lF zuWI}LPpp})r=%#=BkU^R{OkUz$0uFZ*$OcnB2dn zdYc1t*{Rft)xqp%Ppf_D^LsF3)w8TTd6y+?Hc8%j@?eWt1>21O&+G&vQ(4z+XI*-~ z>6z2}RWaWjLYKci$P^urCU$Y9%GgDr#-g>F*i>>2Bt}20kxg(3&C$6YdStZ~3iW%s4WN^5K@vOMO-lOZk=7WSi MUHx3vIVCg!07_q`rvLx| literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_output_different_index_modified_1_1/00001.png b/tests/snapshots/nanox/test_sighash_single_output_different_index_modified_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_output_same_index_modified_0_0/00000.png b/tests/snapshots/nanox/test_sighash_single_output_same_index_modified_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_output_same_index_modified_0_0/00001.png b/tests/snapshots/nanox/test_sighash_single_output_same_index_modified_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_output_same_index_modified_1_0/00000.png b/tests/snapshots/nanox/test_sighash_single_output_same_index_modified_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_output_same_index_modified_1_0/00001.png b/tests/snapshots/nanox/test_sighash_single_output_same_index_modified_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_output_same_index_modified_1_0/00002.png b/tests/snapshots/nanox/test_sighash_single_output_same_index_modified_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_output_same_index_modified_1_1/00000.png b/tests/snapshots/nanox/test_sighash_single_output_same_index_modified_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4033d25ff8d69d5bf44de6d75d544f27bb8fe8e0 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WLba4!+nDh3AW8Yx~9*4lF zuWI}LPpp})r=%#=BkU^R{OkUz$0uFZ*$OcnB2dn zdYc1t*{Rft)xqp%Ppf_D^LsF3)w8TTd6y+?Hc8%j@?eWt1>21O&+G&vQ(4z+XI*-~ z>6z2}RWaWjLYKci$P^urCU$Y9%GgDr#-g>F*i>>2Bt}20kxg(3&C$6YdStZ~3iW%s4WN^5K@vOMO-lOZk=7WSi MUHx3vIVCg!07_q`rvLx| literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_output_same_index_modified_1_1/00001.png b/tests/snapshots/nanox/test_sighash_single_output_same_index_modified_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_sign_psbt_0_0/00000.png b/tests/snapshots/nanox/test_sighash_single_sign_psbt_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43b3c1533a2373ecc20ec829517720492d3eca16 GIT binary patch literal 467 zcmV;^0WAKBP)5N zlS|}Y0V0xa#FbK_6H4`dZSVt6o%!{L&;A_<`c_vJdp=I=yY!#{r4*Z=ouO;9{>&X-Vb&4q z;Zto?gXTat<1~Bh^wsQfCM)%!eYUpyP1sAfS*qq!_QNgO)}X%Rk(b4(qScI}8g#O) zAGaS4v$DYtZb9q(QlqTec;h~QX%lk2bAF@iWVI`J{9TY#?6+!_T+*Ei-s#i};$<}x zTp64J>hj3mC3#tTn{p@AZHBwqnPTtSDwhK*;MgCg-d?%9ZZy4&>o)e=&cWjiMBSbD zY(J$=Rx`ojvIpJ`Yc&20_;UIFC;V2ECma9(000000002;_y?=TI<1A}fldGb002ov JPDHLkV1gFU*iHZd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_sign_psbt_0_0/00001.png b/tests/snapshots/nanox/test_sighash_single_sign_psbt_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_sign_psbt_1_0/00000.png b/tests/snapshots/nanox/test_sighash_single_sign_psbt_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_sign_psbt_1_0/00001.png b/tests/snapshots/nanox/test_sighash_single_sign_psbt_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_sign_psbt_1_0/00002.png b/tests/snapshots/nanox/test_sighash_single_sign_psbt_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_sign_psbt_1_1/00000.png b/tests/snapshots/nanox/test_sighash_single_sign_psbt_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_single_sign_psbt_1_1/00001.png b/tests/snapshots/nanox/test_sighash_single_sign_psbt_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_unsupported_0_0/00000.png b/tests/snapshots/nanox/test_sighash_unsupported_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_unsupported_0_0/00001.png b/tests/snapshots/nanox/test_sighash_unsupported_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_unsupported_0_0/00002.png b/tests/snapshots/nanox/test_sighash_unsupported_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_unsupported_0_1/00000.png b/tests/snapshots/nanox/test_sighash_unsupported_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_unsupported_0_1/00001.png b/tests/snapshots/nanox/test_sighash_unsupported_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_unsupported_for_segwitv0_0_0/00000.png b/tests/snapshots/nanox/test_sighash_unsupported_for_segwitv0_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_unsupported_for_segwitv0_0_0/00001.png b/tests/snapshots/nanox/test_sighash_unsupported_for_segwitv0_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31f04cbb79decd302e78c342c5fe8aea48ebd5 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Ekh-s|k*Wv}$Rh3c8ESa1Aa+#P#AVEWc@{``yl`ER4L zbG~@D@!puz)!JJzsiw$rn#h-WsW+%oHh q{xLZhC2rS8mNK0mK;elDw*O@PR_!@;;+|DJAYo5eKbLh*2~7aG$*~mx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_unsupported_for_segwitv0_0_0/00002.png b/tests/snapshots/nanox/test_sighash_unsupported_for_segwitv0_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eebc8645ea16ee9a98fd3e2565432c2b46d3300c GIT binary patch literal 772 zcmV+f1N;1mP)Sm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_unsupported_for_segwitv0_0_1/00000.png b/tests/snapshots/nanox/test_sighash_unsupported_for_segwitv0_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..937df53d43ee983b889678d7501643d901bbac7c GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh3AC*NTO9*4lF zuWEPxd)!&t?a`6+cm>yyWqHWM-A^&ZY((*c&eg9TUGOXigj?Qzpj=C-$ ztCa2-dOhjBhWw&9O?lI$uDqA}3QDpb>CWhp`mvbp--<@{P47G3R4e@kh5|A;V3c1i VDE-!M;yfjgu&1k^%Q~loCIIsCr?UV6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sighash_unsupported_for_segwitv0_0_1/00001.png b/tests/snapshots/nanox/test_sighash_unsupported_for_segwitv0_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_0_0/00000.png b/tests/snapshots/nanox/test_sign_message_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..1b271542d4bdb2b420bf296e4efb75129bcde20b GIT binary patch literal 415 zcmV;Q0bu@#P)5YKJ%(KU&1ONcAAJx@!`E?Y1^<~WN}zCyXs#X zo?o6k@9c|LZskJhD8km*o@uZbHa}-B?&(7HD5C%IYmwHRbJ)2) z`V`bZme<8JnX>F>hL3vOBL0b~>J+pM|9!ySI57nP0000WkROv_^0k3i)wKWs002ov JPDHLkV1lAe!YTj& literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_0_0/00001.png b/tests/snapshots/nanox/test_sign_message_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..71c80df0ebab547cc8681bb8a0c27b0a3b8993e4 GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}Bba4!+nDh2#E?<)YPeY=~ zy_E0vLGK^&Ki>4Fxim0}>-}eLZ`B)pme02_0(Cu;yJx<^-R0DD&817tUwxLf-J74_ z7wj&$a+m1Q)4$oKO>O=6Ma_LxcW#Xaz5wfPJL;g(NSW4;#S4%Wu05j?Uzr#&QSX`|LK)z!CCkI%zJFj)FU+^{X>?P z{L%M^Gpu*r3ex-U^zzvI(+NCT(-tn?lIgem)UERuV;=Uah3|XFlaL>gvMPUBaMr5) q9=VDnu}??7Z%{wQ4fH26ka@=Y^$&MPZqtP0AYo5eKbLh*2~7Z`xR}=f literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_0_1/00000.png b/tests/snapshots/nanox/test_sign_message_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..04bb6f43c46cbcb9c9891a601782329fd9257adf GIT binary patch literal 698 zcmV;r0!96aP)T>pFTDatD23)?7u^y|nDmbBA~*ng z4yGmz>pI8#lajiX6vWnM%y}mJRDf5pGnW^-effA#s5d;@uHUn;4g!MwU zdFv!=hgeXY*Zu4^+ySz;3vcyS2Iqi>aZf>$xw6Fu005x#z#1TJH(m4lEk-^XR=~Mv zrIaaa{iu|GrIDsw{YwHL^t4k3lmWwTKWQhS_FTN4<8$nAQ z;9V>+07MI8qiLKF+O~nQnYjQgF#twfcX$s1(PvX_96PI_ub7u+XMp7{rWCdAC&|t~ zwehz1kGSG_g>Coa>$CG|2mk;8a8oMIlA+yA=%wv0Rw3r3;~Zd7Z1!fvyZa7etOxDM z#jaciu7@by>8CKo4WscQ+&yiL4Eapi6k|pFw#1_Kdo_A}g6h@`{2*Z|^iD)Wq=@j8 z{q~br;M*Ui1qGDL^!^2=o~DfW)X=wop%d_4Fm+_WVcIAbTAUzvG%Ytl?YBi^_evp! g0ssI20DzC+7iJ63Mz=_xwg3PC07*qoM6N<$f)N=#V*mgE literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_0_1/00001.png b/tests/snapshots/nanox/test_sign_message_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..098d70fca69784d7f95018ff1a808513fb6032da GIT binary patch literal 576 zcmV-G0>AxM(&kK(1itoUeOh5<(D!Xi5M80001w^VMr`9LM=1=d4K} z&iCp7_To5>>wbF1aC`=&lyc7EZ&PPjB80B87GzQ;ZW+JmiyddgFv$EFa7L4JZgxNf zS4#39smgn)V>cnL3Voq`rn1?J-H>Y-=ch~Cr3_KKT85~l=4KPFB$6h(p;-(LfISCO zH4RIhv;RU;T4_nFeU1g+%SRi!wFJ3&7nh9n$40DFw&s8&=;{*;K7^YyVB$mA7B%MtFa|4O6zIX5Zur&{N!#E}eZddqf9tg+B|4 zX5ZvyKr^LVH~ZS;mizz!06+}CZWh=Hk3pAG+Ml|cuUe~8@VDG;jsMYaU>w(sGho>i zYC|k@ldcD8D!rinBiz%}6B1a`t3(~##B1ONa|3tI(^J}8y<*2t(w*7m z{kO<{KyQrr4oNS}GE@G^xUnI+{Fb?<>E;lhl(7}zAH4PNjy2fdA-HgePs&(;&X4pl zac%G(JtpllyKI_<@7*%CA~s3cpMReItiN>=F6j(tLwhr*H?Qn(8}v^u4}tef-Zag4 o3i>MA-O!V0ngRd-005B1AH-_2LJ#707*qoM6N<$f@(+05C8xG literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_0_0/00000.png b/tests/snapshots/nanox/test_sign_message_accept_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..1b271542d4bdb2b420bf296e4efb75129bcde20b GIT binary patch literal 415 zcmV;Q0bu@#P)5YKJ%(KU&1ONcAAJx@!`E?Y1^<~WN}zCyXs#X zo?o6k@9c|LZskJhD8km*o@uZbHa}-B?&(7HD5C%IYmwHRbJ)2) z`V`bZme<8JnX>F>hL3vOBL0b~>J+pM|9!ySI57nP0000WkROv_^0k3i)wKWs002ov JPDHLkV1lAe!YTj& literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_0_0/00001.png b/tests/snapshots/nanox/test_sign_message_accept_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..3ecf97960253a6930996bfec61b46e29279a6a0b GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}8ba4!+nDh2#Am1Sco`#2+ zdpN(_2fcrESm~gVn`g_dxBusfi|Q(+?d?-_ZtnfE?d+rFZ6{_X#jnk*5FUcYXv>UjR`&&AXhXQnj_q0vp#W=&(@ z)KD+7e7b&OXNBsEq$X8`^M4P^X5HB<0JK2O>ZaPXx9!(o-HiXb@y=e3(v)R+Tbn}T zB7XJ6mApUq?7y>*%axUpwH;}hD+?vQt1b=s?;qs;KkwSw2HR_vyvP1+{=MTo!+D`8 z+SRd--XH#KF)OMh;gyL=o^$l!7vEOiufKQvQ``Mld;ZLGP1u+=q4S>+`$Dx}-4mJp mLlpgM_^Xxn03Cr04w&TgRkOvkEx0=iB<$(x=d#Wzp$PzE(3da( literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_0_1/00000.png b/tests/snapshots/nanox/test_sign_message_accept_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..8cb0af7a98a8e1a271bdddf2999498589345ac04 GIT binary patch literal 462 zcmV;<0WtoGP)K_t!r0002X{hVzOLWl?6`%($o zy>AV5< z7WMB*LDjsAuZ;P}CT1$TW=Bb5S2J`zgw+u+@F8p$ zs?GBt)qX?|M(}o=)rQ|dtnIp&dUwWqz-FhXpvA5%u>kd^B3QmT{g>Zr%!7#*jG5ux)G3Xg678$w0{bE z_`B7=e+b7-v3M8L;~_l{>BlBVz`zS=A$C=}>s)N8{-iM@6_q|8J{_-7OfuPDMoBf< zUyOUO6SL4xl_YZyrXsxn000000000000000006)=Z#Za~jtxUI4gdfE07*qoM6N<$ Ef*|G0B>(^b literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_0_1/00001.png b/tests/snapshots/nanox/test_sign_message_accept_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c52ba90853b5b28ff731ea096329de997cf8cfd4 GIT binary patch literal 446 zcmV;v0YUzWP)zIX5Zur&{N!#E}eZddqf9tg+B|4 zX5ZvyKr^LVH~ZS;mizz!06+}CZWh=Hk3pAG+Ml|cuUe~8@VDG;jsMYaU>w(sGho>i zYC|k@ldcD8D!rinBiz%}6B1a`t3(~##B1ONa|3tI(^J}8y<*2t(w*7m z{kO<{KyQrr4oNS}GE@G^xUnI+{Fb?<>E;lhl(7}zAH4PNjy2fdA-HgePs&(;&X4pl zac%G(JtpllyKI_<@7*%CA~s3cpMReItiN>=F6j(tLwhr*H?Qn(8}v^u4}tef-Zag4 o3i>MA-O!V0ngRd-005B1AH-_2LJ#707*qoM6N<$f@(+05C8xG literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_long_0_0/00000.png b/tests/snapshots/nanox/test_sign_message_accept_long_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..1b271542d4bdb2b420bf296e4efb75129bcde20b GIT binary patch literal 415 zcmV;Q0bu@#P)5YKJ%(KU&1ONcAAJx@!`E?Y1^<~WN}zCyXs#X zo?o6k@9c|LZskJhD8km*o@uZbHa}-B?&(7HD5C%IYmwHRbJ)2) z`V`bZme<8JnX>F>hL3vOBL0b~>J+pM|9!ySI57nP0000WkROv_^0k3i)wKWs002ov JPDHLkV1lAe!YTj& literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_long_0_0/00001.png b/tests/snapshots/nanox/test_sign_message_accept_long_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7d73593625e5d56654950a32651919dd6481a50c GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh2#Am1Sco`#2+ zdpN(_2fcsPJTaj$aFS!|-}{$Y+&mh)DrA6q4wUe}XPhHA@k=tt!q=|V)$ac98Mj0} z(oo9U7WVOzoWpjL3-fn&s%AYr{;B>R7xxYC1em(5e2?CAL|=yc-0`pL!bS6CdXmDpY%m#VX}H1)jMc5g?+ z&CfOe+1adL{NGHxQfe1Z@9_(_3})qi`gi_zMAeS4#hND_9njxAYo5eKbLh*2~7aU`IW2y literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_long_0_1/00000.png b/tests/snapshots/nanox/test_sign_message_accept_long_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..8a9399404ad5a2612c0d0d271a3b9331f49e4073 GIT binary patch literal 753 zcmVSF8kI6CP+0xmT%MzI1+ z98HOTgsk1Eja>x0%j}u))s$i>c0ol)KR;F0MW{sWE|sV?&BG#!DV}Ds3+hE<2iRjU zWW$i!T=i!u)Jto`JkK`qwG1uj(G*l{cXrE|e{9%HWm`6+II|i-<4af^0Uck$cB1H> zixl%=IT+$?okhntz}9xnOTC@JK43A`Q_y6dEU^Iq0E{Bt`6RAYRf}^wy)R-MW^$q3 zvzplfont{k*^g+O6m8dI_+CG?uo81`$ltDx77SjtJTpc>J}=pkGTYbAr^?-*zg>kc z6L0?!Aac^IdS|rqNgZ(R25Pi&gd!HhM}YHVMHSAMm1w51Jct=1z}Y%1^!Owa z>G#dGRh7Hjx()yU00022phLI@#*5JI-|9dsTBkl;pPaKxCrCI zX7f78rX67c1drqFHv9y{-Y&e=donx++>Cn)+RVrnn-D_CI}zCA?AaHs3(UO>8tJf6 zJXjh-jCG5@Zx^IVq35*_8q@39#G;#y*Abc0PF48K*z8Etg2muu#K{O>H+9N@L2OpD z+>NRmv$qM3zsY1Zw8khsVhghzO`p5Q4X%9v^`IWKGw5jgoG@;1hZND&s~0)i;AJjy z1lR{M)*wYmy{uUbb}hS{3`kP^VUF-%+%P75{r#0Hy)_2v>f6ji|+x>>Gf1drc zJp+6OcfwidPC7~EGg!*w((4LnUGx^q$1AHtlD;2h`9?*-qHek9OA)7!^56qbJwPt4 z?}~;NY4fsKAH?uAkS)cRdfwx-W~bSOAOXR$yzc6nu~yBy^-qiaIt&dk0LI@#*tOY9>wSXu32ia4Vne`#JF4LXxCp$ z<|>*oYp$O99>D5PJO>+2R5VAvYIQYvgc>@Lxr*ineH4uVv0m9lzUF$BZ0|l^))oQQ o8_QR%Wi?8ngb+dqA>$S0|q{X{lsGR ze2~RweW+8T){X?OuW=JMxMR0Qg2XdRdzN7IY*uHwtUJsc%8n zN$U1lom0x^)~0=Lr4p-I-$iY#{LjT>POFU7T1)PQR^Ny@!FtBVc<^!bSm_@iR_@)c zJ_E!!?tTnC0~-IVIHGvCFYdyfA7QFzxOCm8^l9(UwoxkWKlq2X4l~F^f0{z5iT-5V zgDbHLU8xde?!l=DF8}}l000000000000000aGF22B7!>HG{w^Z0000;HQxZl2nyWzk|lO;E5oC^Yozyrc2=?g{^JHGJV{EU3?z zy})-zck>RfxXQeM?gx*b+BOz%J09b5%YIhm9$SWrJ=VF0K6(X6We9&?VA+w*T{4Sd z(R+owr;H2?6*~ma?)WnM(FVVntB$=o727fWYFGdDUf=IKZuqR5UtE!K>~i<)=MSD` zFWtfPZQ9YeY(@F|)(fAyeKs**Tic+wf7+9SMy+;9cjc!v=oK1@8!kO2BNuh~<-83Q zZ!?@-e5U5F(NcOO_xEU_u;0?a+f7MqpNpfmee625thUVX;hbOZY$JXMiNtQ$zx2za fPept%KQi#g>#e;0xnwo797xF1)z4*}Q$iB}OIeXg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_long_1_0/00000.png b/tests/snapshots/nanox/test_sign_message_accept_long_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b1e001b7baded3ddb1f08451a4be92bba6224709 GIT binary patch literal 720 zcmV;>0x$iEP)3`I#QH{t$A;x1XZlA>fyh|%u>N-5WmoU@by z{Cw|r;4Dfh|M%0Hg7FcMQp!1#ziggx3Q06GOHL+X;MV?=w&;F(3OX4-0xoZI&TIpS zb9GAoBi-U&=h3SmS4n=7`3fali(Zjg(9cg(Zj;(Y>1yqw6q?Q|%oI;QcX zrrR*A^IYvGDRn6+hxpdf zyOXRPVnK0U_tPx+2FTtnywy7yoC7w~JOwSLXNwI00N`yX8=I^7fXoNQ*@CR>YQgjG-d^_o>TF<1>qJiLl z2x^4)ggfH(h(Sj5m%)S@(O(SuU?-S`c47n>eK3{J3h%(y&I{b<9>i)kinYVkQ1i^f zzQ`qs1pj6gd9qG#I=hkIp5xo;QmCXa*1u!QVnD(SxDgX;`=!uyh#2?WrK#WZBRb%e zM;Yz(dwxU*1h~H$_)x}lfU>Rz%Eq#>OR@Q^(NkRV%IW!QQC5Di0{savm`EuF5eEQ( z)7dC;vGq#+3=tJhq^Uhq8!s96S31ePxnIcWdL*llCdbPo$x=hZ^6K3;$-QULBqI9N zN5zOgo9TnoLMNNGAmc@)eJooHc0LiiKEFP8-SdA(-oyS!lCeIxN*z0Z{Op{9q-B27Upp#~Ccs%0zMlkI=^|bp*F9f7w2%at*KH>$5kd$dgb=cwKfM*M>$*SW zoLeOX=kMtRp2c-t-{)yh#rOOC3W0}j)@1Z`&Ih)oC~*}tzCojsA8Wa>#-iaGoaH4_gxk5#?EO^F0OUzA z_End1y`=W;g~X;VN_zr;|AbOIg^x zD_k#17Z*V{@RExd&h>dKsV)z=8qa6iZ^Ejm8PGvh88x+q()v#|D^Phg;vzOD!8K7s zS&S)^h~619?#edCRxz$u#RUDNEn3^6jbZBmwB8czZCkG(I*VAgHt*SlAF&YkGjj&m z>Yyqgil+&Y7;!FH4zjW*gA%qY@4s!V42h_*VuDWN>e^U~GE@Ff4QP~Fh zLpa0+)(O=9MeO?d%A-&#k+(v7Z!5LXXiJZ3Xv1NBj|;a#jTm@c#Q{+Y5k*t={KbfC z1hSP&B+qawaJL3a#JH}-(Rlg-fhKMYVOL%2)%*dNqD_J$A(p|3vgnAbt}3h4(5(Ic z1$zQb+|M_(0-XV^jnw$TNJyUIX*E2w3c)1RJi&^FD?9me7S7*<2_b|KLI|15e<-JT UV59N)C;$Ke07*qoM6N<$g3lju1ONa4 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_long_1_0/00002.png b/tests/snapshots/nanox/test_sign_message_accept_long_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..0b161d12dbfdb03227155cdcd724dc9e6769f9c5 GIT binary patch literal 488 zcmVP)3^#PBcsT{F+>Ca007wTV>BS=e7s00SuKeB zygPws$vOXgpY{aK&j1lgDXF*3KGQ9#vD?{7QjCdP=C3}BpJya6X#EU0vPmg5KY&WE zY)LOt)xGTF5222#{;Km)%H}BkK;6K&uc6*uWs26(GDWL2Cx_^^M9Sn3w94cK@aLdZ z)3EGwe16qZMp;Fy&pDU;s7nVrbqng&T^(}nKR$J*@_SCS1W$E^$sgh73|ROh>^C;U z>m-}!QD<jHhc@(?93xJ0N}4W^S~324KAmzGxHR*r!;G0 zA8U9k;;4eP98-IZ@_TurV#Qt`b;oVS*8SDdV2G1|6}y#M9Qm)CTa{KH>um9HgPE)v z`n(+rF(>1yd7OD|HQD4{%4!EBAQ#)ka`9T{aN8}L#mc~8&ds-OW-;=v0Z+M zKXfy;e9-VGdYQl1fiLL>W|67>HjPqK{mr-rcj7K|r%sW%2A86|000000000000000 e0002MWxfG_5X`L-!$blA0000;HQxZl2nyWzk|lO;E5oC^Yozyrc2=?g{^JHGJV{EU3?z zy})-zck>RfxXQeM?gx*b+BOz%J09b5%YIhm9$SWrJ=VF0K6(X6We9&?VA+w*T{4Sd z(R+owr;H2?6*~ma?)WnM(FVVntB$=o727fWYFGdDUf=IKZuqR5UtE!K>~i<)=MSD` zFWtfPZQ9YeY(@F|)(fAyeKs**Tic+wf7+9SMy+;9cjc!v=oK1@8!kO2BNuh~<-83Q zZ!?@-e5U5F(NcOO_xEU_u;0?a+f7MqpNpfmee625thUVX;hbOZY$JXMiNtQ$zx2za fPept%KQi#g>#e;0xnwo797xF1)z4*}Q$iB}OIeXg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_long_2_0/00000.png b/tests/snapshots/nanox/test_sign_message_accept_long_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f1c7143a1b0b24cc50179e20598e20b1fde075d1 GIT binary patch literal 703 zcmV;w0zmzVP)cK!BM(WJ&-400000Z0Daf!gXEuL(aJu z0`&Zxb|4nlb$!04JrVsqAf=RZCO?}t?hq0v8uy$`osL`jPs+mksfnm$eh;|4$vHO* zK%6T>@*k)D81W5|wVivZ7a8mW4r3mIHZ!us1^@s6<}-0IhE>pECTl@WO6}$I z+}yVGq*i9L)7z1eeIj|qWU5K?VUW#K9jLSv(_x}$lr=|2N+3)(b4Pe@` zne_0vytV-dwRRQ++5pPKikfnEB@b!R$JLyc2QBsPHIF^42-W-4Szbqw(skVk;@>*r z6tLk*9OqUL@F3yq+8`9)I|@ZWsAROkQeIxYjz!6XlyL?C00000Jb<06a>wN#lY1M=a&jX!Uc5MKc6V7OY{Z!T4u6$1 z6?-31x$NnkdU2HG%iIdcKD)FD7sd0ut>~00000002nmYu2H)b{*7O zr4r!h&(i|VqP6yYKjk>CkAPB2t(E*_ZI(+&p=m6MEW*I;^^mK+lu>KU}NsE@B+Y^$6QGS}cAyxyCr>Gj67zOATr3*`f?2^V~&%uT#0002U!@pfLzlB<;Gq&AW0Xvm^)PKlCeGi(++(wMe z8cN5+QYw_rN;T-&*6%%3zgL=SxBTose}Yy@?uKDzA9o68lb~$2Rd0)}(|I;Z{77~x zLLom1>Q^#r;OC$Y$WMZrVx&L^N;;?mSlIt__h(y^S@`mGcM&eaZ8EzE`;(wkQa!%@ wi;|>*gP2_&K58ETUQKK57i|Cm002DCKP@_0l*u_2j{pDw07*qoM6N<$g0SXd_W%F@ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_long_2_0/00002.png b/tests/snapshots/nanox/test_sign_message_accept_long_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..03fafd9da8172ef6563bc2da882b87fa8d3b7706 GIT binary patch literal 571 zcmV-B0>u4^P){# zdcN;AU@f+7JAO}d6#I8TN-5_ozN#|aEut|Lwv0^1#x3m^bMfu0QLJSA4%n^9Ija*8 z#+5DkkM!a9QpO)bJQeancz2~bia$`OSkF(BbVzBU^|Un6a?Qyh!j>90`2&rja{>H4 zm_D{)DYMUCw3J$w6F>XxGrpBe2RapkLcfbgPWJAwA680Na z^-m+!enbzB@xGm*;u{cWyY8dj%8&=#OmhgD%$XxL003Oekdw)o9^Q8@Y5>QbCq4yP zDUYA*RF*amVJDplbFQZPsG66BmmH20tRBV_*17!Zm?Nyp_>J9Ss)}V>rD12vc5yMT zFIFrbVZst=tNq>ct*VALm5Wbm%|R`!mTS-&NxCBsrHFsjy1FG+d8rU0cYxaOkSHVy zsE2^KTAJ`Svn)Bjwwj@Ks451_wr03^8K#r*{xlR<;HQxZl2nyWzk|lO;E5oC^Yozyrc2=?g{^JHGJV{EU3?z zy})-zck>RfxXQeM?gx*b+BOz%J09b5%YIhm9$SWrJ=VF0K6(X6We9&?VA+w*T{4Sd z(R+owr;H2?6*~ma?)WnM(FVVntB$=o727fWYFGdDUf=IKZuqR5UtE!K>~i<)=MSD` zFWtfPZQ9YeY(@F|)(fAyeKs**Tic+wf7+9SMy+;9cjc!v=oK1@8!kO2BNuh~<-83Q zZ!?@-e5U5F(NcOO_xEU_u;0?a+f7MqpNpfmee625thUVX;hbOZY$JXMiNtQ$zx2za fPept%KQi#g>#e;0xnwo797xF1)z4*}Q$iB}OIeXg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_long_3_0/00000.png b/tests/snapshots/nanox/test_sign_message_accept_long_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..9403307a587a49a9de3eeea17ba698e049dc3512 GIT binary patch literal 750 zcmVS3lM_P#000000AM>`y#rE8`5?w9 zwE#Qcrvtc)l+x>d+B0x`280k|jO1Uo&u|NAY<8A{48p`M<0sdm$7va8#D50lXkv`) z1(4v%miR}g@?Q4QU68Y+Kk1xP$$HTpH3!=H>FV923{g5;hA5?G(nYhyk|y1e7lS{5 zJ_kcJ4a+|H`bkSUN=jmFb1e8?mO7d$LCw6AQ%e2OA(cw+InZJ>wSvJ#n4JNRi?H6v z4zGh`?GOt}@Oqrhf$so$wi|xbyBWL(9HzSjZD!^X8vps9#$N?+F4F9d7=tPZNU9thh`BfWRtBX5S7WMqFEOsbLn&EPjU398UZ8cD`) zu#^Moy-oZ&?)@0Lyz{X*sG+O|`8rPjcTxsbaV%|;vrVP59ve8xvka*gYb|mqd*O%4 zA=ZD{1LasbYgZo!hAS~hVyf39b{6BF&i>kX(HF5x7}()FgU<{oOKM$Such8zxMGOT z))Hh4U6LN{^?7{BeXOqImT#PPum((l+n-_G49H*i78wTsfY0TjwRJx1 zj;Ej*XBUdnN(?T68I4%gP)W|bb4TWwHEFEAk46$)*#M@n$eB$MvCE)QQr)Ac>W(Z5 zE6YMD!sR99hB9SjEYwv$z~wtKS1=apj=iBvT|Aw>86e4-N^!hlN2YE~56ljY7lTIOt-OQTEq72+tKWU4t(^JsN{1Na{Q)?9) zK*Y5v^@qaxz0G5XApes5B=f5)#VB^5Zb3i)LbmfB5;%%MXf}a3c+ohL!H-mk^VZu|;W=59S0000c;M{W#R(MLxNZcbzl95I_ zjx0t)ac8k8u4@(4nkTkr>D+b^Ly^>GN7Mv}Vu-=JXwLNkxI z{3E@7gB$O`_i*(r^zn2$8TVi*ynAo|BDM|fNPzPM(N$Z~TS$y%Qe?w?5Z(!k=R5ds zacdKDQjOyzMmSRNy?t|T6+P`0MRr})IgB`(Vm#R+(|4AnozY)i$mtRAkY^zR(RdrW$_fscKxzV38G8?(UZ`KT|K- zbK_>&Z~0EUa0F;WIQsR@a37t<}u)M*si-07*qo IM6N<$f5y5}n;OmQ9%Xb1oR0Kjrzy#-QA`69+xOM&0_ z?hc$KrS$ndttmJ@0zwEeM)9YbXE;S9HZ#{c87c#}?7w&xyPuwdPS1~k+?yDq`T(MH zWlH=LE^#mO*iDGLBEQI-L#ei6H`FZX_tTZTsqA9yZrR0JXl^#qO!0)tZs;k4FTfsy z;W7-%Jo))WN?EEF#A}^no$ocZp<7c>Gw$M+G5^@aOl9XBNO4v*!{8#Uj(`UjVLMSR ze(j`MkEp@uyxq@c!8Z`!cEg`~Cu1M5S@#sQ*qu*o0090S_z`vPSI~jMn&IKIAVY0~ zqi$sKwYuq3>r}HDo3-*d=!F}oEA_xqTzm2u)f#7K;+C`28tX=YhjC8nJi-)3JoW6I z>kfJW<-a@px14pBDYeu5Esk4+)x+)2t=UbiCr7}*ugpWNkm|bHJg^M?@1PlIb?L5M z+}Eh;oZrQZRfA0Qmr+7Z^cUkD?8GdzQzOW{gQ*BF0000000000000000000m%`bw^ Vq2p?f7byS$002ovPDHLkV1hx~-je_T literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_long_3_0/00003.png b/tests/snapshots/nanox/test_sign_message_accept_long_3_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..93bf9bc960ef586881a858edd08e9208e39c33cb GIT binary patch literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|^K?ba4!+nDh2lAYZcrPebDN zH)?zTPpq15J3}H!pwQXt>;HQxZl2nyWzk|lO;E5oC^Yozyrc2=?g{^JHGJV{EU3?z zy})-zck>RfxXQeM?gx*b+BOz%J09b5%YIhm9$SWrJ=VF0K6(X6We9&?VA+w*T{4Sd z(R+owr;H2?6*~ma?)WnM(FVVntB$=o727fWYFGdDUf=IKZuqR5UtE!K>~i<)=MSD` zFWtfPZQ9YeY(@F|)(fAyeKs**Tic+wf7+9SMy+;9cjc!v=oK1@8!kO2BNuh~<-83Q zZ!?@-e5U5F(NcOO_xEU_u;0?a+f7MqpNpfmee625thUVX;hbOZY$JXMiNtQ$zx2za fPept%KQi#g>#e;0xnwo797xF1)z4*}Q$iB}OIeXg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_long_4_0/00000.png b/tests/snapshots/nanox/test_sign_message_accept_long_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..80943953e9f524bf875f93c6359aef955724b7e2 GIT binary patch literal 598 zcmV-c0;&CpP)3`I#QH{t$A;x1XZ(nSe0AT#H`m0JiTgApLRLjV8(0001BI$y07QcBN7jFFQ7 zJKw7v*o&0X=Xsh_(LV!12r)+Tv#R5k5TUBfIT@IVoBL1hMfTHD(MbOp@OTqrtlj`| zE|2 zOv7B~xql+bYjK@ew&`=em7#`Sg&?)xNs$nLWJsivH60RTQzLLL!qpkjaS@h<)#{~_ z)pke=g7dPUYQ-BMdpq}5Z)b20SWI&Wn#`LmHUI#CeYtN-17^_oxf#0);!>x1T9Ig0 z)$*TZvz#rGbSiVV>bni~{J8t!iyWiW3!xULFJ#|jLl!lM^;SA(Ll@E|GB_GB=2kiG z8Gz83))rcDSagrU&8dhdM!$SQ?S_1H=?t*D`_U{fS`k(=u1FU8urI3Bl(5Bw(nY6i z%!O`3hh0aCkWQ@U3)_3n@4_ZGW0;AY= z0A{Bm@>APKC}co`cK(u6r(D9d>X=Y^53PyGCZX`tmzSNu4Y?qB4D5|8iAcw1LrJJ{ zXQfs}o*QOBsQpu6hXvNczB8a)6`Nin3LlJCKi3sj@Bhdt&+mIK2|?$A0RR9100000 k0000000000000c+7jPz30s}v~=l}o!07*qoM6N<$fPx# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_long_4_0/00001.png b/tests/snapshots/nanox/test_sign_message_accept_long_4_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c52ba90853b5b28ff731ea096329de997cf8cfd4 GIT binary patch literal 446 zcmV;v0YUzWP)zIX5Zur&{N!#E}eZddqf9tg+B|4 zX5ZvyKr^LVH~ZS;mizz!06+}CZWh=Hk3pAG+Ml|cuUe~8@VDG;jsMYaU>w(sGho>i zYC|k@ldcD8D!rinBiz%}6B1a`t3(~##B1ONa|3tI(^J}8y<*2t(w*7m z{kO<{KyQrr4oNS}GE@G^xUnI+{Fb?<>E;lhl(7}zAH4PNjy2fdA-HgePs&(;&X4pl zac%G(JtpllyKI_<@7*%CA~s3cpMReItiN>=F6j(tLwhr*H?Qn(8}v^u4}tef-Zag4 o3i>MA-O!V0ngRd-005B1AH-_2LJ#707*qoM6N<$f@(+05C8xG literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_non_ascii_0_0/00000.png b/tests/snapshots/nanox/test_sign_message_accept_non_ascii_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..1b271542d4bdb2b420bf296e4efb75129bcde20b GIT binary patch literal 415 zcmV;Q0bu@#P)5YKJ%(KU&1ONcAAJx@!`E?Y1^<~WN}zCyXs#X zo?o6k@9c|LZskJhD8km*o@uZbHa}-B?&(7HD5C%IYmwHRbJ)2) z`V`bZme<8JnX>F>hL3vOBL0b~>J+pM|9!ySI57nP0000WkROv_^0k3i)wKWs002ov JPDHLkV1lAe!YTj& literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_non_ascii_0_0/00001.png b/tests/snapshots/nanox/test_sign_message_accept_non_ascii_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7d73593625e5d56654950a32651919dd6481a50c GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh2#Am1Sco`#2+ zdpN(_2fcsPJTaj$aFS!|-}{$Y+&mh)DrA6q4wUe}XPhHA@k=tt!q=|V)$ac98Mj0} z(oo9U7WVOzoWpjL3-fn&s%AYr{;B>R7xxYC1em(5e2?CAL|=yc-0`pL!bS6CdXmDpY%m#VX}H1)jMc5g?+ z&CfOe+1adL{NGHxQfe1Z@9_(_3})qi`gi_zMAeS4#hND_9njxAYo5eKbLh*2~7aU`IW2y literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_non_ascii_0_1/00000.png b/tests/snapshots/nanox/test_sign_message_accept_non_ascii_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..263a4391ecf8788ea7f9424c1ccd47f032c2122c GIT binary patch literal 918 zcmV;H18Mw;P)Ahvz)D!M7CKG^2xf^yaq^5Hr1VsVb z1;-!E6sdR*mo#6Zjcf#Lg`k(czN4ELUO-EjSC^o$%Jz0v$ZNC=8FvUk4 zUY0sv%TD2;Ec?U)q~WF9*|M`>ZYo78j8eOlISs{`U%AEA|2=7_n?Xi(+*R3yEw%Fu z3X*V=HT#d@OtohJVYCLHL{aFIB$KQ)xD`9SY&Eo%ii`bL^hro0ZmqcG4cC+L7N}oN zE#;B&f?MpA2l)CTb9|5bER`r$TgVy)5RACD8tR@q^rm-&Dn&#wB&`KrJJ%q}xjoxT z2qIg`<{~P!ptQ(*2{yJyNB_t}9GyX>!M0$dWx>WQKy8-yi<-YAQr%Sz1r?|#E6m?d zWdZCjJO6^o{m_#UccZEsK&&>V#Wg{Wlo1p{2qAdpaNzm5j%e9>pk z6{N@tOfu6yb>SmwrCy%%m$Y*k7QV7g}7w%vz sZjy~Hy2F{YU6Y0iA%qY@2yqAh0Iod2bAI9#-T(jq07*qoM6N<$f~P~U9RL6T literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_non_ascii_0_1/00001.png b/tests/snapshots/nanox/test_sign_message_accept_non_ascii_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..a8cf42f7d7a1575ac2faa1c4d8e70efdc7b54064 GIT binary patch literal 558 zcmV+}0@3}6P)b$axN@%AOi#Iw@ZR)e8h{&I*<$N^3az;yQSE`nPg#TEKV z>TT$%X_%~^vx8&fIAAM wdI10c00000000000000000000006e}3*77lnHQPMBLDyZ07*qoM6N<$f;+7S;s5{u literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_non_ascii_0_1/00002.png b/tests/snapshots/nanox/test_sign_message_accept_non_ascii_0_1/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e7ffedd90f5279e10fd67907e6122c12c1bbafd7 GIT binary patch literal 457 zcmV;)0XF`LP)Bo7fQz-)#Q&A!PMpz3O%n|+fjfT!4#E}eZd``R7A6>%04 z&A!Rq0acf7-Rx_VTk-<{0APxR-Amm`Z_ezOhUqW=r@`mED)n>^wO4fWLn<5k8hwp+ z*c7VQlDSFeL7Ml1+K3Zc$L1++d!-5U?%MEvn{hd75c|*Sy20_M8!B3Zc2Y_%-kP`W z6B3uv5sEp6+7}?3cGS-jo%#RmC+k+Iq6=2ZCt{yO@|m#fhCEXc001~`+bXE-Sq__* zaSL|sh|S-mJG0AswVnF_Z;Zqai5F&=srY7G+YlXo%RjEI;O00000NkvXXu0mjf&CAl) literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_too_long_0_0/00000.png b/tests/snapshots/nanox/test_sign_message_accept_too_long_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..1b271542d4bdb2b420bf296e4efb75129bcde20b GIT binary patch literal 415 zcmV;Q0bu@#P)5YKJ%(KU&1ONcAAJx@!`E?Y1^<~WN}zCyXs#X zo?o6k@9c|LZskJhD8km*o@uZbHa}-B?&(7HD5C%IYmwHRbJ)2) z`V`bZme<8JnX>F>hL3vOBL0b~>J+pM|9!ySI57nP0000WkROv_^0k3i)wKWs002ov JPDHLkV1lAe!YTj& literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_too_long_0_0/00001.png b/tests/snapshots/nanox/test_sign_message_accept_too_long_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7d73593625e5d56654950a32651919dd6481a50c GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh2#Am1Sco`#2+ zdpN(_2fcsPJTaj$aFS!|-}{$Y+&mh)DrA6q4wUe}XPhHA@k=tt!q=|V)$ac98Mj0} z(oo9U7WVOzoWpjL3-fn&s%AYr{;B>R7xxYC1em(5e2?CAL|=yc-0`pL!bS6CdXmDpY%m#VX}H1)jMc5g?+ z&CfOe+1adL{NGHxQfe1Z@9_(_3})qi`gi_zMAeS4#hND_9njxAYo5eKbLh*2~7aU`IW2y literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_accept_too_long_0_1/00000.png b/tests/snapshots/nanox/test_sign_message_accept_too_long_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..17edb9d3006e1f20c47ff969cc7bbc9f4ff06a35 GIT binary patch literal 917 zcmV;G18V$VUd`R@%|;W&*UT{Nb}Xj>8St8f^x= z#Z4DDyE%}-?JABUM~N|6F|0lTb>`hW@6u{5$3Kd>z19bJVVf|)tuwfXVZepCn{#2v6|XfdJ+kW=tBv@CvHQ@waK5`SCYw3!tS}Wz!KzI z7~J4YRy<@;nu~BFpz<)a==`K)l?RlR=tCPkYDi}5Ugh1$I2Ws05RY9oh{`VXTycoS8jH_?0eP3-W_|2DL>W4BZyjlTHCY6tcN z7LYAtiEauTS4offz%8=iIOO&@@&q54{6WAuW5hSAp(m|&@t$AHj1+-O2XKolj6&eH zbv1x4CXjEjg~?&aI8XFUrKkAlIOV8hFHc?$}$H;oxe%-cdQLfI+ zpyS);=PaLqU5lEztMuze&?KGyiQwIf%3TU8@ylbs4V`iM`~*bt!@#2m^K{>HeCL;Yi3xHcklu0002saX$RZrIhPO&e^iO z%N5VPV1{!`DZ_=gB5Jz)*gkK>{YR+TOh%R~tzC|h<6Hj4qscj|TCGvKk6YAOoxy4h zLGe~3Qq$I@VPHd6E1=$Xb>&@5ttI~_iM+RCd>3*`L|hJb)@80dh7Hh!CoPR!)`94arV=wRD@hLtR7X!od<(+fJOwlpC@WEy!xn zDt`a*={i+B!YSq33eI20XtC6SE@yQ|C#}6W7HhwBYO0HPNK$r6q>I0nm!mH`?cQy4 ziY{x;9eO36Ln535Om=NsUuSRHD_bSoNw?NyMo-CaAxG z#jPYQR&|#KUqK4C6XV?@=yXbdmciWPw-=lwll{j~QcdBo7fQz-)#Q&A!PMpz3O%n|+fjfT!4#E}eZd``R7A6>%04 z&A!Rq0acf7-Rx_VTk-<{0APxR-Amm`Z_ezOhUqW=r@`mED)n>^wO4fWLn<5k8hwp+ z*c7VQlDSFeL7Ml1+K3Zc$L1++d!-5U?%MEvn{hd75c|*Sy20_M8!B3Zc2Y_%-kP`W z6B3uv5sEp6+7}?3cGS-jo%#RmC+k+Iq6=2ZCt{yO@|m#fhCEXc001~`+bXE-Sq__* zaSL|sh|S-mJG0AswVnF_Z;Zqai5F&=srY7G+YlXo%RjEI;O00000NkvXXu0mjf&CAl) literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_hash_reject_0_0/00000.png b/tests/snapshots/nanox/test_sign_message_hash_reject_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..1b271542d4bdb2b420bf296e4efb75129bcde20b GIT binary patch literal 415 zcmV;Q0bu@#P)5YKJ%(KU&1ONcAAJx@!`E?Y1^<~WN}zCyXs#X zo?o6k@9c|LZskJhD8km*o@uZbHa}-B?&(7HD5C%IYmwHRbJ)2) z`V`bZme<8JnX>F>hL3vOBL0b~>J+pM|9!ySI57nP0000WkROv_^0k3i)wKWs002ov JPDHLkV1lAe!YTj& literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_hash_reject_0_0/00001.png b/tests/snapshots/nanox/test_sign_message_hash_reject_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..71c80df0ebab547cc8681bb8a0c27b0a3b8993e4 GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}Bba4!+nDh2#E?<)YPeY=~ zy_E0vLGK^&Ki>4Fxim0}>-}eLZ`B)pme02_0(Cu;yJx<^-R0DD&817tUwxLf-J74_ z7wj&$a+m1Q)4$oKO>O=6Ma_LxcW#Xaz5wfPJL;g(NSW4;#S4%Wu05j?Uzr#&QSX`|LK)z!CCkI%zJFj)FU+^{X>?P z{L%M^Gpu*r3ex-U^zzvI(+NCT(-tn?lIgem)UERuV;=Uah3|XFlaL>gvMPUBaMr5) q9=VDnu}??7Z%{wQ4fH26ka@=Y^$&MPZqtP0AYo5eKbLh*2~7Z`xR}=f literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_hash_reject_0_0/00002.png b/tests/snapshots/nanox/test_sign_message_hash_reject_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..263a4391ecf8788ea7f9424c1ccd47f032c2122c GIT binary patch literal 918 zcmV;H18Mw;P)Ahvz)D!M7CKG^2xf^yaq^5Hr1VsVb z1;-!E6sdR*mo#6Zjcf#Lg`k(czN4ELUO-EjSC^o$%Jz0v$ZNC=8FvUk4 zUY0sv%TD2;Ec?U)q~WF9*|M`>ZYo78j8eOlISs{`U%AEA|2=7_n?Xi(+*R3yEw%Fu z3X*V=HT#d@OtohJVYCLHL{aFIB$KQ)xD`9SY&Eo%ii`bL^hro0ZmqcG4cC+L7N}oN zE#;B&f?MpA2l)CTb9|5bER`r$TgVy)5RACD8tR@q^rm-&Dn&#wB&`KrJJ%q}xjoxT z2qIg`<{~P!ptQ(*2{yJyNB_t}9GyX>!M0$dWx>WQKy8-yi<-YAQr%Sz1r?|#E6m?d zWdZCjJO6^o{m_#UccZEsK&&>V#Wg{Wlo1p{2qAdpaNzm5j%e9>pk z6{N@tOfu6yb>SmwrCy%%m$Y*k7QV7g}7w%vz sZjy~Hy2F{YU6Y0iA%qY@2yqAh0Iod2bAI9#-T(jq07*qoM6N<$f~P~U9RL6T literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_hash_reject_0_0/00003.png b/tests/snapshots/nanox/test_sign_message_hash_reject_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..a8cf42f7d7a1575ac2faa1c4d8e70efdc7b54064 GIT binary patch literal 558 zcmV+}0@3}6P)b$axN@%AOi#Iw@ZR)e8h{&I*<$N^3az;yQSE`nPg#TEKV z>TT$%X_%~^vx8&fIAAM wdI10c00000000000000000000006e}3*77lnHQPMBLDyZ07*qoM6N<$f;+7S;s5{u literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_hash_reject_0_0/00004.png b/tests/snapshots/nanox/test_sign_message_hash_reject_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..e7ffedd90f5279e10fd67907e6122c12c1bbafd7 GIT binary patch literal 457 zcmV;)0XF`LP)Bo7fQz-)#Q&A!PMpz3O%n|+fjfT!4#E}eZd``R7A6>%04 z&A!Rq0acf7-Rx_VTk-<{0APxR-Amm`Z_ezOhUqW=r@`mED)n>^wO4fWLn<5k8hwp+ z*c7VQlDSFeL7Ml1+K3Zc$L1++d!-5U?%MEvn{hd75c|*Sy20_M8!B3Zc2Y_%-kP`W z6B3uv5sEp6+7}?3cGS-jo%#RmC+k+Iq6=2ZCt{yO@|m#fhCEXc001~`+bXE-Sq__* zaSL|sh|S-mJG0AswVnF_Z;Zqai5F&=srY7G+YlXo%RjEI;O00000NkvXXu0mjf&CAl) literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_hash_reject_0_0/00005.png b/tests/snapshots/nanox/test_sign_message_hash_reject_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..e90cd9db37ed7e4c669da0b1abe6e4a823770f3c GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-$ba4!+nDh2#^r}M!BCQWK z&Z&HszcjC#zcHvdGud%d*x&ujm6to+(Vp%*SqP{N3M2&u1+V{G{c>j&LwL#RobX?V zbQiII^4uMl|Z~1l7yy12MZ$b&j z?TtJM^{@JVDT&uHZn5nzWh-TPv_J7m;jgq0f(|YbTZHdAM)myZxO-=(=&Jp4l55=A zUQcBF*M05wg}=Y7bG1(&{&siyl(&8#-KTdql}}rLm3hWhy}m5glJN5fpDsOd=_5x% z{HDvZre)46&g0e%{pDoXaPf-VTe-XJSGLU(Jj!tDNp8H)+;exzHoZ2kko_Ba_xXNR zr;WUGZIbufwyah@qN*6%Wc!qrE&9UV%v{IGH{4)eXE1ondwSC@^_ATTjUX{kS3j3^ HP65YKJ%(KU&1ONcAAJx@!`E?Y1^<~WN}zCyXs#X zo?o6k@9c|LZskJhD8km*o@uZbHa}-B?&(7HD5C%IYmwHRbJ)2) z`V`bZme<8JnX>F>hL3vOBL0b~>J+pM|9!ySI57nP0000WkROv_^0k3i)wKWs002ov JPDHLkV1lAe!YTj& literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_reject_0_0/00001.png b/tests/snapshots/nanox/test_sign_message_reject_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..71c80df0ebab547cc8681bb8a0c27b0a3b8993e4 GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}Bba4!+nDh2#E?<)YPeY=~ zy_E0vLGK^&Ki>4Fxim0}>-}eLZ`B)pme02_0(Cu;yJx<^-R0DD&817tUwxLf-J74_ z7wj&$a+m1Q)4$oKO>O=6Ma_LxcW#Xaz5wfPJL;g(NSW4;#S4%Wu05j?Uzr#&QSX`|LK)z!CCkI%zJFj)FU+^{X>?P z{L%M^Gpu*r3ex-U^zzvI(+NCT(-tn?lIgem)UERuV;=Uah3|XFlaL>gvMPUBaMr5) q9=VDnu}??7Z%{wQ4fH26ka@=Y^$&MPZqtP0AYo5eKbLh*2~7Z`xR}=f literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_reject_0_0/00002.png b/tests/snapshots/nanox/test_sign_message_reject_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..d20a083f5140c5f6a4aa9cc9c1d6d6979fe80a37 GIT binary patch literal 476 zcmV<20VDp2P)bPfOj09fwtY=IC$Jn-I^QqbL72$=W~wiDIj zd5~&7q6Q;)JI-psZy?ro-AlbY<2_)r(^Jr5BTH-mzypl0Z5rQ-p@`ko(OF`JIy0t) zChrAJQQCmaGpJihV!uvChKDR z{{Z9Tm&i7~zwR*a%PDB({g{7OI@|i-_FVYruA!sFfz!K93{U-vxrS)#m7ci6kobm|JsW>kUb`MzO2;4;Fa#bNK1#UH||9000000000000000;4*IzIX5Zur&{N!#E}eZddqf9tg+B|4 zX5ZvyKr^LVH~ZS;mizz!06+}CZWh=Hk3pAG+Ml|cuUe~8@VDG;jsMYaU>w(sGho>i zYC|k@ldcD8D!rinBiz%}6B1a`t3(~##B1ONa|3tI(^J}8y<*2t(w*7m z{kO<{KyQrr4oNS}GE@G^xUnI+{Fb?<>E;lhl(7}zAH4PNjy2fdA-HgePs&(;&X4pl zac%G(JtpllyKI_<@7*%CA~s3cpMReItiN>=F6j(tLwhr*H?Qn(8}v^u4}tef-Zag4 o3i>MA-O!V0ngRd-005B1AH-_2LJ#707*qoM6N<$f@(+05C8xG literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_reject_0_0/00004.png b/tests/snapshots/nanox/test_sign_message_reject_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..e90cd9db37ed7e4c669da0b1abe6e4a823770f3c GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-$ba4!+nDh2#^r}M!BCQWK z&Z&HszcjC#zcHvdGud%d*x&ujm6to+(Vp%*SqP{N3M2&u1+V{G{c>j&LwL#RobX?V zbQiII^4uMl|Z~1l7yy12MZ$b&j z?TtJM^{@JVDT&uHZn5nzWh-TPv_J7m;jgq0f(|YbTZHdAM)myZxO-=(=&Jp4l55=A zUQcBF*M05wg}=Y7bG1(&{&siyl(&8#-KTdql}}rLm3hWhy}m5glJN5fpDsOd=_5x% z{HDvZre)46&g0e%{pDoXaPf-VTe-XJSGLU(Jj!tDNp8H)+;exzHoZ2kko_Ba_xXNR zr;WUGZIbufwyah@qN*6%Wc!qrE&9UV%v{IGH{4)eXE1ondwSC@^_ATTjUX{kS3j3^ HP6n#41T;ja7{`{nSVx}kGBaHfL-ebj~IiH0Z>Lc zTnxUwJMih&2|%EQS6U|kv1XoPod5(CY!S{m>r+j*=O9=Bwtz#di!=odF0-*#<4CE9 zVx?pp001!I`5ij{dA!xI(fW_$2mL!^6pzKn|9UV-Z!0sM)nKWPAAke zPo!kr0_xk#=m|Jo+3Lcl`!F7vXz}Ga0!{QM`Sj7yp0GwaieC>_)WqEMFc-000000000T YzhPoi+DKpawEzGB07*qoM6N<$g7>N082|tP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..66ec5c34ac6a3535fffbf2cc08cd4b497478599f GIT binary patch literal 635 zcmV->0)+jEP)H-t#d^Qe*RmT+&hi000000NBn~xW`&+DdoDZ zcFk^I*Peu$88pU zm+>Qj(arAlN9m0fMk{u+Z$8^YX3rjK;hLpPB7-{0I>Y%9;Iv$+g1c$8pc!jYN&~z` zH0x`nH<0~RGhO((aEn3xq)$PM9N7pN`?T=6D60Wv8R*1a?i7aF8>_1)xi|MpPyhe` z008hT*hXz`-}XOudyjq*i)xZ5H*KyKWJru%(NU%~P8W*cv+;eUNbQS#6h#R8Bo)GL<-@CY;`<+4iOSAEd9oUs-C15+^5cTqjjyA-I%2yv^vGt`Txn9MW-QZc-n4hX zp+i~NVXlTzq}x@fv`c?kY`@~D>89N$6W$EBo;UEjPMk_A<;=ICcbS-uLJsLX*_ab= z8s{5;sx$`c-;#z1LE6kS-3Ip-VS1v(PM4;6!b-Tvirky{b#%M7jfV$~TF*5S8iME| z+RXNreP~hF4a~_w&aVN-(YC^Si2pCiTTE}9LzW)^0000000000000000000$Hot}N VNSpB~L$?3`002ovPDHLkV1gtRCv5-# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..527667d5233d35bcc2d9edd558a3bcfb3d021868 GIT binary patch literal 377 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9cba4!+nDh2#;-qE;p0>nY zo6R5ob3YaPjeWC^TEnffFWzr||5>Clg{{-en-QpO-?W)CXI6| z`o8+B%n?SLqq4b!^|ut+Cq_MvZmn|)|7Rllmy08O(f=Ds&$%CNsVn)eUGq6^-PWwd z@kTxlpF?zxb*P_I*FQ0-$@!*?TB%kU*(LI1@~2?mW#tz?wr#xl zCp%mY==f{SUynZgnSUoF;_Xi#={{Tk`7XzuCAT$CF*9olGi85mzKe_X?P`ZEal@%R z;&rq}k3HfiWdSPR+>O*}> z;r}kimh>e+<@}FZvW7 R@0bh{_jL7hS?83{1OQolpR51? literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..317b8b9ff8094162ea10dcf319976a4fbbdcb084 GIT binary patch literal 707 zcmV;!0zCbRP)CFgTM+K^OpL+UyGZ0b74=M8Z!4he^N?c2j{lW z1Tjx)=~Rp8`zK)l0001h&&2f_s=b?gZj$2I+SvZ6y`+mwM`XIA2E;rsrcRyX@B)h{ zFnNtMiU)>fL)f+_G@VnGQ(i-^1+~s4u~rw^*b}V)iSdD8iAGj5kc|haHWTOiH+{$$ z!2jg-0H|8NUE>PW;`3mwTUI2uS<07F&Cq8HH5OvyO#Fqq-Vv zZ~+}BV-2>#-RrG}rqO@Y5Xs3LFf-hr=ZapVU1dxFqpH*0E{5dVm$|h=qSk7?o*CEF zg4$RZhzoJJQ=xW0B6L437-Nm;jNZ03H?>8y>Y%>{Y2U@PU1GG`(}gCo8$DeiV>lzV zpw|)UDLiPBK=J>_)?jK~{9xMO= p0000000000000000001BBfsJm85}M=eUAVD002ovPDHLkV1l|`JD30f literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_1_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..1562d40dfb38bb878a33fe128b0a2095a9cc1a8f GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9dba4!+nDh2VVBTQ`o`yuT zuWI}LPuy`@PD!z?_p)9o&)xsFOY@{G)dXIF_1~^dRe!K@>o<8<7469u{cl*#)u!B? z&C8Z>!N1$g%qnBvwgvBjf>)!WP5YSzU#`w!hW8%hv*dTe6Jyg3)OiQ|jJ*){ zV&SR35?7+8%Qo{)TX0NgQSi;L*XM7#E_8*RU;cv-8w10S`RnqW&$cbyAAIGxNcQrK zcaG`tM_qrdPy0S8f5ozQl4o{tEH8W>FVdQ&MBb@08t{OCIA2c literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_1_1/00001.png b/tests/snapshots/nanox/test_sign_psbt_against_wrong_tapleaf_hash_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_highfee_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_highfee_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_highfee_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_highfee_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..00a5104dc2e31fe6a3a24ef39a5254c54f4bb02f GIT binary patch literal 392 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{t3ba4!+nDh2#U{Q+#PebCZ zm%cmxPb`{lXK>hnQz5%`$>aaF8#P|EnP!=(0(Cvu>f++E=lr3A+rM)znG(eNccW>? z=6m+{)D2XWET0Q4yQT4Vm-F`JvP+)@25;S6`Eftf75$BWBa*J0UCAqb{Z#SR!>x0R zzxCF2ZD2U+zHx&f|0Mssj!8}b@>%|$_{o(KyxI4i^0%nM^D5h0Jsfj`{$+T4*UQS6 znEY`4-cLa5Yii%l2(i6=v+3Z9d6#7~(%;#o-ts;Ft*1}=`jQjIuOi>f_gN~nYSWe* z#`f1XJMHOsyW!I|nTO)FTg0yDD!6wXx^qpWq=fN`_>3vSPLVoQ_aD!1QfmLl@SnB9 za&FT$wWk-IpFa}3THm|UGJ5w*IqUPm#^T}+mzq@{FgW4ze}>JK#dKP) zNf80eSi!kJrh!`A^5~uH-vi2mP4yrY&**#io}CUjM^2Z5*P1ScBlEN&lXLwkrF?B{ zyS*l;`=qsA)7pfM;q}+ zMfPx(T2*s=L>9}lp)6T{CsUS3D>oGvXpF_U8ate-@GKfWC^R4d>@!ni@X10msPj!BV7o=UmFm)0mo^3D%`wS=k%bmi23` zv5hUhBdR%{;dUp`n-^>!*Lssn5w(#n#XH~5K}B#<5tU$-1nKJQ*r|+V+0;JEp0kdr z!KBs-Mz;E~V?6BHvZI_1(sQadIXt(D`p|H2FnX>RT0?GFe_Ad`CVbqsS;cr;Qg|$4 zhMQA~51EqU$GH?Xouy?X_brxMS3qr-)pC2-MLGwt+p+lA+CGq8WG;!f+a>8bzU6>; z-tiP`-@{351J^aG=0&xNNN28SBE-lho&$G7-pj*p#PXAF510;HNH^Y50{}oacK(Z! zWbH`~#7S~Syn*bepsHO7uv3jJVUeUNNkTdYM9zrqI}p`RX-Ve*IcFtrVc8(>`X+qw xN1u6kR|h}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_highfee_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_highfee_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..3fa33760f370a269cab85fed47877808feef9af3 GIT binary patch literal 526 zcmV+p0`dKcP)E_wA(_j0uwservfYB@|DLKfY8Ofs-Npa_00000;IH^N9l$u}TsXGY z9*kthlN}H@eeA_&MNVO?<+?(*X=h8v40*f0c7Co`32epYZA(fMZI-{KesK z-n|2owtlhcz4zXN46mV=_#F!|0001ByV(V!`)*NG3+xLwp+gh7Mq9uE{G$OJG&1&mo zZKmK%oXR^OIjESr11iHdnGguy{Q50b zQ&?nWQ{=Ix<|~%>U0ax?5mYa@aA$O2-?W)H}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_highfee_1_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_highfee_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7a139ba8e4ff7aedba26d951d1dfd3b93724813e GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|dl>8#sD=T_S=zFxZE zi{u5N7iy=zN_2SKFpN-O70nXpJ#p;3edbz`5c9me4IIo23^tcJZwG8m%gh)1ojqw= zWXSe~)yw}~zEpmxBK!hxp77ayIUB+~B(_O!my)~k-c--7YcpKPWanTb7xm z>ruN)_HocE=lfG8wVnH=C(OQJeV?lF+Vf#fVaM0S_o^+OWg8yuJlmS3j3^P6@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..fb4c2106140c43fa3b221c5fca4409b1f9df3a69 GIT binary patch literal 482 zcmV<80UiE{P)n#41T;ja7{`{nSVx}kGBaHfL-ebj~IiH0Z>Lc zTnxUwJMih&2|%EQS6U|kv1XoPod5(CY!S{m>r+j*=O9=Bwtz#di!=odF0-*#<4CE9 zVx?pp001!I`5ij{dA!xI(fW_$2mL!^6pzKn|9UV-Z!0sM)nKWPAAke zPo!kr0_xk#=m|Jo+3Lcl`!F7vXz}Ga0!{QM`Sj7yp0GwaieC>_)WqEMFc-000000000T YzhPoi+DKpawEzGB07*qoM6N<$g7>N082|tP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..6f55ea25dd62a7100693c63fb8a6cf2d73ff36bd GIT binary patch literal 536 zcmV+z0_XjSP)T-Mq zD5BH7{*YL$DEzX$ytnBGmAo2Ex$}}%#X2omYYXcupir_W1hu*;r!%feQxb4jv^v)$ zR>BWOU+_J`OMX|M7?zO38w%6001zG zmTqXY10!?p*;7pdPsXX$-HW3$#oC0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_1_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..527667d5233d35bcc2d9edd558a3bcfb3d021868 GIT binary patch literal 377 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9cba4!+nDh2#;-qE;p0>nY zo6R5ob3YaPjeWC^TEnffFWzr||5>Clg{{-en-QpO-?W)CXI6| z`o8+B%n?SLqq4b!^|ut+Cq_MvZmn|)|7Rllmy08O(f=Ds&$%CNsVn)eUGq6^-PWwd z@kTxlpF?zxb*P_I*FQ0-$@!*?TB%kU*(LI1@~2?mW#tz?wr#xl zCp%mY==f{SUynZgnSUoF;_Xi#={{Tk`7XzuCAT$CF*9olGi85mzKe_X?P`ZEal@%R z;&rq}k3HfiWdSPR+>O*}> z;r}kimh>e+<@}FZvW7 R@0bh{_jL7hS?83{1OQolpR51? literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_1_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..f67a3aa62b644f4617ca3a0f703564e326a57401 GIT binary patch literal 781 zcmV+o1M>WdP)^jC3a@LI@#*5JEna^E}V<^nV59 zU&mMU08)14pYdrI|Dy+BqQ*mA4aad@?Z=Mc=w* zKaW@e!dcF_Kc=DdxE0Zz#P0#=hE4S-NG+$w?mdwK$ah|*f-9%j!k&2wWS*ISQcC{< zZR4Dv?vvJbYR%~9Z^DESLI@!Q(N(SVXcHZ`orY!%?XJQ$9dtEL-V)G%2g8PL8lhPW zDxE71FZtx69%1mQ$LdvfcOJy7ft4SD>0Cxt8&wm+8}&umOVtc+T=zxu+9Re;b2SAG zsKWJBtG#QSU4}e^ED5WIis>V+XRv-Vus)6v2u5<5Y#Ep?WTNsRaY}XqEw}S8K92VPLXWTlV#+vJibsi&urY-h^k&jg1Wm zpfRj{(o!E%mprr1tJ((GqA$M6FIXAhfJhQQKgitSef&f}taFvByTRFCari4%^xwdA zHDj=WhLahCTUqAb@{nB@6-48_)rHSaxV=j_5>EjH2zwMRL9IABg`4e5X#X#$p3!4~ zLR&sDh@*p59c!++++H6lt%+hi2iEPv-1!@Dr-P{K@CvX}P&q!}4iJE5Z17OKgz^14 zg_{9bQwu7m$z*jfwMr=WWdkQxFviX$3j#1~dkl}QdU=6fmM~Bl!3Z zyThUFs{UKTekC(g&=r6jYMc`$E1e+iWJIwu+4WaoWq!TZS>AHO0>X2ye+<2m7#+?^ z9`Sy_C-aCmWB_-}(}&D`LI@%2smnxxgZV^o0q1E%zNFWr^q~3&I&obJt9?ly{_3W) zWcxsP5DSI@2!;U&<~5}V>s|Q#?JF|=%lHJJG6e<001!e5AwhftB>0oI3NkF600000 LNkvXXu0mjf;gMvd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_1_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_1_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..184d002d4bfc09f28f8c1b5cada107075059130a GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2VVBTQ^j)uhb zw|sZ}pSZ(YevzWN!1C2H$;wKk2Q%{!GZ5FmD zKfP-Id$DWM@;v&pFDP3#7O%>>ddIHABlfAmj*Snth*hw+#D6vujC{%&k(H!Ik$n^|d5e5B30 z)>!@`gT0!z_M7E(`diOfFPpoK^=!mdKI;Vst E0LU7eEC2ui literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_1_1/00001.png b/tests/snapshots/nanox/test_sign_psbt_miniscript_multikey_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..fb4c2106140c43fa3b221c5fca4409b1f9df3a69 GIT binary patch literal 482 zcmV<80UiE{P)n#41T;ja7{`{nSVx}kGBaHfL-ebj~IiH0Z>Lc zTnxUwJMih&2|%EQS6U|kv1XoPod5(CY!S{m>r+j*=O9=Bwtz#di!=odF0-*#<4CE9 zVx?pp001!I`5ij{dA!xI(fW_$2mL!^6pzKn|9UV-Z!0sM)nKWPAAke zPo!kr0_xk#=m|Jo+3Lcl`!F7vXz}Ga0!{QM`Sj7yp0GwaieC>_)WqEMFc-000000000T YzhPoi+DKpawEzGB07*qoM6N<$g7>N082|tP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4d888576f634186774863daba1124e4b565d5197 GIT binary patch literal 465 zcmV;?0WSWDP)Z=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjff}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_1_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..84d33c06e33dd3e279715f08de0c1d84388d341f GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2VAYZcrPebCi zH)?nOd)!IoS8LhQ(BQTE&Hs54UCF6pxg0<}2kv`mE}gO_J@G-VZKHtGiG}yKvDIDs zoow5h;nYT4gTbIkIu2a?votJj>AD_VgBcC1%?%t&6ciP>5|00=rw+-EH zzhLL*E|}5P+P7nJ&87q1T)*ye#HG}*PgxnM{#~qg{fzWUsd_;HGp8(X3n>rWn^@BJ z|Lt6M28M*!rG7(5MD=lr*%Q!g1HsauC0{$vm$J6&9!SH zPjtUrooklQP<_fJ?$kxOHBT4KUaPyij_Z`m`5)J}%DH}7sBIg(-=ij`?%_j%Y6C*tc(|+KIF76QI1W_@FImOn6`&ldR)cblTc|p@>$r|qZEeYX zwpanmSzzw>^&mYSMRX?X&ww)EP(1{t=Jd5^&&mMYGnZSzwWr(4NS-Ej_S}C;DPIf6 z&i4fOoQ#gsD5Lj3gb5*p5JEnaC$FLI6~MQ))h)m1+vqHrL*TuQtRiTQdi~-{PXxoYA@`?%+xjV5cDpAZ+L#=W!IfdmqmL^@eJC912 zR)Zt4L^4~9+fxx!AXZ(ejYK8yY705~=9*7++0Ha(^eB1@0w?bt%Q^X>jWm>PUGLaL6+FheZ2UC7s44RprA3N&XQweuODQ{hl1Z42_b|KLI@#*5JCtcgb+dqAx-=O X@S5L@MWyCG00000NkvXXu0mjfU)V=e literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_1_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_1_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..78a269ed2349ce48444a0589b0b7a0b3b1644fe3 GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9dba4!+nDh2VVBTQ`o`%G* zuWEPxd+hU;U!>F~yFA#rXY>E+S9f$A%@|*S^`HLh!hb+n>F@ll*H%nC^SMXvz{coj zdp!dh9REjcx%FZ}<;^C!i_8{kO1iUew?}2qPc`0=c`#M=2J@NBcdNIiRWg6lb$nXx z6uqcj=ew!E#MJBw37lDHRIFyk*8kPqIc&7{UZCG^U=zEKKonJf7e*exA>ke>TvJZ zi6!Z=Z|+P@4>R`LeynTvJiY91dv=y^o|^jWQ{MBJwmbLUxj$V!)!OPpKu_qhDR!*9 z)eZNA&eUHqH(Y;ZyOnm5-HY|^7RPhV4jozHXp<$-FXf{2d*X>Yl}-G>z(WQ;pPAmj VmUTZUe`6C!*wfX|Wt~$(69CXZrl$Y^ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_1_1/00001.png b/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..fb4c2106140c43fa3b221c5fca4409b1f9df3a69 GIT binary patch literal 482 zcmV<80UiE{P)n#41T;ja7{`{nSVx}kGBaHfL-ebj~IiH0Z>Lc zTnxUwJMih&2|%EQS6U|kv1XoPod5(CY!S{m>r+j*=O9=Bwtz#di!=odF0-*#<4CE9 zVx?pp001!I`5ij{dA!xI(fW_$2mL!^6pzKn|9UV-Z!0sM)nKWPAAke zPo!kr0_xk#=m|Jo+3Lcl`!F7vXz}Ga0!{QM`Sj7yp0GwaieC>_)WqEMFc-000000000T YzhPoi+DKpawEzGB07*qoM6N<$g7>N082|tP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4d888576f634186774863daba1124e4b565d5197 GIT binary patch literal 465 zcmV;?0WSWDP)Z=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjff}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..e0409140bae521e1f652a4d827e83ed169ce2a92 GIT binary patch literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=lvba4!+nDh2#U{Q+#Ps799 z<>n9nxj)jY-Ei1Iall>83Vt41!;qT4W{%GR;u_*%y+OgYLaj8{I&l?b)y9Prz>hk1sX+)K@+x0MV9tJ#)JIg}d1 z5!SGs|5y8ZmfVViTna6>yF4_Ha#i?WIUsNP!R4Fn#9IH9|Ao)?we&N|-M9O?QTJkz zr0M3rtJ34dzopmhVGg)*GxPJ-8Pz_4)3V{cOGDUasE7R`s3dr4n|tZOd-s{upCb*)N`VY-|6U*PrbEUEDMM;K|L5 zXG9k~`SMu2VOQ(di>tORTeoy`)&HthuVW&s!;G5k&GQS7|FchE7J&sE14H$1*0q0l T*ZrCD8Z7AP>gTe~DWM4fMuWRv literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..3c91cc8f18b96a7554a78329eca981b446489055 GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2lpiq;7Ktp2I zuFmiFLggPTwjrk^*JosDYRnm#ssvH5XRy6MuNqBQ5oQf3>*qN^unan%}xvhO$>F!}G*DJRtv zf5)xf@;&aO*~xR;CwW#>KTc1N{pz_xD6ZLg$>yllX}ixF-uBxpnmsLZ;#0S%byz&7ci`ULW%mN7C;Inpoa9{@pNt`rm@w08Q1)b8J%iYN{@1J-MKC@=T+q`^&9$ z7q`b9xj!$B$uB*?ZW;RSytl2~t#`h;nrS|lRnvOy`m~SsKPL6(eV09Uc7NTK(kX>H z&m8`DrcIxF{9>i#*}ZE{i%mOT@VV`KNzmhc@eR*bzpq&>Qus=xD{S#{ZU2<7cbVZK c$iR^Im+AhDqGuahTmnI&p00i_>zopr0O=CWG5`Po literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..84d33c06e33dd3e279715f08de0c1d84388d341f GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2VAYZcrPebCi zH)?nOd)!IoS8LhQ(BQTE&Hs54UCF6pxg0<}2kv`mE}gO_J@G-VZKHtGiG}yKvDIDs zoow5h;nYT4gTbIkIu2a?votJj>AD_VgBcC1%?%t&6ciP>5|00=rw+-EH zzhLL*E|}5P+P7nJ&87q1T)*ye#HG}*PgxnM{#~qg{fzWUsd_;HGp8(X3n>rWn^@BJ z|Lt6M28M*!rG7(5MD=lr*%Q!g1HsauC0{$vm$J6&9!SH zPjtUrooklQP<_fJ?$kxOHBT4KUaPyij_Z`m`5)J}%DH}7sBIg(-=ij`?%_j%Y6C*tc(|+KIF76QI1W_@FImOn6`&ldR)cblTc|p@>$r|qZEeYX zwpanmSzzw>^&mYSMRX?X&ww)EP(1{t=Jd5^&&mMYGnZSzwWr(4NS-Ej_S}C;DPIf6 z&i4fOoQ#gsD5Lj3gb5*p5JEnaC$FLI6~MQ))h)m1+vqHrL*TuQtRiTQdi~-{PXxoYA@`?%+xjV5cDpAZ+L#=W!IfdmqmL^@eJC912 zR)Zt4L^4~9+fxx!AXZ(ejYK8yY705~=9*7++0Ha(^eB1@0w?bt%Q^X>jWm>PUGLaL6+FheZ2UC7s44RprA3N&XQweuODQ{hl1Z42_b|KLI@#*5JCtcgb+dqAx-=O X@S5L@MWyCG00000NkvXXu0mjfU)V=e literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..78a269ed2349ce48444a0589b0b7a0b3b1644fe3 GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9dba4!+nDh2VVBTQ`o`%G* zuWEPxd+hU;U!>F~yFA#rXY>E+S9f$A%@|*S^`HLh!hb+n>F@ll*H%nC^SMXvz{coj zdp!dh9REjcx%FZ}<;^C!i_8{kO1iUew?}2qPc`0=c`#M=2J@NBcdNIiRWg6lb$nXx z6uqcj=ew!E#MJBw37lDHRIFyk*8kPqIc&7{UZCG^U=zEKKonJf7e*exA>ke>TvJZ zi6!Z=Z|+P@4>R`LeynTvJiY91dv=y^o|^jWQ{MBJwmbLUxj$V!)!OPpKu_qhDR!*9 z)eZNA&eUHqH(Y;ZyOnm5-HY|^7RPhV4jozHXp<$-FXf{2d*X>Yl}-G>z(WQ;pPAmj VmUTZUe`6C!*wfX|Wt~$(69CXZrl$Y^ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_1/00001.png b/tests/snapshots/nanox/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_2_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..fb4c2106140c43fa3b221c5fca4409b1f9df3a69 GIT binary patch literal 482 zcmV<80UiE{P)n#41T;ja7{`{nSVx}kGBaHfL-ebj~IiH0Z>Lc zTnxUwJMih&2|%EQS6U|kv1XoPod5(CY!S{m>r+j*=O9=Bwtz#di!=odF0-*#<4CE9 zVx?pp001!I`5ij{dA!xI(fW_$2mL!^6pzKn|9UV-Z!0sM)nKWPAAke zPo!kr0_xk#=m|Jo+3Lcl`!F7vXz}Ga0!{QM`Sj7yp0GwaieC>_)WqEMFc-000000000T YzhPoi+DKpawEzGB07*qoM6N<$g7>N082|tP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4d888576f634186774863daba1124e4b565d5197 GIT binary patch literal 465 zcmV;?0WSWDP)Z=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjff}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_1_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c94c15959db785216a68125bd89876bcf975a517 GIT binary patch literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=lvba4!+nDh4L#dXaJJPnCu zo6H~nmG3OK6jy7R!X&Gadh>s*rKqawsuD$@CI)-$rBi}Fy=!f@f6vz<;KcWLo1sPe zp8NM?GrTm9N~||{+M8`Xf5AJ==+4(2-cy%Xew@$v$Wy02ZlkvOk<6bjK8U4$-Xoj* zrMJ!^kwH)X=%T(Kia%2hX==WxR^D-{L=T|mun*A+A*JJJj_cPb@ObbgdB}Di+`tvrt2wPtC zzZ^X$bQC$YIfefQ4CZQeZJ-jVM>?Dovs5-EMXe_=Y- zVe*^a?A$*2vVMbO#mcjJ7kG>=-go0Py?DRJ@PmukCld~%gTe~DWM4f9YMQN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_1_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..fda030d56c962bf18cefd5b175cf5f284825a115 GIT binary patch literal 767 zcmVJK#dKP) zNf80eSi!kJrh!`A^5~uH-vi2mP4yrY&**#io}CUjM^2Z5*P1ScBlEN&lXLwkrF?B{ zyS*l;`=qsA)7pfM;q}+ zMfPx(T2*s=L>9}lp)6T{CsUS3D>oGvXpF_U8ate-@GKfWC^R4d>@!ni@X10msPj!BV7o=UmFm)0mo^3D%`wS=k%bmi23` zv5hUhBdR%{;dUp`n-^>!*Lssn5w(#n#XH~5K}B#<5tU$-1nKJQ*r|+V+0;JEp0kdr z!KBs-Mz;E~V?6BHvZI_1(sQadIXt(D`p|H2FnX>RT0?GFe_Ad`CVbqsS;cr;Qg|$4 zhMQA~51EqU$GH?Xouy?X_brxMS3qr-)pC2-MLGwt+p+lA+CGq8WG;!f+a>8bzU6>; z-tiP`-@{351J^aG=0&xNNN28SBE-lho&$G7-pj*p#PXAF510;HNH^Y50{}oacK(Z! zWbH`~#7S~Syn*bepsHO7uv3jJVUeUNNkTdYM9zrqI}p`RX-Ve*IcFtrVc8(>`X+qw xN1u6kR|h}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_2_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73bcd7be8129111556869a06498a505ad48fa2b5 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|6gw#apSdL;!B!fP0>-o7)vc-~Xa8S7b=o^Q!o z6dt*)SV8IVxq~dK9-)(8q?G;nHTjvAV_89Av#SIH!vp)jyLi`{>HM9WROz?st;p)? z3u~R(-R8`FeQo-$>-}3!rQI~X@k;4UpY?RB*RI|n+vKlSOms8;E8KT!>*R~8#Y61Q zF`K3QnYH+N3GeRfEK}BQG>N!-Cu@^g+Mn-_Ht*QN!aJ$Ty>#hS)&q8i>7~Dx<+zsz z-TS@zWZA3Qr3Wm6ziEYNS+;qpy+ j;$M#xd0?O*gBQgTe~DWM4f_8qIv literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_2_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..fb4c2106140c43fa3b221c5fca4409b1f9df3a69 GIT binary patch literal 482 zcmV<80UiE{P)n#41T;ja7{`{nSVx}kGBaHfL-ebj~IiH0Z>Lc zTnxUwJMih&2|%EQS6U|kv1XoPod5(CY!S{m>r+j*=O9=Bwtz#di!=odF0-*#<4CE9 zVx?pp001!I`5ij{dA!xI(fW_$2mL!^6pzKn|9UV-Z!0sM)nKWPAAke zPo!kr0_xk#=m|Jo+3Lcl`!F7vXz}Ga0!{QM`Sj7yp0GwaieC>_)WqEMFc-000000000T YzhPoi+DKpawEzGB07*qoM6N<$g7>N082|tP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4d888576f634186774863daba1124e4b565d5197 GIT binary patch literal 465 zcmV;?0WSWDP)Z=3?r2II?mhcXQUCw| zJWQ_GVa~$Wn6VWRy|*lPavo&TUXa>BasyKR)~>i88!sW$_&Pw{@UhSBVGb7-x%s7j z+bih>+Z%aC(jhy5PHT2U@4LM0IQw+kjpvaA(A&g6TfLOXyVSImXVPwH#1E=j&~G-i zYOQZy$_G7B^j-?e661}aY|VJ}?{C(5ZbKY&@4KJ4RmS~%PR6OZ|DgE;plA7?y}xt* zOCO%pQG^(*LMt6~GGh>m?gan<0000000000000000K)tN(WZ6rfXxU500000NkvXX Hu0mjff}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_1_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c94c15959db785216a68125bd89876bcf975a517 GIT binary patch literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=lvba4!+nDh4L#dXaJJPnCu zo6H~nmG3OK6jy7R!X&Gadh>s*rKqawsuD$@CI)-$rBi}Fy=!f@f6vz<;KcWLo1sPe zp8NM?GrTm9N~||{+M8`Xf5AJ==+4(2-cy%Xew@$v$Wy02ZlkvOk<6bjK8U4$-Xoj* zrMJ!^kwH)X=%T(Kia%2hX==WxR^D-{L=T|mun*A+A*JJJj_cPb@ObbgdB}Di+`tvrt2wPtC zzZ^X$bQC$YIfefQ4CZQeZJ-jVM>?Dovs5-EMXe_=Y- zVe*^a?A$*2vVMbO#mcjJ7kG>=-go0Py?DRJ@PmukCld~%gTe~DWM4f9YMQN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_1_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..fda030d56c962bf18cefd5b175cf5f284825a115 GIT binary patch literal 767 zcmVJK#dKP) zNf80eSi!kJrh!`A^5~uH-vi2mP4yrY&**#io}CUjM^2Z5*P1ScBlEN&lXLwkrF?B{ zyS*l;`=qsA)7pfM;q}+ zMfPx(T2*s=L>9}lp)6T{CsUS3D>oGvXpF_U8ate-@GKfWC^R4d>@!ni@X10msPj!BV7o=UmFm)0mo^3D%`wS=k%bmi23` zv5hUhBdR%{;dUp`n-^>!*Lssn5w(#n#XH~5K}B#<5tU$-1nKJQ*r|+V+0;JEp0kdr z!KBs-Mz;E~V?6BHvZI_1(sQadIXt(D`p|H2FnX>RT0?GFe_Ad`CVbqsS;cr;Qg|$4 zhMQA~51EqU$GH?Xouy?X_brxMS3qr-)pC2-MLGwt+p+lA+CGq8WG;!f+a>8bzU6>; z-tiP`-@{351J^aG=0&xNNN28SBE-lho&$G7-pj*p#PXAF510;HNH^Y50{}oacK(Z! zWbH`~#7S~Syn*bepsHO7uv3jJVUeUNNkTdYM9zrqI}p`RX-Ve*IcFtrVc8(>`X+qw xN1u6kR|h}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_2_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73bcd7be8129111556869a06498a505ad48fa2b5 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|6gw#apSdL;!B!fP0>-o7)vc-~Xa8S7b=o^Q!o z6dt*)SV8IVxq~dK9-)(8q?G;nHTjvAV_89Av#SIH!vp)jyLi`{>HM9WROz?st;p)? z3u~R(-R8`FeQo-$>-}3!rQI~X@k;4UpY?RB*RI|n+vKlSOms8;E8KT!>*R~8#Y61Q zF`K3QnYH+N3GeRfEK}BQG>N!-Cu@^g+Mn-_Ht*QN!aJ$Ty>#hS)&q8i>7~Dx<+zsz z-TS@zWZA3Qr3Wm6ziEYNS+;qpy+ j;$M#xd0?O*gBQgTe~DWM4f_8qIv literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_2_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_multisig_wsh_v1_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..75480f35c8d1509e500ff5b2de620a44c58b52d5 GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|$OV9NWYgHeZC%h%v z%lpDhmn(8s{(sI0wW;ja5qmBpwQ}!7+lj}jbG|0tp0i+9$|ieX#j7dxM%NAqg`T+N lHYu`sp@%*&RFHwe8FBWN1>1}kvm5~ld%F6$taD0e0suD2tR(;d literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_0_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..99f53dd6c681cb5c62096f7e222d26ab67c712bf GIT binary patch literal 780 zcmV+n1M~ceP)` zEU^NFvB21GlTcdR^XN$C?*ZwCO?4|sXGWj9_sn#_G4nDN>^WUGM&dMRvu6HDDg8_w zJI)E_KIv_zUPQ0I2@^sHA%u{Ks%mAY*jx|{ijNzM0)+&^J0(D(gTwvh4gl|hL-$lT z5IQBewV=|t;_z~uT+AbkIO7QY^f^fMie-9-CeZ+IfBZC$;$^8-&q&t__q%~8QyCX; z1$ZS)u$kE=aEW<0?j8>j+|_?UX}XOmN;9Yy)Z%|7A(lC@rq(mNC90tsF{Qn5CZa5E zFp{33M>wEA{CAFd1{Kq0LzL-Tr1C1=YDLLS*j(4(&Xz0_h$Pq+s(NUA*A*`;O(lnM z;@4}{nwXSV#x=|3_M!tk49nbMEIJ@ykPnE-xGY38Cq||ZZbh57<)yrMsylr~j72pZ z5xidJb)hY;p6-Y!CL}iqLC1)zH{KO-_wEPZxDbSh!Zoa&{?5rsxIqt3jxe{5)?AZbJl}ZLOulY35Tjru%Q{IigzCu!y*SP$tkHM+1S8aMRN6DWx=R-1B z&p2^_IRUd-QZv^|-$7vgVK9 z0Op2Ms`mgraL;2Xf)~+Z0mTJsa92P&;$yv*MUu=VYApIj?0Z<^KV)#0iv9Pe8bSzp z3T4&hsuC7KiO&ivv+h$+X*>PZjo02gw+}cQzm1>}U3-1yb@1SW7#P%x$NqyI0J3;} z^r;T0itCkqu}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_0_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..905cdba55118864eb63efbf4c62d6a6ccac3648f GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}6ba4!+nDh3gW8Yx~9*01y zSH3m>m4E7Oc5pSZnBdy%`y=0V?h2%lE1kNhV)z*Ex zQQtk1aasCuJMP#9S(lql=lJG|i#xvjcYXN{n>_uk6El_m8*l9P@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_v1_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_v1_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..75480f35c8d1509e500ff5b2de620a44c58b52d5 GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|$OV9NWYgHeZC%h%v z%lpDhmn(8s{(sI0wW;ja5qmBpwQ}!7+lj}jbG|0tp0i+9$|ieX#j7dxM%NAqg`T+N lHYu`sp@%*&RFHwe8FBWN1>1}kvm5~ld%F6$taD0e0suD2tR(;d literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_v1_0_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..99f53dd6c681cb5c62096f7e222d26ab67c712bf GIT binary patch literal 780 zcmV+n1M~ceP)` zEU^NFvB21GlTcdR^XN$C?*ZwCO?4|sXGWj9_sn#_G4nDN>^WUGM&dMRvu6HDDg8_w zJI)E_KIv_zUPQ0I2@^sHA%u{Ks%mAY*jx|{ijNzM0)+&^J0(D(gTwvh4gl|hL-$lT z5IQBewV=|t;_z~uT+AbkIO7QY^f^fMie-9-CeZ+IfBZC$;$^8-&q&t__q%~8QyCX; z1$ZS)u$kE=aEW<0?j8>j+|_?UX}XOmN;9Yy)Z%|7A(lC@rq(mNC90tsF{Qn5CZa5E zFp{33M>wEA{CAFd1{Kq0LzL-Tr1C1=YDLLS*j(4(&Xz0_h$Pq+s(NUA*A*`;O(lnM z;@4}{nwXSV#x=|3_M!tk49nbMEIJ@ykPnE-xGY38Cq||ZZbh57<)yrMsylr~j72pZ z5xidJb)hY;p6-Y!CL}iqLC1)zH{KO-_wEPZxDbSh!Zoa&{?5rsxIqt3jxe{5)?AZbJl}ZLOulY35Tjru%Q{IigzCu!y*SP$tkHM+1S8aMRN6DWx=R-1B z&p2^_IRUd-QZv^|-$7vgVK9 z0Op2Ms`mgraL;2Xf)~+Z0mTJsa92P&;$yv*MUu=VYApIj?0Z<^KV)#0iv9Pe8bSzp z3T4&hsuC7KiO&ivv+h$+X*>PZjo02gw+}cQzm1>}U3-1yb@1SW7#P%x$NqyI0J3;} z^r;T0itCkqu}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_v1_0_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_large_amount_v1_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..905cdba55118864eb63efbf4c62d6a6ccac3648f GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}6ba4!+nDh3gW8Yx~9*01y zSH3m>m4E7Oc5pSZnBdy%`y=0V?h2%lE1kNhV)z*Ex zQQtk1aasCuJMP#9S(lql=lJG|i#xvjcYXN{n>_uk6El_m8*l9P@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..05ccaac79741aac66e30b935ffdee643ba8e1b43 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Jr`_=;_!R_^H9`=wn<4ooIqU_I)Z`|U##Z%AYRL;xirLie-7Wb zneWTLu$FXsoZH#5(#&i3ybCsqs%I9S3HY@|S0JDtB$JLl%jxcqAO;r(;iUPwLN|*i;g<@5<7jB47D? zn&0)uRswC`7-!68T5TO~@ZxImEZM&&&c-gQ&%QVDenG&Km$H_Xe-c)(_EzV9bbfPk z+O?)xtWVBP-=>*&Kkp^WjQ0frelwo|c`PoJ!|=Tm%Vwy85}Sb4q9e07_i0YybcN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_0_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8efd1df120d50b84cd15a7884717514b7c131c GIT binary patch literal 724 zcmV;_0xSKAP)j{ZUbD*c$mB4IF76RI1Vu;-m;6$J3u&8>;~Z)vr!1iV@yYjcXiAC zJYok3X9d@OpM=umUPSL?{~3@L9I8h_syTh{*|ReMdFEv*xN^E499gGe%ro;(O6g~# zZk!X$bJ9Cby%qiZLzoak2qA>DQN6E%0;k!S@meBsw9LpD?+PuZv*OCOsubbfr#!%y z{)hqCWpN`T()vIF5WXlcu3~_$nwdAF>Wgt>yx!b}Yj#bl^tnUNUh}qNPs`mcO?qx}+GV_h2M}&ULP*LTmZV zaRy47jYG0n0a(h{0!4VD(+qJnYE54 zYw_ti9U$NBdXe`#?nKWCfZh8d?|0*U*Dli4Jm4E*@DM&B3%!?$lNp1h+~HocoFH1d z1?tC$4IPTG+4?c4;#Rz(&`1D+63qHcldjUmxQI09{f1i5X_Wv=3-Y6P*D%}l#i!}w zR;u$X^txux&b8v@Yr6jRJVYA2dAfNU6JN zy9Xrbj_K=bqU%@3a{8@;5JCtcgb+dqA%qY@2qA=!&)^>!)Ke!g;}B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_0_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_0_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..70f4c453def4bff430d638699a988c47376899e5 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`htba4!+nDh4LZQer$JPsEd zZXEgD|0MRuiVmlFLM9t8-}@Zu)Y{`4e7yyzhe7B22EGOEp_ivCC5fK2(SOZwOmF7* zjAo{kOQ)5tEsI$*@7aaRRt<)sy*F+6TvW~$m3|ZuzkBO}T)^L%-#bs}g&(Mk4*21h z;Zrj0=@zzCuePyC=QswMcFsNX>wf*Axafdg6*~_2N-!`yn73@p!mFBT`)hU1b8h{% z@z#uO_pDNveqFG=QD^p3g@vY366?zCUVUj!45`2M((}ipX<`ocm!?i-wAfN25q|Ep zQ+f3F$r>N{W7SWkrmJIJgt9|x}Wpr3)al1i|*b0buP7k#@Fu8w=Ni+ldt%f y{z&hI^_xKE>MI9?ZfCFRP*CuI!L_J;oT-G@yGywo8{GZ|g literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_0_1/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..05ccaac79741aac66e30b935ffdee643ba8e1b43 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Jr`_=;_!R_^H9`=wn<4ooIqU_I)Z`|U##Z%AYRL;xirLie-7Wb zneWTLu$FXsoZH#5(#&i3ybCsqs%I9S3HY@|S0JDtB$JLl%jxcqAO;r(;iUPwLN|*i;g<@5<7jB47D? zn&0)uRswC`7-!68T5TO~@ZxImEZM&&&c-gQ&%QVDenG&Km$H_Xe-c)(_EzV9bbfPk z+O?)xtWVBP-=>*&Kkp^WjQ0frelwo|c`PoJ!|=Tm%Vwy85}Sb4q9e07_i0YybcN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8efd1df120d50b84cd15a7884717514b7c131c GIT binary patch literal 724 zcmV;_0xSKAP)j{ZUbD*c$mB4IF76RI1Vu;-m;6$J3u&8>;~Z)vr!1iV@yYjcXiAC zJYok3X9d@OpM=umUPSL?{~3@L9I8h_syTh{*|ReMdFEv*xN^E499gGe%ro;(O6g~# zZk!X$bJ9Cby%qiZLzoak2qA>DQN6E%0;k!S@meBsw9LpD?+PuZv*OCOsubbfr#!%y z{)hqCWpN`T()vIF5WXlcu3~_$nwdAF>Wgt>yx!b}Yj#bl^tnUNUh}qNPs`mcO?qx}+GV_h2M}&ULP*LTmZV zaRy47jYG0n0a(h{0!4VD(+qJnYE54 zYw_ti9U$NBdXe`#?nKWCfZh8d?|0*U*Dli4Jm4E*@DM&B3%!?$lNp1h+~HocoFH1d z1?tC$4IPTG+4?c4;#Rz(&`1D+63qHcldjUmxQI09{f1i5X_Wv=3-Y6P*D%}l#i!}w zR;u$X^txux&b8v@Yr6jRJVYA2dAfNU6JN zy9Xrbj_K=bqU%@3a{8@;5JCtcgb+dqA%qY@2qA=!&)^>!)Ke!g;}B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..70f4c453def4bff430d638699a988c47376899e5 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`htba4!+nDh4LZQer$JPsEd zZXEgD|0MRuiVmlFLM9t8-}@Zu)Y{`4e7yyzhe7B22EGOEp_ivCC5fK2(SOZwOmF7* zjAo{kOQ)5tEsI$*@7aaRRt<)sy*F+6TvW~$m3|ZuzkBO}T)^L%-#bs}g&(Mk4*21h z;Zrj0=@zzCuePyC=QswMcFsNX>wf*Axafdg6*~_2N-!`yn73@p!mFBT`)hU1b8h{% z@z#uO_pDNveqFG=QD^p3g@vY366?zCUVUj!45`2M((}ipX<`ocm!?i-wAfN25q|Ep zQ+f3F$r>N{W7SWkrmJIJgt9|x}Wpr3)al1i|*b0buP7k#@Fu8w=Ni+ldt%f y{z&hI^_xKE>MI9?ZfCFRP*CuI!L_J;oT-G@yGywo8{GZ|g literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_1/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..05ccaac79741aac66e30b935ffdee643ba8e1b43 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Jr`_=;_!R_^H9`=wn<4ooIqU_I)Z`|U##Z%AYRL;xirLie-7Wb zneWTLu$FXsoZH#5(#&i3ybCsqs%I9S3HY@|S0JDtB$JLl%jxcqAO;r(;iUPwLN|*i;g<@5<7jB47D? zn&0)uRswC`7-!68T5TO~@ZxImEZM&&&c-gQ&%QVDenG&Km$H_Xe-c)(_EzV9bbfPk z+O?)xtWVBP-=>*&Kkp^WjQ0frelwo|c`PoJ!|=Tm%Vwy85}Sb4q9e07_i0YybcN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8efd1df120d50b84cd15a7884717514b7c131c GIT binary patch literal 724 zcmV;_0xSKAP)j{ZUbD*c$mB4IF76RI1Vu;-m;6$J3u&8>;~Z)vr!1iV@yYjcXiAC zJYok3X9d@OpM=umUPSL?{~3@L9I8h_syTh{*|ReMdFEv*xN^E499gGe%ro;(O6g~# zZk!X$bJ9Cby%qiZLzoak2qA>DQN6E%0;k!S@meBsw9LpD?+PuZv*OCOsubbfr#!%y z{)hqCWpN`T()vIF5WXlcu3~_$nwdAF>Wgt>yx!b}Yj#bl^tnUNUh}qNPs`mcO?qx}+GV_h2M}&ULP*LTmZV zaRy47jYG0n0a(h{0!4VD(+qJnYE54 zYw_ti9U$NBdXe`#?nKWCfZh8d?|0*U*Dli4Jm4E*@DM&B3%!?$lNp1h+~HocoFH1d z1?tC$4IPTG+4?c4;#Rz(&`1D+63qHcldjUmxQI09{f1i5X_Wv=3-Y6P*D%}l#i!}w zR;u$X^txux&b8v@Yr6jRJVYA2dAfNU6JN zy9Xrbj_K=bqU%@3a{8@;5JCtcgb+dqA%qY@2qA=!&)^>!)Ke!g;}B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..70f4c453def4bff430d638699a988c47376899e5 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`htba4!+nDh4LZQer$JPsEd zZXEgD|0MRuiVmlFLM9t8-}@Zu)Y{`4e7yyzhe7B22EGOEp_ivCC5fK2(SOZwOmF7* zjAo{kOQ)5tEsI$*@7aaRRt<)sy*F+6TvW~$m3|ZuzkBO}T)^L%-#bs}g&(Mk4*21h z;Zrj0=@zzCuePyC=QswMcFsNX>wf*Axafdg6*~_2N-!`yn73@p!mFBT`)hU1b8h{% z@z#uO_pDNveqFG=QD^p3g@vY366?zCUVUj!45`2M((}ipX<`ocm!?i-wAfN25q|Ep zQ+f3F$r>N{W7SWkrmJIJgt9|x}Wpr3)al1i|*b0buP7k#@Fu8w=Ni+ldt%f y{z&hI^_xKE>MI9?ZfCFRP*CuI!L_J;oT-G@yGywo8{GZ|g literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_1/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..05ccaac79741aac66e30b935ffdee643ba8e1b43 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Jr`_=;_!R_^H9`=wn<4ooIqU_I)Z`|U##Z%AYRL;xirLie-7Wb zneWTLu$FXsoZH#5(#&i3ybCsqs%I9S3HY@|S0JDtB$JLl%jxcqAO;r(;iUPwLN|*i;g<@5<7jB47D? zn&0)uRswC`7-!68T5TO~@ZxImEZM&&&c-gQ&%QVDenG&Km$H_Xe-c)(_EzV9bbfPk z+O?)xtWVBP-=>*&Kkp^WjQ0frelwo|c`PoJ!|=Tm%Vwy85}Sb4q9e07_i0YybcN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8efd1df120d50b84cd15a7884717514b7c131c GIT binary patch literal 724 zcmV;_0xSKAP)j{ZUbD*c$mB4IF76RI1Vu;-m;6$J3u&8>;~Z)vr!1iV@yYjcXiAC zJYok3X9d@OpM=umUPSL?{~3@L9I8h_syTh{*|ReMdFEv*xN^E499gGe%ro;(O6g~# zZk!X$bJ9Cby%qiZLzoak2qA>DQN6E%0;k!S@meBsw9LpD?+PuZv*OCOsubbfr#!%y z{)hqCWpN`T()vIF5WXlcu3~_$nwdAF>Wgt>yx!b}Yj#bl^tnUNUh}qNPs`mcO?qx}+GV_h2M}&ULP*LTmZV zaRy47jYG0n0a(h{0!4VD(+qJnYE54 zYw_ti9U$NBdXe`#?nKWCfZh8d?|0*U*Dli4Jm4E*@DM&B3%!?$lNp1h+~HocoFH1d z1?tC$4IPTG+4?c4;#Rz(&`1D+63qHcldjUmxQI09{f1i5X_Wv=3-Y6P*D%}l#i!}w zR;u$X^txux&b8v@Yr6jRJVYA2dAfNU6JN zy9Xrbj_K=bqU%@3a{8@;5JCtcgb+dqA%qY@2qA=!&)^>!)Ke!g;}B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_v1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_v1_0_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_v1_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..70f4c453def4bff430d638699a988c47376899e5 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`htba4!+nDh4LZQer$JPsEd zZXEgD|0MRuiVmlFLM9t8-}@Zu)Y{`4e7yyzhe7B22EGOEp_ivCC5fK2(SOZwOmF7* zjAo{kOQ)5tEsI$*@7aaRRt<)sy*F+6TvW~$m3|ZuzkBO}T)^L%-#bs}g&(Mk4*21h z;Zrj0=@zzCuePyC=QswMcFsNX>wf*Axafdg6*~_2N-!`yn73@p!mFBT`)hU1b8h{% z@z#uO_pDNveqFG=QD^p3g@vY366?zCUVUj!45`2M((}ipX<`ocm!?i-wAfN25q|Ep zQ+f3F$r>N{W7SWkrmJIJgt9|x}Wpr3)al1i|*b0buP7k#@Fu8w=Ni+ldt%f y{z&hI^_xKE>MI9?ZfCFRP*CuI!L_J;oT-G@yGywo8{GZ|g literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_v1_0_1/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_pkh_1to1_v1_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..760425304657bf273b8136e3420d3c5248b7561d GIT binary patch literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x2ba4!+nDh2#w9p|19*2uB zb_jplzvRu){&NOC6;q--3-&zc{_Vh{n!A_-sOiJ@kkHV@?t%{_Z5ae7%2aK)ypg^y z{vz{>psQ0Z2`;;1aqDNpvuU4nF89A&WuxQuhsz*5>F39e*qa9JPxmg551cpew&v0s zFHZ9b7wiz}wt6)C$z=XFlbY(xo6K3)HyD{-Ke=~#oc6<+Pm-gTEHKiHw^~{$zBXT? z`SSm=r;H2?N2=DmzGd_9YHD*_=<>>>yTzX)H{VO$cIL_ypZ5K~Cn*}~eEqV`Cr`d4 zRqE`zG`B||7Hv4%eZ#6;FK&Le{Q|KoK1>@=@0q!yrcK0v@mV`>7uRbO?kkGd59(>2 z_&j|+o7H_ww(S%0Z!VR2o3<~+y#9}D8I#Pk#P9^K2 z=S}F`H`{GR=RV_S3PO<@mpmuTY+lNt4-6z^u;Gk!umflBpK!TUkg%t#pUXO@geCxp Cz_pVA literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..fda030d56c962bf18cefd5b175cf5f284825a115 GIT binary patch literal 767 zcmVJK#dKP) zNf80eSi!kJrh!`A^5~uH-vi2mP4yrY&**#io}CUjM^2Z5*P1ScBlEN&lXLwkrF?B{ zyS*l;`=qsA)7pfM;q}+ zMfPx(T2*s=L>9}lp)6T{CsUS3D>oGvXpF_U8ate-@GKfWC^R4d>@!ni@X10msPj!BV7o=UmFm)0mo^3D%`wS=k%bmi23` zv5hUhBdR%{;dUp`n-^>!*Lssn5w(#n#XH~5K}B#<5tU$-1nKJQ*r|+V+0;JEp0kdr z!KBs-Mz;E~V?6BHvZI_1(sQadIXt(D`p|H2FnX>RT0?GFe_Ad`CVbqsS;cr;Qg|$4 zhMQA~51EqU$GH?Xouy?X_brxMS3qr-)pC2-MLGwt+p+lA+CGq8WG;!f+a>8bzU6>; z-tiP`-@{351J^aG=0&xNNN28SBE-lho&$G7-pj*p#PXAF510;HNH^Y50{}oacK(Z! zWbH`~#7S~Syn*bepsHO7uv3jJVUeUNNkTdYM9zrqI}p`RX-Ve*IcFtrVc8(>`X+qw xN1u6kR|h}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f71b3a662be11839d927664dffdafa58cb40cc7c GIT binary patch literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WOba4!+nDh2Vv{17Gk3-VZL*FkFQJEO~%(t7krTl z;4Tq-TEiPsddoCIfmPDHqxZzQ`Sq8gG&SV!#5_>sVPN<$ziQgTyw96rO|M;7S)Wz% z`r_XHT|HOcm!H0})z#$nzk_k^4-58u486;L@8?&&uqxqwO9b~Slw136?Ot1WW!}}e z`!B_n#TMjEUYZsqe?G6{(YX`;`!i1MQ`TYi75dd?cza5ELw>}hH}`qhmT#05cTK@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..760425304657bf273b8136e3420d3c5248b7561d GIT binary patch literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x2ba4!+nDh2#w9p|19*2uB zb_jplzvRu){&NOC6;q--3-&zc{_Vh{n!A_-sOiJ@kkHV@?t%{_Z5ae7%2aK)ypg^y z{vz{>psQ0Z2`;;1aqDNpvuU4nF89A&WuxQuhsz*5>F39e*qa9JPxmg551cpew&v0s zFHZ9b7wiz}wt6)C$z=XFlbY(xo6K3)HyD{-Ke=~#oc6<+Pm-gTEHKiHw^~{$zBXT? z`SSm=r;H2?N2=DmzGd_9YHD*_=<>>>yTzX)H{VO$cIL_ypZ5K~Cn*}~eEqV`Cr`d4 zRqE`zG`B||7Hv4%eZ#6;FK&Le{Q|KoK1>@=@0q!yrcK0v@mV`>7uRbO?kkGd59(>2 z_&j|+o7H_ww(S%0Z!VR2o3<~+y#9}D8I#Pk#P9^K2 z=S}F`H`{GR=RV_S3PO<@mpmuTY+lNt4-6z^u;Gk!umflBpK!TUkg%t#pUXO@geCxp Cz_pVA literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..fda030d56c962bf18cefd5b175cf5f284825a115 GIT binary patch literal 767 zcmVJK#dKP) zNf80eSi!kJrh!`A^5~uH-vi2mP4yrY&**#io}CUjM^2Z5*P1ScBlEN&lXLwkrF?B{ zyS*l;`=qsA)7pfM;q}+ zMfPx(T2*s=L>9}lp)6T{CsUS3D>oGvXpF_U8ate-@GKfWC^R4d>@!ni@X10msPj!BV7o=UmFm)0mo^3D%`wS=k%bmi23` zv5hUhBdR%{;dUp`n-^>!*Lssn5w(#n#XH~5K}B#<5tU$-1nKJQ*r|+V+0;JEp0kdr z!KBs-Mz;E~V?6BHvZI_1(sQadIXt(D`p|H2FnX>RT0?GFe_Ad`CVbqsS;cr;Qg|$4 zhMQA~51EqU$GH?Xouy?X_brxMS3qr-)pC2-MLGwt+p+lA+CGq8WG;!f+a>8bzU6>; z-tiP`-@{351J^aG=0&xNNN28SBE-lho&$G7-pj*p#PXAF510;HNH^Y50{}oacK(Z! zWbH`~#7S~Syn*bepsHO7uv3jJVUeUNNkTdYM9zrqI}p`RX-Ve*IcFtrVc8(>`X+qw xN1u6kR|h}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f71b3a662be11839d927664dffdafa58cb40cc7c GIT binary patch literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WOba4!+nDh2Vv{17Gk3-VZL*FkFQJEO~%(t7krTl z;4Tq-TEiPsddoCIfmPDHqxZzQ`Sq8gG&SV!#5_>sVPN<$ziQgTyw96rO|M;7S)Wz% z`r_XHT|HOcm!H0})z#$nzk_k^4-58u486;L@8?&&uqxqwO9b~Slw136?Ot1WW!}}e z`!B_n#TMjEUYZsqe?G6{(YX`;`!i1MQ`TYi75dd?cza5ELw>}hH}`qhmT#05cTK@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_0_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97499543f93907238233469136f8c9365cd7e79a GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2Vbl+hE4u`<< zD|0veSFP0lEO_#hgwK@{8K3I&;a-h-qd2??B8XOyg_-mU+uxpUeAyNVwTz7h-!53KiA^O#Cc`{x;WKX}dL zMU`xGYq#oMs((7Cs+srd72D=W@rNewY_cx4&J4QWUvz1o!e#r1SJU2qy5x6kRosNU zi*N2sC_Hm%-q!_jTeBESve)d;&e0Q>+G4z2&+(<#{W8|{>Wbh~WnXgJm@nU`w?!n%&i<#ku;UFS?GVG>t6(q-9l-GJ?*L~})tqsl7z&R6b>egVS(85}U$FU~2^ TVzGavDM;AU)z4*}Q$iB}p_iTd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_1_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97499543f93907238233469136f8c9365cd7e79a GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2Vbl+hE4u`<< zD|0veSFP0lEO_#hgwK@{8K3I&;a-h-qd2??B8XOyg_-mU+uxpUeAyNVwTz7h-!53KiA^O#Cc`{x;WKX}dL zMU`xGYq#oMs((7Cs+srd72D=W@rNewY_cx4&J4QWUvz1o!e#r1SJU2qy5x6kRosNU zi*N2sC_Hm%-q!_jTeBESve)d;&e0Q>+G4z2&+(<#{W8|{>Wbh~WnXgJm@nU`w?!n%&i<#ku;UFS?GVG>t6(q-9l-GJ?*L~})tqsl7z&R6b>egVS(85}U$FU~2^ TVzGavDM;AU)z4*}Q$iB}p_iTd literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..700453f77358dbd81ba0271da35c7fdc921d320c GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2VF5e*qo`yt| zdo91^SC)Td=Ty|);A)qBl#ov1C zx;8K#T^eztgZ-qse8;4wI`gLZqJ7M_uH;Pq-LW_Pj`7LkPD>V;X~w_0RNHln{n(P< z+sfsDPG5ig(a$T{^KHE)WWSbJ-oPtEZ@ytVtRVb1)oP*IukMZP^G-O;tKh3v+5-#$WN;w&-u?YQ#ZINg QaD#+BUHx3vIVCg!033IwcK`qY literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..6c57d4dd591edcb595d432c52143dba70d3e23c6 GIT binary patch literal 917 zcmV;G18V$>=D9~t?h z{IRQ}DfJ(%;!*spFnSPom&O!F##+r*O1YlW-*%}PeurDMQQM%-hEhr^5O~U%4@TK= zmdt?GaH9cbPi33s&?}{=fo5f83adh9K#*03uy6)2kHN7&W`PE@)uRTkkrB(n4hSDC za-`F~ImdNWrQ5cy_$BCaozC<#Kr%BjzKlG``U5iT-XyC|L3F`oiEMBoYwMM#by8F_ zfK{kR09pl2+_^u0iup^%>TAmPneTuoPm&}_lEjZo-Rx$o1S19U=a&1|rgKqO4m=aP zt{A~W9(8>S0XG=c_Z=yM2A5rD)T@^Cua&_Iy-Tb8bm|c5-MbQPmANFFW2D$^VcDde zL0U6_MFGjC&e`swgcw)zx29&RRM+@qS(Sb71Fj)i8@kZZ7<5K{uLEG>PIkYLVIaX} zYs(C-_cnW2CC0^q>&&#b0()*9deXx|l@UnFl zw9?WQmNHWX=&-l>!~XF4ym7Q;pC>cl0eDLXr3iL0VTUN=OeJqL($tk%y(rNXDJoFK z$*_Z~5ynleY65NiVbUx6(I3W)ZjCa~c$AZ%1F~$_KDY!yGhl4#Fywn_e{A5~wWdjj zr6=IWy!{Tq<2XiFqXvtII0L#NWxnB+Crk}JeVU2mTej$vD2MwqV0e203%cyv+v#0M zug0{}S)LG!C-~sv9WP`)Ow23E8>U;sha^do1m{;b$Nc&(HIsP>1+nARosNn7;3~Wd zC}?C-C`IhJst9T3817S$sv~w22aF#Ly>kP#_l;@mDRmo^hx@LyejM-sWWS~Q=(PjR z0I9{Q3T0RFWb!BI5;&_IQp9AQ#H$q^ r#Q9W1Z{~4(z&Ch;Je(v+l02P19Wsnw&}-*700000NkvXXu0mjf-*>yw literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..562b8c3a7d73de03a021e86dd7b6a40d2558ecef GIT binary patch literal 504 zcmVO-XHi(D?sxm170001wQA#PL_zxNNXZ1&1 z%kD#4C#ZYxh(_z%h-m+;HjX*xq;;<@Z|g+d&foMF4eAZ3Gco7fi-NyI)jQ-oeY*K8 zKm=5*261m{Vd~6THPGVRwxoB7vwDl>M^P(4bk{leueDGI*BNe6?bPI$D{26y&y;qi z*JE=`eCI_y)s{WICa0ipzw1O^C)#b^@}9GFGcJPXdupin zsklJMcC^9X-R*7o_@}43IES^?@btPAZOz4qMi7i|4c`*+w*s9gr&S`x6w z=0a2J7sTom)Z^dF^gA-o=DRn$3_uDP1F<<;=NyrLZX{FCf^MCPvOOwx;`XO?bx$>t`F?6Bp*+#>Hie;far@KWQ^ZuZl^ziwpypp)(tgdu)rY5 uj6o>E3jhEB000000000000000g!uq`W2>+d#rh`z0000hKx> literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_0/00004.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7a3d318ff4b1e9cedb9d6b003137028319b063ca GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2Vw9p|19*4k^ zJD%V6FL`sc|6Gbd&<98972j(#!+a)xnlJ^V`|{mI%o%}K|E%qBaV?tTUcyj2{mkyj z1q`h<5fQns+`ez(yt|nBMR4fpXWyJ$KI!c4mCl}XjVZg~_l)hGC$y9k_G)VERl6b- zn_{`Xag|?mGwU*i$7&lV-u(G|{+4SZQ_S=9HgGUAF#K80cst}0)*&&{(v+LiiL@{`S6Th_Dle@$+G8NZ%!deHkOpNp6NCEe|; zPQ81zTsQB@TZ3=EDvwX-6|QsQeH7SSaYaGsX1~if<%zXG|09D32L8)7@coGT_e>Wg N?CI*~vd$@?2>|oyr8EEl literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_1/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..e0409140bae521e1f652a4d827e83ed169ce2a92 GIT binary patch literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=lvba4!+nDh2#U{Q+#Ps799 z<>n9nxj)jY-Ei1Iall>83Vt41!;qT4W{%GR;u_*%y+OgYLaj8{I&l?b)y9Prz>hk1sX+)K@+x0MV9tJ#)JIg}d1 z5!SGs|5y8ZmfVViTna6>yF4_Ha#i?WIUsNP!R4Fn#9IH9|Ao)?we&N|-M9O?QTJkz zr0M3rtJ34dzopmhVGg)*GxPJ-8Pz_4)3V{cOGDUasE7R`s3dr4n|tZOd-s{upCb*)N`VY-|6U*PrbEUEDMM;K|L5 zXG9k~`SMu2VOQ(di>tORTeoy`)&HthuVW&s!;G5k&GQS7|FchE7J&sE14H$1*0q0l T*ZrCD8Z7AP>gTe~DWM4fMuWRv literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..3c91cc8f18b96a7554a78329eca981b446489055 GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2lpiq;7Ktp2I zuFmiFLggPTwjrk^*JosDYRnm#ssvH5XRy6MuNqBQ5oQf3>*qN^unan%}xvhO$>F!}G*DJRtv zf5)xf@;&aO*~xR;CwW#>KTc1N{pz_xD6ZLg$>yllX}ixF-uBxpnmsLZ;#0S%byz&7ci`ULW%mN7C;Inpoa9{@pNt`rm@w08Q1)b8J%iYN{@1J-MKC@=T+q`^&9$ z7q`b9xj!$B$uB*?ZW;RSytl2~t#`h;nrS|lRnvOy`m~SsKPL6(eV09Uc7NTK(kX>H z&m8`DrcIxF{9>i#*}ZE{i%mOT@VV`KNzmhc@eR*bzpq&>Qus=xD{S#{ZU2<7cbVZK c$iR^Im+AhDqGuahTmnI&p00i_>zopr0O=CWG5`Po literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..700453f77358dbd81ba0271da35c7fdc921d320c GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2VF5e*qo`yt| zdo91^SC)Td=Ty|);A)qBl#ov1C zx;8K#T^eztgZ-qse8;4wI`gLZqJ7M_uH;Pq-LW_Pj`7LkPD>V;X~w_0RNHln{n(P< z+sfsDPG5ig(a$T{^KHE)WWSbJ-oPtEZ@ytVtRVb1)oP*IukMZP^G-O;tKh3v+5-#$WN;w&-u?YQ#ZINg QaD#+BUHx3vIVCg!033IwcK`qY literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..6c57d4dd591edcb595d432c52143dba70d3e23c6 GIT binary patch literal 917 zcmV;G18V$>=D9~t?h z{IRQ}DfJ(%;!*spFnSPom&O!F##+r*O1YlW-*%}PeurDMQQM%-hEhr^5O~U%4@TK= zmdt?GaH9cbPi33s&?}{=fo5f83adh9K#*03uy6)2kHN7&W`PE@)uRTkkrB(n4hSDC za-`F~ImdNWrQ5cy_$BCaozC<#Kr%BjzKlG``U5iT-XyC|L3F`oiEMBoYwMM#by8F_ zfK{kR09pl2+_^u0iup^%>TAmPneTuoPm&}_lEjZo-Rx$o1S19U=a&1|rgKqO4m=aP zt{A~W9(8>S0XG=c_Z=yM2A5rD)T@^Cua&_Iy-Tb8bm|c5-MbQPmANFFW2D$^VcDde zL0U6_MFGjC&e`swgcw)zx29&RRM+@qS(Sb71Fj)i8@kZZ7<5K{uLEG>PIkYLVIaX} zYs(C-_cnW2CC0^q>&&#b0()*9deXx|l@UnFl zw9?WQmNHWX=&-l>!~XF4ym7Q;pC>cl0eDLXr3iL0VTUN=OeJqL($tk%y(rNXDJoFK z$*_Z~5ynleY65NiVbUx6(I3W)ZjCa~c$AZ%1F~$_KDY!yGhl4#Fywn_e{A5~wWdjj zr6=IWy!{Tq<2XiFqXvtII0L#NWxnB+Crk}JeVU2mTej$vD2MwqV0e203%cyv+v#0M zug0{}S)LG!C-~sv9WP`)Ow23E8>U;sha^do1m{;b$Nc&(HIsP>1+nARosNn7;3~Wd zC}?C-C`IhJst9T3817S$sv~w22aF#Ly>kP#_l;@mDRmo^hx@LyejM-sWWS~Q=(PjR z0I9{Q3T0RFWb!BI5;&_IQp9AQ#H$q^ r#Q9W1Z{~4(z&Ch;Je(v+l02P19Wsnw&}-*700000NkvXXu0mjf-*>yw literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..562b8c3a7d73de03a021e86dd7b6a40d2558ecef GIT binary patch literal 504 zcmVO-XHi(D?sxm170001wQA#PL_zxNNXZ1&1 z%kD#4C#ZYxh(_z%h-m+;HjX*xq;;<@Z|g+d&foMF4eAZ3Gco7fi-NyI)jQ-oeY*K8 zKm=5*261m{Vd~6THPGVRwxoB7vwDl>M^P(4bk{leueDGI*BNe6?bPI$D{26y&y;qi z*JE=`eCI_y)s{WICa0ipzw1O^C)#b^@}9GFGcJPXdupin zsklJMcC^9X-R*7o_@}43IES^?@btPAZOz4qMi7i|4c`*+w*s9gr&S`x6w z=0a2J7sTom)Z^dF^gA-o=DRn$3_uDP1F<<;=NyrLZX{FCf^MCPvOOwx;`XO?bx$>t`F?6Bp*+#>Hie;far@KWQ^ZuZl^ziwpypp)(tgdu)rY5 uj6o>E3jhEB000000000000000g!uq`W2>+d#rh`z0000hKx> literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00004.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7a3d318ff4b1e9cedb9d6b003137028319b063ca GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2Vw9p|19*4k^ zJD%V6FL`sc|6Gbd&<98972j(#!+a)xnlJ^V`|{mI%o%}K|E%qBaV?tTUcyj2{mkyj z1q`h<5fQns+`ez(yt|nBMR4fpXWyJ$KI!c4mCl}XjVZg~_l)hGC$y9k_G)VERl6b- zn_{`Xag|?mGwU*i$7&lV-u(G|{+4SZQ_S=9HgGUAF#K80cst}0)*&&{(v+LiiL@{`S6Th_Dle@$+G8NZ%!deHkOpNp6NCEe|; zPQ81zTsQB@TZ3=EDvwX-6|QsQeH7SSaYaGsX1~if<%zXG|09D32L8)7@coGT_e>Wg N?CI*~vd$@?2>|oyr8EEl literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_1/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_1_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..700453f77358dbd81ba0271da35c7fdc921d320c GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2VF5e*qo`yt| zdo91^SC)Td=Ty|);A)qBl#ov1C zx;8K#T^eztgZ-qse8;4wI`gLZqJ7M_uH;Pq-LW_Pj`7LkPD>V;X~w_0RNHln{n(P< z+sfsDPG5ig(a$T{^KHE)WWSbJ-oPtEZ@ytVtRVb1)oP*IukMZP^G-O;tKh3v+5-#$WN;w&-u?YQ#ZINg QaD#+BUHx3vIVCg!033IwcK`qY literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..6c57d4dd591edcb595d432c52143dba70d3e23c6 GIT binary patch literal 917 zcmV;G18V$>=D9~t?h z{IRQ}DfJ(%;!*spFnSPom&O!F##+r*O1YlW-*%}PeurDMQQM%-hEhr^5O~U%4@TK= zmdt?GaH9cbPi33s&?}{=fo5f83adh9K#*03uy6)2kHN7&W`PE@)uRTkkrB(n4hSDC za-`F~ImdNWrQ5cy_$BCaozC<#Kr%BjzKlG``U5iT-XyC|L3F`oiEMBoYwMM#by8F_ zfK{kR09pl2+_^u0iup^%>TAmPneTuoPm&}_lEjZo-Rx$o1S19U=a&1|rgKqO4m=aP zt{A~W9(8>S0XG=c_Z=yM2A5rD)T@^Cua&_Iy-Tb8bm|c5-MbQPmANFFW2D$^VcDde zL0U6_MFGjC&e`swgcw)zx29&RRM+@qS(Sb71Fj)i8@kZZ7<5K{uLEG>PIkYLVIaX} zYs(C-_cnW2CC0^q>&&#b0()*9deXx|l@UnFl zw9?WQmNHWX=&-l>!~XF4ym7Q;pC>cl0eDLXr3iL0VTUN=OeJqL($tk%y(rNXDJoFK z$*_Z~5ynleY65NiVbUx6(I3W)ZjCa~c$AZ%1F~$_KDY!yGhl4#Fywn_e{A5~wWdjj zr6=IWy!{Tq<2XiFqXvtII0L#NWxnB+Crk}JeVU2mTej$vD2MwqV0e203%cyv+v#0M zug0{}S)LG!C-~sv9WP`)Ow23E8>U;sha^do1m{;b$Nc&(HIsP>1+nARosNn7;3~Wd zC}?C-C`IhJst9T3817S$sv~w22aF#Ly>kP#_l;@mDRmo^hx@LyejM-sWWS~Q=(PjR z0I9{Q3T0RFWb!BI5;&_IQp9AQ#H$q^ r#Q9W1Z{~4(z&Ch;Je(v+l02P19Wsnw&}-*700000NkvXXu0mjf-*>yw literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..562b8c3a7d73de03a021e86dd7b6a40d2558ecef GIT binary patch literal 504 zcmVO-XHi(D?sxm170001wQA#PL_zxNNXZ1&1 z%kD#4C#ZYxh(_z%h-m+;HjX*xq;;<@Z|g+d&foMF4eAZ3Gco7fi-NyI)jQ-oeY*K8 zKm=5*261m{Vd~6THPGVRwxoB7vwDl>M^P(4bk{leueDGI*BNe6?bPI$D{26y&y;qi z*JE=`eCI_y)s{WICa0ipzw1O^C)#b^@}9GFGcJPXdupin zsklJMcC^9X-R*7o_@}43IES^?@btPAZOz4qMi7i|4c`*+w*s9gr&S`x6w z=0a2J7sTom)Z^dF^gA-o=DRn$3_uDP1F<<;=NyrLZX{FCf^MCPvOOwx;`XO?bx$>t`F?6Bp*+#>Hie;far@KWQ^ZuZl^ziwpypp)(tgdu)rY5 uj6o>E3jhEB000000000000000g!uq`W2>+d#rh`z0000hKx> literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00004.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7a3d318ff4b1e9cedb9d6b003137028319b063ca GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2Vw9p|19*4k^ zJD%V6FL`sc|6Gbd&<98972j(#!+a)xnlJ^V`|{mI%o%}K|E%qBaV?tTUcyj2{mkyj z1q`h<5fQns+`ez(yt|nBMR4fpXWyJ$KI!c4mCl}XjVZg~_l)hGC$y9k_G)VERl6b- zn_{`Xag|?mGwU*i$7&lV-u(G|{+4SZQ_S=9HgGUAF#K80cst}0)*&&{(v+LiiL@{`S6Th_Dle@$+G8NZ%!deHkOpNp6NCEe|; zPQ81zTsQB@TZ3=EDvwX-6|QsQeH7SSaYaGsX1~if<%zXG|09D32L8)7@coGT_e>Wg N?CI*~vd$@?2>|oyr8EEl literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_1/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_2to2_v1_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9e01669d18a8c8abfc35dfe1455d689c87ecc75d GIT binary patch literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s}ba4!+nDh2#G#`^9k3*oz zyOzKDE2}>?w+L_@KFqUrX7xS+M$d_SNgO~u2a-EGIwH;=I&iy+NwH;ubA1l)pEci) zS24vZ2_^d^o@xy_$2-e3b$!;HtQDJPivE@js1-gvU9&88Vb-+!vUM&uZKo&qY`e%W zC#DeD)!MgXa?PfL-dw-#bNo9|!9HbWr22Qcz2Rq!PnwBquJAeK9XrcE@b7^gFaF(_ z%g(@%@cQd-fvcW=@%&%%@@L6@J#p4}Xzuk7%BWAMcw>C|U>*u$>F;!rF`}ynI!iMyQjlU#z&0V&-@0Y|a z>%Flxi|pKA)yr4+&c3^vbB=u*-=WiY-!R@)5dNDiwNUL>`$o2DC!D6SIi~UExmGX& eg98aP+^%6` zEU^NFvB21GlTcdR^XN$C?*ZwCO?4|sXGWj9_sn#_G4nDN>^WUGM&dMRvu6HDDg8_w zJI)E_KIv_zUPQ0I2@^sHA%u{Ks%mAY*jx|{ijNzM0)+&^J0(D(gTwvh4gl|hL-$lT z5IQBewV=|t;_z~uT+AbkIO7QY^f^fMie-9-CeZ+IfBZC$;$^8-&q&t__q%~8QyCX; z1$ZS)u$kE=aEW<0?j8>j+|_?UX}XOmN;9Yy)Z%|7A(lC@rq(mNC90tsF{Qn5CZa5E zFp{33M>wEA{CAFd1{Kq0LzL-Tr1C1=YDLLS*j(4(&Xz0_h$Pq+s(NUA*A*`;O(lnM z;@4}{nwXSV#x=|3_M!tk49nbMEIJ@ykPnE-xGY38Cq||ZZbh57<)yrMsylr~j72pZ z5xidJb)hY;p6-Y!CL}iqLC1)zH{KO-_wEPZxDbSh!Zoa&{?5rsxIqt3jxe{5)?AZbJl}ZLOulY35Tjru%Q{IigzCu!y*SP$tkHM+1S8aMRN6DWx=R-1B z&p2^_IRUd-QZv^|-$7vgVK9 z0Op2Ms`mgraL;2Xf)~+Z0mTJsa92P&;$yv*MUu=VYApIj?0Z<^KV)#0iv9Pe8bSzp z3T4&hsuC7KiO&ivv+h$+X*>PZjo02gw+}cQzm1>}U3-1yb@1SW7#P%x$NqyI0J3;} z^r;T0itCkqu}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b0e1548fa41115c7d06c960e2af409d9c09f2a1c GIT binary patch literal 426 zcmV;b0agBqP)P@)+k+{o#AVrq>NXZ&(m-qQmF&b8C0u4@%0{{R30002H__6N5eL3f| zoKiCE$$x|#02z8I;xNP;fHV3s+|9}meyuxjlL~aWxJQ+9mg~>>&k&-{0GR2W<`GZ- zBkl}Pv5pw}BHmTd!DXlu-?0$`0000U=Y7MNh1rG=b?M_=cU7e}4SVt^`PE|Ng5@R=p%*t)sXDK%dj6!<2#O1|G}r6v;1oA2B36K1#v3Z<~cE^ zqVLXl2~tN+9o#H?;BE%g0w98*SV!vk2qLsaEypUZyKnig7>SX@;l&E(4%$(WrT2xcKZc z042mJrL$1#&6j?gY-lfMIar<5eS&vd^&+e4$)3LJE3ejfS%TbR00000006*3e@pj9 U47?QzQ~&?~07*qoM6N<$f_Fp8NB{r; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_1_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c2b649401859ea056f013d81f485d539bdc780a9 GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|BL1^N^iu2;Gjz%X|T(Jb|d9c;R#bu3q;)85khUas*7si{h|335m zd=-PM(xbihheWvCE$2*F+ZnC;S0(o7^2m+xj3?(x{I^LG7oT+b(8Xt}kDe`jvv+&% zzT1gRe9My-D(~~Olic9VRh7r0ZxqK^n04*sUYGTvpM8vSx&`gyyyB!ZTWU~uifT1+jc#FW4+Yw%9@w=eOFz-!k)Hl)6(EoFW0OuDP2{N zm2ckkDT8`KD+nB{2goR^v!QK$$G@xoYk2(ry=FY)U(a0U!Hx7IP0=H_(B~2 zI^GXF2Gf=;=;U7e< literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_1_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..037d61c4dbf376b2f65143d72c1aa65c2176c9d8 GIT binary patch literal 804 zcmV+<1Ka$GP)XPT# zVgv|hfqj2WL+f!bqEE7Z4M;aEsz*cWIeqQgvoZkn&fBS=%;{Pf>8F9rp7T#i>1$!z z@tk0;liqUb_2~TR%>fm4Uc z>nG1)4MD}Zr*T|WbP}%4ZF4NbP;X3VNnL_SngX7w!fa2#tR5sMw0T}z^RpUp!?@U3 zVIU)-5~~U-;`X$@_WT|S)f8c6(RCUagHhfr!9}WgBhE8EfflSv>q?g zW-aeJ#=On?*UY{jcU!L`cRRbMLH`cefDE;`In%jF*v^jZ3Av!#y8zH4UJ*2GEZaK3 z)c|x8yt;E;kIk5d;e1&Esd&fDqT>r0dicBqUbls~Jl=Gm2Qf((YOaoe+DtoUMWG3j zD~>D1bpyY5TLf*x6}~?YOx8EG_~}o?mhd z}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_1_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..25f4bd2baa191b1c548bc9f7dce46b42318f7db3 GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-&ba4!+nDh3gW8Yx~9*01y zS+jrqbN>{ZCdgZKP;qLMf#3h=rG8!$=Q5}+1?plrZM(?YV9}~?i#uGtrp&wlf-h!w z>b=!0tQj|sFS@pjf7kTf7wWs1uZL_+`)nZ~I6Kw6V#UE+)fvopZrAv@Y_ehe*|y-* zoC~vFsGZ)%wrW={uMm&p)Y(TI)4t2sd#zJE!NzYsqlJ-yVc+H5rvu6l7wrjpvtIL_ z*TvZ8d2^#AH!d%Wd|-C-&3B%2WrBK-o0mE9<(S9amy$g3#lJ#ce$V%GQHTFGPb|3~ z^=7m3`88*E)Mc;XIevNl))J0gj;~%zbNtqNB&)f7F|#T6lGwbJb)r|!F#etLpl)OS zk-eMpvr?Z-JvV>nS(h0SrXB9Qj{=)LQtX9p_PcxoItUpwWd37tD3j#jw+!qAiF>;G KxvX@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9e01669d18a8c8abfc35dfe1455d689c87ecc75d GIT binary patch literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s}ba4!+nDh2#G#`^9k3*oz zyOzKDE2}>?w+L_@KFqUrX7xS+M$d_SNgO~u2a-EGIwH;=I&iy+NwH;ubA1l)pEci) zS24vZ2_^d^o@xy_$2-e3b$!;HtQDJPivE@js1-gvU9&88Vb-+!vUM&uZKo&qY`e%W zC#DeD)!MgXa?PfL-dw-#bNo9|!9HbWr22Qcz2Rq!PnwBquJAeK9XrcE@b7^gFaF(_ z%g(@%@cQd-fvcW=@%&%%@@L6@J#p4}Xzuk7%BWAMcw>C|U>*u$>F;!rF`}ynI!iMyQjlU#z&0V&-@0Y|a z>%Flxi|pKA)yr4+&c3^vbB=u*-=WiY-!R@)5dNDiwNUL>`$o2DC!D6SIi~UExmGX& eg98aP+^%6` zEU^NFvB21GlTcdR^XN$C?*ZwCO?4|sXGWj9_sn#_G4nDN>^WUGM&dMRvu6HDDg8_w zJI)E_KIv_zUPQ0I2@^sHA%u{Ks%mAY*jx|{ijNzM0)+&^J0(D(gTwvh4gl|hL-$lT z5IQBewV=|t;_z~uT+AbkIO7QY^f^fMie-9-CeZ+IfBZC$;$^8-&q&t__q%~8QyCX; z1$ZS)u$kE=aEW<0?j8>j+|_?UX}XOmN;9Yy)Z%|7A(lC@rq(mNC90tsF{Qn5CZa5E zFp{33M>wEA{CAFd1{Kq0LzL-Tr1C1=YDLLS*j(4(&Xz0_h$Pq+s(NUA*A*`;O(lnM z;@4}{nwXSV#x=|3_M!tk49nbMEIJ@ykPnE-xGY38Cq||ZZbh57<)yrMsylr~j72pZ z5xidJb)hY;p6-Y!CL}iqLC1)zH{KO-_wEPZxDbSh!Zoa&{?5rsxIqt3jxe{5)?AZbJl}ZLOulY35Tjru%Q{IigzCu!y*SP$tkHM+1S8aMRN6DWx=R-1B z&p2^_IRUd-QZv^|-$7vgVK9 z0Op2Ms`mgraL;2Xf)~+Z0mTJsa92P&;$yv*MUu=VYApIj?0Z<^KV)#0iv9Pe8bSzp z3T4&hsuC7KiO&ivv+h$+X*>PZjo02gw+}cQzm1>}U3-1yb@1SW7#P%x$NqyI0J3;} z^r;T0itCkqu}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b0e1548fa41115c7d06c960e2af409d9c09f2a1c GIT binary patch literal 426 zcmV;b0agBqP)P@)+k+{o#AVrq>NXZ&(m-qQmF&b8C0u4@%0{{R30002H__6N5eL3f| zoKiCE$$x|#02z8I;xNP;fHV3s+|9}meyuxjlL~aWxJQ+9mg~>>&k&-{0GR2W<`GZ- zBkl}Pv5pw}BHmTd!DXlu-?0$`0000U=Y7MNh1rG=b?M_=cU7e}4SVt^`PE|Ng5@R=p%*t)sXDK%dj6!<2#O1|G}r6v;1oA2B36K1#v3Z<~cE^ zqVLXl2~tN+9o#H?;BE%g0w98*SV!vk2qLsaEypUZyKnig7>SX@;l&E(4%$(WrT2xcKZc z042mJrL$1#&6j?gY-lfMIar<5eS&vd^&+e4$)3LJE3ejfS%TbR00000006*3e@pj9 U47?QzQ~&?~07*qoM6N<$f_Fp8NB{r; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c2b649401859ea056f013d81f485d539bdc780a9 GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|BL1^N^iu2;Gjz%X|T(Jb|d9c;R#bu3q;)85khUas*7si{h|335m zd=-PM(xbihheWvCE$2*F+ZnC;S0(o7^2m+xj3?(x{I^LG7oT+b(8Xt}kDe`jvv+&% zzT1gRe9My-D(~~Olic9VRh7r0ZxqK^n04*sUYGTvpM8vSx&`gyyyB!ZTWU~uifT1+jc#FW4+Yw%9@w=eOFz-!k)Hl)6(EoFW0OuDP2{N zm2ckkDT8`KD+nB{2goR^v!QK$$G@xoYk2(ry=FY)U(a0U!Hx7IP0=H_(B~2 zI^GXF2Gf=;=;U7e< literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..037d61c4dbf376b2f65143d72c1aa65c2176c9d8 GIT binary patch literal 804 zcmV+<1Ka$GP)XPT# zVgv|hfqj2WL+f!bqEE7Z4M;aEsz*cWIeqQgvoZkn&fBS=%;{Pf>8F9rp7T#i>1$!z z@tk0;liqUb_2~TR%>fm4Uc z>nG1)4MD}Zr*T|WbP}%4ZF4NbP;X3VNnL_SngX7w!fa2#tR5sMw0T}z^RpUp!?@U3 zVIU)-5~~U-;`X$@_WT|S)f8c6(RCUagHhfr!9}WgBhE8EfflSv>q?g zW-aeJ#=On?*UY{jcU!L`cRRbMLH`cefDE;`In%jF*v^jZ3Av!#y8zH4UJ*2GEZaK3 z)c|x8yt;E;kIk5d;e1&Esd&fDqT>r0dicBqUbls~Jl=Gm2Qf((YOaoe+DtoUMWG3j zD~>D1bpyY5TLf*x6}~?YOx8EG_~}o?mhd z}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_1_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_4to3_v1_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..25f4bd2baa191b1c548bc9f7dce46b42318f7db3 GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-&ba4!+nDh3gW8Yx~9*01y zS+jrqbN>{ZCdgZKP;qLMf#3h=rG8!$=Q5}+1?plrZM(?YV9}~?i#uGtrp&wlf-h!w z>b=!0tQj|sFS@pjf7kTf7wWs1uZL_+`)nZ~I6Kw6V#UE+)fvopZrAv@Y_ehe*|y-* zoC~vFsGZ)%wrW={uMm&p)Y(TI)4t2sd#zJE!NzYsqlJ-yVc+H5rvu6l7wrjpvtIL_ z*TvZ8d2^#AH!d%Wd|-C-&3B%2WrBK-o0mE9<(S9amy$g3#lJ#ce$V%GQHTFGPb|3~ z^=7m3`88*E)Mc;XIevNl))J0gj;~%zbNtqNB&)f7F|#T6lGwbJb)r|!F#etLpl)OS zk-eMpvr?Z-JvV>nS(h0SrXB9Qj{=)LQtX9p_PcxoItUpwWd37tD3j#jw+!qAiF>;G KxvX@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..822b63031d46579ee55232a9563b7ef056cbe88b GIT binary patch literal 427 zcmV;c0aX5pP)^)!BY8!)~L_+`o00000z^{0%4xpcioXauB zg^_&2Wdo$CPkC$xe+_VEKTUUWr3-(n1L&j@?JnJR?zf&#apn|Q`V3;+NCxZS=JMoDzZ=%|+HCm)oZ2C;QLAp|%afs-J+#9Gd5ZKq<%&<)F^7E^-JSDAETDp zQXdUwWwaJjF%p+9tCgSj0K0nnQN^?)lCdV0B2*D-;Ni9ZlwE>fH7Lz!0QHtvD4RaKS`u!I%A0m4#;ux(Eb;bWN*%^X@>$s%i4BDdGNqYTms&a3}hi zEw=%~)KBRXk1yk$b(ZhT#@)=tt7dJkjP3B4nQB~d@?bJ+1oN3pJ2j=iI>wJ)0l#Km znDavG^izoyuQnzNEMQ4Z6JnofyZ_&k2-OularY7g*%%mp%#XX+KP%J;EUGB literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_singlesig_wpkh_selftransfer_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_all_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_all_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_all_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_all_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba54aafe987c26d92d9abc6c27e37786612bb39c GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2VV9{X(9@oHI zFa2)(pR{Fqok5}mi-n)?ysZ15T{{l;7#vbl1?qaR?aY}oR~8HW2;)~+IwkAH_Op(2 ze*O#OPdIg^=$xw0)__xAn-YC*uX?@w^{Tx-uKSsGsc-xnnRH!j*XdXL+qY-TzFu@L zQu?n*B2!oJ#t(x0lls_lG^1`6N{_C}8#!e^beKi|P(X znCyRhikX4o!mnF3``>LnKVS7sUsW4#?fJvv0spTXn}%<*_&@WiP2~O;uQn+BRO9%l zsHR@?VX;qx?H1ERA9IAC8my~k6IbUI7fxm6iM9UX`hs)EV%wS5_p_E(H{2KEYu|pu zsU|$#x_)|d^qrLZmuIofe35U=VS4d?k7a-ox8_EEZNWI8=aIpK OiF>;GxvXSm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_all_0_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_all_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43fdfdd3c89dd138ce825233d66fbd4dc1ad7d09 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2VAYYRKPs78^ zJ)ZCDm)twbJ}GTelu2I6;s4c#xKg$lxOp=IHTjjFmUD0keLY`klIf&Extq)uWheK{ zX64!tY%dlz+w8?VvxU{)82VPON-e%EFwyFCUP1D~Ox+KB1^J(6bgcQrvc{Zs>h+eW zMdgv}vKOqnd@Z3-^TZBM9wY1je}b>gYI^nH8Iyh@(3StMBuc*ert|n{(r*8cV%_hI zzTAy(Ryx>vX6vrIshe}9_hhTc9BU5dy;aaIBJ;I->b@5Lf`7iY8^o`aWv0D5dF0i^ z=;@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_0_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba54aafe987c26d92d9abc6c27e37786612bb39c GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2VV9{X(9@oHI zFa2)(pR{Fqok5}mi-n)?ysZ15T{{l;7#vbl1?qaR?aY}oR~8HW2;)~+IwkAH_Op(2 ze*O#OPdIg^=$xw0)__xAn-YC*uX?@w^{Tx-uKSsGsc-xnnRH!j*XdXL+qY-TzFu@L zQu?n*B2!oJ#t(x0lls_lG^1`6N{_C}8#!e^beKi|P(X znCyRhikX4o!mnF3``>LnKVS7sUsW4#?fJvv0spTXn}%<*_&@WiP2~O;uQn+BRO9%l zsHR@?VX;qx?H1ERA9IAC8my~k6IbUI7fxm6iM9UX`hs)EV%wS5_p_E(H{2KEYu|pu zsU|$#x_)|d^qrLZmuIofe35U=VS4d?k7a-ox8_EEZNWI8=aIpK OiF>;GxvXSm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_0_0_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_0_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43fdfdd3c89dd138ce825233d66fbd4dc1ad7d09 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2VAYYRKPs78^ zJ)ZCDm)twbJ}GTelu2I6;s4c#xKg$lxOp=IHTjjFmUD0keLY`klIf&Extq)uWheK{ zX64!tY%dlz+w8?VvxU{)82VPON-e%EFwyFCUP1D~Ox+KB1^J(6bgcQrvc{Zs>h+eW zMdgv}vKOqnd@Z3-^TZBM9wY1je}b>gYI^nH8Iyh@(3StMBuc*ert|n{(r*8cV%_hI zzTAy(Ryx>vX6vrIshe}9_hhTc9BU5dy;aaIBJ;I->b@5Lf`7iY8^o`aWv0D5dF0i^ z=;@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba54aafe987c26d92d9abc6c27e37786612bb39c GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2VV9{X(9@oHI zFa2)(pR{Fqok5}mi-n)?ysZ15T{{l;7#vbl1?qaR?aY}oR~8HW2;)~+IwkAH_Op(2 ze*O#OPdIg^=$xw0)__xAn-YC*uX?@w^{Tx-uKSsGsc-xnnRH!j*XdXL+qY-TzFu@L zQu?n*B2!oJ#t(x0lls_lG^1`6N{_C}8#!e^beKi|P(X znCyRhikX4o!mnF3``>LnKVS7sUsW4#?fJvv0spTXn}%<*_&@WiP2~O;uQn+BRO9%l zsHR@?VX;qx?H1ERA9IAC8my~k6IbUI7fxm6iM9UX`hs)EV%wS5_p_E(H{2KEYu|pu zsU|$#x_)|d^qrLZmuIofe35U=VS4d?k7a-ox8_EEZNWI8=aIpK OiF>;GxvXSm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_1_0_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_sighash_default_1_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43fdfdd3c89dd138ce825233d66fbd4dc1ad7d09 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2VAYYRKPs78^ zJ)ZCDm)twbJ}GTelu2I6;s4c#xKg$lxOp=IHTjjFmUD0keLY`klIf&Extq)uWheK{ zX64!tY%dlz+w8?VvxU{)82VPON-e%EFwyFCUP1D~Ox+KB1^J(6bgcQrvc{Zs>h+eW zMdgv}vKOqnd@Z3-^TZBM9wY1je}b>gYI^nH8Iyh@(3StMBuc*ert|n{(r*8cV%_hI zzTAy(Ryx>vX6vrIshe}9_hhTc9BU5dy;aaIBJ;I->b@5Lf`7iY8^o`aWv0D5dF0i^ z=;@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_v1_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_v1_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba54aafe987c26d92d9abc6c27e37786612bb39c GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2VV9{X(9@oHI zFa2)(pR{Fqok5}mi-n)?ysZ15T{{l;7#vbl1?qaR?aY}oR~8HW2;)~+IwkAH_Op(2 ze*O#OPdIg^=$xw0)__xAn-YC*uX?@w^{Tx-uKSsGsc-xnnRH!j*XdXL+qY-TzFu@L zQu?n*B2!oJ#t(x0lls_lG^1`6N{_C}8#!e^beKi|P(X znCyRhikX4o!mnF3``>LnKVS7sUsW4#?fJvv0spTXn}%<*_&@WiP2~O;uQn+BRO9%l zsHR@?VX;qx?H1ERA9IAC8my~k6IbUI7fxm6iM9UX`hs)EV%wS5_p_E(H{2KEYu|pu zsU|$#x_)|d^qrLZmuIofe35U=VS4d?k7a-ox8_EEZNWI8=aIpK OiF>;GxvXSm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_v1_0_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_taproot_1to2_v1_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..43fdfdd3c89dd138ce825233d66fbd4dc1ad7d09 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-%ba4!+nDh2VAYYRKPs78^ zJ)ZCDm)twbJ}GTelu2I6;s4c#xKg$lxOp=IHTjjFmUD0keLY`klIf&Extq)uWheK{ zX64!tY%dlz+w8?VvxU{)82VPON-e%EFwyFCUP1D~Ox+KB1^J(6bgcQrvc{Zs>h+eW zMdgv}vKOqnd@Z3-^TZBM9wY1je}b>gYI^nH8Iyh@(3StMBuc*ert|n{(r*8cV%_hI zzTAy(Ryx>vX6vrIshe}9_hhTc9BU5dy;aaIBJ;I->b@5Lf`7iY8^o`aWv0D5dF0i^ z=;@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..fb4c2106140c43fa3b221c5fca4409b1f9df3a69 GIT binary patch literal 482 zcmV<80UiE{P)n#41T;ja7{`{nSVx}kGBaHfL-ebj~IiH0Z>Lc zTnxUwJMih&2|%EQS6U|kv1XoPod5(CY!S{m>r+j*=O9=Bwtz#di!=odF0-*#<4CE9 zVx?pp001!I`5ij{dA!xI(fW_$2mL!^6pzKn|9UV-Z!0sM)nKWPAAke zPo!kr0_xk#=m|Jo+3Lcl`!F7vXz}Ga0!{QM`Sj7yp0GwaieC>_)WqEMFc-000000000T YzhPoi+DKpawEzGB07*qoM6N<$g7>N082|tP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..a0a62f0ab250d76a50c28c3846c0f7dce1eb0513 GIT binary patch literal 726 zcmV;{0xA88P)3`I#QH}UC*P4tq%O~+|USiSp3EMu6F;W*N^0UNi-glZIDeTiN9n=_OZa|-gWSm>lENm{1 zd1*fb3fSsi{{(KX6r^S+`&4F1EbNQKn!994vrwmsw)U`o1}H5@y5Mf!np2N=lFITwT2gDhDH3F|cTSmZSTv<-RS4tE-p+Y4`3O?GYVD^39b z0001h6=rJagiYhEnv87R4pw1jE}29HRl1R zFd@*F17N-gs~rx9`e7M0U=ua9tz}di$ays})dnXTxuxy>r1lR4aBIKnJX3QY%oiM8o z<|*u#PxMx=Up8w(OV;epl+tWyJyoo{O0Uf}aUDXYUgnew%v0`4n6@pFTcHLrw?^U=-V?|8V^9nbkoSCG|u$R>kXyZ-MC-*a8(!f+YX|fGv2;zW151eSOLRto$yBl@(J8t9NP? zS?Xm(Lwz#x)@e|8G}lm_SgZxPww%>acMDA`Ls0GiG#Hj|qM^F7UJaGSFW16%&`>ve z2`k0ani$#a#6GbWykS09mcJ6#hoBGVbN@a-*g60J001-i1z$qYoPYU*2mk;807*qo IM6N<$g6tqhmH+?% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_0_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_1_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..90fa38faef05c77418b92d04cc5b0fe55d21e257 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>4@&vYHdJ03^vm`Iyy>4*zR3pY!Pts`n%2a!{&SP zuNh{!s2r=$=V2&la&fb^Uo|!mHSj`vz8r z<*T1EGBDhz`fKO)?l^O>&p_wReF9j|s@Kb-zj9ovhX0xw*!TaIbv>!sdy(c`s zaz1*8ME^eaihyYgTC;Cgy_hp+|BrOTeqZ@r*Nl69I^C#k{<6t@x1;gNl=|6Tt4{t) sThpkzYQj>-Ns-Ob6XQT(g9IL!#qX4tjJ?19K`lts)78&qol`;+09!S*!vFvP literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_1_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..22ac6174c043966722d92955bed292ba3d347400 GIT binary patch literal 787 zcmV+u1MK{XP)$|C*TAPVN}^_5Z{O*b^KJ@=ME2qA-e5+KsjCcZ+zOs&ujx+%y^iqVcWLj`L=DM4E|&mlUIOns8|icHReOn$XUj8w5Y3} zJkJspB=h%xa>J&&Rg}!>bN8N^0XRoqr-CD=>%z!94a%&Ue@ZD| z6Z?*Hg1Jw6+o?CB*WZK*A%qY@J`?m9>K)HpFOzjU^*tbHaL9dC_jP4N$SHQfNmpwu zW&!*r>D_p>gb@63k+@~BJH!~!VD~0`I=8k-c+i_cx@7TZTq~vrMUQyc^f0~d;?}%T zr?_I=q4Cx(OBb(rB}@mkgpPz`_K4T*n;9afd7~Bi7JSOMZlgQT(mWR>VLcYD7Z8318uy^xWNcCLL8 zok>ON0C$C^V~O`o?U=&eIXG=fA3Dr3(LhEW_3mix-{87sxW5MZLgIgKkULkjYV#|0tMu3}vh&&xaP&3_Xmw58703d_K9U@3>!pP+dxs}w< z^<_=8P`@?rfciRZ-XCj3r&=R2OL}rIc(+2lm*9EI40!yosaE_dt{xP=G77NM)+CW@ zLFweWPUq^Yo!p+$e(I?!`cAX!lnO z(a8CCUu&@$=68ad6wtm8M<#8XFu1EUX`<$)mnw_k=_}aYaS(TF3)9V<5JCtcguIn? zbiGfcTYy}O`M-=a5k3X4fqk`zL7&{%ElEyf(G_6QCpRwZ`h#@?pyd~lLxLY92enpX z-2n7CZgF>OX8ue008>>@rCFpF$w5AljjA=BCH}XRPv%W2=%!kP5JJctegQ=qYLf}7 Ris%3U002ovPDHLkV1h2=bU^?B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_1_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_1_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_tr_script_pk_sighash_all_1_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..6af6144d6dfba6bd6e47c46dcacb5aba218ba25a GIT binary patch literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WKba4!+nDh3AW8Yx~9*4kX zvu6MJ=l&^nS4Rtn#32`ff@k|fy;e_~l_1j&)Wl%(F8wP@RETM{hE6_=YB%^m7Y(F3#bTd-PzN%pAsNx%bqR;>sHKi-??K z>}@=^XwJIERe8JF_<{mb*ft8@{QKGe!_=lr2M=@eB?8^~Khr@n>zmH)qe(w!CWv;Y zNk&y?pYZq@@qF2Vvx_3P@n-e5oc?$$oOl0=nf3MVOWK#KKMbFBgWG8PXSeEa`kQ86 zmkKcViD}qmEjBB&R{pK@Q@8SM4_}IGseI8a`gf)DbmIq4eyUimk&Ze&Y2k`{zuvFk z@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..3016710d230676a6bf0f75e037e58882f6d42e2c GIT binary patch literal 453 zcmV;$0XqJPP)6%5dhT;NIG3N2C4yg49Nf-j(5={kPN_+d`35*m_O1(2)DJQ3GECB zA;|T3LM#CPPV{n5g5S{%xJ0hI0RRBr$^LB{`6isSW__iKF{-~?`KG(U#}tA)6gfLMaI2mBqybf2va+b!bPwZj#3^?TX(b>@nYe&i0mkEHM zu+GtBswui`b9UwttA?tx@z%(I^{KUO7aesb8UI88006*a|7gCUqF1kZ@AT{L8v@yW zJ;0V5_Zvm!N&DsHyHn1V5cWTsbA{w0hfURZWy`5wX4X5MZReDt->Tc$R{K(fUFTZ& zoDH1P8yh&k_bB4G4?t-XD{jdzaCXvZ#k6}hbZv1mrRr*aBaJg4^I^43N_7vn>s{cl vdfIQwJcK1om5VIM3`PI|00000z>WR@z}`V%5IAk500000NkvXXu0mjfIF!y9 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*00009+(ZA*VCed@|PAoy2fib<{Kb!IN{@_S#z zRiaKVjsEoC?DqF3PQNC4*vpxAxbr>=Wd1Y##N2}0xBc>#or?F}s=WL5$=oX@yEpik zFz@+SaP~~d*1hli9=)3S$)o=Nt+_>+`Zj56HY-d|uHNgr{9oABqgU?ywU58P|Dz$Z z=z{&!gF70`aSjHN*M*|Fo>_m>pv73RYH c2c#b;#sBhK(bQyCCJhqxboFyt=akR{0O4Ja%>V!Z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_1_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba54aafe987c26d92d9abc6c27e37786612bb39c GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2VV9{X(9@oHI zFa2)(pR{Fqok5}mi-n)?ysZ15T{{l;7#vbl1?qaR?aY}oR~8HW2;)~+IwkAH_Op(2 ze*O#OPdIg^=$xw0)__xAn-YC*uX?@w^{Tx-uKSsGsc-xnnRH!j*XdXL+qY-TzFu@L zQu?n*B2!oJ#t(x0lls_lG^1`6N{_C}8#!e^beKi|P(X znCyRhikX4o!mnF3``>LnKVS7sUsW4#?fJvv0spTXn}%<*_&@WiP2~O;uQn+BRO9%l zsHR@?VX;qx?H1ERA9IAC8my~k6IbUI7fxm6iM9UX`hs)EV%wS5_p_E(H{2KEYu|pu zsU|$#x_)|d^qrLZmuIofe35U=VS4d?k7a-ox8_EEZNWI8=aIpK OiF>;GxvXSm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_2_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b0e1548fa41115c7d06c960e2af409d9c09f2a1c GIT binary patch literal 426 zcmV;b0agBqP)P@)+k+{o#AVrq>NXZ&(m-qQmF&b8C0u4@%0{{R30002H__6N5eL3f| zoKiCE$$x|#02z8I;xNP;fHV3s+|9}meyuxjlL~aWxJQ+9mg~>>&k&-{0GR2W<`GZ- zBkl}Pv5pw}BHmTd!DXlu-?0$`0000U=Y7MNh1rG=b?M_=cU7e}4SVt^`PE|Ng5@R=p%*t)sXDK%dj6!<2#O1|G}r6v;1oA2B36K1#v3Z<~cE^ zqVLXl2~tN+9o#H?;BE%g0w98*SV!vk2qLsaEypUZyKnig7>SX@;l&E(4%$(WrT2xcKZc z042mJrL$1#&6j?gY-lfMIar<5eS&vd^&+e4$)3LJE3ejfS%TbR00000006*3e@pj9 U47?QzQ~&?~07*qoM6N<$f_Fp8NB{r; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_2_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..55624c5d6388f98b0451a739ae16d902c7ac6162 GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2V;G|{+o`%G2 zo6R5ob3YaP>%o-7Nef(CFMRtyFG5SFMJhK4q^oXPM~BB3Ehd{q;uC_rRKHw4moWG9 zzy3If$sJGTY&V#C?3$kV4%@F9rv0;4?bGr4BfDT<=hyksZ(g zdh4PdGML3~+#ndQGJnnnFRovAIO0TV*srX-srFs0dVNd!q|4Jh97}`VNj&~Z-jw&zpy4f1tw>MRvncrb;{_+Ze6KUtd7;7fn)XbQB zVR<;~hXT*X`~JOjp3ivSW%&Z>^V_~&`uXgSnQZymvwY?1A>LWG%t9;Jz`O0q07jU~E1fPx4a9JXPs`Y#jvtns5RNZ8ZW&t;ucLK6UE)U}oX literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_2_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..8c57f8c13bbc2371ec1181243d48894d1ced3b51 GIT binary patch literal 898 zcmV-|1AY97P)O^ZMgt#Zu0uA(T4q9}@@_$GSqy?6YP zA|K_CZf?HQe~_9-@hd~=HMyG_Q=B!{tXOMpJe{xgRww)p*Qmq313Ma8Yf>QaJ3b$j zw&A3V04d$(fRd-{JFltNT4MuE+OBtqiB$k$H623Y2p}GVx$o032UO}&1yg3klGp*^ z$+Bkp+&6b#M;U$W(-l7j4cF(9eg|k3M)FIMLFOM2w|j?Vt%BwWm)s=Dh0Lu(Mp`Md z0-yzq9_U%rUGY(Ia3uAQ5fc2rcTj-QV$6C zV=Y1`7ofrnCr@!KGy)XE z?6q=p{X3rO6HbT^tbn75axL-n?*S(CtW2s3kl!J)$*Ki?6k}ioeygH%zCQx)jJwlq zzK%69uDANZL1xmaKs!LvrGJE3STV5ekRh`HGC!D1fSHTy)PIxMbXDLIOub1YiU#6_o}PU|kukZq?GjSA@UzxEq@LKm!z@OcfawFuBdRW8(qr9|gdMNIvMELM zf9oFXxv2hLfrx##tv}szz;qRkJv_RZf{?Pti=~hD!?^QeHu%_o0~+uj0k(Z`egO1t zr8jg(-{hVY1RwF$P^)L|5xxEndU3VM^^VCRA}r0!powqht+^4Wig7Pf9Z(cSQ4}xn Y2j--}&V2jpoB#j-07*qoM6N<$f}C=#b^rhX literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_2_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_2_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..0da504c40e39d62c7a04781782b22bbef2f85b48 GIT binary patch literal 521 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_u9>EaktG3V`!z`mmj9IkVx z-}L;xf62R4JF7~?MIxfNwpc#Dyy%hWmLQNR3~IOqNcLEc&18E%iZ<=Tq=(eFi(bbruM)^j-ahA7 zfQ#DKWyX7$^cDMi-b_Drn)7CZfIrX!>zuBOw|kW?{x7%JEB(Co?%&q>asNMswQSh! zGsSI^ho-x?+x@>~9N(3$%y3Pgm#(z`b9YQspWfO{EjcUqnay7*oPY7zkF#!(UXpWD z`@ZmOcsaH6$@NvI!lugfX_%Rnb}Y;a;+US-aP4UPp+C3gm(2|OFP3+%!Dt`*rf$E9 z=_}*E$QHb3S~4Z*=0fAB+ZO)co=p`#-ML3{`oFjPFKP3|D4cMws|fpKH|5odzxGW= zSN7X}3->7fccVG#gZt~RI=g~4vx^rf8C6f<`UHwY46x)QyOiiHb+w&mv_W#7u6{1- HoD!M}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_3_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..311e4672e3bbe08e11e17c17ac61df44067da8c2 GIT binary patch literal 427 zcmV;c0aX5pP)s|J`u75bm+B+-4L$>-qF|L?rsd>$GQP0Re=r{_ozff&p-30Aw)d_U}iMTBM$!* z_XwzB9WnGpyk9|ypP^2C$3hGM006k1_XVRUs}*l*(&bz?wMuOow&Yg&tHsC#>BFL% z1!|Mh-R<4-^K#BkhgUa7mlWDZL%IRKhVAH@UvXS|2cJYle>HaF zOfTi?&Y$j$K!>&3PaM6v(ZcO8i!k4~RIB~mHlb}e1;w}?aI2iNVS;{_4yZ2C_&MwD z(g9_DFM~aK%G23oLq|EwNiw;*PVk>vqbPsJpUVvRnKv%9%M|1m9RL6T0000U^am4n VLkzuR`MLlA002ovPDHLkV1f(Cy?X!v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_3_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..05ccaac79741aac66e30b935ffdee643ba8e1b43 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Jr`_=;_!R_^H9`=wn<4ooIqU_I)Z`|U##Z%AYRL;xirLie-7Wb zneWTLu$FXsoZH#5(#&i3ybCsqs%I9S3HY@|S0JDtB$JLl%jxcqAO;r(;iUPwLN|*i;g<@5<7jB47D? zn&0)uRswC`7-!68T5TO~@ZxImEZM&&&c-gQ&%QVDenG&Km$H_Xe-c)(_EzV9bbfPk z+O?)xtWVBP-=>*&Kkp^WjQ0frelwo|c`PoJ!|=Tm%Vwy85}Sb4q9e07_i0YybcN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_3_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_3_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8efd1df120d50b84cd15a7884717514b7c131c GIT binary patch literal 724 zcmV;_0xSKAP)j{ZUbD*c$mB4IF76RI1Vu;-m;6$J3u&8>;~Z)vr!1iV@yYjcXiAC zJYok3X9d@OpM=umUPSL?{~3@L9I8h_syTh{*|ReMdFEv*xN^E499gGe%ro;(O6g~# zZk!X$bJ9Cby%qiZLzoak2qA>DQN6E%0;k!S@meBsw9LpD?+PuZv*OCOsubbfr#!%y z{)hqCWpN`T()vIF5WXlcu3~_$nwdAF>Wgt>yx!b}Yj#bl^tnUNUh}qNPs`mcO?qx}+GV_h2M}&ULP*LTmZV zaRy47jYG0n0a(h{0!4VD(+qJnYE54 zYw_ti9U$NBdXe`#?nKWCfZh8d?|0*U*Dli4Jm4E*@DM&B3%!?$lNp1h+~HocoFH1d z1?tC$4IPTG+4?c4;#Rz(&`1D+63qHcldjUmxQI09{f1i5X_Wv=3-Y6P*D%}l#i!}w zR;u$X^txux&b8v@Yr6jRJVYA2dAfNU6JN zy9Xrbj_K=bqU%@3a{8@;5JCtcgb+dqA%qY@2qA=!&)^>!)Ke!g;}B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_3_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_3_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_4_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..2ed1dca4462885177fde18bdc869cd18cac94b65 GIT binary patch literal 425 zcmV;a0apHrP)u`9#VF(4p5dHbcG!ct>A{ySXuiAMXmBWCEQo?pcY5?tjK#Q^x`k_<$DU+cnl5VJ0@ZP006+{qE8q_nLY5LDlHefswTDRSd&ZXzm_8xq;HF6 z7N|~2H@7#-_ba6Yy}X(+T2iP#9q9`EI@Y6Uyy7@@hL}V||Fv)puvg9maVpmqIWcFV zAI`W7GJ8(#+$={B?hdHwA?xt+nc5iu006kp;auTPp_6gvg3>!`a5l%;na_Jc^;}8M z(f6`>?Wg$`(BV<_FZNCnJxQ?8VG3cqaq6i0cYE(N(gi)#BO1W0&(uo=j_U*ol5wBY zUA*q=%^=}21~@c8FJU=&Iy8#}|2e7`&8LjC%SFrMukwg7ATk;N000000Nm&g7w}4K T8KqOw00000NkvXXu0mjfC^5MM literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_4_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_4_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e9fb0b0ab264fc4eab03dfd6dbee3e7da760a0e6 GIT binary patch literal 418 zcmV;T0bTxyP)HyO38Z_4({Fy2qAQPn)vRAo0W{&zriC6*tr*p-c{TmE)MkTjagso=M(zL<%aC@=HV1r>J~j zbcX-!od*B_;OqAJ6xExYEDyA*H|jt+v-(b1ePyW>sS^(8G4}D-De1J17>{?RvYbVB z?lfAX)J0DD4{^jFv6HR7%oo;z)U>ekwjEZRtHQO5g&R=)s!s7>7Pai$+4WYr+j61I zx|nvSpmo>UtcdK4e)ySZz?Vip$P_ej_SQ?MaekSg^V-zhJv^NpWtqqF)9eP}r8c`k zGsr}L8zt04e>3*L6Isa9Ajs^&QiK-(000000000000000003C#329X^U2!rjVgLXD M07*qoM6N<$g4{5`)Bpeg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_4_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_4_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dd90178a3abae7252f095f924cd857191d1dfad7 GIT binary patch literal 751 zcmVaa`rcagaLxl2t680mPtWHW1UWg+xfM!y1~rTbImd ziy1(S%=Vd6kVtQTKGftH{d&ZxX($B)S z^_ak}lhSf3jp+RsVE_OC005xTl&y?yS7~}eE3HC^s9Tcj91B}voCB29LZIWr)3Hqg z#glM0ZYhp*n?1tR1A&yV2{_Z)uiouo=lHtOd<#Ni~zyPtViv zSIi!DSVLk)HgsH!%8*Y2txV8RVp2M~&cO6R!a^O3x^+uI>b2^#=6gW*fF(({I)@tK zl9^BkkPeh)$^%5t`m*E5Gq~zHBLYj^3$tHNIZlo&=8o2rknw1%WKGP%fq0bY z(<#IOO--BGxBEi+FiyhcxKU;T@={Lz%=MKck0f7eG5O9rM1hVv^@*C*us)EJuGQ8s zl{a*i#+^TL*ecB

L{0i6Ya~Q0bI1FZFq|{%+`I6yYIc~rCLjdmMOd%Kc8@G^?9y!t)UP_5 z>wFZRO$P|uaZ0-ne-js5grFz0eiyVG&aqFTf55IE005@5@?VsuF=*cjn%Qt;zSlNX zPwkQH8~JSt0WL~|661OjlkAHr;v>=^_L>3X2+#UO@e~Ju20Q^>k4s62{u|DKN2DUK h4Fv!I0002sAAc++gZM&ZE06#H002ovPDHLkV1mkFVlMyy literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_4_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_4_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_5_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_5_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..e1fa952d66f880e523c9ad565a12d49c77bdd726 GIT binary patch literal 430 zcmV;f0a5;mP)jGKo%?_pC%juRr5oQ^-04;AU%>XB_@Z z-WgzWoiX*Re0M<$x1m9N$3_eQ006jM^bMmZvlreJ(&a*jYD$}qk=#muv>de{JuSLb zptdO8J>G49UMVH$@apF1l1BT}kq+S3F^;bB6UV7nh)G2BM+?^hYj7rsQ?<6pg*lV` zaK=lJIdkgdZaac-GoYpaWbF>0sgnT!0N^F@w<6A{8zR11vE$gjY3r&%$;gY_3~0AY zdYits&G77w*4?YxcQmj0#DTwCMHnBPx~hHOZtdD@DkLaH+)B?LmjH4+kU7shqH$mP ztEY6pI?_uiwc#DnAD<;?t7bVUCY!s)|6H||i_@%07*qoM6N<$f)q2s4gdfE literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_5_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_5_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_5_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_5_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_5_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_0_5_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..223063c8a431e4a19b080edcec045d6472be600f GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh3AW8Yx~9*4kX zvu6MJ=l&^nS4WFPlFXtH2CXH5JYk0_yruYQI_iLEzO-Ydg-&@|<)3rtpq$ zCw8Pu>o_dEBUYJvuK8Iich%W>2TViHUbKnp@Q_R`{xE@k`qqPz33kuy1aGFYznR{2 z>3+jAhwwnX>kgsQW1D${0@BzncE0)bQ~mAKrc(zGGxH?^9r{1hK{D%`&flbuHNKm= zTsQON)|#Xo(M*pn-`J%!>-jdv)e{RW-~9=>(><^9+jch@>%YQvOAf?M*jah~*0yQ$ zcpg7Fwwp=(!5vv|=jCz>uU4*=n_Htl|Ne>X!520yEN{t+IoH5_F|#@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..3016710d230676a6bf0f75e037e58882f6d42e2c GIT binary patch literal 453 zcmV;$0XqJPP)6%5dhT;NIG3N2C4yg49Nf-j(5={kPN_+d`35*m_O1(2)DJQ3GECB zA;|T3LM#CPPV{n5g5S{%xJ0hI0RRBr$^LB{`6isSW__iKF{-~?`KG(U#}tA)6gfLMaI2mBqybf2va+b!bPwZj#3^?TX(b>@nYe&i0mkEHM zu+GtBswui`b9UwttA?tx@z%(I^{KUO7aesb8UI88006*a|7gCUqF1kZ@AT{L8v@yW zJ;0V5_Zvm!N&DsHyHn1V5cWTsbA{w0hfURZWy`5wX4X5MZReDt->Tc$R{K(fUFTZ& zoDH1P8yh&k_bB4G4?t-XD{jdzaCXvZ#k6}hbZv1mrRr*aBaJg4^I^43N_7vn>s{cl vdfIQwJcK1om5VIM3`PI|00000z>WR@z}`V%5IAk500000NkvXXu0mjfIF!y9 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*00009+(ZA*VCed@|PAoy2fib<{Kb!IN{@_S#z zRiaKVjsEoC?DqF3PQNC4*vpxAxbr>=Wd1Y##N2}0xBc>#or?F}s=WL5$=oX@yEpik zFz@+SaP~~d*1hli9=)3S$)o=Nt+_>+`Zj56HY-d|uHNgr{9oABqgU?ywU58P|Dz$Z z=z{&!gF70`aSjHN*M*|Fo>_m>pv73RYH c2c#b;#sBhK(bQyCCJhqxboFyt=akR{0O4Ja%>V!Z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_1_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba54aafe987c26d92d9abc6c27e37786612bb39c GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2VV9{X(9@oHI zFa2)(pR{Fqok5}mi-n)?ysZ15T{{l;7#vbl1?qaR?aY}oR~8HW2;)~+IwkAH_Op(2 ze*O#OPdIg^=$xw0)__xAn-YC*uX?@w^{Tx-uKSsGsc-xnnRH!j*XdXL+qY-TzFu@L zQu?n*B2!oJ#t(x0lls_lG^1`6N{_C}8#!e^beKi|P(X znCyRhikX4o!mnF3``>LnKVS7sUsW4#?fJvv0spTXn}%<*_&@WiP2~O;uQn+BRO9%l zsHR@?VX;qx?H1ERA9IAC8my~k6IbUI7fxm6iM9UX`hs)EV%wS5_p_E(H{2KEYu|pu zsU|$#x_)|d^qrLZmuIofe35U=VS4d?k7a-ox8_EEZNWI8=aIpK OiF>;GxvXSm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_2_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b0e1548fa41115c7d06c960e2af409d9c09f2a1c GIT binary patch literal 426 zcmV;b0agBqP)P@)+k+{o#AVrq>NXZ&(m-qQmF&b8C0u4@%0{{R30002H__6N5eL3f| zoKiCE$$x|#02z8I;xNP;fHV3s+|9}meyuxjlL~aWxJQ+9mg~>>&k&-{0GR2W<`GZ- zBkl}Pv5pw}BHmTd!DXlu-?0$`0000U=Y7MNh1rG=b?M_=cU7e}4SVt^`PE|Ng5@R=p%*t)sXDK%dj6!<2#O1|G}r6v;1oA2B36K1#v3Z<~cE^ zqVLXl2~tN+9o#H?;BE%g0w98*SV!vk2qLsaEypUZyKnig7>SX@;l&E(4%$(WrT2xcKZc z042mJrL$1#&6j?gY-lfMIar<5eS&vd^&+e4$)3LJE3ejfS%TbR00000006*3e@pj9 U47?QzQ~&?~07*qoM6N<$f_Fp8NB{r; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_2_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..05ccaac79741aac66e30b935ffdee643ba8e1b43 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Jr`_=;_!R_^H9`=wn<4ooIqU_I)Z`|U##Z%AYRL;xirLie-7Wb zneWTLu$FXsoZH#5(#&i3ybCsqs%I9S3HY@|S0JDtB$JLl%jxcqAO;r(;iUPwLN|*i;g<@5<7jB47D? zn&0)uRswC`7-!68T5TO~@ZxImEZM&&&c-gQ&%QVDenG&Km$H_Xe-c)(_EzV9bbfPk z+O?)xtWVBP-=>*&Kkp^WjQ0frelwo|c`PoJ!|=Tm%Vwy85}Sb4q9e07_i0YybcN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_2_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8efd1df120d50b84cd15a7884717514b7c131c GIT binary patch literal 724 zcmV;_0xSKAP)j{ZUbD*c$mB4IF76RI1Vu;-m;6$J3u&8>;~Z)vr!1iV@yYjcXiAC zJYok3X9d@OpM=umUPSL?{~3@L9I8h_syTh{*|ReMdFEv*xN^E499gGe%ro;(O6g~# zZk!X$bJ9Cby%qiZLzoak2qA>DQN6E%0;k!S@meBsw9LpD?+PuZv*OCOsubbfr#!%y z{)hqCWpN`T()vIF5WXlcu3~_$nwdAF>Wgt>yx!b}Yj#bl^tnUNUh}qNPs`mcO?qx}+GV_h2M}&ULP*LTmZV zaRy47jYG0n0a(h{0!4VD(+qJnYE54 zYw_ti9U$NBdXe`#?nKWCfZh8d?|0*U*Dli4Jm4E*@DM&B3%!?$lNp1h+~HocoFH1d z1?tC$4IPTG+4?c4;#Rz(&`1D+63qHcldjUmxQI09{f1i5X_Wv=3-Y6P*D%}l#i!}w zR;u$X^txux&b8v@Yr6jRJVYA2dAfNU6JN zy9Xrbj_K=bqU%@3a{8@;5JCtcgb+dqA%qY@2qA=!&)^>!)Ke!g;}B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_2_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_2_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_3_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..311e4672e3bbe08e11e17c17ac61df44067da8c2 GIT binary patch literal 427 zcmV;c0aX5pP)s|J`u75bm+B+-4L$>-qF|L?rsd>$GQP0Re=r{_ozff&p-30Aw)d_U}iMTBM$!* z_XwzB9WnGpyk9|ypP^2C$3hGM006k1_XVRUs}*l*(&bz?wMuOow&Yg&tHsC#>BFL% z1!|Mh-R<4-^K#BkhgUa7mlWDZL%IRKhVAH@UvXS|2cJYle>HaF zOfTi?&Y$j$K!>&3PaM6v(ZcO8i!k4~RIB~mHlb}e1;w}?aI2iNVS;{_4yZ2C_&MwD z(g9_DFM~aK%G23oLq|EwNiw;*PVk>vqbPsJpUVvRnKv%9%M|1m9RL6T0000U^am4n VLkzuR`MLlA002ovPDHLkV1f(Cy?X!v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_3_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e9fb0b0ab264fc4eab03dfd6dbee3e7da760a0e6 GIT binary patch literal 418 zcmV;T0bTxyP)HyO38Z_4({Fy2qAQPn)vRAo0W{&zriC6*tr*p-c{TmE)MkTjagso=M(zL<%aC@=HV1r>J~j zbcX-!od*B_;OqAJ6xExYEDyA*H|jt+v-(b1ePyW>sS^(8G4}D-De1J17>{?RvYbVB z?lfAX)J0DD4{^jFv6HR7%oo;z)U>ekwjEZRtHQO5g&R=)s!s7>7Pai$+4WYr+j61I zx|nvSpmo>UtcdK4e)ySZz?Vip$P_ej_SQ?MaekSg^V-zhJv^NpWtqqF)9eP}r8c`k zGsr}L8zt04e>3*L6Isa9Ajs^&QiK-(000000000000000003C#329X^U2!rjVgLXD M07*qoM6N<$g4{5`)Bpeg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_3_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_3_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dd90178a3abae7252f095f924cd857191d1dfad7 GIT binary patch literal 751 zcmVaa`rcagaLxl2t680mPtWHW1UWg+xfM!y1~rTbImd ziy1(S%=Vd6kVtQTKGftH{d&ZxX($B)S z^_ak}lhSf3jp+RsVE_OC005xTl&y?yS7~}eE3HC^s9Tcj91B}voCB29LZIWr)3Hqg z#glM0ZYhp*n?1tR1A&yV2{_Z)uiouo=lHtOd<#Ni~zyPtViv zSIi!DSVLk)HgsH!%8*Y2txV8RVp2M~&cO6R!a^O3x^+uI>b2^#=6gW*fF(({I)@tK zl9^BkkPeh)$^%5t`m*E5Gq~zHBLYj^3$tHNIZlo&=8o2rknw1%WKGP%fq0bY z(<#IOO--BGxBEi+FiyhcxKU;T@={Lz%=MKck0f7eG5O9rM1hVv^@*C*us)EJuGQ8s zl{a*i#+^TL*ecB

L{0i6Ya~Q0bI1FZFq|{%+`I6yYIc~rCLjdmMOd%Kc8@G^?9y!t)UP_5 z>wFZRO$P|uaZ0-ne-js5grFz0eiyVG&aqFTf55IE005@5@?VsuF=*cjn%Qt;zSlNX zPwkQH8~JSt0WL~|661OjlkAHr;v>=^_L>3X2+#UO@e~Ju20Q^>k4s62{u|DKN2DUK h4Fv!I0002sAAc++gZM&ZE06#H002ovPDHLkV1mkFVlMyy literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_3_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_3_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_4_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..2ed1dca4462885177fde18bdc869cd18cac94b65 GIT binary patch literal 425 zcmV;a0apHrP)u`9#VF(4p5dHbcG!ct>A{ySXuiAMXmBWCEQo?pcY5?tjK#Q^x`k_<$DU+cnl5VJ0@ZP006+{qE8q_nLY5LDlHefswTDRSd&ZXzm_8xq;HF6 z7N|~2H@7#-_ba6Yy}X(+T2iP#9q9`EI@Y6Uyy7@@hL}V||Fv)puvg9maVpmqIWcFV zAI`W7GJ8(#+$={B?hdHwA?xt+nc5iu006kp;auTPp_6gvg3>!`a5l%;na_Jc^;}8M z(f6`>?Wg$`(BV<_FZNCnJxQ?8VG3cqaq6i0cYE(N(gi)#BO1W0&(uo=j_U*ol5wBY zUA*q=%^=}21~@c8FJU=&Iy8#}|2e7`&8LjC%SFrMukwg7ATk;N000000Nm&g7w}4K T8KqOw00000NkvXXu0mjfC^5MM literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_4_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_4_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_4_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_4_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_4_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_1_4_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..223063c8a431e4a19b080edcec045d6472be600f GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh3AW8Yx~9*4kX zvu6MJ=l&^nS4WFPlFXtH2CXH5JYk0_yruYQI_iLEzO-Ydg-&@|<)3rtpq$ zCw8Pu>o_dEBUYJvuK8Iich%W>2TViHUbKnp@Q_R`{xE@k`qqPz33kuy1aGFYznR{2 z>3+jAhwwnX>kgsQW1D${0@BzncE0)bQ~mAKrc(zGGxH?^9r{1hK{D%`&flbuHNKm= zTsQON)|#Xo(M*pn-`J%!>-jdv)e{RW-~9=>(><^9+jch@>%YQvOAf?M*jah~*0yQ$ zcpg7Fwwp=(!5vv|=jCz>uU4*=n_Htl|Ne>X!520yEN{t+IoH5_F|#@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..3016710d230676a6bf0f75e037e58882f6d42e2c GIT binary patch literal 453 zcmV;$0XqJPP)6%5dhT;NIG3N2C4yg49Nf-j(5={kPN_+d`35*m_O1(2)DJQ3GECB zA;|T3LM#CPPV{n5g5S{%xJ0hI0RRBr$^LB{`6isSW__iKF{-~?`KG(U#}tA)6gfLMaI2mBqybf2va+b!bPwZj#3^?TX(b>@nYe&i0mkEHM zu+GtBswui`b9UwttA?tx@z%(I^{KUO7aesb8UI88006*a|7gCUqF1kZ@AT{L8v@yW zJ;0V5_Zvm!N&DsHyHn1V5cWTsbA{w0hfURZWy`5wX4X5MZReDt->Tc$R{K(fUFTZ& zoDH1P8yh&k_bB4G4?t-XD{jdzaCXvZ#k6}hbZv1mrRr*aBaJg4^I^43N_7vn>s{cl vdfIQwJcK1om5VIM3`PI|00000z>WR@z}`V%5IAk500000NkvXXu0mjfIF!y9 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2b51f30cfe212df5691953efe741325df2f02f56 GIT binary patch literal 488 zcmVP)^d--*AwG`}}woP$8B8SIU8I^qq5`w>vN>pKuhT?-WNskc3+_`c5|i z+fYqF?IA2jG6C^Zx3(@)p_hPs%_E%yu>{msoVqy>OF&Ru^XM*w006)WPN{+)pIMcY~Dj|q_7``4C z%dh4iiwzZziyh7z8deDS)DbXt(CApLa8J{hCp*gziz_+Kqi{o6rT46}*lMFg%QCz{ zUk7D8IN#Gf%o1XBdlQj(%8Z-SF9FBJa#mEH|U!#!hl_DL-R1F7M8b zJ^fepz~GR0v`D@W*vUgvQ0%dLf0MZa0DvV(tSoO?;;*9{o0{>-{$lwC=hUrDdHws8 zJ^vf?V{H%H?d^MeEEwn~VVW_U7xbbw@yB^D?=AJKtzt)(iju e00000U}yg(M{|m7&jrN*00009+(ZA*VCed@|PAoy2fib<{Kb!IN{@_S#z zRiaKVjsEoC?DqF3PQNC4*vpxAxbr>=Wd1Y##N2}0xBc>#or?F}s=WL5$=oX@yEpik zFz@+SaP~~d*1hli9=)3S$)o=Nt+_>+`Zj56HY-d|uHNgr{9oABqgU?ywU58P|Dz$Z z=z{&!gF70`aSjHN*M*|Fo>_m>pv73RYH c2c#b;#sBhK(bQyCCJhqxboFyt=akR{0O4Ja%>V!Z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_1_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba54aafe987c26d92d9abc6c27e37786612bb39c GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2VV9{X(9@oHI zFa2)(pR{Fqok5}mi-n)?ysZ15T{{l;7#vbl1?qaR?aY}oR~8HW2;)~+IwkAH_Op(2 ze*O#OPdIg^=$xw0)__xAn-YC*uX?@w^{Tx-uKSsGsc-xnnRH!j*XdXL+qY-TzFu@L zQu?n*B2!oJ#t(x0lls_lG^1`6N{_C}8#!e^beKi|P(X znCyRhikX4o!mnF3``>LnKVS7sUsW4#?fJvv0spTXn}%<*_&@WiP2~O;uQn+BRO9%l zsHR@?VX;qx?H1ERA9IAC8my~k6IbUI7fxm6iM9UX`hs)EV%wS5_p_E(H{2KEYu|pu zsU|$#x_)|d^qrLZmuIofe35U=VS4d?k7a-ox8_EEZNWI8=aIpK OiF>;GxvXSm}07TgJU{Aw!T~GOSU8Ih^WEG1~08uD84Ma6;ArTVmu!<&a^Adly zH~~ai#=YMrA=S9FqMoex0bznuy%Iu6>1%z@$_0osPffvN)AP!feX7*i)Bc1Ieirtv z+XU86O72wJ(fd1L00000fOk@H4V7-_Yvai@n3y4Uxa9V6DDnLciOfl3m_0Qu7nCZO z#4mAEC}$#8$mhVuy=+KDnx}tC8&l~n?J<=@n&^|#o5!bYr`1R&K+0kotEEdz&XDp$ zDb(xeGA-o|Q#QWm@XH0Y?}8FfR>#2%&gf!`bo6ip`^btkNJOeD;{FR}?ysju9b+kJb__zR0S+{XD|PmSKy z(qs}u{wIBa%(w%@Li|UT{PP*5_~U@GI)n_nS% z`lxEV{EF3C?V&3bk!#;AD=-h|!51Q7<$92(DvQmf93i`qM2M0kVCCdrvanfC_R7Rg zO8N37kI{xjo%WocR46?%N+|xQ8X;S=XYlr?5`%L={!yi6i%BOY7)Cfdlxgt+aqHzt z9_KFrE&itHmeziw*m44T-t`zm)4ZD0(3qZ#)v5;U5XqMp!0u1<#H7U7Ta)e&*}SY` z^jU$fEWA+adNDTHpDq4B;LYs#N|L?!hgC)Z004j|Z7Eefg%BAqzVAlQ;aD2>i}K`v zYiPcI^^DWb>OKQvE2`3^Qsr$;&~|aaoh0{bFaA;!d+yVp15A*e6JN%ix&V)^^DTee z8f<5R*tBzJN^)^V^K{PI(Y2gvg1!bU00000u!uhm;zoDWT5KHv0000}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_2_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b0e1548fa41115c7d06c960e2af409d9c09f2a1c GIT binary patch literal 426 zcmV;b0agBqP)P@)+k+{o#AVrq>NXZ&(m-qQmF&b8C0u4@%0{{R30002H__6N5eL3f| zoKiCE$$x|#02z8I;xNP;fHV3s+|9}meyuxjlL~aWxJQ+9mg~>>&k&-{0GR2W<`GZ- zBkl}Pv5pw}BHmTd!DXlu-?0$`0000U=Y7MNh1rG=b?M_=cU7e}4SVt^`PE|Ng5@R=p%*t)sXDK%dj6!<2#O1|G}r6v;1oA2B36K1#v3Z<~cE^ zqVLXl2~tN+9o#H?;BE%g0w98*SV!vk2qLsaEypUZyKnig7>SX@;l&E(4%$(WrT2xcKZc z042mJrL$1#&6j?gY-lfMIar<5eS&vd^&+e4$)3LJE3ejfS%TbR00000006*3e@pj9 U47?QzQ~&?~07*qoM6N<$f_Fp8NB{r; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_2_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..55624c5d6388f98b0451a739ae16d902c7ac6162 GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2V;G|{+o`%G2 zo6R5ob3YaP>%o-7Nef(CFMRtyFG5SFMJhK4q^oXPM~BB3Ehd{q;uC_rRKHw4moWG9 zzy3If$sJGTY&V#C?3$kV4%@F9rv0;4?bGr4BfDT<=hyksZ(g zdh4PdGML3~+#ndQGJnnnFRovAIO0TV*srX-srFs0dVNd!q|4Jh97}`VNj&~Z-jw&zpy4f1tw>MRvncrb;{_+Ze6KUtd7;7fn)XbQB zVR<;~hXT*X`~JOjp3ivSW%&Z>^V_~&`uXgSnQZymvwY?1A>LWG%t9;Jz`O0q07jU~E1fPx4a9JXPs`Y#jvtns5RNZ8ZW&t;ucLK6UE)U}oX literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_2_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..8c57f8c13bbc2371ec1181243d48894d1ced3b51 GIT binary patch literal 898 zcmV-|1AY97P)O^ZMgt#Zu0uA(T4q9}@@_$GSqy?6YP zA|K_CZf?HQe~_9-@hd~=HMyG_Q=B!{tXOMpJe{xgRww)p*Qmq313Ma8Yf>QaJ3b$j zw&A3V04d$(fRd-{JFltNT4MuE+OBtqiB$k$H623Y2p}GVx$o032UO}&1yg3klGp*^ z$+Bkp+&6b#M;U$W(-l7j4cF(9eg|k3M)FIMLFOM2w|j?Vt%BwWm)s=Dh0Lu(Mp`Md z0-yzq9_U%rUGY(Ia3uAQ5fc2rcTj-QV$6C zV=Y1`7ofrnCr@!KGy)XE z?6q=p{X3rO6HbT^tbn75axL-n?*S(CtW2s3kl!J)$*Ki?6k}ioeygH%zCQx)jJwlq zzK%69uDANZL1xmaKs!LvrGJE3STV5ekRh`HGC!D1fSHTy)PIxMbXDLIOub1YiU#6_o}PU|kukZq?GjSA@UzxEq@LKm!z@OcfawFuBdRW8(qr9|gdMNIvMELM zf9oFXxv2hLfrx##tv}szz;qRkJv_RZf{?Pti=~hD!?^QeHu%_o0~+uj0k(Z`egO1t zr8jg(-{hVY1RwF$P^)L|5xxEndU3VM^^VCRA}r0!powqht+^4Wig7Pf9Z(cSQ4}xn Y2j--}&V2jpoB#j-07*qoM6N<$f}C=#b^rhX literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_2_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_2_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..0da504c40e39d62c7a04781782b22bbef2f85b48 GIT binary patch literal 521 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_u9>EaktG3V`!z`mmj9IkVx z-}L;xf62R4JF7~?MIxfNwpc#Dyy%hWmLQNR3~IOqNcLEc&18E%iZ<=Tq=(eFi(bbruM)^j-ahA7 zfQ#DKWyX7$^cDMi-b_Drn)7CZfIrX!>zuBOw|kW?{x7%JEB(Co?%&q>asNMswQSh! zGsSI^ho-x?+x@>~9N(3$%y3Pgm#(z`b9YQspWfO{EjcUqnay7*oPY7zkF#!(UXpWD z`@ZmOcsaH6$@NvI!lugfX_%Rnb}Y;a;+US-aP4UPp+C3gm(2|OFP3+%!Dt`*rf$E9 z=_}*E$QHb3S~4Z*=0fAB+ZO)co=p`#-ML3{`oFjPFKP3|D4cMws|fpKH|5odzxGW= zSN7X}3->7fccVG#gZt~RI=g~4vx^rf8C6f<`UHwY46x)QyOiiHb+w&mv_W#7u6{1- HoD!M}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_3_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..311e4672e3bbe08e11e17c17ac61df44067da8c2 GIT binary patch literal 427 zcmV;c0aX5pP)s|J`u75bm+B+-4L$>-qF|L?rsd>$GQP0Re=r{_ozff&p-30Aw)d_U}iMTBM$!* z_XwzB9WnGpyk9|ypP^2C$3hGM006k1_XVRUs}*l*(&bz?wMuOow&Yg&tHsC#>BFL% z1!|Mh-R<4-^K#BkhgUa7mlWDZL%IRKhVAH@UvXS|2cJYle>HaF zOfTi?&Y$j$K!>&3PaM6v(ZcO8i!k4~RIB~mHlb}e1;w}?aI2iNVS;{_4yZ2C_&MwD z(g9_DFM~aK%G23oLq|EwNiw;*PVk>vqbPsJpUVvRnKv%9%M|1m9RL6T0000U^am4n VLkzuR`MLlA002ovPDHLkV1f(Cy?X!v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_3_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..05ccaac79741aac66e30b935ffdee643ba8e1b43 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Jr`_=;_!R_^H9`=wn<4ooIqU_I)Z`|U##Z%AYRL;xirLie-7Wb zneWTLu$FXsoZH#5(#&i3ybCsqs%I9S3HY@|S0JDtB$JLl%jxcqAO;r(;iUPwLN|*i;g<@5<7jB47D? zn&0)uRswC`7-!68T5TO~@ZxImEZM&&&c-gQ&%QVDenG&Km$H_Xe-c)(_EzV9bbfPk z+O?)xtWVBP-=>*&Kkp^WjQ0frelwo|c`PoJ!|=Tm%Vwy85}Sb4q9e07_i0YybcN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_3_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_3_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8efd1df120d50b84cd15a7884717514b7c131c GIT binary patch literal 724 zcmV;_0xSKAP)j{ZUbD*c$mB4IF76RI1Vu;-m;6$J3u&8>;~Z)vr!1iV@yYjcXiAC zJYok3X9d@OpM=umUPSL?{~3@L9I8h_syTh{*|ReMdFEv*xN^E499gGe%ro;(O6g~# zZk!X$bJ9Cby%qiZLzoak2qA>DQN6E%0;k!S@meBsw9LpD?+PuZv*OCOsubbfr#!%y z{)hqCWpN`T()vIF5WXlcu3~_$nwdAF>Wgt>yx!b}Yj#bl^tnUNUh}qNPs`mcO?qx}+GV_h2M}&ULP*LTmZV zaRy47jYG0n0a(h{0!4VD(+qJnYE54 zYw_ti9U$NBdXe`#?nKWCfZh8d?|0*U*Dli4Jm4E*@DM&B3%!?$lNp1h+~HocoFH1d z1?tC$4IPTG+4?c4;#Rz(&`1D+63qHcldjUmxQI09{f1i5X_Wv=3-Y6P*D%}l#i!}w zR;u$X^txux&b8v@Yr6jRJVYA2dAfNU6JN zy9Xrbj_K=bqU%@3a{8@;5JCtcgb+dqA%qY@2qA=!&)^>!)Ke!g;}B literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_3_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_3_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_4_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..2ed1dca4462885177fde18bdc869cd18cac94b65 GIT binary patch literal 425 zcmV;a0apHrP)u`9#VF(4p5dHbcG!ct>A{ySXuiAMXmBWCEQo?pcY5?tjK#Q^x`k_<$DU+cnl5VJ0@ZP006+{qE8q_nLY5LDlHefswTDRSd&ZXzm_8xq;HF6 z7N|~2H@7#-_ba6Yy}X(+T2iP#9q9`EI@Y6Uyy7@@hL}V||Fv)puvg9maVpmqIWcFV zAI`W7GJ8(#+$={B?hdHwA?xt+nc5iu006kp;auTPp_6gvg3>!`a5l%;na_Jc^;}8M z(f6`>?Wg$`(BV<_FZNCnJxQ?8VG3cqaq6i0cYE(N(gi)#BO1W0&(uo=j_U*ol5wBY zUA*q=%^=}21~@c8FJU=&Iy8#}|2e7`&8LjC%SFrMukwg7ATk;N000000Nm&g7w}4K T8KqOw00000NkvXXu0mjfC^5MM literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_4_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_4_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..073b4ff597eccfee869a2e673a20fdc9a26808d2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh2V^g1R*o`yu5 zLiIQGo_9}I&hU`p>RG&T?WcPGj>D?1r#v))nhtDpadBCcF8DydifQSTOHS{%u~lCC zEoa-PDY$a0Tw+%1;yZE@*ItCh+Q)|f+Nkl-dckkiSN-m9N)}eHsjaqZ$-8%I>$Mv% zrt@$Y>=5CW{;2Zv32S7~h3{@3d=FYXEKi$#C;d$v=Xn)t?iGJu&72j#ZO8waS8XEqzjzgN(6`Gz$@=sr zhEEH!nVvsZJDnOcy++)eS6*oAy~wfy6K+q8kgsXG9Hf7sucmBKE%&Q)4Am-g{PGK1 zZmfHA*v@>hx^qs^yQ8z%X1>@h*)r>ebuzEg#8#z3K6j-(K>s6y1IPa`?+y7|aM8si P5+v^F>gTe~DWM4f6K$a+ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_4_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_4_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf25e82e2e4c493e6cad0d5895a85127de65a18 GIT binary patch literal 701 zcmV;u0z&>p;!qt(b2aLJCUeI8%*+yU!`Z>cwG@W-Y0jD%|5 zsEa{w(Rf|nZFZbzboah5lDL)UWj}2>0Cq!<%zoN+0PMD&ItCl^T~%l|f+TYcZbhdz zekecv!&Ivja}UHrdow~ukTAo*qjiKPC!Pi1;;4Ubs5P2`C9V?t>Zad{`LCg##wX#{ zT}3x=Mv@f{>!*5pj~Klf_TCnS0Vm) z{3#MKHULAVKuo1kDbz1YmkZ17fQ2J1y3p%sih6-YCccmh`HVf_!JuzN5JCtcgb+dq jA%qY@2qA}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_4_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_external_inputs_2_4_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..223063c8a431e4a19b080edcec045d6472be600f GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WMba4!+nDh3AW8Yx~9*4kX zvu6MJ=l&^nS4WFPlFXtH2CXH5JYk0_yruYQI_iLEzO-Ydg-&@|<)3rtpq$ zCw8Pu>o_dEBUYJvuK8Iich%W>2TViHUbKnp@Q_R`{xE@k`qqPz33kuy1aGFYznR{2 z>3+jAhwwnX>kgsQW1D${0@BzncE0)bQ~mAKrc(zGGxH?^9r{1hK{D%`&flbuHNKm= zTsQON)|#Xo(M*pn-`J%!>-jdv)e{RW-~9=>(><^9+jch@>%YQvOAf?M*jah~*0yQ$ zcpg7Fwwp=(!5vv|=jCz>uU4*=n_Htl|Ne>X!520yEN{t+IoH5_F|#@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_naked_opreturn_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_naked_opreturn_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_naked_opreturn_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_naked_opreturn_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4c3776135d420a23d4d553d2001ad7454d0be370 GIT binary patch literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`huba4!+nDh2#qEM59KwDzg zF3#`vm+mc<_u<*xutIhBliz=ggp%!&Ot~0=ns(?43JSgsl&FZ}S7;F^`f~Z%f%7%{ z*RWquRWdv#5^U#j{AWv=_f79u_t;f7XS@D#1>8UKDfQGkn}Fp{%iHAx%g!G+bi4hf zxt-I4FEvp8-I9589xP>9JNv=(o^XfAS+5`63tlh!*{f()w@`@KQ|H)OIfK!+~pus~Bcg>8&xBuBvuC+xKGs&Ssj)pxyXJGSa>0g7MWA!#6-!F1j<$Ym){WDVq-q+u`Hs^Jl z&#%iSi`4#}oWblJqUhZ`VP>`RxvR!5xu{9kv_Qh1u6{1-oD!Mx3ba4!+nDh2V;HG8;9*4kR z%d8Xsdnf6?KP=hKsTicqd9B(`@TeM_h9)CW)Alg$B0(q58vKCjIxaZEhWykj1kK0{XI}&*7em|cV z;J#;ip#R5ghglm|JoB>Rs(N!vcxJ=j>DPk~nl0Zx*L`2`;`6gU`+L0zT$OC zzUAB6i?8($ft>JU3$JK>Sx@fL+V>CZw&aRfhgA2kF574Om1XVTlsO)^&83oWru*hT zKJhyyyK`|z=^OUddDARBYxF^`{RM_B{OhgGK4Y`d>~z%97j` z>UeOP-rr}e`ryd{U-K(Z4jgoxaPnYCi#X7g$Y91Z`Lp+BPH5_FsRappy85}Sb4q9e E0D$4PU;qFB literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_naked_opreturn_0_0/00003.png b/tests/snapshots/nanox/test_sign_psbt_with_naked_opreturn_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_naked_opreturn_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_naked_opreturn_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..80f6eb6a48cbbbb3d041f0cade284c8687b033f2 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hoba4!+nDh2VAm1Sco`yt| zdrQ9C2fcrE*r;i7v*dBF=l^Zbc1dSSDrhnSHBGOsC|}?jdb(ff(bdU?arb0j>`uM6 znSu3&Mtpb7Y^w~j*%vPFX0BZ|YxB;S4v(3s#yd_N%w&yVK9hJ)O)2nRLq%}FFP{v* zFKVY#c|%HXNwLgmGBWP$J#)_f|B{H{0Lhp;34&}43_twUbDYl_pZ=D%F>mskvx|1} z-u->b{89eov%hX6yjNH#oqs3mg6q#C%DHudFXw+??c;e>%>M5H(~DI-J=HM*%>0jE zUEXN&{LM|{k~=ZBtVg|Sqx`=dE1hlnK<`!Tg*4t3(^)>ZfAu{x?d#feT{HN9t-8&- xrs>~`M*FM>{ZbW5zvrFUr@o0F=wD>O^O;Tb73WK_sZ0w&!k(^vF6*2Ung9tSnmGUf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_naked_opreturn_1_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_naked_opreturn_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_opreturn_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_opreturn_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_opreturn_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_opreturn_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4c3776135d420a23d4d553d2001ad7454d0be370 GIT binary patch literal 360 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 Xo$&u9D(CjF00000NkvXXu0mjfUP6d% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_opreturn_0_0/00005.png b/tests/snapshots/nanox/test_sign_psbt_with_opreturn_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_opreturn_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_opreturn_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..80f6eb6a48cbbbb3d041f0cade284c8687b033f2 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hoba4!+nDh2VAm1Sco`yt| zdrQ9C2fcrE*r;i7v*dBF=l^Zbc1dSSDrhnSHBGOsC|}?jdb(ff(bdU?arb0j>`uM6 znSu3&Mtpb7Y^w~j*%vPFX0BZ|YxB;S4v(3s#yd_N%w&yVK9hJ)O)2nRLq%}FFP{v* zFKVY#c|%HXNwLgmGBWP$J#)_f|B{H{0Lhp;34&}43_twUbDYl_pZ=D%F>mskvx|1} z-u->b{89eov%hX6yjNH#oqs3mg6q#C%DHudFXw+??c;e>%>M5H(~DI-J=HM*%>0jE zUEXN&{LM|{k~=ZBtVg|Sqx`=dE1hlnK<`!Tg*4t3(^)>ZfAu{x?d#feT{HN9t-8&- xrs>~`M*FM>{ZbW5zvrFUr@o0F=wD>O^O;Tb73WK_sZ0w&!k(^vF6*2Ung9tSnmGUf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_opreturn_1_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_opreturn_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_opreturn_v1_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_opreturn_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_opreturn_v1_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_opreturn_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4c3776135d420a23d4d553d2001ad7454d0be370 GIT binary patch literal 360 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 Xo$&u9D(CjF00000NkvXXu0mjfUP6d% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_opreturn_v1_0_0/00005.png b/tests/snapshots/nanox/test_sign_psbt_with_opreturn_v1_0_0/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_opreturn_v1_1_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_opreturn_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..80f6eb6a48cbbbb3d041f0cade284c8687b033f2 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hoba4!+nDh2VAm1Sco`yt| zdrQ9C2fcrE*r;i7v*dBF=l^Zbc1dSSDrhnSHBGOsC|}?jdb(ff(bdU?arb0j>`uM6 znSu3&Mtpb7Y^w~j*%vPFX0BZ|YxB;S4v(3s#yd_N%w&yVK9hJ)O)2nRLq%}FFP{v* zFKVY#c|%HXNwLgmGBWP$J#)_f|B{H{0Lhp;34&}43_twUbDYl_pZ=D%F>mskvx|1} z-u->b{89eov%hX6yjNH#oqs3mg6q#C%DHudFXw+??c;e>%>M5H(~DI-J=HM*%>0jE zUEXN&{LM|{k~=ZBtVg|Sqx`=dE1hlnK<`!Tg*4t3(^)>ZfAu{x?d#feT{HN9t-8&- xrs>~`M*FM>{ZbW5zvrFUr@o0F=wD>O^O;Tb73WK_sZ0w&!k(^vF6*2Ung9tSnmGUf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_opreturn_v1_1_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_opreturn_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..527667d5233d35bcc2d9edd558a3bcfb3d021868 GIT binary patch literal 377 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9cba4!+nDh2#;-qE;p0>nY zo6R5ob3YaPjeWC^TEnffFWzr||5>Clg{{-en-QpO-?W)CXI6| z`o8+B%n?SLqq4b!^|ut+Cq_MvZmn|)|7Rllmy08O(f=Ds&$%CNsVn)eUGq6^-PWwd z@kTxlpF?zxb*P_I*FQ0-$@!*?TB%kU*(LI1@~2?mW#tz?wr#xl zCp%mY==f{SUynZgnSUoF;_Xi#={{Tk`7XzuCAT$CF*9olGi85mzKe_X?P`ZEal@%R z;&rq}k3HfiWdSPR+>O*}> z;r}kimh>e+<@}FZvW7 R@0bh{_jL7hS?83{1OQolpR51? literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_0_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..687e6d5cde9fae2b37cb3b9d50328181b295fed0 GIT binary patch literal 519 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>Aw>EaktG3V_p&!Qs=Jg#%s z-D&wP-?=;G;gO{VkvD`YD)O&>J=maXcyg}}P!j`#ztS;@UO2gV=cJN};TI;9=Qcg&@o-zy^EX-7qxqW6tp(afIfW$+l^dQ+ z)T`ZmY-{N9!`t+Jt7b^=n)7mX#_xW?X#kN>?&+;WAT57d%`VrFeET^($# zDW)IDShiZEW z#r38vENR}uCVt!T&4OuM`A@Eyy5@@&%M?2%AytUvrsrFRt_%z3o-sGZ&n-#uF+j=b)VT)@Ka!^ZB@=3B9%V$SOn;rWVr8(4hV z*nw_6VEs_ZEac7OCeEYL-L5;p>flPb)kN}j;YxiTvEOfBee_9(R4^#2JYD@<);T3K F0RXD6obga3umFKm_nuFJ1?CxW2mk;8z+y_#RHKlaGOHJtS28?L=3s2g2vJC#9Xo_5M* z9YQvfYQ;5b1uK_B#_E&G!?|>TOHBX(_y@-B(Q0?4=rezryr&OluOf_RtDTAA_kF6Y zs(M7P9oHL0p9i$tPG{;6yEoA*gZ&7= zKr N002ovPDHLkV1ltr+NS^j literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_0_0/00004.png b/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_0_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cc1210f5c64ebc7f72d02d084bd63eff1b9dc306 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2VAYZcrPebCi zH)?zTPpq15J3~Ni>nskDJO6EWp3~gcC9BB@)O2|7BK8M?S3fQ8aOqt#-~S84Ia{Om zHw8;_LAYo5eKbLh*2~7Zb C^_JHF literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_0_1/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_v1_0_0/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..73cd118fdd24fc9be59f2356f1e8ca08df127b43 GIT binary patch literal 418 zcmV;T0bTxyP)d9^P)FJrgx2V?00000003YXFYf@(Q`N04 zB94)KBIN+s)LR*cA>ROO*|+I#ZcO3FJAjjlM5oJpR;p^(pZ?nvvd#dw**ncMp8iYT z8BpXpW9nD={sk@k4GrQuF2n!;0D#*?zhG2jwBt=7T`qK}MQPJ9l3UqB%TWum)1p}g zs*BRi?alV{L?r0x)y&Z)jr!G*4dB-?j;8({$DvP%NmcEkg&Tl1xFU%|wYJEGxgz`F z^p~Jw&!L^0?FhonfSUcuIy`-bb_M_d03H?RfyU^?xO1u5>s4=ezch7wE~vg-vbk8> z#gjkH2Z0WI)!*3vkSQEi5&9d4dez_CoCjkEaGmH&(AS$~0E$~QaY}Nt48Xd?i^$gS zj_99HHFU3L*(oL$_X*zVwU^~M*-s|Ux^badmY}d000000008iyKWtAmNzx`H{Qv*} M07*qoM6N<$f{cj6jsO4v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_v1_0_0/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..527667d5233d35bcc2d9edd558a3bcfb3d021868 GIT binary patch literal 377 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9cba4!+nDh2#;-qE;p0>nY zo6R5ob3YaPjeWC^TEnffFWzr||5>Clg{{-en-QpO-?W)CXI6| z`o8+B%n?SLqq4b!^|ut+Cq_MvZmn|)|7Rllmy08O(f=Ds&$%CNsVn)eUGq6^-PWwd z@kTxlpF?zxb*P_I*FQ0-$@!*?TB%kU*(LI1@~2?mW#tz?wr#xl zCp%mY==f{SUynZgnSUoF;_Xi#={{Tk`7XzuCAT$CF*9olGi85mzKe_X?P`ZEal@%R z;&rq}k3HfiWdSPR+>O*}> z;r}kimh>e+<@}FZvW7 R@0bh{_jL7hS?83{1OQolpR51? literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_v1_0_0/00002.png b/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..687e6d5cde9fae2b37cb3b9d50328181b295fed0 GIT binary patch literal 519 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>Aw>EaktG3V_p&!Qs=Jg#%s z-D&wP-?=;G;gO{VkvD`YD)O&>J=maXcyg}}P!j`#ztS;@UO2gV=cJN};TI;9=Qcg&@o-zy^EX-7qxqW6tp(afIfW$+l^dQ+ z)T`ZmY-{N9!`t+Jt7b^=n)7mX#_xW?X#kN>?&+;WAT57d%`VrFeET^($# zDW)IDShiZEW z#r38vENR}uCVt!T&4OuM`A@Eyy5@@&%M?2%AytUvrsrFRt_%z3o-sGZ&n-#uF+j=b)VT)@Ka!^ZB@=3B9%V$SOn;rWVr8(4hV z*nw_6VEs_ZEac7OCeEYL-L5;p>flPb)kN}j;YxiTvEOfBee_9(R4^#2JYD@<);T3K F0RXD6obga3umFKm_nuFJ1?CxW2mk;8z+y_#RHKlaGOHJtS28?L=3s2g2vJC#9Xo_5M* z9YQvfYQ;5b1uK_B#_E&G!?|>TOHBX(_y@-B(Q0?4=rezryr&OluOf_RtDTAA_kF6Y zs(M7P9oHL0p9i$tPG{;6yEoA*gZ&7= zKr N002ovPDHLkV1ltr+NS^j literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_v1_0_0/00004.png b/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_v1_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..adea5145ee9f6079afa78947f18c248928f3a33b GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}7ba4!+nDh3AH{W3e9@oI_ zul)A>SFO~SRZvXn_|#uma(+eEr8XOJVI`0zC~)9QOG~@B_{KwN+Xn5YUHdBh8MA(^ zlCqu@J4rNQ*v{~3-~mi#x!66n+u=`6Jn`sk-#q<-h0tY6-;Q~rCi+{?C4 zzP+Mn_lAY>Ul{iMdpc|8%B<=;dplRVp9=r=dHT62-sukwi}!LDS#CRiyW~}RsO++5 z=i>Lq)E_xo(Yjb9RY+*>huQ^&-g&?1kATlWmMzMHg(lyN!7VYw_dj l+v7`iOxs}y^C^%nm}uYsV%OsQNBKD*QBPMtmvv4FO#nWnmq`Es literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_v1_0_1/00000.png b/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_v1_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..cc1210f5c64ebc7f72d02d084bd63eff1b9dc306 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2VAYZcrPebCi zH)?zTPpq15J3~Ni>nskDJO6EWp3~gcC9BB@)O2|7BK8M?S3fQ8aOqt#-~S84Ia{Om zHw8;_LAYo5eKbLh*2~7Zb C^_JHF literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_v1_0_1/00001.png b/tests/snapshots/nanox/test_sign_psbt_with_segwit_v16_v1_0_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1366e8daee823aa34e569c2dc3390e8871aa397e GIT binary patch literal 468 zcmV;_0W1EAP)@YGS|9|{w&Kjxmt!~`J`#}+XI00000004j!Qc5YM*-;$u zJv)F;(n@{yoC1{WZ`(FEl0(D_(3@dIvu|<*$U+Ttvu|<*C@C&Um(ISKea#NwjCvLl z&A!Qf1G12A-Rx_VTk-<{0HBM7-KBQYyJq&2WBSYgZt!bfm3q3H{1v^*ODY@s9DRPfl$nKsIdU6@ppYM(JTMnK3Q0yiY{0spNKt)N>Q#zwRff(-Xr+biRXwt|M;oNupE?X4pZz-5?gM+%^Uh}KoL0o?9_RRBz@blT9)AB$V&+cR->tiY!z6R)*p(@@B6ib#s2KI& zDYd-30A;%9{ipn&s}%oS-cS9_ZbTTo8-Pv9J^%m!0001h`}_bh2`;au;XNb(0000< KMNUMnLSTaXFxklf literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_dashboard/00000.png b/tests/snapshots/stax/test_dashboard/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..d0f65a916256ab85ce56e28df96a25a4d6afa13a GIT binary patch literal 12035 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_dashboard/00002.png b/tests/snapshots/stax/test_dashboard/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..d0f65a916256ab85ce56e28df96a25a4d6afa13a GIT binary patch literal 12035 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_non_standard_0_0/00001.png b/tests/snapshots/stax/test_get_extended_pubkey_non_standard_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7f4d17e4b5cacc3d3fb29a2c2d564dd33c6ec576 GIT binary patch literal 8871 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 IE_f#X7gRURUjP6A literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_non_standard_0_0/00002.png b/tests/snapshots/stax/test_get_extended_pubkey_non_standard_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..51718a0c1ea8499519d915df6d505ef0eb153c23 GIT binary patch literal 7357 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_non_standard_0_0/00003.png b/tests/snapshots/stax/test_get_extended_pubkey_non_standard_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..bfea1800865f4a663fb441235bb24a63685ee7cc GIT binary patch literal 22588 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

0x}~&^ zHL+wZU$%*dZU}7wIrLPB=yI{2gZ~Wq*mUq{&`VWW_2;QVF|GdGQ-Rv=y}V>->tI8T z*BMS4AIVtRn}hvm2r|ivO_F}K)}ri+z|Nmt5~4n%6d9D-LV)$_f0=>tEt2DGaRKbE z_DA$Z`kP>9AWahX{}7zuL@ZLk#)i4%3xVkC9RN>u?|Qf=D+IFh_iKXxY|7d=ML%^?(h#toOxyqxzbT_&p8W{Q99M0)d|n)VPeqHaG$UL@W)9Hg?6p z@pIz~&jI@neVD)MpZXFz*2!3l-s5pU`D3p)*P?YBssN>ERakrnB&)Uc_3iAEa^HV> z6Xn$>TAtQGB@PV%YoOc%lj{a39KXK(H3X1JOp|AhPe1W_&XukT zT8KBa@sHn1)YO$pw;OU1Rwsc(acqJX!T;MQT=liH@Ze_5@+J)N$3|UqZwES;0iax~H{L$C zcK{kCfy0Z~7zJ&PjxKKkR-d+Aw3fKR^_TFZw^OTMF3d1?53WkYiG;A;rX#--9D+=@k4v?SxH#m%)O?H!&hg7(^Ki-Mu z<{ZixgxN6i4s{pAlKjNhdEu6Y^2hl~ZXE+;`nR+Tnj(I5^9ZdIQim&gxnXJLQ%8UH zM|Zp<-}E-W{Z)OImYv{_gz}0m^8PHyQO5}GLYh86qWE4OH>KS>sOPJeCC7!A`Ni9o zPR>UAS zeG=0m1Nx`-+~&N5x2{*KFm_#p8XXk?Ve;mOLyy{w#tocgu|)x;@)1xcX?cmVSGY|D zHvkl&+M?9OqGCrO!+yZi`W7aT!@I9}VrWHCvhLzvQ}u_#jkIQNH#SxgRndY7%6M^c zVS?%$l0Ev_k3Kz~WW8yPCx97nr*^Jpk=fN7s!K}Ouvu}}uiif;`d|^*?N5)&W<0~B zoQ58lgbOuQ0LR7pb`dSNw^Vf6KxHT#`~{pQevYx)E2MlD0Y-~7$b-7dIiQl`uARK( z>WFwt=5s1nGzW(RC~bG|T}1NKR%CMx9+wPb&0iU3Mt-2PZTWkt$eRt0_3(Q2b$Kqv vpFIA#(k0(FF7AK$ssA@N{^NM6TNE)XiJ)haudV?qFa&OBe!0rP`S!m7R^I08 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_non_standard_0_0/00004.png b/tests/snapshots/stax/test_get_extended_pubkey_non_standard_0_0/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..d237b94bf14d49def76062bc5577c6d03c217fed GIT binary patch literal 8741 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_0_0/00001.png b/tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7f4d17e4b5cacc3d3fb29a2c2d564dd33c6ec576 GIT binary patch literal 8871 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 IE_f#X7gRURUjP6A literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_0_0/00002.png b/tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..a080b8d67679672e197429a23209dde404e1ef69 GIT binary patch literal 6392 zcmeHM`&ZIgyEoIRsn@J|oocM4%S<{&+Qrlov9g<)8W}1YUP?_;A#bQCINfy8QJW|! zNGvlgyo*YL;HaaHkvd6Ah(Jb4hCp5b0hRaLth3Jf1I{|{S?iqnX@A$3{XBc`=lksE z`FuXyI^%P~Vukez6B82)&yz>bnwTuPZDL~jXt^oy=Ads&g^9`fR?nk{&!s+8h~&xd zPqKc3sS(7V&i=XX+Cj7JW*bd!m~1(;e6{I~up@`IJX&43T0j46FvvQ7&%50Dc5y52 zkm>Voi2b+b3o&%TFWu6Ayz4f!KDIP@7j(`1#+JZC>;HEL<3I2wzs~E`F&{l%2#Vb^ z?MGN5bgSYdl$#3STv17j)*z4n*Ctz?D0yDdo6WX?H~*u}w0-seso|GQsCINnuAa&} z2D=;iK&F#H1GL}S5_ zIPv*+h4{dCQFLow*#-lc>`TS)uCB<|hXS*HtR9Zimd7BhsUj}fkX zs*~KCeJL|$kj)4__-;>zWO)or6onXCRrHBjP20h(?}^xJoj2TD#zXNO73Tu1uQU>s zw#&S|c^}d^g4p3;AU0@*SAiwu7uAOFrx^{`pOo17R}98F$%g=I$H8QD-0uh2x8{2y z?!1hKuC(bP{Zh;Hpp>Bo!gl0cXGWqfy)O`1S4wk#hxGH#FHRv3oeBM>QiNs*6*y-q z>yejN135pqxUU_S`VH_yi5+u|=eFn4wl`D3H&DA+a+i0d4qp$YLZB&C{L3f8$3maS zvqZ`d%f4B{Q6bx@=PF)DM~u2&d3v=qWIT0q)GpI2ePL~v9ZXox)L=+tp6P9iR8N-& zr-Adq;k*gQD#*!|n|*wk<%sz*R7gn3Gz64)TsoEd^OLW#96v1IiI1vXn0~;lKJf&G z*@TLz3v56p3YPaz@T2J8VH@snLPy)T4oDSM<~L=IZ+{4{u*;#Cmim8gnBQjg-@4U% z<^#UBe710+t8an3uHeISpTZOB#x|Oqi6YO+QjB@Gd`Dg^TuQcw`0yN!iv~<#-d!F+DHEU>iq<-RtIkx2k8$gV{hTyyOdok!gCKS> zBd_zqYkY}n#AV^px?}O9hy5$y!}z@qS`1cI^l;qG|xt$m2f=d625N{t&&Q}8MHd}*UKaBs}6Hy;j6%ra6 zPyyGj^FS2Zg0R2+2L?k?l+v2 z;#k0J$gjftYO*K$67{db#?m-JRm^R=!%m#8X8vd38`P8}s)CVroo5Uj z`AARx@h1y}Ol`+1mTUh6@p>}ekAs$`AOnx+l!he589UdUKh79JG;Qh<(0Qffq!L2y zK0mRj(O^f#1ua=5Zlu10bxYTTZ&gNQ8W%;2y8O`fp-jUVeH`W%RckLqGbSt zOwhtBJjP8R1r_u}B!mlO1;a&`J|{_r{#*q|Gmp|}JMe2A3@qA=Ohpl;*RxMVcSnz6 zWm6E*58(#W7X%wdwHyn53g(LSlf})L1bI&rpW@A{%2vxL=VBRoM!8MGma-i?7@-r`QZ6n#&-r|UUu>0x8qa$ugiLjW z?I&A;nYr72 zqW!=pD7RhVZ`i39tw^e<6U3rvU1toM^NIC}w^cM+qLie|5HB`s&vYpJh&ZaJ7Q4nz ze~p~TB!yKBetNkKgq2+6Ka9ngr>Q(8Vlfl+^MS>+?C=!X0XJCfaOmrGVhj_-EN3V) zp5awcfx8jE!Tv|%ClO&f9te}|?9r7cga?XNN}j2IeIRA~o z38OK8{521p80f36nHDA0=XSoo;_`6b>1I7Rpkk2F+WKcMu$*9iIMxZ2CUniwWl#yk zOy#;Ii>HC~*O%P@b8|}mn3*5KSZu_mP}}Hc@=T*46t@Q`GTFwwg>$xCzqA~$_A=CP zsL0Z2N}v(P1dz_sbe4fRsJ5JmBpU5P(L_48QIE0 zP-W7oxefW{0D-`dIeG(TFe^5R z7wxFmcmUlr$ewfz240)1%G5X{C`-2!J*~r^4_;qW+5cvPa~wlRqt$~cr?)TN^qTl` zCc}whfw#(lw&~Z9%bv^i?dl)^^EU(xyRhQtuJkru9l;`j;D*(E45;rqD0gfx zd-t7suw>JzQhAx?F@Ur4Q)0v zfVy4%*%@aQ*Bgk+0O({7K6pmgf+7!I9+Zdai{H9E?}?ZWOT6iRBhtbHI6DgW!Y-#C z%&mVl17U~t#T9Sw9Oyz60+Vt#h&=h)`+WzpF3YDQ+>@h4oq3u@%G&~5NC zJA@&=5rLI){0|45>+BA+;kq@bSRwKjvI$4C;-d ziz!*pPuTJk0awaFKj!Qoi+$7)+g+U}`KLre;m*cctnjAD&m70Nj&Au+%cbI|8;f%9By6S;Dg30nU!`q zNw7r8`&%n9g-KjYjK#zlj+}##Sls5Jv#Yj@J zH79u;e0F4(++siw>Q%;K^((WO-7Jwk((i6&BPIw*b<(d$Mi#fYuv@0>3_@}Zp|CjC z(b{7AaE0vq!0VokpLUrt-;J#Qej%&XAcamW@m=-LfjpAyz;VrVPL(B;Yx&wMG5yt+ zRf~J>CxPBh$>-ZoE2a`2YrL5((vM{WMW;P+%)gGS%YYX7u-w=N1jo;{e2B}N3MQ=c zp>2ZBGy_{wye&3OKM>U2U{arMxCgosD=C{)h^x2z));|R zt8CSWC&GF9`Xp{o=TlK*jYueGiqQ+OSYX9a2BcFfR)~7i9Y& z1g6O5SEn_Wv&m&?0JEQIah=&q=^fCk#J@)H@yYxPbsrT}=#Kjf&K{tQ!eHM|+q$Gv zI5wIbb+D)@*XH;Wm}=7uYim;I)cen(J9F`2pVYXKr^IY^KS4d*Y9h11GEd z4>}Lt_o0EgO3$Zb$sGIlJHLQPv2?vZlCSX9HCr%2-E5W68fTe`?)zw)5!`{dfA~f; zaC+#TCB^5{6ld$yiFi+!7Aaz{d`g)MBqA|6ZwU z?$XDl?}8Or7LE3a>0?A#b;dev(AIULA$l}dU`q@Uvzpqih_M;>i)p1z1z9CUl_D$RW=~kD1cQRt-n3Cr??;J zT{ZmN&Js3b(9xSbvm@vIocLlg(%G9ROM_XF7?re7FSET1(#Dp2{sSP_ARE3=7;G@= z)oS$zC&in7Acw^ODSlZ$x!7l*vDbB)lNIV6h0(95>d!5 zeycG7vb;Cb_2{-hOLSdeDL;`alQpH`@ksF6iL-U=I(86bD9_6|(AHV3(u!omDy{5z z2>U%iSQ3}*ru61p9;&5Y4Rd?ZN1!jqWlJG@BOae8r@s8GN^hD&dT_{8$iSc2}gQUzW3hUPt;Mf#4j-LuqhRD6Q z6Qztz3}Kw!L#3~C#d>8%2ZSYchbpcDO@I4jn$tD)J2AdOd94i9B#eW@C-T}0oJ*=? z@fPWRQE|gSL&XI*WyARD6MgwVo5|Z69VUXagB% zRGBx=(R*K!kFQe<;Nad<#hbIPP0ZRAqpRWoW%QGI3_GOUy)>r75q1yToa~ghZ2ZZA zf|}kxaqJL#l88kv(`hA{!sO426$43L8VT$)&k@veC??>lX4OS@h;KO$8%RnnYrq9Z zAv6H(CXq-D2aC%uB0BbcB;+0b0uUnhKA7bQAF-}I-t?xy%Ta5qx8Tk|C*W_HVkeZ2jrz#F|nbZxy6n6-ykNF&}J`#5AU+aElB>(^b literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_0_0/00003.png b/tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..abef6633819db3aee4cf0ae5900e6b6a942988ce GIT binary patch literal 23741 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_early_0_0/00001.png b/tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_early_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7f4d17e4b5cacc3d3fb29a2c2d564dd33c6ec576 GIT binary patch literal 8871 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 IE_f#X7gRURUjP6A literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_early_0_0/00002.png b/tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_early_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..a080b8d67679672e197429a23209dde404e1ef69 GIT binary patch literal 6392 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_early_0_0/00003.png b/tests/snapshots/stax/test_get_extended_pubkey_non_standard_reject_early_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..abef6633819db3aee4cf0ae5900e6b6a942988ce GIT binary patch literal 23741 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00001.png b/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/0'_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5cdab244f31d3e3ee83f4b0e20f46511895cf10e GIT binary patch literal 6251 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00001.png b/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5853dbd5f120cd49bc71042711d6478c65fce84b GIT binary patch literal 6245 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00002.png b/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..ca54005c5f6af2e58cdd496fd84cc8a9e2b8446d GIT binary patch literal 24073 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00003.png b/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/10'_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..d237b94bf14d49def76062bc5577c6d03c217fed GIT binary patch literal 8741 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00001.png b/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..163e845e9fc1448b8b06305bdf5b5201a110a907 GIT binary patch literal 6519 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 pXOu4j;9h6H;=kwJ!|TnhcIkbe{0E_IqNM-; literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00002.png b/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/44'/1'/2'/1/42_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..0e96bccf30ce3af64beceb3a92432e7ddb5e698a GIT binary patch literal 22612 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00001.png b/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..f6c957cf1f130feb8cceb31b88c8d081f60b4117 GIT binary patch literal 6974 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

d8q^2>#xjJ zt$GVBw&4=xAzySlSS81*&@;iOxcH`$T4R0-*sYF8^_K~AR`X}MqYw@v;M!&#?s%O> z4T<(@i)?Ax$y&45wI@+SXBZjWa}JV$IUp_1ux`)=cKRx4_U9XdL4@+VErOX-`0&&a z(h3~@tJPzfHS#MIG=?4$!jt57tD!r1Drz2MS4$a%L?Vq9X(J%ss*0AKJAl4Q|M`*M z-U39l;RPc_xDhgK=kAxX8d!6$1HkA;7ZQMkS$YK!n2;bMJE|t&kJ3XL#>_V0k%#)5 zPp~hPM!mn2Oczwpzw}Q_zu8!q5Dx>Hy1k~L`IMI7&*xfz324m_`@N#aL%FpZ;&0}l zc&YY*MD}j|PPQ@kFp9={QX7-`%UG#OFItCoBm((f@5iTPFY5YuU1FPK+`UzXZO>cL z3j?c9cdltw?*o`)oFl7;<{Rx<+a@{>nFlZG z0-G($f9?*u51_cwZ4!&Hw~3jkLt|9j#I&qQS)g^U)8mDV12$-iAYO&7=gG!W$(cW0 znez{(CNZq9B_~iN=px+3P3t0&# z@4BA>03CzRwK|u2&cWqtSM}W4u*(l#@&l(2mTi`@^te#+Hg4h%Kre`$o4J( literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00002.png b/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..3ef07c8ca93e54b7369e160c55101147c6343794 GIT binary patch literal 24180 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00003.png b/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/48'/1'/4'/1'/0/7_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..d237b94bf14d49def76062bc5577c6d03c217fed GIT binary patch literal 8741 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00001.png b/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4ac8011b07267dc5a97a7c1b092845da250b4655 GIT binary patch literal 6672 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 Z3HObb|JAlPz?&WoH)qfDgzv)d{0o@wNm&2@ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00002.png b/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..39f550005ca4984aeb43963812abf431bfc1f488 GIT binary patch literal 23512 zcmd4&cTiJr_&x{+6%Y_C^dcy|gd);GP^3ujCG-}0s8XdUphz+FARr)JIs^&Q1*8TD z5Tu1FozQz{&*wY4vpciz%=`OeXW#d)XXYe1IXQXGeP8!gqO>)Y$w?VVK_C#h${Ph; z5Qrci1iJP8?k(VmlvYzI2xOYAqVP)J|Jzn3zPY4@a(i<1!2P`?N!g>SJ75B}-;aLY z;eVwX|LFT2p8pmZ!Ie$P8gI7g(O+3RrM2;Dj}jx(>=G~QEh+=DltG}~y~}JrF5u)r zAFK#KVFY1>pu0qOX+Tfto*0APTfP7P=|TTmtE;nv)lRKDpdfNVYOpS!BMr!kp^_53 zMg_9s6nq3OHpHwRh~6gz1<_YN0RNx{Sv@qQ{hyU*jQW4pSB6yovqHum{m<%Y`0#&L z^6R?O$F0WY^7lBrTf=tHItB)UYQ4Hk0oU8?cRJc>#%N2aLGxQ+Cu^Q;JhXK-UJmrz zhQ{#oAR*`pn5L#G3$r@zGIjz9m`i0lBn}o=Ylw)p54N-gftpf3O3xI$32ts91o=Nh zcU!-z0fG3cRp+@y$Us#@E*b+L>RCNmGY`LL-NS*zhC<38qCk^P^APTVRmT%nT`Kf(FcQ)5t5)Lt2~pN34Yy>aS`?0Q>Hx=WuQm+(xc4An!fkoTVql#_eR6E zzf6~B*~v$ixbBu6!PJ;pTLT0XD{|?c$R63zHd76Kr#*MFdH^AHWak7F2p zyMQxOx6EgiM`C@xY_85eGR!#C@*OS}c@jk2li;!v)q00Osh9dGd2j<32td^CWHO_#UE3|6oov-WU zFFmmIIqeEHDA526o;*Hp*=c}_+6+F((b*gkf#Fb23^&r!v8g(UbdB=qxF_9JFdP^y zL8gHf(dd|QFf*&F0>uOW&gf-wctia&8n=Z<`_GhpY=?Wh8qYc&A1i&yQ;u(RzEt6q zKqCvC@*&Cvk-wjTs0<&Lv8&iwQlCg+TFbYJNWw&k*V{5N4jB*LH6Tv3- z`d$@nwH(m$$>-&D>Rypf@Y$$?$n$4T=_>)6uR{zB=sP*k!dk;B*ksPD_(-+ex4enC zL8q#+&&t{gIU6#1x#Fn7xS7kHmoE~Egd&U1?O!hP!wAO@eXXSgX6e6aP z7pW~QLaoCr$s9L4C;KE|dTY;a@?K`ikD5U5|-*tqrEj9YhT2mPJj1b6TQ+FC(}erGSg8i6FHI4)j*(wE-$G17iNtjwnfRmgOTr$-{S`A8_Wz!4w>sR9cT*dI z2xy+$5gE|L&CKGuUtj<1LXXrXCJB~SxZpkl=aMs#9rUy}A6MeZp=LcgDB|zB@~t

~;o|4XFGq$xv#J$p?`nb0*S-b7q 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 GpuYhq3=R|k literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00003.png b/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/49'/1'/1'/1/3_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..d237b94bf14d49def76062bc5577c6d03c217fed GIT binary patch literal 8741 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00001.png b/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ef4e7a408259e47fed657ffcce5c9feb796c5566 GIT binary patch literal 7007 zcmeHMYgCeHySAp(W-@E4u`$z{rmXSMK~wWYGi6pPR*IUUsHKT1YMxKfWKEN%RF>ok znlu?vF^{N-L`|BJnUInqiU&kQL{vmTV84CqTYLZB-`abBKlUtsylXwY>wcc+e(vYG zuj_j6o(H??eQo%)mX?;@*)yjuYH6*xucfv2sqR`}#NM;LN=s|!{-8H}5*t~n4*_YofXM?7Sg43%z4)35YkN6_Y z??3ICxOjm}9S}-W94)mv+BNA*YqUz-Ufejm?i<~c|JKKZ*wy63k0_OtRi-}{ic+s0 zmvDN*7vZkg%_bx(eEi28y+ zXd}|=+eICU^b+^|vX(fmTWj2lq6$IV9G5iHhV2PAY30?MR}p4lpPNMp64~qPUu&m2 zY3H;jDv83P3V6|!T%PKTgT-ZeFwMWqArOdU`+29~eST$qe-ef2eSs_|5Qr2__OB`F zSi_Q+pOw{{d%YTJ=4cRxH+QZ2Tptfm24Ja2Hq!%7`|0F%O>hvlPsaRfe6rxR1VVVj zCFe4C(=36oIU0w>X76Q&z}I0ka@s*F?l)Mz9F?V?kKq)Pjt>F}HkK$4hx=OGVS{hlv|mbKh1=QZiDfV#upsy{q~nu8cXvR_LJG->Xl&_g}|-a%a66PHXv)V{^(o!}U*7xCh6s z94!RnJ(%uzX5+$ciyL-!0&KX1OiWKp`-y(t+7L*!tI@IfGialb=dz7c`Zzc{$=XnF z;6eDJ+%dTazIW9fRl^c?<@qr9W+i^7+NhMKr}I`$vyTn~)$mNKa{H>ET6g{C--6eK z=zjOFJsj10AA&BaUx#+7hg_agGSpy`>(t$3vB@71YREPh2qZBOrpg-8xE~OBH&=vFr=fzHk&x| zM&K%L?t1On7*wknrX`V`RyJ0DInSW9YgwSHn&stYs)yoo6$Db+Qp&qthzL1aXfzz` zjFTlNpeY-Z9`q-w6pFNY?U?JVJe9w_Mu$6r9*IWZF`2dmnPhd$?#w;SA00}g7(-Pv z!Mv~72vSxIrM-O?t&8ZuBH7xoHS8W-zKCrj;lJUJI(l(0NZom9n|L z4yr}ICv{U|U~hPXG>rp#^6Wr(!{FVWAWF`n359K}5Bey|dW@>BA`GDxmP`+BO1jGB z28-H)d2kHPCX4ThLfa0zp%_*_cN&kWg2sahVhPiOm%dkJ}^_pu{yT+kzW=sP$; zCoL^CwHp+x!zYYzxSu;!unE?Bv(aBPsSNSk3}?;a=$7%CVr!6Gf78{6 z>cQ!{%MQ&sZYGqSK(?5<26@Z;-8RKN>W!bs^vZ`s;lljP=aM;>JiX2D>N8}=deGwM zcFr%}DbVgeed!%t zOee!!@VYAMV4-Oi-1~ayAK@Lec!X$CR_|xdFi^^X+)s6BPVLSfiODm1w3rK#T+hP3yWC09+1nUd-FW7ZxGgHfCE_+GEHw+oBG zctLhq-}L@N?Clh*2W0T?P!gsBj?}12JHS-IKq?b;ozgl+bLmWd>@)vjf?x zu9@E)CTmhNsM*_T^axY?#t zVGEeK=fbv8DvIAwgTY|TD(-;Aji_!eZ%D;H3!620t!F|hHqr+T=eqjINs_y~;|+u6 z(F4uVOl$a${fU9j-vc1?v3{Id8w&z~@Fu+OD+_ZC)88ONN0Bweo!|~KvyI3M0@v!> z)eUi*(IZ^|qRbW0>=(nHs!0nF1&BuGSb{t^y@NYYo|tue9Zq&KaYP-;@{cC5t2~jT z95@65cQqZEVxaz%RVA=p#S>kx^^R6oHcCeJoLUn2b@rqg5|EcB_1z~5+uI*gGDXKEeCd1KK$-o%j25Dh;r%uc^v78I@`BtU z^R4P;awgyF7jCh<8Gq}gY_H#m9XHqC+Vl70?-cx91%F?J|0h_00x7gQ9`}SZ6FKB! zK)TeMgT_*j)fI4`D#(Rx0E+i@y|UOaU~$ZY*(@R#KMp%?j0WD&E~+?4uO|?CN2MyG zb}yixs-_}}Du_azU4|r6Kaw{qQB%lF3}jkEAbMCZz+;&DH4#POb$;HEW4K-rN}POs z77S1&>sJ@6Votw6zz-vaqHH{v+gt#`YMgKivMb7Q!Qkf)7xyfr{OH7HH*-c? z4(SaptS+g4kE-)4k66YNZ8bpC#`nfCS}w;*y{q~oA9o!z5bY~nTgwvC^yZSt))!Xh zO6{jP#T4&0udJ~dz~vAnsgxgTc7!;&Lm+hCb(>{5zlrf zGA`arAbz4c;wqnG*kGs=Bsf+I$gWO@$_C%ru#ZoddL3m6O*==T+Psvl?)1iN^aj&8@3xPZ#(IwL%V@8FGwk*`v<%iQ0_Dm$+mo1M3U2o+uyjm9PfVktaGfyZVvTmr4X~Y!_F3v! zEt2fnM$3AAD`8BKH~AJDR41iTGPYz{^Dl3Tn;*?OE7M`4u(&6c9GK-JSUEYZF!U!5 z?NK?W^viZpNF)}FS7C!FnBGVHPui(NsBZCJrSD!}MYz2%-jDWB7yu`=m1dY>Tl4a# z59#O+bw|Md!YALISUv<=%)KuUdq?YEj9ge+)o_C>DPAUz5H>Z3+%QH^=nzafL~V~| z_k`#BT;?plj6Jt<7^rspQX3DeQt)Dow2{c?S{>FaW7u~u-Fp`kTd4F&48&>TjsW%vs8X@F zsS#_Hdt>22x%58YQ6sCxez>U2Spaol+{B+;%kREXE2=MhXo^i32;%nSMZ0XkInMnA4;rn8b;tx)I5Kb-+r#sklMcA#^j zE;utCya9EKgOK%tG_$OqF4g!@Q5yB+$(v@n12RmfPaq43SisA09z~F1VqyTzeYCJV zdckge$5H&P(b2`lcw)a$cntvMg}w;Df+G;pkVwny&?f&L{^Ba9TG(dIhd}z($+9NE z*b2N<09aBZ_3$FA7#q%1q0Ym6$^qI-sXO7KwrS zh#x(XJ>d<2Jtj#R9#wOV0pm%#7y@a6TJ{ds6NNO-DCZl1wJ0e&X?;`L15CV>VM$;3 zYy+&;8He|JlM&(^Fw8=`f&6rAk*TQyv5?2(eSUlGdx%lao?AlK3qQ`eIL zr6y+q-jIMV5Q#)m>9J97YGxM3;A+EQ5?R!B?c)Pz6@dU~M>^dN94Q%z3*mOW*L=w&Wo?ogQVg6Wx^+-{yGxQJ076_x6sCDGMb=4D*9PG~tUp zK=#LW?>^aD4&1eohcVsdN?Q!;_n>lMU$gz>&WSh;H0EgGEOoYJFp6Q2wb-TpY?1lE zH+ZQFCVyE}adzwS>X%(plovT00$I^E#Q^SpbK4~56p@eA)A0&F9_{JrnPssU(ip9L zknVa4c$bG?dVaD7=(W(?00DL1^!utEXZuY3Mxn;QVv8?}sh7;Z6KspJHhiAnBuFTV zgcR^n9ElpKkX4J`R!$&%s&0<%b>u;7SzQA`-v_Bq05NkYuH=Go(bkpgTBp6Cq93)2Jrthv1L zT|MB#05v{8sIA(*G4*^tCIT>zmR#+Xbi-xe?UT7m11xou8SDuw1aKSFaK68=+7whPL+xJ~VMKWY1p8~VRx dUw3N03cBaI#y#!Rmk(!JXI;Rjh`$8i{11e9CvX4& literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00002.png b/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..b928ec76e3188faa6aa72dbaa825b5808fcde3a1 GIT binary patch literal 22832 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 n2>Fj=fbcd&Q literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00003.png b/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/84'/1'/2'/0/10_0_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..d237b94bf14d49def76062bc5577c6d03c217fed GIT binary patch literal 8741 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00001.png b/tests/snapshots/stax/test_get_extended_pubkey_standard_display_m/86'/1'/4'/1/12_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..79145c9c097a23b240dc841ef990fdb76f767ad4 GIT binary patch literal 6923 zcmeHMX;f2JyQXR#8PuXEYG^-&svxwC5{9T1QKm>S2uczhm?0n}gfK;poqwjLVyS%3_=nhLINR#1d`mN_gm}!zTaB+>soj9oF99wea_kY-S7LJ zcR$awf4=PIsIgObr<$6Y#-)qre^gWZ;-Q+_rjqTOfF3Zkk*ubsJ8GYwmwe!hJ+WvS_(*>U+(%b-xfqrQ^u;Kvq#kGvV6a|v3>vUl)toj10jqjT}<3qTbhN(&{WEGVNVl#VU@W$ zl{BWH1q^c?7)(Qc=qC$BJ&g$ihsbMTZZMW4V zm}owW&~|Y0VpCJ4^%#Ju5B! z))mg$=kRhQborD(65BFCl59r4;TPR_8b6a+`pW1kc_`FUzzR0kefpT<5p~qU>X7+0N)4`yQE;5;Y(S;ecFM{7R_HHN1gZn|p+8L33ZUq5Tu64Ejul&-fv zAQ{gNXuqKFn+nYCXgB}du!U^Yop^pAZ*Zz>aLW0oAmawX>B&#;+k%Mn;qGN`FNtID zSYiuAo^t*!BQ87Q>!Aut$X63dyX@Ac{WPI}^f;)w;k>Gszw}kT@yI0gxT{^zYCKlx zV!)iM3Cf>C=lg@ocIzt_ZUI3B~7Z(QwgQ#?;Ub6xh+g8lrN$*gtdo-`hzKk&+@>=erT8TdYXyLej= z3353G{li?k8NTa@fR0xwtX|A>x!hUPFm^N?8w{h3zI#4Yd`-+h%xSv%n{xK{wPvGk zIwiptBBYLlDjSkHDC|n-OQY_gUvwWVzqNU-oATf+tOE)(RDi#oz!u& ze`2_ZYWiKCi~LZ+WIreTezN}SiV6e*F+TRy+r_<=t(l_Ba8>{)QTdCBqD{|sCWC|? zCv#9%bpn}8CfYI;p`kbS?s2cb+56d{R{2^#C+L27aSL+!!M&N))^{y=%&5?pULT_y zIH+9J-r&f2=_-(2Ds#Y|kx;15pOEl8 zz=SsSoH^o&E3hGmm90D3#oSuKvICeyBLiI4{*x{4wqzV$ZRFVRa*C1QE|US4}K9{=-X@^$MPA7f_5oCR}3qkbV80$Ale6=UnBB9N3;CbFQU=0n@a zs?vH6N(*1d=&^nW&1f~5F&`lrb(8VUP)ynJG)5JSg^{hy52~%YQsX53oM0e;)~omf zf22E)DPLI2E}brNTZcRhlBXFp{8hFRJK2`r%CM%dzYt|{BlDW;CIx8l0NX$8OtiS&BQp|U+A0JOsu74$VP78nM+$>uhBg8}*x-w^6CPXJ< z#ib2W8aa%OY)Rz0`bhIlCRhrCUxzUXF-c6lE?t+y3&Nr2hNVh|^!{c&VQf{;5bJa} zO5Y@6t+L>9`k^&5S+`U1(xAwG}nPldmmA+thvlOXV(7 zvwmyLRh7f<9^ETQMB_0peEUJql7;cWHX zbvpwIE_5R~PN)j?uIF$ITHlc@u?Z=S_1Wff0Xn5n7={2QQhJm?-!n{iBPx05?~d9lE1rec$zivn@5TvXb>)pfmwFXj0~^ z?4E37GtiL2Z2LSHzz377rNTaIxu`vFQ73Wydg370goxZzX-GAV0E$K;P&B3*wzl

C_d4_!O=pYk|4;;C=jn(S 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 Lb*uKKYr=m430n*n literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00001.png b/tests/snapshots/stax/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..99b673ce752d810e7d11ef82c9ed8d2dcdfb6259 GIT binary patch literal 15123 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 C)V3D@ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00002.png b/tests/snapshots/stax/test_get_wallet_address_multisig_legacy_v1_ui_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..5755bc9c93b6b44eff9a0fd4b2a6a7673f8d1cf5 GIT binary patch literal 8478 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_wallet_address_singlesig_legacy_v1_ui_0_0_0/00000.png b/tests/snapshots/stax/test_get_wallet_address_singlesig_legacy_v1_ui_0_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..3002689931eb72f633bcb21d07f8c6c771b5437e GIT binary patch literal 9271 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00000.png b/tests/snapshots/stax/test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..3002689931eb72f633bcb21d07f8c6c771b5437e GIT binary patch literal 9271 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

G^vNcsKQu8CQQlHE*7(fD>%OW^ z+P73=5e!z+(Ha>(TYU(J1{J}i%xxVOc2gSURvaN&c|?xyMdQ1U@d12&c$akQ4%F8o zVhkK|?JNxf$r^2G8c8w8w}$e@F7ygP7L<-?4>5xGRnfzK$d;>>`?aPU0Q;xpGT`3<6={O8&M;Ca}B)NF{?B5kZBs}I-WY>sZzIE;~xD%+5y!YdK6)>^wSBOmDzE2m;`5(l zhYH+l9aVwAc)wvS6ozzZb~Y49iI-uH3L0Tli!EpT*?uatVrl}rZ5t_(Ffyi0x+Oqh^5eWa_@E?kHY-Q6d-~V?```8!U(YReq=ii^Xr6F{SKhQ1%*3L7H;43Kxp=-i z+q$WJKE)@(nit?a%z;-*Y<76aC{?h0%ED+&-paxVFVmnC;pJ3%Vm^EvFJYqyR@oXo z%9LBs!nE8k?RtTY(aDPj0tgEAz$QGnQPL5uCB<$#ai@p^{b^IG!Yy_L@G98 zGJD2&;hZbX(g6x=`Krr0Lt@i3SN!$q%^+PTjN5t7jgcn21V`L2%&m+N5I@@ba|rAo zNcmp5s}bE3)EMK0U+t5Fv0GL`4CrdS)KB_<0uj&0!cC9sK6n@TJ-T>(YY8HPKKBxD zks8-{!P1ggZasic+(3yeM-9PRE};;hCI|T9$Sl+Sw1apj$XQo@1ur0=x^n09ot{`* zWKE*1R0t89Cv+Z9I+gG?4@j`hEDuHuXgm6FReJ1@Unl|`zIXCvZb_|FIt)I1P(y1{ zJ+zMYw-86*jak~U`C)?KYYaJPex!+2;fCvi=fuV$wpRMb@Jc)LCM_-aa#Dl-Natza zbIVTtQ!a^j#(-RKSXC?9v4de3wz$RVp8lGLsv~L%bk2EUR7tsK_36cPm%Ene`Xl!0 zruui3;AX{@gk`x0#f5Imy8LmSQ>#B1$>H%niLM2vaOblq;gweW`fbCND}nlEqYUH& zPWsOJgCwKJHSIw*l<=+vy@KV?3(NU)jTbt(D=P3KzOPGR5C{mTl5S<6VtrxZYv$_| zk7+I`=l!80;y zYwTn!TPa?xOf&O*Sf22m{I_zqg*~e*-GiWK1^RrBL7 z#M;-v-tTtM>}EVm@kbO<(y)NhI!j8{{w>hfLs2BA4(nl3T=mwq!+x~a-;Gfy0 z;?l?26Io)Jm$HQ=ulvHn&z4NuUqi z+5M!O^;(r(F}xU{C*o)-@(woAQvYEp;1zj(4HrohKH;Z*n1QE4-YE2ry2HOcn68(v zevC=f6hL%(%(hhWIXH$FkjPM}?!nKQ78@V5!4?YJK%$A4cC)GT%Vqjk!K;{`>eh^M zM)Z=3eBIS(J3YY24WTcbv&`6?Ksk*RoV?_fXe1?MHj*;lkrFvntW7MX!*k}t_o-W> zeLh~LR+UtHW1F>z?_Y0WB*WX1Z#S%YWGEceAlTDba2%x*Rof@*uC^9Lw+_h(ALk~< zpQCR%rT%D$IpDDJff4AEJpSRsZf7!6?P-H%+kAG1gRno49H`3>F_*$M<0tCzr%Tbg zD-b*azf+C7b})E2vN#YM@$G(y|FVGs@b2=_Rd#}^4v7_T%*`hkZx~* z%~!<9W(7-UoS^?n1pW9}>&~CM;*QNY!=28vq-moX%lEj)>rLRFl>(OzB^Ln`2hHAf zMcW?~hQg4MHiEOEIO3+8FIKydj2*uQNz42UmN_{8v+souVp3pW9T?wOUBrzD+O7h-7n;+4+V7m zAD6eXB7E1ClQwXSPjpP(@C|Xuhz6jS44W7gPwS-?U0Zu!$$%!p@7=A-ikwHLH7dnj zop~NP)M=@8Q$0zIM8P-QQ~$Z9nqx&T#L5r`ey;>IzdXNgG~uVS=HZl`{HdsUsBb

mIZnbx_ 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_miniscript_long_policy_0_0/00000.png b/tests/snapshots/stax/test_register_miniscript_long_policy_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..13cf02337ab90d008764fe6854faae07bccbed42 GIT binary patch literal 8281 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 USSA5~8IW;xxq7kYX9({90mxhknE(I) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_miniscript_long_policy_0_0/00001.png b/tests/snapshots/stax/test_register_miniscript_long_policy_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5cf0c3c19ca49265ee5dba9d7ef85c6c9d0a0bbc GIT binary patch literal 7076 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_miniscript_long_policy_0_0/00002.png b/tests/snapshots/stax/test_register_miniscript_long_policy_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..0aea8a37873214198ba22c0dd355ca48a2f329d9 GIT binary patch literal 21458 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 z zpdmqwn@#6{7}ywgivd^D?iNq`R2|Ms)&kJo0EQW4bONoe!+?5{PTBChi{pL*arC@QNpU@%+ojA{V}U X&9>bXb{qHy1<1_A>Po{UucZF~Qs%!& literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_miniscript_long_policy_1_0/00000.png b/tests/snapshots/stax/test_register_miniscript_long_policy_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..825d883019398a25398a5d20073d8ef1830a6164 GIT binary patch literal 8264 zcmeI2dpy(q-^X1gDZ`SbhT=llJBKA-pD^?tth$7N5~ zLkEu?l#-G<jo()ZAG^WPFGW&u^IEJ_5O53*f?@U z=F))|(!cHb*AMP*4r8PZo!mzbzmWcy)4v}aUKe*&S`xdZejIrlXfv!O0MmcZ`X>AN zj&O>NfR@Tgt+GT!SE`iMeHV<>pf*_Qx{{&PX;~GiqtbG>p{C(Q41}tO>jI!GR>#%-(sI>}J`Fq`5*LXyDQ+5z zg3sj+U{8R%s-UGj9&a;Elu_o)+T3BY^F53LT`;EC35;GMaRM%4crCQ?8D7#*X}O=9 zd>XzcZilNmc+eVs3=oQDw?d!KMRlYNZVjjP)cSSZ34Knkj)L4!F+L8y5zsP$`*f;+ zNt%BE@lz+`K9CTEa{IFtNBa65OKZCm=%+krI&M~FLlM~4fGYjcA6v$v26#C)j)VDR zfk2S|G(NWNQDT<%WQ-M=xpvcGG1WnwP+Ggq=XXIoS8vLyh>5S%EEzvVuh>Njc$q{T z3f$js`pm|zsySLAqR$nx>UaeyLo&6iq%LkudAjCT>C5gBw6q#ES{DRO%vepNAkQ9> z^~!Fr{ERB5e0?Dxuxl+m*uqqzA>!53H}vx{r4jF>KGi~1?hVYxm)IPyINax~B<)1A zfGNUWa9kXO_HV5V3d!Mq#W2N$t<>KkemjNPz85h{(zG)zS=!(x9}wslx5TCO3km9i z5CtobpK|73iwL4jFN{*Wy`i+zh{X_{PG9*eHau#f97kv0UppA4TH&c@T(M69f3gH` zJ~^7MFZ!*h&9Ka-_c%ZOHtno=?xHhBX=ZYdq|7PYw>u4m3Ncja$!*T7Dw%FnYsgzX zhcS(8zul6a{MQN4#AYT@A{4IljDx(DALS4gL+mt7vO;_CbdwWl{{j~TvFgjp3@Ps% z?+MaXQXtZ-F-GuhA50oKV5+0p|BR=oGdJ`$@N+dBW`(LSoc`t&^U?to+3^O##H-=q znou}W>VQh^wa?!g2y1C<1_NKEU!{MF($*ZEzG_{tVaKhFUH%!Rp1gmrYY3y#5e0iH zyy-wyqn?dxU!ItlxWCv>3q>n!z!gLDuNHp=&YZEh->Wdl`NM?9NT_eNThaB<`(xKy zLzVUaJ`OHvQES{xizPR${5#XH7|z8`#Q;_$(0cgJAQZhi#z?%l_D0r_5InTFJ0e-3 zsj4}-r040*R2<-Dd;8MhSOe2U>0*uM<;=cC@r8jGkCkmZm|<;iP? zb_R$8KVJ8kY64&0B&)$vTNa2f6e^YK_Gq%Q9*06@W=@yLAlGCBA(G#FMPJK+*ure{ z!L}T@tw%Bg>{Mwo?3LRhZ#zWRKU>(!rF>mC4sY3G)$%zEtt7$H*}Cw)*b+K2>-L$I z(3D@tubO*)=>uX5ztU8`PJC32^_V`8)Q4w2QH^=I+@pDD**fPg>NSz*HErFdalY)W z2GrjejodyzBn~^R{aIDTzknRh9XMjV#@bq2Gh>1$f7$hlI=a?=>YX5GAxWl@TGrXj zVj~D(Lr$VpgZ@E;%tvR;NHN5(VzID1*N%F0y1+Q=uBMB(9mX%Uf;#)2lynmOjrTIb z+dy6$+%?$TyBfZ~sNZxZ#_H3-y|OAf3#pkl<(Yr_c`KKD>J1(MM9yOXVF5kO{?1P4`o%}9VEr$=!{kP78V9AcyaC9ylu7)=Rj zyLFh;tFoFQPX8`{6RqRsk9!PR688kRWNYi^eQ{lU1!O>M*9;`$ecKES=cIJO`@34P z=Rn59o?a?Vh81s}90y#dd>!4Lvtftgw*cv-fXobE{GoB*k(Lhk63A0YZ#&yi>Qn_n zj#Xq`P_19jvXRZIuQz5iK}$uMadSpFVX9;x$%I>xfwypZ@E})jz)g!GR! zKqTkk=+*kmoOi$k;v84B?L}*cYteuDjvj=yM&7Ub_71W#yoeweQQDxT79Lnb!p{3H zJtN8}yMo^KeK4_ z)7?7$46iu9>LpJB?GsyCyEo*xMj?5YSJ~6gadq+jKKv_i4Lg0<<>OLvA~HIII@UH7 z0}HvxGxMZGm_=?l_@u-Qof;7{T~%>n*u&C-}J|9L16hQ z*(}ohNCtk*gfZ4(nm)AChi@Mn7u+xOcRd_z2IgoK>$tI8#ZjGmgBLfpfzKhbzF2Ff z{F*+=fFbQP6?3yaR9zmX(+cH_CGaPr{&qT&P@Zm#@>IypPPa*aM+#{|ZoP&iYsmyW zFqNn6DxI>S+A~Mdy2uvlQu2DF^*4cN-s?&265x8}o@AyOHAzC7^ndfpgz?6oj}IHd zKgGFXxUsSM?VVzLP3E9Y(Q0Dfx*~otH50ndIk=@46N}|nJ{Tu#u~^YK`Zjm?VP9h9 zBaZ90WSedtgw?}w_zS&-h%~95D{wD+isrYxS!FSaYPlgGlusOL>78)81RoKQ5A(2H z9aQvlJr!&KZhF3owz6+CWR=f|GNVO_NyKmhmok2bfn2O9eE()~fyH7a+iYs~b{}h; z+TGRK%)>HP&;Ugab!_aFkowxu-8>lY9z9=d$s%6sF<_1Eak#GWDrGvTw$wRebX#yutCj9OUOCg*nWX?5U<{I40Rx>kC(VT9)sl zn~_E{T@j+7{&~Gk?&<@$&H^;oa*{_tFQm>Mqpc{)c3Cu`cG@#~82F8v@P_c-TXBE2 zeRvn_3)@zo1Jw3_Q`+9Z) zOepQ?e{t@UB580Ua`tM1I^A9*m}AutCQ8e{=h^?~;~sJV6}XTZLk9;3-6QcibE!@h!A*WWTz6iXqr{o@%^2|ahK{CS<-3B6jzHsp zId1#+irkc?HO9N?)qu!ZH3RB~9hLpa2lOQ0zf%hY+T7k=(i$$gK6-lg%ksJUfG*!^ z`eS+sJ}w9wE}XPEyx!gy)td1G-4cV0kM_Xj(C?$JOR9e>hH%^AL38V!1yzF@9xbf2 zR`8_QGiU;FkjEz{NGjUz<5oi|XZITS2s_M8pU^MklXC-t@mgSPkNJvN6wbOdNaGwv zY`abo(D$Os_gRUFh(R89pk=l6Y}|BV>IXWHRkLTq8S=pUteDv ztkU1P57@TZxj7Rf%8UILI76n9aH0;G{Oc_gV!*o6CXe*9tH z#KG|iV%&EQMBaaq9O)NPcP+?%JDRWGi&CKv-mVs#ze@;I9)RHt^7@HA^qKMfA1;3A z{2MWQdX^vd%>nAI>{q-^w`JUBG=={PEmd)OxR}a1=M`Ol6bKRBcd!#HE1{dcfsU90 zo!5bw-q%;oq~&Ud^u&zRY+MrYnyIs7B+>so_v@iv8?E)w3uv+-ldY9Auh)~zp{ypX zxnJ?fSjsUmF^?OXJ>1w};=5|k`o>Ft9u6*G`3FrfNYaR?bgr!frEO#T<`O}TVEP6~ zP;G{8MLKRVir0j=6eFvWmq>N2{d$ep#|Z2i>XSX*F8yd+nAdd1f_@%?z^G|iWgpz% zb7iV9t*(?e8kEShw0(De{3Dka2?&preloU=6)^4eWfuFRUMdQOYiWs0knn91 zV(#h*k*Ib_GSCS+f{llW14Cmp4BPHLKYO>$*%fVRU zA;KNr8sIaEhROSn2_MA-oNPLN+fvYgaZk}|qCA>FbqB0?!PhH_Nu?stWItX{u#w84 zlJ=n_&NG9KRk3N;gO;;W~XsX{NqYFT=OOX!04@`jHk+E=tXZP}~rh=n$$iZrXQ zlO78KiJ$N2=dIiE=Dx#&T6_%XYkn;gTYaVp>LHBB7?CdT^1Xp7+c261Yjav6boG8* zyELea&;zP9O56BCc*THY+s4I4C{%)e;7X^Ib&BDL1%RBO@DZOX z;$^>L`>EFckgTvnh3&yD?A3T>mjrckf_l#Lj8J37oI>7IdA9b;`sLB`a#MLxcC=M2 z3rvsdX!Ee+(eTX^EP${O@yg-_tGF;#|1x3W+Na1?Tf%<%U4nMaTxz=B9z!3;MyBgtxZkB*qFr;dVDaBYZ|Bn6f(k!#KR!y0(a&KUY~u*_mI8ciXkx>; z=yf}4Y&zM-mg(nzs7(SVS40q)q-ke(5>$}wL3<2Ir8HLE3$-s|yM7nHfSF~f5WD^)$7AO8Quh^~fuPN$!nMn9P4PaMc@7vll^7tmanz7ZeYVPF;ICpqyb+Gz# zTy(F%FB7ZdrkPkZ7JUM&7~TT9jCq!GvUqQ&lf32eyClrtIxsAFB+m3`SL^JFIW z*PxdHFQ9k^tgP107!4aaU!>C%cWK5M?t4v1IzioWp-r8dZ`7FEYH)CJape>{ra?avA>_mOgMUVyUEAEw}G~#ob#Mfp##WWZ)Jc%YRdwl-CLPc z=Sj0bd@#tX;&>63@vu@|d6Ir!4%ZJfHkjK%RzJHpC4#`<$Wd809SHCYYxOiPQ$eKc zGC$Wl74yY9}m~2x6U7jQIj#3u^cH*rZYgJ~(yU*;}EP$Ios9jp{ z-5(`8{s^cJ9H?Qc!FcL?ynbFk;s_%j7S~ECyr)<9 z#%tTX(ySv&je3jtN02H0s{(R$WgW0eoAR0S+wAC!o|47w`S?}l*z)fUAY~WeYg6p- zFJvSzE+L;_;ZaCt0(_#9((xp;M>%VAArRtENGAbQvtkii+PSqfb6f|dB}?*!^z+a>5k^2R*5MMQlMs{CLr108~kC zupM{kur0+idq{KQM022W)xeM&j)T28%f9fvrL|LB9tbq`^IhDT{xNI-Y5cf3x^v*# zM|@pbKE655&qn_Q*lRfBMI9{4NJY*!KYh*Xz_GIj0)AWl5mTll9&pmYWt>3^8wxqM8Alj&l;mq40G8mfPD{K3#;B(OH>_S zJt(B8-U%y#_!UE%qSg2(Rc9{dt5v1iX^M=>IhY*I%RR_Q$-6ZsW+oq|J`SAS{>Ui? z(2oje9*UqHtIN|nj|m=lGq`CgZ&Dsl!#x*T)rtHs}$!6J63(3`G zI8%85ZW%1SPKdm`22^hFxt~&C2n(P)*6_0_y$@UsH`At2@E;(4LjIW+4(0I@Cs&;S4c literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_miniscript_long_policy_1_0/00001.png b/tests/snapshots/stax/test_register_miniscript_long_policy_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..40cab42476717c7baa17e5a6580c6664a0302f8d GIT binary patch literal 7679 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_miniscript_long_policy_2_0/00000.png b/tests/snapshots/stax/test_register_miniscript_long_policy_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..825d883019398a25398a5d20073d8ef1830a6164 GIT binary patch literal 8264 zcmeI2dpy(q-^X1gDZ`SbhT=llJBKA-pD^?tth$7N5~ zLkEu?l#-G<jo()ZAG^WPFGW&u^IEJ_5O53*f?@U z=F))|(!cHb*AMP*4r8PZo!mzbzmWcy)4v}aUKe*&S`xdZejIrlXfv!O0MmcZ`X>AN zj&O>NfR@Tgt+GT!SE`iMeHV<>pf*_Qx{{&PX;~GiqtbG>p{C(Q41}tO>jI!GR>#%-(sI>}J`Fq`5*LXyDQ+5z zg3sj+U{8R%s-UGj9&a;Elu_o)+T3BY^F53LT`;EC35;GMaRM%4crCQ?8D7#*X}O=9 zd>XzcZilNmc+eVs3=oQDw?d!KMRlYNZVjjP)cSSZ34Knkj)L4!F+L8y5zsP$`*f;+ zNt%BE@lz+`K9CTEa{IFtNBa65OKZCm=%+krI&M~FLlM~4fGYjcA6v$v26#C)j)VDR zfk2S|G(NWNQDT<%WQ-M=xpvcGG1WnwP+Ggq=XXIoS8vLyh>5S%EEzvVuh>Njc$q{T z3f$js`pm|zsySLAqR$nx>UaeyLo&6iq%LkudAjCT>C5gBw6q#ES{DRO%vepNAkQ9> z^~!Fr{ERB5e0?Dxuxl+m*uqqzA>!53H}vx{r4jF>KGi~1?hVYxm)IPyINax~B<)1A zfGNUWa9kXO_HV5V3d!Mq#W2N$t<>KkemjNPz85h{(zG)zS=!(x9}wslx5TCO3km9i z5CtobpK|73iwL4jFN{*Wy`i+zh{X_{PG9*eHau#f97kv0UppA4TH&c@T(M69f3gH` zJ~^7MFZ!*h&9Ka-_c%ZOHtno=?xHhBX=ZYdq|7PYw>u4m3Ncja$!*T7Dw%FnYsgzX zhcS(8zul6a{MQN4#AYT@A{4IljDx(DALS4gL+mt7vO;_CbdwWl{{j~TvFgjp3@Ps% z?+MaXQXtZ-F-GuhA50oKV5+0p|BR=oGdJ`$@N+dBW`(LSoc`t&^U?to+3^O##H-=q znou}W>VQh^wa?!g2y1C<1_NKEU!{MF($*ZEzG_{tVaKhFUH%!Rp1gmrYY3y#5e0iH zyy-wyqn?dxU!ItlxWCv>3q>n!z!gLDuNHp=&YZEh->Wdl`NM?9NT_eNThaB<`(xKy zLzVUaJ`OHvQES{xizPR${5#XH7|z8`#Q;_$(0cgJAQZhi#z?%l_D0r_5InTFJ0e-3 zsj4}-r040*R2<-Dd;8MhSOe2U>0*uM<;=cC@r8jGkCkmZm|<;iP? zb_R$8KVJ8kY64&0B&)$vTNa2f6e^YK_Gq%Q9*06@W=@yLAlGCBA(G#FMPJK+*ure{ z!L}T@tw%Bg>{Mwo?3LRhZ#zWRKU>(!rF>mC4sY3G)$%zEtt7$H*}Cw)*b+K2>-L$I z(3D@tubO*)=>uX5ztU8`PJC32^_V`8)Q4w2QH^=I+@pDD**fPg>NSz*HErFdalY)W z2GrjejodyzBn~^R{aIDTzknRh9XMjV#@bq2Gh>1$f7$hlI=a?=>YX5GAxWl@TGrXj zVj~D(Lr$VpgZ@E;%tvR;NHN5(VzID1*N%F0y1+Q=uBMB(9mX%Uf;#)2lynmOjrTIb z+dy6$+%?$TyBfZ~sNZxZ#_H3-y|OAf3#pkl<(Yr_c`KKD>J1(MM9yOXVF5kO{?1P4`o%}9VEr$=!{kP78V9AcyaC9ylu7)=Rj zyLFh;tFoFQPX8`{6RqRsk9!PR688kRWNYi^eQ{lU1!O>M*9;`$ecKES=cIJO`@34P z=Rn59o?a?Vh81s}90y#dd>!4Lvtftgw*cv-fXobE{GoB*k(Lhk63A0YZ#&yi>Qn_n zj#Xq`P_19jvXRZIuQz5iK}$uMadSpFVX9;x$%I>xfwypZ@E})jz)g!GR! zKqTkk=+*kmoOi$k;v84B?L}*cYteuDjvj=yM&7Ub_71W#yoeweQQDxT79Lnb!p{3H zJtN8}yMo^KeK4_ z)7?7$46iu9>LpJB?GsyCyEo*xMj?5YSJ~6gadq+jKKv_i4Lg0<<>OLvA~HIII@UH7 z0}HvxGxMZGm_=?l_@u-Qof;7{T~%>n*u&C-}J|9L16hQ z*(}ohNCtk*gfZ4(nm)AChi@Mn7u+xOcRd_z2IgoK>$tI8#ZjGmgBLfpfzKhbzF2Ff z{F*+=fFbQP6?3yaR9zmX(+cH_CGaPr{&qT&P@Zm#@>IypPPa*aM+#{|ZoP&iYsmyW zFqNn6DxI>S+A~Mdy2uvlQu2DF^*4cN-s?&265x8}o@AyOHAzC7^ndfpgz?6oj}IHd zKgGFXxUsSM?VVzLP3E9Y(Q0Dfx*~otH50ndIk=@46N}|nJ{Tu#u~^YK`Zjm?VP9h9 zBaZ90WSedtgw?}w_zS&-h%~95D{wD+isrYxS!FSaYPlgGlusOL>78)81RoKQ5A(2H z9aQvlJr!&KZhF3owz6+CWR=f|GNVO_NyKmhmok2bfn2O9eE()~fyH7a+iYs~b{}h; z+TGRK%)>HP&;Ugab!_aFkowxu-8>lY9z9=d$s%6sF<_1Eak#GWDrGvTw$wRebX#yutCj9OUOCg*nWX?5U<{I40Rx>kC(VT9)sl zn~_E{T@j+7{&~Gk?&<@$&H^;oa*{_tFQm>Mqpc{)c3Cu`cG@#~82F8v@P_c-TXBE2 zeRvn_3)@zo1Jw3_Q`+9Z) zOepQ?e{t@UB580Ua`tM1I^A9*m}AutCQ8e{=h^?~;~sJV6}XTZLk9;3-6QcibE!@h!A*WWTz6iXqr{o@%^2|ahK{CS<-3B6jzHsp zId1#+irkc?HO9N?)qu!ZH3RB~9hLpa2lOQ0zf%hY+T7k=(i$$gK6-lg%ksJUfG*!^ z`eS+sJ}w9wE}XPEyx!gy)td1G-4cV0kM_Xj(C?$JOR9e>hH%^AL38V!1yzF@9xbf2 zR`8_QGiU;FkjEz{NGjUz<5oi|XZITS2s_M8pU^MklXC-t@mgSPkNJvN6wbOdNaGwv zY`abo(D$Os_gRUFh(R89pk=l6Y}|BV>IXWHRkLTq8S=pUteDv ztkU1P57@TZxj7Rf%8UILI76n9aH0;G{Oc_gV!*o6CXe*9tH z#KG|iV%&EQMBaaq9O)NPcP+?%JDRWGi&CKv-mVs#ze@;I9)RHt^7@HA^qKMfA1;3A z{2MWQdX^vd%>nAI>{q-^w`JUBG=={PEmd)OxR}a1=M`Ol6bKRBcd!#HE1{dcfsU90 zo!5bw-q%;oq~&Ud^u&zRY+MrYnyIs7B+>so_v@iv8?E)w3uv+-ldY9Auh)~zp{ypX zxnJ?fSjsUmF^?OXJ>1w};=5|k`o>Ft9u6*G`3FrfNYaR?bgr!frEO#T<`O}TVEP6~ zP;G{8MLKRVir0j=6eFvWmq>N2{d$ep#|Z2i>XSX*F8yd+nAdd1f_@%?z^G|iWgpz% zb7iV9t*(?e8kEShw0(De{3Dka2?&preloU=6)^4eWfuFRUMdQOYiWs0knn91 zV(#h*k*Ib_GSCS+f{llW14Cmp4BPHLKYO>$*%fVRU zA;KNr8sIaEhROSn2_MA-oNPLN+fvYgaZk}|qCA>FbqB0?!PhH_Nu?stWItX{u#w84 zlJ=n_&NG9KRk3N;gO;;W~XsX{NqYFT=OOX!04@`jHk+E=tXZP}~rh=n$$iZrXQ zlO78KiJ$N2=dIiE=Dx#&T6_%XYkn;gTYaVp>LHBB7?CdT^1Xp7+c261Yjav6boG8* zyELea&;zP9O56BCc*THY+s4I4C{%)e;7X^Ib&BDL1%RBO@DZOX z;$^>L`>EFckgTvnh3&yD?A3T>mjrckf_l#Lj8J37oI>7IdA9b;`sLB`a#MLxcC=M2 z3rvsdX!Ee+(eTX^EP${O@yg-_tGF;#|1x3W+Na1?Tf%<%U4nMaTxz=B9z!3;MyBgtxZkB*qFr;dVDaBYZ|Bn6f(k!#KR!y0(a&KUY~u*_mI8ciXkx>; z=yf}4Y&zM-mg(nzs7(SVS40q)q-ke(5>$}wL3<2Ir8HLE3$-s|yM7nHfSF~f5WD^)$7AO8Quh^~fuPN$!nMn9P4PaMc@7vll^7tmanz7ZeYVPF;ICpqyb+Gz# zTy(F%FB7ZdrkPkZ7JUM&7~TT9jCq!GvUqQ&lf32eyClrtIxsAFB+m3`SL^JFIW z*PxdHFQ9k^tgP107!4aaU!>C%cWK5M?t4v1IzioWp-r8dZ`7FEYH)CJape>{ra?avA>_mOgMUVyUEAEw}G~#ob#Mfp##WWZ)Jc%YRdwl-CLPc z=Sj0bd@#tX;&>63@vu@|d6Ir!4%ZJfHkjK%RzJHpC4#`<$Wd809SHCYYxOiPQ$eKc zGC$Wl74yY9}m~2x6U7jQIj#3u^cH*rZYgJ~(yU*;}EP$Ios9jp{ z-5(`8{s^cJ9H?Qc!FcL?ynbFk;s_%j7S~ECyr)<9 z#%tTX(ySv&je3jtN02H0s{(R$WgW0eoAR0S+wAC!o|47w`S?}l*z)fUAY~WeYg6p- zFJvSzE+L;_;ZaCt0(_#9((xp;M>%VAArRtENGAbQvtkii+PSqfb6f|dB}?*!^z+a>5k^2R*5MMQlMs{CLr108~kC zupM{kur0+idq{KQM022W)xeM&j)T28%f9fvrL|LB9tbq`^IhDT{xNI-Y5cf3x^v*# zM|@pbKE655&qn_Q*lRfBMI9{4NJY*!KYh*Xz_GIj0)AWl5mTll9&pmYWt>3^8wxqM8Alj&l;mq40G8mfPD{K3#;B(OH>_S zJt(B8-U%y#_!UE%qSg2(Rc9{dt5v1iX^M=>IhY*I%RR_Q$-6ZsW+oq|J`SAS{>Ui? z(2oje9*UqHtIN|nj|m=lGq`CgZ&Dsl!#x*T)rtHs}$!6J63(3`G zI8%85ZW%1SPKdm`22^hFxt~&C2n(P)*6_0_y$@UsH`At2@E;(4LjIW+4(0I@Cs&;S4c literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_miniscript_long_policy_2_0/00001.png b/tests/snapshots/stax/test_register_miniscript_long_policy_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0c4941468fe2625b9667fd686cd4250c3cb59b7f GIT binary patch literal 7695 zcmeHMd03KZzb^C1nJSDFQS@L_$F5 z_Brn}+8gyZu3EK9+uiNdg;lFoKVG#;>(>ohz%TYbZG=^;jNZGSI({*^Ov>ZIKf6(H zou3cPzqNm@*M`Y06I*UL)RzjfsQw^?pgtUfg>;Sf_nom5(Td%1Ed zwq>btZ)?HmjpT7E8u4JlqEoALi^<=lQEk^(9q-L{3B?KQ`;< zZRE}G!;iRie2gPQx$ohaMhm^oaml8y(Qrn%c2?J1_f?A+E(woE{q6M|o<%^B+sS&X z*;uZ%rU{RiyRfXhZqB3#lc-)QM@Q&ah)O8XYR@*;_G4S+_r5S;h++1n{TJ@#b%fur z&E{M6Uv8LyCLIoja?N%;xJY<`#}7si)n1~o@c1frj3VklzB}9M40`pV^HfvK?(d%C z@s7+E2$7wb5r_|FTSWv`iFPp>Lx>z;DL1m9T<`t)(xg(GI{abjKT7Mxu%N;SwiRy^ zM*^qpXt@(VMezCCgXhs)k_khYP;6e@AIX&_(I5y>TVzw<`EBq}^qVn$VV0__KQg9- zPMx{j5J2QS=)UZX6>ZAu8U-c`iGH&7)J^PGKbxPF*c1=KqRR0~U}09Uv9~3Z%(a3@ zpk)K=xg@Dh-@44>lp75J+fFwGn6Tt)Y(kP(qw*Zq5=*yZBy6JZw1^(Il) z-a8l8MN}gXCC0e>$9rsAET6jJk(_<8u42=xNy?PhmCD@GD)*=-S%OK^C@*=4WFBcz zybUv~_u59`l?m^uE?Cby@PoigKX*0|2d~|7x-A@ooM(m~d4;NZT2+@rf3W-AtCJf9 zb3FaopscQVBWKTNZ$gAIJSlq!JfkS?uo_x=7`*z^dmC*(doKrMAwsXl(f|}nE+_{X zs)tF^(JwovwbR()l@ZUg4!KKeb!@yDr&0}Uyqbb)S+O;!OF{P7qU=Ym70plQCZcr~ z{o?Gh3Lx?jH6}8s)~{L%9vXJk-O3ovwx1V?M9ud9h$$gK*JpNI3emBdYS%jILm)#- z*G2Qj+&$g>2?ZYzi{o*2ov|yEp$R-b>!)Sb9wxA>ktHnmPoq6Crr=Oc%9y&OoPR>u z74bafP)v|;6)Kos$Pn6u-JjzluDPvgs9^Zs{$0xic&ucQIfs%j3Scawk;nh5GamM3 zFV;<~H&?)R$_PI-^FGQI=Azqz$Mdr+R}95_Em<5HQnG}83rY$F4|CeSTfS=Hj@7p_ zM&sDxogsU5#XZ=PrT~+2ESAk75{Wo#2EG0C`OWJxi;9YZjb2Ad(jNx2A94B$L?*S# zp|qcZHBB1N_)1zNU6sZV|}hlcm_Jz#GZc+Byj@4iTA!+mk?8Gk`S;1`iKv&t?q*;2#_+ zPBAw(hlg_Dn%UXeW1P1qmsnfhCs8#T6=GSG(5ha}xQ@kQcRo11EV^NP7VFHzEX9;W z(jcOn{lHf;`ieK^+RC!VLAQo=g429nGQeZm4EFR#`~oDz-z?}d~c0_ zo*~MfRHBy0*R(*n!?6YBOb^hqqoEG^(c1)H);q-@t@8M}C8U*pXu@kIli6x3SE}={ zczkTrhcDH0I2;aG`l3}xD2E}OwJb09T-na6Zct;{2HO{|lfQL1^(!8KuWM9W_UrS5 z?1(!;z4n0AP%+C}Ugt5FVi%@i`{wfUfY`cs+$)0SwcxDZ`)CAD^=x zpf|!pu^&hGabeOVD#B>GdQ29|OQ*}E(*8g?L#j|&B47$+YGS|{kUXCd;%&(7wp`+IM+l?N_|EpDdD+p^^BcL?40#asIZBSUYlr$Khq@Z+e#?RKBo zHK5Pz%mQqKy*k1PuOis#=USKcr_%+}B%X^ntKtP}e?s$_qHVPVhqg)Qg$0$SIt$_a zwJi-&cXQcKa3nzN5e9+Gu7HD%<-y|J22R<#*WhDYL#p~I3jdqeSEcie<|6A^P636& z8@6RkkzDDR)vkIGtAD?eLB$R4)G5oJO3WPAh?Kq$yFf06&tTZdNlXC7Wh_;u3{U?$ zf6t#rm!DbrilE+b&yF*w`7#@!eMVL^)%S{za7kZ}+30uka`eK|QV9X}Y*~$~H1W)= z!H)cZ-S@Q)=|hJWsojUkT}XOKktu} zFVS^n_R;V{5uUpw^F< z{j9BIbSNjQydr~1_1pvWth+9gQl}dhm2a>F6;zIdR^;jOkBcyYCmi*2Sx!`5+&35j zczC&0%lHq`x}S)i9_GdXmFD+;8QSDaLEoObv*?T5uBVfw)zKLDU0AoEJ4|dy$K#t9J=@YBF+;`W5R@gxTRw)eF6B*b zr_&SigO;_^{cZ?LVQcL#t(7rOxb>+wyQBrC3KcBZz4 zha%Re{g&)#jDBANECU)Xl`c#)7-=@Ggzv3E3y#~^-BXhfX!ca9C^01;t|tjxJW;oa zsWb9utG;2k{6L!aBku&dr=sQv{m0rx)$=9>BCmbI`k-uKdj4Iv05R{-)~2f4yc42A zEX+7ekXV~zmaj~^$D8$#XDel5erO5Gwz$C04oB2YEClca051i9wvs^Ad8u;UR0O(; zI8tE#ZcWbIo>4v;h9)`O%qP`ImX5jx*tBNyf6}f<2ar^dv0}t~Jxjm}+v7(NYwxOsgH({3!H`1IX=HLWTolzZvp`RiArGyGPgUl zW{1(!E6pLqr7iUpn-uZFNr#D8p5j?LC!g+k|4k|WYx(bKUo3-=iBN>{78VuUHnkHX zgL^Di&st7_P^OBWJhy{CAN}jVAIa z=yr0l-9WOV8N-53;9RvRKD%Fxc|ySVVRcJ(JQ@f4+o&B06|#5Vxp1zOeQ!K)ls9b{ zOXkuDJ8e)shrO;lfbM=d?ixV*p@AU!i1vt2;gh778{Wzi6AtFK0o(?~?mDY#8`jy~ z9Ir7M6#^_b=~hBs`g#D3G&fe49C&+c{oi&>|KK>%boX_|_y1H@|0%HkYW_=V{uPP8 zBJtn8!(YkpZ;=d(BL4d6bAALcmlPjoZK%U&RNom>Hjuagd>+gJECYcm;MKkkN~JW3 zYt>&`S`cAps6!t~Mv}PDz(O!MO#{v-uds=wL2z_Ku9Q?KaWK*+9|#~{2V( zyyhO2C(-vS4`0+tY_h%=w;hrJcQ)}fV1WSB<-N%OgS$qjJNFweCkGZ*48By16@_?G z8UO)mz~v<$(fiUcsWd1+a(yASr$*+6r0U+8N*3crUdC zuw;<0@OZ$=q5xdy6z&bh?(b&xoIVdoF<*nIh`^)+92Rq7{3FnZ{%4`g+RL)E-;Xd{ zN`9^y6aUfIcosV8{7{f;8Z*|`^-sAr+iw8xQ}WvVDd%H8(^D&0zi_1amJjQvs$xnU zyM{6MGSbt%Gn!K^!(z@IF-FUie{}j-T4nd?)lb?VX4P|}_pe)*Rz@e`>ijdb*Ja8@ zwlSXuRWla}z-{!+AsM9*wy`b5EY$(HQ^!1?2F4mHrKS;K709mP?#m4jB9)8@KH5ns z#pB22N+6_8G0%`Nm=h=b$V9nQr7!xk>}xNab>ShbZiwcHt**pz2h_>PpG^MSp%ouOQ5qLMqVppSa3ydxaN`(+z5?&g9Uz6$~+Iof#pPNaveb^@o+c{7T z^3cUs9Po|#{bo8dDjoIb1!t~S0bvY^K(i=i@tB>AM0H980x_^Le&Eok=9{PG-TNpm zX|k;bkB41I|#B|AHBLpFV3mw;#<*cK)ALJE+oaBmjyABGj3%7y2Wn^-c zHSF!>j~fj}oIlN^8t40mF%S#$i1$AG0}xGshi7+MC2c4ZFH{&K=K52$=zIV8=3hh zeipX)R8VYCkj4B|7|!!DE`^x`TNQO@SQQs^8yvErkMX@y*8Kjc>8-Dj^wCYbK9kH?T>(gG=8CO)&KK60jnUhEn_LbJYvwEmuNCv{h@D=-`&Ba}+J z6|j#4`N&y|edKU${#o=(_2(8(W2qSTk(7o+9%eK;$SnYSY)Qs{vaN^)=fLcxnq*{k z_zZm)u)sEjYuax&Y(q?TK)KE?E~3-AnH|3>HoLc<&q7@O=2{AbP&?z&t?zj+5Zm0) zH^E zmBl~DIaLzywT@|jZ1`E+#ZV5xp(l1qE?!LOMNE zHi$?j-;#w{QKklGpiL*cfY&4JK$%%JO6@a1+Zj;YNyil zR>iAu2XlbZfUIj(a;fi$KdS=&XYBlqKVBCF5jg;;#+1x4@%WyxnKWH-=AT~t>GK!C zfE_lKW{WcGSUU7)o_L_8b-hY`inS$oc~h*%5w34;Z}oY|irllO1faRfY{f9sMa_Fnp1B(u>^;4K9oTgGJ;|ab#e> zrSi@-BTr0=82-kbbUITp&tNbHp|e9wAc-N)Sf+$BwM-g<^SJKiYJKz@z<01UOd`7= zb5)vlav&J|&2uvaKGO7zuK~OU*|K1_eh2afFs@TMqtUUYALtKe?}f`zcA`khFAa*~ z>L10meYj5Hw0yYko!f@&{vb`l>4ZBPgN$#5Yu4VGA4xy}vQFp%yr-mmlqsk@GZ~)S z&SyUun^_bJD-DQ{GYJ5<2ALHBn(si%qF^T7_!Cgu=#OmTN-3NI?%@EJoN%XCA;o+# zKc%!k($QEqtBY?JT7IH$tSatQ5;c_Hn5rE81qcbE)Eu;V9nBNDt8ZVeWJz7<_+$Q* zt{HJ_S`no#waGtTUnh%~NCS#4i_K%PEgoTW10d=Z^4w|2?Lngq;TmonIi|B5>soL8 zsnll}Gf0xgwg9CUads!#W)DYRe~)&ksf+}89{fV(k&-Iq+uFT*fbb}HYxw_o&u079 z_0+<`zK4yX_1p*d1?ZZgBLL2;<_G|J2-|3_x0%)Z5l9j|IIys5w0>ElkO@GC+`!=K zKrePka$jqRnNKavqHXE+T1f}MVT~qS5|j%dmNL2tD2W6Gmf#9!|CoGt`0h_%!T~aX z)bDt3dT9^Fpeh?bw^xSo8oQkmGcd;36=brb=|hdG7BHs)x0=%-+WtbE_c`OtQ7AWk zdaWr@OKQ|}xgj|{eV~i-+_G|*+juYsusB=*<91l7wkn{8R&& z|B)}py&%t9flb_t>59K^W(pej=lGqFCQ9F@iyN)pJZ`5}H+oUCzoUAj@u87V2^Ts$lK z8ksw9<|BJNtbII`V^hrZP}wa7bvpX>1sk{90=K!DWFX;Y8ww(TcqO_MgAuOVzLgtB zWoyx<{jS4s&3Gy3g*(BMj~v}7OC#U&vEQt<70|-CyZ;&p`ya44vtrlqW7Ap48ZJ=i PUFCk-`&8YD@H_tjYYveR literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_miniscript_long_policy_2_0/00002.png b/tests/snapshots/stax/test_register_miniscript_long_policy_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..a8c26d3862cdfb446d37b0f4c5a650079ef88fe3 GIT binary patch literal 24546 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_miniscript_long_policy_3_0/00000.png b/tests/snapshots/stax/test_register_miniscript_long_policy_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..825d883019398a25398a5d20073d8ef1830a6164 GIT binary patch literal 8264 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_miniscript_long_policy_3_0/00001.png b/tests/snapshots/stax/test_register_miniscript_long_policy_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..a521a56bed95f98b1281003f21f8487a34efa398 GIT binary patch literal 7768 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_miniscript_long_policy_3_0/00003.png b/tests/snapshots/stax/test_register_miniscript_long_policy_3_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..055f6df699b5bae25afd4a4147c1bba29f5fd790 GIT binary patch literal 8612 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00000.png b/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..13cf02337ab90d008764fe6854faae07bccbed42 GIT binary patch literal 8281 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 USSA5~8IW;xxq7kYX9({90mxhknE(I) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00001.png b/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9e2f810a7b328c9043255042c5b34dec5505b8a3 GIT binary patch literal 10593 zcmeHtXH-*byDgxCAjN|8qHa(+DxpZxjY@A)La#~@kkAPM6B|XTf)F|=ozRp{LIM&M zktQ`l2%$=e2~q=ua+cp1cZ_rI&ol1W-}mGEP2QFDtgQKzIp_20o~a%ehY$x76BCz# z{#^?uCg#^nOe}9tvH+i`o3&LkF-c1q+|{-U&!v)x>2-#L7`Le>RmW{F{*L)O_V3uI z7hO*ZutdGR`1i@P&!a9})IWJ3+S|TZ4u13rThG8Hp;M~AJph}Zc!EM14uhDUHq)Qf zPBAmt#&xi`vOYV}!O3#!so-%wCZ&^dOrEE0nR+k0XUf!eWxo32-*{kWaa6;#yWrLn zXY8p}3WehPa}-@u&~)WzvG?AJ)72Me|69CoxhO0feV|NjB`(_Y|Ng~)!h`&SG0YV( zY9P(T6WXs!y#-=6Hr(yP$R@{j)@Y8MKEx*P>^@H=hPMqwY7F(Ehut<@yz9e!g~sCe!SUZg zJipXrw&bKodVBeF2E#CY8)dT=Qd)!Oa~#JrOWr60gPsWWSK;g89l zd|oIuMrpL-90qMUkEW=vHCOmPhNeh#2Z%Fe{!ZxN$c>wMUu`(#(=ads_m19t-?JlFE8<6-*iwI5H}2QcE+NDnuGBr zLTIRyk$)8fa;5{WRbePqe61%Z(_=gW3n7MKosHQoa;8RyAq zKdr5#qM-x0n)w&bZ(qHZr?Mov|C+t?<>HsXUl5~+XE3Y*bKARHU@*2Dtkl}mX?$e} z<6pBHxqNFas*kyaWLX)t5%RikScTr;$J}yC>^AfN&w50AYzBo1CGNwwKdAEeal(9b zPap3Q&wa;p?bH`B@Tnh`;8DWCqh<%Ejq$AbLfe~4n=`uJ*$R&Hg~`XlpIEUo|6g@5 zK{aB%zS3K$^{GJD2gkqDq}8vP3=hhB;7=&#T|D_5T|+@5+vn7h3iXBCR&nxKU07ts zpG+)Ly5&NqhdMR;5$SM&m>y`YcQ(2PQ}c!`!prWmQTL|{CsQS|&;c+~H0u6t|>x15;^` z8ZMrTOAHh-tM=>G3}-(E?i?5}J7^6a4aM45(^}poC-cbL!q7Dg2EF$1CmDiut|d?^ z&eOs$$;ru)eiRNk`N`wQ58Xal61El>%R)Fd8vGc$yEh^nD@T1cgRKbID{%7B0R!q| zlT*63t@p%p@^-FXJFDd_*YI>GPZbG500HTxWB!ZII6$l-VjB>Fm^!&ee&6iUy?RG* zI&f22aSA$2_A=wZnL{oXukCB#M>H*2JogxZSiz)tjL!t9<(YQPnV-6T));@nrZSz? zE>!{y7UhmTKq#K7Ay5W0PeH=XtSi$IZ0_;E!DfNu+JsPAjn4uo;Cc6gr}(q2u&Fjf zfrQbr$rIS@&!eLtlM=URO1S1XBR2u`R(xf1iP!YQ#5?p)kz3y2+t3OiQf!2p$mS?D zjDiDgv_6Kz!QchNTAN@^q}gO>zyIJt{s3X8oCjAARdhR{J)M8+(m?P5>j2?8GDooU z5|?e)+**jbyvR8vGY&a0m`Z2NR0;)KMyKcvU(!W-;K%T4NufO0I9og9x?ZXTEI;y8 zski#@Q#dKIZv4^D=5od=!fY~V_I*^%XN7Dc`8$RU>G(j%lwjLxlYX!Hy1hx}L}F#M zTln@jf@n@JGMFtKEqOUZ_eH<-6W?s(yp@eJ0n3p?p?QZIjh+=3#gg?@`vDN5&ifpX zb<=mnzEh=+y)C_eDQS+OvgU4g`4+*Cc*t07H%J8tu;U$B_{2=I z)S)*e>C{xOCFz8M&{O!fRvTmRL?BFPXdWY`BPf&^T+;@9td6z z;C&3enfiA^q5d8-Nvo~6%wia%C~aU82=(kvH{?=;e#|nHk1NcY!!BvrwR|@B&R$u4 z;|ZBQ&iA>JzDWajdZ~+W>zIeT9Mn*Xk3MyEbzxI=)VTmy(84tQ^HP(cr?z=r04Wbs7PsDHq3_(hjmfvHX^=mNH* zB+=OP9SPFxTUi3J$|2R@<({@F*Nv70W#$l2gW|2P>xA^`*%zw83 z*#aVVqABkv3r#qIiLlz;1ERG)T)*eTiGw)MCb(l?G|MYuNEw@V*STR|LbXUF+%Khr!`Rvgakx3}5OEtw&QZ?hvx~R^ zoAxU-z1I@2R3(T`0Y5xkjvvFD)568+JXN(v`B!9;=4Kl6)spnO4qQZSUHY$b&)ls0 zNab4M$_RX7GpD8ySBOFtN=+`)Cy*F@qz4$>-Q;cu%`1u(d2Hj=pKo6z{z+=p`J}V1 zyIm822V%9&o&fEs>fx6;?%qv=0Fdyy&_*c^@A?9D^$h4;&MsIm4|`Q@u#4kCkTI!b z9@(KTmRw|W1%Fjjgj=ckaaMcS&4}16N|SQ%mVDeLdUbGydYv&{lFi21Lc}v&9}?!C+-+y`zDyTdeq%FTjU1e@K5b>5~U?ekRC5`LNmGXfm7rH6iSTrP3i%z!N^&p%ZySWNmy0D zF8zhqo?l%cB-H#sa!$VC_T_hyfqROp3X1r4;m5#KCI&k?Gb56ruIx7`U_E!<6Qqm;4eKow09)dCN5*m@xt19zMMdfE_^V@`f zCv&s@X64Z&2e{uC>4K~(waKHRTCUJNS3c6W_*Sj$YE3F#ug*)ESPp&TFtlxH$E|vV zBgg4Hm*pA6Eb!^q*<%MSh)vf$ zb{|wR?K45SM1Z*y*+$DA4e&Cz{}~3|Z#zq}a(}lB`)bK4YSZ^hm|h zOr{M0rA6nZ>ZdLX7oRD&eJIv^@s@%nL76x`4lSZn+7Tg6{ zLf20RnJiKwoCtm@IafKcy7ZZe`I$Mi3e5W3(#8^j5=y3fXPc6)+N;|0e)g;%Joc(k zf2GyK4*eljqWisEE0NkJkyt1-5ZufvFPu6WL1{yap57639ys|hB^ zA$Mr%9u7m?;maDw_5}uH-3*LdbY9iTE&K{~n5Fm|q&kkAyKSg7H8Gz{28uGDQL1}` z!sP+D{rV=a|GBfOb+?U}lcb zx9LnB2Ag@ab62>v)_cPP8jJ|N-%4K2SIZ9sj~C`1+5cM4j+!S&oACt6dH@V$uOz&D zSn^&Qiu^Cu5GjTh`Soxk3rf8dcgaqkYPZuUX3-fmP>x$|)ONB@bKf(5ciCikS7rHK zRwL{TUsvFtf$t&T5>8&)E!u4Q(6-5 zfl51|>SrmQ7aYQ6k@WicK&rfgnQFx+gLeZ|@3pA1Zf?ahh978!brQdGfaCq!M)#Zu ziT%=ETkE<|_LgX+u0T0Fd{zy4eC_P^nT8R;CpqZMldj)-(8^zz)$Lnezv7pCnZIx3 ziR?@RHE31eloB>fy*oh~5F=UnnNQ_Prn^ip!t7kTrB#J&hnQyzbr-T40g!D)P_YuS zwUj;YE$wT@U$Tr4_{01BPU1|6{EQRG&10{p@@bpsn#T524LI&gS;jzHqjwi{l`|tM z6_PvP4H1_=76EV6#OFJ5?tW3EwppVY`Pt zcd^w*ucywKAujKdGm<~qKdX?XHmtgWb2n=sqC_60N+<P7KS5C~T7(>jA|;Ual@)`(@IM!P<- zNnBifgLr~gibB=W-_p+*4~OhpL|D5tr0M0Goja~A(shdeMxH6-04EjKYtE|!2A2&l z4~b@?V`taR^ms1z)K$Rd-S~9O<;Wi--We5B)geMG>ce5XX zowZ#;L*9XnEqGKAg{|GGl6%`TlXclq!V zD!00k*f|iqSW7^(lYv>~PrvU;n_H8rzEPxemhjj$&$Mhd2Qz^007hr@XUzegSbQ(H zZ)>+~PD1~=T-j*YB;SXbXBc_Qy)fA1+uZTjIQAk+pwiMKnj`il?GAu;496re=$2f` z+#g9+`DmJc&y&Ts6fu8d?BSb@Ug_ekj}`I0w35B}A;X71xO(oPE0r=XlUSy$%HcOk zaw-IYf0tqKIZ)H3tL^?76EC0W@LV?5vECC!QgJa^%I9pAs&7DC`y4L__sKQ)E1%az zFS`{2>gbapdizJ6Um*!c~42A3Icc*5|7P7^Dz86lzywNfL+P>GdL=5_TX)nKbfN7Fu{!B8a z{R@rL`PBo^d(WTz5WOh3Gx)^fnaYXr>zU=o-qHQC&ae}&2iIQ;2jHvaZea(;M7F$K zQCV_H4_-YmDX3i)asebGb9$Ukn)StH?Kn1=>n*uj{gQKAt0ahOd(5a$iRg0_N?pV1 zvr}sTTMH-VuKcp8PteAS$X;fJ++EVuAEI0o4a$452p!L{N zXEHsz-Z|#7!S!@IG=e$>Q^ad+_O|&0Yz`Ok`O*XEU(#kE1i%Vu79N|41j!Kn&#MmiT zSJ-)7X!r_~o{jQENJ(XO>&~>w5Rat+|Kme>58XWMOXkU?XOdMFyx)f(t@u`-&($1g z6ad&c4e_cEbFL>qb)JX*cSy=$+A;$H`Z_86b?Gi$X2r_0RqIyFvn`0E9LuTX?GBZy zL5!NRNwB%b2cr2jEzyn!Q|8Pb>`c?WLu|sQ1@erOz*$O351OMEoGnD;Z>g9Ra8*-bOi9SC5+#<`ttFF=@5#nbWQpt)OrWHGt5KnD$!5 z{1!2Sj2xR>GJlp{y4-s&eQ*Z1LC0sK#itUVDc{QdF1r6~q4Oc!+9Dj(?|I(?S2RBI zeJP8CcvY{u!VIBz$hf6Sbj=O=_P;FD7gGsdo|xQmsJ5oBWG^8ZF^PNTyxvz~^y{^# zm2k}!%iy>|KmfA%rY6E2R5Y)aGz?15@XQY7j>Ru=ZOr>DFGX%a`l#x~*D?iCPfT{r z8QQ9^0qpU>d8&AQb}$&x@Nk;1PRuFnwW=W`S?LMCr{55IHvf6@+X_SYX`Zcwj)-8$ zxL*is^F+&h49)Cnuu)dV_k$Tz+i3Rzl5gI zuwO>@_{m1#xT@K&u1y}&!*j;@i*5owY|(w50BN4@|2ovC%!vm? z*17U+G*F(Ce-Lr2l7ExuZ*ok)7SJg}9Vg1q#!}K;3pj8 z#;Y?x-keJivl<4i_Y5}qiF7GWC{Kz%3pEQA!FZYeF)($_=krVrQZ?a(=S_Y+bqR&# zQgMs^2im3FGCkL&-BPS?aRSGkTPtcPO@1#fe69PX6S-*=?UuQ?TS;f3>$zg1ajTe` zoQm2lcx|8a_22-vH8%q%uqTCaGp>+gKQ8fhK;dTl`HH@7BRILIy=b+!SG!fVHKY;m zu~-%#-Ie5U+E%fNNS$a3%~>gu`nEB7Fa&jK9)DCkYl$q$6#!)RdL8x()n$}*v>oF)wCC(UZ$ycdr%u}C9;FM^yo@aCu@L9 z<5mG_GULViMKoKw$2gC#?BjDGzTqWxawRY|pg|_hsd3})nPyh(mY5rRazB6TN36&K z3&cR?vgIg^02vpSo?WhVBBXoR5w^yQ0{AoFr||dcy0sD&NpZbZvYgM~dJE-k{L(hb za-o*Yzb&32Ye{8=lhm)hI6Kx8;#4N@2vORPz#_%{Y8Q++PQdbgVR!qtYbY^FnBuRc z)M5NtJ3HjrY{+ovfxJQLu6k0MM%!n}YJiX-Efpr>te#b()~$bl5<$HATIJ?mHj&ad zq-tBxL~3?vV6rIvHao?mP-+6w3|JxjT$0JUj9^KF*|GfMl{1f<^Bwij_w}8+^Jg)iDQpHEemPI>GtL_wDtpgDfa{v|l96xY#-z zYQ^qS>*pX{Rz5ghx&kOc1|>hy{pXbUd)#ODv*c>?sdiy=)>ChO)m!!IxzvT<^H1uC zD4CJGEzRQS zD_gdqmHd3Q3btuI1sGe3f)BSe&e$sc<-HKfl6?)#n&Prk8O!*}p%>47J@BR;$bB*L z5ve6zbw;P2R{tvRNbq6ElMgeno5L0wzZ8o3muqOHQUa5?g%F>V3I-`o30K(^(~3g#sc!P zUZArZ+~pmsMMefNIGF{fIQsTrfq!^lNF@taa zp9=e^r5wVtZ`I%?ctN!gw&l!JtH=J&ZR8xXKYv?8u~}th%B7o~KJJ~3i%?~n)xB#W#Sk$?|M#!(be> z%D8Z{^Qv6j{dRJJY1sjyz$2@-Xn}V+&s=hUS0yL0baXA86MwJtib1M`0j~~llatR$ z5F6fT9BL1jp;8M-7q#4>PJ}=1zBzB-z<3k2bM%`!KaB}dheF|g2j`hyIj92Eh9%93 zO#p!!a1069k3cxgs%={rCc41##gn^0CZt`x=5Y1Aw()<}IisHmb3YhgR=A73Bi1m- zd{0)1*GO^PC;%j)Y_E1Qzs^OlPF{KA=ZmV2lN~~Ny8&t~M1VC|N-8P_CUwn?aL>bT zPBODlR4=?osP*N^^&k}iv1t;x!5^>OX2G)n3cEJ20Vp6b85w_NTbuKO|EN(Qix)>o zdSgIF=`!G}izU;VKo0CxF3}x(Ga!$)m8mxT%CAGRTTTf-z&+G zag)REVgis|BWRVMgZKL`|2wV+0bYuueM=17pKiQxdxk3bZuy4so!V~WBELp^SnvuY z#0lCn`0)}8C3e_yZ>Vt0r*UYcg&(T_y;DcZ;3I&C0DEKwK!5g4?2r~Gj8gB)_)@m) zhh#YMe`F*;nQWHO=haEIb0WxB1zCfYN9l31ql$Nd>kLw(+f* zvQ-$fA3DS>GY-FSWN))n3CFBdrR za=_No2F-7J+x7eH#IQlYE`%6({it^PQTex5*cFA<*phRN;$w(*sD@YfBQSV5(68B{ zwm=3Uz(Q%xTy7PMnHhO1?61-nUwOwq%l_;oka3LUo#`ch@RMsK->sQ{a=q}7?OD5r1`FRx SIj}m(WT0bux8}C%^Zx>In~u%^ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00002.png b/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..345ce91d486eaaf55587eb20e73e4d09e8df61d6 GIT binary patch literal 8552 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00001.png b/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Legacy_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..40cab42476717c7baa17e5a6580c6664a0302f8d GIT binary patch literal 7679 zcmeI1YgCeHyT{8Z?W9)I&N7pFJ6LI2=J^2Q+qpb+qCA3H>W~LKA5ofUaz-m_OwA)@ z9wt=KOiWOC&5|)fCP~QL_kzTU_b5k?!ESx{blyM*IsMy_tVW{-Q3T^eP8$W z|6jlB=X3riP1jhiS+;DM>FHC)E-YKN{Qk0KMvqq+0pEB8bT=(qw!Q!KF`rABRWhz1 z?b8|Zjq@Tr>xTbok3IYL+}}99F>&=dqle4(e7Cw`#lGbw;U)LAS1(6PikDs8wv9T- zqgvU0_m>I9_giL)7||>zzvVL`9ls}I+2`P!D{t)#{BFzt?qC?pG5L!|A*A(W2!`_v z`dk5-Bb#H*jbE;4=$hfmGmgz}jaVMBYV-Qr;maeIKE}EDKlx$(oz@$NR;*oh^#9hN z?-InvcXII3{xWu27+c*kT`wic(nB`AN%iO%jyKvl<`_ukPG4&+sC^mH`iaPurAGzv zCXIjCm$0>Y;My-Y)7-2`_$H}GRFq@+*bM9jb>tvs*vW4(5{%6Vy8?w$R(#e0Q)BCP z23lsNg_Y@ppu?i37x5vXxv(rZtD*RN0o%0mdAiOU4qq-}hKVv1*nyth7HC&SfB58@ zWBDDM_Z(svfsJ7dMm0%E>g?+4C6}Pi)&5#%-;7}BaAeyb@C-1vGd?F7bb}xS(=9LT zz~SDiLdjhFp1HDmQb&A9X;gM~n;o5-(8-bYyM9dLqQDR7A&cd!1GRN4A^g zJHfWaRSlYu@lx}*dy7w#5_@14$J<~8mh>Cf(9Gqi`<^SB?C1)+oSNGK2H&6E-M2#Q z=|A3O{fO}i!ol8#1`jzu8Zx3ZcvfwM?JALu8{tWK6ILKXNQ`F%jW2{?M9qkr*iH^Z ztg7v_{AS?`<@;89w@&3_L*$pj1{MM=eS!a%+Mg_%Q{?(`-@WXjlA#Y!MaOOKUoM=i0L zG8tVoB7|s(p4Vu)(2cHc>lW<6atDZENpmFN68s40LmD@o>}_Qxkq@%dxK50LAQ^DI zDW{I`ZICVT9Bx7x#d=-EU=|AX?#P#>;mL|vD71qwFQbcq98vH^AP{7FndvvCp-Xey z0`DN}?C1@Mp=iv0&AgNZTt~4*ij-92yH~7tP}0i~?NZl|vUJIu%J5ru4^NgJ#&-5Q zlDE5)6AvB&G8j%-@l9jy;HoAAt2?*_)?J;F=H~ux05WD{V#h|ZGQ6ze9ev_CG%ABV zb=nZcYHVy|^R({b1Bc3e{cCb23>^d4l9k4)2s4-8uEbSDADXnfvy~~k0EPPJZ`Ixj zSEKjAt4`%9MD4(3WlZuVU07vzZ)DrciSLwP-$qt%XH88_MZ+`0BmYJwlUd1#ZVQ}6 zdhuU9cGD>7jX7*cBzsF$5!T6G=y%h3fjhO-_6VJ(-Nh7ZKFp*^aMBPB{kbTKDel=z5BqZv0Dm?@B1 zF&?b{k&k|mlvt6j@sf6kF`6v5Eils)D{M?w>BK0*lT(Y|PL_c*>}l0Xozoo*4}Hlb z359MgxVY=f?kkAU@ujs-?apHC7Qr(;x1?$hLUsV8j2*fs_i(j8t-V{a6x$lb1LqzN z#MF$h=Gr!LRNJB!wMz>Nk8B=Y^kuEBwkVZ|$#n9Ev@rd2W6!qzkjp^MI8=AwYnl#y zAxr1*`zkZDvpurvEO@U<_O=2s>>TraDGZ!&%Q-zO=sWamQUYB+@ac1icyNu%z9cG3 zbpDRKmWmYeHM(f^yjT8?A``6^o#mptysKI7U8AK=gTf5&a}2AbuLeEkLR0V(%W{#r z6J%{|A2*8jOyv;sFD^c9>^*g$XuI**<;v@~ZTXi_N>?=c^y`HTeOJlyt|wU^l^VHX z8iEsB|M1*S<-<+Cl_tp4V!ogax{M{_nJwCn;q_^!-S+@0cJQ3XGtgsf%+jLT7I`G| zx@hOX<5)siUI~F?evvXWmZBdor;EI}OXJcy{n4ZdbaEoi=7T&*U>(yQL}9&{me{H%AO3b)&g$$t^g*+kHvxq1qmSg*~aGFJkMXwYksi;Dt5 z1eFiZn}Dl+I3jFsZ9rUDIU-H73=nB16xUQSlc2aTHp0dMvMps0Y!f)|fv9Fgw~yK# zpGrWqo~pZl`rI6Py!A{aAGu2bbcQ zM_V!|!@J}hL84n1(ngx{+z1M-=aLggiZjTW(xVU528&Nb?=otq=^qKsMmXF7!->-n z>n;f(=oD()!UeE=*DsAM1ipV@pt-nsj4%YTeTRhE>bt#Vi`!1aXR&uR(E*qD=HmDZ zN|YenIZnSA+P+xm!rR)cA7*mHI7A!xbvMnqS?=T%#etDC@f!U)Z2d@p^7nag7tyXDP=X$o0KtOr=rz_XndqwJu)fV1Wo~2el7Uz$Ga(Lsp?p;A*uzee3 zX$sDRCwahby*Et%*f~+vO%o~}@j6lx$`Z)GW0Ar^(B}*R*<$l|aJ{?z2^cw;1W}hd zST$P&&@EZoHQMu}Pu%Q26yFMW#hf6Xqbl)&4MKn+Z8Xz#!>7 zx5uSBdSI%79Jd4(q!^sVJonVzaLZp26>lOBS2B!Mw}rN5{`Fd0;@jul6AY#}9WnFM z!OexU#!9{D2e3~iGbuk@mnUIG!$J?GW!+r}zpuP)o-Z-zK@Sz<mhw` z@xB7+ z+`ei`CS7;sQjeg#ox-o1P$Lgf;tsLrj_dyx0QQh?op6{nHC)Pt3Dkp~!nz}rS#>&D z2Rs2#K2ZjK7UHhQjPE%QPY+!O607v9-kc1vFN+GAPA7MJDRs7Wz_kx5)m-eEP-#%$ z0PLMmC^V=vDkwdy%>Vh2ZY0fnAvU@*P1#QRj8u60ucoE=x_Vtb(_}?JpMuPGv^WW; zQTM4V*R2tz{;zpn>^wljDj9oqKQzx;bBinMA6#KMfjnZW8ZTldec`}6hB|MTd% zgP!jBhW|F5EF(?7VN^8irz^jm6B7VT0@$GQn}9Ngr+syB^~ga01Q6rlW6fWy7H|aG z*ew5OP$?9es}Dn06`OQ$WJAb%eS&jrb#?k(&bQ4WI4Q~SPC}YabOZ25rib6&;sAcf zmqa%Jl;Cii3*U(OS`+t-b3lQ8xAnth<%Z@E%R7}sj!clauOQN+nujRTUx*4CjBd}7 zuk5r5g#VSD7SDmX!KEbofSmffg;&f#c=s!Qm1zLA8RkTfUU&@eUKHh=j!BV(gt6<< zHK=R$R+kJXU^(qVDU9OPrTmy>-b-p%XXmq z@{;yF7_3zKd3$-?ApqzlxoZkyXu@5un0UMQ9syP=O7++ts;kI3Z318#kB|EP;(^^o zPzTT@$^$P+o`_M?o#29HlJOxemoa7yhSz!@zeX0)<;ueGz>&m&uLQ;%piE!cRa8)e z&AToct1j@<%Y6lXg2V(Nu(|s2VA6CrJ|2v1+zHbsaENqKGMP)s+@x!2%(bOEc04mU z<;i;L?y5{TA8!Ln^il`w5AJ2ixsD;9`kxJYpZc}@^vcliTWPNGoQbV?z0(qaCl>3y zA8F2DZjQ#4(soHkc|=*Jkm7WWu3`x{j3#&azMl#RLmD3W?k!^`4ZXaYsJ_$$l(w|} z1X5Y*n(om!W7n6!0Ur|-nxqXCx@vzV1?K3Ul)H z_UNjKbu6D{)(ky6sfd{yj~}{lCl&vJ>VP1DBVtG8T=!bo{-aSVRj(wkLH<)s*OB8fLVkOr^chjgFxh+v2jL* zcqIwmJWmyfVv-l93vKDVEC=|-PvX?bJY~oR^U1<*n{zCw#~$5YhP1Zt8SRoxI-#Tv zxGkB(DN4q?vLsiJ9^w18PDgig>Qf39i()AC>^?cCENIE#(Jc<2O5usudm6kS zrBd4!s-;)Hvdpe?c@L%;^i3Bf{tdgiT!5b>sx>J6!oo+nq*5+AB69EWsp)sngt`6d zg_i9^8>~XT33~&W2H>f& z=9AS!j0Sa-Yv)Wj=wyZNAfP<{-&7A2i{;TED9@Stl*xD?gMx!l-c(+L1HS2u) zetqHZ=>1e#$;M|98)MVL=4WQkl}4c_qFgHL)qITie!TV%Jm9WhW@k5rE2vwu#Xa3~ zk9kiK73yqm8W#vi*et*yj0yM0F_s3K&BxEP)nVXLVa}0Pq{`W!jU<}V%PueCJQ`{^UpPE zy!H3?z~S!6F~B;e1TL>LukD(L{Z03up#0z2{6B2yha5j2*U8C|8~=^2-(OIRsQ9;! zRU3`|y$$dWd(_vS!hf|`KV+V_96X%R>1kya&uKtkhB{X=rpagJABeJqPTPW791fsN za<1U&>Jfgel$4*JKRY&E$rJ-sPDd~|ioip5a=gLd&Bxz6-3`yp@n3CN1JHY_LBEZC zAc(-G=IIv4!*05+Z^ZQC%D-%?2 zw}1BJ0Gv`oslj4Z1~pJ;4a6%yFu(G8N^r|0Y1;7OLz?%?2VNTBKi;EVWjX0&0X!i< zufp4LIDk7jhkPwner9<7?!;&UZLi(Xj7(??tP`gMm5Pa3+1bH%n(-xB? zCerbKt&W0*Yjygu-(t^I2^E4oj1QxeHD5W(kUatjXkDb7W!1KV^g@D+L1W6pll|I=vuk};L&R<}Aw?{ZVk=vlbH zT^Ys(dNh54`>=f|^sZ!YnzNN}x#$HTsq2XE$nS}=oO}0vS|P2Z2T0gv9oE*?$<7J& zhSJBjgvi~;vEjKXS$6H*1ZIyRx+}EdVk^+L@gK1UfiAWHeUFL;y->`=%J-jwLZ1Zz zjv(tT01gIQdK|kK*RCFMbuIUO`+SOomy&>tRm=#sFGEBjYJ%ThZCcy3p0~q9n&`If zW(Ux`u#k)$^1D>u)Sd2f7x^wEg+i@*0w`Ljy_OFgHk$y?+Kz(xRM_v=XKZ4naXkZm zS04DiH=&s=1s3*dw#~j6j5%0XyP#2t`}&RsS2N+X=eMaohO6t|KCkj`1R{K9)L8c~ z>$1)jmwi7yuhpN5>28kb#_d3kQD+v@0yVF?&7{CNQr&Fhi2(XY0@!7*2b8k4cQGV1 zunTY+U9My6TJiL{)b2-ci z@a|`KJMZG*-@_-yd;I7z2=CR4SG9O}op}F0-T3c)=f%ZEkY^O$N9%44g6OG-nFM(0 zy}S6tlEAt@8egM)`sf^@RRHYo<;5p{Pk?6nPv}czDjWGgFL?)Oa?YM%h=7hVSBm23rOPUjciFVHbBp#z1(#^?tqm zX8+&6JhA#oL;$?_MIO@i=<{!Xyx*EuEr~o%)G5HWSYvlXGT<0BH>bl0@bHp9+1$Yk zy8}FYaQ^`{9xE-Y3EoGWkNu$+%>a!Qtsg8W%o2}i#|WfFFWDJF!IQ#Q%j{~Tk>Ra&gU~n2 zIP{U}Lq|r0lCI_vV}FQdlH$d$;N>(hcY}ypQUO;I`zqVzwQN+u^?UbZ_Rps`Xtu)^D}Uw2=@qCRt=td?<>$U5aAx@W>smYKz_C{eAo zP>0Av!2!McvQ#M|uSY2OFf4{8-zl@$sp&E%nwXjzFUb%;Iy2AfjhI+(7oUZ^>}IJO zNOCSfEVQY6snjzCzqz6}&;Cn2$T?Fv)7K#A0pq<_wp5+!Ns6b2o;62TsQHjgRuk_8 z=7n!-@w+xoBq-!u3$PQ2OaKonU1lq2ywxT(t1If16e8 z-z0EG$<_}i_2iJg?xH)NB<@k-U8&2ytn4g)-jdbN8BYa5EnZ<>$sGSsLGBv9EEbom zV+xdAjI0zr3&)!c$g)YS`hf_P^7*r6tINhR{ZxsQ0plmljJs^R<$8)rQnyZJBeEm3 zKCXFXa=Aiw_xq7HadhP)y7M{VSZ4YDF$2ZG^#Ez*+l!Cuo{b1ZBEFAA_w`m`?`GeW z-a)TzK~#dTC2*Xn0l{IEQP1!F{&n|v-|k%%U#zsiAPjSP9WojoOsVQ*z(}vT{dV8Tp{D*^HQ0pDkzkq66$Kg$sG}z}G`_-RvqjU{M(v%s#WjCg`#}& zJXv)zCHZ^Ct2p0IE~i{BQoJ{3<>fp3iyTwQ8=8T10qESs<8VEJ0T#F2oB ze)=hYVP+1y8Wb$6BWx1n=6HSP=!lDL$26k&a{M}$W6}Reof4fsLA3ko{MvPR3e}y; z6ffJ;P(hPc%W;1vCa-U9W^`ID`13)0y#9F?Ux%~H%Y*pU4GnuEnBya*htIlF%+J^5 z24Uc%TXh%I^J1riqinO}>PhxqJQV6qAqBY0#Ti*w zC0k8oK;+=Y-@aLur^aazf2-V4wD%&F%Eo;Nw)Mx}s*6j=&1DbafLmj|tM?*&e{?i{ z_$`*Zt;i<%^)hkX>DLVkBXzJB_pq8lqgARk3SPB4kEl=9dNp_7;!~rHzYE?YBTCTx z#?)Ez@yP+MbsU}+wo#h+=^`AlmWZ;=EDp?_tgg0jF65ebYiwa*I!|5F^Dv8Q_LR*7 zhU@vVA?~97Z=zak)8$-I!dl7f`563u3lto+f9lstQv56nFR&r*YRtcH+~ao?e||SB zdQ>~J*!zHj3x;4H_1-|XR5NwRUaPx5W=TspD*JVJu4_^_^?5GeQ-sFPBEgcB=bYuz zIR{H3w5~S#^khb6;fvIWAOdYzhS?8kc{-+-~ME|p`fjH6T+#6 zp-(!Wv00FMH>m`Q=V?uPJa=+&e8F&IED@yhVEgVQGj6+C8|NBI{f%_-Rms-Z5BdzIz_Jlwi|M z+GYk{LqkL08~I3X%Mv_od&+FdWEkYrUWZ>Q9c&@ruE-3LW{y%>JEgzhCWLC3RCjt; zAX{6o4VLZX0QSToc}DG5Wf@6zR^`>P(#BC?D>L>ChUkZt+24OztU-O8GMC)MYG7Hz z=mU*Xa}!JCIJ_`iwlAb3ZO!rFaqt)_bQza5+$$EdkW;fpS! zM^c2p0z6AD_x)NI-7MDBvWPYYe@j&Enz0Cb&Pu^L*wm6*s<%hfKkbn5SGYsLhK7q6 zTuU|ha*E~syrG+Tp1MCQbesFa1bMRWSFxLE@apD$eeKyjS;y6p?X(jeC4`ZBjhata z_q^odZVQy^3lHB@YhGUQj`r?VkB(&wuJy0Z76I(*XQgMQ#+*04E}t}4yj6(6&ha2x zq0#BC0PprJY(qC8P(SIniMubn3A{B8Wp;LRMuS*Lm zDkA4tZL;8xA{G_x9-S+Ui0UtMc$NG8Y&`k_^d%arq`BKh*Aw{=Dr*SL-3467Zc289 zh_%Dg@`0@(?{l8HHPrkPSBKY}_se}ALOre03VDax<5{NK99Cy|U6LmvD&AGxv{t$3 z*&#RZS+T-V1uu-MUQ<(o)|l-5)8E?jJu?y2fadKID9=Qm+Ulwh`I=EF8bGwQ}p9BSC>|fdKcryMs5uwc3SbI>kS z%h`*kspmz)qPjOG6CNSQ?%H~$P}#%-=aqzc&|s5Lh)XGA-3P43Pqkyara<7FP{1{U z7NQgH9c3C`S{b7f!!q9bOYifr1uqYB@RyfoLKH^p>c!)je4`QL_erKDVzj`Cdh}VP zKUetEh{;A1T_j{Hc2^V3=4@e=HqE=_w{54CE2FVKED=O<9 zD;hI&#OGdWIT31quGdB~B z43+Mw0fYFKv^K?8C3_|JNDZ~})}6C-G_n2&6vmiqv?5mh zATpc(?XNKhOCc2wbO-Xl>-a?Bm_ZxWwVMXi7Tr@e^LN%;3cRy_ZvesaxmB3lOd|G6) zZFmTgy)3PDB@kv#gY>{3<T)F>fC1)zvY_GfiLHLSy;(2J&y>(Nl1ho$|Bg1d{ zs6$A)mp@&~BuLQMDU+vJuN+1$J`n!)Mt6|nu8NF)hQ9hFx#8Q36h)T!NJxntlFgei zZs4u(7X@Ac?QiLZUe&*ROga9FLvhA;=N1wV)c3a54ihkaqFTYPWsPf7I1-ZBUn;lk zma~WQMHQ6uWa4ya1_o1!sU&!#{`yE#DLoY!zc<5aAyR%%DSrKwTZZGC^e9>6J%K7V zWSg#;K-QxheVykIpgKH48ct>fI+HvPw&haR>>SWd1RA=G^Oj1_I|;g~K3>QGCCJ+? zI!ujlws_q6*X%Jj3J_^;v7B~EvK2x(wO1H8np|iDXq`cXr-d#3g&KKT_(g*o#>>Mj z9Bo*5b>$Scp~|6_gjlns0I96brn8#JqDMhRPT$DG?L@*`BbxI1-tp~h)2F57ZzJrY z|AurhTsMfvZNvmc+DJePa_i6bxnzHmMRP@U(SCh3Gqdj}bjoUP`i}9mxV2gTmj!>X zo28zlIUjJ+=NH@>yH~$Y)k=>tImbf`{4W_OWOB6O57LFT1kwie>b!zl23m;W?H*=T ziWpNde%G#!9j)FOlbAoAkd9@l?kM zBq~(wnob|WhNYs<%e}|&9(?t$$~ZAUcTLW_b5`Z?YpZqhUhrK2@^r1VMGJ;LU||vm zh!gq$2{f=>{jHlz?QTEPoBfmFbGCOLc#hs1rd)OWPTKTfVJ$;pgS@@!gW)Y$=aO+f zVzqO705%XikIjW!Ch!uF!K_Y53G#wzk(T6kb0@X;{SP*KQ;s}!LpIbNEEZMKGwQ77!uYGmoy)&=pY=Eit zkdw7FSA#sU+9&t3G=_4xa>zB+KdvhEm1cHz5Y?(*bi-X`} zV!hIYP=;7e)ECbIr`MY5#Q82ko`E z)z9@c=CTt>h*%=k_`WaVQY`(JRCOtT9WEaR_=G}%;+0I*4gVD(Qw29S2?~DV<8kvH z=I|B;hhJAL4-V}xJ;UB%VtT$Siw)w>Ka40ZUq2Fu>OxD#lP-hIU<4PKLNU%;@+^%r z%IH4nA9_mokGAuJ3;giuzL5zB@dv&%DAf7E!YIx6RYYy} zSJYa1+Jg6<{!Y@oZTJ_TYE2e!ZAHr?ws|5$5n=*S1zZm=9-IU(3lH-W7?*vrtB7h1vaT`C z8(~#>t$P~KC#a>5=+~P3H!GQHYYNqxJPyu7OSHYs^DY>DTxr}I5hHv33wjF;}c?k;=j<6;E(pc7j_pohyfI z=or_e&I$w1s)j4dtTSV8dSK9&BX0L-Oi%n9^%co^$ckc+kth%%5VZQr@49 z)J?>6Q;B1zm1VykfK*GS1HwWwK|`-=JYJ{0DX*;)cpGwZDs3&m;s12dIW;WlZ+dZA zUGaJL5vBWbzIwF#Q03;T0)BL>#*ZU8A@?|%tDk!_GPDCO-6m{cwyDeT`%=v=pUXH0 z8k2^H#;3r)(_U&=gm3UBFqvR^pmL~i)u**YP^}#BQ(A@zy)X_Tr;321ibfJAYP#09 zi%bnVmpGlMM6GX-k#RO{7>LbTcf1D7naB0Z8+&BKxHj}kg4IWzrDnFh!x$i#{z>V1@%q}gfx(#V|Ka$yXT_(7qTB^O9qAon`SikD5*RBCGvT5#Cg+B6R!>er9>`>Gwc0HiP zhGfJtU84Clyaj`CH{}ji{qnCYF`KZ6wEtGJW#?Ez(o0dkBRs^+eup(##U#o8Hl>a& zPeaFwe>u_BKDbsu5BlXVwAXW}zlt)!S2pi_T)Sja?~wnd!C0AT=RMUmuHKecQ{vHE z&H0iR$&qhs=^JVoNv^0ck?2iMl46lq|A)}MnDrzY^G19ZA>zMT9O8k|eGdYbo9iBqeQr?TY0pE*C6Z;AZq9HN#N7xOF)pA8$ z+;$m;rR|zLrvJ2h%P&sYXVT^ih;6xcaxS@3qwGLC?qSNx*N%@r-dK%Nhm_d#x9~4h zq|INgPN4RS1y09&nZ6<4)ti2hEqOGu-Utj>IGly?v#i3B*|*`*>sz9f;CQ(yIKw=p zhnHnqVUayCZ=b{?XO%Vqai=+>wp4Eu{^){$HqSXXLz;=!ovrVhJ6P}DxQ20Xa&6V?ZIMYRbajSw z$T7zs;Pw0mgcS@8*{vo5tUizz98e7qafPR8ta{99>1_lTKORtW0mxE_1N=wnDxFkq z!L549@U!QmBc~s;g~9y~8eciZ@yTZvQ+f?$PQ&-Fcvef79+`W4GPZ`_0Y8)G2h?7Rfy zUWW=Z9Z06;$6)bi^hXpJ5d&KGl<9o-olg|lHM*Jn5GCAX4K|F>sm~IgCgIbU=gYJ* zc|lSpeeeKQiTz$b?>ujp{1-``v(e|jUe~7Jy|oib#i=FzDK>?n%uTU?Bt!>l+uim$ z$J(m%50InLf!1skYQfEF`O982KQ=>=M(J-7haIf!4dT6_q5Ah&y(V6w8GVYJJ_RjWj=dgR zvHnR2NW6$*_(>dwpQ4RMkJPiTj&v@&w^~eYtEV;bWO!9Xig8w{ym6wF(tIqdO^>8B zA+^EThtK>?ZHhRv*>9_OA8TK=OWXtMDz6Ri?oPLDpfc6JvtTQ7@la@&2>SLW;3B-& znaN=QePa67!02^b=+61F^4}MPDIBILH0GHc_{VTY86 zm}FgK3&(5|Px!qI5~xzAtqLG*jZ_?s`mlojK1~I~8Q#of#J_#>gnJJdVSO zF|iA5=A2(ry$K-XBRC2(ty6B2X&1bQu^@8>c@Jz@3Y?H(KS?cI$vXCz<2G0MTpyZG z-}`^tYY)mMnIeee9~EdY4*}Mj)g5`d-_L$?;QyaEsa?HoPf74PVr=fJ1d8yE%KSwv z{c@tWTHqY@zV#JahxVz{;#M{bg>8Op&`Z$93CmW-wOwXu8C7VAKhM|=OZq7h5fMKSx5hxospb+4OEPnAm!##r# z5qzJ{;u(bd=BEt_KP^Ue*ROTkRY4+B$D?wk8iac;p;-?kl}$wxbqYR-(P$FCytb+)9?1g0Y&Rkv!6rdD&;V5Y0n((;6Tx(IsJP*% zKuhm}UCF{jcOQm|^0#Rooh8nh?*K6F?4-M0y*mI~=LC4~!F5zg{)d-dY|cSei?_k< zxhkusfwEDrkyu}i_!})^jRP}41z>{{E}w7pMqh~*JMoavZD^v5f_hyZ!xyX1@blU{ zHl=g0A1~7MWifi@KOWH&3?Qws~fGzmkIe3k~n9A1NKU z7X#WO9~h@2G=XQaE zci8}yXXeJCKABPu`}>rqL@DzDb~aC17QNk4y=H7jp)yh>8ztOvch-hRV8UWABM@p) zW6Uq3?&+aZ){Ys3t$!L3)>_m-TL(fWiaLU^=Ncw69LEd&-QxD%t&1`4iICr~)5c~H z+2D)=wlnGW1^blX1jJf?fUDc!+%@m*x*xM^4i0`Tz$ur*nay%7qg{cQyF}R7Pn4A} zg{@q$c)je3MDy5HF_;H3^5?_6t2BxES9!ma>aHPxE7~%A_PNGMg1pnF3-=$qrbk- z*)K143JD2GF_wU1#Q^|zrC75-cD4_kRIFo)wkh;#<^&0V{idRgKi)3fYqT<=m_ zXMs;&J2a7g=UYGL@x?Wyzh*j4 zU3;bElq#S(GzSlHQ$c?=A3*o<+oPs-gXDhcwmHHw!Z za+O^w7Q_w+ajw2l<;ZPt3)#@cA5^Kjk12bcZBxa(4a}8u)5h6S@_yQLL3%ETjemem z#2#m7$0=`#TxigR7A-kg8&ctNhWDPYy!1WjO{$~8J}JEn4^3qZDh;qQ^XdH(dTwvOwK`bREJOsqsYM{6VhB40`{}+~l|}@%E${y|RT5s=Or( z#s4erhx1W&UVxW>a<$YltxyiWcNr=^vKo@76n1TIQQGbHmkletmO(lbBANFVSA*v^ zA-qx0YE={GE3gn?l=^?mTVbQ_)cRe?xauU48BgBku$7OMdAQ+og8`M5 z4#Mc&SRvk$x+t4{+z0-zfFTKA-`H*JAwd<)#!_riW)@52jlxC+qYC!@F0cPv_!J&; zcoodx`wt}=mMONFu&c=vOaSQz8yB+O>=KlV=>PI*xHB6Wi-Q3Ht)khT-p{7g{q>~7 zUfbP;-G?zCfeoK7%d^E^PnQ6C~2YEbh` z5?`^lN}S*Bpga$WN#GqUU{9ntyG|Rl`(jPkb+F}~*u&78fwY;KhWz+zRM0b*FcI{2 z3P%fNl>tBUgI=-W$4Bs@alN`)JV4YqNQ`%L!2(iHk#P*vnNl=@CxM>VwA)~!0@_cHg2 z^!CYyAx_5P+rFPhp)_T}zPR_u(r35Z2p z@;wXbEg+VJ4p=em7=)Wim%m>P#m_w_w{`uku@;TVgUaPw0`pigtw}gvjV^H0L&1d) zOI%UKPG_WE(=JR!$I3F_7w89@2y<>T-(GNdTkReO{IK*`53wFEsDWLp9J}8uiO(u- z*^4SHgf6EfuQ0YISo71YnXmV#qSsf?ms1&-cApHQB;ma&WFk!iMfdVfn4=5Qe|@+d zgwu}s8@zLTw!XqtUM{%wR7)QvpQgS|a=`h%^$m56Ci1BBoIGTxzsAtidJ5_=ikK?f zou3^@V$aZzr9n>;47N3W_pI9|!o+uI#I=;J|MAPTSe)(1**X(=BUL4@$itkH;SnxIj5Wp9Us0S$`omadYd+jeNVd# zK0FW1rBTY43KxwwTqY|k2bPqz1DTWi^#fZ{27`^DP^N|Niu8)ub%~nPnRw*zL`E2g zK*{vhZcFv9nd$nHw+^)7+@dq-M4@I(?`;YO9f9NYe(R%`61#Lf@MqRb1ln2hW`6xI zu5p#yWWdc>S;1rg>c-VCh!p#k7*>jLDqs+l&8%jiS1-7+WWkpH?+u0Di3f?2|nRY_sye70(;(y$pCJ7M+R%GGd@X7)U}6YsA)Nx}N*cY7LImphx=Oz#P zz8>-!cWLPtSKB7!05Vhw`4C%ZN7^LArTlpLkFHV?y?Uh53=2PrzrZ7hZr8cfS*Yp$?e^!f)RaXn39P%x6OciFH_ z%)WkZw(?{3E})qgmT&v_{G^;H+VJT3(G)%Uw+g2k1IBxFp6_^HLCGSu{=9sfxV@-$ zw(tEbiL_%2>3)k8jIl-hXm8zKS8pBFepAuS0^vV4W8%-Rn*~E-Y@K0U zluG%bsF-_S-EEaR=>eVl<6(kSF{IIVICFv0m1ZYn9nOB~c=o+o{a{BPE3?XNuiMA` zFfV^A6<-5>nqlZ%o54L(pioPx<|Q}&-3G{XUc0&FSgton;tz^GA8ejbu{(bbPb9Hh z?TFU#Ap+kLXyq0l-ynh5jjyE~Gud`pos1mC9NsKR;#xTD!+%J*MZWhn%Xvj>)|ViY zbhzsv?CShHF;FOTw+5q-IHY+2$QGtJ#9By)LrHv){naHP*f!G&ta}8Mhz#IQmutMl z=ITV6boR_%XsUQI*+)`2*;KGWUiR;6IPe%?aKJuRuBBFzk zI2%uAdk(>%P{BwzF;z^SdS=yI2tlrh)S#e>4~)&xyY07b`~I_PKo-}VzBh0?kYp9= zAJ#d=ZoMXx4dVch%<|bdFFF4*YA+dHWINl$9&UuwQlyf{)PAvLj80G;gp?(IXy;rW z+uZV;X1^EWk&_J|&SGxrG@uHjeWN1NzP_rF}uLY&Mk|CbCH>_xNvZv6S@1tic(bl}nZ>Z`0OUBY` zaZQj^P|4!O*o)3GN;kZMJp2}@W|0trvgry;LZzxAhf=Nff!obO>)u4 z6N4~z1{J^Kvj`v1joISix2uYm_J5vWyu=x|g!vl@u#%}{4Yf^gr0oGnRXAbSB(#k&WAX;iW(Q)fQk)R#Ij-!&A7kjzAnFF zcJi1LYFT_BQF1JnF%-m8gAmQ?+UHl)<_Kz4Rg*QS1#B~Ik*^UdGPKk$9sGNZK`WW}C>F21t|`6FwMdo{9j$#vWop~@## zblzNqH=KW-fxhzniDWTSZt0`SV1m~I0d3~JoBS}UZ|@ZsC$OAg?Be=E2gMKxB6GVj zxgT($ZDJRni*-aGRx{4H%h2M~gm;W57%~rxq2~~z;_)%FyAVYd+2kI;>MMG85)4GZ znqy-h8qYWn+K2Zw1$2L~F38sGR#_KQ_(r;>vh^Rw*vW%lhX_b1FUfTsW!RELFi%yh zwCu9sZl;l4C)H;5P;OjebwUOy~M+1e$vrWR*)A9 z{ahx3#up2jx?x2Ishz2+Na{*J{R)LK1|HFIU*I! z>(H_+*<%Zg`~N|B>_W||!gp223|o}P9VIF{oPD9%doO5eB9NMEUG!PinEY8@?&NI@ z-rF70rdwRf^KLvJqYUC;FhDTsQvO{3a;W6tID47X$rV+wRZ(8vm7U3;dlQ^3z%Vcv|Z&;lj?Nje$4V0Hp8D2j54}r-0c!X4^aLOIC4y!%|^rMNQ>T7f}H(VZT_K zb9vu&{`=v`ILlP0SYnlFUS-+M^~`Pl{(hPk>rZhD!~=_uuTU^pNyUrpq6+5~Y$YgkYfI#(9s2hO}CL zh>JM6Ma&APVl>h(;yv|QqwVg7Y%e?k-F!G5P`wF44$jc@S!YvOc6G{Z8}&4qMz068 z0VX*LuIlVCq${p930wx$<~tTuQ>dJrT=<9L3wH`BSB1IVlbw3^-5UFURC|7{*CFmM z!~puMpF1-TRd4ZXY@^W}vhw7&MfxJvJm;mAiq^9u-uQ=0NfenaV3)8!G5bmlat5Ez@#m^ zh~^TgI7Yn}&5VZZa9_lTpHU3MhSFco*#Oq+vu*yrFYt9G+TI+RFK0+KR zc@QV&c{XR2wMw6qK+Dnape7q`r*o$(De9TYHL4i(sl@8aPqMN%uu5_DbhHFbfosHD zPy3i}Iw&Yfcunk|xO7QRBgJGyXUJuTClz5z0n|#itqP{laFSfbPkxrq*E*c&{R*;*o2_an zL}yazU8O%oI&$ar?x~HAc$da8qPe1AAY!oGO6rUDyI_af|Js!buNI!G{jHJm`uTG7 zs1fqi2-96&{=R-rQ5S&WAsu;-H&#T4?JJDB2&6HiBx*$AU)R#zN*_QA-e6C7IaR0E zehvGaxeh1oJi87C@>yj-*N%(*tJd0DS3~H=EVL$qK-^1v0MPj-)XzScOQS|lf|&Nc zn^N6omW{!y){sPrf8oZg4*n_NGD4hg#V@Ox@TUfX>pX+7MuLS(WMmH^_&QleHd?Vo zL%__;!l79$I|dEx_N%&+ zEp8?*tnV&U=-&B`r7k>#!|h1$Y%Mj|#4Y89X_WZHb5)||BN@-(R$wl#UyGG%N}>v) zur0}0GX(lt$E7<|_DZ>kq$dvs8Z;UIG2Fw6Vr&$7XXg20$L42U_v8;bMx%Sp$(krQ zrOj}>3!^T0eRDfVhx(E}H`s51HxoSfcM-xeSZd75L@F4!m2C0)S>QtRfF@Ac6Ug_hT&#gQDBr+UPjxIi$ISFV!pjCAN^i=2Z8It-aqqu>5{wzL3xmi;E2Z*esEV`OTStTm7eUcBa?48&PQ+ zXDmT0{{GlLZz&FN3R-T#jQZ#asDLV2kVk8T;Kl3nZU0D-m|y}dzPXd?;>)1pD{>&3 z$|iUt^2<%8vVf~8w@OUFjEs#|(NB{{Zd;U+?hRwjZ);u2*JhhhyNKIq6)H|Psd?^q zUS(1YY9cTY(0~FoFI7A17^gW)<5v7EIaLM-F~6xflxDR9lWa1s9x@J6_qP+PY*d!> z#H|5X8=W_bCg82-6j)R}@oNnZ4OO|_RI0HZ0{Yh)Oa;`LPjr$ZNI2#)3UHEu<+CKU z7>krox;~!zms#9@wD6=g0ZjKTrzFXXHi!`+D)24x)N0a)CS!3xN!{{=Q|3KWJ6k@scYdvgiF6VjQqe}@i0078*0v4R1QJTk!TBT1s zh%)Aqd2{ov2toZ2v`n#Vu?bzGCOP<*TrPbBcN|E&y@Sylx3?77NpF&5ERbkH`FXs>^xw?_-Uzzh zN4hLJ@#cAB0cfyO)=MJht#rmsv49*04We#ol_$-Q@%SrvB$f_^!MT)i6H7y6E$%ql zzjyJG`lm8uWuBTmJmxL@>Qt^Nl7+6Oq%M7O^NHfb zl*atO-ascGl{kpmM-{AmjR5A}nA4PKf-@QeLqq9bz`%gk%w<7DTguA|G=Y)bNv`S7 zSyW5ZLU|9k^p%WKI-hJiky4jYO6_!|$O5Ts<0+NVbPGuDGW{)A+CL}yb3Mq*JV0bk zI9vr6Milb1Ggj~|V*KZ*8565}r3MRfUo;2NW9CFuMxvS5ogcJ?ww3d^om(PvM$s4y zrlzJQFE6jAMxdt&`0X8>2SeY zu~R$Wn<*5c;8$?o!6})&{4hku%K{VB77`o`Fpotypz@egj8Ya=d#0sN-B7)2ML}@` zcWrmk_$#1fXxNfwd#pfMpP#POvdybQn~kzSHs}ehYbt0f$;G~5&Tm{B=|v^#M1H0= zQVMxq7}{1hFwZ`@d4Hhntj1LTHs_MOS|&7!k-xBw?efcgG~Jfvo}JE{@4xBRNHwNZ z*wC6+M(gXHY1Mc*PJlx?K6~SFl?^p9q*?~rz-n9#LewzZG;BDI^-^ssy7yR`cSSLG zYMB9bJ8paixrwr&%O97Vi0)p+L*RcTLzCE&^-|g8xt2z-<7{YvjlQeZYGQc|=TX1V~Ze60rM?dH`{k?!WsL<1qyZG#9mc5`(F; zT|ueQ23;^v;N^XJ(?IJQCbeHs~YpWRP zfeluDERx_+U)zgkn8or?La)Nwt!3@ZmWWjF`O%S``I9El;P5+&F+J!1(T%^nB0HVF zlMVhiEK)7vWQ@m7Bt<5KnJmVFT?uskC>&8xc&fF?IN57x73>LAT17HON%!BoXt1ds z2f)i(7qwC4K?$AoZ;uvZP!`x_^pS*GQvA|5HGjTb&D?Ld$J;gMdqHy4&77zpLq>!FA)f zVY4NnouD?jtA@Yoq(NQ8Ig%?1D;+v4$~YO-6+m%eJ{O=HXGrHCf@z5(j*2#j#OMTz z{Y(v9#%WES*`EcqdGV}sZTAeSv8%mpbwK(q%$ueG^@PJZ@gU44vl#OMVf0;=Lnk~q zF#*6$5_vvU4l%cIu&kE8`p9Ce65X1v^uVmSg?n>Z8{`$6E6NL8h`Vf&uGt}{kK~*X zZirQp&KpJTzw_zf&btCS$&!pc+n$d0G~LqYIPImXCjCj|co(N3p3fEIku`-NEaELm zA?s`ySl#QBr5Rwb7TJ0->m#Q|Uet7^siGZ&R>djO{aD-6;tlk7n4Hy>8%bZ2H}?da zzN@r!cJ~`ab7g*Sis*H5Fcsy|NH*22-D&Zg!n0FoTXc)db#V%j!XG>xAB1VrRT%^M zw}X-_kO@UpSDy`r3S&TxsKbiqW}tUy5igk%do$VG!*xmyg zEH5u0?ym%LCL2S~O?(L3jSgc{tT&1q5>+~|_MMq;D3uvEsk)VZ&?>?U>Mci#Rwoex zjXvzC$hbjrqZn@g5SOT4flU7Rwe$;Xpqr@iUq44Ez!Vx8Xar4d|EwT1pQTO(gk2Tu zEdl+MR+g!XND80`U#%@n?FHPI|8OGGx5_@i^yN!ffeqbmW96K>mhaW^)O|shu%fgk z!Ofxy^2X9m)}j6|5ja;&04XWG5I3KI3ORgq@4ImyxHRwghED4%tY@RKYHA5k|!0s;ONmpjx~1jdlE9<-x9&rEPHYV z9%pw&<&HY|d%>F{vR8GzZA$9inuOc^NxOZQm=wR`ogX`zttVH`6$60!i*C--sJ|tu zB|wmWQ6kO`mu6&Sq(o6x@zu=66dH6ts^I(jJRIoj9f1vTnnVZz1_wBb(PZUo!9U3O zk;W3?h;*ni(8Y+sflYaW&-EBx0}JQ+rk=S3dgJD#%%W}@)@*17yeEa#anTM1HMV@6 zUQ?Xs6uT*uAVkB}vwLsb-<#;f59S72rV%-}HDh%zHiR^X>(JAu{3Jfs zMns8Hm(%+r*Z4K;!Jv8H*N_0oxEq@MpGJqhRUlx6?xVD`?)0S_D{@-4KRe4z7;Z1| zNJtaYX3C2q;fjN5gxezoN!_K7?8l2^{AR5R=VGc_r(I)~kaT&`SMAe-K5u-w5Lp+(QFXx)7EC)`*oM0J!4m;I~fg1F3Ybn&S z?(@fnaw(DFJ(;3klJ^EHNi5@`j1DnjX|M;|NZdV8NAIvt*&K+zyx5(^a$j?U(cf0T z^)48XJxt>OGh?9Uc@9$D5O@o<&=>)B=;`> zhny2{GA*m>>*^^F+`Izi$($i?$d#-1?k1<;_&b*>93k}aM!w^H`CPo{G?@3>&u9Ot zRG{9X@4jnvY0)N_sg>PS8gUg{)oY6Zqgh?VLWxk64R^;cuIBP#x9#=7xvQ@e>X`@L zuQ=Cuw-*@M=ifj?PtIt+KVwngc0#9)@rjoOleqR-Ppr~c-WO7w{@PO?ZjfDd*E6}U zNc+BTvBI0O$^V*kQN1#2qf5DdG^!W((It9!n?V_W9hW0p-STkmrCx6$5l*fwnqkh8 zUihdIm%UV=zOHZ_F+6ijbE)%2#??!fzYi`x(vo5son5cw!()oy+`8d><1HO`DYLFH zJ^Owtx4*QI!~M`Nnw|#T0d4pf1NUCPgt|$pWFtypx1m9}BGqtZ&-4O}et?}vX6+_j zhx~6!9)p{1YQlwPNx}yeOws+Z0Pg;6U<^27Csa$TXWb!Fkq1KLvuVa$oGILzz}He? zOHnf52#~{ciy+!!w>#ZA^`Y!H4}T0eOz`N7&nXIY`(-lUDtV?gaE-4fyLO zp4{;kWU0;k>|6V|ceCMK*%QU$Gdc33WX=8_idSo(dc~VeN z9Vtek;IR>ii0#-inF=BZ_^&jobldm)liHc7?QTZhv~M?cs2oG3*agB?36^+%o&<^4 zUy>?-qVA&h^jpOG(XQVOKJZ`w6Yu|1#m^6ZcV zm+p)&Q~pD?>@krM>ePMD^TASZo^i8hrsdkSI zFA2dKWK|StAC#WA3||E?Ed4BCD{K0pn&>Orj{Twduo|ZM8FRuL5--U~4xTY;uam@? z$nQMp;D6uVZmjgofSY^x2A7D7G z4EA$t@p@8IwRG>uyEtrI%_eTX1}>{A^5I@$^}&fkC<2p*?AjtCw&PyMo^;Z9V9rep z7!bUx9G=^HbDkFu$M@N?YCkRtKbi*XCOg=*I~5g2+g>G#HE`@tz2pJUKzM9*TSaa^*|j_UM(&hB#K;>^UBZPazkjabZJne6qCk*^Sl( zMlsL#hia0Zc?pY42SRA?{mW?un9GD zW}PfUtpoXM6oS$7st2uE5w@M>q#uUW<0Y=?i4Kn-&Uc1K>XhDIC6HVCLJ~zWWfs3w z+H7Q6uq*3>{HyfcWl@pZRoU`pGr0+-|j(onK*$pC^l&i_;=wa}%yCM{K9}lc+No9WJS8nt(c!_4$eP~R-WqX)ubplv)L%`G zhxG&I}QcL%@UF=n1% zkH&vvEcD55eTP2*P=LIuM9=WB}7 zVvvh!Hqc3Mmu$8?MKL>^1v_B>DJ(z9I~a-oa(~c6udild?G)S*ttMmnS&E|A@a93K zWQE@`0b8CumR~BPQ6n|dW_oFUz&EiSoc{s*#s=R(EoGM^N?B-)8Lb2DOF3!RrxBVz zJ$!L#CGdC7p8m>T-Q7@EWFqf}O81<7oeJZi0E%7CPYVgPU5fm@Y-Ih4Y~_c_?9OM3 z{O#2+&-x5MQwY!KQ4-I=HMY8PPF$zn&d~>0J?vfFtv%?YjC|h@!SYhVZlJ1W4YZ@b zGv1W#&xL9bfNdc(Qp7)0L*dBSkl*l2xt0<#Wb(E6_}=Q+*oV69$IddM+4kc1tJxZ# z)@bqnrQi!pVG8?M1x1BqO}>C`;7E

-PS-aXpf^QP$s9O1S_|^^4?89PSiH3qSa> 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00000.png b/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..13cf02337ab90d008764fe6854faae07bccbed42 GIT binary patch literal 8281 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 USSA5~8IW;xxq7kYX9({90mxhknE(I) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00001.png b/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e90b2bb8fe635b745b9d5f67554d10a1ef57b5f1 GIT binary patch literal 11620 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00001.png b/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..40cab42476717c7baa17e5a6580c6664a0302f8d GIT binary patch literal 7679 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

-PS-aXpf^QP$s9O1S_|^^4?89PSiH3qSa> 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00000.png b/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..13cf02337ab90d008764fe6854faae07bccbed42 GIT binary patch literal 8281 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 USSA5~8IW;xxq7kYX9({90mxhknE(I) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00001.png b/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..39c86f9158bd264043eb7ecd9fb5b6b3a07d29e2 GIT binary patch literal 12203 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00002.png b/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..345ce91d486eaaf55587eb20e73e4d09e8df61d6 GIT binary patch literal 8552 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00001.png b/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..40cab42476717c7baa17e5a6580c6664a0302f8d GIT binary patch literal 7679 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

-PS-aXpf^QP$s9O1S_|^^4?89PSiH3qSa> zgtWAgu%d%r2f0_(j`2RPKVNSx-AG0GtR}mc7|zDds^EMdH)T&*PRd;$-#m?ZG&Eh` z3F1h8nw)XD3w~-QXeX7^ere;J#8L)Z0$&-|;XAAbR-W=6xUOqSy9PFUt^_cTFBLQ%hc+HPlAWf8q?}(_9z4`16pO_y5 z->t})sY1j?*X)Ep$VP)Q$HU)e#FcLE;ocZ&?L4TvZc_%-ObgRYwl z)sy|yyz%NeI3KnIrAK%R_W3vgiP!62@H$6T_z`Tyk=T9EV)0qqtORY#q zc?mggN59f-kmz`I^%yIp|7!dv2h_9$uF1M=DpFrH{2NBD&YK{TxVkn2P>_b&&AW^VQ!i5}_w!HI0{&i%04Z(j-&Sy`p5 zSKyZ|CT?TCh2?*h;wzeNi+^?Qkcy?u#2}nO7DV-a2uA6;$?Dc+sg1(z2L`o3&S!iq zMsKz^KckI1I-;M;^K)0pN_5 zcH+WY$VN_QI3Fa{*&LCLILBp$#OKe{uL& z?2>Z83&;G<+dR_wlMh)9PpdMJD1>qLrsHiUm3n;fhLB#z4t|oIRBnN#;~dLEIB&Ls zdl+Xa5!`T^Ztx&HeqiF@Cgq2@`J$w&-wgqYI(YNQ^Jd7#rX03WH7<)rNZl=8@G?{W zWUzYPMlZTTKuIflOnRX7Qq9TBINze=5p66hO7~E@!nl*`OSPe87igUbt6%E=mA_UR zoe`!V(yT)#<%*nMM({naa3A6pD~{T0zgbR zq`kP<+CMf8!Tj#x=7UpISuknUoB})X;*IS2ye8ESSy=N_B4v;Iv(4SE-N(|{ep{t< zEHzK=GnROjKJ{N}1og^+?xW+u^E+~$$00~oZwO%(;cjto+1`j^RJ&}~Yj;}u{FB}V zmku~mvr<<)sMKyV1uv`Q&cT;yosu(X`M?5hHSmNT}} zw$lR>Z$C`sZ|eWlrc1-nB}J$2+Gx_K2cj=4J+p1AM2eQd-<%UP$CJ(LixGcLB?BbX zxNGC_KQMNpvsH-}J3w2O5;=z2?qkGWWE6mGxK_xLK)imb10&6I3m@ifTe_ez$V6=> zI+x9O>a0P4Ekfg*xO*}?&0i-_Lz7gvI=-?c;`kI-;d~7T=OHv7^(+5Wrr(9;w7S5XbEWd0?bUmWICVqcPHvDm>-g%dK92LoTHpT_nQF%0rHk{W(%nJmIcv!sTxZ4ySHCRRAj} zDEhOQ699g@IDiN>bb+rc%XabiRcB5&P@tzrSe_XD{+?kRibms6iO6}qcMc8sWj)nM z*K~HtmpE0LCzm&tzVipGYo+=UG*lxG7I*)>>76Yb6o9v-}5_`$?>uoG*{Z3Uy~+yoQ$Szi{K zYW)=x7e;N_T*I*UY6+LC4BHRvL74 zEuB87QqGG7`$4y}a32z=mU2V;U@+&tC=8a9AbS*bzwJ3vQTR2W*q*mDH^05p zv$xoUspAKPKLd_WujpwmtmXFN=4$Oz&1gPCD$O( zXq`Rp4QUtBMyDM4USo3?d>UKSWnl(FmN$p$;A8&bg`bazu&f(-19iZuX^_~WwYYsr z>n?cmiH`tVbojCpoAgNrHv_=kyI8nNt%C#NLb_RslPu19q;8oKdM9ztPpwsJJGoNx zt_hc;y-pd5?^LOn$)5t!_Cy_=OIO#VMM59_N(BQTv(3J=DNJG8r?-#<|Ew-MkmzV` zU6_0Hjxs%4GUSRRh#Sb4rN%J?ulXP(=lTbYkc44$oY-t2G$^U6{(FVLptwek0LT_^ zJNH$)<1GTdiyHu+repr<5i2%v)>kX1$o>@AEYdmVF0YpbG-sjg{}E#A4gn!dgFJG5 ze?tWmlWQzPHi$T>kp-4R(8(meumpEoPy&4TEf0HjS)nhM5gp5L})s}`IA^6P)c%1Phm zH-Qf%lqE=&coE|;bYVQUyWpz$CR-l#ae5>U5(+)Lg2zOhi&i@zUK{LiB{Q(Y>|5i? zNexjq1G-kpA-j*HH0>O@AnZ(a`tNHIwuL#;!bx$|LjRaQp;}3g`pQWp?P_UXs){25 znwn&t?9?03_x^4VV|lS*qy4brh>6NyW4&XZ>O8^F&o&pa)j&u71Cuzqho}Ll(Lk8! z7@I+S?7EFrioxm&oA?F0)m}v?S9qvcP^P95zlX2Q9mzK~C>2Q0PvNYrgy>wIExVPF z^siy{`B6i}#J!HT)r^9)B=a})9l_#r`n+iQI>D*fhlki2BiktcbqlG?;Dl~6S$9$WX@NT z-KgEMux;h^0^ywV`%EXT8=K=s-+=VA?-E8M`oOh+q9|0}Dy7va_d9_BTz8}Fm5>mV z^4Vu?Ye|LF0k$}2Isre@@t9Kehi=Z2f??UYj;%=Jgis<8C?qxz_*8?)t;Pr z9d#1{oC`#sbV=U*dy&os@;h&TC(H*~r62)NF@!z12k3diGf_i!54m(*)7zY^Fa$Q~ z(s~^!7UPh-p2%_%c(6u%SbPgl1(}v8-ri4*QO&wD`TkwL-g>4Zt@j=1xuL>+QfgAF zWcbE>;nAmG5r~o3!j68waWc7}C=|+4(dBd6ZOz=A`-{rYn`8bqSh#r4V#Bb7o3Y0u zlEUt@@B9Tbf$w{bjZ)^}i*Hc`ju(QAHl5_WinaMK!teu$JAZqbaIs~B@5UNjAl(Ov zELp*{USKf!Ul?|&6MB>jG&bBSRCpQ4ZNbN7Y!1@kk8jS zy}&Szcw#O{tI6-mqbrptRbWJ$00Egg-=!w4tUGg(8#+5Y{_h%YbjW8P1!Ao0@%_$0 z64Acx1UMg>#<=YnLAtpH|f z-%Z*!L_-hqK1?l~#C%NHIpb0azrR$;gk}R@*2U}nHyr|bj8qH1&kxP4I9;0E#4l;< zEDZ;44%MWZLI0`DLV963@Rhuh&bd8a4p6s<%TF*1(~x~C#wdEK)Q%l5KSuhleE1t2 zQLHIWe5!8L{p=CoW7EJ5qurG=R9O;5nO!Z${Ig|T%+2e5NWH#?J_YV9j;&U~P}^3i zsCL3xB~qxCnWF^aVilbD{OW5OR!~ky!;+m0&!ODF8aMyK?gsCU>(Vhu)qI zP1_i&a|DkEnWa*=kO=RO_cN#Z@yi!33TT$<#7j;m5p@n#q_ujyEdhsmT3W5FSQ1r^ zCFXuA3bQ-LK&qI2ZWBNILwQC|HEtUy02KWu?6i4=;%&irrmUSn4M*`axmBpk;Q41s z#paj0eJ(!lMnbhqb-PALOE9>m%M9h{lI6aMIo^MP8xa@RGXV)(;7^zb2-xCcOM}AC zSx=9!--Z>O(}-)WCZMvBL0!qR(7Gvm3-;$Ro0Jnh1H(U==D%-@|C|1_;@>9Lb;y|V Y?%eUp4PyxSZw(p)-8LXM*$m4xCIjXBP8$~iG(3{kuyL^&3UkkiazWX=>7 zGa2SQhq9O%jX8|@K6`(@@5|-;4}8Dx?+@=?E|1Ie`F!ko-u-^N-|yG^p8aiZd`Reo z5C{Z1WOD0P+83wgtsWQ3NQjz=MW%a%PhIq;re ziN~z%Fz$aAZ}}B?%%Tpz=g&J?Lusnn6q1XW2+1*ESJfF_|GQEc{Gw9hPK?|`&@^M0 zT4n9T}eTE~}VAZ=)JeFRRJw!|&jP5RZ-!mU7x ztmn>m6+sChA-E4mqY5EfutA}=Xjw@muYJz8$wCr%Ufjnx{scRokS7KS2D9`Lk|`sry^Nxk^0!(>pN8RzeB^TxLky8&d#@ zIQ^yihccqTwkZgtW(4M^$d@r+wVwjhbs_XgJtYd{ms(8&3OXH3xY+MvPv($_`} zz*8<6KrJdjz3e4to;Dx;gHe+I9shj?|F(fhr)J(46o_M&x^Ga`wAwJ5eqcY{JlpL(eTH#kUle`PsPXG5JNV-3aR3v+9+u#|r}c*wff z)#ngWjZ#mw&s!@Oe!~}M4~%x4mG10-Aszke#~Hz4x;e|`X>(xPbWCIten z=ukmx%GcR~R`DBWV84LF*qmMReto3lNfCiy(aTZJ@5W~yhI|d7g+K&*|ZRLzv_&rm{N(z0w)WR6)NC}YMh2KfW zK}hP3>Mqz-37tcNW$i;JR`PZu3_L^C{e+^g<{9{B7{R@|s@P(5LhfZAJeEG`htkh0 zo)Ry+ftv;=SyAw#F;XR%6wxrz@2sYL`QH%juzzYu*LztL5z^sm(fhiy^qU?@(;k8y zl#fw2ILa13LUVU#oE<5qC7~RYZMwJ;*g^DQ(%c|&cXwBhvy4{Nd^AH|&~Ryqwk%aL zQ_kHdLg>sQsE_oA$~UW+ASBImsM9;mZ3}PGItgM*U{qZj*Y$6*O~dxq)+i%5Ck{Ic z&K)biQWlStgJr6Zw+-tP-k*U&q3Lepj5?N`O@OpTHdjArJMqy6dn4ny21($2GZ6KcSsBTkKlp$DqNrJ176YjeTwm?ceMpD)a1F3t3!`FEm3{!fse5#!N0f*Mf-cWjo`W& zvpSW5>@cpH;_zef;o_RTQX)=HFgD|P{s)$-l^8#R^=Ofhs~eajE+L7)=oY@B6I{&6 zQu=4EDIDz%knY~rRV^~cWWClsnlN)z8nBvxXgSHh$|wDbU;X~03Xe^owK3cDtOy=lc!yY>_LVY1muj8h7c3nPLF$?#6GPtO8 zx9umdFCW*H7J142RI5I_a$KL^#ye^bY@SO4UeSQ#T3#t-Z_2M8Z64DQ62paa{%PU% zXxpX}Kb8+Id0%sO1IGe)B#nW24Qyf90?`CR_Qb|+MC+Fc#kiTHN=t`l4Lq~W7o(47 z(n-ec`6Z^}#D-+YR}pN4HFTY4?#RejG8*ux)ygZYb zGtDj^nD>)37#kcT?%y?-OyP&%*r&1i^13S6{%-8Jdrek=Qh74q4LzKb0^S|Ur?~Gf zl#?3$q0nNoXZ`r4M`04B!T>TMI6yG)iL z|MFRAeTml1Iq#@=6P{!XpUp8x?C(4Gsrfgg)j>Hlm!6<8QoJr-xCTu-r28~XObK-V zq458wS;C)aCHbhqVUZ9l-OYj&zG`r!KA=X2j-*zH_X{eLSaYi%smu+|?rKPH_3c&| zmAnwNy}do=qxHxACLz|KkT&K5@D-tn1`*Q_({LA(nWhY5(`4=RK1=0BTG^1ZD}ca z!IfJtu2T5Q^4roEoQk>>u)n52S!pTJ-G#Z)fGrc<4~4pki0UK->gFsG%*ks;-rJ%z zbQ;*)HXTdXlDI{_$L#nNursJ>F9Y0@;?%iX>f)atcoZgQa+tH>CEcxJONy0`U)v7J z-B?8OO!at)5||rdH5VlL+qc5~M4=t3O7R^U^bm+X@+i;k+CIk)AgCkcC`bYJx&!4- zs%!mtRv1!tMGIa*w?p-_Ak+;#65RnzV)gvIFQHzaDHS94fWHJ&r#{A5Tqmt5zb9cOxfNh1dPTn1VTQA~bt- z5XGHF_fU`(uLd?2uYA**4}~W~mk*D{o$U%2eBgAog^5z`-?+(`AU93=%@0+g)UQy5 z4aG)K3i0=+J%u`P&1#9ps?>9W(bY-}REq6@(qBg38PsNXBGR$hl{TYJK_=vHBEz)S znmxAbrkZ^9!&NBA@r}jtRJ*%Ja@@ZAA7>SIr93%qvHOL1l;4nMoaK_cF$AM2zuSG? z#MCZk>}2RfxB~GJNLC^o>s!B*NXeMYCf~-%VC5HXS+b*g9e(xX)&YT_h=@`Hn;`=v z%|g-q7ZNk8qK=TcUA+XSrk>pRr> zZ`HRAH2J6jy)5PNi^eeb6(7;t^HpKR$xqYVY>yb7@lAwd=AE`TaCAa|H2u6*EQnpX zn=c=quiEOYM^fZgpWLH}r*l`+EDgng9Omq^Aohc zuN9=Zh3e-q44)h)Pc{%42)wNKuW?42e|XYm)ef)l`vvtewt*BR(YxILiRMBHWvM+y zzYX2&)KgunZNn+ZyiDSFm8-(oPuk9!EQiW-^!mBN->06@z2nIE*E&16)(F#0Z`>Lt z4s~)2rP4DHaRp!II@QVe6jUuLQx|!gQ^rns$kx&>qhOP_zQ3{zKEGY}V?|d(UL7hSUpM>-GA~D-e0@2Z`Byu<^4usvV_&2s~5W%KC((zb*C@reX3Tv zBg7n?ch9*Z>awmU?#q5Ydzs$vF<=F!;C0x8+6hBGg)Ig5Tyjwh*0SYc=KghX35@Y_ zn&rIF=vMRg)Y+F)J64IIL;BlkdJ*(d|D~|HhG$=XKHB1Prx?K)f$6wWnFaf}%NEr4 z#Z%n&bx%oOc07`sYmcdT1MTaqhRbg}hc9tNnvOt7WV05M_b(Zzk7w$qn!=ENEI=kE z&e52V^D;{6tv)}_R;K_Syu4E8Jy7FpFz8;hh1}|+CNWo<490YgVe?sG^Ttig@TzRQ zmk%pne#~b6L#e67nGqkYml2PfS)4r=xR0VVLMLgC6X7zvsjBX6tDuQ=$AvC5vFMzw zo3g6e9?q|g?;bHqNgDk5==)zS>ltfIJNp`3&}TYX0nq!toLGAv0gV^cZ|w?z%wj(LGnCr}xpH z$bv8-&!Nzv>UOW&9J`ei8~2>XC+uf7ah-@wJdleKdD#dN4pLn;a;zy-pPk`UeA(Ut z&SwqZMeZ~g`2}Khzi$@sy9^_yW_EZIYs51!E1I?*IB9wf0z~C6H3v~q^W3_$7ufE1&!3!QVc+VmaLD^iK zd8pdz*}&^y?^0a;y}WBZvX@a)-_U@&(RhBIeBEP$d6bieoAg^(G=^);hCu2lUgB(x zGImxh+WXhRknrDPJ~`dETGp0NpFSY$duo)%{S5e~NosAfObC$jrbO`l2<5J?ALV}x zD6mx^D}sfI+{AtH_>D0TzOEt2G;VbV2=uIZiqsA+5XI)%@(RQE{8xQYfSoRq0hQu z4cr19Q9J5@_`=g>!6MPq;*k$%6yi^?IjvCMpxX;|An~lpx9X)PZkGN_F1lGHQn`Rs z=da>o{s|tENHKz|zYU}pdXCkv&-(`IiI(j~Set$hmY2TG`7M*PZ78do zJ^Z?i)%iqKI1*EVowCU;$_uRhxXMEw%(B{kqJk0svPvs5d<~pt(u{dvF_NyB)CXtE z&M(>pNE@6+Y`@5wIyL>-J=_`>RTz%JEJUt|po`X-hk31_P&}0hWEUG842_p9kkZ>4 zc0PKahMR2>Eh)#mxa(;uoiI%9UfbJlA@z-^SD6V0J#a{xy!SQ9#zjOgH%eTh|6Rb$ z)}l&a0+TbixFw0;XbD$rPnT%8DnP0l=AahS+~8#=j}Xf0zGRTlkZglL0Si zMjwrWHca|eIz2rwr3X7A6!M|Veu>CgFKW-XYBS5Mp9)K-Gop=3qfl?D&zR{I+CmZ~ zyi>$RH~OW2&9e1J(E+$yN98_WaiyoR00=AB=S{7vJdQ}Ycoln01n;EUk#F55)bt~9 zX9*y+&YHPfY-tbJzDU2M*w77K0==2q!Z6W*_XUG0WXAsVZxOl$pnGN;u4_Cg1|@@mf*yIPNWk%>~~HbWXP{MeE`a}nf)Xh0juOVN!RI5-3A$foDOL?jXlp>XZ zCcA|*-3vR5Z5h(t0gk9?#Hy=V7ox-kmQW$K?2;?~C;9E)^J5;3MSN&|b@rL%H>J?V z$#2y@Yi?5=0n(h7$Y!VUO0mMht?)Xyft#(?&FEa(dNaX+q6znMtzAVc$4BeUqEyut zFY$XrqviT7fN-BQl*HPafDQP)kdf=`>u!2V*3iUP!%yYXfXJ|Q(W|`Jw*2y~=lNg4 z4+a)ER>gvoGDZlQmCTZ?c;|}v<8?Rg{s1RgeuEe?`0UwaAXL#p5t3tiYN!T}8I3!0 z;JTLxwR=aN0-F7<_cuE=K>D>nmCY0+S`V$J__7EnD6sS~(eZltb6Vz+mpuI5dP@+X z)biKxpX(CI*mbXKeg8^Lr+=u?VYOz6muEIv zGU@xH@v`%Gyjyjy_y=uw&IB54a`><(n>%(g zW(J`?slgk02v7B>3A`LwqJ+l=V%fn&*sp(TN-#Z>2eK z-$KxUF+N%jEG^PU)dH$WJ5Ty+gU0|>Q~VCD9o%YR2oJyiYPv!4DJ?bK_=22d%k?O^ za4Sepg`?Y$j(Uxz)G1W-55IbP+2YmHr}nkm9Z-Kya8PET%BK9uyOo0`W0_ zE_xou(7bGLtw0H211f+)TDMJ|9Hcr%mXwyJc=M)!f3@&p{!%y;_~DAlVNB0o`saMY zoq-f4)8YUTbs4qL#9Yz76o1X4;@4Mu%Y6e~D>Z0bFcdEh68rZXOx zv4(w_lVlEZpLxJ^bocba@u!vM6tGJ z0KAWsEA*D=^wHm~>y6onv&v}wb2@=RQNI$Sg7Sd*@YAp3Yt$a{#F`wmPz%S$j;_(3 z-EKnvWp;EvxN%kC6c<3dn9ykD1N5EYpVB3GZEi}~zyDk|2krcHTe7Wx(uVw#lxw{f;R1*b7&)aiK1SUNt{zn%%R)4&$JDz&9a z38EM*QYaL&mMc+VO%Holzdb7u#)AT!ICYp+I1%w-->p@VGtcWc)#0uOLp+!-E;24f z7p7dAo@}xxt<@GvzgZWBTJb9xm{NvikHTIZ3@O@JdbL{Au6E*eas*EgnsrUHDGYbQ z)z<;kGs_$Cf3M}Y2>`@&w@Rl&pv}pXe}E;>i2$`RN6zuf?QiG(kBzQ8n@Ujb#Xocf z03=*E1z8}EW?Y;ETnR#w0YsXzv1?N)BAeihi6>xDjX4qi<05g_C1Xuen_MfFGiX~8 zttjaWg1pgq^wQyoClFF(M8p_=z`U3o+=%&okw;yue4Xr4M!?E+-v!d#aQ!@>r?3?+ z()qWFOP5016_<>MyCQKhB~aURQw2;TlheX%#D;;TrMq=<%mFQ}Jb`qiyEtL#b**F8 zP$?(v5fe*>0 zgop*MD8}bkE5*p+GMGC_6gs{tlTI*6eQrCzYU)xPF25?q|FT}>{VAB@vF@q}1I5Da zbe%jB04^Mj0t-g%eQM_J3zP-Uet#cUlj|ZdQ%Eto` zi0L+FiqjWrx6`r8>RO({<;&;G3q`-JvhWZ&l@;((CZ$@5n961_q#P;ulfx6soQS#f zo3Xb|^hi=phs!=0ZltLP-ng&|sSH?Kv;jyH2aS-dGYAIg;$A`3-h<@HHG^JZ;jkSy z>!n8xzxddj8vNcrBX&RdU3H|`raLMh+clioO;la?q2L0(^uG74AJOuqD;odEUFoHpEp6!bJj>j&7x*v;Ypcm{mC6pL*Q> zQ17+Oc7FP!290PSe^@hEYk8;tcOg@4{lN+A=T?EkB-dX-x-!Ye9J4=-I(v1|sb0CE zdhlM-{Y64cpa8L#*SEZDA!v-b;SQt0;%ZNr=_b{T`UE%T6dp4p5AHaaq-xBU z+;;;SI+B?U*jI~JW{RpZ7d|gJC+02qSvdKwK$z&}#m`tu8RkX8D2(2vJX3rt^+&kA z_Dv|d7HB2S1!JBnUE$BAU3vsDGccz$JaI2~P4~%r^9yW##K`DwCeq5Z(9_FQ*MI8x z`%P1F?QV7(VWHq|E^QaR%7^Lq>McCxo{7fC3RLXpKlPt1t@ijlA?uL*PNsO7jXuG>;M1& literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00000.png b/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..13cf02337ab90d008764fe6854faae07bccbed42 GIT binary patch literal 8281 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 USSA5~8IW;xxq7kYX9({90mxhknE(I) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00001.png b/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2c961e48776aacce9b2675c381d0afa001ea0c63 GIT binary patch literal 9984 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 ZeoHCj*UB4k0-bFf7N*uWDz1CP{u_~;aC`s& literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00002.png b/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..345ce91d486eaaf55587eb20e73e4d09e8df61d6 GIT binary patch literal 8552 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00001.png b/tests/snapshots/stax/test_register_unusual_singlesig_accounts_Unusual_Taproot_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..40cab42476717c7baa17e5a6580c6664a0302f8d GIT binary patch literal 7679 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

-PS-aXpf^QP$s9O1S_|^^4?89PSiH3qSa> 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_legacy_0_0/00000.png b/tests/snapshots/stax/test_register_wallet_accept_legacy_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..13cf02337ab90d008764fe6854faae07bccbed42 GIT binary patch literal 8281 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 USSA5~8IW;xxq7kYX9({90mxhknE(I) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_legacy_0_0/00001.png b/tests/snapshots/stax/test_register_wallet_accept_legacy_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..50233556484420cc7a35bb23a81a3d69d7413ed9 GIT binary patch literal 12966 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 F-vAvT^40(V literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_legacy_0_0/00002.png b/tests/snapshots/stax/test_register_wallet_accept_legacy_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..345ce91d486eaaf55587eb20e73e4d09e8df61d6 GIT binary patch literal 8552 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_legacy_1_0/00001.png b/tests/snapshots/stax/test_register_wallet_accept_legacy_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..cb160543583a1029b4dd2cd587f898b7d4a09097 GIT binary patch literal 7788 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_legacy_1_0/00003.png b/tests/snapshots/stax/test_register_wallet_accept_legacy_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..055f6df699b5bae25afd4a4147c1bba29f5fd790 GIT binary patch literal 8612 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_legacy_2_0/00000.png b/tests/snapshots/stax/test_register_wallet_accept_legacy_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..825d883019398a25398a5d20073d8ef1830a6164 GIT binary patch literal 8264 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_legacy_2_0/00001.png b/tests/snapshots/stax/test_register_wallet_accept_legacy_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0dcdcce99fd958a41c5f50ce84ea4d2c0bd37529 GIT binary patch literal 7579 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_legacy_2_0/00002.png b/tests/snapshots/stax/test_register_wallet_accept_legacy_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2a0de0b7435a9a5ecf3ece82d1b00de4499ddc9a GIT binary patch literal 25559 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_legacy_2_0/00003.png b/tests/snapshots/stax/test_register_wallet_accept_legacy_2_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..055f6df699b5bae25afd4a4147c1bba29f5fd790 GIT binary patch literal 8612 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_legacy_v1_0_0/00000.png b/tests/snapshots/stax/test_register_wallet_accept_legacy_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..13cf02337ab90d008764fe6854faae07bccbed42 GIT binary patch literal 8281 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 USSA5~8IW;xxq7kYX9({90mxhknE(I) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_legacy_v1_0_0/00001.png b/tests/snapshots/stax/test_register_wallet_accept_legacy_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1bd62f7ff75e801227df96ef8d895a7927bfb88d GIT binary patch literal 12429 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_legacy_v1_1_0/00001.png b/tests/snapshots/stax/test_register_wallet_accept_legacy_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..cb160543583a1029b4dd2cd587f898b7d4a09097 GIT binary patch literal 7788 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_legacy_v1_1_0/00003.png b/tests/snapshots/stax/test_register_wallet_accept_legacy_v1_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..055f6df699b5bae25afd4a4147c1bba29f5fd790 GIT binary patch literal 8612 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_legacy_v1_2_0/00000.png b/tests/snapshots/stax/test_register_wallet_accept_legacy_v1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..825d883019398a25398a5d20073d8ef1830a6164 GIT binary patch literal 8264 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_legacy_v1_2_0/00001.png b/tests/snapshots/stax/test_register_wallet_accept_legacy_v1_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0dcdcce99fd958a41c5f50ce84ea4d2c0bd37529 GIT binary patch literal 7579 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_legacy_v1_2_0/00002.png b/tests/snapshots/stax/test_register_wallet_accept_legacy_v1_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..b6518b3898f6aab11c2bbb34d79b71be17b4fe7e GIT binary patch literal 25859 zcmd42_g52J_&16k5CK6&1nJVGgY+I039Rh+oF$4s6 zzu&(L?2*>2FCrkY=}~#}TF)zeCu1w6wh`Acv34QRjBG}J=CC9&x{LhI@sUL5E|P%b zEs0K0!aV+cX@*^Z)MJfLC%%E^J3ZXXP9pK|;>rpO4`rhX2;yzYx{k%yh9Ll zCy0pP{=NIu1kay6HzN3K`T76TonF5z{r&wL&cX;j%eSc!MU0T95)mYKY!Q-41KaKh zLbbwC{JCGB;vIs(NW=ToBcuf7_lwB>XG^t3`aj#}y#H&(3)5)&BpwvrCj z5D;!M2JwRBp|RW9~)u#NKIhrY>OQ=m)^TmAU8)jlOq87CCwxj&y@2CYlRP2W=kdyN%g5nzqo@8;82A)ZbSG}3 zs^bYG75FvvnBRXxBT1i-7b^^Ayl9kXiZ&Zhgl=q1@PipTnw1Z-HBKcFDy_Ap zOU##z5*N{!Ia>7iRpxFZ%S_+(pA<=^1&yh~pLd^28dQ`=E_?USsAyBUn|aDIElG}D zwnlea&z&Y=!Fv@vSTv08MnWa7ZDD@*FIw)$-X;E=k4O};l+Bgzjj)k_p~C7v+qj2C zCrqZY0~b+=+ZVjN28CziHrNA~6-Qh{Z-fc{jcKJT9p`oTDuAiZ*sv=->3!s(y(GE% z`dwVPHiq6xw`l3$FNU8}QiW2r+>dZ$>DWhqcf#Fl?sR>I_|>5_S;XXW`g}+}49ypB zW|>R1hWEC&0ClIc3gsF=AqdjXFAJZ}lkbMjl6k zy}ShMMMg&Gon!wwcSgHE=`0F4fAe6I7&uP!#?#}OU=E*HnsE*DYlPJl27)}`6;;QH zl6z)4d$hFPeT5FU)W+)ujPylSIFTjAL`xOYM`(!8_A&34OMGIG3!2tnVo90j!=~oP z+A^*%-R&gMG6I*!vB&!BPjAWIVlawN2<<3_zsh6|h_jry@yD}URjS$oO8|oO4%bM{7u^VzHKlu$Eb{73bLR4s zHah!H*>x#?hej>vnZ8?!5k*ZOw+8d4*5SA(Q?Y9}|E^D8e5dyqUAk2|UPM`@8KW>{Ly&Ap z@XXt6{)Yx?4GKB&Z<^clE|0#;9Tl#a1A|YwR8d7;V?mCa7Yn|VtyCHXPl!0SPkp_s zyL?CaR~&4Tx+%`u7GBAjUfmDh|2LaUU3Z4vhBnGJ+Vbwcp?5(r*lJ5y;5CVjAy+sn zR@l5aL~%6n=6Nk=(bvbr!sy5|hg^SLF}d&~NetTqF|_kDf+ z(WyGMADq~^$2kE-dB$R)^JNk|ogLpV8N2n}io^+Sh4s(fe1{g=b zS#%$!X_=N8)_i+`_mWMZ5x}}M&0#GzYmw0TN+~?Ek#6#dKn_nFy9yEtauiMWb@+IF z_VMFsRO4P#Q`1HjFxNNxW9NL%cLa~9mY6a$yxtsaUsxQ73*|Fn=H+M^-hEK0O>VC;VtEX1H9WF})yIi4IeGfsy`I$+^ zOKQPxA8O>1A`1->CWR7>w)K#0y2=bGegsQJX%rL|3M577kVR34YwnUS!mKKYmNAJ5 z@iQBS=3hM8O16N)KRJVZxDmW%{q^s#y`9Dd%8-ebOiZc+8MX-+MhaYfWxkM_@zi=hGw;PPxn=^B}=FX?>5TNVwH*uw%4 zRlJEgU)3j(ws}I>kxhw|tAw>cd2qP2EYri32iMm4l!0rmmW%1~dmbc;d%EMXsP7Kh zA0Qo=&wU^K$ghrG2bRN4PWJ9y2VvkfP7g!B&aMdVy%Z;ogzeTM81rx&Zgn%ZyQr-$ zT95BtPRP(jNu)*2(!sMHSNYJS-BjGE+=}GG+wO2w{?B5ii2Kx0iTfqPqQHvh(wU*`3B{z zgM_kb0tJ}>r6*@Z6n5o3R@k#TspO#yR#-W7=togup>&4Eh_iKl+7aypCtaeiTcZ#$ zm%P8JLgSxUGtD81HyjS{>f>IXk{k|&(+jVQ(&DawIda*hA$t7+hdQKUbE9xHqmxl3 zI_q7dGi&W!vMLN&)iH?~m`T#AF0U=kfh!a5cz52{qXI)A7B)>!V`7B-Fv3SZ?DQVtcJ zaj_Z5M$MpwDYX?6s;@t@cUoHtH5<41G^y_(nW0)x7r4uPVKjaW+|X8Pl@8M{h|zS) zCdTRfSn9dMV5`rKXY;N{UAJO%=ht`%@veT6z5y08yF=YGR7ZpwTtF^_GIAPu3l)QTFKYhu?Zt(X=F;h)}YxOY>XJM9OI! zyQy?-3T30l=i}PUEj~Af>k-+%O$Ah+|8gc6iqcFClL~_Rh9AXEx9=>q`1iZYe@fU_ zBvQ+CeZ^wv^8r;szkcAQrw=XORShK*In!Ue_rfT5Rh@!g;6`x9Gl9%eVeGZ^*txy=-Cr7o`+HIJ%6k~@J<0V*bPurI{S~nGpnjjczzz%gNHE=BoGAv(~(E73|1f$k> z@a)SMe+T?4`@JTxc14ez8F;VfaHZ%W_Zi#DtR|djhBzvK5Z~v%q}eKmN;Utid_0@b#d@Hp-*dNgc>Yl@cg3!^R;>#m8!IN zOf{bx2hU84WhzYzp4+;u6LeCO*|DZn`><6hidBW`L-~vY7Oh7yw8>GXmd)Igu5WTR zVl*AMCfQS33SXi1xCes-SCA~dyiaF1%uF$8(7ua%Lql~QE6Eg{ zpeEdk+S_}X0l>HnCB&5_%C9TjAC{`4UAyB0k(WOQF54UgeN$@UA)O&B^EENgQ8vPL zQlAoBvRR8NGdQHcc=v48p)SAp{ZRWox7XD8-^Xj@opQk1x$-%=P+?-l3HGq^sW(n^4Pb>JJPEEe zj$3==Q|zbQKe6-!&Sl2O=)^!q)v9@_Rw7!z@G4q=;W?3Cdp^6whgsCr)zau>H<8zf zf1~NHFuz9mus@6klXGqk))4fmb24i@3WfUm`f8&rskLuB1+c@v8G;ncB@N*lSc-0xyFD!&B1*W`reuW5_*i|#1M_rdgUlnekAPRY( z-zOF5(+fxX6nvP(H=VDF$b3*pG0PYXZmIUhW2f@Jfz|kK8)N->koTmxO%iaN! z3|=tCn%$`32WKK6Z+_j(_GeVqU-E^t&U@zMKCHcaizjS33=Bt|d!u+gvIFaU$6aZw zExE0xM4QEG4j&xW1RY;FmJAQ^3${LXNnsBgd3|kM?FqY_jBfa(H*g`^;vyTY*Zjf= z(R=Vmxg3>hJ2AY0|3d;pJvYkf_oS)t4L=N(HEb&AdphXfdyGsvAJp*7<_f>OF2&w~ zm{d>o8EsVZiQFR|oSD|FHx=mUchr$iqtdAR1b3)ToBfiwcE00LNj}ivk|UQo=E&QE zT>(IqKWiZZ`k?wDA^;Ayz;7xx0Fp`MU`mLI{ z*JNs-gk-#=M9Y0@uRAx`NmVQx$GAD`us9! z3qB2W66#-qiC%HNC5y=FN*?D_Le~R|O|z<>o6$c61aJQzYB*Rd`K@sl|RxHl`m zq)~M)wT{^@lNF@)+(sc~X5;6M8cXrp7&!E`4P>>yp@OJW3crA>Tp3eGFsxsi@8-p^ zlayKQG&hvd&8e2|HYer6Hh#FkX2o8kyuer{hI(#kNs$Dve>{%y^&4-;_ z%H5h!fm8FVw5=h?-1qP)hia3WBw{w++?=k2)*f`^o_*b$$J|pItBxncInmXn{zg3< zq9`r>L_Vpd+5uO}=R&)&6(~bVkqLC8EhPUkGQ8-A@1t5-srtyK1=G_cQ#jK2Q_0pkEm6B^+gYc9rB&^b)uVw7vO8vJGlJWc;_7WhS~%X=5;b|? z7WTgJl;thv-pME7eCa<|`9(dTr}wJCRKRTfp!6uT%_>R^14;X6s6AQQuy>gc^BdMY zZ*w%GA_^l~qlbTNe5>QldoHTZ7+{*3Uw{kCE96rBX8y9L!%SD)es5=U z3BUM^eoF!Iq4?_@oJ8x8vnAahXrklY>7C=G`J|XD{7{y&V4&p9m7BH180Y=5)-kcu zw%GO`d*#o-+NiY-|4>P?d#Akm8d|3G)|V={5lPdPJ?d_Q+`nxRzrUdeg5r7-r-VMW zjngImYf1^q_2P<;=NCMhNRCLW$eCZhSFIHIXO+?=5kEm}BCkB5rMdX59Ds!#MO>l8 z$|Q_VRRcBu%l#D;An%c?c>cOXbtQ2n{&LDQN;wX4lpx`X7;XeI6W?8v1v zKTx2*KTyEzfg)^+KR$-W53M%|9GH+dDhY>Diyrsbz1ji1%oJN3Pzm^hd#~h5>j11 zA%!c?P*7Amt^BwOkL+_|oZP!`so~1t#Jn^EwG4$q?S?RZ^K(B%p`a=A>1&-Lbhah= z$s4XHr^hX5G5gXCXNIX#Mn9Q`G?k{Xe^!PlO`vg};+u^0G#CdW2rEU43tNQF$x2_b zY)5YrGPu_!)N*1O^|Fy@uCkEFy5lhE70L7D_yuVn0~)Z^W%-8nV+isoIP0Metu>9k zzS)4Z1K%O&My{|3{hk>)l%M#|iQN(5M7>>Up#PlaZnv?Z4x&;)2=kOisYdnQ2UT6Q zL*#CVqs-TF)y^1(tJll9V2&i4+<#F|of#e??x}KOIoqQCQNMYXp%rBQWjQQ2rns`U z^d~lWK=h=#Yy88l2I8R$hQ6US@#0Pg+90=XsRYfpM6ueqm!yBE^P|wMTunsFS}Vx{ z1v(!5b9W^B$Gt6~JE{pa2dk)2Y{oW;ZjW+Cnb!F6z<}n_)cA%q2@?fzDgmHBL780Q z@!iD3Y~e^@54sDRvmf<~xjN4&@~oQXlAu48Ydf8{yGRS^+4ZT^a>+!M`JKK$Sc@(u zm{xE%i|Osg`bPLuEpR>|4vJ$T##|0=8w+etSQC4J$lnHs+9 z$*lM2)`quz&3lw9j=jcIVC19+ouFta4ovG79hYv#05B&o04WMwDlJ2v48N;06_730 zK#O@~Q?~C8MF5Ac6TK0L(l>`TQu~GJCm33(rYptR-SnaOw3Om9H6ny6%`dpgOlVvd z3#Ou#W}GD;y|2dLg3%^2krS-#L~+?0p%M2cb8$+P-0WFrg@e_xzozS?RQZIL1l#U| zOjCveoJzk_@;-EBT-3aXH@0s`SJ*WntCq)(1j$x5{x8Y%>Cx0^jZ#evDqrfE;;8*! z!mV~3Wgd41 z+Jb^NaC5cN_${0i^YE9aC2N$@(wIEUD73C$LjS6DzXW30*p96Bz!bJ9iQ$MeoMdx- zhv>vhVg8ewElm5-d~E#RQAsTU{>p7mugt`^pHZL$8x&S*e7w6Y)nMbly zo=wQqr&P8Ks@Zd(Bs}=;DVy|n@6@e^tprn;TX`d}NQ|!HR_H9U*BvL%L z-}++enbFICtxGczdetd?y+34x+puWS#$Sr%HUtejMSQ&FITqb#2S|<2{6$g{%bml? zZC6Wlax6HA*sxg&d+`G>_Z=7ED?x-cZB_oC`rm9biOm=Qi^xZ+zRTbj#vgc1@0}JF zCMXDNsAR}SBTg*trjBmf9nfx6aZT38cA6eO#{H;{JigSmrue zjQY%xXD&?vKJQXoYFG|k-1A*#+?j!%+-S+i@#Z|A>))JVo|*+C!&fK+DlouW^fNR# zORF(e8?*qhw+X@j^2x2+4ajfeYI?Y7e^j^dnQ3F!TtQLgYtF9s>M}1dpFiq+v}wVZ zE?fsl7yv$oV|7}zB_I^0b$;k|9#BeS4`a*8CqWjUy7n8sd&@Cr6T&B8q^YhN2`d*1 z(>{MOm7BwtV7&G*3UQ&*zVkMXzb&5KTb7BU#m9KeG!B4;vxjZYB@W)?jlY-Pou}>@ zzt^(@xA=fEPcO~(Af6xAuLBJ2h0FuS0dDZZkPBfwRb1M#Sm0Q8SyDhkZLugNg@wlg z4+Z||JyW4iv~}(`T>a)&BPMfwpY4U_vRl&qf#CFUz%Chw2=GTG@e`F7H2D69RqY7Q*}- z3^Cj?s<*PT6Y25AI<@(L=VgDzJ{UXn^L-{s+^kRC(RbQr68G9+ zwKHyzl<-TAx6UySJ^c`Y?0Pp#a{-L#I)=!}^%1;H%GpEi-(1E%Pe_B?7A$#vjTOB| zW|kcchXzwidb&Yf$1I7XlGjOdh5~NI?sZfkvQTQU)w}NbUsZ@a-zX>Io^ZX)@`x6k zVCP4L?0}MV-5qmAJqM|U*{7|n_Vun%&XF;-sDBXqW1q_N>|8KzMd7ygv>F%MN^ z=xJt9euev4e;j(BI!of^tz9J_J+H*Yr_4Jf)K+|+HA3M_QMuRXu8USoUS`r$z9sY! z{z(&6(eH0&{`u-N z=WU5ox&*^j_iU0$)x;jFJt&788tE8| zv=(wYKM&%;U-RwMWAh|KZymD>c_2DBrBT|{@&HRkeg7B}5R@R5bIe|n^=r z5+|C-@!NP(xw76;<=k_dn9Wo15cb#4WHKW77L~41bDM}JAHcC2T}Vm$Jh>)p(dm!v z*@BEiXMVx^xni-}Dp*k}VCRrbrOnC^c)BUm?lJXaKG>tdPTy5f9dAXsWj89PrL3a2 zuBD{(cfcS;o8Q9n>>XGhJ-qpCTL}o1q}Sv`|D!M*vjCt~AIQG;B!TUI4PyCV?KMwX zV4mBDq#c{h?KLv@7U}E7S*1u#5tP=r*bb*L6~NFJ3kExWT=dD!r49(K*4Kws9pxF( z%e%On=@$Op92V5;DZq6j8{Ew-1d^~Ti+>xY52XE`SWD>$b@M;IC25Hh++gECrG@pV zzDkVlGaOLAref&-e#oj4*R{I#o0B)FN;#pYvpSon^pv=whhCXKj(v#!#E4fV;O!M} z-UwqgXa9?*a$WpJ=`4tWw59Z^9ouc)9Ao$tGXOVzjNkYTI?fky>38h%TbHbgB<4ii zA6q)mifkF6Dh~cfxh6*&<4TN%%e3bIC=;SgdvMqXrTNL}Key*0b0LF8w+Os*_@Y|Y z^v0vwcUK@UQtgqb`OxY0z(DlDx^1Pm+WL1sEoIcH|3Cu<)JBzVD6FITg*POw0zO5D ze;J-V;~*hUI&d=B#T3k*CQAM>0ouLc{O9Q9)XrEkpnvx0ABp{O-iA2NVOxXR^(S1P z>T-WV(B&IKehO1C3ZbWVe)nBI&>B9=zl2PyM)^M9GA$eb&+276)oP@O>I7^5QBFiT zBKNfSofek&!2-ISZ+~1-o{ik0Rj?m=_>E`flT)OH$4uqs#AadghUb2XAq1PT!lkJ|J!$L5Pnu1Uh}se}6k=Nr-3M zJ5CW;hzk-c5lr7IQujO~cSnky=XK?%^%R?W>&um}D zmdT5ghm=S9FL!`)UbnbxJ!jV8DYX8U6hqN(+54a8i&9sd%j&!)Vq|E1Nf9l3O=w5O zLTW$|pE<#;CEZSSIk9H2T@Jhr+LE3%JkGt$sdY7@g8~Fo+)(ykb=5Yc!(reMBw&(l z>lVPIz0H%Sk^n%m+d_ zMFA8ErkkD8|2%$8YSe6#NfnoXyJexLD60k6RftsV`SyQfS2<#h-#PJ;)e+ceVFqh+ znP-*k2~)akoH*ECfB;%T7kT1~6BR~;+8bdkPA;z*h#8(i0*ZWi6lQq(@mH6ZX}5Wb zyRURXn?|}(NwfeNI8~m+WNbVTrZQFD0bJuTcRBH0K2sZ`7(WOUOk54+KQ`m$rsg{# zWmKfq+2%@D4@8;7(s8VfR#3tY3UjsGL|ffIRC16 z&lQ41+|w-T9Gnwn?EUwF^1=3G*< z0&KOZ^n#!e^xKJW5LOrjv2Y3xq70d}C-^xO{;}s0mum-llaV_@_;#K1H0AC;cEzC_ zeR=FE6ro=upN;Sq`GT`rUU^LDK6m5@JcUq!vk4J&4~0|-P@3~U4)UfCj&z*h8??s= zP2c^Ur31ie0L&(Zm*Vu9w^2n5k$a=$v?fkD!VF3g3|i>!+1P42vGeo)JTQ)@s)EHW zwEc&K99?5(#Hh*bgBG%JBUbNixJ3ugmmHUGd0Vx>s(yWaeSCb3#{=3)UL?v?fW~?+ zG5y7AfGHAcDgza46z#&IujpEZp0R5;o-+^6fS7sM7B4R^*VdF%6ilhw{W2$`bjA?% z>Tz#)&JMh;&d;-K;w$s{C}E0a_vYs2>Si<$bli?RB5ja-a>PPV@zV_rGAV9(I%1!w z6@K^5g3dp`W14;Lxb##-Cjw?zjC65{LF}sOLk}V@Tq~`y`KJJ%kN#X7tf}($6rPgm zx&bsBR9{nyCB;IE-K-n3G8)$%mx?bcavagNP2XMK&h32lcx6mS`s!z4j{zcrtzhE~ zQ=TT7lc7F%sR@GAE=ijxO3vs0nbkOp6m6R!74ThrjQsVi$N}H3HP70@Nc$Csx|94B zey8ab?e^6LjaR!;VJsB2w&Ie-EjGUO^eeZeGebPrtMB!$zd|GtFq<{tp?A6n$|XmV zj;^oa^gOXvzmaf1X3LY$gR_a(>)2zZ7W5x&3|4 zys8%RoZ!);o}l$&)gFpQVK*r)z(_jV2;|Ki^TTXhyRtk6JYtj&rB|Wi^Q(T2K5BLo!n8G z!srPl z^I-K86&Qj%m)9t@l9%cO6_1Agn%c3)wwjlX_t}cT+l^`scAIh)ry^(#&0nPE)7E!$ zEgwocn(}ZWtZ#lxfwB%`tnnc4NlwjK9_-=T+8WW;dt8t>=mSs0Z<;2)vwx)s8;tNg z0t*LT3H&SruEM{(PUlOvFjFOH-S|HhWNt@w;%UyoIy$`E`hW>3l7GE&{%8kZJJLa_ zuOEB2(Q{^m58Fi(;}9Igs?#ACl>@$R0c#Z!!jJlHU-QZ% zU(nx!cd8zmy|H&r(%Mxln7Va=YPZ8_k5E+3LdGaG3<}AYAqy{(oSSgQt0wKk=CWgl z}Tq><3XF zSNP(o!7QU%O{Tj{=2T#_@e9MCfTXFENY%DbHu+?wGOb(Z{VGlKIh_d}XO6%^xQRc0 zbDpV%uwmpHsNQp@rsHsvwoDC9>R*j}$~E*Z1zs~-RwQb;k%g^1SWjA*vbG*FuP^cY zxVDlMoPsJZoZ9*@Fy}Sb9XGtFdPKI!@tPC9ch*7Wf=DN7^hqDg2rY$LHhP~NUpmmf%PN@firnv7`9x1%@iTb{S5+hHYO3I`D;pH)m)5rzz{>0* z6FpsJuMx%XYOmN#k+gr{)rI84kBOX03UwGui2o$*={OiJFc3&uZPL)D!ZT;dIw%}_ zh3~XdPha!tCB-!H_bBUZ?3@3Cp_ zPntMuAi#F*VBfG=0+ryvk|6X+S@nIosl#MdzY3ISY zU;b(ha4@ZJe0-b?)KO_P#<4s#=DxEI7WT0MoitU|CJyo5_^&o+iaIc|@u`mSZ&CJC z=*f|XtNh4p4%23kzR5tpy_Y(PDxHQjB6i>Q3~Q^lB+H}y={iOIT{Ihm-RfR&CJNO` zfo@W7xfZIFdyAR;x(>Xb@sbI;l8jUGr4$@(Xf=-3+V+vy#Xx28QNO9+{w7zfXm37V zBYW<@pX%*5eWI%55(1Y4SWhyb@vF?oH!naoTd}bn!9p#5n&+e#R(!V{q|9b+WjR;4 zBV#w|X)!E1Sy%4pHo$(PsnZ5^WbSihdk3mNCShjQCNt}hZSSymhhd( z+J`ky32%RYx9pB?DjDu_opu#Gqqtf~{FR=D?A2^E5R$VwpXABweRW?AvWc3##pO7U+%r_v6n0ppXRRS%n#?vB$Bc4_)NU4AuIi&Wa-w$ z+FB@a797zq6=Cq=neQU*3Ew3n+~3Mhvr)VCC~EBig2!n@0VjIIDlGX`6N`>~|N88Q zwGyJ2!Q@W&pQ-oj18XADG3gqd0|>ymT#`&>4|5B)eQ_NBPnoSjv?PMjUo1C^>Ok>H zq(O%4%P$;6YOoHB-+yvBPDL>^XVpWuVI=L#6|~6P+o3bs!1a#l}5U`~puZ(SM<;f$vM*83Jcz&Y+R}4@76VF`n_Sk9u$@q!V zSnAcbQ9IaJ028a%ezT@lTUt4T46L5PS^Wuk;n42JJet@g9$wg+WZRM||92B-d1d`v zCyEa%kVHm4-+xuxCAyz`4I~s(KNXgDv90Polt9<0H+HM?ZBx2DyXYm&^>YP+qk)_N z=+?Fa#D4lqpN0#)yGurA%I!B4A@`*ali3wV(caor%Xee&>$HrEl~%QFRsNTaL3J+4z!>0?(PpcRCIXH3Ft|^y|%)M4i42)(WHloPOcX@d1wHrMw75(~6 z>L_OC+z;8-gHK7<hGRp*2_aZIjN?OS zH)K%h?eUqyjhTVNl(DutE`8v`gljz?nskzB;fbG}9;;brJbM;rkAtPP^6z)a196E; zUUz!i7Mdj(9`rL|Syisz0q^}f;P&_!d?y>@ntP{99!Puvg~{aYE;OTw%*1Hh;*G~# z6ntLWu6#J%NSroujv6&Q{XgMIcX$;X8y2}_1ZxA})>BRq^`?J3Uk%FY4;)=8R=TPH z1Mok+h0c$Vcfi$0ed6bb-hFnJgs?%SB6fteK+w{`$D^Utd?}{rkxtQ%%VX{ULRAk0 z5^bGJ6?$fw>3VeAp3@M4e$F+5ivsv6o2|ja2`J3|P5no+T>shiEVJ>Ajie__3}qOC zh_X-)xGx8nN(y)WxAO-feBJYOCNclo!<-qIDTrzL-J9l~jw=TGPprg3Qz-RVBeaxS z_~<2ha54Em{1 zW*k~^hcCKGKLu7=gRsn#$9xhP`a}4`(0}S0ToUP(pK6Z)FH{A!O1s?F+p>=4yWIWT-ZCxcIGxtqD0Z)!t?7Y$SR<@oWJyew_Y{tADF>%YG}} zOn@d;v}{fAGHkaHC=QWn!b8G^Ahs1eunzb+xaj=jHFo86luG~!L8|*cQX9F!lW3x}drANOv zzeWxsyr^mtIlIMuuh@yIVFVD)5Vhfa-UVZspRlSe+H*M;W2HS^$ zS~yX^YJhHoT^OsH-ZWkAMjDf7IxGW_)5~_L*G4eNmzxU`bQ8%_2TnF6^q<2<@hF+q z5%BWIUePJ>XYnTeO2B&Iqfum&Jz`y*0_9tQAC~CP`F_8PP?1KxH~AuhE{iHMb(r$$ zY}gcS3OYEH9bm-X8PGh@;VN?5grP9im%M2U%dAet+=YVs4U~_HZ%1BwetC@Uwaqhk zs+&0~{GPemq)@Le<9EXAUc3SNOLsiF%dwls8qZ##vIE>cdKMHD$VD97=DetSI#Xqt=U}Jj3kLvKmegeNZJwlCV<)^ z0F()XJFbL5AwB%!5!o>^<#Ex2qJ05P6083~XZpayet~TZH?!&)hn0J#5$wLN{ldAi z!ZYxsJbZ_HDJRXHr@Xgn;7oQBc-GspG0cufotVR&8us#XRO?5&BhtKaOcxW&aJh~+ z^Qb11p9PqEnFT@?#XLN<^Fog3+OAs}W%#fFmRY@Ss*#%;)$p;Jdyk6OTq7TxtED|eiw%3c+m$%aIqbv7Xbd5{QGCR!F`YD~0}?x#RkFHoE@#cJkx5rw58qCBc*$gFm=abg4_(=)5s!)gs}jI*z2n3w1qW*b zIqH_+)6fQSx_~^3Nlacw<~lSHzwwa@TvhWkU?2tDOg@N=0tm^C<}((?PBb-g?JoxY zu4RlZ8JcoXSCtTad?b>=kZBO$Y*Hp7anHLIP>%V6&Z&`p$Sb7FthD%d_xZ{?&P+?+ zpCr+!c>BgN?R?OhQ;jZNZhJ*YaJze0@zbSMl-nxc)-jDXe3Jst|09w4E0j#0!>MZT z5{NrZuyFzHDFAAbe{9$MG^s7ZP10NKIIY9E{u5`#H#A*hQbIHj7- z5<&(9y5ot?xd)pFhDEXX`qHh-YYpG2o)I4ADkA>kf|rjXEy6mNS~%CI0yQhk-Kc@q zr?G5dKas4m&LJGY>PXh3 zooD!ZLoHR8@N4nob?YT?#;$5+o{Jua@cM_fo8nI=hkJGfzTf(1MlYm-ID+-H&E-l`VB=uJyA(%E z4pMQvfte6OQg<_)e?qo*i&rZz;nsoIerSI(8zNf7>IvEHD^()ve$^-Ms_)EXm}asW zp=)I>gsI}#r5GqcU+6HB8|*5P2EF(u#kW_UNGO9gM<7ElQoGwDZPc&J)^tCu$Iv&= zazi;!vw%5KiZ3wJg0Q1b2&`TI{L|4nT?_grh$UhU`7BKaQ*0@>W1dxY7|B*wMpF#T zwVh4?xxNkS`vizoh~@(zUB$2J$-%Bvt$<|AG9r)eRGh_$3xK31#LHqtL=e_X!5CKG z6ieD7(horuV%@|C(P~fcSohv0-c=n@F5@>Ews=XMIJ7yokk93+D?V>?e?r}%NL0LR zaEBi>$719VS(>6?HV&k$KMK%-A>KaPRDg_Zs^I+uyp=eX9m+?!TQ-?)Q|VpGC7H(4 z!QQQz@V=$tU3nx)nxGLrVtzkD*rw{OQ+Ap=ky@<_hPd06p<39W3@S5|>7n+?Y2+ja zXsAPLpGbiXxhTI+zg~?zxIypoFq?G3X{+Ud#~8TXjNtRU`AiE%I2I*&IRzb?mfTNZ zr>(Su7(B51IAuUmZL*9hQpyK7@8q9epV-I0%{ViJ9yk(j%PC{n>WFkM9N=~ zGB&cm)JL-YZy5 zus#PstR3|Lk6GALPI<>_lMCxuoevqtzKdL)?_9fNh=DM2kwZg>m~9F*cu16-`}o)= zv7<~=@@&EBJC3V16dJ@fZ^$E~j3$BPCj4;zaRFjXt(D(451x`-KdwR_Hk%l|CFTw2Ok;$W{daIn-DSmDw}*Kn)R z0mJ~#pNjLs@%xKgt`cMAsHD(k4p=H(!S-3Ml?Iv?^{y@CD}Rhm%~#Wv{`=!mH1D3L zwJo#mzoEV^)c1dyb&nHC1w zN;W+JVQ8FxJcKDp5BSrByW7Z4iV+UKnF?eV6buhC)ScWr?dY!d<0sz`h_fdt$l_CL zY^o5@ewA|Yf{_0%I1md9L8#64FSGvp=Z`JwbBP77$$IU~3oL?icF)r@^2cK+p{f*5 zS}1?Q3*(OoF@sA6N6In|Oq~@BUOJy{$?{j9#ZDyWZ&<$j=@R4@(W0&3$+9^#g(l}> zixi3HAHupB+h7J{or0^QDM25oz8q#~AwU2tJ+f042V{cqiw^3edIQiT&>%DTwLWY1 zfdOUlT3~^)w}JZg%sGuz_qkb6UcpNhO5>t;Z&%bB7>H6MP@nRsY?x%*lFbOrOd$`F=!_WZx> zg}d1n?PhW=24%^;w|GLF0)(vt|ExnYpBwo-F}WPT`@MWWXry#x9`D(wB8zEANwE)V z;=<6aD-H%7r)v|QUd~AF9-+OZ2G;PvIxs*I!v4`p(-^O{aZ5%-A>-$%VA>TNv;24c zFP763n>66P`%T$VoPJZjA3u%RUu^=$;=HzR>cL45L6s&IAHmr7ty*B|x|p)%40^bx zYrsHc3HMr`kz^z$ymP`q7?_SfXXq3fmCqK5 zfkaLebyoW4^LcaY-9Xw&J-LgW>Wh76lb81i$*!PiKE>M$i@X0@%I!dh)d4FzEVa?@ zHc#_yTjBnpFse!I#&7kC>@Vq1!QFRDY=lLC+%)#8M*#m7@L#ufo?w2xnY75Bi_%Au z3RmTQIqg3P{Mn**(FpVtxlAPk$WfwTrDJ`s<QJ61omuLgxkb%?0hCU!Pi17dhzfbO$~P9HNarSMrHR>`Gq4ogNnY>vI-n!}HE6Pc4|;7tL2hfD zn%|+!H%efSC6__6F!6n_CZiVmEqg`ihy3>?=oA{%-fItyC{~0ov6(7_Ih=9H95{&6 zr}?uNtn$jx2m!z}s>|EOehLGH3|FS+13~Q@qV3F(Y_78nK%=|951Zv>RpU;m&Xao$ z!^+Nr9qMLEt0iCS>)W66HsQhrYGvkiUzNQ+EwPzgZ=iPj@K=r1tBlU&VNC*{tc-T& zq3oF(bl_l)6%H4?a)S|Gr28yTu3Q%)1qF6pwJzIxWOQ&lR(p)V6YY2RPYG<|maNbl2_<$SBRqzK(OlYyY`a%Da_nX%95#ymNr zSCOcelNfM4CEgb6b%bKVD;|*5eoL236N1Tf&aEc`iEFLeI+%^;_W^{9Uy!gVSHn}N zmxB|dTHexJCvO5~mT>OPW{%58Zko2$#)|sGy_=MrY22B%5JlK;wGSf^c*Vp|z0u`S z-G4Ets+qy~q?&KNy$1P)pNSyD90?t{{EJ^#yp0F4N480jmBpPM*cHzHgNeBv4_8nK z$UN(anDYqk9%P1P~I( zj21IHdJQm4WT9d<5GAp&dW#hkOYb zF@#6{nfWlY@$iME%#gQ#B%ak(*kqi*9FL@J{`Qo<=df9gitI_}3a>52qKixIZi1<0 zY^Q((eNMuZYUdLvzRCn=)ypHNn(foe>j2GIa^||;tN*zPpj-ScZ9{9y&G-H)rj^=K z!6dT8JAE&KXlCwXmAG_`g3IgO(%tx}f7s~LcAFxPiT`V3toy&(JMUn)-oNj!9wkT! z5{pELE)t?!Eh20XMDNiedS{~~Q4%GHvOXAS_lVdS?lu_kLf#_sl)>`^`Kv z&olGPJ@+5Ce~g_yd(PQ&&UJmR_vih70X5GAcW4^WKT}2-B>UVA`Fq#DSU#+B1BQXt z<@Yu3fb$OLUNpSw*Kl!k`2(aQ7F;uTfrx`3h@-%T1zKL2{9*}5eo^Nl`9{mR*>7KV z|Dm2v#5c~!7$$=lK6?bFz5R^@x+)NrGU%0Ry?px0$Je)A-N$?o3k^*J5?x=?Sk+RtbN1la^0wK1al6tGH%SFBIP!ntNv&n?|t3=FV@9@7vE>UiXFsHosVn? zDBATec-66ik7j%XClVizD)mT`?q^9#QU}K4v8t5$S3Z>B8t_LMnHSrofWBuw=bOr* zA}?5{jb%QnV-PwyI!i1jz3tvz=z}=JRW^k<+t$5ZO8k-64x{tJMATWztvHIvc2OqJ zhrFdJnx#`#;XH~zt~@p2!S2BxB6&a6g=(H67`SRR<~RECJ8V^X488*R1#r-EVP7lc zBUI}FRO9b}!cJnDe2B4)+dmbf9ut#e#i-psDZP5A?@B~Pl)}tD%)(+n+t-F(QBO!q zy73-oxVp-5{q)70Hcb_A?&(Fx*T;I1Pd zVLvttG4Ujoo55+cXFOP2KXCZvgkjmsZblgPS##qKjcl!);$bkr#~nT8fvP@@+tvEi z{9s$~i{&W!u?a5B>xtjf3ZVHbUNbq)fUgZmqfx8?2m<1|SElz6lXk)`a&y^L#J0D8 zCt+Y8*Xwsbu-m(n*dn2x@gMzq#-`F@GjdIs>#FJ*nLRTpxue)Gg<6!VGu0j#) zLv99~r?0nkPdV-$uVWUYW&l?3kGuGp!V&PYMF=cbZBe2#k!L!#n>|U5&ybo~PmB(C z4T@x}3hJvH<_eU)CbypaajeVZp^tuKZODy5i|?FnBlLL4t;&gsGS$0uY!l~12A*ko z^x7l_`#d;md=|anQB!BplAxAz@Ztej_k zY{880E08Q7V0OP8HzgvEJ>n)j2n*^9YUyk&S4-1Oxvn~*)MWDwb+mxCOYi*b)qX>% z&O_|O(A&P2G+G*SM-jB%uTCj4Y!Fq3u|b~h+mim0%xF3}tZBVQr8J>KzR@sO1ha3u z+g+o+yUCYM<8hozY4Q_zUKN414qtJL!KgB@=I*sG8!%2?QKK9oBKZ*6yY51h$2%!& z)iR@k9_LHQ^!_G6S8v^5ecpHty1ZfL};CGNazy1~_cYOgpvQn~9W$WgO6 zT;(^R|>oE~1p?hV|?3N!uV#t8$njwglwl&lL4q z7~YnHaqWqGSWml@BE;+JWMYShaQ7OpF4aSmuuI z&#~OzRS|}FhGq4T9qRUR~+xZGn8-Wa(ctNhUZ~bNLVdG)llNQhBwsth5Jh zM)Z?TjI3a8{NzQ;=U$SnuroLDo5jB!*Ih+?`Rr3HYf~kRW^F2 z;*{(+P~0i3x;;xVmJ$)>xNa0u^vgZnZKxhmiuur*$dC*BXv_WcrP?PY&|(2(93kAK z&rPop5$el2C+cB`&#E$CU3BDm;UnxI_~1vHYV*+C=`=fVLSEHGT7urOb>=mj3heKM z{JfV0T2+s4rtP11l0t?y^Y*W*-8zLefU9qikE>4=(p zwM~SJgLsS)DrHE-F3x4tp`vdCX49&W@-=G~yCYd4rRsmT>f{u7aLFwNa<5;6u0*D{ zJV0c|-2ha8E-TI9y;VAAL&vZ8@47s?u4XdB1uHR^=3S?X*I20zkvN>xtXJqzPvL90 zXGeZ-y#G6o$j*%+Q#&RB^qLKe$3c2#@6*+g&-X&2-!}Sa(>@my|B=QY)>HE|NdMQw z&O)ZyRp05I^H@Ekn43`}I_y9rB&6)q7fG&AIb@N!{Bk6&rC0z>30gWziB-zKX41i& z4UevegJ8l!{rvZ(Q(3e4`2@gd29ntmne`w#Ys|=dTlG zsIsZaj+`$d5dTX-r|@~HD%(+XttOc*%lws)M7USqzl{@zJ5_j-`Z>@Q~y8FjR z5}v$gU)H{Xl2xfxLqb1^DjpleBcq2bQyv@n8op@BKl}ae%t&oK)zO>JfnAkxE%Sfu z_MtViD{ypajsH9GLErAu(gOG^pP=l`NN9atk63hR_w7}pOl8XF;qIhoEPSiP*2Q+A zt&#_w)-XjIPgid4lzFGF@Fj4!FV#q17_g$H^5by|{IeF;QN4V;(H{Oa`oPt?Fl^-~ zvXc^M>pG4`=Rnut`^%y%1|-Mz)^A?hTR&(0%5(FvrJf6AXX#xF|At6!oSu57trbsh zX>bWgzfcSTInVYjV4UW(n||^ksAYJ_y>NIEROi9L=Y>&mTK>H=xF?m{rK!%KDPO^; z6CtGH*s!^J0y>pf$>IJ%*?-K16WO-AVP=Lf_n%%c#r$XJl2(|0ed6B{moEYVM}TA@ z8nYKF@*}Mp-l1)_XrODZ_N|A95Uw2FeCyyEF9y?f$g1qn;qN=Q?n5RYe8E{{NSz)S zq2u(%C;e2mNBn1-r$tD@JzaAa6$aZx=RZ+VM?N)^m;LN}zd2MirM3ilxZ{J=HQbkV z{4Rw_SM%IWbCP^=q#eb2L4{=s^CRWDZ-A0eu3W6vk*)FVFAc}CrpxwfVYtW#R$a7C z)EVqJ;MBFhfl|N_rSbCKm7zdI8U#oBc<0tlnWqDTLlaioFDhPd-oY)0kq?o-oYvWB zo~sWKjri2)74XZsbNlh{ilS94PGflQ%y0M&)Q(dT6sS2ih{3q#-tSXAJyZvjwO+3r z@y$){U?1*3ie)Bame1&SmiDw`0wwAoytcF>kV;(7?CBKCt=CWrXu@-K%hM7K zjct>ZqSn${FXP#2v#U!x35@buS_4yj5$2esu)J$j3h|c9MY>ASPM8IUik)d~#~-7W zjweSFyDDBFe;^|@4IKNgN$6K+oDN6COH5~eC#`TujD?)}ZHOs!ifRP}2H+2U&AR!b zr}Rb~Jd~AUA*`3hHb-l>W~zBrw}(A8bCo%p1L~_Au!(v8;N(UoJbD2*R_5FyTM(*w zsIHu2p?Iezo;JDIp1IbIKSSOT#RO{VvByX0hE1fARzR9jpR{`NlT+}WUA*Ev&&q(Y z#%cOgKfN=l;_ucY5GX}i!neFur8uuodt*=xeH+&MZsJ=JRTB@JQj;pH0S|cM#g!e%ZS9y$t%0U=!BrV1sb7V>N|GR$RBQ7>t0fV)UjOB} zI&Mt)FYz{uGql*kj0-ziuyv(fpMRFM`#TU>*_VV~Xzg7#fHyp9#@B?uG$~|#t&g`U zj#?7aQue4A#X5Nkd@3XWy|YaO<&0H^E;Le+dpC`9SE47^Pi3I(5XFlHi8t>)b=tLq z6R~=Kby}aDqSf#{4;KZ#P`NF#BRv}YQ7P}nyXVcf_*3l|&W8@6@y|&^te~xhJ#AZ^ z3^8i1q>5}tw|%c32aSi%FVn326q5R_n3bg^-74Db?POeL4a0Vp6{^lx{&@3UlQKl3 zPt;|(DiF?@KgWutxrz#fx24?m^snMLIXnMHehhQWzuVCHts=9^X4i8-$n{?CnSF+i zE|UEu;8--#VpLopR4fwR<%FC~cj4aF&G`Js=HN)@#d4}iu@2hTf|UPbQYbYalf0w3 zcl`6?i-9=?S_>BCaWrBGyrGCB-K8)u4@gzj`#!KG@AFw_(vA1lYe>s>R@@(&1Z@&d zyB25sPxu4V{aN2GUNt>v*6R+-3KlOk&_+95bS#>vho#Mow)u45(&$I8IaI{_K+*dL zCRiHDEl)+3w@Tfeyb)litt{2)*;^U6-W-UXJiQtp)oUBE*5|tNmQhc)RlO-8k~wLX zSM7NcuO|%P=<@P1I>PswCT?h@F*=~5x1C8XFJC@6GuDdhH!8Q|s?i%^j~#N+Lz>8Y z@uxSdl&w~;d7SL*{FvTYraJmXN^F#vWhiMh+*P`NAsi}&+a%G+BY<^!m-SFs>or2P z6#RP+4i3Pv61+B70W)Y`P6+Id1ud|jZu8}|wChcDAYR)7f?gr5LKd&zlOnw0MVd2x z;{m8RS$cLu@v!a3u+2J1OQDn3&Eg0)!?`{eQt=PgiCJ6*zxt(_Kyn_q%bO~ztQE9^ z9fnu+m7_EA^5{LE6aV#y_-AeV ziNC!hO(b>Zm?21@dAiFFvt6=Q+r6sUIM!=nb9@q+pmX~+tc`tPAM)T>#!J%ANu2UZ z5VgUCqOPu`o^i3x`U8bGhfu%*fMQ(G9i4l|KRKu!!cL-T9!?`a7T-SyA&(xDY#a+v zsM#0a4mtbjAbx5Dj?aP5441>!NJmmsgrsryxaRz3xm!thaE<>?%QDWJ`4=nS1*L*| zZ`{Uk z*0_I=rv&Cwdpuw+9h&meO5J!f_L^Pk`nbo!E}b*hF{y3VJ_yInBgLxeCjAMdmZvNKBu$AQ#tFx*+mNg=1^gm09-TU^eKdZAArUKy* z$T{zX-vUCZwLY(r#+b@;6X*!X5mTgzP(x-BUU+%m^UoNIYPU#x_WW0$rkch@KAQNCd=FV;UZ+MH=pOh1l9M&F?Xy|{Cnba<7>z|}MTDz-ztkv(;7pctiOuA!sPgpD_Aw94V*zU}SR4(t1cJ9yX_T%90H^`_7 z=Vb~i{i-zf{8-&n3mjpDmi3%A#GcsnZ(q$9rZI@sbkSDvhDnsvS1VL?d=2{bdofW9U!wqDs-j(g>;W z`@e;*`ihOARR(rdlnAf{jr!3-Dwf#glY0AcU?*IRwH(F9(3M{X(qh=el2wcSkCjJ^ z^Ek;+CEvCEDXt7fb9xNyA;6;_nwG{n6`STCD;h!dp}9sA4@vTV@7gYaye2oBte$+U zsr$3=D&uHoKEL0_cbY@#VPX6yLd2%afo9v+ba~L`XlPAxu8pm29~oZ(at?>&G*c(u z`#q};l-;mioLaEG5?r03j(8uP=yf6?)Vp`vJo|2s@!K*p#*< z4+bBfZHq>Pr9J0A@FuIXgJO13+Y7wd5pDMd+UY=vNhwF$S|kv-eWyWhT!AE)8VA3j zu!T7$lO_y&R2#E%^lY+O2}IfxvuvQ4K~uXW&1{Bb=;ecoj!6)Wumo7b{M~Yxrm^Cue+&ew<~yM@LR}6uF^RoJ(_-O-{PgW@b3Wln3vwMrf7(W!q?bvQgu5A4<_+ zB5a=hPH`)m`R05T0R2wUR5ABCZnO(=(gygjA4$AeNXzs!m>9VwNkE zxUXU2Kq!I85q>`t%YGE#J1wFj$dM}pE~#o;qyY0nG|Oc8%M0ueHKPx=;`$O;)0=&* zF}UmjKz!;=EmeCEA?@T}byvy(Sywop`A5+!D2yO}^Q_Ds?m=cQ*|iwYt|X`0RW?J4 zF}->A$D!TLO#o%Ls0pJ{78F}-mA_Lz_<^7i!EsD|Cjk=EmDxU0o!{;gBYT4^eQaSN z+vj2N{R01+SBA!40r4|*m!7%I#gnm6cG&&N(jb#J?b++DF|{KL6z?1C<9vS_@V?vS z8t>miN9?GNo7BFo%ZmsllJ2G(DC$~FUNaC(*}lWs-)Te1y5&#cR^4#3E?ENcde7+& zbH-O_)>CEc*z1U-lkNy?BxW9T9}wb4T*ZMWgS6iLA5Nk7TNVX%>A)UL#~+`AAd!4Y zY&z|`8%JGzrK6&>t55Nwwmo}7q9mW?8g}G$w}fIVr9H+KXs~OxjK{O7L))?bkBr;(M{YrJsNqd#WkAf7gws+ z)0F*U6IJ6pijI_v%TFg+(T&~GLl-?kIrkbuH--21_zo7MI0v#fFGsW*=1(5GSucng8AX8Ml|EkCSdx`viR&M`4zjL#J zGZb{qYGUvpkml3-p=pvm)5#PN2m|r|jR)a>0GmJfqD}&DCKF(`(e}gcyN=OpADU_|9D_S1Ps>lE$I3&n5?!Bu()VI%H^|3m`L>kqN)kv+xEkpyo}43vaki7lE?ON}eq6+Q(KeM9 zK}*l2+ZqGPbe|!BA=EPtotxP3G{6T5)Nc^*)j+_8&DEN;K^IyT<0>5k|3rU$cyfI^ zHs@xYa#r<2zQNZk4tV0_F`wJrZ%Tz7?v1rD##%m1y=W~JO_Hd^C8507qqnpq?*WQD( z%h?-AOtxf8n4et~tQ>z64#0Mr-3u0OMj}gVG9P71&P69OFp2u$%4?Z(EyUjLftxDf zkzSrJx^oXv-qj$M(z5`H3i3MW-Vp7q zun>Yhx1)F?=Ib|3>cQOiq)R-dhgPq{2ySN}mPUQ=C&2j^vV!$@Kg$B6hT;vQhiH+j zr)C0=mNuFnzCZ$$Gx7uIE;>{|NqVkj?80|Vc(OK55-4vezTc^xGWTK4`>xq3+!*-Wf;ksrS1Zq{F6wK86S@-ETx(%$;F#>?Qf9 z48VpYs;EEhRe&d;7$87asgD{A6RQupdHUv!tuf{&QQR% z1$^PM7H31P8$8Qpm4eh{00Oz}j(=*OBf_mR(AYwiGtgnZ97Gy!RA`oI@%HV1mf8QK d2bM$sg>xBbrq;XP;2)4cloV7S7s;8v{|^bpLy`ah literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_legacy_v1_2_0/00003.png b/tests/snapshots/stax/test_register_wallet_accept_legacy_v1_2_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..055f6df699b5bae25afd4a4147c1bba29f5fd790 GIT binary patch literal 8612 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_sh_wit_0_0/00000.png b/tests/snapshots/stax/test_register_wallet_accept_sh_wit_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..13cf02337ab90d008764fe6854faae07bccbed42 GIT binary patch literal 8281 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 USSA5~8IW;xxq7kYX9({90mxhknE(I) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_sh_wit_0_0/00001.png b/tests/snapshots/stax/test_register_wallet_accept_sh_wit_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..6fedf31ccbd0876e4711a7ae80eb19fe98d77959 GIT binary patch literal 12760 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_sh_wit_0_0/00002.png b/tests/snapshots/stax/test_register_wallet_accept_sh_wit_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..345ce91d486eaaf55587eb20e73e4d09e8df61d6 GIT binary patch literal 8552 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_sh_wit_1_0/00001.png b/tests/snapshots/stax/test_register_wallet_accept_sh_wit_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..cb160543583a1029b4dd2cd587f898b7d4a09097 GIT binary patch literal 7788 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%0A{%Bo-kM;?c8+k{&oZA7~F} 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_sh_wit_1_0/00003.png b/tests/snapshots/stax/test_register_wallet_accept_sh_wit_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..055f6df699b5bae25afd4a4147c1bba29f5fd790 GIT binary patch literal 8612 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_sh_wit_2_0/00000.png b/tests/snapshots/stax/test_register_wallet_accept_sh_wit_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..825d883019398a25398a5d20073d8ef1830a6164 GIT binary patch literal 8264 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_sh_wit_2_0/00001.png b/tests/snapshots/stax/test_register_wallet_accept_sh_wit_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0dcdcce99fd958a41c5f50ce84ea4d2c0bd37529 GIT binary patch literal 7579 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_sh_wit_2_0/00002.png b/tests/snapshots/stax/test_register_wallet_accept_sh_wit_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..c7c4ec3a5b95b74e2e7fce0343117d0ba4b0c5f6 GIT binary patch literal 27253 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_sh_wit_2_0/00003.png b/tests/snapshots/stax/test_register_wallet_accept_sh_wit_2_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..055f6df699b5bae25afd4a4147c1bba29f5fd790 GIT binary patch literal 8612 zcmeI2`#;nF|NrMuBsugdDTj0>LXM*$m4xCIjXBP8$~iG(3{kuyL^&3UkkiazWX=>7 zGa2SQhq9O%jX8|@K6`(@@5|-;4}8Dx?+@=?E|1Ie`F!ko-u-^N-|yG^p8aiZd`Reo z5C{Z1WOD0P+83wgtsWQ3NQjz=MW%a%PhIq;re ziN~z%Fz$aAZ}}B?%%Tpz=g&J?Lusnn6q1XW2+1*ESJfF_|GQEc{Gw9hPK?|`&@^M0 zT4n9T}eTE~}VAZ=)JeFRRJw!|&jP5RZ-!mU7x ztmn>m6+sChA-E4mqY5EfutA}=Xjw@muYJz8$wCr%Ufjnx{scRokS7KS2D9`Lk|`sry^Nxk^0!(>pN8RzeB^TxLky8&d#@ zIQ^yihccqTwkZgtW(4M^$d@r+wVwjhbs_XgJtYd{ms(8&3OXH3xY+MvPv($_`} zz*8<6KrJdjz3e4to;Dx;gHe+I9shj?|F(fhr)J(46o_M&x^Ga`wAwJ5eqcY{JlpL(eTH#kUle`PsPXG5JNV-3aR3v+9+u#|r}c*wff z)#ngWjZ#mw&s!@Oe!~}M4~%x4mG10-Aszke#~Hz4x;e|`X>(xPbWCIten z=ukmx%GcR~R`DBWV84LF*qmMReto3lNfCiy(aTZJ@5W~yhI|d7g+K&*|ZRLzv_&rm{N(z0w)WR6)NC}YMh2KfW zK}hP3>Mqz-37tcNW$i;JR`PZu3_L^C{e+^g<{9{B7{R@|s@P(5LhfZAJeEG`htkh0 zo)Ry+ftv;=SyAw#F;XR%6wxrz@2sYL`QH%juzzYu*LztL5z^sm(fhiy^qU?@(;k8y zl#fw2ILa13LUVU#oE<5qC7~RYZMwJ;*g^DQ(%c|&cXwBhvy4{Nd^AH|&~Ryqwk%aL zQ_kHdLg>sQsE_oA$~UW+ASBImsM9;mZ3}PGItgM*U{qZj*Y$6*O~dxq)+i%5Ck{Ic z&K)biQWlStgJr6Zw+-tP-k*U&q3Lepj5?N`O@OpTHdjArJMqy6dn4ny21($2GZ6KcSsBTkKlp$DqNrJ176YjeTwm?ceMpD)a1F3t3!`FEm3{!fse5#!N0f*Mf-cWjo`W& zvpSW5>@cpH;_zef;o_RTQX)=HFgD|P{s)$-l^8#R^=Ofhs~eajE+L7)=oY@B6I{&6 zQu=4EDIDz%knY~rRV^~cWWClsnlN)z8nBvxXgSHh$|wDbU;X~03Xe^owK3cDtOy=lc!yY>_LVY1muj8h7c3nPLF$?#6GPtO8 zx9umdFCW*H7J142RI5I_a$KL^#ye^bY@SO4UeSQ#T3#t-Z_2M8Z64DQ62paa{%PU% zXxpX}Kb8+Id0%sO1IGe)B#nW24Qyf90?`CR_Qb|+MC+Fc#kiTHN=t`l4Lq~W7o(47 z(n-ec`6Z^}#D-+YR}pN4HFTY4?#RejG8*ux)ygZYb zGtDj^nD>)37#kcT?%y?-OyP&%*r&1i^13S6{%-8Jdrek=Qh74q4LzKb0^S|Ur?~Gf zl#?3$q0nNoXZ`r4M`04B!T>TMI6yG)iL z|MFRAeTml1Iq#@=6P{!XpUp8x?C(4Gsrfgg)j>Hlm!6<8QoJr-xCTu-r28~XObK-V zq458wS;C)aCHbhqVUZ9l-OYj&zG`r!KA=X2j-*zH_X{eLSaYi%smu+|?rKPH_3c&| zmAnwNy}do=qxHxACLz|KkT&K5@D-tn1`*Q_({LA(nWhY5(`4=RK1=0BTG^1ZD}ca z!IfJtu2T5Q^4roEoQk>>u)n52S!pTJ-G#Z)fGrc<4~4pki0UK->gFsG%*ks;-rJ%z zbQ;*)HXTdXlDI{_$L#nNursJ>F9Y0@;?%iX>f)atcoZgQa+tH>CEcxJONy0`U)v7J z-B?8OO!at)5||rdH5VlL+qc5~M4=t3O7R^U^bm+X@+i;k+CIk)AgCkcC`bYJx&!4- zs%!mtRv1!tMGIa*w?p-_Ak+;#65RnzV)gvIFQHzaDHS94fWHJ&r#{A5Tqmt5zb9cOxfNh1dPTn1VTQA~bt- z5XGHF_fU`(uLd?2uYA**4}~W~mk*D{o$U%2eBgAog^5z`-?+(`AU93=%@0+g)UQy5 z4aG)K3i0=+J%u`P&1#9ps?>9W(bY-}REq6@(qBg38PsNXBGR$hl{TYJK_=vHBEz)S znmxAbrkZ^9!&NBA@r}jtRJ*%Ja@@ZAA7>SIr93%qvHOL1l;4nMoaK_cF$AM2zuSG? z#MCZk>}2RfxB~GJNLC^o>s!B*NXeMYCf~-%VC5HXS+b*g9e(xX)&YT_h=@`Hn;`=v z%|g-q7ZNk8qK=TcUA+XSrk>pRr> zZ`HRAH2J6jy)5PNi^eeb6(7;t^HpKR$xqYVY>yb7@lAwd=AE`TaCAa|H2u6*EQnpX zn=c=quiEOYM^fZgpWLH}r*l`+EDgng9Omq^Aohc zuN9=Zh3e-q44)h)Pc{%42)wNKuW?42e|XYm)ef)l`vvtewt*BR(YxILiRMBHWvM+y zzYX2&)KgunZNn+ZyiDSFm8-(oPuk9!EQiW-^!mBN->06@z2nIE*E&16)(F#0Z`>Lt z4s~)2rP4DHaRp!II@QVe6jUuLQx|!gQ^rns$kx&>qhOP_zQ3{zKEGY}V?|d(UL7hSUpM>-GA~D-e0@2Z`Byu<^4usvV_&2s~5W%KC((zb*C@reX3Tv zBg7n?ch9*Z>awmU?#q5Ydzs$vF<=F!;C0x8+6hBGg)Ig5Tyjwh*0SYc=KghX35@Y_ zn&rIF=vMRg)Y+F)J64IIL;BlkdJ*(d|D~|HhG$=XKHB1Prx?K)f$6wWnFaf}%NEr4 z#Z%n&bx%oOc07`sYmcdT1MTaqhRbg}hc9tNnvOt7WV05M_b(Zzk7w$qn!=ENEI=kE z&e52V^D;{6tv)}_R;K_Syu4E8Jy7FpFz8;hh1}|+CNWo<490YgVe?sG^Ttig@TzRQ zmk%pne#~b6L#e67nGqkYml2PfS)4r=xR0VVLMLgC6X7zvsjBX6tDuQ=$AvC5vFMzw zo3g6e9?q|g?;bHqNgDk5==)zS>ltfIJNp`3&}TYX0nq!toLGAv0gV^cZ|w?z%wj(LGnCr}xpH z$bv8-&!Nzv>UOW&9J`ei8~2>XC+uf7ah-@wJdleKdD#dN4pLn;a;zy-pPk`UeA(Ut z&SwqZMeZ~g`2}Khzi$@sy9^_yW_EZIYs51!E1I?*IB9wf0z~C6H3v~q^W3_$7ufE1&!3!QVc+VmaLD^iK zd8pdz*}&^y?^0a;y}WBZvX@a)-_U@&(RhBIeBEP$d6bieoAg^(G=^);hCu2lUgB(x zGImxh+WXhRknrDPJ~`dETGp0NpFSY$duo)%{S5e~NosAfObC$jrbO`l2<5J?ALV}x zD6mx^D}sfI+{AtH_>D0TzOEt2G;VbV2=uIZiqsA+5XI)%@(RQE{8xQYfSoRq0hQu z4cr19Q9J5@_`=g>!6MPq;*k$%6yi^?IjvCMpxX;|An~lpx9X)PZkGN_F1lGHQn`Rs z=da>o{s|tENHKz|zYU}pdXCkv&-(`IiI(j~Set$hmY2TG`7M*PZ78do zJ^Z?i)%iqKI1*EVowCU;$_uRhxXMEw%(B{kqJk0svPvs5d<~pt(u{dvF_NyB)CXtE z&M(>pNE@6+Y`@5wIyL>-J=_`>RTz%JEJUt|po`X-hk31_P&}0hWEUG842_p9kkZ>4 zc0PKahMR2>Eh)#mxa(;uoiI%9UfbJlA@z-^SD6V0J#a{xy!SQ9#zjOgH%eTh|6Rb$ z)}l&a0+TbixFw0;XbD$rPnT%8DnP0l=AahS+~8#=j}Xf0zGRTlkZglL0Si zMjwrWHca|eIz2rwr3X7A6!M|Veu>CgFKW-XYBS5Mp9)K-Gop=3qfl?D&zR{I+CmZ~ zyi>$RH~OW2&9e1J(E+$yN98_WaiyoR00=AB=S{7vJdQ}Ycoln01n;EUk#F55)bt~9 zX9*y+&YHPfY-tbJzDU2M*w77K0==2q!Z6W*_XUG0WXAsVZxOl$pnGN;u4_Cg1|@@mf*yIPNWk%>~~HbWXP{MeE`a}nf)Xh0juOVN!RI5-3A$foDOL?jXlp>XZ zCcA|*-3vR5Z5h(t0gk9?#Hy=V7ox-kmQW$K?2;?~C;9E)^J5;3MSN&|b@rL%H>J?V z$#2y@Yi?5=0n(h7$Y!VUO0mMht?)Xyft#(?&FEa(dNaX+q6znMtzAVc$4BeUqEyut zFY$XrqviT7fN-BQl*HPafDQP)kdf=`>u!2V*3iUP!%yYXfXJ|Q(W|`Jw*2y~=lNg4 z4+a)ER>gvoGDZlQmCTZ?c;|}v<8?Rg{s1RgeuEe?`0UwaAXL#p5t3tiYN!T}8I3!0 z;JTLxwR=aN0-F7<_cuE=K>D>nmCY0+S`V$J__7EnD6sS~(eZltb6Vz+mpuI5dP@+X z)biKxpX(CI*mbXKeg8^Lr+=u?VYOz6muEIv zGU@xH@v`%Gyjyjy_y=uw&IB54a`><(n>%(g zW(J`?slgk02v7B>3A`LwqJ+l=V%fn&*sp(TN-#Z>2eK z-$KxUF+N%jEG^PU)dH$WJ5Ty+gU0|>Q~VCD9o%YR2oJyiYPv!4DJ?bK_=22d%k?O^ za4Sepg`?Y$j(Uxz)G1W-55IbP+2YmHr}nkm9Z-Kya8PET%BK9uyOo0`W0_ zE_xou(7bGLtw0H211f+)TDMJ|9Hcr%mXwyJc=M)!f3@&p{!%y;_~DAlVNB0o`saMY zoq-f4)8YUTbs4qL#9Yz76o1X4;@4Mu%Y6e~D>Z0bFcdEh68rZXOx zv4(w_lVlEZpLxJ^bocba@u!vM6tGJ z0KAWsEA*D=^wHm~>y6onv&v}wb2@=RQNI$Sg7Sd*@YAp3Yt$a{#F`wmPz%S$j;_(3 z-EKnvWp;EvxN%kC6c<3dn9ykD1N5EYpVB3GZEi}~zyDk|2krcHTe7Wx(uVw#lxw{f;R1*b7&)aiK1SUNt{zn%%R)4&$JDz&9a z38EM*QYaL&mMc+VO%Holzdb7u#)AT!ICYp+I1%w-->p@VGtcWc)#0uOLp+!-E;24f z7p7dAo@}xxt<@GvzgZWBTJb9xm{NvikHTIZ3@O@JdbL{Au6E*eas*EgnsrUHDGYbQ z)z<;kGs_$Cf3M}Y2>`@&w@Rl&pv}pXe}E;>i2$`RN6zuf?QiG(kBzQ8n@Ujb#Xocf z03=*E1z8}EW?Y;ETnR#w0YsXzv1?N)BAeihi6>xDjX4qi<05g_C1Xuen_MfFGiX~8 zttjaWg1pgq^wQyoClFF(M8p_=z`U3o+=%&okw;yue4Xr4M!?E+-v!d#aQ!@>r?3?+ z()qWFOP5016_<>MyCQKhB~aURQw2;TlheX%#D;;TrMq=<%mFQ}Jb`qiyEtL#b**F8 zP$?(v5fe*>0 zgop*MD8}bkE5*p+GMGC_6gs{tlTI*6eQrCzYU)xPF25?q|FT}>{VAB@vF@q}1I5Da zbe%jB04^Mj0t-g%eQM_J3zP-Uet#cUlj|ZdQ%Eto` zi0L+FiqjWrx6`r8>RO({<;&;G3q`-JvhWZ&l@;((CZ$@5n961_q#P;ulfx6soQS#f zo3Xb|^hi=phs!=0ZltLP-ng&|sSH?Kv;jyH2aS-dGYAIg;$A`3-h<@HHG^JZ;jkSy z>!n8xzxddj8vNcrBX&RdU3H|`raLMh+clioO;la?q2L0(^uG74AJOuqD;odEUFoHpEp6!bJj>j&7x*v;Ypcm{mC6pL*Q> zQ17+Oc7FP!290PSe^@hEYk8;tcOg@4{lN+A=T?EkB-dX-x-!Ye9J4=-I(v1|sb0CE zdhlM-{Y64cpa8L#*SEZDA!v-b;SQt0;%ZNr=_b{T`UE%T6dp4p5AHaaq-xBU z+;;;SI+B?U*jI~JW{RpZ7d|gJC+02qSvdKwK$z&}#m`tu8RkX8D2(2vJX3rt^+&kA z_Dv|d7HB2S1!JBnUE$BAU3vsDGccz$JaI2~P4~%r^9yW##K`DwCeq5Z(9_FQ*MI8x z`%P1F?QV7(VWHq|E^QaR%7^Lq>McCxo{7fC3RLXpKlPt1t@ijlA?uL*PNsO7jXuG>;M1& literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_0_0/00000.png b/tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..13cf02337ab90d008764fe6854faae07bccbed42 GIT binary patch literal 8281 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 USSA5~8IW;xxq7kYX9({90mxhknE(I) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_0_0/00001.png b/tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5d2dd0714abb7b47c9f39cbed5cc079a162926de GIT binary patch literal 12343 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_0_0/00002.png b/tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..345ce91d486eaaf55587eb20e73e4d09e8df61d6 GIT binary patch literal 8552 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_1_0/00001.png b/tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..cb160543583a1029b4dd2cd587f898b7d4a09097 GIT binary patch literal 7788 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%0A8FhTe;@DZ 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_2_0/00000.png b/tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..825d883019398a25398a5d20073d8ef1830a6164 GIT binary patch literal 8264 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_2_0/00001.png b/tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0dcdcce99fd958a41c5f50ce84ea4d2c0bd37529 GIT binary patch literal 7579 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_2_0/00002.png b/tests/snapshots/stax/test_register_wallet_accept_sh_wit_v1_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..3659f40e13df6aaa98b0c17ed0b53b65caa68d65 GIT binary patch literal 27487 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 z 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_wit_0_0/00000.png b/tests/snapshots/stax/test_register_wallet_accept_wit_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..13cf02337ab90d008764fe6854faae07bccbed42 GIT binary patch literal 8281 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 USSA5~8IW;xxq7kYX9({90mxhknE(I) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_wit_0_0/00001.png b/tests/snapshots/stax/test_register_wallet_accept_wit_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1d6d1024af528c1bb4d57cbeec98e49d8bc2afab GIT binary patch literal 13000 zcmeHuXH-*L`zN3j3*c20L5d0jN~nT#@QQ$;7wH600gXuL1PDbe@QOmDBN31mq$47M zgaB8r28h&9gcQUOT1-L@Rp)sBGi%M4`7&$Pyzi_v;R`F-=VYIK_IaLP%QJgh3*p0( zhk1B-guyqiJM!@GzU1NIdn3dLyrXZ|Uct`Gv>w@Ti|k;_o`jcjTeO!Bae!g+M$3$J}_noNeUE|I?RO{c#tcufV@?z)Gj9 zcvq%L;?H)h5QoWRDlfBVLZUsuUwYT}#>~_oOa4!Dej~~hn1M+i9I|-~w(tJ;&imiF zc6-57pIF>orPNhJBwg3g#zBmfp!HBT_`9SFWWw3GZh~2IXsV^I8hAlX#Jhskt+E<} zJgdxkyPnJ~bp!9#Ghdw&`35hz(3mOztYfztHqsIVnXn-pR2b?+1=F(oN7 z^QFJJO656s;^Uhh()lv;q6AgNPe7-#1XK`41}0UBEHITW-q zYJhK7buyp+QvrIx>ScaSbzcqRLlDlpfr(A0y9L-~UJt0`J<{Ike&5YO>{IA#|5w*P z!!Spzt4dtN%yRvAcEZ}Sr(U{RWqOfPQGcg3^Xj0|T(UQJ<1w;9IBH7}3SBi@WxyB< z$3qSR=zn(Cd_`e$&^3t=m-fjp`swMgz}0>Pg?;` zU=?T?Y*fFwBz#6B8v16VV@$YKHy!U#wL0Bp?|d$1l!0ftP&=-v@(Z<{<|Wzd2lvxX$P*%v?Rru*0T5-$@pc?}6al1`cp z2fTMz%^OkwvPMC;HjIKhg$wDZ>$(0^O&;|biKLTy!rd^RoN{MQeian@c>R8`_(Se` zIhj}vy`;#Sa><5z7S(>l>+ld+em3?&*OPgwC~#%E>4?D{v*`_xHlgBQu;7B-Sdvys z_n+o>Y<8dVpf}1DN?s0tIG;+Da*6(s2_nNWS-d$&`2bphbJnNMMe{9nx3;J10AIAH z9iIO7XdSZO@V(o8K^$n3U~WwRgWb7S)P^X zMQ+hd_rz6l}*#O^g2 zdYn%!-7Qir5jC~Wd?I-LKyW39*f9Cv3aX^rnAk*L(cM;DI`MGTu=7ro3M=6KtM&&x zGFq;}HPC{=!NIO9d&c6jnZu7L+^fFjmg;JKDUo4r_;DYIRM!i4K41_MDax%{2WOT; zB?+M0%Wx1$xPw{4DW#GY%U_xK@}9o)UEvnF zW#sF#QYCQaRZlf=CKZNp14Y!AD)A8?kX^#mZAc)ZOx$by`kO_*=cUnmufNTNyezut z9*`*?D{!^<^Kf{^j-{BHd+tWjcsq0>vSRjTEvU1)x+Q4MkORBLJy;Ji99*kGUEBFq zfX)c-z;4W%x#yJ}ZwW%^N|k$_O{ZrR3+*M6iY`PT{64=vIBKdzY@!{)654GOjf)SE zL<=t%7TV(5&Q|hs46Jl-_Q-=N*SuBpy2Rg+Su#HHhc3GBuWkQ8Cu9DM!cm7Bk)=w> z;}Q3mz24=)!a?|w>2kwCwLD@^UE1`6?_DDY6u_Apq~gJOx(=s~$Owx(>kO|C@oi%b z(JH8axVbW83qU&jE3!DIFYpeva(U8 z3}P7W^A%Y9LR;XOrw-%shEi^@gFTvdm86yE>^2JALLk?(EZZ`z-8;8Jwclv#LV>ng zru=aGrps){*hJgx^MBEG2iK@D#Y%(b2l_a%tEa;B3n|u%?9=Sc-lkfR)nsgwKHHwm z9uLn08Rh2@8F9wA;Yn2H!@$0-u)t$@;nypavkUC~N>Z;;J{7~4#E@B{`pY0KbcDiGLEo|819Xh(erCK@GBx;2lv?d+PYTd|`~ryZ?bUe_!t+ua%K!UCu2I^5i-nrG#n zi$AfDiEmmQKXWP5({;5a*?iU>?>S$Q`LwZ3H6dZP-HxOcOS}IT^C=!;*UaBq=A82R zer#QxhL-#K-Wx7kdg8Ke(~hP!d_k_f>h#ZaN{tw$P6vIXz9nd*c416~Q)I%Aox^Go zq~{Wp;SG^BM^)Qe+(oK2iW#<-M|Tkfdte8TGb6>!A|b!_cXfzOhJz`#tTe6OrRnv@ z=VIi=&#iwhKI3g_COH+$UOEb?X4F4=k$c+d!QM3|fm~cMfBpIPzCxXlZxzr>PU+hq zZsQ?WBUtLx*!>G-simAh%pJ!vtuok08o(}zvu>B9G1}k^Ez^{_{jIIm9e3p3=nMhX z3Vw@NyUg6wVSS&G+fL8@u^6#L%Pxf$bk8)pfsBofWqR2fFr$y;7T~C@y*&zt>pdxd z_rRL*ttW~}Pai%*J#o(kpDe4c)*vyzF6gE=h={B%6vdMq#EfOw1|BXoWA{H~zN}_? znCB8bBO!?i3D`~N}@H9C9QTBby)@RrbW;PDNe(b0Z6?-tJ(uZtyBbCu6Hm6uFV zzo*s051685$KO=eS2Xx3y%$M&{MzSv>03l$qs%$ebERwMzl3q;!V2qD-(zlK1afbd z0ZaOGe|N&*FX~;Kg3ta+vhlErqYiutD}!YuA1!&=NxhA$uHM<&a#PJa@iXAt-2(cl zUbbixuTfJ+i|(Xz}eT2$q&{oPo6H|sBCwf@uYL}nMG_W?Qn3h zi>d3KXyIJL!HU68%o8hfVJQlh7EP!e?@NrB4v)HK3Do@d*sgFig&z&YPCn>sqCB|5 zW>Oc{MG_X*WUz7b=&?>oH=lupJ*CvtQYE5eAIK^ykJEp;L!%b4?FVPZI4EI0(^ye7 zoe{(>o;Lw;LZ8NDxVq`xm^X*uhq&HyBY3%wL;mNBfF(a8ZykwAh8-8K^U!JKxb15s zoz!)nr+%z8Xh2!2PI}GM!6Os%=_T@8x8~ySr#Jt^o>Xqj+s?lrg(SfIRSXeZ#`Zow zK0u9A&ZHq1)4O(dc1D(-SxtRRYHK%e-0;2&XD%TR)iw;INl^Hn9I(pvcmEBd+;iJl z`!$}NXv57pgo7BxQ{c|tMPk^LH`$x!Ugw!2(z|gl4B59LzRAZr6+>cJ^ojlRusLY_XO+?gZ2axf9_?Ne63PH zA>)j6C_n>P2N=joe=N>!6fm#3qj2z)xt^4WWTZM2>3nS~^`*QVHcjmVy8E z&e+6+dakU%5*8g}x|alX=>F)&rY@9mPF$qbHQiADk}7!$CRcZjYwodn^lyUfsY6~s z-&B9BaPEJD_s|nbs`cDn{Ayg61uRSc`4~!LEK;SR)lQy&nQkNHwxd)~uVvFMI(245 z%f{ImMss$)Q0zFN&GqF=Kt4NQ6}@pW=Jid;1ao65UUQ8Kz+lN!Q2xD3?+?0g=dyyx z^%G1qbaQuqOp(XuBw-~!N1F$2R7EmMzw=C;d+M8N%;81*@TQs|a@XIEB~066Ma-p2 z+=&RzJ$6Szq+TRMP$Asp2D5U;pRe;Tkan$iOi|!;)_pS2S7VWo-ZewYc;IiqP6+)G ziG}B#B7{1KVYOn=-kdB(9?_rN5>q5fRrfH7ct2S?5eWGsCL~VGjLaHO%K;Iwk-hr~ zoD0xQd0-C({Yez;y^Z&$QALIJjy6b*zhPakO6;XmQRqn+CZ&5Oqhc`z49xk^s)Jah zxT>8kk{f438_`B)^QSpnM{$5qU{n;4? z^%w0NBry|T z3OQfWMT+2!xBF>;)_i+c1{-^z#xrfCE2tou@E2Vi;9l~7w2N23-G3>k+~YVXs->IU zd3yqpljjXQhoZb`9o=lGDR%uRda3Y%5^t7#6%$*1$>ZtP(||*@K#`!^?2aNTe?T6M z%9Ve=Ja>XniPHLBJ~E%)9Q~2xhpQB-@PIo(j&Jn?!)xfrZ<4g|PJIqW9V7@JZ1!(x zK_9~yT44Do`jCNOT_k!s*;aw?^lH;B;jq?C7uDHMsN>f~e`=ht^0(BVDjJu`7VT@Y z-k~OoL$Ye?~oi{1I+Ss)U}O%DMpNqpXZ&EBNxztM3a zlB9b-U6|ft6zPOC2Y&GAeG6c}s=ERo`pVK27JY#|-sTl$;c>C;_Gd`J3m@bo`hn8B z+6}3tK<9{rAe0S87gfjJ0*!4yQ2%Ax+T*Pc-Z9Yha^&dyS-(!HE?`dwmYp;!p(8)5 z*?8EoeM9rwPoF-ct#a|1h-Xete-r3fo@1C^$wg=mdQqM`&--G>DVITt4dE-lqBS!d_15TD1j@Vr@(5|^Vb|_% zg=ooFU>ldvBhL8t;6@vZfNs4oz3zRWWv{*~bD(Tt_j5w9Cw|HMw(!~5Vp}**>r&q4 zE#Ag|{cnjgd-c1wsMlpdpX;g;+A;>u-A##kRD8;9wej`Bre`GrD54CBM+ABX0VFz1 zP_W%tf2p@XqOlP?tXMn^hH((9bE)Z)d;a-{`sy1n)#N=0LH4`>a0Kf7o#f)R^`rjo z3HxWU+G~cLh;ys01xl$ST7``dOpwW=0q9 z=*8{0jt@6y_+*iU{s1T4D<~WHT+^qbr?DUAkC@Uc#~KyRb-r~F!~Zhnsj1FXoD!7L zc>Zu%ARFNv$RG6flmzY8spn7QuDe1ee*N4>m7nSaD#LF4w?Dr-h*dzR;ur2Vv;>)$ zn55*kxPev;)rhMDO~#KTb1f28vgBX2JP3EIb5R4aMBm?^_rAaj#Vck?}oXvY9oh zAyoS-gj+J7C;>m)SYM#s_|f16`Pz@d{iTDqU;>PogbxK##>LcD3H{B;M>JJEj1MQH z==-kqWXgwWPNWeoaui$t0ZiGwdbJSG{n0xUGL-&M%O*=+V!N>zTQ8dO*pLO8J3Lyv zAy;4I*Is5AMD9D_wK2Tro-2G3U42RAefe@iXG3*$5ZQ3>dFji3#-`>Ioi}3NLUenc zU5a@VQ8a&NfbHyD!2pw*l~R|z*a6umvj>9;%)M7yayo!wTQraNbR2Z@-ycyRYIb*t;jJvw+SbxeBfUNuLRG7}(ITSeawQVIU3Q%&&lsrJE=GP{bTgcRL z@&$21Xwkgpr2RDIg+lGE#c{RN^UE+Xvwu(hOYB{O|@`UxLLcb`L+rRQm_#8MT9jp<1yw;Mz- ziwR72YP4)@pl{5+2n1TNDWg(Jy10x=G?XD69JlvZBsML3M4QEScS*kQe$v)S(&>Ne zb5BPJNhteqxl}2Y$S572ggnA<7MU}1MW=RqAsm44pmu0#<#2&!+~7t6FD&imB}uGS z8V?746(0ENEI6|Xge1^cqSpsPBU~x_)PLe)Itc3c$G3vW^h8?fxPtIU!T#XkLH@7t^8 zo}1%83GwGZ;Frw{^URJ{ZMqWaB(cf1Kj5S6d|}Sg!zD zzEh8}hMOhdzv?5m^MabQG)|}R9qed=^-@(P3%iI5G~o+ai>ENZ;4}qMP_TB&6<^=Y z8UyQmTredYjzxQK^wn5!U23S(Ri4q9fz!6h8Y%=m>$sKo^~n=w6kS!W+p3irB<*5$ zPn;_(beKlxiIlBvOWg};+s#VAp1LYt|M4-Kt&Aii$u>a}`ErS}B7*qS{q!pxunK;q z)Kap3mcnD53a*btGQB_Ff3hb_#+xx^U@*)YAA{q3hH!1z?t?d-FBnb#Q!Y>fjvJc{ zwLB}M`LmtY#~;z`o?CUsQb*Y`TSXHd0ECRaaqpU$!)Qz0gFX;3;!K-Ql+M5tnQgqH z+(*ULWEv|0Z0RH6@uQ9bEilj18=Yr$u+5Thkk;7{3rw7r;eDU(o_+K6OpL~5f%Pcg zw#c_^oQ^cM0k}63juRVz+_cB~c`vOP@^h$PS@8{n(*(jteYOv1yL&D8QrD4w=kCQI4Ww8ESCXLbC!-s5Y~*gO0I%7iba&#~Dx}==;j*!fFZFL+Y4p7pWa)?o z+~S!=OYi}n4o}@$V`dcLiGJ#KVA-4pdbW<~|iQXu~H)k4LwRYp#F9o!L{ZfS0 z*Ilbu^3P=2O=ah!u9|EoB)q4Ps79_|Q5LHhZ%^@f0;PvRtT=`*U1%lb9Dxk;qy)9rf^gU|sBWN%4C{(YU(!LuSHn;Hv|RT}Hfg~k0QO4cXU z_~A1iwTZ~>rNnE#ZDsFfbyvnMf7O^eV8@iJTH@m3_I9}qT&I9KWJKq;-M+Fw{fKDh zsejdvX>iWc={VWh>gpvr{Z5+~_CiFW$-2d-wU1p($($%$d_tsJd$*EKUAu-LGVUHn z?_S&JH0sm-617g=DK?(KzG#NmC?VE8wI(-7_@l|hXsQMkx8$XgOg=Fx4P}W~M9kx3 z5wDiVJa=5SXy$YxUE~5sWLV^df^1Cj>*cGP4c~ls8omjmD8>zJdxV;2@TIuuknJJy z*<8i+J8*w|sI{pa6=A|&5;!WFE&4$fU&UowO1Ik2->bF+4#^#&&iA0J+QNw^g zIHm}2RL1TzBGqHU(~g1~9{UJ1#O`9a5HYiJ6Y{aRFm6*&@FT-Ph5&9gFnhkO{^JQg zW=;5nAY8~(ieQ>I*J{y3p?rprYR;%jxzXYIHCWe+!jMO0fwLzs4pn?(VcDMe64L$> zPJE_w)+IJPz8Xi~ptb*H^x^;)aR|VTP@lpRdmCsV z=z_vIQzlCO8RCzTa6V?7F}LVO8htB5UzpzoqtD5?($3qRbdq)pwv_!tAa{U$@~iNq z2KRR6*rJN{x8xf$A3JA%_V{G^SiQwUeqe0R`ca%Ph#N8zLkOJ;i`M-kc>E|g$AbN@ zQC9nn%jusse`~oIHr&fEmCEGB5TOK_IFC=8naSibF z;j~!)k8%@NY;SP*Vo6>zxLBG_hu^G7cnaWK_Q?AD!WVjpnc0vQdW(BaFuU$egFRLG z;)%N^KZ@AMaHc_n>XD=Q(3Ih*>7jj3%FDykS2h)2)qwBiAw0OfciFdwtqoqdaFZpk zj(pGR1lZGbXJSJ-YeD*t+s|Jq%v=U!hY6CE;!e%;$8a5jNEtF!2tLZ@BHE7I_7-Mj z$q!d{Sz0_v$A(#8znW$>PQWl(YP7#ehgQO}IO>jpXTnVe0n5Ruu>0>dW-{QL(lSO- ztA?_An%=4rSw~h8iZ2bNJG;2oeR)mN;49x|=gWNV?clU|qU&_iZCuOvbghK`*Z%RH z%}_T}WQj$CYmjQZSkGe;&-((M#@U#24$GzX5}8aId$ZagAm${uZQPY(vR&P;JvRkW z6(V@%Z+yRt_ea8=?&nE;rW(u$QZ$G+!lo1Ox5{WO??6NYw$3ayXJu(!jpF4|a>V*d zfTXX>+IZvoBQ&?uEA$`qzl;ZLmz+vMDPcrNKW(L}3Gw zFStFuNF=i4t`-dA$+2SLAC$ejidiiX+4n&3pR+mwcL*g{a?j zj1l#bSX-W`85DNnG`8{8M3J<*tOF>lW@HPXJ>cz*9iAVMet)nvvKYlaz8F;jXWl+8 zytA{_6`Rsu;V)!(G3?9l1CG|#2;O(kWxtW(WVAc=j}Yq)Q$y`Mg$+0&EqTOGo>TvI zfV?64ZuY^)YsHxAiMV{2#ktfgSUzxu;?&R_W z4aJNpH&~8%nuePATOS8(4DO`Y)RUtxM5HeZtEag0StUNfUtaIqw-1(TY3@{b<$ohM zaDbH?<^wNgGWl}{j^BHkeyA2R~fI4tQWx_>?;qKBH%eR4dT}K zUb)O!02EPg-*un!&mEy}{#CiyF*Y}nbNFcbe|?o||FFims~R`$H9oQ3qCRH)&KDJw zf~|uX^(pav4^D34gTGjU@s=~Ez3m}J)5>>o#RUDGUKA<0nC_k}kc&9Yd~O=~S{}@o zwDE>Z@w#*0ZnSaPkEC-5h0fU51s_-D+KwFHp!otnEoF?wk^8mL-sV(cyDRa&`yUN9 zjgD(|hJ^FNQO1qU7IXW-7t5N_>JiVM(pm=PwQJ#IFTBm10dRH8%=>QmyRFR_95)vf zMBWs5)uD@iAJ>BmQsq0s0h~1K6k+c=_PgJ@oZ4n}H9)^bhEq##1bbn;R2fK%g0SG$ zwslU)`QKZK*epkl6z$+B941L(4_dtM#T`{2Y6^GiMS{SBAAC|n^T_#(z8!njyb&umKsr7Ss7vI#4M zZ8@W*baz^CO|FWTnev0-&~%kk&jD{V7~m&bX##+FXXbE2zRqTp2Q@2zs#-7?=NiZn zbK*m#Fo4-^5jmPeo{z);H&uTe6jHIC57eFgQ7qn=ytI@JkT~?ao53TGQ1*c7l-VPZ zYyr%46L7P2+ERl&9E1DT;%4=9+ft@yLQZ2}+u!%5iwpUNnOtd&5SN{X@KmX1g&3{r3>i@69e@-Ut|IK^x3lYhiklj5q)WRC; z{hbWkI>gxiu!N;?xDH}~0_U2??{vNqeRCp`q~)sk{CAQ;F`M8t5h+CgXBz%0nRHxu|f$!r|t`#?arF08K00W^Q9=YMlAu=E^!1 z4Q(N_Winq&3yei0TF;qwV3%*p70?M!VUDYuSBuLLZv&50i44OP9jv1gnd7lqXH z)OP`yl@+x*UROMV`1$89@c`oxD(YPlaN*FCw&@BpOn~8Rh>aOc+T%drC>r&DA>`PtLu?n1Uq^s3Nzx2(Sw#EGR zT_@V)T4(L_i>}yLz!KPGB#^RPW?*G{S~euIt}xOtwc~vN+b-rVkb#-KRx|yqD^>!m z9DK~a%U=3=!VIT_VsYxLr_D?8ZoSfTXJp=Oe5-6fq*n0Zi^AbwmxmUA-lozGhn&dL zs^yA{Y#Fo?c;d{3)zFy>f&o4a0RI^2C*e#OubS=ppI5Rkc6M1pHzY{s8@Ib;Wup8;rQLRHhXr)v}nES*=Slg&iq{IXXanMrR@-w*aj|%aIG`%T*AcQ0S z+)Ro98zce_=gPD_6XOF&on{%^|lyRP*!~&Ji^^N1xT- zFM}v?EkAhZUAFs;(%Jy_!`eWqXLi(WO(*5ilOVTLhqJ%erb$)KS5@a`9(G)@ZD5N_6fHt9N2EW=To2Me!Hi9$H{^x4HNioAGfnp zpA)}J2d8N?`G!l4go7@p(^oPqZH;(suKkY?;e*zyAilku>$fD%>XgPrUVJ!Fmi&J& z`26d6=|YHZJN7hB2=!N~QXi0B{>1Z;dG9#ie?-KZ$IjW=`FF&(Co$`HaJNBayGI!LZ;-=QU?% zz<^_-a{x=TxVYF(^>~ONA9Fqn>r8I>oy~2ZeDF`OQBMYG=Fp?%VaH38u=!XVjQ0-o zC>)&EO=oO?h)p1?Oh3H0g+uc+2Z-u+)J(PH7&icZ4<}07hSU=DyC*%VtYyZ|-u8bb zcjRGlEr_VL=aok^>txbbz8a)O?LWA3hPy$9<)N!^m~!Zn%5{TIK$zW*8(5ogG|5VMJ=rH72z72gnh^0sV{wL}q~hZOq~wJfA~gt*uF8 z1}lpZVJ1vK;~Hyk|68wk(3Br=4yk;{+&X!aHoBo~F*A*XdeY+TXA&a}_!z6Cv)fL3 zUNg27ZHS#=F#d&h&Xo6eFS1ok8(rw!h_9mno}PZ;!2J7N_ky~E;|MVUrnH_&r?9wx;gbXepn|H2n4x9K#1HAc%tP{ul?Oc z((t9R8%O?dGx5sx|IKa4Ev&G%AN{qgC}laT4}oB&OOk^Se5k9MId!CVKS3?=2H9S} z+Ar4=L0Wzs3LO}%)ByGb(4ck!bsN}U`Xb&IFZ+~-69YAZ$i`ot@m^k%ltVzuYz5-E*jeS5_2(K3wAr4g%y+L<3Q}iE{P^DI)VH$laFn z;faUq$VHsEqPat}N1bhDR<24qy$PfZ=A3~GC<969Nvh)VdvNeg0J;PxoGo;@1H*@; tcyh+ooiu!fe*Y??;K{!a7XK2|E;P94<^M4c_=O4&*v$5N{Waf5{|#{b{Zaq` literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_wit_0_0/00002.png b/tests/snapshots/stax/test_register_wallet_accept_wit_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..345ce91d486eaaf55587eb20e73e4d09e8df61d6 GIT binary patch literal 8552 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_wit_1_0/00001.png b/tests/snapshots/stax/test_register_wallet_accept_wit_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..cb160543583a1029b4dd2cd587f898b7d4a09097 GIT binary patch literal 7788 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 vcT8V` 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_wit_2_0/00000.png b/tests/snapshots/stax/test_register_wallet_accept_wit_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..825d883019398a25398a5d20073d8ef1830a6164 GIT binary patch literal 8264 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_wit_2_0/00001.png b/tests/snapshots/stax/test_register_wallet_accept_wit_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0dcdcce99fd958a41c5f50ce84ea4d2c0bd37529 GIT binary patch literal 7579 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_wit_2_0/00002.png b/tests/snapshots/stax/test_register_wallet_accept_wit_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..c703c48974fb88e71a6d49e5d0fe1ead629b13f9 GIT binary patch literal 26008 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_wit_v1_0_0/00000.png b/tests/snapshots/stax/test_register_wallet_accept_wit_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..13cf02337ab90d008764fe6854faae07bccbed42 GIT binary patch literal 8281 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 USSA5~8IW;xxq7kYX9({90mxhknE(I) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_wit_v1_0_0/00001.png b/tests/snapshots/stax/test_register_wallet_accept_wit_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c9b431885b2fd541b9096c79f17e90f9b1672281 GIT binary patch literal 12627 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 LqF<%w^w0kS>Z&h^ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_wit_v1_0_0/00002.png b/tests/snapshots/stax/test_register_wallet_accept_wit_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..345ce91d486eaaf55587eb20e73e4d09e8df61d6 GIT binary patch literal 8552 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_wit_v1_1_0/00001.png b/tests/snapshots/stax/test_register_wallet_accept_wit_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..cb160543583a1029b4dd2cd587f898b7d4a09097 GIT binary patch literal 7788 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_wit_v1_1_0/00003.png b/tests/snapshots/stax/test_register_wallet_accept_wit_v1_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..055f6df699b5bae25afd4a4147c1bba29f5fd790 GIT binary patch literal 8612 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_wit_v1_2_0/00000.png b/tests/snapshots/stax/test_register_wallet_accept_wit_v1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..825d883019398a25398a5d20073d8ef1830a6164 GIT binary patch literal 8264 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_wit_v1_2_0/00001.png b/tests/snapshots/stax/test_register_wallet_accept_wit_v1_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0dcdcce99fd958a41c5f50ce84ea4d2c0bd37529 GIT binary patch literal 7579 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_wit_v1_2_0/00002.png b/tests/snapshots/stax/test_register_wallet_accept_wit_v1_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9c0542acf26f60702921c6f176d4fdda557d7455 GIT binary patch literal 26298 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 PgovO@nu?|J&x8L9w?9FE literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_accept_wit_v1_2_0/00003.png b/tests/snapshots/stax/test_register_wallet_accept_wit_v1_2_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..055f6df699b5bae25afd4a4147c1bba29f5fd790 GIT binary patch literal 8612 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_0_0/00000.png b/tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..13cf02337ab90d008764fe6854faae07bccbed42 GIT binary patch literal 8281 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 USSA5~8IW;xxq7kYX9({90mxhknE(I) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_0_0/00001.png b/tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1d6d1024af528c1bb4d57cbeec98e49d8bc2afab GIT binary patch literal 13000 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_0_0/00002.png b/tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..345ce91d486eaaf55587eb20e73e4d09e8df61d6 GIT binary patch literal 8552 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_1_0/00001.png b/tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2d7408bdf98b39f96910dea3493adfc67ded21e2 GIT binary patch literal 7976 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 M2mDa^FCmxz3mFd{YybcN literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_1_0/00002.png b/tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..78ec3da74cd0634d0595eff7d8c9ba32ab0e32f9 GIT binary patch literal 25704 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_2_0/00000.png b/tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..825d883019398a25398a5d20073d8ef1830a6164 GIT binary patch literal 8264 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_2_0/00001.png b/tests/snapshots/stax/test_register_wallet_invalid_pubkey_version_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..976d0604f42090731a444da28188dfebc61d1122 GIT binary patch literal 7775 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_reject_header_0_0/00000.png b/tests/snapshots/stax/test_register_wallet_reject_header_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..13cf02337ab90d008764fe6854faae07bccbed42 GIT binary patch literal 8281 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 USSA5~8IW;xxq7kYX9({90mxhknE(I) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_reject_header_0_0/00001.png b/tests/snapshots/stax/test_register_wallet_reject_header_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1d6d1024af528c1bb4d57cbeec98e49d8bc2afab GIT binary patch literal 13000 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_reject_header_0_0/00002.png b/tests/snapshots/stax/test_register_wallet_reject_header_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..345ce91d486eaaf55587eb20e73e4d09e8df61d6 GIT binary patch literal 8552 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 USSA5~8IW;xxq7kYX9({90mxhknE(I) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_reject_header_v1_0_0/00001.png b/tests/snapshots/stax/test_register_wallet_reject_header_v1_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c9b431885b2fd541b9096c79f17e90f9b1672281 GIT binary patch literal 12627 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 LqF<%w^w0kS>Z&h^ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_reject_header_v1_0_0/00002.png b/tests/snapshots/stax/test_register_wallet_reject_header_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..345ce91d486eaaf55587eb20e73e4d09e8df61d6 GIT binary patch literal 8552 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 USSA5~8IW;xxq7kYX9({90mxhknE(I) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_script_pk_0_0/00001.png b/tests/snapshots/stax/test_register_wallet_tr_script_pk_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..b41874f80ba2e5a0c328e31c6600a0d70425f576 GIT binary patch literal 14186 zcmeIZXH-+)+bv47AWad$LJv`rg=iHC4 z+nNg}8*J@W0%{r}7Q?zAKRNz@QR^jY7t zxc=$Ce)0cR8~7)5tV>Eb_4L63O`-PM#FxrF=mM=Inb0XwXE&soeXw?Z4fi5mHLXZ7 zEnr^Yr_Re#OILEESTUFP<%mX~V`lcqS?i+*Rt$PYUG2s8(L$U=Dj0a>p2|wZ{=P&P zT8j@jG5CB>ow5}?g-aYdbrt>`O{YgzRtDCO2IDBQ#gf7Y)QpN0yVu7C8>Z7J-h;xB|#P3xsX zaFk(~ROh>y3WFKyEZ<6$MwDa@0x1@V*#D&HPAhFbhKY7M%;$gz47n9Pt&nzxUr9-| zIf8vPcjRJ4zH@ND)VTRDl6+GL=*G>GP4+GNr zlkmE9E?TTV#3mvUTe%piZxLD@Fn`b+tX3&{DB#;#!ne9$qGzsevnRGR)&xQx@CjVo zzh+1(btLFu+mv{DT&r_Ggx$cm>LkAK-#^>sPoH=t*Cn|sOOpK(_UpS9A~}X=!L8g^ zIKA4GN$^`kK0w))WRq%Yg6PJpDWlxc6INCCcQ$16b9pbfGMwhw&Ph}nfgxRIJ z>&VhLu#IsA@pfIgfS2u2fh|Xy6RvA+spg$i8izIXB!wr;hriFSXBqpx9}S+#ejbAg z#ZlmDwg$k^Y^jV+?Bl1~BY*A-a1GA{VX2WCH4&y#IWfRr$T3qV4nnPU8>|glO#l;6SLooK@ zX0rFp?B(DeOOBW)SZB#uWYwfxjTmpAye?)2AqV7XyC*KovYO0 z6GlZt!VS`x*01=D7cUp_Nc3ThDAKoL`b*fjJ|T7FPRE>nf$c!!8Nqf`!4Lh_5g*$! zM<=JXf)(YS+ktDv!Drx;vx)<(0k4ftO&gi>_oGy1nod0XLAHYq%qy_;$wukC`7JWp1vTG$WKc7NSXSKWk%tDh1~f9Lxs><(oJH2I z(&sz{`nFi{vFQyzLzx{y}S0i}cCM&T0$-ouA^J)#yC z1;LAlcRaoNi(#%q&)m`4Qpg*gs=Uu&A&8zjrT~Be+re zSYcryug=fF#z3io5Wj*BNex6o_U~V6tU4Rbi6To^W}CfO0m;7^>Y*yZp8Ba$@42yY zDSv+J?^3XyKA4!deT>IqmF?=*gORPYW%l;^*0`j#Lby>Omduz9U$u}aL8X+r7%+8J# z0o;_5?n(7IzId^JIB;;dqOtOP0mLP{Y@6`@(o^X$XtuH|c`kgLAI?f1iVwqC$lsNo zkZx*#%+%amhxewS?k&n@lkQ~M=$DXw_h|QPASoD=ud86EoY>S4R-|mAMb@2LE#o4; z_b-eUFpueWP*v%|P~6AtviXw+@GY~9EOSy-|Gxs>ppXPlZFbKeEDGC;*{mlyXmu%Q zg_tClW*p=*sii{Q4XW7;rNriBR$s(^CUZI9ZaAtnckO}#tpu&Ip!(MReV|R1?2;5jUMWN?PE%ssw4{pOUx5AcapB0kHX|j5wE7I( zmMG{pHmk``@>#P9982M0)X3`W&O*#kMT(Jja1e-WN_thZ@2>x%ZQ{nGi2TrxB`%f` zXKIQRjf{*&7_2swBy&KU^rKGMUFHkt;@pptC>6!phF@n3j<>Y_HuPQq(%FP9rZTV* zOiwf)(rjFRqNDU~G~H=+qa=lh7q;hl$vsQ+L@*|b zP%y+@RXMg4)jO**&-{Rj%N}cdqpi%g++AIL?)!>e^OAt8nawF9P??eXT|?b1CE>ZuSO3Yh1HKnljULr7DVw{=@D=*yAKvZ?nA|T zARUvL^5H%Ft!6u`4QmrmqvN{7SS=jY2_qz!5gJG`8jUqoCE%<_%B zGX=yyfziIO@04!XQk42u$1trm(f7hL#^HKN)8DKhZTcmZa-kkAxiU^K?yR{Q1&Al3 zGljIVoui2+8PCXY|NO4Z*~DH22-??)KN($F2}DZb-VT}d`W^){Nk( zvtRYhfi-&|e{<<6u#Z~0f{$zp;b4iForG2@v{VB}=}?78-obO^#m6w*TzTc9JpZo! zO4?V!;2cQgUWj?JK(A3_KWAU;)jaeitktihUafvCSbJ^mu^}mUrEXdt3#}D<4!vd zaw^*JOPFNmYQu7uQrgsAT}k0onU&9Omac6MU#-F?h+CCDer(i}<@;}yE3{|JB<69xS-thn6Buj=g}JU8nn@>C4QKbG{K=%EUtDN4oX z)-nzvL(P9zn~^(xVb~bnra~T|J~Jm|qOZVI0>#WgUVBUWX<(PTUoS^V4RZ)_f=w&~ zzg|-^VQJySn*GE%Qk|Z)m%Im1v{`rtVKTLSa(epK+ABP8rac|f=tZmKyIoQDPwNO<$YBc@ksZteIPl=V7*U{ocrcYfv^M5+07 zK@YX7+YIg`s1;f=y>76zTVKS_u%}nc854%m*C$e`sme1{QKYH^ zY981w1QGEdEcA-r{>X}%N1~>jm}f>kKu+?e=QWHx#iu7#@brN6+%sD+1I ziAa1F`ib+iNob+Kc*2#bM}Lr>f4bLj?Sr$idM(0_&045GN zLgW}f@LAYTjI|G_d9&@po;g{U3Fo!a#Om*ue_;BmnJ%A%BYOim+SQb$C_`y?cB*vu z#KU~K+VQ0yjSeRdU{p-JzAH`2r^GI5i%9GYW=16wt_J_ZzI{h!iXK2OSOkavN&~~I zgaxZ>VzkI-HgTC+7T%ySla|D#60!A#LyK!osiT<>Bt=~@oi8aK!-kI)1gmBJN2}4H z?OAouJs~t|aYq*blVgJYEVpO)n#K|8FwF&yA$MfTJ+669o_H&C!sobcc;d<{q2p%u zK|v`BjRr;IvN?$~>S^9)FWTbRN#-)7_n+yGus;h0HdGHxuWRp;-tB#*52J~m?zo9Z z43OzDhfhJZx)?^jjyw$IjmF zaLb!-j_efpK$z>A1TgM~*ZTKw$rp5&E?1)3DMV)*Y1ejAU9*jc{0m#&s$t96MkPHS zbOFS%-tp6&iOBI;a%NU~qRHX=KDrkC43$&0dp}W)*k#d)oyca7_Y@2+&&kQcJToIB zL&5_d@@hpncBn&M83(^AX6A;pxRCTZAhq3x=xJxr`IB%CCzg2o1k)&Umb$l?SIxG{ zL)S&6wwrW2g3V(aFl9aN+TME~bvoZx40?POcn@^e>mHXYm92=v`)E5u8|jm=UIN2M z3nI!EAJqp7JMKps=^f$w2)vXQ)?b+OsN{K&{b(v#+0WIT;@GVC{)`qe8_% zYcwzZu?NyOXmzPy!W(~d^&~fhiJMEci(^JyN;^ZHb8-q`f3K|Ecocs0z5hP{fkEmJ zRX1C0cm>#hM`wO&kqIO3TNq}9>^&D#<8Kut5yJL3N$wrPyrAFn{>YB-KdZ11v${W0 z=NcJPYQCJ^fZXP75lNB${NPpNA}j1-pzDA-N%3o90~sj z#WC<-3@uJ#N(RWBb6YsV6JlU7u78}WX&&|3_FSlAG^M%hVhPJ~rJUeD+JauHS+v#b zsheJnHk1aKDWhq0BCIo9#G@jL8h-{`77@2sEbBRcPq}9%riNf=tm&`9k?HIog|RT~ zr<5dSJ{R~LW!UUPvwlDx@QOe#)Z9|RL}Z_V|A1zWf*$t7JG~;8qOjKZpTB#SV%*!? zW?#RLq>vTwl+uFHGAqP zOCyOQ{qffRo71|ygzL{JNp@Lm#b}G?=nBf>AH^8Rl?bcFd^vDu78)8_T@!NY7(I13 zxF*X^JCbN%mR>Y+%uqVRl+*k4tQuua+`_ZHZ$0_(QWS$op4>7x4pd9)-ESM#nTAd0 zKv0=QQ}s^AeW3LLH7pGDfV>FQ?%(h{^bSp6bA3MJ&oqO!IFadl3ddde)=t7`t0lh& z@;p_$?!&E!tk1`F%|XvnX+cAw1^rP1s=Ok}(t(Vg$l<+!<^aw=5f;oF4lOUGAqZ5cLUT*XIR?*YUs zcHK&{6DVCpA(aU$TnDR7T9{FA%GiUr&$&~_)Q|B5Wdc$39^c?Dqn@+(&y3qAzw}Y$I z7AaS@Zy2CP9x2^$VzHOK;D`2h*o7}@YseR*P9}LlyU)LMzd4{!H5~^}PTuX~oTg&A z_y+eoAAbmT&7NCF|IaQMMy@x2nyW}XoLJ&Y38=bna`=UB1^d9DCP+Gi=|w&1wT|6O ze6{;$HQ}w%!P77QsJ^A-?nLVEY^|Fgas=S(`nu!b`30uiNzHD@p#$8H=*yx^_I6t{ zfedB=JMb{>>PE-gOzSGtay20xeEe3DU$^^M?D#=$X z_msqVj$sy*4!sFb0!Uc?B?cEqrPT5u7yQWouJ-k%BQ)sFPI+!zlBe-~4MZI$fnBFO zE3s8_Jjv_kRNMI;hY!yOH90~>PEN@1gPZJ8W*Qwzk2@mzM#lZTbmD&SVwm(+2k-F*D*@^f1QcG}{knLTPADg^eE%Vwdwa__J75bNFVjT|lg zbF4E=%*@FNAn|rICz~qh@fMHOLG$v>c}KC8Kn+zFBn))R7oN@DC;VaEY;I~oL?!JL z!5>dqlB@GoKjCmSwBWgc&8yr7UL(A3lFT$rUimRUP7y#4GrwT&Q+Bj0xtQ{E_g^4d zD!TL%btOxbk#ZJ65No4L+B1%z31vCx?G)(8rMtRfW|QLSCEri+nIL_c^V%i1$-!gU z0YIhvZ2EYuVvL*niKok_tU)Kc0Dj>LpXPf3Kuc-mLh2}eG-IPeig;E0dJp_-E${wJ zt7)3c$5vW#deJqs+Go=p2+!v#&JugukVMSj?dpE7T^Pew1-7Vb0QJBt2q}t;y*doT z2rUj2$+fb@0s*WWnhjlil_%j7CMjWNFZRGMS(TD03Y<;PX1iU367_PpbRL+u%I)bu z8>TYNPG?FYPrg>}NQ+D<%x&*N*&T-4Ib-40TjjhWTXjBJa%T2T0g6vJb*d1=0mnw+ zk(?xZu^eAFv3-q~|6H!;a~3mWZlOaKF{bZrO}dXbtem*iIZ0Q@(N)@L2C3{HIZ)W& zVy5^RpW2<(7OHLKO3fHJrPWSf9Q zc{Y3ZWZ{I-IvOoSBWievTH?b#pqq(}f(xwSHO<)Y)vr1U&19HlNcXx20s`O)qDHxy zG)B{c*Aeo!*&ZFV>^iE!94gsE^ihmYM?0~As=`7*kfpdf$TOzHQ-G-(`+$}jZ8Co3 z#VE*_yT-YuX9fM;!~c4|*~Pr4&U#x$s4#B`HU51{b?aSO=upFLiv~(%b#Rs(C``#p zRYy}EGo_1~*)dGAPXze%9`IenwSYU71Q_@@{Z*bJXpr-0t$GF~3^JjE#xNIcYz{~J z=k#fXTv*GDaKF67!cjH?P|2Ro`}vT|xe50HlI2=*Iwd4Y)=J5T_zmE?cJoJq+K{wk zt^?6xajic>-+iu{J3GRaGOLN_ZG*Hn2ni&a{lC)h+rMqsZfJO2^%5(U*_=96uIf%; zK@7saruNC~xZ>@#d4d|jUGD&`ffoLW3|mT&uiXpM!4zYit4<#*Qp9^=G3{SFWH{Fr zAK9ae3a`idF+*t>y!gkYWv-T>b4cH<)zvWg2YBk1EU+)+x~|S!DW@MzNB>j=RI@lE zKwbOxjtb4_oL-8GjpW9A-qnp8q@Ta-Hlp?PwK~veZ>Bsu?t30@GoUG@^8mN(ynHX9 zU1F1EU_aR6Un|@GhYLUiK;Ls#iL`E^Q0{^PBoO$|orFZT!->w-w#E-s=#Jy5X#8T& zbgc6vZr{i$IG~sW*e)?$L&qNjc)(BU;iSgDrg28i*G(2FA`$`-ZUlqI>DA4?`PwPn z51!ba!N_yR{}Qu+KIL*m8c?(TkZlgkRy~@Wgc3Yzat96(oHER76kU2K< z$|1L#^yE_Wu7uX*6W_LXZSv6DI}-+X0q!TEmAwcDRW0w&&b9RHs@fCm*WMR;uWA0z zQdIVybcQ*bv#c`l$lh=5wl^^dhj2L!=j;gl`CS0C1+#XbedV(4uDFFZ{X&xI<&PlO z+0zS!zW{nhWV}Y@r}SuV>jYE>jt12aTH$jM&{30CM-1*BA4Ge+16WAfa-+vdv;N(D0`K?v`ak6%+~E(bvpNV9i~DNN zZI3^>y*E2H?JShnnd(`c!qgUEKV5wF9GW>oZ*Y#`MEG|oV)6{85X89{6gnWt?aQ!? zD~=MfjfqJD9>mhS8TMr|x$%BMc~7QXmqzkIF{%9pu}M`@fn~XOUuvlQ)-9qMg(IOGX+cVIdugHu!Xhz?HGN$czT@5Cjhc z8ovc0u%ZYtj;Ewut$sYt`wY_hAlv@(_gveW>Lq6XvTZG+e7HY9br%R0`V-|IfYe%z ze$kTe#`gI2CI=TcJq_q5jOYU#7uvITx-^u*)@%9Bn!)wrlyygp$th_a+T&S!p`yh zAo4L+X3P&fd4k{$;^hsJHR$i<)DR7CA0M3PTVVbUNS|)1y2xUFEa_T+q!NQ%7^U9| z0wPq~*&J$KG3qy@_jZ_MPfXPTCK>K4D`*-z{q(r+*H3Vjw+2ZrHv)vJQIo^KX?XPD zNYChF@Pl9UCiUCL2@{g8Ab&E|{X6D!0&b_Ms%5U%#k{}0pZJwcR^sql-NObsHl3m| zGR|rhSX^x;teBWDRnObr(Wu>zT$^Ze&wt1_QWP~sooh{Q|H1l>)9MHtU$6E9q~Hvc zfAx$^UJ?utdVqg%c0N*{ z^>lY@tAbZDqZ9R69p^65cobF|sgZu_OAUPgNZYv{_XC3klg>gLec$S;V~hYQ37pYK zx7(fL0;Q&I45t?@yj7)6Ukw;u|M_nF9MuR#g_Z>^Hh$iS-hoPWcH91upV)f;&_Dbw z>oUeTsvy~3jJ_}8=S{ zK4&ZGfGE1(7>Q4n)_2X{cLBaJ_o`37b1tW~^88kin3?geiW#6Ff!vA$@&a+``K(Lu zsZ27tWw+E+t#-U^pck~o-}jmE`P|+@t98I@EfHbU&|eI>k3j-yZu=wLC zLom+Y5l}Xj@W*Uw((!Pq9k2^fQ+0m&)zk4h>D6=zHl@yg?|c9_`*fD9+zI}c{QKdSbO5O%{}OhikM020KXtOw#*rmmr2 z0h&!HxQuvsF@)0=u9iiLOb*M)8et?d9=Kdk07y;()z)(iBK8?5e(t9S1i@JHTE-lI z#YH)_Z&7v+ixkI^d4AsXGb%H#*bgwFyZQw!-zqCB6Q%M$sYfoyG-~@1<8i{cwu16K zCb&el{fBmp9ei18(_XCW$tsMCJvqN?L4QZ#^i@cAfHLZ1#@orKs`m=`^bzaHOCv(% zjLkfpBa4CfVMbQ95N-Z;#a>S2a%?A}UM7yzPJ;5rF$QIUN>|xhwhhEP`5t!m)eP&E zfM(Cptlp|HGUX(vY%tNVxobhn0Yi3jdpI)vVgAvtP;NRx6Yu}d%g*KF6A_(AJm(1< zb8BzAmg7}|yHC}>Z6V%xv^83Fp1}x0w{bX}HEA|nhqls&-?sK56~~boPR7_eDwKKw z)1s!HKCNj(G;R!xC+D%R=U458$YIH>nqz8_HRLMtqUh@arC}&rm67cgC@H(8m0S5~>MO%JgWp z?QCT0-}Bn~diKPcYU+c+A(DD66kJTlkHpA8@$OQYmpcpvVu3}gq5J#R*P6)(M#yz= z#z0ijMC_6q>ThvRXZO z*cQrCN$chM$CfnyY&87_$zB9EL&Y}~Yy#ae9ox4KodxFO>rwNGk5AmxNuNgTf52dI zuCJ+k!Uui9^L+(>1x(zK$?3+8UfFv-?{esvH}kY$)8 z!QU1__I0~zKT}|9k<}8{pHim`CqTr^C`-Rt5rr0H%m1KV7E@(w(K9*ufO*XgX>$0s z+i$cyr}UHhxAi|%t7Q5S*C*G>FefJvs}T_2My>V>ODh`*R#bI+!yxANnl(8#JRIi2 zPQ>%E*MBN%g0?~#NV=O6{7i=Jdp+ph^39+4=@Wb-`G76APMM14D5k9$!bLchmD>5w zZo~mH&gba%+8pq^8L^=*Sg*W(Rpyd}+o-yr zuP-$@Tduz@aL5JNileMR2&? zwE6rQUIyR2(|}PiwT0jS;hfu6bW;l0gu7TKNb1;Zyt&WP29zX$T#8_;Cw8`IsWHyt z?P*ekO2*ewPba4c?_9CbhIqW&8KAQh&4UiI=Nor0Y3|^O!m9v&smD>JR@erJP@tCD+=uxx&gjUk}I3YkWW@xPNf`usV zx13YPPXg<cBW$JDZ{WoqTV{;mvQzi79NWP z>E-%n`6AO|7=_9;L!XYgE)M~`i&;|t=hA+BURCMlTvX+XVWe$3swaz>;J@R?H$o9J zlZB;i=1(*%hHB@TIyqr-26s{BAK@e4K)Lc(Su-jk;2m3F+%<4aK@uV|$7JS^F(*vs zm3PoZlZ0QSBSNFQ((ZQOePvtjjQDE5TQTN+#ta=XB*lUQ^QjLu6sQZ(w5&*s{h4}3 zVK`|azt@lGNr=%$sA5Y(0zD12Lbq7eFT@Kks_-yE8iJ>GUB%4oykin`q+LJO`bXls zbqC1y`v2ftMdA)SggPRMgF?gg_6lG36klM;y{g_&%k}~r&9Mc3uyTIWvfa#&X=D|+dhgNJz~g3}!l=>ZRYbPXN4 zDkR=m9{is!XQYtGuuW27nzl0UjG5-L=b@iFfG_9Yxq$wS81uhfY`^TKoYpO{UG@~@ zYFY*)?~(ux^D|e{_Wy$s>Hp*s{%=1uS#5=@ad`sX>N@4B%B;Ps_AlnQVkPJne_8b- zd?sRMKw6ItQ&;0*;K~^sK$!R*LiVc%0RW+w5&MiF3a6a5apYli7F%v!0AywM zGR+VCxP7t~jPY!_)^?C@gmlig3SV>Y^uhMK1S*O&4`eB$Lcn3?)9{){`GnJ_!qEEB zJ75TwtS&gq28`2kkBjcqkMfxSmM9=Ncb$e|Dj}ZsVp@A+H=LXx1r}^RqJG8Ht`S2k7q@ zoW#1JaUlsB9ivwi0N90Aqgy;wPgZ0Q~?v;7OZ?Ey0V zsU2az8a=5w=n8jo574+%RskENaSNx|Jt{l#j))-cPpN=2vQ+cOG!D2^69Kn~7=p#? z7j)OXIQ4+!e;@6yAw*Qrc=jG}WQSgZJguxmxf!@#@!q+Murvk_0RsHc(95*#Ykh6@ ziWVQufd9cry#iYZiS{eXpdv-y;!I8>3!xHl>@R>=#R29Ge^I%#GhKk9vfo)Rqw|&v z?LwMM>tSG*SZ&RGhLj&3U?Z zC+K8?x^(Z>mgYm@)OJ85*}Fkz0g`3H%GkXd3H-Y%pNC*OxA)n^CL^AN=}L|;8pRnr zWfncBE*(q(mH|8uy&%IY6)M!4ynXWC-*Vqm_bnEeOu1(wpfzT;9^MQn!+yAjepnu< zA3I^u#>zYP+dhDM92bEU1YAil;_q!D+3uLJU^2^nW5YwFy_S)DDpbAqNq@3dOBsO@ zGkmmj6`&dce?mUxt66Au;j{CTq3>wRr1^T6%B+DA7J`+Kt8=^A+a+f)RiI z#_AGNZ5dm^l+&d3p4p-v@rRRu!BkF)ye#Pa2XJQg-r_ONZ@Bt7ERH>UVBn6{%&@>& uL(cn$uf%yD{!K&wE5rSN|B2aZBJK-XVe$0rZQvU^E(awBQ~n2u_nf`} literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_script_pk_0_0/00002.png b/tests/snapshots/stax/test_register_wallet_tr_script_pk_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..345ce91d486eaaf55587eb20e73e4d09e8df61d6 GIT binary patch literal 8552 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_script_pk_1_0/00001.png b/tests/snapshots/stax/test_register_wallet_tr_script_pk_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..cb160543583a1029b4dd2cd587f898b7d4a09097 GIT binary patch literal 7788 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 vcT8V` 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_script_pk_2_0/00000.png b/tests/snapshots/stax/test_register_wallet_tr_script_pk_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..825d883019398a25398a5d20073d8ef1830a6164 GIT binary patch literal 8264 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_script_pk_2_0/00001.png b/tests/snapshots/stax/test_register_wallet_tr_script_pk_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0dcdcce99fd958a41c5f50ce84ea4d2c0bd37529 GIT binary patch literal 7579 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_script_pk_2_0/00002.png b/tests/snapshots/stax/test_register_wallet_tr_script_pk_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..c703c48974fb88e71a6d49e5d0fe1ead629b13f9 GIT binary patch literal 26008 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_0_0/00000.png b/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..13cf02337ab90d008764fe6854faae07bccbed42 GIT binary patch literal 8281 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 USSA5~8IW;xxq7kYX9({90mxhknE(I) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_0_0/00001.png b/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba8cd19e162257d291ea97bf5ce31f7f11d955c5 GIT binary patch literal 15648 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_0_0/00002.png b/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..345ce91d486eaaf55587eb20e73e4d09e8df61d6 GIT binary patch literal 8552 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_1_0/00001.png b/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..40cab42476717c7baa17e5a6580c6664a0302f8d GIT binary patch literal 7679 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_1_0/00003.png b/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..055f6df699b5bae25afd4a4147c1bba29f5fd790 GIT binary patch literal 8612 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_2_0/00000.png b/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..825d883019398a25398a5d20073d8ef1830a6164 GIT binary patch literal 8264 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_2_0/00001.png b/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0c4941468fe2625b9667fd686cd4250c3cb59b7f GIT binary patch literal 7695 zcmeHMd03KZzb^C1nJSDFQS@L_$F5 z_Brn}+8gyZu3EK9+uiNdg;lFoKVG#;>(>ohz%TYbZG=^;jNZGSI({*^Ov>ZIKf6(H zou3cPzqNm@*M`Y06I*UL)RzjfsQw^?pgtUfg>;Sf_nom5(Td%1Ed zwq>btZ)?HmjpT7E8u4JlqEoALi^<=lQEk^(9q-L{3B?KQ`;< zZRE}G!;iRie2gPQx$ohaMhm^oaml8y(Qrn%c2?J1_f?A+E(woE{q6M|o<%^B+sS&X z*;uZ%rU{RiyRfXhZqB3#lc-)QM@Q&ah)O8XYR@*;_G4S+_r5S;h++1n{TJ@#b%fur z&E{M6Uv8LyCLIoja?N%;xJY<`#}7si)n1~o@c1frj3VklzB}9M40`pV^HfvK?(d%C z@s7+E2$7wb5r_|FTSWv`iFPp>Lx>z;DL1m9T<`t)(xg(GI{abjKT7Mxu%N;SwiRy^ zM*^qpXt@(VMezCCgXhs)k_khYP;6e@AIX&_(I5y>TVzw<`EBq}^qVn$VV0__KQg9- zPMx{j5J2QS=)UZX6>ZAu8U-c`iGH&7)J^PGKbxPF*c1=KqRR0~U}09Uv9~3Z%(a3@ zpk)K=xg@Dh-@44>lp75J+fFwGn6Tt)Y(kP(qw*Zq5=*yZBy6JZw1^(Il) z-a8l8MN}gXCC0e>$9rsAET6jJk(_<8u42=xNy?PhmCD@GD)*=-S%OK^C@*=4WFBcz zybUv~_u59`l?m^uE?Cby@PoigKX*0|2d~|7x-A@ooM(m~d4;NZT2+@rf3W-AtCJf9 zb3FaopscQVBWKTNZ$gAIJSlq!JfkS?uo_x=7`*z^dmC*(doKrMAwsXl(f|}nE+_{X zs)tF^(JwovwbR()l@ZUg4!KKeb!@yDr&0}Uyqbb)S+O;!OF{P7qU=Ym70plQCZcr~ z{o?Gh3Lx?jH6}8s)~{L%9vXJk-O3ovwx1V?M9ud9h$$gK*JpNI3emBdYS%jILm)#- z*G2Qj+&$g>2?ZYzi{o*2ov|yEp$R-b>!)Sb9wxA>ktHnmPoq6Crr=Oc%9y&OoPR>u z74bafP)v|;6)Kos$Pn6u-JjzluDPvgs9^Zs{$0xic&ucQIfs%j3Scawk;nh5GamM3 zFV;<~H&?)R$_PI-^FGQI=Azqz$Mdr+R}95_Em<5HQnG}83rY$F4|CeSTfS=Hj@7p_ zM&sDxogsU5#XZ=PrT~+2ESAk75{Wo#2EG0C`OWJxi;9YZjb2Ad(jNx2A94B$L?*S# zp|qcZHBB1N_)1zNU6sZV|}hlcm_Jz#GZc+Byj@4iTA!+mk?8Gk`S;1`iKv&t?q*;2#_+ zPBAw(hlg_Dn%UXeW1P1qmsnfhCs8#T6=GSG(5ha}xQ@kQcRo11EV^NP7VFHzEX9;W z(jcOn{lHf;`ieK^+RC!VLAQo=g429nGQeZm4EFR#`~oDz-z?}d~c0_ zo*~MfRHBy0*R(*n!?6YBOb^hqqoEG^(c1)H);q-@t@8M}C8U*pXu@kIli6x3SE}={ zczkTrhcDH0I2;aG`l3}xD2E}OwJb09T-na6Zct;{2HO{|lfQL1^(!8KuWM9W_UrS5 z?1(!;z4n0AP%+C}Ugt5FVi%@i`{wfUfY`cs+$)0SwcxDZ`)CAD^=x zpf|!pu^&hGabeOVD#B>GdQ29|OQ*}E(*8g?L#j|&B47$+YGS|{kUXCd;%&(7wp`+IM+l?N_|EpDdD+p^^BcL?40#asIZBSUYlr$Khq@Z+e#?RKBo zHK5Pz%mQqKy*k1PuOis#=USKcr_%+}B%X^ntKtP}e?s$_qHVPVhqg)Qg$0$SIt$_a zwJi-&cXQcKa3nzN5e9+Gu7HD%<-y|J22R<#*WhDYL#p~I3jdqeSEcie<|6A^P636& z8@6RkkzDDR)vkIGtAD?eLB$R4)G5oJO3WPAh?Kq$yFf06&tTZdNlXC7Wh_;u3{U?$ zf6t#rm!DbrilE+b&yF*w`7#@!eMVL^)%S{za7kZ}+30uka`eK|QV9X}Y*~$~H1W)= z!H)cZ-S@Q)=|hJWsojUkT}XOKktu} zFVS^n_R;V{5uUpw^F< z{j9BIbSNjQydr~1_1pvWth+9gQl}dhm2a>F6;zIdR^;jOkBcyYCmi*2Sx!`5+&35j zczC&0%lHq`x}S)i9_GdXmFD+;8QSDaLEoObv*?T5uBVfw)zKLDU0AoEJ4|dy$K#t9J=@YBF+;`W5R@gxTRw)eF6B*b zr_&SigO;_^{cZ?LVQcL#t(7rOxb>+wyQBrC3KcBZz4 zha%Re{g&)#jDBANECU)Xl`c#)7-=@Ggzv3E3y#~^-BXhfX!ca9C^01;t|tjxJW;oa zsWb9utG;2k{6L!aBku&dr=sQv{m0rx)$=9>BCmbI`k-uKdj4Iv05R{-)~2f4yc42A zEX+7ekXV~zmaj~^$D8$#XDel5erO5Gwz$C04oB2YEClca051i9wvs^Ad8u;UR0O(; zI8tE#ZcWbIo>4v;h9)`O%qP`ImX5jx*tBNyf6}f<2ar^dv0}t~Jxjm}+v7(NYwxOsgH({3!H`1IX=HLWTolzZvp`RiArGyGPgUl zW{1(!E6pLqr7iUpn-uZFNr#D8p5j?LC!g+k|4k|WYx(bKUo3-=iBN>{78VuUHnkHX zgL^Di&st7_P^OBWJhy{CAN}jVAIa z=yr0l-9WOV8N-53;9RvRKD%Fxc|ySVVRcJ(JQ@f4+o&B06|#5Vxp1zOeQ!K)ls9b{ zOXkuDJ8e)shrO;lfbM=d?ixV*p@AU!i1vt2;gh778{Wzi6AtFK0o(?~?mDY#8`jy~ z9Ir7M6#^_b=~hBs`g#D3G&fe49C&+c{oi&>|KK>%boX_|_y1H@|0%HkYW_=V{uPP8 zBJtn8!(YkpZ;=d(BL4d6bAALcmlPjoZK%U&RNom>Hjuagd>+gJECYcm;MKkkN~JW3 zYt>&`S`cAps6!t~Mv}PDz(O!MO#{v-uds=wL2z_Ku9Q?KaWK*+9|#~{2V( zyyhO2C(-vS4`0+tY_h%=w;hrJcQ)}fV1WSB<-N%OgS$qjJNFweCkGZ*48By16@_?G z8UO)mz~v<$(fiUcsWd1+a(yASr$*+6r0U+8N*3crUdC zuw;<0@OZ$=q5xdy6z&bh?(b&xoIVdoF<*nIh`^)+92Rq7{3FnZ{%4`g+RL)E-;Xd{ zN`9^y6aUfIcosV8{7{f;8Z*|`^-sAr+iw8xQ}WvVDd%H8(^D&0zi_1amJjQvs$xnU zyM{6MGSbt%Gn!K^!(z@IF-FUie{}j-T4nd?)lb?VX4P|}_pe)*Rz@e`>ijdb*Ja8@ zwlSXuRWla}z-{!+AsM9*wy`b5EY$(HQ^!1?2F4mHrKS;K709mP?#m4jB9)8@KH5ns z#pB22N+6_8G0%`Nm=h=b$V9nQr7!xk>}xNab>ShbZiwcHt**pz2h_>PpG^MSp%ouOQ5qLMqVppSa3ydxaN`(+z5?&g9Uz6$~+Iof#pPNaveb^@o+c{7T z^3cUs9Po|#{bo8dDjoIb1!t~S0bvY^K(i=i@tB>AM0H980x_^Le&Eok=9{PG-TNpm zX|k;bkB41I|#B|AHBLpFV3mw;#<*cK)ALJE+oaBmjyABGj3%7y2Wn^-c zHSF!>j~fj}oIlN^8t40mF%S#$i1$AG0}xGshi7+MC2c4ZFH{&K=K52$=zIV8=3hh zeipX)R8VYCkj4B|7|!!DE`^x`TNQO@SQQs^8yvErkMX@y*8Kjc>8-Dj^wCYbK9kH?T>(gG=8CO)&KK60jnUhEn_LbJYvwEmuNCv{h@D=-`&Ba}+J z6|j#4`N&y|edKU${#o=(_2(8(W2qSTk(7o+9%eK;$SnYSY)Qs{vaN^)=fLcxnq*{k z_zZm)u)sEjYuax&Y(q?TK)KE?E~3-AnH|3>HoLc<&q7@O=2{AbP&?z&t?zj+5Zm0) zH^E zmBl~DIaLzywT@|jZ1`E+#ZV5xp(l1qE?!LOMNE zHi$?j-;#w{QKklGpiL*cfY&4JK$%%JO6@a1+Zj;YNyil zR>iAu2XlbZfUIj(a;fi$KdS=&XYBlqKVBCF5jg;;#+1x4@%WyxnKWH-=AT~t>GK!C zfE_lKW{WcGSUU7)o_L_8b-hY`inS$oc~h*%5w34;Z}oY|irllO1faRfY{f9sMa_Fnp1B(u>^;4K9oTgGJ;|ab#e> zrSi@-BTr0=82-kbbUITp&tNbHp|e9wAc-N)Sf+$BwM-g<^SJKiYJKz@z<01UOd`7= zb5)vlav&J|&2uvaKGO7zuK~OU*|K1_eh2afFs@TMqtUUYALtKe?}f`zcA`khFAa*~ z>L10meYj5Hw0yYko!f@&{vb`l>4ZBPgN$#5Yu4VGA4xy}vQFp%yr-mmlqsk@GZ~)S z&SyUun^_bJD-DQ{GYJ5<2ALHBn(si%qF^T7_!Cgu=#OmTN-3NI?%@EJoN%XCA;o+# zKc%!k($QEqtBY?JT7IH$tSatQ5;c_Hn5rE81qcbE)Eu;V9nBNDt8ZVeWJz7<_+$Q* zt{HJ_S`no#waGtTUnh%~NCS#4i_K%PEgoTW10d=Z^4w|2?Lngq;TmonIi|B5>soL8 zsnll}Gf0xgwg9CUads!#W)DYRe~)&ksf+}89{fV(k&-Iq+uFT*fbb}HYxw_o&u079 z_0+<`zK4yX_1p*d1?ZZgBLL2;<_G|J2-|3_x0%)Z5l9j|IIys5w0>ElkO@GC+`!=K zKrePka$jqRnNKavqHXE+T1f}MVT~qS5|j%dmNL2tD2W6Gmf#9!|CoGt`0h_%!T~aX z)bDt3dT9^Fpeh?bw^xSo8oQkmGcd;36=brb=|hdG7BHs)x0=%-+WtbE_c`OtQ7AWk zdaWr@OKQ|}xgj|{eV~i-+_G|*+juYsusB=*<91l7wkn{8R&& z|B)}py&%t9flb_t>59K^W(pej=lGqFCQ9F@iyN)pJZ`5}H+oUCzoUAj@u87V2^Ts$lK z8ksw9<|BJNtbII`V^hrZP}wa7bvpX>1sk{90=K!DWFX;Y8ww(TcqO_MgAuOVzLgtB zWoyx<{jS4s&3Gy3g*(BMj~v}7OC#U&vEQt<70|-CyZ;&p`ya44vtrlqW7Ap48ZJ=i PUFCk-`&8YD@H_tjYYveR literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_2_0/00002.png b/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..a105b1fe92eb4b8b9d1cfe834c6fa52c090206b1 GIT binary patch literal 27050 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 vcT8V` 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_3_0/00000.png b/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..825d883019398a25398a5d20073d8ef1830a6164 GIT binary patch literal 8264 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_3_0/00001.png b/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ffe4d17c8a9ccf2b77501e37a0bb27b73ef3635c GIT binary patch literal 7627 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 R28XmdZl@8hwWmTe{}bv6CBOgx literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_3_0/00002.png b/tests/snapshots/stax/test_register_wallet_tr_script_sortedmulti_3_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..c703c48974fb88e71a6d49e5d0fe1ead629b13f9 GIT binary patch literal 26008 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_0_0/00000.png b/tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..13cf02337ab90d008764fe6854faae07bccbed42 GIT binary patch literal 8281 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 USSA5~8IW;xxq7kYX9({90mxhknE(I) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_0_0/00001.png b/tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..a79e36fde90bbe6b2c529710c916a82770dd994a GIT binary patch literal 12477 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 WQ_{xzKJc>y9t%^OYgHy*kNy|^9^3T* literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_0_0/00002.png b/tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..345ce91d486eaaf55587eb20e73e4d09e8df61d6 GIT binary patch literal 8552 zcmeHt_ghohw|7JsP`V<5Ac7)NG8Cy&MMVb`5HO*c5D2{^y@u{6Z4{*w5S0=jG(+zQ z3_{Ex7}^9xAQ3_j5J*gTkN3X+!h7%g!*@T=dQQ$hXRm$sIcu-AKA)9m4=wKTpT2M! z1OoA!{&B||1Um5-2*gp!!vXZ@T6R{0Kr$+(cZ?rJ6m5_;USs~gaC333!-6A(Cxl0g zBQ;(I@#|13bCc%`M=D6>51#o;nl?61>wdelGsyax_w}vk+ghfG-8b8pvc^L4por*W z$0#lkLOzk}Cg1;{q}y^+fi~D9-0R(`Vb>1T;O*6@;}tFD*e*TKHH!VpibLU5xazOh z@rdF$RMRTB(;QCZjRq%~)Plx-JnJiig2?+d2rDH}Q?yxq<+*r|Lv^MBwiWu|Ds}w0 zgPO>CeYY-6Q^6oz_86wC)(i0aFAfs>iMcQcPnMkL?@$q zt?FF-2>c=#l$VY;A(ZqV`OiD}zc#Q$_@V@w!C=}QFhKkCn5vUWZO>df?B0q*Z!vkX ziqLq3^K%U5GbOm7+|7PA#alV73;x>LK4tlo7 zj+<9Ox!3GOl}w_vPO*h6@7sDo-rEoej^y7mw{a8`R}VF-(lGDo=?U*3Erq8LjO$hZ zUJN`uI#P2C3m%`*l@y@O|4w|4SUeAbuzvoO%o?Wfr(_N<(dpW^fB*R$@rG~|!#+Av z7~P%e`P+48riZ6Y7#so&W3t$8CrdCGfu|=6pZ+ke|7SB$2Yh}0hE$dYFN{aj0Sr;f zaDT(wcZ;+W5%Ug;rofbQRrw4E(XJOiQ)tVD$XXszwl(By60%yFCuYH@*rH;>)aiTs zW^%+u0d7O>JN$k9PH}N@Qe(+p*@p7>6hd{2clCQn{#GLVJ;1zLh4?EziTg5khlFWk zb6W3(*rF!(4Rae-l11K<4zl9jE4Pu);AvnIwJ_vAK}B;LVI8Es#Y!wy@% zpAdpiZ%Zv)QI)Rw&BLeH=zz(pT*0?0@NmTb?1YKNV#MA2WS|gDXAW-&q=U5iq%FNm z2Ko$PtneO#x$YQvQqywRIY1@~olA+#adYPl+70^CK4*rWWO=u~bnE+Og)j~>1j_@87;H8=CfFeFLhJTX3|iHxFQ}+YUMEs? zdR0I(3|U_uY8z$yvR_qFug91boj9SO^fXk)?xA3FFWdFughw0W=xAmmthNLDT}NuJ zhP(QCsI*<)^|@Z+za8(cKyus)%I7wk_aEB^NoEzW=TW;6F+7R;t5QbKJZHp%Sr?Vk2{Q1gNJ88QT zf9&nz3@k!Z8+1x^$mRQwisZ>#~|kENg~CRURV=B5SNz)IvYhAf+b&$&Olp-z1{kR^>Lzo@E)+seuFgNk0eGXuLW8H>!2LIJ_E6GqIeT!)jTocxD zvFWB7U=1O7#Ko+8T?=LVbfZ%$_aR@TW4W*Jz#i zfcv1XYCj|7pk;QCH?b5oBLCbWT%F7KAARKt45mSSO58a?m{<`kIUGuodAhoPNqAAm zLUK4rl1l5%lL~e7Uw;HnwSCCRYgQ%AlgjDSGIt|$>6cS5u({pQEbcQDcYCce+rznb zS~mIgK;Sp%8}xRhjwG-J=ydw>DeBqor-@hKZ+Ju}dz?~r51>#b(;3qHhGf*1_3`SwV7meaThw2eZ za_=X=lb9*I55J$G+f88Ke5n05n%TXu<&hu#UJTyXFDJu(Av;p3oR`qXe(=zKLV!VW z&CpzwmZ~||*KZ^_EY8%_YPWGeOW^bwQdj#?g$X7}yhC0RW$)5x>fV9xwE6bU$I#`h zIHS??nsXf^pg}|Mo%Cf_l?Gdw!gvPWU_KtQ^J6 zZ-h0i_dZ|B%P^i40#Bwmihm(};JVRcAx>BtO!<7%^lC_y>tLev4@Rhgtux&B3|rZJ0`DHIBbfsie*fx;(y;_*8wLtgDomL6&I(HyY zh%kNm!*(02lk=i-M&iYEKp>_t5kSp)gim6ydHJ1maZyubaYP_A>K;&F-7(YM)bHHD4J7)8@M! zs}%dj`V&32$?={_ok}>Yg&LbzUNz(Sg}U%>(pzoq^?UDB#(NqVnf{0&S1cvN?3&OwBK|s}^tMKdv@c{W(*(U2!B5W9Er|jvgHA zAcc~MT5Ou5hI{=>JkL< z)xAmW7({&M)lTwvq{qPOrZ&Rnba{PS=JsQ55|K?aA+fH|oD~AWlJKrcD*MvghPjQX z-zv-v98(T%Z^tftEIUfiUzko$Vei#aXLL#kg?RVF*@NhxGfBqvzp1IP$UP%-8^k!| zawHI2o|mZxoVi#|j@=B?qg~&RH8OpvPf*EC>t2lOxx~C|D3#@IzE^tp`0Xp%XZ9N; z{|Z!~fN=8y8ok}fM$LDqoWn@Gj>oQClBsq*Wy+5!GAr?qP` zmNzV`d>muwOas$1%m9tR?0-5(3MJ%BtbSBW4mW7?ZPBBFV1vQdl18$|KPOWnk(Abg zr}lHD>bX=WkARyvLoC^;8D%rBp8@L$pOjl%_SiD~W=TsBb7qw_ha!6TU*VKAfT-vX zBhbc-UgCb|pn1LBV&a&O%vkM~?XSBitzoa{6Cfgk8(|V1qhY(q4?sfJ5Z#F1!uZ`U zNXUYh`jmP3NxM%Vi)2mLVTja7ohILM{O)?6wB7NM*CB&3yG3_Tkbk}&4ue3*U6Y!1 zgpYs6O|251?Ga$k1wvq(GNPY2OL%#jS@cuPZ$i#*mJnZ+#X2gD)Twn$VF97{!0Xt- zd~U&`aAhVb!;AlT6_ucsrP1u<3~Rw1zt(DM@af2K449U@%2MRJZE%tu)fI5(l06_~p8UGWjnPF_S$uaeEI(LtzFh9=AH>jPA}YBl3|U1y>t~ zo$wjMGWV8$tOmF@POFars~?hEMD6OUfXRLjb5_9WrwUbuXRgVUBc+CeHvC5$A54U_ z%=u{*Qo3&7A{U6VbO*qK9+xGGJORRvWfdjckPa=x~!LU zw2l=4d^&qAT(h<#pks4^kH~N;oq%^+iI`ZuyAs+3-yeGt`(?HnkY~o;hfsH)<11AL(@m9Fk`1NZ6TY!FY#9fcq?@v{fxvTE3Mt8fyEH zQ+Xte5x+DOjd!Ha%pj|Y4)|7B^Dh;g)mgD)^(>X9a-$1VM&ZRSzmGQJ-J2G+d`b-R z>2D0BTEnWT`??1ogrdZ7GrmC5-!3&;sW&MVnck$@!;0!UkPIlDbq{?YF*$Z9FN!*V z{+Yi?uJVNSqW>Tj1^N;mZRR`8cQ!X)QOHCZR5!_=?wa~{-dFPa1gU#~T}8w7L>xa_ zzbExJb~~8n|FqigSvbit_?i{<-za94C;F&eE3Bz*?FOiuf*B#q$M%+xPYTy82;v*G zB@2cvC*j|n#nuK^yyvdqPP%MnECqP4p9FDB6(EoA5@_FbEMCfHBAL5nJxq>87qhLo zc|vOGaUaI7b-xJP3$NL)FC@D-i^-XmmB_P_=LWQy&;#~~E-r7W00M;04VSsi)+k9u z@auM^v&y{SOlr*@7A3WzI1}>T-eG6wqDszzw}*7LGYi>>9V8hEk0@cFm#!3z)6r{{_@TxPcpN6 zUTZSfQtwiZxWcsLu$TWeqEu;YHSz4NjM(&GE~-B(X6MEsdN9WA+v=GLYq7!<#c>tJQKb3~bi*aih7XBvzCX>o#GR zW;o=wie&8_8Qt4>Go>va{W|K~jKprm5ho`#7HF%N4kb=pn7EK*m9rApbIfLM7CiE^ z^g(cFlnU3l{m6zxA)&zjxn_pNd}42oSss5m(c3S#=+Zn_Yv4BdXe86t@1^ecqL}mV zLxx^0)|j8UZFf-4iZ~9wyLP-2Km@VR-)lMi+MOm8f7uSi>6|STFUHCHANkKa_}{ky zR1Q2LsJpv62hN3n0I}dpwQ7F{ciOEJmXPSQuE?Hw4ZD!jcFB>{E|0c(WxIE$Be)sG zhyF8BZxJsPzmYl}o98e8>h;*lu1!fY!GILzWgPE+9w>vx>x_2$<%&DMP`ruddg{QN z4sfXT9BG{|oGyaBxoU=}3!hc^0p=A-9t>EU;sVIm>b*}b2Wg2WwejboXC!`}11Q+u zwJx$Bdk?!eW42-ffCI&-|qdKY}qV4L}zKX(XRXVdc z)=o);GvR0^NRo*r<9iBDfc<@^eG7xGZxO5_% z5Q%Ow`6(dh{yqUwYbM0WAiSWoHO>aLJ@&po%inm?b^0i;Iq;=yIrKp3BdxPc-oeQP zx37`*^|xnMBKc0v${&=VXNPwr3CiVE#zeYFJ#>)Iu}t3D>_#S%eG`At@t{QIIgs=B ztA2=f_22!w-}L3jAm3{PuJVN71^PZLe`Vt;kZpv!)OEITNAI~p|oD|vIr{{*F$|KU^LqCbf6Qcfp$>Jxqj5>TtAdT|{25z-} z*Hw@<-UG57D+&YEV`uX9X!XR8vc2e8|2U$fDc%tP1+!P}bMg!I8w2fg@J=4YH<7mP zkd1wflF)+M9`bPM0nYU0GD=;E$k>+QeM+uLMthW^GRrFW-!@3|WDX-Y`Z1W);~XpA zmg`?V@%Db=?Qk#ca+;RHo6_aM`p#6B-)16%`4C;8Pq={%G=`yaPx0hL z97y0Oe)e;UADXQ7I0@*}rRMNfAGcJ=`*ui`8C*KG9Y3Wmk(3s#3f4;8e^X$;dgH`E zWy-x(BgX+(2JMaEND)qgO)5l^E|siqBio&7F6adwG5J(6JD1>7k-NmujJ# z_)dF7_IB{ZORg8Kz4(uqISQ1xQ2Cms?^ zPh0_mT=cKn@ioQ^(%7lbpzfNyj#x5C!Cz~|IXYH=H z=ocn~K1M|SQgZ1#SHOX7dcCJ;eN;lIcmOomhI{cTzJW(fu_Uc7HedHA&49@U9u|jTejjJHw0r1L#a6xEB&9(ErojM7Z{@;;9Z29+JG+Qgcqe10bbh!Y&PXqF0ynnu78C`s0IS6|x{g36-fzbW%1>J!q+>QT8~N_`A@PM?(rZr+8_tX=)AGI^fFS*_xk z6xSj1usZ<7a(^~gTO|ZG)$JJE25=1by~VFz-Pf-}nbw@qBiVi)6TUb|>ztjhcH%Nd z1W;3)r+-eX0hO8Ce#~*Hj@3(Je0H(__w`)oM9vHRr%)d$#w4G(SB>Eg~sOOkY ze4ri{F6~rm_r)wsN%#P!F!kvdk<*C+0Q$Yt-`lbNQ2U&d+BdRgR|}#Cx7Pre_nH>F z5LEQ5AP3MJwRl~rtSI-Y8Jz17)SyX7PPMNcUWY>z6FgW+0B+L5?3oX3nh!h=^8C!m z=L1Y)X~)wE;JCs%G-==PeAcng7||j&Kv7G=(_PflPZOwg#r0?p=(=ru!TetJYSve) zgJePYJUr~|FmSEj68TNXLM+u;jQH6PK|rV`T~IesCj>{on-U9pyctd2v0BxQ78ym4J90`SbhT=llJBKA-pD^?tth$7N5~ zLkEu?l#-G<jo()ZAG^WPFGW&u^IEJ_5O53*f?@U z=F))|(!cHb*AMP*4r8PZo!mzbzmWcy)4v}aUKe*&S`xdZejIrlXfv!O0MmcZ`X>AN zj&O>NfR@Tgt+GT!SE`iMeHV<>pf*_Qx{{&PX;~GiqtbG>p{C(Q41}tO>jI!GR>#%-(sI>}J`Fq`5*LXyDQ+5z zg3sj+U{8R%s-UGj9&a;Elu_o)+T3BY^F53LT`;EC35;GMaRM%4crCQ?8D7#*X}O=9 zd>XzcZilNmc+eVs3=oQDw?d!KMRlYNZVjjP)cSSZ34Knkj)L4!F+L8y5zsP$`*f;+ zNt%BE@lz+`K9CTEa{IFtNBa65OKZCm=%+krI&M~FLlM~4fGYjcA6v$v26#C)j)VDR zfk2S|G(NWNQDT<%WQ-M=xpvcGG1WnwP+Ggq=XXIoS8vLyh>5S%EEzvVuh>Njc$q{T z3f$js`pm|zsySLAqR$nx>UaeyLo&6iq%LkudAjCT>C5gBw6q#ES{DRO%vepNAkQ9> z^~!Fr{ERB5e0?Dxuxl+m*uqqzA>!53H}vx{r4jF>KGi~1?hVYxm)IPyINax~B<)1A zfGNUWa9kXO_HV5V3d!Mq#W2N$t<>KkemjNPz85h{(zG)zS=!(x9}wslx5TCO3km9i z5CtobpK|73iwL4jFN{*Wy`i+zh{X_{PG9*eHau#f97kv0UppA4TH&c@T(M69f3gH` zJ~^7MFZ!*h&9Ka-_c%ZOHtno=?xHhBX=ZYdq|7PYw>u4m3Ncja$!*T7Dw%FnYsgzX zhcS(8zul6a{MQN4#AYT@A{4IljDx(DALS4gL+mt7vO;_CbdwWl{{j~TvFgjp3@Ps% z?+MaXQXtZ-F-GuhA50oKV5+0p|BR=oGdJ`$@N+dBW`(LSoc`t&^U?to+3^O##H-=q znou}W>VQh^wa?!g2y1C<1_NKEU!{MF($*ZEzG_{tVaKhFUH%!Rp1gmrYY3y#5e0iH zyy-wyqn?dxU!ItlxWCv>3q>n!z!gLDuNHp=&YZEh->Wdl`NM?9NT_eNThaB<`(xKy zLzVUaJ`OHvQES{xizPR${5#XH7|z8`#Q;_$(0cgJAQZhi#z?%l_D0r_5InTFJ0e-3 zsj4}-r040*R2<-Dd;8MhSOe2U>0*uM<;=cC@r8jGkCkmZm|<;iP? zb_R$8KVJ8kY64&0B&)$vTNa2f6e^YK_Gq%Q9*06@W=@yLAlGCBA(G#FMPJK+*ure{ z!L}T@tw%Bg>{Mwo?3LRhZ#zWRKU>(!rF>mC4sY3G)$%zEtt7$H*}Cw)*b+K2>-L$I z(3D@tubO*)=>uX5ztU8`PJC32^_V`8)Q4w2QH^=I+@pDD**fPg>NSz*HErFdalY)W z2GrjejodyzBn~^R{aIDTzknRh9XMjV#@bq2Gh>1$f7$hlI=a?=>YX5GAxWl@TGrXj zVj~D(Lr$VpgZ@E;%tvR;NHN5(VzID1*N%F0y1+Q=uBMB(9mX%Uf;#)2lynmOjrTIb z+dy6$+%?$TyBfZ~sNZxZ#_H3-y|OAf3#pkl<(Yr_c`KKD>J1(MM9yOXVF5kO{?1P4`o%}9VEr$=!{kP78V9AcyaC9ylu7)=Rj zyLFh;tFoFQPX8`{6RqRsk9!PR688kRWNYi^eQ{lU1!O>M*9;`$ecKES=cIJO`@34P z=Rn59o?a?Vh81s}90y#dd>!4Lvtftgw*cv-fXobE{GoB*k(Lhk63A0YZ#&yi>Qn_n zj#Xq`P_19jvXRZIuQz5iK}$uMadSpFVX9;x$%I>xfwypZ@E})jz)g!GR! zKqTkk=+*kmoOi$k;v84B?L}*cYteuDjvj=yM&7Ub_71W#yoeweQQDxT79Lnb!p{3H zJtN8}yMo^KeK4_ z)7?7$46iu9>LpJB?GsyCyEo*xMj?5YSJ~6gadq+jKKv_i4Lg0<<>OLvA~HIII@UH7 z0}HvxGxMZGm_=?l_@u-Qof;7{T~%>n*u&C-}J|9L16hQ z*(}ohNCtk*gfZ4(nm)AChi@Mn7u+xOcRd_z2IgoK>$tI8#ZjGmgBLfpfzKhbzF2Ff z{F*+=fFbQP6?3yaR9zmX(+cH_CGaPr{&qT&P@Zm#@>IypPPa*aM+#{|ZoP&iYsmyW zFqNn6DxI>S+A~Mdy2uvlQu2DF^*4cN-s?&265x8}o@AyOHAzC7^ndfpgz?6oj}IHd zKgGFXxUsSM?VVzLP3E9Y(Q0Dfx*~otH50ndIk=@46N}|nJ{Tu#u~^YK`Zjm?VP9h9 zBaZ90WSedtgw?}w_zS&-h%~95D{wD+isrYxS!FSaYPlgGlusOL>78)81RoKQ5A(2H z9aQvlJr!&KZhF3owz6+CWR=f|GNVO_NyKmhmok2bfn2O9eE()~fyH7a+iYs~b{}h; z+TGRK%)>HP&;Ugab!_aFkowxu-8>lY9z9=d$s%6sF<_1Eak#GWDrGvTw$wRebX#yutCj9OUOCg*nWX?5U<{I40Rx>kC(VT9)sl zn~_E{T@j+7{&~Gk?&<@$&H^;oa*{_tFQm>Mqpc{)c3Cu`cG@#~82F8v@P_c-TXBE2 zeRvn_3)@zo1Jw3_Q`+9Z) zOepQ?e{t@UB580Ua`tM1I^A9*m}AutCQ8e{=h^?~;~sJV6}XTZLk9;3-6QcibE!@h!A*WWTz6iXqr{o@%^2|ahK{CS<-3B6jzHsp zId1#+irkc?HO9N?)qu!ZH3RB~9hLpa2lOQ0zf%hY+T7k=(i$$gK6-lg%ksJUfG*!^ z`eS+sJ}w9wE}XPEyx!gy)td1G-4cV0kM_Xj(C?$JOR9e>hH%^AL38V!1yzF@9xbf2 zR`8_QGiU;FkjEz{NGjUz<5oi|XZITS2s_M8pU^MklXC-t@mgSPkNJvN6wbOdNaGwv zY`abo(D$Os_gRUFh(R89pk=l6Y}|BV>IXWHRkLTq8S=pUteDv ztkU1P57@TZxj7Rf%8UILI76n9aH0;G{Oc_gV!*o6CXe*9tH z#KG|iV%&EQMBaaq9O)NPcP+?%JDRWGi&CKv-mVs#ze@;I9)RHt^7@HA^qKMfA1;3A z{2MWQdX^vd%>nAI>{q-^w`JUBG=={PEmd)OxR}a1=M`Ol6bKRBcd!#HE1{dcfsU90 zo!5bw-q%;oq~&Ud^u&zRY+MrYnyIs7B+>so_v@iv8?E)w3uv+-ldY9Auh)~zp{ypX zxnJ?fSjsUmF^?OXJ>1w};=5|k`o>Ft9u6*G`3FrfNYaR?bgr!frEO#T<`O}TVEP6~ zP;G{8MLKRVir0j=6eFvWmq>N2{d$ep#|Z2i>XSX*F8yd+nAdd1f_@%?z^G|iWgpz% zb7iV9t*(?e8kEShw0(De{3Dka2?&preloU=6)^4eWfuFRUMdQOYiWs0knn91 zV(#h*k*Ib_GSCS+f{llW14Cmp4BPHLKYO>$*%fVRU zA;KNr8sIaEhROSn2_MA-oNPLN+fvYgaZk}|qCA>FbqB0?!PhH_Nu?stWItX{u#w84 zlJ=n_&NG9KRk3N;gO;;W~XsX{NqYFT=OOX!04@`jHk+E=tXZP}~rh=n$$iZrXQ zlO78KiJ$N2=dIiE=Dx#&T6_%XYkn;gTYaVp>LHBB7?CdT^1Xp7+c261Yjav6boG8* zyELea&;zP9O56BCc*THY+s4I4C{%)e;7X^Ib&BDL1%RBO@DZOX z;$^>L`>EFckgTvnh3&yD?A3T>mjrckf_l#Lj8J37oI>7IdA9b;`sLB`a#MLxcC=M2 z3rvsdX!Ee+(eTX^EP${O@yg-_tGF;#|1x3W+Na1?Tf%<%U4nMaTxz=B9z!3;MyBgtxZkB*qFr;dVDaBYZ|Bn6f(k!#KR!y0(a&KUY~u*_mI8ciXkx>; z=yf}4Y&zM-mg(nzs7(SVS40q)q-ke(5>$}wL3<2Ir8HLE3$-s|yM7nHfSF~f5WD^)$7AO8Quh^~fuPN$!nMn9P4PaMc@7vll^7tmanz7ZeYVPF;ICpqyb+Gz# zTy(F%FB7ZdrkPkZ7JUM&7~TT9jCq!GvUqQ&lf32eyClrtIxsAFB+m3`SL^JFIW z*PxdHFQ9k^tgP107!4aaU!>C%cWK5M?t4v1IzioWp-r8dZ`7FEYH)CJape>{ra?avA>_mOgMUVyUEAEw}G~#ob#Mfp##WWZ)Jc%YRdwl-CLPc z=Sj0bd@#tX;&>63@vu@|d6Ir!4%ZJfHkjK%RzJHpC4#`<$Wd809SHCYYxOiPQ$eKc zGC$Wl74yY9}m~2x6U7jQIj#3u^cH*rZYgJ~(yU*;}EP$Ios9jp{ z-5(`8{s^cJ9H?Qc!FcL?ynbFk;s_%j7S~ECyr)<9 z#%tTX(ySv&je3jtN02H0s{(R$WgW0eoAR0S+wAC!o|47w`S?}l*z)fUAY~WeYg6p- zFJvSzE+L;_;ZaCt0(_#9((xp;M>%VAArRtENGAbQvtkii+PSqfb6f|dB}?*!^z+a>5k^2R*5MMQlMs{CLr108~kC zupM{kur0+idq{KQM022W)xeM&j)T28%f9fvrL|LB9tbq`^IhDT{xNI-Y5cf3x^v*# zM|@pbKE655&qn_Q*lRfBMI9{4NJY*!KYh*Xz_GIj0)AWl5mTll9&pmYWt>3^8wxqM8Alj&l;mq40G8mfPD{K3#;B(OH>_S zJt(B8-U%y#_!UE%qSg2(Rc9{dt5v1iX^M=>IhY*I%RR_Q$-6ZsW+oq|J`SAS{>Ui? z(2oje9*UqHtIN|nj|m=lGq`CgZ&Dsl!#x*T)rtHs}$!6J63(3`G zI8%85ZW%1SPKdm`22^hFxt~&C2n(P)*6_0_y$@UsH`At2@E;(4LjIW+4(0I@Cs&;S4c literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_1_0/00001.png b/tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..005a6ba0b2e623de75bcadc86ac59abe33be269c GIT binary patch literal 7749 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 Yiz3;J*Ywjtvycg)ZFv2yrd`;-0O_{&sQ>@~ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_1_0/00003.png b/tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_1_0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..055f6df699b5bae25afd4a4147c1bba29f5fd790 GIT binary patch literal 8612 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_2_0/00000.png b/tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..825d883019398a25398a5d20073d8ef1830a6164 GIT binary patch literal 8264 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_2_0/00001.png b/tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0dcdcce99fd958a41c5f50ce84ea4d2c0bd37529 GIT binary patch literal 7579 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_2_0/00002.png b/tests/snapshots/stax/test_register_wallet_tr_with_nums_keypath_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..c703c48974fb88e71a6d49e5d0fe1ead629b13f9 GIT binary patch literal 26008 zcmdqJXHZko_b!YT5CKsHfzUeykluR-X(A<3l`g$QXi5>K*C4$~??tMBbV!8IBZMM^ z&>|qc!#)0fGxyW|@W1c8Gw;lMzU<6N&Svj@_Fn5*&w3W0b+uKAA5cHQ!^0z1S5tb4 zhj%Lh5ASv!!ENAf)F##MNDu6Cnzu>IDY6CCl`9lW12 zy${A)@bJR>oun&KxFeh}?&N4c*dppV-C=wBB+Dxy+==jgydMGS{$plQQ#HG8x9|*Y zgJr??6nK`56z-r1+go@r%d#TzF)-ebKj4;AstjPrX*SJiAAoOct@ns8|IM(~*ecrk z-!l}365+T1{bUq67}&i>i}yUyfb=EnNT|mxyn(u7y(3+2ydU;66kt5OXT*1j@E$#U z1jdtlE?0|(*NxYG8}II&|KH#I+vRUz1S`6>N@8)y7;u-``=+cH)6(ideU9~Ljfs1| ze=QbwAeD=C#={G-rKl`+XsZ@9*O)wX6MNzBoU`6hj%so?L+v-URdZ@+O@4Kd;Jtl* z!Dx(EiToL=%yCs#jms!@$XN4}%F!-iRq)a!zjstyT=5j|cL$is7y{$m8uMP*^K(Ks zfi-myF1#yZbPEl4@B+!XiQ5LOerFeR5+^4U*~O7IPq3HnaDQ@x_GTgxA0_^d;$c68hs6_ zVt=&BxxKn~Lk2JD2x>gVRw5=k<(+Ml4!X@;B$kU*9Nbr5Bmd0!jSJzCa3@@^Y6DnD zPS3(A#T0pK$c#|zpAE99#Hn^Oyi1!I+#9{-w;Dt&0UFl|)Zm-Pm*&DuC2)#!d(1aCI`L#OpcHjK;1M2;>l5%6_h#@S2`&F?^X4alLlk2Ms@C33{|W7yuLSwtUvOa2 zAFrAN_Sd4rV}bL^^h|$A25v7qsc(LLcW>i`MCo`ro@S1@<;Z-%!?Tnrh&&pc-S)W@ zjgiL#$<;1CjO|msai;&Y^AwMS!Pu2eJ*jn+{?2by82|rUHneu=SYSZV)hUzVfJ)rU z>F49Uv;NA2fWS%>xd73cC+oi0pA*X@@4C1JZy3o@I0KjbVX0gl))5=X&Pl)-V%sO# z=C`NV0pBnEFQdGLuaj8RVKy?HTO-nw5fIFn7x~aN0EA%S<&w^Trmk#+%pLL;I@mP_C=9^AOFOhER2iG%=WVG%PO{ zxPKTZgLNM08=$TU#i=5)4(n=Hh|U3$3kih=1dJAP8oPQZQ} zRphG%8VWK2~G$)o_$pT#--A#?EXHagmCa z-L$@ETXo^(ic3}HhC>GYolvx;UL?#y*$lhL%kTYFJV`xC7eAo71d9LBnlfy(CI0>z zouXa=C@&}C=CbkTP`tULfMZ|ES5#Tt(dFj{AuYhCh|!e%8tfO>nk+B3J-eP&Nc6BI z-}&d5OVBFzkv#M6!tWlu+WY!#$Y9(vBY?#*BmCrIf$WLROjyG&=~x?#N9!+-5$Rd+pZuPp8)fC?+Q3A-+JHUSJWMBpRtoco-w|EI!{N1eU4J@B*-;3xMVCpoL2ggz&^OyN zyj>yooZOJkt7~cZ z4B`hdKJCM8)$H%)^`geG!5xlnX!cvNt-rju@FL-#Zr?$#b!6{s4CMzlP#IF>&_Z?kcW3k&sZ2Z|;l zvsqKBr0XqXr0nYUu$Lm(@)Yq7g`o<8F?XF-cOlyX(UVoBR66ed)?vd7@j}qY+7}E) z`t;qsa1=|Dqi}O>aI4he*k9mEOxuyjtkwf2%VvJ#t(#`p;Un-RWs`W+4#=Vd7 zaYhnw_;vw@J+aTE&}z7Rg=a?b-ig<4>;YIz0pj&MKxu2OT#vp#@_`|rvR)R_?p%h( zF2i2=b~{6B;>oE|ySon6W}CK)yPm=H1|@V9zu*1O#`#`&N>w4e4r?GB_IBu<@+7&2 zlz&n)ShJsdLEbgXu3IoAf5*x*f}8odQS3Q~3~I82a%YMoNh$a~dK+d`#NQY&4AnbS zgm60^8NRXa`$ZgD3_E1tO(UYL4%n*-0eYm3y6o@hgqG?b zj!p5rDwO%48(^H+QEQ_&-t&4+F#4;;k_vpU+@0)MxOwwh(yJ5I#gYJ2k^Mf%U#Rb2JtvRfW{C}DRbnRK=;oKga&ie4Ak5+p zc6(ggGOZV{exor&wI`pv)YOz=LuEje;W;IHE#;<&3n-CN9%?f%m^Sr}hVhPPBI<=) zB7Z*uj~bW+LVabDE{HU0MC0iAoQgN7ESPvk7G)Ivy+3yH#dEHxf`hY4-%qPMuW}Yb zZvM0C(MT^)&=qd8x@DO&+SMt|tHfM+Zk1JhGt(yBO3{ug-Cd{SdLhSQ}OrXQb+E(IE{$9y^<7}P`RS`)t#uy6ie zr4|}32w=Zh&3UYpvkrs+%`=G?iyR~GWf6*~kmoX){2cTluLtC?+#x5X*@8@?%y$v8 zKbX{#=Q?LBP@8!M0>=(|Wm4gFm_xbjmY|uWw3T;ViEe8Q z+K!YFwg-7-S&Az#KCLB$F?&kwkyWM@Lz?`~!^Qq}>^OF{!$ikIC9|wusVC#wbTsGH z>odM>BjYue%@MV-=eOY@*HLwG!4hZ<^h>(`EVWNvhaCO5xU5@us# zNV#1%-^9K@c4}R4xuzXmKk#o~P!srgpFNkBa;1P4BR@7EAafD?7v+H!%oh8oc=Fh< z>goD;zHUbm7ysL(RNqvBNp$a9x|=%tz)&)9?d?L*=l;yNzB4oNgX710l$GAbV^#Ui z=-gcTYt)<1?{(hKM5@Zu7I$c8Eu{+XK1fS@p{j}Y?S;&c;!yM-&oejL;sy+F@5h?6 zkM6?LeIqU$m{`xs%ik?dKlD=jdMybx#=HCB&l~<#iiTio@-<3;crgAH@8byYM}+^E zR0BPfpr64{FF+_Ty)@8p@Md1)#%8gDKSfiA((Guisp@7~NM_t6Lxn;KX0tO-^V%&- zkiJvOgl=JV=tDJb6~d*S^p|diWPZJTuVPI?Xi~3kQz~&Y|Do0KRqc#jpHK6EUF_eT zVtsQa_rdkEKzJtpwyk7}{J77bL9bR*r;!++kfYCXuF@&u2g|82&t4y=KFnUNLv^tI z`%s-XXIb;hVLHV5(oS}SqxfIKrN{COGDmFN7f7VRu6N;Yd}MMbMJJlJZ5w8HPnxpI zaL|U?XTH0-Vs!D`*1PPwFf0-o?@UBl?$lIy`r|628dYIOhU{^DPPneHyTnxjauvx0 z@a@iho%sM0asGrql~2J8xy+0y7HU=2lNysL1sdy!gQA18dGG8C&xL=)0BCBHD6y^j zA`+2v$3FC~dYncoZm;%p(xc!bQK>e*A_v zdCX7Iz@Yv#_CiMI^ZPzOl>raK09Il!M~U%yK{%f3HcBb%O&AL7pIM z^~&!zEjqY_{$_;~%g4tF>#b6)CC(;i5m}Tw=KbzJOGsPdQ$r{xLb;=Qe(il-YCSq% z&FpQvyr(;ud@Zu}g`5Cm{~nZY!4}s$bYME*A5o=YCqjs8TQe&yLudqeNmbJ;bk^R>r}7L_WE5KqR81qCiU7)46J8moVoEzPola5*Va}Yw4!s?TgDp| z+825dOY$<8wLCB-Fr%1665s?TH~U^1z-(%!YiFIHI#$VU#qOz-%k|L(L(gu(nZ#{2 z#or7*HMebvZE_aBan{2o@5J^l@^v;^ARPJ6q!C`{94J+u)CR?$mYZ{7RO z%-gegppi;;I3Fhke8V1r zA7uNfgx4tPL5-Mfb{%EUQ!#2;2WRz z5nkgg(w)MR06iv#3z_rNIIY@MO{Y%Ez_6q{9ShP{w*v$Nqb&CVV#-H6dd20|>COX1 zR9I$8J`Pbd_du*Q2`Se90Dcwo^r<&0fVhExVmeg{Sw`;KoSC&?$@5$WohgAH0dAu_ zb~=aIww}epVpVngK!Z)kf)aDkSA+Sg?;StMl>T|<IM#$0vR%aI~LW|CH&MjM<`>mF-|JrwsUONRPQ4f6tT|dTdNe%2BRhz{Ypu= z!R$6|#QJi^&0cLzEtZ%TB=!&(xLb6RrsFhLFb+~+0b*@A?F1m^j@aEg;cO+NDK4E{`u}49r|2+)t{n>9>a1;1A+4HHl6n? zHZFm!C9;u{bIh<5(l(1_pZ2TEOQjqCj7XhrcF%KOP)%p3?+!}IH9V*g8$S+bL|2gPvI$=>S&;Lv@ zXU8;FCFG`vM?4KvDx{ZLJnqb~6RYA=bAoj;@O2Zxye_k5mib<9c2*g!ofPh!8(`pV zHW}s)!bw+F&vh7w`W`>1#_=9pq~!2#09Yg8Vz? zqda}TtyL7_lAXUgJa`!ots|U)BOooI&^U$qYGSy5(`S3L#*j*}v{O<{%Y;vRDveRL zc1d};{TB<~0f80Bq>5#u-Bn$XY6(jd<=N@Pg*sUHBlg)Zm^$^8&fYK)I`7xvXyUx1 zmPM-!b#+SI_LyIZ^j4hulce1`=YL%D9}k!fmBX#r?}vuI+L$~(apKuARkU3KE7Eg9 znAefSh>y>_n*0h~_@uJ_R1-UX1Si8uREDh16zxcH6_`UBiHp^-28>$+`UE*FkHkqMu z-Y&{G(a4EN+LoW|Qf`I#h{h2A`ofXE+?28QY2CKr?EK#~=Ooe;07`FN+TGmS_Hk@i zt*%_9A7q`OpS4V*%Qkic&T4GQQNdyJ%b+65&5`)ySJagDhr4eV^8M$8Mr<3FU#7bw z*&v$>Ohf*xo@{YeE(%STkRD%_bCgzJ-8aS&`tc=|!BBG$V#(`koBJd!idJMR?&sfn zaBP_m0fj6#ijI5eL1m28kh}zD(1iL{SUq&bNNYfRsvj9HU{vbY$tmMBam5#BC0F?6`|YmDRs=xV6k*#@K94<&RfBVBU5LNG z=S3a>pz#%hv?9KDnv>uN=5=S~xy(Vgi1*~A8sWN4s*DS9$FnrlR<3@lm)=`1&po7Q zk)AkLRT51cc6Pt1fTJ9^w!9?VJHGX6A^-L+GYDqoPA^bpICwCf9m_A1Y=9$Eqr^Pr#7f zlKC1h#?-)MDuH&(4yj|jygE-zL)gBS2$w2^CYplHi+s1U}iEu;eW~3TWs#6`M9tb%|F4d{h3&&5Wt$DeF~daRYkWJ|!(l zUUolbIS(^&n&{5|Ch~>2?m2F`-^Iga`Qjoo*z~Q2iNX%0P~EowSIlE45gINigpgL( zfHCq*KAq3N!xL2z;!NS~vlcte^rT-pma+Pt1GG4?@l58i{VziSMd?w0I@}X3iUUSd zw92@iJdxb%n?7mpt~tb_#&I<-DRlnt?t|1 z`mmyv=UK&^cX39ylONrUujge#dSdE^e^Wm9B#jRG^*r#exSIv0c@#GBVRt+PV@U5Y z#9DcDc7Wy zBp;v8leR$!$7NkQ%+~^8Mu)BnQU~41ZPnNhD(Xo?(kb}zs@Fps#9W57NS?;HL1tP` z4>3^6$aT<4Wu(oe`$mADRb{?O=R=;iB6|7gv%hp{?m zZu*5K-SpP~s6XTC8mYVWUCHp-sOa?+vGgbTHFa03lwk|cTqN>MnKdqxnI_$%GVHsm zIGeS2_sa}Z*QaTb_F_#nsnU{Vv;bzXgS7OgSzr&|GyIcU!1JzYRSzL^tg-bZy8^hH0NB(685necKm4F|2;@RZpsHlCTi( z*2)Qg7hYk7@&>)Rhpim&N5wWfw=cLH)#rtoe@)0n+WA6s>$rS)v%Sm7ac6-|tcEIz z^5#{z*JTP1vpZlm>B!?j8MW^EY{%iDTj8yvlQwfr+p#|^>FoZqq9KnAghFV) z)k`nB7@mD-xOfqi$SdAciyVCB0UUnFJEn_n;*3$mNo+V8IG`D~^(ZI#Z}JB)bz&hD~w_b$(M_E9Bz8!#mxgMyR$&>O4=XH@8Y zHy}guz^;(wt!=k}cAl8!k$aX5Ur5@~uW?Uvh1#zzx>!tn6;gHj*X@7{VGV_tR7tJL zMVDe7h!}}aYK@1l9Kp;zrlBipWus zyv8J`Vj@q%yO=7pjpirJ-^HP?%%C^O`h;DhsIcg1&y}TtJde6*)<{dv`(-`bKAr@y zc!P~c!c^RYabMbuIsBOn6mLHAuo%bn_KJ7V7eEAwD2zURRwRXv9E0NOq<4Pk*M5~& z>l&KFcv{xH2ea_ry%rk!?xYUVvjrOKr=8c%dNCz;s`!m;R&BVcjVM6Utl~sZD`*_T z5K_&Au&H}yx+&LXdbQRUQ#BHQx=~$hUFOO*8y&XwFIt$gH3?t=8*(bPZ#R)WS;590 z{-~J2lr$U8Z0KVB9qD$9A_p$zNbc?<=n-V0xSixo(tKR3bRV58wQ$C-YdF-)w^uUl@c|zPJ%kCR{{pjHuy8T_6HD`B* znZ7lvaU+4Z^@0Ic5NNOxBD0iR4^BOw!;y{tl6YHh(l^U%(yl|4u4ZQkmmFMhqLDp@ zyt2k=4TUU7ue6d-S#j4po7`v!keA6jqea-PuORunt?Bx;)_NnE&tC`jzSTn=WpF?H zT1Dm%o2*|&UZsulhBl&`j`So{eS1r_3Pml)LQ?wMY?pizIJvBL(v4KCMGbS1TU{VK zUNn>XV-X%i{o!U;yqxX+K#xy5Hej){0{K%K9E6C2l$LYFVSuomzWLznyEeYTaXJ9o zwdlk>R$+7wKjECmSHZG+OJ@cH`P^7bYkUth73RX(zd9ynv>vWAD>ih%*=&ATuAWgm zPi7UHaQr(%u~b>ltp~`Ap!=E5@wzi^R_(ZKkt!Y?=4FX}?oJmzz@e`Oc#yr?A(v*) zi-kvKD6O*%b?L1luqIkg&I~n=XP?(m&UNjxeG<@|nc80PjHg>ji__IR^$jAW$#a?h z?0!&bTs4q42lzR$K2C908c{Dyx*o~CRLN2%%!O6c_U84v4yO-~jF<0aTr)qM{mNXw^;3ZF_V4& z{+S*<5OIB%U(4iipzpub=(m8k8-F5^KSvQ&=fy3`642jCALxO_XS+^qebM9C_PHHI~2 zS$2SF;^H%3Py^eN0jF5~8 zh-fh3B-in^8Z#yHwy^evxNQaccqP_&fTt2v&hxayR%zyOXy*xri=KgvBWRo8%Q<6$ z`Rc{!2Q!FOkIGj@Cj#dF24&%<-p+*I7hG0jj|k%mqn%zd_J`g_6qW2__HOrZAe9E=f`V-82=<%^^Pe9yd=6zTHa+0=ero*TPd{0&Q`EZ)8ae2t>sx{fN=#NvDLjJ5 z>?p~~ub_2F*&BXgCbdI@1`61wzR}_z7{vGBP1_o8XiP(`nI5WvMd(hC6$UySNZz;Y^e-IjF&(2%wz&`D? zXVO^zo!w*gv)Lvdo;(wF*=974|5*{pJ(tI%B#O?+z-6{ z2>j@wN7~a?R=QJ3@Hcu2JVYV@&os>bUdWLW-34aGz#c;?YS!%`S1b1%+}8Sl;P#jB z|CzKhB>FSEM^~D~irALt!-CG%_#48)@Og;CVS`7*EuDDhE3(D9A;ArKy`y}bgp9tx zxhv(5r=T%h8|=d0|D$FAkjM=42-BSHD4Xd+4@@t*gW^>s-W|A!ol3623wf3Tg_d`J zks{cO;40ArVfW|%HYMxlU@f4&3#>6E`48tnL5o!_^zo5ZaEZ9>Op+=D|HsVr)&ND6 zd^=P?Mm4fSYLtQjq4y4iCMIt5HGzq1z8$l!^e zzb7_;*I%BU)zKPTz_7Lr=?nAr=;QVE^*|Z)gL7zyOEaKk5p!+vP&86yS2ItFz_w`Z z?6uo&r?P+irA?{_2-x<2UMN6TZd+-x|b>FBq*XBov0| zT%{fkSXamHY_-8?zLP5_7CR)dIHO@U>U&NZ0EG{)8e|8kdw`r#&SD{qL<9Mvdpbm-+s<9k#dOYK;l?^bRWg(hff8+O`YtopZQf-C> zB@ej<=fkrEGq@S`$hUnY>Eft_h88ZI^vLHYc@Y!G9uB0V-u2@fx8I>*(LZckzdC5_ zx|3R&)fkBs4z&mtSK}lykWtr?Wn;$*5`^yU3lm*~m^#$+uMz`gYx85n2U%|&K?6x2 z={iQlVpwwxZf6u7`Xik%t`^P&@f4=h$o zR@gkGt@9>7Ih?~io1gMb^&B>Xo1P5mre5JJY#zhseK(r<8&cvr$gKLYC1O1Pkw~;w z@!%tIjh6+tf=hdDgo<*3r6+ueH7rYJzZ?b#>KM-<5e<{Ku!4HPol z6;CZLvK5992Hw?#%Ia1IcUkJmOb{Z0sKTe6)56H?!sdbznK6iQ?^;T=nmM{mI#SQQ zaPu00>hl-)UFKrZF;`^3F?HSb>ZaC{bNNcQX=KwnRCiEb-ZISD_VeT-{?ja7;;eG+ zlXA{{u=Z&Rmd7OadfnT|}cn#}KNDxDxO0|Vu^>=&j{^A`jZU9hf}E{ocN z&TiWxG6~*}YucMh!PhV?>u%Zfoi9I6D=Q6lj5ZCFntnt+!FG?|`>H753-|`UsJajC z;~V{hu^&cNzS0+&qt_NL74@9tt|E5AJ(-PCK82J}!o?71>+22oHBCjw8c@k323!Ll z47jH$GxT&WQ`h2^Bun|Ivo(yi|2 z-qodE-?%+7-pdu$W0-kHS4grow_uvszj|DE}X#Z#!bzwUG(Rez^)f$zQten?75>+;d8iI>%+Jv zliC(k&8OeHl$DEdNnkuHzE_dlR}7-`kS!NXPs=-GvO99FQla_V=|p+`ouchnZU*Ma z8(rJ7m?V}1z!OLz7oNIisc$eF%P>k5pSA4Ni450zJx!JnD=0(1tFcQScPD^dzTlc( zJ0XHq^*T6_){97*?}#&3V64`Ln5f!5`5rbj<-Dp1`Ee+J0t`G1RK~A@7SmLtQykE+ zcPe#(4%Wt4ZOJftY#D!!naK_OyxpDu%<(@x3o((X@pU4}Dj6tcNzKd=Ra13iDMrKn z?ox-B?c>NK1k=?BN#vgas*!cRw%b6aoyHCVgBk*wB7ippw>YDZp&dIw-pIC4s%LvJ zggy7O_7{+7N2vSLm4ani^4&)^9YU(Xhdti8bCTIt!AO!K#f7gZmaqLt)7XzY?NcT} z$aO)Z%JTC29U<@rJ#wtSwn47hB6j7p*%kTxQ}6PR&P{JK97(LTLXw)WmOe^2jk78P zX0Z?0CBjXjc*vtTUHK2dtY-$p_zD z+VU!?yu2Bug7vM~7ih^=e}K>^&E-jDvcM!MG@RNJQ{_LH9E;BADcP^n&+E-B?!rq^P^@ zI^oYYiH{y+F-@W=F{`yN#bD8s^nev|5>Ua#L>Ac})$`v5z40v`Xa8^wn-qvsg{?fX zCA7F1P22SJf7#>Z`?NEK<+Fedv$s<2agzS1qTT%xsS3+^x7ls`&TDW!lMq~r`s~S` zfsM)w8QgBN)(}jk>1$Te1Ue=joso15$Q)C9mQxD|qIgJ;uu*a8!s%_}-$W4ttOV#| zYfSN+%|WFfu;550bFvh;V>6NSv2UoAKOF&lOk} zq|iOI5Y>(UZk3D&1(pNwgch4Qk83!f z=!PCWebhhSWQ=lNruO}^N19ga9rx98cw6Xjs9nH}n{6;#pspi$6!VU6nQmh$^TkH! z5n0&I!);I=&E@y9_uJhC96$=e{ca;i6tK^huWxA_%FJ8=W2QO~KX)}7y$Wt7c21y& z1*c}AfFD}D2zROV{&wmsUTz--Gv=--5Ib~H=8GP#>Vh+Qo;a3FEh4aQ9R&;wT2Cej z6Kl%LWorG$Y%_)KXlcFxywh1_9(t8wABH7d^JJn+6onlNZ@x}9; zGv^^KBmW`iT&Ba@F&Eq6N51)$2@gKTIj-{5?Mt1Iw&5iF?e9rnqbb6X?aBhnPpa$v zae2&DA9D(JEax3aWF*Pg{dXEjPx4YoqN?VdC+aS0*)gLalL8<0HFyH&JqgMteZNVe zZQ_$Xzh5%VPjuAIgw{j}DW!EK8LCk@;QX*#e8__|%AEkZpk~42H<`t=P9oJUE=W{VJaZbph9(frJbBk-A694=Y+9H zu8Th8lMA47X*WOiJY6wjou7juFq2!+ZAK=?YFz>O*`4-nX5%rIEWKJl z`Px}`@d=P@I2452GM*8*=133MJ7qJ!Y_X#wE?c_hq$Tc>Rezl6KG(#9+HF-zCI+Hw z;edNNZ;h-gUDi{a>i7A*ztWVkQs=92IRa7FnRpf__7ZChHG`_1~h zZ3RM!qUw0d%zEy79i1p>s7Ww$1g*klM5}86$@t6>w#N~r4{;BviL(-`aV=gkqgj}D zd09r@Lawvc_l4=5Ir0F#ee5TdqL5!RWJ;=S1FYoIAN!)~59cpPG)itQ zkQl7_8VV9(^CYR{T>@Wn^#&d0&x4mRO{Y@Z-6-Sa=TQYxNGz+kzU@!mYE2TIIZi4j zK7e;SOPL^;6q=5$=M+wml!=>%wXM-P0IIkD@bnzgURIkeg*@D~FU|sUy z8BZdk%&z+6)QoZQl$!-gIq zPrf>or;YYepPo10F(AJ;xE51A108nH>RuVFCN73i}EraBM!uWFT*I)HAh20ioly@9ic<-`Ym;n66Sq!eo z8NB*PmS6E%P+Ot13H2Yx4BM_HlsC^kFDNmc zZ5gW4@9=jkRt@pEH&lbd#V55;E6MRHdFrbAFKjb%E5Ti8udLS`HW>ffIr%NC?h_yDswI{YL(0^Ksljm_5EY$eJ zOM|DP3ax?h=`Zg%fV;}MUMEovx@Qyvk^=y-`SVJ0hAD_=Yga;SAlkEEEWK167U^ba z?jr2sETFI3rISvbJL0}Cl7a5~Hwx}wSXItExaQ2JbqRI~tNeYBLTKN!;DScG=0juH z$iY8_u8^eqK1+n{#_h+29lNBe0i~e$;IWa&9kH#Y&A)rrRLy7eVylmzyf$6wyy02k z4#f;7u09OBkobaBii$WCU8Pr@`mrMmTHcSeRw7OuPwruloCZnrnWg>b)e_AFcio(y zGvVu@r9F5u0sVG1i9_qJOBd%ZzVJWRt<5@6s}rts6c_lPQesQ68kEkEu&v)F@Hd|M z-ETm1bN%mvY3Dp{y_T<=9HzR!;Sk48*1NN3O6|@jL9&bgmiK2UYou~aHc@Lt#kMDZ z<7BtET9tMyppby?jC(9Gon(9!^{F8sd8MtLA7G;x9BeI__41C5EXvqGY)mXJwP0CH z%n&jx#tmgJT)3!w2t5oFtSv2R7no#OhdKdSk^O1UCGLKcBQFVQy7={jGe0Tqk|)G( z;1&C`5g^qfdUy<{*;`p~hsG(N$rW=$xD;sgq(%A&e_9S=up$Oae!n_BWOP(q9$qoU zgmqs?HlL9Tf}8uCrHaJ|yGana{2n|)Zfv?_W@Fz;+uz8t>fURm8(}ndS*@(qkxcBj zohl^bG*hTOjBm2DHt%{>8#va{tcsGmf@Cng0&}9xiO$s&>R11Git&ArG?HC~O?P zCC^EM+?b+I-?Tht_0@Vear7^3YsMT6J zq8ISh595L*R^~5S6uner#UhG8ssOzu!=c#0GdNe^zQC<+U@(=BsE>iJ9bTB+)m$tF zk5Q#fL^P@Sxc1VDU@G-{i9IIY*oi_dg1wlmkmK8w@}Z!R`rA z{3U|)5HI^a`f=wLquody$PQHc0atguvOb%52L`vDfdAZ4xbuP0Ln50uEgD2@>@vTM z3ZrhJ?)t~>x{y$QmM%}BUtiD!n;!D7$uB;X!xwg=4gPG|(HKkhv>vQz_9n#vHhWTc zm6>l7L(kr{jGv~xzEu6Gv1-i(bPy6t$!2=j3BBIN#X*p7R! z6rF=;1Q2Q>zF_?yb!czxU%}Z7WmIpCw%mKNttq@KdF8%-Aa%D9HfHCmD-pH7z)w4z zcO@vT^U#9a|9xnEQMpnvqRvHchd{zB%n2X9(;LS!RMBCwFSyS_5Y#@kNKG@+77-R; zf>H)LGQAW@{tM8OA~Yus?=5*ZTJD~s$5Rv1KmQ+dcfMLK`f-bBaxF$Z7 zL0@dd=UwQE*#5K&u@xcoFDw$$ik%+yx#P;Hbb+sYlYPG6ZI-isJz%CsZdy0j^bPy_ z2x=qAs-^GW@;#O;e#$$j!+iKQ)05OKp{r-gNiDYPB??J~7zdI;bo4s7m8BG_jDjqu|`OOYuTUk(e&(RCA zA*9voua?@>4EHu;*D`~`VRvr=b0Yn<6hg8 zr0q2q)EJPLwR>KlJ3K^6vcMMt^Es@4Wp?uQYn5l-AA=j}9Av}a&uq&s%{0y4HKfiy!^ja zV&OoYcu{saAo!$$3U#pZ?R9y~1vBkSM?D^e2yfRS-OKsr0*pFFKg%5~qzs@1|&vJZ8(Md!!mq z&rhc=+xEx2=TP^d#C5h4{$>%UYqAY0(+z+plKYT11?pema`KTi2K=2oMw%Ex_KT)NSE`IRfEXCWg zkJ*F4kp6&9=)>~}DI^43N~&fxa2Sou_#p2lsTV_g9WzNRqN-oSJfn&7zAO`6J9xZ7 z(YWKsn%KdfW5pSzAbw=ks&~61WmD{-G&E662W9B$+<{3w6YI{{5K{9LRguhc{5)PO zTHQf?PEfNN^+yH%&Q?}uIN6&a7CReHoA`O<0na+Vcwx*@@J7MVh;1+Tnsv<^J!>uk zU%iP(q{B~+AOLm-{>8z9OZ=cBJ!K{(`n7_?(q6nXdcUhlDKX;IPip2&>es1Q_x`Jj zu=}Dt#SX_89Wsr5tm8r>CnwF$Y94TAnVgXd+7t3YepJ;}unvDb#_xFNX})jv>UXiF zVxpO`r{Wh^IS2m2-~Ly5Um6Z&`0uaCmZdB$3@Y1@C7Bozg&}0mmTXxf#xmLWN_MjE z#!gws64^=FCdnRSiNVkq%D(&G`n~zTJLly&*O`~Dxt@ET>wcd5`~7}4;l~`dgcSH{ zQ7NC-AiEcM*)Je*6TuD2;Rb3@rZYs~c|c0=l$ zVva!g=c%_@pR;wgOY5@Qx@blf=fxuSslaX#IeX?G*5gPL=~1%w;&ZV}@v0_r^IkcD zuDn%Oy;aR3&y|dEI-~{b4oTHAMRK3qN`*g7^kv%kQe@CBot)H14FcI)66T=a32mFDb}s zr+vsz#^#?y{zq3STh^-Qdx&C3$j5W`Z$-mg(llEM&hW>22-Po9#YkiHBKzOa{_jXs zytwi=AHVZ{eD;QDcrA=<<{&$Ex+>m3C)z(A#(9){!LiP`w+=XQH9KgXCDy64=O`MF zzl=AL9**J|*NA;WhJ$%yo*lHZEeiDOJSzF@L7H^PchHDmk^Of!<=vGW8dPFBYB=9B z#kjtB&M%Zs_`O*rE*L9IOyHp@sIgb1<;b0fSoU`T90Q&*;1%52x9D407AZ=_!;}2mdTA+l za@DyVYir))h6nr~%uoiuhMGOzRyRGENlzDzZB1$7!OG7F+t<7E zbbNf9Vx6i3(b44iest5bp}+N2);c2bxkC3y9P>FW74OhOvXr{+dQi5DtMSOyzujua z0eRQ>@lp1wkv)%w9&vZy$S2@-@X_9<clddny)c)%bckR-&6h=O~k5WOebXNYr=K+O%+d8!*iGce5jclhu=By<7ihM8s5F< zDve~TivUX!XGR8?bf9(S&HFs>hHQz6@W(wr!6xUYnR}&>eZq zq_Wz>$u7N5H_N6s;w~EIa!3L3?Tm5fl_ZUr*IVAr08PBj(_Yw@`#Q1E4oz5Px#}U1 z{WtU~*Y)D!T+tUv)>iC;Yt5(MME4gV*~y-WE{6)w*sH;5>|^6X9NxjS*gQcE2M5=!-_E?0E+NoHN-d4%%&yOqsf~! z8649D=bW8)N~^2I6&KTq7ulO4MweZGo1`L$O`b{t)8q$}vr1e>?$y9rZFeoT#T|R@ zi`sUuh_g|v(9$p#)H%fW7Y`bZwudwNRf;}`-cG6fNlD5$DF3})X?l}r>O}E{9VgnFQ3G?=xQFW9Fy0mTz z#)fUoS`_1w^|)ARE6uyG3rZE%Ukx~$-d0qI9!q1Z?nsuL!QW@J_n(*eIS`;w)~j!% zRr2oa3s%}C3*mD{Z+#a{HfJh5#?L;#_!>~}T|6oY9Pl=N@_)%ZkL3TmNj+Fc(T!PG z6GFiI0jAYu^&!knnfj-=Bn2$TIhm;{WtrQTZ(C9=uy+})Qm?#h<-X=sK9SwMS@@X% zr}R@xts86bGHOf{uEg6y=_Yvmr?Y{-Itjp$og6I-^s;NoxbSVq6e;OE4|D=)=#xpY z;%bp2&Rlo=qnno1yp4Zn*#p1gs1|7=yZscC^PSbHK#xo2Of9c~pbbZg3=z1a4vOg} zd5hL{2b zQD?#aqi$X|P~~AMbFNGTLT*BtGa)yt_?K*s+6~gRyjS%wX7MEPc9*A7c+Q1MC4uob zxw8^9d&LKjI5M~Fr*hkP4*MP&Ys%3^x^LyRHkRwsDd6jSm40%<&^Eh!&hd`8QP0CI z|JLV?hEfvpXjU*gfrmz3>Xxmg|Ej=)%ISI- z94#DS`dxei7za+ zs!O5fUN7+DKVi%v;yy(>G+Ev&M|Z-*~zD+g2C0C*Ax& z^m5A!EY;P!UE%m;x#8v*^S=c+QeoBrlK4zBte>SlP8b9}fP&;Jo5=kk$_&1zH+o*% zlwJp8)w4{aC0pA|zgqsP453b=tg zKyo}N7e>2IEH3)9=c})0y^@Bq){`yMmEYWy8udBzR2iw)#RqAo*Aok$`l#qsc~@OQ{xq#Mr&^}q(e!9%Qd>VF`m~6Usc;Y)XfAyq@SPoV$?Eo%^L1Umb>Mhi`e)f zLHmtyVt)*uw!!pGz)+_ciG5&2ekDPEe3(G%@^mCNaU{uyVd#;2c6e?~p7=iWjabAy zetlY-oAmDeElVetF(@|)+AO2cb?<5R!M z?Ze71Dugqq4wXF+xmp?ZhaN>L=rLF?jh&uV3tEzs686h>5H0%H2%{=3%?CX#Xw8oS zj;RTigW&u`l}6ELJ=AAu7`{}{Z1`i$x0EBnQCy`%&w75nX^7Ac@F8%3ly^%vj9L}p&& z*nx{=%KsMWu9t`GkhbU&-rlb>gNTbhh8$K@5-kokx3&+>l8oe0pQ}bF_VyC>uk*KC zY<=px=U*nY0qO^uwc-MMLqnn<9jy&XrG?(U5B1QtLr)qfhK(z3NUEH9fLO z6t1Zo=L2GUoWo|Rz6IIS2$PGxF9_EZlq z{^uw5`}vSkIm?AX!v(M9oUG<_>0BR`$hgbFmy7%S?bR2?EHv8VRFG+%yJ9O1-&5pG z^)4U=mR(VjZ;a$2QFL$V{W)m_(QPn&TKQS{i69lCoR=7_%9OzDx_cty0@}CCZX8(0Xu* zZKO9vR2Qrv0ee%`Yq#@kP2*68$E$zXwbsXH{RF4jJQ4iK5phm$bnaG| zHy>}|3myvM%6`g-C!q4}ZcGiCoa}3SaO=e`Xmhwgq(_+qvkr5iz?uOpzu^ieXO|b; z;1DbP9CeVOVYJ(94OghTEJXJT@E+}p8H6&|CA;*~{mig7o!HT8*DW)B61}%u(Wo4; z$zcO&m&zytZT6wTACFIF8kot(i_m8CuJou>yA>I*BuewiJ@hKc+FMxH*kDZmc^pry zPZC%qXmzE-XB95f7m3w=b|XeeCyPKR#Pwf1Dy)vkR29qc^b+bdvUZs zhZuG1sB(Sz73!u%R*&qn>hT}C^H=4diqo`u(Tn~pvPF=IUtY60tmZJt9q(^LEEg}P^# zlX<_rAoB&$pqH(U1gC@T(&RC1je#oEPobP6V3rnDB-3A{zbAAoTOpxW;~&}@oC}2x z*-p}yB((b&jh3AuBeS94yZ&ECjLtGAFZzBFxkMJ&Z)ww>TjsvBcF}QRfA&o$$NH#6 z@9M*SwFFZ6p}49P!+BbUW7x)O$Q^4*1pZRFcqdZTN-5*9#-quV$0FkHEA@13T(i25 zKGz}_VjsNBjD$rKxAucKB4E8$^VJyJH-C0IsRHXZ1YYxcoC8DXnu(RYbPG})WZw}} z81DKx`I7BY$XX|9F)TG1lmQ@xWHmKno2JA`Z=%Ns8 z-`39fAhO-`rg5H?hG>at>v%2IU>S>q9fEpXkbjeDh5AqpQmqx5K7UGeFS$O-+Qo<& zvLFDMT5Dl4=4PVnY?pQkA=aQ-Gw$#y0torC^~nwcrlr-EIMZU4!>e9`BiqwX`IpjM z_cQ#3EA-^`+#M!@-ib0ionmU9tus*)Lh9!kKzx%dBsyO8%x*e`9TRA;{8Bz3fr=65 zHU$DI{sNi8^?=9RCSxuEy)#!F(mJoCLc^oG@~T>$MH{E0xuhTrYng)Qevx}sn-|!D z)_p;&`w$E8Q`)Xme);Zyu*AmA$Hm07&f>inAY|g8!}RQ38HWVx)RRl4;2Ma3oU;3= zZ-~9wqIE`^M`zYkrfNK$u-B;cgKXDU_KVA7$41Ad2NSBjUJHZn5y#b6c}tBPBm}z^ zBFFcMcW4Uqe=FArI_f&cYaO4b(k62Nw;~vl&#!XhK+$_9sAA%fHD7E=&QOG(YBRp# z(C0<(YaWM6#=xjQ6xdHSTH86BC97c)?oGW_-%h^VGtJ=`?`o2nDHO_rSUo)Zr-)h; zv*?xsA$juN`N|jiMusVWSXB-rn=qrz`_8M8bF~q|CKcOra?tClrk5wVONjf-NmOV4 z*d5xnKeN20!X&kFkGhV>i}sRm3!p9?{s7eVLl{}$5(&NP1egs8%6OiEdz|ysM}Iwe z;?+GYJl;v}MJn}tmDJPo3kVpR0ij*~t(L6U$-d373Vl!pT#$>nnsJgfkI0}u*b-X} zcM}4);rci{S~U4QeFrcK;z%G>jO<&M1WnO3ysbsez~hIX`>j~2 zw!tgY8V+haXsZ?} zUfF#61dV}D zO?`+*B^OpCgw=odWEj@B=c^Gn?|Qe4YhV5+6HshyVY2mG>A=^aM}@?#379$y0-@a` zpcIe*k7f+%XtX@DNCi}St|nu(WgVu(hUk#yrA1rwo%SyM0sxV!#aT^4*=bzY@T*$g zX?bcUV*{<787@4kEmlkRThFIjnbCGsx`F1+sZ~Phg|P}-Dsd17Dx+mwEg;#gc0qF6 ziz^`NwAqBFDt%Y4aY`cqLu}aC6T$_=@pz$qUgREwuoZ+h^xZ*_d{`7dh3Tf#_o~Q) z;#I}JYMwu)Ha>PfPsRWJ={5!0AlDdLZN6e?xS53h?)A2^*-UVCHcpK=9`zxZI;hx` zmW^4IUzZl4;c11HQ{TS02vLnK8CjQ-JY{q)zpJQ4`uuw zCK{RhzTCd0T2fnLvVwz_H=Od=I(MndWsQR2M~62%U>c~CA;Calyg8t+)bd^zAnKpw zzol5Hyg9Sf0|%-t z2i`qt;}@{0MbC`K_q`6C;aUM9uI`G^aLR#JnQd6wRWr4)!G*Y$_HyFy1~ijiHhH@@ zzm@V8(W|(3(^1b3urD8(gs>$Jq~vOZ9P~wZX%-DFpmNj{6vV#E{qd~lmUUe8E92JQ zhhID&0$b!3E~6 zS&%RrCX0Az5;!nbFz_?D9^M*V}# z_v!iJWB%aVFm2|XvABS%N6%bE5?di7l``E?E;{PC75S24)KoGgMbEwDP z%4vB%-;rfcMJHnJtG#SlCi?eja|Gx;WmAR_^1XnYVqu51t9LUsdhs=nZ|xfd^PMiB z+r7~w1i;`?v7{BN6!{`t0y@cQr^i15p7VGbSf{ z5a?k+b=?!vGoW9Q6dc#(4$%00#^q5r*I>~R@m+kPVCH&J$m!LyUm=#Wtl3}WD*^{F zGh)^4r^qv!mg3^ikS-rPT#|h~iLxHzG3iL(dmd@2l!YT9TNy4r(7B zLIDEG0_)|uApKc{h$GoFg@pK@#b#KEUxYF~JsiIhzQfcL*{~P8H+-E}1Aly^hS>SpQ}V2lh$4mKrYQc+RnkqZnKK@n{!)|4An2-gOA;XNk1#-;V~AVZ$=7#*5WLXGUBIE3drc)S#^xiE zXomtQ>_)Tv&Tq!k>sc9H>T&@?+8A((=h=WFw=T4h!@FuM)pS9r?ez#O>V~1U(I6Kf z&+fC{yX^|2KYWIP5q3ImKTcWzhLGfja-3t`3ROR6{-)ZdlV~BaA&ipE=at|96pI4B zjye%0g(tn4AgEd*eacaJdhb{NnY!TCz{$>Q(fC|wc&^sAL<}e0LXM*$m4xCIjXBP8$~iG(3{kuyL^&3UkkiazWX=>7 zGa2SQhq9O%jX8|@K6`(@@5|-;4}8Dx?+@=?E|1Ie`F!ko-u-^N-|yG^p8aiZd`Reo z5C{Z1WOD0P+83wgtsWQ3NQjz=MW%a%PhIq;re ziN~z%Fz$aAZ}}B?%%Tpz=g&J?Lusnn6q1XW2+1*ESJfF_|GQEc{Gw9hPK?|`&@^M0 zT4n9T}eTE~}VAZ=)JeFRRJw!|&jP5RZ-!mU7x ztmn>m6+sChA-E4mqY5EfutA}=Xjw@muYJz8$wCr%Ufjnx{scRokS7KS2D9`Lk|`sry^Nxk^0!(>pN8RzeB^TxLky8&d#@ zIQ^yihccqTwkZgtW(4M^$d@r+wVwjhbs_XgJtYd{ms(8&3OXH3xY+MvPv($_`} zz*8<6KrJdjz3e4to;Dx;gHe+I9shj?|F(fhr)J(46o_M&x^Ga`wAwJ5eqcY{JlpL(eTH#kUle`PsPXG5JNV-3aR3v+9+u#|r}c*wff z)#ngWjZ#mw&s!@Oe!~}M4~%x4mG10-Aszke#~Hz4x;e|`X>(xPbWCIten z=ukmx%GcR~R`DBWV84LF*qmMReto3lNfCiy(aTZJ@5W~yhI|d7g+K&*|ZRLzv_&rm{N(z0w)WR6)NC}YMh2KfW zK}hP3>Mqz-37tcNW$i;JR`PZu3_L^C{e+^g<{9{B7{R@|s@P(5LhfZAJeEG`htkh0 zo)Ry+ftv;=SyAw#F;XR%6wxrz@2sYL`QH%juzzYu*LztL5z^sm(fhiy^qU?@(;k8y zl#fw2ILa13LUVU#oE<5qC7~RYZMwJ;*g^DQ(%c|&cXwBhvy4{Nd^AH|&~Ryqwk%aL zQ_kHdLg>sQsE_oA$~UW+ASBImsM9;mZ3}PGItgM*U{qZj*Y$6*O~dxq)+i%5Ck{Ic z&K)biQWlStgJr6Zw+-tP-k*U&q3Lepj5?N`O@OpTHdjArJMqy6dn4ny21($2GZ6KcSsBTkKlp$DqNrJ176YjeTwm?ceMpD)a1F3t3!`FEm3{!fse5#!N0f*Mf-cWjo`W& zvpSW5>@cpH;_zef;o_RTQX)=HFgD|P{s)$-l^8#R^=Ofhs~eajE+L7)=oY@B6I{&6 zQu=4EDIDz%knY~rRV^~cWWClsnlN)z8nBvxXgSHh$|wDbU;X~03Xe^owK3cDtOy=lc!yY>_LVY1muj8h7c3nPLF$?#6GPtO8 zx9umdFCW*H7J142RI5I_a$KL^#ye^bY@SO4UeSQ#T3#t-Z_2M8Z64DQ62paa{%PU% zXxpX}Kb8+Id0%sO1IGe)B#nW24Qyf90?`CR_Qb|+MC+Fc#kiTHN=t`l4Lq~W7o(47 z(n-ec`6Z^}#D-+YR}pN4HFTY4?#RejG8*ux)ygZYb zGtDj^nD>)37#kcT?%y?-OyP&%*r&1i^13S6{%-8Jdrek=Qh74q4LzKb0^S|Ur?~Gf zl#?3$q0nNoXZ`r4M`04B!T>TMI6yG)iL z|MFRAeTml1Iq#@=6P{!XpUp8x?C(4Gsrfgg)j>Hlm!6<8QoJr-xCTu-r28~XObK-V zq458wS;C)aCHbhqVUZ9l-OYj&zG`r!KA=X2j-*zH_X{eLSaYi%smu+|?rKPH_3c&| zmAnwNy}do=qxHxACLz|KkT&K5@D-tn1`*Q_({LA(nWhY5(`4=RK1=0BTG^1ZD}ca z!IfJtu2T5Q^4roEoQk>>u)n52S!pTJ-G#Z)fGrc<4~4pki0UK->gFsG%*ks;-rJ%z zbQ;*)HXTdXlDI{_$L#nNursJ>F9Y0@;?%iX>f)atcoZgQa+tH>CEcxJONy0`U)v7J z-B?8OO!at)5||rdH5VlL+qc5~M4=t3O7R^U^bm+X@+i;k+CIk)AgCkcC`bYJx&!4- zs%!mtRv1!tMGIa*w?p-_Ak+;#65RnzV)gvIFQHzaDHS94fWHJ&r#{A5Tqmt5zb9cOxfNh1dPTn1VTQA~bt- z5XGHF_fU`(uLd?2uYA**4}~W~mk*D{o$U%2eBgAog^5z`-?+(`AU93=%@0+g)UQy5 z4aG)K3i0=+J%u`P&1#9ps?>9W(bY-}REq6@(qBg38PsNXBGR$hl{TYJK_=vHBEz)S znmxAbrkZ^9!&NBA@r}jtRJ*%Ja@@ZAA7>SIr93%qvHOL1l;4nMoaK_cF$AM2zuSG? z#MCZk>}2RfxB~GJNLC^o>s!B*NXeMYCf~-%VC5HXS+b*g9e(xX)&YT_h=@`Hn;`=v z%|g-q7ZNk8qK=TcUA+XSrk>pRr> zZ`HRAH2J6jy)5PNi^eeb6(7;t^HpKR$xqYVY>yb7@lAwd=AE`TaCAa|H2u6*EQnpX zn=c=quiEOYM^fZgpWLH}r*l`+EDgng9Omq^Aohc zuN9=Zh3e-q44)h)Pc{%42)wNKuW?42e|XYm)ef)l`vvtewt*BR(YxILiRMBHWvM+y zzYX2&)KgunZNn+ZyiDSFm8-(oPuk9!EQiW-^!mBN->06@z2nIE*E&16)(F#0Z`>Lt z4s~)2rP4DHaRp!II@QVe6jUuLQx|!gQ^rns$kx&>qhOP_zQ3{zKEGY}V?|d(UL7hSUpM>-GA~D-e0@2Z`Byu<^4usvV_&2s~5W%KC((zb*C@reX3Tv zBg7n?ch9*Z>awmU?#q5Ydzs$vF<=F!;C0x8+6hBGg)Ig5Tyjwh*0SYc=KghX35@Y_ zn&rIF=vMRg)Y+F)J64IIL;BlkdJ*(d|D~|HhG$=XKHB1Prx?K)f$6wWnFaf}%NEr4 z#Z%n&bx%oOc07`sYmcdT1MTaqhRbg}hc9tNnvOt7WV05M_b(Zzk7w$qn!=ENEI=kE z&e52V^D;{6tv)}_R;K_Syu4E8Jy7FpFz8;hh1}|+CNWo<490YgVe?sG^Ttig@TzRQ zmk%pne#~b6L#e67nGqkYml2PfS)4r=xR0VVLMLgC6X7zvsjBX6tDuQ=$AvC5vFMzw zo3g6e9?q|g?;bHqNgDk5==)zS>ltfIJNp`3&}TYX0nq!toLGAv0gV^cZ|w?z%wj(LGnCr}xpH z$bv8-&!Nzv>UOW&9J`ei8~2>XC+uf7ah-@wJdleKdD#dN4pLn;a;zy-pPk`UeA(Ut z&SwqZMeZ~g`2}Khzi$@sy9^_yW_EZIYs51!E1I?*IB9wf0z~C6H3v~q^W3_$7ufE1&!3!QVc+VmaLD^iK zd8pdz*}&^y?^0a;y}WBZvX@a)-_U@&(RhBIeBEP$d6bieoAg^(G=^);hCu2lUgB(x zGImxh+WXhRknrDPJ~`dETGp0NpFSY$duo)%{S5e~NosAfObC$jrbO`l2<5J?ALV}x zD6mx^D}sfI+{AtH_>D0TzOEt2G;VbV2=uIZiqsA+5XI)%@(RQE{8xQYfSoRq0hQu z4cr19Q9J5@_`=g>!6MPq;*k$%6yi^?IjvCMpxX;|An~lpx9X)PZkGN_F1lGHQn`Rs z=da>o{s|tENHKz|zYU}pdXCkv&-(`IiI(j~Set$hmY2TG`7M*PZ78do zJ^Z?i)%iqKI1*EVowCU;$_uRhxXMEw%(B{kqJk0svPvs5d<~pt(u{dvF_NyB)CXtE z&M(>pNE@6+Y`@5wIyL>-J=_`>RTz%JEJUt|po`X-hk31_P&}0hWEUG842_p9kkZ>4 zc0PKahMR2>Eh)#mxa(;uoiI%9UfbJlA@z-^SD6V0J#a{xy!SQ9#zjOgH%eTh|6Rb$ z)}l&a0+TbixFw0;XbD$rPnT%8DnP0l=AahS+~8#=j}Xf0zGRTlkZglL0Si zMjwrWHca|eIz2rwr3X7A6!M|Veu>CgFKW-XYBS5Mp9)K-Gop=3qfl?D&zR{I+CmZ~ zyi>$RH~OW2&9e1J(E+$yN98_WaiyoR00=AB=S{7vJdQ}Ycoln01n;EUk#F55)bt~9 zX9*y+&YHPfY-tbJzDU2M*w77K0==2q!Z6W*_XUG0WXAsVZxOl$pnGN;u4_Cg1|@@mf*yIPNWk%>~~HbWXP{MeE`a}nf)Xh0juOVN!RI5-3A$foDOL?jXlp>XZ zCcA|*-3vR5Z5h(t0gk9?#Hy=V7ox-kmQW$K?2;?~C;9E)^J5;3MSN&|b@rL%H>J?V z$#2y@Yi?5=0n(h7$Y!VUO0mMht?)Xyft#(?&FEa(dNaX+q6znMtzAVc$4BeUqEyut zFY$XrqviT7fN-BQl*HPafDQP)kdf=`>u!2V*3iUP!%yYXfXJ|Q(W|`Jw*2y~=lNg4 z4+a)ER>gvoGDZlQmCTZ?c;|}v<8?Rg{s1RgeuEe?`0UwaAXL#p5t3tiYN!T}8I3!0 z;JTLxwR=aN0-F7<_cuE=K>D>nmCY0+S`V$J__7EnD6sS~(eZltb6Vz+mpuI5dP@+X z)biKxpX(CI*mbXKeg8^Lr+=u?VYOz6muEIv zGU@xH@v`%Gyjyjy_y=uw&IB54a`><(n>%(g zW(J`?slgk02v7B>3A`LwqJ+l=V%fn&*sp(TN-#Z>2eK z-$KxUF+N%jEG^PU)dH$WJ5Ty+gU0|>Q~VCD9o%YR2oJyiYPv!4DJ?bK_=22d%k?O^ za4Sepg`?Y$j(Uxz)G1W-55IbP+2YmHr}nkm9Z-Kya8PET%BK9uyOo0`W0_ zE_xou(7bGLtw0H211f+)TDMJ|9Hcr%mXwyJc=M)!f3@&p{!%y;_~DAlVNB0o`saMY zoq-f4)8YUTbs4qL#9Yz76o1X4;@4Mu%Y6e~D>Z0bFcdEh68rZXOx zv4(w_lVlEZpLxJ^bocba@u!vM6tGJ z0KAWsEA*D=^wHm~>y6onv&v}wb2@=RQNI$Sg7Sd*@YAp3Yt$a{#F`wmPz%S$j;_(3 z-EKnvWp;EvxN%kC6c<3dn9ykD1N5EYpVB3GZEi}~zyDk|2krcHTe7Wx(uVw#lxw{f;R1*b7&)aiK1SUNt{zn%%R)4&$JDz&9a z38EM*QYaL&mMc+VO%Holzdb7u#)AT!ICYp+I1%w-->p@VGtcWc)#0uOLp+!-E;24f z7p7dAo@}xxt<@GvzgZWBTJb9xm{NvikHTIZ3@O@JdbL{Au6E*eas*EgnsrUHDGYbQ z)z<;kGs_$Cf3M}Y2>`@&w@Rl&pv}pXe}E;>i2$`RN6zuf?QiG(kBzQ8n@Ujb#Xocf z03=*E1z8}EW?Y;ETnR#w0YsXzv1?N)BAeihi6>xDjX4qi<05g_C1Xuen_MfFGiX~8 zttjaWg1pgq^wQyoClFF(M8p_=z`U3o+=%&okw;yue4Xr4M!?E+-v!d#aQ!@>r?3?+ z()qWFOP5016_<>MyCQKhB~aURQw2;TlheX%#D;;TrMq=<%mFQ}Jb`qiyEtL#b**F8 zP$?(v5fe*>0 zgop*MD8}bkE5*p+GMGC_6gs{tlTI*6eQrCzYU)xPF25?q|FT}>{VAB@vF@q}1I5Da zbe%jB04^Mj0t-g%eQM_J3zP-Uet#cUlj|ZdQ%Eto` zi0L+FiqjWrx6`r8>RO({<;&;G3q`-JvhWZ&l@;((CZ$@5n961_q#P;ulfx6soQS#f zo3Xb|^hi=phs!=0ZltLP-ng&|sSH?Kv;jyH2aS-dGYAIg;$A`3-h<@HHG^JZ;jkSy z>!n8xzxddj8vNcrBX&RdU3H|`raLMh+clioO;la?q2L0(^uG74AJOuqD;odEUFoHpEp6!bJj>j&7x*v;Ypcm{mC6pL*Q> zQ17+Oc7FP!290PSe^@hEYk8;tcOg@4{lN+A=T?EkB-dX-x-!Ye9J4=-I(v1|sb0CE zdhlM-{Y64cpa8L#*SEZDA!v-b;SQt0;%ZNr=_b{T`UE%T6dp4p5AHaaq-xBU z+;;;SI+B?U*jI~JW{RpZ7d|gJC+02qSvdKwK$z&}#m`tu8RkX8D2(2vJX3rt^+&kA z_Dv|d7HB2S1!JBnUE$BAU3vsDGccz$JaI2~P4~%r^9yW##K`DwCeq5Z(9_FQ*MI8x z`%P1F?QV7(VWHq|E^QaR%7^Lq>McCxo{7fC3RLXpKlPt1t@ijlA?uL*PNsO7jXuG>;M1& literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_with_long_name_0_0/00000.png b/tests/snapshots/stax/test_register_wallet_with_long_name_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..13cf02337ab90d008764fe6854faae07bccbed42 GIT binary patch literal 8281 zcmeI2_g7PCyZ%uSQK}A7q&nh=ij)BX1Hv%KIOrgQN{O@tCt(m0Kp>$e8Woi43qwGv zqQV$DNFoFXMTi<9QUin#AVP+cgd&8J^4*^A`3KG~=bW|9`%~81d*#_X&wB3bzV6SJ z$G=~_qC)5?>Ka>0Xt|)%lanw4m6!KL; zcK;VThT=YCC381WAiWU3M+Rbo+xL@v=U&76kUdYF>SW#<`pEpDW+L;Wf`*K?oZ?-j zf8YN1w)`JC4!zi{0GU5SnZ(UE2qv+bY^~I7oZ4mnTeeXq$H-Ox?ccF`R-E;!sV}l9p&a>;c zUWT-=kRLRDfEsA@-e#ieeM~gcSV;7(YMh}lZH>o6H2Y0Sevj3YQ+!dySP}}+HVtG= z+Gu=RyP$g(e8?p6If5w^3j5&eNrgWb_RaHn8E$72A48z;k)#AHHoRb-T>2iiN-k9x zRM4ooS<9##S)^JgP7wWT8A_@acOf$k8}Z^Nyy8B%b7O>ZXV<@tuZTg?bj+R}?e!yF=Jv%`i|iGbqc54q zn2$w9dhawD!NArr80QtCTt$?I3jHDE*xUMj5}W(I{dYDbl6F5+Gk(kI)S%mq$g0yN zvYlN;Ul{b3V^{WaV^+{Pk5=I_R+ zvp(WIhMiqEe$!2gu_>u-bF4a(`h98{flyFhzdws(OJB!Klw($@SJCE?Uq{5->s&m! zl+KM?KhN#+5{pDdtA4RZl@3@0V)u{!>gm}=p|F$UR=#Q-4r-S?khjwTDnvG_3Qs%H z_>+ZdXIG*ag0R+MhQor_Xbn}^LLQ1qy{JGrS$~W`$VJg zDbQG3-JShk6PLvOUPUt5*uainq6iLVyG5Q{EPyavPFFo<}gR7B}~6Xnea5)%wN5YTmqU=J@wr z<|e6S#s}?G)0YOCKDiaA_RJsIi+gCOFleRsUDezj?PRDf)iqn`H{~{K_;UV^=CzZ> z_KNh>W5;kNv|ln0BD%QoZIZ36*o1__3(%xq_VejS-g0t^oovTs&_=*!FnO5`15fO+ zx%K0lfZCJd#|w~me9Kma{?WUJ3OE8mBdzBpd90K`!kTF)77k5coq|Z01Op^W;&uF7 z`q0fjhm&$8O1pJxa!wHPs~_~(TTGrBK`_Y#Z)9 zXZ7$xZdQAtx1IYW$R7puL>wy{_0 zUZFN9!~oiXT3G@O~YXY3B2YTrH%@&QN{4cai z_&Orcu#&!BlX2uyE}3=IekLM@tQa*JWyVU~rG6zAqe~m`#sfG*`g)nMew(d(WysOp zYPDpjy36s}F7&uSSZWqdW?{B}eiagLuW!)yQX1t@Du&sW(z61}DsszTC&;E#4zeGd zt*Zal&DQe5`X4~GlArHxV0Pspo}R$@eIZUhk_Z!-$g5S=7`cM-Zg|c~5HIT3E7lVN z;nK!VfZ}z}5hO_wXP8>Xu0z$Pm-fiuMq+@%*W{zfBe!AFsW9uf634_^uWTbKXSJRt zBQkG4p?iY%BSnQ+yl*G9eAjZ=RJ<`4PE9hDAhZB}eL3gn-~tpEmuh z+`e=1P^>3>C7C9&^ShZT|W$9$2l=FiIgsgmkRG^+FY!v3xk8H!Tq3c9SZ( z1H1u&FhO)1vZ6JFnmzJOx6KqEv5D~~!`inDyF)!ZJ^dN{%9&Nia_wGXnR3ha;J}FL2I}ddf)ILYyz1rU^Pj0Fc=KbX+ujzY3|V+(gRLl zjkaT&=DQ~=4iiN2)>Z^X)$U`1pNWR%$+*#&HXjqy{=L4Yc@l|a)xp7GGTHOekd;6n zkj?3r{}ga3xYd7cGv zn|6>F2M(n5bQwI?&7!VvCxVJ6&3qKEOD*zfuM!x531ADdsGOOII=dRL%GZL0J~#*e z&ieMU_Yj7HPHXcsuyQSKZs2NG@ZNXk+Bx9vv{jN;8LJ2^*SXv${+@tmFt^t)hQFjV?kSE`KWwM)zpg>OGMuQtUU5Ldr6gMs0e(@QOwgoG>EMs7no z!n?qEV5hsvN`e?Mh}vWd_9JV0)?v$xF@XuTa=Xsh&?80j*Y3=Gk2{Cw?cq`CMd&a2 zg8WIl5elaxW!z126xiItjqgOod;Tz(Hckzb|C}D%2dvo&zUrFolm4+`S&nu(+$N&2 zXi{4pcc!yp8;L}Xq2JPI57V>`qx7<-tZM;< zPnH=^ntd3#J+eJt!ze-V}@;CQCzCZc7xH-g~06ic>p zL+md@Shgq|OLaiIe837>xv?Uu96xSywa4n^h?nU2QAfY8nV7A)_;|S`MeFni_TuJ@ zptVipG~49wp}9?wRuWob1F?54oz-2CT;z}yatc0Vg;Ef1Q6r@#Z!$@Zx4>cbw1%(T zs&U7#D<9=4Kr`i1Qu4s*1D!U zsa^Dlw%7MRaWd)rxdc5ym$YUjC~KLGVDeFR=*+r)!4WKTF{qkvYnrf3+n7`sWr%Ji zivx#y+fR|O!l-%v#_DSQ&1z7fOLJD4p6X{^FtP101X=j!4yR@FbW z@JB+Q7|O|i%9qHhxEBjVlPSS)c0;D5lP*rtd)>I(8uijiS~nvhPXr1jorA^ONQtNH zrB+qHbGvgpx~q+V|6W>;ntXmZrj!k+4xGPXV0=MCo@(IPkLeVdIiWr<~P zq@Q{ZhGLf5MQN4pS$a9N`3oA4ngUIo@F}j~YgSmwv~C#|KV%Dpn;*x{EQcrT2-naG zWBTzVoUC^rrrCiC2#H4Ljz~8tUR!!$n6gO&FEB8^JDzLc=kTHc_?B-)s6ZkqDK;b9 z!}SD*O&ph?S}JCV*+!ZMe@rWqjZ;MxD}oVrVwB^fdzEmCpLoQgD4%jwi<(c}ZFq5E*|#E&%HN(`sDvkK zhwm>QqwvyS92dZ(T5rWkjMbF!dW^LtX7G(HnKoRB(+Q{nzMuDV9fs_Pm5e!Vx$gNb zH1=hAh*#wZFvK*SACq^!_$?MFsb4o8}*cHP5}dXOFKB-*9WmWiTGW#KbjPxpkY1?#;!4WBdV{V5mT3@?PZa6JD(2 zzphy-4{2`&YbA#iNIKS{hhy}<`E*C=Fq=Dj8L--v^NTH+oGquct zvt*nKGN>?e#Uu{kT54joa?&u~)v1HAd{ zM7#%7Yd%i$&#Mmcp{hUtFqMbM_l6>vEvx_(2QoX~onKF2RUw$hsq;Ko<4@Q);Y@J- zK#~6lv05zX@rFZQiS|F;sT1$21R{T_u|qo5>4%Y+BQZPyA*;-o9wl{STlK}a5%1CA zjrFR@k2za3w*xvh%_%oc^Tc*U1bIA6M8~STgcM|k1xfi(EjW0zc{e|}K3BQ>v)3pk zGTR908x#9#^8VXm{&9oN*`(r)coq@xk-X^7m`9S!F!1Idy9coc%Fo#k0*_#Id#LwB z>QW=Mk~i-)qY{{>;5LA4)hvbDpt{VzqHD&J>~<$cmzof>&7p+n&ETZs&={6fAO}2-XBeig!x(>8l!-h;bS0rQqk8(^*fgV6uED`b^X=z zjelknfze7dkfVG7M@ev>uYav&?X_lxK7MYu1u@O{y4TNIw}|KP5a z2!?B_V6%A>X2E#YmI)>2Y@_lgvw&A`uTgY6<6la=9}o|iCq#u1L&=qh^}f;@0~QOG z=Xb%F#!@M??MK{(Ij|A=-%DsoA?I3||JVT@F){*Vzizz6ED&JuY!lb)6x}~J3KT}W zeX2n@cjf(<^7ZVMMpa?`{?@loA(|@acP^;d-q8&D+Lh?RWjr`&rc~CBWl$wOZ!mV9 zS!(*F{bk_=w}H!OixZpC-C6b#!j1U0o7JL{ehj|!%jWBtwPESUaLB94c}sp8OW=!Ptn>XgD3FSFk3kIv_f zpU^y+w-Xg8rWKZ-q7A}tvCy3zPgbA}Ccf2PG5)n)XN112`3*mj+ywluzMMDif7!(% zK2@;zBShYvW~J`W?DcGJbDxxN;%d$x_6I-*ADMDcUJC!GH~4AGHPWv`(IjRQf_$@j z@?{DzXS1KY&0UnL-8X#1**aD+7mEyoUPv$Y=x_+PZhRh6VB{)4HD}$&Du3@=J!`9v zZOI3`a>_^cwZ`ot;=V8Vck|Af+ajR=`QirlnuJIHG3FH#YNsLI1~X9SCNB3xF4z9$ zR?CS##GV0yBd%R0^>#sT8?Bbr;i!wA8b1nBjYX6WgxmUd+smFgSIGNtbi0mtjgC%z z7x?hl3}=JBViRVF;FL!8dfrO+s}pSfilyF4hT1y3j$YhvZY1}gv6IzrM+;@>sYyP2 zmoHjn1st4S9qamUh@@5n)#PAchj;`Cfq*l7RA%g&eaTFvU9&U(2!d&vcV#zhcXTNR4+DmaV^?AT zjNw)3sU{avaJZ_1`efzA4Nm|(Pu1p*^H6C$vniSf^6x<|I5LU1nbrz8bEUL0TU`}^ zxkuRk0fv(znWs9!d!MXq19acJa%e$4`MH0Ik!!Y*hk7+*$xs1B_V-Zd->g9RGPy@w zJfsut^yc_=FpW-J>vi z#?Z&TKjtK@VO0py&%%`SbJrK5@2Jj^YS%Y{O1LTAomt)$$7=vA$rJ8!R{zO9Dk8TD ztoeghK!i~-^Z{$i@WO3eQy9&O%3V+rCIio~rw>{2(ibL8jYzC7m%c=UntgZjgl6ew z@3B7UxNM{1D#s#RTwJ^1>QuAV6iC?x6RO=f^YA|C+~pbS|n8^t$`S^#8iy4l><(!qQ+(hO6R14dBV+#sCGnKQ4RIkHt@q0ntk z1JELfYrPU|{x;*Njmvth{f;k49HJ}+@8kDM9&)(QW<{2LRrk!adw)YAPnbXoVDgBT z?nm5{A#JJmo&rN#fZcR?lqDl=yz{8z5UaFx;t+LpJCRseOb^DM)NHIT(E$>OdKMB0 zx`Hb|5{XwUu5<6$IpYm*wwZzkN18r&w*CRq_XDc|8xf=?7gu7Cb%_)P)#3{iya(gf z`=8AMGAN*&T$v0DzoAPFED?2}Zf2a{=u)~)A6;=v+jHz&W}f`uzdu9gNM)+>WtL8k USSA5~8IW;xxq7kYX9({90mxhknE(I) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_with_long_name_0_0/00001.png b/tests/snapshots/stax/test_register_wallet_with_long_name_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..3ee790be5c8b27d0fc51f239c76bfae80b35729f GIT binary patch literal 18006 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⪚C3L`6_*l-a(r*or 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_with_long_name_0_0/00002.png b/tests/snapshots/stax/test_register_wallet_with_long_name_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..345ce91d486eaaf55587eb20e73e4d09e8df61d6 GIT binary patch literal 8552 zcmeHt_ghohw|7JsP`V<5Ac7)NG8Cy&MMVb`5HO*c5D2{^y@u{6Z4{*w5S0=jG(+zQ z3_{Ex7}^9xAQ3_j5J*gTkN3X+!h7%g!*@T=dQQ$hXRm$sIcu-AKA)9m4=wKTpT2M! z1OoA!{&B||1Um5-2*gp!!vXZ@T6R{0Kr$+(cZ?rJ6m5_;USs~gaC333!-6A(Cxl0g zBQ;(I@#|13bCc%`M=D6>51#o;nl?61>wdelGsyax_w}vk+ghfG-8b8pvc^L4por*W z$0#lkLOzk}Cg1;{q}y^+fi~D9-0R(`Vb>1T;O*6@;}tFD*e*TKHH!VpibLU5xazOh z@rdF$RMRTB(;QCZjRq%~)Plx-JnJiig2?+d2rDH}Q?yxq<+*r|Lv^MBwiWu|Ds}w0 zgPO>CeYY-6Q^6oz_86wC)(i0aFAfs>iMcQcPnMkL?@$q zt?FF-2>c=#l$VY;A(ZqV`OiD}zc#Q$_@V@w!C=}QFhKkCn5vUWZO>df?B0q*Z!vkX ziqLq3^K%U5GbOm7+|7PA#alV73;x>LK4tlo7 zj+<9Ox!3GOl}w_vPO*h6@7sDo-rEoej^y7mw{a8`R}VF-(lGDo=?U*3Erq8LjO$hZ zUJN`uI#P2C3m%`*l@y@O|4w|4SUeAbuzvoO%o?Wfr(_N<(dpW^fB*R$@rG~|!#+Av z7~P%e`P+48riZ6Y7#so&W3t$8CrdCGfu|=6pZ+ke|7SB$2Yh}0hE$dYFN{aj0Sr;f zaDT(wcZ;+W5%Ug;rofbQRrw4E(XJOiQ)tVD$XXszwl(By60%yFCuYH@*rH;>)aiTs zW^%+u0d7O>JN$k9PH}N@Qe(+p*@p7>6hd{2clCQn{#GLVJ;1zLh4?EziTg5khlFWk zb6W3(*rF!(4Rae-l11K<4zl9jE4Pu);AvnIwJ_vAK}B;LVI8Es#Y!wy@% zpAdpiZ%Zv)QI)Rw&BLeH=zz(pT*0?0@NmTb?1YKNV#MA2WS|gDXAW-&q=U5iq%FNm z2Ko$PtneO#x$YQvQqywRIY1@~olA+#adYPl+70^CK4*rWWO=u~bnE+Og)j~>1j_@87;H8=CfFeFLhJTX3|iHxFQ}+YUMEs? zdR0I(3|U_uY8z$yvR_qFug91boj9SO^fXk)?xA3FFWdFughw0W=xAmmthNLDT}NuJ zhP(QCsI*<)^|@Z+za8(cKyus)%I7wk_aEB^NoEzW=TW;6F+7R;t5QbKJZHp%Sr?Vk2{Q1gNJ88QT zf9&nz3@k!Z8+1x^$mRQwisZ>#~|kENg~CRURV=B5SNz)IvYhAf+b&$&Olp-z1{kR^>Lzo@E)+seuFgNk0eGXuLW8H>!2LIJ_E6GqIeT!)jTocxD zvFWB7U=1O7#Ko+8T?=LVbfZ%$_aR@TW4W*Jz#i zfcv1XYCj|7pk;QCH?b5oBLCbWT%F7KAARKt45mSSO58a?m{<`kIUGuodAhoPNqAAm zLUK4rl1l5%lL~e7Uw;HnwSCCRYgQ%AlgjDSGIt|$>6cS5u({pQEbcQDcYCce+rznb zS~mIgK;Sp%8}xRhjwG-J=ydw>DeBqor-@hKZ+Ju}dz?~r51>#b(;3qHhGf*1_3`SwV7meaThw2eZ za_=X=lb9*I55J$G+f88Ke5n05n%TXu<&hu#UJTyXFDJu(Av;p3oR`qXe(=zKLV!VW z&CpzwmZ~||*KZ^_EY8%_YPWGeOW^bwQdj#?g$X7}yhC0RW$)5x>fV9xwE6bU$I#`h zIHS??nsXf^pg}|Mo%Cf_l?Gdw!gvPWU_KtQ^J6 zZ-h0i_dZ|B%P^i40#Bwmihm(};JVRcAx>BtO!<7%^lC_y>tLev4@Rhgtux&B3|rZJ0`DHIBbfsie*fx;(y;_*8wLtgDomL6&I(HyY zh%kNm!*(02lk=i-M&iYEKp>_t5kSp)gim6ydHJ1maZyubaYP_A>K;&F-7(YM)bHHD4J7)8@M! zs}%dj`V&32$?={_ok}>Yg&LbzUNz(Sg}U%>(pzoq^?UDB#(NqVnf{0&S1cvN?3&OwBK|s}^tMKdv@c{W(*(U2!B5W9Er|jvgHA zAcc~MT5Ou5hI{=>JkL< z)xAmW7({&M)lTwvq{qPOrZ&Rnba{PS=JsQ55|K?aA+fH|oD~AWlJKrcD*MvghPjQX z-zv-v98(T%Z^tftEIUfiUzko$Vei#aXLL#kg?RVF*@NhxGfBqvzp1IP$UP%-8^k!| zawHI2o|mZxoVi#|j@=B?qg~&RH8OpvPf*EC>t2lOxx~C|D3#@IzE^tp`0Xp%XZ9N; z{|Z!~fN=8y8ok}fM$LDqoWn@Gj>oQClBsq*Wy+5!GAr?qP` zmNzV`d>muwOas$1%m9tR?0-5(3MJ%BtbSBW4mW7?ZPBBFV1vQdl18$|KPOWnk(Abg zr}lHD>bX=WkARyvLoC^;8D%rBp8@L$pOjl%_SiD~W=TsBb7qw_ha!6TU*VKAfT-vX zBhbc-UgCb|pn1LBV&a&O%vkM~?XSBitzoa{6Cfgk8(|V1qhY(q4?sfJ5Z#F1!uZ`U zNXUYh`jmP3NxM%Vi)2mLVTja7ohILM{O)?6wB7NM*CB&3yG3_Tkbk}&4ue3*U6Y!1 zgpYs6O|251?Ga$k1wvq(GNPY2OL%#jS@cuPZ$i#*mJnZ+#X2gD)Twn$VF97{!0Xt- zd~U&`aAhVb!;AlT6_ucsrP1u<3~Rw1zt(DM@af2K449U@%2MRJZE%tu)fI5(l06_~p8UGWjnPF_S$uaeEI(LtzFh9=AH>jPA}YBl3|U1y>t~ zo$wjMGWV8$tOmF@POFars~?hEMD6OUfXRLjb5_9WrwUbuXRgVUBc+CeHvC5$A54U_ z%=u{*Qo3&7A{U6VbO*qK9+xGGJORRvWfdjckPa=x~!LU zw2l=4d^&qAT(h<#pks4^kH~N;oq%^+iI`ZuyAs+3-yeGt`(?HnkY~o;hfsH)<11AL(@m9Fk`1NZ6TY!FY#9fcq?@v{fxvTE3Mt8fyEH zQ+Xte5x+DOjd!Ha%pj|Y4)|7B^Dh;g)mgD)^(>X9a-$1VM&ZRSzmGQJ-J2G+d`b-R z>2D0BTEnWT`??1ogrdZ7GrmC5-!3&;sW&MVnck$@!;0!UkPIlDbq{?YF*$Z9FN!*V z{+Yi?uJVNSqW>Tj1^N;mZRR`8cQ!X)QOHCZR5!_=?wa~{-dFPa1gU#~T}8w7L>xa_ zzbExJb~~8n|FqigSvbit_?i{<-za94C;F&eE3Bz*?FOiuf*B#q$M%+xPYTy82;v*G zB@2cvC*j|n#nuK^yyvdqPP%MnECqP4p9FDB6(EoA5@_FbEMCfHBAL5nJxq>87qhLo zc|vOGaUaI7b-xJP3$NL)FC@D-i^-XmmB_P_=LWQy&;#~~E-r7W00M;04VSsi)+k9u z@auM^v&y{SOlr*@7A3WzI1}>T-eG6wqDszzw}*7LGYi>>9V8hEk0@cFm#!3z)6r{{_@TxPcpN6 zUTZSfQtwiZxWcsLu$TWeqEu;YHSz4NjM(&GE~-B(X6MEsdN9WA+v=GLYq7!<#c>tJQKb3~bi*aih7XBvzCX>o#GR zW;o=wie&8_8Qt4>Go>va{W|K~jKprm5ho`#7HF%N4kb=pn7EK*m9rApbIfLM7CiE^ z^g(cFlnU3l{m6zxA)&zjxn_pNd}42oSss5m(c3S#=+Zn_Yv4BdXe86t@1^ecqL}mV zLxx^0)|j8UZFf-4iZ~9wyLP-2Km@VR-)lMi+MOm8f7uSi>6|STFUHCHANkKa_}{ky zR1Q2LsJpv62hN3n0I}dpwQ7F{ciOEJmXPSQuE?Hw4ZD!jcFB>{E|0c(WxIE$Be)sG zhyF8BZxJsPzmYl}o98e8>h;*lu1!fY!GILzWgPE+9w>vx>x_2$<%&DMP`ruddg{QN z4sfXT9BG{|oGyaBxoU=}3!hc^0p=A-9t>EU;sVIm>b*}b2Wg2WwejboXC!`}11Q+u zwJx$Bdk?!eW42-ffCI&-|qdKY}qV4L}zKX(XRXVdc z)=o);GvR0^NRo*r<9iBDfc<@^eG7xGZxO5_% z5Q%Ow`6(dh{yqUwYbM0WAiSWoHO>aLJ@&po%inm?b^0i;Iq;=yIrKp3BdxPc-oeQP zx37`*^|xnMBKc0v${&=VXNPwr3CiVE#zeYFJ#>)Iu}t3D>_#S%eG`At@t{QIIgs=B ztA2=f_22!w-}L3jAm3{PuJVN71^PZLe`Vt;kZpv!)OEITNAI~p|oD|vIr{{*F$|KU^LqCbf6Qcfp$>Jxqj5>TtAdT|{25z-} z*Hw@<-UG57D+&YEV`uX9X!XR8vc2e8|2U$fDc%tP1+!P}bMg!I8w2fg@J=4YH<7mP zkd1wflF)+M9`bPM0nYU0GD=;E$k>+QeM+uLMthW^GRrFW-!@3|WDX-Y`Z1W);~XpA zmg`?V@%Db=?Qk#ca+;RHo6_aM`p#6B-)16%`4C;8Pq={%G=`yaPx0hL z97y0Oe)e;UADXQ7I0@*}rRMNfAGcJ=`*ui`8C*KG9Y3Wmk(3s#3f4;8e^X$;dgH`E zWy-x(BgX+(2JMaEND)qgO)5l^E|siqBio&7F6adwG5J(6JD1>7k-NmujJ# z_)dF7_IB{ZORg8Kz4(uqISQ1xQ2Cms?^ zPh0_mT=cKn@ioQ^(%7lbpzfNyj#x5C!Cz~|IXYH=H z=ocn~K1M|SQgZ1#SHOX7dcCJ;eN;lIcmOomhI{cTzJW(fu_Uc7HedHA&49@U9u|jTejjJHw0r1L#a6xEB&9(ErojM7Z{@;;9Z29+JG+Qgcqe10bbh!Y&PXqF0ynnu78C`s0IS6|x{g36-fzbW%1>J!q+>QT8~N_`A@PM?(rZr+8_tX=)AGI^fFS*_xk z6xSj1usZ<7a(^~gTO|ZG)$JJE25=1by~VFz-Pf-}nbw@qBiVi)6TUb|>ztjhcH%Nd z1W;3)r+-eX0hO8Ce#~*Hj@3(Je0H(__w`)oM9vHRr%)d$#w4G(SB>Eg~sOOkY ze4ri{F6~rm_r)wsN%#P!F!kvdk<*C+0Q$Yt-`lbNQ2U&d+BdRgR|}#Cx7Pre_nH>F z5LEQ5AP3MJwRl~rtSI-Y8Jz17)SyX7PPMNcUWY>z6FgW+0B+L5?3oX3nh!h=^8C!m z=L1Y)X~)wE;JCs%G-==PeAcng7||j&Kv7G=(_PflPZOwg#r0?p=(=ru!TetJYSve) zgJePYJUr~|FmSEj68TNXLM+u;jQH6PK|rV`T~IesCj>{on-U9pyctd2v0BxQ78ym4J90`SbhT=llJBKA-pD^?tth$7N5~ zLkEu?l#-G<jo()ZAG^WPFGW&u^IEJ_5O53*f?@U z=F))|(!cHb*AMP*4r8PZo!mzbzmWcy)4v}aUKe*&S`xdZejIrlXfv!O0MmcZ`X>AN zj&O>NfR@Tgt+GT!SE`iMeHV<>pf*_Qx{{&PX;~GiqtbG>p{C(Q41}tO>jI!GR>#%-(sI>}J`Fq`5*LXyDQ+5z zg3sj+U{8R%s-UGj9&a;Elu_o)+T3BY^F53LT`;EC35;GMaRM%4crCQ?8D7#*X}O=9 zd>XzcZilNmc+eVs3=oQDw?d!KMRlYNZVjjP)cSSZ34Knkj)L4!F+L8y5zsP$`*f;+ zNt%BE@lz+`K9CTEa{IFtNBa65OKZCm=%+krI&M~FLlM~4fGYjcA6v$v26#C)j)VDR zfk2S|G(NWNQDT<%WQ-M=xpvcGG1WnwP+Ggq=XXIoS8vLyh>5S%EEzvVuh>Njc$q{T z3f$js`pm|zsySLAqR$nx>UaeyLo&6iq%LkudAjCT>C5gBw6q#ES{DRO%vepNAkQ9> z^~!Fr{ERB5e0?Dxuxl+m*uqqzA>!53H}vx{r4jF>KGi~1?hVYxm)IPyINax~B<)1A zfGNUWa9kXO_HV5V3d!Mq#W2N$t<>KkemjNPz85h{(zG)zS=!(x9}wslx5TCO3km9i z5CtobpK|73iwL4jFN{*Wy`i+zh{X_{PG9*eHau#f97kv0UppA4TH&c@T(M69f3gH` zJ~^7MFZ!*h&9Ka-_c%ZOHtno=?xHhBX=ZYdq|7PYw>u4m3Ncja$!*T7Dw%FnYsgzX zhcS(8zul6a{MQN4#AYT@A{4IljDx(DALS4gL+mt7vO;_CbdwWl{{j~TvFgjp3@Ps% z?+MaXQXtZ-F-GuhA50oKV5+0p|BR=oGdJ`$@N+dBW`(LSoc`t&^U?to+3^O##H-=q znou}W>VQh^wa?!g2y1C<1_NKEU!{MF($*ZEzG_{tVaKhFUH%!Rp1gmrYY3y#5e0iH zyy-wyqn?dxU!ItlxWCv>3q>n!z!gLDuNHp=&YZEh->Wdl`NM?9NT_eNThaB<`(xKy zLzVUaJ`OHvQES{xizPR${5#XH7|z8`#Q;_$(0cgJAQZhi#z?%l_D0r_5InTFJ0e-3 zsj4}-r040*R2<-Dd;8MhSOe2U>0*uM<;=cC@r8jGkCkmZm|<;iP? zb_R$8KVJ8kY64&0B&)$vTNa2f6e^YK_Gq%Q9*06@W=@yLAlGCBA(G#FMPJK+*ure{ z!L}T@tw%Bg>{Mwo?3LRhZ#zWRKU>(!rF>mC4sY3G)$%zEtt7$H*}Cw)*b+K2>-L$I z(3D@tubO*)=>uX5ztU8`PJC32^_V`8)Q4w2QH^=I+@pDD**fPg>NSz*HErFdalY)W z2GrjejodyzBn~^R{aIDTzknRh9XMjV#@bq2Gh>1$f7$hlI=a?=>YX5GAxWl@TGrXj zVj~D(Lr$VpgZ@E;%tvR;NHN5(VzID1*N%F0y1+Q=uBMB(9mX%Uf;#)2lynmOjrTIb z+dy6$+%?$TyBfZ~sNZxZ#_H3-y|OAf3#pkl<(Yr_c`KKD>J1(MM9yOXVF5kO{?1P4`o%}9VEr$=!{kP78V9AcyaC9ylu7)=Rj zyLFh;tFoFQPX8`{6RqRsk9!PR688kRWNYi^eQ{lU1!O>M*9;`$ecKES=cIJO`@34P z=Rn59o?a?Vh81s}90y#dd>!4Lvtftgw*cv-fXobE{GoB*k(Lhk63A0YZ#&yi>Qn_n zj#Xq`P_19jvXRZIuQz5iK}$uMadSpFVX9;x$%I>xfwypZ@E})jz)g!GR! zKqTkk=+*kmoOi$k;v84B?L}*cYteuDjvj=yM&7Ub_71W#yoeweQQDxT79Lnb!p{3H zJtN8}yMo^KeK4_ z)7?7$46iu9>LpJB?GsyCyEo*xMj?5YSJ~6gadq+jKKv_i4Lg0<<>OLvA~HIII@UH7 z0}HvxGxMZGm_=?l_@u-Qof;7{T~%>n*u&C-}J|9L16hQ z*(}ohNCtk*gfZ4(nm)AChi@Mn7u+xOcRd_z2IgoK>$tI8#ZjGmgBLfpfzKhbzF2Ff z{F*+=fFbQP6?3yaR9zmX(+cH_CGaPr{&qT&P@Zm#@>IypPPa*aM+#{|ZoP&iYsmyW zFqNn6DxI>S+A~Mdy2uvlQu2DF^*4cN-s?&265x8}o@AyOHAzC7^ndfpgz?6oj}IHd zKgGFXxUsSM?VVzLP3E9Y(Q0Dfx*~otH50ndIk=@46N}|nJ{Tu#u~^YK`Zjm?VP9h9 zBaZ90WSedtgw?}w_zS&-h%~95D{wD+isrYxS!FSaYPlgGlusOL>78)81RoKQ5A(2H z9aQvlJr!&KZhF3owz6+CWR=f|GNVO_NyKmhmok2bfn2O9eE()~fyH7a+iYs~b{}h; z+TGRK%)>HP&;Ugab!_aFkowxu-8>lY9z9=d$s%6sF<_1Eak#GWDrGvTw$wRebX#yutCj9OUOCg*nWX?5U<{I40Rx>kC(VT9)sl zn~_E{T@j+7{&~Gk?&<@$&H^;oa*{_tFQm>Mqpc{)c3Cu`cG@#~82F8v@P_c-TXBE2 zeRvn_3)@zo1Jw3_Q`+9Z) zOepQ?e{t@UB580Ua`tM1I^A9*m}AutCQ8e{=h^?~;~sJV6}XTZLk9;3-6QcibE!@h!A*WWTz6iXqr{o@%^2|ahK{CS<-3B6jzHsp zId1#+irkc?HO9N?)qu!ZH3RB~9hLpa2lOQ0zf%hY+T7k=(i$$gK6-lg%ksJUfG*!^ z`eS+sJ}w9wE}XPEyx!gy)td1G-4cV0kM_Xj(C?$JOR9e>hH%^AL38V!1yzF@9xbf2 zR`8_QGiU;FkjEz{NGjUz<5oi|XZITS2s_M8pU^MklXC-t@mgSPkNJvN6wbOdNaGwv zY`abo(D$Os_gRUFh(R89pk=l6Y}|BV>IXWHRkLTq8S=pUteDv ztkU1P57@TZxj7Rf%8UILI76n9aH0;G{Oc_gV!*o6CXe*9tH z#KG|iV%&EQMBaaq9O)NPcP+?%JDRWGi&CKv-mVs#ze@;I9)RHt^7@HA^qKMfA1;3A z{2MWQdX^vd%>nAI>{q-^w`JUBG=={PEmd)OxR}a1=M`Ol6bKRBcd!#HE1{dcfsU90 zo!5bw-q%;oq~&Ud^u&zRY+MrYnyIs7B+>so_v@iv8?E)w3uv+-ldY9Auh)~zp{ypX zxnJ?fSjsUmF^?OXJ>1w};=5|k`o>Ft9u6*G`3FrfNYaR?bgr!frEO#T<`O}TVEP6~ zP;G{8MLKRVir0j=6eFvWmq>N2{d$ep#|Z2i>XSX*F8yd+nAdd1f_@%?z^G|iWgpz% zb7iV9t*(?e8kEShw0(De{3Dka2?&preloU=6)^4eWfuFRUMdQOYiWs0knn91 zV(#h*k*Ib_GSCS+f{llW14Cmp4BPHLKYO>$*%fVRU zA;KNr8sIaEhROSn2_MA-oNPLN+fvYgaZk}|qCA>FbqB0?!PhH_Nu?stWItX{u#w84 zlJ=n_&NG9KRk3N;gO;;W~XsX{NqYFT=OOX!04@`jHk+E=tXZP}~rh=n$$iZrXQ zlO78KiJ$N2=dIiE=Dx#&T6_%XYkn;gTYaVp>LHBB7?CdT^1Xp7+c261Yjav6boG8* zyELea&;zP9O56BCc*THY+s4I4C{%)e;7X^Ib&BDL1%RBO@DZOX z;$^>L`>EFckgTvnh3&yD?A3T>mjrckf_l#Lj8J37oI>7IdA9b;`sLB`a#MLxcC=M2 z3rvsdX!Ee+(eTX^EP${O@yg-_tGF;#|1x3W+Na1?Tf%<%U4nMaTxz=B9z!3;MyBgtxZkB*qFr;dVDaBYZ|Bn6f(k!#KR!y0(a&KUY~u*_mI8ciXkx>; z=yf}4Y&zM-mg(nzs7(SVS40q)q-ke(5>$}wL3<2Ir8HLE3$-s|yM7nHfSF~f5WD^)$7AO8Quh^~fuPN$!nMn9P4PaMc@7vll^7tmanz7ZeYVPF;ICpqyb+Gz# zTy(F%FB7ZdrkPkZ7JUM&7~TT9jCq!GvUqQ&lf32eyClrtIxsAFB+m3`SL^JFIW z*PxdHFQ9k^tgP107!4aaU!>C%cWK5M?t4v1IzioWp-r8dZ`7FEYH)CJape>{ra?avA>_mOgMUVyUEAEw}G~#ob#Mfp##WWZ)Jc%YRdwl-CLPc z=Sj0bd@#tX;&>63@vu@|d6Ir!4%ZJfHkjK%RzJHpC4#`<$Wd809SHCYYxOiPQ$eKc zGC$Wl74yY9}m~2x6U7jQIj#3u^cH*rZYgJ~(yU*;}EP$Ios9jp{ z-5(`8{s^cJ9H?Qc!FcL?ynbFk;s_%j7S~ECyr)<9 z#%tTX(ySv&je3jtN02H0s{(R$WgW0eoAR0S+wAC!o|47w`S?}l*z)fUAY~WeYg6p- zFJvSzE+L;_;ZaCt0(_#9((xp;M>%VAArRtENGAbQvtkii+PSqfb6f|dB}?*!^z+a>5k^2R*5MMQlMs{CLr108~kC zupM{kur0+idq{KQM022W)xeM&j)T28%f9fvrL|LB9tbq`^IhDT{xNI-Y5cf3x^v*# zM|@pbKE655&qn_Q*lRfBMI9{4NJY*!KYh*Xz_GIj0)AWl5mTll9&pmYWt>3^8wxqM8Alj&l;mq40G8mfPD{K3#;B(OH>_S zJt(B8-U%y#_!UE%qSg2(Rc9{dt5v1iX^M=>IhY*I%RR_Q$-6ZsW+oq|J`SAS{>Ui? z(2oje9*UqHtIN|nj|m=lGq`CgZ&Dsl!#x*T)rtHs}$!6J63(3`G zI8%85ZW%1SPKdm`22^hFxt~&C2n(P)*6_0_y$@UsH`At2@E;(4LjIW+4(0I@Cs&;S4c literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_with_long_name_1_0/00001.png b/tests/snapshots/stax/test_register_wallet_with_long_name_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..cb160543583a1029b4dd2cd587f898b7d4a09097 GIT binary patch literal 7788 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 vcT8V` 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_with_long_name_2_0/00000.png b/tests/snapshots/stax/test_register_wallet_with_long_name_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..825d883019398a25398a5d20073d8ef1830a6164 GIT binary patch literal 8264 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_with_long_name_2_0/00001.png b/tests/snapshots/stax/test_register_wallet_with_long_name_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0dcdcce99fd958a41c5f50ce84ea4d2c0bd37529 GIT binary patch literal 7579 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_register_wallet_with_long_name_2_0/00002.png b/tests/snapshots/stax/test_register_wallet_with_long_name_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..c703c48974fb88e71a6d49e5d0fe1ead629b13f9 GIT binary patch literal 26008 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_anyone_input_changed_0_0/00000.png b/tests/snapshots/stax/test_sighash_all_anyone_input_changed_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..56f1c4952b909457235a9f4fcbb68fb3be3f6443 GIT binary patch literal 8907 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 T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_anyone_input_changed_1_0/00000.png b/tests/snapshots/stax/test_sighash_all_anyone_input_changed_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_anyone_input_changed_2_0/00000.png b/tests/snapshots/stax/test_sighash_all_anyone_input_changed_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97524e00dca3fe77a170d83b3dd8dc72e7f7c98e GIT binary patch literal 15636 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μQi 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 DL|>g2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_anyone_input_changed_2_0/00001.png b/tests/snapshots/stax/test_sighash_all_anyone_input_changed_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e72ba2fa664acc6811f4636b7c5c3475b004d098 GIT binary patch literal 7472 zcmeHM`Bzg{yGC)Kt$?-_6a?g=Vi_$W^WacOQ3fd@AcUYY$PAJ&B!oDXv{1w`lrc(_ z$RJ@1kPr|lMo0l6K!gy60zwipFePLlxyOF%-hbe(Z{4--?a2>&t&_da9^UtP&ig#) z*NfgD^)Ge4R8dh;_xSOLpHx(~Jy22E{!DEJ-@o;c5qPY%TS?NRwP9N#a+9HW9LYAjHQO>T&_TVN~ zLT8*$LWEV}BtrXb(!Kv)<<&jh?OQnGea=(nR{HB74_)1MRZVMecG&-^MlK*02NM|1 zuCJ?riy3MpOqsL`gn?V)5gdFx^GmIyX5HPUl~pm;I(iiO$y$v~Lzkn0b1Q+xw~A#? z!oXFv-16gn4NmZo)SgFP^rm=6oxHw=_SvlMV%T6&BRB}ntMGaO*lOd?N7f_#d;)M#E zm-VlqCRZ36nJy4BErW@G8QoT&y4BXr@xt=%g5~p#O*!R1HX8gyEYUv;6-(fSd>I^( zN(SrP=!EuGM2~SdrXEFyRWI#V|ojex?j@m3R-4in0a_Y@FsTRcYq?4&?!N_;%KPuFA{!dZy z&b*WEyv0UeU~m+bzvL1>tf4bju~j}wbJ|TOeXO)xoG%caj%V^y$?_J|ySZfP$$A5E zm$_0n+QN(%KesCM^xi65k)!8!=_si0$f$jN*yDo6@i+zRJq+blO;)WQjoHjeOiV<} zgsZDJIbtwofkvZ6EsOTz71l#kfl@O;LakMZM5&zTR;AwgwKs>(y)>g4+Ri353Iqbx z0QqfwlfZL|E1WnRvLr!_K%oSv{u0k)4A!i{2T*0K=*q3)zi_d1*6{;8ZhqjMPi zy}6Z5;jOlKW@c-!|7hi19xj**2^0Jl=YmaBmTZMvc?AE6M`svdXc0je7HBFyP4)rc zC33M&J{8DGSgAOb%o$$el6RfDO7Nn9F7Z>HzZ0Hq#{~(MPeZG?s%-8^iKp+sZ zX@#i+$(5BSwycYC!9tqkK55-XH8_&xVUW*XBoYCk4W==f!J+kLv~E*463N@eU(WsL zMrPp z_=0$Jb@?v)a#x>jWfez=XHms3jkAH1$Olto6RB08jN9GY?q%7ZJ~yzNtofe*@LAYK z`h&2AE(R`thJOv%ZiM7i7bjtUBn9UfCyxkL^j70rA|Bzm3htphr8-Dg&Tw~iW~zOu zH~HZH8vT5&n%Ttub+SiYcKG_j!oo6L@agjy&17($g+qHE`cm}OE}f+_$L^;_-2^*u zBpIYegts|e?+?9>#lHiD{Dq⪼i1o1QQtS>8R<~2~3;(X2?n;%|`@ms%*P_OJ?f| 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_anyone_input_changed_3_0/00000.png b/tests/snapshots/stax/test_sighash_all_anyone_input_changed_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 zcmeHL`CC%y`?kfFDRpL=v~rtPn?x+j9dT^4Ra?Xb7u3|;&0RpWw8kkjYRpJYsT`wF zao0gbGsiT^&BfoVu>>AMpKL*XOsMU(R)2&UN0y^W69S-0ySqoSUo8 z58Hmw($dm7dE)2=Ev*%IwX{|~Ubhlhad2;|(9$v}J9*T_Bkd7?g6|_5efr0FCuZzb z*kRC$(^r44Sq*YIJpf!RT!6dBtAFcU+{t`bx?$IKtnbe`#rER>`q^! zf8A1buMpuS!WHs~+cmR)pY}=7!Ho)|o*zri>dvs}=KWkGvS~H>ED~L)AEw^F>y)y4 zn!_n`4TcLsQN00K$BG}ojTdW*jyY#_yWywH*e{6+PPo3s>fBY2(rxoqo<>J&WaE+( zGiTyQGQ6`vDL;Xr3!#mp;*Uk$gm27`UY?p{kO=#GgNp-edvJV%=2fMX)w!AStoXAX z`R`xe2pklADl2Vqx$Iz4fN-yoIfN2!m(IG>$aaj~cn{Lu?X9HAf2f=Dg{lO-_}$*~ zNkpepYZ-m9Aox0cRq|H#l8JApP3KdBgr?{li#}(L0+KQ-LgL}^30d8pE$J+R=cDYv z_!^2C>!SI)qcyW-qpz4KzFzgliP0x#;+WUxnTazr6!z?!Cvrr&T6b%m7AiG3$#C8mdj+b{yJV3pT=+3 z40EW*o&NBe-|Zc}{9wayI<*}2=gzPCH?;`?>9uNmy0ddC5ita6eCpUarDYcPz?cu@ za5#d=EOx(8=#RaWc5FlE(|%IA(Fn-kLb+*YF!n*1xYv_P`EZM3#Cw-vk<)?GWW2p{ zrfT*uP*L4e*r-oQ=^?YP?%!P{YxpaBY*Atni6w5-Nf?V z)UMUJ^t-#-ua*e@8w~yrg`DHerf9JP8{t*Vxg$dBEgOkMqNXjN+N**=^7VuP3%VF( zckrMRX=l{L{>Ses#TIPZrg~k$_{`^5AwLm`$IH&w4;dRb?7*YYXkU=NIM@RQvpi14 zF7@h+wp&M`y+Ufe+b9(4-19I-h}DR~%8s6*>@UURoz)L{NvKbHkv7GAiYmmakTzp% zz*DIxZNiBOe+8eaJ>05IUCU19Fquq$;WZ*L0D+)2>@YMjF-f7kaV;Apb=xImr;rs2 z1-c_NHdE(Ox}zHP?D~vIBucQfyoy93!H2kfehkC}crqpZrDYAgN-dwkOF{+eZFU)sYVFMUQ+C_(nh08R;ufR0 zR6ITJcv)WNZ|rg`7HeQ&pr@zD*Ap!*d8m_Xy+Qi9ce>OJ0127w&;jWS;Nwu+qw?SU z9Z-fs4J*%>n3`4)M;*8Dns)$6TwZQTZ}o)1;%+b^8@)kA8WaizuV&I{H0}g;{IU3c zy*#R3-qakeu+m$TJq_kAeOXwDZ-mEy772Q3Z&Q@!>iOY>BXSfRjN{va5ioSzl|hFm zfKYjZabsiU7^_BAU1@(QN03_KBOTSonW_D@k8He6O-&c&ZJc6>KtO6A3EaO|GakP}GW0k1 z1`Fa(h2zZMi&8!}?=aP{ZX7B+lQI!a_OlUcC|G&?bYOvV^Bt;^7yRh!`y@dn)GKz; zYjj&v^cY1EACeqmSd=;O@?$3-AeBI+bHE|;pBNe2Yio>;ytb=}ZbYeg&^YHgW1@WDS^z*uk^ zX$$hKfC-!96#~}G%nUby><9Lh1c`m`i8>^L_7|p2>c!VARka6rkwwW*7R)&}TP~h# z;#8Y?vn%EPPFps9PED)lG;z=gR)vR*$rQ>2`o#GcNDZ@fxRo96+p#&KH0cse3a-|` z-1^$R>)-YlHJKYUa&yvw5;?A(yIoWmNDUz(wQVhjMB<4BTYj`nRB158Bo*;$8kdRb zxs*{W^}RRk`k~y@K*NVuNuQcTpwEsKoR88}4WNOvWhI0AYex-Qv8Tb#%GdxESI8HX zl_ne>R0Wn#Uhxj&N+c2h_S4hTJRa{c`-{pmgc4vYJ!PMS<_zcFkw%JIq=eD9Z*S6f zcX#KK=>Chiu<_bjS}T&)(bkp(d3eRn$VLhPFp}MmK&7P(4!{QQ0!%dG8o(*Ay3HDF^ zA(MISKhSweWWQLi^zv-@m z)?}OD16wv0H7~m;3X1dw^-9hG!eTn&Eu^uwI07uIsHpH?q~}-m3e}!{PokJWmQX;J z#Md|$rf3}fd9Fq<5OKffN;12|!=!R)Y3T!}UNacJ^yN#9ADGQ%QxReSaDWQXZ3Bdx ze=~(}kJKgU$ZzSRO;uL z#0;btK2t;aF475`5;tF63?$)LU)+XNLNTlQEe~dK`oD~**I%Y~yBJzC}AO@Ih0m3Xc zwrN3U49spspOQG+$PU5~ZQw<`0t8 zkM4EGn)@BC(}r&7rawd+B|p*afoXZ8^Z7+P!x^(#(P52D8sQ7YJh9cZpMQG6r#x@m zsAGrW+yxkeB+VpWgFlea$M6tut`)#)f2tpAo__Gm|B1#i`QdTs{byTQIDf^517>mm z%zj~vKeH3_W}BotnoU=r|Jq#WM&O!l_VV%)Zxt39R(e(x7Z;0qWc`PQ_s-t>)rVYc;EdyF9qWHVv`WEvV+{+^S=gW*Hl9c_*TI(mn ztZ~B*%3OunnLYV@iiP39qWsDem(X!bf%|1kmxjPJaeVI@KE_SzE`4m;@YZbnPUgRC z|3w`$y`i2v>%Hu^@ah8btail)6^DItlr=6C3XR?E2SPh_{qMbJUD>!MTY&45Wd&lC z3g!iDD0DJKx%13=+H<7+1Jl#Cu50E?jx+k2FLq#WjhgMu?hJ(DX<_yLBScG0y_31U z{MOsBdTxT8$Ef|xImTkMI~I27;E8&5s-(iT*_{zM`NNak>UiL^IKH6WgE&{3BOJg^ zx<6O`MR#GYmLC@n8UjKJeYG>VkYlF{IK=G)BroCkG=5L)wM~UTul#?VB;71GJ!`k| zN+do1Y77QRn~E!$a}+NR78+XE9eh5Z0k9Ew0L9LCDxi&V)2;i-pKN2t{Y)!!MeTfZ zK?tlWtLF%OxBwU-M4Rz%y3iC>%K9Ut>rwNE&#(w3;z?Q^f!`bR&7 z=!sa4fK>s=xaA=+qwb3k$U-c88iP&2IN2iszyl@u6)b znB2xhH%I(2wh>-1bBwh8)>Xi~ zM!qXeznw=&WnJ6Dc=07hs&~w&BHYew262%nRgMFX`LxR*Hhj9YYqBQP#MVfcy4@Eyhb{2B ztKJ?~?{kozjzWzpZti2d)dV+S&jJ1nM-8=)oP9F?jzw{!^BT5>G;W+L8bna=tF}5!6Ed>n6-l1M;(fLcxKPpBXMzYnWKB3DgCB;M-Cx= zugPc;Sv3QSTUmB>dQ}fSAP{L&Y&~L(?J-OLlpmh)%Gu&s^rlLDtep{SV!}ETC>N!z zt&L2!?}6gNhL9qfjCwPuV`8krvj^mB|KLNVsawrT2m}&6e;$QI0&SVn@+~?#*vY^1 zT>7M+-*k|zjC6}{PSWWYvD)pC$;4|j*yX+XFIU{?^nqJf_`*u>3L54Jozp7--6362Ym>x{ime`g~2%S1q2;e-QR(} zR!t&-)s6=svtOhVpGX{bUCIIC4?Db(02#s$0X@~bnrUfi32b+k{F<}y)wgax;&c5V zC8vT|)E_2>RuTw=!Eld^zXwQ=DNVyW2ZQN`GwZW;)?}lI-ny{9IAclL%VoV*$$^-3 z_ot9o?Pa{A(fbQI>6R^iKJ2~9$<=eV58Vj;=eQ5EZ|Y+1PFH0NybOWjnVHW!3^2Vb zOOMspT`oDB_;Z%HjNzKY9F6laL5wPRMXB>BiaQPt3)asS`C9itE-e;Ji%}B^39Y~h1LRII=MR|e z!zRe|bGx5H^gqcCrYvX!5RSS-A<`#Ayj%0myv69SQ0&1xUc7up!6NzJp3} zMg?vLZHKQTi^(iRK)`EGyiWx$DKf2~bGc0;Bg3ApP=^;$Sd4o-oWzEs_=S^0KmF;CbE;P8Iy-N@9`RKm9U zuS@p*lm5~l9Pad;1dA>p<*#1;Es_)TaAFgu}ter=FXAN7wGhS+|}kJ7}`r+ z&`&H}OhG6q?&vKsg#_RWDkdZJK;Y;VvBmrD4IS?9GvZVwqZiA@^`P-9YgMJtZ58Xi zNhLc3YIw0W`T_z;$La)9%%OrZ_q&9S?2H$=ASomfrywjZa7GLy;4R}S@b1WeI{e2E z|A~kHwSBQn9@*WMyuPt9zp=0t6YF8K^hOM1OH+1&*zEPpd(`z-wz~|6fOt#nlW|p; z&98z7C4YXaDoOHr&@#eA9(w0r_V(?Oi<#v$H<@0!P7>XFTqE(PLX(6ax7gAuVq#)? zK_-`SWu(I`2ex90WX_l(hE3mH6qe_&z8KRfIMJZJJ3i5#uzZG4cd+B|SqW1y&?D_l z?R`@&3W;47t$yX4(vX0loMRFYF;HWqhdVOx`GAFbg)Y=S*xo4WkQ(T-{I0{PAW3uR zWPEe>6^eIcO4r+1JdWrF_Nm(mJf^LMS<-89{=XsPH(9*rk;`WlP)e6YrRC*k3Lh+_ z|GV{n1{9b*Ro6^&1LpY`Ya*58jqEmSo3VIY-sw~&XV>*2xwY^AwgbQt#A4u~mC96k zRo&3+;PI=H&=TeN#6PZJ^G4hU=x#BP$xoAd!h4=yInX96 zC-2_Y(p%d0_JXkdmv)VYE9#O~P}qZUowWFfM;6eM>xgm=hofWjF+32k061uMJ~iW% zP7MM%BEAJ!9?Ejt=UwBkF(NK~h9H|$h3&$s#I~T87ksD)6!T(CNZj^DCs<3=T~oVVrUL!aAl+;9r+eD15dy~l^ z8NkoRBHKNaLGnqHio2f|u}Gv7E?2mT#?Dp~Aey%e$(T;}|O@mUhf2d7j z^7jiCbdGhN)e@=*fNNAZSTJ}Vj8c{}gUuV9My5Z2x#pCkl34xE(D|eD|7_oaw^vka ziMe(bwwa$GbEwhIUNKwhO`-S$khfsgyc}kStGUeF^>(+kc|j0(J5MUPdopD1Ag=SK zX2D=ZC90K9oK1+Urw4iTceA*puM2!yq3?Z5$J@^y&qT&S5l4jC_f#B$z@^sAA9H1?P54GRMC1 zI;J83gUM10_qzRh*CD_tni(Y{Y@PWNg{`QDFHD9&z1vm7cipfrdg797-$^`~fN9Vi zd|#>xkKWp@s;O!i;S=)F9qeX%_PN|$30-`GVIrNGX!>h!Ivq-`UF5auq7pPG`FmUu zG~Gw#UZ8%b_R<}_iXTR_UP&!~3u;!ecE4y<#Kg|#*A|Qq>mH!rysS@tF*#~`OyDm0Hzpv#gd^7yopc@!2$i7J$xn>$P=2YH3c_ClQ`!u?P^Ncl(UF{r zoqbHd3rZBXiSyfwM6Tl9ZAD!W(T+5(U&DA%b8i28BOg=p=8F-Z!Da_&D9=yg})PV>3FABWHx_Bu%eF#Prj z?x1G+)N}h&VQbwz+7dOOe)sFGI5i;~88y%W_pB;6;d$asM_IJfEmlaYn@3Z{nCSBl zeilf(*acLIf=fzQrg?ID#}sY;^*3gP<9@PAmvw`Qwfx(63*@cK!=vQq)A6M_WzTNyD z;`;&R)|2P*PQMzzy|&rz{t~B#9A47VT)T(ORe9KPnjdN6&gsuoF;vP>uB-G)5Vw(3 ze~2dj$Zv9Wh#iVj9h|;14w$6d7q&A?C&LyXY1)!mDgg^-MfR0rW|K+;G0+)&Yr3fB z_&!%A>K!5M_{aL^Uj}rYG8V69UXsf+mw9eqSr0nD@@39{(>n9P`LkX`A_DofkVW!Z zmz-uWyv9!arpzBMdT<70z{tOjQR+gkKk)^nYaTUo1A~DrM=m;_++Bhc40G>3MSr|n zEe47@%XJ(_`C2omPo^U*tHeahs<0X;N@Ps^obqP*HtXWHmWA720zPy?_#0iL){~F+eib&D8`>JY+mxhYZfU~QHw4lglGqMKTNVe^tlNc?3W0;r7@(Nglwf#)ZAr+ zsVNVc|7>(HZW^Rd?ILLOpA{2o-vhP^e+;7s>DOc(5{@@?ex_p0*@QlZy${7pJq7aI zLIh&bk5!lEenTr*quM>_Vd>mtXi8~s8>l$F`^m{{-+-}9>&&@~Y9x|%9}zh5r0iVD z^u-DOR~gqoJ9DH?s)xJpU;(){o(Uvd)e%E)C5PyfRaq*M-KwdpyL8ribA78jSbRJ1 zA&NkQoU5P2*fmm6$;2BIGM7bU;oc9p%(qD-97!$RieaE1d*6X(`<>8v$Oaq$JP9+(p%Y;Rf z-FMhT$K&tV?gvpf#%;5xDF;3~v(#%kSE*EIiGpb-T7aT(JU4>045X3TnylY2qrAXH zas2kqMkkLD2o3K=k-te>2+oAJAZ?x9n|8W1fYCScEkC=;&ei>0yYU{^KN9#&#<6d< zrGC(AEjQLi^^c4GsoN{Mwc{ScYuCsHxUg;$2Kv|qk$hAH7ZlY>$BYV5@_n#tY)KIE z#7kXIf-*thN&VIK(_2biSZVu(ryG30JZ^digD-JrZd=(pGZK5Z-E-_`y9+$0Lbs#1 zY9ikK0ww=&oM{KgQJ! zG;P9YI7)cc(q?i!ngX3A(mHXSNwvnt$P4wL>(`s37}DJ#z0W0)s_wbxYJKu9+wo!} zpIvVHjl6sCiWPL6qCbyrSCUGmvTiZSezc-+G6#oqYLK^T4`8*G9If=G9rAV4YZD}B z=Jszy>5)yNsirN{{x1U1CQ4elHaWg-IfZ2Zo=_m1${bBS_Xu}qjOb`2TR@wxWd7vw zZXhKKEFbenZh*%yCz)x+Ywxbn?pHLus<|uQ6MDnnKLyn9JlxD+gEfjHt`^?T(l<^U zod>8P4)?MC7rGsn)v20_ZCUAH*Q``-RGW^rAHMhOWTWEA4|QLvzc51#8mVjcJ=YT4 z*C!)C3Nz0k4&Q^nx>S@E)SS$&y1e`Y*jol-2?0%gHk%pn50^0&@V8cBk-hGp=c|m0 z4#;6508c2M6sjp)EYq#*JbN@P26Sh2BU8modCyDBbyld1P+m2ce;>wIWHkp^vvUBTK;M`{K}Jj}?*6umLCzp>wpE9UBX!xB4q& zkaFu<#&^Xd*{^f!SP%?vFYZNyJS)FBf3}62dp_Ln_$r$jtrEw?bfn8a~24L`RFJ9l)2xUi06eGC(z`aPHB<1oJ z_wB?y>Jpw8JNv;bcd<_%jn$8m*r8><)<#Q{cc}*HuK^+JKEOx6F8e0@H3m7Y)0B(nG&o#E`kC5 zR<6Mr6_NY(tO4#|cfBVRNF|dYt|Y@JAnVLc+nkAPt!Yvarh-s(MX@J1=plQvgWXC* zbSU+_ggdz9uy0GdcoQGAFxbL5x6NgMk`60vnXShTH7cYOVC_$FkYvus`Zfl8b89>B z@f-9&wl;6G(ERS3n>4%3OW8U|h;l~HLd51Qxo9EcUdv6&S#z1TmQQdTj>+TkW@oLM z#q(|v#S!yc>z7G206oKd=1mzm%Fa7fZg`Y8iPE|`CSflI0G{p!Yat?nsQge$PEm=T zag^xtv4#f&(H}G?M?`UEoTYN0b(%WXM64~snGOcdpp=p(hwi7f>=u72`1-19_NQDDu>pjD%tV>h zc*$9oc&$dCx87TmvuvW3KBX<${56nOfti{Pzy#?X3hN&o=3DCnRC-FNt<;%tnC}F0I14kgh`CM`d5``$oofz809L~2}gz! zog5OmA^n6J1i`BlpnNO1f`AUl4c*jSjLd1EOsWoty3yNX_>?C2lOtjn<#H6ZKrVlS z)bf;A^I$6;7+NM&gMcx3V=NR_+Soa7RA=1#hgymA=!Z(KLAoyCTz@?dN9iok?FI5; zCsNV>Lt1o0u$%q_lMgJBpJ)4e|Kl^D>H$ua!QrsMJ*6xzF12Y~YpgxX{->W|McGGA zTY!~x+VQ#~Fdj+NtK`-8K`ILFg*RA4jFU+8jZ`ovr`5^gLu_cimj@tclnNfUbK2$xIesUwn6t# zL(^VRs>K*krkb9g7D99vw?d7Q);6PAlxxwnbZiwMJ&m2mPXpeYjiup<<#{)D3_O7s zl1q{o3idm2OdK-bkrH;n@~B5JhOn)O*7txY@=`aAPGaiAl&D?1u2CaaDO7C0?j6my z7wt1utTTb~heKpj6S*e%BVq%6Ze;wYw!(J_rYx`gtKYjr_G@>YUH_3^TAm2QbXMD3 z@e@@36?kfW^Fv)P==D+IN8N9Q(uBZVumG zWRl6`V{EDK2PCM9Huj3;6rp!+YmJbKw^lcyt}aYv7)ZiR6?@%lC=2jT(hr^$36lP$!Rf#-Ru%B_M<}C=GvK0_thf zCH;TFnHd6t!>Ofu&%6A#g3us#z{THfIq^*;iV&L<6la2j{4FMcdXL}1Mos+G@Y2lf zp8RfLuaIP&X&d|_svh(;s5yNKsP_%hxj---mP!WH&kS>!7Xc*Oeam)Y_+d)R7p@0` zm!*;~@4^2ai+l>EHL0bUki#I&{?>;FNr7-KpqqrfJR;^fG$5M97BRERRJr@;>Fh># z8D@5)QKRNX+EnD4UqPv=)54?Ds@OgNN$rdZ?a>aS=j=vTBU;-V-w^(e+bKs4$Ii~j zJUKXLSVU$9ZwEE2_uu)oGn!FUN3}s=X}2?#8i9dn6qj{(Ve0h(V$ol6Ue)0Q20l#@ zk~KIS3+=Auw@$)cA1D0-p$#hE)4Qdi9l@nSLLfX?ZHxbYY`}-5ohJXZSHtVrn~>nE zG~~|kT|FZZ3o-}OIaV2uga$WzC?w51y-^04Ig55Smh67XiqM!xVaE$}L_gU|K6cxcCZAUNc_E@_>SgTxZkk3az*${wa5loN^q_A+ZCz}3?bs_o zB!GBcYlTWJ8OPo=hv1`T=;YZ3?hh_{i!+-6#yk(9eA7!-c(@FVSlFuL~8@ zc*8|v>n@nW49YX7-0k?BMHyG?cNda+?h10W}Z&l04cC}mwF^!Hm zDtS>?NOwW67|8fH{%mb=O&mm$<;q4)Hr|+SEHaY1(5at*98g_KGMfUn<{0%6h4IhCaq*$g?kE9!mqH94z&@je zRIEpk-X^yB$t>nEAb_dW7g+lL>_6G_67$UCul#K3I43@bZkM-QCT)<&QFFJB)yy6bNkTvi&qUCx=Zn`lp2~>$ z_~seaS_wQBqCNZcF+J_;0(CU^-1%y1K@8vjG18K}BrVlFeBybQ;U(|2h^&Bn(rd!)1Q`MbT`Wu=yNy;rmkiH5)zP&r9-k!+2aH zpQc!iA?XI`m5;Yffhg*C$W(#kPA-d^I!HvWzZ-5*LKe@TDU`#W-*NZNftLL{GA2J) zUK?1ch)k(@z@~Dtn}Ya zl!j8f+$F+r!yixC3fdg4qrT;s=#tuARjTY@y-}dLKe^s@@h`3aKlP5rAL(%IFZ>>I T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_anyone_output_changed_1_0/00000.png b/tests/snapshots/stax/test_sighash_all_anyone_output_changed_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_anyone_output_changed_2_0/00000.png b/tests/snapshots/stax/test_sighash_all_anyone_output_changed_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97524e00dca3fe77a170d83b3dd8dc72e7f7c98e GIT binary patch literal 15636 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μQi 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 DL|>g2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_anyone_output_changed_2_0/00001.png b/tests/snapshots/stax/test_sighash_all_anyone_output_changed_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7d0653538bf5198ab17b8b26649b785fefd8df8f GIT binary patch literal 7524 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 tv@S~Wfw;PzDQqLcd%4c}k8^)J3?7cKw* literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_anyone_output_changed_2_0/00002.png b/tests/snapshots/stax/test_sighash_all_anyone_output_changed_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_anyone_output_changed_3_0/00000.png b/tests/snapshots/stax/test_sighash_all_anyone_output_changed_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_anyone_sign_1_0/00000.png b/tests/snapshots/stax/test_sighash_all_anyone_sign_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_anyone_sign_2_0/00000.png b/tests/snapshots/stax/test_sighash_all_anyone_sign_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97524e00dca3fe77a170d83b3dd8dc72e7f7c98e GIT binary patch literal 15636 zcmeIZXH=7G*d|I**fy{rC?cpJpaf7U(%BZ!Pz9xT5fDO=PC|*;P*hNmWJ^gzN+b|K zS|pL8Cv?j` z>dKy-(mMqN1ol9$UbYnw5PTsZAoS)hA@Gi#^~YiX0fPbP&U)#EqzRG#iXw7icEafH)5 z|LDo4!ZB9_=6`PtlcfX%R!@`*Y`fnmw0F1AuD{Rx1rhjk>_6EX&o=8~1urh}c)VGY zm|iM1l{L^awODcTusMc>2|*4^e|r01`>{jYB=36ebriVwJJLY5=%VmnLMQ(d-pl{u zMgB9Kf8AI{%tm4yF5B`uUqfhK{hu@CR=Ddn5;hXF$U65jTvpeS44=a-p=ky*}5aIh{)s7p!26ba#YL}f(3&>~U_n0T&fMam}2)!I>2LAAsY7>DrCO%RH%%3fCALkjy4t1#{C%ir``8} z$;;iYsDeUMCloa8OQ@@zog1V3L5N0iDGVwTw1PU<6-=aXKf6C_1v|F!{+y;7KtO!C`1{hy=AIT{EF z6I??DdW)y^z|-UvV_S?!_jnw zmoLnEexRK4J$-P;e9jit_Z9ia&%b6zTZyzH4T}Xvwl|AI{8yq7O0B~L%ehb){qbWf zbIi{#f9!Qpxw-%4{Ucvp$o8!ZdmS5(JePA!GplLWU(Gr;78U$r=Jp;)5LG%fN?<5> zT^n+W@ye&xnUGzUpMe-`o+>T+8d?&xDc>OmKIrT3520FT;ZU5xnUd9#{hYyC8NKt4ji`3^7kvn!7!c)#PVz_CBzK5p zsEnV}lEpAWAo{ue=d?A46FnYPP_pZD-c`vdt<&Qr6_5gzq6oui$xE5EKo30qQOy;9 zk2t5hN;r|mId+V}MoL(sLg6cf!F{MXeR7%qe8^4s@1CmEs|f`dc-M^MW?QXrjEH)! z!2jHuc!>LYcJ*g=(wEQ@@yp2DJ2A^o?CgAol~4*$l#g4g8#3X2ES^nL-WgwOh4NWY z>tz}0j=#C0PO)8%OjCekmWS2HJ}`B8m=0(7(Uo zP#p2j?E1xE?JQ<6ZnK^1T6m0h$?Xv{7_IQc@K%f4Od+@!r3@dZ%t9Zh>28b_uHAQR z{dR+A+h|I?Ghv1t1I{tSeyhC5ZTFSeQuiBd8hz9B?d37S8>sQoJ1^vOm6K@!v}fS( z#J)gh2OL!Krqnsh9t9{KuO}l`G3(>h!QxWJyTdaNRX(6i#~4h1bXEyP8D5snr0@{5 zed!AR9g|_Ty?4oLl}nvBV|y=RuYU+nK9t%q-g+uYpTuPNXX**NmO1bvpNxIbg&FQn zQ}CA+S@P>%p{vGR>a~i!3Whh9RxQT3;t-1c}pySfskc3z= zGve+Ql}FZAx`SPuq9GD2@U8B_CUVQ)41sq4)l@tEI0xA&fp*`W5i2JX3r=p*4>XE_ zAi+MO*$7dr^4agIBT;Be-N~+MfpPyT`nB+sB<@N{I_IScCMt_)&7wu zN!mX3tg2sL9$58S(N~s9ZDI2eb?!-8RmRg1daZI8_IMOD`E5-5tNXHU(eH5?*Bee# zx@Gsr_n)Y~&?6?(@*5OhX-R_$2zj067qhr%E<{=SHI3}IZeJo#NjGC6`DhRZU|lS+ zm_DzvcfC<3+bzw@gmr{lLJd|^v+E|#%)Uat_t@`PBXSl?<($kv-!0#b44C@e|Itym z>s8ZHCJJG&5_~0eq7;1;Asb(H~5(g8*}ruiFR;ZVVr-! z0MntE#$YgRzVF;cEAyiWZCo0b6!$m-a)sz!E&1{RXXNLzdiS#GKiXOC`AJ_!?>G|d zksIq>vfP^7APEzjt7T8yeYredfs=n0E0pmMzr2~p=W|w~8iw^7%m+By(ES74aj-yV zRr#R{21uX2wXVYSe^)$DxsB_pf0h$P_6-@O1&oKZ8DObNOMiDQ(ftbhoVNdQ`%2eF$^i1me~LK1|V05$HQJLKxJAG2O{n4x4+hZJMFqdh2ELo)(W82fH0E zt=p&Aynxgl1Iqf$I9>=V;8h;gXJa2uW^vLi_=u5gY8cK>ro}%qm^d)NL9yTt=C6l# zD5uWe-nh+Kj#Z7fM!X0lx~PWN{qDYYCjseMG#*w|C+FT1)mhnakxE&Yw*pB(FrccV zDO)QOjHZ}m5oca;Ci@S3z8=vnQ-p7mE3&S5PQdoS=bQMC8oM8LlY#EVUc6fV=?7P+fFD32ebkUQb2J1W!m|-P^d@?`tBsL9)7Kpt z*8hSd=LoWQvWvxC!5V|mTJc_UckahCWf)>TtF@cO8{iRx2xTxF7#CBt@{k>KA6A@N z%+m5sMwZ?6YqnXK+sHl$x+hRM!WKmA1!{wyn0@ly>aDP&)mIZ>3H%7T761RVE)+-Ve_HSireMR?P}x}?u7W)nWbGGDpLuvkd1Uh`}Aor zWTkahUHpD56@0S2Z5zSEQSqnCKBWG!25LOz5Mc$vNrIoKRXW%dui2BZt$s z*}E}T`+qAZrzsTSLI2S5IIG&a-^50yWxph*yYrIpE~tvqqiNDmpmxQB1%R{9{RSvx z%-Z{^F@$1Us?d98TKCXhCCmMe&T_9d3;j>GcJD3$XBY0JJZ|r9yPKG&oOTsVr|nZe zA~_bUJ3103p*k{4Yjtracx2^d@Pqq32qla-aL^B6B}5b0+{m&p3s9u z5DI7)aVLWY;*({?BVFV=Tk8C%_c>82y2UC7wWPaN#YIM-@}emFRZ{6-jup-b_nVnw zb6->vJb^NSsvEpG6gJ-}MR0rZ>+@^EL9^C(%E`Xl@$k{P z+(g4FouzBF76^Y6B-#F|Y_+}k+HMigf6g9Z7BovmMi>F?e(s{VSNAcRvp&ohJi6GJ z!s`+bgLc89Y@ct`IGPkXGPV}@h(@`>69dZ|w)D=pmwy$r`~5fR^-~=m_@YZ!du|MT z2moFVfB2{A1L$0M18uMkIi? zUk-7aS2`OJu#}@rHB*@N^1CkEdPm4F@hAOC;KuU1%pB8>zMN9;&p(=1Wss)O8b!{K z%|gh9p?nBTDOu@W`IIqER90b;6%K#8_T{%$G(Vv%r*iRxC(5Tu1RUV3xg)i_AT3mM zDLp%qRBL5;=&qO1$#Q`aHTR2x|BWiR;3@c*NaFvAJNW{_S8)yvimCKo+u z-1YoU4>ty`2O52I3$zjt{OD$V=P=)J7Gt$@=o~ns*f8Xi&Ix@0K5&TMojME#S8(MyF3yV?}8d% ziQ7Owb^fPcA@SrKG-DZ)V#EjOG>2?fIcVb56Hx0~=%1+owX@rAXCsl}1Ev7bC)Xso zhTWQVYudwamE9}PGz?DKU5sajI&>|+KAlTQ&G!#@`qNrnCvFDS;9k~2jJlFdWf38x zN}#)v;=zbOmQwOO?sl>SZ&sW*z*!2b?TlHGj-p_xtch3xCv~sM6Gg%S1?a-H`%*IA z_B#p`Z)c%?r7I^_K)4_4>Ple*`+Watbx*(p7|6=SOU2np0H6;+Q3^Dxzp*MFXm8Be zoe|eZm6nv;)5z~IOnythMDMdFGfQ=!PH1W!t@2da^Vmk>B=m$l7!E2R#rQPqY^iuQ zaf{*@T9uy1<0B4}qAW8DEAAnfH5r6=zNxrKU(GNqJ6Tqlr=0B_LERMMKIGi@XuLhc8nnntfln7A?E7>a49unSd@C2^bi z*Zouy<8ZOr?Ok=2HHT(y?BE~)@&|*7?k=1T6BpHIw|5|zXk1t*ziAhprSPCmvoNp9 zUA^)^U}^vFm>(epp9`8|)lOH7<;j&Y*jOxf;zE(IM;U`2lJ%646x>=$c?b@srTFWw zA7wKsojqEXJ*6wFNmHjgZaL9Qdd1wWjNL@2rGa}C4;R#Clb&)7qDu!R;Iq5sDSZe7 zc4PY~W5kcT?^(j^IHTBRQtZUwo)XIV&)VCOM%XL6A#VTZq-2@jY)Mmozlb(#2{Qf1 zFEeU1$TN~)g7VqmN0OQAE<=@P2tk_B(U)O+d--dfrhiseYMH?sH*dfsce_}n8W9|# z%>z2Z`WwTVgZ4nEpJr~+NAhNUngb(@K_qbdHZa+n6-svvcaD#ITTe{!x+ja@x;2i!M0xC9)7vr2y@&uGn}!0@aK~wSj(CY-p5MbMEuV z_)Hiv#-}Xb{0Y>E82jav!8E@0^Ow+U)=EOd@Z2)uYm@HoUukvO&#e4A`huHMNN70M z?(;j2U(4*pO|MaL$Yw%vG`fj&e zc93ZyG(anU625vVmF0vO!t`d|#lAi-Y9Fq&ga36&s$xB{;CB~I=q54%A&b;&rynge z#&riqYQPLj1PA`%71OWno;GETav}eOjPxmnP>U^Z4t;g4Vu$OVM8| z_hsvJN=#;Y!|so1P^RRDxWXgY5gvk9Rmh}O4YmtAEjN=I#l3t20o`pLBV-)@X1 zL>1bn2whBCEi*zS!nLznH4AD6Wd2UwAM5YoaGY{3C(rHF(O!QT=mFNp>tcSahd9Ir z!6*+^FKIQz7iL{`LUml6W|8Dc+8_L`fS|43x7h6>(-O54B;UcI(o^Ppek1AvOpR-^ zEe+Mhrc-V+5n<0OV6L$bVhZPm86C8FrBqT;oo=}S;~Otz6L29>C8gYQKMDy-cBETFA7tdU&hiyx%*1liR3wh!Wmd;rhLItWtC+HX?senKNK7e78AY9W8?L z3m+(xC5gND<<+pB833MdRu!p!#*oe{5ARS}aX?Zz!b+Jfi3vB&_jDmIl~Wf|t<*1E zb^DIGp1rn*b2GN4#xH$ZF93PAi^j*ZWR6nRaT?W_oD4d<+BeBS1YAK}e0)3-IlQOL z2zGuXn(duRn&g~>h%-Bz%pBXNcH5&0mTtJKp*QMikV{j9k+2eW*D2viPr}zμQi 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 DL|>g2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_anyone_sign_2_0/00001.png b/tests/snapshots/stax/test_sighash_all_anyone_sign_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e72ba2fa664acc6811f4636b7c5c3475b004d098 GIT binary patch literal 7472 zcmeHM`Bzg{yGC)Kt$?-_6a?g=Vi_$W^WacOQ3fd@AcUYY$PAJ&B!oDXv{1w`lrc(_ z$RJ@1kPr|lMo0l6K!gy60zwipFePLlxyOF%-hbe(Z{4--?a2>&t&_da9^UtP&ig#) z*NfgD^)Ge4R8dh;_xSOLpHx(~Jy22E{!DEJ-@o;c5qPY%TS?NRwP9N#a+9HW9LYAjHQO>T&_TVN~ zLT8*$LWEV}BtrXb(!Kv)<<&jh?OQnGea=(nR{HB74_)1MRZVMecG&-^MlK*02NM|1 zuCJ?riy3MpOqsL`gn?V)5gdFx^GmIyX5HPUl~pm;I(iiO$y$v~Lzkn0b1Q+xw~A#? z!oXFv-16gn4NmZo)SgFP^rm=6oxHw=_SvlMV%T6&BRB}ntMGaO*lOd?N7f_#d;)M#E zm-VlqCRZ36nJy4BErW@G8QoT&y4BXr@xt=%g5~p#O*!R1HX8gyEYUv;6-(fSd>I^( zN(SrP=!EuGM2~SdrXEFyRWI#V|ojex?j@m3R-4in0a_Y@FsTRcYq?4&?!N_;%KPuFA{!dZy z&b*WEyv0UeU~m+bzvL1>tf4bju~j}wbJ|TOeXO)xoG%caj%V^y$?_J|ySZfP$$A5E zm$_0n+QN(%KesCM^xi65k)!8!=_si0$f$jN*yDo6@i+zRJq+blO;)WQjoHjeOiV<} zgsZDJIbtwofkvZ6EsOTz71l#kfl@O;LakMZM5&zTR;AwgwKs>(y)>g4+Ri353Iqbx z0QqfwlfZL|E1WnRvLr!_K%oSv{u0k)4A!i{2T*0K=*q3)zi_d1*6{;8ZhqjMPi zy}6Z5;jOlKW@c-!|7hi19xj**2^0Jl=YmaBmTZMvc?AE6M`svdXc0je7HBFyP4)rc zC33M&J{8DGSgAOb%o$$el6RfDO7Nn9F7Z>HzZ0Hq#{~(MPeZG?s%-8^iKp+sZ zX@#i+$(5BSwycYC!9tqkK55-XH8_&xVUW*XBoYCk4W==f!J+kLv~E*463N@eU(WsL zMrPp z_=0$Jb@?v)a#x>jWfez=XHms3jkAH1$Olto6RB08jN9GY?q%7ZJ~yzNtofe*@LAYK z`h&2AE(R`thJOv%ZiM7i7bjtUBn9UfCyxkL^j70rA|Bzm3htphr8-Dg&Tw~iW~zOu zH~HZH8vT5&n%Ttub+SiYcKG_j!oo6L@agjy&17($g+qHE`cm}OE}f+_$L^;_-2^*u zBpIYegts|e?+?9>#lHiD{Dq⪼i1o1QQtS>8R<~2~3;(X2?n;%|`@ms%*P_OJ?f| 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_anyone_sign_3_0/00000.png b/tests/snapshots/stax/test_sighash_all_anyone_sign_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_input_modified_1_0/00000.png b/tests/snapshots/stax/test_sighash_all_input_modified_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97524e00dca3fe77a170d83b3dd8dc72e7f7c98e GIT binary patch literal 15636 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μQi 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 DL|>g2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_input_modified_1_0/00001.png b/tests/snapshots/stax/test_sighash_all_input_modified_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e72ba2fa664acc6811f4636b7c5c3475b004d098 GIT binary patch literal 7472 zcmeHM`Bzg{yGC)Kt$?-_6a?g=Vi_$W^WacOQ3fd@AcUYY$PAJ&B!oDXv{1w`lrc(_ z$RJ@1kPr|lMo0l6K!gy60zwipFePLlxyOF%-hbe(Z{4--?a2>&t&_da9^UtP&ig#) z*NfgD^)Ge4R8dh;_xSOLpHx(~Jy22E{!DEJ-@o;c5qPY%TS?NRwP9N#a+9HW9LYAjHQO>T&_TVN~ zLT8*$LWEV}BtrXb(!Kv)<<&jh?OQnGea=(nR{HB74_)1MRZVMecG&-^MlK*02NM|1 zuCJ?riy3MpOqsL`gn?V)5gdFx^GmIyX5HPUl~pm;I(iiO$y$v~Lzkn0b1Q+xw~A#? z!oXFv-16gn4NmZo)SgFP^rm=6oxHw=_SvlMV%T6&BRB}ntMGaO*lOd?N7f_#d;)M#E zm-VlqCRZ36nJy4BErW@G8QoT&y4BXr@xt=%g5~p#O*!R1HX8gyEYUv;6-(fSd>I^( zN(SrP=!EuGM2~SdrXEFyRWI#V|ojex?j@m3R-4in0a_Y@FsTRcYq?4&?!N_;%KPuFA{!dZy z&b*WEyv0UeU~m+bzvL1>tf4bju~j}wbJ|TOeXO)xoG%caj%V^y$?_J|ySZfP$$A5E zm$_0n+QN(%KesCM^xi65k)!8!=_si0$f$jN*yDo6@i+zRJq+blO;)WQjoHjeOiV<} zgsZDJIbtwofkvZ6EsOTz71l#kfl@O;LakMZM5&zTR;AwgwKs>(y)>g4+Ri353Iqbx z0QqfwlfZL|E1WnRvLr!_K%oSv{u0k)4A!i{2T*0K=*q3)zi_d1*6{;8ZhqjMPi zy}6Z5;jOlKW@c-!|7hi19xj**2^0Jl=YmaBmTZMvc?AE6M`svdXc0je7HBFyP4)rc zC33M&J{8DGSgAOb%o$$el6RfDO7Nn9F7Z>HzZ0Hq#{~(MPeZG?s%-8^iKp+sZ zX@#i+$(5BSwycYC!9tqkK55-XH8_&xVUW*XBoYCk4W==f!J+kLv~E*463N@eU(WsL zMrPp z_=0$Jb@?v)a#x>jWfez=XHms3jkAH1$Olto6RB08jN9GY?q%7ZJ~yzNtofe*@LAYK z`h&2AE(R`thJOv%ZiM7i7bjtUBn9UfCyxkL^j70rA|Bzm3htphr8-Dg&Tw~iW~zOu zH~HZH8vT5&n%Ttub+SiYcKG_j!oo6L@agjy&17($g+qHE`cm}OE}f+_$L^;_-2^*u zBpIYegts|e?+?9>#lHiD{Dq⪼i1o1QQtS>8R<~2~3;(X2?n;%|`@ms%*P_OJ?f| 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_input_modified_2_0/00000.png b/tests/snapshots/stax/test_sighash_all_input_modified_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_output_modified_1_0/00000.png b/tests/snapshots/stax/test_sighash_all_output_modified_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97524e00dca3fe77a170d83b3dd8dc72e7f7c98e GIT binary patch literal 15636 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μQi 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 DL|>g2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_output_modified_1_0/00001.png b/tests/snapshots/stax/test_sighash_all_output_modified_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7d0653538bf5198ab17b8b26649b785fefd8df8f GIT binary patch literal 7524 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 tv@S~Wfw;PzDQqLcd%4c}k8^)J3?7cKw* literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_output_modified_1_0/00002.png b/tests/snapshots/stax/test_sighash_all_output_modified_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_output_modified_2_0/00000.png b/tests/snapshots/stax/test_sighash_all_output_modified_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_sign_psbt_1_0/00000.png b/tests/snapshots/stax/test_sighash_all_sign_psbt_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97524e00dca3fe77a170d83b3dd8dc72e7f7c98e GIT binary patch literal 15636 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μQi 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 DL|>g2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_sign_psbt_1_0/00001.png b/tests/snapshots/stax/test_sighash_all_sign_psbt_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e72ba2fa664acc6811f4636b7c5c3475b004d098 GIT binary patch literal 7472 zcmeHM`Bzg{yGC)Kt$?-_6a?g=Vi_$W^WacOQ3fd@AcUYY$PAJ&B!oDXv{1w`lrc(_ z$RJ@1kPr|lMo0l6K!gy60zwipFePLlxyOF%-hbe(Z{4--?a2>&t&_da9^UtP&ig#) z*NfgD^)Ge4R8dh;_xSOLpHx(~Jy22E{!DEJ-@o;c5qPY%TS?NRwP9N#a+9HW9LYAjHQO>T&_TVN~ zLT8*$LWEV}BtrXb(!Kv)<<&jh?OQnGea=(nR{HB74_)1MRZVMecG&-^MlK*02NM|1 zuCJ?riy3MpOqsL`gn?V)5gdFx^GmIyX5HPUl~pm;I(iiO$y$v~Lzkn0b1Q+xw~A#? z!oXFv-16gn4NmZo)SgFP^rm=6oxHw=_SvlMV%T6&BRB}ntMGaO*lOd?N7f_#d;)M#E zm-VlqCRZ36nJy4BErW@G8QoT&y4BXr@xt=%g5~p#O*!R1HX8gyEYUv;6-(fSd>I^( zN(SrP=!EuGM2~SdrXEFyRWI#V|ojex?j@m3R-4in0a_Y@FsTRcYq?4&?!N_;%KPuFA{!dZy z&b*WEyv0UeU~m+bzvL1>tf4bju~j}wbJ|TOeXO)xoG%caj%V^y$?_J|ySZfP$$A5E zm$_0n+QN(%KesCM^xi65k)!8!=_si0$f$jN*yDo6@i+zRJq+blO;)WQjoHjeOiV<} zgsZDJIbtwofkvZ6EsOTz71l#kfl@O;LakMZM5&zTR;AwgwKs>(y)>g4+Ri353Iqbx z0QqfwlfZL|E1WnRvLr!_K%oSv{u0k)4A!i{2T*0K=*q3)zi_d1*6{;8ZhqjMPi zy}6Z5;jOlKW@c-!|7hi19xj**2^0Jl=YmaBmTZMvc?AE6M`svdXc0je7HBFyP4)rc zC33M&J{8DGSgAOb%o$$el6RfDO7Nn9F7Z>HzZ0Hq#{~(MPeZG?s%-8^iKp+sZ zX@#i+$(5BSwycYC!9tqkK55-XH8_&xVUW*XBoYCk4W==f!J+kLv~E*463N@eU(WsL zMrPp z_=0$Jb@?v)a#x>jWfez=XHms3jkAH1$Olto6RB08jN9GY?q%7ZJ~yzNtofe*@LAYK z`h&2AE(R`thJOv%ZiM7i7bjtUBn9UfCyxkL^j70rA|Bzm3htphr8-Dg&Tw~iW~zOu zH~HZH8vT5&n%Ttub+SiYcKG_j!oo6L@agjy&17($g+qHE`cm}OE}f+_$L^;_-2^*u zBpIYegts|e?+?9>#lHiD{Dq⪼i1o1QQtS>8R<~2~3;(X2?n;%|`@ms%*P_OJ?f| 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_all_sign_psbt_2_0/00000.png b/tests/snapshots/stax/test_sighash_all_sign_psbt_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 zcmeHL`CC%y`?kfFDRpL=v~rtPn?x+j9dT^4Ra?Xb7u3|;&0RpWw8kkjYRpJYsT`wF zao0gbGsiT^&BfoVu>>AMpKL*XOsMU(R)2&UN0y^W69S-0ySqoSUo8 z58Hmw($dm7dE)2=Ev*%IwX{|~Ubhlhad2;|(9$v}J9*T_Bkd7?g6|_5efr0FCuZzb z*kRC$(^r44Sq*YIJpf!RT!6dBtAFcU+{t`bx?$IKtnbe`#rER>`q^! zf8A1buMpuS!WHs~+cmR)pY}=7!Ho)|o*zri>dvs}=KWkGvS~H>ED~L)AEw^F>y)y4 zn!_n`4TcLsQN00K$BG}ojTdW*jyY#_yWywH*e{6+PPo3s>fBY2(rxoqo<>J&WaE+( zGiTyQGQ6`vDL;Xr3!#mp;*Uk$gm27`UY?p{kO=#GgNp-edvJV%=2fMX)w!AStoXAX z`R`xe2pklADl2Vqx$Iz4fN-yoIfN2!m(IG>$aaj~cn{Lu?X9HAf2f=Dg{lO-_}$*~ zNkpepYZ-m9Aox0cRq|H#l8JApP3KdBgr?{li#}(L0+KQ-LgL}^30d8pE$J+R=cDYv z_!^2C>!SI)qcyW-qpz4KzFzgliP0x#;+WUxnTazr6!z?!Cvrr&T6b%m7AiG3$#C8mdj+b{yJV3pT=+3 z40EW*o&NBe-|Zc}{9wayI<*}2=gzPCH?;`?>9uNmy0ddC5ita6eCpUarDYcPz?cu@ za5#d=EOx(8=#RaWc5FlE(|%IA(Fn-kLb+*YF!n*1xYv_P`EZM3#Cw-vk<)?GWW2p{ zrfT*uP*L4e*r-oQ=^?YP?%!P{YxpaBY*Atni6w5-Nf?V z)UMUJ^t-#-ua*e@8w~yrg`DHerf9JP8{t*Vxg$dBEgOkMqNXjN+N**=^7VuP3%VF( zckrMRX=l{L{>Ses#TIPZrg~k$_{`^5AwLm`$IH&w4;dRb?7*YYXkU=NIM@RQvpi14 zF7@h+wp&M`y+Ufe+b9(4-19I-h}DR~%8s6*>@UURoz)L{NvKbHkv7GAiYmmakTzp% zz*DIxZNiBOe+8eaJ>05IUCU19Fquq$;WZ*L0D+)2>@YMjF-f7kaV;Apb=xImr;rs2 z1-c_NHdE(Ox}zHP?D~vIBucQfyoy93!H2kfehkC}crqpZrDYAgN-dwkOF{+eZFU)sYVFMUQ+C_(nh08R;ufR0 zR6ITJcv)WNZ|rg`7HeQ&pr@zD*Ap!*d8m_Xy+Qi9ce>OJ0127w&;jWS;Nwu+qw?SU z9Z-fs4J*%>n3`4)M;*8Dns)$6TwZQTZ}o)1;%+b^8@)kA8WaizuV&I{H0}g;{IU3c zy*#R3-qakeu+m$TJq_kAeOXwDZ-mEy772Q3Z&Q@!>iOY>BXSfRjN{va5ioSzl|hFm zfKYjZabsiU7^_BAU1@(QN03_KBOTSonW_D@k8He6O-&c&ZJc6>KtO6A3EaO|GakP}GW0k1 z1`Fa(h2zZMi&8!}?=aP{ZX7B+lQI!a_OlUcC|G&?bYOvV^Bt;^7yRh!`y@dn)GKz; zYjj&v^cY1EACeqmSd=;O@?$3-AeBI+bHE|;pBNe2Yio>;ytb=}ZbYeg&^YHgW1@WDS^z*uk^ zX$$hKfC-!96#~}G%nUby><9Lh1c`m`i8>^L_7|p2>c!VARka6rkwwW*7R)&}TP~h# z;#8Y?vn%EPPFps9PED)lG;z=gR)vR*$rQ>2`o#GcNDZ@fxRo96+p#&KH0cse3a-|` z-1^$R>)-YlHJKYUa&yvw5;?A(yIoWmNDUz(wQVhjMB<4BTYj`nRB158Bo*;$8kdRb zxs*{W^}RRk`k~y@K*NVuNuQcTpwEsKoR88}4WNOvWhI0AYex-Qv8Tb#%GdxESI8HX zl_ne>R0Wn#Uhxj&N+c2h_S4hTJRa{c`-{pmgc4vYJ!PMS<_zcFkw%JIq=eD9Z*S6f zcX#KK=>Chiu<_bjS}T&)(bkp(d3eRn$VLhPFp}MmK&7P(4!{QQ0!%dG8o(*Ay3HDF^ zA(MISKhSweWWQLi^zv-@m z)?}OD16wv0H7~m;3X1dw^-9hG!eTn&Eu^uwI07uIsHpH?q~}-m3e}!{PokJWmQX;J z#Md|$rf3}fd9Fq<5OKffN;12|!=!R)Y3T!}UNacJ^yN#9ADGQ%QxReSaDWQXZ3Bdx ze=~(}kJKgU$ZzSRO;uL z#0;btK2t;aF475`5;tF63?$)LU)+XNLNTlQEe~dK`oD~**I%Y~yBJzC}AO@Ih0m3Xc zwrN3U49spspOQG+$PU5~ZQw<`0t8 zkM4EGn)@BC(}r&7rawd+B|p*afoXZ8^Z7+P!x^(#(P52D8sQ7YJh9cZpMQG6r#x@m zsAGrW+yxkeB+VpWgFlea$M6tut`)#)f2tpAo__Gm|B1#i`QdTs{byTQIDf^517>mm z%zj~vKeH3_W}BotnoU=r|Jq#WM&O!l_VV%)Zxt39R(e(x7Z;0qWc`PQ_s-t>)rVYc;EdyF9qWHVv`WEvV+{+^S=gW*Hl9c_*TI(mn ztZ~B*%3OunnLYV@iiP39qWsDem(X!bf%|1kmxjPJaeVI@KE_SzE`4m;@YZbnPUgRC z|3w`$y`i2v>%Hu^@ah8btail)6^DItlr=6C3XR?E2SPh_{qMbJUD>!MTY&45Wd&lC z3g!iDD0DJKx%13=+H<7+1Jl#Cu50E?jx+k2FLq#WjhgMu?hJ(DX<_yLBScG0y_31U z{MOsBdTxT8$Ef|xImTkMI~I27;E8&5s-(iT*_{zM`NNak>UiL^IKH6WgE&{3BOJg^ zx<6O`MR#GYmLC@n8UjKJeYG>VkYlF{IK=G)BroCkG=5L)wM~UTul#?VB;71GJ!`k| zN+do1Y77QRn~E!$a}+NR78+XE9eh5Z0k9Ew0L9LCDxi&V)2;i-pKN2t{Y)!!MeTfZ zK?tlWtLF%OxBwU-M4Rz%y3iC>%K9Ut>rwNE&#(w3;z?Q^f!`bR&7 z=!sa4fK>s=xaA=+qwb3k$U-c88iP&2IN2iszyl@u6)b znB2xhH%I(2wh>-1bBwh8)>Xi~ zM!qXeznw=&WnJ6Dc=07hs&~w&BHYew262%nRgMFX`LxR*Hhj9YYqBQP#MVfcy4@Eyhb{2B ztKJ?~?{kozjzWzpZti2d)dV+S&jJ1nM-8=)oP9F?jzw{!^BT5>G;W+L8bna=tF}5!6Ed>n6-l1M;(fLcxKPpBXMzYnWKB3DgCB;M-Cx= zugPc;Sv3QSTUmB>dQ}fSAP{L&Y&~L(?J-OLlpmh)%Gu&s^rlLDtep{SV!}ETC>N!z zt&L2!?}6gNhL9qfjCwPuV`8krvj^mB|KLNVsawrT2m}&6e;$QI0&SVn@+~?#*vY^1 zT>7M+-*k|zjC6}{PSWWYvD)pC$;4|j*yX+XFIU{?^nqJf_`*u>3L54Jozp7--6362Ym>x{ime`g~2%S1q2;e-QR(} zR!t&-)s6=svtOhVpGX{bUCIIC4?Db(02#s$0X@~bnrUfi32b+k{F<}y)wgax;&c5V zC8vT|)E_2>RuTw=!Eld^zXwQ=DNVyW2ZQN`GwZW;)?}lI-ny{9IAclL%VoV*$$^-3 z_ot9o?Pa{A(fbQI>6R^iKJ2~9$<=eV58Vj;=eQ5EZ|Y+1PFH0NybOWjnVHW!3^2Vb zOOMspT`oDB_;Z%HjNzKY9F6laL5wPRMXB>BiaQPt3)asS`C9itE-e;Ji%}B^39Y~h1LRII=MR|e z!zRe|bGx5H^gqcCrYvX!5RSS-A<`#Ayj%0myv69SQ0&1xUc7up!6NzJp3} zMg?vLZHKQTi^(iRK)`EGyiWx$DKf2~bGc0;Bg3ApP=^;$Sd4o-oWzEs_=S^0KmF;CbE;P8Iy-N@9`RKm9U zuS@p*lm5~l9Pad;1dA>p<*#1;Es_)TaAFgu}ter=FXAN7wGhS+|}kJ7}`r+ z&`&H}OhG6q?&vKsg#_RWDkdZJK;Y;VvBmrD4IS?9GvZVwqZiA@^`P-9YgMJtZ58Xi zNhLc3YIw0W`T_z;$La)9%%OrZ_q&9S?2H$=ASomfrywjZa7GLy;4R}S@b1WeI{e2E z|A~kHwSBQn9@*WMyuPt9zp=0t6YF8K^hOM1OH+1&*zEPpd(`z-wz~|6fOt#nlW|p; z&98z7C4YXaDoOHr&@#eA9(w0r_V(?Oi<#v$H<@0!P7>XFTqE(PLX(6ax7gAuVq#)? zK_-`SWu(I`2ex90WX_l(hE3mH6qe_&z8KRfIMJZJJ3i5#uzZG4cd+B|SqW1y&?D_l z?R`@&3W;47t$yX4(vX0loMRFYF;HWqhdVOx`GAFbg)Y=S*xo4WkQ(T-{I0{PAW3uR zWPEe>6^eIcO4r+1JdWrF_Nm(mJf^LMS<-89{=XsPH(9*rk;`WlP)e6YrRC*k3Lh+_ z|GV{n1{9b*Ro6^&1LpY`Ya*58jqEmSo3VIY-sw~&XV>*2xwY^AwgbQt#A4u~mC96k zRo&3+;PI=H&=TeN#6PZJ^G4hU=x#BP$xoAd!h4=yInX96 zC-2_Y(p%d0_JXkdmv)VYE9#O~P}qZUowWFfM;6eM>xgm=hofWjF+32k061uMJ~iW% zP7MM%BEAJ!9?Ejt=UwBkF(NK~h9H|$h3&$s#I~T87ksD)6!T(CNZj^DCs<3=T~oVVrUL!aAl+;9r+eD15dy~l^ z8NkoRBHKNaLGnqHio2f|u}Gv7E?2mT#?Dp~Aey%e$(T;}|O@mUhf2d7j z^7jiCbdGhN)e@=*fNNAZSTJ}Vj8c{}gUuV9My5Z2x#pCkl34xE(D|eD|7_oaw^vka ziMe(bwwa$GbEwhIUNKwhO`-S$khfsgyc}kStGUeF^>(+kc|j0(J5MUPdopD1Ag=SK zX2D=ZC90K9oK1+Urw4iTceA*puM2!yq3?Z5$J@^y&qT&S5l4jC_f#B$z@^sAA9H1?P54GRMC1 zI;J83gUM10_qzRh*CD_tni(Y{Y@PWNg{`QDFHD9&z1vm7cipfrdg797-$^`~fN9Vi zd|#>xkKWp@s;O!i;S=)F9qeX%_PN|$30-`GVIrNGX!>h!Ivq-`UF5auq7pPG`FmUu zG~Gw#UZ8%b_R<}_iXTR_UP&!~3u;!ecE4y<#Kg|#*A|Qq>mH!rysS@tF*#~`OyDm0Hzpv#gd^7yopc@!2$i7J$xn>$P=2YH3c_ClQ`!u?P^Ncl(UF{r zoqbHd3rZBXiSyfwM6Tl9ZAD!W(T+5(U&DA%b8i28BOg=p=8F-Z!Da_&D9=yg})PV>3FABWHx_Bu%eF#Prj z?x1G+)N}h&VQbwz+7dOOe)sFGI5i;~88y%W_pB;6;d$asM_IJfEmlaYn@3Z{nCSBl zeilf(*acLIf=fzQrg?ID#}sY;^*3gP<9@PAmvw`Qwfx(63*@cK!=vQq)A6M_WzTNyD z;`;&R)|2P*PQMzzy|&rz{t~B#9A47VT)T(ORe9KPnjdN6&gsuoF;vP>uB-G)5Vw(3 ze~2dj$Zv9Wh#iVj9h|;14w$6d7q&A?C&LyXY1)!mDgg^-MfR0rW|K+;G0+)&Yr3fB z_&!%A>K!5M_{aL^Uj}rYG8V69UXsf+mw9eqSr0nD@@39{(>n9P`LkX`A_DofkVW!Z zmz-uWyv9!arpzBMdT<70z{tOjQR+gkKk)^nYaTUo1A~DrM=m;_++Bhc40G>3MSr|n zEe47@%XJ(_`C2omPo^U*tHeahs<0X;N@Ps^obqP*HtXWHmWA720zPy?_#0iL){~F+eib&D8`>JY+mxhYZfU~QHw4lglGqMKTNVe^tlNc?3W0;r7@(Nglwf#)ZAr+ zsVNVc|7>(HZW^Rd?ILLOpA{2o-vhP^e+;7s>DOc(5{@@?ex_p0*@QlZy${7pJq7aI zLIh&bk5!lEenTr*quM>_Vd>mtXi8~s8>l$F`^m{{-+-}9>&&@~Y9x|%9}zh5r0iVD z^u-DOR~gqoJ9DH?s)xJpU;(){o(Uvd)e%E)C5PyfRaq*M-KwdpyL8ribA78jSbRJ1 zA&NkQoU5P2*fmm6$;2BIGM7bU;oc9p%(qD-97!$RieaE1d*6X(`<>8v$Oaq$JP9+(p%Y;Rf z-FMhT$K&tV?gvpf#%;5xDF;3~v(#%kSE*EIiGpb-T7aT(JU4>045X3TnylY2qrAXH zas2kqMkkLD2o3K=k-te>2+oAJAZ?x9n|8W1fYCScEkC=;&ei>0yYU{^KN9#&#<6d< zrGC(AEjQLi^^c4GsoN{Mwc{ScYuCsHxUg;$2Kv|qk$hAH7ZlY>$BYV5@_n#tY)KIE z#7kXIf-*thN&VIK(_2biSZVu(ryG30JZ^digD-JrZd=(pGZK5Z-E-_`y9+$0Lbs#1 zY9ikK0ww=&oM{KgQJ! zG;P9YI7)cc(q?i!ngX3A(mHXSNwvnt$P4wL>(`s37}DJ#z0W0)s_wbxYJKu9+wo!} zpIvVHjl6sCiWPL6qCbyrSCUGmvTiZSezc-+G6#oqYLK^T4`8*G9If=G9rAV4YZD}B z=Jszy>5)yNsirN{{x1U1CQ4elHaWg-IfZ2Zo=_m1${bBS_Xu}qjOb`2TR@wxWd7vw zZXhKKEFbenZh*%yCz)x+Ywxbn?pHLus<|uQ6MDnnKLyn9JlxD+gEfjHt`^?T(l<^U zod>8P4)?MC7rGsn)v20_ZCUAH*Q``-RGW^rAHMhOWTWEA4|QLvzc51#8mVjcJ=YT4 z*C!)C3Nz0k4&Q^nx>S@E)SS$&y1e`Y*jol-2?0%gHk%pn50^0&@V8cBk-hGp=c|m0 z4#;6508c2M6sjp)EYq#*JbN@P26Sh2BU8modCyDBbyld1P+m2ce;>wIWHkp^vvUBTK;M`{K}Jj}?*6umLCzp>wpE9UBX!xB4q& zkaFu<#&^Xd*{^f!SP%?vFYZNyJS)FBf3}62dp_Ln_$r$jtrEw?bfn8a~24L`RFJ9l)2xUi06eGC(z`aPHB<1oJ z_wB?y>Jpw8JNv;bcd<_%jn$8m*r8><)<#Q{cc}*HuK^+JKEOx6F8e0@H3m7Y)0B(nG&o#E`kC5 zR<6Mr6_NY(tO4#|cfBVRNF|dYt|Y@JAnVLc+nkAPt!Yvarh-s(MX@J1=plQvgWXC* zbSU+_ggdz9uy0GdcoQGAFxbL5x6NgMk`60vnXShTH7cYOVC_$FkYvus`Zfl8b89>B z@f-9&wl;6G(ERS3n>4%3OW8U|h;l~HLd51Qxo9EcUdv6&S#z1TmQQdTj>+TkW@oLM z#q(|v#S!yc>z7G206oKd=1mzm%Fa7fZg`Y8iPE|`CSflI0G{p!Yat?nsQge$PEm=T zag^xtv4#f&(H}G?M?`UEoTYN0b(%WXM64~snGOcdpp=p(hwi7f>=u72`1-19_NQDDu>pjD%tV>h zc*$9oc&$dCx87TmvuvW3KBX<${56nOfti{Pzy#?X3hN&o=3DCnRC-FNt<;%tnC}F0I14kgh`CM`d5``$oofz809L~2}gz! zog5OmA^n6J1i`BlpnNO1f`AUl4c*jSjLd1EOsWoty3yNX_>?C2lOtjn<#H6ZKrVlS z)bf;A^I$6;7+NM&gMcx3V=NR_+Soa7RA=1#hgymA=!Z(KLAoyCTz@?dN9iok?FI5; zCsNV>Lt1o0u$%q_lMgJBpJ)4e|Kl^D>H$ua!QrsMJ*6xzF12Y~YpgxX{->W|McGGA zTY!~x+VQ#~Fdj+NtK`-8K`ILFg*RA4jFU+8jZ`ovr`5^gLu_cimj@tclnNfUbK2$xIesUwn6t# zL(^VRs>K*krkb9g7D99vw?d7Q);6PAlxxwnbZiwMJ&m2mPXpeYjiup<<#{)D3_O7s zl1q{o3idm2OdK-bkrH;n@~B5JhOn)O*7txY@=`aAPGaiAl&D?1u2CaaDO7C0?j6my z7wt1utTTb~heKpj6S*e%BVq%6Ze;wYw!(J_rYx`gtKYjr_G@>YUH_3^TAm2QbXMD3 z@e@@36?kfW^Fv)P==D+IN8N9Q(uBZVumG zWRl6`V{EDK2PCM9Huj3;6rp!+YmJbKw^lcyt}aYv7)ZiR6?@%lC=2jT(hr^$36lP$!Rf#-Ru%B_M<}C=GvK0_thf zCH;TFnHd6t!>Ofu&%6A#g3us#z{THfIq^*;iV&L<6la2j{4FMcdXL}1Mos+G@Y2lf zp8RfLuaIP&X&d|_svh(;s5yNKsP_%hxj---mP!WH&kS>!7Xc*Oeam)Y_+d)R7p@0` zm!*;~@4^2ai+l>EHL0bUki#I&{?>;FNr7-KpqqrfJR;^fG$5M97BRERRJr@;>Fh># z8D@5)QKRNX+EnD4UqPv=)54?Ds@OgNN$rdZ?a>aS=j=vTBU;-V-w^(e+bKs4$Ii~j zJUKXLSVU$9ZwEE2_uu)oGn!FUN3}s=X}2?#8i9dn6qj{(Ve0h(V$ol6Ue)0Q20l#@ zk~KIS3+=Auw@$)cA1D0-p$#hE)4Qdi9l@nSLLfX?ZHxbYY`}-5ohJXZSHtVrn~>nE zG~~|kT|FZZ3o-}OIaV2uga$WzC?w51y-^04Ig55Smh67XiqM!xVaE$}L_gU|K6cxcCZAUNc_E@_>SgTxZkk3az*${wa5loN^q_A+ZCz}3?bs_o zB!GBcYlTWJ8OPo=hv1`T=;YZ3?hh_{i!+-6#yk(9eA7!-c(@FVSlFuL~8@ zc*8|v>n@nW49YX7-0k?BMHyG?cNda+?h10W}Z&l04cC}mwF^!Hm zDtS>?NOwW67|8fH{%mb=O&mm$<;q4)Hr|+SEHaY1(5at*98g_KGMfUn<{0%6h4IhCaq*$g?kE9!mqH94z&@je zRIEpk-X^yB$t>nEAb_dW7g+lL>_6G_67$UCul#K3I43@bZkM-QCT)<&QFFJB)yy6bNkTvi&qUCx=Zn`lp2~>$ z_~seaS_wQBqCNZcF+J_;0(CU^-1%y1K@8vjG18K}BrVlFeBybQ;U(|2h^&Bn(rd!)1Q`MbT`Wu=yNy;rmkiH5)zP&r9-k!+2aH zpQc!iA?XI`m5;Yffhg*C$W(#kPA-d^I!HvWzZ-5*LKe@TDU`#W-*NZNftLL{GA2J) zUK?1ch)k(@z@~Dtn}Ya zl!j8f+$F+r!yixC3fdg4qrT;s=#tuARjTY@y-}dLKe^s@@h`3aKlP5rAL(%IFZ>>I T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_anyone_input_changed_1_0/00000.png b/tests/snapshots/stax/test_sighash_none_anyone_input_changed_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 zcmeHt`#;nF|F=+7q$I~Vg&bPWXG1C^;Vn%RBBziuV;HGWjv?n$2j}A$EvHdSVpthD zES4M=Hm9*+4%e&q_xcB}>xb`k-M+VvU*@*$_1x?5d_3-_$BTa~O}S49pI~8O;WoQ| z?G_8mk(Vqitgks)fp>JRI%-&06ok#L8Ql&qq)rjDs&5eEU49tavW9R9vc^A_bpEfG zhn%OMJd=>T&dGb_kYiQLXB4c-`e50IH1-jspJmY)2~K1^=%YbWU3plhrw=>ZSXh+# zV~<|uWn4Of+ecFy?L;}fDY2YYV?PVR z?d)=|{Bjl2E=HU^c9m((7v~~q{QYE7BF|-Km(+4E%L*H7zEDTv@lmnbY6U#4zv-3L zC*_+N(y6W_MoeYxw#4BaT&#D!Ch3Sqe-k+Itz2Skp|Diy?CkpWM=rdRNM&1sdcmLv zYNF7xf`iac>v$`N!C>AKsk51%R*jrpUhPMB-K`tQo4O_ap3dBF%Iv8)j|?y+sMm}x z1!zMW6hgE?zyX!sGm5MyuUb|Ryj!Z5cPG?T8@DM!MjEUqJAtG8(9Fg}D}p+6znE~9 zO9J`Lw~N$OiV4;ReFbkyBEQW*y=4CV@0Tvr%I%IZr91&dMdG_Rg+{zp{EFk$c7oSaUf(;I!Q~&buW-`NB=jJ`0^B)E1#aC5mbWObL5NLlRUG)JQ!Iy6Y5CFJt`6#cbFHU z`iFTyg|$!l1?hR8W-li9bzSkca}msUPz$YJ=Wpfa6n|Qw@hb-SM(K=2r+lhwYs|DI zKYS$Fvq)0YLhT)!H$k09rAHZ9iJlRE(fx!BcOs}SaQT(euNqL)J}Yx6<(S)NFK`9Y z5zpQ2CkY?@O`Jc{%I`El@WfRH6l!ce!U%t>%tcLlYC+h>7_RQs%bj37DTc=aOIZ-2 z5QsrBM+F-x4uc{~wcU%`n3zr{csT#VkOZwQw{PDkUQG*_nPuFhl78*OyB7;T&7e-( zt%(h=GW%b@tZ=Bat)aq*6Cqjd6C(o=%FuNoPVm5@ud@$Y(d_zYs3TvG2Wm0u2Q=F~ zv#pEA5F*ya9=k=TjVSou!4E;7BJ0TL6?$2UUuGxnNKY}+B|B@WPjQH>2?TcpDGsR6v=E>#5GB9 z_BYio-@PCf?~-3meOM4NlV%e3EpQXfB$vd93GKt$2bb|W4d^8XgOLoMaSgcfd}or| zPAbd2^==)%5|4pc#k1UosW(Q&$Icpmzbp=1p1IOL16Q40FfeD)QygCC4A~tSvthA? zaEPV_YTLYYT_oVfHc>ywbp0|981D3U^FPwGbZuQ_l4-4ot9YBFMEu`#M%g&K@qoSR zz3=~0YpBds@2z_G3ws*4W=c-rRHsz$pQ!C1K4TkHhVb8O_Pga==B2O-N`5PcQza8) zJ*qe&Baau)a0pMuv{%KtcM0@r?tP^jH!Y-Vp?<6VgWaW4(34zAv*F=i)h+Z2@_uXk zk#Y#?gCoVuBgo6#%V-+Hkn@QOdXbxSW`-G^?QWml7wmjfY^&$zNWI_;0eo+C^@Ur^iQh14A>Cd1wB{WJ^A z-hHiEnqM9CkU|I#U`6J-U`d#copQNEp|qC#{hORof|JN!@M77)TbV1XC?(Dt$0iV@ zu=c6*hz3aY9VGD74*O_Pw-j>|TOH1B*7|W^5l!X!foFOCmiFN~B4)|wk#xm?eDU$x zqa~ju9HBY+!p-lvPsZ5S*=8!320f5_mz!Na<%j;7luz|g?FK$d#mx`z1jHG@+UmxZ zg?wEQQKT-XhBPaVl4mwo_KbCF@gnH@Wx`_fl%IfCcYjlIrja%$_(O)Y8DX=<{W{@Q zJ@ug!@|z^CNx;K4zZ~TQ-+si--`1&sx_utyJ_O8zd!9&fu{LuxD)j;Q5;+?5$#3nOVKkYDX8C&xi zr5N+nUc&G3U;p=n@i}Tw4Bpzh2smVxhPNW+}Pm&Rt_A7;kiXB$NtwfgT0~9ytBjV7V~LM;4(p@)6G`S75rC+F1Q^b_Pks! z-3ZH&W_xF9&Bt!!=`!FAA5%hFP>vbhbs&q)$XY1fbwNBoSN za*#%@41K3{&~`e0^+$P@@Y{J1Oswak+*b+1ze3xm>c?t2XWuidgT0-}>ECl6vN1`? z4;&iq(6Ve2nocTrj9{VhtE;R3R-%Q<6AA4@7mmsaru*PFM!a`@JscvIwt#Fjmm#Ff zJ17c7t`{Nj^)(SOij`(Z3U}i&4d_`KRgAm`x%(gO%V;;Y_rstviEknJ2HJGx@P zruCz-qF;(#LA_+!PDH1Zq5#cCx=_4z;v#Jjaoc$!WyR7FE7rLm?3VWMa0Nlq>s4=$ z%j82aNt6eHU2Wsl`KyYa>}Z3qbXK`@KI{VV>KF7ISP z`D$f4iV3?mbh0)*SRFggBvbw_4D(UG^IEUPf3Q(Wfsx`vGH@Jg5q;v7e?w`Gu;^Cu zByX7zrc`L?#1+X8g_`yBJJ_Vnj&nJO?P>{Zn`Q@OnC%CZF-#oCfSTO;QPGg1!*vyP z?Y*>_8yge~bft5~>77@y72b62?B+M-bT)d-fh_J651F#ubj_I%ZecaggaQ|w8Y%ByUuV9p1%-W^D@ zavV!~Bql3QL0Qt?xgEU3xuxMZ{ZuAH<$?|C`0&l1eJmbGWv-a;2H$*-PA7lO0-(8p zjCs!|;n#y&-Ru{@9*$$i){oFcpqBY&$>!T^(^N@w{OhLpd5V>NcHRk`A3C^xQ%`sG zDySIaSrn3sx^mWzt;iw!k_o6c2vvGp=H}6Uzk`?cJMQ*h0v}n*Eo7~oDH!}RpwIb4 z+Dv-W{RO4nK;YG1al(5mh#9N%xTbpYktQtjTQV=kw<`dZD{h;&RH}*u-J<5Orx%Ut zj8GkYr@#BK;tJ2@cYB9{|InOO=IEk21Bq{y+pDHdC|b$OC;kqH7_=PmdE6@hnbrZu zeQ78$W;b$Pup8TgwQKAsqCevm--vQpULXfZC`XY7h=*mPQ4`8h9;Kc7F#9NXb4g{oYe+68Dt0`qswAwtQ8%tz7uOdlM#{A`sUiw z;avHQEj@K3uX&D6Io7zsa$%mj?Gb;#%#N&`0|Qwk=5RWC=n|MzC#qt`+sfv*R|g$> z$=0dD;l~|`6dd|PogLIs`g74moVm?7aFA>{8O*r8eZY*SNSkdy@H7ZcHTeEL&vg%R zS9;*48^j~@ zDnCRX8{1j-)W$yp*@a@QPQptCVbs^OBV6a@vK=Dle^y5t@sC>jc+c1O{Z+vBz`BaFVAmink~W) z)uukqO$+bbE7sP9>`BQq_lkDyh}qZB7Pifzy_}DH`$Moiek2NDjQ_{>)$3aX^}9~k zipt8>)w52txEvJes@eiId_w|>@gJ;lVNw{8a5mTca{9^4>6dTcF1?;V(--b}p>(n# z_K%z4TALN9mn!=s2JO^5({cQFot#27{|NHH)rl^PA4P-)M(e>3UE3f0W@0*&e(d?i zFl|KwKUC(%cJBhMVuP*)zfG@6qTOp25BKR(-we?HS~EvI0`MvhI$Dd+?)y3R?So^i zCzU+9-hPowe9%7CPimhUIu3@%eYWCTaY;<9X1#NKJ@vQtdtz%j<~>JAqHs2OAI|du zaXVM*sj2k{yrxh8hy}O0H zmVkisZfUv~=j(1?Z+nrJr2i$NbEV*}<5+SPjZK0!p?xyGf1X=ddYB=3ZysGVep9$q&th+r-k@CA>I=4+HTEp9pL?QvKBFdnk zgoVIcAP>>MZb9r;}1n5>0hIUEhy#(KHZLQ1SCo{X~bc{s*LY0Cm{0i954lB5X5woUnYs1VPk40+=^QUr~y zi^*flqhe#r5wXk;ix_mghHLPi2m6nhf#R`g`?w+{suTeusNSUNe`<@qwh*_7StYjD zA}UMp z3J(07Ev7(SpxCXFc4k{&4qfa5W&hDl8K3ZqS8U@u-$wK@q!$azt1f6~ftj3(d*4^? z=@JY^>syYun;@O77|L8s*pMmf@`{Q2#eOF&N^3v2JHJ^cT4xgZrFwa?*=Mt5Y_f!* zkv=|PIWeKi%N|P@no>_`J@I4g%y&>D!tuyt=D7^ecI00{?du4Ma^*_4Ur zLGj_8PJ==Et^|=xO^!c5l(P|gVNQhggP$!IBgb<^HZ!Hu{k{RR0D%BxOYiz+|6}c3 z2xg-`sjZ&Kah24wq0B{W^|GpKm}h?EUx!VPhF+4Xs`f?`0XJr%H6%V=m+q`9b%)3MMTX@)$6nvfYQAE<%$5 zpUbI1Tt~`oP30!GcT_F44cIbH1!AQNYnwIXH}NgXC{(IpJV70BBCk|eR|Bw|~EiulmGNapaG(RS%obu-@JyCd)jy-^!xDt>%3H?dn7XRyt2O3X$wKjIMp;ph!O z3+RZ}EbjvS;|^V&DQp8sx=<*z==gSrtoJ0Y{krpnwQBSe{Pd<^n$4$1%45Ml1%C8N zQ*SM!(*O+*4#|s`CP%kT5XAAtuB2N^k&<}LhCZ+E+!VX)c>u9Nr#v2){M-~YaklvN z)0221XYcdWy__=P7N>?gHBd4ORot7z7<8k;C;I;jz5UWb>5Y#_x$H z=Jf>Xe$H>?pV-WOQM?jQcz;QMx6tXUWyKrqR20~pFyiGXtYgZ2$q8U<69kU}qYV8S z<1ocFS+gKOq4dtK=|3z_{T4=isWUto98wPI4a_fJu-2qM{fD2j=qCbyI?ecyGVT;> zpDknd!2dHng`K9kKUKVop9ZEZ&8S2!ambb3 zej)acR9K{wbDYb#6B}FXmcF0VsfKP$inc4^tR3$6t2HJ2Y|%7RrWOkEH0dXlgt_kN z_n}1HbTMIc!U5RM0P*aY3xSB?$-$n_rOf~mX*rLzN2#2tTfzL1?<DouH&zoIq8R{o+&8T0iB|+i?bVndZpAF z_1jjNW*OS=((;nPwX4h~B)!|3FRyKB?MmK@ToXomCKWU`zRIv5fYMB5IozctPi9H? zCA6Hw9BkD7R9tAf*G2if)U7jeT}@US<#TvjjzdpWOdw7?C6 zLM;of*YR7bp^gRoitR$tXkuU5d%}iH))RFL3&gclI>0H|h^74=lNCgbChUyF8!s(K zftYL7>QSjuTcch|WOcUI4w{Pxq#RY|9QqD^7FPAmzmNScbF}a~ zK|O0Xb&itUsx2gasNrjcx}AupJP zc@wfTg6wW|`m5Ps$Iw|e0o)vRM#>)3NkmaTwsy$MqY87wqRRr`Oap}R2G#u8t)sb) zj`?*Bt#_;aVHGEOOI?HL4$~8O|5{RVcSK$jc)sxb9@e2**iSPezO7!*$}%BR3?9?8 zFcA#*wC3xaGpQlH=#CIFyI67d+hdIG^Sw`a%#`VcaeIrGJPE;{pHTwR>Nv<77YZM0 zy4zZB<1fEsCbgu|VzVbn8 zhKQY<4dP1^XKjv3=vgMV3CzKY+p&#shR?15p142v?|h#5e=Ir2p1lww+MA&3Bn6Pc9j#QGCp%| z?r#iM&%E%D19pdx;f(+I<>r)<+2n>Vg7!#H&@eu?e3dyXl~uTVq>z{Oe-A>GVM~M0 z{<8TVU-lUCd||YV#VJkrzi)bEZyD}n&DWrKjO8bzfea4>b+rky1c+BW`+q#QQae_; z+*VzECxi$%iFBAwu3%CsY6tMSa z6Hx?m+P)ztHehI>GoB3xlBAyiY2QcQyQ<4zrq4#-vvBtHc!KAw)lQ`*J{8h8%fMuW zc^K)%KO;zJ|Fek9c`)~PogxuG=O$qGqn@1Z!{W~jxu2E$Mf(|K-fS~g_pPL2u3{+ zBIf_sI@XW`JfXZKHPNbuiG=!2&71yd5}a<_#4IVbx$Rb^rfFTR!o1qs%ZfQkoux&F zw_Sg*=$^6b++|%3YRwI3>{`;huS__OMf!ggn$;~+Eg^O-B{|4Ya27V7fMBfqy`fg9 z%Gp2kkoqwn@+L8^uW3NuEx+8OqDX~d`h(aVAAG^5et7((h8OqivneZ#(a?Ro;bBO$ z`{A_$j1E1am<))3co!&?t+W11nok?6PQ^J`%kOE{LFqdplj861krH|WAC+7M67X*% zYKZOxHmtrxMGY|=v0U(o&lms|DP2%_6|wiTq#)0FP#i0?et8&n_u}*o&g=( z8VPRn9H+uE1Td?;fuMs%K+M;AnlUD;tAU}4>i*J<+vRg_m$q9Cy*g9!D9pX)C>B;9 zVI62XBBYB%94s3ipMw_{cHPXUYzGdWxdqKqn_CP~jVn}VnC60nKC~Tjwr5q#ozQXD z+`rTd5W8hx=ce*U>_47_cMQ0dPceX-+JZo}o8#hqffxc!+>a({4X)4T)Bf?iUbUMi z+?%Gd|A~s-SocIy7)(G5->suWlj%Aiq70%}tnT_FfcC>tOm1no?QGDdu_^Q?!9CjC z!k^9MNA;q4s6h$!l&z|rr))e>7HP{?a|2 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_anyone_input_changed_2_0/00000.png b/tests/snapshots/stax/test_sighash_none_anyone_input_changed_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97524e00dca3fe77a170d83b3dd8dc72e7f7c98e GIT binary patch literal 15636 zcmeIZXH=7G*d|I**fy{rC?cpJpaf7U(%BZ!Pz9xT5fDO=PC|*;P*hNmWJ^gzN+b|K zS|pL8Cv?j` z>dKy-(mMqN1ol9$UbYnw5PTsZAoS)hA@Gi#^~YiX0fPbP&U)#EqzRG#iXw7icEafH)5 z|LDo4!ZB9_=6`PtlcfX%R!@`*Y`fnmw0F1AuD{Rx1rhjk>_6EX&o=8~1urh}c)VGY zm|iM1l{L^awODcTusMc>2|*4^e|r01`>{jYB=36ebriVwJJLY5=%VmnLMQ(d-pl{u zMgB9Kf8AI{%tm4yF5B`uUqfhK{hu@CR=Ddn5;hXF$U65jTvpeS44=a-p=ky*}5aIh{)s7p!26ba#YL}f(3&>~U_n0T&fMam}2)!I>2LAAsY7>DrCO%RH%%3fCALkjy4t1#{C%ir``8} z$;;iYsDeUMCloa8OQ@@zog1V3L5N0iDGVwTw1PU<6-=aXKf6C_1v|F!{+y;7KtO!C`1{hy=AIT{EF z6I??DdW)y^z|-UvV_S?!_jnw zmoLnEexRK4J$-P;e9jit_Z9ia&%b6zTZyzH4T}Xvwl|AI{8yq7O0B~L%ehb){qbWf zbIi{#f9!Qpxw-%4{Ucvp$o8!ZdmS5(JePA!GplLWU(Gr;78U$r=Jp;)5LG%fN?<5> zT^n+W@ye&xnUGzUpMe-`o+>T+8d?&xDc>OmKIrT3520FT;ZU5xnUd9#{hYyC8NKt4ji`3^7kvn!7!c)#PVz_CBzK5p zsEnV}lEpAWAo{ue=d?A46FnYPP_pZD-c`vdt<&Qr6_5gzq6oui$xE5EKo30qQOy;9 zk2t5hN;r|mId+V}MoL(sLg6cf!F{MXeR7%qe8^4s@1CmEs|f`dc-M^MW?QXrjEH)! z!2jHuc!>LYcJ*g=(wEQ@@yp2DJ2A^o?CgAol~4*$l#g4g8#3X2ES^nL-WgwOh4NWY z>tz}0j=#C0PO)8%OjCekmWS2HJ}`B8m=0(7(Uo zP#p2j?E1xE?JQ<6ZnK^1T6m0h$?Xv{7_IQc@K%f4Od+@!r3@dZ%t9Zh>28b_uHAQR z{dR+A+h|I?Ghv1t1I{tSeyhC5ZTFSeQuiBd8hz9B?d37S8>sQoJ1^vOm6K@!v}fS( z#J)gh2OL!Krqnsh9t9{KuO}l`G3(>h!QxWJyTdaNRX(6i#~4h1bXEyP8D5snr0@{5 zed!AR9g|_Ty?4oLl}nvBV|y=RuYU+nK9t%q-g+uYpTuPNXX**NmO1bvpNxIbg&FQn zQ}CA+S@P>%p{vGR>a~i!3Whh9RxQT3;t-1c}pySfskc3z= zGve+Ql}FZAx`SPuq9GD2@U8B_CUVQ)41sq4)l@tEI0xA&fp*`W5i2JX3r=p*4>XE_ zAi+MO*$7dr^4agIBT;Be-N~+MfpPyT`nB+sB<@N{I_IScCMt_)&7wu zN!mX3tg2sL9$58S(N~s9ZDI2eb?!-8RmRg1daZI8_IMOD`E5-5tNXHU(eH5?*Bee# zx@Gsr_n)Y~&?6?(@*5OhX-R_$2zj067qhr%E<{=SHI3}IZeJo#NjGC6`DhRZU|lS+ zm_DzvcfC<3+bzw@gmr{lLJd|^v+E|#%)Uat_t@`PBXSl?<($kv-!0#b44C@e|Itym z>s8ZHCJJG&5_~0eq7;1;Asb(H~5(g8*}ruiFR;ZVVr-! z0MntE#$YgRzVF;cEAyiWZCo0b6!$m-a)sz!E&1{RXXNLzdiS#GKiXOC`AJ_!?>G|d zksIq>vfP^7APEzjt7T8yeYredfs=n0E0pmMzr2~p=W|w~8iw^7%m+By(ES74aj-yV zRr#R{21uX2wXVYSe^)$DxsB_pf0h$P_6-@O1&oKZ8DObNOMiDQ(ftbhoVNdQ`%2eF$^i1me~LK1|V05$HQJLKxJAG2O{n4x4+hZJMFqdh2ELo)(W82fH0E zt=p&Aynxgl1Iqf$I9>=V;8h;gXJa2uW^vLi_=u5gY8cK>ro}%qm^d)NL9yTt=C6l# zD5uWe-nh+Kj#Z7fM!X0lx~PWN{qDYYCjseMG#*w|C+FT1)mhnakxE&Yw*pB(FrccV zDO)QOjHZ}m5oca;Ci@S3z8=vnQ-p7mE3&S5PQdoS=bQMC8oM8LlY#EVUc6fV=?7P+fFD32ebkUQb2J1W!m|-P^d@?`tBsL9)7Kpt z*8hSd=LoWQvWvxC!5V|mTJc_UckahCWf)>TtF@cO8{iRx2xTxF7#CBt@{k>KA6A@N z%+m5sMwZ?6YqnXK+sHl$x+hRM!WKmA1!{wyn0@ly>aDP&)mIZ>3H%7T761RVE)+-Ve_HSireMR?P}x}?u7W)nWbGGDpLuvkd1Uh`}Aor zWTkahUHpD56@0S2Z5zSEQSqnCKBWG!25LOz5Mc$vNrIoKRXW%dui2BZt$s z*}E}T`+qAZrzsTSLI2S5IIG&a-^50yWxph*yYrIpE~tvqqiNDmpmxQB1%R{9{RSvx z%-Z{^F@$1Us?d98TKCXhCCmMe&T_9d3;j>GcJD3$XBY0JJZ|r9yPKG&oOTsVr|nZe zA~_bUJ3103p*k{4Yjtracx2^d@Pqq32qla-aL^B6B}5b0+{m&p3s9u z5DI7)aVLWY;*({?BVFV=Tk8C%_c>82y2UC7wWPaN#YIM-@}emFRZ{6-jup-b_nVnw zb6->vJb^NSsvEpG6gJ-}MR0rZ>+@^EL9^C(%E`Xl@$k{P z+(g4FouzBF76^Y6B-#F|Y_+}k+HMigf6g9Z7BovmMi>F?e(s{VSNAcRvp&ohJi6GJ z!s`+bgLc89Y@ct`IGPkXGPV}@h(@`>69dZ|w)D=pmwy$r`~5fR^-~=m_@YZ!du|MT z2moFVfB2{A1L$0M18uMkIi? zUk-7aS2`OJu#}@rHB*@N^1CkEdPm4F@hAOC;KuU1%pB8>zMN9;&p(=1Wss)O8b!{K z%|gh9p?nBTDOu@W`IIqER90b;6%K#8_T{%$G(Vv%r*iRxC(5Tu1RUV3xg)i_AT3mM zDLp%qRBL5;=&qO1$#Q`aHTR2x|BWiR;3@c*NaFvAJNW{_S8)yvimCKo+u z-1YoU4>ty`2O52I3$zjt{OD$V=P=)J7Gt$@=o~ns*f8Xi&Ix@0K5&TMojME#S8(MyF3yV?}8d% ziQ7Owb^fPcA@SrKG-DZ)V#EjOG>2?fIcVb56Hx0~=%1+owX@rAXCsl}1Ev7bC)Xso zhTWQVYudwamE9}PGz?DKU5sajI&>|+KAlTQ&G!#@`qNrnCvFDS;9k~2jJlFdWf38x zN}#)v;=zbOmQwOO?sl>SZ&sW*z*!2b?TlHGj-p_xtch3xCv~sM6Gg%S1?a-H`%*IA z_B#p`Z)c%?r7I^_K)4_4>Ple*`+Watbx*(p7|6=SOU2np0H6;+Q3^Dxzp*MFXm8Be zoe|eZm6nv;)5z~IOnythMDMdFGfQ=!PH1W!t@2da^Vmk>B=m$l7!E2R#rQPqY^iuQ zaf{*@T9uy1<0B4}qAW8DEAAnfH5r6=zNxrKU(GNqJ6Tqlr=0B_LERMMKIGi@XuLhc8nnntfln7A?E7>a49unSd@C2^bi z*Zouy<8ZOr?Ok=2HHT(y?BE~)@&|*7?k=1T6BpHIw|5|zXk1t*ziAhprSPCmvoNp9 zUA^)^U}^vFm>(epp9`8|)lOH7<;j&Y*jOxf;zE(IM;U`2lJ%646x>=$c?b@srTFWw zA7wKsojqEXJ*6wFNmHjgZaL9Qdd1wWjNL@2rGa}C4;R#Clb&)7qDu!R;Iq5sDSZe7 zc4PY~W5kcT?^(j^IHTBRQtZUwo)XIV&)VCOM%XL6A#VTZq-2@jY)Mmozlb(#2{Qf1 zFEeU1$TN~)g7VqmN0OQAE<=@P2tk_B(U)O+d--dfrhiseYMH?sH*dfsce_}n8W9|# z%>z2Z`WwTVgZ4nEpJr~+NAhNUngb(@K_qbdHZa+n6-svvcaD#ITTe{!x+ja@x;2i!M0xC9)7vr2y@&uGn}!0@aK~wSj(CY-p5MbMEuV z_)Hiv#-}Xb{0Y>E82jav!8E@0^Ow+U)=EOd@Z2)uYm@HoUukvO&#e4A`huHMNN70M z?(;j2U(4*pO|MaL$Yw%vG`fj&e zc93ZyG(anU625vVmF0vO!t`d|#lAi-Y9Fq&ga36&s$xB{;CB~I=q54%A&b;&rynge z#&riqYQPLj1PA`%71OWno;GETav}eOjPxmnP>U^Z4t;g4Vu$OVM8| z_hsvJN=#;Y!|so1P^RRDxWXgY5gvk9Rmh}O4YmtAEjN=I#l3t20o`pLBV-)@X1 zL>1bn2whBCEi*zS!nLznH4AD6Wd2UwAM5YoaGY{3C(rHF(O!QT=mFNp>tcSahd9Ir z!6*+^FKIQz7iL{`LUml6W|8Dc+8_L`fS|43x7h6>(-O54B;UcI(o^Ppek1AvOpR-^ zEe+Mhrc-V+5n<0OV6L$bVhZPm86C8FrBqT;oo=}S;~Otz6L29>C8gYQKMDy-cBETFA7tdU&hiyx%*1liR3wh!Wmd;rhLItWtC+HX?senKNK7e78AY9W8?L z3m+(xC5gND<<+pB833MdRu!p!#*oe{5ARS}aX?Zz!b+Jfi3vB&_jDmIl~Wf|t<*1E zb^DIGp1rn*b2GN4#xH$ZF93PAi^j*ZWR6nRaT?W_oD4d<+BeBS1YAK}e0)3-IlQOL z2zGuXn(duRn&g~>h%-Bz%pBXNcH5&0mTtJKp*QMikV{j9k+2eW*D2viPr}zμQi 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 DL|>g2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_anyone_input_changed_2_0/00001.png b/tests/snapshots/stax/test_sighash_none_anyone_input_changed_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e72ba2fa664acc6811f4636b7c5c3475b004d098 GIT binary patch literal 7472 zcmeHM`Bzg{yGC)Kt$?-_6a?g=Vi_$W^WacOQ3fd@AcUYY$PAJ&B!oDXv{1w`lrc(_ z$RJ@1kPr|lMo0l6K!gy60zwipFePLlxyOF%-hbe(Z{4--?a2>&t&_da9^UtP&ig#) z*NfgD^)Ge4R8dh;_xSOLpHx(~Jy22E{!DEJ-@o;c5qPY%TS?NRwP9N#a+9HW9LYAjHQO>T&_TVN~ zLT8*$LWEV}BtrXb(!Kv)<<&jh?OQnGea=(nR{HB74_)1MRZVMecG&-^MlK*02NM|1 zuCJ?riy3MpOqsL`gn?V)5gdFx^GmIyX5HPUl~pm;I(iiO$y$v~Lzkn0b1Q+xw~A#? z!oXFv-16gn4NmZo)SgFP^rm=6oxHw=_SvlMV%T6&BRB}ntMGaO*lOd?N7f_#d;)M#E zm-VlqCRZ36nJy4BErW@G8QoT&y4BXr@xt=%g5~p#O*!R1HX8gyEYUv;6-(fSd>I^( zN(SrP=!EuGM2~SdrXEFyRWI#V|ojex?j@m3R-4in0a_Y@FsTRcYq?4&?!N_;%KPuFA{!dZy z&b*WEyv0UeU~m+bzvL1>tf4bju~j}wbJ|TOeXO)xoG%caj%V^y$?_J|ySZfP$$A5E zm$_0n+QN(%KesCM^xi65k)!8!=_si0$f$jN*yDo6@i+zRJq+blO;)WQjoHjeOiV<} zgsZDJIbtwofkvZ6EsOTz71l#kfl@O;LakMZM5&zTR;AwgwKs>(y)>g4+Ri353Iqbx z0QqfwlfZL|E1WnRvLr!_K%oSv{u0k)4A!i{2T*0K=*q3)zi_d1*6{;8ZhqjMPi zy}6Z5;jOlKW@c-!|7hi19xj**2^0Jl=YmaBmTZMvc?AE6M`svdXc0je7HBFyP4)rc zC33M&J{8DGSgAOb%o$$el6RfDO7Nn9F7Z>HzZ0Hq#{~(MPeZG?s%-8^iKp+sZ zX@#i+$(5BSwycYC!9tqkK55-XH8_&xVUW*XBoYCk4W==f!J+kLv~E*463N@eU(WsL zMrPp z_=0$Jb@?v)a#x>jWfez=XHms3jkAH1$Olto6RB08jN9GY?q%7ZJ~yzNtofe*@LAYK z`h&2AE(R`thJOv%ZiM7i7bjtUBn9UfCyxkL^j70rA|Bzm3htphr8-Dg&Tw~iW~zOu zH~HZH8vT5&n%Ttub+SiYcKG_j!oo6L@agjy&17($g+qHE`cm}OE}f+_$L^;_-2^*u zBpIYegts|e?+?9>#lHiD{Dq⪼i1o1QQtS>8R<~2~3;(X2?n;%|`@ms%*P_OJ?f| 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_anyone_input_changed_3_0/00000.png b/tests/snapshots/stax/test_sighash_none_anyone_input_changed_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_anyone_output_changed_1_0/00000.png b/tests/snapshots/stax/test_sighash_none_anyone_output_changed_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_anyone_output_changed_2_0/00000.png b/tests/snapshots/stax/test_sighash_none_anyone_output_changed_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97524e00dca3fe77a170d83b3dd8dc72e7f7c98e GIT binary patch literal 15636 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μQi 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 DL|>g2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_anyone_output_changed_2_0/00001.png b/tests/snapshots/stax/test_sighash_none_anyone_output_changed_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7d0653538bf5198ab17b8b26649b785fefd8df8f GIT binary patch literal 7524 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 tv@S~Wfw;PzDQqLcd%4c}k8^)J3?7cKw* literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_anyone_output_changed_2_0/00002.png b/tests/snapshots/stax/test_sighash_none_anyone_output_changed_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_anyone_output_changed_3_0/00000.png b/tests/snapshots/stax/test_sighash_none_anyone_output_changed_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_anyone_sign_1_0/00000.png b/tests/snapshots/stax/test_sighash_none_anyone_sign_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_anyone_sign_2_0/00000.png b/tests/snapshots/stax/test_sighash_none_anyone_sign_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97524e00dca3fe77a170d83b3dd8dc72e7f7c98e GIT binary patch literal 15636 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μQi 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 DL|>g2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_anyone_sign_2_0/00001.png b/tests/snapshots/stax/test_sighash_none_anyone_sign_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e72ba2fa664acc6811f4636b7c5c3475b004d098 GIT binary patch literal 7472 zcmeHM`Bzg{yGC)Kt$?-_6a?g=Vi_$W^WacOQ3fd@AcUYY$PAJ&B!oDXv{1w`lrc(_ z$RJ@1kPr|lMo0l6K!gy60zwipFePLlxyOF%-hbe(Z{4--?a2>&t&_da9^UtP&ig#) z*NfgD^)Ge4R8dh;_xSOLpHx(~Jy22E{!DEJ-@o;c5qPY%TS?NRwP9N#a+9HW9LYAjHQO>T&_TVN~ zLT8*$LWEV}BtrXb(!Kv)<<&jh?OQnGea=(nR{HB74_)1MRZVMecG&-^MlK*02NM|1 zuCJ?riy3MpOqsL`gn?V)5gdFx^GmIyX5HPUl~pm;I(iiO$y$v~Lzkn0b1Q+xw~A#? z!oXFv-16gn4NmZo)SgFP^rm=6oxHw=_SvlMV%T6&BRB}ntMGaO*lOd?N7f_#d;)M#E zm-VlqCRZ36nJy4BErW@G8QoT&y4BXr@xt=%g5~p#O*!R1HX8gyEYUv;6-(fSd>I^( zN(SrP=!EuGM2~SdrXEFyRWI#V|ojex?j@m3R-4in0a_Y@FsTRcYq?4&?!N_;%KPuFA{!dZy z&b*WEyv0UeU~m+bzvL1>tf4bju~j}wbJ|TOeXO)xoG%caj%V^y$?_J|ySZfP$$A5E zm$_0n+QN(%KesCM^xi65k)!8!=_si0$f$jN*yDo6@i+zRJq+blO;)WQjoHjeOiV<} zgsZDJIbtwofkvZ6EsOTz71l#kfl@O;LakMZM5&zTR;AwgwKs>(y)>g4+Ri353Iqbx z0QqfwlfZL|E1WnRvLr!_K%oSv{u0k)4A!i{2T*0K=*q3)zi_d1*6{;8ZhqjMPi zy}6Z5;jOlKW@c-!|7hi19xj**2^0Jl=YmaBmTZMvc?AE6M`svdXc0je7HBFyP4)rc zC33M&J{8DGSgAOb%o$$el6RfDO7Nn9F7Z>HzZ0Hq#{~(MPeZG?s%-8^iKp+sZ zX@#i+$(5BSwycYC!9tqkK55-XH8_&xVUW*XBoYCk4W==f!J+kLv~E*463N@eU(WsL zMrPp z_=0$Jb@?v)a#x>jWfez=XHms3jkAH1$Olto6RB08jN9GY?q%7ZJ~yzNtofe*@LAYK z`h&2AE(R`thJOv%ZiM7i7bjtUBn9UfCyxkL^j70rA|Bzm3htphr8-Dg&Tw~iW~zOu zH~HZH8vT5&n%Ttub+SiYcKG_j!oo6L@agjy&17($g+qHE`cm}OE}f+_$L^;_-2^*u zBpIYegts|e?+?9>#lHiD{Dq⪼i1o1QQtS>8R<~2~3;(X2?n;%|`@ms%*P_OJ?f| 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_anyone_sign_3_0/00000.png b/tests/snapshots/stax/test_sighash_none_anyone_sign_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_input_modified_1_0/00000.png b/tests/snapshots/stax/test_sighash_none_input_modified_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 zcmeHt`#;nF|F=+7q$I~Vg&bPWXG1C^;Vn%RBBziuV;HGWjv?n$2j}A$EvHdSVpthD zES4M=Hm9*+4%e&q_xcB}>xb`k-M+VvU*@*$_1x?5d_3-_$BTa~O}S49pI~8O;WoQ| z?G_8mk(Vqitgks)fp>JRI%-&06ok#L8Ql&qq)rjDs&5eEU49tavW9R9vc^A_bpEfG zhn%OMJd=>T&dGb_kYiQLXB4c-`e50IH1-jspJmY)2~K1^=%YbWU3plhrw=>ZSXh+# zV~<|uWn4Of+ecFy?L;}fDY2YYV?PVR z?d)=|{Bjl2E=HU^c9m((7v~~q{QYE7BF|-Km(+4E%L*H7zEDTv@lmnbY6U#4zv-3L zC*_+N(y6W_MoeYxw#4BaT&#D!Ch3Sqe-k+Itz2Skp|Diy?CkpWM=rdRNM&1sdcmLv zYNF7xf`iac>v$`N!C>AKsk51%R*jrpUhPMB-K`tQo4O_ap3dBF%Iv8)j|?y+sMm}x z1!zMW6hgE?zyX!sGm5MyuUb|Ryj!Z5cPG?T8@DM!MjEUqJAtG8(9Fg}D}p+6znE~9 zO9J`Lw~N$OiV4;ReFbkyBEQW*y=4CV@0Tvr%I%IZr91&dMdG_Rg+{zp{EFk$c7oSaUf(;I!Q~&buW-`NB=jJ`0^B)E1#aC5mbWObL5NLlRUG)JQ!Iy6Y5CFJt`6#cbFHU z`iFTyg|$!l1?hR8W-li9bzSkca}msUPz$YJ=Wpfa6n|Qw@hb-SM(K=2r+lhwYs|DI zKYS$Fvq)0YLhT)!H$k09rAHZ9iJlRE(fx!BcOs}SaQT(euNqL)J}Yx6<(S)NFK`9Y z5zpQ2CkY?@O`Jc{%I`El@WfRH6l!ce!U%t>%tcLlYC+h>7_RQs%bj37DTc=aOIZ-2 z5QsrBM+F-x4uc{~wcU%`n3zr{csT#VkOZwQw{PDkUQG*_nPuFhl78*OyB7;T&7e-( zt%(h=GW%b@tZ=Bat)aq*6Cqjd6C(o=%FuNoPVm5@ud@$Y(d_zYs3TvG2Wm0u2Q=F~ zv#pEA5F*ya9=k=TjVSou!4E;7BJ0TL6?$2UUuGxnNKY}+B|B@WPjQH>2?TcpDGsR6v=E>#5GB9 z_BYio-@PCf?~-3meOM4NlV%e3EpQXfB$vd93GKt$2bb|W4d^8XgOLoMaSgcfd}or| zPAbd2^==)%5|4pc#k1UosW(Q&$Icpmzbp=1p1IOL16Q40FfeD)QygCC4A~tSvthA? zaEPV_YTLYYT_oVfHc>ywbp0|981D3U^FPwGbZuQ_l4-4ot9YBFMEu`#M%g&K@qoSR zz3=~0YpBds@2z_G3ws*4W=c-rRHsz$pQ!C1K4TkHhVb8O_Pga==B2O-N`5PcQza8) zJ*qe&Baau)a0pMuv{%KtcM0@r?tP^jH!Y-Vp?<6VgWaW4(34zAv*F=i)h+Z2@_uXk zk#Y#?gCoVuBgo6#%V-+Hkn@QOdXbxSW`-G^?QWml7wmjfY^&$zNWI_;0eo+C^@Ur^iQh14A>Cd1wB{WJ^A z-hHiEnqM9CkU|I#U`6J-U`d#copQNEp|qC#{hORof|JN!@M77)TbV1XC?(Dt$0iV@ zu=c6*hz3aY9VGD74*O_Pw-j>|TOH1B*7|W^5l!X!foFOCmiFN~B4)|wk#xm?eDU$x zqa~ju9HBY+!p-lvPsZ5S*=8!320f5_mz!Na<%j;7luz|g?FK$d#mx`z1jHG@+UmxZ zg?wEQQKT-XhBPaVl4mwo_KbCF@gnH@Wx`_fl%IfCcYjlIrja%$_(O)Y8DX=<{W{@Q zJ@ug!@|z^CNx;K4zZ~TQ-+si--`1&sx_utyJ_O8zd!9&fu{LuxD)j;Q5;+?5$#3nOVKkYDX8C&xi zr5N+nUc&G3U;p=n@i}Tw4Bpzh2smVxhPNW+}Pm&Rt_A7;kiXB$NtwfgT0~9ytBjV7V~LM;4(p@)6G`S75rC+F1Q^b_Pks! z-3ZH&W_xF9&Bt!!=`!FAA5%hFP>vbhbs&q)$XY1fbwNBoSN za*#%@41K3{&~`e0^+$P@@Y{J1Oswak+*b+1ze3xm>c?t2XWuidgT0-}>ECl6vN1`? z4;&iq(6Ve2nocTrj9{VhtE;R3R-%Q<6AA4@7mmsaru*PFM!a`@JscvIwt#Fjmm#Ff zJ17c7t`{Nj^)(SOij`(Z3U}i&4d_`KRgAm`x%(gO%V;;Y_rstviEknJ2HJGx@P zruCz-qF;(#LA_+!PDH1Zq5#cCx=_4z;v#Jjaoc$!WyR7FE7rLm?3VWMa0Nlq>s4=$ z%j82aNt6eHU2Wsl`KyYa>}Z3qbXK`@KI{VV>KF7ISP z`D$f4iV3?mbh0)*SRFggBvbw_4D(UG^IEUPf3Q(Wfsx`vGH@Jg5q;v7e?w`Gu;^Cu zByX7zrc`L?#1+X8g_`yBJJ_Vnj&nJO?P>{Zn`Q@OnC%CZF-#oCfSTO;QPGg1!*vyP z?Y*>_8yge~bft5~>77@y72b62?B+M-bT)d-fh_J651F#ubj_I%ZecaggaQ|w8Y%ByUuV9p1%-W^D@ zavV!~Bql3QL0Qt?xgEU3xuxMZ{ZuAH<$?|C`0&l1eJmbGWv-a;2H$*-PA7lO0-(8p zjCs!|;n#y&-Ru{@9*$$i){oFcpqBY&$>!T^(^N@w{OhLpd5V>NcHRk`A3C^xQ%`sG zDySIaSrn3sx^mWzt;iw!k_o6c2vvGp=H}6Uzk`?cJMQ*h0v}n*Eo7~oDH!}RpwIb4 z+Dv-W{RO4nK;YG1al(5mh#9N%xTbpYktQtjTQV=kw<`dZD{h;&RH}*u-J<5Orx%Ut zj8GkYr@#BK;tJ2@cYB9{|InOO=IEk21Bq{y+pDHdC|b$OC;kqH7_=PmdE6@hnbrZu zeQ78$W;b$Pup8TgwQKAsqCevm--vQpULXfZC`XY7h=*mPQ4`8h9;Kc7F#9NXb4g{oYe+68Dt0`qswAwtQ8%tz7uOdlM#{A`sUiw z;avHQEj@K3uX&D6Io7zsa$%mj?Gb;#%#N&`0|Qwk=5RWC=n|MzC#qt`+sfv*R|g$> z$=0dD;l~|`6dd|PogLIs`g74moVm?7aFA>{8O*r8eZY*SNSkdy@H7ZcHTeEL&vg%R zS9;*48^j~@ zDnCRX8{1j-)W$yp*@a@QPQptCVbs^OBV6a@vK=Dle^y5t@sC>jc+c1O{Z+vBz`BaFVAmink~W) z)uukqO$+bbE7sP9>`BQq_lkDyh}qZB7Pifzy_}DH`$Moiek2NDjQ_{>)$3aX^}9~k zipt8>)w52txEvJes@eiId_w|>@gJ;lVNw{8a5mTca{9^4>6dTcF1?;V(--b}p>(n# z_K%z4TALN9mn!=s2JO^5({cQFot#27{|NHH)rl^PA4P-)M(e>3UE3f0W@0*&e(d?i zFl|KwKUC(%cJBhMVuP*)zfG@6qTOp25BKR(-we?HS~EvI0`MvhI$Dd+?)y3R?So^i zCzU+9-hPowe9%7CPimhUIu3@%eYWCTaY;<9X1#NKJ@vQtdtz%j<~>JAqHs2OAI|du zaXVM*sj2k{yrxh8hy}O0H zmVkisZfUv~=j(1?Z+nrJr2i$NbEV*}<5+SPjZK0!p?xyGf1X=ddYB=3ZysGVep9$q&th+r-k@CA>I=4+HTEp9pL?QvKBFdnk zgoVIcAP>>MZb9r;}1n5>0hIUEhy#(KHZLQ1SCo{X~bc{s*LY0Cm{0i954lB5X5woUnYs1VPk40+=^QUr~y zi^*flqhe#r5wXk;ix_mghHLPi2m6nhf#R`g`?w+{suTeusNSUNe`<@qwh*_7StYjD zA}UMp z3J(07Ev7(SpxCXFc4k{&4qfa5W&hDl8K3ZqS8U@u-$wK@q!$azt1f6~ftj3(d*4^? z=@JY^>syYun;@O77|L8s*pMmf@`{Q2#eOF&N^3v2JHJ^cT4xgZrFwa?*=Mt5Y_f!* zkv=|PIWeKi%N|P@no>_`J@I4g%y&>D!tuyt=D7^ecI00{?du4Ma^*_4Ur zLGj_8PJ==Et^|=xO^!c5l(P|gVNQhggP$!IBgb<^HZ!Hu{k{RR0D%BxOYiz+|6}c3 z2xg-`sjZ&Kah24wq0B{W^|GpKm}h?EUx!VPhF+4Xs`f?`0XJr%H6%V=m+q`9b%)3MMTX@)$6nvfYQAE<%$5 zpUbI1Tt~`oP30!GcT_F44cIbH1!AQNYnwIXH}NgXC{(IpJV70BBCk|eR|Bw|~EiulmGNapaG(RS%obu-@JyCd)jy-^!xDt>%3H?dn7XRyt2O3X$wKjIMp;ph!O z3+RZ}EbjvS;|^V&DQp8sx=<*z==gSrtoJ0Y{krpnwQBSe{Pd<^n$4$1%45Ml1%C8N zQ*SM!(*O+*4#|s`CP%kT5XAAtuB2N^k&<}LhCZ+E+!VX)c>u9Nr#v2){M-~YaklvN z)0221XYcdWy__=P7N>?gHBd4ORot7z7<8k;C;I;jz5UWb>5Y#_x$H z=Jf>Xe$H>?pV-WOQM?jQcz;QMx6tXUWyKrqR20~pFyiGXtYgZ2$q8U<69kU}qYV8S z<1ocFS+gKOq4dtK=|3z_{T4=isWUto98wPI4a_fJu-2qM{fD2j=qCbyI?ecyGVT;> zpDknd!2dHng`K9kKUKVop9ZEZ&8S2!ambb3 zej)acR9K{wbDYb#6B}FXmcF0VsfKP$inc4^tR3$6t2HJ2Y|%7RrWOkEH0dXlgt_kN z_n}1HbTMIc!U5RM0P*aY3xSB?$-$n_rOf~mX*rLzN2#2tTfzL1?<DouH&zoIq8R{o+&8T0iB|+i?bVndZpAF z_1jjNW*OS=((;nPwX4h~B)!|3FRyKB?MmK@ToXomCKWU`zRIv5fYMB5IozctPi9H? zCA6Hw9BkD7R9tAf*G2if)U7jeT}@US<#TvjjzdpWOdw7?C6 zLM;of*YR7bp^gRoitR$tXkuU5d%}iH))RFL3&gclI>0H|h^74=lNCgbChUyF8!s(K zftYL7>QSjuTcch|WOcUI4w{Pxq#RY|9QqD^7FPAmzmNScbF}a~ zK|O0Xb&itUsx2gasNrjcx}AupJP zc@wfTg6wW|`m5Ps$Iw|e0o)vRM#>)3NkmaTwsy$MqY87wqRRr`Oap}R2G#u8t)sb) zj`?*Bt#_;aVHGEOOI?HL4$~8O|5{RVcSK$jc)sxb9@e2**iSPezO7!*$}%BR3?9?8 zFcA#*wC3xaGpQlH=#CIFyI67d+hdIG^Sw`a%#`VcaeIrGJPE;{pHTwR>Nv<77YZM0 zy4zZB<1fEsCbgu|VzVbn8 zhKQY<4dP1^XKjv3=vgMV3CzKY+p&#shR?15p142v?|h#5e=Ir2p1lww+MA&3Bn6Pc9j#QGCp%| z?r#iM&%E%D19pdx;f(+I<>r)<+2n>Vg7!#H&@eu?e3dyXl~uTVq>z{Oe-A>GVM~M0 z{<8TVU-lUCd||YV#VJkrzi)bEZyD}n&DWrKjO8bzfea4>b+rky1c+BW`+q#QQae_; z+*VzECxi$%iFBAwu3%CsY6tMSa z6Hx?m+P)ztHehI>GoB3xlBAyiY2QcQyQ<4zrq4#-vvBtHc!KAw)lQ`*J{8h8%fMuW zc^K)%KO;zJ|Fek9c`)~PogxuG=O$qGqn@1Z!{W~jxu2E$Mf(|K-fS~g_pPL2u3{+ zBIf_sI@XW`JfXZKHPNbuiG=!2&71yd5}a<_#4IVbx$Rb^rfFTR!o1qs%ZfQkoux&F zw_Sg*=$^6b++|%3YRwI3>{`;huS__OMf!ggn$;~+Eg^O-B{|4Ya27V7fMBfqy`fg9 z%Gp2kkoqwn@+L8^uW3NuEx+8OqDX~d`h(aVAAG^5et7((h8OqivneZ#(a?Ro;bBO$ z`{A_$j1E1am<))3co!&?t+W11nok?6PQ^J`%kOE{LFqdplj861krH|WAC+7M67X*% zYKZOxHmtrxMGY|=v0U(o&lms|DP2%_6|wiTq#)0FP#i0?et8&n_u}*o&g=( z8VPRn9H+uE1Td?;fuMs%K+M;AnlUD;tAU}4>i*J<+vRg_m$q9Cy*g9!D9pX)C>B;9 zVI62XBBYB%94s3ipMw_{cHPXUYzGdWxdqKqn_CP~jVn}VnC60nKC~Tjwr5q#ozQXD z+`rTd5W8hx=ce*U>_47_cMQ0dPceX-+JZo}o8#hqffxc!+>a({4X)4T)Bf?iUbUMi z+?%Gd|A~s-SocIy7)(G5->suWlj%Aiq70%}tnT_FfcC>tOm1no?QGDdu_^Q?!9CjC z!k^9MNA;q4s6h$!l&z|rr))e>7HP{?a|2 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_input_modified_2_0/00000.png b/tests/snapshots/stax/test_sighash_none_input_modified_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97524e00dca3fe77a170d83b3dd8dc72e7f7c98e GIT binary patch literal 15636 zcmeIZXH=7G*d|I**fy{rC?cpJpaf7U(%BZ!Pz9xT5fDO=PC|*;P*hNmWJ^gzN+b|K zS|pL8Cv?j` z>dKy-(mMqN1ol9$UbYnw5PTsZAoS)hA@Gi#^~YiX0fPbP&U)#EqzRG#iXw7icEafH)5 z|LDo4!ZB9_=6`PtlcfX%R!@`*Y`fnmw0F1AuD{Rx1rhjk>_6EX&o=8~1urh}c)VGY zm|iM1l{L^awODcTusMc>2|*4^e|r01`>{jYB=36ebriVwJJLY5=%VmnLMQ(d-pl{u zMgB9Kf8AI{%tm4yF5B`uUqfhK{hu@CR=Ddn5;hXF$U65jTvpeS44=a-p=ky*}5aIh{)s7p!26ba#YL}f(3&>~U_n0T&fMam}2)!I>2LAAsY7>DrCO%RH%%3fCALkjy4t1#{C%ir``8} z$;;iYsDeUMCloa8OQ@@zog1V3L5N0iDGVwTw1PU<6-=aXKf6C_1v|F!{+y;7KtO!C`1{hy=AIT{EF z6I??DdW)y^z|-UvV_S?!_jnw zmoLnEexRK4J$-P;e9jit_Z9ia&%b6zTZyzH4T}Xvwl|AI{8yq7O0B~L%ehb){qbWf zbIi{#f9!Qpxw-%4{Ucvp$o8!ZdmS5(JePA!GplLWU(Gr;78U$r=Jp;)5LG%fN?<5> zT^n+W@ye&xnUGzUpMe-`o+>T+8d?&xDc>OmKIrT3520FT;ZU5xnUd9#{hYyC8NKt4ji`3^7kvn!7!c)#PVz_CBzK5p zsEnV}lEpAWAo{ue=d?A46FnYPP_pZD-c`vdt<&Qr6_5gzq6oui$xE5EKo30qQOy;9 zk2t5hN;r|mId+V}MoL(sLg6cf!F{MXeR7%qe8^4s@1CmEs|f`dc-M^MW?QXrjEH)! z!2jHuc!>LYcJ*g=(wEQ@@yp2DJ2A^o?CgAol~4*$l#g4g8#3X2ES^nL-WgwOh4NWY z>tz}0j=#C0PO)8%OjCekmWS2HJ}`B8m=0(7(Uo zP#p2j?E1xE?JQ<6ZnK^1T6m0h$?Xv{7_IQc@K%f4Od+@!r3@dZ%t9Zh>28b_uHAQR z{dR+A+h|I?Ghv1t1I{tSeyhC5ZTFSeQuiBd8hz9B?d37S8>sQoJ1^vOm6K@!v}fS( z#J)gh2OL!Krqnsh9t9{KuO}l`G3(>h!QxWJyTdaNRX(6i#~4h1bXEyP8D5snr0@{5 zed!AR9g|_Ty?4oLl}nvBV|y=RuYU+nK9t%q-g+uYpTuPNXX**NmO1bvpNxIbg&FQn zQ}CA+S@P>%p{vGR>a~i!3Whh9RxQT3;t-1c}pySfskc3z= zGve+Ql}FZAx`SPuq9GD2@U8B_CUVQ)41sq4)l@tEI0xA&fp*`W5i2JX3r=p*4>XE_ zAi+MO*$7dr^4agIBT;Be-N~+MfpPyT`nB+sB<@N{I_IScCMt_)&7wu zN!mX3tg2sL9$58S(N~s9ZDI2eb?!-8RmRg1daZI8_IMOD`E5-5tNXHU(eH5?*Bee# zx@Gsr_n)Y~&?6?(@*5OhX-R_$2zj067qhr%E<{=SHI3}IZeJo#NjGC6`DhRZU|lS+ zm_DzvcfC<3+bzw@gmr{lLJd|^v+E|#%)Uat_t@`PBXSl?<($kv-!0#b44C@e|Itym z>s8ZHCJJG&5_~0eq7;1;Asb(H~5(g8*}ruiFR;ZVVr-! z0MntE#$YgRzVF;cEAyiWZCo0b6!$m-a)sz!E&1{RXXNLzdiS#GKiXOC`AJ_!?>G|d zksIq>vfP^7APEzjt7T8yeYredfs=n0E0pmMzr2~p=W|w~8iw^7%m+By(ES74aj-yV zRr#R{21uX2wXVYSe^)$DxsB_pf0h$P_6-@O1&oKZ8DObNOMiDQ(ftbhoVNdQ`%2eF$^i1me~LK1|V05$HQJLKxJAG2O{n4x4+hZJMFqdh2ELo)(W82fH0E zt=p&Aynxgl1Iqf$I9>=V;8h;gXJa2uW^vLi_=u5gY8cK>ro}%qm^d)NL9yTt=C6l# zD5uWe-nh+Kj#Z7fM!X0lx~PWN{qDYYCjseMG#*w|C+FT1)mhnakxE&Yw*pB(FrccV zDO)QOjHZ}m5oca;Ci@S3z8=vnQ-p7mE3&S5PQdoS=bQMC8oM8LlY#EVUc6fV=?7P+fFD32ebkUQb2J1W!m|-P^d@?`tBsL9)7Kpt z*8hSd=LoWQvWvxC!5V|mTJc_UckahCWf)>TtF@cO8{iRx2xTxF7#CBt@{k>KA6A@N z%+m5sMwZ?6YqnXK+sHl$x+hRM!WKmA1!{wyn0@ly>aDP&)mIZ>3H%7T761RVE)+-Ve_HSireMR?P}x}?u7W)nWbGGDpLuvkd1Uh`}Aor zWTkahUHpD56@0S2Z5zSEQSqnCKBWG!25LOz5Mc$vNrIoKRXW%dui2BZt$s z*}E}T`+qAZrzsTSLI2S5IIG&a-^50yWxph*yYrIpE~tvqqiNDmpmxQB1%R{9{RSvx z%-Z{^F@$1Us?d98TKCXhCCmMe&T_9d3;j>GcJD3$XBY0JJZ|r9yPKG&oOTsVr|nZe zA~_bUJ3103p*k{4Yjtracx2^d@Pqq32qla-aL^B6B}5b0+{m&p3s9u z5DI7)aVLWY;*({?BVFV=Tk8C%_c>82y2UC7wWPaN#YIM-@}emFRZ{6-jup-b_nVnw zb6->vJb^NSsvEpG6gJ-}MR0rZ>+@^EL9^C(%E`Xl@$k{P z+(g4FouzBF76^Y6B-#F|Y_+}k+HMigf6g9Z7BovmMi>F?e(s{VSNAcRvp&ohJi6GJ z!s`+bgLc89Y@ct`IGPkXGPV}@h(@`>69dZ|w)D=pmwy$r`~5fR^-~=m_@YZ!du|MT z2moFVfB2{A1L$0M18uMkIi? zUk-7aS2`OJu#}@rHB*@N^1CkEdPm4F@hAOC;KuU1%pB8>zMN9;&p(=1Wss)O8b!{K z%|gh9p?nBTDOu@W`IIqER90b;6%K#8_T{%$G(Vv%r*iRxC(5Tu1RUV3xg)i_AT3mM zDLp%qRBL5;=&qO1$#Q`aHTR2x|BWiR;3@c*NaFvAJNW{_S8)yvimCKo+u z-1YoU4>ty`2O52I3$zjt{OD$V=P=)J7Gt$@=o~ns*f8Xi&Ix@0K5&TMojME#S8(MyF3yV?}8d% ziQ7Owb^fPcA@SrKG-DZ)V#EjOG>2?fIcVb56Hx0~=%1+owX@rAXCsl}1Ev7bC)Xso zhTWQVYudwamE9}PGz?DKU5sajI&>|+KAlTQ&G!#@`qNrnCvFDS;9k~2jJlFdWf38x zN}#)v;=zbOmQwOO?sl>SZ&sW*z*!2b?TlHGj-p_xtch3xCv~sM6Gg%S1?a-H`%*IA z_B#p`Z)c%?r7I^_K)4_4>Ple*`+Watbx*(p7|6=SOU2np0H6;+Q3^Dxzp*MFXm8Be zoe|eZm6nv;)5z~IOnythMDMdFGfQ=!PH1W!t@2da^Vmk>B=m$l7!E2R#rQPqY^iuQ zaf{*@T9uy1<0B4}qAW8DEAAnfH5r6=zNxrKU(GNqJ6Tqlr=0B_LERMMKIGi@XuLhc8nnntfln7A?E7>a49unSd@C2^bi z*Zouy<8ZOr?Ok=2HHT(y?BE~)@&|*7?k=1T6BpHIw|5|zXk1t*ziAhprSPCmvoNp9 zUA^)^U}^vFm>(epp9`8|)lOH7<;j&Y*jOxf;zE(IM;U`2lJ%646x>=$c?b@srTFWw zA7wKsojqEXJ*6wFNmHjgZaL9Qdd1wWjNL@2rGa}C4;R#Clb&)7qDu!R;Iq5sDSZe7 zc4PY~W5kcT?^(j^IHTBRQtZUwo)XIV&)VCOM%XL6A#VTZq-2@jY)Mmozlb(#2{Qf1 zFEeU1$TN~)g7VqmN0OQAE<=@P2tk_B(U)O+d--dfrhiseYMH?sH*dfsce_}n8W9|# z%>z2Z`WwTVgZ4nEpJr~+NAhNUngb(@K_qbdHZa+n6-svvcaD#ITTe{!x+ja@x;2i!M0xC9)7vr2y@&uGn}!0@aK~wSj(CY-p5MbMEuV z_)Hiv#-}Xb{0Y>E82jav!8E@0^Ow+U)=EOd@Z2)uYm@HoUukvO&#e4A`huHMNN70M z?(;j2U(4*pO|MaL$Yw%vG`fj&e zc93ZyG(anU625vVmF0vO!t`d|#lAi-Y9Fq&ga36&s$xB{;CB~I=q54%A&b;&rynge z#&riqYQPLj1PA`%71OWno;GETav}eOjPxmnP>U^Z4t;g4Vu$OVM8| z_hsvJN=#;Y!|so1P^RRDxWXgY5gvk9Rmh}O4YmtAEjN=I#l3t20o`pLBV-)@X1 zL>1bn2whBCEi*zS!nLznH4AD6Wd2UwAM5YoaGY{3C(rHF(O!QT=mFNp>tcSahd9Ir z!6*+^FKIQz7iL{`LUml6W|8Dc+8_L`fS|43x7h6>(-O54B;UcI(o^Ppek1AvOpR-^ zEe+Mhrc-V+5n<0OV6L$bVhZPm86C8FrBqT;oo=}S;~Otz6L29>C8gYQKMDy-cBETFA7tdU&hiyx%*1liR3wh!Wmd;rhLItWtC+HX?senKNK7e78AY9W8?L z3m+(xC5gND<<+pB833MdRu!p!#*oe{5ARS}aX?Zz!b+Jfi3vB&_jDmIl~Wf|t<*1E zb^DIGp1rn*b2GN4#xH$ZF93PAi^j*ZWR6nRaT?W_oD4d<+BeBS1YAK}e0)3-IlQOL z2zGuXn(duRn&g~>h%-Bz%pBXNcH5&0mTtJKp*QMikV{j9k+2eW*D2viPr}zμQi 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 DL|>g2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_input_modified_2_0/00001.png b/tests/snapshots/stax/test_sighash_none_input_modified_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e72ba2fa664acc6811f4636b7c5c3475b004d098 GIT binary patch literal 7472 zcmeHM`Bzg{yGC)Kt$?-_6a?g=Vi_$W^WacOQ3fd@AcUYY$PAJ&B!oDXv{1w`lrc(_ z$RJ@1kPr|lMo0l6K!gy60zwipFePLlxyOF%-hbe(Z{4--?a2>&t&_da9^UtP&ig#) z*NfgD^)Ge4R8dh;_xSOLpHx(~Jy22E{!DEJ-@o;c5qPY%TS?NRwP9N#a+9HW9LYAjHQO>T&_TVN~ zLT8*$LWEV}BtrXb(!Kv)<<&jh?OQnGea=(nR{HB74_)1MRZVMecG&-^MlK*02NM|1 zuCJ?riy3MpOqsL`gn?V)5gdFx^GmIyX5HPUl~pm;I(iiO$y$v~Lzkn0b1Q+xw~A#? z!oXFv-16gn4NmZo)SgFP^rm=6oxHw=_SvlMV%T6&BRB}ntMGaO*lOd?N7f_#d;)M#E zm-VlqCRZ36nJy4BErW@G8QoT&y4BXr@xt=%g5~p#O*!R1HX8gyEYUv;6-(fSd>I^( zN(SrP=!EuGM2~SdrXEFyRWI#V|ojex?j@m3R-4in0a_Y@FsTRcYq?4&?!N_;%KPuFA{!dZy z&b*WEyv0UeU~m+bzvL1>tf4bju~j}wbJ|TOeXO)xoG%caj%V^y$?_J|ySZfP$$A5E zm$_0n+QN(%KesCM^xi65k)!8!=_si0$f$jN*yDo6@i+zRJq+blO;)WQjoHjeOiV<} zgsZDJIbtwofkvZ6EsOTz71l#kfl@O;LakMZM5&zTR;AwgwKs>(y)>g4+Ri353Iqbx z0QqfwlfZL|E1WnRvLr!_K%oSv{u0k)4A!i{2T*0K=*q3)zi_d1*6{;8ZhqjMPi zy}6Z5;jOlKW@c-!|7hi19xj**2^0Jl=YmaBmTZMvc?AE6M`svdXc0je7HBFyP4)rc zC33M&J{8DGSgAOb%o$$el6RfDO7Nn9F7Z>HzZ0Hq#{~(MPeZG?s%-8^iKp+sZ zX@#i+$(5BSwycYC!9tqkK55-XH8_&xVUW*XBoYCk4W==f!J+kLv~E*463N@eU(WsL zMrPp z_=0$Jb@?v)a#x>jWfez=XHms3jkAH1$Olto6RB08jN9GY?q%7ZJ~yzNtofe*@LAYK z`h&2AE(R`thJOv%ZiM7i7bjtUBn9UfCyxkL^j70rA|Bzm3htphr8-Dg&Tw~iW~zOu zH~HZH8vT5&n%Ttub+SiYcKG_j!oo6L@agjy&17($g+qHE`cm}OE}f+_$L^;_-2^*u zBpIYegts|e?+?9>#lHiD{Dq⪼i1o1QQtS>8R<~2~3;(X2?n;%|`@ms%*P_OJ?f| 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_input_modified_3_0/00000.png b/tests/snapshots/stax/test_sighash_none_input_modified_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_output_modified_1_0/00000.png b/tests/snapshots/stax/test_sighash_none_output_modified_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_output_modified_2_0/00000.png b/tests/snapshots/stax/test_sighash_none_output_modified_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97524e00dca3fe77a170d83b3dd8dc72e7f7c98e GIT binary patch literal 15636 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μQi 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 DL|>g2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_output_modified_2_0/00001.png b/tests/snapshots/stax/test_sighash_none_output_modified_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7d0653538bf5198ab17b8b26649b785fefd8df8f GIT binary patch literal 7524 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 tv@S~Wfw;PzDQqLcd%4c}k8^)J3?7cKw* literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_output_modified_2_0/00002.png b/tests/snapshots/stax/test_sighash_none_output_modified_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_output_modified_3_0/00000.png b/tests/snapshots/stax/test_sighash_none_output_modified_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_sign_psbt_1_0/00000.png b/tests/snapshots/stax/test_sighash_none_sign_psbt_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_sign_psbt_2_0/00000.png b/tests/snapshots/stax/test_sighash_none_sign_psbt_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97524e00dca3fe77a170d83b3dd8dc72e7f7c98e GIT binary patch literal 15636 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μQi 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 DL|>g2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_sign_psbt_2_0/00001.png b/tests/snapshots/stax/test_sighash_none_sign_psbt_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e72ba2fa664acc6811f4636b7c5c3475b004d098 GIT binary patch literal 7472 zcmeHM`Bzg{yGC)Kt$?-_6a?g=Vi_$W^WacOQ3fd@AcUYY$PAJ&B!oDXv{1w`lrc(_ z$RJ@1kPr|lMo0l6K!gy60zwipFePLlxyOF%-hbe(Z{4--?a2>&t&_da9^UtP&ig#) z*NfgD^)Ge4R8dh;_xSOLpHx(~Jy22E{!DEJ-@o;c5qPY%TS?NRwP9N#a+9HW9LYAjHQO>T&_TVN~ zLT8*$LWEV}BtrXb(!Kv)<<&jh?OQnGea=(nR{HB74_)1MRZVMecG&-^MlK*02NM|1 zuCJ?riy3MpOqsL`gn?V)5gdFx^GmIyX5HPUl~pm;I(iiO$y$v~Lzkn0b1Q+xw~A#? z!oXFv-16gn4NmZo)SgFP^rm=6oxHw=_SvlMV%T6&BRB}ntMGaO*lOd?N7f_#d;)M#E zm-VlqCRZ36nJy4BErW@G8QoT&y4BXr@xt=%g5~p#O*!R1HX8gyEYUv;6-(fSd>I^( zN(SrP=!EuGM2~SdrXEFyRWI#V|ojex?j@m3R-4in0a_Y@FsTRcYq?4&?!N_;%KPuFA{!dZy z&b*WEyv0UeU~m+bzvL1>tf4bju~j}wbJ|TOeXO)xoG%caj%V^y$?_J|ySZfP$$A5E zm$_0n+QN(%KesCM^xi65k)!8!=_si0$f$jN*yDo6@i+zRJq+blO;)WQjoHjeOiV<} zgsZDJIbtwofkvZ6EsOTz71l#kfl@O;LakMZM5&zTR;AwgwKs>(y)>g4+Ri353Iqbx z0QqfwlfZL|E1WnRvLr!_K%oSv{u0k)4A!i{2T*0K=*q3)zi_d1*6{;8ZhqjMPi zy}6Z5;jOlKW@c-!|7hi19xj**2^0Jl=YmaBmTZMvc?AE6M`svdXc0je7HBFyP4)rc zC33M&J{8DGSgAOb%o$$el6RfDO7Nn9F7Z>HzZ0Hq#{~(MPeZG?s%-8^iKp+sZ zX@#i+$(5BSwycYC!9tqkK55-XH8_&xVUW*XBoYCk4W==f!J+kLv~E*463N@eU(WsL zMrPp z_=0$Jb@?v)a#x>jWfez=XHms3jkAH1$Olto6RB08jN9GY?q%7ZJ~yzNtofe*@LAYK z`h&2AE(R`thJOv%ZiM7i7bjtUBn9UfCyxkL^j70rA|Bzm3htphr8-Dg&Tw~iW~zOu zH~HZH8vT5&n%Ttub+SiYcKG_j!oo6L@agjy&17($g+qHE`cm}OE}f+_$L^;_-2^*u zBpIYegts|e?+?9>#lHiD{Dq⪼i1o1QQtS>8R<~2~3;(X2?n;%|`@ms%*P_OJ?f| z<(se4)nACg+*`5($)(F zm@4x_n%x(k zasNI6gAK7@nsT9n&c0TEpkpgngFrIA+ky;}@0b>=ald4^M710>l0v6bZT#`ai zwb)+Cb)bx>ClAez0*nCPai2P8Xz*v)pxF7Xj@{Yh*0F2#fo584yG~i#Sov`dNwFmp z18{lm0-Ky$3w3gBUBI?WeeDm~JHx=PuC4?Imr}?FEo`f7L|2=cU# zXLp}Am|$Z$&%M9M*U58dU#geA=Voz)YqhpYvTVT+o!#z(>NZ!-kD`H<+B-*0H}zhx zh|(mi_J$R;WDZ$8L{1yk6c>Br*+=S+=kQWxJE`;Rxz?UG+p1k1|26dY{z%DD;P^{T zhJ@YKe7k@k44P2DVp?Gb=`KEaKin!p-!PCx^-@+(zWheb<&_z2y@`FWi{~AC$fZF9 z5D+l`Qe^q!b1S*9iu}-;G|`yk9W4Da$IwxJ*Xa!?g=B==!ge1}d{I`MX^od{d*~-# zgJF-#XE3N$j{P=g>@qvcL^!gDC10V?znC}#rw}|LI_+0 zdWR^TooUQu&hh1Pf{9K!`AjKi1$h@XHkFc|7}p$?DtlmQPx7x*=w%8vhbRux;HBF1 z^#?-EXF}H8{eDe*U>Tgn2|xk)wfD}c4|6-X%LSRns-2H`*H+<@L$(qOG^jE*K;E)DRJ_q53Y%>sc$k88wqM{)C&xYut z$oHP*ro^}nKF7`XNrb&lo+nZ|pl=iSW-ddX|4BvjT-~h`JHAr;r}^gy{>g%Wfbjp1 z3+7PbsoUrVRsxggO#T>dbuiBzQs?S=8O-2rkdEh!#=r!~SpYE+Yy@m&+@E^IN+<}m=a6cvINs!Uyf4Pgfl3znsVP2~0Sm$)eDEvj z@&)qck5j7AzbtkRX;H3*&%`ep?cffKabaKv>$$YSEUGa`d}i9ZKhwp>*oC%W<^27l zs;U9~^Dova+AHyReD{7P5o}SwT0{k59`}ZaeWMv*kmpWkLlZX)8IKZ{Z&;tVC6a~d zP6O1cEnAbsBbp@5$>kwfBOq&uJfM){hDnd6CXPTIkahKM6W=yvBd%B!M5ni!(LRgr z&*jY*DKQf3;}|WAobp<(-&aw%p;wNrm@$@aZ1LbCd#|OkDY|IkW*aMEa4Lt-iJo@H z`NsH(qchpfFMeLzm0SLimzvSrXv=w`=npkvy|NZgQ+(NPxkL|5P+%I}+Dm_yqtOji zYItoPdKFBqODg-Yf^wiIBkxO289EAcWZQnQnm)uo%pU)52_xb8h__TJJY1HHBFYM#Zps#IjMpoubRw{z!JZF-(*bJ05#c zny8N;O{m)zCyZRRpi9D-L^6wSMD8=}BH^L>$?G5x))kHRmB?dfewRL9f8hYPdaB_d zZJBJ80yXRF%WP0VC~Zh=u$rDRs8}cSA`uCfNFRb``|Xdmcam!9$>&p{^?r*HfMkDM z#69M--X4UpSVkSgW6Mf|L|w6xvSAneH)}Z8oOE1=Juqo^iyGbV%_#apfa9r8L<_92WCrVS(N%+QuZcZ+0fKQW>-YtFDnrZI+-Y9`=cPVG#mYV z!Rnc6tVbRH*l0}R*BA5ssE6766`Xw83w3>G&mXl#X-7ar)Vs0WgoWad7gDAc_c|&M z>>*8$&#tvcy$~glE@nLj!k$wJ1^GRytwqtCs|Od?04bQ@L+HQ|o=`_btI$mhWH7G} zJvfO8V|lsQutQs!JouevG2L3V`he(QsUOuYy7qdJ$~Yx+X1C!Q^9iDQaeSUFQFg_) zt-B*HPQ(>KFc$U>ZB35iW<&tVro9Oe^B!1MTixtgq%+cU*sk*vClO_X)kR# zM#moa!YK(%kwjwe0|zV-gy6xvE^PCHSx$LX6*<$KdOhVH%$BXYb9l|XKki0Rq?5kb zsgG_gwsvzF1rRd}(QXVhTYX%Gc!BwpQepJ0-8kB1{=uShmcuq{cKl8`$GFMPlm22| z_puZUi+S}u>lILA+M0L~)?oXvvw#`0qEAJh@_KBrfY(~eIwU3~#(reZRDO>W2;^9$k3r0bzpObJ7>GoI4Ur&Szjm}v>+D&9b=JvblT${O%eCH=UNd(HsY-4|X$1T6J zhxc@Cf4jHlfQ5tYZBWD>(_8Cq*5awJT3tc^KGSohv-~)b$)lvH&a^85TdmNOPtjFb zv_HDz?OwBgE$H9h)W~iWRn&43f}Ps2%rQ&;eMOo;Z?j{92#8&DLB2b#stRxf;WR)L zOC)W_b9%!Y#^Y+I-8#k+T4XYDqVKl=l{Q~tA=0w`qsyT(y6DMMV8}$A4I?79h4~Vd zDT;+LiC*+?-Fz_%H>^psZ}WL0;D?YmtBDT?M8M-o{*%k)jw1wsmLZwrhhJZ=E*7LR z;%qL+?2G#o$inN6uz+?71=(+T-|x`X(tyv_&jo3k&f7qX0`~q*Hk-}k@rKne`@?#! zOoD?jS;^v~fp?)kTL3rbQvtC7uySxU-M_sUvcQBCEAo@$;HbRO2|X=qwX{{8a+P z-=EUneu#n@j}wVR#1#>ZtWLX>42-qD4OJX6621UndR;+H;U0nOTFt)RID|KDFz_wU}8wwa+E$d5P zjXpr!!tLO`@aqB`t^Q=TVrfKjcFNn|ACGCj#-dRA3eq5>iK`Z~l?k7mOMq9+uPlm_ zLGHq{w3ao%?SsnDjsTa4Qg7N6FYM;+XDA-ZUN365w2aFwyu|KcsAkfWGvc+P3dshS zF=POPl&?*e@PBsmz2pyEV1{#JZ8o78znxcl8LDYIzznscfjEc32WY= zP@cg<$Kf@;0t5wB5}EN15d&-HXo$?1mFQgDFFO`!JI{@^HdM3VGh_OCrocm`g`>`6b|ryHt)=Zr9Y@fI2fI1m>VusRXa5G(<+Zx(N!3F~ z1C2L!R69cIWlxqQchFT;tMX;PZz|9=vc!+S@m@G~ow9eJQ&6*tFuhWpvJR^_fue1R zEmbI{QjWo(2?5H_XeW<)rgf2u{NBbwcV8x*yfJLIGD}7`jxTR)G@~j8g|O->02|KI z!d41F6`&>r=#aA@5Zsi6>FDDpiCyfH9;bd1PW|qA3^2$uj4er@Q)oCcKMPamhYeW$pG_=lFT1Qy9I5k1x}D(tf|O`myBetY-cXAb~-b z+YW9u48NGUaPPZxl{*`weGQ&Q4IOdX77=^6)$DIW`uF|&KEKH!R!=THScvzq0KSB( Oc({50P})CeI&j1Wkuh7bsX@AkfDo|*IIlzGqdd^smyGJDNlYwx|<^}l}qm1J#cDsV{R z5C;c`fZ6qHwj3P${^H=^e06{mDABQMujb&mkY#r5ihcOYWfHx)_y#V)bzZuFLyen% zpHbIgm4E)!xex5S`rz=JT=1-(Oq!G@^wAeE2GHg@_Z97WO@qb^0)+9MQ`QybJo{T1(l89`ygLNdDqS~ za)9QJ8_7P0a)_)KXIuXT<&b7!3DLvrC%PWO*r&mnP+3vnJ9kl$zwGgcAW#``eq?LeXyViz=jI>!=X{AO!=CxW|`hSo|F& zvkZH%`#JllhGKb8-{*##$nRMH!`%2)V#{uE!}o{3-Ulu1?BP=OsWyPjGi1#&;$BL0 zvvwKVH+@}?PSvY8I1z9pe+Oh5Ugh(8__VJk`?LRf zg_g8lN<-s^iqrLhrcQ+Xf%y;}eY8S|P61G%%6nFclg~&gyAR%2g`!RJjl9`f;<=*E z$=3nYnhgwxeyFIUQ`SGuo!WmGvJk2#O|~UpDzLmK!Uita>Y8jnf;LXoe*s#PHd7=Z zM%4x4yAUMP&w*`s;ISu)lDpm+(y%f0{&PEcY6O+B9c@r;CDogI1lCJ=wv*s_vVJXn z0M2l^x!`LnGzZB-7!)z|I$>y6v9uy9CjxPK^I66>#$m`-QB`K%=0gqIB@gDRtl5~M z{iDei{pP4^V6Zy;?KPKKLp$aDendPBO`wDI(`edh?oe81GRn2Bt~%I)(AIPNhw8~_ zeiNUrSi!{Z(nUnaCl-?Vt34OwT`AtzdbNfgX~H{(tz+#V^UCcypQK-NdD{T0uJb|i zXxT>nCB!&1j3DU^HG)PRpEMR3^*8jt6vB(g@$}`vIvPOqa6J*@*$5bU?OGi@Pm7n1 z1%`Zv>69VMEduK4j(3M5oPO`^4enu4H&b73-EZq(K)Vn_p;`QeJQ5^Viw-g01>YO1 zDWxY5ly3&q?+FI#R0M8;xJ7Ds8@t-oDl2X3H1h{yI#+$M$;F=DaQz(A7C*Ph{D!7V z^X+W=>tJxE>?eN=U5c)dTx>=nC-SEEW}mFblPC|LZ1QB4_h7wyEe>;2vWv+caRDYS zNL;Vot0Rzt-P$pTW2#Wa%<`%F%Rniw4}{kIkO9|jmN_5C!$~JzU{*Fxh(eb6E_3qP z4F_!y^|fJ9I}J+7r+b5d?m^ucm`0FP_=&@s%pRH4l~5TjOK|-<+5clFW~c2Xwyt9HPDKKbH-tRc;@2D0qgSr=>)InfqK&YzO=(Zu zaKxBsupREMO-H=(pLs=Q^>R~lbYsDq!F$3ZR1*1tL&rW+;2Zt zUmc%igzEuIoJ=N9o|y1xPmGs?xgLSk@8S6oG|ZR}ZmjdUtc}q0)1=pwb?wFDqZ3c& z)uIoY_&jijI%K&6+rx4*+59?YNj#s(0-+Z>wub&n~Sf@sg8=z8eVp3wVJS3lm7k| z*iF`Ch%FWP9+SBj`1hl6&EKx`qpE4P!4E^4TxVtS2jI4I*PX;r=!LBE?%Dc}DR~3% zi(SP6d;$@LVS;sEdT(NuLv>3o)TH|n-Ju2sGSNqYrwNU_B4@&?QP?|5JG(K@_SeWK zw~AfkihEps^1wTl=m7C|Dy2TUQwKmHPl^{(bB`y?F5Qwgkc@lmzxo*v3tR_48@46N z?KP)9wJZZ$8wLb_xz+>4hsfCLgjQt!Q)ibJZQ5 zN~A#r)-5ev_ZOahU(x_lOg`OrQRDiLI~&!d4RHD{D7Qlv36J z(v?m(wrTqPLwj&LdQ%U*9^pjj?CfO6q6yW0#Gwmke|%dD&ox|C>Z(4G-aEQD#v-6l zp*Sb81RLSpB4Udlu?4kO9c$R}D%c&GC7T3n5Pn({oQ(nj;46uV;XzVlyop%CJaz{k zYfv;q4HioPcGy^*qM_8)axWUTj*j)p!i*6&VGRhSUE~7i7 zQA)jlXmII@jquJctohyvL0&RzpyA2HYGcA_lJM`S7f?F>*zf} zHNPF5I5{Bct0>p1*w#9trQ)s}nWamlG=l7c1EnfR3g`;6j8c?BZ;({)!T8JL!()kA z?h%C^uqZgRJZlbHmsi2Q7Q3($<7`8;Kb`-WAif+?SZEbx4D@N1JHlxPFT;H$sw}x! z1p_NtX^!3nS|FS}pjqy@Z0F`zq3iH~@xik&rEF~7_zQ1Ejj7WT zitZOee52D=y}CzwciVeT>>|i4V(b8;ov~n(@A&(C@@d9x_D6@JFzJPY6dxQ6%@sB2 zn=xv>j_d@PGah+?=+OqOf}>XsH}$Q3qiyg!r)axFLu1^%4>pG?DHc+5`y@KSi9+dd z%|4)@s?_Z&{6dDc%p@4RNFFy9Hhx1~*1-iWvv!{KO)ZBO*qt+LAg{_?xSPHkLxvVK zf#`wSQi6$iyjOM~um=hDN6=`#7$V+h4TaLox4_9VZa@f3c%v$j_a-!px%_!@?C8#f zQeVRWTrK*q_PMW+s?{o2jj3xy*1kl6Uyt$(e-=_d1ihq2w!k>Z zB^Rq(jH>(nI>`d7-lU~qS6=ypS1@IV9j!#FZEJa1&6j*bT*x~^Y{=>n4m&= z_RE0xk48jKH#(XQ)gxQ7-K+NQ5nI~w=QF=dpXk=D4uVaSPz*sKhH2CK2M;MpnQu5w zdMK`7$fG)iqU|a+A2GxFfInkPD4a6Qyt@}7#O>hWNjruPnD=|mS*=$4g3gra4We?h zeZ4?;H);GuQNSn;`k5SD^|$IclzOgyG7b@z1m6g8cqFQ)Y0xFw?0Wvn;TP_cb>3C5 zTYthQDJ|fgeDYPp)hR+6k=15K0{h0+(U0`CpcZn4rf=9~CwH@^*f%r~h>iCJ0{Y0{ z{9Er(sEyy7%fg7qUn3s%tH6`ysRb8&0xoGf(CM6gY@$>kjx?e!&|ObLZup<6gi9+T zwHkL;Zfhm0@8B9OBI8TtlR2gyN|FQ<0a!Mq&wO8I_~Am-&uE(kPXJrbr~`xy-;HgSWnXJd3TXE?>IC zS9nt$=_XJ;(Bg-v@@xqd&^trAlqmOt?nlGU_+xOSI(=H&p=TembEpx*#;F4ka3(gG zjJJ$M9&~;%+q81Je(wl(+@7jTF!XTUq8;8ygqaw&9z~9lEy}2l^Un8Vib13edPR znL}@Ys8Vd4SJZ2V@fq)|MvXY#9(OvztcWulX5PntT+3 zaFP+^Wv<3mbkro7re7+OHPi7>Tsh_4I6sohqul4*8}w7}_wFv(e2gdG@mk*3ZE2MWf;y=j7!_3%5i*$cr*1;=u<)I0r_$m003^`O3s%IYmdza4RG z>4W%d40Hp#!jUjrrg)2hO*WNwZ}I`-bkOQR@70X@7{KGxV%5Hhj#oQ>JuVz(dF zRMM2pb&q-T>_j65wIYhz-{|*?8Lmf@xt@@CVy-$8s})lXZYHyKL){hlyL-ZTrA2)7 zVn=7*g_-&+L@nXby_+1npp?D4ZcPtyd>!IWLl^oE#h*;0Xs4CPj|??0b}BXKz;#;d zs&9P(kK)=+r)RHCNK~9U5HFt`e^RA$M0#;{#o>gu-V|jT6^iLOQ<)l|Px-pVK|T%v zWN!asm~O2VK1RlyE!{O^OLxZ_sRv17-i z?Tl^4#N<%{{J93+UF1y%+m3M&`MW7oOUqvzm67s&4eJ%AH!6F|JjthQ%m|{7(|y4j zU#?P*ju)8>@{+gmln0`ZerZ{zl1hfVFLktLcTreuu6{Iz_JmOucYq%8_@X@7J$im9h2Bai-CPv$JaUV1%|5kU8!|n&*V!7d*N2;=3a4 zGh|VALv#1Np4L@IR@2fn=XLow`n%4~a!MHahZ#(l==d?}#nujZL-;(O9)RtZ8QNf) zt}A}KGFC5AQg>+JP41Xc3fF2Om&(CEU`pxWzW*7if;406%G!gkTieXBvoP~6N9O6? zJ$hcHJuRy{)!SK{mc104RK$^l+0Ti3u`rwQ>Ut*Je#jD}9qWqsesWLmdZN8s4b@;? zQiok>10#|=1 zqx=l!k$RLcq=!u{Z)jp(YjDtfqBG&y_b8=AvIsv#1<0NWCDl0N=SPQdx`>F*p zRT#e-Hj_Hyk%IN6w-2bV9U9jg;+;8w+dBKYxWY>+bs6(~@M{uMGB8}ulEg$R+ad$Q zLM|$cc}OJ|AAyj1+04j}9ln?4i(6&n+852~?YPydP$x_QbYA@87uO1gthjXVC5urH z?uo8NmWvCClvH4NoDsU4)0KzSW#=%&f7cGJ8OH%oa710B*Evi|ZnrvUKELW)_) zAh@Uz6phL=QPVjChiNB03>xc4oImALNLwZcH}a=?8&g0hI=$y} zzrg4{^f3=^heB%E>m&OLnm^!$TT{O#&F}VxdJS~uRdg*m#cI`;ucWn@7>+2n8;75% z*OB|OJ!0@qn4v9c_esJ)e*EC{mNh{){^Y{Tin?>^3eb5~(sl_66Ux4icJi_7mv|em zPjVtG>mHCfScB8G36Kxw8=7Idar%s`czQNn5VZRBc46Yny%~iSAGC%c0aLku!DwJf z!E3L1*wdEKjOUvm9I+{SgLK+A)d&s|&I@}#e&ORY^E(bU!WE-l{cx#(eoK4DCxA}b zJPPq9_&g6aCB}3Tj=dbBnmlGjMLS{=RQnm7=uCV4=4!!Ls;tb1C#^}ZQi`{BcbR%a ztlhX7ez-V0%`LbM3~shcz-PG;5X3gG!CG|L@3+~R&5Syf0yv{sUNF%p%RM!wv@vx$ zDOHz$=qq!olr#)LsSVe^$``c^f8BJ^$la$J*w>G6(wNIBjB*u2rP)uAEx|M~gp?`s zz1O4cOGC?{QDJ)p9)qQYcJpmIYsSPDkFZ~h)ve2{sAi1}Stt$q{F!dh4CdT2Tl|CP zXwv4gk%o%&1jVGVE27ZUW=z`~eB7;*3@{K=EJ*olRNz*7qzTK0F_44htvaAgZ>mZc zfStM_;ByXHpJtfYt-{}J{n*|{7@D=1`?t>CIAJuJGm*?g2I)s1HCPlDh`;Q3T1Ppc zA~IT#3%ivn#}G1gwNaecWbNUAZo&HuW$ zo|RVA9wpa&={DUx;79Jf#w7u<#$$~j-2%&s(NDgousgM7p}Vp(&S>a#-Vw+NiJ{4s z+=o3RKL_jaNu4&l7p5mYQ1r+>Y&X7t|D%A-)VMOPVianSoq{g{gTYaEdMWFbu`#A;6Xg=M zW5&+ZqOs0_V_i$|X7Z{e*_KB!`TPAg5SV9_ZcAYLV|-pp!wp}RRZ5lFGar(RRo9hATLTk%F zRR2r4LzesGk$bchmoee*Kov!CthyNHOL2K384uCG#^OT^1 z2Ypg5aPl2qjIbGpeU7}F(#82G!ot2eyEWk}aJwo@2E1I>snxQO$n$Y+rfFp6HorHd zYpPZj)uiRnTHdgP_ODGk>zbAAxk;sMV`|Au5{D#W`{P+O6|wkU|_! zP1>s_TbP3jaHD9DS6O@cS8kE|(^p4tL|mCY__rzBb?ZqT?EDan2e{?2&~?SRD#fe+ zIJ7gXZYamk42Q&j{KNLiL@@e=T&?gw%O|`dy#}ZU(fG&0UDK4g(_t&(eC6-U2}~s& z0Apd@2lVhF%5 z`Mc$lXPl%U6QXy76buaw&GB`o(zD0KAMg5BGz~ip9k{s4-N3x-TCF^-;(|<8NbmPyve`p`}`?i^eX|&{2y>zDg z?8JH&0sjNf3SAF#tKAA!%1&{ghKv&`f%?X<)y-du z7KD)GqM#BHG~s$>^W#NBhnVbo#zrHkkI_Dep6)OQxBwMe>d%+fY5uj9IT2`3B;%az ziVO~xs?f*G4vb(d#@@XCJ@)mS&ej;U;F9(#Y*|Z8I~=y8!E@UiSIf$%ucHHrG$EtF zeG=X{OlmbzNWP09R)JeqD7Bt@V4vX!HP0c3oTRJC96gipUFFkaBCOKHc9 zZK9aW<7Z)R(HG3_+=5Q1DIe^Mk~o&nP}Nm$Mi2H&!ctSx;(TP(PE0Y>(N?;03nd( z07K=OkWK9xq2AlMY2D9wyM)z048bBlBS?c0dCYhoE}u>8hPYBGTh%lAD+aouxu}?5 zXV@a@vERW%a+-AfH=JSl+?67_9{-MCIjBVgcGLk}rhK~pSkJwfy43*z0Dw79Z7@x> zs$I+@daw&87kqncSzA3X2By!seb%%t96U?AoqXpg-h`4@r<~+}6wUoR@~+Dz)&^5n zMfcDK>7iDUpY-U4o8>4W_1oLJqXmU;lyt5o|Iw_ZRTe{MGXK(uV~Z-WR9U9zjlSxV zKRn4&kzTc19};z=2-F9R<4!Q+n#6+iA8vfVU#L}Fii2*{I5z8KG(7;x{uiIx#s|dMAZoF?iO&eH z`FG@o*P35{X=<1dhro%wmo2XR_PQzAc*%${iZtGeGbC)-O*5rb+=1ZJn~IK6C)&vxuld z-DtM;)65?{cy4^SzoA(XYHTxITkbm7|0tu-VZxisJS-E1LXo6`^`x1~vCb8!(A}$6 zPy%A-k{Dw#*DU0+J$O9AmAQpgue|-JKorSdd99(;JCKIQkyb)VILZj2>Qgh= zj#zZ7drZgL2!9Bw$(tFt8xm8t%h9zaRyxl}Lh6%t3gt(3idV%SC~MVE8un*M`ZdQP zds1W7$1k6NKx4qr!|V09@KRUm;~RH>dslT8QRj!QtWJYME2{Xf~Z^kBc2lo#Dc-<`0akeU30F8VJTS;zMXye(T-( zsq-bUM>bh=rCA`2A4XEWR}P040$?@olUgB|Q+oYa@A}8I;Q)I=bL5(Z{)dY{eeFkC zyI?~zDt5(IU#@q^bbULvQOL_tqRH3T*2HBtb;In# z>!18Z1<(}d%{q3*;UNd`_-r7sCiDUA4dB7k5jo-krY^{4Su=ZdQ{UW(n0#9uy?gf6 z&J$*b1D6o{TRF?4Mk4zWxlUCIH(A^NYwcP7QL)V`$H%}7_~W!nWzDd6URt|Vf<|an z1`Qd^(#&GO&1CPqySB@|N?(=amx<+(?b&L-Ari+E-C*^(hB_|Z253;=@KepZ-llu{ z2;&1FmkS0b8w)!Q{c{k?#rT?I1I#-7Pso0q%gnob4AMn=(pQsxJm*hjw}y8#R02WV z_Vh*ihsUz@516+i;2rpIpvb#=pavtnG(;CY=yLS906pUCTB`UB0lvRn&w^`NA`c}* zPWD7q-}1SB6VM*>%s0&mm9~H)DJ8t0h%CNws-EL*q3CU&6otoKobN|xe}><$RjUAw zVQfjIwu(P@RoSd?dX`WApDWI@oJR9am9i=fZ7O$`MN{P_tuxlfF7tuHGukpq=+q| zFSi<*eus9s%2_927t$z_*dGxwVf48OgMdMWMIh<>{z3DxYvpJ0gxQ8;u`PHDU@7^8 zO0liGu|q*G)h)(5!N+NN;VA0G1y9oqokBk==w3^;>ZU*dGqFQcMi zTkNG}&318KIMM3|YBsi2cBw@9;E7(Z-(VTnRDtjg7?P}osrO#KSTVfZj9<0d^(Vgo za!A5?q{TbH9|MF*64SX`<>sh;QF7`f^`8LkQ@7B~2BHl#EA^+=Ifsq1-1(iDsN+2# zL54qZS|tZ-EQZ#^(4a5Q zLh-NAKMJ5<(oU5PpVYQqR3Y5`F(NwYU!d#n(o#r8_*0+V=J4ZoK*x1qVdw(hTuW6l zi=n67H=?(1!^-oYHYqnlrR36pCj*q;4s`;+vVi{VoW-wJculb+4fKL2QkzIaexrid z^R-DpBHjV(YZyBPh)mcGHv<$NUWlEa_|l;dM9te@Yor#>_bLOQGSNoa@C7$34Fv~V z=*Cv|`0fiiT_4Hh0jQeJoqj{6lk&ngVEAgyJzdqjQD&$WJ1*L0{xv%v`v?F;$B4h~ z5I%&w%4eMKYY5(3es|4gO#Yr&0{d0Ln+?+zVpp0^zXQ2U)zN!I)2udMTgWA8LnOT4C+c4K~Fd$ zWXv*tgzK^Y*z$O~Sn!-leOLD(>}@m8BkT}=zgbUzsJ`I^nFn2Y zCQhhIw~cVUyn!;*n@a02}f*{Q&*b@$yYCnA-zQ=mjbBF?)_1u(I8V`BBBcjhnc;n+G&s%0ql zqC{`sLd@*E*Y=hesFxB1@Hmx3>rime0eRH|A~>MVyJ(SJ;P{|dw+4`OFD*_^_1=}uL+8RfHu zcg`wP`ce9)6RRde4a_}5Wj>sa`L4Z!(@!_$*LxBh_I`L>Xgys@`Z9+3bW!?}*LM@M zLe;gdoLW`H;?P%ribu+1tN9j)%VUtVuFzY=I1^xMsS`V2;5$TjQ-%BVw_ebNH&o@{ z6*ysGAesFL4G#_Zv3CUUftcQK)=S6G98TcKB-0zPZ$+T{i9F@S0`&2Z=Up_t|8pmr b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_none_sign_psbt_3_0/00000.png b/tests/snapshots/stax/test_sighash_none_sign_psbt_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash1_1_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..3a71fd4de3af763873a56f094a3b422220eb1285 GIT binary patch literal 13485 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash1_1_0/00001.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash1_2_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..06f5cd2006f68b39adcc41b08b2a540bf9801748 GIT binary patch literal 7444 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 ayCz*m73Ys~Q-G(P2CmK?Kh~Z>rTizv@AI($ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash1_2_0/00001.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash1_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash1_3_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash1_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash2_1_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash2_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash2_2_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash2_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..3a71fd4de3af763873a56f094a3b422220eb1285 GIT binary patch literal 13485 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash2_2_0/00001.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash2_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash2_3_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash2_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..06f5cd2006f68b39adcc41b08b2a540bf9801748 GIT binary patch literal 7444 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 ayCz*m73Ys~Q-G(P2CmK?Kh~Z>rTizv@AI($ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash2_3_0/00001.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash2_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash2_4_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash2_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash3_1_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash3_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash3_2_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash3_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..3a71fd4de3af763873a56f094a3b422220eb1285 GIT binary patch literal 13485 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash3_2_0/00001.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash3_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash3_3_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash3_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..06f5cd2006f68b39adcc41b08b2a540bf9801748 GIT binary patch literal 7444 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 ayCz*m73Ys~Q-G(P2CmK?Kh~Z>rTizv@AI($ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash3_3_0/00001.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash3_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash3_4_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash3_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash81_1_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash81_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash81_2_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash81_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..3a71fd4de3af763873a56f094a3b422220eb1285 GIT binary patch literal 13485 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash81_2_0/00001.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash81_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash81_3_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash81_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..06f5cd2006f68b39adcc41b08b2a540bf9801748 GIT binary patch literal 7444 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 ayCz*m73Ys~Q-G(P2CmK?Kh~Z>rTizv@AI($ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash81_3_0/00001.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash81_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash81_4_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash81_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash82_1_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash82_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash82_2_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash82_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..3a71fd4de3af763873a56f094a3b422220eb1285 GIT binary patch literal 13485 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash82_2_0/00001.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash82_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash82_3_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash82_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..06f5cd2006f68b39adcc41b08b2a540bf9801748 GIT binary patch literal 7444 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 ayCz*m73Ys~Q-G(P2CmK?Kh~Z>rTizv@AI($ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash82_3_0/00001.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash82_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash82_4_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash82_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash83_1_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash83_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 zcmeHt`#;nF|F=+7q$I~Vg&bPWXG1C^;Vn%RBBziuV;HGWjv?n$2j}A$EvHdSVpthD zES4M=Hm9*+4%e&q_xcB}>xb`k-M+VvU*@*$_1x?5d_3-_$BTa~O}S49pI~8O;WoQ| z?G_8mk(Vqitgks)fp>JRI%-&06ok#L8Ql&qq)rjDs&5eEU49tavW9R9vc^A_bpEfG zhn%OMJd=>T&dGb_kYiQLXB4c-`e50IH1-jspJmY)2~K1^=%YbWU3plhrw=>ZSXh+# zV~<|uWn4Of+ecFy?L;}fDY2YYV?PVR z?d)=|{Bjl2E=HU^c9m((7v~~q{QYE7BF|-Km(+4E%L*H7zEDTv@lmnbY6U#4zv-3L zC*_+N(y6W_MoeYxw#4BaT&#D!Ch3Sqe-k+Itz2Skp|Diy?CkpWM=rdRNM&1sdcmLv zYNF7xf`iac>v$`N!C>AKsk51%R*jrpUhPMB-K`tQo4O_ap3dBF%Iv8)j|?y+sMm}x z1!zMW6hgE?zyX!sGm5MyuUb|Ryj!Z5cPG?T8@DM!MjEUqJAtG8(9Fg}D}p+6znE~9 zO9J`Lw~N$OiV4;ReFbkyBEQW*y=4CV@0Tvr%I%IZr91&dMdG_Rg+{zp{EFk$c7oSaUf(;I!Q~&buW-`NB=jJ`0^B)E1#aC5mbWObL5NLlRUG)JQ!Iy6Y5CFJt`6#cbFHU z`iFTyg|$!l1?hR8W-li9bzSkca}msUPz$YJ=Wpfa6n|Qw@hb-SM(K=2r+lhwYs|DI zKYS$Fvq)0YLhT)!H$k09rAHZ9iJlRE(fx!BcOs}SaQT(euNqL)J}Yx6<(S)NFK`9Y z5zpQ2CkY?@O`Jc{%I`El@WfRH6l!ce!U%t>%tcLlYC+h>7_RQs%bj37DTc=aOIZ-2 z5QsrBM+F-x4uc{~wcU%`n3zr{csT#VkOZwQw{PDkUQG*_nPuFhl78*OyB7;T&7e-( zt%(h=GW%b@tZ=Bat)aq*6Cqjd6C(o=%FuNoPVm5@ud@$Y(d_zYs3TvG2Wm0u2Q=F~ zv#pEA5F*ya9=k=TjVSou!4E;7BJ0TL6?$2UUuGxnNKY}+B|B@WPjQH>2?TcpDGsR6v=E>#5GB9 z_BYio-@PCf?~-3meOM4NlV%e3EpQXfB$vd93GKt$2bb|W4d^8XgOLoMaSgcfd}or| zPAbd2^==)%5|4pc#k1UosW(Q&$Icpmzbp=1p1IOL16Q40FfeD)QygCC4A~tSvthA? zaEPV_YTLYYT_oVfHc>ywbp0|981D3U^FPwGbZuQ_l4-4ot9YBFMEu`#M%g&K@qoSR zz3=~0YpBds@2z_G3ws*4W=c-rRHsz$pQ!C1K4TkHhVb8O_Pga==B2O-N`5PcQza8) zJ*qe&Baau)a0pMuv{%KtcM0@r?tP^jH!Y-Vp?<6VgWaW4(34zAv*F=i)h+Z2@_uXk zk#Y#?gCoVuBgo6#%V-+Hkn@QOdXbxSW`-G^?QWml7wmjfY^&$zNWI_;0eo+C^@Ur^iQh14A>Cd1wB{WJ^A z-hHiEnqM9CkU|I#U`6J-U`d#copQNEp|qC#{hORof|JN!@M77)TbV1XC?(Dt$0iV@ zu=c6*hz3aY9VGD74*O_Pw-j>|TOH1B*7|W^5l!X!foFOCmiFN~B4)|wk#xm?eDU$x zqa~ju9HBY+!p-lvPsZ5S*=8!320f5_mz!Na<%j;7luz|g?FK$d#mx`z1jHG@+UmxZ zg?wEQQKT-XhBPaVl4mwo_KbCF@gnH@Wx`_fl%IfCcYjlIrja%$_(O)Y8DX=<{W{@Q zJ@ug!@|z^CNx;K4zZ~TQ-+si--`1&sx_utyJ_O8zd!9&fu{LuxD)j;Q5;+?5$#3nOVKkYDX8C&xi zr5N+nUc&G3U;p=n@i}Tw4Bpzh2smVxhPNW+}Pm&Rt_A7;kiXB$NtwfgT0~9ytBjV7V~LM;4(p@)6G`S75rC+F1Q^b_Pks! z-3ZH&W_xF9&Bt!!=`!FAA5%hFP>vbhbs&q)$XY1fbwNBoSN za*#%@41K3{&~`e0^+$P@@Y{J1Oswak+*b+1ze3xm>c?t2XWuidgT0-}>ECl6vN1`? z4;&iq(6Ve2nocTrj9{VhtE;R3R-%Q<6AA4@7mmsaru*PFM!a`@JscvIwt#Fjmm#Ff zJ17c7t`{Nj^)(SOij`(Z3U}i&4d_`KRgAm`x%(gO%V;;Y_rstviEknJ2HJGx@P zruCz-qF;(#LA_+!PDH1Zq5#cCx=_4z;v#Jjaoc$!WyR7FE7rLm?3VWMa0Nlq>s4=$ z%j82aNt6eHU2Wsl`KyYa>}Z3qbXK`@KI{VV>KF7ISP z`D$f4iV3?mbh0)*SRFggBvbw_4D(UG^IEUPf3Q(Wfsx`vGH@Jg5q;v7e?w`Gu;^Cu zByX7zrc`L?#1+X8g_`yBJJ_Vnj&nJO?P>{Zn`Q@OnC%CZF-#oCfSTO;QPGg1!*vyP z?Y*>_8yge~bft5~>77@y72b62?B+M-bT)d-fh_J651F#ubj_I%ZecaggaQ|w8Y%ByUuV9p1%-W^D@ zavV!~Bql3QL0Qt?xgEU3xuxMZ{ZuAH<$?|C`0&l1eJmbGWv-a;2H$*-PA7lO0-(8p zjCs!|;n#y&-Ru{@9*$$i){oFcpqBY&$>!T^(^N@w{OhLpd5V>NcHRk`A3C^xQ%`sG zDySIaSrn3sx^mWzt;iw!k_o6c2vvGp=H}6Uzk`?cJMQ*h0v}n*Eo7~oDH!}RpwIb4 z+Dv-W{RO4nK;YG1al(5mh#9N%xTbpYktQtjTQV=kw<`dZD{h;&RH}*u-J<5Orx%Ut zj8GkYr@#BK;tJ2@cYB9{|InOO=IEk21Bq{y+pDHdC|b$OC;kqH7_=PmdE6@hnbrZu zeQ78$W;b$Pup8TgwQKAsqCevm--vQpULXfZC`XY7h=*mPQ4`8h9;Kc7F#9NXb4g{oYe+68Dt0`qswAwtQ8%tz7uOdlM#{A`sUiw z;avHQEj@K3uX&D6Io7zsa$%mj?Gb;#%#N&`0|Qwk=5RWC=n|MzC#qt`+sfv*R|g$> z$=0dD;l~|`6dd|PogLIs`g74moVm?7aFA>{8O*r8eZY*SNSkdy@H7ZcHTeEL&vg%R zS9;*48^j~@ zDnCRX8{1j-)W$yp*@a@QPQptCVbs^OBV6a@vK=Dle^y5t@sC>jc+c1O{Z+vBz`BaFVAmink~W) z)uukqO$+bbE7sP9>`BQq_lkDyh}qZB7Pifzy_}DH`$Moiek2NDjQ_{>)$3aX^}9~k zipt8>)w52txEvJes@eiId_w|>@gJ;lVNw{8a5mTca{9^4>6dTcF1?;V(--b}p>(n# z_K%z4TALN9mn!=s2JO^5({cQFot#27{|NHH)rl^PA4P-)M(e>3UE3f0W@0*&e(d?i zFl|KwKUC(%cJBhMVuP*)zfG@6qTOp25BKR(-we?HS~EvI0`MvhI$Dd+?)y3R?So^i zCzU+9-hPowe9%7CPimhUIu3@%eYWCTaY;<9X1#NKJ@vQtdtz%j<~>JAqHs2OAI|du zaXVM*sj2k{yrxh8hy}O0H zmVkisZfUv~=j(1?Z+nrJr2i$NbEV*}<5+SPjZK0!p?xyGf1X=ddYB=3ZysGVep9$q&th+r-k@CA>I=4+HTEp9pL?QvKBFdnk zgoVIcAP>>MZb9r;}1n5>0hIUEhy#(KHZLQ1SCo{X~bc{s*LY0Cm{0i954lB5X5woUnYs1VPk40+=^QUr~y zi^*flqhe#r5wXk;ix_mghHLPi2m6nhf#R`g`?w+{suTeusNSUNe`<@qwh*_7StYjD zA}UMp z3J(07Ev7(SpxCXFc4k{&4qfa5W&hDl8K3ZqS8U@u-$wK@q!$azt1f6~ftj3(d*4^? z=@JY^>syYun;@O77|L8s*pMmf@`{Q2#eOF&N^3v2JHJ^cT4xgZrFwa?*=Mt5Y_f!* zkv=|PIWeKi%N|P@no>_`J@I4g%y&>D!tuyt=D7^ecI00{?du4Ma^*_4Ur zLGj_8PJ==Et^|=xO^!c5l(P|gVNQhggP$!IBgb<^HZ!Hu{k{RR0D%BxOYiz+|6}c3 z2xg-`sjZ&Kah24wq0B{W^|GpKm}h?EUx!VPhF+4Xs`f?`0XJr%H6%V=m+q`9b%)3MMTX@)$6nvfYQAE<%$5 zpUbI1Tt~`oP30!GcT_F44cIbH1!AQNYnwIXH}NgXC{(IpJV70BBCk|eR|Bw|~EiulmGNapaG(RS%obu-@JyCd)jy-^!xDt>%3H?dn7XRyt2O3X$wKjIMp;ph!O z3+RZ}EbjvS;|^V&DQp8sx=<*z==gSrtoJ0Y{krpnwQBSe{Pd<^n$4$1%45Ml1%C8N zQ*SM!(*O+*4#|s`CP%kT5XAAtuB2N^k&<}LhCZ+E+!VX)c>u9Nr#v2){M-~YaklvN z)0221XYcdWy__=P7N>?gHBd4ORot7z7<8k;C;I;jz5UWb>5Y#_x$H z=Jf>Xe$H>?pV-WOQM?jQcz;QMx6tXUWyKrqR20~pFyiGXtYgZ2$q8U<69kU}qYV8S z<1ocFS+gKOq4dtK=|3z_{T4=isWUto98wPI4a_fJu-2qM{fD2j=qCbyI?ecyGVT;> zpDknd!2dHng`K9kKUKVop9ZEZ&8S2!ambb3 zej)acR9K{wbDYb#6B}FXmcF0VsfKP$inc4^tR3$6t2HJ2Y|%7RrWOkEH0dXlgt_kN z_n}1HbTMIc!U5RM0P*aY3xSB?$-$n_rOf~mX*rLzN2#2tTfzL1?<DouH&zoIq8R{o+&8T0iB|+i?bVndZpAF z_1jjNW*OS=((;nPwX4h~B)!|3FRyKB?MmK@ToXomCKWU`zRIv5fYMB5IozctPi9H? zCA6Hw9BkD7R9tAf*G2if)U7jeT}@US<#TvjjzdpWOdw7?C6 zLM;of*YR7bp^gRoitR$tXkuU5d%}iH))RFL3&gclI>0H|h^74=lNCgbChUyF8!s(K zftYL7>QSjuTcch|WOcUI4w{Pxq#RY|9QqD^7FPAmzmNScbF}a~ zK|O0Xb&itUsx2gasNrjcx}AupJP zc@wfTg6wW|`m5Ps$Iw|e0o)vRM#>)3NkmaTwsy$MqY87wqRRr`Oap}R2G#u8t)sb) zj`?*Bt#_;aVHGEOOI?HL4$~8O|5{RVcSK$jc)sxb9@e2**iSPezO7!*$}%BR3?9?8 zFcA#*wC3xaGpQlH=#CIFyI67d+hdIG^Sw`a%#`VcaeIrGJPE;{pHTwR>Nv<77YZM0 zy4zZB<1fEsCbgu|VzVbn8 zhKQY<4dP1^XKjv3=vgMV3CzKY+p&#shR?15p142v?|h#5e=Ir2p1lww+MA&3Bn6Pc9j#QGCp%| z?r#iM&%E%D19pdx;f(+I<>r)<+2n>Vg7!#H&@eu?e3dyXl~uTVq>z{Oe-A>GVM~M0 z{<8TVU-lUCd||YV#VJkrzi)bEZyD}n&DWrKjO8bzfea4>b+rky1c+BW`+q#QQae_; z+*VzECxi$%iFBAwu3%CsY6tMSa z6Hx?m+P)ztHehI>GoB3xlBAyiY2QcQyQ<4zrq4#-vvBtHc!KAw)lQ`*J{8h8%fMuW zc^K)%KO;zJ|Fek9c`)~PogxuG=O$qGqn@1Z!{W~jxu2E$Mf(|K-fS~g_pPL2u3{+ zBIf_sI@XW`JfXZKHPNbuiG=!2&71yd5}a<_#4IVbx$Rb^rfFTR!o1qs%ZfQkoux&F zw_Sg*=$^6b++|%3YRwI3>{`;huS__OMf!ggn$;~+Eg^O-B{|4Ya27V7fMBfqy`fg9 z%Gp2kkoqwn@+L8^uW3NuEx+8OqDX~d`h(aVAAG^5et7((h8OqivneZ#(a?Ro;bBO$ z`{A_$j1E1am<))3co!&?t+W11nok?6PQ^J`%kOE{LFqdplj861krH|WAC+7M67X*% zYKZOxHmtrxMGY|=v0U(o&lms|DP2%_6|wiTq#)0FP#i0?et8&n_u}*o&g=( z8VPRn9H+uE1Td?;fuMs%K+M;AnlUD;tAU}4>i*J<+vRg_m$q9Cy*g9!D9pX)C>B;9 zVI62XBBYB%94s3ipMw_{cHPXUYzGdWxdqKqn_CP~jVn}VnC60nKC~Tjwr5q#ozQXD z+`rTd5W8hx=ce*U>_47_cMQ0dPceX-+JZo}o8#hqffxc!+>a({4X)4T)Bf?iUbUMi z+?%Gd|A~s-SocIy7)(G5->suWlj%Aiq70%}tnT_FfcC>tOm1no?QGDdu_^Q?!9CjC z!k^9MNA;q4s6h$!l&z|rr))e>7HP{?a|2 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash83_2_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash83_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..3a71fd4de3af763873a56f094a3b422220eb1285 GIT binary patch literal 13485 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash83_2_0/00001.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash83_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash83_3_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash83_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..06f5cd2006f68b39adcc41b08b2a540bf9801748 GIT binary patch literal 7444 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 ayCz*m73Ys~Q-G(P2CmK?Kh~Z>rTizv@AI($ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash83_3_0/00001.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash83_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_segwitv0_sighash83_4_0/00000.png b/tests/snapshots/stax/test_sighash_segwitv0_sighash83_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_anyone_input_changed_1_0/00000.png b/tests/snapshots/stax/test_sighash_single_anyone_input_changed_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_anyone_input_changed_2_0/00000.png b/tests/snapshots/stax/test_sighash_single_anyone_input_changed_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97524e00dca3fe77a170d83b3dd8dc72e7f7c98e GIT binary patch literal 15636 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μQi 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 DL|>g2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_anyone_input_changed_2_0/00001.png b/tests/snapshots/stax/test_sighash_single_anyone_input_changed_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e72ba2fa664acc6811f4636b7c5c3475b004d098 GIT binary patch literal 7472 zcmeHM`Bzg{yGC)Kt$?-_6a?g=Vi_$W^WacOQ3fd@AcUYY$PAJ&B!oDXv{1w`lrc(_ z$RJ@1kPr|lMo0l6K!gy60zwipFePLlxyOF%-hbe(Z{4--?a2>&t&_da9^UtP&ig#) z*NfgD^)Ge4R8dh;_xSOLpHx(~Jy22E{!DEJ-@o;c5qPY%TS?NRwP9N#a+9HW9LYAjHQO>T&_TVN~ zLT8*$LWEV}BtrXb(!Kv)<<&jh?OQnGea=(nR{HB74_)1MRZVMecG&-^MlK*02NM|1 zuCJ?riy3MpOqsL`gn?V)5gdFx^GmIyX5HPUl~pm;I(iiO$y$v~Lzkn0b1Q+xw~A#? z!oXFv-16gn4NmZo)SgFP^rm=6oxHw=_SvlMV%T6&BRB}ntMGaO*lOd?N7f_#d;)M#E zm-VlqCRZ36nJy4BErW@G8QoT&y4BXr@xt=%g5~p#O*!R1HX8gyEYUv;6-(fSd>I^( zN(SrP=!EuGM2~SdrXEFyRWI#V|ojex?j@m3R-4in0a_Y@FsTRcYq?4&?!N_;%KPuFA{!dZy z&b*WEyv0UeU~m+bzvL1>tf4bju~j}wbJ|TOeXO)xoG%caj%V^y$?_J|ySZfP$$A5E zm$_0n+QN(%KesCM^xi65k)!8!=_si0$f$jN*yDo6@i+zRJq+blO;)WQjoHjeOiV<} zgsZDJIbtwofkvZ6EsOTz71l#kfl@O;LakMZM5&zTR;AwgwKs>(y)>g4+Ri353Iqbx z0QqfwlfZL|E1WnRvLr!_K%oSv{u0k)4A!i{2T*0K=*q3)zi_d1*6{;8ZhqjMPi zy}6Z5;jOlKW@c-!|7hi19xj**2^0Jl=YmaBmTZMvc?AE6M`svdXc0je7HBFyP4)rc zC33M&J{8DGSgAOb%o$$el6RfDO7Nn9F7Z>HzZ0Hq#{~(MPeZG?s%-8^iKp+sZ zX@#i+$(5BSwycYC!9tqkK55-XH8_&xVUW*XBoYCk4W==f!J+kLv~E*463N@eU(WsL zMrPp z_=0$Jb@?v)a#x>jWfez=XHms3jkAH1$Olto6RB08jN9GY?q%7ZJ~yzNtofe*@LAYK z`h&2AE(R`thJOv%ZiM7i7bjtUBn9UfCyxkL^j70rA|Bzm3htphr8-Dg&Tw~iW~zOu zH~HZH8vT5&n%Ttub+SiYcKG_j!oo6L@agjy&17($g+qHE`cm}OE}f+_$L^;_-2^*u zBpIYegts|e?+?9>#lHiD{Dq⪼i1o1QQtS>8R<~2~3;(X2?n;%|`@ms%*P_OJ?f| z<(se4)nACg+*`5($)(F zm@4x_n%x(k zasNI6gAK7@nsT9n&c0TEpkpgngFrIA+ky;}@0b>=ald4^M710>l0v6bZT#`ai zwb)+Cb)bx>ClAez0*nCPai2P8Xz*v)pxF7Xj@{Yh*0F2#fo584yG~i#Sov`dNwFmp z18{lm0-Ky$3w3gBUBI?WeeDm~JHx=PuC4?Imr}?FEo`f7L|2=cU# zXLp}Am|$Z$&%M9M*U58dU#geA=Voz)YqhpYvTVT+o!#z(>NZ!-kD`H<+B-*0H}zhx zh|(mi_J$R;WDZ$8L{1yk6c>Br*+=S+=kQWxJE`;Rxz?UG+p1k1|26dY{z%DD;P^{T zhJ@YKe7k@k44P2DVp?Gb=`KEaKin!p-!PCx^-@+(zWheb<&_z2y@`FWi{~AC$fZF9 z5D+l`Qe^q!b1S*9iu}-;G|`yk9W4Da$IwxJ*Xa!?g=B==!ge1}d{I`MX^od{d*~-# zgJF-#XE3N$j{P=g>@qvcL^!gDC10V?znC}#rw}|LI_+0 zdWR^TooUQu&hh1Pf{9K!`AjKi1$h@XHkFc|7}p$?DtlmQPx7x*=w%8vhbRux;HBF1 z^#?-EXF}H8{eDe*U>Tgn2|xk)wfD}c4|6-X%LSRns-2H`*H+<@L$(qOG^jE*K;E)DRJ_q53Y%>sc$k88wqM{)C&xYut z$oHP*ro^}nKF7`XNrb&lo+nZ|pl=iSW-ddX|4BvjT-~h`JHAr;r}^gy{>g%Wfbjp1 z3+7PbsoUrVRsxggO#T>dbuiBzQs?S=8O-2rkdEh!#=r!~SpYE+Yy@m&+@E^IN+<}m=a6cvINs!Uyf4Pgfl3znsVP2~0Sm$)eDEvj z@&)qck5j7AzbtkRX;H3*&%`ep?cffKabaKv>$$YSEUGa`d}i9ZKhwp>*oC%W<^27l zs;U9~^Dova+AHyReD{7P5o}SwT0{k59`}ZaeWMv*kmpWkLlZX)8IKZ{Z&;tVC6a~d zP6O1cEnAbsBbp@5$>kwfBOq&uJfM){hDnd6CXPTIkahKM6W=yvBd%B!M5ni!(LRgr z&*jY*DKQf3;}|WAobp<(-&aw%p;wNrm@$@aZ1LbCd#|OkDY|IkW*aMEa4Lt-iJo@H z`NsH(qchpfFMeLzm0SLimzvSrXv=w`=npkvy|NZgQ+(NPxkL|5P+%I}+Dm_yqtOji zYItoPdKFBqODg-Yf^wiIBkxO289EAcWZQnQnm)uo%pU)52_xb8h__TJJY1HHBFYM#Zps#IjMpoubRw{z!JZF-(*bJ05#c zny8N;O{m)zCyZRRpi9D-L^6wSMD8=}BH^L>$?G5x))kHRmB?dfewRL9f8hYPdaB_d zZJBJ80yXRF%WP0VC~Zh=u$rDRs8}cSA`uCfNFRb``|Xdmcam!9$>&p{^?r*HfMkDM z#69M--X4UpSVkSgW6Mf|L|w6xvSAneH)}Z8oOE1=Juqo^iyGbV%_#apfa9r8L<_92WCrVS(N%+QuZcZ+0fKQW>-YtFDnrZI+-Y9`=cPVG#mYV z!Rnc6tVbRH*l0}R*BA5ssE6766`Xw83w3>G&mXl#X-7ar)Vs0WgoWad7gDAc_c|&M z>>*8$&#tvcy$~glE@nLj!k$wJ1^GRytwqtCs|Od?04bQ@L+HQ|o=`_btI$mhWH7G} zJvfO8V|lsQutQs!JouevG2L3V`he(QsUOuYy7qdJ$~Yx+X1C!Q^9iDQaeSUFQFg_) zt-B*HPQ(>KFc$U>ZB35iW<&tVro9Oe^B!1MTixtgq%+cU*sk*vClO_X)kR# zM#moa!YK(%kwjwe0|zV-gy6xvE^PCHSx$LX6*<$KdOhVH%$BXYb9l|XKki0Rq?5kb zsgG_gwsvzF1rRd}(QXVhTYX%Gc!BwpQepJ0-8kB1{=uShmcuq{cKl8`$GFMPlm22| z_puZUi+S}u>lILA+M0L~)?oXvvw#`0qEAJh@_KBrfY(~eIwU3~#(reZRDO>W2;^9$k3r0bzpObJ7>GoI4Ur&Szjm}v>+D&9b=JvblT${O%eCH=UNd(HsY-4|X$1T6J zhxc@Cf4jHlfQ5tYZBWD>(_8Cq*5awJT3tc^KGSohv-~)b$)lvH&a^85TdmNOPtjFb zv_HDz?OwBgE$H9h)W~iWRn&43f}Ps2%rQ&;eMOo;Z?j{92#8&DLB2b#stRxf;WR)L zOC)W_b9%!Y#^Y+I-8#k+T4XYDqVKl=l{Q~tA=0w`qsyT(y6DMMV8}$A4I?79h4~Vd zDT;+LiC*+?-Fz_%H>^psZ}WL0;D?YmtBDT?M8M-o{*%k)jw1wsmLZwrhhJZ=E*7LR z;%qL+?2G#o$inN6uz+?71=(+T-|x`X(tyv_&jo3k&f7qX0`~q*Hk-}k@rKne`@?#! zOoD?jS;^v~fp?)kTL3rbQvtC7uySxU-M_sUvcQBCEAo@$;HbRO2|X=qwX{{8a+P z-=EUneu#n@j}wVR#1#>ZtWLX>42-qD4OJX6621UndR;+H;U0nOTFt)RID|KDFz_wU}8wwa+E$d5P zjXpr!!tLO`@aqB`t^Q=TVrfKjcFNn|ACGCj#-dRA3eq5>iK`Z~l?k7mOMq9+uPlm_ zLGHq{w3ao%?SsnDjsTa4Qg7N6FYM;+XDA-ZUN365w2aFwyu|KcsAkfWGvc+P3dshS zF=POPl&?*e@PBsmz2pyEV1{#JZ8o78znxcl8LDYIzznscfjEc32WY= zP@cg<$Kf@;0t5wB5}EN15d&-HXo$?1mFQgDFFO`!JI{@^HdM3VGh_OCrocm`g`>`6b|ryHt)=Zr9Y@fI2fI1m>VusRXa5G(<+Zx(N!3F~ z1C2L!R69cIWlxqQchFT;tMX;PZz|9=vc!+S@m@G~ow9eJQ&6*tFuhWpvJR^_fue1R zEmbI{QjWo(2?5H_XeW<)rgf2u{NBbwcV8x*yfJLIGD}7`jxTR)G@~j8g|O->02|KI z!d41F6`&>r=#aA@5Zsi6>FDDpiCyfH9;bd1PW|qA3^2$uj4er@Q)oCcKMPamhYeW$pG_=lFT1Qy9I5k1x}D(tf|O`myBetY-cXAb~-b z+YW9u48NGUaPPZxl{*`weGQ&Q4IOdX77=^6)$DIW`uF|&KEKH!R!=THScvzq0KSB( Oc({50P})CeI&j1Wkuh7bsX@AkfDo|*IIlzGqdd^smyGJDNlYwx|<^}l}qm1J#cDsV{R z5C;c`fZ6qHwj3P${^H=^e06{mDABQMujb&mkY#r5ihcOYWfHx)_y#V)bzZuFLyen% zpHbIgm4E)!xex5S`rz=JT=1-(Oq!G@^wAeE2GHg@_Z97WO@qb^0)+9MQ`QybJo{T1(l89`ygLNdDqS~ za)9QJ8_7P0a)_)KXIuXT<&b7!3DLvrC%PWO*r&mnP+3vnJ9kl$zwGgcAW#``eq?LeXyViz=jI>!=X{AO!=CxW|`hSo|F& zvkZH%`#JllhGKb8-{*##$nRMH!`%2)V#{uE!}o{3-Ulu1?BP=OsWyPjGi1#&;$BL0 zvvwKVH+@}?PSvY8I1z9pe+Oh5Ugh(8__VJk`?LRf zg_g8lN<-s^iqrLhrcQ+Xf%y;}eY8S|P61G%%6nFclg~&gyAR%2g`!RJjl9`f;<=*E z$=3nYnhgwxeyFIUQ`SGuo!WmGvJk2#O|~UpDzLmK!Uita>Y8jnf;LXoe*s#PHd7=Z zM%4x4yAUMP&w*`s;ISu)lDpm+(y%f0{&PEcY6O+B9c@r;CDogI1lCJ=wv*s_vVJXn z0M2l^x!`LnGzZB-7!)z|I$>y6v9uy9CjxPK^I66>#$m`-QB`K%=0gqIB@gDRtl5~M z{iDei{pP4^V6Zy;?KPKKLp$aDendPBO`wDI(`edh?oe81GRn2Bt~%I)(AIPNhw8~_ zeiNUrSi!{Z(nUnaCl-?Vt34OwT`AtzdbNfgX~H{(tz+#V^UCcypQK-NdD{T0uJb|i zXxT>nCB!&1j3DU^HG)PRpEMR3^*8jt6vB(g@$}`vIvPOqa6J*@*$5bU?OGi@Pm7n1 z1%`Zv>69VMEduK4j(3M5oPO`^4enu4H&b73-EZq(K)Vn_p;`QeJQ5^Viw-g01>YO1 zDWxY5ly3&q?+FI#R0M8;xJ7Ds8@t-oDl2X3H1h{yI#+$M$;F=DaQz(A7C*Ph{D!7V z^X+W=>tJxE>?eN=U5c)dTx>=nC-SEEW}mFblPC|LZ1QB4_h7wyEe>;2vWv+caRDYS zNL;Vot0Rzt-P$pTW2#Wa%<`%F%Rniw4}{kIkO9|jmN_5C!$~JzU{*Fxh(eb6E_3qP z4F_!y^|fJ9I}J+7r+b5d?m^ucm`0FP_=&@s%pRH4l~5TjOK|-<+5clFW~c2Xwyt9HPDKKbH-tRc;@2D0qgSr=>)InfqK&YzO=(Zu zaKxBsupREMO-H=(pLs=Q^>R~lbYsDq!F$3ZR1*1tL&rW+;2Zt zUmc%igzEuIoJ=N9o|y1xPmGs?xgLSk@8S6oG|ZR}ZmjdUtc}q0)1=pwb?wFDqZ3c& z)uIoY_&jijI%K&6+rx4*+59?YNj#s(0-+Z>wub&n~Sf@sg8=z8eVp3wVJS3lm7k| z*iF`Ch%FWP9+SBj`1hl6&EKx`qpE4P!4E^4TxVtS2jI4I*PX;r=!LBE?%Dc}DR~3% zi(SP6d;$@LVS;sEdT(NuLv>3o)TH|n-Ju2sGSNqYrwNU_B4@&?QP?|5JG(K@_SeWK zw~AfkihEps^1wTl=m7C|Dy2TUQwKmHPl^{(bB`y?F5Qwgkc@lmzxo*v3tR_48@46N z?KP)9wJZZ$8wLb_xz+>4hsfCLgjQt!Q)ibJZQ5 zN~A#r)-5ev_ZOahU(x_lOg`OrQRDiLI~&!d4RHD{D7Qlv36J z(v?m(wrTqPLwj&LdQ%U*9^pjj?CfO6q6yW0#Gwmke|%dD&ox|C>Z(4G-aEQD#v-6l zp*Sb81RLSpB4Udlu?4kO9c$R}D%c&GC7T3n5Pn({oQ(nj;46uV;XzVlyop%CJaz{k zYfv;q4HioPcGy^*qM_8)axWUTj*j)p!i*6&VGRhSUE~7i7 zQA)jlXmII@jquJctohyvL0&RzpyA2HYGcA_lJM`S7f?F>*zf} zHNPF5I5{Bct0>p1*w#9trQ)s}nWamlG=l7c1EnfR3g`;6j8c?BZ;({)!T8JL!()kA z?h%C^uqZgRJZlbHmsi2Q7Q3($<7`8;Kb`-WAif+?SZEbx4D@N1JHlxPFT;H$sw}x! z1p_NtX^!3nS|FS}pjqy@Z0F`zq3iH~@xik&rEF~7_zQ1Ejj7WT zitZOee52D=y}CzwciVeT>>|i4V(b8;ov~n(@A&(C@@d9x_D6@JFzJPY6dxQ6%@sB2 zn=xv>j_d@PGah+?=+OqOf}>XsH}$Q3qiyg!r)axFLu1^%4>pG?DHc+5`y@KSi9+dd z%|4)@s?_Z&{6dDc%p@4RNFFy9Hhx1~*1-iWvv!{KO)ZBO*qt+LAg{_?xSPHkLxvVK zf#`wSQi6$iyjOM~um=hDN6=`#7$V+h4TaLox4_9VZa@f3c%v$j_a-!px%_!@?C8#f zQeVRWTrK*q_PMW+s?{o2jj3xy*1kl6Uyt$(e-=_d1ihq2w!k>Z zB^Rq(jH>(nI>`d7-lU~qS6=ypS1@IV9j!#FZEJa1&6j*bT*x~^Y{=>n4m&= z_RE0xk48jKH#(XQ)gxQ7-K+NQ5nI~w=QF=dpXk=D4uVaSPz*sKhH2CK2M;MpnQu5w zdMK`7$fG)iqU|a+A2GxFfInkPD4a6Qyt@}7#O>hWNjruPnD=|mS*=$4g3gra4We?h zeZ4?;H);GuQNSn;`k5SD^|$IclzOgyG7b@z1m6g8cqFQ)Y0xFw?0Wvn;TP_cb>3C5 zTYthQDJ|fgeDYPp)hR+6k=15K0{h0+(U0`CpcZn4rf=9~CwH@^*f%r~h>iCJ0{Y0{ z{9Er(sEyy7%fg7qUn3s%tH6`ysRb8&0xoGf(CM6gY@$>kjx?e!&|ObLZup<6gi9+T zwHkL;Zfhm0@8B9OBI8TtlR2gyN|FQ<0a!Mq&wO8I_~Am-&uE(kPXJrbr~`xy-;HgSWnXJd3TXE?>IC zS9nt$=_XJ;(Bg-v@@xqd&^trAlqmOt?nlGU_+xOSI(=H&p=TembEpx*#;F4ka3(gG zjJJ$M9&~;%+q81Je(wl(+@7jTF!XTUq8;8ygqaw&9z~9lEy}2l^Un8Vib13edPR znL}@Ys8Vd4SJZ2V@fq)|MvXY#9(OvztcWulX5PntT+3 zaFP+^Wv<3mbkro7re7+OHPi7>Tsh_4I6sohqul4*8}w7}_wFv(e2gdG@mk*3ZE2MWf;y=j7!_3%5i*$cr*1;=u<)I0r_$m003^`O3s%IYmdza4RG z>4W%d40Hp#!jUjrrg)2hO*WNwZ}I`-bkOQR@70X@7{KGxV%5Hhj#oQ>JuVz(dF zRMM2pb&q-T>_j65wIYhz-{|*?8Lmf@xt@@CVy-$8s})lXZYHyKL){hlyL-ZTrA2)7 zVn=7*g_-&+L@nXby_+1npp?D4ZcPtyd>!IWLl^oE#h*;0Xs4CPj|??0b}BXKz;#;d zs&9P(kK)=+r)RHCNK~9U5HFt`e^RA$M0#;{#o>gu-V|jT6^iLOQ<)l|Px-pVK|T%v zWN!asm~O2VK1RlyE!{O^OLxZ_sRv17-i z?Tl^4#N<%{{J93+UF1y%+m3M&`MW7oOUqvzm67s&4eJ%AH!6F|JjthQ%m|{7(|y4j zU#?P*ju)8>@{+gmln0`ZerZ{zl1hfVFLktLcTreuu6{Iz_JmOucYq%8_@X@7J$im9h2Bai-CPv$JaUV1%|5kU8!|n&*V!7d*N2;=3a4 zGh|VALv#1Np4L@IR@2fn=XLow`n%4~a!MHahZ#(l==d?}#nujZL-;(O9)RtZ8QNf) zt}A}KGFC5AQg>+JP41Xc3fF2Om&(CEU`pxWzW*7if;406%G!gkTieXBvoP~6N9O6? zJ$hcHJuRy{)!SK{mc104RK$^l+0Ti3u`rwQ>Ut*Je#jD}9qWqsesWLmdZN8s4b@;? zQiok>10#|=1 zqx=l!k$RLcq=!u{Z)jp(YjDtfqBG&y_b8=AvIsv#1<0NWCDl0N=SPQdx`>F*p zRT#e-Hj_Hyk%IN6w-2bV9U9jg;+;8w+dBKYxWY>+bs6(~@M{uMGB8}ulEg$R+ad$Q zLM|$cc}OJ|AAyj1+04j}9ln?4i(6&n+852~?YPydP$x_QbYA@87uO1gthjXVC5urH z?uo8NmWvCClvH4NoDsU4)0KzSW#=%&f7cGJ8OH%oa710B*Evi|ZnrvUKELW)_) zAh@Uz6phL=QPVjChiNB03>xc4oImALNLwZcH}a=?8&g0hI=$y} zzrg4{^f3=^heB%E>m&OLnm^!$TT{O#&F}VxdJS~uRdg*m#cI`;ucWn@7>+2n8;75% z*OB|OJ!0@qn4v9c_esJ)e*EC{mNh{){^Y{Tin?>^3eb5~(sl_66Ux4icJi_7mv|em zPjVtG>mHCfScB8G36Kxw8=7Idar%s`czQNn5VZRBc46Yny%~iSAGC%c0aLku!DwJf z!E3L1*wdEKjOUvm9I+{SgLK+A)d&s|&I@}#e&ORY^E(bU!WE-l{cx#(eoK4DCxA}b zJPPq9_&g6aCB}3Tj=dbBnmlGjMLS{=RQnm7=uCV4=4!!Ls;tb1C#^}ZQi`{BcbR%a ztlhX7ez-V0%`LbM3~shcz-PG;5X3gG!CG|L@3+~R&5Syf0yv{sUNF%p%RM!wv@vx$ zDOHz$=qq!olr#)LsSVe^$``c^f8BJ^$la$J*w>G6(wNIBjB*u2rP)uAEx|M~gp?`s zz1O4cOGC?{QDJ)p9)qQYcJpmIYsSPDkFZ~h)ve2{sAi1}Stt$q{F!dh4CdT2Tl|CP zXwv4gk%o%&1jVGVE27ZUW=z`~eB7;*3@{K=EJ*olRNz*7qzTK0F_44htvaAgZ>mZc zfStM_;ByXHpJtfYt-{}J{n*|{7@D=1`?t>CIAJuJGm*?g2I)s1HCPlDh`;Q3T1Ppc zA~IT#3%ivn#}G1gwNaecWbNUAZo&HuW$ zo|RVA9wpa&={DUx;79Jf#w7u<#$$~j-2%&s(NDgousgM7p}Vp(&S>a#-Vw+NiJ{4s z+=o3RKL_jaNu4&l7p5mYQ1r+>Y&X7t|D%A-)VMOPVianSoq{g{gTYaEdMWFbu`#A;6Xg=M zW5&+ZqOs0_V_i$|X7Z{e*_KB!`TPAg5SV9_ZcAYLV|-pp!wp}RRZ5lFGar(RRo9hATLTk%F zRR2r4LzesGk$bchmoee*Kov!CthyNHOL2K384uCG#^OT^1 z2Ypg5aPl2qjIbGpeU7}F(#82G!ot2eyEWk}aJwo@2E1I>snxQO$n$Y+rfFp6HorHd zYpPZj)uiRnTHdgP_ODGk>zbAAxk;sMV`|Au5{D#W`{P+O6|wkU|_! zP1>s_TbP3jaHD9DS6O@cS8kE|(^p4tL|mCY__rzBb?ZqT?EDan2e{?2&~?SRD#fe+ zIJ7gXZYamk42Q&j{KNLiL@@e=T&?gw%O|`dy#}ZU(fG&0UDK4g(_t&(eC6-U2}~s& z0Apd@2lVhF%5 z`Mc$lXPl%U6QXy76buaw&GB`o(zD0KAMg5BGz~ip9k{s4-N3x-TCF^-;(|<8NbmPyve`p`}`?i^eX|&{2y>zDg z?8JH&0sjNf3SAF#tKAA!%1&{ghKv&`f%?X<)y-du z7KD)GqM#BHG~s$>^W#NBhnVbo#zrHkkI_Dep6)OQxBwMe>d%+fY5uj9IT2`3B;%az ziVO~xs?f*G4vb(d#@@XCJ@)mS&ej;U;F9(#Y*|Z8I~=y8!E@UiSIf$%ucHHrG$EtF zeG=X{OlmbzNWP09R)JeqD7Bt@V4vX!HP0c3oTRJC96gipUFFkaBCOKHc9 zZK9aW<7Z)R(HG3_+=5Q1DIe^Mk~o&nP}Nm$Mi2H&!ctSx;(TP(PE0Y>(N?;03nd( z07K=OkWK9xq2AlMY2D9wyM)z048bBlBS?c0dCYhoE}u>8hPYBGTh%lAD+aouxu}?5 zXV@a@vERW%a+-AfH=JSl+?67_9{-MCIjBVgcGLk}rhK~pSkJwfy43*z0Dw79Z7@x> zs$I+@daw&87kqncSzA3X2By!seb%%t96U?AoqXpg-h`4@r<~+}6wUoR@~+Dz)&^5n zMfcDK>7iDUpY-U4o8>4W_1oLJqXmU;lyt5o|Iw_ZRTe{MGXK(uV~Z-WR9U9zjlSxV zKRn4&kzTc19};z=2-F9R<4!Q+n#6+iA8vfVU#L}Fii2*{I5z8KG(7;x{uiIx#s|dMAZoF?iO&eH z`FG@o*P35{X=<1dhro%wmo2XR_PQzAc*%${iZtGeGbC)-O*5rb+=1ZJn~IK6C)&vxuld z-DtM;)65?{cy4^SzoA(XYHTxITkbm7|0tu-VZxisJS-E1LXo6`^`x1~vCb8!(A}$6 zPy%A-k{Dw#*DU0+J$O9AmAQpgue|-JKorSdd99(;JCKIQkyb)VILZj2>Qgh= zj#zZ7drZgL2!9Bw$(tFt8xm8t%h9zaRyxl}Lh6%t3gt(3idV%SC~MVE8un*M`ZdQP zds1W7$1k6NKx4qr!|V09@KRUm;~RH>dslT8QRj!QtWJYME2{Xf~Z^kBc2lo#Dc-<`0akeU30F8VJTS;zMXye(T-( zsq-bUM>bh=rCA`2A4XEWR}P040$?@olUgB|Q+oYa@A}8I;Q)I=bL5(Z{)dY{eeFkC zyI?~zDt5(IU#@q^bbULvQOL_tqRH3T*2HBtb;In# z>!18Z1<(}d%{q3*;UNd`_-r7sCiDUA4dB7k5jo-krY^{4Su=ZdQ{UW(n0#9uy?gf6 z&J$*b1D6o{TRF?4Mk4zWxlUCIH(A^NYwcP7QL)V`$H%}7_~W!nWzDd6URt|Vf<|an z1`Qd^(#&GO&1CPqySB@|N?(=amx<+(?b&L-Ari+E-C*^(hB_|Z253;=@KepZ-llu{ z2;&1FmkS0b8w)!Q{c{k?#rT?I1I#-7Pso0q%gnob4AMn=(pQsxJm*hjw}y8#R02WV z_Vh*ihsUz@516+i;2rpIpvb#=pavtnG(;CY=yLS906pUCTB`UB0lvRn&w^`NA`c}* zPWD7q-}1SB6VM*>%s0&mm9~H)DJ8t0h%CNws-EL*q3CU&6otoKobN|xe}><$RjUAw zVQfjIwu(P@RoSd?dX`WApDWI@oJR9am9i=fZ7O$`MN{P_tuxlfF7tuHGukpq=+q| zFSi<*eus9s%2_927t$z_*dGxwVf48OgMdMWMIh<>{z3DxYvpJ0gxQ8;u`PHDU@7^8 zO0liGu|q*G)h)(5!N+NN;VA0G1y9oqokBk==w3^;>ZU*dGqFQcMi zTkNG}&318KIMM3|YBsi2cBw@9;E7(Z-(VTnRDtjg7?P}osrO#KSTVfZj9<0d^(Vgo za!A5?q{TbH9|MF*64SX`<>sh;QF7`f^`8LkQ@7B~2BHl#EA^+=Ifsq1-1(iDsN+2# zL54qZS|tZ-EQZ#^(4a5Q zLh-NAKMJ5<(oU5PpVYQqR3Y5`F(NwYU!d#n(o#r8_*0+V=J4ZoK*x1qVdw(hTuW6l zi=n67H=?(1!^-oYHYqnlrR36pCj*q;4s`;+vVi{VoW-wJculb+4fKL2QkzIaexrid z^R-DpBHjV(YZyBPh)mcGHv<$NUWlEa_|l;dM9te@Yor#>_bLOQGSNoa@C7$34Fv~V z=*Cv|`0fiiT_4Hh0jQeJoqj{6lk&ngVEAgyJzdqjQD&$WJ1*L0{xv%v`v?F;$B4h~ z5I%&w%4eMKYY5(3es|4gO#Yr&0{d0Ln+?+zVpp0^zXQ2U)zN!I)2udMTgWA8LnOT4C+c4K~Fd$ zWXv*tgzK^Y*z$O~Sn!-leOLD(>}@m8BkT}=zgbUzsJ`I^nFn2Y zCQhhIw~cVUyn!;*n@a02}f*{Q&*b@$yYCnA-zQ=mjbBF?)_1u(I8V`BBBcjhnc;n+G&s%0ql zqC{`sLd@*E*Y=hesFxB1@Hmx3>rime0eRH|A~>MVyJ(SJ;P{|dw+4`OFD*_^_1=}uL+8RfHu zcg`wP`ce9)6RRde4a_}5Wj>sa`L4Z!(@!_$*LxBh_I`L>Xgys@`Z9+3bW!?}*LM@M zLe;gdoLW`H;?P%ribu+1tN9j)%VUtVuFzY=I1^xMsS`V2;5$TjQ-%BVw_ebNH&o@{ z6*ysGAesFL4G#_Zv3CUUftcQK)=S6G98TcKB-0zPZ$+T{i9F@S0`&2Z=Up_t|8pmr b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_anyone_input_changed_3_0/00000.png b/tests/snapshots/stax/test_sighash_single_anyone_input_changed_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_anyone_output_changed_1_0/00000.png b/tests/snapshots/stax/test_sighash_single_anyone_output_changed_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_anyone_output_changed_2_0/00000.png b/tests/snapshots/stax/test_sighash_single_anyone_output_changed_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97524e00dca3fe77a170d83b3dd8dc72e7f7c98e GIT binary patch literal 15636 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μQi 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 DL|>g2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_anyone_output_changed_2_0/00001.png b/tests/snapshots/stax/test_sighash_single_anyone_output_changed_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7d0653538bf5198ab17b8b26649b785fefd8df8f GIT binary patch literal 7524 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 tv@S~Wfw;PzDQqLcd%4c}k8^)J3?7cKw* literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_anyone_output_changed_2_0/00002.png b/tests/snapshots/stax/test_sighash_single_anyone_output_changed_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_anyone_output_changed_3_0/00000.png b/tests/snapshots/stax/test_sighash_single_anyone_output_changed_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_anyone_sign_1_0/00000.png b/tests/snapshots/stax/test_sighash_single_anyone_sign_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_anyone_sign_2_0/00000.png b/tests/snapshots/stax/test_sighash_single_anyone_sign_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97524e00dca3fe77a170d83b3dd8dc72e7f7c98e GIT binary patch literal 15636 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μQi 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 DL|>g2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_anyone_sign_2_0/00001.png b/tests/snapshots/stax/test_sighash_single_anyone_sign_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e72ba2fa664acc6811f4636b7c5c3475b004d098 GIT binary patch literal 7472 zcmeHM`Bzg{yGC)Kt$?-_6a?g=Vi_$W^WacOQ3fd@AcUYY$PAJ&B!oDXv{1w`lrc(_ z$RJ@1kPr|lMo0l6K!gy60zwipFePLlxyOF%-hbe(Z{4--?a2>&t&_da9^UtP&ig#) z*NfgD^)Ge4R8dh;_xSOLpHx(~Jy22E{!DEJ-@o;c5qPY%TS?NRwP9N#a+9HW9LYAjHQO>T&_TVN~ zLT8*$LWEV}BtrXb(!Kv)<<&jh?OQnGea=(nR{HB74_)1MRZVMecG&-^MlK*02NM|1 zuCJ?riy3MpOqsL`gn?V)5gdFx^GmIyX5HPUl~pm;I(iiO$y$v~Lzkn0b1Q+xw~A#? z!oXFv-16gn4NmZo)SgFP^rm=6oxHw=_SvlMV%T6&BRB}ntMGaO*lOd?N7f_#d;)M#E zm-VlqCRZ36nJy4BErW@G8QoT&y4BXr@xt=%g5~p#O*!R1HX8gyEYUv;6-(fSd>I^( zN(SrP=!EuGM2~SdrXEFyRWI#V|ojex?j@m3R-4in0a_Y@FsTRcYq?4&?!N_;%KPuFA{!dZy z&b*WEyv0UeU~m+bzvL1>tf4bju~j}wbJ|TOeXO)xoG%caj%V^y$?_J|ySZfP$$A5E zm$_0n+QN(%KesCM^xi65k)!8!=_si0$f$jN*yDo6@i+zRJq+blO;)WQjoHjeOiV<} zgsZDJIbtwofkvZ6EsOTz71l#kfl@O;LakMZM5&zTR;AwgwKs>(y)>g4+Ri353Iqbx z0QqfwlfZL|E1WnRvLr!_K%oSv{u0k)4A!i{2T*0K=*q3)zi_d1*6{;8ZhqjMPi zy}6Z5;jOlKW@c-!|7hi19xj**2^0Jl=YmaBmTZMvc?AE6M`svdXc0je7HBFyP4)rc zC33M&J{8DGSgAOb%o$$el6RfDO7Nn9F7Z>HzZ0Hq#{~(MPeZG?s%-8^iKp+sZ zX@#i+$(5BSwycYC!9tqkK55-XH8_&xVUW*XBoYCk4W==f!J+kLv~E*463N@eU(WsL zMrPp z_=0$Jb@?v)a#x>jWfez=XHms3jkAH1$Olto6RB08jN9GY?q%7ZJ~yzNtofe*@LAYK z`h&2AE(R`thJOv%ZiM7i7bjtUBn9UfCyxkL^j70rA|Bzm3htphr8-Dg&Tw~iW~zOu zH~HZH8vT5&n%Ttub+SiYcKG_j!oo6L@agjy&17($g+qHE`cm}OE}f+_$L^;_-2^*u zBpIYegts|e?+?9>#lHiD{Dq⪼i1o1QQtS>8R<~2~3;(X2?n;%|`@ms%*P_OJ?f| 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_anyone_sign_3_0/00000.png b/tests/snapshots/stax/test_sighash_single_anyone_sign_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_input_modified_1_0/00000.png b/tests/snapshots/stax/test_sighash_single_input_modified_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_input_modified_2_0/00000.png b/tests/snapshots/stax/test_sighash_single_input_modified_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97524e00dca3fe77a170d83b3dd8dc72e7f7c98e GIT binary patch literal 15636 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μQi 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 DL|>g2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_input_modified_2_0/00001.png b/tests/snapshots/stax/test_sighash_single_input_modified_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e72ba2fa664acc6811f4636b7c5c3475b004d098 GIT binary patch literal 7472 zcmeHM`Bzg{yGC)Kt$?-_6a?g=Vi_$W^WacOQ3fd@AcUYY$PAJ&B!oDXv{1w`lrc(_ z$RJ@1kPr|lMo0l6K!gy60zwipFePLlxyOF%-hbe(Z{4--?a2>&t&_da9^UtP&ig#) z*NfgD^)Ge4R8dh;_xSOLpHx(~Jy22E{!DEJ-@o;c5qPY%TS?NRwP9N#a+9HW9LYAjHQO>T&_TVN~ zLT8*$LWEV}BtrXb(!Kv)<<&jh?OQnGea=(nR{HB74_)1MRZVMecG&-^MlK*02NM|1 zuCJ?riy3MpOqsL`gn?V)5gdFx^GmIyX5HPUl~pm;I(iiO$y$v~Lzkn0b1Q+xw~A#? z!oXFv-16gn4NmZo)SgFP^rm=6oxHw=_SvlMV%T6&BRB}ntMGaO*lOd?N7f_#d;)M#E zm-VlqCRZ36nJy4BErW@G8QoT&y4BXr@xt=%g5~p#O*!R1HX8gyEYUv;6-(fSd>I^( zN(SrP=!EuGM2~SdrXEFyRWI#V|ojex?j@m3R-4in0a_Y@FsTRcYq?4&?!N_;%KPuFA{!dZy z&b*WEyv0UeU~m+bzvL1>tf4bju~j}wbJ|TOeXO)xoG%caj%V^y$?_J|ySZfP$$A5E zm$_0n+QN(%KesCM^xi65k)!8!=_si0$f$jN*yDo6@i+zRJq+blO;)WQjoHjeOiV<} zgsZDJIbtwofkvZ6EsOTz71l#kfl@O;LakMZM5&zTR;AwgwKs>(y)>g4+Ri353Iqbx z0QqfwlfZL|E1WnRvLr!_K%oSv{u0k)4A!i{2T*0K=*q3)zi_d1*6{;8ZhqjMPi zy}6Z5;jOlKW@c-!|7hi19xj**2^0Jl=YmaBmTZMvc?AE6M`svdXc0je7HBFyP4)rc zC33M&J{8DGSgAOb%o$$el6RfDO7Nn9F7Z>HzZ0Hq#{~(MPeZG?s%-8^iKp+sZ zX@#i+$(5BSwycYC!9tqkK55-XH8_&xVUW*XBoYCk4W==f!J+kLv~E*463N@eU(WsL zMrPp z_=0$Jb@?v)a#x>jWfez=XHms3jkAH1$Olto6RB08jN9GY?q%7ZJ~yzNtofe*@LAYK z`h&2AE(R`thJOv%ZiM7i7bjtUBn9UfCyxkL^j70rA|Bzm3htphr8-Dg&Tw~iW~zOu zH~HZH8vT5&n%Ttub+SiYcKG_j!oo6L@agjy&17($g+qHE`cm}OE}f+_$L^;_-2^*u zBpIYegts|e?+?9>#lHiD{Dq⪼i1o1QQtS>8R<~2~3;(X2?n;%|`@ms%*P_OJ?f| z<(se4)nACg+*`5($)(F zm@4x_n%x(k zasNI6gAK7@nsT9n&c0TEpkpgngFrIA+ky;}@0b>=ald4^M710>l0v6bZT#`ai zwb)+Cb)bx>ClAez0*nCPai2P8Xz*v)pxF7Xj@{Yh*0F2#fo584yG~i#Sov`dNwFmp z18{lm0-Ky$3w3gBUBI?WeeDm~JHx=PuC4?Imr}?FEo`f7L|2=cU# zXLp}Am|$Z$&%M9M*U58dU#geA=Voz)YqhpYvTVT+o!#z(>NZ!-kD`H<+B-*0H}zhx zh|(mi_J$R;WDZ$8L{1yk6c>Br*+=S+=kQWxJE`;Rxz?UG+p1k1|26dY{z%DD;P^{T zhJ@YKe7k@k44P2DVp?Gb=`KEaKin!p-!PCx^-@+(zWheb<&_z2y@`FWi{~AC$fZF9 z5D+l`Qe^q!b1S*9iu}-;G|`yk9W4Da$IwxJ*Xa!?g=B==!ge1}d{I`MX^od{d*~-# zgJF-#XE3N$j{P=g>@qvcL^!gDC10V?znC}#rw}|LI_+0 zdWR^TooUQu&hh1Pf{9K!`AjKi1$h@XHkFc|7}p$?DtlmQPx7x*=w%8vhbRux;HBF1 z^#?-EXF}H8{eDe*U>Tgn2|xk)wfD}c4|6-X%LSRns-2H`*H+<@L$(qOG^jE*K;E)DRJ_q53Y%>sc$k88wqM{)C&xYut z$oHP*ro^}nKF7`XNrb&lo+nZ|pl=iSW-ddX|4BvjT-~h`JHAr;r}^gy{>g%Wfbjp1 z3+7PbsoUrVRsxggO#T>dbuiBzQs?S=8O-2rkdEh!#=r!~SpYE+Yy@m&+@E^IN+<}m=a6cvINs!Uyf4Pgfl3znsVP2~0Sm$)eDEvj z@&)qck5j7AzbtkRX;H3*&%`ep?cffKabaKv>$$YSEUGa`d}i9ZKhwp>*oC%W<^27l zs;U9~^Dova+AHyReD{7P5o}SwT0{k59`}ZaeWMv*kmpWkLlZX)8IKZ{Z&;tVC6a~d zP6O1cEnAbsBbp@5$>kwfBOq&uJfM){hDnd6CXPTIkahKM6W=yvBd%B!M5ni!(LRgr z&*jY*DKQf3;}|WAobp<(-&aw%p;wNrm@$@aZ1LbCd#|OkDY|IkW*aMEa4Lt-iJo@H z`NsH(qchpfFMeLzm0SLimzvSrXv=w`=npkvy|NZgQ+(NPxkL|5P+%I}+Dm_yqtOji zYItoPdKFBqODg-Yf^wiIBkxO289EAcWZQnQnm)uo%pU)52_xb8h__TJJY1HHBFYM#Zps#IjMpoubRw{z!JZF-(*bJ05#c zny8N;O{m)zCyZRRpi9D-L^6wSMD8=}BH^L>$?G5x))kHRmB?dfewRL9f8hYPdaB_d zZJBJ80yXRF%WP0VC~Zh=u$rDRs8}cSA`uCfNFRb``|Xdmcam!9$>&p{^?r*HfMkDM z#69M--X4UpSVkSgW6Mf|L|w6xvSAneH)}Z8oOE1=Juqo^iyGbV%_#apfa9r8L<_92WCrVS(N%+QuZcZ+0fKQW>-YtFDnrZI+-Y9`=cPVG#mYV z!Rnc6tVbRH*l0}R*BA5ssE6766`Xw83w3>G&mXl#X-7ar)Vs0WgoWad7gDAc_c|&M z>>*8$&#tvcy$~glE@nLj!k$wJ1^GRytwqtCs|Od?04bQ@L+HQ|o=`_btI$mhWH7G} zJvfO8V|lsQutQs!JouevG2L3V`he(QsUOuYy7qdJ$~Yx+X1C!Q^9iDQaeSUFQFg_) zt-B*HPQ(>KFc$U>ZB35iW<&tVro9Oe^B!1MTixtgq%+cU*sk*vClO_X)kR# zM#moa!YK(%kwjwe0|zV-gy6xvE^PCHSx$LX6*<$KdOhVH%$BXYb9l|XKki0Rq?5kb zsgG_gwsvzF1rRd}(QXVhTYX%Gc!BwpQepJ0-8kB1{=uShmcuq{cKl8`$GFMPlm22| z_puZUi+S}u>lILA+M0L~)?oXvvw#`0qEAJh@_KBrfY(~eIwU3~#(reZRDO>W2;^9$k3r0bzpObJ7>GoI4Ur&Szjm}v>+D&9b=JvblT${O%eCH=UNd(HsY-4|X$1T6J zhxc@Cf4jHlfQ5tYZBWD>(_8Cq*5awJT3tc^KGSohv-~)b$)lvH&a^85TdmNOPtjFb zv_HDz?OwBgE$H9h)W~iWRn&43f}Ps2%rQ&;eMOo;Z?j{92#8&DLB2b#stRxf;WR)L zOC)W_b9%!Y#^Y+I-8#k+T4XYDqVKl=l{Q~tA=0w`qsyT(y6DMMV8}$A4I?79h4~Vd zDT;+LiC*+?-Fz_%H>^psZ}WL0;D?YmtBDT?M8M-o{*%k)jw1wsmLZwrhhJZ=E*7LR z;%qL+?2G#o$inN6uz+?71=(+T-|x`X(tyv_&jo3k&f7qX0`~q*Hk-}k@rKne`@?#! zOoD?jS;^v~fp?)kTL3rbQvtC7uySxU-M_sUvcQBCEAo@$;HbRO2|X=qwX{{8a+P z-=EUneu#n@j}wVR#1#>ZtWLX>42-qD4OJX6621UndR;+H;U0nOTFt)RID|KDFz_wU}8wwa+E$d5P zjXpr!!tLO`@aqB`t^Q=TVrfKjcFNn|ACGCj#-dRA3eq5>iK`Z~l?k7mOMq9+uPlm_ zLGHq{w3ao%?SsnDjsTa4Qg7N6FYM;+XDA-ZUN365w2aFwyu|KcsAkfWGvc+P3dshS zF=POPl&?*e@PBsmz2pyEV1{#JZ8o78znxcl8LDYIzznscfjEc32WY= zP@cg<$Kf@;0t5wB5}EN15d&-HXo$?1mFQgDFFO`!JI{@^HdM3VGh_OCrocm`g`>`6b|ryHt)=Zr9Y@fI2fI1m>VusRXa5G(<+Zx(N!3F~ z1C2L!R69cIWlxqQchFT;tMX;PZz|9=vc!+S@m@G~ow9eJQ&6*tFuhWpvJR^_fue1R zEmbI{QjWo(2?5H_XeW<)rgf2u{NBbwcV8x*yfJLIGD}7`jxTR)G@~j8g|O->02|KI z!d41F6`&>r=#aA@5Zsi6>FDDpiCyfH9;bd1PW|qA3^2$uj4er@Q)oCcKMPamhYeW$pG_=lFT1Qy9I5k1x}D(tf|O`myBetY-cXAb~-b z+YW9u48NGUaPPZxl{*`weGQ&Q4IOdX77=^6)$DIW`uF|&KEKH!R!=THScvzq0KSB( Oc({50P})CeI&j1Wkuh7bsX@AkfDo|*IIlzGqdd^smyGJDNlYwx|<^}l}qm1J#cDsV{R z5C;c`fZ6qHwj3P${^H=^e06{mDABQMujb&mkY#r5ihcOYWfHx)_y#V)bzZuFLyen% zpHbIgm4E)!xex5S`rz=JT=1-(Oq!G@^wAeE2GHg@_Z97WO@qb^0)+9MQ`QybJo{T1(l89`ygLNdDqS~ za)9QJ8_7P0a)_)KXIuXT<&b7!3DLvrC%PWO*r&mnP+3vnJ9kl$zwGgcAW#``eq?LeXyViz=jI>!=X{AO!=CxW|`hSo|F& zvkZH%`#JllhGKb8-{*##$nRMH!`%2)V#{uE!}o{3-Ulu1?BP=OsWyPjGi1#&;$BL0 zvvwKVH+@}?PSvY8I1z9pe+Oh5Ugh(8__VJk`?LRf zg_g8lN<-s^iqrLhrcQ+Xf%y;}eY8S|P61G%%6nFclg~&gyAR%2g`!RJjl9`f;<=*E z$=3nYnhgwxeyFIUQ`SGuo!WmGvJk2#O|~UpDzLmK!Uita>Y8jnf;LXoe*s#PHd7=Z zM%4x4yAUMP&w*`s;ISu)lDpm+(y%f0{&PEcY6O+B9c@r;CDogI1lCJ=wv*s_vVJXn z0M2l^x!`LnGzZB-7!)z|I$>y6v9uy9CjxPK^I66>#$m`-QB`K%=0gqIB@gDRtl5~M z{iDei{pP4^V6Zy;?KPKKLp$aDendPBO`wDI(`edh?oe81GRn2Bt~%I)(AIPNhw8~_ zeiNUrSi!{Z(nUnaCl-?Vt34OwT`AtzdbNfgX~H{(tz+#V^UCcypQK-NdD{T0uJb|i zXxT>nCB!&1j3DU^HG)PRpEMR3^*8jt6vB(g@$}`vIvPOqa6J*@*$5bU?OGi@Pm7n1 z1%`Zv>69VMEduK4j(3M5oPO`^4enu4H&b73-EZq(K)Vn_p;`QeJQ5^Viw-g01>YO1 zDWxY5ly3&q?+FI#R0M8;xJ7Ds8@t-oDl2X3H1h{yI#+$M$;F=DaQz(A7C*Ph{D!7V z^X+W=>tJxE>?eN=U5c)dTx>=nC-SEEW}mFblPC|LZ1QB4_h7wyEe>;2vWv+caRDYS zNL;Vot0Rzt-P$pTW2#Wa%<`%F%Rniw4}{kIkO9|jmN_5C!$~JzU{*Fxh(eb6E_3qP z4F_!y^|fJ9I}J+7r+b5d?m^ucm`0FP_=&@s%pRH4l~5TjOK|-<+5clFW~c2Xwyt9HPDKKbH-tRc;@2D0qgSr=>)InfqK&YzO=(Zu zaKxBsupREMO-H=(pLs=Q^>R~lbYsDq!F$3ZR1*1tL&rW+;2Zt zUmc%igzEuIoJ=N9o|y1xPmGs?xgLSk@8S6oG|ZR}ZmjdUtc}q0)1=pwb?wFDqZ3c& z)uIoY_&jijI%K&6+rx4*+59?YNj#s(0-+Z>wub&n~Sf@sg8=z8eVp3wVJS3lm7k| z*iF`Ch%FWP9+SBj`1hl6&EKx`qpE4P!4E^4TxVtS2jI4I*PX;r=!LBE?%Dc}DR~3% zi(SP6d;$@LVS;sEdT(NuLv>3o)TH|n-Ju2sGSNqYrwNU_B4@&?QP?|5JG(K@_SeWK zw~AfkihEps^1wTl=m7C|Dy2TUQwKmHPl^{(bB`y?F5Qwgkc@lmzxo*v3tR_48@46N z?KP)9wJZZ$8wLb_xz+>4hsfCLgjQt!Q)ibJZQ5 zN~A#r)-5ev_ZOahU(x_lOg`OrQRDiLI~&!d4RHD{D7Qlv36J z(v?m(wrTqPLwj&LdQ%U*9^pjj?CfO6q6yW0#Gwmke|%dD&ox|C>Z(4G-aEQD#v-6l zp*Sb81RLSpB4Udlu?4kO9c$R}D%c&GC7T3n5Pn({oQ(nj;46uV;XzVlyop%CJaz{k zYfv;q4HioPcGy^*qM_8)axWUTj*j)p!i*6&VGRhSUE~7i7 zQA)jlXmII@jquJctohyvL0&RzpyA2HYGcA_lJM`S7f?F>*zf} zHNPF5I5{Bct0>p1*w#9trQ)s}nWamlG=l7c1EnfR3g`;6j8c?BZ;({)!T8JL!()kA z?h%C^uqZgRJZlbHmsi2Q7Q3($<7`8;Kb`-WAif+?SZEbx4D@N1JHlxPFT;H$sw}x! z1p_NtX^!3nS|FS}pjqy@Z0F`zq3iH~@xik&rEF~7_zQ1Ejj7WT zitZOee52D=y}CzwciVeT>>|i4V(b8;ov~n(@A&(C@@d9x_D6@JFzJPY6dxQ6%@sB2 zn=xv>j_d@PGah+?=+OqOf}>XsH}$Q3qiyg!r)axFLu1^%4>pG?DHc+5`y@KSi9+dd z%|4)@s?_Z&{6dDc%p@4RNFFy9Hhx1~*1-iWvv!{KO)ZBO*qt+LAg{_?xSPHkLxvVK zf#`wSQi6$iyjOM~um=hDN6=`#7$V+h4TaLox4_9VZa@f3c%v$j_a-!px%_!@?C8#f zQeVRWTrK*q_PMW+s?{o2jj3xy*1kl6Uyt$(e-=_d1ihq2w!k>Z zB^Rq(jH>(nI>`d7-lU~qS6=ypS1@IV9j!#FZEJa1&6j*bT*x~^Y{=>n4m&= z_RE0xk48jKH#(XQ)gxQ7-K+NQ5nI~w=QF=dpXk=D4uVaSPz*sKhH2CK2M;MpnQu5w zdMK`7$fG)iqU|a+A2GxFfInkPD4a6Qyt@}7#O>hWNjruPnD=|mS*=$4g3gra4We?h zeZ4?;H);GuQNSn;`k5SD^|$IclzOgyG7b@z1m6g8cqFQ)Y0xFw?0Wvn;TP_cb>3C5 zTYthQDJ|fgeDYPp)hR+6k=15K0{h0+(U0`CpcZn4rf=9~CwH@^*f%r~h>iCJ0{Y0{ z{9Er(sEyy7%fg7qUn3s%tH6`ysRb8&0xoGf(CM6gY@$>kjx?e!&|ObLZup<6gi9+T zwHkL;Zfhm0@8B9OBI8TtlR2gyN|FQ<0a!Mq&wO8I_~Am-&uE(kPXJrbr~`xy-;HgSWnXJd3TXE?>IC zS9nt$=_XJ;(Bg-v@@xqd&^trAlqmOt?nlGU_+xOSI(=H&p=TembEpx*#;F4ka3(gG zjJJ$M9&~;%+q81Je(wl(+@7jTF!XTUq8;8ygqaw&9z~9lEy}2l^Un8Vib13edPR znL}@Ys8Vd4SJZ2V@fq)|MvXY#9(OvztcWulX5PntT+3 zaFP+^Wv<3mbkro7re7+OHPi7>Tsh_4I6sohqul4*8}w7}_wFv(e2gdG@mk*3ZE2MWf;y=j7!_3%5i*$cr*1;=u<)I0r_$m003^`O3s%IYmdza4RG z>4W%d40Hp#!jUjrrg)2hO*WNwZ}I`-bkOQR@70X@7{KGxV%5Hhj#oQ>JuVz(dF zRMM2pb&q-T>_j65wIYhz-{|*?8Lmf@xt@@CVy-$8s})lXZYHyKL){hlyL-ZTrA2)7 zVn=7*g_-&+L@nXby_+1npp?D4ZcPtyd>!IWLl^oE#h*;0Xs4CPj|??0b}BXKz;#;d zs&9P(kK)=+r)RHCNK~9U5HFt`e^RA$M0#;{#o>gu-V|jT6^iLOQ<)l|Px-pVK|T%v zWN!asm~O2VK1RlyE!{O^OLxZ_sRv17-i z?Tl^4#N<%{{J93+UF1y%+m3M&`MW7oOUqvzm67s&4eJ%AH!6F|JjthQ%m|{7(|y4j zU#?P*ju)8>@{+gmln0`ZerZ{zl1hfVFLktLcTreuu6{Iz_JmOucYq%8_@X@7J$im9h2Bai-CPv$JaUV1%|5kU8!|n&*V!7d*N2;=3a4 zGh|VALv#1Np4L@IR@2fn=XLow`n%4~a!MHahZ#(l==d?}#nujZL-;(O9)RtZ8QNf) zt}A}KGFC5AQg>+JP41Xc3fF2Om&(CEU`pxWzW*7if;406%G!gkTieXBvoP~6N9O6? zJ$hcHJuRy{)!SK{mc104RK$^l+0Ti3u`rwQ>Ut*Je#jD}9qWqsesWLmdZN8s4b@;? zQiok>10#|=1 zqx=l!k$RLcq=!u{Z)jp(YjDtfqBG&y_b8=AvIsv#1<0NWCDl0N=SPQdx`>F*p zRT#e-Hj_Hyk%IN6w-2bV9U9jg;+;8w+dBKYxWY>+bs6(~@M{uMGB8}ulEg$R+ad$Q zLM|$cc}OJ|AAyj1+04j}9ln?4i(6&n+852~?YPydP$x_QbYA@87uO1gthjXVC5urH z?uo8NmWvCClvH4NoDsU4)0KzSW#=%&f7cGJ8OH%oa710B*Evi|ZnrvUKELW)_) zAh@Uz6phL=QPVjChiNB03>xc4oImALNLwZcH}a=?8&g0hI=$y} zzrg4{^f3=^heB%E>m&OLnm^!$TT{O#&F}VxdJS~uRdg*m#cI`;ucWn@7>+2n8;75% z*OB|OJ!0@qn4v9c_esJ)e*EC{mNh{){^Y{Tin?>^3eb5~(sl_66Ux4icJi_7mv|em zPjVtG>mHCfScB8G36Kxw8=7Idar%s`czQNn5VZRBc46Yny%~iSAGC%c0aLku!DwJf z!E3L1*wdEKjOUvm9I+{SgLK+A)d&s|&I@}#e&ORY^E(bU!WE-l{cx#(eoK4DCxA}b zJPPq9_&g6aCB}3Tj=dbBnmlGjMLS{=RQnm7=uCV4=4!!Ls;tb1C#^}ZQi`{BcbR%a ztlhX7ez-V0%`LbM3~shcz-PG;5X3gG!CG|L@3+~R&5Syf0yv{sUNF%p%RM!wv@vx$ zDOHz$=qq!olr#)LsSVe^$``c^f8BJ^$la$J*w>G6(wNIBjB*u2rP)uAEx|M~gp?`s zz1O4cOGC?{QDJ)p9)qQYcJpmIYsSPDkFZ~h)ve2{sAi1}Stt$q{F!dh4CdT2Tl|CP zXwv4gk%o%&1jVGVE27ZUW=z`~eB7;*3@{K=EJ*olRNz*7qzTK0F_44htvaAgZ>mZc zfStM_;ByXHpJtfYt-{}J{n*|{7@D=1`?t>CIAJuJGm*?g2I)s1HCPlDh`;Q3T1Ppc zA~IT#3%ivn#}G1gwNaecWbNUAZo&HuW$ zo|RVA9wpa&={DUx;79Jf#w7u<#$$~j-2%&s(NDgousgM7p}Vp(&S>a#-Vw+NiJ{4s z+=o3RKL_jaNu4&l7p5mYQ1r+>Y&X7t|D%A-)VMOPVianSoq{g{gTYaEdMWFbu`#A;6Xg=M zW5&+ZqOs0_V_i$|X7Z{e*_KB!`TPAg5SV9_ZcAYLV|-pp!wp}RRZ5lFGar(RRo9hATLTk%F zRR2r4LzesGk$bchmoee*Kov!CthyNHOL2K384uCG#^OT^1 z2Ypg5aPl2qjIbGpeU7}F(#82G!ot2eyEWk}aJwo@2E1I>snxQO$n$Y+rfFp6HorHd zYpPZj)uiRnTHdgP_ODGk>zbAAxk;sMV`|Au5{D#W`{P+O6|wkU|_! zP1>s_TbP3jaHD9DS6O@cS8kE|(^p4tL|mCY__rzBb?ZqT?EDan2e{?2&~?SRD#fe+ zIJ7gXZYamk42Q&j{KNLiL@@e=T&?gw%O|`dy#}ZU(fG&0UDK4g(_t&(eC6-U2}~s& z0Apd@2lVhF%5 z`Mc$lXPl%U6QXy76buaw&GB`o(zD0KAMg5BGz~ip9k{s4-N3x-TCF^-;(|<8NbmPyve`p`}`?i^eX|&{2y>zDg z?8JH&0sjNf3SAF#tKAA!%1&{ghKv&`f%?X<)y-du z7KD)GqM#BHG~s$>^W#NBhnVbo#zrHkkI_Dep6)OQxBwMe>d%+fY5uj9IT2`3B;%az ziVO~xs?f*G4vb(d#@@XCJ@)mS&ej;U;F9(#Y*|Z8I~=y8!E@UiSIf$%ucHHrG$EtF zeG=X{OlmbzNWP09R)JeqD7Bt@V4vX!HP0c3oTRJC96gipUFFkaBCOKHc9 zZK9aW<7Z)R(HG3_+=5Q1DIe^Mk~o&nP}Nm$Mi2H&!ctSx;(TP(PE0Y>(N?;03nd( z07K=OkWK9xq2AlMY2D9wyM)z048bBlBS?c0dCYhoE}u>8hPYBGTh%lAD+aouxu}?5 zXV@a@vERW%a+-AfH=JSl+?67_9{-MCIjBVgcGLk}rhK~pSkJwfy43*z0Dw79Z7@x> zs$I+@daw&87kqncSzA3X2By!seb%%t96U?AoqXpg-h`4@r<~+}6wUoR@~+Dz)&^5n zMfcDK>7iDUpY-U4o8>4W_1oLJqXmU;lyt5o|Iw_ZRTe{MGXK(uV~Z-WR9U9zjlSxV zKRn4&kzTc19};z=2-F9R<4!Q+n#6+iA8vfVU#L}Fii2*{I5z8KG(7;x{uiIx#s|dMAZoF?iO&eH z`FG@o*P35{X=<1dhro%wmo2XR_PQzAc*%${iZtGeGbC)-O*5rb+=1ZJn~IK6C)&vxuld z-DtM;)65?{cy4^SzoA(XYHTxITkbm7|0tu-VZxisJS-E1LXo6`^`x1~vCb8!(A}$6 zPy%A-k{Dw#*DU0+J$O9AmAQpgue|-JKorSdd99(;JCKIQkyb)VILZj2>Qgh= zj#zZ7drZgL2!9Bw$(tFt8xm8t%h9zaRyxl}Lh6%t3gt(3idV%SC~MVE8un*M`ZdQP zds1W7$1k6NKx4qr!|V09@KRUm;~RH>dslT8QRj!QtWJYME2{Xf~Z^kBc2lo#Dc-<`0akeU30F8VJTS;zMXye(T-( zsq-bUM>bh=rCA`2A4XEWR}P040$?@olUgB|Q+oYa@A}8I;Q)I=bL5(Z{)dY{eeFkC zyI?~zDt5(IU#@q^bbULvQOL_tqRH3T*2HBtb;In# z>!18Z1<(}d%{q3*;UNd`_-r7sCiDUA4dB7k5jo-krY^{4Su=ZdQ{UW(n0#9uy?gf6 z&J$*b1D6o{TRF?4Mk4zWxlUCIH(A^NYwcP7QL)V`$H%}7_~W!nWzDd6URt|Vf<|an z1`Qd^(#&GO&1CPqySB@|N?(=amx<+(?b&L-Ari+E-C*^(hB_|Z253;=@KepZ-llu{ z2;&1FmkS0b8w)!Q{c{k?#rT?I1I#-7Pso0q%gnob4AMn=(pQsxJm*hjw}y8#R02WV z_Vh*ihsUz@516+i;2rpIpvb#=pavtnG(;CY=yLS906pUCTB`UB0lvRn&w^`NA`c}* zPWD7q-}1SB6VM*>%s0&mm9~H)DJ8t0h%CNws-EL*q3CU&6otoKobN|xe}><$RjUAw zVQfjIwu(P@RoSd?dX`WApDWI@oJR9am9i=fZ7O$`MN{P_tuxlfF7tuHGukpq=+q| zFSi<*eus9s%2_927t$z_*dGxwVf48OgMdMWMIh<>{z3DxYvpJ0gxQ8;u`PHDU@7^8 zO0liGu|q*G)h)(5!N+NN;VA0G1y9oqokBk==w3^;>ZU*dGqFQcMi zTkNG}&318KIMM3|YBsi2cBw@9;E7(Z-(VTnRDtjg7?P}osrO#KSTVfZj9<0d^(Vgo za!A5?q{TbH9|MF*64SX`<>sh;QF7`f^`8LkQ@7B~2BHl#EA^+=Ifsq1-1(iDsN+2# zL54qZS|tZ-EQZ#^(4a5Q zLh-NAKMJ5<(oU5PpVYQqR3Y5`F(NwYU!d#n(o#r8_*0+V=J4ZoK*x1qVdw(hTuW6l zi=n67H=?(1!^-oYHYqnlrR36pCj*q;4s`;+vVi{VoW-wJculb+4fKL2QkzIaexrid z^R-DpBHjV(YZyBPh)mcGHv<$NUWlEa_|l;dM9te@Yor#>_bLOQGSNoa@C7$34Fv~V z=*Cv|`0fiiT_4Hh0jQeJoqj{6lk&ngVEAgyJzdqjQD&$WJ1*L0{xv%v`v?F;$B4h~ z5I%&w%4eMKYY5(3es|4gO#Yr&0{d0Ln+?+zVpp0^zXQ2U)zN!I)2udMTgWA8LnOT4C+c4K~Fd$ zWXv*tgzK^Y*z$O~Sn!-leOLD(>}@m8BkT}=zgbUzsJ`I^nFn2Y zCQhhIw~cVUyn!;*n@a02}f*{Q&*b@$yYCnA-zQ=mjbBF?)_1u(I8V`BBBcjhnc;n+G&s%0ql zqC{`sLd@*E*Y=hesFxB1@Hmx3>rime0eRH|A~>MVyJ(SJ;P{|dw+4`OFD*_^_1=}uL+8RfHu zcg`wP`ce9)6RRde4a_}5Wj>sa`L4Z!(@!_$*LxBh_I`L>Xgys@`Z9+3bW!?}*LM@M zLe;gdoLW`H;?P%ribu+1tN9j)%VUtVuFzY=I1^xMsS`V2;5$TjQ-%BVw_ebNH&o@{ z6*ysGAesFL4G#_Zv3CUUftcQK)=S6G98TcKB-0zPZ$+T{i9F@S0`&2Z=Up_t|8pmr b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_input_modified_3_0/00000.png b/tests/snapshots/stax/test_sighash_single_input_modified_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_output_different_index_modified_1_0/00000.png b/tests/snapshots/stax/test_sighash_single_output_different_index_modified_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_output_different_index_modified_2_0/00000.png b/tests/snapshots/stax/test_sighash_single_output_different_index_modified_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..6efdc63a786adb8856daefc584d2f9ebb98f239d GIT binary patch literal 15574 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_output_different_index_modified_2_0/00001.png b/tests/snapshots/stax/test_sighash_single_output_different_index_modified_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7d0653538bf5198ab17b8b26649b785fefd8df8f GIT binary patch literal 7524 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 tv@S~Wfw;PzDQqLcd%4c}k8^)J3?7cKw* literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_output_different_index_modified_2_0/00002.png b/tests/snapshots/stax/test_sighash_single_output_different_index_modified_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_output_different_index_modified_3_0/00000.png b/tests/snapshots/stax/test_sighash_single_output_different_index_modified_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_output_same_index_modified_1_0/00000.png b/tests/snapshots/stax/test_sighash_single_output_same_index_modified_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_output_same_index_modified_2_0/00000.png b/tests/snapshots/stax/test_sighash_single_output_same_index_modified_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97524e00dca3fe77a170d83b3dd8dc72e7f7c98e GIT binary patch literal 15636 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μQi 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 DL|>g2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_output_same_index_modified_2_0/00001.png b/tests/snapshots/stax/test_sighash_single_output_same_index_modified_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7d0653538bf5198ab17b8b26649b785fefd8df8f GIT binary patch literal 7524 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 tv@S~Wfw;PzDQqLcd%4c}k8^)J3?7cKw* literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_output_same_index_modified_2_0/00002.png b/tests/snapshots/stax/test_sighash_single_output_same_index_modified_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_output_same_index_modified_3_0/00000.png b/tests/snapshots/stax/test_sighash_single_output_same_index_modified_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 T>N4<>ih#AH{UxFWG~vGhH}vS) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_sign_psbt_1_0/00000.png b/tests/snapshots/stax/test_sighash_single_sign_psbt_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_sign_psbt_2_0/00000.png b/tests/snapshots/stax/test_sighash_single_sign_psbt_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97524e00dca3fe77a170d83b3dd8dc72e7f7c98e GIT binary patch literal 15636 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μQi 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 DL|>g2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_sign_psbt_2_0/00001.png b/tests/snapshots/stax/test_sighash_single_sign_psbt_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e72ba2fa664acc6811f4636b7c5c3475b004d098 GIT binary patch literal 7472 zcmeHM`Bzg{yGC)Kt$?-_6a?g=Vi_$W^WacOQ3fd@AcUYY$PAJ&B!oDXv{1w`lrc(_ z$RJ@1kPr|lMo0l6K!gy60zwipFePLlxyOF%-hbe(Z{4--?a2>&t&_da9^UtP&ig#) z*NfgD^)Ge4R8dh;_xSOLpHx(~Jy22E{!DEJ-@o;c5qPY%TS?NRwP9N#a+9HW9LYAjHQO>T&_TVN~ zLT8*$LWEV}BtrXb(!Kv)<<&jh?OQnGea=(nR{HB74_)1MRZVMecG&-^MlK*02NM|1 zuCJ?riy3MpOqsL`gn?V)5gdFx^GmIyX5HPUl~pm;I(iiO$y$v~Lzkn0b1Q+xw~A#? z!oXFv-16gn4NmZo)SgFP^rm=6oxHw=_SvlMV%T6&BRB}ntMGaO*lOd?N7f_#d;)M#E zm-VlqCRZ36nJy4BErW@G8QoT&y4BXr@xt=%g5~p#O*!R1HX8gyEYUv;6-(fSd>I^( zN(SrP=!EuGM2~SdrXEFyRWI#V|ojex?j@m3R-4in0a_Y@FsTRcYq?4&?!N_;%KPuFA{!dZy z&b*WEyv0UeU~m+bzvL1>tf4bju~j}wbJ|TOeXO)xoG%caj%V^y$?_J|ySZfP$$A5E zm$_0n+QN(%KesCM^xi65k)!8!=_si0$f$jN*yDo6@i+zRJq+blO;)WQjoHjeOiV<} zgsZDJIbtwofkvZ6EsOTz71l#kfl@O;LakMZM5&zTR;AwgwKs>(y)>g4+Ri353Iqbx z0QqfwlfZL|E1WnRvLr!_K%oSv{u0k)4A!i{2T*0K=*q3)zi_d1*6{;8ZhqjMPi zy}6Z5;jOlKW@c-!|7hi19xj**2^0Jl=YmaBmTZMvc?AE6M`svdXc0je7HBFyP4)rc zC33M&J{8DGSgAOb%o$$el6RfDO7Nn9F7Z>HzZ0Hq#{~(MPeZG?s%-8^iKp+sZ zX@#i+$(5BSwycYC!9tqkK55-XH8_&xVUW*XBoYCk4W==f!J+kLv~E*463N@eU(WsL zMrPp z_=0$Jb@?v)a#x>jWfez=XHms3jkAH1$Olto6RB08jN9GY?q%7ZJ~yzNtofe*@LAYK z`h&2AE(R`thJOv%ZiM7i7bjtUBn9UfCyxkL^j70rA|Bzm3htphr8-Dg&Tw~iW~zOu zH~HZH8vT5&n%Ttub+SiYcKG_j!oo6L@agjy&17($g+qHE`cm}OE}f+_$L^;_-2^*u zBpIYegts|e?+?9>#lHiD{Dq⪼i1o1QQtS>8R<~2~3;(X2?n;%|`@ms%*P_OJ?f| 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_single_sign_psbt_3_0/00000.png b/tests/snapshots/stax/test_sighash_single_sign_psbt_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_unsupported_1_0/00000.png b/tests/snapshots/stax/test_sighash_unsupported_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97524e00dca3fe77a170d83b3dd8dc72e7f7c98e GIT binary patch literal 15636 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μQi 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 DL|>g2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_unsupported_1_0/00001.png b/tests/snapshots/stax/test_sighash_unsupported_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e72ba2fa664acc6811f4636b7c5c3475b004d098 GIT binary patch literal 7472 zcmeHM`Bzg{yGC)Kt$?-_6a?g=Vi_$W^WacOQ3fd@AcUYY$PAJ&B!oDXv{1w`lrc(_ z$RJ@1kPr|lMo0l6K!gy60zwipFePLlxyOF%-hbe(Z{4--?a2>&t&_da9^UtP&ig#) z*NfgD^)Ge4R8dh;_xSOLpHx(~Jy22E{!DEJ-@o;c5qPY%TS?NRwP9N#a+9HW9LYAjHQO>T&_TVN~ zLT8*$LWEV}BtrXb(!Kv)<<&jh?OQnGea=(nR{HB74_)1MRZVMecG&-^MlK*02NM|1 zuCJ?riy3MpOqsL`gn?V)5gdFx^GmIyX5HPUl~pm;I(iiO$y$v~Lzkn0b1Q+xw~A#? z!oXFv-16gn4NmZo)SgFP^rm=6oxHw=_SvlMV%T6&BRB}ntMGaO*lOd?N7f_#d;)M#E zm-VlqCRZ36nJy4BErW@G8QoT&y4BXr@xt=%g5~p#O*!R1HX8gyEYUv;6-(fSd>I^( zN(SrP=!EuGM2~SdrXEFyRWI#V|ojex?j@m3R-4in0a_Y@FsTRcYq?4&?!N_;%KPuFA{!dZy z&b*WEyv0UeU~m+bzvL1>tf4bju~j}wbJ|TOeXO)xoG%caj%V^y$?_J|ySZfP$$A5E zm$_0n+QN(%KesCM^xi65k)!8!=_si0$f$jN*yDo6@i+zRJq+blO;)WQjoHjeOiV<} zgsZDJIbtwofkvZ6EsOTz71l#kfl@O;LakMZM5&zTR;AwgwKs>(y)>g4+Ri353Iqbx z0QqfwlfZL|E1WnRvLr!_K%oSv{u0k)4A!i{2T*0K=*q3)zi_d1*6{;8ZhqjMPi zy}6Z5;jOlKW@c-!|7hi19xj**2^0Jl=YmaBmTZMvc?AE6M`svdXc0je7HBFyP4)rc zC33M&J{8DGSgAOb%o$$el6RfDO7Nn9F7Z>HzZ0Hq#{~(MPeZG?s%-8^iKp+sZ zX@#i+$(5BSwycYC!9tqkK55-XH8_&xVUW*XBoYCk4W==f!J+kLv~E*463N@eU(WsL zMrPp z_=0$Jb@?v)a#x>jWfez=XHms3jkAH1$Olto6RB08jN9GY?q%7ZJ~yzNtofe*@LAYK z`h&2AE(R`thJOv%ZiM7i7bjtUBn9UfCyxkL^j70rA|Bzm3htphr8-Dg&Tw~iW~zOu zH~HZH8vT5&n%Ttub+SiYcKG_j!oo6L@agjy&17($g+qHE`cm}OE}f+_$L^;_-2^*u zBpIYegts|e?+?9>#lHiD{Dq⪼i1o1QQtS>8R<~2~3;(X2?n;%|`@ms%*P_OJ?f| z<(se4)nACg+*`5($)(F zm@4x_n%x(k zasNI6gAK7@nsT9n&c0TEpkpgngFrIA+ky;}@0b>=ald4^M710>l0v6bZT#`ai zwb)+Cb)bx>ClAez0*nCPai2P8Xz*v)pxF7Xj@{Yh*0F2#fo584yG~i#Sov`dNwFmp z18{lm0-Ky$3w3gBUBI?WeeDm~JHx=PuC4?Imr}?FEo`f7L|2=cU# zXLp}Am|$Z$&%M9M*U58dU#geA=Voz)YqhpYvTVT+o!#z(>NZ!-kD`H<+B-*0H}zhx zh|(mi_J$R;WDZ$8L{1yk6c>Br*+=S+=kQWxJE`;Rxz?UG+p1k1|26dY{z%DD;P^{T zhJ@YKe7k@k44P2DVp?Gb=`KEaKin!p-!PCx^-@+(zWheb<&_z2y@`FWi{~AC$fZF9 z5D+l`Qe^q!b1S*9iu}-;G|`yk9W4Da$IwxJ*Xa!?g=B==!ge1}d{I`MX^od{d*~-# zgJF-#XE3N$j{P=g>@qvcL^!gDC10V?znC}#rw}|LI_+0 zdWR^TooUQu&hh1Pf{9K!`AjKi1$h@XHkFc|7}p$?DtlmQPx7x*=w%8vhbRux;HBF1 z^#?-EXF}H8{eDe*U>Tgn2|xk)wfD}c4|6-X%LSRns-2H`*H+<@L$(qOG^jE*K;E)DRJ_q53Y%>sc$k88wqM{)C&xYut z$oHP*ro^}nKF7`XNrb&lo+nZ|pl=iSW-ddX|4BvjT-~h`JHAr;r}^gy{>g%Wfbjp1 z3+7PbsoUrVRsxggO#T>dbuiBzQs?S=8O-2rkdEh!#=r!~SpYE+Yy@m&+@E^IN+<}m=a6cvINs!Uyf4Pgfl3znsVP2~0Sm$)eDEvj z@&)qck5j7AzbtkRX;H3*&%`ep?cffKabaKv>$$YSEUGa`d}i9ZKhwp>*oC%W<^27l zs;U9~^Dova+AHyReD{7P5o}SwT0{k59`}ZaeWMv*kmpWkLlZX)8IKZ{Z&;tVC6a~d zP6O1cEnAbsBbp@5$>kwfBOq&uJfM){hDnd6CXPTIkahKM6W=yvBd%B!M5ni!(LRgr z&*jY*DKQf3;}|WAobp<(-&aw%p;wNrm@$@aZ1LbCd#|OkDY|IkW*aMEa4Lt-iJo@H z`NsH(qchpfFMeLzm0SLimzvSrXv=w`=npkvy|NZgQ+(NPxkL|5P+%I}+Dm_yqtOji zYItoPdKFBqODg-Yf^wiIBkxO289EAcWZQnQnm)uo%pU)52_xb8h__TJJY1HHBFYM#Zps#IjMpoubRw{z!JZF-(*bJ05#c zny8N;O{m)zCyZRRpi9D-L^6wSMD8=}BH^L>$?G5x))kHRmB?dfewRL9f8hYPdaB_d zZJBJ80yXRF%WP0VC~Zh=u$rDRs8}cSA`uCfNFRb``|Xdmcam!9$>&p{^?r*HfMkDM z#69M--X4UpSVkSgW6Mf|L|w6xvSAneH)}Z8oOE1=Juqo^iyGbV%_#apfa9r8L<_92WCrVS(N%+QuZcZ+0fKQW>-YtFDnrZI+-Y9`=cPVG#mYV z!Rnc6tVbRH*l0}R*BA5ssE6766`Xw83w3>G&mXl#X-7ar)Vs0WgoWad7gDAc_c|&M z>>*8$&#tvcy$~glE@nLj!k$wJ1^GRytwqtCs|Od?04bQ@L+HQ|o=`_btI$mhWH7G} zJvfO8V|lsQutQs!JouevG2L3V`he(QsUOuYy7qdJ$~Yx+X1C!Q^9iDQaeSUFQFg_) zt-B*HPQ(>KFc$U>ZB35iW<&tVro9Oe^B!1MTixtgq%+cU*sk*vClO_X)kR# zM#moa!YK(%kwjwe0|zV-gy6xvE^PCHSx$LX6*<$KdOhVH%$BXYb9l|XKki0Rq?5kb zsgG_gwsvzF1rRd}(QXVhTYX%Gc!BwpQepJ0-8kB1{=uShmcuq{cKl8`$GFMPlm22| z_puZUi+S}u>lILA+M0L~)?oXvvw#`0qEAJh@_KBrfY(~eIwU3~#(reZRDO>W2;^9$k3r0bzpObJ7>GoI4Ur&Szjm}v>+D&9b=JvblT${O%eCH=UNd(HsY-4|X$1T6J zhxc@Cf4jHlfQ5tYZBWD>(_8Cq*5awJT3tc^KGSohv-~)b$)lvH&a^85TdmNOPtjFb zv_HDz?OwBgE$H9h)W~iWRn&43f}Ps2%rQ&;eMOo;Z?j{92#8&DLB2b#stRxf;WR)L zOC)W_b9%!Y#^Y+I-8#k+T4XYDqVKl=l{Q~tA=0w`qsyT(y6DMMV8}$A4I?79h4~Vd zDT;+LiC*+?-Fz_%H>^psZ}WL0;D?YmtBDT?M8M-o{*%k)jw1wsmLZwrhhJZ=E*7LR z;%qL+?2G#o$inN6uz+?71=(+T-|x`X(tyv_&jo3k&f7qX0`~q*Hk-}k@rKne`@?#! zOoD?jS;^v~fp?)kTL3rbQvtC7uySxU-M_sUvcQBCEAo@$;HbRO2|X=qwX{{8a+P z-=EUneu#n@j}wVR#1#>ZtWLX>42-qD4OJX6621UndR;+H;U0nOTFt)RID|KDFz_wU}8wwa+E$d5P zjXpr!!tLO`@aqB`t^Q=TVrfKjcFNn|ACGCj#-dRA3eq5>iK`Z~l?k7mOMq9+uPlm_ zLGHq{w3ao%?SsnDjsTa4Qg7N6FYM;+XDA-ZUN365w2aFwyu|KcsAkfWGvc+P3dshS zF=POPl&?*e@PBsmz2pyEV1{#JZ8o78znxcl8LDYIzznscfjEc32WY= zP@cg<$Kf@;0t5wB5}EN15d&-HXo$?1mFQgDFFO`!JI{@^HdM3VGh_OCrocm`g`>`6b|ryHt)=Zr9Y@fI2fI1m>VusRXa5G(<+Zx(N!3F~ z1C2L!R69cIWlxqQchFT;tMX;PZz|9=vc!+S@m@G~ow9eJQ&6*tFuhWpvJR^_fue1R zEmbI{QjWo(2?5H_XeW<)rgf2u{NBbwcV8x*yfJLIGD}7`jxTR)G@~j8g|O->02|KI z!d41F6`&>r=#aA@5Zsi6>FDDpiCyfH9;bd1PW|qA3^2$uj4er@Q)oCcKMPamhYeW$pG_=lFT1Qy9I5k1x}D(tf|O`myBetY-cXAb~-b z+YW9u48NGUaPPZxl{*`weGQ&Q4IOdX77=^6)$DIW`uF|&KEKH!R!=THScvzq0KSB( Oc({50P})CeI&j1Wkuh7bsX@AkfDo|*IIlzGqdd^smyGJDNlYwx|<^}l}qm1J#cDsV{R z5C;c`fZ6qHwj3P${^H=^e06{mDABQMujb&mkY#r5ihcOYWfHx)_y#V)bzZuFLyen% zpHbIgm4E)!xex5S`rz=JT=1-(Oq!G@^wAeE2GHg@_Z97WO@qb^0)+9MQ`QybJo{T1(l89`ygLNdDqS~ za)9QJ8_7P0a)_)KXIuXT<&b7!3DLvrC%PWO*r&mnP+3vnJ9kl$zwGgcAW#``eq?LeXyViz=jI>!=X{AO!=CxW|`hSo|F& zvkZH%`#JllhGKb8-{*##$nRMH!`%2)V#{uE!}o{3-Ulu1?BP=OsWyPjGi1#&;$BL0 zvvwKVH+@}?PSvY8I1z9pe+Oh5Ugh(8__VJk`?LRf zg_g8lN<-s^iqrLhrcQ+Xf%y;}eY8S|P61G%%6nFclg~&gyAR%2g`!RJjl9`f;<=*E z$=3nYnhgwxeyFIUQ`SGuo!WmGvJk2#O|~UpDzLmK!Uita>Y8jnf;LXoe*s#PHd7=Z zM%4x4yAUMP&w*`s;ISu)lDpm+(y%f0{&PEcY6O+B9c@r;CDogI1lCJ=wv*s_vVJXn z0M2l^x!`LnGzZB-7!)z|I$>y6v9uy9CjxPK^I66>#$m`-QB`K%=0gqIB@gDRtl5~M z{iDei{pP4^V6Zy;?KPKKLp$aDendPBO`wDI(`edh?oe81GRn2Bt~%I)(AIPNhw8~_ zeiNUrSi!{Z(nUnaCl-?Vt34OwT`AtzdbNfgX~H{(tz+#V^UCcypQK-NdD{T0uJb|i zXxT>nCB!&1j3DU^HG)PRpEMR3^*8jt6vB(g@$}`vIvPOqa6J*@*$5bU?OGi@Pm7n1 z1%`Zv>69VMEduK4j(3M5oPO`^4enu4H&b73-EZq(K)Vn_p;`QeJQ5^Viw-g01>YO1 zDWxY5ly3&q?+FI#R0M8;xJ7Ds8@t-oDl2X3H1h{yI#+$M$;F=DaQz(A7C*Ph{D!7V z^X+W=>tJxE>?eN=U5c)dTx>=nC-SEEW}mFblPC|LZ1QB4_h7wyEe>;2vWv+caRDYS zNL;Vot0Rzt-P$pTW2#Wa%<`%F%Rniw4}{kIkO9|jmN_5C!$~JzU{*Fxh(eb6E_3qP z4F_!y^|fJ9I}J+7r+b5d?m^ucm`0FP_=&@s%pRH4l~5TjOK|-<+5clFW~c2Xwyt9HPDKKbH-tRc;@2D0qgSr=>)InfqK&YzO=(Zu zaKxBsupREMO-H=(pLs=Q^>R~lbYsDq!F$3ZR1*1tL&rW+;2Zt zUmc%igzEuIoJ=N9o|y1xPmGs?xgLSk@8S6oG|ZR}ZmjdUtc}q0)1=pwb?wFDqZ3c& z)uIoY_&jijI%K&6+rx4*+59?YNj#s(0-+Z>wub&n~Sf@sg8=z8eVp3wVJS3lm7k| z*iF`Ch%FWP9+SBj`1hl6&EKx`qpE4P!4E^4TxVtS2jI4I*PX;r=!LBE?%Dc}DR~3% zi(SP6d;$@LVS;sEdT(NuLv>3o)TH|n-Ju2sGSNqYrwNU_B4@&?QP?|5JG(K@_SeWK zw~AfkihEps^1wTl=m7C|Dy2TUQwKmHPl^{(bB`y?F5Qwgkc@lmzxo*v3tR_48@46N z?KP)9wJZZ$8wLb_xz+>4hsfCLgjQt!Q)ibJZQ5 zN~A#r)-5ev_ZOahU(x_lOg`OrQRDiLI~&!d4RHD{D7Qlv36J z(v?m(wrTqPLwj&LdQ%U*9^pjj?CfO6q6yW0#Gwmke|%dD&ox|C>Z(4G-aEQD#v-6l zp*Sb81RLSpB4Udlu?4kO9c$R}D%c&GC7T3n5Pn({oQ(nj;46uV;XzVlyop%CJaz{k zYfv;q4HioPcGy^*qM_8)axWUTj*j)p!i*6&VGRhSUE~7i7 zQA)jlXmII@jquJctohyvL0&RzpyA2HYGcA_lJM`S7f?F>*zf} zHNPF5I5{Bct0>p1*w#9trQ)s}nWamlG=l7c1EnfR3g`;6j8c?BZ;({)!T8JL!()kA z?h%C^uqZgRJZlbHmsi2Q7Q3($<7`8;Kb`-WAif+?SZEbx4D@N1JHlxPFT;H$sw}x! z1p_NtX^!3nS|FS}pjqy@Z0F`zq3iH~@xik&rEF~7_zQ1Ejj7WT zitZOee52D=y}CzwciVeT>>|i4V(b8;ov~n(@A&(C@@d9x_D6@JFzJPY6dxQ6%@sB2 zn=xv>j_d@PGah+?=+OqOf}>XsH}$Q3qiyg!r)axFLu1^%4>pG?DHc+5`y@KSi9+dd z%|4)@s?_Z&{6dDc%p@4RNFFy9Hhx1~*1-iWvv!{KO)ZBO*qt+LAg{_?xSPHkLxvVK zf#`wSQi6$iyjOM~um=hDN6=`#7$V+h4TaLox4_9VZa@f3c%v$j_a-!px%_!@?C8#f zQeVRWTrK*q_PMW+s?{o2jj3xy*1kl6Uyt$(e-=_d1ihq2w!k>Z zB^Rq(jH>(nI>`d7-lU~qS6=ypS1@IV9j!#FZEJa1&6j*bT*x~^Y{=>n4m&= z_RE0xk48jKH#(XQ)gxQ7-K+NQ5nI~w=QF=dpXk=D4uVaSPz*sKhH2CK2M;MpnQu5w zdMK`7$fG)iqU|a+A2GxFfInkPD4a6Qyt@}7#O>hWNjruPnD=|mS*=$4g3gra4We?h zeZ4?;H);GuQNSn;`k5SD^|$IclzOgyG7b@z1m6g8cqFQ)Y0xFw?0Wvn;TP_cb>3C5 zTYthQDJ|fgeDYPp)hR+6k=15K0{h0+(U0`CpcZn4rf=9~CwH@^*f%r~h>iCJ0{Y0{ z{9Er(sEyy7%fg7qUn3s%tH6`ysRb8&0xoGf(CM6gY@$>kjx?e!&|ObLZup<6gi9+T zwHkL;Zfhm0@8B9OBI8TtlR2gyN|FQ<0a!Mq&wO8I_~Am-&uE(kPXJrbr~`xy-;HgSWnXJd3TXE?>IC zS9nt$=_XJ;(Bg-v@@xqd&^trAlqmOt?nlGU_+xOSI(=H&p=TembEpx*#;F4ka3(gG zjJJ$M9&~;%+q81Je(wl(+@7jTF!XTUq8;8ygqaw&9z~9lEy}2l^Un8Vib13edPR znL}@Ys8Vd4SJZ2V@fq)|MvXY#9(OvztcWulX5PntT+3 zaFP+^Wv<3mbkro7re7+OHPi7>Tsh_4I6sohqul4*8}w7}_wFv(e2gdG@mk*3ZE2MWf;y=j7!_3%5i*$cr*1;=u<)I0r_$m003^`O3s%IYmdza4RG z>4W%d40Hp#!jUjrrg)2hO*WNwZ}I`-bkOQR@70X@7{KGxV%5Hhj#oQ>JuVz(dF zRMM2pb&q-T>_j65wIYhz-{|*?8Lmf@xt@@CVy-$8s})lXZYHyKL){hlyL-ZTrA2)7 zVn=7*g_-&+L@nXby_+1npp?D4ZcPtyd>!IWLl^oE#h*;0Xs4CPj|??0b}BXKz;#;d zs&9P(kK)=+r)RHCNK~9U5HFt`e^RA$M0#;{#o>gu-V|jT6^iLOQ<)l|Px-pVK|T%v zWN!asm~O2VK1RlyE!{O^OLxZ_sRv17-i z?Tl^4#N<%{{J93+UF1y%+m3M&`MW7oOUqvzm67s&4eJ%AH!6F|JjthQ%m|{7(|y4j zU#?P*ju)8>@{+gmln0`ZerZ{zl1hfVFLktLcTreuu6{Iz_JmOucYq%8_@X@7J$im9h2Bai-CPv$JaUV1%|5kU8!|n&*V!7d*N2;=3a4 zGh|VALv#1Np4L@IR@2fn=XLow`n%4~a!MHahZ#(l==d?}#nujZL-;(O9)RtZ8QNf) zt}A}KGFC5AQg>+JP41Xc3fF2Om&(CEU`pxWzW*7if;406%G!gkTieXBvoP~6N9O6? zJ$hcHJuRy{)!SK{mc104RK$^l+0Ti3u`rwQ>Ut*Je#jD}9qWqsesWLmdZN8s4b@;? zQiok>10#|=1 zqx=l!k$RLcq=!u{Z)jp(YjDtfqBG&y_b8=AvIsv#1<0NWCDl0N=SPQdx`>F*p zRT#e-Hj_Hyk%IN6w-2bV9U9jg;+;8w+dBKYxWY>+bs6(~@M{uMGB8}ulEg$R+ad$Q zLM|$cc}OJ|AAyj1+04j}9ln?4i(6&n+852~?YPydP$x_QbYA@87uO1gthjXVC5urH z?uo8NmWvCClvH4NoDsU4)0KzSW#=%&f7cGJ8OH%oa710B*Evi|ZnrvUKELW)_) zAh@Uz6phL=QPVjChiNB03>xc4oImALNLwZcH}a=?8&g0hI=$y} zzrg4{^f3=^heB%E>m&OLnm^!$TT{O#&F}VxdJS~uRdg*m#cI`;ucWn@7>+2n8;75% z*OB|OJ!0@qn4v9c_esJ)e*EC{mNh{){^Y{Tin?>^3eb5~(sl_66Ux4icJi_7mv|em zPjVtG>mHCfScB8G36Kxw8=7Idar%s`czQNn5VZRBc46Yny%~iSAGC%c0aLku!DwJf z!E3L1*wdEKjOUvm9I+{SgLK+A)d&s|&I@}#e&ORY^E(bU!WE-l{cx#(eoK4DCxA}b zJPPq9_&g6aCB}3Tj=dbBnmlGjMLS{=RQnm7=uCV4=4!!Ls;tb1C#^}ZQi`{BcbR%a ztlhX7ez-V0%`LbM3~shcz-PG;5X3gG!CG|L@3+~R&5Syf0yv{sUNF%p%RM!wv@vx$ zDOHz$=qq!olr#)LsSVe^$``c^f8BJ^$la$J*w>G6(wNIBjB*u2rP)uAEx|M~gp?`s zz1O4cOGC?{QDJ)p9)qQYcJpmIYsSPDkFZ~h)ve2{sAi1}Stt$q{F!dh4CdT2Tl|CP zXwv4gk%o%&1jVGVE27ZUW=z`~eB7;*3@{K=EJ*olRNz*7qzTK0F_44htvaAgZ>mZc zfStM_;ByXHpJtfYt-{}J{n*|{7@D=1`?t>CIAJuJGm*?g2I)s1HCPlDh`;Q3T1Ppc zA~IT#3%ivn#}G1gwNaecWbNUAZo&HuW$ zo|RVA9wpa&={DUx;79Jf#w7u<#$$~j-2%&s(NDgousgM7p}Vp(&S>a#-Vw+NiJ{4s z+=o3RKL_jaNu4&l7p5mYQ1r+>Y&X7t|D%A-)VMOPVianSoq{g{gTYaEdMWFbu`#A;6Xg=M zW5&+ZqOs0_V_i$|X7Z{e*_KB!`TPAg5SV9_ZcAYLV|-pp!wp}RRZ5lFGar(RRo9hATLTk%F zRR2r4LzesGk$bchmoee*Kov!CthyNHOL2K384uCG#^OT^1 z2Ypg5aPl2qjIbGpeU7}F(#82G!ot2eyEWk}aJwo@2E1I>snxQO$n$Y+rfFp6HorHd zYpPZj)uiRnTHdgP_ODGk>zbAAxk;sMV`|Au5{D#W`{P+O6|wkU|_! zP1>s_TbP3jaHD9DS6O@cS8kE|(^p4tL|mCY__rzBb?ZqT?EDan2e{?2&~?SRD#fe+ zIJ7gXZYamk42Q&j{KNLiL@@e=T&?gw%O|`dy#}ZU(fG&0UDK4g(_t&(eC6-U2}~s& z0Apd@2lVhF%5 z`Mc$lXPl%U6QXy76buaw&GB`o(zD0KAMg5BGz~ip9k{s4-N3x-TCF^-;(|<8NbmPyve`p`}`?i^eX|&{2y>zDg z?8JH&0sjNf3SAF#tKAA!%1&{ghKv&`f%?X<)y-du z7KD)GqM#BHG~s$>^W#NBhnVbo#zrHkkI_Dep6)OQxBwMe>d%+fY5uj9IT2`3B;%az ziVO~xs?f*G4vb(d#@@XCJ@)mS&ej;U;F9(#Y*|Z8I~=y8!E@UiSIf$%ucHHrG$EtF zeG=X{OlmbzNWP09R)JeqD7Bt@V4vX!HP0c3oTRJC96gipUFFkaBCOKHc9 zZK9aW<7Z)R(HG3_+=5Q1DIe^Mk~o&nP}Nm$Mi2H&!ctSx;(TP(PE0Y>(N?;03nd( z07K=OkWK9xq2AlMY2D9wyM)z048bBlBS?c0dCYhoE}u>8hPYBGTh%lAD+aouxu}?5 zXV@a@vERW%a+-AfH=JSl+?67_9{-MCIjBVgcGLk}rhK~pSkJwfy43*z0Dw79Z7@x> zs$I+@daw&87kqncSzA3X2By!seb%%t96U?AoqXpg-h`4@r<~+}6wUoR@~+Dz)&^5n zMfcDK>7iDUpY-U4o8>4W_1oLJqXmU;lyt5o|Iw_ZRTe{MGXK(uV~Z-WR9U9zjlSxV zKRn4&kzTc19};z=2-F9R<4!Q+n#6+iA8vfVU#L}Fii2*{I5z8KG(7;x{uiIx#s|dMAZoF?iO&eH z`FG@o*P35{X=<1dhro%wmo2XR_PQzAc*%${iZtGeGbC)-O*5rb+=1ZJn~IK6C)&vxuld z-DtM;)65?{cy4^SzoA(XYHTxITkbm7|0tu-VZxisJS-E1LXo6`^`x1~vCb8!(A}$6 zPy%A-k{Dw#*DU0+J$O9AmAQpgue|-JKorSdd99(;JCKIQkyb)VILZj2>Qgh= zj#zZ7drZgL2!9Bw$(tFt8xm8t%h9zaRyxl}Lh6%t3gt(3idV%SC~MVE8un*M`ZdQP zds1W7$1k6NKx4qr!|V09@KRUm;~RH>dslT8QRj!QtWJYME2{Xf~Z^kBc2lo#Dc-<`0akeU30F8VJTS;zMXye(T-( zsq-bUM>bh=rCA`2A4XEWR}P040$?@olUgB|Q+oYa@A}8I;Q)I=bL5(Z{)dY{eeFkC zyI?~zDt5(IU#@q^bbULvQOL_tqRH3T*2HBtb;In# z>!18Z1<(}d%{q3*;UNd`_-r7sCiDUA4dB7k5jo-krY^{4Su=ZdQ{UW(n0#9uy?gf6 z&J$*b1D6o{TRF?4Mk4zWxlUCIH(A^NYwcP7QL)V`$H%}7_~W!nWzDd6URt|Vf<|an z1`Qd^(#&GO&1CPqySB@|N?(=amx<+(?b&L-Ari+E-C*^(hB_|Z253;=@KepZ-llu{ z2;&1FmkS0b8w)!Q{c{k?#rT?I1I#-7Pso0q%gnob4AMn=(pQsxJm*hjw}y8#R02WV z_Vh*ihsUz@516+i;2rpIpvb#=pavtnG(;CY=yLS906pUCTB`UB0lvRn&w^`NA`c}* zPWD7q-}1SB6VM*>%s0&mm9~H)DJ8t0h%CNws-EL*q3CU&6otoKobN|xe}><$RjUAw zVQfjIwu(P@RoSd?dX`WApDWI@oJR9am9i=fZ7O$`MN{P_tuxlfF7tuHGukpq=+q| zFSi<*eus9s%2_927t$z_*dGxwVf48OgMdMWMIh<>{z3DxYvpJ0gxQ8;u`PHDU@7^8 zO0liGu|q*G)h)(5!N+NN;VA0G1y9oqokBk==w3^;>ZU*dGqFQcMi zTkNG}&318KIMM3|YBsi2cBw@9;E7(Z-(VTnRDtjg7?P}osrO#KSTVfZj9<0d^(Vgo za!A5?q{TbH9|MF*64SX`<>sh;QF7`f^`8LkQ@7B~2BHl#EA^+=Ifsq1-1(iDsN+2# zL54qZS|tZ-EQZ#^(4a5Q zLh-NAKMJ5<(oU5PpVYQqR3Y5`F(NwYU!d#n(o#r8_*0+V=J4ZoK*x1qVdw(hTuW6l zi=n67H=?(1!^-oYHYqnlrR36pCj*q;4s`;+vVi{VoW-wJculb+4fKL2QkzIaexrid z^R-DpBHjV(YZyBPh)mcGHv<$NUWlEa_|l;dM9te@Yor#>_bLOQGSNoa@C7$34Fv~V z=*Cv|`0fiiT_4Hh0jQeJoqj{6lk&ngVEAgyJzdqjQD&$WJ1*L0{xv%v`v?F;$B4h~ z5I%&w%4eMKYY5(3es|4gO#Yr&0{d0Ln+?+zVpp0^zXQ2U)zN!I)2udMTgWA8LnOT4C+c4K~Fd$ zWXv*tgzK^Y*z$O~Sn!-leOLD(>}@m8BkT}=zgbUzsJ`I^nFn2Y zCQhhIw~cVUyn!;*n@a02}f*{Q&*b@$yYCnA-zQ=mjbBF?)_1u(I8V`BBBcjhnc;n+G&s%0ql zqC{`sLd@*E*Y=hesFxB1@Hmx3>rime0eRH|A~>MVyJ(SJ;P{|dw+4`OFD*_^_1=}uL+8RfHu zcg`wP`ce9)6RRde4a_}5Wj>sa`L4Z!(@!_$*LxBh_I`L>Xgys@`Z9+3bW!?}*LM@M zLe;gdoLW`H;?P%ribu+1tN9j)%VUtVuFzY=I1^xMsS`V2;5$TjQ-%BVw_ebNH&o@{ z6*ysGAesFL4G#_Zv3CUUftcQK)=S6G98TcKB-0zPZ$+T{i9F@S0`&2Z=Up_t|8pmr b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_unsupported_2_0/00000.png b/tests/snapshots/stax/test_sighash_unsupported_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_unsupported_for_segwitv0_1_0/00000.png b/tests/snapshots/stax/test_sighash_unsupported_for_segwitv0_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..97524e00dca3fe77a170d83b3dd8dc72e7f7c98e GIT binary patch literal 15636 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μQi z4x2A1m+muQmj^iX4G3|gdH2x1eqrr%S>~(Iwp((iPYr9CwcfZ+wq`6*#sS5evtn;| za#Sm;{Sn_+e5v&cQ(u^Zy}Zgv7wt@kOPO@V8KI2EVtM`^4nEmMK4$7_)zuJFKxgy7Am&~Mt_S|% zpF!IpzZ3GSy?L|kCre71Au16~DaI})a{)DF?A6)d=dn~C`Xe>`ub(<}C#)6DSN|z0 z|JPshnw~ohBdX#`^FEF?KMr=Qj#+~i}5)Lt#B_( zZOMCp4w7PI`MQsR^#e)daF8i`wn@#c?>#BS7-#w3zuI}~!y3Qd&xz`;64)-k;!=9T zUpk6VNLc8NZ4Wf@52);$VQ;;P`wB}*9k>{k2L*lyP6AeAG6pkeVM7UYls2OQu8 z_hb}Y3fMt8Wx_^A^7sdcxw$#I;3GSA)89*ZrOe5rjoB{S`NEf<*XI!j+D$)f zj+$+xxnX8qrv<0$&~PanA$?kZoxXCUs1Lz7Ene{dwI5e64)RyIh!jubcXLtNsu&W{9^Q)^B>>h+0<> zJ~J#o-0(D3EHCGPVUF{fT%@{2f~Rh*Td7Vjuj>2`wqZORV;-J&lu>D%4K+DxSebR8 z>Um~OWRI?Ewnxo}ON@@FgvXiDq59*~WEYy#KI=zT`y7pfqNNIuJl(>aHD{R`++(Hk z?B^r!2Tj)AQlPwn;Br;tV1kSsf3}Xx%qs|!ZMWD1m)cZX!mI_yCy}-Z>L`@ddtQ8& zj??-Q8W<84`bYeVpRG-c?%XQ|#Ba9aH$%^iec71>OI@RT%_vTX%jj_Um^y76Pkt50 z{z_&c#$%*(16DD4a9-k*j{nR4nJ9maf9ub8C@PJS$gFO z2(ZdrfUj|E5nm5CmYi+K2d=AnY+95WanA}MB3_CIF|G_2IFQGms8FM807-<}u^Rm) zP&<80ff|nFwWs9)<)cpCZ+cv&*(jOB6H+dWe;Kf;YJ@P~dT8c}U z45K~1;;=b9B4|2{Z=kYuNu+Ocy+#lp|0e9xA8=|`=?WTbyK6d#IsWKU_&4KSPQ?| z=mTXJGWM2@7+BP;nj5!Pl<>CiwMyk0P?h2<7e~gwz${`j=DB^bca5e;MH|uvjf%=> zPdDnFs9Z^d_y$asOI@KQqA~2J)&>vgn0xUL1n&Lc19^+JnAiLIh>sShf`B%(bi*nQ z%*l6U2Xj?atg{f5bCW8B#e?Ple0zGn+UU@1E3WSq(gZnN$W4wlx%XkE5B}%nCcS6u zcP}Ch=ieV!v+B3{z@>tdk^csKZcM3p#I_MmyuU6lEilneuy8 zw&6&(>u0yg`V4~+yetcT%i4AmMiV_!`@l#2J2cW_r_n;Lfz7+k zhdT(n+p>Q0BQLFKb4n#Yjfb7u5u=wwa)+M~_v}8J4z6Mt-~EkiAP+6Q(Kbw|R7t)_ zbj&OSd^|Vr*3+MEXm32eTemGE*~^=G()wBVDcF<965){uy(zJb<(4YRWNX}Ytk54O zD~QQtR#Yt6R+rYh<+0E$xkoOjHMJ^LG%h@;bXpuxPF^sWb4pjH*rHvvBiTRu3P&NMZz{&pvYxm&}q@f+)coslV8!%C|?F>gcBbcahz!%R>` zH9}+E0(%!?w5zSI)%b-c@;XTX+zxA(J=1sC;Q|JcOKeW1J9){I?R&WELE<;^xoe zE(+cu4tDXxZZ-IN8di~w70OA97@yb39XXak!j$XVVC^OJYJ2T2#p#QhcAoydfbjWO z1IUrnM9S@D7LsVI=yHR2bl}l}(hrtc1!xDW^7~JqfL#C9XTLFIi@6+L19YT%S2Y&b zsRqNRzpg;0xbrwa=O!bo9Ho!xDG z3`o!vOQHrs{nT0`TkJ+&ID{VxBw zdXjviqr2ZI{BB9p%3Yb*Z_+Ua9*w4-nIhc8-+qB+dQioRjz zS9bygJI)XXI57sRxS5%lSP5mZC#1kL#k;~R@_}u z>P4!_>vRl_0w-Qw2@wP%{dC8jCWrTCMxhW2oHOhc{t8Zv%sNZ@46~^^N4e{`*dZ~HpgQn4u2JuU&hgcKG z`DNElD%bDGcGd}|S z@_;v1C!hqwZw6@}GB3s>)t6k+rS0q$UX4NfFSqa?HqN_(g`20%3QF(gYS7Dt-)NN- z_+7&aSF_)m6$_Hrx`2){K6U+bK#(!K;sK4O*n>+rhE~kk7gS8SJYFI`JyqIZVvCp2 zeyM3$06$^bqmweGW7QKuW)1}t4XB*C+V*Nvsb6JZoDoAU#Y}&ux*mQgs2!crCB4*{}se zElUL{&DE7P#sr`>8QlvYGuy^T|3w$mbCr3+(+e<9xNRe{W37R9$%FL{8ACGKbHx1W zBpbOln6f!3_~t*5y6tk6pNSI+K(B!MxX{a`ucf zQLL$?nyNl5fzI4mfM9}eyNp+y{~ie`DWC5z8? zm^-=|=Pxb2+sD$uQa9IExBzbS1=98Is($IKNaeo|Qic7Y=+_we%-w|%Tzjoa&adW- z)+tsicXV#ITh0EGjxPCTz>BDJXG>^jJ>M9rk^U`kM|OATI@29Yk7vM$?!in5i(dZS zx$xjy<~+TH_3?f`1{zLN|im#qiEc+qlaZeeA;W7{SL0QK`;IW;Kg(L;Kpp`|%t zR`FX{?GIeQWSq;>_U=MO3S39VIRrk(t@;f5ozzXSr2Cu@-LH;xz|L`5sq2PVYLIwd zVUpP0Eziqy14!@G{!?JcBHZj{>8Etx__68#l3?nA5kH<9f|5I~8{r~aX?fneT4bXo z-;kMOZqkwX=UQ|x`Mi7o37AZaRZv%RQe_+F$Zn)G(~>M%1|N!|bp&QyhPkx$-Nkg= zYg<--2qi6H<#iKRq&)-&0`i z$zP8iK3`o(vmO&O^6OdC-_Vv)pSB6+oK~e^W)C=aoLgQOoHRy(Sz(;0vi3`Gr0lXL z_RQGf-mul*#+BqOyW`|NNvhUdr(L9BV^x5n4PM^tj@_X&lLV{=+{1?5_q|ChFVGqR z5(zX;OHzz>bL#*wbm?eq1CAP3Fo51z4yHWh1bVeB7{i;Le2<<>8N*18B|WFzqON?s z+0|cfG$QaK!Lhyhk4_44Ac!rG6^ZeUHg5?gAEJ7EMC+3{3l`nSJrx#Qljyx|6@j3^ zAbwA7xi%hi?jiIaMp&Z6dG}s&d{=~ohh`lZ)gP-lx%IE8o#-#RFBwTgVYi4&m%VwK zbV1M9--C52y1g1?7Y)RqPx`~dq4(0e^Bgig+|RT)e0=cpt8Rfv;3xF>E9s9}oKwt( zH=tK5?a>i%5C3jZNmg?Hc(?m>=A_;mhA1=hep0WyG@nZH@)nf)+2g_8-V#g%9YlF2 zCjq|PocYOH5c{ZcXY1&lJF*FBg;UJQ!`hPbiSPD5`ciwuwDh!>kwvS@#CQ{gLc+AOvMv&6})wWadNp9(qWr%ug8?-nH z;omB!XJ%(-ViUK(R!u~Hx{(;Em!m)crFhGgQMMFcYiCEWSJ98du$(8l&y#fyR0$8e z3BxjI?*KKq z0f^1IJ{6yAU95Ms!TdHVt zw}*7Luz=!%lOdBM?4r4AF;ypJO)7JOTbuq!zWd?{^sYpQ%+uuteifSv43s({$lsG0 zWMsY7!l#ko0WqKqJ`s*- zt|Cro8vlqD$(xmoa8dcuI1SfNDW^VwSDiI)DrLK8_e|wGt#{fA#?V212c{4{y_OHi znn=r*S}nZ*w&vXTuBpld1KG$yO-pif0LQLOzKsh|{eYg@-6@M+aTRD9GkBTLuLCBM ztoAsg&5aGZV5WHB9n%miPVV+^+`*oI3ckL>;{kf}t9(sp3^;9Pck*eSGvQY%C{;l9 zd}?vya~pS%TVjR#MT@9)MX2R(mi|33wnd=TUa1W38* z6F3qluCr~Z@BlB?;F8Lb%%@*J8$B8Y9bG3pvlvAg2U4%L4It!P)qu*BM^qMy8Df+l znI%mU;^3Hp~8=}=4 z%fj?>rb+esju=*`OoJzU!^y`dIj2Dnd#t1fT8(@9~ld1SQEn0&d>MK^|> z9ef%V=?1Gr@0KxijGMgfknw4nWR-TyQ6+2JBD0Gh{<1$i&W=&NPK>0)*tc2z>T1<) z;UU!!rTUl)o^^erca$mJ+BBstm4I`>!;a=#`7)UrOiVv;Dc>JKR6fpA%=vNi{p}RT zf6e9qYHYb|zkivS43$wwoBJ&qg}=;rKIUjo7t8i}jk4pb6ddR>UB;vb9d!uO&LWjA zuhpgBuQ@mHa8?5iov4`NPm>p zl$}ob{~@ZJloQKRG*I@cv$V78|Ll`B3OtkRxAj#$Y?U3$7|yaUE9>z1iAIz}UsXKG z=>#wg?$4~5T3vJi(ym_0EB)-QlLP>7P}gNMpWa9W(uu~Wx61js^Rs5vB>lcCt!BDk zX5BJjtfHQx14m7Fou4@bLs*S;6YL*o2QYS;$t!KIqUYa&r3MUk`j%!mV z(}X%E**xbq{j^HqiJ!M#tUC-~M2>`3RM@tEc(v;3#xSulsC;+(MEMYOdLO}~8e`mk z^A)`TQB!oj6-sk{opvz^*@o!?tV%)yx=c35oXryrQeTFo4u44JmAs0(O1KkoW5;kA z#QYTQ9sLt&+6S6;wZPYrwS)Tg+)5`>kwT1)MH%X%sR|UxK`y=QqHB@(70Sq?`#%RoBwu}MVdTBL>r!HSURH(eO=z2bK%0vZO*(HI;2N1GXV`WW{ zmA=!paTO5CP*@(V;YlOn2vh}k;Kdb(!3YFi?nQ*D$$fs} z>o##rawGap7r#A|Rf{XA>2tfP-o0nGP#MaQK6y@m^Oa%VzjjX_Zp6H+J9OYjc1(c# z0=MLqB=)SD5Id+U@TM^&`7@Ylh~2^})6uC`4u`L->Y0gNU4v7P9Os=Y&>$@-qPd%` zwFV?x>$Fz0&2uaH)!{{)wE*L?Emsyaq$E^oH&`j(TGvwh;tB|ekPWcLqRlGxRLj zDq(%v#WsB-+g7Oizix9<*)2}9ygQt%T_W)9{_UYU ziN-aX&;LvJKWzZ5bt(d}d{dw?e)H*DWhysXT|{8;O2*#*1Us-0sauV)8TziBQMd1zxd--!Jnr_DiVOXgt16sGz6lyTtG=(@aGxIuEykr=- ze1Jb6_f})OQbV^UAcP3v!1&Ez)0`6gJag?dGFb5NgR9@;UvVb-LY+`>Mg5pvjTby4 z7erB*<59wh>0LEi`MeKvy0fYNLa^=~Kqdu{`riE%z{-j;exnP~!RBA%4 zO|4)$M`!z0IH9V8Sr``q%Wd{bz>phEq~Eu=4xxhG4`FrgoE>kBa|tc+)KKL2*VziK zzhgeSs)0;RdUX^*W&#ah1DIA5jIiW{Ccdyf>&}*T`Cl)=%04*~Y%nSHXN%imRqxtwv&WS-l3dlK)s~7& zSMOOV0bkQ`(PwN(MnW)>cBR&=HzSMm0G!7vaIF^gRkM>50o-xy#jIVGz`F1dJb6T? z*gtC;1MQV#*{#!d(qvolAi=7)UHp15?9|sgH&hsR^`CD^__sFsXQF(jrXp!bSI*8~ zH&g=O{~X%6N5SDprku9RFn_^-82N5IY-(yQN=Ig9o-lx;S}64gyQQ~RK%o0;{{kJb zk}2CSRQ^{`^^twVwZ!YrVI$WdGng5TipbGoZ1RV zEd4KF*9?;qi_2ZD%3=_kugFMBeT z(C@}W>h|2JcGh)h|M5F!2JbOw=rWs9{ICR%mnA&4^s07-x^Eet;HwO<-Jl}-Bojud zfF!?#m|LDaWzlLv+X%Ag|^YX^YJHICVea4w-5 zPf@xLFWk|YylAAk>~}jQrgYZ0sm3sKGdps2?8eJcAPl27O6LI&mr>7T~A z{~j#T(mqSKlfV(WJJnfUS{@F#DWt<1{grBL6 z1c3qDR3*C!M@QD)(SFEz?L(1nPubo+HQBiOL?m&kslu%(GIbHVraTZ-lHeF$BLD=@ z9D_ukHI@GBpSgFFfQ=U!<&ZRGG`6wGeyd@8S!!#~8E_WtBqR2O8bGV&TATbQI zisW6Zt!8i<3asy+;Z?WuI46CggI>0gzJCov# z`!ZU4lh@g3ChNm+{it*#_?B0ui#(Of=HYj(bPj^ZJJ&~#-4V2G^Xw<^x<$ERS~LvK z{~V70d3!VKPppyb-vfx%h}5{-o_^56nEAi4gx`~cxZYsC($h~L%ybS?UxzQlGx*dM z3|d}J5BVr3u!r}4vQkUL6~)o$&CB|EKreGW_{I*8_Na(otNZ5n3bAQ{%h?W5{|F@r zf}cU|N;=8b>@omN(Lo+}_mi^M|F|>u|HXW`Df$jWzVw8Kcnfwr3qVb*E|*^Py!U?q DL|>g2 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_unsupported_for_segwitv0_1_0/00001.png b/tests/snapshots/stax/test_sighash_unsupported_for_segwitv0_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e72ba2fa664acc6811f4636b7c5c3475b004d098 GIT binary patch literal 7472 zcmeHM`Bzg{yGC)Kt$?-_6a?g=Vi_$W^WacOQ3fd@AcUYY$PAJ&B!oDXv{1w`lrc(_ z$RJ@1kPr|lMo0l6K!gy60zwipFePLlxyOF%-hbe(Z{4--?a2>&t&_da9^UtP&ig#) z*NfgD^)Ge4R8dh;_xSOLpHx(~Jy22E{!DEJ-@o;c5qPY%TS?NRwP9N#a+9HW9LYAjHQO>T&_TVN~ zLT8*$LWEV}BtrXb(!Kv)<<&jh?OQnGea=(nR{HB74_)1MRZVMecG&-^MlK*02NM|1 zuCJ?riy3MpOqsL`gn?V)5gdFx^GmIyX5HPUl~pm;I(iiO$y$v~Lzkn0b1Q+xw~A#? z!oXFv-16gn4NmZo)SgFP^rm=6oxHw=_SvlMV%T6&BRB}ntMGaO*lOd?N7f_#d;)M#E zm-VlqCRZ36nJy4BErW@G8QoT&y4BXr@xt=%g5~p#O*!R1HX8gyEYUv;6-(fSd>I^( zN(SrP=!EuGM2~SdrXEFyRWI#V|ojex?j@m3R-4in0a_Y@FsTRcYq?4&?!N_;%KPuFA{!dZy z&b*WEyv0UeU~m+bzvL1>tf4bju~j}wbJ|TOeXO)xoG%caj%V^y$?_J|ySZfP$$A5E zm$_0n+QN(%KesCM^xi65k)!8!=_si0$f$jN*yDo6@i+zRJq+blO;)WQjoHjeOiV<} zgsZDJIbtwofkvZ6EsOTz71l#kfl@O;LakMZM5&zTR;AwgwKs>(y)>g4+Ri353Iqbx z0QqfwlfZL|E1WnRvLr!_K%oSv{u0k)4A!i{2T*0K=*q3)zi_d1*6{;8ZhqjMPi zy}6Z5;jOlKW@c-!|7hi19xj**2^0Jl=YmaBmTZMvc?AE6M`svdXc0je7HBFyP4)rc zC33M&J{8DGSgAOb%o$$el6RfDO7Nn9F7Z>HzZ0Hq#{~(MPeZG?s%-8^iKp+sZ zX@#i+$(5BSwycYC!9tqkK55-XH8_&xVUW*XBoYCk4W==f!J+kLv~E*463N@eU(WsL zMrPp z_=0$Jb@?v)a#x>jWfez=XHms3jkAH1$Olto6RB08jN9GY?q%7ZJ~yzNtofe*@LAYK z`h&2AE(R`thJOv%ZiM7i7bjtUBn9UfCyxkL^j70rA|Bzm3htphr8-Dg&Tw~iW~zOu zH~HZH8vT5&n%Ttub+SiYcKG_j!oo6L@agjy&17($g+qHE`cm}OE}f+_$L^;_-2^*u zBpIYegts|e?+?9>#lHiD{Dq⪼i1o1QQtS>8R<~2~3;(X2?n;%|`@ms%*P_OJ?f| z<(se4)nACg+*`5($)(F zm@4x_n%x(k zasNI6gAK7@nsT9n&c0TEpkpgngFrIA+ky;}@0b>=ald4^M710>l0v6bZT#`ai zwb)+Cb)bx>ClAez0*nCPai2P8Xz*v)pxF7Xj@{Yh*0F2#fo584yG~i#Sov`dNwFmp z18{lm0-Ky$3w3gBUBI?WeeDm~JHx=PuC4?Imr}?FEo`f7L|2=cU# zXLp}Am|$Z$&%M9M*U58dU#geA=Voz)YqhpYvTVT+o!#z(>NZ!-kD`H<+B-*0H}zhx zh|(mi_J$R;WDZ$8L{1yk6c>Br*+=S+=kQWxJE`;Rxz?UG+p1k1|26dY{z%DD;P^{T zhJ@YKe7k@k44P2DVp?Gb=`KEaKin!p-!PCx^-@+(zWheb<&_z2y@`FWi{~AC$fZF9 z5D+l`Qe^q!b1S*9iu}-;G|`yk9W4Da$IwxJ*Xa!?g=B==!ge1}d{I`MX^od{d*~-# zgJF-#XE3N$j{P=g>@qvcL^!gDC10V?znC}#rw}|LI_+0 zdWR^TooUQu&hh1Pf{9K!`AjKi1$h@XHkFc|7}p$?DtlmQPx7x*=w%8vhbRux;HBF1 z^#?-EXF}H8{eDe*U>Tgn2|xk)wfD}c4|6-X%LSRns-2H`*H+<@L$(qOG^jE*K;E)DRJ_q53Y%>sc$k88wqM{)C&xYut z$oHP*ro^}nKF7`XNrb&lo+nZ|pl=iSW-ddX|4BvjT-~h`JHAr;r}^gy{>g%Wfbjp1 z3+7PbsoUrVRsxggO#T>dbuiBzQs?S=8O-2rkdEh!#=r!~SpYE+Yy@m&+@E^IN+<}m=a6cvINs!Uyf4Pgfl3znsVP2~0Sm$)eDEvj z@&)qck5j7AzbtkRX;H3*&%`ep?cffKabaKv>$$YSEUGa`d}i9ZKhwp>*oC%W<^27l zs;U9~^Dova+AHyReD{7P5o}SwT0{k59`}ZaeWMv*kmpWkLlZX)8IKZ{Z&;tVC6a~d zP6O1cEnAbsBbp@5$>kwfBOq&uJfM){hDnd6CXPTIkahKM6W=yvBd%B!M5ni!(LRgr z&*jY*DKQf3;}|WAobp<(-&aw%p;wNrm@$@aZ1LbCd#|OkDY|IkW*aMEa4Lt-iJo@H z`NsH(qchpfFMeLzm0SLimzvSrXv=w`=npkvy|NZgQ+(NPxkL|5P+%I}+Dm_yqtOji zYItoPdKFBqODg-Yf^wiIBkxO289EAcWZQnQnm)uo%pU)52_xb8h__TJJY1HHBFYM#Zps#IjMpoubRw{z!JZF-(*bJ05#c zny8N;O{m)zCyZRRpi9D-L^6wSMD8=}BH^L>$?G5x))kHRmB?dfewRL9f8hYPdaB_d zZJBJ80yXRF%WP0VC~Zh=u$rDRs8}cSA`uCfNFRb``|Xdmcam!9$>&p{^?r*HfMkDM z#69M--X4UpSVkSgW6Mf|L|w6xvSAneH)}Z8oOE1=Juqo^iyGbV%_#apfa9r8L<_92WCrVS(N%+QuZcZ+0fKQW>-YtFDnrZI+-Y9`=cPVG#mYV z!Rnc6tVbRH*l0}R*BA5ssE6766`Xw83w3>G&mXl#X-7ar)Vs0WgoWad7gDAc_c|&M z>>*8$&#tvcy$~glE@nLj!k$wJ1^GRytwqtCs|Od?04bQ@L+HQ|o=`_btI$mhWH7G} zJvfO8V|lsQutQs!JouevG2L3V`he(QsUOuYy7qdJ$~Yx+X1C!Q^9iDQaeSUFQFg_) zt-B*HPQ(>KFc$U>ZB35iW<&tVro9Oe^B!1MTixtgq%+cU*sk*vClO_X)kR# zM#moa!YK(%kwjwe0|zV-gy6xvE^PCHSx$LX6*<$KdOhVH%$BXYb9l|XKki0Rq?5kb zsgG_gwsvzF1rRd}(QXVhTYX%Gc!BwpQepJ0-8kB1{=uShmcuq{cKl8`$GFMPlm22| z_puZUi+S}u>lILA+M0L~)?oXvvw#`0qEAJh@_KBrfY(~eIwU3~#(reZRDO>W2;^9$k3r0bzpObJ7>GoI4Ur&Szjm}v>+D&9b=JvblT${O%eCH=UNd(HsY-4|X$1T6J zhxc@Cf4jHlfQ5tYZBWD>(_8Cq*5awJT3tc^KGSohv-~)b$)lvH&a^85TdmNOPtjFb zv_HDz?OwBgE$H9h)W~iWRn&43f}Ps2%rQ&;eMOo;Z?j{92#8&DLB2b#stRxf;WR)L zOC)W_b9%!Y#^Y+I-8#k+T4XYDqVKl=l{Q~tA=0w`qsyT(y6DMMV8}$A4I?79h4~Vd zDT;+LiC*+?-Fz_%H>^psZ}WL0;D?YmtBDT?M8M-o{*%k)jw1wsmLZwrhhJZ=E*7LR z;%qL+?2G#o$inN6uz+?71=(+T-|x`X(tyv_&jo3k&f7qX0`~q*Hk-}k@rKne`@?#! zOoD?jS;^v~fp?)kTL3rbQvtC7uySxU-M_sUvcQBCEAo@$;HbRO2|X=qwX{{8a+P z-=EUneu#n@j}wVR#1#>ZtWLX>42-qD4OJX6621UndR;+H;U0nOTFt)RID|KDFz_wU}8wwa+E$d5P zjXpr!!tLO`@aqB`t^Q=TVrfKjcFNn|ACGCj#-dRA3eq5>iK`Z~l?k7mOMq9+uPlm_ zLGHq{w3ao%?SsnDjsTa4Qg7N6FYM;+XDA-ZUN365w2aFwyu|KcsAkfWGvc+P3dshS zF=POPl&?*e@PBsmz2pyEV1{#JZ8o78znxcl8LDYIzznscfjEc32WY= zP@cg<$Kf@;0t5wB5}EN15d&-HXo$?1mFQgDFFO`!JI{@^HdM3VGh_OCrocm`g`>`6b|ryHt)=Zr9Y@fI2fI1m>VusRXa5G(<+Zx(N!3F~ z1C2L!R69cIWlxqQchFT;tMX;PZz|9=vc!+S@m@G~ow9eJQ&6*tFuhWpvJR^_fue1R zEmbI{QjWo(2?5H_XeW<)rgf2u{NBbwcV8x*yfJLIGD}7`jxTR)G@~j8g|O->02|KI z!d41F6`&>r=#aA@5Zsi6>FDDpiCyfH9;bd1PW|qA3^2$uj4er@Q)oCcKMPamhYeW$pG_=lFT1Qy9I5k1x}D(tf|O`myBetY-cXAb~-b z+YW9u48NGUaPPZxl{*`weGQ&Q4IOdX77=^6)$DIW`uF|&KEKH!R!=THScvzq0KSB( Oc({50P})CeI&j1Wkuh7bsX@AkfDo|*IIlzGqdd^smyGJDNlYwx|<^}l}qm1J#cDsV{R z5C;c`fZ6qHwj3P${^H=^e06{mDABQMujb&mkY#r5ihcOYWfHx)_y#V)bzZuFLyen% zpHbIgm4E)!xex5S`rz=JT=1-(Oq!G@^wAeE2GHg@_Z97WO@qb^0)+9MQ`QybJo{T1(l89`ygLNdDqS~ za)9QJ8_7P0a)_)KXIuXT<&b7!3DLvrC%PWO*r&mnP+3vnJ9kl$zwGgcAW#``eq?LeXyViz=jI>!=X{AO!=CxW|`hSo|F& zvkZH%`#JllhGKb8-{*##$nRMH!`%2)V#{uE!}o{3-Ulu1?BP=OsWyPjGi1#&;$BL0 zvvwKVH+@}?PSvY8I1z9pe+Oh5Ugh(8__VJk`?LRf zg_g8lN<-s^iqrLhrcQ+Xf%y;}eY8S|P61G%%6nFclg~&gyAR%2g`!RJjl9`f;<=*E z$=3nYnhgwxeyFIUQ`SGuo!WmGvJk2#O|~UpDzLmK!Uita>Y8jnf;LXoe*s#PHd7=Z zM%4x4yAUMP&w*`s;ISu)lDpm+(y%f0{&PEcY6O+B9c@r;CDogI1lCJ=wv*s_vVJXn z0M2l^x!`LnGzZB-7!)z|I$>y6v9uy9CjxPK^I66>#$m`-QB`K%=0gqIB@gDRtl5~M z{iDei{pP4^V6Zy;?KPKKLp$aDendPBO`wDI(`edh?oe81GRn2Bt~%I)(AIPNhw8~_ zeiNUrSi!{Z(nUnaCl-?Vt34OwT`AtzdbNfgX~H{(tz+#V^UCcypQK-NdD{T0uJb|i zXxT>nCB!&1j3DU^HG)PRpEMR3^*8jt6vB(g@$}`vIvPOqa6J*@*$5bU?OGi@Pm7n1 z1%`Zv>69VMEduK4j(3M5oPO`^4enu4H&b73-EZq(K)Vn_p;`QeJQ5^Viw-g01>YO1 zDWxY5ly3&q?+FI#R0M8;xJ7Ds8@t-oDl2X3H1h{yI#+$M$;F=DaQz(A7C*Ph{D!7V z^X+W=>tJxE>?eN=U5c)dTx>=nC-SEEW}mFblPC|LZ1QB4_h7wyEe>;2vWv+caRDYS zNL;Vot0Rzt-P$pTW2#Wa%<`%F%Rniw4}{kIkO9|jmN_5C!$~JzU{*Fxh(eb6E_3qP z4F_!y^|fJ9I}J+7r+b5d?m^ucm`0FP_=&@s%pRH4l~5TjOK|-<+5clFW~c2Xwyt9HPDKKbH-tRc;@2D0qgSr=>)InfqK&YzO=(Zu zaKxBsupREMO-H=(pLs=Q^>R~lbYsDq!F$3ZR1*1tL&rW+;2Zt zUmc%igzEuIoJ=N9o|y1xPmGs?xgLSk@8S6oG|ZR}ZmjdUtc}q0)1=pwb?wFDqZ3c& z)uIoY_&jijI%K&6+rx4*+59?YNj#s(0-+Z>wub&n~Sf@sg8=z8eVp3wVJS3lm7k| z*iF`Ch%FWP9+SBj`1hl6&EKx`qpE4P!4E^4TxVtS2jI4I*PX;r=!LBE?%Dc}DR~3% zi(SP6d;$@LVS;sEdT(NuLv>3o)TH|n-Ju2sGSNqYrwNU_B4@&?QP?|5JG(K@_SeWK zw~AfkihEps^1wTl=m7C|Dy2TUQwKmHPl^{(bB`y?F5Qwgkc@lmzxo*v3tR_48@46N z?KP)9wJZZ$8wLb_xz+>4hsfCLgjQt!Q)ibJZQ5 zN~A#r)-5ev_ZOahU(x_lOg`OrQRDiLI~&!d4RHD{D7Qlv36J z(v?m(wrTqPLwj&LdQ%U*9^pjj?CfO6q6yW0#Gwmke|%dD&ox|C>Z(4G-aEQD#v-6l zp*Sb81RLSpB4Udlu?4kO9c$R}D%c&GC7T3n5Pn({oQ(nj;46uV;XzVlyop%CJaz{k zYfv;q4HioPcGy^*qM_8)axWUTj*j)p!i*6&VGRhSUE~7i7 zQA)jlXmII@jquJctohyvL0&RzpyA2HYGcA_lJM`S7f?F>*zf} zHNPF5I5{Bct0>p1*w#9trQ)s}nWamlG=l7c1EnfR3g`;6j8c?BZ;({)!T8JL!()kA z?h%C^uqZgRJZlbHmsi2Q7Q3($<7`8;Kb`-WAif+?SZEbx4D@N1JHlxPFT;H$sw}x! z1p_NtX^!3nS|FS}pjqy@Z0F`zq3iH~@xik&rEF~7_zQ1Ejj7WT zitZOee52D=y}CzwciVeT>>|i4V(b8;ov~n(@A&(C@@d9x_D6@JFzJPY6dxQ6%@sB2 zn=xv>j_d@PGah+?=+OqOf}>XsH}$Q3qiyg!r)axFLu1^%4>pG?DHc+5`y@KSi9+dd z%|4)@s?_Z&{6dDc%p@4RNFFy9Hhx1~*1-iWvv!{KO)ZBO*qt+LAg{_?xSPHkLxvVK zf#`wSQi6$iyjOM~um=hDN6=`#7$V+h4TaLox4_9VZa@f3c%v$j_a-!px%_!@?C8#f zQeVRWTrK*q_PMW+s?{o2jj3xy*1kl6Uyt$(e-=_d1ihq2w!k>Z zB^Rq(jH>(nI>`d7-lU~qS6=ypS1@IV9j!#FZEJa1&6j*bT*x~^Y{=>n4m&= z_RE0xk48jKH#(XQ)gxQ7-K+NQ5nI~w=QF=dpXk=D4uVaSPz*sKhH2CK2M;MpnQu5w zdMK`7$fG)iqU|a+A2GxFfInkPD4a6Qyt@}7#O>hWNjruPnD=|mS*=$4g3gra4We?h zeZ4?;H);GuQNSn;`k5SD^|$IclzOgyG7b@z1m6g8cqFQ)Y0xFw?0Wvn;TP_cb>3C5 zTYthQDJ|fgeDYPp)hR+6k=15K0{h0+(U0`CpcZn4rf=9~CwH@^*f%r~h>iCJ0{Y0{ z{9Er(sEyy7%fg7qUn3s%tH6`ysRb8&0xoGf(CM6gY@$>kjx?e!&|ObLZup<6gi9+T zwHkL;Zfhm0@8B9OBI8TtlR2gyN|FQ<0a!Mq&wO8I_~Am-&uE(kPXJrbr~`xy-;HgSWnXJd3TXE?>IC zS9nt$=_XJ;(Bg-v@@xqd&^trAlqmOt?nlGU_+xOSI(=H&p=TembEpx*#;F4ka3(gG zjJJ$M9&~;%+q81Je(wl(+@7jTF!XTUq8;8ygqaw&9z~9lEy}2l^Un8Vib13edPR znL}@Ys8Vd4SJZ2V@fq)|MvXY#9(OvztcWulX5PntT+3 zaFP+^Wv<3mbkro7re7+OHPi7>Tsh_4I6sohqul4*8}w7}_wFv(e2gdG@mk*3ZE2MWf;y=j7!_3%5i*$cr*1;=u<)I0r_$m003^`O3s%IYmdza4RG z>4W%d40Hp#!jUjrrg)2hO*WNwZ}I`-bkOQR@70X@7{KGxV%5Hhj#oQ>JuVz(dF zRMM2pb&q-T>_j65wIYhz-{|*?8Lmf@xt@@CVy-$8s})lXZYHyKL){hlyL-ZTrA2)7 zVn=7*g_-&+L@nXby_+1npp?D4ZcPtyd>!IWLl^oE#h*;0Xs4CPj|??0b}BXKz;#;d zs&9P(kK)=+r)RHCNK~9U5HFt`e^RA$M0#;{#o>gu-V|jT6^iLOQ<)l|Px-pVK|T%v zWN!asm~O2VK1RlyE!{O^OLxZ_sRv17-i z?Tl^4#N<%{{J93+UF1y%+m3M&`MW7oOUqvzm67s&4eJ%AH!6F|JjthQ%m|{7(|y4j zU#?P*ju)8>@{+gmln0`ZerZ{zl1hfVFLktLcTreuu6{Iz_JmOucYq%8_@X@7J$im9h2Bai-CPv$JaUV1%|5kU8!|n&*V!7d*N2;=3a4 zGh|VALv#1Np4L@IR@2fn=XLow`n%4~a!MHahZ#(l==d?}#nujZL-;(O9)RtZ8QNf) zt}A}KGFC5AQg>+JP41Xc3fF2Om&(CEU`pxWzW*7if;406%G!gkTieXBvoP~6N9O6? zJ$hcHJuRy{)!SK{mc104RK$^l+0Ti3u`rwQ>Ut*Je#jD}9qWqsesWLmdZN8s4b@;? zQiok>10#|=1 zqx=l!k$RLcq=!u{Z)jp(YjDtfqBG&y_b8=AvIsv#1<0NWCDl0N=SPQdx`>F*p zRT#e-Hj_Hyk%IN6w-2bV9U9jg;+;8w+dBKYxWY>+bs6(~@M{uMGB8}ulEg$R+ad$Q zLM|$cc}OJ|AAyj1+04j}9ln?4i(6&n+852~?YPydP$x_QbYA@87uO1gthjXVC5urH z?uo8NmWvCClvH4NoDsU4)0KzSW#=%&f7cGJ8OH%oa710B*Evi|ZnrvUKELW)_) zAh@Uz6phL=QPVjChiNB03>xc4oImALNLwZcH}a=?8&g0hI=$y} zzrg4{^f3=^heB%E>m&OLnm^!$TT{O#&F}VxdJS~uRdg*m#cI`;ucWn@7>+2n8;75% z*OB|OJ!0@qn4v9c_esJ)e*EC{mNh{){^Y{Tin?>^3eb5~(sl_66Ux4icJi_7mv|em zPjVtG>mHCfScB8G36Kxw8=7Idar%s`czQNn5VZRBc46Yny%~iSAGC%c0aLku!DwJf z!E3L1*wdEKjOUvm9I+{SgLK+A)d&s|&I@}#e&ORY^E(bU!WE-l{cx#(eoK4DCxA}b zJPPq9_&g6aCB}3Tj=dbBnmlGjMLS{=RQnm7=uCV4=4!!Ls;tb1C#^}ZQi`{BcbR%a ztlhX7ez-V0%`LbM3~shcz-PG;5X3gG!CG|L@3+~R&5Syf0yv{sUNF%p%RM!wv@vx$ zDOHz$=qq!olr#)LsSVe^$``c^f8BJ^$la$J*w>G6(wNIBjB*u2rP)uAEx|M~gp?`s zz1O4cOGC?{QDJ)p9)qQYcJpmIYsSPDkFZ~h)ve2{sAi1}Stt$q{F!dh4CdT2Tl|CP zXwv4gk%o%&1jVGVE27ZUW=z`~eB7;*3@{K=EJ*olRNz*7qzTK0F_44htvaAgZ>mZc zfStM_;ByXHpJtfYt-{}J{n*|{7@D=1`?t>CIAJuJGm*?g2I)s1HCPlDh`;Q3T1Ppc zA~IT#3%ivn#}G1gwNaecWbNUAZo&HuW$ zo|RVA9wpa&={DUx;79Jf#w7u<#$$~j-2%&s(NDgousgM7p}Vp(&S>a#-Vw+NiJ{4s z+=o3RKL_jaNu4&l7p5mYQ1r+>Y&X7t|D%A-)VMOPVianSoq{g{gTYaEdMWFbu`#A;6Xg=M zW5&+ZqOs0_V_i$|X7Z{e*_KB!`TPAg5SV9_ZcAYLV|-pp!wp}RRZ5lFGar(RRo9hATLTk%F zRR2r4LzesGk$bchmoee*Kov!CthyNHOL2K384uCG#^OT^1 z2Ypg5aPl2qjIbGpeU7}F(#82G!ot2eyEWk}aJwo@2E1I>snxQO$n$Y+rfFp6HorHd zYpPZj)uiRnTHdgP_ODGk>zbAAxk;sMV`|Au5{D#W`{P+O6|wkU|_! zP1>s_TbP3jaHD9DS6O@cS8kE|(^p4tL|mCY__rzBb?ZqT?EDan2e{?2&~?SRD#fe+ zIJ7gXZYamk42Q&j{KNLiL@@e=T&?gw%O|`dy#}ZU(fG&0UDK4g(_t&(eC6-U2}~s& z0Apd@2lVhF%5 z`Mc$lXPl%U6QXy76buaw&GB`o(zD0KAMg5BGz~ip9k{s4-N3x-TCF^-;(|<8NbmPyve`p`}`?i^eX|&{2y>zDg z?8JH&0sjNf3SAF#tKAA!%1&{ghKv&`f%?X<)y-du z7KD)GqM#BHG~s$>^W#NBhnVbo#zrHkkI_Dep6)OQxBwMe>d%+fY5uj9IT2`3B;%az ziVO~xs?f*G4vb(d#@@XCJ@)mS&ej;U;F9(#Y*|Z8I~=y8!E@UiSIf$%ucHHrG$EtF zeG=X{OlmbzNWP09R)JeqD7Bt@V4vX!HP0c3oTRJC96gipUFFkaBCOKHc9 zZK9aW<7Z)R(HG3_+=5Q1DIe^Mk~o&nP}Nm$Mi2H&!ctSx;(TP(PE0Y>(N?;03nd( z07K=OkWK9xq2AlMY2D9wyM)z048bBlBS?c0dCYhoE}u>8hPYBGTh%lAD+aouxu}?5 zXV@a@vERW%a+-AfH=JSl+?67_9{-MCIjBVgcGLk}rhK~pSkJwfy43*z0Dw79Z7@x> zs$I+@daw&87kqncSzA3X2By!seb%%t96U?AoqXpg-h`4@r<~+}6wUoR@~+Dz)&^5n zMfcDK>7iDUpY-U4o8>4W_1oLJqXmU;lyt5o|Iw_ZRTe{MGXK(uV~Z-WR9U9zjlSxV zKRn4&kzTc19};z=2-F9R<4!Q+n#6+iA8vfVU#L}Fii2*{I5z8KG(7;x{uiIx#s|dMAZoF?iO&eH z`FG@o*P35{X=<1dhro%wmo2XR_PQzAc*%${iZtGeGbC)-O*5rb+=1ZJn~IK6C)&vxuld z-DtM;)65?{cy4^SzoA(XYHTxITkbm7|0tu-VZxisJS-E1LXo6`^`x1~vCb8!(A}$6 zPy%A-k{Dw#*DU0+J$O9AmAQpgue|-JKorSdd99(;JCKIQkyb)VILZj2>Qgh= zj#zZ7drZgL2!9Bw$(tFt8xm8t%h9zaRyxl}Lh6%t3gt(3idV%SC~MVE8un*M`ZdQP zds1W7$1k6NKx4qr!|V09@KRUm;~RH>dslT8QRj!QtWJYME2{Xf~Z^kBc2lo#Dc-<`0akeU30F8VJTS;zMXye(T-( zsq-bUM>bh=rCA`2A4XEWR}P040$?@olUgB|Q+oYa@A}8I;Q)I=bL5(Z{)dY{eeFkC zyI?~zDt5(IU#@q^bbULvQOL_tqRH3T*2HBtb;In# z>!18Z1<(}d%{q3*;UNd`_-r7sCiDUA4dB7k5jo-krY^{4Su=ZdQ{UW(n0#9uy?gf6 z&J$*b1D6o{TRF?4Mk4zWxlUCIH(A^NYwcP7QL)V`$H%}7_~W!nWzDd6URt|Vf<|an z1`Qd^(#&GO&1CPqySB@|N?(=amx<+(?b&L-Ari+E-C*^(hB_|Z253;=@KepZ-llu{ z2;&1FmkS0b8w)!Q{c{k?#rT?I1I#-7Pso0q%gnob4AMn=(pQsxJm*hjw}y8#R02WV z_Vh*ihsUz@516+i;2rpIpvb#=pavtnG(;CY=yLS906pUCTB`UB0lvRn&w^`NA`c}* zPWD7q-}1SB6VM*>%s0&mm9~H)DJ8t0h%CNws-EL*q3CU&6otoKobN|xe}><$RjUAw zVQfjIwu(P@RoSd?dX`WApDWI@oJR9am9i=fZ7O$`MN{P_tuxlfF7tuHGukpq=+q| zFSi<*eus9s%2_927t$z_*dGxwVf48OgMdMWMIh<>{z3DxYvpJ0gxQ8;u`PHDU@7^8 zO0liGu|q*G)h)(5!N+NN;VA0G1y9oqokBk==w3^;>ZU*dGqFQcMi zTkNG}&318KIMM3|YBsi2cBw@9;E7(Z-(VTnRDtjg7?P}osrO#KSTVfZj9<0d^(Vgo za!A5?q{TbH9|MF*64SX`<>sh;QF7`f^`8LkQ@7B~2BHl#EA^+=Ifsq1-1(iDsN+2# zL54qZS|tZ-EQZ#^(4a5Q zLh-NAKMJ5<(oU5PpVYQqR3Y5`F(NwYU!d#n(o#r8_*0+V=J4ZoK*x1qVdw(hTuW6l zi=n67H=?(1!^-oYHYqnlrR36pCj*q;4s`;+vVi{VoW-wJculb+4fKL2QkzIaexrid z^R-DpBHjV(YZyBPh)mcGHv<$NUWlEa_|l;dM9te@Yor#>_bLOQGSNoa@C7$34Fv~V z=*Cv|`0fiiT_4Hh0jQeJoqj{6lk&ngVEAgyJzdqjQD&$WJ1*L0{xv%v`v?F;$B4h~ z5I%&w%4eMKYY5(3es|4gO#Yr&0{d0Ln+?+zVpp0^zXQ2U)zN!I)2udMTgWA8LnOT4C+c4K~Fd$ zWXv*tgzK^Y*z$O~Sn!-leOLD(>}@m8BkT}=zgbUzsJ`I^nFn2Y zCQhhIw~cVUyn!;*n@a02}f*{Q&*b@$yYCnA-zQ=mjbBF?)_1u(I8V`BBBcjhnc;n+G&s%0ql zqC{`sLd@*E*Y=hesFxB1@Hmx3>rime0eRH|A~>MVyJ(SJ;P{|dw+4`OFD*_^_1=}uL+8RfHu zcg`wP`ce9)6RRde4a_}5Wj>sa`L4Z!(@!_$*LxBh_I`L>Xgys@`Z9+3bW!?}*LM@M zLe;gdoLW`H;?P%ribu+1tN9j)%VUtVuFzY=I1^xMsS`V2;5$TjQ-%BVw_ebNH&o@{ z6*ysGAesFL4G#_Zv3CUUftcQK)=S6G98TcKB-0zPZ$+T{i9F@S0`&2Z=Up_t|8pmr b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sighash_unsupported_for_segwitv0_2_0/00000.png b/tests/snapshots/stax/test_sighash_unsupported_for_segwitv0_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 Q;{yh54gH7J_iZEp3$61NG5`Po literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_0_0/00002.png b/tests/snapshots/stax/test_sign_message_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e50bf611c48fb1bee217b461223044afaecd9fb8 GIT binary patch literal 8746 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_accept_0_0/00002.png b/tests/snapshots/stax/test_sign_message_accept_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e50bf611c48fb1bee217b461223044afaecd9fb8 GIT binary patch literal 8746 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 QT9tvp)78&qol`;+00OJGzW@LL literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_accept_long_0_0/00002.png b/tests/snapshots/stax/test_sign_message_accept_long_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_accept_long_1_0/00000.png b/tests/snapshots/stax/test_sign_message_accept_long_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7ec24f1e3dcd3d4084c4730b82a2ea3eb18dabed GIT binary patch literal 18868 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_accept_long_2_0/00000.png b/tests/snapshots/stax/test_sign_message_accept_long_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..c8a1a6d94196f6255cae8d705b77ec82a77f5645 GIT binary patch literal 20003 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ߖw~Tj=FyIZ?ZlP}Ut5>>qpH+fs8v65Sc&OP-&5= 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_accept_long_3_0/00000.png b/tests/snapshots/stax/test_sign_message_accept_long_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..d5673beef5d72e00a9fb273615d6adfeb9a1d8d0 GIT binary patch literal 20008 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_accept_long_3_0/00001.png b/tests/snapshots/stax/test_sign_message_accept_long_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_accept_long_4_0/00000.png b/tests/snapshots/stax/test_sign_message_accept_long_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..823fe91479f472fafd0ddaef8b53c24f3d7da1dd GIT binary patch literal 10796 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 Aj{pDw literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_accept_long_4_0/00001.png b/tests/snapshots/stax/test_sign_message_accept_long_4_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e50bf611c48fb1bee217b461223044afaecd9fb8 GIT binary patch literal 8746 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_accept_non_ascii_0_0/00001.png b/tests/snapshots/stax/test_sign_message_accept_non_ascii_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e50bf611c48fb1bee217b461223044afaecd9fb8 GIT binary patch literal 8746 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 o6FCBu#l8Rbv;Xtd|F%r^Xkv+ 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 I$U5}@0d}?~t^fc4 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_accept_too_long_0_0/00001.png b/tests/snapshots/stax/test_sign_message_accept_too_long_0_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e50bf611c48fb1bee217b461223044afaecd9fb8 GIT binary patch literal 8746 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 IKYJzq7w!D}?f?J) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_reject_0_0/00000.png b/tests/snapshots/stax/test_sign_message_reject_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..c42ad9a36ad65e89d2d1a2571a9e634f04b79a78 GIT binary patch literal 8321 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_reject_0_0/00002.png b/tests/snapshots/stax/test_sign_message_reject_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e50bf611c48fb1bee217b461223044afaecd9fb8 GIT binary patch literal 8746 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 IKYJzq7w!D}?f?J) literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00000.png b/tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..fe8259008aab070a67cdb66ffe766978650a3cbd GIT binary patch literal 9453 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 Cy}Y{s literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_0_1/00000.png b/tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..adccaeb16e7e9324e987e8ba3c615be797881c12 GIT binary patch literal 5881 zcmeHL=|hrP`?lp*S(Z(Um8Ldt>y%4bnoB}uX-ou?@4>zF1v$HA;;F&Un9 z#~pWwMhE>VvyJOjspP!lJHtBb5UDTc>Qg8q5Rz;4bJwt==N-w23ne8b51B`DZ*3+y z?xUmUZ3-V0hitM*EQI&Gcpkv24j^yzCVh&H2IVROlVJr>Jx56+gI~C(zSfK!Cw;n> z;U~R0R7VZ=2pZcOI5u&W^0^_gD}3ia_gn@_*T#s$KD`YugD13Ac45l0rCS(7=6Dip z|Jbtw@jnK>_RvB7xR1@LE`?7LFO?|V z70dl-ON={mn6;b9-IYJsLEtT?W0*dx?LObYpRHQq+!(NfbVZ9N8W*@aev4S>%8T}2 zD*8Hxvi$_|+6?BA9OethrtGeg(5gJwe=sm*=1aL<%f%bp0>?C0yUy)tUTcSRO(&mv z&BefL`Lu$A_-9V~-pkrwEpm>Rp>(cwK@QJ4_vSDc*mqeL))a@lT)))qLwQH=Dm0Ov z^=|w@aL;XckMG+13;2JJHb#xK7Z%!N1{V?|%`sWcV=>7v^J&1@gj4m;eq}7i49cco zvray9HDwGP*p}}H|6u(u!(xM!fX;T*%+7u`49jFO2P{$D;cQ8rK`)b4&Fu^&@(H}E z;dYS{rvpG#$V56H7KcU$K

  • uHUqR~X|`rvCiJ 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 Yjc|*dCH}$!TG}SQ$05gF9fjxo7j|Q{Y5)KL literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..49e98e252cc64ed345c88ebf23e3a273dde82e98 GIT binary patch literal 13210 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 MJLmHiKl$AM4}7&fTmS$7 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_2_0/00002.png b/tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_against_wrong_tapleaf_hash_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_fail_11_changes_v1_0_0/00000.png b/tests/snapshots/stax/test_sign_psbt_fail_11_changes_v1_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_highfee_0_0/00000.png b/tests/snapshots/stax/test_sign_psbt_highfee_0_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_highfee_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_highfee_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..dc7955b79a888c2607f3d141d207746cc7ed5e8e GIT binary patch literal 15071 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 TjwWz$RS0BZd#&<{*WdpStBs*% literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_highfee_1_0/00001.png b/tests/snapshots/stax/test_sign_psbt_highfee_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_highfee_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_highfee_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a2b8b9f2b125b41c8c25c7073b36d11a22e9f8e0 GIT binary patch literal 9122 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_highfee_2_1/00000.png b/tests/snapshots/stax/test_sign_psbt_highfee_2_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..4bace98bfecc05ffaac67ee782964619c2d69c69 GIT binary patch literal 8033 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_highfee_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_highfee_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 Wa=v$@1Gtq$!qLw80{&0m)c*u~!hY}o literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_miniscript_multikey_0_0/00002.png b/tests/snapshots/stax/test_sign_psbt_miniscript_multikey_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..ec47288aec8a757976d605252603eeae642d216c GIT binary patch literal 9175 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 Cy}Y{s literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_miniscript_multikey_0_1/00000.png b/tests/snapshots/stax/test_sign_psbt_miniscript_multikey_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..adccaeb16e7e9324e987e8ba3c615be797881c12 GIT binary patch literal 5881 zcmeHL=|hrP`?lp*S(Z(Um8Ldt>y%4bnoB}uX-ou?@4>zF1v$HA;;F&Un9 z#~pWwMhE>VvyJOjspP!lJHtBb5UDTc>Qg8q5Rz;4bJwt==N-w23ne8b51B`DZ*3+y z?xUmUZ3-V0hitM*EQI&Gcpkv24j^yzCVh&H2IVROlVJr>Jx56+gI~C(zSfK!Cw;n> z;U~R0R7VZ=2pZcOI5u&W^0^_gD}3ia_gn@_*T#s$KD`YugD13Ac45l0rCS(7=6Dip z|Jbtw@jnK>_RvB7xR1@LE`?7LFO?|V z70dl-ON={mn6;b9-IYJsLEtT?W0*dx?LObYpRHQq+!(NfbVZ9N8W*@aev4S>%8T}2 zD*8Hxvi$_|+6?BA9OethrtGeg(5gJwe=sm*=1aL<%f%bp0>?C0yUy)tUTcSRO(&mv z&BefL`Lu$A_-9V~-pkrwEpm>Rp>(cwK@QJ4_vSDc*mqeL))a@lT)))qLwQH=Dm0Ov z^=|w@aL;XckMG+13;2JJHb#xK7Z%!N1{V?|%`sWcV=>7v^J&1@gj4m;eq}7i49cco zvray9HDwGP*p}}H|6u(u!(xM!fX;T*%+7u`49jFO2P{$D;cQ8rK`)b4&Fu^&@(H}E z;dYS{rvpG#$V56H7KcU$K
  • uHUqR~X|`rvCiJ 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 Yjc|*dCH}$!TG}SQ$05gF9fjxo7j|Q{Y5)KL literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_miniscript_multikey_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_miniscript_multikey_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_miniscript_multikey_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_miniscript_multikey_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b35016dece9a8c796bcf91d2930b98e297a491f5 GIT binary patch literal 14222 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_miniscript_multikey_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_miniscript_multikey_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 Nx_Tcc{up}e-vEkG1NHy_ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_0_0/00002.png b/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..ec47288aec8a757976d605252603eeae642d216c GIT binary patch literal 9175 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 Cy}Y{s literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_0_1/00000.png b/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..adccaeb16e7e9324e987e8ba3c615be797881c12 GIT binary patch literal 5881 zcmeHL=|hrP`?lp*S(Z(Um8Ldt>y%4bnoB}uX-ou?@4>zF1v$HA;;F&Un9 z#~pWwMhE>VvyJOjspP!lJHtBb5UDTc>Qg8q5Rz;4bJwt==N-w23ne8b51B`DZ*3+y z?xUmUZ3-V0hitM*EQI&Gcpkv24j^yzCVh&H2IVROlVJr>Jx56+gI~C(zSfK!Cw;n> z;U~R0R7VZ=2pZcOI5u&W^0^_gD}3ia_gn@_*T#s$KD`YugD13Ac45l0rCS(7=6Dip z|Jbtw@jnK>_RvB7xR1@LE`?7LFO?|V z70dl-ON={mn6;b9-IYJsLEtT?W0*dx?LObYpRHQq+!(NfbVZ9N8W*@aev4S>%8T}2 zD*8Hxvi$_|+6?BA9OethrtGeg(5gJwe=sm*=1aL<%f%bp0>?C0yUy)tUTcSRO(&mv z&BefL`Lu$A_-9V~-pkrwEpm>Rp>(cwK@QJ4_vSDc*mqeL))a@lT)))qLwQH=Dm0Ov z^=|w@aL;XckMG+13;2JJHb#xK7Z%!N1{V?|%`sWcV=>7v^J&1@gj4m;eq}7i49cco zvray9HDwGP*p}}H|6u(u!(xM!fX;T*%+7u`49jFO2P{$D;cQ8rK`)b4&Fu^&@(H}E z;dYS{rvpG#$V56H7KcU$K
  • uHUqR~X|`rvCiJ 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 Yjc|*dCH}$!TG}SQ$05gF9fjxo7j|Q{Y5)KL literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..fdbf91e7a0234c232756af66d9d72ec72fb81803 GIT binary patch literal 14137 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 E06(^9VgLXD literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_2_0/00001.png b/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ad4daa734c6f74fa25864fe5d0d40760b849cfc3 GIT binary patch literal 7501 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_2_0/00002.png b/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 Nx_Tcc{up}e-vEkG1NHy_ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00002.png b/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..ec47288aec8a757976d605252603eeae642d216c GIT binary patch literal 9175 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 Cy}Y{s literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_1/00000.png b/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..adccaeb16e7e9324e987e8ba3c615be797881c12 GIT binary patch literal 5881 zcmeHL=|hrP`?lp*S(Z(Um8Ldt>y%4bnoB}uX-ou?@4>zF1v$HA;;F&Un9 z#~pWwMhE>VvyJOjspP!lJHtBb5UDTc>Qg8q5Rz;4bJwt==N-w23ne8b51B`DZ*3+y z?xUmUZ3-V0hitM*EQI&Gcpkv24j^yzCVh&H2IVROlVJr>Jx56+gI~C(zSfK!Cw;n> z;U~R0R7VZ=2pZcOI5u&W^0^_gD}3ia_gn@_*T#s$KD`YugD13Ac45l0rCS(7=6Dip z|Jbtw@jnK>_RvB7xR1@LE`?7LFO?|V z70dl-ON={mn6;b9-IYJsLEtT?W0*dx?LObYpRHQq+!(NfbVZ9N8W*@aev4S>%8T}2 zD*8Hxvi$_|+6?BA9OethrtGeg(5gJwe=sm*=1aL<%f%bp0>?C0yUy)tUTcSRO(&mv z&BefL`Lu$A_-9V~-pkrwEpm>Rp>(cwK@QJ4_vSDc*mqeL))a@lT)))qLwQH=Dm0Ov z^=|w@aL;XckMG+13;2JJHb#xK7Z%!N1{V?|%`sWcV=>7v^J&1@gj4m;eq}7i49cco zvray9HDwGP*p}}H|6u(u!(xM!fX;T*%+7u`49jFO2P{$D;cQ8rK`)b4&Fu^&@(H}E z;dYS{rvpG#$V56H7KcU$K
  • uHUqR~X|`rvCiJ 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 Yjc|*dCH}$!TG}SQ$05gF9fjxo7j|Q{Y5)KL literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..ba590bdfdec6a2949e97c278dce42cd14495614b GIT binary patch literal 11819 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..fdbf91e7a0234c232756af66d9d72ec72fb81803 GIT binary patch literal 14137 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 E06(^9VgLXD literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_3_0/00001.png b/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ad4daa734c6f74fa25864fe5d0d40760b849cfc3 GIT binary patch literal 7501 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_3_0/00002.png b/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_3_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_4_0/00000.png b/tests/snapshots/stax/test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 Nx_Tcc{up}e-vEkG1NHy_ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_wsh_0_0/00002.png b/tests/snapshots/stax/test_sign_psbt_multisig_wsh_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..ec47288aec8a757976d605252603eeae642d216c GIT binary patch literal 9175 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 Cy}Y{s literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_wsh_0_1/00000.png b/tests/snapshots/stax/test_sign_psbt_multisig_wsh_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..adccaeb16e7e9324e987e8ba3c615be797881c12 GIT binary patch literal 5881 zcmeHL=|hrP`?lp*S(Z(Um8Ldt>y%4bnoB}uX-ou?@4>zF1v$HA;;F&Un9 z#~pWwMhE>VvyJOjspP!lJHtBb5UDTc>Qg8q5Rz;4bJwt==N-w23ne8b51B`DZ*3+y z?xUmUZ3-V0hitM*EQI&Gcpkv24j^yzCVh&H2IVROlVJr>Jx56+gI~C(zSfK!Cw;n> z;U~R0R7VZ=2pZcOI5u&W^0^_gD}3ia_gn@_*T#s$KD`YugD13Ac45l0rCS(7=6Dip z|Jbtw@jnK>_RvB7xR1@LE`?7LFO?|V z70dl-ON={mn6;b9-IYJsLEtT?W0*dx?LObYpRHQq+!(NfbVZ9N8W*@aev4S>%8T}2 zD*8Hxvi$_|+6?BA9OethrtGeg(5gJwe=sm*=1aL<%f%bp0>?C0yUy)tUTcSRO(&mv z&BefL`Lu$A_-9V~-pkrwEpm>Rp>(cwK@QJ4_vSDc*mqeL))a@lT)))qLwQH=Dm0Ov z^=|w@aL;XckMG+13;2JJHb#xK7Z%!N1{V?|%`sWcV=>7v^J&1@gj4m;eq}7i49cco zvray9HDwGP*p}}H|6u(u!(xM!fX;T*%+7u`49jFO2P{$D;cQ8rK`)b4&Fu^&@(H}E z;dYS{rvpG#$V56H7KcU$K
  • uHUqR~X|`rvCiJ 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 Yjc|*dCH}$!TG}SQ$05gF9fjxo7j|Q{Y5)KL literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_wsh_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_multisig_wsh_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_wsh_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_multisig_wsh_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..caa284a71710b6d4f08e6a1c61a3bf2d61c9b567 GIT binary patch literal 15601 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_wsh_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_multisig_wsh_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..08a0fc72ebd512afe037513234a83ab7dc9a1942 GIT binary patch literal 7854 zcmeI1`Crm$*T)^LX_?ff#U|J3?oKnescdnt%*;?pja+g`%Qbfe6col5oodo@P28FY zF-&qvOi-}QOi4&lN$IOKriciXBB+Qw-{$_|dH#U=x#ySr`x7s|%XMAnI_GoFd0#ir zdb(O5O?&Ep{bh~L=Ijpjmz({L{iOcGdgqJZg|0XMc~jQf>%0Dw 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_wsh_4_0/00000.png b/tests/snapshots/stax/test_sign_psbt_multisig_wsh_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 zcmeHL`CC%y`?kfFDRpL=v~rtPn?x+j9dT^4Ra?Xb7u3|;&0RpWw8kkjYRpJYsT`wF zao0gbGsiT^&BfoVu>>AMpKL*XOsMU(R)2&UN0y^W69S-0ySqoSUo8 z58Hmw($dm7dE)2=Ev*%IwX{|~Ubhlhad2;|(9$v}J9*T_Bkd7?g6|_5efr0FCuZzb z*kRC$(^r44Sq*YIJpf!RT!6dBtAFcU+{t`bx?$IKtnbe`#rER>`q^! zf8A1buMpuS!WHs~+cmR)pY}=7!Ho)|o*zri>dvs}=KWkGvS~H>ED~L)AEw^F>y)y4 zn!_n`4TcLsQN00K$BG}ojTdW*jyY#_yWywH*e{6+PPo3s>fBY2(rxoqo<>J&WaE+( zGiTyQGQ6`vDL;Xr3!#mp;*Uk$gm27`UY?p{kO=#GgNp-edvJV%=2fMX)w!AStoXAX z`R`xe2pklADl2Vqx$Iz4fN-yoIfN2!m(IG>$aaj~cn{Lu?X9HAf2f=Dg{lO-_}$*~ zNkpepYZ-m9Aox0cRq|H#l8JApP3KdBgr?{li#}(L0+KQ-LgL}^30d8pE$J+R=cDYv z_!^2C>!SI)qcyW-qpz4KzFzgliP0x#;+WUxnTazr6!z?!Cvrr&T6b%m7AiG3$#C8mdj+b{yJV3pT=+3 z40EW*o&NBe-|Zc}{9wayI<*}2=gzPCH?;`?>9uNmy0ddC5ita6eCpUarDYcPz?cu@ za5#d=EOx(8=#RaWc5FlE(|%IA(Fn-kLb+*YF!n*1xYv_P`EZM3#Cw-vk<)?GWW2p{ zrfT*uP*L4e*r-oQ=^?YP?%!P{YxpaBY*Atni6w5-Nf?V z)UMUJ^t-#-ua*e@8w~yrg`DHerf9JP8{t*Vxg$dBEgOkMqNXjN+N**=^7VuP3%VF( zckrMRX=l{L{>Ses#TIPZrg~k$_{`^5AwLm`$IH&w4;dRb?7*YYXkU=NIM@RQvpi14 zF7@h+wp&M`y+Ufe+b9(4-19I-h}DR~%8s6*>@UURoz)L{NvKbHkv7GAiYmmakTzp% zz*DIxZNiBOe+8eaJ>05IUCU19Fquq$;WZ*L0D+)2>@YMjF-f7kaV;Apb=xImr;rs2 z1-c_NHdE(Ox}zHP?D~vIBucQfyoy93!H2kfehkC}crqpZrDYAgN-dwkOF{+eZFU)sYVFMUQ+C_(nh08R;ufR0 zR6ITJcv)WNZ|rg`7HeQ&pr@zD*Ap!*d8m_Xy+Qi9ce>OJ0127w&;jWS;Nwu+qw?SU z9Z-fs4J*%>n3`4)M;*8Dns)$6TwZQTZ}o)1;%+b^8@)kA8WaizuV&I{H0}g;{IU3c zy*#R3-qakeu+m$TJq_kAeOXwDZ-mEy772Q3Z&Q@!>iOY>BXSfRjN{va5ioSzl|hFm zfKYjZabsiU7^_BAU1@(QN03_KBOTSonW_D@k8He6O-&c&ZJc6>KtO6A3EaO|GakP}GW0k1 z1`Fa(h2zZMi&8!}?=aP{ZX7B+lQI!a_OlUcC|G&?bYOvV^Bt;^7yRh!`y@dn)GKz; zYjj&v^cY1EACeqmSd=;O@?$3-AeBI+bHE|;pBNe2Yio>;ytb=}ZbYeg&^YHgW1@WDS^z*uk^ zX$$hKfC-!96#~}G%nUby><9Lh1c`m`i8>^L_7|p2>c!VARka6rkwwW*7R)&}TP~h# z;#8Y?vn%EPPFps9PED)lG;z=gR)vR*$rQ>2`o#GcNDZ@fxRo96+p#&KH0cse3a-|` z-1^$R>)-YlHJKYUa&yvw5;?A(yIoWmNDUz(wQVhjMB<4BTYj`nRB158Bo*;$8kdRb zxs*{W^}RRk`k~y@K*NVuNuQcTpwEsKoR88}4WNOvWhI0AYex-Qv8Tb#%GdxESI8HX zl_ne>R0Wn#Uhxj&N+c2h_S4hTJRa{c`-{pmgc4vYJ!PMS<_zcFkw%JIq=eD9Z*S6f zcX#KK=>Chiu<_bjS}T&)(bkp(d3eRn$VLhPFp}MmK&7P(4!{QQ0!%dG8o(*Ay3HDF^ zA(MISKhSweWWQLi^zv-@m z)?}OD16wv0H7~m;3X1dw^-9hG!eTn&Eu^uwI07uIsHpH?q~}-m3e}!{PokJWmQX;J z#Md|$rf3}fd9Fq<5OKffN;12|!=!R)Y3T!}UNacJ^yN#9ADGQ%QxReSaDWQXZ3Bdx ze=~(}kJKgU$ZzSRO;uL z#0;btK2t;aF475`5;tF63?$)LU)+XNLNTlQEe~dK`oD~**I%Y~yBJzC}AO@Ih0m3Xc zwrN3U49spspOQG+$PU5~ZQw<`0t8 zkM4EGn)@BC(}r&7rawd+B|p*afoXZ8^Z7+P!x^(#(P52D8sQ7YJh9cZpMQG6r#x@m zsAGrW+yxkeB+VpWgFlea$M6tut`)#)f2tpAo__Gm|B1#i`QdTs{byTQIDf^517>mm z%zj~vKeH3_W}BotnoU=r|Jq#WM&O!l_VV%)Zxt39R(e(x7Z;0qWc`PQ_s-t>)rVYc;EdyF9qWHVv`WEvV+{+^S=gW*Hl9c_*TI(mn ztZ~B*%3OunnLYV@iiP39qWsDem(X!bf%|1kmxjPJaeVI@KE_SzE`4m;@YZbnPUgRC z|3w`$y`i2v>%Hu^@ah8btail)6^DItlr=6C3XR?E2SPh_{qMbJUD>!MTY&45Wd&lC z3g!iDD0DJKx%13=+H<7+1Jl#Cu50E?jx+k2FLq#WjhgMu?hJ(DX<_yLBScG0y_31U z{MOsBdTxT8$Ef|xImTkMI~I27;E8&5s-(iT*_{zM`NNak>UiL^IKH6WgE&{3BOJg^ zx<6O`MR#GYmLC@n8UjKJeYG>VkYlF{IK=G)BroCkG=5L)wM~UTul#?VB;71GJ!`k| zN+do1Y77QRn~E!$a}+NR78+XE9eh5Z0k9Ew0L9LCDxi&V)2;i-pKN2t{Y)!!MeTfZ zK?tlWtLF%OxBwU-M4Rz%y3iC>%K9Ut>rwNE&#(w3;z?Q^f!`bR&7 z=!sa4fK>s=xaA=+qwb3k$U-c88iP&2IN2iszyl@u6)b znB2xhH%I(2wh>-1bBwh8)>Xi~ zM!qXeznw=&WnJ6Dc=07hs&~w&BHYew262%nRgMFX`LxR*Hhj9YYqBQP#MVfcy4@Eyhb{2B ztKJ?~?{kozjzWzpZti2d)dV+S&jJ1nM-8=)oP9F?jzw{!^BT5>G;W+L8bna=tF}5!6Ed>n6-l1M;(fLcxKPpBXMzYnWKB3DgCB;M-Cx= zugPc;Sv3QSTUmB>dQ}fSAP{L&Y&~L(?J-OLlpmh)%Gu&s^rlLDtep{SV!}ETC>N!z zt&L2!?}6gNhL9qfjCwPuV`8krvj^mB|KLNVsawrT2m}&6e;$QI0&SVn@+~?#*vY^1 zT>7M+-*k|zjC6}{PSWWYvD)pC$;4|j*yX+XFIU{?^nqJf_`*u>3L54Jozp7--6362Ym>x{ime`g~2%S1q2;e-QR(} zR!t&-)s6=svtOhVpGX{bUCIIC4?Db(02#s$0X@~bnrUfi32b+k{F<}y)wgax;&c5V zC8vT|)E_2>RuTw=!Eld^zXwQ=DNVyW2ZQN`GwZW;)?}lI-ny{9IAclL%VoV*$$^-3 z_ot9o?Pa{A(fbQI>6R^iKJ2~9$<=eV58Vj;=eQ5EZ|Y+1PFH0NybOWjnVHW!3^2Vb zOOMspT`oDB_;Z%HjNzKY9F6laL5wPRMXB>BiaQPt3)asS`C9itE-e;Ji%}B^39Y~h1LRII=MR|e z!zRe|bGx5H^gqcCrYvX!5RSS-A<`#Ayj%0myv69SQ0&1xUc7up!6NzJp3} zMg?vLZHKQTi^(iRK)`EGyiWx$DKf2~bGc0;Bg3ApP=^;$Sd4o-oWzEs_=S^0KmF;CbE;P8Iy-N@9`RKm9U zuS@p9GXMSS(+K!_4fT;x7&5QU4LBHf4|@Fc3t21U)y`z`~BYbd_SI#=l$_|eAUiM zbpP@Fe0+SOHr5v%`S^A{;p5|fDZ~%#F|u!~;^PCox4CF>J^IB0otFFBgo^Qr&D7ro z6S^*BARx_uU{~t>3&fM-VpoL3_#g6}gq-}7s6`lZY)}me#g#Mh2V$?&?mqM|Ilb>B zyl`L!WW&$5@s~SRCCtZ1RjA{8W8uB)DuT%WQt-i^e?<9(?;jU9%BLr!#&<^y!uMVN z-*5Q$@9_UbJ@DFF_`dYH(PFEyLvAdLwxY-d-z(B22k}o~TOB38M8zP@so1~wjB@>l zS?$GF8J~VOiYC3p1jd|BE77&h0cm%|JGib`{>Lrk=^^sQfeLd)`MYXNe%C{S&ZH&% z=&=3W*@3Ob(iS3H=|y%GdnqbHN%d-pJZ?K}L3T_Wet=)t#ZdZyoSYoSzv<}Xn$C&3 z#hWV_A+`7pH_pmRn2Bt$i-eJEHX)H$UYTrv2m%Q=Dl{`Q+r%gS&4Q|##aUg=Bz9B- z9~)aDRR8j=F_k``d+^m*zN|#YgKA2YD=SrO zDavWGXF6x^wZy^NRQZK@bwg&5rb|dr7NbNtt>lSIhgRFEwgaiVsiNBdcuxRVDR;2z zAz2Z3MoB2CL^;142i0&zc@Sg*7j8Dhl!Bto1&(qF?y7o>6M>Uvx7awf%WMmUUa1J? z@+17xY;RIFv4c1AQ%biBs(~g?DKx!K@sSdEu%%j>A_0C%)^nL@8C7Z8H4&uczMFfC zFgEtStxEs2jRI?c)1z>$Pry_7t6Ln2?|R@ua8p&~+>pcyN=Qw>LJShp}@(-ZI%% zvrWjnt#7(An%BgWv61Vk)(oYWHX9VvaI2LLA+@~Po2~TVCYr@9oOXF-<%+1Oy}HWi z?g#4>dLh3{77@8vxw6NM^(d|2Z!}XS`YiD6qF9~HX6>g)c`xD(vl#9T$m2(as*4xP ziJ$AQ6d6j9!ir`PQIaiXveFBupLZU-*TTEkB#7ccrN>sEEmZmSowC3ADeh&;I)!bI zbwz=CR*|kK+sL!0ZFKOOB)2$bH|!2%=jCI*Ky^=_Yo9V!$k2`{nu*a^BQ~4lr{mmH zZ#cA{|Hu2JP!h-nv#**Sd@JK|iEldjP&y88~52E_VTT@{R% zJ&@XWb8V-1_EwLrNbg^a1_KA!;Ank!ry@y_Jp=x(pGEblAHPh5HqRcSe2}2u+Bo^V zW|xJS0L&w#iB{nJ)M}7CKwEI`(rxZJF-d@D<4xG*YGmVbY)hP-P}{N1IxztYdAg%M zeQd@{?3u_a3BSbRICXjMxn4W|%H|Qzuy{a!Dyix@S?>e!L}Z^+f~ zq1|NGWf}fiZw2aIV{il^;^Yw+_$A9sZHobH<)5GGiug-VDeuRYTw<;^jM)kb{PFR5 z8Ia%8BQd=(+cyB!;TO?9krq3@-@yvBCl{hK}d49SwT z|J#0HAvLw0`f6s2W_PugNGs;`*nTn~g69PP_k5nS+UDwb)4v%N?>~fnTXA}M+yQpP8z5w<;as zqEJ_aS>m){ICwM1x%{JHp&e&?G_kC*(jbefCVdYmk;G+b zCnvCjF8f`o55#G(N_YbdwVsNBZ@UHLXPGz6NE}wV+8K-LoCr0Mof%!=z+34zT~RY^ z7u2P6{E~e|4rj?PdSWkd<{M9(ZIIR%Eb~(_kMEhtc4|%Dm9Ap`+#Z3^v+r2=?s|a5 zz-kniZ-jWcFdN@WI*j~Dei$;j?=`z!;L{qF5g9mNsSvB=4F)G>r^cEoDDKe zmF5;_R9KD0M2ATacpMH(Jl~=9%zrXxp5y6hgY>IwYdaxefdnC<-YH@ZWBRx8DLxzB zbFQdu_L>s8ex(VJ7N8b?bVCV0M$&?-??bx_q>Y|{dPWxW%kwhM4*y(t*;i2Ry5V6< zxd$Bw*|cERUf+WD;{+Zvnwc%h_80I;E3a@Nk@bn{BAw*{sBCf8E1PCB)(JI_`Ru!Q z79D+EQ3ZXLDc24_0`&_r$JAu1o9V$yF83N~3x4m&^&<_elJI8FbSmu}8Qh@%9VQv|@h=UPWXyN%rxfGwG87E-VdsCEA1wtq|ISuM& zx_?b%<%dCRDY~|dODDh%YiKY1dwWoG1=@->$Q=i=4udbGvky; zjE#7+Z0hm0IJ4qyMDEXHLtt;yPt7t)6%@bSe&dw;%aT$VX6k7-7HiCTinH>T+eeJE z7$4HO-tR1aZ&(@izpkv@^2Nc&-_Yg_+(~<~N^aK|wqBh#=fRI7e#?D)!E>gmws^&}lm*m-f}xxOjNqr$o9rSn1keVJgBP zV*6S|&o8+l=%!o_>2w!Z|FKC6mR7wtgMq~fBPAd&rJIu)Gr5~cR+EwR9 zP7CqYdprp}=?CF5cj`@wC62L9)fHLCCULje*PNVC{)~y&WK+Cw6nirS*S&o9%@QXv zO-?^245xL#cdKNq)+DOLj3ZEV!f+z-ctmljc9+bOpPb?DSi*@epM*WfOmb&%8D|0K zsG$bb%T#!tiS|)Dn7OmxbEoAHzMyjj_LtW;&djBDbfk4XpYhNspw;pM)SjuQDY&ju zern)%-+_32mO5n%CZq;V$j(-{XIk%>tBy( z2i0wLbgS#-q_dBx!olyBrSc!DHViHD++@#h&%XWTHFJD9Br-yCv*Nd8hNj$nSgZo+Nn6qU9M8^ps9pVbuOF0Ld+&40J7e2d*V7^rx}t{vcBwLxg((0?UK&VVEP4p zaDvxqtI47}Y}a6QSR08`Te7*w6s$FHkQx*Nd9zh8akYjEPJq3?`XXuTRBz zqRL*p38Dp`JE4F1u}Jo+WPkl#Oo{~QU51W2*^$d_3S#cHbr45jZsdIjtBCu%ayQpi zZLbaEnT)7p=#)3Zzz%t_aino!X^h~naD0}W)8i?~AmFcvgI!TQ;2$lR#O=*okc~K4 zr}?AAnJmVw?BGvsLe&+w^DXCeR>yFoZ>9|Cnc857?z_7fuMX~bpE>gVeN>_RyP~#s zs?kkr?0FZ^HbkVePB|@5Fxm8ReA^;Ll^p)1Sc0^o=W>0;_6sO}zwZ@_F4&=Wum}kX z$e*U%$-44GS4c81GRDUv@11uzH6Y(p13g%K^79oz#9WaygPbbd{r(8!LgZP;w$kg( z1GQ`HD^ZLFHfw|}GnfhyNRQC|n%Nikp`={Yd0{u)d%+u)??H zr@L?0|CwBPkN*xD`QymF*8l2jhf7b>RssM&%$xHI=Cy2)F6cc6T{l$ND1!PO2vIU@ zV3&5+@{1yl81UpR)2(Qq0;Px0VxaPM_P~EI5#4=MzZ%%UE|JbJ>+~U*diFwkiS&tdwuH>)W1!wF;dW}e1ENtD_5zbF+oSU>?+pZ>HE0}ewEru!cy56T`o&!!->$EG8J;xmQo&|fxb+I!3$N>6cQ!a)g%0l*4l5f ze2zVU74&%d^Ga(f@3f)hj2Jmz2p#G{n84A^wHbSg?jrre+o@PbLG>()-aQstKc**V z6QbBN)$S%}dBk%ujKaBS7M`e*c4MOTFX3sJ`+$sxR0^e7*zAHg{pMEHe8u2M>TL0H z4oob{QS_JhB8+rUm=}WO_?kh!7Sb@*@VxEH&ni>J4Z$mbdPm@({WEKRL7x&XBAz#E z)+ts+=cJyqv*%}q{qZsNYog)cs5Q0;Rd2D^G;Fj`5UzP;jI~IJ@Mz;Q;k9YT6Wbam z18e^5`V=4{0(S~qzjpJUHNYF(?^{%N~}@R zFV2TalZQP~Q}TyET)$oV8Qr!HV!cWoX}j~CHH${xx=_~{dT$N6s9M~7H@0K&D+o%8 zYDStW6PuC07Ta>oIU0WcyP6>4VEf|%?9yL728e}7z=;V4NTf{UCSER@m?9irN+q^< ziG$%*U6HK`HrgYu+6I{(3f3382Cr_(`m-(SiP$Lo^ka(Z(E+(#N*6TxXBtGFOJ$sc zIKYx6Z%(zA*hE(-r&U%WGYq5;Sctt3iZhWVNlwcRCv#$6>3`5y)6+aF+e{jE?`kKqYCHxa+S99-ev8&1Bu$-dG(tLSqH6_+UXN6 zzLBtX?FQyDjes=Z#w~hf6qrm*-HJlrSk|{1GQ2-f?Px*>*2{BNZ6t4b)NX(ou>wQ; zD=WjzYiW5?cC)z49*(#pjQppGM>1Y`BVr$LYH9t{>$Uj$XjRYC&psSMD2RTCwGZF@ z%h^ujBwz5ZAxbf_1EBBDlGmTECzy}UPlPU$oHAUZwkaAH_6{CF3o(ukOG3(`F?osz zDZwR;5%1q>BF~Q#rVch7A2UAVm6K5>;x#L=Sl$SHbAy_R6?!~uz@{66}&x&Cp^ z!0%w7sgzdS{8FsrGH!uh+b|up50vS@ftyu3&!?nG=?1HRe(tZ>L<`&tvbQOC_&b5(w^c?DlU(455S`N&qR zrPk-~LOC@jV*-8XVRC%^G!e29pH0t?yrp*9wu0S{|9C>O~PJ3ZBFb`%SV&f)dR0cvtffg9Rt+hIHTP0~o0>NK7Cg zAOGf}`7>=ra=iXD=BJbrl-Gl~wM@W*7Xe|Iv%Hj+}I)PbP zS*NRe-`S?Nducr#I~~iosm?cJ#hB_xxA3A(gg#LzifdZpFjgR_sS2x!S`GiRUDoH= z6)QDyPm}3_2>Cb6pX%&ci$2%U`I^a>rHnCi<(L(G(2ZSs)#zEy=z1udzRcP7v(Frz}K=~Q{U z^$}ofKX?v6>i5Lqu~&1<=sTwo931=?QAwPK2m|NYw=-0zkp(41PiHHVA^;21R8%^9 zXlua~mo4(?Nh6Zi68N@fsxf)+^d7;gTds=hGCjk_e|5U$*|p5L7Ft?CF5)<;?ET&v zEX>2)@p{G~NG)jLQBRZNKyjGfXDk6Te@!kY=T5!$>D;U-b)N3d!x)w)zM+;^zeDBy=UPzb zz<V0x@BRR?u#Z>>shAnqwd3^F8vM#JQ$lX1O;QYw@otB2A#(9;K~u&r3jbzh~Wx zsHV2M&56(-ODuTNXgj)ga`U_3iY|V#DfB94GXrpGnv6L`ZaU0EQ($P^TIPC))5i_;jy;@l!0d_B?^NPV$TkHSVa(T@3U6`|G0ep{@U zpbxNXQByHy5RYI95pL$Iy{vGig{guKk}~U8LtkPAf4Lw{La2fkUv_!j5EF0^Z})S{ zVp)nZ{rxO=8IJk+T^M79No#JQ$XZdy6f^@Qz+cxXpC)4#?NkWmiVVXt!O2SsjFYv7 zJW|zV)j_#uybaG_(>GSuq!M$pKundx0hKfb-b=q|84B2>6Bs&s^|GjQoY8I6fciKv zB97e^MTqvVA4^CbKEBuxdNnGis9IHDb?-X-8VIfm6iA3k=U9F6?N)epR2wW)Rrqhl zwasHRAfS?aJNaGmrH#=448Tzb^s%=0qrh?~ew{;oRhM_Q$?E;*1>zf;JF%gchX~)s zNTP)p$Yyo!1|M*ulH*sEhKn8#iVu@oO^ zQmw{;qIBZsnQH7#_!TrZ5o%3&ubhT{HWvo-0749TAtdNz-KeZ>huo`wA;|SxPX~KtT7qo|_C*RklDioSe!6RLIS-`?%wK=&e~;=gqbbEop-B5UU+KBy}WZVig%g^TfFhPv`C-8XNC0aXc_2 zb1+qv`Oq%dHc)*8PjRp~m>U9^NknFIf2|t11#=ns(F-1)jVAloL8MZ^4$uZa;MFmR z%YBedF!$a|(Fg0(t0w5RVX3oCSDc(;iY{OK+Wy-u-51`x@jwq33JkM&fDBi~h#sy0 z248+Z*K-;Gyf`8T3F)7*%P*(a0z_5L9!)M|8a16U=Ln)D8`P>QKOd~M$ZCGSzjHa> zOy8EFptsS4Us8#(LF(F4V1)!tbdA7J_IdAiL$nTJdbGYgpkD1V((g-ogoia|bTZYN z3JbR3t*@l}NNpCtYDr-x(f(o=G;CfgyLlcCd2GkhpXquu3Q8-nSQ@NAf>vm;Kn|d3 zjPgHYF7h)QPPc`Jp3>UdM5{t*jo*B-i&KcP5yhUB?%p-(}K7o+*;}VWnFGt?nxMEa=v)Hz)(R1EU#W|W|3eh zoBd57odG!>2y~`zpQUm@Hh-u*X+HYODv3=WVDAH;xt13$K7*4v0BbB zNIsBG`*C|;?+hCNb5lNy2y%r4UEYRW&@Cum2{dB(h%y}Z1pDwlF-bl+NxDHbK&L;r z*8c#~43d-hC+`<3qaqL1uc>7~^}BlMp=TkzQ=jM$VB6MFiOX~Uh=b8&@X=PN23$$< z^}Ep%wjIR)H?OP|#Hzdvf_dmid)(|^MaZX>IBhog8RxJLx3nPL!{Z|WEpT@QCY1`< zg7|@ffhu1?VyR}F$Dfu*EpO)E@Vv3{(Mr?h9yd0gTK#s{SE;Vnv%K&Ojo}=Lnv$|=S=4U$4_j}oy1n!Nw3)+^f^VKsNx7iC zus?&KBQ&MPY!Q2-mbUUv949)t@Ygn-LZGJ_pML8JN930|Hsq+ z56u$&iGEL=VC1?fEyl47%OSI)G9N$ZHxc>a5^p@?l?7+vG4I!!{)n&o!>lBDRTI%* z^%u}P<8fF?=atyGU)$v7d7BQ$&{7Y1ohiHwgC$xmUvk!S+I{MtcM!8S(y1Yw%E7zD z1u^5i8 zXAIuR^{vx8!$_927(2}VB3di7B;`Q6L>?kd#Ko~5uZIm+ig2?aIkb7b}uSi`P z9ihSHTrT&q=~Pp&g+8;ezfKU-XhDmq4S31qs}j6`DRT{hbh=V86qYRxh( zv;<4)M@QGTG*+)?nxw-DFP|&q!A*q5JVWc<``DN@z0|}it8uo?k@BVZQ`P4!>Fv{; zp7@{vX{#Y{v+gt)Zv%5A5U!O>TzB}|^7DfmafqQ}x>nUdotJzu!j6yI`=wQ^ntnP~InOoNg6*zi31n7@lq})E<9uq|37Eoh+5^#Z zt@fi3HgH>&+mmImHu^}?=%n-q82T48HjC5Vea;7MPb6Hc>9^3&Y<=!WStBJboV>S} ztK)$`A>A=*rAR##n)RvJfy6bk^d9iQFhY70BfHw{cc~NqxQehyYt+JR)OYoT z!5mi;_>P@#ri4H8hT?WuLsyuGeEm2BFP^WgixmGR8zyp+HwbnH+K%Q7z?atH3@XL@ z*7AmIKg37=_)fa2Hf~3(L~&Qk`+fucUH#906oH|!?OGK?{=1O}37FTJi}brP$zuCh z4fvhiJQdRY;vd`XD2ReRc^z$f>y*a0YF86V!o`s@NRO(FkfQh9t4OUaJVF}flS@*{ zK)uyx>!xGI66pu6buN?DzzQEQ?Xx)1g3Z2T+!gSX17$=urc}?DV;@@j+1?7fdwd0s zGv*6A()-~{yKq}8!;hVnuAd%lk;c71k4bMonNHi$i1sX5a~-P7t`nfBKAZA2t(3C| z9!a9Q*h96|>$}E$R%eFby7m#zFW^q?;muBswg6v+;_ST+;^^|&TKc``;vT6q4GaAo zgYxvisI_HfHv@;m(O#wXg#IZAoR6;m=0*G5;mLct+743eg*sU z7H=u&j(eHAuSl|AJbLw|6;w2W(^uW!za8CZV6XppDK>qT^>EQYmi?ryzy5CM@_)HW z`$&>*KS52mQf|i(z*TZ;4{o0ID+3X1N>u1p+mCbd^HAf=bbsBYN9-txm{I9h5l&WK zvPlNllKDi)^8;nx!laa7R`0ci+4vRE$(n57OUk*i_77HTyr|AdI}Dh&PryAFpn4yu z9(Kw)|6zUHMzG^>Sged{Lm?2Fh_qJ`th%t0G-d)>&=ghALcYJIsMfvrE`hv1<1xXk z^%e{H@sT_S;u7-^Y$jfuW0^M)+M51ma8W2xc9=9#El0@YFI=tEob7am!o^Z&+-jh| zMMXv8R$+fcg0pdK&C0b6ZRtL%$wbe+POiRZVTWRf{;=LFHOVN{XF5=06WVl>WqcKp z-*HLQ%2~v^{VCG8TGQW7T0J9?+u9Tqo`dyDNj=^OZ;E~~VqeAuo8t4$l~Q6S-Jrm- z?b$d)_a2cC^i%3INWFp4hn9JB(#*TJo@dqZN)RYXcUD*+@#RmFrzvyr)^=Ds^|=VmDtx0!yg2n3Y}g+j?z zxJKAvauBGDvjYkSuZQ%0Sf@Y2j`EbFSh6{&k(RsigKA)c@v_scu zX_*VHVKBC6iNTu}(T0gkCewcJ=`xpaXSh=QXQn6F1dcG~kH2a*hf5++F7Wj4_|%=u zx4FIX$ab>*#!AqC&YnOF?;Q04YNWbpEcKVUC3DPCS$E33@ndrha0{8sWI9eX7rLI~=5#!3|tMfn7F0ZKb+o!`(sddN(i<9Nb4Z;q(s zypwKAs#so3PWbeY6@6g+7AN_HnU1EpmfoaKt&@w{G~%-sI$~)NgpB4)eTeb))Yym$ zs(L<=mK!>bR+E&TLlEnx1MsmNAMxSO2=qaCA_6R$$yGRsL?W|iMpuX)YViv>E#VbC zE`Hma4G!lrv&rIEqe};7YM=^5E*~1nn&A5}-2!Fx+_jM=vKknvv)8aRlKp+r?huIK zU}`&e8|0NVtYoIP=mb7v4DGJ;**DK=3G{nG;y0zi<~tK9XyxY5$S>}(GR7dMLVbqi za%s{N7wPTPyPwpH{#4t=aeC$fw#9hNxy`N&TeVV%24WQF*pd(?bkplsBr4N$Q}Us= zuOC1wlY#=v!-c`iaIzuLNTc^~eS!o%wUP^BEbW(f}-hD_Epk!ZB z{5cl%BFI8N%+Gf&{I0KKj|arH$toC(YQQ}`o*bxmu6*#%a5^$2B}H5d75Nx(hJgEt zeZ)fNIy5t9X$hOwUOYXQw)6fkF#5oXQ+rD=t zgq7IVIJ0|gJArb@icE~hDVegIU&h&?0+@OvPmp?qAetH&WIrCi*6ZsVzhmOcJk7+I_-56cHKlj@l~%i98PZ(lkR%U(G%8HQ=}?HdCF&KE#Wy zOD^8RoN8(HxaaHR71c$Xfmg22Bnp^@Ws+XKcM<1?KkMn=|IQs%sJ>-FtXE zUYe$QgFd)~g^rm&l&g2(t$L^FIOj6&bYw)@qF8#WE%z`#xq};PBVS?4t$CwW5l8!@ zOZA~=>8r36;|vwcO)wm_#YkKH45@c6$#Brg;SRN~niubbKO;->YMS`dCDO36_d}1O z^`TIHAzWpQTPU01KKU*k$D1C&AJE)u!Qk0uHLiPqT$4WK<8^99htf}%U|Z(BCDRp} z1#}02;=K6*eKS6YY@{r0%M~Mz zH!L2=y-6U*LLSUMM}#|Ab=7(~=}C+*XwND)%U&JI+i69k(rlr;K3u_06>~=pqV}!k zeB!FUl*TP4qCyKOG)3WV5U@%im02!GMd~AzO3?_n(5%R(=J2vZl?v%W2zI_ab|m+z z4kdSLlsi2{me#N2bNja(oc9lPhId5O10(Y~F4+{%(7H(wnsx}vKJank*{|v4s{==5?eKj;@w-)L44D zkBqVXlOH!vTi?E4C<#*yB#@018G}Urgg6;{FD8;1Dwoceod$@HQ z#F(~0zkUjBfSlw1_;I-6RZoV`xOS%G2oeG}w_T}`PQ{Pp zuH@&IJPTtjcHS$ve7MXT{Z6*d_TRY?RbB2vZ_9Et)a8X_KMR{`Qay%^&4K*`V7;M$Ly^^j1eUEA`Z*~7+Aegde@Czq z8qYu5gj+}{OSu1($hX(q-JN_UxCf+!(oJMyAc?6|QV9fJT*}2wbX;)Zc!ZsSv$D|t zq(NZe<$*p``rf>gP(LHi^X3Q6lc=!^R#5vu%c3AAC_ayBF+wh&pIoWww>L0X9Q*Cd zYyp`3c4H!eKm?$U_Ue?=r`mS>(dzl($EGFE8W)EvEoiFYfRvfg%1B_;vF0=ctB${r zLgi2!zf|m%X%|%4@92(0+l3x3U4O6MUy!Z0L4sCaM z$g@b6^V?p?T^vXwA%fNq{*I<_3w>$QE`cDDg>`ALGI}*W#}k{p0#kq74`~`w+Z3OA zPmk`7ZXf2o@B`opf^X)-y7$dS)f-sMUUztU^R2!8)MNWC^5C#1n)fPLg2n3&^Yvx! z(YF^a69@wlc7Re`@3LN)98Dv3Tpc-k znOPU7xZU3IbC=AF;_h1|f8|y50ULUQ>!C(2#eCh2R-jyT)Yb#CO{;oXW9 zFUHfc{OQqm#Ihn7tib!)4959DOtl5ufwC8$$|*g!*y=AmSRU`acVde$qrn&L&?@ub z7HKnfzG2_pDopb9TOcBhMoymFMcbBkR@3Qec!#?H&RsG zc||O34l4m1N)7W7r&!M13E%;LK^7>Edr}YNlGpF-Li9*OF8FSa4?=e^W6}`W zRg_aQx0|o2<;6OYEP#=7aU$E!BVM^awFJIwk(7DvrC&0B3i6^{TFTQlC7mqMOQxyN zs`R?ds3SdJc4)UX8S$Cd&>;foW6>rJ8! zB@{&XR*Ttz-@0(KkvbBf73A{VN`oyJyD2%+brjOJZ-nWjzDtcZ2_q}N6E^Vm?TLL? zr@L|0pI%uYdEuhKXXa$MXSzC47!;eW=*{uy3V;7v1>D0Oee z^4U5y5X&-eYRaKyLlgPy|92zRx5)7Z5$|C5Ei%|C5q|;taDQIL;6Kq|(Cz7Lqm&=sr+Kt8*1OPKLT*f0<_R;>_S2?3uUJwE!uc4>dH2PI**>U`mNZ9AyG0KkkR{D$~+HIplg=4tUq z(*Z0}*Jihm)tZowMgwM8`yJ3{uK5l)dPS>jA|??84guZKI7jK+LZM*2@y*Xsa?PSG zTQb{dG*6e{^z5$z;MFWacKb!|Yjf0gxpX+nvCKH99ndNC%R#?ZSp_hn$o!xK+aS@| z82m5J(WsO$zVm6?U{B5mUfjo=X$}f?5e8GXO|Sr+87@3}H|8Y2$r!zh^YEwyVM*VB zECRgwi9e#m8?TIQ0X!4cAN}oIXx(RsygiDim#pcgUNR@a8Ma|>u+*$jWGo_>V9*uM zMo|$ZdxA_ANhUEz=;01qZD?VsD3r0Y4atpF2kCeGeq$xVQrIm#(vt!xXm3)!%KcVU zT87C!*-Ac!)@~zLss^|S5HB59VE`b%6bZ%Q1OCcA_#s#<7JB*tfpEG8i0)i|Y&|Oo zlR7>-Wwi^=8N6h(kM`=@IoO0)+I9sT1KHNt>g^xDSdn{9JMly7wUR6AD+LJ{)q~GE zj2~brA5+~KOYhTcxpLaJfv9?L_Ja0j#)F;rK|Cy8*B$3MM|D2{Xv^%%{d5hZ%J&K6 zGCEgUMV!E7eBH-arJdl@Ma;4_mD|=yAMNq!at0sK zq)Z&9!>w5(N|)OYLG{czzj1$RX>Ok1d$s(Y0Kmy0P-0vA6d>HHRQe_dnY35Ui#IW? z?_#WGbiW7=vgLXHT2oCZB+^SS6^Rt+#S~{Pw1Dsy2#74ejIF*f#{od6(^(ArOAE*T z!CW}@zNS0I5>;poF&}rwq8+MDGukdhI~$9e3NAOY1TiOtm_)bD>gfcs7`K{IZ@V4F zT)>2&9%#Odl1|-mYL>9JL&FYf9|sjs=|+uz8T9`%A^UI7-m8}zoVt@mUlq*+$J)zI Nx_Tcc{up}e-vEkG1NHy_ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_0_0/00002.png b/tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..ec47288aec8a757976d605252603eeae642d216c GIT binary patch literal 9175 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 Cy}Y{s literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_0_1/00000.png b/tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..adccaeb16e7e9324e987e8ba3c615be797881c12 GIT binary patch literal 5881 zcmeHL=|hrP`?lp*S(Z(Um8Ldt>y%4bnoB}uX-ou?@4>zF1v$HA;;F&Un9 z#~pWwMhE>VvyJOjspP!lJHtBb5UDTc>Qg8q5Rz;4bJwt==N-w23ne8b51B`DZ*3+y z?xUmUZ3-V0hitM*EQI&Gcpkv24j^yzCVh&H2IVROlVJr>Jx56+gI~C(zSfK!Cw;n> z;U~R0R7VZ=2pZcOI5u&W^0^_gD}3ia_gn@_*T#s$KD`YugD13Ac45l0rCS(7=6Dip z|Jbtw@jnK>_RvB7xR1@LE`?7LFO?|V z70dl-ON={mn6;b9-IYJsLEtT?W0*dx?LObYpRHQq+!(NfbVZ9N8W*@aev4S>%8T}2 zD*8Hxvi$_|+6?BA9OethrtGeg(5gJwe=sm*=1aL<%f%bp0>?C0yUy)tUTcSRO(&mv z&BefL`Lu$A_-9V~-pkrwEpm>Rp>(cwK@QJ4_vSDc*mqeL))a@lT)))qLwQH=Dm0Ov z^=|w@aL;XckMG+13;2JJHb#xK7Z%!N1{V?|%`sWcV=>7v^J&1@gj4m;eq}7i49cco zvray9HDwGP*p}}H|6u(u!(xM!fX;T*%+7u`49jFO2P{$D;cQ8rK`)b4&Fu^&@(H}E z;dYS{rvpG#$V56H7KcU$K
  • uHUqR~X|`rvCiJ zGR&oQR_fN6Irq)3k{q9qFljVqP2`EwJ5-MqhU+a@L6)BwdBW8a+erxMbNd{Cj;#&6 z5ftZMJ{}Txd8NJfqypH`mL&xFfL0U~6zqik;Xu2tBz3`($KGyBG7 z^KR+XES)V$YzoB<_8TLduEHK4T6XX4GaCozUU{TiLozXD}18xiEN5nCo2fl4ps6IFB1(iQ1==E3% z#cWS8JF?H?0i<$xve7PX7&M~OHR*izZ?%(Rvoz!5uk;a`T)->U2i}@SWOEn^a)M+`n~JPB zCZV6M>MW)rYB9Z&@Sy5AM&v?CJ0xH!kQI`*%}q_4>i+=t5eNj;<*^W>(MS`rCzXZg zmi023#;esT@eZ%ZS}fx-ihx4oQE9Z|-%seykEU(;R1!#;t-@E?Z0r|_)KuL|-0iyU zW1H9aaxaNeiQQ8Rz#d}V32nGIVNimRY#FYLq_?)-XLfD~xqH*GY=+0<(OUY`4b$m1 zqy34y&=vP3LwCGhry4Di7iP`PUZC|$PH2JunoMg=fT=m}ceTWIwIdJ+z0I#{K?CAj zp4Au(7`B8Rd)c!9YP+pzQiQqg125A3j*XOUeefm9jLP|;qO zizL1EUDi7vXTH1>EIZquLTb+ZPi6m$gDyioSNyLh2XF(217I1?V%^@<@!KX|bJ}Sy zwG6I8YRJYHD6^hroCQ^o!=56^0??AD?4607E~2;;t2|Kg78k*6Y39NTo4+5GO{N*9 zr$0W60paCr7>zbn`&fbx}p;_w{SmVHgl}lO6ApLtkF_K16BV{{T!t~El^sG zAA0=6xaDuglrLn*y}Cb8`<+T^G}gaQ|IpCf+8XEPBi~5?Z=fo^aN2XREjEWlHq+VY z9~rY9ZCY!;X zrHVXgPl(8ebd4$J=-l8DY^gLF!C3gi*roru0EjOoa??;Kd;TuOD|;wDuAxPe z7=-_jddLPSH*U&EJE!O7P~vtqa@FnzSz`Yn z0Jl)BQ#nLC*J*W-$QNE8&b7ZNbpMm4U|8K{4fno z3(mc@s3w2_Od$2K-BM3W?86l$B?w@R8c9|DHY|{D0`ighoZVn!YkQHvqp3gcX{FPZ z6gr8^Sn+OM*Gz+G+Db?ZsT(Dh%@}JK44~n~J#!*3ni#w` zM8doSHRwY& z4ZrmOyq>PBL0q7nGp++5UXT1n*=P?)R2U4F8Z>r@SCS1*ThPPj^EG$y9nM@F4%c}i z34~9z#h+VS-7l+|AMo$F;ckykv+`I7TxoZEXjoVgp_ZaNbAQ4)iK-xYMoZrRfQE@ zKWBVo>KJUSe99I-)UnD>;&j8Tup`&*%6w38@7vGZJrL-{H$7aeO%oZ z|7jf}DdG)iQNSl{zlTi=Yz-;NzY$8*)AojjhE@kB&snFuL~rP_JWQJHbA`*c$v4IO zcQYcs`Ag^MGPC0Qkpi_^4bCvkOjamABd@L^+s%tM{*2fqzP1W2n7RHkFzJ3M%XYwr zaQ-w{Lc{8BFOF^G*utipSx9(VMuvVLxTm&0DLy?tNV&#n(2?gFUKNl<5Z}_>F~t5# zooe4zcb{f+t&UiTQceN@*=H5AB$v7hJ^!epR*-ibj5dxXuG4pPc#(Zv@Eo}~Vd6%H zUYS+((qzf%>MYr5-2=BfNKZiS4I5CKR5vo8Twk>~HYM=ulrF;Qr~RO%R4O$&RJHX$ z9xnN}sQv2xL)KHe*4Hm_*OkdiTWt$p@Ef&efthK>9zkDr{*$fz{csxErK||7-){(= zCc^0byVWhrsYV?84)GMAqXY7a-?jNL2}uB#3L|yQ@X48Pqj6uyhg45> zxCmUDnUHW6^z}ogL$iJ*_y{@4|Kp-IDB^l=-iiZfcNJ(NoZRpS?z>T-oGrKE>Hwol zJ@^`#D-wz3{u$m6I$fU+BRgqctVO3W0GCFk04_B-6Y3KVqqQhb&z0Bv*4SMg0WCLP z0bZ(cnT&7T`(!bpVRqf)rAvbV(WqvX$q~HDZJv!dT_$KC?P<768PCUUnyQPgO07du zD25zB>8XAGqH9Jp;Z!J}-d$?&Pgop#N999-5)XDqT?nzWh_t!}NfFlJ0Lh1vmvW?$ znFlPf&8-RbHK5MHM?7=?q@mHf2dfK^ju{ovP8pO?2f*k_uL5vLU&Ho5uXj;oByt8o zxUN2R=RyGNG@5$Q>{Y3Yds&wZ+#ThaTo16cLUGNrENNnKmVIu~_!O_;0&(l#^;6St zJ)G1@{6}(BZJG0YYHy9etk5qHvOC-igzhXM#KA}%wrpY;uTBhDL8#t z?+OL8o=>L6?uC1XJu@?tmouQ!aH8!~^5=>;NO{!Wv~3LcPA-=VM5237f-~X+olZ|p zU!?y=3CM@OguC+5p$A7K(Yw(C>fJZHMwRM8Mgcd}NebxD^ep-;D?e3dFpMP}%Ac(; zbn$jAAy)RCx59eAidpJx+vQgJ^*!rewREPa4feKh^}npb`reQGpB2dW#^t}djXMb& Yjc|*dCH}$!TG}SQ$05gF9fjxo7j|Q{Y5)KL literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..caa284a71710b6d4f08e6a1c61a3bf2d61c9b567 GIT binary patch literal 15601 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..08a0fc72ebd512afe037513234a83ab7dc9a1942 GIT binary patch literal 7854 zcmeI1`Crm$*T)^LX_?ff#U|J3?oKnescdnt%*;?pja+g`%Qbfe6col5oodo@P28FY zF-&qvOi-}QOi4&lN$IOKriciXBB+Qw-{$_|dH#U=x#ySr`x7s|%XMAnI_GoFd0#ir zdb(O5O?&Ep{bh~L=Ijpjmz({L{iOcGdgqJZg|0XMc~jQf>%0Dw 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_4_0/00000.png b/tests/snapshots/stax/test_sign_psbt_multisig_wsh_v1_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f89bec72382369814dbcceec0bdc25cab76e743f GIT binary patch literal 14565 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

    muJ4K{&g59 zk)>j?wS7fh>|2y$0gMW&Mxr}rdy_$K(`x2NejID=VmJ zKq~_>YKe<;&LM+YXPGf1;&40_25W$wwf2&@4E$xGS?v%`K@#b&AI#``c2>Q;qBlao zeVhWF!&M(z`oSCtn-d3*BmaMHMd z`B}{hDea9&NJs$gxBRZtY|srtXC8n>S7iO6{7VLY#TN7n?V?RF4$mUZy;oZ6E#mIg zqZ%yS7U$>L79mA@oE-nSJl3Y$Wae2qq{nUo4EE9vU4mo!bv;JA8maUf+k0v_w58&0SljX%;C_|oRn zgSpKDv;Bha>?F|naZ(`vw`R#|$2n|!`~-3jH}<`_n2wi(^m<`e7SLt pcH0M$t}Y%Y$;U&k|0i#a9+Ut8 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_1_0/00002.png b/tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_v1_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f89bec72382369814dbcceec0bdc25cab76e743f GIT binary patch literal 14565 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

    !jC%&|`Z$?oP$zY@W-T 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 UX&LZFSk2Mi^@pnOZ~pzi0NX%7DgXcg literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_1_0/00002.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..23c3a90cfe804ecf28d54f31790bca71fa5cbf78 GIT binary patch literal 18887 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

    !jC%&|`Z$?oP$zY@W-T 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 UX&LZFSk2Mi^@pnOZ~pzi0NX%7DgXcg literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_2_0/00002.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_v1_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..23c3a90cfe804ecf28d54f31790bca71fa5cbf78 GIT binary patch literal 18887 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

    !jC%&|`Z$?oP$zY@W-T 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 UX&LZFSk2Mi^@pnOZ~pzi0NX%7DgXcg literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_v1_1_0/00002.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_v1_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_v1_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_v1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..0b6df0c481e4d5554f1ad123223fbecd1ceecdb0 GIT binary patch literal 15420 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..9aa0dfef1a833cafd5ca1c9bf3cb42e626847aa2 GIT binary patch literal 16569 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 AH~;_u literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_2_0/00002.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..cdbaa25e5de628b68e37975c6b450a8220f391a5 GIT binary patch literal 11730 zcmeHtX*64H+qNpLnyZQ$dzaoi7;B!Zs;w$&2!aGv)D%@>j-dlBMXRl`hMEO2Rj8QC zU1@^Wx+2w2>>YRAEG=miG{XE6^aa7N#zqlSY+IoINPU1NvbgL3?W~szSbuOvv=Uo#E~Q8}9YJa3 z@L=sR$lM$WjXX*mcZ8ie{yN>j@zm7gknp1(&eKN{xi9l`@+C-ciE*g^_g^qKk;q~) znX_j(HziaBl-@Yr6-$VMiaY-;nsBu9T*Kh|b~3CUd@ezVnbLEnjzej7G11)Rkn=$3 z;neq>4aJH_#QeBDz<6GzG2WipLJ{Y(lL@|?&70CDx^>f}H-V8}c4*@VxFqzG0B5vLk5~O2t-vW^y9h@ z5ah+A8-F$fF`KKtJKfA-xB{>LT{33?yx6)q@0 z+f-)m*ItG9o}RVss0a)h){1dc5vq9O4YtVK+1p!TZ)1I*Fibr>U(ce48*Ve1$e>CEJj z@l`y{K{5X9r%2?z!H3U!dgCjg{NK=sPG~)`CR%zTL>kvbh(8JHdjN5w=AlB2_*_O_-~W!!POXFU(S!Hy8( z7B8%9LBl+w%W=$d)vM$`%x zoP-CFHah4S1q&V}=jX}XxF%Zr-tKO}E*z9Askip?LGGygNAz-&(kVke&Gx>$X!Wln zQ?IARElh=PEmJ&pWqyQN&#Z!h!9qTXQNFirOWlIB^LOJYQ(-5~M+t+`YM`}KJW7L$ zK_33CD%CHL$O{&kWEfFz5+rK=s=ZrCNH#;&)B}OR9zDLyr(~4|pGeO?&C{=H-i_y^ zJnz{GgC-=M$kTHT0}l(X(6nRz4vXN4vk2mwc_L-+kn>^S+jCR<%;w!U?$4d28Q zxWp<-<`!CG?ssf#ctb?Z)93Dj9YJsMKG54eCD5fov@{b*vMF{nmW>sJI>-@-EB^mv?x^`JeNeemzB=_a;wEhPq^tfh_ z$q18BGOHo%Oo4^-K3_^K&#U>Sv$=lp!k@|^G^bThp4woYZEv@TqR*rHN8L9JgZ&-t z`ZyC=%YSk^N+i(=9u-o}Z3&z7%guyGot>intB2E8C@_DIT*fDL0img`8mts z_&ZaEV{3-gDD31){=SCh+%N3ijZi%}#Af+}wE!QXp{pQ>ls@-7>Q?aPGaeGU^ju2G zjkLq1%qrFSittY*(cGyA>#B>9ajbSXE|`R-w--_c!UUEvK7lz~Nd${WzBBeA7CaYu z9=>#Xg6yNNMSh31c6WC-8`R<>g}7}xde1a?>>^Il2*K6F@alL)ixSzkQzy)@b0K3F zE9#C9`EH6lpX9(b)hgk_G32uPDyNB>ct*IvM5U?FbnzZBaMUTd%Odk`e}iK)_Hj@0 zI|05dZ!i+^1F%5nuJK(3~)o#o!DH;rKFGdi)yQV z4F7s`kWEa`K{klAw1M-8XO)KoKE9N2aGEHeKeBkQuh&F7f2eHWWxJY#`>3*2a-Zi* zajpEJy9wq}Vv@fM8Paa=GIC+S1YUD>mLs8YO|h}Yn+m|w<6z;B7Czq2<%-K)Mh$&+_(vafI0@OF~an4M^%exqd*siUs~-RO`P3ob!rN z^mY^l!dokvjOB|B_5dAx{`7c=N;VRCq{2it16Y8-4?DN!{p7Kzv~2y_32Y-{o1xNg z=?xAylua$UxBn&NE%WzM6m*W+j*5?uXYE7lok-{+*PEX|&a7REpN1qj8OUZ-j#o44 zL7?Suj2eIGxl1OkK_qk#XvS$jF4~kj(4=G`f@=yS!D_jEq^6M%1%=jTb-NI0YWzcR zHex^4xCl>GN$v)ZoBCg4e zm^SCUU*FEf(I86!_1W#;hqM+rZrOA(BG6bM|Ih!>wZ?#;Hm?*cK%n$F-SiV&iOAAw zA!XbzLwv`^VACyS92}x$!+N$i!rtvFL04bZ=BwBE#xyi4+DHL_RtZOI-$0n~Jlwc> z(%ci)d5s)8HDQr?b>E@N2+pn;*%Zm6wGTHb;V!Yd{Y{r=ho+GQmK|;?a7fMh2}l3; z=9-QJE(>2br77b{YXD@0#-@5*?&X{31VjxZo?}Q%R zXqr-}%%0tj182=28+V@k9lK(1_TlM!*)ty}7Ww|fh72?b^EZi5E2bgZC89~~sDLp^xQOV)N9N%b%N>XIKboRW+R+h%w8+l=T&Nm67AnPm79=9iW@tsORJ zXuGaQd3vl|^{P*OdZFibpeoL8_X|2GRA=boyAK9Q5sq^mZ5R+$Ms_~q-drkPSKGKJ zf_ri~+@J{WD2@&3RU2e>Fj5iM%TPuw85ch7EXwlK4v!ENp_D-q09(E;=ZSQ!^ts_< z>r-RSe=SX%GG+s__?GlsWSU$UeNxiOqxmp>MPz7Uv6e?QGB7ql)xXc~;pua@CdhX9iNy zTl3m2k3pct{bka58gC<$C)aaOWC(BIIywCyuy&HjoyBU^`w@;Q_mfQW#B48+uiYLp zbligZu*t13QNN7{-~4qh3tLfe7LZ!{X700pPgmEJ+I%ZH7Z)GT-rjv~eLuqT-ZXT9 z1V#rL#9Jx%$Xhz>uShS=C}aEm5w<3^+IXfRKDDF@MOUz}u6!j}Oor*qA9vJfIPzz> zwC|?xsW0=$z9i@-o)2r?(nq^hdpnded@^Ba*D z;M6We!QPfg7e}8T+1z7So`-YS%Xl7nx9w8>GXvoWOhMOMTc;6ZegAU!Mcjj1HQ)I? zB>-O9q*Qv&U(>p}5GIs$zh$?VHM8bv5`$k=&VKCUJ37N0T5^w$K+his@YvVD90Y3O zv@{XDbAT$TnkE^QFd{PE2~>_jBQa-aHq4v%R+LzqgkJMt^^4JmEeY4Z`OCwNy3RJx z+Kr_JX_Uh@G2jy!vZ2NnnPJ0@-^~a%548qFV61IMUZ{jaW+$aF#dpUSKO}LnAD$ z5`PVPFK2ljL$)USJJ|ePWL^{V) zrMRXdBGg<~b*4_s+Dw?sR+QV+Bd*+NtdCr$e?Rg)_5)}cmUjKN6eYU9aqUpo#Re3S zp2OD}?m}Kkle<%qX>pct@i2Xo_4zJk^%5fV#`ybS03f`MtlQOSbhv+$9~`{+?ouqV zoMDkYQ>Pyr$xoa#$iCqL-zu@ZasYh8%$-4@pMj?hm$M^uU0gy zNGYjOzwJPgxP%}ibT8MHMb{|b{!6T7iuA4?x^+9td(I}~_3bpv(Jr%+Oq43G+!WHk z_{s2Dq)FOap{_M8_q^W<#X%%I=6Y#zXmp5bB9@U&gx8?~rgXT~QT(p9rNDE68Y8-S-GMoUw_r?Defe((da5rRD}JON|jbI(j6ME0I;D zVBt_%i2FGv0dZnEPRIleMu>6bBwF@zYbJePiEXjH13ME*W4c2M>KbGf13x z9yN9&Er`N)Vk$2eq+?4Z>1X)+-UvnQb(A2TJn2JKg$2&{_j+R|gug_-5UlQZ#v=xG z!q#m|JJ8)RozS5#z*LR}H0LOuWJPywc)!xqXFC1vx9nBI2_`?%TjiTRXOX!aPMQ`6 za3xlAzpmC_QBWK%%Ys#Q>8t}KC9(U3pFr1IrWyd-nYvmf8<rsK=tS2@4h{E7%_A9oh)d#2CCEa^t#G1 z1I2qCe+0!^7{@5))tBGv?z7O@LHyk=wB2ucr8b$d?Neoiz~C##oE{dit~22csojL| zpI!9K+mNd{zE9#3BPpAo{9j*0wBq38quAD)nOEI;t6O`&%S>MWc5CX z6g#*b+0WP-E^!fB64VNz&JGH7qvSua-9)ruKQ+Uq!xvLU@JvYtOS&`|w%qzSZ%gug zEQQe_RgM>fPfSMT`~5hHj4BlBI3B)cdBxmjTvw75tXR-^Vq5#is`cA;`Zly|>&ME% zU8vfyuAsSmLwg2`&WdJ>>spPkS$4ag50HzBpx7_B!wi}SHSQMoSyL@88K#HkRp5DQ z6UP}Jd)hH44B{`$FK?+QYQZDc)u|eLu0=Dcob&^T@=xzx(Y4-knj6%~I7VTQYbxU| z;hFsbx36!ssptPeFesUz&hxE6h(WQqTQ#S7ei?Q{>%GBwprnn~urCvDS(qn4;YpDE zMny)IAX|o+Zth>&HzDYP{>5 zOe0nUuV#q1G?VAl4@gCvzc1BzVrV;Kc`Pqp%O-IOvj_9ABFhA&#g(~7rmkM|fLj+c z%Mp*y&xdGNWNO9UMxJO}dxwhPG9A&gfmq#hXd3itXI{qyFR%ZEVkRqcv>tNDv|~`D z2w`Ip=ZJ`s>D%*Sg`IRP*JK%abmX3^bm8Ws(YkkEIzZov(118pu&uyIa^4hZY$u>} zv&o$*A>HYmf-00Su4!rMYy$yB z{Bt=Sy&G4rs9S_j<7KcnQ7{3o9BRD##p-B(Cz;D$D;JNN7Pp&88`3jq|96 z7Lt}XR(1^VZ!L@}2SedMQqe*9mCbRd5E6s!AE02-L}>m~K4P{b*yH1I~kY5lY3t<~O zSdHwjt&_Ov&l*Dk4wzSo`)k+GYib;e=C~BiHQZ=Ev z()zAV;uKcu*FbFyd4Og zp37(cbGFlehZgc5_s0Go3bJ1g*OaLc6`{`Yqst`A`*+v=${mg##Q%ld{TIxZ0~_vaWa>D)PE@MIhe$=Wlb5L$gDlt1-PLDB5ke#nte~Be>^Dy(O{8d8)8iC92bQmMQS;hwkjtcR;nCbK@?`)MIG$gdR zS~&Ox*ZSM`aXJPC0cXoSxWpQuHC7jYvOdW-B)oBnayhT6qL9d4`|{~~J1E$Jlh0Yk z)UUjwwgok$>^<=>OE#fJ7}9B1*vSiA!YlW}alqc`@jw1- z2LX@W*(_88J#XW3{-5o$YApu_#x?r?W8nS>GH#15SL%BBufMgywnRV} zW2kVizWC{WaCLd>PHtv}!5eT}G?6P12QMHSqGmz#bXql3#WN$aIcqA$XyKT;4ChF12VLweGJb5tKv zI3S;=C-BT!T}RT@I$}-`Fkekd zq0)*eB^xyQ#hV@dn=YAc@0)6Up(0sq%|ErNUg7ur-3xMcIwZwq4ik-i^xsqcphe-< zBiHehA#aC|`P5s=72I52#5Fm@HwBTtmm%`K+XB;!g%R10v%I4Ub^Pi^;VLQ~J3H?7 zggH`|Qpkl)UOG2yY2Zh+Qel3W*2w4GoY>)L< z&x4gkx`ju$=mO?wurbN7ViEhcqF(CbBgk2OBQHqUQ_%y?ilH#5@Ftzmvid+Tw1vB| zu~*EUujE0I0>?@FZO_Gx*TU>-N9^UpL#j0OPR_-BsXeGT0s^VLNkTn98J&+_*v zSP B}Zgdg-OnCM;HDj*~VvB+2qq-?N%A37Hw6b+_z7$H_c~NV?AXJ4tv{Yf+3m z@$A3ks`5JIO}PA5SnDfP?{wFsv!kyO{qWd;h>Y{r_rkC)0mWWSQd@qb%D?rgUkJ)h z3C#r_At+yOc51_>WG2Auou7A|M#CUFBQfvc-gu6-PiW!%&v%QbydD^PL2jkbJ@%Bq zHu9=A7r3T<)#({*>k=%9zI;`Q&dr|RvRh>Nwfq=BsW%KB`H{HyeM>=Zye+_bTnDcn zu}~4+-@Xp4Jbb8(8RCOsbzp$3#?gqDW(yekCfLgZ-2Z_fe&&Gh#oUr=4kGFE5$3SV zeuc-KC&%b^pf~>I-vYG@PTWG4=6VM>HKmlaxmxuN$jZn4uagA3C2~|iWvzN98_q*N7W1zaVPBsg0OV5`<0IvFCm>n^} zf8I;7w;|3Xz7uoW(s}uwKpO0A7vs9EXwp0IBZ;^(SIP5?*em9E4SqB7ogl&FOI?*Q zrR*fyok{0{DEb)IjgJTi{J%M8t2? zCXr=$*kH{|3G>M@+M=qea-USt!0O>xuCGdtJGycVsV*Yfc{G-ylV9Weni*@HPmQH= zFB0IVinlyl?5}n5lq%sYl)?U=lXcS{onAErgjKCqzJ@hihO>(4b1!8|DOIQd){p$? z6z{*Mswx=UHF254aB_LHb^2m~S}^2DR#l&En(o%;@A`|QEd=kSS?0cv+!#vp-c(B2 z^PXO*#aAh2KTjDOG>dgFL0D)1D6B&wfqsJR?HGW21M=Y2UuqiD={;NifSV8X%f^+f z-+llgCij`LkJDr7j>xWmv|`|$wN#FEL%ejun_Y8%&&cbXRa>&J=Pf$!eBiX|DRr{g zdhhyggUcrD5qHnhEiRe^ZYGQU|+#j@}D-So|LDkyPd_W2atV5gRb@I&xVAFZ3}>S`PI9VseBe5hv+T82BQ&cJW3uDj``r=^IwaIsv-roSnvCfveY$fQ>}uA^YEXaxEL!vFB0%Lhxz=K9n9)3NXK(=m~g%g2i?y2@N=b(!LvSRkLw3 z_ZyUO>|Nb-s`&BxH{O8v)T{&;>dfCeE3>ikoHb4$&;>{R4+m_cX!J1dhoX6*D^&{zSU`YAPtx9|2F4gNlF z#l1j8eu)x}xTL%OE(u;Vr|Xx8jIa6g`S@a4Tq1iL0nW1bU1(o<9z3%wjrGKKiYIEN zL@iR=QPimXq5h^?B=Dnkr~yY5Ju2I2uDeF%fI#N=PJHvW zE+qvZC`DW3uJb?*S#Q6U_qZPL$6$RY=-o-4ITh8$C#6E~{SBynetF?40NOMuN&O7I zRl8uRF$AXFGt0Z$>@Rds=j;Ah2gHyee5meSOpI=NDY^lyH)fyi z4!lZTD0UIh#UX{%`MmJG+i6pr3s*f@G(JF8gSX|x(=gBxW(cG;c;FNz==IHb*d9{# zL3V?x4*Xc3nu8+x_Xkw!;$+MhxFuGNtNwqfMJ;$cr9iGwkFCDbLzS*y-o~Br|n&6T|Lb>Q{l^6g!`xQ00^>9ZBn#n|BvI_on+KaDiOVUp?bDYs_2^p5iB^UzuaM)4#{2x9~pj&nFFPpP_Iv?zYW_PG?*$R zV($!2=7hM058k!c`6Q{I7ptvu%zbES;q$IM-~-Vo23Pdzm(;j{mPz^qVBab?@uT@} onM+O9ytMBLB>WHdGw&bbsCJCy!i1Lsz1kcW=GIqHS3Dm6FQfA)1poj5 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..0b6df0c481e4d5554f1ad123223fbecd1ceecdb0 GIT binary patch literal 15420 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_v1_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_v1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..9aa0dfef1a833cafd5ca1c9bf3cb42e626847aa2 GIT binary patch literal 16569 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 AH~;_u literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_v1_2_0/00002.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_v1_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..cdbaa25e5de628b68e37975c6b450a8220f391a5 GIT binary patch literal 11730 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_v1_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_4to3_v1_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_selftransfer_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_selftransfer_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..9c8b1c9dc3395926a39f2cad65b4f4b6565443fe GIT binary patch literal 9685 zcmeI2_fu0{*Y^?e!UBQ_NJj;%6zLr<#Hfgfh@ppSfDlap>0lxjP>>ce2nYxwXdr+< z2!s*@l_o_(5%IKI6(ie*5VkY*gby>^B=e`BOuAAyH}MjK-7tE;AjQkI}6WU*B}0a zH>^)lCHf{=EEW|U;ep=SmX54Bl~7E*kYkYS0okML@Adyp?@I;ZoY~cfhlD7ehpPVz z=KfFFk7rW7!bKsUJ)JPv`yd{%w;8$6+=hLrP&X zoN%rqJaa^_ewI{*>(rRjS%wCL`JU-36zvU<$#PDLRq4TTE9tw4Nb67gkT3tz<9|C)F&- zSMc6kytQASM3Z}YlBSmwYWBMP!U+X2r~b?P9{hcy)y0(_Y9}5f$5AIU5J{Sqfncz@ zE)G{o`^(}wJ(QxO^=RJDfue&kKuo$0U5LzW3o@y$J6-slMtgWPRg3wyqsFaUI!aJs z?pQ2y^WhRwDlQa~0UgXfiaF3slh~lRz#wm8G9^ zUTh)IU|kl6>ueN&-^nWK@4=A$ZtrQvD`>^31Wk-v?MTUhw7#qhHV_=npAoVocOMr% zOBR47T5-BHx>p6~4bk+@qZ{FqDtr+Sn7genHn~Pe%# z=F|4UhvSX*C52`Jk_+d%1hIt}^Ivy%PPA7(msK{7+TE4pr&epor$OA7!dAm^xS`v6 z_~KjXQG*|6^7|hg4fNq1Kpbp7pf=nRoYPeFhR}Q?Zu4FxsDJ;u@&RH+A%$-2b*1OM z+V`^|+QlT>jpx7HzTFWJcdmTQ{G}2~>6AJgm#^G@BS|&Wa#Yr-av$9_#L@*Hf$@sw zb5WIc!oQpjwzoVo`08tPYTX-rK>La9;q=m#DM|)3(k~=gXOYjO1p_(%^eJt_!b7eN z>Z~5|s2Fyp>Z*Qrk~xJDf@qOwTSSqOS-w?+wfpwli6^!3zSXb#fU@RWs&?heXSdW)jL~t5E?j;03bFe|Svl#lcC(y9McvYWVz zNHa;>%9P_6KYjTG5}y%$+mjkP$1BSq=p__f8r~V^`r3*LSTg51Tiw1B=D{WkOuCb1 zG9*4c$Utt#qt+X~g1Ni@oV%_e=^O6BvkP6UC^S zGFDz*o{mkGYV;>sG;x|IHqJG_G>y`AK}jw4^p6aV*B`8HTZ*M#DKSWXJAag6$$`I# z%yot5-Q`P%&g_`w^>R2?U6tvr-(9u_V+reJyV)NC|ID`k3JHZzi2#FHt1cG_df7HC zL8js-;ey9r?Z?6ohslq0woqiY*_QhFXFyCU92De~hm`VpCNN!{mfG5n1WUyQ$<;TF zr53>w3R3N7EJWK~^mW?`1twMj?+i|pi5u&K#U838c|4~Kod!4tY8_WL_Qy^nf0_8 zhc*=5DZSb7B`BuO?P3ipPsJqXnv#Zz6~+}F3S8MgJQs$r3hy*eo><=atvG^Tep$~z zobrf*PhaV&{K_K|GUD9NpM5C@pWBFO@}o00u{NWi`&EG%ee%&-pUmDoDuOwbyci{{ zNPrfXmzC_xs-4Q|mfaoQfY07`YsEpyqvZ}IX&5vL6%`(AC(c?WZLJ3oWM&`IL%Ce8 z>CNXs95Pg?e(!n;)YS=(^d*1OOyk*PD|gI(Z>eQhCf>&~HBf)dDGH>>g73HWM*sEsF&9?2I8TzW!h~G%YdII< zF=Q#9svlya5G|PdRwdX#F1gKzU#;tKEJqXFyTrcUgE zI8Ca_4uSsevSiazl{+?K*m{IpSXuzV1@FKZ!xX{Xu)^J6LZIr#lgE@0mcNpIKUriw zdaI~|Dm{3I;qpUPT|LF+Ea`D{{D-(Jvcz`RFK-84vh9wTcYVKtg$92;0vb~^2ZQgS z(M0vvtLA-{m)?&KzhgzcfB!7I+jmm@qp9N|M#!noNB2o(TtflNi@r%K7jIycf6O`5 zEX|X77wyE`7W=GPXC%VVy{N9sXRmS=eso>169?I0p;}fad+%~Ob~ZNZ+|=32v*_`* z-sF7}Q~S#mk}$uthk}R-Q?RT~<yZ4rZMzr`3P)z4hP8OodRv6`{ z=yHrnub;lVq)_Q%_K3-}*%=$k_V)HlSb8bJLR1x1#0xQEM&?dMmQd~g?25sMS}e=S zc8l^4!`B|juB%v$v%{{7gOHx9$(F>gFN@6zjfd9+P%a&zKebYo%S)mU;6R12tfKeI zKz*Q9<(7-X%}!0V}po7m3Q(Raz zPIN*x@w6YP$nlqBBQ!$L`Y&MPEwlTnF3Mt#J{&NeMsu;yjX}ZtqcyX_Pl{J_O9{o4 znNc+Fh1$q~2p5c$9{Gp?(n`ww9p_A!i7+&m4kgy#$8?0$mowR>*{9)m-#~ zdRNCt904t^uD(!ysygvyh7sp-wzDeu5K>e?#B_|wxraibZdo>RcrxQtEdhjJ$|olF zla>eU<5!Gqd%OA&f(Wu}hxkw01R2*v=Vg}olA+CVi5}Jwb#6tkgsxCR-aRVeoS${C zqBSliqE#5H59?&O80Dj_$oyOhFK3jZDT3%z(@{N(^p9&Cgn4+|)DJKg-+*tn#JlrhGT88U6PN zhBpw!vf6v=Dqyi^!rBq@Iq+QQpegZo-XeCFc8vVNc;oV3sVUSwij-1#{;Q@kx8ma^ zw&d?Nh;YLn=(_^uF_^cz_88Uo75B=wQ2&eV% zeQjulzEEp6>JdL*%mG0xPu37(LjhV8Usr>Q3sP~7=G7pVUA1kN{AUx6SMF;b2dYCN zMsc;8=FZ(U@YK2!8Tpq*vq&U=-sFo|s!lhG%t4PaT(Xs|^r1x>nNyLhlM`=%GW6CA zX?H|y#vZ_Hf6UR4f*s|rki;K4He3bfiVDP~POt=brmJ7d(s!5QPiX9msk&D>S1ALg zwWIT0mBaI#dIp=O!Xja-fpl8d>I4SoPC=c;oSFqAE_+IVfJDIhcyzDZI1pNN0)f_h z)aNQjITS(VHJ+%rm0Dt) z?*1q3XtmAKR1ynPGoA6DheP58n-utL7efu?P8<}m`7n4ps|aTE_q?tSnh_G$QLItt zUd|L5-0bt_OOJB)%xpRjWUrjS_M z_;tl8vsT$~PmD6)7XQh{RW;H!d}AiwmA-^NGhQTi5%sc-d$VyHj!!D^pT0QHaf~h~ zf^}AgkhzCJY1>zSbJ?mJ`sHl$7I8d>eGM}MJEYv z81E$|@NuR8%Mt(8_L?7f-rcnzIqQA>rXiv2%fl|L_<>3)dvjxBF)^Xwlu#=U=XNKt z;5&kdNB%sSz72QmU5=?|tVtSwTcOU6O78f4lyuPG)xRSio?3Qw(!axuF{_ur6Bxod z*G`)MEYtgm#I5Zmf1?Ks6NdH@5zHP8dTw^7%1dg~1HuqqoxOwMpbFTdk}hV-72CE8 zeGb=(pS$`Jf2cXl9om^9Z2e{i2OSt5(rf_Uu8zd}jD-&7{V)&SDQ-tLh3;nU+{tHI z@^=Y0t)U)pKbI0{LsJ4+kIVBBygc4PS#$iPM?LA$WvMu}Y2&KW)WtIx zB*{#zqLdJRbB(7a=49`^5@F(Qx-F@(K`%qqxw(vj_3ur(J-=e+I}sZ?Rny0^JdwPq zUDsI|a|bGiKK{K=Yp3q9xzo>q$<@BXX;vmaq@`C@otkdc{S_@#433hh(FBS{l z=njO?TeEWFl3#C1uhdd@yzME#70g`i#LM2&avnV{b`DmcRW^~ymvR|%VfeK$ER;3` zvDDU=FQp`S;P~>J4+ZH)0N&9ptf$idqg*rO`Uo6OOeIFQ1<#0Ga`!S1~ zIFz!b(DW~-69R+lj(wAMRPuBN-et#dLV6O%Rqe_uI-PL5_ilz8V26w@W~L%nI{ab8 zwGMLR>eFGTXpHi(_ZZU*XZ_u}M?J6C4=wo&O&y!4VePEVTlVWRO}G#KmdZ;xR z5oYMrxm8mknW6kNL@Y@YWM`5esgW^}1wV;9kz4Fh@yGc?Y$&xouL(6A6Fj)dZXNH z#c7x%O~xMf`?XKOE$3FuyLW=1n`ODCIoGsg!~`seEu8f2E=LaI@bMkTpHyK+o!S$Q zaA}E4TVP3szE(YVmdM6a73d^(Dbb;E{sGw=`8+VJqm(V`M2flQ32E#gzQi~X9ky_b z3Bur+0MBmqOsYJ;bw=+#RmYaTDTCyR64Q^7)LbV|qPLe+^6+jJ5WebTm*suazs??v zecMGJ3tVrHhTa4-ea{P8ES&JmVmchQpW5akc+8Hu}GI`0wG=|GO6d*jgk3GDd954RH`f$MHzwALe~>V2X~z1&~K& zeE>#M!g`=`$jKUq!rQG;80G~o`21R+?bjB`q+kwGSaT+)o>?KdN z(?XWKcAyc)oq^wB1p>@_2CNMRGb0iB?#kaAuISYKBS1G;U2(ZY#L`pkJrx1qb=;Xh z1-%CDn}&pdMOIOH*&bk|#>YjlS(3s`xvtGbT;naTyFSZaS3JOy@T@N`#>jLV{>|Ch z3D>ldS0+@Qr0pN|eiz--J=*b~!|3v8x2rL8wSuv$-do%z+!^${5tr@Mh4nOWpwNKEl$F z1Es-BlF6qWpU8&fIo+No^@P>m$pR`dLh$vG3p|jD)smObW8?#vaC!Pvosftty!D(= z>$$!BhMsZQ3=2)??^5<)YG2DWQGuPGS*1T@;6D(={!e#%X+Vt;X(#UJ@t8~+P}|Gj zae{ZQDfDb*#o0b7d+b}+rP)LoE%)E}Nl-^KnO89RF%s%6pjMjko;8#dxY4?h-F>mC z+EvM;|I}s50O8W4e>sa(Utybd8xceLalC8U?L0-1q`s3-;NOsxJ3G*-*lF*N(&hT}RFzV!s1#yW#KE_>2%n{P7kxWCS}EIbfUz zw25SnGDKuKeC3uxX2P+1D!d@N{d3A4r4sA?)eg3ln?uH!D(#wn0M65sOuK75KP(lH zf=+Wk{;B*MigDA&E8ML%4>j7ZDws2T(^+U6Is19cLmW|CB`J9kbIGB%@;32DhdmMT zmb3j(RzvZ9Z!I)YKGJUKXk*LgZz?g3I9y@Q_=>vTfJPPVO0nM zInH5I4kOP8oQ-}p+QMS&kjc$aZ`r5M!}z}<)VuX`+|;`D(KkR{Hf@u?@eNf|WM{H; z?5Y;j`AXjL?XH|^8AZLQN2Ic7P%{f$bLm8{! z)Ga+)rNnMXONJHZR@LB5Fk$faFp>0?HDk*ER$66QnfWC6NV$#S5ENeoqp?B(mu$Dr zD$?TBgAZ%Z(IC!PfLffRw6*N)RS6!gnIArA5p1kvPLd1Ns`vp zF283o;(4ZUDCClz&eG`&7+VYE-hW1@b%vPOQTbK=Cd%68*WD`z+Nl?QSza^TsV}kC zpys8cc@BtscAV5$5E@16yZ)x(-8mud5fuun7V=3604jn#K@EVS#{i?lG;QKtS^y%l$#LWg*u7D7e|FPnX497q6oDNss=oI6D()KPs?(^O@J_qxuDrp=$T(Zyx{8DY-l;fbvF!>hk?0p`U36 z$&pDie1YWsa3aQvvPw2T4?R#lly`?W8JDnT9f1BQy8jV%r?m_Dma_*W3G0aCq zoiffY9Ez1_`!E_9SaQ-z>*n%^>hzaXf8o8!I!4=$nnA3@-^3ApMB(>S2~nKoPp0?P zfuSyY0^QY!NT&4%gJj!c%0|qZ2p>mcXsa%-maRB{xrU~2FrG4#4$XAEG1Aw?1Qaz! zc!XSA+eFZ`aZJn@O;fHdD62@_l52k$fONriuX_EC9Jdgy#aDNxt!1I7H=|p-*D7e8 z3Tv{L5FInF9=FJ=O+jT&Fd6_jcrVsab~b~%r$L^=GW!8>X0qioI^Z4oXXn1wK>rSD zR!sm?fkUPqF|;;F&n}AtIDYJ$IeW-ky^kB*Gj$ia!RWl@OvByEDq>q2`>;5_iD~*} z;8J7j3G%z_HNGg#X%qxP_wev&wB7LdhCn3qUTdBJc3q(ooJ?k@?mdXU#5*c}AzOm( z-gh;)CV$H_eC3{-TpLR9j1?wr0|9J=9!=rAtAo=I*M408U?=VjXDa^Vsq!7pCn>e1(KW0WIv zWqoEzJ3Biyv@3dqgR3*H=suL}X}x40j+k#o3b49joJ{qu8)oSK!!wZe+}71u5}U#^ zJJ~{Kh0g0<<)r49tVXGoI~JvggFY}26MxjIG7Fs`mdFs&K0&2I@`5MiWbr#DGFc`E5(B{&s;xv&g%+oRyr4!?{?qInjj6MWTER@k%K#ZbC>P7`K+KQ1}i>*8Fob*FH zpUvdHZ;rVNm(tP_>AIIe8vLte4y>O62zr}`OK*J`u@X8==W5?Evx8fHd8uR5rZFh* z65-zof;+BjS8dl^4EMGm$`LD~KkbRlj%V5mhtIdK;58~ov49E!6?uImR@Wb(3>yhM z$25Z<#-9^nZ2!*RN3o{?V}7YwI9Z!8lF6PpkRs?XKM+_4b%OJTLu%dCGtzQz&JUL@ z{(GdEYo6T~GXf8yJwNAJC{27~RK>%x0BEt8X-1(7w=RSjt-2qkljJ=`1@Mw>?b0RL zl3|k$VT@UZVW85B8FrFEa_>}C$)wF6A9?N_U9PfHoZ@{5IA!EDy<)=F3_i9)HBP=p zeu5sK+coUen?94KuQrV9P(qlTgCd7XtCxNgXFhxD^@y2uwx``)MZKV;Y&ld z$=^=N_R)kQzZ$3+LqE8Ne>T3VvvE6QUtV|Kbo++V&l3W)stwBBTtlz@>wLg(XE^i% tHhYer=q0;?7-R;J6l_73kW9vh$t~{tqa)wygjF literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_selftransfer_1_0/00001.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_selftransfer_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..8cb4c4c472f5f4a4cc5536617ee995591c2cab05 GIT binary patch literal 11727 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_all_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_all_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..5b406ed2a379f37cab93d369aeb62b54fdc72401 GIT binary patch literal 14812 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_all_1_0/00002.png b/tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_all_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_all_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_all_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_0_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_0_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..5b406ed2a379f37cab93d369aeb62b54fdc72401 GIT binary patch literal 14812 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_0_1_0/00002.png b/tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_0_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_0_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_0_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_1_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..5b406ed2a379f37cab93d369aeb62b54fdc72401 GIT binary patch literal 14812 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_1_1_0/00002.png b/tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_1_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_1_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_taproot_1to2_sighash_default_1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 zcmeHL`CC%y`?kfFDRpL=v~rtPn?x+j9dT^4Ra?Xb7u3|;&0RpWw8kkjYRpJYsT`wF zao0gbGsiT^&BfoVu>>AMpKL*XOsMU(R)2&UN0y^W69S-0ySqoSUo8 z58Hmw($dm7dE)2=Ev*%IwX{|~Ubhlhad2;|(9$v}J9*T_Bkd7?g6|_5efr0FCuZzb z*kRC$(^r44Sq*YIJpf!RT!6dBtAFcU+{t`bx?$IKtnbe`#rER>`q^! zf8A1buMpuS!WHs~+cmR)pY}=7!Ho)|o*zri>dvs}=KWkGvS~H>ED~L)AEw^F>y)y4 zn!_n`4TcLsQN00K$BG}ojTdW*jyY#_yWywH*e{6+PPo3s>fBY2(rxoqo<>J&WaE+( zGiTyQGQ6`vDL;Xr3!#mp;*Uk$gm27`UY?p{kO=#GgNp-edvJV%=2fMX)w!AStoXAX z`R`xe2pklADl2Vqx$Iz4fN-yoIfN2!m(IG>$aaj~cn{Lu?X9HAf2f=Dg{lO-_}$*~ zNkpepYZ-m9Aox0cRq|H#l8JApP3KdBgr?{li#}(L0+KQ-LgL}^30d8pE$J+R=cDYv z_!^2C>!SI)qcyW-qpz4KzFzgliP0x#;+WUxnTazr6!z?!Cvrr&T6b%m7AiG3$#C8mdj+b{yJV3pT=+3 z40EW*o&NBe-|Zc}{9wayI<*}2=gzPCH?;`?>9uNmy0ddC5ita6eCpUarDYcPz?cu@ za5#d=EOx(8=#RaWc5FlE(|%IA(Fn-kLb+*YF!n*1xYv_P`EZM3#Cw-vk<)?GWW2p{ zrfT*uP*L4e*r-oQ=^?YP?%!P{YxpaBY*Atni6w5-Nf?V z)UMUJ^t-#-ua*e@8w~yrg`DHerf9JP8{t*Vxg$dBEgOkMqNXjN+N**=^7VuP3%VF( zckrMRX=l{L{>Ses#TIPZrg~k$_{`^5AwLm`$IH&w4;dRb?7*YYXkU=NIM@RQvpi14 zF7@h+wp&M`y+Ufe+b9(4-19I-h}DR~%8s6*>@UURoz)L{NvKbHkv7GAiYmmakTzp% zz*DIxZNiBOe+8eaJ>05IUCU19Fquq$;WZ*L0D+)2>@YMjF-f7kaV;Apb=xImr;rs2 z1-c_NHdE(Ox}zHP?D~vIBucQfyoy93!H2kfehkC}crqpZrDYAgN-dwkOF{+eZFU)sYVFMUQ+C_(nh08R;ufR0 zR6ITJcv)WNZ|rg`7HeQ&pr@zD*Ap!*d8m_Xy+Qi9ce>OJ0127w&;jWS;Nwu+qw?SU z9Z-fs4J*%>n3`4)M;*8Dns)$6TwZQTZ}o)1;%+b^8@)kA8WaizuV&I{H0}g;{IU3c zy*#R3-qakeu+m$TJq_kAeOXwDZ-mEy772Q3Z&Q@!>iOY>BXSfRjN{va5ioSzl|hFm zfKYjZabsiU7^_BAU1@(QN03_KBOTSonW_D@k8He6O-&c&ZJc6>KtO6A3EaO|GakP}GW0k1 z1`Fa(h2zZMi&8!}?=aP{ZX7B+lQI!a_OlUcC|G&?bYOvV^Bt;^7yRh!`y@dn)GKz; zYjj&v^cY1EACeqmSd=;O@?$3-AeBI+bHE|;pBNe2Yio>;ytb=}ZbYeg&^YHgW1@WDS^z*uk^ zX$$hKfC-!96#~}G%nUby><9Lh1c`m`i8>^L_7|p2>c!VARka6rkwwW*7R)&}TP~h# z;#8Y?vn%EPPFps9PED)lG;z=gR)vR*$rQ>2`o#GcNDZ@fxRo96+p#&KH0cse3a-|` z-1^$R>)-YlHJKYUa&yvw5;?A(yIoWmNDUz(wQVhjMB<4BTYj`nRB158Bo*;$8kdRb zxs*{W^}RRk`k~y@K*NVuNuQcTpwEsKoR88}4WNOvWhI0AYex-Qv8Tb#%GdxESI8HX zl_ne>R0Wn#Uhxj&N+c2h_S4hTJRa{c`-{pmgc4vYJ!PMS<_zcFkw%JIq=eD9Z*S6f zcX#KK=>Chiu<_bjS}T&)(bkp(d3eRn$VLhPFp}MmK&7P(4!{QQ0!%dG8o(*Ay3HDF^ zA(MISKhSweWWQLi^zv-@m z)?}OD16wv0H7~m;3X1dw^-9hG!eTn&Eu^uwI07uIsHpH?q~}-m3e}!{PokJWmQX;J z#Md|$rf3}fd9Fq<5OKffN;12|!=!R)Y3T!}UNacJ^yN#9ADGQ%QxReSaDWQXZ3Bdx ze=~(}kJKgU$ZzSRO;uL z#0;btK2t;aF475`5;tF63?$)LU)+XNLNTlQEe~dK`oD~**I%Y~yBJzC}AO@Ih0m3Xc zwrN3U49spspOQG+$PU5~ZQw<`0t8 zkM4EGn)@BC(}r&7rawd+B|p*afoXZ8^Z7+P!x^(#(P52D8sQ7YJh9cZpMQG6r#x@m zsAGrW+yxkeB+VpWgFlea$M6tut`)#)f2tpAo__Gm|B1#i`QdTs{byTQIDf^517>mm z%zj~vKeH3_W}BotnoU=r|Jq#WM&O!l_VV%)Zxt39R(e(x7Z;0qWc`PQ_s-t>)rVYc;EdyF9qWHVv`WEvV+{+^S=gW*Hl9c_*TI(mn ztZ~B*%3OunnLYV@iiP39qWsDem(X!bf%|1kmxjPJaeVI@KE_SzE`4m;@YZbnPUgRC z|3w`$y`i2v>%Hu^@ah8btail)6^DItlr=6C3XR?E2SPh_{qMbJUD>!MTY&45Wd&lC z3g!iDD0DJKx%13=+H<7+1Jl#Cu50E?jx+k2FLq#WjhgMu?hJ(DX<_yLBScG0y_31U z{MOsBdTxT8$Ef|xImTkMI~I27;E8&5s-(iT*_{zM`NNak>UiL^IKH6WgE&{3BOJg^ zx<6O`MR#GYmLC@n8UjKJeYG>VkYlF{IK=G)BroCkG=5L)wM~UTul#?VB;71GJ!`k| zN+do1Y77QRn~E!$a}+NR78+XE9eh5Z0k9Ew0L9LCDxi&V)2;i-pKN2t{Y)!!MeTfZ zK?tlWtLF%OxBwU-M4Rz%y3iC>%K9Ut>rwNE&#(w3;z?Q^f!`bR&7 z=!sa4fK>s=xaA=+qwb3k$U-c88iP&2IN2iszyl@u6)b znB2xhH%I(2wh>-1bBwh8)>Xi~ zM!qXeznw=&WnJ6Dc=07hs&~w&BHYew262%nRgMFX`LxR*Hhj9YYqBQP#MVfcy4@Eyhb{2B ztKJ?~?{kozjzWzpZti2d)dV+S&jJ1nM-8=)oP9F?jzw{!^BT5>G;W+L8bna=tF}5!6Ed>n6-l1M;(fLcxKPpBXMzYnWKB3DgCB;M-Cx= zugPc;Sv3QSTUmB>dQ}fSAP{L&Y&~L(?J-OLlpmh)%Gu&s^rlLDtep{SV!}ETC>N!z zt&L2!?}6gNhL9qfjCwPuV`8krvj^mB|KLNVsawrT2m}&6e;$QI0&SVn@+~?#*vY^1 zT>7M+-*k|zjC6}{PSWWYvD)pC$;4|j*yX+XFIU{?^nqJf_`*u>3L54Jozp7--6362Ym>x{ime`g~2%S1q2;e-QR(} zR!t&-)s6=svtOhVpGX{bUCIIC4?Db(02#s$0X@~bnrUfi32b+k{F<}y)wgax;&c5V zC8vT|)E_2>RuTw=!Eld^zXwQ=DNVyW2ZQN`GwZW;)?}lI-ny{9IAclL%VoV*$$^-3 z_ot9o?Pa{A(fbQI>6R^iKJ2~9$<=eV58Vj;=eQ5EZ|Y+1PFH0NybOWjnVHW!3^2Vb zOOMspT`oDB_;Z%HjNzKY9F6laL5wPRMXB>BiaQPt3)asS`C9itE-e;Ji%}B^39Y~h1LRII=MR|e z!zRe|bGx5H^gqcCrYvX!5RSS-A<`#Ayj%0myv69SQ0&1xUc7up!6NzJp3} zMg?vLZHKQTi^(iRK)`EGyiWx$DKf2~bGc0;Bg3ApP=^;$Sd4o-oWzEs_=S^0KmF;CbE;P8Iy-N@9`RKm9U zuS@pxb`k-M+VvU*@*$_1x?5d_3-_$BTa~O}S49pI~8O;WoQ| z?G_8mk(Vqitgks)fp>JRI%-&06ok#L8Ql&qq)rjDs&5eEU49tavW9R9vc^A_bpEfG zhn%OMJd=>T&dGb_kYiQLXB4c-`e50IH1-jspJmY)2~K1^=%YbWU3plhrw=>ZSXh+# zV~<|uWn4Of+ecFy?L;}fDY2YYV?PVR z?d)=|{Bjl2E=HU^c9m((7v~~q{QYE7BF|-Km(+4E%L*H7zEDTv@lmnbY6U#4zv-3L zC*_+N(y6W_MoeYxw#4BaT&#D!Ch3Sqe-k+Itz2Skp|Diy?CkpWM=rdRNM&1sdcmLv zYNF7xf`iac>v$`N!C>AKsk51%R*jrpUhPMB-K`tQo4O_ap3dBF%Iv8)j|?y+sMm}x z1!zMW6hgE?zyX!sGm5MyuUb|Ryj!Z5cPG?T8@DM!MjEUqJAtG8(9Fg}D}p+6znE~9 zO9J`Lw~N$OiV4;ReFbkyBEQW*y=4CV@0Tvr%I%IZr91&dMdG_Rg+{zp{EFk$c7oSaUf(;I!Q~&buW-`NB=jJ`0^B)E1#aC5mbWObL5NLlRUG)JQ!Iy6Y5CFJt`6#cbFHU z`iFTyg|$!l1?hR8W-li9bzSkca}msUPz$YJ=Wpfa6n|Qw@hb-SM(K=2r+lhwYs|DI zKYS$Fvq)0YLhT)!H$k09rAHZ9iJlRE(fx!BcOs}SaQT(euNqL)J}Yx6<(S)NFK`9Y z5zpQ2CkY?@O`Jc{%I`El@WfRH6l!ce!U%t>%tcLlYC+h>7_RQs%bj37DTc=aOIZ-2 z5QsrBM+F-x4uc{~wcU%`n3zr{csT#VkOZwQw{PDkUQG*_nPuFhl78*OyB7;T&7e-( zt%(h=GW%b@tZ=Bat)aq*6Cqjd6C(o=%FuNoPVm5@ud@$Y(d_zYs3TvG2Wm0u2Q=F~ zv#pEA5F*ya9=k=TjVSou!4E;7BJ0TL6?$2UUuGxnNKY}+B|B@WPjQH>2?TcpDGsR6v=E>#5GB9 z_BYio-@PCf?~-3meOM4NlV%e3EpQXfB$vd93GKt$2bb|W4d^8XgOLoMaSgcfd}or| zPAbd2^==)%5|4pc#k1UosW(Q&$Icpmzbp=1p1IOL16Q40FfeD)QygCC4A~tSvthA? zaEPV_YTLYYT_oVfHc>ywbp0|981D3U^FPwGbZuQ_l4-4ot9YBFMEu`#M%g&K@qoSR zz3=~0YpBds@2z_G3ws*4W=c-rRHsz$pQ!C1K4TkHhVb8O_Pga==B2O-N`5PcQza8) zJ*qe&Baau)a0pMuv{%KtcM0@r?tP^jH!Y-Vp?<6VgWaW4(34zAv*F=i)h+Z2@_uXk zk#Y#?gCoVuBgo6#%V-+Hkn@QOdXbxSW`-G^?QWml7wmjfY^&$zNWI_;0eo+C^@Ur^iQh14A>Cd1wB{WJ^A z-hHiEnqM9CkU|I#U`6J-U`d#copQNEp|qC#{hORof|JN!@M77)TbV1XC?(Dt$0iV@ zu=c6*hz3aY9VGD74*O_Pw-j>|TOH1B*7|W^5l!X!foFOCmiFN~B4)|wk#xm?eDU$x zqa~ju9HBY+!p-lvPsZ5S*=8!320f5_mz!Na<%j;7luz|g?FK$d#mx`z1jHG@+UmxZ zg?wEQQKT-XhBPaVl4mwo_KbCF@gnH@Wx`_fl%IfCcYjlIrja%$_(O)Y8DX=<{W{@Q zJ@ug!@|z^CNx;K4zZ~TQ-+si--`1&sx_utyJ_O8zd!9&fu{LuxD)j;Q5;+?5$#3nOVKkYDX8C&xi zr5N+nUc&G3U;p=n@i}Tw4Bpzh2smVxhPNW+}Pm&Rt_A7;kiXB$NtwfgT0~9ytBjV7V~LM;4(p@)6G`S75rC+F1Q^b_Pks! z-3ZH&W_xF9&Bt!!=`!FAA5%hFP>vbhbs&q)$XY1fbwNBoSN za*#%@41K3{&~`e0^+$P@@Y{J1Oswak+*b+1ze3xm>c?t2XWuidgT0-}>ECl6vN1`? z4;&iq(6Ve2nocTrj9{VhtE;R3R-%Q<6AA4@7mmsaru*PFM!a`@JscvIwt#Fjmm#Ff zJ17c7t`{Nj^)(SOij`(Z3U}i&4d_`KRgAm`x%(gO%V;;Y_rstviEknJ2HJGx@P zruCz-qF;(#LA_+!PDH1Zq5#cCx=_4z;v#Jjaoc$!WyR7FE7rLm?3VWMa0Nlq>s4=$ z%j82aNt6eHU2Wsl`KyYa>}Z3qbXK`@KI{VV>KF7ISP z`D$f4iV3?mbh0)*SRFggBvbw_4D(UG^IEUPf3Q(Wfsx`vGH@Jg5q;v7e?w`Gu;^Cu zByX7zrc`L?#1+X8g_`yBJJ_Vnj&nJO?P>{Zn`Q@OnC%CZF-#oCfSTO;QPGg1!*vyP z?Y*>_8yge~bft5~>77@y72b62?B+M-bT)d-fh_J651F#ubj_I%ZecaggaQ|w8Y%ByUuV9p1%-W^D@ zavV!~Bql3QL0Qt?xgEU3xuxMZ{ZuAH<$?|C`0&l1eJmbGWv-a;2H$*-PA7lO0-(8p zjCs!|;n#y&-Ru{@9*$$i){oFcpqBY&$>!T^(^N@w{OhLpd5V>NcHRk`A3C^xQ%`sG zDySIaSrn3sx^mWzt;iw!k_o6c2vvGp=H}6Uzk`?cJMQ*h0v}n*Eo7~oDH!}RpwIb4 z+Dv-W{RO4nK;YG1al(5mh#9N%xTbpYktQtjTQV=kw<`dZD{h;&RH}*u-J<5Orx%Ut zj8GkYr@#BK;tJ2@cYB9{|InOO=IEk21Bq{y+pDHdC|b$OC;kqH7_=PmdE6@hnbrZu zeQ78$W;b$Pup8TgwQKAsqCevm--vQpULXfZC`XY7h=*mPQ4`8h9;Kc7F#9NXb4g{oYe+68Dt0`qswAwtQ8%tz7uOdlM#{A`sUiw z;avHQEj@K3uX&D6Io7zsa$%mj?Gb;#%#N&`0|Qwk=5RWC=n|MzC#qt`+sfv*R|g$> z$=0dD;l~|`6dd|PogLIs`g74moVm?7aFA>{8O*r8eZY*SNSkdy@H7ZcHTeEL&vg%R zS9;*48^j~@ zDnCRX8{1j-)W$yp*@a@QPQptCVbs^OBV6a@vK=Dle^y5t@sC>jc+c1O{Z+vBz`BaFVAmink~W) z)uukqO$+bbE7sP9>`BQq_lkDyh}qZB7Pifzy_}DH`$Moiek2NDjQ_{>)$3aX^}9~k zipt8>)w52txEvJes@eiId_w|>@gJ;lVNw{8a5mTca{9^4>6dTcF1?;V(--b}p>(n# z_K%z4TALN9mn!=s2JO^5({cQFot#27{|NHH)rl^PA4P-)M(e>3UE3f0W@0*&e(d?i zFl|KwKUC(%cJBhMVuP*)zfG@6qTOp25BKR(-we?HS~EvI0`MvhI$Dd+?)y3R?So^i zCzU+9-hPowe9%7CPimhUIu3@%eYWCTaY;<9X1#NKJ@vQtdtz%j<~>JAqHs2OAI|du zaXVM*sj2k{yrxh8hy}O0H zmVkisZfUv~=j(1?Z+nrJr2i$NbEV*}<5+SPjZK0!p?xyGf1X=ddYB=3ZysGVep9$q&th+r-k@CA>I=4+HTEp9pL?QvKBFdnk zgoVIcAP>>MZb9r;}1n5>0hIUEhy#(KHZLQ1SCo{X~bc{s*LY0Cm{0i954lB5X5woUnYs1VPk40+=^QUr~y zi^*flqhe#r5wXk;ix_mghHLPi2m6nhf#R`g`?w+{suTeusNSUNe`<@qwh*_7StYjD zA}UMp z3J(07Ev7(SpxCXFc4k{&4qfa5W&hDl8K3ZqS8U@u-$wK@q!$azt1f6~ftj3(d*4^? z=@JY^>syYun;@O77|L8s*pMmf@`{Q2#eOF&N^3v2JHJ^cT4xgZrFwa?*=Mt5Y_f!* zkv=|PIWeKi%N|P@no>_`J@I4g%y&>D!tuyt=D7^ecI00{?du4Ma^*_4Ur zLGj_8PJ==Et^|=xO^!c5l(P|gVNQhggP$!IBgb<^HZ!Hu{k{RR0D%BxOYiz+|6}c3 z2xg-`sjZ&Kah24wq0B{W^|GpKm}h?EUx!VPhF+4Xs`f?`0XJr%H6%V=m+q`9b%)3MMTX@)$6nvfYQAE<%$5 zpUbI1Tt~`oP30!GcT_F44cIbH1!AQNYnwIXH}NgXC{(IpJV70BBCk|eR|Bw|~EiulmGNapaG(RS%obu-@JyCd)jy-^!xDt>%3H?dn7XRyt2O3X$wKjIMp;ph!O z3+RZ}EbjvS;|^V&DQp8sx=<*z==gSrtoJ0Y{krpnwQBSe{Pd<^n$4$1%45Ml1%C8N zQ*SM!(*O+*4#|s`CP%kT5XAAtuB2N^k&<}LhCZ+E+!VX)c>u9Nr#v2){M-~YaklvN z)0221XYcdWy__=P7N>?gHBd4ORot7z7<8k;C;I;jz5UWb>5Y#_x$H z=Jf>Xe$H>?pV-WOQM?jQcz;QMx6tXUWyKrqR20~pFyiGXtYgZ2$q8U<69kU}qYV8S z<1ocFS+gKOq4dtK=|3z_{T4=isWUto98wPI4a_fJu-2qM{fD2j=qCbyI?ecyGVT;> zpDknd!2dHng`K9kKUKVop9ZEZ&8S2!ambb3 zej)acR9K{wbDYb#6B}FXmcF0VsfKP$inc4^tR3$6t2HJ2Y|%7RrWOkEH0dXlgt_kN z_n}1HbTMIc!U5RM0P*aY3xSB?$-$n_rOf~mX*rLzN2#2tTfzL1?<DouH&zoIq8R{o+&8T0iB|+i?bVndZpAF z_1jjNW*OS=((;nPwX4h~B)!|3FRyKB?MmK@ToXomCKWU`zRIv5fYMB5IozctPi9H? zCA6Hw9BkD7R9tAf*G2if)U7jeT}@US<#TvjjzdpWOdw7?C6 zLM;of*YR7bp^gRoitR$tXkuU5d%}iH))RFL3&gclI>0H|h^74=lNCgbChUyF8!s(K zftYL7>QSjuTcch|WOcUI4w{Pxq#RY|9QqD^7FPAmzmNScbF}a~ zK|O0Xb&itUsx2gasNrjcx}AupJP zc@wfTg6wW|`m5Ps$Iw|e0o)vRM#>)3NkmaTwsy$MqY87wqRRr`Oap}R2G#u8t)sb) zj`?*Bt#_;aVHGEOOI?HL4$~8O|5{RVcSK$jc)sxb9@e2**iSPezO7!*$}%BR3?9?8 zFcA#*wC3xaGpQlH=#CIFyI67d+hdIG^Sw`a%#`VcaeIrGJPE;{pHTwR>Nv<77YZM0 zy4zZB<1fEsCbgu|VzVbn8 zhKQY<4dP1^XKjv3=vgMV3CzKY+p&#shR?15p142v?|h#5e=Ir2p1lww+MA&3Bn6Pc9j#QGCp%| z?r#iM&%E%D19pdx;f(+I<>r)<+2n>Vg7!#H&@eu?e3dyXl~uTVq>z{Oe-A>GVM~M0 z{<8TVU-lUCd||YV#VJkrzi)bEZyD}n&DWrKjO8bzfea4>b+rky1c+BW`+q#QQae_; z+*VzECxi$%iFBAwu3%CsY6tMSa z6Hx?m+P)ztHehI>GoB3xlBAyiY2QcQyQ<4zrq4#-vvBtHc!KAw)lQ`*J{8h8%fMuW zc^K)%KO;zJ|Fek9c`)~PogxuG=O$qGqn@1Z!{W~jxu2E$Mf(|K-fS~g_pPL2u3{+ zBIf_sI@XW`JfXZKHPNbuiG=!2&71yd5}a<_#4IVbx$Rb^rfFTR!o1qs%ZfQkoux&F zw_Sg*=$^6b++|%3YRwI3>{`;huS__OMf!ggn$;~+Eg^O-B{|4Ya27V7fMBfqy`fg9 z%Gp2kkoqwn@+L8^uW3NuEx+8OqDX~d`h(aVAAG^5et7((h8OqivneZ#(a?Ro;bBO$ z`{A_$j1E1am<))3co!&?t+W11nok?6PQ^J`%kOE{LFqdplj861krH|WAC+7M67X*% zYKZOxHmtrxMGY|=v0U(o&lms|DP2%_6|wiTq#)0FP#i0?et8&n_u}*o&g=( z8VPRn9H+uE1Td?;fuMs%K+M;AnlUD;tAU}4>i*J<+vRg_m$q9Cy*g9!D9pX)C>B;9 zVI62XBBYB%94s3ipMw_{cHPXUYzGdWxdqKqn_CP~jVn}VnC60nKC~Tjwr5q#ozQXD z+`rTd5W8hx=ce*U>_47_cMQ0dPceX-+JZo}o8#hqffxc!+>a({4X)4T)Bf?iUbUMi z+?%Gd|A~s-SocIy7)(G5->suWlj%Aiq70%}tnT_FfcC>tOm1no?QGDdu_^Q?!9CjC z!k^9MNA;q4s6h$!l&z|rr))e>7HP{?a|2 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_taproot_1to2_v1_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_taproot_1to2_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..5b406ed2a379f37cab93d369aeb62b54fdc72401 GIT binary patch literal 14812 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_taproot_1to2_v1_1_0/00002.png b/tests/snapshots/stax/test_sign_psbt_taproot_1to2_v1_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_taproot_1to2_v1_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_taproot_1to2_v1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 Vf0%k`0?}O-uz|_Vn(I#S{|C5t0S*8F literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_0_0/00002.png b/tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_0_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..ec47288aec8a757976d605252603eeae642d216c GIT binary patch literal 9175 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 Cy}Y{s literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_0_1/00000.png b/tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_0_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..adccaeb16e7e9324e987e8ba3c615be797881c12 GIT binary patch literal 5881 zcmeHL=|hrP`?lp*S(Z(Um8Ldt>y%4bnoB}uX-ou?@4>zF1v$HA;;F&Un9 z#~pWwMhE>VvyJOjspP!lJHtBb5UDTc>Qg8q5Rz;4bJwt==N-w23ne8b51B`DZ*3+y z?xUmUZ3-V0hitM*EQI&Gcpkv24j^yzCVh&H2IVROlVJr>Jx56+gI~C(zSfK!Cw;n> z;U~R0R7VZ=2pZcOI5u&W^0^_gD}3ia_gn@_*T#s$KD`YugD13Ac45l0rCS(7=6Dip z|Jbtw@jnK>_RvB7xR1@LE`?7LFO?|V z70dl-ON={mn6;b9-IYJsLEtT?W0*dx?LObYpRHQq+!(NfbVZ9N8W*@aev4S>%8T}2 zD*8Hxvi$_|+6?BA9OethrtGeg(5gJwe=sm*=1aL<%f%bp0>?C0yUy)tUTcSRO(&mv z&BefL`Lu$A_-9V~-pkrwEpm>Rp>(cwK@QJ4_vSDc*mqeL))a@lT)))qLwQH=Dm0Ov z^=|w@aL;XckMG+13;2JJHb#xK7Z%!N1{V?|%`sWcV=>7v^J&1@gj4m;eq}7i49cco zvray9HDwGP*p}}H|6u(u!(xM!fX;T*%+7u`49jFO2P{$D;cQ8rK`)b4&Fu^&@(H}E z;dYS{rvpG#$V56H7KcU$K

    muJ4K{&g59 zk)>j?wS7fh>|2y$0gMW&Mxr}rdy_$K(`x2NejID=VmJ zKq~_>YKe<;&LM+YXPGf1;&40_25W$wwf2&@4E$xGS?v%`K@#b&AI#``c2>Q;qBlao zeVhWF!&M(z`oSCtn-d3*BmaMHMd z`B}{hDea9&NJs$gxBRZtY|srtXC8n>S7iO6{7VLY#TN7n?V?RF4$mUZy;oZ6E#mIg zqZ%yS7U$>L79mA@oE-nSJl3Y$Wae2qq{nUo4EE9vU4mo!bv;JA8maUf+k0v_w58&0SljX%;C_|oRn zgSpKDv;Bha>?F|naZ(`vw`R#|$2n|!`~-3jH}<`_n2wi(^m<`e7SLt pcH0M$t}Y%Y$;U&k|0i#a9+Ut8 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_v1_1_0/00002.png b/tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_v1_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_v1_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_large_amount_v1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 zcmeHL`CC%y`?kfFDRpL=v~rtPn?x+j9dT^4Ra?Xb7u3|;&0RpWw8kkjYRpJYsT`wF zao0gbGsiT^&BfoVu>>AMpKL*XOsMU(R)2&UN0y^W69S-0ySqoSUo8 z58Hmw($dm7dE)2=Ev*%IwX{|~Ubhlhad2;|(9$v}J9*T_Bkd7?g6|_5efr0FCuZzb z*kRC$(^r44Sq*YIJpf!RT!6dBtAFcU+{t`bx?$IKtnbe`#rER>`q^! zf8A1buMpuS!WHs~+cmR)pY}=7!Ho)|o*zri>dvs}=KWkGvS~H>ED~L)AEw^F>y)y4 zn!_n`4TcLsQN00K$BG}ojTdW*jyY#_yWywH*e{6+PPo3s>fBY2(rxoqo<>J&WaE+( zGiTyQGQ6`vDL;Xr3!#mp;*Uk$gm27`UY?p{kO=#GgNp-edvJV%=2fMX)w!AStoXAX z`R`xe2pklADl2Vqx$Iz4fN-yoIfN2!m(IG>$aaj~cn{Lu?X9HAf2f=Dg{lO-_}$*~ zNkpepYZ-m9Aox0cRq|H#l8JApP3KdBgr?{li#}(L0+KQ-LgL}^30d8pE$J+R=cDYv z_!^2C>!SI)qcyW-qpz4KzFzgliP0x#;+WUxnTazr6!z?!Cvrr&T6b%m7AiG3$#C8mdj+b{yJV3pT=+3 z40EW*o&NBe-|Zc}{9wayI<*}2=gzPCH?;`?>9uNmy0ddC5ita6eCpUarDYcPz?cu@ za5#d=EOx(8=#RaWc5FlE(|%IA(Fn-kLb+*YF!n*1xYv_P`EZM3#Cw-vk<)?GWW2p{ zrfT*uP*L4e*r-oQ=^?YP?%!P{YxpaBY*Atni6w5-Nf?V z)UMUJ^t-#-ua*e@8w~yrg`DHerf9JP8{t*Vxg$dBEgOkMqNXjN+N**=^7VuP3%VF( zckrMRX=l{L{>Ses#TIPZrg~k$_{`^5AwLm`$IH&w4;dRb?7*YYXkU=NIM@RQvpi14 zF7@h+wp&M`y+Ufe+b9(4-19I-h}DR~%8s6*>@UURoz)L{NvKbHkv7GAiYmmakTzp% zz*DIxZNiBOe+8eaJ>05IUCU19Fquq$;WZ*L0D+)2>@YMjF-f7kaV;Apb=xImr;rs2 z1-c_NHdE(Ox}zHP?D~vIBucQfyoy93!H2kfehkC}crqpZrDYAgN-dwkOF{+eZFU)sYVFMUQ+C_(nh08R;ufR0 zR6ITJcv)WNZ|rg`7HeQ&pr@zD*Ap!*d8m_Xy+Qi9ce>OJ0127w&;jWS;Nwu+qw?SU z9Z-fs4J*%>n3`4)M;*8Dns)$6TwZQTZ}o)1;%+b^8@)kA8WaizuV&I{H0}g;{IU3c zy*#R3-qakeu+m$TJq_kAeOXwDZ-mEy772Q3Z&Q@!>iOY>BXSfRjN{va5ioSzl|hFm zfKYjZabsiU7^_BAU1@(QN03_KBOTSonW_D@k8He6O-&c&ZJc6>KtO6A3EaO|GakP}GW0k1 z1`Fa(h2zZMi&8!}?=aP{ZX7B+lQI!a_OlUcC|G&?bYOvV^Bt;^7yRh!`y@dn)GKz; zYjj&v^cY1EACeqmSd=;O@?$3-AeBI+bHE|;pBNe2Yio>;ytb=}ZbYeg&^YHgW1@WDS^z*uk^ zX$$hKfC-!96#~}G%nUby><9Lh1c`m`i8>^L_7|p2>c!VARka6rkwwW*7R)&}TP~h# z;#8Y?vn%EPPFps9PED)lG;z=gR)vR*$rQ>2`o#GcNDZ@fxRo96+p#&KH0cse3a-|` z-1^$R>)-YlHJKYUa&yvw5;?A(yIoWmNDUz(wQVhjMB<4BTYj`nRB158Bo*;$8kdRb zxs*{W^}RRk`k~y@K*NVuNuQcTpwEsKoR88}4WNOvWhI0AYex-Qv8Tb#%GdxESI8HX zl_ne>R0Wn#Uhxj&N+c2h_S4hTJRa{c`-{pmgc4vYJ!PMS<_zcFkw%JIq=eD9Z*S6f zcX#KK=>Chiu<_bjS}T&)(bkp(d3eRn$VLhPFp}MmK&7P(4!{QQ0!%dG8o(*Ay3HDF^ zA(MISKhSweWWQLi^zv-@m z)?}OD16wv0H7~m;3X1dw^-9hG!eTn&Eu^uwI07uIsHpH?q~}-m3e}!{PokJWmQX;J z#Md|$rf3}fd9Fq<5OKffN;12|!=!R)Y3T!}UNacJ^yN#9ADGQ%QxReSaDWQXZ3Bdx ze=~(}kJKgU$ZzSRO;uL z#0;btK2t;aF475`5;tF63?$)LU)+XNLNTlQEe~dK`oD~**I%Y~yBJzC}AO@Ih0m3Xc zwrN3U49spspOQG+$PU5~ZQw<`0t8 zkM4EGn)@BC(}r&7rawd+B|p*afoXZ8^Z7+P!x^(#(P52D8sQ7YJh9cZpMQG6r#x@m zsAGrW+yxkeB+VpWgFlea$M6tut`)#)f2tpAo__Gm|B1#i`QdTs{byTQIDf^517>mm z%zj~vKeH3_W}BotnoU=r|Jq#WM&O!l_VV%)Zxt39R(e(x7Z;0qWc`PQ_s-t>)rVYc;EdyF9qWHVv`WEvV+{+^S=gW*Hl9c_*TI(mn ztZ~B*%3OunnLYV@iiP39qWsDem(X!bf%|1kmxjPJaeVI@KE_SzE`4m;@YZbnPUgRC z|3w`$y`i2v>%Hu^@ah8btail)6^DItlr=6C3XR?E2SPh_{qMbJUD>!MTY&45Wd&lC z3g!iDD0DJKx%13=+H<7+1Jl#Cu50E?jx+k2FLq#WjhgMu?hJ(DX<_yLBScG0y_31U z{MOsBdTxT8$Ef|xImTkMI~I27;E8&5s-(iT*_{zM`NNak>UiL^IKH6WgE&{3BOJg^ zx<6O`MR#GYmLC@n8UjKJeYG>VkYlF{IK=G)BroCkG=5L)wM~UTul#?VB;71GJ!`k| zN+do1Y77QRn~E!$a}+NR78+XE9eh5Z0k9Ew0L9LCDxi&V)2;i-pKN2t{Y)!!MeTfZ zK?tlWtLF%OxBwU-M4Rz%y3iC>%K9Ut>rwNE&#(w3;z?Q^f!`bR&7 z=!sa4fK>s=xaA=+qwb3k$U-c88iP&2IN2iszyl@u6)b znB2xhH%I(2wh>-1bBwh8)>Xi~ zM!qXeznw=&WnJ6Dc=07hs&~w&BHYew262%nRgMFX`LxR*Hhj9YYqBQP#MVfcy4@Eyhb{2B ztKJ?~?{kozjzWzpZti2d)dV+S&jJ1nM-8=)oP9F?jzw{!^BT5>G;W+L8bna=tF}5!6Ed>n6-l1M;(fLcxKPpBXMzYnWKB3DgCB;M-Cx= zugPc;Sv3QSTUmB>dQ}fSAP{L&Y&~L(?J-OLlpmh)%Gu&s^rlLDtep{SV!}ETC>N!z zt&L2!?}6gNhL9qfjCwPuV`8krvj^mB|KLNVsawrT2m}&6e;$QI0&SVn@+~?#*vY^1 zT>7M+-*k|zjC6}{PSWWYvD)pC$;4|j*yX+XFIU{?^nqJf_`*u>3L54Jozp7--6362Ym>x{ime`g~2%S1q2;e-QR(} zR!t&-)s6=svtOhVpGX{bUCIIC4?Db(02#s$0X@~bnrUfi32b+k{F<}y)wgax;&c5V zC8vT|)E_2>RuTw=!Eld^zXwQ=DNVyW2ZQN`GwZW;)?}lI-ny{9IAclL%VoV*$$^-3 z_ot9o?Pa{A(fbQI>6R^iKJ2~9$<=eV58Vj;=eQ5EZ|Y+1PFH0NybOWjnVHW!3^2Vb zOOMspT`oDB_;Z%HjNzKY9F6laL5wPRMXB>BiaQPt3)asS`C9itE-e;Ji%}B^39Y~h1LRII=MR|e z!zRe|bGx5H^gqcCrYvX!5RSS-A<`#Ayj%0myv69SQ0&1xUc7up!6NzJp3} zMg?vLZHKQTi^(iRK)`EGyiWx$DKf2~bGc0;Bg3ApP=^;$Sd4o-oWzEs_=S^0KmF;CbE;P8Iy-N@9`RKm9U zuS@pxb`k-M+VvU*@*$_1x?5d_3-_$BTa~O}S49pI~8O;WoQ| z?G_8mk(Vqitgks)fp>JRI%-&06ok#L8Ql&qq)rjDs&5eEU49tavW9R9vc^A_bpEfG zhn%OMJd=>T&dGb_kYiQLXB4c-`e50IH1-jspJmY)2~K1^=%YbWU3plhrw=>ZSXh+# zV~<|uWn4Of+ecFy?L;}fDY2YYV?PVR z?d)=|{Bjl2E=HU^c9m((7v~~q{QYE7BF|-Km(+4E%L*H7zEDTv@lmnbY6U#4zv-3L zC*_+N(y6W_MoeYxw#4BaT&#D!Ch3Sqe-k+Itz2Skp|Diy?CkpWM=rdRNM&1sdcmLv zYNF7xf`iac>v$`N!C>AKsk51%R*jrpUhPMB-K`tQo4O_ap3dBF%Iv8)j|?y+sMm}x z1!zMW6hgE?zyX!sGm5MyuUb|Ryj!Z5cPG?T8@DM!MjEUqJAtG8(9Fg}D}p+6znE~9 zO9J`Lw~N$OiV4;ReFbkyBEQW*y=4CV@0Tvr%I%IZr91&dMdG_Rg+{zp{EFk$c7oSaUf(;I!Q~&buW-`NB=jJ`0^B)E1#aC5mbWObL5NLlRUG)JQ!Iy6Y5CFJt`6#cbFHU z`iFTyg|$!l1?hR8W-li9bzSkca}msUPz$YJ=Wpfa6n|Qw@hb-SM(K=2r+lhwYs|DI zKYS$Fvq)0YLhT)!H$k09rAHZ9iJlRE(fx!BcOs}SaQT(euNqL)J}Yx6<(S)NFK`9Y z5zpQ2CkY?@O`Jc{%I`El@WfRH6l!ce!U%t>%tcLlYC+h>7_RQs%bj37DTc=aOIZ-2 z5QsrBM+F-x4uc{~wcU%`n3zr{csT#VkOZwQw{PDkUQG*_nPuFhl78*OyB7;T&7e-( zt%(h=GW%b@tZ=Bat)aq*6Cqjd6C(o=%FuNoPVm5@ud@$Y(d_zYs3TvG2Wm0u2Q=F~ zv#pEA5F*ya9=k=TjVSou!4E;7BJ0TL6?$2UUuGxnNKY}+B|B@WPjQH>2?TcpDGsR6v=E>#5GB9 z_BYio-@PCf?~-3meOM4NlV%e3EpQXfB$vd93GKt$2bb|W4d^8XgOLoMaSgcfd}or| zPAbd2^==)%5|4pc#k1UosW(Q&$Icpmzbp=1p1IOL16Q40FfeD)QygCC4A~tSvthA? zaEPV_YTLYYT_oVfHc>ywbp0|981D3U^FPwGbZuQ_l4-4ot9YBFMEu`#M%g&K@qoSR zz3=~0YpBds@2z_G3ws*4W=c-rRHsz$pQ!C1K4TkHhVb8O_Pga==B2O-N`5PcQza8) zJ*qe&Baau)a0pMuv{%KtcM0@r?tP^jH!Y-Vp?<6VgWaW4(34zAv*F=i)h+Z2@_uXk zk#Y#?gCoVuBgo6#%V-+Hkn@QOdXbxSW`-G^?QWml7wmjfY^&$zNWI_;0eo+C^@Ur^iQh14A>Cd1wB{WJ^A z-hHiEnqM9CkU|I#U`6J-U`d#copQNEp|qC#{hORof|JN!@M77)TbV1XC?(Dt$0iV@ zu=c6*hz3aY9VGD74*O_Pw-j>|TOH1B*7|W^5l!X!foFOCmiFN~B4)|wk#xm?eDU$x zqa~ju9HBY+!p-lvPsZ5S*=8!320f5_mz!Na<%j;7luz|g?FK$d#mx`z1jHG@+UmxZ zg?wEQQKT-XhBPaVl4mwo_KbCF@gnH@Wx`_fl%IfCcYjlIrja%$_(O)Y8DX=<{W{@Q zJ@ug!@|z^CNx;K4zZ~TQ-+si--`1&sx_utyJ_O8zd!9&fu{LuxD)j;Q5;+?5$#3nOVKkYDX8C&xi zr5N+nUc&G3U;p=n@i}Tw4Bpzh2smVxhPNW+}Pm&Rt_A7;kiXB$NtwfgT0~9ytBjV7V~LM;4(p@)6G`S75rC+F1Q^b_Pks! z-3ZH&W_xF9&Bt!!=`!FAA5%hFP>vbhbs&q)$XY1fbwNBoSN za*#%@41K3{&~`e0^+$P@@Y{J1Oswak+*b+1ze3xm>c?t2XWuidgT0-}>ECl6vN1`? z4;&iq(6Ve2nocTrj9{VhtE;R3R-%Q<6AA4@7mmsaru*PFM!a`@JscvIwt#Fjmm#Ff zJ17c7t`{Nj^)(SOij`(Z3U}i&4d_`KRgAm`x%(gO%V;;Y_rstviEknJ2HJGx@P zruCz-qF;(#LA_+!PDH1Zq5#cCx=_4z;v#Jjaoc$!WyR7FE7rLm?3VWMa0Nlq>s4=$ z%j82aNt6eHU2Wsl`KyYa>}Z3qbXK`@KI{VV>KF7ISP z`D$f4iV3?mbh0)*SRFggBvbw_4D(UG^IEUPf3Q(Wfsx`vGH@Jg5q;v7e?w`Gu;^Cu zByX7zrc`L?#1+X8g_`yBJJ_Vnj&nJO?P>{Zn`Q@OnC%CZF-#oCfSTO;QPGg1!*vyP z?Y*>_8yge~bft5~>77@y72b62?B+M-bT)d-fh_J651F#ubj_I%ZecaggaQ|w8Y%ByUuV9p1%-W^D@ zavV!~Bql3QL0Qt?xgEU3xuxMZ{ZuAH<$?|C`0&l1eJmbGWv-a;2H$*-PA7lO0-(8p zjCs!|;n#y&-Ru{@9*$$i){oFcpqBY&$>!T^(^N@w{OhLpd5V>NcHRk`A3C^xQ%`sG zDySIaSrn3sx^mWzt;iw!k_o6c2vvGp=H}6Uzk`?cJMQ*h0v}n*Eo7~oDH!}RpwIb4 z+Dv-W{RO4nK;YG1al(5mh#9N%xTbpYktQtjTQV=kw<`dZD{h;&RH}*u-J<5Orx%Ut zj8GkYr@#BK;tJ2@cYB9{|InOO=IEk21Bq{y+pDHdC|b$OC;kqH7_=PmdE6@hnbrZu zeQ78$W;b$Pup8TgwQKAsqCevm--vQpULXfZC`XY7h=*mPQ4`8h9;Kc7F#9NXb4g{oYe+68Dt0`qswAwtQ8%tz7uOdlM#{A`sUiw z;avHQEj@K3uX&D6Io7zsa$%mj?Gb;#%#N&`0|Qwk=5RWC=n|MzC#qt`+sfv*R|g$> z$=0dD;l~|`6dd|PogLIs`g74moVm?7aFA>{8O*r8eZY*SNSkdy@H7ZcHTeEL&vg%R zS9;*48^j~@ zDnCRX8{1j-)W$yp*@a@QPQptCVbs^OBV6a@vK=Dle^y5t@sC>jc+c1O{Z+vBz`BaFVAmink~W) z)uukqO$+bbE7sP9>`BQq_lkDyh}qZB7Pifzy_}DH`$Moiek2NDjQ_{>)$3aX^}9~k zipt8>)w52txEvJes@eiId_w|>@gJ;lVNw{8a5mTca{9^4>6dTcF1?;V(--b}p>(n# z_K%z4TALN9mn!=s2JO^5({cQFot#27{|NHH)rl^PA4P-)M(e>3UE3f0W@0*&e(d?i zFl|KwKUC(%cJBhMVuP*)zfG@6qTOp25BKR(-we?HS~EvI0`MvhI$Dd+?)y3R?So^i zCzU+9-hPowe9%7CPimhUIu3@%eYWCTaY;<9X1#NKJ@vQtdtz%j<~>JAqHs2OAI|du zaXVM*sj2k{yrxh8hy}O0H zmVkisZfUv~=j(1?Z+nrJr2i$NbEV*}<5+SPjZK0!p?xyGf1X=ddYB=3ZysGVep9$q&th+r-k@CA>I=4+HTEp9pL?QvKBFdnk zgoVIcAP>>MZb9r;}1n5>0hIUEhy#(KHZLQ1SCo{X~bc{s*LY0Cm{0i954lB5X5woUnYs1VPk40+=^QUr~y zi^*flqhe#r5wXk;ix_mghHLPi2m6nhf#R`g`?w+{suTeusNSUNe`<@qwh*_7StYjD zA}UMp z3J(07Ev7(SpxCXFc4k{&4qfa5W&hDl8K3ZqS8U@u-$wK@q!$azt1f6~ftj3(d*4^? z=@JY^>syYun;@O77|L8s*pMmf@`{Q2#eOF&N^3v2JHJ^cT4xgZrFwa?*=Mt5Y_f!* zkv=|PIWeKi%N|P@no>_`J@I4g%y&>D!tuyt=D7^ecI00{?du4Ma^*_4Ur zLGj_8PJ==Et^|=xO^!c5l(P|gVNQhggP$!IBgb<^HZ!Hu{k{RR0D%BxOYiz+|6}c3 z2xg-`sjZ&Kah24wq0B{W^|GpKm}h?EUx!VPhF+4Xs`f?`0XJr%H6%V=m+q`9b%)3MMTX@)$6nvfYQAE<%$5 zpUbI1Tt~`oP30!GcT_F44cIbH1!AQNYnwIXH}NgXC{(IpJV70BBCk|eR|Bw|~EiulmGNapaG(RS%obu-@JyCd)jy-^!xDt>%3H?dn7XRyt2O3X$wKjIMp;ph!O z3+RZ}EbjvS;|^V&DQp8sx=<*z==gSrtoJ0Y{krpnwQBSe{Pd<^n$4$1%45Ml1%C8N zQ*SM!(*O+*4#|s`CP%kT5XAAtuB2N^k&<}LhCZ+E+!VX)c>u9Nr#v2){M-~YaklvN z)0221XYcdWy__=P7N>?gHBd4ORot7z7<8k;C;I;jz5UWb>5Y#_x$H z=Jf>Xe$H>?pV-WOQM?jQcz;QMx6tXUWyKrqR20~pFyiGXtYgZ2$q8U<69kU}qYV8S z<1ocFS+gKOq4dtK=|3z_{T4=isWUto98wPI4a_fJu-2qM{fD2j=qCbyI?ecyGVT;> zpDknd!2dHng`K9kKUKVop9ZEZ&8S2!ambb3 zej)acR9K{wbDYb#6B}FXmcF0VsfKP$inc4^tR3$6t2HJ2Y|%7RrWOkEH0dXlgt_kN z_n}1HbTMIc!U5RM0P*aY3xSB?$-$n_rOf~mX*rLzN2#2tTfzL1?<DouH&zoIq8R{o+&8T0iB|+i?bVndZpAF z_1jjNW*OS=((;nPwX4h~B)!|3FRyKB?MmK@ToXomCKWU`zRIv5fYMB5IozctPi9H? zCA6Hw9BkD7R9tAf*G2if)U7jeT}@US<#TvjjzdpWOdw7?C6 zLM;of*YR7bp^gRoitR$tXkuU5d%}iH))RFL3&gclI>0H|h^74=lNCgbChUyF8!s(K zftYL7>QSjuTcch|WOcUI4w{Pxq#RY|9QqD^7FPAmzmNScbF}a~ zK|O0Xb&itUsx2gasNrjcx}AupJP zc@wfTg6wW|`m5Ps$Iw|e0o)vRM#>)3NkmaTwsy$MqY87wqRRr`Oap}R2G#u8t)sb) zj`?*Bt#_;aVHGEOOI?HL4$~8O|5{RVcSK$jc)sxb9@e2**iSPezO7!*$}%BR3?9?8 zFcA#*wC3xaGpQlH=#CIFyI67d+hdIG^Sw`a%#`VcaeIrGJPE;{pHTwR>Nv<77YZM0 zy4zZB<1fEsCbgu|VzVbn8 zhKQY<4dP1^XKjv3=vgMV3CzKY+p&#shR?15p142v?|h#5e=Ir2p1lww+MA&3Bn6Pc9j#QGCp%| z?r#iM&%E%D19pdx;f(+I<>r)<+2n>Vg7!#H&@eu?e3dyXl~uTVq>z{Oe-A>GVM~M0 z{<8TVU-lUCd||YV#VJkrzi)bEZyD}n&DWrKjO8bzfea4>b+rky1c+BW`+q#QQae_; z+*VzECxi$%iFBAwu3%CsY6tMSa z6Hx?m+P)ztHehI>GoB3xlBAyiY2QcQyQ<4zrq4#-vvBtHc!KAw)lQ`*J{8h8%fMuW zc^K)%KO;zJ|Fek9c`)~PogxuG=O$qGqn@1Z!{W~jxu2E$Mf(|K-fS~g_pPL2u3{+ zBIf_sI@XW`JfXZKHPNbuiG=!2&71yd5}a<_#4IVbx$Rb^rfFTR!o1qs%ZfQkoux&F zw_Sg*=$^6b++|%3YRwI3>{`;huS__OMf!ggn$;~+Eg^O-B{|4Ya27V7fMBfqy`fg9 z%Gp2kkoqwn@+L8^uW3NuEx+8OqDX~d`h(aVAAG^5et7((h8OqivneZ#(a?Ro;bBO$ z`{A_$j1E1am<))3co!&?t+W11nok?6PQ^J`%kOE{LFqdplj861krH|WAC+7M67X*% zYKZOxHmtrxMGY|=v0U(o&lms|DP2%_6|wiTq#)0FP#i0?et8&n_u}*o&g=( z8VPRn9H+uE1Td?;fuMs%K+M;AnlUD;tAU}4>i*J<+vRg_m$q9Cy*g9!D9pX)C>B;9 zVI62XBBYB%94s3ipMw_{cHPXUYzGdWxdqKqn_CP~jVn}VnC60nKC~Tjwr5q#ozQXD z+`rTd5W8hx=ce*U>_47_cMQ0dPceX-+JZo}o8#hqffxc!+>a({4X)4T)Bf?iUbUMi z+?%Gd|A~s-SocIy7)(G5->suWlj%Aiq70%}tnT_FfcC>tOm1no?QGDdu_^Q?!9CjC z!k^9MNA;q4s6h$!l&z|rr))e>7HP{?a|2 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..17b5e632c09f467e8d30d4e236183c6afde5759c GIT binary patch literal 14238 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 LeI0+zaB}~4E+m9UaetOf* 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..17b5e632c09f467e8d30d4e236183c6afde5759c GIT binary patch literal 14238 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 LeI0+zaB}~4E+m9UaetOf* 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..17b5e632c09f467e8d30d4e236183c6afde5759c GIT binary patch literal 14238 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 LeI0+zaB}~4E+m9UaetOf* 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_v1_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..17b5e632c09f467e8d30d4e236183c6afde5759c GIT binary patch literal 14238 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 LeI0+zaB}~4E+m9UaetOf* zqbg79(93f_-#L3{Px4K>n_Kp*Ucchp(Y?>Mlml0kZ9cL$Y%R?BPg|aZ7bhw0qxn`y7J9+9pPqm2=x1SI(7{ADVCD_pZ5Rn$lh#Mq+Ww} zMSP<7c6+z&4SxG1v4f|*JUlF2Vy8$hto1vt*BGojawz4hg}xz8ZB(`@@g8+`xQ$Wx zw(GIz4Sh{y@`qYb*Ibb*NY5F@MzSo5x({~E8AO>#yfQX>vMkDa4_h95KZiS>v)eOx z{&DKt=hiSn(C94Yc+OxvCutqVt2(zNrz4oFepUjXY9@9BvjnfO=g;6i)O(83JUk*B zI3T9QCgSV1TXkNb9{V-{Vu07^T~W^wh1GeRW%FGDtK{ArO%b{~%gElK9UPHo_3(zl z{a$$;!Ib`K?rHtBfssod9&99$&s`e?JDKA=)m$lzr*hNVM=2%cLM!XjG>`3XaS-%@ zO~f`ohh}y=qCKRz?NyQCg;VwX-|s?mmN?=Nk;__}B&>G$PgpSN1*R8C^8%$Wy{zC! z4$awg&Dpr*$SDshZ<@qbB^BAp!+U-l+_H+4-^CZSU~}o<6%6$04Xb7Eu4s?WHiDQO z*PMaJosq?M-DEQ0Bo4v|^GS*xKGqu6m5R6e1u_5F5B}Jb5CoUneIT^i-4h=RFlW&! z8$zhul5L{pkY!5m- zjic%n^gpU(@nDJc)0V2LDi_wY_F3Dh&-1eBVT%RHp#XpX9^0M)sLR^bvg*K~cF5kR znTVa)N$w|IC|)3W`o;vp7UG|2w~;wt11gVRzc|#V1r_+xCh8V`i#_UC2Q>uaZiXqTUImm=&5|`U%6>d5+Gb4HsM>MVsZQvkRDQ0J5+B(GD zTmgsE#NjxeMw?zXTWIg(C6ITE@6c#8+2Z45Y-S*`u$9zT%MlI0f!t`HqB>F^K0l~~ zR|22UGDkn`*L>-xs(h2@baHO4i_Z+KBmIyLxlPR)k0bII*sIH^58e6an@!y55$|o| z6vW*7#VA4hRuj0=w09lrWqBC}_ z5mMtalZv>Hd^sX{jR9*)XSKDZi(=r7#FTMkdDdDGi6uZ-fsr00aCTu(PL_D6BWraT zcD+O~Gt?U3u z$gaxH&h8CEisxjW%|(2b<7OmUml3#Z32M3{_2fOfyRzB0QD=07^@*A#?i_3UM$@U` zSV$p14)}h6SKA-aQ=Mzm#jFJ}Yc+=weYn|ukr|-M<$9nEp{NBN!Ga-{KzgLmbh9); zQEhfK$C(F|+|W*8vp;ADera)Gj^9;;YMh@Sla(q(v=Z&MUGKr@_$J&CxI8K3pbq~c z`(`~SQonJ~6zEV4ye1JS(q2+Jc5ntK`m4ALe__iCZSg&f)aR4_*T#Gn=&e)!e)O}- z&r3K+bS}_5Ks!?FeFHS5shjB9BjJR_tdJQq{`h#YdM2KRiji>Q$#!pw9E#kmE=}uv zn@XILBnl%nT-q;*q3@7NgXL99dQ6Ew+Za9LSQNL#lSMsrs0pgyDa` z#Y1`>F&SVqg{=4VW0z^9(766$acW(eQ1C0-YgBR~{I3<~4U~CwohqG8vuSmVZ8lz- z(jb@;sAO=g=nOZufn>yILYy$;nfPzh?|Io)^YXHT#Jye`6ofwH{yd5eQHTBJli*{g zBA-^aHi*M#BzbE%@btvzBA`CU`l(KnrA9-afReD5lMkkFqu7)&5L3sbF_^N>jC3$1 zDqdb$VC)HR;1tJxEb5-Te!B|xO}CKdQwC);+>RbstrfastG?1=%fLk(C{5_!(yx|7 zGEs=K^raomCycoJTQJMjL4oW&Jy!bWay&6GLAie@1iU7CXE|P@@li@#lonok=F3Uz z%R#m(qlhM6qOGpreazZL=}(f{4x`4`ZQ4$^$QSPbhOw zOmk4RPt<}8(j11yQjkjW{StW30qtFGer(ypS(qNEfBLt%SFJ0FT_-m0UX!>UfFb`z zBmWHlWa6J<_-8*XGn4;6z2E`fh_(V6MCrG1nG;+Kf~7kYnSUV~myyZ6VNZhkZ#3bg z_1B$lA)P!tdXZ|uwW98qASUnz*ux{up~$9-k=Uz<1^3_70(A<(rA#t>>1U|s>hmTBu%A+;r< zmZA%DYNh}zjN32%17I86%OZxm=-fb-c$FR&!Rw1S8J-*52)F>;DO7SwrA7CXQ|+YSMF(MEt%}PkPUb;p?9uX9k$};}sW{n(;im16ijo6VM%(9jb{MBAN7EEN6++JLYblHYhlR9nX<=_=j&MV%@iP-(cMR7larXrS!q!2JHEsAB|kSgu4^p+5;l8dSVqYrZ@UrHu+Z-w}K zc))Fok%(IN_MkW->2@x2EmZ0YaylhvWU`>PhA`B)H=XpVL-2ZWGUIz*X|!v#kwCKb z%D|dN3|erNTEC$KAzJ; zr+a$H0K85wBgKFn1CrpU4yR=~SG|ay;FTqCe}8`f04qK+5mqjv3`PA92J&7% zfR{werEaa$nvls4b@^CQr5j;9tS&5fLME#-lpZz8P*gsAg`SdRKMjHbePh8pogb_# zywY=O;|sQrem{^-jEy*sK)ND^-@}oC*3!l>3x*Unn3KgsZ~d+u`ON{-3!{6JTb6V~ zppK>79~anF7NKv%JWHHsYOdC+kUVOVCW+K_FsFETnH2D@=1MK z95mEd-SFC-|A5}sVCh@Jcl84myw`91f*=uRj%;Oom;74>dR`l^j_)~%OVe8ny_aNw z%E*?231A}lR#?$DyZ42H2IR)r9i~!J}@f!=19SiqY3tu!>x_hP{ zPPt0+4rcTw}t~{N? z8Ls^n9bfTK(`x((O;hq@hkZ=rLyFE}7I$}=gW9ogm5Ft@NY6G(t@~@&)eLO5w6Ec1qZP#K&J<#1EPV;% z2&+hg0h&dPuNjaBV1+pM9yk=COtH)hs&H<0l%hM-5jz$~H2Ny;bh93p)D4ZrSSwS* z_3}_c6xB~bG)gGa|F-`6{i2p8UpOzUYESv2<$ z@XFoeFI4=g<|Ubs-EE80;r=m*m5KWNPBs>1)Sf zpdBy*0LD~`8JjNmJh}f=8#|HIUJ+6g1gl4X9T}%MRt|D)mJ?v zljSA86`mpoVx2tvm7$=i8J{MGkpa0?CxARZFo42~y1jfnp6O2`(+;BrvD7)4N=8eRP{m;&flLkv8+y#Srj$`buG zr|9!lj{70`hwb&UAHO_qo_-dAZ>ip zl&cLKL$&iDkG%pw^)zrg@rY-L%izU;AarBgWn$w6gV_1d$3Y8#juJHn3umxK2|KV- z%5U7SMT5(7cEZ#*8}{VFo+Z-IX{$xM#Z?TWXJGb;YnU5?`$Xa&?|-H+F<@N6UVP1b6hcch!`5)4AH03&IC_g&Yj?m}@%y~aDi>m&-J7aD z!^uhIzw+&?>E38e=VhIzw@mhU1(})CeI&j1Wkuh7bsX@AkfDo|*IIlzGqdd^smyGJDNlYwx|<^}l}qm1J#cDsV{R z5C;c`fZ6qHwj3P${^H=^e06{mDABQMujb&mkY#r5ihcOYWfHx)_y#V)bzZuFLyen% zpHbIgm4E)!xex5S`rz=JT=1-(Oq!G@^wAeE2GHg@_Z97WO@qb^0)+9MQ`QybJo{T1(l89`ygLNdDqS~ za)9QJ8_7P0a)_)KXIuXT<&b7!3DLvrC%PWO*r&mnP+3vnJ9kl$zwGgcAW#``eq?LeXyViz=jI>!=X{AO!=CxW|`hSo|F& zvkZH%`#JllhGKb8-{*##$nRMH!`%2)V#{uE!}o{3-Ulu1?BP=OsWyPjGi1#&;$BL0 zvvwKVH+@}?PSvY8I1z9pe+Oh5Ugh(8__VJk`?LRf zg_g8lN<-s^iqrLhrcQ+Xf%y;}eY8S|P61G%%6nFclg~&gyAR%2g`!RJjl9`f;<=*E z$=3nYnhgwxeyFIUQ`SGuo!WmGvJk2#O|~UpDzLmK!Uita>Y8jnf;LXoe*s#PHd7=Z zM%4x4yAUMP&w*`s;ISu)lDpm+(y%f0{&PEcY6O+B9c@r;CDogI1lCJ=wv*s_vVJXn z0M2l^x!`LnGzZB-7!)z|I$>y6v9uy9CjxPK^I66>#$m`-QB`K%=0gqIB@gDRtl5~M z{iDei{pP4^V6Zy;?KPKKLp$aDendPBO`wDI(`edh?oe81GRn2Bt~%I)(AIPNhw8~_ zeiNUrSi!{Z(nUnaCl-?Vt34OwT`AtzdbNfgX~H{(tz+#V^UCcypQK-NdD{T0uJb|i zXxT>nCB!&1j3DU^HG)PRpEMR3^*8jt6vB(g@$}`vIvPOqa6J*@*$5bU?OGi@Pm7n1 z1%`Zv>69VMEduK4j(3M5oPO`^4enu4H&b73-EZq(K)Vn_p;`QeJQ5^Viw-g01>YO1 zDWxY5ly3&q?+FI#R0M8;xJ7Ds8@t-oDl2X3H1h{yI#+$M$;F=DaQz(A7C*Ph{D!7V z^X+W=>tJxE>?eN=U5c)dTx>=nC-SEEW}mFblPC|LZ1QB4_h7wyEe>;2vWv+caRDYS zNL;Vot0Rzt-P$pTW2#Wa%<`%F%Rniw4}{kIkO9|jmN_5C!$~JzU{*Fxh(eb6E_3qP z4F_!y^|fJ9I}J+7r+b5d?m^ucm`0FP_=&@s%pRH4l~5TjOK|-<+5clFW~c2Xwyt9HPDKKbH-tRc;@2D0qgSr=>)InfqK&YzO=(Zu zaKxBsupREMO-H=(pLs=Q^>R~lbYsDq!F$3ZR1*1tL&rW+;2Zt zUmc%igzEuIoJ=N9o|y1xPmGs?xgLSk@8S6oG|ZR}ZmjdUtc}q0)1=pwb?wFDqZ3c& z)uIoY_&jijI%K&6+rx4*+59?YNj#s(0-+Z>wub&n~Sf@sg8=z8eVp3wVJS3lm7k| z*iF`Ch%FWP9+SBj`1hl6&EKx`qpE4P!4E^4TxVtS2jI4I*PX;r=!LBE?%Dc}DR~3% zi(SP6d;$@LVS;sEdT(NuLv>3o)TH|n-Ju2sGSNqYrwNU_B4@&?QP?|5JG(K@_SeWK zw~AfkihEps^1wTl=m7C|Dy2TUQwKmHPl^{(bB`y?F5Qwgkc@lmzxo*v3tR_48@46N z?KP)9wJZZ$8wLb_xz+>4hsfCLgjQt!Q)ibJZQ5 zN~A#r)-5ev_ZOahU(x_lOg`OrQRDiLI~&!d4RHD{D7Qlv36J z(v?m(wrTqPLwj&LdQ%U*9^pjj?CfO6q6yW0#Gwmke|%dD&ox|C>Z(4G-aEQD#v-6l zp*Sb81RLSpB4Udlu?4kO9c$R}D%c&GC7T3n5Pn({oQ(nj;46uV;XzVlyop%CJaz{k zYfv;q4HioPcGy^*qM_8)axWUTj*j)p!i*6&VGRhSUE~7i7 zQA)jlXmII@jquJctohyvL0&RzpyA2HYGcA_lJM`S7f?F>*zf} zHNPF5I5{Bct0>p1*w#9trQ)s}nWamlG=l7c1EnfR3g`;6j8c?BZ;({)!T8JL!()kA z?h%C^uqZgRJZlbHmsi2Q7Q3($<7`8;Kb`-WAif+?SZEbx4D@N1JHlxPFT;H$sw}x! z1p_NtX^!3nS|FS}pjqy@Z0F`zq3iH~@xik&rEF~7_zQ1Ejj7WT zitZOee52D=y}CzwciVeT>>|i4V(b8;ov~n(@A&(C@@d9x_D6@JFzJPY6dxQ6%@sB2 zn=xv>j_d@PGah+?=+OqOf}>XsH}$Q3qiyg!r)axFLu1^%4>pG?DHc+5`y@KSi9+dd z%|4)@s?_Z&{6dDc%p@4RNFFy9Hhx1~*1-iWvv!{KO)ZBO*qt+LAg{_?xSPHkLxvVK zf#`wSQi6$iyjOM~um=hDN6=`#7$V+h4TaLox4_9VZa@f3c%v$j_a-!px%_!@?C8#f zQeVRWTrK*q_PMW+s?{o2jj3xy*1kl6Uyt$(e-=_d1ihq2w!k>Z zB^Rq(jH>(nI>`d7-lU~qS6=ypS1@IV9j!#FZEJa1&6j*bT*x~^Y{=>n4m&= z_RE0xk48jKH#(XQ)gxQ7-K+NQ5nI~w=QF=dpXk=D4uVaSPz*sKhH2CK2M;MpnQu5w zdMK`7$fG)iqU|a+A2GxFfInkPD4a6Qyt@}7#O>hWNjruPnD=|mS*=$4g3gra4We?h zeZ4?;H);GuQNSn;`k5SD^|$IclzOgyG7b@z1m6g8cqFQ)Y0xFw?0Wvn;TP_cb>3C5 zTYthQDJ|fgeDYPp)hR+6k=15K0{h0+(U0`CpcZn4rf=9~CwH@^*f%r~h>iCJ0{Y0{ z{9Er(sEyy7%fg7qUn3s%tH6`ysRb8&0xoGf(CM6gY@$>kjx?e!&|ObLZup<6gi9+T zwHkL;Zfhm0@8B9OBI8TtlR2gyN|FQ<0a!Mq&wO8I_~Am-&uE(kPXJrbr~`xy-;HgSWnXJd3TXE?>IC zS9nt$=_XJ;(Bg-v@@xqd&^trAlqmOt?nlGU_+xOSI(=H&p=TembEpx*#;F4ka3(gG zjJJ$M9&~;%+q81Je(wl(+@7jTF!XTUq8;8ygqaw&9z~9lEy}2l^Un8Vib13edPR znL}@Ys8Vd4SJZ2V@fq)|MvXY#9(OvztcWulX5PntT+3 zaFP+^Wv<3mbkro7re7+OHPi7>Tsh_4I6sohqul4*8}w7}_wFv(e2gdG@mk*3ZE2MWf;y=j7!_3%5i*$cr*1;=u<)I0r_$m003^`O3s%IYmdza4RG z>4W%d40Hp#!jUjrrg)2hO*WNwZ}I`-bkOQR@70X@7{KGxV%5Hhj#oQ>JuVz(dF zRMM2pb&q-T>_j65wIYhz-{|*?8Lmf@xt@@CVy-$8s})lXZYHyKL){hlyL-ZTrA2)7 zVn=7*g_-&+L@nXby_+1npp?D4ZcPtyd>!IWLl^oE#h*;0Xs4CPj|??0b}BXKz;#;d zs&9P(kK)=+r)RHCNK~9U5HFt`e^RA$M0#;{#o>gu-V|jT6^iLOQ<)l|Px-pVK|T%v zWN!asm~O2VK1RlyE!{O^OLxZ_sRv17-i z?Tl^4#N<%{{J93+UF1y%+m3M&`MW7oOUqvzm67s&4eJ%AH!6F|JjthQ%m|{7(|y4j zU#?P*ju)8>@{+gmln0`ZerZ{zl1hfVFLktLcTreuu6{Iz_JmOucYq%8_@X@7J$im9h2Bai-CPv$JaUV1%|5kU8!|n&*V!7d*N2;=3a4 zGh|VALv#1Np4L@IR@2fn=XLow`n%4~a!MHahZ#(l==d?}#nujZL-;(O9)RtZ8QNf) zt}A}KGFC5AQg>+JP41Xc3fF2Om&(CEU`pxWzW*7if;406%G!gkTieXBvoP~6N9O6? zJ$hcHJuRy{)!SK{mc104RK$^l+0Ti3u`rwQ>Ut*Je#jD}9qWqsesWLmdZN8s4b@;? zQiok>10#|=1 zqx=l!k$RLcq=!u{Z)jp(YjDtfqBG&y_b8=AvIsv#1<0NWCDl0N=SPQdx`>F*p zRT#e-Hj_Hyk%IN6w-2bV9U9jg;+;8w+dBKYxWY>+bs6(~@M{uMGB8}ulEg$R+ad$Q zLM|$cc}OJ|AAyj1+04j}9ln?4i(6&n+852~?YPydP$x_QbYA@87uO1gthjXVC5urH z?uo8NmWvCClvH4NoDsU4)0KzSW#=%&f7cGJ8OH%oa710B*Evi|ZnrvUKELW)_) zAh@Uz6phL=QPVjChiNB03>xc4oImALNLwZcH}a=?8&g0hI=$y} zzrg4{^f3=^heB%E>m&OLnm^!$TT{O#&F}VxdJS~uRdg*m#cI`;ucWn@7>+2n8;75% z*OB|OJ!0@qn4v9c_esJ)e*EC{mNh{){^Y{Tin?>^3eb5~(sl_66Ux4icJi_7mv|em zPjVtG>mHCfScB8G36Kxw8=7Idar%s`czQNn5VZRBc46Yny%~iSAGC%c0aLku!DwJf z!E3L1*wdEKjOUvm9I+{SgLK+A)d&s|&I@}#e&ORY^E(bU!WE-l{cx#(eoK4DCxA}b zJPPq9_&g6aCB}3Tj=dbBnmlGjMLS{=RQnm7=uCV4=4!!Ls;tb1C#^}ZQi`{BcbR%a ztlhX7ez-V0%`LbM3~shcz-PG;5X3gG!CG|L@3+~R&5Syf0yv{sUNF%p%RM!wv@vx$ zDOHz$=qq!olr#)LsSVe^$``c^f8BJ^$la$J*w>G6(wNIBjB*u2rP)uAEx|M~gp?`s zz1O4cOGC?{QDJ)p9)qQYcJpmIYsSPDkFZ~h)ve2{sAi1}Stt$q{F!dh4CdT2Tl|CP zXwv4gk%o%&1jVGVE27ZUW=z`~eB7;*3@{K=EJ*olRNz*7qzTK0F_44htvaAgZ>mZc zfStM_;ByXHpJtfYt-{}J{n*|{7@D=1`?t>CIAJuJGm*?g2I)s1HCPlDh`;Q3T1Ppc zA~IT#3%ivn#}G1gwNaecWbNUAZo&HuW$ zo|RVA9wpa&={DUx;79Jf#w7u<#$$~j-2%&s(NDgousgM7p}Vp(&S>a#-Vw+NiJ{4s z+=o3RKL_jaNu4&l7p5mYQ1r+>Y&X7t|D%A-)VMOPVianSoq{g{gTYaEdMWFbu`#A;6Xg=M zW5&+ZqOs0_V_i$|X7Z{e*_KB!`TPAg5SV9_ZcAYLV|-pp!wp}RRZ5lFGar(RRo9hATLTk%F zRR2r4LzesGk$bchmoee*Kov!CthyNHOL2K384uCG#^OT^1 z2Ypg5aPl2qjIbGpeU7}F(#82G!ot2eyEWk}aJwo@2E1I>snxQO$n$Y+rfFp6HorHd zYpPZj)uiRnTHdgP_ODGk>zbAAxk;sMV`|Au5{D#W`{P+O6|wkU|_! zP1>s_TbP3jaHD9DS6O@cS8kE|(^p4tL|mCY__rzBb?ZqT?EDan2e{?2&~?SRD#fe+ zIJ7gXZYamk42Q&j{KNLiL@@e=T&?gw%O|`dy#}ZU(fG&0UDK4g(_t&(eC6-U2}~s& z0Apd@2lVhF%5 z`Mc$lXPl%U6QXy76buaw&GB`o(zD0KAMg5BGz~ip9k{s4-N3x-TCF^-;(|<8NbmPyve`p`}`?i^eX|&{2y>zDg z?8JH&0sjNf3SAF#tKAA!%1&{ghKv&`f%?X<)y-du z7KD)GqM#BHG~s$>^W#NBhnVbo#zrHkkI_Dep6)OQxBwMe>d%+fY5uj9IT2`3B;%az ziVO~xs?f*G4vb(d#@@XCJ@)mS&ej;U;F9(#Y*|Z8I~=y8!E@UiSIf$%ucHHrG$EtF zeG=X{OlmbzNWP09R)JeqD7Bt@V4vX!HP0c3oTRJC96gipUFFkaBCOKHc9 zZK9aW<7Z)R(HG3_+=5Q1DIe^Mk~o&nP}Nm$Mi2H&!ctSx;(TP(PE0Y>(N?;03nd( z07K=OkWK9xq2AlMY2D9wyM)z048bBlBS?c0dCYhoE}u>8hPYBGTh%lAD+aouxu}?5 zXV@a@vERW%a+-AfH=JSl+?67_9{-MCIjBVgcGLk}rhK~pSkJwfy43*z0Dw79Z7@x> zs$I+@daw&87kqncSzA3X2By!seb%%t96U?AoqXpg-h`4@r<~+}6wUoR@~+Dz)&^5n zMfcDK>7iDUpY-U4o8>4W_1oLJqXmU;lyt5o|Iw_ZRTe{MGXK(uV~Z-WR9U9zjlSxV zKRn4&kzTc19};z=2-F9R<4!Q+n#6+iA8vfVU#L}Fii2*{I5z8KG(7;x{uiIx#s|dMAZoF?iO&eH z`FG@o*P35{X=<1dhro%wmo2XR_PQzAc*%${iZtGeGbC)-O*5rb+=1ZJn~IK6C)&vxuld z-DtM;)65?{cy4^SzoA(XYHTxITkbm7|0tu-VZxisJS-E1LXo6`^`x1~vCb8!(A}$6 zPy%A-k{Dw#*DU0+J$O9AmAQpgue|-JKorSdd99(;JCKIQkyb)VILZj2>Qgh= zj#zZ7drZgL2!9Bw$(tFt8xm8t%h9zaRyxl}Lh6%t3gt(3idV%SC~MVE8un*M`ZdQP zds1W7$1k6NKx4qr!|V09@KRUm;~RH>dslT8QRj!QtWJYME2{Xf~Z^kBc2lo#Dc-<`0akeU30F8VJTS;zMXye(T-( zsq-bUM>bh=rCA`2A4XEWR}P040$?@olUgB|Q+oYa@A}8I;Q)I=bL5(Z{)dY{eeFkC zyI?~zDt5(IU#@q^bbULvQOL_tqRH3T*2HBtb;In# z>!18Z1<(}d%{q3*;UNd`_-r7sCiDUA4dB7k5jo-krY^{4Su=ZdQ{UW(n0#9uy?gf6 z&J$*b1D6o{TRF?4Mk4zWxlUCIH(A^NYwcP7QL)V`$H%}7_~W!nWzDd6URt|Vf<|an z1`Qd^(#&GO&1CPqySB@|N?(=amx<+(?b&L-Ari+E-C*^(hB_|Z253;=@KepZ-llu{ z2;&1FmkS0b8w)!Q{c{k?#rT?I1I#-7Pso0q%gnob4AMn=(pQsxJm*hjw}y8#R02WV z_Vh*ihsUz@516+i;2rpIpvb#=pavtnG(;CY=yLS906pUCTB`UB0lvRn&w^`NA`c}* zPWD7q-}1SB6VM*>%s0&mm9~H)DJ8t0h%CNws-EL*q3CU&6otoKobN|xe}><$RjUAw zVQfjIwu(P@RoSd?dX`WApDWI@oJR9am9i=fZ7O$`MN{P_tuxlfF7tuHGukpq=+q| zFSi<*eus9s%2_927t$z_*dGxwVf48OgMdMWMIh<>{z3DxYvpJ0gxQ8;u`PHDU@7^8 zO0liGu|q*G)h)(5!N+NN;VA0G1y9oqokBk==w3^;>ZU*dGqFQcMi zTkNG}&318KIMM3|YBsi2cBw@9;E7(Z-(VTnRDtjg7?P}osrO#KSTVfZj9<0d^(Vgo za!A5?q{TbH9|MF*64SX`<>sh;QF7`f^`8LkQ@7B~2BHl#EA^+=Ifsq1-1(iDsN+2# zL54qZS|tZ-EQZ#^(4a5Q zLh-NAKMJ5<(oU5PpVYQqR3Y5`F(NwYU!d#n(o#r8_*0+V=J4ZoK*x1qVdw(hTuW6l zi=n67H=?(1!^-oYHYqnlrR36pCj*q;4s`;+vVi{VoW-wJculb+4fKL2QkzIaexrid z^R-DpBHjV(YZyBPh)mcGHv<$NUWlEa_|l;dM9te@Yor#>_bLOQGSNoa@C7$34Fv~V z=*Cv|`0fiiT_4Hh0jQeJoqj{6lk&ngVEAgyJzdqjQD&$WJ1*L0{xv%v`v?F;$B4h~ z5I%&w%4eMKYY5(3es|4gO#Yr&0{d0Ln+?+zVpp0^zXQ2U)zN!I)2udMTgWA8LnOT4C+c4K~Fd$ zWXv*tgzK^Y*z$O~Sn!-leOLD(>}@m8BkT}=zgbUzsJ`I^nFn2Y zCQhhIw~cVUyn!;*n@a02}f*{Q&*b@$yYCnA-zQ=mjbBF?)_1u(I8V`BBBcjhnc;n+G&s%0ql zqC{`sLd@*E*Y=hesFxB1@Hmx3>rime0eRH|A~>MVyJ(SJ;P{|dw+4`OFD*_^_1=}uL+8RfHu zcg`wP`ce9)6RRde4a_}5Wj>sa`L4Z!(@!_$*LxBh_I`L>Xgys@`Z9+3bW!?}*LM@M zLe;gdoLW`H;?P%ribu+1tN9j)%VUtVuFzY=I1^xMsS`V2;5$TjQ-%BVw_ebNH&o@{ z6*ysGAesFL4G#_Zv3CUUftcQK)=S6G98TcKB-0zPZ$+T{i9F@S0`&2Z=Up_t|8pmr b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_v1_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_pkh_1to1_v1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..1277ee8fc36da9ad10499e784aae8b8165e6e4f1 GIT binary patch literal 15336 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..918961ee3d72c39847f02c26fcae6c05432c9ab5 GIT binary patch literal 7696 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_2_0/00001.png b/tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..1277ee8fc36da9ad10499e784aae8b8165e6e4f1 GIT binary patch literal 15336 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..918961ee3d72c39847f02c26fcae6c05432c9ab5 GIT binary patch literal 7696 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_2_0/00001.png b/tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_sh_wpkh_1to2_v1_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..3a71fd4de3af763873a56f094a3b422220eb1285 GIT binary patch literal 13485 zcmeHuX*8Q{)UMLe*s9VR-`3a~Ta+66R#j0HHP2OZ%^`$Db)aus)KGJ%xn`vmL`17? zN)W_QjZj6C2#FzS2;n?^&pK;;zs|33ec!jvI?0b@J$drv-g`gy-q*hNm49wqn+foW z^Kx-<37Fr!ZpX!S;3XFq_v@qFz!5#0?s_gREs**3zwg8quM&x`%7>>Ak-uEf2lJ2T zA14D(je`OQOh%4t9pwM}+RNi|2alD}AEByCIH~2=udWiKp@RNQCAzv--7{g>E58C# z{6Vg{+5H3-H&?IoK~XNvqbgkf$DO$b|7zjN|J(b3#-m*|!AeQ#HN_A_1+Qqk44plhAANaW+*Jz3%` z-$3o!#0c3>F=6ODJGlp9ad*A7txlR|-Z`8U?0+DxD&SCVj((P0f2+!~ay(^Gsv*>k z1>STDI89H5TH(iI8Wq14WU}h_NbKzPP@ZU+wmV#+jE2i9=k1o_OR6ap&_)Tt3V$C# z&`k#;iLuC-i=z)=ObQb zz4ojezQ>%Yx9eo`()2;$$LIh(lS`id`xSI0vgzy(cg_lrj_43 z+(i9eb;D!IJnK{BjFuIlee7|wW__rex#ZM_s$V$=R!Z6)S^4s^KlYb2=It$eN2^~; zxy9AsAJZkm&P_&2`&RgOL4|d7-N(*#{$*N64nJe|&>KPM{6{haQ&*=K>a)Y?(S(SY z)}UKeiYDRLgj-ZB4FRtbFUXnOi9E?^TcjV0KCt$t=ADoEOh;Unaf)kZxzd4Ybzc=Q3FL1>rFY#Eq_UNOs7sJEx36dCi)XQB~ z*!<1lr?b!UuP-j%hzy^);3Cb<7gqtCX=jdzH%mHsZ+ciDOKP?^YSo2rSg@C%I+r59 zRM^#|Q)ER_4yy8OkAwsUM@k~w_YVae`H?27=F@56MZll&K5xP_Dv%92v@6G#*HSq~ zTGfzejf*y%>MF74G=mg(H0shGoVCntaYt9eTup6rs%z!G+C5RBn9v1O3ZB%fb}2Mk z8<@8law+HXH(1|dbT*YeAGBs0-kcj9zWY@L6lUSLyvJ~G7G|>`-u*`YS})s%?{c zk4o=g?SZ2^4!KJ>C9#`#Eov1t^55N4-9w^3BSW~z2{hR(ub_LL4E;%T6picG4|$RQ z%q-~JAJByqBN@o0`?9VwQmc>0l{(|K*wDM?S@&EnGrlpmpBvf{+8rD^^QiY+6zC7( z;lFYM(mki%6TX{gEyfR@q^+y?xxiHKeRpePa7zlNuFHBhPwibQ#*xbYvdmgcG&1&m zi#ZL^9^G9vjvk1wq9NAL>H(Bsyf={F592`*ofa|~# zS4M`(J#|#bwdNDO)YOByw0`ZqcS)CtC+-KHh7M(WfWi9JIB??M@2XSU-w ziB!{*%)CL9cHjCGt2(n_v-0n0JwD<$oeg=DpHwBz^#(uGY1UnFTMy6UyfkziUqdax7tgk|wGAsU|g2!3cu9dF%B3 z8O0jB`LGg2Acqvcwd}6&qJu`_vR_n`K&M`G3>Gg!hzbgx3#sU;1IQIFsIX!^}1K+aMc2CJ5dcN z3parBQEHsziNAopUmN`4yn3rQX>*zbHIUxl-QJ{50fxY!iHSGoE%ygs&Rz38KZme* zqc3CqSBB)b)!0x%iFFMJMz=UnT3U)Ati~sgvAWr#gXe9eJz%rD+uIcQHJ9A@l4eKc zZS{Y>Bs^*NQ#ZG+oOYwR=y9oz7Yl(@CTUk^e|QK)^TU`HiWuhSG7zo`6goTzK_G@9 z3~;4Wk5iMTaY8BqC{G)zqtW!&JziP;Gb*}Ehs0EHo7kl&z)%EXDJpWv4Kk1exVH4T zvlU))pI2x*@W{i0nHBEsHxlDtj4%JYPiOZ|IbTDldu~>6@5;iidA|=uZY$5c-V0m` zQGhlHnm!VoUQgEkv(ff4&?RcPxQzU$KJkNh|c`;@U2PR6^RWP*(^f zIC_@NCY{F)CLj35{M4%lw{~zawH z#lwzxEn5-u52=IP8gp&jmafhJ8z`L%^5qRAv^P;RJAaS#j?U>-BsAA4;MZXj1=l>L zggW3-bHe3)m|6%5S>Vn$QlX{0oQDF$(}pv#ErM znU2m!L?Hg6cFodRKv9zuzjFG)cF9Yu(A@1 z+yfO>n`c#OO4SOrhbqg<6m)e zqOn>)<)0*x;M5uLqBqwsw;l_n+VNwV2DqIVo%0c$DG{nx_D*93 z8W9g})dY#xdjCd8eeRVruVjXz=PVBl5PFTHG`KcZWt{Cyfpp$B4eH5iU%hCWk=oU0 zLtZdyC4C4(WEaOMpJIxSeh~tk^MnWMz)qpfz^!X8)~plLZL^Pvy5utHTygzl16Gf! zgDRI1#4!CvUs)i=n2*WwPx!*cN?xAZN(lVH}ApS9j zqdBLg#er|32U;bk3!|s}+kyy}ahqkw0Pm}=H$BQiY(fa_F1h_Decg42QxC@)4~L)DrUcP|?fh`bK_A!sWUWX1WrJi0IkTuU*iPfjPrNB~){R$8}A5D0U ze2VNQtd42L;DZWpz;2HB=k?A1&jtFKKuY#hXzrDGt zx7Cslae>!`dH)kzQkCXVLO^#;^t_I-@uLJ8T!lI~BK)-ErYk&?2bnjDP09v(oBO+V z6EUkdY_jBVoAli-Uc^$x3Hr{PI*VCf5yKuAPr8TxPd`jX!cIVzoUB)rkx$N9!m8u! zj*H0WFhr4NZBwfXx<`kV{=xu<$*7vU83+EcxxI3@$Ftd_k01WdJPQDAYbpb+4C#YG zg`R48>s00?_`?0&myn5+%fBR0A!glMTcbQLTntbr>1wxtq9_r+c?dl5jN!m)EE4$`l7aIeG^^(| zMoQvJ3vU1yA@Vg0kLHrL=Oc6_1x;;1)+>GUBc*YqK)2>80LJ-EZ|@eZJT3c~1@=by zjcEZ`&d)_!FxC25+7%zqAAs$u7~E3SXvO2a+j;-c1P#7yC+6x%s>3?jY9#aC1Rg2` z)di$J3T7HOYxO8R+dgBq`J6}d6v^Yc!U)Nxu$rAi7HV*6M29dGpn({}eqg~888QeR z`Xn#YVL9RQZQX;DQ%)K!jHSporZ>EX^u)}e!wF_nW{U~RDIED@;U>_W1jRV;11HE- zdfdXgrcuflGXg<1F>ei|*Dqt9_0>@qZXM&HV^D!yYwEh0w|7S-^|S6Fj9dBfOKYfX_?F+xTZEVi48X9_lBH z2$jIReQ~PeNKSQ-ORg`?t&=JB{TCZnKSzUQYn8e=bkZ@{e;5oX;2CRTWI zD9v9l+N?t&y44PV4;g0Lx0j7f+*Z;sI0$Ms46(ria(JFhV<-WMyu?l@e;=wGB8OQV z34OdL>NeOauY!med-!ec6JXNIDeA;d=)T=?B_Cp#4yvCaA6P4#TZDAmNPRIq?B~+; z0hHDodaE-E0#580zcTJzM2bgyP=Fp=jXodhoVx_znbla6RT1`2dgzypb{diy<3)Mc zM~oV|?c+0?9)WovIWha15jNJ0kT&*OcxK)8*X8l=r#lqlu~3?`N4NHmf27Qejg5&* zpMwg2ZEm)O5{#4f;?SI}t%#KW>+1FZd`X53 zZBz>9-k(#!4zzZ=tHGb!kqFjOmC;GyH;=2-hdEKxcJeC3p5p>Dm}3#LhYL*^^49e9 z;V(JS%tWJ79BKGebJ8ok1ON=Z)baq2p*&;ch@mZUffBzv{nkAFnVp%W?d`-KceSvI zpSrO;3?2ARo#s-nQgrNNHTixSQ(O0cn+07-Mj62iuOn>?KOYyqPuY1i>q4&2T&boq zzZ+NRo3@c&wUnH4=J-uK+5S33{j|DeJwGks%znXi1RASYRE=gtfF0+;gP8(pymHj7 z0{7A`_UlmzO>FD1Gh1U-G8huWmQWn|M7XHf@=>)X`N=+ej+zSQ@_1X^rskYk#BS2NTMHRuAEWZI#5c{5H~$dIf$SS(=RJtS^v9nWTBCNS64TwtK}p zG3VJsa2aQ?x^BABbXEf6VkF`<%&7Ev`P$`&5F50$@{Q8Hf_#JkmBzFR#|@vF2pJ4l zL@OL}tf{EbxyYR1f&ZY>0zHm^k`5~9#+!A>Mg*F@@TzSVlQtf{-KgR2#y^ud4nmgf zyzJdL%3^!%VsOwgq1Vxi0z|aT@)J429LGuQJDnC2?rrG$j(^-tTA<;o`bqlTR7Huv zzrlK@FOX73HLFjp5r@^`aYptGF{DFi+)wI zIomP$i19H_sK?Z7GRB~JjF}H$?O&c#%s;&0#B-o1_2i9S4NfdwFx$UXQ&*>grKMM~ zp6|XJ*3XBXo*$VJyH{&LcEvEGuW+NvNg;&TO{X|D6XfdV=H{Q4D`_9-T2B`~(Fck4 zi$RM~ulb^k8);3S^W`O%E9fA-_ei^b|F(4n;yL~Dpu)1OoV`E-ihT^uc63Gr*FQ%VB=)W2%XAPXRd}pb+IJt%N#ZZUuQ5=VW4uIxEj_YEjg;ycQlK1cm)2Pxjr(N zA02x=AYPBft8Y9{p81uquzvCzcXDVwg{O9|%B0yfKo1nMW)r=Lv!|)WcDR|;HsJ%RS-z2tU4awHf;` zd4l4pB{yQOxcl>ESw*O|H#9Bo_!bc}m4cWz2^Hm}o%~iewjZt3!d(ku&1>Rg9~*J= z=y;|IJ^)J@L*Y+kwmW*(tW?7TT-iPXV>{mOU57f62G^hcOzra_w_rDSqdE_!U)V-D z8~?o+6rY`BDiW(JnG*J`af(V<{au*w)Z|`0u&QBBvjL8oouvPJ2gN#Y>6&q(Ka%)c zC}ms!S_#*Lx)vPZ;dp-RNE*Wpjapx*;EqycRB7vHWl23xz1U#q(|stYI(zQ-!g>W( zW^-=ua+ZPo80zAhHlkGK=jB?M93HqmmrQCO8TeLjV2Dz0T^lQH4RFzUS+v8`6-DDS z>kD7o%$Mfh&cBb%2*QWYrZ_+5cd|LGCNpcoeqn}WSqpTCs;0J z62k)Pr&}&%hQen{tOZ_3GVx=nbDv9>A z;U5J0>5jef@bIX;y-J%P=|t9&Bq)T-`!MjW|NCeNcHagZADgiYMLgOdCS$r`zg}e& zW|_Gk%Do3OUI@Z@jHz3YS+~I%OOU4q(DPl0Nod%CkCvyLZ@RGhH`An(A~RvmW}!1ur85&*jWfROl`NOHHkW>#&EAm2_P3qhtlml=mc6)x<179B(-i#FNUIBW z{~c`4Ys>Ep`z$t$H=9I-(oOPbzhkBQjCmYB?v$*5TWYDRTl9-Hp;N>cKzacEG+6Ml zqOE9utVMBpHMVIDAVqkp3^*;xiiTZmRnaTuJ&$DE z+1>ANk)TrzUQE2p52)`;H^2B$oZY4X9_L-KS=Y68F_HDO_2Gqis7dpQ{b2xp!uYCl z+Da;$LY&Sd(kBS7HUJPFKn5D|%<&|lwx$ce=aw`BdJcpVngH%hAKMzx9kP(>(qZB3 z@G9ZeQ<0RS>MPP28)XK`BMIMA=irTV_*KKdX2>S^QeRhZ0MqJ}v##DR{DOL&i1Ngq zIj3As54Q4ruVs}jm+80Gv*do$@aADl{J3g=91R2%^!O5V{j17QH$-E%ghBcOF-*~R zLTd=XqwB6y@39OOth4}pEs@8u{*`6FqIQ95+;u1)*72A}t=lXwg_smy!om`o>SSO? zqQ(>QSW{QwcR&1mSG2RW(^rq4 z2;uy^P-a;W(P$=P85RrCH|XM*B@x8l@ITwetZm5-JX3T$h9EQ|6wZO0^}xY1wM)EG zg<-E&gnl$hH}ws-vgI49gX-#dMcm5wLy0p04rLm`t&_zb_FVOt0+`8JiPr!&yhkr< z5A}#&M!ov5{#g>vZTCG&`vIBGqgi@!Ztv-x!!>bs$FQr+a;2s}^s%9&Ap17CyU*3D zK;Q4p@b(Oyw)pHq7pUF)7#6w&MK*Wy#sv;E6_2^hm2F_R|DaKJIdsob%=tzWobZE_ zHaRUu+T4!nEXD;)KVlQE9>czJoMFs4e1yEouRxT9eJdRK%dj)9iVtEU5uE88w|K(u za~pREd5dqRHWFi1Q~4de1)7>yN2%eCHuSy+2WmoaH*}D?=_ubJwB;6)StUWNN|`N% zEn+K%kvu8fmd%Cwj5%TFlVM}=;40SSeCy^Zb{wC(P>1C=)~DVL+BH;${u4p)39`r$ z_X7hSIgCrxK97v|Zz4rg?riu?*BuI7oQ+zqRR zLy<&x1E!6KVP2WZd@Qo_!ASG&(c-g0haAW7S5E1FRt6Z?Ck@hHB%Do(ILu`2&V0=c zNZVE-F@_ZuuFhRgcS%0g0V0c=1*CT3JT!Cl3zza=qGLL}-<;cSo%4wizy1*~Gp)T| z*2_z+oN$WR2?@)Gc~f+$TDm<(Ei>EuBemb=9%M_DNsHUc1c7Cyi28iS)Yev{_3xQ6QPcHGF~k+~ETCK1 z^WcU?YqszwH_xm#G9jGVyu$;luGo@{=5*f)w|R+6p*nDwRn5!VL!tHLQBUXJ?aNjm-;x+t8#7FaLCl z!}1$ySR$0Dmm7l4O2Aa67J)a7H)s7nA<@rEu6Ut{-RPw?*R|7o7ek$Gx-E4UA<@1JaGw0`jM+O|}SRe>! zfcnR#im$S|BWlge9f=Au$|5P`jx^?hxuj z@YNie9K372-!NGOQo;a{56?E!w^51WPdedjq8Hi^mztwIz5peN1FlOM9IGYg$ zseS1WvwCQwQ}iCT&tThe?gZDz^f{KL=ed^_U>PGknxi$pehG4n=lPTu9KdU#JR#RE zVs?U$HD4XDQJy>`D4`yH{(h#fZsK*9^-sNQHoMES8GiTcNGH*w;m2MAV*#-+ zbA0)jMr+cS$FUEzbUfjqmg(H)?lpNM%>6$`tMgwea`|tRB>jIg|L4fV{vV9R9w5rw zRRZK%05$w*DP9`0&X-Fnb(mtV$Gs>gN9cAZxU|S|hnW9ixud}?y6Kw+Ngp;q<1td0 z$Sk?$Qs!oy6HvW7qsC+4)s!Mp0jz9GE}+^mivHf-NYyjX8m8p-PtBftDo^8n;Kd%Ffwz`@slw6yq!d=Ug?nq)xZMzfBw-|6!-GHHH zP~lZ*W2oEIiad{*kf_X;aRFe~rON9-J(a%D{9r#n?l$PqsxUQM&K$30h1X4AdVEIQQ~dM2A4<=byQIax z0ZfWcQ-24%y&YJMsR1h#ueHP31L+Yx_zb&L+$1qsR%|U8NbOQfk++B`Fy1^%ZyJBO zc27oLSzcftQnlC@gul)u-+%}z{PI46;=eWIFDtfcjm;C`eO4Z^bm9u3sG1_wV4gYj z-iBp)4_M4KdmWF`y@6I0cT8rKSpdkqeqo(Fa9(K0w653BB~}6G(6mHmJm|zCArVd%&$A>zY~IK=LR+I09qdW@-3y*50EKbs-g-Z>`w^4LON78zUm` z9Gh!y3OQe+JNqGJ+0Q)dW|hAy>7U-AOWPWW3Rnad z#A)#&oT0)1+!D~ruBaNnW9yu74wns@pd1v@xN|sDd3UjN=j%b#=Y!iC#jvnpUaX^<1w;q!SnLY$i69|{)siL9kCh8wlzC6~9 zNjPkA(SmJ0aApbCefih@ytm)mJsJUd5;ZrkT&Z#&9AI7^nL+!$8Ves?s(CoN|7GOg z--up}hZ#r{+KKlsH{nfk{owj?VO4B>K>ev@HMilMUYaI6N%(s5&|+eCiGUUUo{OmN zKvfYEl$rO=0uS0(_$Jt=Q2P$G)om!$_5k-eZ~Nxz^EgjFZ$dn#Lu^THfpg z2xw~$SX2eoIazc~t#>>P*mB5~XX(z?1B`HvkihGtbp6#J0r)Y&_h+D~HQKjMI@k7B z%7-l8^Q(f*$_k@T)jg(9C4KaA{_Fb}T;xY5-xuyJ0mWmue1A#Ig6yke$bq`Y|3`K= zy>^>;aH}@3@6uK2>zlMHuGtLX|2l>8E+Ao`fFP{9T)ohJK<-G|MvC!p(JCyC{x@r( zAsN*{%Uv**-4CBoLhHgT84XtNWlglNQb5Z|(wN9U5{g?T8|!g1_b=OuEX8}~E-_3$ zg*Z4cx3|xjjzUmIl7e*4;-nMF+HZoy|2fsHWrb}m7IkxQ=$FCuI3hv`T2>;af8?^= zKYEP`Bh?XN8i*t7!GQSi11YL=h6u^S`hCxlrwFF@{e0ed%JeK2n0vSK?B6#j`Uyex z_+xyI$~Wv}$z3VMZ6LIKR#*w0+|7>lR3@8z5U&N-5S>*s7ml4tIN@ADuJbCacFE;z zZz?`3uMR4#UU%d#stzK=x-x@zJM3y1g46Ax`)HGs{6aI^&4WO)-n%YccV{5@OQd9z zONQi1S*Oix*!zW$ zQsS4)g*|M}1Pk{N!#K51j>OK1nnoIx5^KK|TvJ4kX&IK{W;;bpBT=6E*ts*#9d!lS zr1+#$Uk0I>tD@f`U2+d8=*RQDe$*>2BB%mRAq$*-qfVYYPLDK>no*xPI7w32deJ+u z=`JQYLk1|HzEgVmgn$O#|anoXOPMS}#0W z7q?li?TcD z$L0JaAhtwR&+<*=t8%Gxhm73z1`dd+vFpp&4~wh|t4&O-Pb1py(4wIZUW;n;x5K*R zRi0h5zR&4Ye%^U?3g7A3JWFAT`6CE1qOD52;1TQmo#H=Ug7##! zL4a_7iDTha?lC9H@ewfvA|2#974v#(Vk^?a>9zIyYhuc@#*yn$h_ZbjG}BN87wwS> zAdcj{FwBCj5S?h`>(8!Sy{t8@g3Xf4EaGx-h-oL7xN(UmYujeYA&J(AqAp+Xd)Ju5 zv5}e}%gEi1D8cJJMWE!#V$*}-uNIvS08C6{*S6GMfQN&jGs@ot6#}zsz$w$?S0*qx zjyXY9W7+^myl|_;NbhKa?aW0$uqv5kcXD0OfCNJ6H|ev{xU{v2;3bX#UUCfd-nH=_ zv})%o1@t`(5nm!Bc*N;1@hdFFP{hS-`4-XZ-b6*jo277;X77+czBA-kj^C9#=#GT; z8L6pLt%cR`@6>+t7Y*ImIG4U)fWxDWjEwwq+bR=)$(MrzpgplO=e3WrkJ+6meMkIq z>-UbkD~yYqdeP1y(-(v!F8{I%y8o>F=CZnwRqSpDjlY)KrMUw>NE~Q3Rq2QOI^1eN82Y;$dej! zBSKgYOOJ4#`Sv=hWsFg2%n{`?gM@#47CXEa*e7HBMgGuU^Q9|-0tVwtMjcCPND4Sy&1j&V*g&!33vH7TraO8R{} zm2zKKc0#yG67IuHAKr>J9ifonmRmZQrJZUE3-0`L=_@#YkMeWYTa(x77B?w&v=+1W%dg7u|e6 zhE896WY~4S$HXkVH0{ECJtaMT#+Y0Bnm4MDRFmfxjVfnVVW)Z@T9F@P7d)?+i5n literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_1_0/00001.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..06f5cd2006f68b39adcc41b08b2a540bf9801748 GIT binary patch literal 7444 zcmeI1c~p{V-^ZP%eVwPVY|3S3Ds3@sX52!7ry4UerD8D61+3Iu5_d#IdbM;WCz&#J za%0q#TyaMcBy)_Elu;BC1T#}qM9c*Q1m3&O^T+%DyUaQ7c{m(y4&3*BUDxmW{jTf# z{oKD?@^IO)b^lfa1A`r|=YPCnVDQ;*1_tZ?*t`z-1q7p485kG~U4K0NQ$m4EB=vsx zmwI7*)xZ6-Yd;^pc>#6d`R=;)M?Sl7XZIiLkDk8p_2J)lPw4~vaEuY->kdaC31g(7 zlNP_Noqw^8S?R~`1Tqp&5|9TdcR~Jkrn61k7JC41HJHu z^WyxBeZ`fPp?3Lgk2Vm;-OkbYtR_})8Mmp_#MOREdPz&ZsPAKW6^|mU__GxJm z{0e=RR>YCG5FSf;gx&^AcEd$@`GjTZ@wc5x!_NmGEZdnwwZtNLe^6tr2<%R>el9Qc zSa(_!`U|bIU62~~6yOtk})+;z#;aeGWV(2@xhNCTdq?Tk`SK@-e2&c}IFzWo3)-wpg%|2$Y4=U&ajRVa6*|NsvMhqE!o7 z*GMH@Gl7LjQt_gN&C+Lzuz`WB))vJ-c-~9sZ_+2Oc>}=`sV+FObZ=b zg^uSOFek2Bsrdb3T?hgp%dPF&V-mOg+uG0%$Dj{;8|K=QKu+iD1e~|TI(}1FpyPi<1NL`-1fSgx+S7v#g5>@9gC|%(VZqX^UsaYU1)& zqeYeslO=FxsP+5l6&*p38(9_Rtc3-`Ix8!W={-33-bpU)L&9kPSOsdbs~-3ktct}o zMR|!nHv~2ipqyp#xqi2x{6vO_{=AWQrUzI22qGtp-TWAbPE?(jrJ{D%vOS5z9UKhv zCwU8QgjsnV#F-xQl0Ed*Vl)(m0RHIedZo1~iT^my~kX3o*J$!+Nc{aMW87E&C zl>_uvWB3*bIeT(3^FY?5MWC`OtYdr9YS5(736(u3xjr{HcbPaInGm|hFQxL^GwG+0g+3gBf(XWiA^B{zhOy79C6z zP#9x%AG58SCyj$#aWuX=%#uo_$VlN^K83XBRW3aQDBj(#M?MJX za2+s0*T*(AVR`1H?Ky$i)o=OYJ2SC)o;IdL4hU`g$Fe2yi)saGV7|(Lim%eZ1HH>d z4IuDL%tn)ipejU9*@*{>S?JSnG6iyeZSS-CAHFkw&-A&ay7 z<3gi$Kq|ane7bCm`{8jIl%mD~h2{3jnq)#s>bEX|n21;h*GrMo3606&P^ccF4ZZ7w z_c@zf4^~&qDLOE#eJR+yQnPACbPp4&XvrjxvRJHYxF!-Z_C^=jY$V?4%}dV1uN1BB z`- z@ZnKk5k9U?0bylz$P^2(k|g!k3yTh&>Sec%EJ!m5(+C}A1d#1!xF|pR&BkD)Ni~54 zu7YWA8)haJpe7F&B$^V>mFg%rs5?Bby&X?OAcjBO6v^UMkLzw6u<~jcX+&@40mYS> zyuk+~P%l5tZXpkc4(r>$Uk9WQ_Ruow62AI zaCBdc2b$V>J)gj?5vL4x{k;P8->v`64&dJt@b3xuyItttn}eS`a5|tP^2=4R4S z749dpW;VOknEr|q4T__Ab>UTPHJ}xF`-VT&^OI5%wE)`;qo|=nZ-!&oR8)j7~J5_m{4`>WlMKo!|wQYux*sx zzU=}d{vaL47nE~DK!38KHPS=~3Gl5jxie1DbUU^4>*fl^0aAO8O_V?CvSEIoIZQQE z2r9$XOD$4UsdzS7~rudKF-~8%LVtj?{OXr4hXizLtBldTz?yyM{_jC)(1w0yJ|+3lk0X zjKt_CHiicak2j+^!J#vRKiBk7mtrXO>r1nnm0U{$k;xZ8O8kq+^mFMP3~LfqK{rlSOnF*aI__ ziIQn;9y~v$#-Ec6edn=X`uoOzwxH#z)34U-CdG4D8>~Q2@nyGRW-o-)ha`E^Ca2#H zD&FuFvN%5=-E8(tTMnebU$lQkWKk#-p-chz4Q3@d3hbhM9=k95rE59(7$KpCBQBZ> z&6}E>3_Q87i9)|->&qo%wX*PsiL%3WB^DF z>!sHLry;HoxP*o{1%uZ0`aF7hRxzUA6$}fmkeycXDW95&4X6i0q(fydW61!=8LP0N z_w${T?g2t^5}c{2l!BmanEPKkhxx!UULEy0od0X`3#zSe`Gkj`rC-l%+nZRjsr>kE zf+6{?60^F4AOa2Y2oH?bo)L=YQD5f2w*k@BGB8P{(drArB+`v?7n4lt;RDK{q0y- z_C-5k)tcL3V1D9THd<0xY!_+_4}a^2&32CqU^vKBMdTS*iAD;sjM82 zTwPo9HFO5Rpr0A|yJ{)W6SfCM&B^yTM)Vl5=^H1&PSoMvG4$oxo`|^C-x@uRaYe@4 zH;RIJU<=1EnGrNXwCe`zI&l`uU)2}vE_wvp!ftR{3rS9sf$x}^nUxMa({3hL`N={S zR|LQW&eO@|05`-JMbAE30NmX8AkCs5T6obMKvdYPqdqVEnU$4^IGiIbr{^ZnaYYLO z{q7JcFR*lAdckVhTjOp@%|wnyI?Q>^brTJ6>!nZUQIp`OT7&ok>n2K?FjVVu!=$DJU7vP2?4FSeR!yW=e59gI!!1vtn$ z>bh@I6LES*b z(mi@XWu=EZwv&$Y$ws4@m1FPyUcg1KeH@-#9LyATfXy-{|DfhJ3T2sA`p6qWjU(c7 z0Kr>(%0S8ZP7x-|Rz~*}CPaXlt#-Ln>Km)~_2a`}Fc-p5@-O{2Vg&Ykoq_a3AOJyg zV+f(gE?xSA!M(2t=nlqApP3P*bsgA6>A)O#a84HU3_w@kiEp?0wveIf)n)G)BX9(H zucPr!fD5D70nCKKk^zm_bp;>83w3Sre)x|Bso;;cx&DVJDN#YWX^6q7Umj01rF18CjFSKpH1| zpzZRP*W7}?b+PCO!f0c~YjgTj=(|ih-B`PwYdct01!$aD0(arzC!Xk1I&i)I)utc8 zpYBEK-pbptg(n&G8JZbW-M9nn0XTVHVAb&KkgA)EW0RMrQmbjT9I%mQEAU^1(I;Jq z(60da>o~D-a6#}1)dRS)_6q3t3+PG(QUe45zgH9Ef6ep`s?ega@~LDRP)bNEccXlO zY)h9jgD8xF(&U#H-=*-6qI|O9+H12_O1AmW0)>9H=jB+SF?9;zGl~ zMop?q&vtRI0t*HtSXK*^lS%Lu7gl^6MQctJ)|{hl<8>G8_AkK)lz~&s{VX6!%E<4Z z(3wmOad`%cMj(Jvbb)?JRmR-`W=H;W>4ZsDqj~?})e(~jakf#!;7eo3{?dV4RN>?U zr?8J9DC;)WS_a@&kJx``x>n=C0CQ|Xke~H4_L&O(7X%Jv(<^?WdOOi6>>cBT>b|w< z^wO<@b_FG2RBfG;fz4g0ik&+}N=63i@f{N3!(bUSR~C-6e_6sQjp`IO;LRPC#j9IB zcQ?(4zmW4xr>C_C9WqdOs$!u)ZhUgXu7B2b_;}~c+^@D4-iv8VTM@->wVK-ezh}^N ayCz*m73Ys~Q-G(P2CmK?Kh~Z>rTizv@AI($ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_2_0/00001.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..3a71fd4de3af763873a56f094a3b422220eb1285 GIT binary patch literal 13485 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00001.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_v1_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_v1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..06f5cd2006f68b39adcc41b08b2a540bf9801748 GIT binary patch literal 7444 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 ayCz*m73Ys~Q-G(P2CmK?Kh~Z>rTizv@AI($ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_v1_2_0/00001.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_v1_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_v1_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_1to2_v1_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_singlesig_wpkh_2to2_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..23c3a90cfe804ecf28d54f31790bca71fa5cbf78 GIT binary patch literal 18887 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

  • uHUqR~X|`rvCiJ zGR&oQR_fN6Irq)3k{q9qFljVqP2`EwJ5-MqhU+a@L6)BwdBW8a+erxMbNd{Cj;#&6 z5ftZMJ{}Txd8NJfqypH`mL&xFfL0U~6zqik;Xu2tBz3`($KGyBG7 z^KR+XES)V$YzoB<_8TLduEHK4T6XX4GaCozUU{TiLozXD}18xiEN5nCo2fl4ps6IFB1(iQ1==E3% z#cWS8JF?H?0i<$xve7PX7&M~OHR*izZ?%(Rvoz!5uk;a`T)->U2i}@SWOEn^a)M+`n~JPB zCZV6M>MW)rYB9Z&@Sy5AM&v?CJ0xH!kQI`*%}q_4>i+=t5eNj;<*^W>(MS`rCzXZg zmi023#;esT@eZ%ZS}fx-ihx4oQE9Z|-%seykEU(;R1!#;t-@E?Z0r|_)KuL|-0iyU zW1H9aaxaNeiQQ8Rz#d}V32nGIVNimRY#FYLq_?)-XLfD~xqH*GY=+0<(OUY`4b$m1 zqy34y&=vP3LwCGhry4Di7iP`PUZC|$PH2JunoMg=fT=m}ceTWIwIdJ+z0I#{K?CAj zp4Au(7`B8Rd)c!9YP+pzQiQqg125A3j*XOUeefm9jLP|;qO zizL1EUDi7vXTH1>EIZquLTb+ZPi6m$gDyioSNyLh2XF(217I1?V%^@<@!KX|bJ}Sy zwG6I8YRJYHD6^hroCQ^o!=56^0??AD?4607E~2;;t2|Kg78k*6Y39NTo4+5GO{N*9 zr$0W60paCr7>zbn`&fbx}p;_w{SmVHgl}lO6ApLtkF_K16BV{{T!t~El^sG zAA0=6xaDuglrLn*y}Cb8`<+T^G}gaQ|IpCf+8XEPBi~5?Z=fo^aN2XREjEWlHq+VY z9~rY9ZCY!;X zrHVXgPl(8ebd4$J=-l8DY^gLF!C3gi*roru0EjOoa??;Kd;TuOD|;wDuAxPe z7=-_jddLPSH*U&EJE!O7P~vtqa@FnzSz`Yn z0Jl)BQ#nLC*J*W-$QNE8&b7ZNbpMm4U|8K{4fno z3(mc@s3w2_Od$2K-BM3W?86l$B?w@R8c9|DHY|{D0`ighoZVn!YkQHvqp3gcX{FPZ z6gr8^Sn+OM*Gz+G+Db?ZsT(Dh%@}JK44~n~J#!*3ni#w` zM8doSHRwY& z4ZrmOyq>PBL0q7nGp++5UXT1n*=P?)R2U4F8Z>r@SCS1*ThPPj^EG$y9nM@F4%c}i z34~9z#h+VS-7l+|AMo$F;ckykv+`I7TxoZEXjoVgp_ZaNbAQ4)iK-xYMoZrRfQE@ zKWBVo>KJUSe99I-)UnD>;&j8Tup`&*%6w38@7vGZJrL-{H$7aeO%oZ z|7jf}DdG)iQNSl{zlTi=Yz-;NzY$8*)AojjhE@kB&snFuL~rP_JWQJHbA`*c$v4IO zcQYcs`Ag^MGPC0Qkpi_^4bCvkOjamABd@L^+s%tM{*2fqzP1W2n7RHkFzJ3M%XYwr zaQ-w{Lc{8BFOF^G*utipSx9(VMuvVLxTm&0DLy?tNV&#n(2?gFUKNl<5Z}_>F~t5# zooe4zcb{f+t&UiTQceN@*=H5AB$v7hJ^!epR*-ibj5dxXuG4pPc#(Zv@Eo}~Vd6%H zUYS+((qzf%>MYr5-2=BfNKZiS4I5CKR5vo8Twk>~HYM=ulrF;Qr~RO%R4O$&RJHX$ z9xnN}sQv2xL)KHe*4Hm_*OkdiTWt$p@Ef&efthK>9zkDr{*$fz{csxErK||7-){(= zCc^0byVWhrsYV?84)GMAqXY7a-?jNL2}uB#3L|yQ@X48Pqj6uyhg45> zxCmUDnUHW6^z}ogL$iJ*_y{@4|Kp-IDB^l=-iiZfcNJ(NoZRpS?z>T-oGrKE>Hwol zJ@^`#D-wz3{u$m6I$fU+BRgqctVO3W0GCFk04_B-6Y3KVqqQhb&z0Bv*4SMg0WCLP z0bZ(cnT&7T`(!bpVRqf)rAvbV(WqvX$q~HDZJv!dT_$KC?P<768PCUUnyQPgO07du zD25zB>8XAGqH9Jp;Z!J}-d$?&Pgop#N999-5)XDqT?nzWh_t!}NfFlJ0Lh1vmvW?$ znFlPf&8-RbHK5MHM?7=?q@mHf2dfK^ju{ovP8pO?2f*k_uL5vLU&Ho5uXj;oByt8o zxUN2R=RyGNG@5$Q>{Y3Yds&wZ+#ThaTo16cLUGNrENNnKmVIu~_!O_;0&(l#^;6St zJ)G1@{6}(BZJG0YYHy9etk5qHvOC-igzhXM#KA}%wrpY;uTBhDL8#t z?+OL8o=>L6?uC1XJu@?tmouQ!aH8!~^5=>;NO{!Wv~3LcPA-=VM5237f-~X+olZ|p zU!?y=3CM@OguC+5p$A7K(Yw(C>fJZHMwRM8Mgcd}NebxD^ep-;D?e3dFpMP}%Ac(; zbn$jAAy)RCx59eAidpJx+vQgJ^*!rewREPa4feKh^}npb`reQGpB2dW#^t}djXMb& Yjc|*dCH}$!TG}SQ$05gF9fjxo7j|Q{Y5)KL literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 zcmeHt`#;nF|F=+7q$I~Vg&bPWXG1C^;Vn%RBBziuV;HGWjv?n$2j}A$EvHdSVpthD zES4M=Hm9*+4%e&q_xcB}>xb`k-M+VvU*@*$_1x?5d_3-_$BTa~O}S49pI~8O;WoQ| z?G_8mk(Vqitgks)fp>JRI%-&06ok#L8Ql&qq)rjDs&5eEU49tavW9R9vc^A_bpEfG zhn%OMJd=>T&dGb_kYiQLXB4c-`e50IH1-jspJmY)2~K1^=%YbWU3plhrw=>ZSXh+# zV~<|uWn4Of+ecFy?L;}fDY2YYV?PVR z?d)=|{Bjl2E=HU^c9m((7v~~q{QYE7BF|-Km(+4E%L*H7zEDTv@lmnbY6U#4zv-3L zC*_+N(y6W_MoeYxw#4BaT&#D!Ch3Sqe-k+Itz2Skp|Diy?CkpWM=rdRNM&1sdcmLv zYNF7xf`iac>v$`N!C>AKsk51%R*jrpUhPMB-K`tQo4O_ap3dBF%Iv8)j|?y+sMm}x z1!zMW6hgE?zyX!sGm5MyuUb|Ryj!Z5cPG?T8@DM!MjEUqJAtG8(9Fg}D}p+6znE~9 zO9J`Lw~N$OiV4;ReFbkyBEQW*y=4CV@0Tvr%I%IZr91&dMdG_Rg+{zp{EFk$c7oSaUf(;I!Q~&buW-`NB=jJ`0^B)E1#aC5mbWObL5NLlRUG)JQ!Iy6Y5CFJt`6#cbFHU z`iFTyg|$!l1?hR8W-li9bzSkca}msUPz$YJ=Wpfa6n|Qw@hb-SM(K=2r+lhwYs|DI zKYS$Fvq)0YLhT)!H$k09rAHZ9iJlRE(fx!BcOs}SaQT(euNqL)J}Yx6<(S)NFK`9Y z5zpQ2CkY?@O`Jc{%I`El@WfRH6l!ce!U%t>%tcLlYC+h>7_RQs%bj37DTc=aOIZ-2 z5QsrBM+F-x4uc{~wcU%`n3zr{csT#VkOZwQw{PDkUQG*_nPuFhl78*OyB7;T&7e-( zt%(h=GW%b@tZ=Bat)aq*6Cqjd6C(o=%FuNoPVm5@ud@$Y(d_zYs3TvG2Wm0u2Q=F~ zv#pEA5F*ya9=k=TjVSou!4E;7BJ0TL6?$2UUuGxnNKY}+B|B@WPjQH>2?TcpDGsR6v=E>#5GB9 z_BYio-@PCf?~-3meOM4NlV%e3EpQXfB$vd93GKt$2bb|W4d^8XgOLoMaSgcfd}or| zPAbd2^==)%5|4pc#k1UosW(Q&$Icpmzbp=1p1IOL16Q40FfeD)QygCC4A~tSvthA? zaEPV_YTLYYT_oVfHc>ywbp0|981D3U^FPwGbZuQ_l4-4ot9YBFMEu`#M%g&K@qoSR zz3=~0YpBds@2z_G3ws*4W=c-rRHsz$pQ!C1K4TkHhVb8O_Pga==B2O-N`5PcQza8) zJ*qe&Baau)a0pMuv{%KtcM0@r?tP^jH!Y-Vp?<6VgWaW4(34zAv*F=i)h+Z2@_uXk zk#Y#?gCoVuBgo6#%V-+Hkn@QOdXbxSW`-G^?QWml7wmjfY^&$zNWI_;0eo+C^@Ur^iQh14A>Cd1wB{WJ^A z-hHiEnqM9CkU|I#U`6J-U`d#copQNEp|qC#{hORof|JN!@M77)TbV1XC?(Dt$0iV@ zu=c6*hz3aY9VGD74*O_Pw-j>|TOH1B*7|W^5l!X!foFOCmiFN~B4)|wk#xm?eDU$x zqa~ju9HBY+!p-lvPsZ5S*=8!320f5_mz!Na<%j;7luz|g?FK$d#mx`z1jHG@+UmxZ zg?wEQQKT-XhBPaVl4mwo_KbCF@gnH@Wx`_fl%IfCcYjlIrja%$_(O)Y8DX=<{W{@Q zJ@ug!@|z^CNx;K4zZ~TQ-+si--`1&sx_utyJ_O8zd!9&fu{LuxD)j;Q5;+?5$#3nOVKkYDX8C&xi zr5N+nUc&G3U;p=n@i}Tw4Bpzh2smVxhPNW+}Pm&Rt_A7;kiXB$NtwfgT0~9ytBjV7V~LM;4(p@)6G`S75rC+F1Q^b_Pks! z-3ZH&W_xF9&Bt!!=`!FAA5%hFP>vbhbs&q)$XY1fbwNBoSN za*#%@41K3{&~`e0^+$P@@Y{J1Oswak+*b+1ze3xm>c?t2XWuidgT0-}>ECl6vN1`? z4;&iq(6Ve2nocTrj9{VhtE;R3R-%Q<6AA4@7mmsaru*PFM!a`@JscvIwt#Fjmm#Ff zJ17c7t`{Nj^)(SOij`(Z3U}i&4d_`KRgAm`x%(gO%V;;Y_rstviEknJ2HJGx@P zruCz-qF;(#LA_+!PDH1Zq5#cCx=_4z;v#Jjaoc$!WyR7FE7rLm?3VWMa0Nlq>s4=$ z%j82aNt6eHU2Wsl`KyYa>}Z3qbXK`@KI{VV>KF7ISP z`D$f4iV3?mbh0)*SRFggBvbw_4D(UG^IEUPf3Q(Wfsx`vGH@Jg5q;v7e?w`Gu;^Cu zByX7zrc`L?#1+X8g_`yBJJ_Vnj&nJO?P>{Zn`Q@OnC%CZF-#oCfSTO;QPGg1!*vyP z?Y*>_8yge~bft5~>77@y72b62?B+M-bT)d-fh_J651F#ubj_I%ZecaggaQ|w8Y%ByUuV9p1%-W^D@ zavV!~Bql3QL0Qt?xgEU3xuxMZ{ZuAH<$?|C`0&l1eJmbGWv-a;2H$*-PA7lO0-(8p zjCs!|;n#y&-Ru{@9*$$i){oFcpqBY&$>!T^(^N@w{OhLpd5V>NcHRk`A3C^xQ%`sG zDySIaSrn3sx^mWzt;iw!k_o6c2vvGp=H}6Uzk`?cJMQ*h0v}n*Eo7~oDH!}RpwIb4 z+Dv-W{RO4nK;YG1al(5mh#9N%xTbpYktQtjTQV=kw<`dZD{h;&RH}*u-J<5Orx%Ut zj8GkYr@#BK;tJ2@cYB9{|InOO=IEk21Bq{y+pDHdC|b$OC;kqH7_=PmdE6@hnbrZu zeQ78$W;b$Pup8TgwQKAsqCevm--vQpULXfZC`XY7h=*mPQ4`8h9;Kc7F#9NXb4g{oYe+68Dt0`qswAwtQ8%tz7uOdlM#{A`sUiw z;avHQEj@K3uX&D6Io7zsa$%mj?Gb;#%#N&`0|Qwk=5RWC=n|MzC#qt`+sfv*R|g$> z$=0dD;l~|`6dd|PogLIs`g74moVm?7aFA>{8O*r8eZY*SNSkdy@H7ZcHTeEL&vg%R zS9;*48^j~@ zDnCRX8{1j-)W$yp*@a@QPQptCVbs^OBV6a@vK=Dle^y5t@sC>jc+c1O{Z+vBz`BaFVAmink~W) z)uukqO$+bbE7sP9>`BQq_lkDyh}qZB7Pifzy_}DH`$Moiek2NDjQ_{>)$3aX^}9~k zipt8>)w52txEvJes@eiId_w|>@gJ;lVNw{8a5mTca{9^4>6dTcF1?;V(--b}p>(n# z_K%z4TALN9mn!=s2JO^5({cQFot#27{|NHH)rl^PA4P-)M(e>3UE3f0W@0*&e(d?i zFl|KwKUC(%cJBhMVuP*)zfG@6qTOp25BKR(-we?HS~EvI0`MvhI$Dd+?)y3R?So^i zCzU+9-hPowe9%7CPimhUIu3@%eYWCTaY;<9X1#NKJ@vQtdtz%j<~>JAqHs2OAI|du zaXVM*sj2k{yrxh8hy}O0H zmVkisZfUv~=j(1?Z+nrJr2i$NbEV*}<5+SPjZK0!p?xyGf1X=ddYB=3ZysGVep9$q&th+r-k@CA>I=4+HTEp9pL?QvKBFdnk zgoVIcAP>>MZb9r;}1n5>0hIUEhy#(KHZLQ1SCo{X~bc{s*LY0Cm{0i954lB5X5woUnYs1VPk40+=^QUr~y zi^*flqhe#r5wXk;ix_mghHLPi2m6nhf#R`g`?w+{suTeusNSUNe`<@qwh*_7StYjD zA}UMp z3J(07Ev7(SpxCXFc4k{&4qfa5W&hDl8K3ZqS8U@u-$wK@q!$azt1f6~ftj3(d*4^? z=@JY^>syYun;@O77|L8s*pMmf@`{Q2#eOF&N^3v2JHJ^cT4xgZrFwa?*=Mt5Y_f!* zkv=|PIWeKi%N|P@no>_`J@I4g%y&>D!tuyt=D7^ecI00{?du4Ma^*_4Ur zLGj_8PJ==Et^|=xO^!c5l(P|gVNQhggP$!IBgb<^HZ!Hu{k{RR0D%BxOYiz+|6}c3 z2xg-`sjZ&Kah24wq0B{W^|GpKm}h?EUx!VPhF+4Xs`f?`0XJr%H6%V=m+q`9b%)3MMTX@)$6nvfYQAE<%$5 zpUbI1Tt~`oP30!GcT_F44cIbH1!AQNYnwIXH}NgXC{(IpJV70BBCk|eR|Bw|~EiulmGNapaG(RS%obu-@JyCd)jy-^!xDt>%3H?dn7XRyt2O3X$wKjIMp;ph!O z3+RZ}EbjvS;|^V&DQp8sx=<*z==gSrtoJ0Y{krpnwQBSe{Pd<^n$4$1%45Ml1%C8N zQ*SM!(*O+*4#|s`CP%kT5XAAtuB2N^k&<}LhCZ+E+!VX)c>u9Nr#v2){M-~YaklvN z)0221XYcdWy__=P7N>?gHBd4ORot7z7<8k;C;I;jz5UWb>5Y#_x$H z=Jf>Xe$H>?pV-WOQM?jQcz;QMx6tXUWyKrqR20~pFyiGXtYgZ2$q8U<69kU}qYV8S z<1ocFS+gKOq4dtK=|3z_{T4=isWUto98wPI4a_fJu-2qM{fD2j=qCbyI?ecyGVT;> zpDknd!2dHng`K9kKUKVop9ZEZ&8S2!ambb3 zej)acR9K{wbDYb#6B}FXmcF0VsfKP$inc4^tR3$6t2HJ2Y|%7RrWOkEH0dXlgt_kN z_n}1HbTMIc!U5RM0P*aY3xSB?$-$n_rOf~mX*rLzN2#2tTfzL1?<DouH&zoIq8R{o+&8T0iB|+i?bVndZpAF z_1jjNW*OS=((;nPwX4h~B)!|3FRyKB?MmK@ToXomCKWU`zRIv5fYMB5IozctPi9H? zCA6Hw9BkD7R9tAf*G2if)U7jeT}@US<#TvjjzdpWOdw7?C6 zLM;of*YR7bp^gRoitR$tXkuU5d%}iH))RFL3&gclI>0H|h^74=lNCgbChUyF8!s(K zftYL7>QSjuTcch|WOcUI4w{Pxq#RY|9QqD^7FPAmzmNScbF}a~ zK|O0Xb&itUsx2gasNrjcx}AupJP zc@wfTg6wW|`m5Ps$Iw|e0o)vRM#>)3NkmaTwsy$MqY87wqRRr`Oap}R2G#u8t)sb) zj`?*Bt#_;aVHGEOOI?HL4$~8O|5{RVcSK$jc)sxb9@e2**iSPezO7!*$}%BR3?9?8 zFcA#*wC3xaGpQlH=#CIFyI67d+hdIG^Sw`a%#`VcaeIrGJPE;{pHTwR>Nv<77YZM0 zy4zZB<1fEsCbgu|VzVbn8 zhKQY<4dP1^XKjv3=vgMV3CzKY+p&#shR?15p142v?|h#5e=Ir2p1lww+MA&3Bn6Pc9j#QGCp%| z?r#iM&%E%D19pdx;f(+I<>r)<+2n>Vg7!#H&@eu?e3dyXl~uTVq>z{Oe-A>GVM~M0 z{<8TVU-lUCd||YV#VJkrzi)bEZyD}n&DWrKjO8bzfea4>b+rky1c+BW`+q#QQae_; z+*VzECxi$%iFBAwu3%CsY6tMSa z6Hx?m+P)ztHehI>GoB3xlBAyiY2QcQyQ<4zrq4#-vvBtHc!KAw)lQ`*J{8h8%fMuW zc^K)%KO;zJ|Fek9c`)~PogxuG=O$qGqn@1Z!{W~jxu2E$Mf(|K-fS~g_pPL2u3{+ zBIf_sI@XW`JfXZKHPNbuiG=!2&71yd5}a<_#4IVbx$Rb^rfFTR!o1qs%ZfQkoux&F zw_Sg*=$^6b++|%3YRwI3>{`;huS__OMf!ggn$;~+Eg^O-B{|4Ya27V7fMBfqy`fg9 z%Gp2kkoqwn@+L8^uW3NuEx+8OqDX~d`h(aVAAG^5et7((h8OqivneZ#(a?Ro;bBO$ z`{A_$j1E1am<))3co!&?t+W11nok?6PQ^J`%kOE{LFqdplj861krH|WAC+7M67X*% zYKZOxHmtrxMGY|=v0U(o&lms|DP2%_6|wiTq#)0FP#i0?et8&n_u}*o&g=( z8VPRn9H+uE1Td?;fuMs%K+M;AnlUD;tAU}4>i*J<+vRg_m$q9Cy*g9!D9pX)C>B;9 zVI62XBBYB%94s3ipMw_{cHPXUYzGdWxdqKqn_CP~jVn}VnC60nKC~Tjwr5q#ozQXD z+`rTd5W8hx=ce*U>_47_cMQ0dPceX-+JZo}o8#hqffxc!+>a({4X)4T)Bf?iUbUMi z+?%Gd|A~s-SocIy7)(G5->suWlj%Aiq70%}tnT_FfcC>tOm1no?QGDdu_^Q?!9CjC z!k^9MNA;q4s6h$!l&z|rr))e>7HP{?a|2 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..be3f449b3123c7043576d20bfcb60c51da0ddfe2 GIT binary patch literal 14717 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_2_0/00001.png b/tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..836808a6ee981907818dfa26fbec29b6c9965801 GIT binary patch literal 7490 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_2_0/00002.png b/tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_2_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_tr_script_pk_sighash_all_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 Ty9Mx94?YVsn`@0%Js$lBgJcpX literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..ea5fb3d81ef6a6c7b140ddf0bd116b1ba9e4c312 GIT binary patch literal 15835 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_2_0/00001.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..42106b4bb0cba3321e9ec6328f63f89c59096fe8 GIT binary patch literal 19251 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_3_0/00001.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_4_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7c1a7e9e2b19971e8a07e3c3fbac99f7b8b3da1e GIT binary patch literal 15537 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_5_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_5_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..6ee137310397da1119874d54b6dfeb9b35bc1a13 GIT binary patch literal 16758 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 Lv)dInoge)-pTaY$ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_5_0/00001.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_5_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_6_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_6_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..418e6ef8ab676e3dd4350b85e94a16ff52b4b9d8 GIT binary patch literal 14741 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 RV7n#A!qnOXb;UdBe*nRDz@PvC literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_6_0/00001.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_6_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..eea1e44ab069d5f2f3a50576088b34b908a15541 GIT binary patch literal 7645 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 kVb>Q(_#f*vHSzSY2b$|H30Jo+nbpQYW literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_7_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_0_7_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 Ty9Mx94?YVsn`@0%Js$lBgJcpX literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..28e9f1f67b2300fe6a029661d5801617674cb038 GIT binary patch literal 15835 zcmd_RXH-+&+dddX0i}v4hyg^3R6%;@K|}-u1Pl;5(hOC44G0Q6f`T9f2u-OHLN6h7 zK}88gS|TMxr4vF60jbX6H~$YapWaz(-u13o^FLp*a&ofI-skLn-`9Oz*M9lXM4$Bn z?*$MD#A!*Wz^qwv(mh%e8kHZ?&uH!_v$q;+4``X$6?M@u|VGXPx5QN*9 zf)2+EXP!R)bYa{eTXzlSzSBgoJy-nQOcZK0Ov4v5{jv@Mf$$`laT(iwNi7h1Wx;1v<<~PSSZa{oN*uiSPvJhj(I|?_qRpS` z21U44=rDkK2WOUV!7e8_dxX2T5e-fFQuV3SG8p>6g|rlGzc)Aqu7@E}z!AWr0Z#!r ztdWD%N?~e*d8J%qjV=1R*iO=YFj$9KSZ~s1j40fLq?-KyGYuK zHRX#;Kiw9+dq=wi*st`}DRgTqZiyw;OO1(c4n0nJL>k!6x2r*uZEigr($WXjD0rMV zYO}*KzNIT*MaQNK-^PWSaT%DXPBno3{Kn9N{J4vMtFZOf!g!IxbfgZ!+A9*a=Z@pm zVPO%?6D-~3Ir6n7w{~SyOG>D7;u>q!Q9~g+u6n^wA5BV%PgEdx$*@VD1;YPBT=EIGn2rP^nG zF6pK11Z9~Cw@-yWHZ2r-MzAfh)h$?>rdU4zXH3F?Q<8ZnFfi=6#P7FFxtEnjX>Oaw z;Jwb*b1m?jyRQPzZptNR)IPBJa&r;O3c(&b>TB~Wn>ZY1J{M~*{PUp!{S~ZrH6P|7z@r@{n z{dVf-(ju{>jg5^7N1U`UC{@b3XH>b%Rwj4E>M$6Qi$YCNLfTK*|Cx>xkrKCV5@@P+ z9*_32G~=qANNPOu9rlsal2rLXBy~#1{T?ul{lVnvdAjS?)h|l@J^(XG?fCK>6;soU1G=YyNZ4BBTq~LfT|{3$|c4jskPHg$?KYC*3W9-Xh; zz``ll>7T{Avq|+0D$nRKITh86t(2HX&^Ga<{q)q7*Fc9=mR&OF=eaz7QXpgC773uvj1WhhjUSP9qppXaWyNWmup zHzVblyCtPBTbr-{TO?+Xew}G(DR9YY8~McSuN&*wzO(IV7|yxW=svy=ISiz}ErWpr z1?nGx+#4TVLvU4$D!iWi6QvbeF#W$mCsl*AvB!JKjB6pB|11z1+()Dg(kUTc#w9Rh zk=VeBzL_x9XL$LkightA3W&2AX9xA_MZJdXC7!Eo4Z2@Cs{`)qYN}xS!;yRz!DZef zn=uZoyJ|9ZKd%h7w0U@}#dPLs3rfQH_3211^ww6B%U~tvNdxFIn6Q82f^Gj@J+l(n zlyaM(YdwCZS2hFIkNVag^bHolh-kj=1cN_3xz^`zPjG{Vi2get$5j#6hZ!qSAyg`9zimz?{Mis5eBM8C;Yd$LBlpBtVX}@ z%^935d+A+>>(=;HESCNzY3_$q!~Ku_d2tz^OAg#kjLFX}s!7nR!heI&XP$9qYuA=6 zOt0n($Al_%BsxFId_LdB&a7{)yN3SP;BJa9*T$NS2u|0D&QBr6$v`5lJrjLrdiG3a&nn zCqLx||1*&Rs7OY3Z8bY`R6!aS@I_t&C%59(I!zfUSl1y7+QE?gseNUzkhc7ghxgMz z`5*q$9cAx?A%T~k;G8aOae$`}d(zB_nCar=Io6wQ#7)?xx~4f4n-8H-hOOy_gg~#` zCD6e&qlwAyyHb>78D?33PtZ)KN%`1@82A0hh82Ccvm0Fpqe-MSq9UkK`taX*E8c8w zN(!wePyLyA*!gq+z4+`)-f$3sdr3otMHhbkz{28byD7Tbiwb{i#wB7fy7z;&lC1e~ zOu-GhiVFrpOXx=vW&i$5`pU}hT*^W6D)}bb@>lopQh{`AiM^W_{V=wXS8rt*kyJ0~ zjVuH}AJ-)=M=Fl&P_$3~G)$cVdrhH0>_;exU(sETH3awuBbpr1;b2?yGCH;lW?2a# z*_J8i4!Spl<1%ihI6x*mn<9>PKXrKzNdS+Rf>F!$<9R(7_D8arA8&}}os901NxJhl zx2)oU4l1#gMbGT6nJWUdXuqZ;uREt=k}jMwhe8FxhL@<(U6>>Zne6S1k>sN5s7(fW z%k%2_CO7k~JVb_EEzcJsag>m;i^XD|!^;sJNV?E2l82plq7*Jj4T{KdByNN@>>jMy ziJFA>FE3*J!MQ7c$0b0+2O_a<1<~+8tV503z^|v-{&jo}a)2o^+y}iGjAa${X zKR|DG=Xs;2WCqum@XD`pxO=mrerJ@w;!pVH^_&06A@F;Ms7(!_Z*J=~bMX#uUYl%@ z&kss+CbMxk_8k2c8a5W94yEt&_iio+QY4Tr2i*biN(!#e$+QUl>(>zWCr(@jC$A?uFX{%nVYL zKqG4*Z_M^-|gV#*n2vHbp#Uk9gk> z;noHN-i!xS_9tsJY0mApN~c3jia4XrcYde-$Lx6~;J(GcmRniL*!vXyAp06C*md^a z+Kz6EG7WgprPQpCxF}yIP1pQhOX=Z}He!SWap!YL13z*W`zSy1Be;&5V_96Tfm=@M z?!g@ubk`TWo%FbGquKU@9m|dOOXFw2FN+T=wqCE@lz1Qcqtc~zE0dmbLX z{o!R9%rz}xr@4k4@l|o~qD6s!&`-r^A1As$@Mu#2!_?^icb1fYZG%>~Td4}hh42cU zF@^0#XKLwc0}D&HBQpbjKk61vjw!ATRsbi4pJqw6SJ-j}hMzU(Dqlb#&=^oR7c+yU zJwb=#{>Q|DGqObUSdl8L(}>4;Hn#D$s)DfvWTM+H((~s}zkD-NrDys|P_&!zdz8e> zpDWMlcsweUqzv9F7|*F_6%MBawp5enww|!P5jG$tBN^H32(;)f_Fh?BeUX@OYV&ke zi3i77<1uimzWjEP*px4Z5-P>5=Pcp^1T_3{>~p&8$7$UFlyi&#zy_CIuzlh1(ynBg z2sG|GQ}4r`9y8tuPbWc`+h-sSA09g(9(Dp3ix#-$T#ez?J#dCV0z^Kt6rZ;9B&~b& z;N6jOii-gv#Obo0Abob$#p%+_i}Z{-*VBU3@~6gN$S=sDtuSDTg=z4!G49`84b|ZQ zvoUs@g+d@^Ty9WLPF65WcTjSpvq7dY01Vzd&Qi@*;5Ya@c%*@=4-tqjXRr(}z?54M zg1PkYK_yy06kcb%3X(1olPeeK^DkI(XJR{TfXavvO@>~4+f`K-`Z6J;!OUsA>I zkF2*xj*Hs%djz2o56k?C_Ge^caBAJJe35Qw`7eNZs@n`=jjr_=`-8mq0J zm&Q$=7$(O81ti(ljLZDls`pO;6`p4+i|kSrHz1IvX$rcg#3%Cp$XtalS?HjJeJ%XW z5_TS4{ph>r-D_Gr&t3wMwrYoFk5w-m)-{<+0^+(4pcHD-3*GLTzGWYL$aV(f8xJZ5sW#)KnxE|| zOSej(QmfHxndOxzuD&|g7l@t`9aKXIe&}5}L&(zyQb*Xwc&@kT0W81?r+c`FYAA%_^K0?acS=Cje*Nm+6Biy0SVcH4h4D_-@ zVBPWlKvKV-R`sIBW1Z)fjD@7PrgSPAs1aid2I*ffxinr|vY;ndsV*)rJ`UOqVz-fA z$Q`_Q^5#Q6@W5WWOFA2boV^z_qD0{-T}Ts4+SbV8&y5fWNEgm0au@La5M=4q7@kwX zuZ#yvD|15k1606`fe44Q57J#{oIs+;h8K$QP>GySC*^O@%3Sg&uo#vs&M<@ce~WPa zH zyHfY-2rjBUWU?Aak!^Nb9&rZ2ovStQ08g8i57u z57sw(L}TJ|CUfl?V8Uf@_`#Vh03JF}gI zD?N7bqU!%!bT=1&9vB1aBQrv^@`d>&gVn+dE~5p5*L668`0Me_5=ljx$-4@Qe2q?$ ztpDn8+%*#x0!TuD-fBgdqPgK@j1C8|Cii(a0pj86L5MN9uRbn<*!)((zrW|}q@?;C z<*+5u*F_)vI)m-W_m*dBjmI+FDtdtgkk~hDfm;zx#2i(%RgCRN;fXgD*N2E^h*GKN zzKFRk>r;LWhU~xho!)j>l+3j}!&IEwO30}+d~zjXdf;&_L`30l<$v-b1#10yMX(9i z8E0LvqHl-Z7Bp6ggp1{x(|j@-4nuf3u1}o?{^P78Vxn>QvB^ zd@)0Q)5*#&e7|+#;tAv?dC_^M@tOg?_vK#TJ~%a)eatG)Aic!Cj;|xnx0NNue)8%A zIm1ZRVD565r#;4aY@GKVqJbKQkDa!N-u)1nqs)k32=ISJ+Z+hzu_llw{6|&;ume2S zt+LKM%~_woMn#`Wx*n{rO?r}zSkCsQ@>Ky@OtrA$}-EDz`t5e z7XexpIN!!Ik#lYiG3I=qJkgtuY|3+Yg3g67Am*H!<-B&x_T+&0;&>|yxA6F+!0trO z6hsxvcrIi-hFb{eaFEGL-nSSFU(DraK!k5LEpaBiXLIs79$U%SlQpH6HwQ5J(vtRH zO}4n}KtF7ThJG86>YK`8{I-ki?*;$@5kMD}JHBwQiTdfZRrdm=eERH5gq+n8PCYYH zf2(qw(8xf;qs1@)N6pDEO9;Jk7}8=-wpz>#62JXzX_3F~LTamLJuvt(ScD3gE%CX- zRxKMn)>YV3(RflCty#|lD<%Z4JFy8MXUh40#6Haser|I<33b17EwS=$%F zUX`lx9(a&d%S~0CRor1k$$yq44d3)*rUspDl(wY?>=+qRN{@u|# zR1n8!%_{(xzP@NW*ga=jK8fw!SsFiRCO-D@4WT}e?UU=R<2!qh*~B;~G||yd@f+On z_e*-`)<)cg2otYSmb#>k@hP$~R^V$Nljx0OJ5@uJR7{{Idz&c&puMvIZZBq)T&`)) z?F~9f+VLs!*C*oIv9`L7xgSo>C>YCE>qkN$5m;2s-_-{0Y^%!52Ns@f6uKR;+cFfg zgs?$Tpn{blWAha6Zxy`7eHs3yztaSV>B#_R#QQ0d$%?2sB(v$w0e1c0PS*7w7Y)*P ze9m_4TuFGZ8V^u#7yL*Wr3t{RQYgN8%VWAb`FX358m7RmcnVfH61_C88dKk%stB^HSV`C%htSL&)0 z^Mf6}bsa?dYCSE2gO_i*R|x*`V`77zOs|c|Q(0{`I zqx*;5sHwT=;Uk0n_fW$!HD3|H;rgQb5p*;IWwc2C{?rcYF-$K~HWpnRf# z@_6=~POU@DLaJDjS{oKQ@cSPpu6H|uk|T}6KSJ>a1PQ>h!UDyzk7G zhvmp2l9F2%9(Ghk@H!R|*apYRvIOG+N{u*FBqFYQ2Fz-Ghn-KlkSylca=XaUQF`{M zeM3pN!C~gx!BwWbiMRfg^9@qvVW=>-q#`j~{n(1|FSq7ovax*4R-HaEm%g$l$(R53 z+%5YY7aCuTW$xo?pz8AnxKp6U2(PM@Po4L}CY8W`V36*aeeHw+w3xI{lMVboN7M8; zgp}iba($1oo;WzL*uM%7{7AaCes7>o3J37RMaxnuKy-0>w1s**BUG9=lU#VRdtTqZ zT$$05^tNhe&-H8kw2Av!F1?X(HEe1Zbszn5w|1q!MA!2?PC}0y6HFssQpPQ{4%D=- zIATgB)_mkb-AD(9cxxd`h+@efC*K!|S(O8-A?pW3Ukt$U9d=+f8l;viK34)DGjsLu zur2VJ|3osh{rCe}DUwl^Y^k#c(y827K8{uvnmK+d6540hK#iRc{1e?}+t)hbvk}s! zxpr^aDIPsh-VPTa^>%zWp>$po8n`w%MQUxM?FKtHwSKkjP}taO3kPG`R&0s^mb#7D z`0Y!(4yr@wfsPUBo@{8xj0!AzdT*y1n8QlEEaB^!s(rsSw~1|GKV_#>M@A}w{{UG4 zfYeQdg{0@$f<@z=2vbL7+33uZ6!H%Nd`VnE!6fB8@-@<(To&A7-R13^+L`Zj%+a** zySaaY9fNARk-}nsqc*yA{Z`Un-hcy_f>F0yG?+1C<%0p8OWvsmDx zZTT zVfwv9z1Hzt1XaVOyJ|~b{CoMm*||@?`a3o4sqaqRiKUG-*-HC^)uUq%4{E+41URiN zV~B}*JfX*>ehsM(LmtUi{X~iJXw)a%8L!jv8cBcp^>q1Ayn(-Wv^xLWv?RljUS9wU zetkZ@tm4t7D;J~!FXRs=^7=o`t^CR3jqN_z-^UVt^Tj#(wz``DZfcsMWRNawP%+PTF})kMyQ9?{a8?DcKpDp<)vvu#mR+}PUEG^dr4vb)CSt7&|Xz}`B(*2ICZY&*qb)Ia~|WG z>lY0t$Q=nev{xi*)Q(dEutB2v?Xa-f(x$M7A_|Te8c-Kadn@Jpg`iNLO*S2W;xqmj z_t(!*Lbj7?LuGK&0HZ~VAnrFShrjz#v{AA9&QRs(=MPGVd*e5G?DOklICE_vCYbBy z!Bw}&E3sU9Y5SY#n8bba`{7$fjl+*1!5aJ`pM~+$!{?Bn%Ng;$m}`HUw*X{p@x|Y} z^HA7$ObQ3&#f)}fL27^5=1bbXRCI5c~cA0hsyY#Vlx4Q0BwOwkOelp1b2| zQ+}T56v-H6W8KdjVTk?N4Jq7IxNAYlIsuic6nGxjE_-w0w)mf~iQ9MI|Kb*HloRty z3MH@(VqkksOuiUfgKp~n%wGScaM0WJY?YM3y()><8h!HV^M<8IMAf!>so><#{_R9x zK5avHv-XXE2lfOteXRLyUv%R9OEWb$>AIm{&}mWie)}YQ=+4%D6u&tr=1+T7VwB!D~HfI#Z5vis@E1w5rMD;zhnvk`WN^zC3>9MS@HmSsL9g3NP0Z}Nk#W)?QlIX&xk;g z$2dr2yo;&uZTcl5rB4!RNb#v|$B8k>D-j(w+6;J%<+bXJp@TBj!jZ<8lB=ci7ylO{@IH}@D1 zvmVqr>)x4-y|I<~g8HVp!Qxu@l@%-aLVc%GaQm}ijcjmWWAjl<-IPZf)(M_Cm_gs& zaafX#R~_4x8o*KDy&7$8F<%()y$e@)tWz$kcPYm39+pjF4FsBpcNPB{>@{{$WRuU) zSNdglQp6N2(e{V3wb3WG&wv8IRUTc`Ifq_$z2{5*)nkh8r`VK6X^rdcH!h*6%;-d%yl}1B+o28(IODHgjn!*rb~RS| z7R1reC8-H^T%F;f6~1Y>T+N{=NAKm_)}Q0!W7_EfV8{8m#_-(thre5Q?yK;pt{=+o z{9EVCKl;}OA{+=mYe6rFkXBwne`1$Bi}Ly*Y3(R7)VW4-n-;;?nj4yc};})jcrNgY9U~5ntB) zfqHXCub{*Fp*NiPRO*>Lbj1mV=p(1n>tqH$?6A58^PQmf_a$8%|4)!*8EBEgf?Q-W0*xFx_ z@PI!w4Lz1lH(zLZ`N>~u@RC0`(U~W~8Qd3M07PE}<3UoOJONn-t+FK3Y}!;LD7A!d zQU4@fVcbcTWjQp7++#1BvkeU2NvxJKf@>LgjJVHO=i|vVbNHF(KO;Jt{Z>AZ52CdE zlyWCL7nTuFNan;?i{ICgwnOpWtUm5mwScrncm}|IYQDMBn&Vp09RRk@cZ6z|C*M-r zjPA-ZJs1Lqzu!Lwu=Yj(tF= z^}yNVD*gjC{o~#d8f?b;&K<|U>hmE-9_*k@w@IKKqObX$!f+A_1#ZCC@SprNo+S3N zI`TWRVEOK(mbO+8UZZz!u+v6&IuGQR3m{7ee+_sNk7fFPuOui{=DFi~dJ7DJIuz$% z{&B^weYgD}0-tkft37`tDyLZ8@a{Lr}7xE>FU` zi&OtPzk>+4Q$xGp(fPsNQ8VJT04OZ!oRKwLyJV4KCO_og;qZ5#x-?v;fllCi`I;o`WXq^T<$ici1Wn;ieXU99`3e z$#>TPp&98LV=$p@`L_Ty?5P#z=K8u|fepWas?tcn;JL>i`*3S}k@BecnRUsS+@^y> zb{@GxewW>h5kM`=bTQ+fo?>IJid9D<)HENwp@dYLPJG`FxsqFIY>c3WX@tyfYt6&r zf$HQ>r~q@p2-g#D;KC^9KQ zTe^O14M!E6-x}N&5>E78a&jLVw5y8!Tld5?lx&_Bd|hjTZ}->hEcY};7TwC`Ctnhq z`ctm4#Mlsx53kg~XLl!t1|(kMn=_i|`0_tbwFTVo>i^|Jo3I!doLHAtJOIgddDb+k zS_JL^)kPxwF5laTkkH(w&z+TZ!?%W08~Be^Aw7kEo6l>s8@7BWsv4a`Xa(wCn5Eb% z7j~?w&YSp?_w177EeAqpTl`o7&2PR;);_*dsHNk#?k+;HR>Se(wQP$y_*DS4i^|nD zENs?+StV1xpv4)VVZBEOWFkLGyv!}O&g`#ERKzb6ea=sw(wk68%(`` zF2oaw2I<}yTX2W2o0(TBT%(Fmt#Rgi z?#eiBo~@9sGT3~Tk14G*?~WsXKasf5+(2cARP_KzPdxi7P&4?vyGYUnY7NjP^1c&V4~X`9!ygbaC%rcX+a;VOZ(( zp8U*2AjpfY;PLJ#Pc;7ZHReAYg(pZE>!c#4-dZUmO7#Bb7vzWwU137^_P4FDM*e8d zzOCNntIAh4V?S^nd}_URuUg`k0`LtmF~LH0rt}f-{1~#Xe2ArV&VAucqz5GOMOEMCxk!Cv45{{{^o2hwmaU;T;ZF2*;ckx@zQgr&pa$SOVYdn7g`#W|> z58JxcCHgS#jmj5Bvh+CrOENT_pP!k~YzMnG;VwOq+zii(41YMk-(v=41AYyFRzHa5 zs(A2Ca&ZChM;#ROmH4%oq?c@b+Xa~D&uy{n1K!Acq-%gq+|9VcVcqS4RIN?vE7nl7 zo819eaK)E#*S~ZB!^g%*rd)S}8uEO@$*JE2RNdfg!Pp6f!H5og)+d&zUZ;PY=n6eQ zO1#gsTs?J}N&4L6Jm?pPC)(#;sbT0W>^H0|kAQs>P%}Ig{-U?Z(y=ig&0~YL3Pq~w zr2t?Cq`W9cUwc9uaR{tsY#|-El53AXkEGYO1HtW|aGWKOX%+S9r58I zSYFT5{OnM(vIlDKYv$hcN*@yMSqC#3T*lAUNL0zYxCe;r?e(h+}Mi3!R7gb&~)Kx3cl5@cG5dxrjy?3 z9w1D5)W2~4@X-}={99$c@-kZuyA4e7_c5t`at#%o$EmTgT(Q+@C3m7;OOW$s?+GlLp}LaF3RSV|XVd-s>kt zr6)>spy4%?Hw3=-8>ngqf0rXJbU#Yo4H~W=IKsCc1GLSaabK&V+VZM`-{8n0cX}#or1CeAnlu0p}h}dtA>XxPhv3ld6>O^keR-TF!gy zr1wCdEPy!VhtP{CN=RfIamx6S8J7=c8jzjVq?15phrFS^_5vN5GR77Sk4sYpkGpZ6 z#$zfH__TaWIP!3^#5j7clQk<@E6$87-idX=#wMK z|Br&n|9;N!|34Yyk2Z+Ro0WOPOJy*AHbfbWCqc%#AO>)m_RZa9itGKgx$gEcj|r^` z7~Bc8-j6-955{)R;an(uHLl8v%*6NUTV#pL#?Kbi7Y8^ugGQJEvK8vBWCgtegqbDy&3Zh;sszTG-1I zGiM%m=NcIE-t6|Wt^z_d)(-iMZWu!;ev zbY-iR;mxAg>-0CLRja2q_5f1{8>1wn+fAfo6VW#YYWpkkoo%l=V7wUYHRJkxx(9$K zA)sf6Rp#|$xu>UMF^v`7Bdc(Y;A&S{<yFdfb$HPXo?KvrT8o!#8d@ z2>p5Q8gi>^BdkpyHJ+5gPosdIbVs;QJReB{MEQHoyjlPEJVI&p*ZjPJS;_a~ji0 zbHOVi``abeuF=(sirAS&9((g{UQL{w_{ROAl-NM4^W-}()k=FC^0p9;gO zZe}C*oI2i)3#oOjYQ#)^7ORS3^|tVP`xez8Clb%Lm%(>RkE?*^D?OG*!;f{QaeTNr zr43g;VA$r8d3=zby-Ji}zc?zewlf0CrDtAol@Q+JU-v*OsPNl1rMJNC($aR0YfkCo z+5OB^N!l+abf~A}jf@-J%fCmTzy~MHqvX{g)&*)e^@kVUc0_v|D5I`|A^C?%W`K4zB-Rn`^L6r;i=r_=6#&!G)}dbN?Fk8=ezupNn7M>i zY@LzdIZ{plhBTRpykR^xxAj9|5YTx{*bUOHt?mbvPN@SiLM4T?ZJk1T&557>dg3jRC}8#6 z2hKD9YeN%4pa7K%>bmS>&HsjRq&-sn*0%tz=~i040_gg!hKc;S+?Q8 z0t$QeUjz96ft*X@54N|0(10L3hAeaL>lpbv+W{)9JhfWRoM^E0s-zT)@oFy2ZM95O z087ExPLSGb$GhzS{wLGanBoA0q5_`nQ2Be~Or@1Qfm1U7w~AK2$=qXLcg?=b3Td?r zw%Q7K5t52zSvz|cBX&nyUQH}41Q5lgxg9SfL-fuBO+{K2U_%zoT@7uDB0n9w={ zC`WLgL3&h745Q9NLa;p{|8j3@b#B>Js}5eR>PHgliQdSvV^Zh&R>tNNNqJ!7jb>W8 zL}ooOZCbtX^o)_7>&2MdNO?8UY1mKHufN5HKlCeK0EoY9LTF&>+1{b1u|*)Wkyn=L zt7bwO>|m`0u6xhS6>o8Xe6g_?3H&{lHZ6q%jGP5YcrNr&(%c__V;&O0)lXC0rMnbs zzoT*t#~M2>=q_sELIT%Xgbl!N`8v)y3D!nn>5Yat0_oLOncaacPX5|YX9SARqm6I2 z+;u92d0qhr?NCCdG4uJ*?6*?ShfC@;1Zs%qrwM9T>J=I@S-wdz@RujAmmefktz5{Rh95rN_ql{a%X|UcRgp%0<02Z|8=mCAw^d z|7RCgTuZG(I~)cTDM#;l>(70E*}Xc!4H#x1y`PUzHJ$IqUd{ou+{HN?qte3MuGI!R zku{vLeUB7w{*#h6p+1|TRW%Kr>Km75oG>O+(b5kF> zprVoEy4LEh&Q7&1xtO9Rzm$Dvj#uKYp0=Q=KZIo3p>k&h0qXyX-o?|6e?Ywe7#5YF z=~_pxyHF|N^| zrb%yCc?(!Zw*WC#__3a}0W93TJvQK9UosVClub$HZfX^X<*cp4+YG<9>vzFtA zP@Ljpo*Em8rCnk@LrHWCVI^qFMXfh@W3UI#tdnP!@18CS#H8bhh6tEF?B6--Lyx`S zY<{`*;adLbp0%G6YLTsNj3JDc9)zdiuGvlS0ySV)Wm~c6#3Tl%xd&~Yw$mh@M~{5q zOmS91XKOww$!~$v0NWXvwz|F|9|hEuH3Y9EO@I6xs8_bp5S$`uY08S8Hw&SB&i(OJ zh@5`^d+E%B2ep7Y( zcm3L%j|D`o!tW#Vp~Z%OJl*y6s|Dyx1#2A!*9xfpY!=-z|2TEnaOsWS!1ad2dWWE1+6PR7LPG_zy)mD1{vs?+^xRj6!(7sma*iZ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_2_0/00001.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..d107be40b7d74659fa423f39f123f855320c22e9 GIT binary patch literal 15447 zcmd_Rc{G&o|35A&Da)%w*^{-162`7VvL}t*P`0dN--o8eD}|aEA(UlktPx|3!7G&z z%3xwPvc)tr_Q6=bcdzgJch2{p-#_2;IiJt(oZmRdapv6a`?{|Cx}MMHV|hNlX=^TU zRQxCx7ngv=4bxj(TnC`ZfMHeMigNWLcK%C~{~=S5h#( z*qm!=dbh->o{Nj$%eW7dt4*b@_-Ym)~E`Twl*LaJ{_xKX}0o zdr_oeW~jv2L1cY*cUM?6%0Rl(^=9$B>bzx@Bg9R3@} zuuMxba{_~rz64GClb^z0p#qS;s}}^jNQDXwi*3|U%n2|WjowY}bXSvkT8l>i)Uid( zyo=uXZgucmz;+iJ9f+g!brLjf2$~tCZFSY?zyiNc8ZjCVTz}5M0x{rsd0c$IL4o_% zWtf+RYjp7xXSYMOzfo1|3zt{xV||K3?N1$MO}1*DRqxx~WL7d&Gn1J7o6}xL?=ZtT zXxlh|fe-w#jOW?=N}Na?$rXbVbnBCWR4W12%PjDD%vB8S6Gwhbb^nXsS~2B9f5h#nTQwU=R%MNp z<7xr9@{e2es?o0X#4@B-AaJo?pOLCS&5}<*fhF%w)rS}I=Q6J0y7a4chm#`du@U&j zx*+To-K`S`3Iu)j;{G1X!uFF-iE2R4=DH?PSzBl z%-@ezKT?yw=xCoZYpYlMd86RKW&ny`HQ)*5tK8cKa3FUIJn}S}n^zK$5qSIy2Irw+gDcq(R{_$d5N&kT9oNA7xZjYQNI0 z(LnzJn1^l8^mmSF+RfHjbvv9Xm)+%XFJBkM@CHgKKEcrisgY%nmI!!X^`wh7i2-G9t`PwOBW&G z8+F&hFkhoz!zCV1QnWZBwxHH@Bd(eCF*)haawG2u6b|@d-2?x+=L#%~FFcuPTVJv! zQWw$|)9sLk?I#4!)CUx_us#-t{aJCOIMRx)WAgdZjW&Vy`_9B>+Xc!{O}8o3=;Ity zfjh24Oy;@jbwjpg{bj-9U$P28UUnV8yp}>Sb6j!Wf8r2Tso}a7lgn8%QD!Vs-eNd8 zN%=l#)ksT~3!43Z9kX68$2)H;{=FfgoYtOyje1eJ{=EgllooenlC38xNL&4;v{*Fc z&t6^KQY~S{;0DD=(Ag6K1rW8o{4vq4A&~cro3tI~=+m{)zB&CI!=6P73+ zmpPc4NVQHDen>s3K%z^>Y{&~n+O=mZ(b1Pdln)jvlcx$a8VXR~zX5wEpa2+88zMEf zN7~D@jx)!q=-aES4)YP|+1#5Ua{@K?vBz7qY?_=^*E-X?;ZGiRLA6~f6A7AnH!RJg z7nP{<6CX*z+At@+Le$pw_V82vk|6`g;mujaW2&&2+-j&nTQW88D&u`=nN(L!x46$2 zFhTQ#X1HYHIXSzuaAVd}S@l}mO5uP*XEOZaTuo@JTXn?hqz-pAo+i(FCs46%CE^l)`>f>S!8@{0)`ZROpuGX29I97S_adq`E+-R zN^N(o-CLt4KGnDn(smN4W?^BBGpmYR_l<;k9Vh1sIn1*MxwMv78)hsRMJdD8sj#(` zvs_U>2ZsKu6YuAb>Ti~QvpLEcD+a8@=2Kk!Aa5_J?4Cx|GUdPmlyb(F=-M?f_*3{- zT>t&~m+vg9>ceAb^EMB(i26MYDZZ&cA{JLP za*zUE$%xKV%e;Ca>7BEweGX~?7c+Xm_@gRZAvZ@SOF;`E|CYWTXD}B})!j|NXO-Si ztV3Hml%dh`7C&|B=xqVw3m;-HR|kk&NHVsNdf#Jk1FP-OaFZMFsKe7bNDW_tk4xKJ z6rLv%NSp5smG^B3@9XG|s`|pF5m(W-zjx|o9sI|y>HD<}4$K7!@%#~kTldQ@{k3U_ z^koZFK09b2Dad?)Mi1NEK$I&Vee2)b$#On=|DE4LH=^}>93o|H{j8b&O!1Nh;>L}N zfW>PDLjQ-lYA&4)rGB%>q@&U#pu3G=A&R~emfe|#TM=g1keOyFacb62!cxjpgci;Uzt<&FV z{&|e2HK0)(N$xzMJ8eda`Z9Vu+vmA`*{vZo+AkfT^pJ8DNiJ> zL6hrFieP$o;>a=iOBG|nFRc?A6+2nbl__zqi8+|*%4LDCPd2)?{nezp!3$Jdg#6IzRN~yD)uZ_!8^YU;V_)fEI!Sgj9T-2XN&|_JHWY_-pP+~76>UFI zwLlOSG z9~B19z(a6}`Zf;G2mQ09ThcwtLiubC$4%(Iyu}3XeGX6j>QYyAyM-6F(vx;;aK6bl zvI%n+-4$Wiu;E!xthT+_a%a=4H~TAd%uYWxt56lf!vL>RcQ(wWq~mfye5$qkvBk+u z9}5Kk0;EX3fqYGm!|B||3~>S!jCF91KFEGwns{Jq9PLZ>oMDk|n=VX5x%R=KgnyP? zS=xds23MxSbllbQ`e!3N%{k6J)AoDETLYPO7B0x4b6fw6M=SAei>=#%!C23}>N%<5 zV{bk3v!h(@Izmr4GjG&QRqm3>a4#64b)LGU1-vbDzgP#a$yOx~a`jy1UhGKmT(ecZ zvFSgu$#J#7XfeAhz{`N#NRTz;{h;)+Seo%9_j2yem*1fbxn~Vb)grAt|3Q_ti21W~|`*~D!u9LyUpTp6&qfvb0{Hcr`76+MP`-%Se5Jd?!TI@+z2 zv$L78;9dk4nG(FTP_tkVPgTyyDE$^VJwIRh^w|#T&q~h!7j2O<=zaR8bqCQaM4=n;4&b2nG-VwaM zwIy~B(HRIS`W>4{93o#(ts z2J*AxS1E-C8q3(oXm4k0b$+O1XvpquZySaaPy0|kM`5u`N=mjF>UmagbAey^0G4v59>;T_g+-X%=~1d~ui}l_*B-<>7s9175kU5@S@tX|&52-EV>3NZxB_wtiFX z2lk}?(}(afCK`23sHfma3scit3AGSUgp|{mTI1(7($-UPPg|)YzQU| ziu-=3xkUbwL+@(s%ZMON<2#Vuix)E}Ay8_PwE*O9U!_)ihQ70=K`QJw*8^S!i?iUD zUA}P`laS5JGt#QS)@&9P{v}AD2C*dKd)s-`pSGp6P3LFDrGcvMV2#nR*w2rZhz(@V z-yOS2G<@p6q0IFvogQ^8>IL2h!d``I)hxkNo#NBGwqwrkz~v(%8FOXFQ3#nKV;_sVKns7CpQdzeX-@!ggLQ#F1njJ2fkLUzwHgY z{I*{Gbi9ho%GX|lA(C86T9mAvh%>D=9Ti&#p2tiM{%}!f$IbNkvzeaHt)i*zFd=yS zXgkEt9q9|it`Zlto(wBp<|mAsJ}2Dwsp}X-`0yBpuqWPZ3F4tM5lZ=nJJ$1Ea@7zW z*0cH07mmi`oP$W@x7ZVN@kTqY>+j(ThgzIeZ3tK9>!?K0o^UTIrgA)bd}uzB(->TU zG7&^O4g87O-YWeXpP%d{0U6AM_N3T4vV^86kWQ@2er9f?X(Lyyx%4)|wg!OGMoqZQ2|*!-Y3l%d1VGV zm$-0#{58|d&Pd;rW&rAe`bn4mDWP~jldB#d_@M&FCwFH ztZRDisOkdV5@AYhRDoF^up!(AYh5H>w~^cpy1bYO_PAv`U($X8jYb?vPSW6F=T{3^ z4Fj1`(xnAKc`3p47+o7e+$>O#H>$EZyFf^@D~Fvj`yPrRSUm%SLog(O zQF(mW_V8qQ)7l-27dF!td$OZyu^I~oh_pgZy!}bWrK4qvj)em#4_gnS1tMtz9~nXIvZb%A%)(W8qNxHDnPjsu--qp&Q;b01$edWmydSI zTa>dyfJHroZhDyVpNCiozx_{vx!sa}+wi)8Tc`I^PS(U}|lW{DiOi}RL;*Y9?{HMbidjhr33>Jf>1@rm4V5r|wd7_>pmp1`q z+Iyt-kwyA#e|k;PRp1|vmxX8VwxPv?-p4 z9n!XuGhEiY@-}iQfuQMv>=pKoIz3& zG==fw|CX&@Ib-Jk;vbE>4lI+w#+t~@4^@wOe(F$zwF3$Qb)!A{Gfg2Kzhm^JUR9hr z(4>lk{<%S8+WHZUqXy&S9YhoLA`z>^6IN1k!kH^fSp5yxeEWUt{$1WT$tE78;8c-ypiNHE3M1Nh_&TT}51fdM1s|JNpmKFV z9_qLmzl+%6%;~>Mv)g&kXr2Lz*Ztt_3LyRkUT0UN!h6Yi;l3^#J77kVeN2hG1vy^d zv;D_>1lFK2`p$M;uX08mkv=mE1v0*yqPpiR+scl6HxM&XdeMVgOE-j>Y5cE(I~ZE? z7!V(ugYV#W&H6&D6PiGyw|91OVt)+=;vp$871pSjSs7AqcDNvQ^)1?x zYAR)BkB|pSV}CyYWUhBW`GjlS-h(pIY6x9Yx8sVSuOsf84R zkS{y`smvfGF>@OaSLpQKrgcw+#S%v!0+D6&;Jt!5pwL-ib&<+x^$D9>TW>9%qXG(0 z+k;C1qtOiTdwf_uI`EzIjry^`=DyXWtg_hvQV>x+atxjn3*R`jL^Yk1LO0}wO}w}j@jO82 z2G~iAOXACw2d28t%AfnJ?bqL!BaqYI45YjBrfs9tYZQ7RtRGQ^sZS3&&x3KIKZN6* zz_}apzn+&l8P5*;pEUcI8Ab)H803|7Z)iq)u-J)|=&2yoYQe_&H!)==&6am}Db(}$ zFVR?cz5N8B80yQhf)-hPkB_crO=OaYO(ez#w~<_buYk&`?)b z>8HEjT_n`|SLpPhFRm9vkFoug$RB`R^}Bk97)`Zba&;V zyC3>a@9}58;{YNk8KU;i?T%LSSkiuLVY-9C93-k;O3;;3A=)7vKDn3Si0>paSOAQ;88!)`8du9sj()oPVidA|)Er zwClwFdqJgX_18ks5RQfcolW{;cW-iXZ*Pxj4aYe(69yJX*)N|nO|$`+xyai1(b00n zD`1VCyHMN>w;bydH>ceqBkkv7Coq@)Xai?&jwb=I@G8yd$C@3Lk11Vh(k8AiB*Cs+ z>&>mfZa3(0q9}T|IrX6W>+6))^DXn7xzPiq+qA*~sE4Efkkw}BKjx0$_HwpmqJpC2 z8Y`x8EgIEYLIbVbVEvSA&FSD%%d<*^_AA!{2a^4BrN1HoEyj>4Wu|b{qFS4HqnPh? zvZB=oE`5;ms_QE7cBV`_-J+ZzhdURoRin{=fE29g7wA-!j0b+oyB_hnu#*>{N`^l3 z^}KGQw88Qer**~*V?2%P3guu{Vj4zr7AM{&Szx>qH}7$Nb{z`{j5}AqFTmd+7Lj&X zO#zpZ;77z&z{`ZvUO&wb<1J5R!Id+v2`&FA>!$C%+XPS#0Eq^c62icgAaHlJ)09!o z(n1>m`jtDq$qx4=6yTK7>R3+^zsXx^P$#5s;lNx3_RBq<*z4G@upUcW+tn{P$12{T zhj0-cKeE&{uYqf!9RTgOJq;)r-FeYN^Q(SM%N-MKbqeisL1$WHb&T%ZO9X=pD8Qzh zeEB2aAa2bL(wz7Ga0J}i_;>s8ep2Yr!@UQK#xqAJgT{ijI~5wp5>jO56d))WnPil< zLhAGSeVfMPVxRR^mGnBTcPx&|MX4a<#n#&k_!cl>oTw4-n>zF0isHS}zfaJtOP}6D-R#HScGZI%CIRn`VTwCB(p+&7TE&8SVw0`XL%C zWU#7TL_6Uu%_gq+`6JD@KdkZRZ_G6+IRW50R}Dx!kAgtMN12JY9X!<$9DSMAkjZ~4 za|K;2Y4bLOnmxWs3r}<#U2^Y0WGAgB=*l0#uV%J2wp|eWHNwH`G#>YwH&3HaU7+Sy z3Jyssa=En%gsq*;&0nuzDAq#$X!Z1RRdfd20}u?s;87RhaHt@AuiXE(r^siUE*#E- zT=71#5{>Rq4tM$?vG+6g8zwU}FvnNyiz-IXc$7_VIT|fcdA@zM=dEhL?Cy5tCLS)* ztk=}ux%fhUqNilXV$X2u)L4AtuJvNu*o({kjj|q2Of3g!Y%P)ACHVafB0}jco4B4( zTba*xpR_02Y;JD@Z1eEp9Oy+dsVdQp=@&vQ0Ma>U?fnL3TFs-_eR0%gW=@|S?&Kh) zJJEbT@8Mdv#ZhDFY=~dH=g%f+cu_!k;{2u)rDgC9DKv>+{qn`>XUjcIO~@A0srXM( z{G7ug4*|TpI1Wwy-CZJf5uHtzs%DJ-H7!joXbmyM9+~y{`|s)2NJD(L-q7lR-?Ttf zn{LbA+^I!M%5*q=gz=n76$I3xmO76+!8EYwrrL~d5<@86V9{%nD?z=OJ2B!*5bt|U z*wd$LQ=(>5THZa>sI69-v@`9W%7N6x0~2;H;{l#XkTuow4+X9jCaQj)Jct{7%)_ov zP02_n^J&f;V@Q}P@`)U&0i@7!LZy0b)B?!r^h-w|&&D}faVxD?bsd7obgM_n10PqwFS-xw<96cgrM+w%hB)p{%R3G+Nio2-~ zjp|4W0=ZmTONllzfP7LOG8vE+U);a^7vv8EQ+Qo^@RZ;#CyqUC{li8!`+Sg-v0WuW zj={$50xCNT)D|4UoDSjl1n&^4$QeRMKdC3B^dXA~ptR!JHL0`Uf02=dk z=h?s;i@!m#M8o~PT@pz1AN)i=N9yU>h9yNG=X?WXj|BLPiAi(bQZDOem-oFBKW$E$ zz2Om`m0d219hSGym~oX(Rt$8GliA*kvEMH%@o~}aG1D^;&{A#BrG#R}gJ+nMm?s`- zI^UwTQnm9vqeJBH-x1*Y`r6{i|GNdEJIPDSX4Qlm$mbQ>V%}Cy48k7jRLXg=uj?T;w^3pe_EmLj-F9zx5Xc${Jv|lHfyI(K3~wnebjh1pB&| z(?KfNWJF1E8;Rj}A!$>)gSQ*L&S)2Yvr6GLq0S%IxlhhB>-6-B7kX$%h(a}sbIw1T zQlET@OeVrTrYIlBK>3N2y{9e(O?754x)A=U{w`y6D$SmRMiL_i=V5;m!XLe7y{>h! zq|qf-T*R57D%fuP^Eim79|pgMkgwO{qwt`h;?V5)`ZM;7xPs;-&rdO4>sWU+rtY^r z=Fof-DSfs`p4s~f^_KGyp%nV@UN=ua#W)bvcRO(rgpI7!GOL?=U5re{ z@YaXzjdYL_LBs#Tj#K{1`8U$b5n^?b;#e=GeP&WVpz^IieB-M#+RtEExBiB3R*}CT z$VHsEvI2&-T%E#5?Dn|gf?UyH|MDEQ9&&K-ftp_a)xqZhnb8eg=*B{;Jk|0d zDw+cd8dW(RI+RpR8~sYG?o|@NXC^xov4{mTeI=?v#S^#h$#O8MGYeLtyE*_OmJ#76$endF<#?ak)O&DwX1rgs|$x2iySDVd} zCIj@;=;!n(3HGSq%%h_1$_LfVuQu6mJj88sOnR#IO?09~d*CM` zF|TD1*+09L)bS@3n+f57bkfmrxbCsrCXq-a<1YhPOt0}al?gK{v8#Mh^ZD+(Fc}pl zkOkUCSNiU5Ig-b!Nd1=|$MEzC)F`d_)DnXX4OR?U`wY0fLsN&F8hanwh29wzj6Lft00Z-#7=+j zAsbP6kt$^6DL}^s{e^rQe0uatU_FFW&)gc@W2{iSm^QC@!xMMcoj_UBaJoTx+H766 z+wTF#soPqr>`s%ze^X;k9~IiRkw_^Fm7B(Sa^IwmE!v9KRS!DFZJt@9p73c)(+c-m zFA~~^-r0}CmZdxS4}HKyYQ)i^&NOtmdCP$j@@Dq@oe!i1RcpD|)|*;8cc|}97^MNK zzzodUB>D0O%A@RqNOmT_SQU(R9PmNG@DL$Dgl_q@KwATr!Idyu=oc6U7*iLG?^ z6bM3Gy>G&8rL?qdPKLg@Y_7;x(<0k#+9Pcb!mdBx@FaOwB|l^m%X@NhO5L0=)CbDL z23Ax|W-zYP>1eT`%m zo2l|ze}P>!OE)HKLD`yE-dnU>n(k3Hr2RCcF8&3;G*3KpOZiT-s8>9(cPKQnFai|h z9HJ5Uk5%0gE9rHb$X;zIl+#t6s&ORfw^L+O+U&+}cQ^8pASZ)L0Cx?5n2n)XKco{) z&n-j<3Za6AD(EP1@!;VJjKl0g;j-={A%i1W%O8MfHdu1}?bDCpJCjE!yy`I@!`t1} z0NY05+1@X`yif4Z&#PPQ?fZ-NV#skMg_drP!Z9~#tF|=`vCNxP8O&z zQ~EHoV%RoT(%y!Ul$_jm=q{AEts;7Om`njg+PEOC^3Nb3L{HgYZXy>DLfwBEf3Ul$ zBXAKs8-sOUOfaJUl_-DxN$Imol7$1GB~lFoFPi_Tx>;CR8BP(}dhH`y6>na;H65&(O@hcw}R;%}jJ(b8G^m6t;aXDYFGC#4MFMyj#1oVLRsynVRWu8h?7 zuNnXjH5+{nj2k8fe-|uW^p!3;@{2`sf;o+KKfHEWFn(V;()7^v3vt3xbqL&GBW9LX zbSj7P=5P^*q5FtFw3Nr86^kU^<~_2(gJ_hgX}!9 zWK#;iYV6}8;kayX0qgNP8b#7w+k7gt79IJk+3lEILqbOAg2dX%K|%J}=WL=Z`vfXr z!bqUq%4zCq`IN(8$d@>f!5>EBbq0 zHKg`PEd%Xg{io#`%_K(qwRRrOi#7kyQP1Jrx5}0U9~9<|LW?7)mVLY76ENmRSz=Fy zzIOp?7^J$|7Q`IwSwX^U0jmuD+=ljjFKT4VP!d+_?XU5j(OMq~qUC>27hqaOyOlWCcc&w8|} z2D9A#h?t*0!ky8(srgGbTj7!z`blPda-=s80m#RLX8qS>_-a^p>?d9cBPn0ck>CUbi zRLZd^S$hU(RvT`ufswSPr*kShVLE`}F`fv2FEG2xK2l?x-hHP-$u0TMsrD1Y7>23E zzbJBllv}B|VY9WquHcjeMXG0C%uVTkXw6&q)w%8UNW4Fp)|oQf-35+efBy>Stw`t} zPBGr19)o?OUp^(CXh9xC^!NkyRX3O0DeClnR|Kz}2aZuKk_=&9~ z_Ja@K4H%8m?47C%re5inbF&>cHk*T1{ucAR_6GBEF!oz(S^m7TjB%fEmU7u*8>H3| z2*A1U)(|F45Cu&w?nndVidhOdp|f9deP}m1#Xy>3u4>zHWaqCT-BN3UQcWNJ1(UH0 z08nBO{>8a|4N@nQ5YvW{!C&lsQ9MC5GuR)P^M0gHIllB>uCHxFIGa{!jay z|La7#|4Fy@{|{#|-RV@{<)$m0Z9^cxQXN{=$tr0u>U0EyIlD#~rIb+iV)Q>bM{3Ri z6bo^Ep!cWF;OY(^efll>eAYC;$9MkPiVD3Az>t1>fapT0yJ}fycNN?!Kr!=y1P2BK z(q5$l($~(jxeASD#1zW+`ZdMx4f_vc>;d>5=v+QpDBFOV87%~)S1{QA8(1-@K+yuhNf?)Z4IPw*WW1l7 zv9lq3NzrFpdzF!|eHJAZgLbf|TN!Z&;p=w+E+2g!Q*C5{C{-pu?5Lx!CtMIHVZ^8? zrQIN``GK!Z*tm||eRpr@hvq;GE_!HR-U3h_UOr}wPwN1-S?X^S!g{l%VG`)gtlw_@y@5Le40j4-dgI=IDSQd?hCL}(rOrq=xpxLhgf7 z<@ZKs{S!TijK?0gdYOsCo<&UQV4FPzwOuNzKI?f#-$~8c7O5 z;Jz-F=2HWii&0H~9@4(JnB1w}KTL_Sek4BDFK+?h>x|MRHE~Pn=&bp^#;+lU76iF% zVq%1hScYtf0y{F~ZSQPL*KY(j^|zV*4VZbvMpi|fnEd`|Mmh#1rP61}047%fYZCl6vo_){>0Kcf%JoaT_YKL@ zRRvZDja|r9GFe>-6&niI-g1*YJlfnmW1DZ&$X7**?dNAGR$INr`@Xw=2gmwze9whs ztjXZ-i7>SbOgxB1nS`Y;WxqVfzT$IA09h%Id~aROvUH;4;yKz7fqZT;RwT>#g;Jk3dBLCO7%Y0syzp_tQop{#dF$c6symS5-{(GbSq?zn=CtmAu znqgZIz&tng*FN~Z|M}a$&&d9=n$$@H*)#!Wq;DojU#iFnO4UZ*=|4tF^?22u#Im$? zjTO@ax-=gjVDSLmG%G@EPR(RSp>|kPYOnR>fM1zXuA9S)!H6V*SX1b5xK2dbC#Gb--5|n!{f|9ezA=6KJ$({k-fN?LoJvg5ZhzOqgBJ z($U}a%iDZ*L9KRPWlTjw7oI1%nF*cd@_Wjfe4h2Yshtg1-V1pClu8l5JDD*MZaHM{ zC)v|2m-{M#yCC)dF({8;M2B#!6(h)i)94UIZnriz{puZggj{m=p7gmJ|Q|;j=LHVtWT&E4Qm=o3bH=|T^=jh z*p%wRKOsG%^pBspIP52T45PBfYu$O(fHW1hc|C7+D=CsyG&Ik#M3w_M?L~b{wenGy zp;Bd3(I$SK0cdzDuha!$Rd*;z`QC*nM2gj^&oQ`M&&f}B!?Et4MPH&8q#~zg5%N<{ z5-)HE{e@Y``_o7yBO_yfax~h5813KPPzMBUW)MW6#7R822x#mf>_I)@Q;+fceb)$@ zA*VFZ_U8)4dcs?M4Z|AktvVAsAH{mV{$a}l64;lq`Cv35Z;dG5bu#?WE)|D|tQy3! z8`fg5gnKC=fJ8mdCl8H$*DG4Py=J+zqGCfJER0}tN|n{} zo?!N;nmgihp`s523TQ-=6Tte_s6-noWv{wC#-ymU$CVJT%_-eAg zhgXQ}q$E6d9_tqVZ5&XDXa%u;SM}3UiL$4wqFUW9g)O}JjTux|yBUo1E#kyaN?(xx z?(~;4V60m`Lpa&Lx|3w&sdkEe@LS2Z!Rh45cG_V6tA9n>k|DtDQkkO;nDdHlm39S& zR(GQG)_2p=l{N;a42GVRe&df;xA`4|0}?3KUDFh>0#^Xu9oT?jGzI^r%n)cZGW_kB z71cLoRpQebogD63bDIvhQgIbU#i2X53N~!wd)le4 z3-iqSZFwg?PJ{!oLHVfeJIYYA8Vb%tMgsDBKeYZUpshJJDjzkx$8z45`?E~(pBBO5 zv1Qj82ck*|yDe>X`#W2NEhV;+YtLM(%yqz64;U7};6v9vfVZ5^9Y1gs;~F0HkSXsZ zF(K2ENb6oPh$Y?ZpVhcX4FP;tgji;Y?6IPN&UKMOUl)XY#PQdvR?yDO37)Xy&asvV zpQiEFT~xwvHPK_xyP1U@RvF#%xshiU+isltHIQ%m+QEW(v3BXspR6E(8qrb#Vk&yp_*A zhpo~}TDZ)>$bQ;;Re}Uv@ye955z)O4>=cs6`63&@?#1!F{jPg{^l~}+JhX2&xn2ce zmb1S}^0`w|Qb|^T^k30iGkxJdlXE0y0^L!pgFLLk*Gs>F)CK@>G_7ENOCOYpG)BJ#9NHNL0a!?ascA!nlM7oE|Bg&DyHM6Vw2CH`0J#2;~Ip;zrsikKbm@WnuXcF3Nh z)`gk-VWTrQx*o*n>b*-Yz505(f&6A_JColNIAkH{aOeMQM{f9RmQ$47<1QZQVa?Iy zaTpIO{VT^X_+v{LZ)?WjbLQ0JZuqFKrn|J*9HYd(64?0y@5}XiVjkrg^(Gevmg~c# zK?SMoFnvezam`^naz}#m$xmBJg4t_gM$kWob?j=f4lDdV(6OVH)g@AGFRT)u%=sb62#<-AUE)5pnExKkpwBk?s;P1#|R(hG8xXGh5TTYhDlj7ucOpQ~&?~ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_3_0/00001.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_4_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..702835c99ef53fc7ac6eaf2a3c4f9bde3825642c GIT binary patch literal 16907 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_5_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_5_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..46c831e49e0c8336e3f38542dba11fe37caaaea1 GIT binary patch literal 14640 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_5_0/00001.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_1_5_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..03e7b30e1a474d4782bbd36c9438018c7a414d88 GIT binary patch literal 7645 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 Ty9Mx94?YVsn`@0%Js$lBgJcpX literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..14439c154166273f83ad1f4dbcd409c7d75d62b6 GIT binary patch literal 10835 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..28e9f1f67b2300fe6a029661d5801617674cb038 GIT binary patch literal 15835 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_2_0/00001.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_2_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a0d52ebea5f38d3760f8b435fde8ae83bdf99303 GIT binary patch literal 19251 zcmdpeXEpDG%-UG@RZ;$p*XQj_Y+au8Soyk48{Qh(8kr&U0-5uDGMtY=3RMan z%+K$$Aa4)2n%>YKUOgm#)MQ?1!j@df^=SGj zGt-CA|MjU(^)Mn$KS3b=p#Sg>|4*;M|AEPe-E4bqR%}kA7{ZwE2MZ7{iEAcWw=aW0 z7Q=kOzfP{!-B^m>HdQp6@);q@lgleMzX?R=+L|%SNh*PY61MS6H=D-R6$5+W^u2I0 zJpXx5Gcn?>6_@o3Su|2aEH3wJNy(tgC4>tHn6KYM8PI4tje=njp~N6iVa2g4eP6=4th#N4@$KRD}@az-{_rrgbp5H+LeDJ-A`sDngU zcks#s%3eW|j^QS63MD1&J+g+8A76GdYIkkhkh{L=IWyA0usp!9Z&P_Z1qcNUs@M}* zBWibZIaxAYqHXSg{C;DlXWgH1$1VvFheJB{BtUJ4cRQ#1QG{DP3?$Nn3?jH7KUxz) z%HwY3ni3A0uR_~9} z=YrK8e@9{-^FDi{JcC6+-Iw-M6XW5EL{M>oV#d%{i64cAOJTr6Yk5Y#SS+agZk`RS z;PKYt#A`i01Qd){rmvdFY21Nl9Az5@cuA}^>X?ElGqIWJ2A+JpMV0g2+&=f5mZLVB;NPFe3?;YD(B z=>8-Kam&}BQ1V-31})4NRBW!w?#24lV>Qg%XC2+H{AB5#ZWOsZgwxOOo@BZZflmEA zwjLey??ytut6b2Kq9hpOphmP#lkT(Ga)Hh{(x4l#lm|hv+*hZ%q2L0~{Q>0i;Ucgz z$AlwuA=Jwf2jN}6_q{AHJV4hWc`7P6}5nsRh;6DzEoUj?k17TA?sP7B8@8Gt(4 zJIu{q$bK;w%X6?1sv&udCvS!ss8mhdn?w*3fKELp)vFwE^&T)UaoVNR?xwLuv<&MT z0W0;bvZ(@wQyr9@{bV9D;ye7+VHjpJC5FFP1K4nZ*Oy<~1*7ph3awE&VD=FV)es5_pQ6VB?7i0?*S2LFWT(xtcuFSDj(7gi)dAi$`$bWj00-R zGQ*4N8N$7w_zmt}Z`yGd-y?w$dHy?PK@aV!2+~5@b^`+f#1U>!@IjaMTRes}`VTjV zyPTyN&)VJ1tX#-~0@DWX&W1xQIk^6AEb|Pw?=0%+K{MFs!+tx9SM|&~iaGG(cE}CA z3-0zcP<6Oo^P4S{Z!(7DFo3EGOmG`bNxGiDAP@VJD^&X|y2UY>S*bj|@PqLkP_SkA zEUm-Ep$sEwQx-Js>G{%r{K2^JAZiL1bc+5Pvcpq!zW}C(se^0Z#)`E{CsN~~WY5sb z^!njhG@CdG)c-eFq-o^q;5SLeI2Ui%tkw3dNtE_oke{Hhks-?e!i`xMKovnTG5F}} z(|1$cFF+tm(K*s6kN0BN-)laKdigvAfua|dZ9qX{&#OS7IZ!7K$O{*b2(&;#2L7+V zNcZH$7w1OPV5XO2;~uqCAkZrtl}_OBhGFl@3lJ-4Q(UkeDK}LRb&=Vm-r1wQjeNnO z1L;+#+S)^vQ37n?5uemqqnYk=I%C|+Xw5K6+7w}s z`I9bzpJZ+0Wf1C@aIfVIhupFC;v89)eMgdEL_ z$6mBKVJE&a31E*Kd2qot6zK87odcnTi zbJZzw=oxu;B#=P~1ZoM|#*b2Nd%Vkfjuk&*4Eyr--bkQI%+n2KTB*0J2~qdDV=DBL zp8yHf$=bJ*MK956uG0d4YNGK&Z5OAZbXFb21r$_Yb45)#C1QqI@vgX3%p1o((8TUg zhB3!oIenrBEyOrDK;T7AKVRcGgqF{%aJ>MM1G^}y>g$+|+oxQKIuhT|Es25~*37Nh z9PIrd6$d*=wMAlu{_VQIB1EPnD9IivcjmG-)b}YEM@o-W$$&bjP!wP#cDG3px1{C1 z-4A{$DGsk6>4>TF6v+8wQ9K1>ki|Qozm{k|=KhaDa-6DTwJqB!D7?2CZCE&=+uUIF4HR-+{oQV=!t8Bx?kCEhoSH{oU# zsOiMe7Ulk-jiy*r)&67C{<|clsutW!&#|VHRM|pR2aX_+7y!(#A2bJ1B$Y9$2+;OV z`_0b(*`Wo2GX3jc2C$JIzwj&zgl>R>L>9;h|LgbQf7sVu2;Zi|PKlcPUGZXy+3xpx zz2ExJqYuC5a;hbMM{S>eGgrer{@HbsG* zWb06K`|BC;SeWYJh%@){Ybec$=*b zQ*5si73Pxr&(`ft9d2Vh#NJ`Su|D*M$6z-4j-nkd1s+rJ!-&ttCJ{R3x0H>&p&E2=#_7f zHLfH_4>Qk3(>1PoSjKAOrLd$=)GI9Nyu15hr;BK9RrI*~pdF1A{LvZhpxR16yX$w( z$fJ*r^%)cmy-U>)6vN9rEx{d%XV&`MLT~ANbpj3UnrE+yjI6juFBuXzx6hxUABKI& z5|ey0NNh92R+Mh-rV$s8DbibH3?Vu(zb)M=b`9GlN7$5R)TyD~U?p|wjrps$hn zRHb#0uthZsqnP^keVIqA_>Z;2%wrsCSCM*?dU2MjeKtpunWCtrNznv~UO|m#ty{@| zHjf7a>6+yr)GqDHce8M4m~_Lo-{G65t(NE77`>wtw|V?J7hP<={E*vozK&m7c+x#bi-i&@0o^a zz)}|cTKefoqokTC^~F0&-J3Ajk~(Z@|7GA9i*2J{|C-yCmZ z_Pv(-w=hq)@jVaY|NL(ArnQ1*VW`rqB$SWx4mA^nd_BM_NwyN?wzqBGYCaSk_d&rFHz?-(IyR==IM$z^KF z{p-)E{%uf5E~nx80P@G-=WGLvJ8(HK^QvOA0#mxrmGn`Ao-fGzIL)sjR0K|@7zfNl zPY;Gg!Ae`2%`jJIhedYj<@yX#d)+08Wj_wtl^oOmtgeP%i*Bf!VH|9@_z8}$PurL2 z9)>aV=k8o&h1Dxleb^7enDW@c6$L_vAA{Ff8bH(3IVB|!>Iw|c@x!&EuHSoJ(&k*8 zL>?htQo!yOm*jPlrGL;PHSV5SSWJO`UA!r&U&^X_v@+JRw(8Qz$#_HPQsIqAsTF7W z)MwyM5c9L;`YIsxiJpXWvqjToy^vLbK=TUf2^wp8Ur!~SoTKzxXT`Wa* zKFza?alK3X4YQ8YEo{5syc)Zu*Muma^R{|bZXh83(BVbh(^cu!wb**z(JyhNElJ;M zX$?!hO@RKVQBT7!lM4hiKIbIMP3e5_KJNDmu_Wn=zvKx0U7=xLWdniyTo4Gq#{=rHD(T(mt&og=IP-lYcnGkJ4 zC9Kg^ye38D@@b^?^}AnK+uOuTZdQ>hx&s~v{_4d4^aLS@*pz^T(>xIH3=9P_4Y*CQ zYFTWsA*w{lWHj7oK32`AElDe;MAYpY#(N#~yx zw%6-yC9;k|)eirpKxY4h|GA6ecQjog3=U6`_6jigWJhk!t6VH-v{KHxH z->Bd^_TkMup3Qf*k*^~%plN~?qpGhGfeL-DCRxyN_vEAZ3hw+Yj*?{~Tl8XzHg#gleQ z;e%hY%O1Ifw(S*KN*W3WB7RIVdAB=N2KopR$SydhC8#6N-)AV?EkW{`@ zAq}_;SX-RaUKbAN^6CFx@Y{9c(JGb6 zomIF#vxEywDrD$5Pgno$T>$0B2D`VKV^JhP9=hu-bVzXyKs=A!AA^L%puJRv=8t~Q z$#3p}K=zZ`Rp)J_!9m1NY$-vOG63$4F;~)7TwNTcP6~lgH&tYOwFlB-;6=1wMajn< zt4q~J1&lju=Vr(q5TY7GOs8LT*B*2U`n&vMnX(vO|0(uVC-E@)#RUi4g1-=ykbATJ3s$O1uZbL9E3U_E)l90-Ps}rhG80IbZ7G z*(-yufmC>%XMTUU`YJXxi*&K5GDULW@g{1})RgX1hFNQ*Le16!w9>h;87<}%p*wj3 zJOa9UDFNASyLp^CI|^5w5b8dmMIA+L*4-z)a6LU8JdV4#03qVr`4*bMAb4&<%;p=gINQ$cypJ8`*;w^-6j?QNTX&W3QjvaCUlf0* zZX<7b&keXyaY*sa_ji^QO2X$Jl9_!$LJ#(|i0^_7hyMmEndMh(9!MJmkaZ5D64`06iVztDTE{_gX2^1vD#DN9!egqgCrai;}_aP+Cw ziL)B;?u1bEZbgh1mT=j~rBA}arN_rQSZiU*mZD zvV8y$t;5nw_IQf6jGq+(ypg5(t&EEAnT(S_DK4$dSD9qb<81|p_dQc5=m{XM2?pNB zVQIx?M4m+6vbQX;LV6*J?m^e{r~6wu)^6rc!kASbO$&z2ire7-DUc9q`VlrVCi7Ey zAg=f6mAp=~5H-k>EyKt#pW(wE)h|ddCrTxkv!oCZPx!;!ybuv6{if*{{)z2I#oIjO_ zVW>w~A;!nl=FF?o3;U5^G%}Yn`pyK=#J0zn+F@vN#y z@0p7$z7S~ORCzMMnD>Wo`Ct%#4tf&LP5QA!l-Z25N(q7;YMna7r6TnQ_(oQ4=?-JU z8e>1JkvgycM)|hSpYX38p80Jca`<6(d`{rv_LQwOOVuv!SSvfJvZ2$}ZRbx=g@5HTuMI&l%kns`fkq;0>=-s2(qPI*AsB0QvIV?< zcQY*sqBfYx`wDG}5t56xc2hn#AWf-MQ1-5{=*lNscqj7R$5{&3tQ5?;OA_4SrR+)H z3)JyF)(hS6a0t`>dn}>`2F9e*PH>?UultZ-4c+U?1fbLj6>Q_}0bw@vxEmNtcYP^$ zz-Yt8c|)Dn*QR_!%v7SPk4_By;G@~!^v%BYF8zL~q^ZPZ_TtO};E}Q0g&bdA*){s6 z&M4ZQ&YuPs+PxPJqv~BjLFgYRYN+$)&=al*=3%#cs9+w=)mc=%Db;S)jT7TlIDy-C ztn#rZba}2C)9;8+eVK6ku=;uhy^9kSN5R0|zfEN4=Q9+MuCqv6nvigwir|i7WmIpM&IKH=>snT5dC&BKMJl$)+&}zC$^3zzRxihD?b5N^ z6T&fDjnvo{>s-s~a&wCAtAO_TU4Rmy-Lp$~d~DE$7wO08+V7*jgwd=XS~d)E8SY)` zOcNBHg~FZcvD+R?Dynz+nV+nr(<0V3YO*b5vb7v9)hbS#=C**xORMe}H~c2xw(JKT z&F;ytA;29=wLl5hM@VT`-S>ZMe%ChrU1`JRUrwd5_8$W>XHD0ytu2JmNFXX@vsXAj zEn(ZlchMaThmBaQai2_!=RO?j5}AMEb{0PB_yUjp3sw znG=kDwm<^rOEbn9WsFDXE{vnXyB5I`VKUEW*K@!m`j+XVUQf@*4fdpKJllhfZWqzJ17bMC8O zPM;zVk_5lt!&lIQn#5Zy@r7LX7NR~lhm2m4@};7Ohe_`ZAYj!WBhf~-F zHkUMQj7Zu?I5>$FCQ_w`ix0X4goljO%}sT@pJcQL`!YA}#u^ar&Y1TI?lT9z?M>?z zm)5mbv7^2#qmEu=SA9VXZ#7?k0H!(e(FRS|un{XXZhvGkG{aP<$GaC=3k|#aJmpV~ zTD)p!-vJ|jjqZEp%OSzOt)$M{6aeR2KS%&>t0Uy+D?WPfR!@cXylPEpk;vX$ABwYS z4L$a8ql;|+ePpaYuTJx79u{eKVLPE0Xg|FAEYM1;XiOh|!anTk(M?}x@A2YHl-l1O zQ=_Vyx-I{gAf<(Ox3+3V?R$I0Jl_x`FDBgyy;x|cR!HK{JQb8^#l}ho!xq{NJkgnL zNo|!daZ%EKEnwW5|MfSrq2`l`dM)b1b!_fSj2cZTSY5|^-KQ-JsH)_4m-g5G$`j2Q zjN)f+YkgfF^gfKu>oGUnvrzXskGw~B;7E9oMni5)2?$l=!f67RB0<0NJ1OM8o^D&E-UAfr0P zYm3P@#JJ+!7Yb@vsF$WyiFcvslZH`JGE z;&)9GS$&Lk_FH zpL&H8a8AlpK=s)VU-c3jrZ5eCY701$m$lpdmVel z(CYZ3qK2_6xuX0Yau^`KXi$}wxHw>r@wcSZ#jm&kUVPeh>Z8c+gs*#~(Nkf5=W1_t z-qw}ImV*53E!JZkSx>tMfI9gfD=R1S^ctS6rFu*8K#iHe@W3L3Y)k&A)lRF#REGa7 zz=B#T{A9!XPlB|)x~!cR*iWR)^BEhKhv%7Rm-3BfyBtr&^e=@t>|_n4?gw*5PU`vJ zajIk+dQPD<@MVqPcV2d7cFrnlSt}^@b+jX~leO9}2~9CW#9EX#>hlRSX-3-t8_)v> z4^w{X;}}nb-CH(jb9!>%n5S-Qc|<(Kzu?mvu;T5}yQD2KoCZLa;cPiw2b(`8_Wc%Z zDD{TBT!yjT73OZ|4wJ@pm}F>w_)$0fmCb_(T};DB8TtpYd0IzwJ1GWL_wOU_$c7|o zQhGVP`^z+ZxLd<=(YC4pSsB`tC$l!1KyCka&bf(YOd05Gt3>$SGkbwMHaxVKP_cP* z7|;|che*X|5~sj#WH)gkn-(wlr` z{IKG&F|Af6po;fmbcp1lQ3t1lA9Di4JD7Kly!*aN#Xq_B0Nj-r;hO9=C)1s%WZok{ zT-JE>?cR+)U(caC0QvN#WpI0HJs?=47Xch=imF%4KFp;ypr4uW)X*jU@F^vM7;GIl%WBtlg!!#@g--qmA?e)?nl|g8Eg~Mu!=FHmA z=@!5jRcw|3e~G;l>dHjT4T#gmF?%P9U||i0h&e~GrA-Z}set;|&#ePvd9ht@39#}t zM5EIo4EX531MI3mwu+XUnj?U|H&T)7HXuYO?8a=zTQF37zPOqbj?s8UQ*Q|IhHUTou|m`wfm?XM82g&EPicfm5lK+e(=g`GK7_+$h5waS{c+1 zHe?>$ebGPR?%zC{T=ezQ7*luI!nx{?R?F9RE`hE{l~E}6t5PVrn~l-*sl7X*jo*!w z4UoTgLmRbA2|m*qjaaS6mfO)rJ`Ve`)UhuDKbC~Rr?jdj=SC8Sjc@Kc0JFG6HONFz zjz5y~{M%6$CeFvC`U^Z;%J`dXctD@WZ_F^px%HKIk#GdVwQ#`6G zExIH6NR&=5qTrI-HCIej;-u(iKu)5EA^P|a8JNrO9Gmk)iTlpPcWC~OYbjQ%%3;P) zOhsRetN5X}jY_kzzIr44ZDfMB-c3iR<108MVjF7 zMrc+9PLomAVp!#%d=$p!K0m=uxP$!h2#g(!nP1{k@|esYxDZvBU+z`NQncFSuT-^H z`0GM%_KZP_koW!eg}Eep^3!HIS=g61Z1_G!htj0inr3mD_wl}wi&Rx+)y3#kMyUJ! zqn>coCET=B!C$O7e*)06ep=yld+c?~eddX*TbKdO$GVZy@Wx|6)AsyWQliX2^bO!- zf@eek`7?AdHZ>4#Ot%=bWQ#?4XWg6~u3{=JfI-5$n1>I!Hd{nfhkzOduc(3P?v2^b zZeQGfkqA8Eme{s7`dh(Eqgg~Q2ZqLm8d>OsLZ}ZdB6B=1C9^e@PZAO z#@F|@Q^0?NEDmj{zUy7aHL8Dm*~yDe9H<-ZG!CcQ*GLXICV6ha(;E)!GIsInn3)&# zOelJDzx;fGwClHXe24`K%*A-wy95`WK-Qub$MB;t5Ip(UdMRBzyGh#m@ziv~0LnUX z(J-BQX*(7EG-<|Gh3aH7QQ(`!f&lSs<#Bo0Cr|ctJ1|Cwi2*tu{LKnw{U`JmcPi*eiPl+1YQj&_mR~a8R_=RUSuboMsve zaWE6H!u3CZP07mX+uyc|2=y$Q*ys^Ojw@c7>176SYb;7_2~Y)MQ%!aP#Ncc1;i@#n z`aq$qU3y%{%7xaM=XpWvh-9=*06;wahwl#Eobcf8eEYf+_K!uEz}|DhZCZT_d>M^% zyMez_@fs)j>2?G@~nn|2eiD&u_vi362UBOhF8^6K)fU+rt?nI@!2iAR>r zdoPaCpCM??hQ)K;-ltZ(85w?_K>0OU%G@-!`XHe0W=Z(yD7={JiTj8H?=J}fvtwpd zucyN7jGs$RZ9WrP?s`FDvXiuA*k8v~5i(MEI*yu&w;}rov2{g_ThYM(xt>WJO8@P0 z(L7wvrkQT>2x)Z03yKyhp=#tLG_uaSxf*Lkeyi^5XMPn6b&g8Sghky8UUB}L$2Qnw zXpgsfW)bIM)uh~R?N3E`cA0D@&RXj@$1G{TDEW!Sa8zGsv~|`|w9{og%O$B?O%mM+ z<><^UKodQxgJy|(88R6T$UvWYeoeGGOuIb|ib$L8$;Y!sz>Ou*LjJS!`acJcnYocD zKmvq2v)%$g#~D4oQ|!0W5}oP5^g>bXN!A@T+a#fa7F0MgOAO&gZu^Y1yCa|fvsHdH zAfHBU&3X64Bo6^Q9k&uNYQ^qzX)imQ8zIJKiDT@xJNX-<*ScuJK2WZFgq$LZvyD{f zn@(z%pB^rX|FLWjyeW)wyca71H~4m3HFouQ&T!O-K29Z_s#F3@h z^-M#QYF~4Xkjv09EYmahLVeHEY0dM@uU(eI)uNp1$bZ--k4vixtS%{0%}F@t;6xo} zh-tZMsR@fJ_J1fV?6yGTBBZ+DYp%e&mxGczw#n`vu~)=%+4-|u%(3NL?Z9jl7~)i9)kp1Pd-GgA@{j$?l;t7$jBog` z>$l}4>cn5GeJ5duW7&GJ^cM=2wd$RP%}OVcYz(={dVC^vdeA+5kSw{u@Key)kN)h~ zhZjBS51tLzMX-s{Nh(N3vTPLX9m@3-Zq| zfW;D$_F>J{G{elWEl274v{g#1xp}rVsB>n2b+L?a5ssR(J19`+jQjnwhCA-=WDC>G zO>UA|vIX>_IKW@oze)XSK ze;oAs9)0F&_wqvU$i{;%0S#S3Q6G@x$_LWoxLi&RU773|hMWh%+p-Ry=}7%)!hZX- z9-KWNN7v{v7(~I245q0D5o;S@@4JTzX1_gcj{ zE`@Q?A!`>|7Q|kNEuysv|4=K1Wo8SFwLa_=81lSLGQ5L*cpUonE zWOQv9Szbu};PEupZK_9!A%<)|f9hHXteZP|PcjMx2`S^kHdOA&-S|dV1^DsR3)7_X zOkbJ8>QgF1twI!(YNB}u5V@l-={Xq5;q?5}!EkzKUVQZaZ;=PYGQ8X!FBuX>YtBN< zKPMHf@sFjAqI`52R~8L6d4pG|TWK}W<@yIN-#^u+fK?b_i4b7i%ozZYrWbzkNoXIS zs=@3gdG3ZF~4iGY+he z#cG|;;K+7o43HLZM&5$X`Qg=?1Nvhr^j!Qw-*Rc0bmicaqs7l;mo3Rcl37dX22tkB zb_c?N36YIoEE@-TRE!To$IE9|0|$Szs%|v3&F>=JVil=ssxA9_%H-_qI5zK`KGtr- zJ@2*P?XqY9ACxZgyn{Ux3u8!z(t9P4V~;-iiEeZEc57r&bP|Ix~$E+vo-`1U%jE~_D3UVpD~lBOLvpd zsZ)rK$wc(@|8a#bV%RSAFPa+^qw1Rp1tU#6{(E2 z>!<1}Bz0^)mJl^;{KSi|j?%-{Btw!heW%JU8O#|;*NDO4)4xufhA570TRGI+N8ZSB zd@N@QI3Z6wx@?u}2`Sb;|CiOPZb5CR33<)$5c4#0&GaW}(n;N4?=uoiP#mgh*+&{T zie&1x-*jgV8#$~`Fs(+zmU?61P$OM4jP}bco|KUJQJd7F80Zm+SrgTdAxb5Abw0k- zD2F|1nX;qqW!8EaL1`JbZFja2(D-h>0DvQ6Jz`Tl-3NfHrC+?1O!)wU@vPklG4kHy z01NEBiSKS^MW?Awr#S|HJ_2^4Cq`MTEsrKCCk?fq+^-~I*}dV?25>0GRZkDK&VJT2 zZO+&jX{!$SV%X0)CBvRI?p@lgM6zf80a-^({@D_v??U?b(o-USq+GU4B85F$|AFJZ zLHN6I8*?>V?M>=a+I6z2=F){BL)WrT${CN&KMM>LjZZ`!L5bBTKKag!6{EsnK#)@7XhI-MTlFId9q(b$3Z70mN+-gJ_yndMmF%hpA?zEbDGD+XU? zk}f7p!xa7EL|3VYU6y)aAs{kkP-1O==#%>RYaW4VZqO|!ztSIMd>$L*2?e|kADSJv zSqyhvBm-9JKbqsu6{`d|uaWwMtgtH%l%K|U?vk^Lt-9c45Vf<+kXU!R_;QGmSGkwE z*QI-jBJ(00qX+{pWdLzFqfPg*g1oro=m|G2eXub(Za#Ye1d?VvEcas=;d& zWklyeuwocdj%DF}U+)VCa=$@hTD}(jpxEK+kc^ESTbHAjC&Nj83Yh&EPA~Gb27=z; zRMYw?!}zK}M&SOGS&H4hl8R@S3_(qQ$Q&!j@Qq}h>r0a{!?X7?C%ca{jo@F3y0iLq zYNBJ_ARIBX6K<&5s^u@) zv**5++#gm_puRzzD7`V^nn;DN(VlGUA(*O^%gRf)(tEA49JMY<*M$X|M`ENMJiuDg zLaV*Ir9f0loyVq#f@{rzM^o=}VA!#BR+asFh>0ASuc&R}LzQ>avrEC{xDwbI(Y-1O zpUH{fhmK+eDU=9erqt-^Fc+27B5kdBQx*oc%;V>e-38d+m$EeGMQva2_?w}8e)71o z_|rB#a@g7Zk#4ZrSQ9FOZb23ll(D!tOj{lHt*jn21{e@l#c5TE}&wq!VV*cbBosIj?_wif#tkb;GD-`@?WJd|I#Y2{&8pv z&5#Dt&TqAN&F#F{X?yeX)yZ#RMK$$10nezwkyR0SI?8Ma zXykI{hW=FJ?>XJzfh4lts(?Z(P1{6eRNni*kw6|U&IS)w>~)$}CO$A(>AF?bUjE3FMz!#0BZdr=Y$x*yp&df_cGg7EhPb1E!vNmIgh2 z_Hhv3j=VE5yV>%E4b1I)O3+OPKf|)XZo`?+-ODZ}c1V1Dqj5dN96=t=9pfl_XnOvB zUFqqvfqXrm1Zk|8>r}dKy-mAsZRb@_ENT#ct8U3wnYowg?j|(P)6s4DzaR3oFby@^gqzGw{-MH*u1arWZn2UG z?S4{wS@hA;R0_XbDp?T!Qp|&+Y!CpNAV=37i)sl0;%@7vRYE8wMYR@&wn=Mf%|;{h#}uM+6NA)X>!NE?OWtO|K%WGi)I?dv>}a(0 zz8iL>F^jL=wtF(ni-*p%Sz*Er=H*{1TnC+Y|26vt7$%EeDgzD^nr+b3EvWrM0>PpN z4^0_8j^5rjF)%EN7uNWNLE^)G7$4m8ww(pYzz5&Y6oB;dzHaxT>vzuQJ{^pRCxJzV z1<1qFl}Me@VO@Nezlwh9FV0NwWq*v+#L=wVgrVV12vGrbBdPtJ4tr6`vJopyM5bab zugltdqabM6!?F=v?d4QUcg;JeuSItr4XnE^1*!i_D5mNW#00dOLsK=f{_=J0MLg}f z2B;gqBrv+cwYT{#HteJIlEDxd=rE|ELOOEQd zbCOF+29V>2Wj55HxT)c9$m3J-ppkFLh<{{rrG3T=wmhqQ=SusPv{|7dO%izOuTu&jaGFFDF?rep|#gzWM_YS0d|hF(#uR`colSDX`P% z)#Y?PU&yM3EN{jh7Qm_;H)1~5h19(H@9J)3c=Cni+`{fUV8<2K$g|BpczudGA_2T| zYO6!PXYY36%zx(#Fhoi~jXVIjwOZpgBt*+J13oV7_OAsxI$Zm0RaMdUj(-?}FUHT| zP223aoMxIvyiMllDb*DNZ-sFFf2ySjZig|?+7S)k;*4})Ck+?8%f!<|ogfmt#V>&) zQtzfC5`BF~CoWn!#*NQF_yr-N8jLD_p2o(dWtYxfh^R0k1Mg`7h9aMAr4g`|uIJIk z%*zu^@4}uLcJ5w`gLix|v^g&MvA6%YNT;|*A-Hk`eGJG{Fdj*w+gk%_(vcAoTv`&@ z^l|jh0P`Zr1<=+p!cY^5B9Mw0m-Q~y-mV(d z9B`RRep8Z9?-OGA!RhVNRn?@YU}SEg-BGC5Ez%$>hbPTA)|Zqd8!q2?OEUr;DwDcz zRA?S#2TU#k&0$?1T2%o}T@#Bg<4}EsomQUWSw;e_OMo9}D}H;j>O;8Kc^f7JFiQj0 z#(;JMy#j~BarfEZ&H{5ayS@`@i(b;2{Z$qEd2N=T7lX4AojB(bJk@u+h)f6(rtg<* zjSo1m8=pBNBXhrQrhku8%HQ>!f=2KCBe<{_G7!e|5VLW9m3rsY6qU)ATtSdm^U=j)zBSQEGna&OG{Z$>61D134-5s~I_h~0{3T@UY8$FXCs)p>4q4|5+;{nlN} zvlmDCKIJKnhlRTB_XfnC1j;0&tt(m~g`ORIlyKa^XK0tMhT-r87Z@W5CTzQDo&FVr zd?7ovxF4$B*;HL*vv*IL;j{^tRY%O91c(7H=v)@yb{@Ro(zYF8xiUkn{HeGrPXMHheLsUzvBK$`$@QHJQKQj`b%EKlGwpm9u?;3Xin zCfE>LNGxbPmNG5{;)wl@b=aM~WPef}lJC+B;LG$4A9cr6Jut{TByXdgUi6L3IiShm z1|Qb}fWPZ^M{J?^2OPgU&7K6E&GCGNZl8zgp5b<|cYHe!08H~Q3BApaj|zWpz0)4o30A@+NW*>tB48?m%Y2jD>P z3LBHQ@4n% z*jyA3(4FY``@9Op8f!J>5(Zgo;)`S{kYH0iI4Hw6!(`reRFstX_-{x-c-|nO))4vf zHez6GPLHu;pY0~T`@vxJTykDuvH)>Zu9qj@?O3wG5bEtbfAJ5+xipg19$lh6su$MnSg?c1qNS|&p$z%uV<#u2`e z$H^V}qV33kJ{79UkPWmGl7#%TGV-~rsU{IsPh~DBu~a|n+6|dzIh&D4)l~s<<}7DXbb;yjkeN?n%YCX z;WXnbmJ=sdz@qGtgl^%e{lBdUuLQzFdO_iM2;<*%h08nvm#Dhbts!tjg+ZodD8+I zj=?5r12!+b3u7DiIi3(5|9)OI7a^ya&hKjL=oTsHCzC{Q9tf~iyQ2iTrva)*l_XXm2B&w#E zjzTS3X2Kn9g~``)O;il6XBka+bkE2r?EXmmCY#omOKLjAzaM;aI0^=1Lr; zDfpP^IzRQW6^xc1F3953TuIscl+L1co}8Wc+Cer1_QA511f{Xuje;=*7hI|_8g|x- zNQ%;h`!V$2(J{|%AWJObN?F^|(A*A$a=Q}MJ!;}TOC5Qf=URN^p8_F*{pS(<}IQHb-I8_8)$t8qHno?lknh1-{sLO zY*T3oH=88yW8!Nb1s>frldmHAc0P@!VUWJV&zX#gtlIBhHoQJp0A!}vrFsYS{_Jg7 z)aHTe#10(RE@V|7^_plp?kuxty?@-hf3*F!q-0T5kMgGVaw$kzrcR1 zk$c!1hULAE`jSu)z`4d(i&r88JRlGF&(leT`OlMfRh9XQ$nd#y$1sOOe%{zOf03#>uuv0@ zwYp-jkxY5>1JI6THX}OU6|^gF=yR3J2`6x^u2)Gq{|h#2-r5x z3~ZzKcwBD@CrWs{w#MH#Lbl{9C%B_a{9%2M z#!m_;0poUbUP2q zYJUrBMCDqNr09~b9-i%c&Fp$oCI}EqJYJEtuIw-5u@7mL0oW*7M9;(U&sqPzyPt{B zCQu51i}w{o3ho9y1fC@0)>A`Cb(U1#-fkZL$MArx-U)Q_`QFrECi2KjqoFAi4 zlP(o&oMKz3Z$A}q+rzoK*ObnfYW5-7F;tkRhp?6`9rlxdBX8GnR5-=|D;Q0G?U;&I z3KN?cPFD0R5yQfgSR-=(VZSqt(%XRPlYj{D?3uMG^z_(zHO^*b7~|9|5p>w(#iNGt zyEtR4nO4F!rYiO z^b5=Zb*AIBkHN5`7b-FjtrkQE-G%wuud<+K7wvHvvjT)_bF1UGPsVJtPE}&nST8T8sweDQ}Yfe<5Ab$w)QkJXl4ER6W5EkzJT{& zU5Pr(F1;u4?Ci|Q&L+VZhH-~sJqyk8rH&W#|! zE6!XbqWJR9uTqWbGZ|A&0561E9{?fJKBt`18miFOT-e9wy#XkgrXO2Q5;Dh`8-s9@ zAv!#Jg{syc4qh`SE{!kkvn@Pn8{;o8FM&R3Bp7z`nKAX^i`q+}tI0(#nk_26jFod4 z!vUl;V;t~th=hPuB&jB*sHjc1b;=Q~a8I6W?b%~X31|DN-+Nt)PF%ipWTvHC>c50z z+^TXdl{vy9;MrrB5y>9`+eGBIR%;C9ggJZ#OCuymHU@*7jG;u8ZCvaYpD} z>*A+9@4_wjp7o#8H|J{IG}CQ=Yjl=fIo6bUQ}f`nu%qf0vuezNEhwp%FFJlIGo&#d ztTMf1`+O>2Fas#6!-ZW1dru^7j%9e(WVj}rc`j3e;RZUK{eZUb9P1$yhyOFWuiJ2A U3(M)V!0sZ0r>mdKI;Vst0Psyx%K!iX literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_3_0/00001.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_3_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_4_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_4_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..87b4d22b24c77709771048eac482c874831212b4 GIT binary patch literal 15536 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 V3NNJwIEl<)Vq|%}=Bj(b{{qu&aN+;} literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_4_0/00001.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_4_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_5_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_5_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..46c831e49e0c8336e3f38542dba11fe37caaaea1 GIT binary patch literal 14640 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_5_0/00001.png b/tests/snapshots/stax/test_sign_psbt_with_external_inputs_2_5_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..03e7b30e1a474d4782bbd36c9438018c7a414d88 GIT binary patch literal 7645 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_naked_opreturn_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_naked_opreturn_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..3df60593c7457b9f335d59684965d0e03401a8c0 GIT binary patch literal 9304 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 C%;3oY literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_naked_opreturn_1_0/00001.png b/tests/snapshots/stax/test_sign_psbt_with_naked_opreturn_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_naked_opreturn_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_naked_opreturn_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..76668665339403b0c48f1baac8ef29c6a87338a6 GIT binary patch literal 7345 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_naked_opreturn_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_naked_opreturn_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_opreturn_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_opreturn_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..480e7557f63dcab85f7a0a362b7d80db522bb42b GIT binary patch literal 24758 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

    BIOu6 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_opreturn_1_0/00001.png b/tests/snapshots/stax/test_sign_psbt_with_opreturn_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_opreturn_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_opreturn_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..76668665339403b0c48f1baac8ef29c6a87338a6 GIT binary patch literal 7345 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_opreturn_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_opreturn_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_opreturn_v1_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_opreturn_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..480e7557f63dcab85f7a0a362b7d80db522bb42b GIT binary patch literal 24758 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

    BIOu6 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_opreturn_v1_1_0/00001.png b/tests/snapshots/stax/test_sign_psbt_with_opreturn_v1_1_0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae32d910c169ecde1d2ee93d83229b0f311de5 GIT binary patch literal 3660 zcmeH~ZB)`%9LKTMu`*@LGiQcTbGoxdYPPBK0jgEjX0Y1kC=E58o(d_n3?Bfet+o_t z$C5cRn{9cT8IUV*D5OrYp|XvU5+K&!`41KT5d!kO|F+k??}hipJ?D4tJ@@<`KHuLx z_v?@FX@M)lRw59Hz&*Qn>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_opreturn_v1_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_opreturn_v1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..76668665339403b0c48f1baac8ef29c6a87338a6 GIT binary patch literal 7345 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_opreturn_v1_3_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_opreturn_v1_3_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_segwit_v16_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_segwit_v16_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..6ccba4e59b0fafe039ad239ef624e770f2231efb GIT binary patch literal 11414 zcmeHtXH=70w=TloqS8c>E~pey5u|spQ6f!55JD#e1f+&8MHED-8kF7y0Sz6D0YclL zK@22fAV>{Ji4sGA&_V*-m+d}deBZA-#yw}8bADWYLGtphwdQ)}oX>pbe0tNunCFP- z5jHk99+1iPTWo9xp0Tm9mmFdTKGC*pt72o5cLH6%ayz1cI!Vn%)NgDCEp%9LXvuio zcp`I2#`Q3mJ?nwY-NUyYzBnaga`;v^%ca^kn7k}~{tb3#r!B8WzQ~iAFMWMWTbvgJ zzs|P2u}i87XJf;hsb_n0#r43=M_ueC2jl;|%)`$0K=cnmHnl_YY(7Wr*oIF14?eI< zUp)C`jzXafqXU~rBvO1hT{mv5$V>(Vj}JGXJvmyM_%A!|;7#Iiy32O{OZWf6qx?6S zljTK3(l(iL$#7{UOn>WXw!McU92fBPQn^w&1V!7Nz))Yi3bhx7R3q!A_@|36L9*-R zu^2wd3VAFw>_UwRo8={ltBuVG!{;Ff4b+<0bP0~}GE`n)Kk;5Gf%(X(7CWbrUGkzO zBo`+%jzFBpDm%JCt`!C#UHDwyQleZbkc}f<2@9e%Q)VNOU^UxYBkN&ko{@l>m(=$f@5ZU3^No{}{%0@#6__nr z#e-5PywbTkA1q?{9JXYgwD>?n$J-y#sTz9QXxDpj?hsXgulnAzid5Ek`~9-I zR(Gy2Dq*zX|v}|3=<4?htWI)x5k=#(>mtf(?}iCI$)(MT3BwAzYC5pS4ik-ODXRI9ty zOdQNw17^meWtN5xksh_9A!ahi! zp-BkP3cxbVYpw?rRbyO1=My1QgDwxvbXu-7mZ{XUB8Un39LvFk3^x!OxXJaX$p}-U zx0NRgmK^exFc~|R&01`VszF@X@a@Gc47>GD%4VM+=)!cS*+e(o!iAi0uBAfVt?moH zz^C(sMWdt>-OPx#R*E{FJp?qX%z{musJFbig2=x7v5mW9ossN>Eod z_tF7Nope8LZ?frz@{@*kKu2(GkvTAh>{`(#%<1 zbL(7at8-mX?vfQn))55%waIL)9ibqLOOE!gbdB)U!6TPLofNZ8A!g#e8T~b!fx{jb zHxCE?copJ&bWsjcJ$<%gyw;#&TxvMfNgy$<*+RT`RsLJAUh~2-H+O-} z^g3@+5AFKWeIMIq4)mmd^b8}~pVqSy@r(J%-Z!InRvfKoL@IkKVX((ntA%Z>U;L}^ zfakiEQ}=);olYlgMt30)v9YnD8Bb#$w$=)z7?P|jva$2QEzx~>*hWWrLA=4~uE~mD z$1p(?u?W~!f)#mU%lMuXbx1YJBY(gXJ-Hnx3p(TbZ0Qv#i5lix!{cB>SPFB* z&%%uF2zOh{IkKBMg~_}>4Mez+A0r<2o;6N&BfBqk@zCmCFc6>M(s_NrG**yxId?6X{~KQ{nQT8mnt5x_H!hjb&|daWQs&wLfF$WcZ^9 z2C&i^03(aw6MND6N%WSUfRi|s(;kep+3+z(>j>UnWqCp0puTO`CzSMV6`fXKb168z z8%E@AYucn9OBb>bJXv&%F^6Rl!B11;qq!?X(k1Ql0|vTumYuJJomR288Fp{D%V!AWxsUFH&b!_^vZzh&vP!vR;6(9G=dr7udpk5d9>2L6 z&U_+auTnBRKE+2t09YidM@4cpjfks|8UJO(EG<%!E@NqG37;c+ zof!(f$X9cuxKF>Yn{6#mseV;gG5Jh#X=`mj%vPX{jiFU)YD>Q0!IF_wr>lDp@EZ`~ zfoWcqgIT%}_M-Y8f)9EJPS`0&L2J@xH5a3jqpmrPK<(4}k@Q|i84z;Nir3zh`cR0GLtyB{0n=WkpUHj)zJST3<= z$8K`Y7vr=*Sz)ezCbq<>23GDtO8i7g`^Nc*k#^o!;=y~7ey`lg?UOmvSBRQ>Q)&E9T`*v5@0 z1fr3sPL$gDtF^WqI+xK67ON#`WkcO9Sc{&R%7Ij=VVuSfJOOB=h37Pl5?tn%a@C+RVBf@kxv9pdBu+dzol$ z^D^YpcmTt*1ZitTdOu#HTB6OlWvp;;I*7oT74rOZqhsAj8p`9|eKW#rg*PREq8AMYwW1! zn?pkG%>hp<1-XJ|OJPUgj+$Ke6Td2-2W%AY+5L~8*i`i=TM01GXt&adojHKhGBA?pP_TA@s%II9=jIOE_2VJU-oUjm zfs#kc7*-3e8wqtf3;K%cZmoq%Pg&kvENF8c2^H@R?iDsjqgN#E+<|qk25M+~wHntv z2l(bW1Ct^BX5j~%=EQFJuO|-~rGByQF9I^`e4FGmMe=v=e+m*0w{U3&4v5K-#}>e1 z^=xeVgr15r8po-uIr%vLOX;&rK>%du9PBav{_0PoJOJZ@yQ2IQU1C;$$+70W9&2X4A; zcb!kZDskXq#$JB(j+MYmXp3`QK-5*e2Yi=IUHf3S=36Q=>pBPP*_UY%SF)G+Q$BWU zR2RT-T6;&m*(5CqHr)tBG#F|hrd=p}mvi@=_51qQ4aa#eG8QbwdpRrv>h^uu^wqok z@0v>v-?YLt#rQ#+r9qo&hT5soN6SQ-qQ5Cj+zA!16p02=`QFZawv?5 zoB0T_18Da--dBzC00Wx!5P{fM4VzQ=dfP-1h;1M}7UR<}VEZf}na4)mx!W|#y(jW2 z3+zKyv*Ds_Zf-{CN@N%ppCgXV0vYnV5Ldq8*LpMfT!e0sMdj>@u=f3tbp9Q|R`xF=mOgcb8*r}c8hi;itt1GzWpI5vUe}sGwi#L+2AH*_uNF^fr z{5|pW*5^QQj02f&Kc$RGIN38}E}79Ah!^9!2^=4GKgbnXc72Pu5GduVS^pTn0Fb~8 zH%6y0H7om&*n_m;eIvo{ue^KQp>(czDb$IiR|W(M*7{!`m-^1}X z&HC*M#e~_&LP#uR>o_=TK5mamnhze$bu1KH6ubFr+|B20`Nm;q5xbdZQ(X?bL|)Vl z!cZ}#wU(~yqLA(4;sR9Og)=AA=Z%)ckVChaW;7kbWN`}G!OltmxDa`)XeAPH{%{?T zjB_7nuteXKXN@u1lthgWLYrqMawY7j;g$ zrK}MHWCi?9;dCHI{j z0{dE4W(N2$NXE^t0y(e7Xe5;Y7g#*~F@8AQtEzq&=8|2HI4@ET-1d@V$z-4kW{X4! zLsMCl!R-3K4Pz#0r+)~6Sj2kP)lvX^L_izt91A&=jf%)n`^SYH7>89DWH+CbhC#jY zxWg%%Xtj^b{OAhw9x>$^BX_1C*g$Vmc((J!3+boa$w|l<`t*2Ja;s-+k}nJg_=Kjo zsDrmti1UkRu9F*-98kh3pOq7m^VB)jI)-D!RMFkx9AO z`LB0|zs+nYJ_U|lI4lpbv(KW2p#z`2sawCBss&*8lm^CQ-{&Mq$8(d0wH#kU?U_@` ztG47{7h6a@%MV0>YtpIH0^3b7@WV2S*(noGDq=_-Z#U+az4~_#wd5MjZfHvFA@;$R znZJ23cDC}S2*h*8=N7XH2hmk7d$_;y1T$8RlTGwrm5W!u`tYy z&D$ncY!RFxhY$Qe3Q3-AlD7L{;4?=@0jz5HMp47*I%6w=-XM}+2!JJUJ5nWYR>`H3 z@Rn{eXMcIO24~E%e-}}{Wc3)XDtRnG`&w(q1N_wUXG|&p6s!~Vd*&`yFGtpc;GdeT zGJ4AYO%m{I6mBzS*eNn56>^+8+Bn!2RpA^e|adc_n!yTpK@F%;Gz_8WiWzU5}I&hoMyk@kp8pN^qVF^ z8q_Fn3cs$PwI!}89A@O4`hAp%iU7BlPzIfDJrc^S8SqpQ@B6(oubj5T6Z&H6Ao%QxTn6L? zGfxz9P~wBhZ)-jT%#2lzdq1HQF!4~I@hYX8UccU(^x4z~2ic2@p=XJkcT z(tO6KFs#M#px_fQeII3j+w2265$0A1n^6J+c_7iA`QYt8U+jb*7BhY+4a$N7E>h09 zca40&`fryicHQo3bySFH!o4ok3jD_h&gR5|A1N(_XhZFZIRnq7`xwy@Mc@Ac<6|xV zX>woMIiT42CL)ph<+o*X`y*23-t38ifIq2TBe;a5n{59sGShim!*397$2LPuGJZp} z87Pjv(he2B9MZbjEN>cl7mg%?nQeMZ;D(FH01Y#!LC)v} z#-mgyJgi-4)$n;;d?EhS(^beV)4_IgfcP>QFC0iC3{ zxVTL{c~~b&Q7|PumZi9B4}9G)de6C?t3A2Y4ye_OtA;;oc>!gI4?u2`{{|LJyU-bx zf0>irH;S@8mT{#0)g?1L8KxQb9$Z7DAm8x-HF|P)I5I50N`kJlf-Ug!#J^lEGmHA8kfMFPwuAWzc4kv<(xXJnLdld z7S13|;;xn7w6TdS!s2(|ahSs#WpoQI3MEw{6`sXa(Uq=<`s$HhHxhSucZ={|okdD_ z4(kM%3HGjBb|a%Z|5E$h@#n#jbo<8lBX* z-ZiJIB6ZX@cI4>2$M;1>WGxbM}Z%`tO zP>RZ6-yN+{e^eTv@^6aiiSvfjwDd_pAg@;{mhM}Lc+so$S<(yA-}OjXjTl9>#cv5_ zg_KnzlX|X5IE~(IQ;jvJBkQ}L`E*ho>^ex<6+Z#Jrx=f(RQSamhLfjPHmof977rXY zl;y3ihYs%I!-2@g=LR{DhIIa>uso`&U$31hGZ8X7d6>g=H3&7Xc4jqNA0^};0v^XE zaEWL1V$d`8tH@oJ802yIi5$&(R`KVK=TDXmLS}pF8i@3?l)(6W_9~TA-LiIMN(QIx zP$RfTdvjwm&hn!_%2zS4#gWBcm?qzOP-}eV+;>x# z#BcOO{L`A>2352t@u?K)cSQvGuX(Qso`hpxKvL;u|qh z%%x-H4I7EkM<+z(Qa*kMT1OO$ud7*%8Ken;=rCudJc@BS&wUoj#0pT>^K=4d5I}7P zlpY!|^kmpZ%ywls5TrjK^fKQEsn1>b5_2IyvQd%m zEHbJ0(}Wdw{%)rUll^8Eba(LJj0*3VWNaFeV}YxhHnx zJM&#xK4csBR#NW0bezQ*d6pd0YlG?j|h4V!8tK*!u{bh}9Q`MG!XKqmXmO`^?7OD_gq!`wA`sn@Hr|g@yLddh2fF~B8mEzi zNg2@gIi=wZBvv=3yN9nKgj)59$9bvt<*Z&YAo@jabPL*&MVH1oU0+8^US0W=AeDx! zTmAI1x3_p^8&TQyUGl>e&^#VdNQA=kJt2&E<=cKvz)a zkNsr|z3lxj98+`z&0G5LL9o*wwsG zODHyYu~h+Rdya2uehgx*Ii-AV1pJUVCXX%ZT+dxQIpl+c3krI#yB(@Nr#5CDS(FXX z=s_Q3)S$#pS*ntEUPqMTB|Ub^#i39qo8ilGHMPD5zhtz7wC6Sw`h zwi^-+s7}$B5@1U{)>pU9V{NeWjZSudw|x!vh-1hniD zLg};LP&P??pX)yGwPrZ_dDWms?=7}YQNz;2U%0qO+^ia2?77 z#WEzCV(a172?+YhrOT$ydT;c5s@h+Qzu;yiampx8p)9yd64#Xhdc|KGC>-1FjFqHf zK4q&O`Kr239fmDQ&K9pg-yV9FUO@4+Q?u-aFpA5-4drb}}s(RJ9XJ8$YMv zXV}^Wh{_G!rE(r6%Zpb+TU*B*`mU(uRWWyfe(CZzr4wK~MM%vgHOxCtT|xAQL@17& zJgfOj4>TgREvDC!VfOJ^$E~ea+S|VQ_wm7?c%#U?imy}83)&$U_M6Gu4V7r~X0XsB(mPLZC~X4+s^<$@T$;FbKqjA!m)8x^lRdr?a`?u3sPR4r zlz%yW`;nxga$MD?3RqnyKN1AJ4Gq);haBI zOX_&e#LdulTQjQbn{rPn@{*tMjn0TT@cGZ1tCo(^nvx6mxVc+9?U*qAOSi_06y_Aa zPU@Lk!E04+c)<1#2}}r3*0uWyXw<4%tXU1eCDk;RgL6I~pCcH*uH4~wtiw*=<7HR1 zsh1*lgUz%bYsesv+A^~T+%A#~LzB4NMyn;SOe}ftubPRdn|$!$&n)H0a#*mp=B8S7 zI|2bT@YIR#bPl#AC;~7hQbO&sfKp)3COcBEu=ujKQJ*e|ah;)9m&SN!YU4BlWMbjt z>20sQ&(k}_?jK7-hu+D8rUf$)u4|o2Yty#=dT)$@I-W$M0Dbb2*ss^bd($pR@0N^p ze%NowE4Ezh^(q4(8Ekxj(bm`h7=ie%DY50EK$w6gx4nJ|^Jh`r8|CSei28C_x>ot0 zbDP%}uB9_rC~SGQsKw{F=nE)`At?`6rGnyNjUhSC`2sG!8x- z(oq=U76>f*HQBCG$us&j+}iST_R;?cp(p(p^Vy1%mE`}NGg7Ua;+kH+>-OI^eT0cC zmHSL*4WkdRjqIFFE|ms3w~Mg_o&@@A|Fg4BMBm#sHd*sko9r4@lsuOSuATiX(XrTy zqqps}Dq(o&_d)!gzjg&azewT|GeUIaEop+ z9##8AE8O^mGY*VZTtXhIw(71ehAE`a(r7ffWW@eY6U5F20Q_cX9cJW4Wh1N)5bO4S zIm|3~r^S6XDuhvAP7J+$(W8pt-mErO2qO?_`T;$afCOG>Bq6$M(3%hvo&5zo9y_wf z=UdQ)org<yq;#ht0R}Jat7RNDPG3Rfc`4vA`BGx27Vnjt5 z^94E*8HElY!dkSx#ztpD{j!saA_%^5I(2kgn(Q|%Bm_*H_|Wt@?w+cT;^EBNOGr2y zSkiek{c*@{r=&eoj5{95IDzB01Hlt`I9)oxHQO6)DqLeq(xMy>InvUX<&6Ae;B+D* zMa&MEk}4!e&WT(Wiy!tqRj-h3N{&-52GV?iMJ1gf9?Qlm{({@vl=6*xWZ8(^2-E~V zm&dZ;t6c4l3ca&~dptmQHbQq}hey)6c}2tmE^TgI{A#BB>7;*nizANQ#K#XwCEbAN zeRbwCXq_2dZqlnp20!k>Ja-9Z5zlG`6n1KMg1w2rZ7!SW?A=V$;`jkzVv(zw@N=$5 zCc3Jwb9!X9fa0*4K8A5-jP!IaW;)9J!kTv`dFOrR)QO%%eT*(iq5vXuAtitYOl+kU znh}QfD%&BHi~>}=iz5WNd)_?arbgj`5ce-T0IWJXIspO%RXoF=xufscL1(3o{xBog1R#UN z9en4{T(%NOqlXbhEHPh!`lQ2K;O zu_iFP@6|tup}|kVu^TQN`#sbu Tf9~2kIop+8k>uJ>pgg-T9z^&cc)L9tdZb5N^ zDIXtE<#U}KvY>zWx^BZUFC1^51XvkvJZHEAU!28v*>%#W_55mFNYiLSPr33p0mJ8O zF8*NZ7I^P4pv*SR#ddD$L=uRSGcb?o#a*dxDybrNV(J$xxo z)OzaXL8Ub_uBY)BTD_?FxqK&#DY%p$Jg9kMroXzrX0XWai*ts{x6bd6y6`Ok``$vE5~U3(xw5eXbD`yTq&?(CBsVA8np({FU?3U+)C%(%@XvpiK1pz*4D^ zj0gEg?eKyY_{fEXbJHBa?*OmjxA%X~HIb}T?Il(D06qBMH^!Q_$B}LFp=U_2&kUG1 PW&;^oT(7i7x0=jmY;?v0j&G$knNA1Kf-^OymO_nr3^dI{9zqRK4g#Gf-_g=3 z6-N=6w1zwzXr!j*IHqPuh)Rff$dnM#6h#z){WRC!``TajhxfxiTywq82i9}Jde-7z z>t6SL|9{UFF8xcz^$cp5BI^_4GFWx^*M)jVtU~rJkO}9-r^OJBKNe zi-qX7aI;^}HVWu^2Ob?i^W)VM&#lIHeYI)phT~Uv`ECu|x_{Hbn={!gNJHpV+bw2o znEA@DtG4YhG~KC+V+nn&^LC7PsXbOk^{(FE^vTu}byvUnziqVX^9KKTCzVP^DalVr zI_>iM(!v}sty%NrP-8())RlR^tsNlaUAHc5h}a4=sNmT59{A6Alj1#+8z2hU_NyK3 z8-L&Rmuhb7#AzwAQl>rje1tO)_|NNK6P>vdYsiKl!byqM}B|yOb|kHDDV(t;KJttdT9_ zsHXYvun;QL@Ziymms3}SG}~V00>+&RO=^)pw-`ATj7D%J3MKIjLJ$zZktl?TLy%H) zNVI?D^b4kKdNYC?UA)TF>Z61?$X#sds6 z0NgHD`>0&>;ef)Ot8n)#QnGH>T>YCOK;J8KR`B4)Q>!h|#$eli?8-3$YGW(PdD|v5 zH^N|Y0du5iB<h+G7FpzI7dqD@yE8zveO+&5TOcZIoqxBqgOPZ;te$Cmy3F#2 zC+48zsVl3vA|<*dM~p0l*3;dh0|J0OI~wi!xS#=w-jE`;36|~^Oq4HGR6G$~Hob_R z%NNNV@4TAv9omtu`dzJ`kR{+)B4wYMrra9BwH?d7j?u%HeZw% z9r8q&s1)1RDY{TG7f0jR3IMZ&rDEJ|kCFD3Yk9Bo<>B8eme60(?<3V<- zPF$^4OLSKA4y>pN+)z`-^<}Al)Bdd7++3R9LpeF~=H$Xtg_keOwo=w4MA&CVsvsX2 zZb~Zn!)nH;7NyMV*?Y*!0^}&FgWDkfG)d+`9Ep_V@eo3Qxh1gh_33M_Zs}CQO_bmY zu*&jTIo;TkN0hn3d2K^St+2vQu{XxqooyRnjWL$h65GMEax``3?9uj#qU|}jpCb%7MEvj+ z#MSTY?!2CN{7M(6dNGnhvIIMRdFLc2Zc_P2c+0yncRV@T^X%-3+A7waHRLZFVfY0E zbdsPJryZLwn7|oYDrj%;9c}n}3`;n_0_-%?NG^#FI|POamE;|b8N|Gg%jQ+ai*J}I zv3#GNQU?S9HL0)oF39k+Dy4VLguS}f@m=F6vBzL+@nGS4LagPTlakgTi<%nLml9LC zY>U8N?u7aILPOW2yN5@uK<0+@EyKDh+gzMrLmk-#;q}13R5uoXoa9Pl1`fBTkZ=_W z#aJ7OPNUK2bo($Za8DtTxOO^yRbzVv4sC6hRZ2MZc6oUj$W2pI(Jf)&s~Ii9>hXG= zhNT(O7@XE}SmBev@5$f%fn=+J5uYn^fe6SJRSRUR8QP_#f&BFGGxkgo@tEX^c72tv z;19+RV*NvHjj=R#W=kSlwB&or^2RT|)?mlX!w4|3Tma!?i(sJH%wDr5#I>cYSb(9V{I$L6MrvF?K|lC zwZRPx9)G?%5O`RvX$9{s)j(a~A>>$u#k6ED!odARin9QSueQc<;SxCdZfT@#Hv^nkFQUvUi6qC0m^5f~~!yK+LwQ!<$h*OIm`t6S-<%8*I<0882degF_Zmw+;an73#Y&9iTx1BS());GMobActqPr?jJa#A6 znewGe%!nxyGfXsL9KB}t@thM;0^2r1>$2pw<$4duDp>pVsLvI{WWx$&R4EVtbjRmp>*8*fwRpCbfUxW)veX{bs-|6oQi90ZE3O4 z94YzJf+QK~WdmvLV;K5QjqS%CXn;MZEfDnfz1>xLy8vr3&akZ8MhbHXCxnNYuw zzl!Wp%D#3}evX)*pO^j|am>^L`N83|c8bL&tmP*VajMTna*lHbV-`L=mr=$8VqS9~ z7#~ru8M#2HP?*k@sAs?Jh~Kjd6O}I*?eQK)Kq?Cl z!mFJ8a#}Zoaw3qe$-kl01>DDDlPN%uEX=Uc=k6Z)CRnG{CDF`Vedt?cZ}(AJ4o5Ls zb#d64T*_WLQ5Lv%rN)Z#vdwFIAnT?-cd{pHQF?bgngUL~mT4Ba+mnkTw2e7s-UN%1 z+wXBkzrYy3eV_j5VM{eE*A+(4g`V9_Cn^qEz$l#Qfw5EDt8IH@_AXsIwq`Zvln*(4 zUVt8cU{xlstS~*&FS)*tqS?rarP-@yhLz9Cc-_G5hr0HSAnu+W=9`Jz{&IETU$3(L zmqmX;x$>_~{r|D4fNaF;gI=aJSIgG;J=S?WKped#Uu}5F1f*FAxjL{CpY#cPZ!r5D z8PFMzn8f`%k8o$+Xm>r+f!ZOFF=Qo zv9$Cs=;VS*XrahBD#|PgjF(Ul9Kg+ZNX>CPx=V3sYTN z_{N$a%6OL?DPsJ=r{MOrPiLBHDk>zH>KfT}eNeHp8)_w@`*D16RgKJ@Ywy-e-l&nz zY7%_BP*N{6f}sNuqHuHP@KzE#W%8(2ly_}~ny__<3RGE4TM=VM;ZEno$ZZG#0g6?3 z3zcnQ@6zwyS*5Dfpubxc%n*Io-qp zj28=)e*i*27$k4==NvE2o6|SJr;fhJfYi!x4WVe)Ux+`+-5jV;%USq@VMK5T_)uYQ zD$bd!DBYh``o*1-(#@#&wbUPM{Ys)kLdXnjUP_v*m$+FcrdF5)MgsVOYXcL^J{sKGpwqkSlw3sF(~#O&9jiQdt#6hk zw3W|4=nJbOLvQqxC@7do^F$<{>iR0$6;vg|u|)`0x%p>R_)}emQhd52F*zZ z?hNAomPa`t--py3?Y@;)fHMVF2CVTK6I^hb`!3<5EU*UI{D$UMfJ{AyLG9c&Uu)Z2 zPw#hj6_!sj-MRelIMFw3aCYQ}X6o=BDTAJ4+kEAahyU<&>ILGG*QfIXhBm<~shFR> zk#B@QYfgRa_joyVW?>AK5i+lDfhLx}(z$tW}o)j+SKoyr5L-+c>)%5OYKS7m$5K9_9z^JMZ#@||%_$D?LDxZAtI44doO0B$Rc{9<@ zKP@KdWFAAHD@brzfg%nZa=c@Inr&_Y9|oz1TU#nB-`6 zS!vmIp^kq4py0|JwdqCFk&s#e8qwC;>Uab6VlqXt-3P_kN%|>-{JCdJVeJ$qQCT-< zO(^>o*YfbLK|sKru1Q)f)^wV7tD6z}x#!_^StL-3zC+JDe{);Lgx^(_Iq!Ye){&%=3G$vyBs?4UIO2BS!VeE-2Aq<;x8Af0{`QOOpLc|GS$}v`(y{$3!l#@T_QpBxf8me+EJOJZ zZu#Fmw{G9dl&9h6IeMxQ9RR|7tye~OT;;m#-Soc*HLKK*Dk^My@kyIwD`ms>b2%TO ztg3OQX%xxMWapkNE8V~7-iGOsEw2FqsF&Fj#S|vmjeXxL0MG`J*vCwCrPh2*FMUaS zgKYu=3Yb^Uo!t%8^vpzn_buht5^HN@O&_ONbO)rnQ;F&^6}P|Gsczb-J6)9MsB@my zXf%AUdEk?|kI@gLDoRos@WW}53x$JpTe#@9dP(}6jrNLlC@N5#K&mA zbA54E*0Rd=4cpAnb zV>I;)HuYswjiC-7e@$bQuB8Nq?(Up8-sk$rHyw4%blEb*uw=HXA$y_~7?co@H=mg;LQ>BGmrbmxk?4ltnGNEsRC zcGaY}(+rkyRxYo`9!MjXL3l9 zZI;^w&TdhC`s;~0=!{{YVtbs&RdClQa+Z}BeMMiQ5x8zndlWJrv?<|8QGL33u@InP z<%c|muXpU&M>V<*cC(P<4=2l=up>Fzw>V=rP;M@yPv3IG&TT_JKo(Z1oY(dyeC=4| zJ32N7urc-K*Ux?g5k?J5R>EZkC6d(`7M4T`w>9SEOHBZ3w4hWDJ}E z!NNN7dZHXD4hEOQi-W5JEiEkp(C}0DrDO3!{UOld@PxKhQSQm3!+W@jrLFAroZl7^E$Rh$l2;+=>EZ0oQr2CTunOBBR;Nq=v1#G( z*vFiJVkOm8_UZV38?i@Fz#yN`=UFz4l~NwN$jw-`2eW|O&9udzL>SQ7Uv3|8sk$^D zn30xgmtW&(K8nF8TgIY}#95y3WAJGUNFalPHN39a?o(~=Q`{QfEMQ6`*ru&@BDrg> zC?r?!@^$omcK{lDs-MLvMhIA})OY0F^uWH(3B_-MZ_{S~j^GMQDDPd$^C6#~AxAfz zOV?a|BTa3B+X3XUVunliz|t6w=&+d%fz~tkJU7xN&j)2<7Y4Ba99dB^3goBN!kq7O zpc$OrWj+?*BHYGZ+Qr2yOGkYL-i(^Cu&{oOUx(Kdkvs!J_qDDZtPon6K2_S|MsC># z)*-#?Acb~k86+o5{R{#@4tGdMbfoxqnb2E9Ayl@o2RIxf7a!MtSX(Q`9sXDt`Yh1f zNV>2_dciFLIl56Kf5}X&$WQyN-*a#xL08&!xjT~7cfMDDSC!(yiGn3_Dpw-sKa@uK zlcS}osjAMMbT;S99s_XaMvj0i}O3f)h1vhIQ#Mw zzdB^Mptq#jWxhGAR)kk`_+V<|B{jgbdV6~ToZ9eeLgCnTpL&2_6VB>dxLlkvAupU- z9&0}WB+;<2k8}-`J_^|aV;lZCCc{`%;@Zue{cvh?;nAvzd|FB{2OoEI_^UY3V2tgc zNOT^5HK2I*{a3fHDYRyev`4H`06nlmbY5vNzl`{9Ps#mDxv%2q6U=woI>VtyQ&6Xk zuE&@M;xAzoW?!}{Deg$NX{N(Fz`5F8%WZoWF-u(&b!4B74Ziv0$BY)mgUUsp0O+d`+k_YY)Z%Jnjd5 zm)B=x83r!l!~pz9vxjhtdwzGPTCL`B|3J6yOg?6cRyyNqf~gKEdk6*MiD?A(t@Y(s z6J>{se1UMnx*J=q$p*3O-;~k!B^p{zS<@UTobp};yi9UKMJGt16boC{IG mV}6YBNag?B>&8jlMtb^^Q4USn0=zZV^YMg!UvvDz^?w8V87n*h literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_segwit_v16_1_0/00002.png b/tests/snapshots/stax/test_sign_psbt_with_segwit_v16_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_segwit_v16_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_segwit_v16_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 qJYd{u5M@4-L3DlmeyL9_ILNs`0hH zs2XzTGkfe}f_oUZ);+hqza?V6g%w5}`}U%HN#nE~EXJ7mQZT&xs$hJ14D5cwqRQVj z8!u5#)xSkmFxR@Vv7-|j4q`$JwIyZ=%T$<%cIFa=r~zRZ{~+GdpE_PUp)FI0^|Nb? z{B~V0khuhmtK{I^KUCni1F^~-4vIyL&pK&rn+Q@>AeTd9zB*Det;t7V^<%t<{LM(; z&w+qJXCWy&2;4-A3q-imn<)fe5&(QO42~B5xjSV$tVCP);KD(A8i%s4zH6JQrSQ0X zpPCp%*~9l{5mW64al7wHCnGaOv`^L0zgnU{6BVqz*dx(Um-c7(IGgr7aO`RfMK(OF><87-`Hbim}l eaj4)xyhY6lN^+2S4h)O3m>FAMtH0v>_;H{E+7y~t}b5!uOtz=+YyMM;5|FGeL}lz)IQo5rdv{# zTMWi;4ftUx=8KCtAFPkeS#hws@oMDm75l3%UX7gcCR#SH3I#a%uS3={#?C}cZ37*g zGkrr43WXpD23IxMTkI2lRl?Pn_3!hmR`o84TN*I*@}jYrgGCNrTrJf3B=(@ESFm*F zyqxFpdR%C2FfCxq|FUg6lO8n+eHGjPT>k^oaPQ3SJhJ)uCtmPA;B`$T-y>+XS`;pk zJ2Gu?oJ{h#Toy?@cVvv0{bs{`001hW0B9>8uT!a1rDD4I#^1$dbh?LQ2kAPUj-?+g z=xkDeP*1YEs9MF(ing;ABLyY@jZPf}f*?Ir=Dn>tYIVC)n(?ZcJm<-ZiV6n9J0b2x z(!K67u@0M(fo&u5J#_td$T~{Vt0F2T3*$JY99k%1Iq_-(&XJ@lRz)?*;(KT-$E$B4Eo*&?i!J+zdmf6xqL5rGvm&8lpj;PgYZL)q=f`fOvD~0`f37v~?bD@hW z&)?6FYf;G7)obcG9FFg?U7j4*pG4&i^9MKe!S^z>Is=n>J@&g|21DYTgfl|BuT&~c zz0^0*b*NX=Ef4Dgqd9WmP|_8@y=_X5kVd10BE1j!fDz4{5%l{b>)EAzh4^4oZZozw z=@f72v6MT>W_9>4E}1*F-t7S@3sK|ks+qP3xSTS_G-dqOCD*Q@(zaG0YT7(hvqhE= zR1ry(wYB<7S>}+Kj3Z~#`S_MvQy@2W*6N&|F3_f49x3o|`><0zN84r)#rhr_C(X}v zmt3FinwXe?QK|bt5=TxEX(mH)qkjb1EDN%hAlEn4nR54JK6KPcus12eu#A4u#gZHW zaczr602-HCm6id+6y&_E>7&#DE5}5{yF?7k{s2(R@w)8#!J>5$0{1CcL(EE|WKQd`&5n$)r-LB_*9C z-q@@aR!M%`fsPD+&Mz>I3G{o?LMQWeVjx@&=@wmRngP}jH6mhv-Y_{n`N}(Sv5pV$pJOJ#$4!?x!$I8|u1LwUJ?W9`2RcV)peM zK0Qoe&JE~@(Hy(o&StZfhWUl_DruPQxG}mR9A{0ttH@qYMECW6`IHW5)|UqV_}MOo z$9W3VT}~fQ{9fY`=_oRNiiy2uV|P@=$J~S%L;``3_i?A1eCJ?CM!T*d`>tb^k%tla_jI$9WpP8Egr+`Lm>(QTx2f&=5~>^HD^3 z#qtSJ<73uZcPE_h@*XTHD#^5ZVgEfP7`*{K1dEarlO05%P~y2%&hO=RW#QQYe^@?P z38BC@`}yDzsJQE7(bW8k5cH4;D5FvZzEjr#DCBf@-@seJ7;GaoZ@$M~ojny6a$y5; v>)9N?HPy@VmoFNNIauW2h0?;H58=MB+nW2vrAGLdh}g3ezvI^Soa%o79W1m6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_segwit_v16_v1_1_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_segwit_v16_v1_1_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..6ccba4e59b0fafe039ad239ef624e770f2231efb GIT binary patch literal 11414 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 Tf9~2kIop+8k>uJ>pgg-T9z^&cc)L9tdZb5N^ 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_segwit_v16_v1_1_0/00002.png b/tests/snapshots/stax/test_sign_psbt_with_segwit_v16_v1_1_0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9f7a35a54b8893cd02a0cf9d29982de90b72e8 GIT binary patch literal 11727 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 b*MGm~vyRQg3S9>dYIB$wTVAWX>JtB7&g3(l literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_psbt_with_segwit_v16_v1_2_0/00000.png b/tests/snapshots/stax/test_sign_psbt_with_segwit_v16_v1_2_0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 verify the address matches what bitcoin-core computes + receive_descriptor = wallet_policy.get_descriptor(change=False) + receive_descriptor_info = rpc.getdescriptorinfo(receive_descriptor) + # bitcoin-core adds the checksum, and requires it for other calls + receive_descriptor_chk = receive_descriptor_info["descriptor"] + address_core = rpc.deriveaddresses(receive_descriptor_chk, [3, 3])[0] + + assert T(address_hww) == address_core + + # also get the change descriptor for later + change_descriptor = wallet_policy.get_descriptor(change=True) + change_descriptor_info = rpc.getdescriptorinfo(change_descriptor) + change_descriptor_chk = change_descriptor_info["descriptor"] + + # ==> import wallet in bitcoin-core + + multisig_wallet_name = get_unique_wallet_name() + rpc.createwallet( + wallet_name=multisig_wallet_name, + disable_private_keys=True, + descriptors=True, + ) + multisig_rpc = get_wallet_rpc(multisig_wallet_name) + multisig_rpc.importdescriptors([{ + "desc": receive_descriptor_chk, + "active": True, + "internal": False, + "timestamp": "now" + }, { + "desc": change_descriptor_chk, + "active": True, + "internal": True, + "timestamp": "now" + }]) + + # ==> fund the multisig wallet and get prevout info + + rpc_test_wallet.sendtoaddress(T(address_hww), "0.1") + generate_blocks(1) + + assert multisig_rpc.getwalletinfo()["balance"] == Decimal("0.1") + + # ==> prepare a psbt spending from the wallet + + out_address = rpc_test_wallet.getnewaddress() + + result = multisig_rpc.walletcreatefundedpsbt( + outputs={ + out_address: Decimal("0.01") + }, + options={ + "changePosition": 1 # We need a fixed position to be able to know how to navigate in the flows + } + ) + + psbt_b64 = result["psbt"] + + # ==> sign it with the hww + + psbt = PSBT() + psbt.deserialize(psbt_b64) + + hww_sigs = client.sign_psbt(psbt, wallet_policy, wallet_hmac, navigator, + instructions=instructions_sign_psbt, + testname=f"{test_name}_sign") + + n_internal_keys = count_internal_keys(speculos_globals.seed, "test", wallet_policy) + assert len(hww_sigs) == n_internal_keys * len(psbt.inputs) # should be true as long as all inputs are internal + + for i, part_sig in hww_sigs: + psbt.inputs[i].partial_sigs[part_sig.pubkey] = part_sig.signature + + signed_psbt_hww_b64 = psbt.serialize() + + # ==> sign it with bitcoin-core + partial_psbts = [signed_psbt_hww_b64] + + for core_wallet_name in core_wallet_names: + partial_psbts.append(get_wallet_rpc(core_wallet_name).walletprocesspsbt(psbt_b64)["psbt"]) + + # ==> finalize the psbt, extract tx and broadcast + combined_psbt = rpc.combinepsbt(partial_psbts) + result = rpc.finalizepsbt(combined_psbt) + + assert result["complete"] == True + rawtx = result["hex"] + + # make sure the transaction is valid by broadcasting it (would fail if rejected) + rpc.sendrawtransaction(rawtx) + + +def run_test_invalid(client: RaggerClient, descriptor_template: str, keys_info: List[str]): + wallet_policy = WalletPolicy( + name="Invalid wallet", + descriptor_template=descriptor_template, + keys_info=keys_info) + + with pytest.raises(ExceptionRAPDU) as e: + client.register_wallet(wallet_policy) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError or DeviceException.exc.get( + e.value.status) == NotSupportedError + assert len(e.value.data) == 0 + + +def test_e2e_miniscript_one_of_two_1(navigator: Navigator, firmware: Firmware, client: RaggerClient, + test_name: str, rpc, rpc_test_wallet, speculos_globals: SpeculosGlobals): + # One of two keys (equally likely) + # or(pk(key_1),pk(key_2)) + + path = "499'/1'/0'" + _, core_xpub_orig = create_new_wallet() + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + wallet_policy = WalletPolicy( + name="Joint account", + descriptor_template="wsh(or_b(pk(@0/**),s:pk(@1/**)))", + keys_info=[ + f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}", + f"{core_xpub_orig}", + ]) + + run_test_e2e(navigator, client, wallet_policy, [], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_e2e_miniscript_one_of_two_2(navigator: Navigator, firmware: Firmware, client: RaggerClient, + test_name: str, rpc, rpc_test_wallet, speculos_globals: SpeculosGlobals): + # One of two keys (one likely, one unlikely) + # or(99@pk(key_likely),pk(key_unlikely)) + + path = "499'/1'/0'" + _, core_xpub_orig = create_new_wallet() + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + wallet_policy = WalletPolicy( + name="Joint account", + descriptor_template="wsh(or_d(pk(@0/**),pkh(@1/**)))", + keys_info=[ + f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}", + f"{core_xpub_orig}", + ]) + + run_test_e2e(navigator, client, wallet_policy, [_], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_e2e_miniscript_2fa(navigator: Navigator, firmware: Firmware, client: RaggerClient, + test_name: str, rpc, rpc_test_wallet, speculos_globals: SpeculosGlobals): + # A user and a 2FA service need to sign off, but after 90 days the user alone is enough + # and(pk(key_user),or(99@pk(key_service),older(12960))) + + path = "48'/1'/0'/2'" + core_wallet_name, core_xpub_orig = create_new_wallet() + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + wallet_policy = WalletPolicy( + name="2FA wallet", + descriptor_template="wsh(and_v(v:pk(@0/**),or_d(pk(@1/**),older(12960))))", + keys_info=[ + f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}", + f"{core_xpub_orig}", + ]) + + run_test_e2e(navigator, client, wallet_policy, [core_wallet_name], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_e2e_miniscript_decaying_3of3(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, rpc, rpc_test_wallet, speculos_globals: SpeculosGlobals): + # A 3-of-3 that becomes a 2-of-3 after 90 days + # thresh(3,pk(key_1),pk(key_2),pk(key_3),older(12960)) + + path = "48'/1'/0'/2'" + core_wallet_name1, core_xpub_orig1 = create_new_wallet() + core_wallet_name2, core_xpub_orig2 = create_new_wallet() + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + wallet_policy = WalletPolicy( + name="Decaying 3of3", + descriptor_template="wsh(thresh(3,pk(@0/**),s:pk(@1/**),s:pk(@2/**),sln:older(12960)))", + keys_info=[ + f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}", + f"{core_xpub_orig1}", + f"{core_xpub_orig2}", + ]) + + run_test_e2e(navigator, client, wallet_policy, [core_wallet_name1, core_wallet_name2], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_e2e_miniscript_bolt3_offered_htlc(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, rpc, rpc_test_wallet, speculos_globals: SpeculosGlobals): + # The BOLT #3 offered HTLC policy + # or(pk(key_revocation),and(pk(key_remote),or(pk(key_local),hash160(H)))) + + path = "48'/1'/0'/2'" + core_wallet_name1, core_xpub_orig1 = create_new_wallet() + core_wallet_name2, core_xpub_orig2 = create_new_wallet() + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + H = "395e368b267d64945f30e4b71de1054f364c9473" # random + wallet_policy = WalletPolicy( + name="BOLT #3 offered", + descriptor_template=f"wsh(t:or_c(pk(@0/**),and_v(v:pk(@1/**),or_c(pk(@2/**),v:hash160({H})))))", + keys_info=[ + f"{core_xpub_orig1}", + f"{core_xpub_orig2}", + f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}", + ]) + + run_test_e2e(navigator, client, wallet_policy, [core_wallet_name1, core_wallet_name2], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_e2e_miniscript_bolt3_received_htlc(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, rpc, rpc_test_wallet, speculos_globals: SpeculosGlobals): + # The BOLT #3 received HTLC policy + # andor(pk(key_remote),or_i(and_v(v:pkh(key_local),hash160(H)),older(1008)),pk(key_revocation)) + + path = "48'/1'/0'/2'" + core_wallet_name1, core_xpub_orig1 = create_new_wallet() + core_wallet_name2, core_xpub_orig2 = create_new_wallet() + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + H = "395e368b267d64945f30e4b71de1054f364c9473" # random + wallet_policy = WalletPolicy( + name="BOLT #3 received", + descriptor_template=f"wsh(andor(pk(@0/**),or_i(and_v(v:pkh(@1/**),hash160({H})),older(1008)),pk(@2/**)))", + keys_info=[ + f"{core_xpub_orig1}", + f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}", + f"{core_xpub_orig2}", + ]) + + run_test_e2e(navigator, client, wallet_policy, [core_wallet_name1, core_wallet_name2], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_e2e_miniscript_me_or_3of5(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, rpc, rpc_test_wallet, speculos_globals: SpeculosGlobals): + path = "48'/1'/0'/2'" + _, core_xpub_orig1 = create_new_wallet() + _, core_xpub_orig2 = create_new_wallet() + _, core_xpub_orig3 = create_new_wallet() + _, core_xpub_orig4 = create_new_wallet() + _, core_xpub_orig5 = create_new_wallet() + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + internal_xpub_orig = f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}" + + wallet_policy = WalletPolicy( + name="Me or them", + descriptor_template="wsh(or_d(pk(@0/**),multi(3,@1/**,@2/**,@3/**,@4/**,@5/**)))", + keys_info=[ + internal_xpub_orig, + f"{core_xpub_orig1}", + f"{core_xpub_orig2}", + f"{core_xpub_orig3}", + f"{core_xpub_orig4}", + f"{core_xpub_orig5}", + ]) + + run_test_e2e(navigator, client, wallet_policy, [], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_e2e_miniscript_me_large_vault(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, rpc, rpc_test_wallet, speculos_globals: SpeculosGlobals): + if (firmware.name == "nanos"): + pytest.skip("Not supported on Nano S due to memory limitations") + + path = "48'/1'/0'/2'" + _, core_xpub_orig1 = create_new_wallet() + _, core_xpub_orig2 = create_new_wallet() + _, core_xpub_orig3 = create_new_wallet() + _, core_xpub_orig4 = create_new_wallet() + _, core_xpub_orig5 = create_new_wallet() + _, core_xpub_orig6 = create_new_wallet() + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + internal_xpub_orig = f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}" + + wallet_policy = WalletPolicy( + name="Large vault", + descriptor_template="wsh(or_d(pk(@0/**),andor(thresh(1,utv:thresh(1,pkh(@1/**),a:pkh(@2/**)),autv:thresh(1,pkh(@3/**),a:pkh(@4/**))),after(1685577600),and_v(v:and_v(v:pkh(@5/**),thresh(1,pkh(@6/**))),after(1685318400)))))", + keys_info=[ + internal_xpub_orig, + f"{core_xpub_orig1}", + f"{core_xpub_orig2}", + f"{core_xpub_orig3}", + f"{core_xpub_orig4}", + f"{core_xpub_orig5}", + f"{core_xpub_orig6}", + ]) + + run_test_e2e(navigator, client, wallet_policy, [], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_e2e_miniscript_me_and_bob_or_me_and_carl_1(navigator: Navigator, firmware: Firmware, + client: RaggerClient, test_name: str, rpc, rpc_test_wallet, speculos_globals: SpeculosGlobals): + # policy: or(and(pk(A1), pk(B)),and(pk(A2), pk(C))) + # where A1 and A2 are both internal keys; therefore, two signatures per input must be returned + + core_wallet_name1, core_xpub_orig1 = create_new_wallet() + _, core_xpub_orig2 = create_new_wallet() + + path1 = "44'/1'/0'" + path2 = "44'/1'/1'" + internal_xpub_1 = get_internal_xpub(speculos_globals.seed, path1) + internal_xpub_orig_1 = f"[{speculos_globals.master_key_fingerprint.hex()}/{path1}]{internal_xpub_1}" + internal_xpub_2 = get_internal_xpub(speculos_globals.seed, path2) + internal_xpub_orig_2 = f"[{speculos_globals.master_key_fingerprint.hex()}/{path2}]{internal_xpub_2}" + + wallet_policy = WalletPolicy( + name="Me and Bob or me and Carl", + descriptor_template="wsh(c:andor(pk(@0/**),pk_k(@1/**),and_v(v:pk(@2/**),pk_k(@3/**))))", + keys_info=[ + internal_xpub_orig_1, + f"{core_xpub_orig1}", + internal_xpub_orig_2, + f"{core_xpub_orig2}", + ]) + + run_test_e2e(navigator, client, wallet_policy, [core_wallet_name1], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_e2e_miniscript_nanos_large_policy(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, rpc, rpc_test_wallet, speculos_globals: SpeculosGlobals): + # Nano S has much tighter memory limits. + # The policy in this test requires 304 bytes after is parsed, which is larger than the previous 276. + # However, it is a kind of policy in the style of the Liana wallet, that it would be nice to support. + + # reported by pythcoiner + + if firmware.name != "nanos": + pytest.skip("Test only for Nano S") + + core_wallet_name1, core_xpub_orig1 = create_new_wallet() + core_wallet_name2, core_xpub_orig2 = create_new_wallet() + core_wallet_name3, core_xpub_orig3 = create_new_wallet() + + path = "44'/1'/0'" + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + internal_xpub_orig = f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}" + + wallet_policy = WalletPolicy( + name="Memory-intensive", + descriptor_template="wsh(or_d(multi(4,@0/<0;1>/*,@1/<0;1>/*,@2/<0;1>/*,@3/<0;1>/*),and_v(v:thresh(3,pkh(@0/<2;3>/*),a:pkh(@1/<2;3>/*),a:pkh(@2/<2;3>/*),a:pkh(@3/<2;3>/*)),older(65535))))", + keys_info=[ + internal_xpub_orig, + f"{core_xpub_orig1}", + f"{core_xpub_orig2}", + f"{core_xpub_orig3}", + ]) + + run_test_e2e(navigator, client, wallet_policy, [core_wallet_name1, core_wallet_name2, + core_wallet_name3], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_e2e_miniscript_policy_with_a(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, rpc, rpc_test_wallet, speculos_globals: SpeculosGlobals): + # versions 2.1.0 and 2.1.1 of the app incorrectly compiled the 'a:' wrapper, producing incorrect addresses + + _, core_xpub_orig1 = create_new_wallet() + _, core_xpub_orig2 = create_new_wallet() + core_wallet_name3, core_xpub_orig3 = create_new_wallet() + _, core_xpub_orig4 = create_new_wallet() + _, core_xpub_orig5 = create_new_wallet() + + path = "48'/1'/0'/2'" + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + internal_xpub_orig = f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}" + + wallet_policy = WalletPolicy( + name="Policy with a:", + descriptor_template="wsh(or_i(and_v(v:pkh(@0/**),older(65535)),or_d(multi(2,@1/**,@3/**),and_v(v:thresh(1,pkh(@4/**),a:pkh(@5/**)),older(64231)))))", + keys_info=[ + f"{core_xpub_orig1}", + internal_xpub_orig, + f"{core_xpub_orig2}", + f"{core_xpub_orig3}", + f"{core_xpub_orig4}", + f"{core_xpub_orig5}", + ]) + + run_test_e2e(navigator, client, wallet_policy, [core_wallet_name3], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_invalid_miniscript(navigator: Navigator, firmware: Firmware, client: RaggerClient, + test_name: str, rpc, speculos_globals: SpeculosGlobals): + path = "48'/1'/0'/2'" + _, core_xpub_orig1 = create_new_wallet() + _, core_xpub_orig2 = create_new_wallet() + _, core_xpub_orig3 = create_new_wallet() + _, core_xpub_orig4 = create_new_wallet() + _, core_xpub_orig5 = create_new_wallet() + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + internal_xpub_orig = f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}" + + # sh(sh(...)), wsh(sh(...)), wsh(wsh(...)) are invalid + run_test_invalid(client, "sh(sh(pkh(@0/**)))", [internal_xpub_orig]) + run_test_invalid(client, "wsh(sh(pkh(@0/**)))", [internal_xpub_orig]) + run_test_invalid(client, "wsh(wsh(pkh(@0/**)))", [internal_xpub_orig]) + + # sh(wsh(...)) is meaningful with valid miniscript, but current implementation of miniscript assumes wsh(...) + run_test_invalid(client, "sh(wsh(or_d(pk(@0/**),pkh(@1/**))))", [internal_xpub_orig, core_xpub_orig1]) + + # tr must be top-level + run_test_invalid(client, "wsh(tr(pk(@0/**)))", [internal_xpub_orig]) + run_test_invalid(client, "sh(tr(pk(@0/**)))", [internal_xpub_orig]) + + # valid miniscript must be inside wsh() + run_test_invalid(client, "or_d(pk(@0/**),pkh(@1/**))", [internal_xpub_orig, core_xpub_orig1]) + run_test_invalid(client, "sh(or_d(pk(@0/**),pkh(@1/**)))", [internal_xpub_orig, core_xpub_orig1]) + + # sortedmulti is not valid miniscript, can only be used as a descriptor inside sh or wsh + run_test_invalid(client, "wsh(or_d(pk(@0/**),sortedmulti(3,@1/**,@2/**,@3/**,@4/**,@5/**)))", + [ + internal_xpub_orig, + f"{core_xpub_orig1}", + f"{core_xpub_orig2}", + f"{core_xpub_orig3}", + f"{core_xpub_orig4}", + f"{core_xpub_orig5}", + ]) diff --git a/tests/test_e2e_multisig.py b/tests/test_e2e_multisig.py index 34d4c31b2..f0a35fddf 100644 --- a/tests/test_e2e_multisig.py +++ b/tests/test_e2e_multisig.py @@ -1,116 +1,52 @@ import pytest -from typing import Dict +from typing import List, Union + import hmac from hashlib import sha256 from decimal import Decimal -from bip32 import BIP32 - -from bitcoin_client.ledger_bitcoin import Client, MultisigWallet, AddressType -from bitcoin_client.ledger_bitcoin.psbt import PSBT -from bitcoin_client.ledger_bitcoin._script import is_p2sh, is_p2wsh, parse_multisig +from ledger_bitcoin import Client, MultisigWallet, AddressType +from ledger_bitcoin.client_base import TransportClient +from ledger_bitcoin.psbt import PSBT +from ledger_bitcoin.wallet import WalletPolicy -from test_utils import SpeculosGlobals +from test_utils import SpeculosGlobals, get_internal_xpub, count_internal_keys from speculos.client import SpeculosClient -from test_utils.speculos import automation + +from ragger_bitcoin import RaggerClient +from ragger_bitcoin.ragger_instructions import Instructions +from ragger.navigator import Navigator, NavInsID +from ragger.firmware import Firmware + +from .instructions import e2e_register_wallet_instruction, e2e_sign_psbt_instruction from .conftest import create_new_wallet, generate_blocks, get_unique_wallet_name, get_wallet_rpc, testnet_to_regtest_addr as T +from .conftest import AuthServiceProxy -def extract_our_pubkeys(psbt: PSBT, master_fp: bytes) -> Dict[int, bytes]: - # It only works for standard wallets and simple multisig; won't generalize to miniscript - # based on code in bitcoin-core/HWI - - psbt2 = PSBT() - psbt2.deserialize(psbt.serialize()) - if (psbt2.version is None or psbt.version == 0): - psbt2.convert_to_v2() - - pubkeys: Dict[int, bytes] = {} - for input_num, psbt_in in enumerate(psbt2.inputs): - utxo = None - scriptcode = b"" - if psbt_in.witness_utxo: - utxo = psbt_in.witness_utxo - if psbt_in.non_witness_utxo: - assert psbt_in.prev_out is not None - utxo = psbt_in.non_witness_utxo.vout[psbt_in.prev_out] - if utxo is None: - continue - scriptcode = utxo.scriptPubKey - - if is_p2sh(scriptcode): - if len(psbt_in.redeem_script) == 0: - continue - scriptcode = psbt_in.redeem_script - - # Check if P2WSH - if is_p2wsh(scriptcode): - if len(psbt_in.witness_script) == 0: - continue - scriptcode = psbt_in.witness_script - - multisig = parse_multisig(scriptcode) - if multisig is not None: - _, ms_pubkeys = multisig - - our_keys = 0 - for pub in ms_pubkeys: - if pub in psbt_in.hd_keypaths: - pk_origin = psbt_in.hd_keypaths[pub] - if pk_origin.fingerprint == master_fp: - our_keys += 1 - pubkeys[input_num] = pub - - if our_keys > 1: - raise ValueError("Cannot have more than 1 internal key in a supported wallet") - else: - for key, origin in psbt_in.hd_keypaths.items(): - if origin.fingerprint == master_fp: - pubkeys[input_num] = key - - for key, (_, origin) in psbt_in.tap_bip32_paths.items(): - if key == psbt_in.tap_internal_key and origin.fingerprint == master_fp: - pubkeys[input_num] = key - return pubkeys - - -@pytest.mark.skip(reason="Fails on host side: ValueError: substring not found") -def test_e2e_multisig(rpc, rpc_test_wallet, client: Client, speculos_globals: SpeculosGlobals, is_speculos: bool, comm: SpeculosClient): - if not is_speculos: - pytest.skip("Requires speculos") - - wallet_name, core_xpub_orig = create_new_wallet() - wallet_rpc = get_wallet_rpc(wallet_name) - - bip32 = BIP32.from_seed(speculos_globals.seed, network="test") - internal_xpub = bip32.get_xpub_from_path("m/48'/1'/0'/2'") - wallet = MultisigWallet( - name="Cold storage", - address_type=AddressType.WIT, - threshold=2, - keys_info=[ - f"{core_xpub_orig}/**", - f"[{speculos_globals.master_key_fingerprint.hex()}/48'/1'/0'/2']{internal_xpub}/**", - ], - ) +def run_test(navigator: Navigator, client: RaggerClient, wallet_policy: WalletPolicy, + core_wallet_names: List[str], rpc: AuthServiceProxy, rpc_test_wallet: AuthServiceProxy, + speculos_globals: SpeculosGlobals, instructions_register_wallet: Instructions, + instructions_sign_psbt: Instructions, test_name: str = ""): - with automation(comm, "automations/register_wallet_accept.json"): - wallet_id, wallet_hmac = client.register_wallet(wallet) + wallet_id, wallet_hmac = client.register_wallet(wallet_policy, navigator, + instructions=instructions_register_wallet, testname=f"{test_name}_register") - assert wallet_id == wallet.id + assert wallet_id == wallet_policy.id assert hmac.compare_digest( - hmac.new(speculos_globals.wallet_registration_key, wallet_id, sha256).digest(), + hmac.new(speculos_globals.wallet_registration_key, + wallet_id, sha256).digest(), wallet_hmac, ) - address_hww = client.get_wallet_address(wallet, wallet_hmac, 0, 3, False) + address_hww = client.get_wallet_address( + wallet_policy, wallet_hmac, 0, 3, False) # ==> verify the address matches what bitcoin-core computes - receive_descriptor = wallet.get_descriptor(change=False) + receive_descriptor = wallet_policy.get_descriptor(change=False) receive_descriptor_info = rpc.getdescriptorinfo(receive_descriptor) # bitcoin-core adds the checksum, and requires it for other calls receive_descriptor_chk = receive_descriptor_info["descriptor"] @@ -119,7 +55,7 @@ def test_e2e_multisig(rpc, rpc_test_wallet, client: Client, speculos_globals: Sp assert T(address_hww) == address_core # also get the change descriptor for later - change_descriptor = wallet.get_descriptor(change=True) + change_descriptor = wallet_policy.get_descriptor(change=True) change_descriptor_info = rpc.getdescriptorinfo(change_descriptor) change_descriptor_chk = change_descriptor_info["descriptor"] @@ -155,9 +91,15 @@ def test_e2e_multisig(rpc, rpc_test_wallet, client: Client, speculos_globals: Sp out_address = rpc_test_wallet.getnewaddress() - result = multisig_rpc.walletcreatefundedpsbt(outputs={ - out_address: Decimal("0.01") - }) + result = multisig_rpc.walletcreatefundedpsbt( + outputs={ + out_address: Decimal("0.01") + }, + options={ + # We need a fixed position to be able to know how to navigate in the flows + "changePosition": 1 + } + ) psbt_b64 = result["psbt"] @@ -166,28 +108,122 @@ def test_e2e_multisig(rpc, rpc_test_wallet, client: Client, speculos_globals: Sp psbt = PSBT() psbt.deserialize(psbt_b64) - pubkeys = extract_our_pubkeys(psbt, speculos_globals.master_key_fingerprint) - - with automation(comm, "automations/sign_with_wallet_accept.json"): - hww_sigs = client.sign_psbt(psbt, wallet, wallet_hmac) + hww_sigs = client.sign_psbt(psbt, wallet_policy, wallet_hmac, navigator, + instructions=instructions_sign_psbt, + testname=f"{test_name}_sign") - assert len(hww_sigs) == len(pubkeys) # should be true as long as all inputs are internal + n_internal_keys = count_internal_keys( + speculos_globals.seed, "test", wallet_policy) + # should be true as long as all inputs are internal + assert len(hww_sigs) == n_internal_keys * len(psbt.inputs) - for i, sig in hww_sigs.items(): - pubkey = pubkeys[i] - psbt.inputs[i].partial_sigs[pubkey] = sig + for i, part_sig in hww_sigs: + psbt.inputs[i].partial_sigs[part_sig.pubkey] = part_sig.signature signed_psbt_hww_b64 = psbt.serialize() # ==> sign it with bitcoin-core + partial_psbts = [signed_psbt_hww_b64] - signed_psbt_core_b64 = wallet_rpc.walletprocesspsbt(psbt_b64)["psbt"] + for core_wallet_name in core_wallet_names: + partial_psbts.append(get_wallet_rpc( + core_wallet_name).walletprocesspsbt(psbt_b64)["psbt"]) # ==> finalize the psbt, extract tx and broadcast - combined_psbt = rpc.combinepsbt([signed_psbt_hww_b64, signed_psbt_core_b64]) + combined_psbt = rpc.combinepsbt(partial_psbts) result = rpc.finalizepsbt(combined_psbt) - rawtx = result["hex"] + assert result["complete"] == True + rawtx = result["hex"] # make sure the transaction is valid by broadcasting it (would fail if rejected) rpc.sendrawtransaction(rawtx) + + +def test_e2e_multisig_2_of_2(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str, rpc: AuthServiceProxy, rpc_test_wallet, speculos_globals: + SpeculosGlobals): + path = "48'/1'/0'/2'" + core_wallet_name, core_xpub_orig = create_new_wallet() + + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + wallet_policy = MultisigWallet( + name="Cold storage", + address_type=AddressType.WIT, + threshold=2, + keys_info=[ + f"{core_xpub_orig}", + f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}", + ], + ) + + run_test(navigator, client, wallet_policy, [core_wallet_name], rpc, rpc_test_wallet, + speculos_globals, e2e_register_wallet_instruction( + firmware, wallet_policy.n_keys), + e2e_sign_psbt_instruction(firmware), test_name) + + +def test_e2e_multisig_multiple_internal_keys(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, rpc: AuthServiceProxy, rpc_test_wallet, speculos_globals: SpeculosGlobals): + # test an edge case of a multisig where the wallet controls more than one key + # 3-of-5 multisig where 2 keys are internal + + path_1 = "48'/1'/0'/2'" + internal_xpub_1 = get_internal_xpub(speculos_globals.seed, path_1) + path_2 = "48'/1'/1'/2'" + internal_xpub_2 = get_internal_xpub(speculos_globals.seed, path_2) + + _, core_xpub_orig_1 = create_new_wallet() + _, core_xpub_orig_2 = create_new_wallet() + core_wallet_name_3, core_xpub_orig_3 = create_new_wallet() + + wallet_policy = MultisigWallet( + name="Cold storage", + address_type=AddressType.WIT, + threshold=3, + keys_info=[ + f"[{speculos_globals.master_key_fingerprint.hex()}/{path_1}]{internal_xpub_1}", + f"[{speculos_globals.master_key_fingerprint.hex()}/{path_2}]{internal_xpub_2}", + f"{core_xpub_orig_1}", + f"{core_xpub_orig_2}", + f"{core_xpub_orig_3}", + ], + ) + + run_test(navigator, client, wallet_policy, [core_wallet_name_3], + rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), + e2e_sign_psbt_instruction(firmware), test_name) + + +@pytest.mark.timeout(0) # disable timeout +def test_e2e_multisig_16_of_16(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str, rpc: AuthServiceProxy, rpc_test_wallet, speculos_globals: SpeculosGlobals, enable_slow_tests: bool): + # Largest supported multisig with sortedmulti. + # The time for an end-to-end execution on a real Ledger Nano S (including user's input) is about 520 seconds. + + # slow test, disabled by default + if not enable_slow_tests: + pytest.skip() + + core_wallet_names: List[str] = [] + core_xpub_origs: List[str] = [] + for _ in range(15): + name, xpub_orig = create_new_wallet() + core_wallet_names.append(name) + core_xpub_origs.append(xpub_orig) + + path = "48'/1'/0'/2'" + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + + wallet_policy = MultisigWallet( + name="Cold storage", + address_type=AddressType.WIT, + threshold=2, + sorted=True, + keys_info=core_xpub_origs + + [f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}"], + ) + + run_test(navigator, client, wallet_policy, core_wallet_names, rpc, rpc_test_wallet, + speculos_globals. e2e_register_wallet_instruction( + firmware, wallet_policy.n_keys), + e2e_sign_psbt_instruction(firmware), test_name) diff --git a/tests/test_e2e_tapscripts.py b/tests/test_e2e_tapscripts.py new file mode 100644 index 000000000..0d20f8cba --- /dev/null +++ b/tests/test_e2e_tapscripts.py @@ -0,0 +1,425 @@ +import pytest + +from typing import List, Union + +import hmac +from hashlib import sha256 +from decimal import Decimal + +from ledger_bitcoin import Client +from ledger_bitcoin.client_base import TransportClient +from ledger_bitcoin.exception.errors import IncorrectDataError, NotSupportedError +from ledger_bitcoin.exception.device_exception import DeviceException +from ledger_bitcoin.psbt import PSBT +from ledger_bitcoin.wallet import WalletPolicy + +from test_utils import SpeculosGlobals, get_internal_xpub, count_internal_keys + +from ragger_bitcoin import RaggerClient +from ragger_bitcoin.ragger_instructions import Instructions +from ragger.navigator import Navigator, NavInsID +from ragger.firmware import Firmware +from ragger.error import ExceptionRAPDU + +from .instructions import e2e_register_wallet_instruction, e2e_sign_psbt_instruction +from .conftest import AuthServiceProxy +from .conftest import create_new_wallet, generate_blocks, get_unique_wallet_name, get_wallet_rpc, testnet_to_regtest_addr as T + + +def run_test_e2e(navigator: Navigator, client: RaggerClient, wallet_policy: WalletPolicy, + core_wallet_names: List[str], rpc: AuthServiceProxy, rpc_test_wallet: AuthServiceProxy, + speculos_globals: SpeculosGlobals, instructions_register_wallet: Instructions, + instructions_sign_psbt: Instructions, test_name: str = ""): + + wallet_id, wallet_hmac = client.register_wallet(wallet_policy, navigator, + instructions=instructions_register_wallet, testname=f"{test_name}_register") + assert wallet_id == wallet_policy.id + + assert hmac.compare_digest( + hmac.new(speculos_globals.wallet_registration_key, wallet_id, sha256).digest(), + wallet_hmac, + ) + + address_hww = client.get_wallet_address(wallet_policy, wallet_hmac, 0, 3, False) + + # ==> verify the address matches what bitcoin-core computes + receive_descriptor = wallet_policy.get_descriptor(change=False) + receive_descriptor_info = rpc.getdescriptorinfo(receive_descriptor) + # bitcoin-core adds the checksum, and requires it for other calls + receive_descriptor_chk = receive_descriptor_info["descriptor"] + address_core = rpc.deriveaddresses(receive_descriptor_chk, [3, 3])[0] + + assert T(address_hww) == address_core + + # also get the change descriptor for later + change_descriptor = wallet_policy.get_descriptor(change=True) + change_descriptor_info = rpc.getdescriptorinfo(change_descriptor) + change_descriptor_chk = change_descriptor_info["descriptor"] + + # ==> import wallet in bitcoin-core + + multisig_wallet_name = get_unique_wallet_name() + rpc.createwallet( + wallet_name=multisig_wallet_name, + disable_private_keys=True, + descriptors=True, + ) + multisig_rpc = get_wallet_rpc(multisig_wallet_name) + multisig_rpc.importdescriptors([{ + "desc": receive_descriptor_chk, + "active": True, + "internal": False, + "timestamp": "now" + }, { + "desc": change_descriptor_chk, + "active": True, + "internal": True, + "timestamp": "now" + }]) + + # ==> fund the multisig wallet and get prevout info + + rpc_test_wallet.sendtoaddress(T(address_hww), "0.1") + generate_blocks(1) + + assert multisig_rpc.getwalletinfo()["balance"] == Decimal("0.1") + + # ==> prepare a psbt spending from the wallet + + out_address = rpc_test_wallet.getnewaddress() + + result = multisig_rpc.walletcreatefundedpsbt( + outputs={ + out_address: Decimal("0.01") + }, + options={ + "changePosition": 1 # We need a fixed position to be able to know how to navigate in the flows + } + ) + + psbt_b64 = result["psbt"] + + # ==> sign it with the hww + + psbt = PSBT() + psbt.deserialize(psbt_b64) + + hww_sigs = client.sign_psbt(psbt, wallet_policy, wallet_hmac, navigator, + instructions=instructions_sign_psbt, + testname=f"{test_name}_sign") + + # only correct for taproot policies + for i, part_sig in hww_sigs: + if part_sig.tapleaf_hash is not None: + # signature for a script spend + psbt.inputs[i].tap_script_sigs[(part_sig.pubkey, part_sig.tapleaf_hash)] = part_sig.signature + else: + # key path spend + psbt.inputs[i].tap_key_sig = part_sig.signature + + signed_psbt_hww_b64 = psbt.serialize() + + n_internal_keys = count_internal_keys(speculos_globals.seed, "test", wallet_policy) + assert len(hww_sigs) == n_internal_keys * len(psbt.inputs) # should be true as long as all inputs are internal + + # ==> sign it with bitcoin-core + + partial_psbts = [signed_psbt_hww_b64] + for core_wallet_name in core_wallet_names: + partial_psbt_response = get_wallet_rpc(core_wallet_name).walletprocesspsbt(psbt_b64) + partial_psbts.append(partial_psbt_response["psbt"]) + + # ==> finalize the psbt, extract tx and broadcast + combined_psbt = rpc.combinepsbt(partial_psbts) + result = rpc.finalizepsbt(combined_psbt) + + assert result["complete"] == True + rawtx = result["hex"] + + # make sure the transaction is valid by broadcasting it (would fail if rejected) + rpc.sendrawtransaction(rawtx) + + +def run_test_invalid(client: RaggerClient, descriptor_template: str, keys_info: List[str]): + wallet_policy = WalletPolicy( + name="Invalid wallet", + descriptor_template=descriptor_template, + keys_info=keys_info) + + with pytest.raises(ExceptionRAPDU) as e: + client.register_wallet(wallet_policy) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError or DeviceException.exc.get( + e.value.status) == NotSupportedError + assert len(e.value.data) == 0 + + +def test_e2e_tapscript_one_of_two_keypath(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, rpc, rpc_test_wallet, + speculos_globals: SpeculosGlobals): + # One of two keys, with the foreign key in the key path spend + # tr(my_key,pk(foreign_key_1)) + + path = "499'/1'/0'" + _, core_xpub_orig = create_new_wallet() + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + wallet_policy = WalletPolicy( + name="Tapscript 1-of-2", + descriptor_template="tr(@0/**,pk(@1/**))", + keys_info=[ + f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}", + f"{core_xpub_orig}", + ]) + + run_test_e2e(navigator, client, wallet_policy, [], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_e2e_tapscript_one_of_two_scriptpath(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, rpc, rpc_test_wallet, speculos_globals: SpeculosGlobals): + # One of two keys, with the foreign key in the key path spend + # tr(foreign_key,pk(my_key)) + + path = "499'/1'/0'" + _, core_xpub_orig = create_new_wallet() + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + wallet_policy = WalletPolicy( + name="Tapscript 1-of-2", + descriptor_template="tr(@0/**,pk(@1/**))", + keys_info=[ + f"{core_xpub_orig}", + f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}", + ]) + + run_test_e2e(navigator, client, wallet_policy, [], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_e2e_tapscript_one_of_three_keypath(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, rpc, rpc_test_wallet, speculos_globals: SpeculosGlobals): + # One of three keys, with the internal one in the key-path spend + # tr(my_key,{pk(foreign_key_1,foreign_key_2)}) + + path = "499'/1'/0'" + _, core_xpub_orig_1 = create_new_wallet() + _, core_xpub_orig_2 = create_new_wallet() + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + wallet_policy = WalletPolicy( + name="Tapscript 1-of-3", + descriptor_template="tr(@0/**,{pk(@1/**),pk(@2/**)})", + keys_info=[ + f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}", + f"{core_xpub_orig_1}", + f"{core_xpub_orig_2}", + ]) + + run_test_e2e(navigator, client, wallet_policy, [], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_e2e_tapscript_one_of_three_scriptpath(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, rpc, rpc_test_wallet, speculos_globals: SpeculosGlobals): + # One of three keys, with the internal one in on of the scripts + # tr(foreign_key_1,{pk(my_key,foreign_key_2)}) + + path = "499'/1'/0'" + _, core_xpub_orig_1 = create_new_wallet() + _, core_xpub_orig_2 = create_new_wallet() + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + wallet_policy = WalletPolicy( + name="Tapscript 1-of-3", + descriptor_template="tr(@0/**,{pk(@1/**),pk(@2/**)})", + keys_info=[ + f"{core_xpub_orig_1}", + f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}", + f"{core_xpub_orig_2}", + ]) + + run_test_e2e(navigator, client, wallet_policy, [], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_e2e_tapscript_multi_a_2of2(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, rpc, rpc_test_wallet, speculos_globals: SpeculosGlobals): + # tr(foreign_key_1,multi_a(2,my_key,foreign_key_2)) + + path = "499'/1'/0'" + _, core_xpub_orig_1 = create_new_wallet() + core_wallet_name2, core_xpub_orig_2 = create_new_wallet() + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + wallet_policy = WalletPolicy( + name="Tapscript 1 or 2-of-2", + descriptor_template="tr(@0/**,multi_a(2,@1/**,@2/**))", + keys_info=[ + f"{core_xpub_orig_1}", + f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}", + f"{core_xpub_orig_2}", + ]) + + run_test_e2e(navigator, client, wallet_policy, [core_wallet_name2], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_e2e_tapscript_maxdepth(navigator: Navigator, firmware: Firmware, client: RaggerClient, + test_name: str, rpc, rpc_test_wallet, speculos_globals: SpeculosGlobals): + # A taproot tree with maximum supported depth, where the internal key is in the deepest script + + MAX_TAPTREE_POLICY_DEPTH = 4 if firmware.name == "nanos" else 9 + + # Make the most unbalanced tree where each script is a simple pk() + parts = [f"pk(@{i}/**)" for i in range(1, MAX_TAPTREE_POLICY_DEPTH)] + descriptor_template = "tr(@0/**,{" + ',{'.join(parts) + \ + f",pk(@{MAX_TAPTREE_POLICY_DEPTH}/**)" + "}" * (MAX_TAPTREE_POLICY_DEPTH - 1) + ")" + + keys_info = [] + for _ in range(MAX_TAPTREE_POLICY_DEPTH): + _, core_xpub_orig = create_new_wallet() + keys_info.append(core_xpub_orig) + + # the last (deepest) script is the only one we sign with the ledger key + path = "499'/1'/0'" + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + keys_info.append(f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}") + + wallet_policy = WalletPolicy( + name="Tapscriptception", + descriptor_template=descriptor_template, + keys_info=keys_info) + + run_test_e2e(navigator, client, wallet_policy, [], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_e2e_tapscript_large(navigator: Navigator, firmware: Firmware, client: RaggerClient, + test_name: str, rpc, rpc_test_wallet, speculos_globals: + SpeculosGlobals): + # A quite large tapscript with 8 tapleaves and 22 keys in total. + + # Takes more memory than Nano S can handle + if (firmware.name == "nanos"): + pytest.skip("Not supported on Nano S due to memory limitations") + + keys_info = [] + + core_wallet_name = None + for i in range(21): + core_wallet_name_i, core_xpub_orig = create_new_wallet() + if i == 9: + # sign with bitcoin-core using the ninth external key (it will be key @10 in the policy) + core_wallet_name = core_wallet_name_i + keys_info.append(core_xpub_orig) + + path = "499'/1'/0'" + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + + # the internal key is key @9, in a 2-of-4 multisig + keys_info.insert(9, f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}") + + wallet_policy = WalletPolicy( + name="Tapzilla", + descriptor_template="tr(@0/**,{{{sortedmulti_a(1,@1/**,@2/**,@3/**,@4/**,@5/**),multi_a(2,@6/**,@7/**,@8/**)},{multi_a(2,@9/**,@10/**,@11/**,@12/**),pk(@13/**)}},{{multi_a(2,@14/**,@15/**),multi_a(3,@16/**,@17/**,@18/**)},{multi_a(2,@19/**,@20/**),pk(@21/**)}}})", + keys_info=keys_info) + + run_test_e2e(navigator, client, wallet_policy, [core_wallet_name], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_e2e_tapminiscript_keypath_or_decaying_3of3(navigator: Navigator, firmware: Firmware, + client: RaggerClient, test_name: str, rpc, rpc_test_wallet, speculos_globals: SpeculosGlobals): + # The key path is external + # The only script path is a decaying 3-of-3 that becomes a 2-of-3 after the timelock. + # Only one internal key in the script path. + + path = "499'/1'/0'" + _, core_xpub_orig_1 = create_new_wallet() + core_name_2, core_xpub_orig_2 = create_new_wallet() + core_name_3, core_xpub_orig_3 = create_new_wallet() + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + wallet_policy = WalletPolicy( + name="Internal or decaying 3-of-3", + descriptor_template="tr(@0/**,thresh(3,pk(@1/**),s:pk(@2/**),s:pk(@3/**),sln:older(12960)))", + keys_info=[ + f"{core_xpub_orig_1}", + f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}", + f"{core_xpub_orig_2}", + f"{core_xpub_orig_3}", + ]) + + run_test_e2e(navigator, client, wallet_policy, [core_name_2, core_name_3], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_e2e_tapminiscript_with_hash256(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, rpc, rpc_test_wallet, speculos_globals: SpeculosGlobals): + # a taptree containing a hash challenge in a script path (but we're signing for the other script path) + path = "499'/1'/0'" + _, core_xpub_orig_1 = create_new_wallet() + _, core_xpub_orig_2 = create_new_wallet() + core_name_3, core_xpub_orig_3 = create_new_wallet() + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + wallet_policy = WalletPolicy( + name="Hash challenge", + descriptor_template="tr(@0/**,{and_v(v:pk(@1/**),hash256(ae253ca2a54debcac7ecf414f6734f48c56421a08bb59182ff9f39a6fffdb588)),multi_a(2,@2/**,@3/**)})", + keys_info=[ + f"{core_xpub_orig_1}", + f"{core_xpub_orig_2}", + f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}", + f"{core_xpub_orig_3}", + ]) + + run_test_e2e(navigator, client, wallet_policy, [core_name_3], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_e2e_tapminiscript_mixed_leaves(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, rpc, rpc_test_wallet, speculos_globals: SpeculosGlobals): + # A leaf has miniscript, a leaf has sortedmulti_a (which is not miniscript) + + path = "499'/1'/0'" + _, core_xpub_orig_1 = create_new_wallet() + _, core_xpub_orig_2 = create_new_wallet() + _, core_xpub_orig_3 = create_new_wallet() + _, core_xpub_orig_4 = create_new_wallet() + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + wallet_policy = WalletPolicy( + name="Mixed tapminiscript and not", + descriptor_template="tr(@0/**,{sortedmulti_a(1,@1/**,@2/**),or_b(pk(@3/**),s:pk(@4/**))})", + keys_info=[ + f"{core_xpub_orig_1}", + f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}", + f"{core_xpub_orig_2}", + f"{core_xpub_orig_3}", + f"{core_xpub_orig_4}", + ]) + + run_test_e2e(navigator, client, wallet_policy, [], rpc, rpc_test_wallet, speculos_globals, + e2e_register_wallet_instruction(firmware, wallet_policy.n_keys), e2e_sign_psbt_instruction(firmware), test_name) + + +def test_invalid_tapminiscript(navigator: Navigator, firmware: Firmware, client: RaggerClient, + test_name: str, speculos_globals: SpeculosGlobals): + path = "48'/1'/0'/2'" + _, core_xpub_orig1 = create_new_wallet() + _, core_xpub_orig2 = create_new_wallet() + _, core_xpub_orig3 = create_new_wallet() + internal_xpub = get_internal_xpub(speculos_globals.seed, path) + internal_xpub_orig = f"[{speculos_globals.master_key_fingerprint.hex()}/{path}]{internal_xpub}" + + # can't have scripts in the key path + run_test_invalid(client, "tr(pk(@0/**))", [internal_xpub_orig]) + run_test_invalid(client, "tr(pk(@0/**),pk(@1/**))", [internal_xpub_orig, core_xpub_orig1]) + + # test scripts that are invalid inside taproot trees + run_test_invalid(client, "tr(@0,sh(pk(@1/**)))", [internal_xpub_orig, core_xpub_orig1]) + run_test_invalid(client, "tr(@0,wsh(pk(@1/**)))", [internal_xpub_orig, core_xpub_orig1]) + run_test_invalid(client, "tr(@0,multi(1,@1/**,@2/**))", [internal_xpub_orig, core_xpub_orig1, core_xpub_orig2]) + run_test_invalid(client, "tr(@0,sortedmulti(1,@1/**,@2/**))", + [internal_xpub_orig, core_xpub_orig1, core_xpub_orig2]) + + # sortedmulti_a is not valid tapminiscript (but it's valid as a tapscript) + run_test_invalid(client, "tr(@0,or_d(pk(@1/**),sortedmulti_a(2,@2/**,@3/**)))", + [ + internal_xpub_orig, + f"{core_xpub_orig1}", + f"{core_xpub_orig2}", + f"{core_xpub_orig3}", + ]) diff --git a/tests/test_get_extended_pubkey.py b/tests/test_get_extended_pubkey.py index acd6b025e..7bb8c00c8 100644 --- a/tests/test_get_extended_pubkey.py +++ b/tests/test_get_extended_pubkey.py @@ -1,13 +1,17 @@ -import threading - import pytest -from bitcoin_client.ledger_bitcoin import Client -from bitcoin_client.ledger_bitcoin.exception import DenyError, NotSupportedError -from speculos.client import SpeculosClient +from ragger_bitcoin import RaggerClient +from ragger.navigator import Navigator +from ragger.firmware import Firmware +from ragger.error import ExceptionRAPDU + +from ledger_bitcoin.exception.errors import NotSupportedError, DenyError +from ledger_bitcoin.exception.device_exception import DeviceException +from .instructions import pubkey_instruction_approve, pubkey_instruction_reject_early, pubkey_reject -def test_get_extended_pubkey_standard_nodisplay(client: Client): +def test_get_extended_pubkey_standard_display(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): testcases = { "m/44'/1'/0'": "tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT", "m/44'/1'/10'": "tpubDCwYjpDhUdPGp21gSpVay2QPJVh6WNySWMXPhbcu1DsxH31dF7mY18oibbu5RxCLBc1Szerjscuc3D5HyvfYqfRvc9mesewnFqGmPjney4d", @@ -18,6 +22,32 @@ def test_get_extended_pubkey_standard_nodisplay(client: Client): "m/86'/1'/4'/1/12": "tpubDHTZ815MvTaRmo6Qg1rnU6TEU4ZkWyA56jA1UgpmMcBGomnSsyo34EZLoctzZY9MTJ6j7bhccceUeXZZLxZj5vgkVMYfcZ7DNPsyRdFpS3f", } + for path, pubkey in testcases.items(): + assert pubkey == client.get_extended_pubkey( + path=path, + display=True, + navigator=navigator, + instructions=pubkey_instruction_approve(firmware), + testname=f"{test_name}_{path}" + ) + + +def test_get_extended_pubkey_standard_nodisplay(client: RaggerClient): + testcases = { + "m/44'/1'/0'": "tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT", + "m/44'/1'/10'": "tpubDCwYjpDhUdPGp21gSpVay2QPJVh6WNySWMXPhbcu1DsxH31dF7mY18oibbu5RxCLBc1Szerjscuc3D5HyvfYqfRvc9mesewnFqGmPjney4d", + "m/44'/1'/2'/1/42": "tpubDGF9YgHKv6qh777rcqVhpmDrbNzgophJM9ec7nHiSfrbss7fVBXoqhmZfohmJSvhNakDHAspPHjVVNL657tLbmTXvSeGev2vj5kzjMaeupT", + "m/48'/1'/4'/1'/0/7": "tpubDK8WPFx4WJo1R9mEL7Wq325wBiXvkAe8ipgb9Q1QBDTDUD2YeCfutWtzY88NPokZqJyRPKHLGwTNLT7jBG59aC6VH8q47LDGQitPB6tX2d7", + "m/49'/1'/1'/1/3": "tpubDGnetmJDCL18TyaaoyRAYbkSE9wbHktSdTS4mfsR6inC8c2r6TjdBt3wkqEQhHYPtXpa46xpxDaCXU2PRNUGVvDzAHPG6hHRavYbwAGfnFr", + "m/84'/1'/2'/0/10": "tpubDG9YpSUwScWJBBSrhnAT47NcT4NZGLcY18cpkaiWHnkUCi19EtCh8Heeox268NaFF6o56nVeSXuTyK6jpzTvV1h68Kr3edA8AZp27MiLUNt", + "m/86'/1'/4'/1/12": "tpubDHTZ815MvTaRmo6Qg1rnU6TEU4ZkWyA56jA1UgpmMcBGomnSsyo34EZLoctzZY9MTJ6j7bhccceUeXZZLxZj5vgkVMYfcZ7DNPsyRdFpS3f", + # support up to 8 steps + "m/86'/1'/4'/1/2/3/4/5": "tpubDNcjumrTe1BBYEc1FmMaJZQw47mbvb4LfX4YwqC6GQ18PfMfuH3BEYREfdHm2gWXkSJ3JiXHF11iKnbJxzxp5qkgo8BBy2L48FRvrLhpTuh", + # the following two paths test compatibility with Unchained Capital's multisig setup + "m/45'/1'/0'": "tpubDCy2BKyxJFzACNgThkunvdnkHNotREK9LQDw8L9J1gx26SyzfoeJynJgWekzkramggmahVAgeHPxfpnvFtJ7hcYADrsVUnsPSei2tY9fBLL", + "m/45'/1'/0'/1": "tpubDFGDxRGdGFKekUtPuta4p9Kw2a2PSeyyhSTa7KNENJfBuJ78EEsL1LxwAA8ddSxZFWBT9gYRuLDoa2rwdix56WRsq77vAJ2iqeyPw6UBeyt", + } + for path, pubkey in testcases.items(): assert pubkey == client.get_extended_pubkey( path=path, @@ -25,7 +55,7 @@ def test_get_extended_pubkey_standard_nodisplay(client: Client): ) -def test_get_extended_pubkey_nonstandard_nodisplay(client: Client): +def test_get_extended_pubkey_nonstandard_nodisplay(client: RaggerClient): # as these paths are not standard, the app should reject immediately if display=False testcases = [ "m", # unusual to export the root key @@ -38,108 +68,64 @@ def test_get_extended_pubkey_nonstandard_nodisplay(client: Client): "m/48'/1'/0'/0'", # script_type is 1' or 2' for BIP-0048 "m/48'/1'/0'/3'", # script_type is 1' or 2' for BIP-0048 "m/999'/1'/0'", # no standard with this purpose - "m/44'/1'/10'/0", # missing address_index - "m/44'/1'/10'/2/3", # change bigger than 1 - "m/44'/1'/10'/0/3/5", # no derivation steps expected after address_index ] for path in testcases: - with pytest.raises(NotSupportedError): + with pytest.raises(ExceptionRAPDU) as e: client.get_extended_pubkey( path=path, display=False ) + assert DeviceException.exc.get(e.value.status) == NotSupportedError + assert len(e.value.data) == 0 + -@pytest.mark.skip(reason="Crashes Bitcoin Testnet app when run with other tests") -def test_get_extended_pubkey_non_standard(client: Client, comm: SpeculosClient, is_speculos: bool): +def test_get_extended_pubkey_non_standard(navigator: Navigator, firmware: Firmware, client: + RaggerClient, + test_name: str): # Test the successful UX flow for a non-standard path (here, root path) # (Slow test, not feasible to repeat it for many paths) - if not is_speculos: - pytest.skip("Requires speculos") - - def ux_thread(): - event = comm.wait_for_text_event("path is unusual") - - # press right until the last screen (will press the "right" button more times than needed) - while "Reject" != event["text"]: - comm.press_and_release("right") - - event = comm.get_next_event() - - # go back to the Accept screen, then accept - comm.press_and_release("left") - comm.press_and_release("both") - - x = threading.Thread(target=ux_thread) - x.start() - pub_key = client.get_extended_pubkey( path="m", # root pubkey - display=True + display=True, + navigator=navigator, + instructions=pubkey_instruction_approve(firmware), + testname=test_name ) - x.join() - assert pub_key == "tpubD6NzVbkrYhZ4YgUx2ZLNt2rLYAMTdYysCRzKoLu2BeSHKvzqPaBDvf17GeBPnExUVPkuBpx4kniP964e2MxyzzazcXLptxLXModSVCVEV1T" -def test_get_extended_pubkey_non_standard_reject_early(client: Client, comm: SpeculosClient, is_speculos: bool): +def test_get_extended_pubkey_non_standard_reject_early(navigator: Navigator, firmware: Firmware, + client: RaggerClient, test_name: str): # Test rejecting after the "Reject if you're not sure" warning # (Slow test, not feasible to repeat it for many paths) - if not is_speculos: - pytest.skip("Requires speculos") - - def ux_thread(): - comm.wait_for_text_event("path is unusual") - comm.press_and_release("right") - comm.wait_for_text_event("Confirm public key") - comm.press_and_release("right") - comm.wait_for_text_event("111'/222'/333'") - comm.press_and_release("right") - comm.wait_for_text_event("not sure") # second line of "Reject if you're not sure" - comm.press_and_release("both") - - x = threading.Thread(target=ux_thread) - x.start() - - with pytest.raises(DenyError): + with pytest.raises(ExceptionRAPDU) as e: client.get_extended_pubkey( path="m/111'/222'/333'", - display=True + display=True, + navigator=navigator, + instructions=pubkey_instruction_reject_early(firmware), + testname=test_name ) - - x.join() + assert DeviceException.exc.get(e.value.status) == DenyError + assert len(e.value.data) == 0 -@pytest.mark.skip(reason="Fails (does not raise) when run with other tests") -def test_get_extended_pubkey_non_standard_reject(client: Client, comm: SpeculosClient, is_speculos: bool): +def test_get_extended_pubkey_non_standard_reject(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): # Test rejecting at the end # (Slow test, not feasible to repeat it for many paths) - if not is_speculos: - pytest.skip("Requires speculos") - - def ux_thread(): - event = comm.wait_for_text_event("path is unusual") - - # press right until the last screen (will press the "right" button more times than needed) - while "Reject" != event["text"]: - comm.press_and_release("right") - - event = comm.get_next_event() - - # finally, reject - comm.press_and_release("both") - - x = threading.Thread(target=ux_thread) - x.start() - - with pytest.raises(DenyError): + with pytest.raises(ExceptionRAPDU) as e: client.get_extended_pubkey( path="m/111'/222'/333'", - display=True + display=True, + navigator=navigator, + instructions=pubkey_reject(firmware), + testname=test_name, ) - - x.join() + assert DeviceException.exc.get(e.value.status) == DenyError + assert len(e.value.data) == 0 diff --git a/tests/test_get_master_fingerprint.py b/tests/test_get_master_fingerprint.py index 44c55bad3..d909bc1ab 100644 --- a/tests/test_get_master_fingerprint.py +++ b/tests/test_get_master_fingerprint.py @@ -1,6 +1,6 @@ -from bitcoin_client.ledger_bitcoin import Client +from ragger_bitcoin import RaggerClient from .conftest import SpeculosGlobals -def test_get_master_fingerprint(client: Client, speculos_globals: SpeculosGlobals): +def test_get_master_fingerprint(client: RaggerClient, speculos_globals: SpeculosGlobals): assert client.get_master_fingerprint() == speculos_globals.master_key_fingerprint diff --git a/tests/test_get_version.py b/tests/test_get_version.py index 9cfac6a7f..1876c4971 100644 --- a/tests/test_get_version.py +++ b/tests/test_get_version.py @@ -1,7 +1,7 @@ -from bitcoin_client.ledger_bitcoin import Client +from ragger_bitcoin import RaggerClient -def test_get_version(client: Client, app_version: str): +def test_get_version(client: RaggerClient, app_version: str): returned_app_name, returned_app_version, returned_app_flags = client.get_version() assert returned_app_version == app_version, "App version in Makefile did not match the one returned by the app" diff --git a/tests/test_get_wallet_address.py b/tests/test_get_wallet_address.py index a769b4673..199b2a82e 100644 --- a/tests/test_get_wallet_address.py +++ b/tests/test_get_wallet_address.py @@ -1,59 +1,69 @@ -from bitcoin_client.ledger_bitcoin import Client, AddressType, MultisigWallet, PolicyMapWallet -from bitcoin_client.ledger_bitcoin.exception.errors import IncorrectDataError +from hashlib import sha256 +import hmac +import re +from ledger_bitcoin import Client, AddressType, MultisigWallet, WalletPolicy +from ledger_bitcoin.exception.errors import IncorrectDataError +from ledger_bitcoin.exception.device_exception import DeviceException +from ragger.error import ExceptionRAPDU +from ragger_bitcoin import RaggerClient + +from .conftest import testnet_to_regtest_addr as T import pytest +from test_utils import SpeculosGlobals + # TODO: add tests with UI -def test_get_wallet_address_singlesig_legacy(client: Client): +def test_get_wallet_address_singlesig_legacy(client: RaggerClient): # legacy address (P2PKH) - wallet = PolicyMapWallet( + wallet = WalletPolicy( name="", - policy_map="pkh(@0)", + descriptor_template="pkh(@0/**)", keys_info=[ - f"[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT/**", + f"[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT", ], ) assert client.get_wallet_address(wallet, None, 0, 0, False) == "mz5vLWdM1wHVGSmXUkhKVvZbJ2g4epMXSm" assert client.get_wallet_address(wallet, None, 1, 15, False) == "myFCUBRCKFjV7292HnZtiHqMzzHrApobpT" -def test_get_wallet_address_singlesig_wit(client: Client): +def test_get_wallet_address_singlesig_wit(client: RaggerClient): # bech32 address (P2WPKH) - wallet = PolicyMapWallet( + wallet = WalletPolicy( name="", - policy_map="wpkh(@0)", + descriptor_template="wpkh(@0/**)", keys_info=[ - f"[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**", + f"[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P", ], ) assert client.get_wallet_address(wallet, None, 0, 0, False) == "tb1qzdr7s2sr0dwmkwx033r4nujzk86u0cy6fmzfjk" assert client.get_wallet_address(wallet, None, 1, 15, False) == "tb1qlrvzyx8jcjfj2xuy69du9trtxnsvjuped7e289" -def test_get_wallet_address_singlesig_sh_wit(client: Client): +def test_get_wallet_address_singlesig_sh_wit(client: RaggerClient): # wrapped segwit addresses (P2SH-P2WPKH) - wallet = PolicyMapWallet( + wallet = WalletPolicy( name="", - policy_map="sh(wpkh(@0))", + descriptor_template="sh(wpkh(@0/**))", keys_info=[ - f"[f5acc2fd/49'/1'/0']tpubDC871vGLAiKPcwAw22EjhKVLk5L98UGXBEcGR8gpcigLQVDDfgcYW24QBEyTHTSFEjgJgbaHU8CdRi9vmG4cPm1kPLmZhJEP17FMBdNheh3/**", + f"[f5acc2fd/49'/1'/0']tpubDC871vGLAiKPcwAw22EjhKVLk5L98UGXBEcGR8gpcigLQVDDfgcYW24QBEyTHTSFEjgJgbaHU8CdRi9vmG4cPm1kPLmZhJEP17FMBdNheh3", ], ) assert client.get_wallet_address(wallet, None, 0, 0, False) == "2MyHkbusvLomaarGYMqyq7q9pSBYJRwWcsw" assert client.get_wallet_address(wallet, None, 1, 15, False) == "2NAbM4FSeBQG4o85kbXw2YNfKypcnEZS9MR" -def test_get_wallet_address_singlesig_taproot(client: Client): +def test_get_wallet_address_singlesig_taproot(client: RaggerClient): # test for a native taproot wallet (bech32m addresses, per BIP-0086) - wallet = PolicyMapWallet( + wallet = WalletPolicy( name="", - policy_map="tr(@0)", + descriptor_template="tr(@0/**)", keys_info=[ - f"[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U/**", + f"[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U", ], ) @@ -72,71 +82,131 @@ def test_get_wallet_address_singlesig_taproot(client: Client): # Failure cases for default wallets -def test_get_wallet_address_default_fail_wrongkeys(client: Client): +def test_get_wallet_address_fail_nonstandard(client: RaggerClient): + # Not empty name should be rejected + with pytest.raises(ExceptionRAPDU) as e: + client.get_wallet_address(WalletPolicy( + name="Not empty", + descriptor_template="pkh(@0/**)", + keys_info=[ + f"[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT", + ], + ), None, 0, 0, False) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 + # 0 keys info should be rejected - with pytest.raises(IncorrectDataError): - client.get_wallet_address(PolicyMapWallet( + with pytest.raises(ExceptionRAPDU) as e: + client.get_wallet_address(WalletPolicy( name="", - policy_map="pkh(@0)", + descriptor_template="pkh(@0/**)", keys_info=[], ), None, 0, 0, False) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 # more than 1 key should be rejected - with pytest.raises(IncorrectDataError): - client.get_wallet_address(PolicyMapWallet( + with pytest.raises(ExceptionRAPDU) as e: + client.get_wallet_address(WalletPolicy( name="", - policy_map="pkh(@0)", + descriptor_template="pkh(@0/**)", keys_info=[ - f"[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT/**", - f"[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT/**" + f"[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT", + f"[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT" ], ), None, 0, 0, False) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 # wrong BIP44 purpose should be rejected (here using 84' for a P2PKH address) - with pytest.raises(IncorrectDataError): - client.get_wallet_address(PolicyMapWallet( + with pytest.raises(ExceptionRAPDU) as e: + client.get_wallet_address(WalletPolicy( name="", - policy_map="pkh(@0)", + descriptor_template="pkh(@0/**)", keys_info=[ - f"[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**", + f"[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P", ], ), None, 0, 0, False) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 - # mismatching pubkey (claiming key origin "44'/1'/0'", but that's the extended dpubkey for "84'/1'/0'"") - with pytest.raises(IncorrectDataError): - client.get_wallet_address(PolicyMapWallet( + # mismatching pubkey (claiming key origin "44'/1'/0'", but that's the extended pubkey for "84'/1'/0'"") + with pytest.raises(ExceptionRAPDU) as e: + client.get_wallet_address(WalletPolicy( name="", - policy_map="pkh(@0)", + descriptor_template="pkh(@0/**)", keys_info=[ - f"[f5acc2fd/44'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**", + f"[f5acc2fd/44'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P", ], ), None, 0, 0, False) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 # wrong master fingerprint - with pytest.raises(IncorrectDataError): - client.get_wallet_address(PolicyMapWallet( + with pytest.raises(ExceptionRAPDU) as e: + client.get_wallet_address(WalletPolicy( name="", - policy_map="pkh(@0)", + descriptor_template="pkh(@0/**)", keys_info=[ - f"[42424242/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT/**", + f"[42424242/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT", ], ), None, 0, 0, False) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 # too large address_index, cannot be done non-silently - with pytest.raises(IncorrectDataError): - client.get_wallet_address(PolicyMapWallet( + with pytest.raises(ExceptionRAPDU) as e: + client.get_wallet_address(WalletPolicy( name="", - policy_map="pkh(@0)", + descriptor_template="pkh(@0/**)", keys_info=[ - f"[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT/**", + f"[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT", ], ), None, 0, 100000, False) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 + + # missing key origin info + with pytest.raises(ExceptionRAPDU) as e: + client.get_wallet_address(WalletPolicy( + name="", + descriptor_template="pkh(@0/**)", + keys_info=[ + f"tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT", + ], + ), None, 0, 0, False) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 + + # non-standard final derivation steps + with pytest.raises(ExceptionRAPDU) as e: + client.get_wallet_address(WalletPolicy( + name="", + descriptor_template="pkh(@0/<0;2>/*)", + keys_info=[ + f"[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT", + ], + ), None, 0, 0, False) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 + + # taproot single-sig with non-empty script + with pytest.raises(ExceptionRAPDU) as e: + client.get_wallet_address(WalletPolicy( + name="", + descriptor_template="tr(@0,0)", + keys_info=[ + f"[f5acc2fd/86'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT", + ], + ), None, 0, 0, False) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 # Multisig -def test_get_wallet_address_multisig_legacy(client: Client): +def test_get_wallet_address_multisig_legacy(client: RaggerClient): # test for a legacy p2sh multisig wallet wallet = MultisigWallet( @@ -144,19 +214,19 @@ def test_get_wallet_address_multisig_legacy(client: Client): address_type=AddressType.LEGACY, threshold=2, keys_info=[ - f"[5c9e228d/48'/1'/0'/0']tpubDEGquuorgFNb8bjh5kNZQMPtABJzoWwNm78FUmeoPkfRtoPF7JLrtoZeT3J3ybq1HmC3Rn1Q8wFQ8J5usanzups5rj7PJoQLNyvq8QbJruW/**", - f"[f5acc2fd/48'/1'/0'/0']tpubDFAqEGNyad35WQAZMmPD4vgBXnjH16RGciLdWekPe4f4d5JzoHVu1PS86Sy4Tm63vDf8rfV3UjifhrRuSUDfiZj5KPffTPyZ4ZXBKvjD8jm/**", + f"[5c9e228d/48'/1'/0'/0']tpubDEGquuorgFNb8bjh5kNZQMPtABJzoWwNm78FUmeoPkfRtoPF7JLrtoZeT3J3ybq1HmC3Rn1Q8wFQ8J5usanzups5rj7PJoQLNyvq8QbJruW", + f"[f5acc2fd/48'/1'/0'/0']tpubDFAqEGNyad35WQAZMmPD4vgBXnjH16RGciLdWekPe4f4d5JzoHVu1PS86Sy4Tm63vDf8rfV3UjifhrRuSUDfiZj5KPffTPyZ4ZXBKvjD8jm", ], ) wallet_hmac = bytes.fromhex( - "1980a07cde99fbdec0d487671d3bb296507e47b3ddfa778600a9d73d501983bc" + "fa73e36119324fbe4cc1ca94aa842c6261526d44112a22164bc57c3335102b04" ) res = client.get_wallet_address(wallet, wallet_hmac, 0, 0, False) assert res == "2Mx69MjHC4ViZAH1koVXPvVgaazbBCdr89j" -def test_get_wallet_address_multisig_sh_wit(client: Client): +def test_get_wallet_address_multisig_sh_wit(client: RaggerClient): # test for a wrapped segwit multisig wallet wallet = MultisigWallet( @@ -164,19 +234,19 @@ def test_get_wallet_address_multisig_sh_wit(client: Client): address_type=AddressType.SH_WIT, threshold=2, keys_info=[ - f"[76223a6e/48'/1'/0'/1']tpubDE7NQymr4AFtcJXi9TaWZtrhAdy8QyKmT4U6b9qYByAxCzoyMJ8zw5d8xVLVpbTRAEqP8pVUxjLE2vDt1rSFjaiS8DSz1QcNZ8D1qxUMx1g/**", - f"[f5acc2fd/48'/1'/0'/1']tpubDFAqEGNyad35YgH8zxvxFZqNUoPtr5mDojs7wzbXQBHTZ4xHeVXG6w2HvsKvjBpaRpTmjYDjdPg5w2c6Wvu8QBkyMDrmBWdCyqkDM7reSsY/**", + f"[76223a6e/48'/1'/0'/1']tpubDE7NQymr4AFtcJXi9TaWZtrhAdy8QyKmT4U6b9qYByAxCzoyMJ8zw5d8xVLVpbTRAEqP8pVUxjLE2vDt1rSFjaiS8DSz1QcNZ8D1qxUMx1g", + f"[f5acc2fd/48'/1'/0'/1']tpubDFAqEGNyad35YgH8zxvxFZqNUoPtr5mDojs7wzbXQBHTZ4xHeVXG6w2HvsKvjBpaRpTmjYDjdPg5w2c6Wvu8QBkyMDrmBWdCyqkDM7reSsY", ], ) wallet_hmac = bytes.fromhex( - "ff96c09cfacf89f836ded409b7315b9d7f242db8033e4de4db1cb4c275153988" + "1f498e7444841b883c4a63e2b88a5cad297c289d235794f8e3e17cf559ed0654" ) res = client.get_wallet_address(wallet, wallet_hmac, 0, 0, False) assert res == "2MxAUTJh27foYtyp9dcSxP7RgaSwkkVCHTU" -def test_get_wallet_address_multisig_wit(client: Client): +def test_get_wallet_address_multisig_wit(client: RaggerClient): # test for a native segwit multisig wallet (bech32 address) wallet = MultisigWallet( @@ -184,13 +254,180 @@ def test_get_wallet_address_multisig_wit(client: Client): address_type=AddressType.WIT, threshold=2, keys_info=[ - f"[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF/**", - f"[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK/**", + f"[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + f"[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", ], ) wallet_hmac = bytes.fromhex( - "d6434852fb3caa7edbd1165084968f1691444b3cfc10cf1e431acbbc7f48451f" + "d7c7a60b4ab4a14c1bf8901ba627d72140b2fb907f2b4e35d2e693bce9fbb371" ) res = client.get_wallet_address(wallet, wallet_hmac, 0, 0, False) assert res == "tb1qmyauyzn08cduzdqweexgna2spwd0rndj55fsrkefry2cpuyt4cpsn2pg28" + + +def test_get_wallet_address_tr_script_pk(client: RaggerClient): + wallet = WalletPolicy( + name="Taproot foreign internal key, and our script key", + descriptor_template="tr(@0/**,pk(@1/**))", + keys_info=[ + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + ], + ) + + wallet_hmac = bytes.fromhex( + "dae925660e20859ed8833025d46444483ce264fdb77e34569aabe9d590da8fb7" + ) + + res = client.get_wallet_address(wallet, wallet_hmac, 0, 0, False) + assert res == "tb1pls9pp5cgcljpkjauxep03lv2c2yc2wcuua26p3ks6j2lq0vl9kjqf5rgm2" + + +def test_get_wallet_address_tr_script_sortedmulti(client: RaggerClient): + wallet = WalletPolicy( + name="Taproot single-key or multisig 2-of-2", + descriptor_template="tr(@0/**,sortedmulti_a(2,@1/**,@2/**))", + keys_info=[ + "[f5acc2fd/48'/1'/0'/1']tpubDFAqEGNyad35YgH8zxvxFZqNUoPtr5mDojs7wzbXQBHTZ4xHeVXG6w2HvsKvjBpaRpTmjYDjdPg5w2c6Wvu8QBkyMDrmBWdCyqkDM7reSsY", + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + ], + ) + + wallet_hmac = bytes.fromhex( + "a3f31e9d7b70d1d967413488bae136a8b6c7afd1de0524deb6cf74f5c509b9ab" + ) + + res = client.get_wallet_address(wallet, wallet_hmac, 0, 0, False) + assert res == "tb1pdzk72dnvz3246474p4m5a97u43h6ykt2qcjrrhk6y0fkg8hx2mvswwgvv7" + + +def test_get_wallet_address_large_addr_index(client: RaggerClient): + # 2**31 - 1 is the largest index allowed, per BIP-32 + + wallet = MultisigWallet( + name="Cold storage", + address_type=AddressType.WIT, + threshold=2, + keys_info=[ + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + ], + ) + wallet_hmac = bytes.fromhex( + "d7c7a60b4ab4a14c1bf8901ba627d72140b2fb907f2b4e35d2e693bce9fbb371" + ) + + client.get_wallet_address(wallet, wallet_hmac, 0, 2**31 - 1, False) + + # too large address_index, not allowed for an unhardened step + with pytest.raises(ExceptionRAPDU) as e: + client.get_wallet_address(wallet, wallet_hmac, 0, 2**31, False) + + +def test_get_wallet_address_miniscript_all_fragments(client: Client, speculos_globals: SpeculosGlobals, rpc): + # Create some miniscripts to exercise all possible fragments at least once, + # by comparing with the addresses generated by bitcoin-core. + + # arbitrary 20-bytes and 32-bytes hex strings + H20 = bytes(list(range(20))).hex() + H32 = bytes(list(range(32))).hex() + fragments_common = [ + "or_d(pk(@0/**),0)", # 0, or_d and pk + "1", # 1 + "c:pk_k(@0/**)", # pk_k and c: + "c:pk_h(@0/**)", # pk_h + "pkh(@0/**)", # pkh + "older(42)", # older + "after(42)", # after + f"sha256({H32})", # sha256 + f"ripemd160({H20})", # ripemd160 + f"hash256({H32})", # hash256 + f"hash160({H20})", # hash160 + "andor(pk(@0/**),older(42),pk(@1/**))", # andor + "and_v(v:pk(@0/**),pk(@1/**))", # and_v and v: + "and_b(pk(@0/**),a:pk(@1/**))", # and_b and a: + "or_b(pk(@0/**),a:pk(@1/**))", # or_b + "t:or_c(pk(@0/**),v:pk(@1/**))", # or_c and t: + # or_d is covered + "or_i(pk(@0/**),pk(@1/**))", # or_i + "thresh(1,pk(@0/**),a:pk(@1/**))", # thresh + "thresh(1,pk(@0/**))", # thresh(1,X) + + # WRAPPERS not covered above + # a: is covered + "and_b(1,s:pk(@0/**))", # s: + # c: is covered + "dv:older(42)", # d: + # t: is covered + # v: is covered + "j:pk(@0/**)", # j: + "n:pk(@0/**)", # n: + "l:pk(@0/**)", # l: + "u:pk(@0/**)", # u: + ] + + fragments_wsh = [ + *fragments_common, + "multi(2,@0/**,@1/**,@2/**)", # multi + "multi(1,@0/**)", # multi(1,X) + ] + + fragments_tr = [ + *fragments_common, + "multi_a(2,@0/**,@1/**,@2/**)", # multi_a + "multi_a(1,@0/**)", # multi_a(1,X) + ] + + def prepend_a(frag): + # prepends the a: wrapper (taking into account that `frag` could already start with wrappers) + if re.match("^[a-z]+:", frag): + return "a" + frag + else: + return "a:" + frag + + test_keys = [ + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + 'tpubDDcmHJ6bsQqSRDzXrF1cgyPfXpFTHmqBUcq5cevfszh83XJtjqXZXDYwP3N82bA51dBVhbe3uaaWwAxW2tEsjgZPXmupQpNwdmULXq1WXDU', + 'tpubDCXK744twow5CX8HdAvV4Vez413R4xrM3hgD85mA3EpbnwgvtBmhh18eLAGsL5R9E2mwThPTz9fs4x4ZYgCC6GuuKmzSitH9FgWyqaDEKta', + 'tpubDCLxCbopTq5qisZzRcf5ZJ8dHR3PXEexc1vDUR61eGDnSVcXjvEwC9CFXqRPzCi9vmrMd6xfJtFrZY8yrPo5886K1AjJACAviLuEXMNfvbS', + 'tpubDB7v3qHJSGF9r3c1VRnQxwVi7gaTWWF7rt1zohdU4RRahfcvcYXjQ63PWzHSGBzY3ZCu61A1t9SENM147kwdWimtmo5Lm5HgPNgzk83Q45x' + ] + + is_change = False + addr_index = 3 + + def generate_address_and_compare_with_core(desc_tmpl: str): + n_keys_total = desc_tmpl.count("@") + wallet_policy = WalletPolicy("A policy", desc_tmpl, test_keys[:n_keys_total]) + + assert n_keys_total <= len(test_keys), "add more tpubs to the test_keys" + + wallet_hmac = hmac.new(speculos_globals.wallet_registration_key, wallet_policy.id, sha256).digest() + addr_hww = client.get_wallet_address(wallet_policy, wallet_hmac, is_change, addr_index, False) + + desc = wallet_policy.get_descriptor(is_change) + # compute descriptor checksum and derive the address + desc_chk = rpc.getdescriptorinfo(desc)["descriptor"] + addr_core = rpc.deriveaddresses(desc_chk, [3, 3])[0] + + assert T(addr_hww) == addr_core + + for fr in fragments_wsh: + # We use "and_b(pk(@/**),a:})" as a generic gadget to compute + # a valid descriptor that can be registered, as long as the if valid and safe. + + n_keys = fr.count("@") + desc_tmpl = f"wsh(and_b(pk(@{n_keys}/**),{prepend_a(fr)}))" + + generate_address_and_compare_with_core(desc_tmpl) + + for fr in fragments_tr: + # For taproot miniscript, we use "tr(@, and_b(pk(@/**),a:})" + # as the generic gadget. + + n_keys = fr.count("@") + desc_tmpl = f"tr(@{n_keys}/**,and_b(pk(@{n_keys+1}/**),{prepend_a(fr)}))" + + generate_address_and_compare_with_core(desc_tmpl) diff --git a/tests/test_get_wallet_address_v1.py b/tests/test_get_wallet_address_v1.py new file mode 100644 index 000000000..8d7f52e3f --- /dev/null +++ b/tests/test_get_wallet_address_v1.py @@ -0,0 +1,270 @@ +# Tests using the V1 version of the wallet policy language, used before version 2.1.0 of the app +# Make sure we remain compatible for some time. + +from ledger_bitcoin import AddressType, MultisigWallet, WalletPolicy, WalletType +from ledger_bitcoin.exception.device_exception import DeviceException +from ledger_bitcoin.exception.errors import IncorrectDataError +from ragger.navigator import Navigator, NavInsID +from ragger.firmware import Firmware +from ragger.error import ExceptionRAPDU +from ragger_bitcoin import RaggerClient + +from .instructions import wallet_instruction_approve + + +import pytest + +# TODO: add more tests with UI + + +def test_get_wallet_address_singlesig_legacy_v1(client: RaggerClient): + # legacy address (P2PKH) + wallet = WalletPolicy( + name="", + descriptor_template="pkh(@0)", + keys_info=[ + f"[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT/**", + ], + version=WalletType.WALLET_POLICY_V1 + ) + assert client.get_wallet_address(wallet, None, 0, 0, False) == "mz5vLWdM1wHVGSmXUkhKVvZbJ2g4epMXSm" + assert client.get_wallet_address(wallet, None, 1, 15, False) == "myFCUBRCKFjV7292HnZtiHqMzzHrApobpT" + + +def test_get_wallet_address_singlesig_wit_v1(client: RaggerClient): + # bech32 address (P2WPKH) + wallet = WalletPolicy( + name="", + descriptor_template="wpkh(@0)", + keys_info=[ + f"[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**", + ], + version=WalletType.WALLET_POLICY_V1 + ) + assert client.get_wallet_address(wallet, None, 0, 0, False) == "tb1qzdr7s2sr0dwmkwx033r4nujzk86u0cy6fmzfjk" + assert client.get_wallet_address(wallet, None, 1, 15, False) == "tb1qlrvzyx8jcjfj2xuy69du9trtxnsvjuped7e289" + + +def test_get_wallet_address_singlesig_sh_wit_v1(client: RaggerClient): + # wrapped segwit addresses (P2SH-P2WPKH) + wallet = WalletPolicy( + name="", + descriptor_template="sh(wpkh(@0))", + keys_info=[ + f"[f5acc2fd/49'/1'/0']tpubDC871vGLAiKPcwAw22EjhKVLk5L98UGXBEcGR8gpcigLQVDDfgcYW24QBEyTHTSFEjgJgbaHU8CdRi9vmG4cPm1kPLmZhJEP17FMBdNheh3/**", + ], + version=WalletType.WALLET_POLICY_V1 + ) + assert client.get_wallet_address(wallet, None, 0, 0, False) == "2MyHkbusvLomaarGYMqyq7q9pSBYJRwWcsw" + assert client.get_wallet_address(wallet, None, 1, 15, False) == "2NAbM4FSeBQG4o85kbXw2YNfKypcnEZS9MR" + + +def test_get_wallet_address_singlesig_taproot_v1(client: RaggerClient): + # test for a native taproot wallet (bech32m addresses, per BIP-0086) + + wallet = WalletPolicy( + name="", + descriptor_template="tr(@0)", + keys_info=[ + f"[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U/**", + ], + version=WalletType.WALLET_POLICY_V1 + ) + + res = client.get_wallet_address(wallet, None, 0, 0, False) + assert res == "tb1pws8wvnj99ca6acf8kq7pjk7vyxknah0d9mexckh5s0vu2ccy68js9am6u7" + + res = client.get_wallet_address(wallet, None, 0, 9, False) + assert res == "tb1psl7eyk2jyjzq6evqvan854fts7a5j65rth25yqahkd2a765yvj0qggs5ne" + + res = client.get_wallet_address(wallet, None, 1, 0, False) + assert res == "tb1pmr60r5vfjmdkrwcu4a2z8h39mzs7a6wf2rfhuml6qgcp940x9cxs7t9pdy" + + res = client.get_wallet_address(wallet, None, 1, 9, False) + assert res == "tb1p98d6s9jkf0la8ras4nnm72zme5r03fexn29e3pgz4qksdy84ndpqgjak72" + + +# Failure cases for default wallets + +def test_get_wallet_address_default_fail_wrongkeys_v1(client: RaggerClient): + # 0 keys info should be rejected + with pytest.raises(ExceptionRAPDU) as e: + client.get_wallet_address(WalletPolicy( + name="", + descriptor_template="pkh(@0)", + keys_info=[], + version=WalletType.WALLET_POLICY_V1 + ), None, 0, 0, False) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 + + # more than 1 key should be rejected + with pytest.raises(ExceptionRAPDU) as e: + client.get_wallet_address(WalletPolicy( + name="", + descriptor_template="pkh(@0)", + keys_info=[ + f"[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT/**", + f"[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT/**" + ], + ), None, 0, 0, False) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 + + # wrong BIP44 purpose should be rejected (here using 84' for a P2PKH address) + with pytest.raises(ExceptionRAPDU) as e: + client.get_wallet_address(WalletPolicy( + name="", + descriptor_template="pkh(@0)", + keys_info=[ + f"[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**", + ], + version=WalletType.WALLET_POLICY_V1 + ), None, 0, 0, False) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 + + # mismatching pubkey (claiming key origin "44'/1'/0'", but that's the extended dpubkey for "84'/1'/0'"") + with pytest.raises(ExceptionRAPDU) as e: + client.get_wallet_address(WalletPolicy( + name="", + descriptor_template="pkh(@0)", + keys_info=[ + f"[f5acc2fd/44'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**", + ], + ), None, 0, 0, False) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 + + # wrong master fingerprint + with pytest.raises(ExceptionRAPDU) as e: + client.get_wallet_address(WalletPolicy( + name="", + descriptor_template="pkh(@0)", + keys_info=[ + f"[42424242/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT/**", + ], + version=WalletType.WALLET_POLICY_V1 + ), None, 0, 0, False) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 + + # too large address_index, cannot be done non-silently + with pytest.raises(ExceptionRAPDU) as e: + client.get_wallet_address(WalletPolicy( + name="", + descriptor_template="pkh(@0)", + keys_info=[ + f"[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT/**", + ], + version=WalletType.WALLET_POLICY_V1 + ), None, 0, 100000, False) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 + + +# Multisig + +def test_get_wallet_address_multisig_legacy_v1(client: RaggerClient): + # test for a legacy p2sh multisig wallet + + wallet = MultisigWallet( + name="Cold storage", + address_type=AddressType.LEGACY, + threshold=2, + keys_info=[ + f"[5c9e228d/48'/1'/0'/0']tpubDEGquuorgFNb8bjh5kNZQMPtABJzoWwNm78FUmeoPkfRtoPF7JLrtoZeT3J3ybq1HmC3Rn1Q8wFQ8J5usanzups5rj7PJoQLNyvq8QbJruW/**", + f"[f5acc2fd/48'/1'/0'/0']tpubDFAqEGNyad35WQAZMmPD4vgBXnjH16RGciLdWekPe4f4d5JzoHVu1PS86Sy4Tm63vDf8rfV3UjifhrRuSUDfiZj5KPffTPyZ4ZXBKvjD8jm/**", + ], + version=WalletType.WALLET_POLICY_V1 + ) + wallet_hmac = bytes.fromhex( + "1980a07cde99fbdec0d487671d3bb296507e47b3ddfa778600a9d73d501983bc" + ) + + res = client.get_wallet_address(wallet, wallet_hmac, 0, 0, False) + assert res == "2Mx69MjHC4ViZAH1koVXPvVgaazbBCdr89j" + + +def test_get_wallet_address_multisig_sh_wit_v1(client: RaggerClient): + # test for a wrapped segwit multisig wallet + + wallet = MultisigWallet( + name="Cold storage", + address_type=AddressType.SH_WIT, + threshold=2, + keys_info=[ + f"[76223a6e/48'/1'/0'/1']tpubDE7NQymr4AFtcJXi9TaWZtrhAdy8QyKmT4U6b9qYByAxCzoyMJ8zw5d8xVLVpbTRAEqP8pVUxjLE2vDt1rSFjaiS8DSz1QcNZ8D1qxUMx1g/**", + f"[f5acc2fd/48'/1'/0'/1']tpubDFAqEGNyad35YgH8zxvxFZqNUoPtr5mDojs7wzbXQBHTZ4xHeVXG6w2HvsKvjBpaRpTmjYDjdPg5w2c6Wvu8QBkyMDrmBWdCyqkDM7reSsY/**", + ], + version=WalletType.WALLET_POLICY_V1 + ) + wallet_hmac = bytes.fromhex( + "ff96c09cfacf89f836ded409b7315b9d7f242db8033e4de4db1cb4c275153988" + ) + + res = client.get_wallet_address(wallet, wallet_hmac, 0, 0, False) + assert res == "2MxAUTJh27foYtyp9dcSxP7RgaSwkkVCHTU" + + +def test_get_wallet_address_multisig_wit_v1(client: RaggerClient): + # test for a native segwit multisig wallet (bech32 address) + + wallet = MultisigWallet( + name="Cold storage", + address_type=AddressType.WIT, + threshold=2, + keys_info=[ + f"[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF/**", + f"[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK/**", + ], + version=WalletType.WALLET_POLICY_V1 + ) + wallet_hmac = bytes.fromhex( + "d6434852fb3caa7edbd1165084968f1691444b3cfc10cf1e431acbbc7f48451f" + ) + + res = client.get_wallet_address(wallet, wallet_hmac, 0, 0, False) + assert res == "tb1qmyauyzn08cduzdqweexgna2spwd0rndj55fsrkefry2cpuyt4cpsn2pg28" + + +def test_get_wallet_address_singlesig_legacy_v1_ui(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + # legacy address (P2PKH) + wallet = WalletPolicy( + name="", + descriptor_template="pkh(@0)", + keys_info=[ + f"[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT/**", + ], + version=WalletType.WALLET_POLICY_V1 + ) + + assert client.get_wallet_address(wallet, None, 0, 0, True, navigator=navigator, + instructions=wallet_instruction_approve(firmware), testname=f"{test_name}_0") == "mz5vLWdM1wHVGSmXUkhKVvZbJ2g4epMXSm" + + assert client.get_wallet_address(wallet, None, 1, 15, True, navigator=navigator, + instructions=wallet_instruction_approve(firmware), testname=f"{test_name}_1") == "myFCUBRCKFjV7292HnZtiHqMzzHrApobpT" + + +def test_get_wallet_address_multisig_legacy_v1_ui(navigator: Navigator, firmware: Firmware, + client: RaggerClient, test_name: str): + # test for a legacy p2sh multisig wallet + wallet = MultisigWallet( + name="Cold storage", + address_type=AddressType.LEGACY, + threshold=2, + keys_info=[ + f"[5c9e228d/48'/1'/0'/0']tpubDEGquuorgFNb8bjh5kNZQMPtABJzoWwNm78FUmeoPkfRtoPF7JLrtoZeT3J3ybq1HmC3Rn1Q8wFQ8J5usanzups5rj7PJoQLNyvq8QbJruW/**", + f"[f5acc2fd/48'/1'/0'/0']tpubDFAqEGNyad35WQAZMmPD4vgBXnjH16RGciLdWekPe4f4d5JzoHVu1PS86Sy4Tm63vDf8rfV3UjifhrRuSUDfiZj5KPffTPyZ4ZXBKvjD8jm/**", + ], + version=WalletType.WALLET_POLICY_V1 + ) + wallet_hmac = bytes.fromhex( + "1980a07cde99fbdec0d487671d3bb296507e47b3ddfa778600a9d73d501983bc" + ) + + res = client.get_wallet_address(wallet, wallet_hmac, 0, 0, True, navigator=navigator, + instructions=wallet_instruction_approve(firmware), + testname=test_name) + assert res == "2Mx69MjHC4ViZAH1koVXPvVgaazbBCdr89j" diff --git a/tests/test_protocol.py b/tests/test_protocol.py new file mode 100644 index 000000000..670ea6859 --- /dev/null +++ b/tests/test_protocol.py @@ -0,0 +1,38 @@ +import pytest + +from ledger_bitcoin.command_builder import BitcoinCommandBuilder, BitcoinInsType, CURRENT_PROTOCOL_VERSION +from ledger_bitcoin.exception.errors import WrongP1P2Error +from ledger_bitcoin.exception.device_exception import DeviceException + +from ragger.error import ExceptionRAPDU +from ragger_bitcoin import RaggerClient + + +def test_high_p1_allowed(client: RaggerClient): + # We reserve p1 for feature flags, so non-zero bits shouldn't be rejected + # for forward-compatibility; this allows graceful degradation for optional features. + + # We can't use the client to send this apdu, so we use raw transport. + # We're only testing that no exception is raised. + client.transport_client.exchange( + cla=BitcoinCommandBuilder.CLA_BITCOIN, + ins=BitcoinInsType.GET_MASTER_FINGERPRINT, + p1=0xff, + p2=CURRENT_PROTOCOL_VERSION, + data=b'' + ) + + +def test_p2_too_high(client: RaggerClient): + # Tests that sending a p2 > CURRENT_PROTOCOL_VERSION fails with 0x6a86 (WRONG_P1P2) + with pytest.raises(ExceptionRAPDU) as e: + # We can't use the client to send this apdu, so we use raw transport + client.transport_client.exchange( + cla=BitcoinCommandBuilder.CLA_BITCOIN, + ins=BitcoinInsType.GET_MASTER_FINGERPRINT, + p1=0, + p2=CURRENT_PROTOCOL_VERSION + 1, + data=b'' + ) + assert DeviceException.exc.get(e.value.status) == WrongP1P2Error + assert len(e.value.data) == 0 diff --git a/tests/test_register_wallet.py b/tests/test_register_wallet.py index ffaf9d8ee..376ff67d0 100644 --- a/tests/test_register_wallet.py +++ b/tests/test_register_wallet.py @@ -1,102 +1,147 @@ -from bitcoin_client.ledger_bitcoin import Client, AddressType, MultisigWallet, PolicyMapWallet -from bitcoin_client.ledger_bitcoin.exception.errors import IncorrectDataError, NotSupportedError -from bitcoin_client.ledger_bitcoin.exception import DenyError - -from test_utils import has_automation +from ledger_bitcoin import AddressType, MultisigWallet, WalletPolicy +from ledger_bitcoin.exception.errors import IncorrectDataError, NotSupportedError +from ledger_bitcoin.exception.device_exception import DeviceException +from ledger_bitcoin.exception import DenyError +from ragger.navigator import Navigator, NavInsID +from ragger.firmware import Firmware +from ragger.error import ExceptionRAPDU +from ragger_bitcoin import RaggerClient +from .instructions import register_wallet_instruction_approve, register_wallet_instruction_approve_long, register_wallet_instruction_approve_unusual, register_wallet_instruction_reject, Instructions import hmac from hashlib import sha256 import pytest -@has_automation("automations/register_wallet_accept.json") -def test_register_wallet_accept_legacy(client: Client, speculos_globals): - wallet = MultisigWallet( - name="Cold storage", - address_type=AddressType.LEGACY, - threshold=2, - keys_info=[ - f"[5c9e228d/48'/1'/0'/0']tpubDEGquuorgFNb8bjh5kNZQMPtABJzoWwNm78FUmeoPkfRtoPF7JLrtoZeT3J3ybq1HmC3Rn1Q8wFQ8J5usanzups5rj7PJoQLNyvq8QbJruW/**", - f"[f5acc2fd/48'/1'/0'/0']tpubDFAqEGNyad35WQAZMmPD4vgBXnjH16RGciLdWekPe4f4d5JzoHVu1PS86Sy4Tm63vDf8rfV3UjifhrRuSUDfiZj5KPffTPyZ4ZXBKvjD8jm/**", - ], - ) - - wallet_id, wallet_hmac = client.register_wallet(wallet) +def run_register_test(navigator: Navigator, client: RaggerClient, speculos_globals, wallet_policy: + WalletPolicy, instructions: Instructions, + test_name: str = "") -> None: + wallet_policy_id, wallet_hmac = client.register_wallet(wallet_policy, navigator, + instructions=instructions, + testname=test_name) - assert wallet_id == wallet.id + assert wallet_policy_id == wallet_policy.id assert hmac.compare_digest( - hmac.new(speculos_globals.wallet_registration_key, wallet_id, sha256).digest(), + hmac.new(speculos_globals.wallet_registration_key, + wallet_policy_id, sha256).digest(), wallet_hmac, ) -@has_automation("automations/register_wallet_accept.json") -def test_register_wallet_accept_sh_wit(client: Client, speculos_globals): - wallet = MultisigWallet( +def test_register_wallet_accept_legacy(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, speculos_globals): + run_register_test(navigator, client, speculos_globals, MultisigWallet( name="Cold storage", - address_type=AddressType.SH_WIT, + address_type=AddressType.LEGACY, threshold=2, keys_info=[ - f"[76223a6e/48'/1'/0'/1']tpubDE7NQymr4AFtcJXi9TaWZtrhAdy8QyKmT4U6b9qYByAxCzoyMJ8zw5d8xVLVpbTRAEqP8pVUxjLE2vDt1rSFjaiS8DSz1QcNZ8D1qxUMx1g/**", - f"[f5acc2fd/48'/1'/0'/1']tpubDFAqEGNyad35YgH8zxvxFZqNUoPtr5mDojs7wzbXQBHTZ4xHeVXG6w2HvsKvjBpaRpTmjYDjdPg5w2c6Wvu8QBkyMDrmBWdCyqkDM7reSsY/**", + "[5c9e228d/48'/1'/0'/0']tpubDEGquuorgFNb8bjh5kNZQMPtABJzoWwNm78FUmeoPkfRtoPF7JLrtoZeT3J3ybq1HmC3Rn1Q8wFQ8J5usanzups5rj7PJoQLNyvq8QbJruW", + "[f5acc2fd/48'/1'/0'/0']tpubDFAqEGNyad35WQAZMmPD4vgBXnjH16RGciLdWekPe4f4d5JzoHVu1PS86Sy4Tm63vDf8rfV3UjifhrRuSUDfiZj5KPffTPyZ4ZXBKvjD8jm", ], - ) + ), + instructions=register_wallet_instruction_approve(firmware), + test_name=test_name) - wallet_id, wallet_hmac = client.register_wallet(wallet) - assert wallet_id == wallet.id - - assert hmac.compare_digest( - hmac.new(speculos_globals.wallet_registration_key, wallet_id, sha256).digest(), - wallet_hmac, - ) +def test_register_wallet_accept_sh_wit(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, speculos_globals): + run_register_test(navigator, client, speculos_globals, MultisigWallet( + name="Cold storage", + address_type=AddressType.SH_WIT, + threshold=2, + keys_info=[ + "[76223a6e/48'/1'/0'/1']tpubDE7NQymr4AFtcJXi9TaWZtrhAdy8QyKmT4U6b9qYByAxCzoyMJ8zw5d8xVLVpbTRAEqP8pVUxjLE2vDt1rSFjaiS8DSz1QcNZ8D1qxUMx1g", + "[f5acc2fd/48'/1'/0'/1']tpubDFAqEGNyad35YgH8zxvxFZqNUoPtr5mDojs7wzbXQBHTZ4xHeVXG6w2HvsKvjBpaRpTmjYDjdPg5w2c6Wvu8QBkyMDrmBWdCyqkDM7reSsY", + ], + ), + instructions=register_wallet_instruction_approve(firmware), + test_name=test_name) -@has_automation("automations/register_wallet_accept.json") -def test_register_wallet_accept_wit(client: Client, speculos_globals): - wallet = MultisigWallet( +def test_register_wallet_accept_wit(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str, speculos_globals): + run_register_test(navigator, client, speculos_globals, MultisigWallet( name="Cold storage", address_type=AddressType.WIT, threshold=2, keys_info=[ - f"[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF/**", - f"[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK/**", + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", ], - ) + ), + instructions=register_wallet_instruction_approve(firmware), + test_name=test_name) - wallet_id, wallet_hmac = client.register_wallet(wallet) - assert wallet_id == wallet.id +def test_register_wallet_with_long_name(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, speculos_globals): + name = "Cold storage with a pretty long name that requires 64 characters" + assert len(name) == 64 - assert hmac.compare_digest( - hmac.new(speculos_globals.wallet_registration_key, wallet_id, sha256).digest(), - wallet_hmac, - ) + run_register_test(navigator, client, speculos_globals, MultisigWallet( + name=name, + address_type=AddressType.WIT, + threshold=2, + keys_info=[ + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + ], + ), + instructions=register_wallet_instruction_approve(firmware), + test_name=test_name) -@has_automation("automations/register_wallet_reject.json") -def test_register_wallet_reject_header(client: Client): +def test_register_wallet_reject_header(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): wallet = MultisigWallet( name="Cold storage", address_type=AddressType.WIT, threshold=2, keys_info=[ - f"[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF/**", - f"[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK/**", + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", ], ) - with pytest.raises(DenyError): - client.register_wallet(wallet) + with pytest.raises(ExceptionRAPDU) as e: + client.register_wallet(wallet, navigator, + instructions=register_wallet_instruction_reject( + firmware), + testname=test_name) + + assert DeviceException.exc.get(e.value.status) == DenyError + assert len(e.value.data) == 0 + + +def test_register_wallet_invalid_pubkey_version(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + # This is the same wallet policy as the test_register_wallet_accept_wit test, + # but the external pubkey has the wrong BIP32 version (mainnet xpub instead of testnet tpub). + # An older version of the app ignored the version for external pubkeys, while now it rejects it + # if the version is wrong, as a sanity check. + with pytest.raises(ExceptionRAPDU) as e: + client.register_wallet(MultisigWallet( + name="Cold storage", + address_type=AddressType.WIT, + threshold=2, + keys_info=[ + "[76223a6e/48'/1'/0'/2']xpub6DjjtjxALtJSP9dKRKuhejeTpZc711gUGZyS9nCM5GAtrNTDuMBZD2FcndJoHst6LYNbJktm4NmJyKqspLi5uRmtnDMAdcPAf2jiSj9gFTX", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + ], + ), navigator, instructions=register_wallet_instruction_approve(firmware), testname=test_name) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 -@has_automation("automations/register_wallet_accept.json") -def test_register_wallet_invalid_names(client: Client): +def test_register_wallet_invalid_names(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + too_long_name = "This wallet name is much too long since it requires 65 characters" + assert len(too_long_name) == 65 + for invalid_name in [ "", # empty name not allowed - "Very long walletz", # 17 characters is too long + too_long_name, # 65 characters is too long " Test", "Test ", # can't start with spaces "Tæst", # characters out of allowed range ]: @@ -105,48 +150,269 @@ def test_register_wallet_invalid_names(client: Client): address_type=AddressType.WIT, threshold=2, keys_info=[ - f"[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF/**", - f"[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK/**", + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", ], ) - with pytest.raises(IncorrectDataError): + with pytest.raises(ExceptionRAPDU) as e: + client.register_wallet(wallet, navigator, + testname=test_name) + + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 + + +def test_register_wallet_missing_key(client: RaggerClient): + wallet = WalletPolicy( + name="Missing a key", + descriptor_template="wsh(multi(2,@0/**,@1/**))", + keys_info=[ + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + # the second key is missing + ], + ) + + with pytest.raises(ExceptionRAPDU) as e: client.register_wallet(wallet) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 -@has_automation("automations/register_wallet_accept.json") -def test_register_wallet_unsupported_policy(client: Client): - # valid policise, but not supported (might change in the future) +def test_register_wallet_unsupported_policy(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + # valid policies, but not supported (might change in the future) - with pytest.raises(NotSupportedError): - client.register_wallet(PolicyMapWallet( + with pytest.raises(ExceptionRAPDU) as e: + client.register_wallet(WalletPolicy( name="Unsupported", - policy_map="sh(pkh(@0))", # unusual script, not in the whitelist + descriptor_template="pk(@0/**)", # bare pubkey, not supported keys_info=[ - f"[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF/**", + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", ] - )) + ), + navigator, + testname=test_name) - with pytest.raises(NotSupportedError): - # Not supporting keys without wildcard - client.register_wallet(MultisigWallet( - name="Cold storage", - address_type=AddressType.WIT, - threshold=2, + assert DeviceException.exc.get(e.value.status) == NotSupportedError + assert len(e.value.data) == 0 + + +def test_register_miniscript_long_policy(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, speculos_globals): + # This test makes sure that policies longer than 256 bytes work as expected on all devices, + # except on Nano S that has 196 bytes as a technical limitation. + wallet = WalletPolicy( + name="Long policy", + descriptor_template=f"wsh(and_v(and_v(v:pk(@0/**),or_c(pk(@1/**),or_c(pk(@2/**),v:older(1000)))),and_v(v:hash256(0563fb3e85cbc61b134941ad6610a2b0dfd77543dfb77a5433ff3cb538213807),and_v(v:hash256(ad3391a00bad00a6a03f907b3fcc2f369a88be038c63c7db7f43b01e097efbbe),hash256(137dfa9b54a538200c94e3c9dd1a59b431e3b89aef8093fc910df48a98cb06d9)))))", + keys_info=[ + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + "tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + "tpubDDV6FDLcCieWUeN7R3vZK2Qs3KuQed3ScTY9EiwMXvyCkLjDbCb8RXaAgWDbkG4tW1BMKVF1zERHnyt78QKd4ZaAYGMJMpvHPwgSSU1AxZ3", + ]) + + if (firmware.name == "nanos"): + with pytest.raises(ExceptionRAPDU) as e: + client.register_wallet(wallet) + + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 + else: + wallet_id, wallet_hmac = client.register_wallet(wallet, navigator, + instructions=register_wallet_instruction_approve_long( + firmware), + testname=test_name) + + assert wallet_id == wallet.id + + assert hmac.compare_digest( + hmac.new(speculos_globals.wallet_registration_key, + wallet_id, sha256).digest(), + wallet_hmac, + ) + + +def test_register_wallet_not_sane_policy(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + # pubkeys in the keys vector must be all different + with pytest.raises(ExceptionRAPDU) as e: + client.register_wallet(WalletPolicy( + name="Unsupported policy", + descriptor_template=f"wsh(c:andor(pk(@0/<0;1>/*),pk_k(@1/**),and_v(v:pk(@2/<2;3>/*),pk_k(@3/**))))", keys_info=[ - f"[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", - f"[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", - ], - )) + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + "tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + # the next key is again the internal pubkey, but without key origin information + "tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + "tpubDDV6FDLcCieWUeN7R3vZK2Qs3KuQed3ScTY9EiwMXvyCkLjDbCb8RXaAgWDbkG4tW1BMKVF1zERHnyt78QKd4ZaAYGMJMpvHPwgSSU1AxZ3", + ]), + navigator, + testname=test_name + ) - with pytest.raises(NotSupportedError): - # Not supporting keys without origin information (even if external) - client.register_wallet(MultisigWallet( - name="Cold storage", - address_type=AddressType.WIT, - threshold=2, + assert DeviceException.exc.get(e.value.status) == NotSupportedError + assert len(e.value.data) == 0 + + # Key placeholders referring to the same key must have distinct derivations + with pytest.raises(ExceptionRAPDU) as e: + client.register_wallet(WalletPolicy( + name="Unsupported policy", + descriptor_template="wsh(thresh(3,pk(@0/**),s:pk(@1/**),s:pk(@0/**),sln:older(12960)))", keys_info=[ - f"tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF/**", - f"[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK/**", - ], - )) + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + "tpubDDV6FDLcCieWUeN7R3vZK2Qs3KuQed3ScTY9EiwMXvyCkLjDbCb8RXaAgWDbkG4tW1BMKVF1zERHnyt78QKd4ZaAYGMJMpvHPwgSSU1AxZ3", + ]), + navigator, + testname=test_name + ) + assert DeviceException.exc.get(e.value.status) == NotSupportedError + assert len(e.value.data) == 0 + + with pytest.raises(ExceptionRAPDU) as e: + client.register_wallet(WalletPolicy( + name="Unsupported policy", + # even a partial overlap (derivation @0/1 being used twice) is not acceptable + descriptor_template="wsh(thresh(3,pk(@0/**),s:pk(@1/**),s:pk(@0/<1;2>/*),sln:older(12960)))", + keys_info=[ + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + "tpubDDV6FDLcCieWUeN7R3vZK2Qs3KuQed3ScTY9EiwMXvyCkLjDbCb8RXaAgWDbkG4tW1BMKVF1zERHnyt78QKd4ZaAYGMJMpvHPwgSSU1AxZ3", + ]), + navigator, + testname=test_name + ) + assert DeviceException.exc.get(e.value.status) == NotSupportedError + assert len(e.value.data) == 0 + + # Miniscript policy with timelock mixing + with pytest.raises(ExceptionRAPDU) as e: + client.register_wallet(WalletPolicy( + name="Timelock mixing is bad", + descriptor_template="wsh(thresh(2,c:pk_k(@0/**),ac:pk_k(@1/**),altv:after(1000000000),altv:after(100)))", + keys_info=[ + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + "tpubDDV6FDLcCieWUeN7R3vZK2Qs3KuQed3ScTY9EiwMXvyCkLjDbCb8RXaAgWDbkG4tW1BMKVF1zERHnyt78QKd4ZaAYGMJMpvHPwgSSU1AxZ3", + ]), + navigator, + testname=test_name + ) + assert DeviceException.exc.get(e.value.status) == NotSupportedError + assert len(e.value.data) == 0 + + # Miniscript policy that does not always require a signature + with pytest.raises(ExceptionRAPDU) as e: + client.register_wallet(WalletPolicy( + name="No need for sig", + descriptor_template="wsh(or_d(multi(1,@0/**),or_b(multi(3,@1/**,@2/**,@3/**),su:after(500000))))", + keys_info=[ + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + "tpubDDV6FDLcCieWUeN7R3vZK2Qs3KuQed3ScTY9EiwMXvyCkLjDbCb8RXaAgWDbkG4tW1BMKVF1zERHnyt78QKd4ZaAYGMJMpvHPwgSSU1AxZ3", + "tpubDF6JT5K4izwALMpFv7fQrpWr5bGUMEoWphkzTVJH8jTfgirNEgGZnxsWJDCCxhg2UnW5RcD9Tx8aVAdoM734X5bnRGmJUujz26uQ5gAC1nE", + "tpubDF4kujkh5dAhC1pFgBToZybXdvJFXXGX4BWdDxWqP7EUpG8gxkfMQeDjGPDnTr9e4NrkFmDM1ocav3Jz6x79CRZbxGr9dzFokJLuvDDnyRh", + ]), + navigator, + testname=test_name + ) + assert DeviceException.exc.get(e.value.status) == NotSupportedError + assert len(e.value.data) == 0 + + # Malleable policy, even if it requires a signature + with pytest.raises(ExceptionRAPDU) as e: + client.register_wallet(WalletPolicy( + name="Malleable", + descriptor_template="wsh(c:andor(ripemd160(6ad07d21fd5dfc646f0b30577045ce201616b9ba),pk_h(@0/**),and_v(v:hash256(8a35d9ca92a48eaade6f53a64985e9e2afeb74dcf8acb4c3721e0dc7e4294b25),pk_h(@1/**))))", + keys_info=[ + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + "tpubDDV6FDLcCieWUeN7R3vZK2Qs3KuQed3ScTY9EiwMXvyCkLjDbCb8RXaAgWDbkG4tW1BMKVF1zERHnyt78QKd4ZaAYGMJMpvHPwgSSU1AxZ3", + ]), + navigator, + testname=test_name + ) + assert DeviceException.exc.get(e.value.status) == NotSupportedError + assert len(e.value.data) == 0 + + # TODO: we can probably not trigger stack and ops limits with the current limits we have on the + # miniscript policy size; otherwise it would be worth to add tests for them, too. + + +def test_register_unusual_singlesig_accounts(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, speculos_globals): + # Tests that it is possible to register policies for single-signature using unusual paths + + run_register_test(navigator, client, speculos_globals, WalletPolicy( + name="Unusual Legacy", + descriptor_template="pkh(@0/**)", + keys_info=["[f5acc2fd/1'/2'/3']tpubDCsHVWwqALkDzorr5zdc91Wj93zR3so1kUEH6LWsPrLtC9MVPjb8NEQwCzhPM4TEFP6KbgmTb7xAsyrbf3oEBh31Q7iAKhzMHj2FZ5YGNrr"] + ), + instructions=register_wallet_instruction_approve_unusual(firmware), + test_name=f"{test_name}_Unusual_Legacy") + + run_register_test(navigator, client, speculos_globals, WalletPolicy( + name="Unusual Nested SegWit", + descriptor_template="sh(wpkh(@0/**))", + keys_info=["[f5acc2fd/1'/2'/3']tpubDCsHVWwqALkDzorr5zdc91Wj93zR3so1kUEH6LWsPrLtC9MVPjb8NEQwCzhPM4TEFP6KbgmTb7xAsyrbf3oEBh31Q7iAKhzMHj2FZ5YGNrr"] + ), + instructions=register_wallet_instruction_approve_unusual(firmware), + test_name=f"{test_name}_Unusual_Nested_Segwit") + + run_register_test(navigator, client, speculos_globals, WalletPolicy( + name="Unusual Native SegWit", + descriptor_template="wpkh(@0/**)", + keys_info=["[f5acc2fd/1'/2'/3']tpubDCsHVWwqALkDzorr5zdc91Wj93zR3so1kUEH6LWsPrLtC9MVPjb8NEQwCzhPM4TEFP6KbgmTb7xAsyrbf3oEBh31Q7iAKhzMHj2FZ5YGNrr"] + ), + instructions=register_wallet_instruction_approve_unusual(firmware), + test_name=f"{test_name}_Unusual_Native_Segwit") + + run_register_test(navigator, client, speculos_globals, WalletPolicy( + name="Unusual Taproot", + descriptor_template="tr(@0/**)", + keys_info=["[f5acc2fd/1'/2'/3']tpubDCsHVWwqALkDzorr5zdc91Wj93zR3so1kUEH6LWsPrLtC9MVPjb8NEQwCzhPM4TEFP6KbgmTb7xAsyrbf3oEBh31Q7iAKhzMHj2FZ5YGNrr"] + ), + instructions=register_wallet_instruction_approve_unusual(firmware), + test_name=f"{test_name}_Unusual_Taproot") + + +def test_register_wallet_tr_script_pk(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str, speculos_globals): + run_register_test(navigator, client, speculos_globals, WalletPolicy( + name="Taproot foreign internal key, and our script key", + descriptor_template="tr(@0/**,pk(@1/**))", + keys_info=[ + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + ], + ), + instructions=register_wallet_instruction_approve(firmware), + test_name=test_name) + + +def test_register_wallet_tr_with_nums_keypath(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, speculos_globals): + # The taproot keypath is unspendable; the UX must explicitly mark it as a 'dummy' key. + # The tpub for @0 is obtained by using the NUMS (Nothing-Up-My-Sleeve) key defined in BIP-0341, + # and using 32 zero bytes as the chaincode. + # It is important that the app can detect and clearly communicate to the user that the key is + # a dummy one, therefore unusable for spending. + run_register_test(navigator, client, speculos_globals, WalletPolicy( + name="Taproot unspendable keypath", + descriptor_template="tr(@0/**,pk(@1/**))", + keys_info=[ + "tpubD6NzVbkrYhZ4WLczPJWReQycCJdd6YVWXubbVUFnJ5KgU5MDQrD998ZJLSmaB7GVcCnJSDWprxmrGkJ6SvgQC6QAffVpqSvonXmeizXcrkN", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + ], + ), + instructions=register_wallet_instruction_approve(firmware), + test_name=test_name) + + +def test_register_wallet_tr_script_sortedmulti(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, speculos_globals): + run_register_test(navigator, client, speculos_globals, WalletPolicy( + name="Taproot single-key or multisig 2-of-2", + descriptor_template="tr(@0/**,sortedmulti_a(2,@1/**,@2/**))", + keys_info=[ + "[f5acc2fd/48'/1'/0'/1']tpubDFAqEGNyad35YgH8zxvxFZqNUoPtr5mDojs7wzbXQBHTZ4xHeVXG6w2HvsKvjBpaRpTmjYDjdPg5w2c6Wvu8QBkyMDrmBWdCyqkDM7reSsY", + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + ], + ), + instructions=register_wallet_instruction_approve_long(firmware), + test_name=test_name) diff --git a/tests/test_register_wallet_v1.py b/tests/test_register_wallet_v1.py new file mode 100644 index 000000000..bcea05160 --- /dev/null +++ b/tests/test_register_wallet_v1.py @@ -0,0 +1,181 @@ +# Tests using the V1 version of the wallet policy language, used before version 2.1.0 of the app +# Make sure we remain compatible for some time. + +from ledger_bitcoin import AddressType, MultisigWallet, WalletPolicy, WalletType +from ledger_bitcoin.exception.errors import IncorrectDataError, NotSupportedError, DenyError +from ledger_bitcoin.exception.device_exception import DeviceException + +from ragger.error import ExceptionRAPDU +from ragger.navigator import Navigator, NavInsID +from ragger.firmware import Firmware +from ragger_bitcoin import RaggerClient + +from .instructions import register_wallet_instruction_approve, register_wallet_instruction_approve_long, register_wallet_instruction_approve_unusual, register_wallet_instruction_reject + +import hmac +from hashlib import sha256 + +import pytest + + +def test_register_wallet_accept_legacy_v1(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, speculos_globals): + wallet = MultisigWallet( + name="Cold storage", + address_type=AddressType.LEGACY, + threshold=2, + keys_info=[ + f"[5c9e228d/48'/1'/0'/0']tpubDEGquuorgFNb8bjh5kNZQMPtABJzoWwNm78FUmeoPkfRtoPF7JLrtoZeT3J3ybq1HmC3Rn1Q8wFQ8J5usanzups5rj7PJoQLNyvq8QbJruW/**", + f"[f5acc2fd/48'/1'/0'/0']tpubDFAqEGNyad35WQAZMmPD4vgBXnjH16RGciLdWekPe4f4d5JzoHVu1PS86Sy4Tm63vDf8rfV3UjifhrRuSUDfiZj5KPffTPyZ4ZXBKvjD8jm/**", + ], + version=WalletType.WALLET_POLICY_V1 + ) + + wallet_id, wallet_hmac = client.register_wallet(wallet, navigator, + instructions=register_wallet_instruction_approve(firmware), + testname=test_name) + + assert wallet_id == wallet.id + + assert hmac.compare_digest( + hmac.new(speculos_globals.wallet_registration_key, wallet_id, sha256).digest(), + wallet_hmac, + ) + + +def test_register_wallet_accept_sh_wit_v1(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, speculos_globals): + wallet = MultisigWallet( + name="Cold storage", + address_type=AddressType.SH_WIT, + threshold=2, + keys_info=[ + f"[76223a6e/48'/1'/0'/1']tpubDE7NQymr4AFtcJXi9TaWZtrhAdy8QyKmT4U6b9qYByAxCzoyMJ8zw5d8xVLVpbTRAEqP8pVUxjLE2vDt1rSFjaiS8DSz1QcNZ8D1qxUMx1g/**", + f"[f5acc2fd/48'/1'/0'/1']tpubDFAqEGNyad35YgH8zxvxFZqNUoPtr5mDojs7wzbXQBHTZ4xHeVXG6w2HvsKvjBpaRpTmjYDjdPg5w2c6Wvu8QBkyMDrmBWdCyqkDM7reSsY/**", + ], + version=WalletType.WALLET_POLICY_V1 + ) + + wallet_id, wallet_hmac = client.register_wallet(wallet, navigator, + instructions=register_wallet_instruction_approve(firmware), + testname=test_name) + + assert wallet_id == wallet.id + + assert hmac.compare_digest( + hmac.new(speculos_globals.wallet_registration_key, wallet_id, sha256).digest(), + wallet_hmac, + ) + + +def test_register_wallet_accept_wit_v1(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, speculos_globals): + wallet = MultisigWallet( + name="Cold storage", + address_type=AddressType.WIT, + threshold=2, + keys_info=[ + f"[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF/**", + f"[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK/**", + ], + version=WalletType.WALLET_POLICY_V1 + ) + + wallet_id, wallet_hmac = client.register_wallet(wallet, navigator, + instructions=register_wallet_instruction_approve(firmware), + testname=test_name) + + assert wallet_id == wallet.id + + assert hmac.compare_digest( + hmac.new(speculos_globals.wallet_registration_key, wallet_id, sha256).digest(), + wallet_hmac, + ) + + +def test_register_wallet_reject_header_v1(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + wallet = MultisigWallet( + name="Cold storage", + address_type=AddressType.WIT, + threshold=2, + keys_info=[ + f"[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF/**", + f"[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK/**", + ], + version=WalletType.WALLET_POLICY_V1 + ) + + with pytest.raises(ExceptionRAPDU) as e: + client.register_wallet(wallet, navigator, + instructions=register_wallet_instruction_reject(firmware), + testname=test_name) + + assert DeviceException.exc.get(e.value.status) == DenyError + assert len(e.value.data) == 0 + + +def test_register_wallet_invalid_names_v1(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + for invalid_name in [ + "", # empty name not allowed + "Very long walletz", # 17 characters is too long + " Test", "Test ", # can't start with spaces + "Tæst", # characters out of allowed range + ]: + wallet = MultisigWallet( + name=invalid_name, + address_type=AddressType.WIT, + threshold=2, + keys_info=[ + f"[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF/**", + f"[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK/**", + ], + version=WalletType.WALLET_POLICY_V1 + ) + + with pytest.raises(ExceptionRAPDU) as e: + client.register_wallet(wallet, navigator) + + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 + + +def test_register_wallet_unsupported_policy_v1(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + # valid policies, but not supported (might change in the future) + + with pytest.raises(ExceptionRAPDU) as e: + client.register_wallet(WalletPolicy( + name="Unsupported", + descriptor_template="pk(@0)", # bare pubkey, not supported + keys_info=[ + f"[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF/**", + ], + version=WalletType.WALLET_POLICY_V1 + ), + navigator, + testname=test_name) + + # NotSupportedError + assert DeviceException.exc.get(e.value.status) == NotSupportedError + assert len(e.value.data) == 0 + + with pytest.raises(ExceptionRAPDU) as e: + # Not supporting keys without wildcard + client.register_wallet(MultisigWallet( + name="Cold storage", + address_type=AddressType.WIT, + threshold=2, + keys_info=[ + f"[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + f"[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + ], + version=WalletType.WALLET_POLICY_V1 + ), + navigator, + testname=test_name) + + # NotSupportedError + assert DeviceException.exc.get(e.value.status) == NotSupportedError + assert len(e.value.data) == 0 diff --git a/tests/test_sign_message.py b/tests/test_sign_message.py index 53dccbeac..34f422469 100644 --- a/tests/test_sign_message.py +++ b/tests/test_sign_message.py @@ -1,47 +1,103 @@ import pytest -from bitcoin_client.ledger_bitcoin import Client -from bitcoin_client.ledger_bitcoin.exception.errors import DenyError +from ledger_bitcoin.exception.errors import DenyError +from ledger_bitcoin.exception.device_exception import DeviceException +from ragger.navigator import Navigator +from ragger.firmware import Firmware +from ragger.error import ExceptionRAPDU +from ragger_bitcoin import RaggerClient +from .instructions import message_instruction_approve, message_instruction_approve_long, message_instruction_reject -from test_utils import has_automation - -@has_automation("automations/sign_message_accept.json") -def test_sign_message(client: Client): +def test_sign_message(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): msg = "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks." path = "m/44'/1'/0'/0/0" - result = client.sign_message(msg, path) + result = client.sign_message(msg, path, navigator, + instructions=message_instruction_approve(firmware), + testname=test_name) assert result == "IOR4YRVlmJGMx+H7PgQvHzWAF0HAgrUggQeRdnoWKpypfaAberpvF+XbOCM5Cd/ljogNyU3w2OIL8eYCyZ6Ru2k=" -@has_automation("automations/sign_message_accept.json") -def test_sign_message_accept(client: Client): +def test_sign_message_accept(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): message = "Hello world!" res = client.sign_message( message, - "m/84'/1'/0'/0/0" + "m/84'/1'/0'/0/0", + navigator, + instructions=message_instruction_approve(firmware), + testname=test_name ) assert res == 'IEOK4+JMK7FToR7XMzFCoAYh1nud1IKm9Wq3vXLSVk/lBay8rHCRp9bP6riyR5NDqXYyYf7cXgMQTHNz3SemwZI=' -@has_automation("automations/sign_message_accept.json") -def test_sign_message_accept_long(client: Client): +def test_sign_message_accept_long(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): # Test with a long message that is split in multiple leaves in the Merkle tree - message = "The root problem with conventional currency is all the trust that's required to make it work. The central bank must be trusted not to debase the currency, but the history of fiat currencies is full of breaches of that trust. Banks must be trusted to hold our money and transfer it electronically, but they lend it out in waves of credit bubbles with barely a fraction in reserve. We have to trust them with our privacy, trust them not to let identity thieves drain our accounts. Their massive overhead costs make micropayments impossible." res = client.sign_message( message, - "m/84'/1'/0'/0/8" + "m/84'/1'/0'/0/8", + navigator, + instructions=message_instruction_approve_long(firmware), + testname=test_name ) assert res == 'H4frM6TYm5ty1MAf9o/Zz9Qiy3VEldAYFY91SJ/5nYMAZY1UUB97fiRjKW8mJit2+V4OCa1YCqjDqyFnD9Fw75k=' -@has_automation("automations/sign_message_reject.json") -def test_sign_message_reject(client: Client): - with pytest.raises(DenyError): - client.sign_message("Anything", "m/44'/1'/0'/0/0") +def test_sign_message_reject(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + with pytest.raises(ExceptionRAPDU) as e: + client.sign_message("Anything", "m/44'/1'/0'/0/0", + navigator, + instructions=message_instruction_reject(firmware), + testname=test_name + ) + + assert DeviceException.exc.get(e.value.status) == DenyError + assert len(e.value.data) == 0 + + +def test_sign_message_accept_non_ascii(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + # Test with a message that contains non ascii char + message = "Hello\nworld!" + + res = client.sign_message( + message, + "m/84'/1'/0'/0/8", + navigator, + instructions=message_instruction_approve(firmware), + testname=test_name + ) + + assert res == 'IGGk2UM12aQGtigJ7XCLJEXQl3bdKgx0G3CIt0ADSWknfAHqs+9+9OPZSjGrjyp46GjztGzUAnCa/DDMrSIAfbg=' + + +def test_sign_message_accept_too_long(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + # Test with a message that is too long to be displayed + message = "The root problem with conventional currency is all the trust that's required to make it work. The central bank must be trusted not to debase the currency, but the history of fiat currencies is full of breaches of that trust. Banks must be trusted to hold our money and transfer it electronically, but they lend it out in waves of credit bubbles with barely a fraction in reserve. We have to trust them with our privacy, trust them not to let identity thieves drain our accounts. Their massive overhead costs make micropayments impossible. The root problem with conventional currency is all the trust that's required to make it work. The central bank must be trusted not to debase the currency, but the history of fiat currencies is full of breaches of that trust. Banks must be trusted to hold our money and transfer it electronically, but they lend it out in waves of credit bubbles with barely a fraction in reserve. We have to trust them with our privacy, trust them not to let identity thieves drain our accounts. Their massive overhead costs make micropayments impossible. The root problem with conventional currency is all the trust that's required to make it work. The central bank must be trusted not to debase the currency, but the history of fiat currencies is full of breaches of that trust. Banks must be trusted to hold our money and transfer it electronically, but they lend it out in waves of credit bubbles with barely a fraction in reserve. We have to trust them with our privacy, trust them not to let identity thieves drain our accounts. Their massive overhead costs make micropayments impossible." + + res = client.sign_message( + message, + "m/84'/1'/0'/0/8", + navigator, + instructions=message_instruction_approve(firmware), + testname=test_name + ) + + assert res == 'IDAl9RThAyunmYuol9DaDs/CScUpiol3FDSjIjyK9y0tc/x1HWrbT/ufdkPFY1Bmi+L9hc3ip1me2RmufprVuNk=' + + +def test_sign_message_hash_reject(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + with pytest.raises(ExceptionRAPDU) as e: + client.sign_message("Hello\nworld!", + "m/44'/1'/0'/0/0", + navigator, + instructions=message_instruction_reject(firmware), + testname=test_name + ) + + assert DeviceException.exc.get(e.value.status) == DenyError + assert len(e.value.data) == 0 diff --git a/tests/test_sign_psbt.py b/tests/test_sign_psbt.py index c622a2ed7..089634949 100644 --- a/tests/test_sign_psbt.py +++ b/tests/test_sign_psbt.py @@ -1,3 +1,4 @@ +import base64 import pytest import threading @@ -8,107 +9,29 @@ from pathlib import Path -from bitcoin_client.ledger_bitcoin import Client, PolicyMapWallet, MultisigWallet, AddressType -from bitcoin_client.ledger_bitcoin.exception.errors import IncorrectDataError, NotSupportedError +from ledger_bitcoin import WalletPolicy, MultisigWallet, AddressType, PartialSignature +from ledger_bitcoin.exception.errors import IncorrectDataError, NotSupportedError +from ledger_bitcoin.exception.device_exception import DeviceException -from bitcoin_client.ledger_bitcoin.psbt import PSBT -from bitcoin_client.ledger_bitcoin.wallet import AddressType -from speculos.client import SpeculosClient +from ledger_bitcoin.psbt import PSBT +from ledger_bitcoin.wallet import AddressType +from ragger.navigator import Navigator, NavInsID +from ragger.error import ExceptionRAPDU +from ragger.firmware import Firmware -from test_utils import has_automation, bip0340, txmaker +from test_utils import bip0340, txmaker from embit.script import Script from embit.networks import NETWORKS +import requests +import json -from test_utils.speculos import automation +from ragger_bitcoin import RaggerClient +from .instructions import * tests_root: Path = Path(__file__).parent -CURRENCY_TICKER = "TEST" - - -def format_amount(ticker: str, amount: int) -> str: - """Formats an amounts in sats as shown in the app: divided by 10_000_000, with no trailing zeroes.""" - assert amount >= 0 - - return f"{ticker} {str(Decimal(amount) / 100_000_000)}" - - -def should_go_right(event: dict): - """Returns true if the current text event implies a "right" button press to proceed.""" - - if event["text"].startswith("Review"): - return True - elif event["text"].startswith("Amount"): - return True - elif event["text"].startswith("Address"): - return True - elif event["text"].startswith("Confirm"): - return True - elif event["text"].startswith("Fees"): - return True - return False - - -def ux_thread_sign_psbt(speculos_client: SpeculosClient, all_events: List[dict]): - """Completes the signing flow always going right and accepting at the appropriate time, while collecting all the events in all_events.""" - - # press right until the last screen (will press the "right" button more times than needed) - - while True: - event = speculos_client.get_next_event() - all_events.append(event) - - if should_go_right(event): - speculos_client.press_and_release("right") - elif event["text"] == "Approve": - speculos_client.press_and_release("both") - elif event["text"] == "Accept": - speculos_client.press_and_release("both") - break - - -def parse_signing_events(events: List[dict]) -> dict: - ret = dict() - - # each of these is True if the _previous_ event was matching (so the next text needs to be recorded) - was_amount = False - was_address = False - was_fees = False - - cur_output_index = -1 - - ret["addresses"] = [] - ret["amounts"] = [] - ret["fees"] = "" - - for ev in events: - if ev["text"].startswith("output #"): - idx_str = ev["text"][8:] - - assert int(idx_str) - 1 == cur_output_index + 1 # should not skip outputs - - cur_output_index = int(idx_str) - 1 - - ret["addresses"].append("") - ret["amounts"].append("") - - if was_address: - ret["addresses"][-1] += ev["text"] - if was_amount: - ret["amounts"][-1] += ev["text"] - - if was_fees: - ret["fees"] += ev["text"] - - was_amount = ev["text"].startswith("Amount") - was_address = ev["text"].startswith("Address") - was_fees = ev["text"].startswith("Fees") - - return ret - - def open_psbt_from_file(filename: str) -> PSBT: raw_psbt_base64 = open(filename, "r").read() @@ -117,17 +40,15 @@ def open_psbt_from_file(filename: str) -> PSBT: return psbt -@has_automation("automations/sign_with_default_wallet_accept.json") -def test_sign_psbt_singlesig_pkh_1to1(client: Client): - +def test_sign_psbt_singlesig_pkh_1to1(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): # PSBT for a legacy 1-input 1-output spend (no change address) psbt = open_psbt_from_file(f"{tests_root}/psbt/singlesig/pkh-1to1.psbt") - wallet = PolicyMapWallet( + wallet = WalletPolicy( "", - "pkh(@0)", + "pkh(@0/**)", [ - "[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT/**" + "[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT" ], ) @@ -135,26 +56,41 @@ def test_sign_psbt_singlesig_pkh_1to1(client: Client): # #0: # "pubkey" : "02ee8608207e21028426f69e76447d7e3d5e077049f5e683c3136c2314762a4718", # "signature" : "3045022100e55b3ca788721aae8def2eadff710e524ffe8c9dec1764fdaa89584f9726e196022012a30fbcf9e1a24df31a1010356b794ab8de438b4250684757ed5772402540f401" - result = client.sign_psbt(psbt, wallet, None) - - assert result == { - 0: bytes.fromhex( - "3045022100e55b3ca788721aae8def2eadff710e524ffe8c9dec1764fdaa89584f9726e196022012a30fbcf9e1a24df31a1010356b794ab8de438b4250684757ed5772402540f401" + result = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) + + print(result) + print([( + 0, + PartialSignature( + pubkey=bytes.fromhex("02ee8608207e21028426f69e76447d7e3d5e077049f5e683c3136c2314762a4718"), + signature=bytes.fromhex( + "3045022100e55b3ca788721aae8def2eadff710e524ffe8c9dec1764fdaa89584f9726e196022012a30fbcf9e1a24df31a1010356b794ab8de438b4250684757ed5772402540f401" + ) ) - } + )]) + assert result == [( + 0, + PartialSignature( + pubkey=bytes.fromhex("02ee8608207e21028426f69e76447d7e3d5e077049f5e683c3136c2314762a4718"), + signature=bytes.fromhex( + "3045022100e55b3ca788721aae8def2eadff710e524ffe8c9dec1764fdaa89584f9726e196022012a30fbcf9e1a24df31a1010356b794ab8de438b4250684757ed5772402540f401" + ) + ) + )] -@has_automation("automations/sign_with_default_wallet_accept.json") -def test_sign_psbt_singlesig_sh_wpkh_1to2(client: Client): +def test_sign_psbt_singlesig_sh_wpkh_1to2(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): # PSBT for a wrapped segwit 1-input 2-output spend (1 change address) psbt = open_psbt_from_file(f"{tests_root}/psbt/singlesig/sh-wpkh-1to2.psbt") - wallet = PolicyMapWallet( + wallet = WalletPolicy( "", - "sh(wpkh(@0))", + "sh(wpkh(@0/**))", [ - "[f5acc2fd/49'/1'/0']tpubDC871vGLAiKPcwAw22EjhKVLk5L98UGXBEcGR8gpcigLQVDDfgcYW24QBEyTHTSFEjgJgbaHU8CdRi9vmG4cPm1kPLmZhJEP17FMBdNheh3/**" + "[f5acc2fd/49'/1'/0']tpubDC871vGLAiKPcwAw22EjhKVLk5L98UGXBEcGR8gpcigLQVDDfgcYW24QBEyTHTSFEjgJgbaHU8CdRi9vmG4cPm1kPLmZhJEP17FMBdNheh3" ], ) @@ -162,58 +98,100 @@ def test_sign_psbt_singlesig_sh_wpkh_1to2(client: Client): # #0: # "pubkey" : "024ba3b77d933de9fa3f9583348c40f3caaf2effad5b6e244ece8abbfcc7244f67", # "signature" : "30440220720722b08489c2a50d10edea8e21880086c8e8f22889a16815e306daeea4665b02203fcf453fa490b76cf4f929714065fc90a519b7b97ab18914f9451b5a4b45241201" - result = client.sign_psbt(psbt, wallet, None) - - assert result == { - 0: bytes.fromhex( - "30440220720722b08489c2a50d10edea8e21880086c8e8f22889a16815e306daeea4665b02203fcf453fa490b76cf4f929714065fc90a519b7b97ab18914f9451b5a4b45241201" + result = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve_2(firmware), + testname=test_name) + + assert result == [( + 0, + PartialSignature( + pubkey=bytes.fromhex("024ba3b77d933de9fa3f9583348c40f3caaf2effad5b6e244ece8abbfcc7244f67"), + signature=bytes.fromhex( + "30440220720722b08489c2a50d10edea8e21880086c8e8f22889a16815e306daeea4665b02203fcf453fa490b76cf4f929714065fc90a519b7b97ab18914f9451b5a4b45241201" + ) ) - } + )] + + +def test_sign_psbt_highfee(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + # Transactions with fees higher than 10% of total amount + # An additional warning is shown. + + # PSBT for a wrapped segwit 1-input 2-output spend (1 change address) + psbt = open_psbt_from_file(f"{tests_root}/psbt/singlesig/sh-wpkh-1to2.psbt") + # Make sure that the fees are at least 10% of the total amount + for out in psbt.tx.vout: + out.nValue = int(out.nValue * 0.9) -@has_automation("automations/sign_with_default_wallet_accept.json") -def test_sign_psbt_singlesig_wpkh_1to2(client: Client): + # the test is only interesting if the total amount is at least 10000 sats + assert sum(input.witness_utxo.nValue for input in psbt.inputs) >= 10000 - # PSBT for a legacy 1-input 2-output spend (1 change address) + wallet = WalletPolicy( + "", + "sh(wpkh(@0/**))", + [ + "[f5acc2fd/49'/1'/0']tpubDC871vGLAiKPcwAw22EjhKVLk5L98UGXBEcGR8gpcigLQVDDfgcYW24QBEyTHTSFEjgJgbaHU8CdRi9vmG4cPm1kPLmZhJEP17FMBdNheh3" + ], + ) + + result = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve_3(firmware), + testname=test_name) + + assert len(result) == 1 + + +def test_sign_psbt_singlesig_wpkh_1to2(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + # PSBT for a segwit 1-input 2-output spend (1 change address) psbt = open_psbt_from_file(f"{tests_root}/psbt/singlesig/wpkh-1to2.psbt") - wallet = PolicyMapWallet( + wallet = WalletPolicy( "", - "wpkh(@0)", + "wpkh(@0/**)", [ - "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**" + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P" ], ) - result = client.sign_psbt(psbt, wallet, None) + result = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve_2(firmware), + testname=test_name) # expected sigs # #0: # "pubkey" : "03ee2c3d98eb1f93c0a1aa8e5a4009b70eb7b44ead15f1666f136b012ad58d3068", # "signature" : "3045022100ab44f34dd7e87c9054591297a101e8500a0641d1d591878d0d23cf8096fa79e802205d12d1062d925e27b57bdcf994ecf332ad0a8e67b8fe407bab2101255da632aa01" - assert result == { - 0: bytes.fromhex( - "3045022100ab44f34dd7e87c9054591297a101e8500a0641d1d591878d0d23cf8096fa79e802205d12d1062d925e27b57bdcf994ecf332ad0a8e67b8fe407bab2101255da632aa01" + assert result == [( + 0, + PartialSignature( + pubkey=bytes.fromhex("03ee2c3d98eb1f93c0a1aa8e5a4009b70eb7b44ead15f1666f136b012ad58d3068"), + signature=bytes.fromhex( + "3045022100ab44f34dd7e87c9054591297a101e8500a0641d1d591878d0d23cf8096fa79e802205d12d1062d925e27b57bdcf994ecf332ad0a8e67b8fe407bab2101255da632aa01" + ) ) - } + )] -@has_automation("automations/sign_with_default_wallet_accept.json") -def test_sign_psbt_singlesig_wpkh_2to2(client: Client): - # PSBT for a legacy 2-input 2-output spend (1 change address) +def test_sign_psbt_singlesig_wpkh_2to2(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + # PSBT for a segwit 2-input 2-output spend (1 change address) psbt = open_psbt_from_file(f"{tests_root}/psbt/singlesig/wpkh-2to2.psbt") - wallet = PolicyMapWallet( + wallet = WalletPolicy( "", - "wpkh(@0)", + "wpkh(@0/**)", [ - "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**" + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P" ], ) - result = client.sign_psbt(psbt, wallet, None) + result = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) # expected sigs # #0: @@ -223,17 +201,98 @@ def test_sign_psbt_singlesig_wpkh_2to2(client: Client): # "pubkey" : "0271b5b779ad870838587797bcf6f0c7aec5abe76a709d724f48d2e26cf874f0a0", # "signature" : "3045022100e2e98e4f8c70274f10145c89a5d86e216d0376bdf9f42f829e4315ea67d79d210220743589fd4f55e540540a976a5af58acd610fa5e188a5096dfe7d36baf3afb94001" - assert result == { - 0: bytes.fromhex( - "304402206b3e877655f08c6e7b1b74d6d893a82cdf799f68a5ae7cecae63a71b0339e5ce022019b94aa3fb6635956e109f3d89c996b1bfbbaf3c619134b5a302badfaf52180e01" - ), - 1: bytes.fromhex( - "3045022100e2e98e4f8c70274f10145c89a5d86e216d0376bdf9f42f829e4315ea67d79d210220743589fd4f55e540540a976a5af58acd610fa5e188a5096dfe7d36baf3afb94001" - ), - } + assert result == [( + 0, + PartialSignature( + pubkey=bytes.fromhex("03455ee7cedc97b0ba435b80066fc92c963a34c600317981d135330c4ee43ac7a3"), + signature=bytes.fromhex( + "304402206b3e877655f08c6e7b1b74d6d893a82cdf799f68a5ae7cecae63a71b0339e5ce022019b94aa3fb6635956e109f3d89c996b1bfbbaf3c619134b5a302badfaf52180e01" + ) + ) + ), ( + 1, + PartialSignature( + pubkey=bytes.fromhex("0271b5b779ad870838587797bcf6f0c7aec5abe76a709d724f48d2e26cf874f0a0"), + signature=bytes.fromhex( + "3045022100e2e98e4f8c70274f10145c89a5d86e216d0376bdf9f42f829e4315ea67d79d210220743589fd4f55e540540a976a5af58acd610fa5e188a5096dfe7d36baf3afb94001" + ), + ) + )] + + +def test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo(navigator: Navigator, firmware: + Firmware, client: RaggerClient, test_name: str): + # Same as the previous test, but the non-witness-utxo is missing. + # The app should sign after a warning. + + psbt = open_psbt_from_file(f"{tests_root}/psbt/singlesig/wpkh-2to2.psbt") + + # remove the non-witness-utxo field + for input in psbt.inputs: + input.non_witness_utxo = None + + wallet = WalletPolicy( + "", + "wpkh(@0/**)", + [ + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P" + ], + ) + + result = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve_4(firmware), + testname=test_name) + + # expected sigs + # #0: + # "pubkey" : "03455ee7cedc97b0ba435b80066fc92c963a34c600317981d135330c4ee43ac7a3", + # "signature" : "304402206b3e877655f08c6e7b1b74d6d893a82cdf799f68a5ae7cecae63a71b0339e5ce022019b94aa3fb6635956e109f3d89c996b1bfbbaf3c619134b5a302badfaf52180e01" + # #1: + # "pubkey" : "0271b5b779ad870838587797bcf6f0c7aec5abe76a709d724f48d2e26cf874f0a0", + # "signature" : "3045022100e2e98e4f8c70274f10145c89a5d86e216d0376bdf9f42f829e4315ea67d79d210220743589fd4f55e540540a976a5af58acd610fa5e188a5096dfe7d36baf3afb94001" + + assert result == [( + 0, + PartialSignature( + pubkey=bytes.fromhex("03455ee7cedc97b0ba435b80066fc92c963a34c600317981d135330c4ee43ac7a3"), + signature=bytes.fromhex( + "304402206b3e877655f08c6e7b1b74d6d893a82cdf799f68a5ae7cecae63a71b0339e5ce022019b94aa3fb6635956e109f3d89c996b1bfbbaf3c619134b5a302badfaf52180e01" + ) + ) + ), ( + 1, + PartialSignature( + pubkey=bytes.fromhex("0271b5b779ad870838587797bcf6f0c7aec5abe76a709d724f48d2e26cf874f0a0"), + signature=bytes.fromhex( + "3045022100e2e98e4f8c70274f10145c89a5d86e216d0376bdf9f42f829e4315ea67d79d210220743589fd4f55e540540a976a5af58acd610fa5e188a5096dfe7d36baf3afb94001" + ) + ) + )] + + +def test_sign_psbt_singlesig_wpkh_selftransfer(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + + # The only output is a change output. + # A "self-transfer" screen should be shown before the fees. + + wallet = WalletPolicy( + "", + "wpkh(@0/**)", + [ + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P" + ], + ) + psbt = "cHNidP8BAHECAAAAAfcDVJxLN1tzz5vaIy2onFL/ht/OqwKm2jEWGwMNDE/cAQAAAAD9////As0qAAAAAAAAFgAUJfcXOL7SoYGoDC1n6egGa0OTD9/mtgEAAAAAABYAFDXG4N1tPISxa6iF3Kc6yGPQtZPsTTQlAAABAPYCAAAAAAEBCOcYS1aMP1uQcUKTMJbvlsZXsV4yNnVxynyMfxSX//UAAAAAFxYAFGEWho6AN6qeux0gU3BSWnK+Dw4D/f///wKfJwEAAAAAABepFG1IUtrzpUCfdyFtu46j1ZIxLX7ph0DiAQAAAAAAFgAU4e5IJz0XxNe96ANYDugMQ34E0/cCRzBEAiB1b84pX0QaOUrvCdDxKeB+idM6wYKTLGmqnUU/tL8/lQIgbSinpq4jBlo+SIGyh8XNVrWAeMlKBNmoLenKOBugKzcBIQKXsd8NwO+9naIfeI3nkgYjg6g3QZarGTRDs7SNVZfGPJBJJAABAR9A4gEAAAAAABYAFOHuSCc9F8TXvegDWA7oDEN+BNP3IgYCgffBheEUZI8iAFFfv7b+HNM7j4jolv6lj5/n3j68h3kY9azC/VQAAIABAACAAAAAgAAAAAAHAAAAACICAzQZjNnkwXFEhm1F6oC2nk1ADqH6t/RHBAOblLA4tV5BGPWswv1UAACAAQAAgAAAAIABAAAAEgAAAAAiAgJxtbd5rYcIOFh3l7z28MeuxavnanCdck9I0uJs+HTwoBj1rML9VAAAgAEAAIAAAACAAQAAAAAAAAAA" + result = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve_5(firmware), + testname=test_name) + + assert len(result) == 1 -# def test_sign_psbt_legacy(client: Client): + +# def test_sign_psbt_legacy(client: RaggerClient, test_name: str): # # legacy address # # PSBT for a legacy 1-input 1-output spend # unsigned_raw_psbt_base64 = "cHNidP8BAFQCAAAAAbUlIwxFfIt0fsuFCNtL3dHKcOvUPQu2CNcqc8FrNtTyAAAAAAD+////AaDwGQAAAAAAGKkU2FZEFTTPb1ZpCw2Oa2sc/FxM59GIrAAAAAAAAQD5AgAAAAABATfphYFskBaL7jbWIkU3K7RS5zKr5BvfNHjec1rNieTrAQAAABcWABTkjiMSrvGNi5KFtSy72CSJolzNDv7///8C/y8bAAAAAAAZdqkU2FZEFTTPb1ZpCw2Oa2sc/FxM59GIrDS2GJ0BAAAAF6kUnEFiBqwsbP0pWpazURx45PGdXkWHAkcwRAIgCxWs2+R6UcpQuD6QKydU0irJ7yNe++5eoOly5VgqrEsCIHUD6t4LNW0292vnP+heXZ6Walx8DRW2TB+IOazzDNcaASEDnQS6zdUebuNm7FuOdKonnlNmPPpUyN66w2CIsX5N+pUhIh4AAAA=" @@ -246,7 +305,7 @@ def test_sign_psbt_singlesig_wpkh_2to2(client: Client): # print(result) -# def test_sign_psbt_legacy_p2pkh(client: Client): +# def test_sign_psbt_legacy_p2pkh(client: RaggerClient, test_name: str): # # test from app-bitcoin # # legacy address @@ -263,63 +322,128 @@ def test_sign_psbt_singlesig_wpkh_2to2(client: Client): # print(result) -@has_automation("automations/sign_with_wallet_accept.json") -def test_sign_psbt_multisig_wsh(client: Client): +def test_sign_psbt_multisig_wsh(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): wallet = MultisigWallet( name="Cold storage", address_type=AddressType.WIT, threshold=2, keys_info=[ - f"[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF/**", - f"[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK/**", + f"[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + f"[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", ], ) wallet_hmac = bytes.fromhex( - "d6434852fb3caa7edbd1165084968f1691444b3cfc10cf1e431acbbc7f48451f" + "d7c7a60b4ab4a14c1bf8901ba627d72140b2fb907f2b4e35d2e693bce9fbb371" ) psbt = open_psbt_from_file(f"{tests_root}/psbt/multisig/wsh-2of2.psbt") - result = client.sign_psbt(psbt, wallet, wallet_hmac) + result = client.sign_psbt(psbt, wallet, wallet_hmac, navigator, + instructions=sign_psbt_instruction_approve_6(firmware), + testname=test_name) + + assert result == [( + 0, + PartialSignature( + pubkey=bytes.fromhex("036b16e8c1f979fa4cc0f05b6a300affff941459b6f20de77de55b0160ef8e4cac"), + signature=bytes.fromhex( + "304402206ab297c83ab66e573723892061d827c5ac0150e2044fed7ed34742fedbcfb26e0220319cdf4eaddff63fc308cdf53e225ea034024ef96de03fd0939b6deeea1e8bd301" + ) + ) + )] + - assert result == { - 0: bytes.fromhex( - "304402206ab297c83ab66e573723892061d827c5ac0150e2044fed7ed34742fedbcfb26e0220319cdf4eaddff63fc308cdf53e225ea034024ef96de03fd0939b6deeea1e8bd301" +def test_sign_psbt_multisig_sh_wsh(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + # wrapped segwit multisig ("sh(wsh(sortedmulti(...)))") + wallet = MultisigWallet( + name="Cold storage", + address_type=AddressType.SH_WIT, + threshold=2, + keys_info=[ + "[e24243b4/48'/1'/0'/1']tpubDFY2NoEHyYsp4J98UCMAaRT5LzRYeXjWqh2txK2RsxPAR5YWKWyTeZBBncRJ7z5nL5RUQPEgycbgbbmywbeLaH9yWK6rnFAYQn28HyiYc1Y", + "[f5acc2fd/48'/1'/0'/1']tpubDFAqEGNyad35YgH8zxvxFZqNUoPtr5mDojs7wzbXQBHTZ4xHeVXG6w2HvsKvjBpaRpTmjYDjdPg5w2c6Wvu8QBkyMDrmBWdCyqkDM7reSsY", + ], + sorted=True + ) + + wallet_hmac = bytes.fromhex( + "677ec94c2e1a7446c6cac9db2adde8667b9a746dd63fa1e1863553cdb814a54a" + ) + + psbt = "cHNidP8BAFUCAAAAAS60cHn6kIlm2wk314ZKiOok2xj++cPoa/K5TXzNk4s6AQAAAAD9////AescAAAAAAAAGXapFFnK2lAxTIKeGfWneG+O4NSYf0KdiKwhlRUAAAEAigIAAAABAaNw+E0toKUlohxkK0YmapPS7uToo7RG7DA2YLrmoD8BAAAAFxYAFAppBymwQTPq8lpFfFWMuPRNdbTX/v///wI7rUIBAAAAABepFJMyNbbbdF4o3zxQhWSJ5ZXY5naHh60dAAAAAAAAF6kU9wt/XvakFsqnsR6xlBxP5N9MyyqHbvokAAEBIK0dAAAAAAAAF6kU9wt/XvakFsqnsR6xlBxP5N9MyyqHAQQiACAyIOGl/sIPCRep2F4Bude0ME17U2m2dPAiK96XdDCf7wEFR1IhA0fxhNV0BDkMTLzQjBSpKxSeh39pMEcQ+reqlD2a/D20IQPlOZCX7JMMMjUxBLMNtzR+gcVKZaL4J4sf/VRbo03NfFKuIgYDR/GE1XQEOQxMvNCMFKkrFJ6Hf2kwRxD6t6qUPZr8PbQc4kJDtDAAAIABAACAAAAAgAEAAIAAAAAAAAAAACIGA+U5kJfskwwyNTEEsw23NH6BxUplovgnix/9VFujTc18HPWswv0wAACAAQAAgAAAAIABAACAAAAAAAAAAAAAAA==" + result = client.sign_psbt(psbt, wallet, wallet_hmac, navigator, + instructions=sign_psbt_instruction_approve_7(firmware), + testname=test_name) + + assert result == [( + 0, + PartialSignature( + pubkey=bytes.fromhex("03e5399097ec930c32353104b30db7347e81c54a65a2f8278b1ffd545ba34dcd7c"), + signature=bytes.fromhex( + "30440220689c3ee23b8f52c21abe47ea6f37cf8bc72653cab9cd32658199b1a16db193d802200db5d2157044913d5a60f69e9ce10ab9a9d883d421d3fb0400d948b31c3b7ee201" + ) ) - } + )] -# def test_sign_psbt_legacy_wrong_non_witness_utxo(client: Client): -# # legacy address -# # PSBT for a legacy 1-input 1-output spend -# # The spend is valid, but the non-witness utxo is wrong; therefore, it should fail the hash test -# # TODO: this fails PSBT decoding; need to make a version we can control for this test. +def test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo(navigator: Navigator, firmware: Firmware, + client: RaggerClient, test_name: str): + # A transaction spending a wrapped segwit address has a script that appears like a legacy UTXO, but uses + # the segwit sighash algorithm. + # Therefore, if the non-witness-utxo is missing, we should still sign it while giving the warning for unverified inputs, + # for consistency with other segwit input types. -# unsigned_raw_psbt_base64 = "cHNidP8BAFQCAAAAAbUlIwxFfIt0fsuFCNtL3dHKcOvUPQu2CNcqc8FrNtTyAAAAAAD+////AaDwGQAAAAAAGKkU2FZEFTTPb1ZpCw2Oa2sc/FxM59GIrAAAAAAAAQD5AgAAAAABATfphYFskBaL7jbWIkU3K7RS5zKr5BvfNHjec1rNieTrAQAAABcWABTkjiMSrvGNi5KFtSy72CSJolzNDv7///8C/y8bAAAAAAAZdqkU2FZEFTTPb1ZpCw2Oa2sc/FxM59GIrDS2GJ0BAAAAF6kUnEFiBqwsbP0pWpazURx45PGdXkWHAkcwRAIgCxWs2+R6UcpQuD6QKydU0irJ7yNe++5eoOly5VgqrEsCIHUD6t4LNW0292vnP+heXZ6Walx8DRW2TB+IOazzDNcaASEDnQS6zdUebuNm7FuOdKonnlNmPPpUyN66w2CIsX5N+pUySC0BAAA=" -# psbt = PSBT() -# psbt.deserialize(unsigned_raw_psbt_base64) + wallet = MultisigWallet( + name="Cold storage", + address_type=AddressType.SH_WIT, + threshold=2, + keys_info=[ + "[e24243b4/48'/1'/0'/1']tpubDFY2NoEHyYsp4J98UCMAaRT5LzRYeXjWqh2txK2RsxPAR5YWKWyTeZBBncRJ7z5nL5RUQPEgycbgbbmywbeLaH9yWK6rnFAYQn28HyiYc1Y", + "[f5acc2fd/48'/1'/0'/1']tpubDFAqEGNyad35YgH8zxvxFZqNUoPtr5mDojs7wzbXQBHTZ4xHeVXG6w2HvsKvjBpaRpTmjYDjdPg5w2c6Wvu8QBkyMDrmBWdCyqkDM7reSsY", + ], + sorted=True + ) -# with pytest.raises(IncorrectDataError): -# client.sign_psbt(psbt) + wallet_hmac = bytes.fromhex( + "677ec94c2e1a7446c6cac9db2adde8667b9a746dd63fa1e1863553cdb814a54a" + ) + + psbt = "cHNidP8BAFUCAAAAAS60cHn6kIlm2wk314ZKiOok2xj++cPoa/K5TXzNk4s6AQAAAAD9////AescAAAAAAAAGXapFFnK2lAxTIKeGfWneG+O4NSYf0KdiKwhlRUAAAEBIK0dAAAAAAAAF6kU9wt/XvakFsqnsR6xlBxP5N9MyyqHAQQiACAyIOGl/sIPCRep2F4Bude0ME17U2m2dPAiK96XdDCf7wEFR1IhA0fxhNV0BDkMTLzQjBSpKxSeh39pMEcQ+reqlD2a/D20IQPlOZCX7JMMMjUxBLMNtzR+gcVKZaL4J4sf/VRbo03NfFKuIgYDR/GE1XQEOQxMvNCMFKkrFJ6Hf2kwRxD6t6qUPZr8PbQc4kJDtDAAAIABAACAAAAAgAEAAIAAAAAAAAAAACIGA+U5kJfskwwyNTEEsw23NH6BxUplovgnix/9VFujTc18HPWswv0wAACAAQAAgAAAAIABAACAAAAAAAAAAAAAAA==" + result = client.sign_psbt(psbt, wallet, wallet_hmac, navigator, + instructions=sign_psbt_instruction_approve_8(firmware), + testname=test_name) + + assert result == [( + 0, + PartialSignature( + pubkey=bytes.fromhex("03e5399097ec930c32353104b30db7347e81c54a65a2f8278b1ffd545ba34dcd7c"), + signature=bytes.fromhex( + "30440220689c3ee23b8f52c21abe47ea6f37cf8bc72653cab9cd32658199b1a16db193d802200db5d2157044913d5a60f69e9ce10ab9a9d883d421d3fb0400d948b31c3b7ee201" + ) + ) + )] -@pytest.mark.skip(reason="Fails with bitcoin_testnet_lite build configuration: BadStateError") -@has_automation("automations/sign_with_default_wallet_accept.json") -def test_sign_psbt_taproot_1to2(client: Client): +def test_sign_psbt_taproot_1to2_sighash_all(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + # PSBT for a p2tr 1-input 2-output spend (1 change address) - psbt = open_psbt_from_file(f"{tests_root}/psbt/singlesig/tr-1to2.psbt") + psbt = open_psbt_from_file(f"{tests_root}/psbt/singlesig/tr-1to2-sighash-all.psbt") - wallet = PolicyMapWallet( + wallet = WalletPolicy( "", - "tr(@0)", + "tr(@0/**)", [ - "[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U/**" + "[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U" ], ) - result = client.sign_psbt(psbt, wallet, None) + result = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) + assert len(result) == 1 # Unlike other transactions, Schnorr signatures are not deterministic (unless the randomness is removed) # Therefore, for this testcase we hard-code the sighash (which was validated with Bitcoin Core 22.0 when the @@ -329,31 +453,79 @@ def test_sign_psbt_taproot_1to2(client: Client): sighash0 = bytes.fromhex("7A999E5AD6F53EA6448E7026061D3B4523F957999C430A5A492DFACE74AE31B6") # get the (tweaked) pubkey from the scriptPubKey - pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + pubkey0_psbt = psbt.inputs[0].witness_utxo.scriptPubKey[2:] - assert len(result) == 1 + idx0, partial_sig0 = result[0] + assert idx0 == 0 + assert partial_sig0.pubkey == pubkey0_psbt + assert partial_sig0.tapleaf_hash is None # the sighash 0x01 is appended to the signature - assert len(result[0]) == 64+1 - assert result[0][-1] == 0x01 + assert len(partial_sig0.signature) == 64+1 + assert partial_sig0.signature[-1] == 0x01 - sig0 = result[0][:-1] + assert bip0340.schnorr_verify(sighash0, pubkey0_psbt, partial_sig0.signature[:-1]) - assert bip0340.schnorr_verify(sighash0, pubkey0, sig0) +def test_sign_psbt_taproot_1to2_sighash_default(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): -def test_sign_psbt_singlesig_wpkh_4to3(client: Client, comm: SpeculosClient, is_speculos: bool): + # PSBT for a p2tr 1-input 2-output spend (1 change address) + + # Test two times: + # - the first PSBT has SIGHASH_DEFAULT; + # - the second PSBT does not specify the sighash type. + # The behavior for taproot transactions should be the same, producing 64-byte signatures + + index = 0 + for psbt_file_name in ["tr-1to2-sighash-default", "tr-1to2-sighash-omitted"]: + psbt = open_psbt_from_file(f"{tests_root}/psbt/singlesig/{psbt_file_name}.psbt") + + wallet = WalletPolicy( + "", + "tr(@0/**)", + [ + "[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U" + ], + ) + + result = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=f"{test_name}_{index}") + index += 1 + + # Unlike other transactions, Schnorr signatures are not deterministic (unless the randomness is removed) + # Therefore, for this testcase we hard-code the sighash (which was validated with Bitcoin Core 22.0 when the + # transaction was sent), and we verify the produced Schnorr signature with the reference bip340 implementation. + + # sighash verified with bitcoin-core + sighash0 = bytes.fromhex("75C96FB06A12DB4CD011D8C95A5995DB758A4F2837A22F30F0F579619A4466F3") + + # get the (tweaked) pubkey from the scriptPubKey + expected_pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + + assert len(result) == 1 + + idx0, partial_sig0 = result[0] + + assert idx0 == 0 + assert partial_sig0.pubkey == expected_pubkey0 + assert len(partial_sig0.signature) == 64 + assert partial_sig0.tapleaf_hash is None + + assert bip0340.schnorr_verify(sighash0, partial_sig0.pubkey, partial_sig0.signature) + + +def test_sign_psbt_singlesig_wpkh_4to3(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): # PSBT for a segwit 4-input 3-output spend (1 change address) # this test also checks that addresses, amounts and fees shown on screen are correct - if not is_speculos: - pytest.skip("Requires speculos") - - wallet = PolicyMapWallet( + wallet = WalletPolicy( "", - "wpkh(@0)", + "wpkh(@0/**)", [ - "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**" + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P" ], ) @@ -361,7 +533,8 @@ def test_sign_psbt_singlesig_wpkh_4to3(client: Client, comm: SpeculosClient, is_ n_outs = 3 in_amounts = [10000 + 10000 * i for i in range(n_ins)] - out_amounts = [9999 + 9999 * i for i in range(n_outs)] + total_in = sum(in_amounts) + out_amounts = [total_in // n_outs - i for i in range(n_outs)] change_index = 1 @@ -377,44 +550,22 @@ def test_sign_psbt_singlesig_wpkh_4to3(client: Client, comm: SpeculosClient, is_ assert sum_out < sum_in - fees_amount = sum_in - sum_out - - all_events: List[dict] = [] - - x = threading.Thread(target=ux_thread_sign_psbt, args=[comm, all_events]) - x.start() - result = client.sign_psbt(psbt, wallet, None) - x.join() + result = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve_9(firmware), + testname=test_name) assert len(result) == n_ins - parsed_events = parse_signing_events(all_events) - - assert(parsed_events["fees"] == format_amount(CURRENCY_TICKER, fees_amount)) - - shown_out_idx = 0 - for out_idx in range(n_outs): - if out_idx != change_index: - out_amt = psbt.tx.vout[out_idx].nValue - assert parsed_events["amounts"][shown_out_idx] == format_amount(CURRENCY_TICKER, out_amt) - - out_addr = Script(psbt.tx.vout[out_idx].scriptPubKey).address(network=NETWORKS["test"]) - assert parsed_events["addresses"][shown_out_idx] == out_addr - - shown_out_idx += 1 - -def test_sign_psbt_singlesig_large_amount(client: Client, comm: SpeculosClient, is_speculos: bool): +def test_sign_psbt_singlesig_large_amount(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): # Test with a transaction with an extremely large amount - if not is_speculos: - pytest.skip("Requires speculos") - - wallet = PolicyMapWallet( + wallet = WalletPolicy( "", - "wpkh(@0)", + "wpkh(@0/**)", [ - "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**" + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P" ], ) @@ -428,65 +579,59 @@ def test_sign_psbt_singlesig_large_amount(client: Client, comm: SpeculosClient, assert sum_out < sum_in - fees_amount = sum_in - sum_out - - all_events: List[dict] = [] - - x = threading.Thread(target=ux_thread_sign_psbt, args=[comm, all_events]) - x.start() - result = client.sign_psbt(psbt, wallet, None) - x.join() + result = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) assert len(result) == 1 - parsed_events = parse_signing_events(all_events) - - assert(parsed_events["fees"] == format_amount(CURRENCY_TICKER, fees_amount)) - out_amt = psbt.tx.vout[0].nValue - assert parsed_events["amounts"][0] == format_amount(CURRENCY_TICKER, out_amt) - - -@has_automation("automations/sign_with_default_wallet_accept.json") -def test_sign_psbt_singlesig_wpkh_512to256(client: Client, enable_slow_tests: bool): +def test_sign_psbt_singlesig_wpkh_512to256(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, enable_slow_tests: bool): # PSBT for a transaction with 512 inputs and 256 outputs (maximum currently supported in the app) # Very slow test (esp. with DEBUG enabled), so disabled unless the --enableslowtests option is used if not enable_slow_tests: pytest.skip() - n_inputs = 512 - n_outputs = 256 - - wallet = PolicyMapWallet( + wallet = WalletPolicy( "", - "tr(@0)", + "tr(@0/**)", [ - "[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U/**" + "[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U" ], ) + n_inputs = 512 + n_outputs = 256 + + input_amounts = [10000 + 10000 * i for i in range(n_inputs)] + total_amount = sum(input_amounts) + output_amounts = [(total_amount // n_outputs) - 10 for _ in range(n_outputs)] + psbt = txmaker.createPsbt( wallet, - [10000 + 10000 * i for i in range(n_inputs)], - [999 + 99 * i for i in range(n_outputs)], + input_amounts, + output_amounts, [i == 42 for i in range(n_outputs)] ) - result = client.sign_psbt(psbt, wallet, None) + result = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) assert len(result) == n_inputs -def test_sign_psbt_fail_11_changes(client: Client): +def test_sign_psbt_fail_11_changes(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): # PSBT for transaction with 11 change addresses; the limit is 10, so it must fail with NotSupportedError - # before any user interaction + # before any user interaction on nanos. - wallet = PolicyMapWallet( + wallet = WalletPolicy( "", - "wpkh(@0)", + "wpkh(@0/**)", [ - "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**" + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P" ], ) @@ -497,22 +642,25 @@ def test_sign_psbt_fail_11_changes(client: Client): [True] * 11, ) - with pytest.raises(NotSupportedError): - client.sign_psbt(psbt, wallet, None) + with pytest.raises(ExceptionRAPDU) as e: + client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_tap(firmware), + testname=test_name) + + assert DeviceException.exc.get(e.value.status) == NotSupportedError + assert len(e.value.data) == 0 -def test_sign_psbt_fail_wrong_non_witness_utxo(client: Client, is_speculos: bool): +def test_sign_psbt_fail_wrong_non_witness_utxo(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): # PSBT for transaction with the wrong non-witness utxo for an input. # It must fail with IncorrectDataError before any user interaction. - if not is_speculos: - pytest.skip("Requires speculos") - - wallet = PolicyMapWallet( + wallet = WalletPolicy( "", - "wpkh(@0)", + "wpkh(@0/**)", [ - "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**" + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P" ], ) @@ -530,17 +678,21 @@ def test_sign_psbt_fail_wrong_non_witness_utxo(client: Client, is_speculos: bool psbt.inputs[0].non_witness_utxo = wit client._no_clone_psbt = True - with pytest.raises(IncorrectDataError): - client.sign_psbt(psbt, wallet, None) + with pytest.raises(ExceptionRAPDU) as e: + client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 client._no_clone_psbt = False -def test_sign_psbt_with_opreturn(client: Client, comm: SpeculosClient): - wallet = PolicyMapWallet( +def test_sign_psbt_with_opreturn(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + wallet = WalletPolicy( "", - "wpkh(@0)", + "wpkh(@0/**)", [ - "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**" + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P" ], ) @@ -548,13 +700,37 @@ def test_sign_psbt_with_opreturn(client: Client, comm: SpeculosClient): psbt = PSBT() psbt.deserialize(psbt_b64) - with automation(comm, "automations/sign_with_default_wallet_accept.json"): - hww_sigs = client.sign_psbt(psbt, wallet, None) + hww_sigs = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve_2(firmware), + testname=test_name) assert len(hww_sigs) == 1 -def test_sign_psbt_with_segwit_v16(client: Client, comm: SpeculosClient): +def test_sign_psbt_with_naked_opreturn(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + wallet = WalletPolicy( + "", + "wpkh(@0/**)", + [ + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P" + ], + ) + + # Same psbt as in test_sign_psbt_with_opreturn, but the first output is a naked OP_RETURN script (no data). + # Signing such outputs is needed in BIP-0322. + psbt_b64 = "cHNidP8BAFwCAAAAAZ0gZDu3l28lrZWbtsuoIfI07zpsaXXMe6sMHHJn03LPAAAAAAD+////AgAAAAAAAAAAAWrBlZgAAAAAABYAFCuTP2nl6yRKHwS+1J6OyeTsk7yfAAAAAAABAHECAAAAAZ6afPCN0VxFOW9vKyNxhgF2lpJPsNbBKlg1xV3WnCoPAAAAAAD+////AoCWmAAAAAAAFgAUE0foKgN7Xbs4z4xHWfJCsfXH4JrzWm0pAQAAABYAFAgOnmT0kCvYJ6vJ4DkmkNGXT3iFQQAAAAEBH4CWmAAAAAAAFgAUE0foKgN7Xbs4z4xHWfJCsfXH4JoiBgJ8t100sAXE659iu/LEV9djjoE+dX787I+mhnfZULY2Yhj1rML9VAAAgAEAAIAAAACAAAAAAAAAAAAAACICAxmbidg1b1fhzjgKEgXPKGBtvqiYVbEcPf7PuKGlM1aJGPWswv1UAACAAQAAgAAAAIABAAAAAQAAAAA=" + psbt = PSBT() + psbt.deserialize(psbt_b64) + + hww_sigs = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve_2(firmware), + testname=test_name) + + assert len(hww_sigs) == 1 + + +def test_sign_psbt_with_segwit_v16(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): # This psbt contains an output with future psbt version 16 (corresponding to address # tb1sqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq4hu3px). # The app should accept it nonetheless. @@ -563,15 +739,218 @@ def test_sign_psbt_with_segwit_v16(client: Client, comm: SpeculosClient): psbt = PSBT() psbt.deserialize(psbt_b64) - wallet = PolicyMapWallet( + wallet = WalletPolicy( "", - "wpkh(@0)", + "wpkh(@0/**)", [ - "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**" + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P" ], ) - with automation(comm, "automations/sign_with_default_wallet_accept.json"): - hww_sigs = client.sign_psbt(psbt, wallet, None) + hww_sigs = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) assert len(hww_sigs) == 1 + + +def test_sign_psbt_with_external_inputs(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + + instructions = [sign_psbt_instruction_approve_external_inputs(firmware), + sign_psbt_instruction_approve_external_inputs_2(firmware), + sign_psbt_instruction_approve_external_inputs_2(firmware)] + # PSBT obtained by joining pkh-1to1.psbt, tr-1to2.psbt, wpkh-1to2.psbt. + # We sign it with each of the respective wallets; therefore it must show the "external inputs" warning each time. + psbt_b64 = "cHNidP8BAP0yAQIAAAADobgj0jNtaUtJNO+bblt94XoFUT2oop2wKi7Lx6mm/m0BAAAAAP3///9RIsLN5oI+VXVBdbksnFegqOGsg8OOF4f9Oh/zNI6VEwEAAAAA/f///3oqmXlWwJ+Op/0oGcGph7sU4iv5rc2vIKiXY3Is7uJkAQAAAAD9////BaCGAQAAAAAAFgAUE5m4oJhHoDmwNS9Y0hLBgLqxf3dV/6cAAAAAACJRIAuOdIa8MGoK77enwArwQFVC2xrNc+7MqCdxzPX+XrYPeEEPAAAAAAAZdqkUE9fVgWaUbD7AIpNAZtjA0RHRu0GIrHQ4IwAAAAAAFgAU6zj6m4Eo+B8m6V7bDF/66oNpD+Sguw0AAAAAABl2qRQ0Sg9IyhUOwrkDgXZgubaLE6ZwJoisAAAAAAABASunhqkAAAAAACJRINj08dGJltthuxyvVCPeJdih7unJUNN+b/oCMBLV5i4NIRYhLqKFalzxEOZqK+nXNTFHk/28s4iyuPE/K2remC569RkA9azC/VYAAIABAACAAAAAgAEAAAAAAAAAARcgIS6ihWpc8RDmaivp1zUxR5P9vLOIsrjxPytq3pguevUAAQCMAgAAAAHsIw5TCVJWBSokKCcO7ASYlEsQ9vHFePQxwj0AmLSuWgEAAAAXFgAUKBU5gg4t6XOuQbpgBLQxySHE2G3+////AnJydQAAAAAAF6kUyLkGrymMcOYDoow+/C+uGearKA+HQEIPAAAAAAAZdqkUy65bUM+Tnm9TG4prer14j+FLApeIrITyHAAiBgLuhgggfiEChCb2nnZEfX49XgdwSfXmg8MTbCMUdipHGBj1rML9LAAAgAEAAIAAAACAAAAAAAAAAAAAAQB9AgAAAAGvv64GWQ90H/GvWbasRhEmM2pMSoLbVT32/vq3N6wz8wEAAAAA/f///wJwEQEAAAAAACIAIP3uRBxW5bBtDfgsEkxwcBSlyhlli+C5hWvKFvHtMln3pfQwAAAAAAAWABQ6+EKa1ZVKpe6KM8mD/YoehnmSSwAAAAABAR+l9DAAAAAAABYAFDr4QprVlUql7oozyYP9ih6GeZJLIgYD7iw9mOsfk8Chqo5aQAm3Dre0Tq0V8WZvE2sBKtWNMGgY9azC/VQAAIABAACAAAAAgAEAAAAIAAAAAAABBSACkIHs5WFqocuZMZ/Eh07+5H8IzrpfYARjbIxDQJpfCiEHApCB7OVhaqHLmTGfxIdO/uR/CM66X2AEY2yMQ0CaXwoZAPWswv1WAACAAQAAgAAAAIABAAAAAgAAAAAAIgICKexHcnEx7SWIogxG7amrt9qm9J/VC6/nC5xappYcTswY9azC/VQAAIABAACAAAAAgAEAAAAKAAAAAAA=" + psbt = PSBT() + psbt.deserialize(psbt_b64) + + wallets = [ + WalletPolicy( + "", + "pkh(@0/**)", + [ + "[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT" + ], + ), + WalletPolicy( + "", + "tr(@0/**)", + [ + "[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U" + ], + ), + WalletPolicy( + "", + "wpkh(@0/**)", + [ + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P" + ], + ) + ] + + index = 0 + for wallet, text in zip(wallets, instructions): + hww_sigs = client.sign_psbt(psbt, wallet, None, navigator, + instructions=text, + testname=f"{test_name}_{index}") + index += 1 + + assert len(hww_sigs) == 1 + + +def test_sign_psbt_miniscript_multikey(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + # An earlier (unreleased) version of the app had issues in recognizing the internal key in + # wallets with multiple internal keys. This caused the app not to recognize some inputs as + # internal and refuse signing. + # This test avoid regressions. + + psbt_b64 = "cHNidP8BAH0CAAAAAc73gS9SovmC2TiOljy8430GM1piHwQ2qexyVay941KiAAAAAAD9////AoRMiQAAAAAAIgAgCNTAdTDWmzUxjznipRc1U4uQGLRoZrO78XwYXYUabZpAQg8AAAAAABYAFERtNGMisyaTdIH6qfcs0sgquVa9AAAAAAABAIkCAAAAARZzljeqA1KqIrHu0Dlk1eHOMjicZvTJNJyJr/EKGRpbAAAAAAD+////AoCWmAAAAAAAIgAg7J/0qnaRhypwlt/UpEpsEFWGdEW1xaoG8zEdfnMy+LjbWm0pAQAAACJRIDnrpLTPwAtLr+lUmuKj0BponWuHmsIjhT94mb7F0QNeaQAAAAEBK4CWmAAAAAAAIgAg7J/0qnaRhypwlt/UpEpsEFWGdEW1xaoG8zEdfnMy+LgBBY4hA1h5yhc6nBs/MA7Fh/tMxtVNYY4wWE5CXBtTuYgocI8drGQhArcwd+z8NOR+OK4rn4KGkQCCFM8COcy6P8m/T41alSKMrSED2O7HEKG8D9F+VNLOnTTQL43jAvbEPioS3GbGDIQceJVnIQMcumfE5xIqwJgWWRP5G5iLnJRWKeGzi7yANv+se/rxEmisIgYCtzB37Pw05H44riufgoaRAIIUzwI5zLo/yb9PjVqVIowY9azC/SwAAIABAACAAAAAgAIAAAADAAAAIgYDHLpnxOcSKsCYFlkT+RuYi5yUVinhs4u8gDb/rHv68RIMoPWInwAAAAADAAAAIgYDWHnKFzqcGz8wDsWH+0zG1U1hjjBYTkJcG1O5iChwjx0Y9azC/SwAAIABAACAAAAAgAAAAAADAAAAIgYD2O7HEKG8D9F+VNLOnTTQL43jAvbEPioS3GbGDIQceJUMt6EhtAAAAAADAAAAAAEBjiECUzcaIHTkAJE5L9bKuknM0NEVGMEJZh9J+AglLIn3FWSsZCECmjJ4GqB1Hs3Dr/H+FWE3rSzge5+iVTuf+FA3DBpG3SWtIQL+762PyBkOL51EV+NoTOccB+ABFJtDgCJ3I79tiEq7cGchAuWvSvOsaVtJcvo5AFkgH7RZXYD4+VU+4x4MqG2IiTPcaKwiAgJTNxogdOQAkTkv1sq6SczQ0RUYwQlmH0n4CCUsifcVZBj1rML9LAAAgAEAAIAAAACAAQAAAAEAAAAiAgKaMngaoHUezcOv8f4VYTetLOB7n6JVO5/4UDcMGkbdJRj1rML9LAAAgAEAAIAAAACAAwAAAAEAAAAiAgLlr0rzrGlbSXL6OQBZIB+0WV2A+PlVPuMeDKhtiIkz3Ayg9YifAQAAAAEAAAAiAgL+762PyBkOL51EV+NoTOccB+ABFJtDgCJ3I79tiEq7cAy3oSG0AQAAAAEAAAAAAA==" + psbt = PSBT() + psbt.deserialize(psbt_b64) + + wallet = WalletPolicy( + "Me and Bob or me and Carl", + "wsh(c:andor(pk(@0/<0;1>/*),pk_k(@1/**),and_v(v:pk(@0/<2;3>/*),pk_k(@2/**))))", + [ + "[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT", + "tpubDDcwGjxKph1xkiAnzvpgdnTeaEhVnH9d766yqvd16JN7EmPW9qSwnbco7kZwPd7UbyEwRojYGUaHT1UULbdqAjGQzeCy3qdZEwZLRmpzwZV", + "tpubDCDraP1C24GGX6BHCewLBWbKQRNGACfz8JjyKXYoZjEJWeGV5Ng43FL31MryaiqeBjdC5dPUZD2zqnmMe6gqrYEstnu8pmJZYp3AQmhzQ6G", + ] + ) + + wallet_hmac = bytes.fromhex( + "e139a96195e18bc61e8cda72d11b3f75d3084a5c893990ca74a152206064792d" + ) + + result = client.sign_psbt(psbt, wallet, wallet_hmac, navigator, + instructions=sign_psbt_instruction_approve_7(firmware), + testname=test_name) + + assert len(result) == 2 + + +def test_sign_psbt_singlesig_pkh_1to1_other_encodings(navigator: Navigator, firmware: Firmware, + client: RaggerClient, test_name: str): + # same as test_sign_psbt_singlesig_pkh_1to1, but the psbt is passed as bytes or base64 string + + psbt_obj = open_psbt_from_file(f"{tests_root}/psbt/singlesig/pkh-1to1.psbt") + + wallet = WalletPolicy( + "", + "pkh(@0/**)", + [ + "[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT" + ], + ) + + psbt_b64 = psbt_obj.serialize() + psbt_bytes = base64.b64decode(psbt_b64) + + index = 0 + for psbt in [psbt_b64, psbt_bytes]: + # expected sigs: + # #0: + # "pubkey" : "02ee8608207e21028426f69e76447d7e3d5e077049f5e683c3136c2314762a4718", + # "signature" : "3045022100e55b3ca788721aae8def2eadff710e524ffe8c9dec1764fdaa89584f9726e196022012a30fbcf9e1a24df31a1010356b794ab8de438b4250684757ed5772402540f401" + + result = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=f"{test_name}_{index}") + index += 1 + + assert result == [( + 0, + PartialSignature( + pubkey=bytes.fromhex("02ee8608207e21028426f69e76447d7e3d5e077049f5e683c3136c2314762a4718"), + signature=bytes.fromhex( + "3045022100e55b3ca788721aae8def2eadff710e524ffe8c9dec1764fdaa89584f9726e196022012a30fbcf9e1a24df31a1010356b794ab8de438b4250684757ed5772402540f401" + ) + ) + )] + + +def test_sign_psbt_tr_script_pk_sighash_all(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + # Transaction signed with SIGHASH_ALL, therefore producing a 65-byte signature + + wallet = WalletPolicy( + name="Taproot foreign internal key, and our script key", + descriptor_template="tr(@0/**,pk(@1/**))", + keys_info=[ + "[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + ], + ) + + wallet_hmac = bytes.fromhex( + "dae925660e20859ed8833025d46444483ce264fdb77e34569aabe9d590da8fb7" + ) + + psbt = PSBT() + psbt.deserialize("cHNidP8BAFICAAAAAR/BzFdxy4OGDMVtlLz+2ThgjBf2NmJDW0HpxE/8/TFCAQAAAAD9////ATkFAAAAAAAAFgAUqo7zdMr638p2kC3bXPYcYLv9nYUAAAAAAAEBK0wGAAAAAAAAIlEg/AoQ0wjH5BtLvDZC+P2KwomFOxznVaDG0NSV8D2fLaQBAwQBAAAAIhXBUBcQi+zqje3FMAuyI4azqzA2esJi+c5eWDJuuD46IvUjIGsW6MH5efpMwPBbajAK//+UFFm28g3nfeVbAWDvjkysrMAhFlAXEIvs6o3txTALsiOGs6swNnrCYvnOXlgybrg+OiL1HQB2IjpuMAAAgAEAAIAAAACAAgAAgAAAAAAAAAAAIRZrFujB+Xn6TMDwW2owCv//lBRZtvIN533lWwFg745MrD0BCS7aAzYX4hDuf30ON4pASuocSLVqoQMCK+z3dG5HAKT1rML9MAAAgAEAAIAAAACAAgAAgAAAAAAAAAAAARcgUBcQi+zqje3FMAuyI4azqzA2esJi+c5eWDJuuD46IvUBGCAJLtoDNhfiEO5/fQ43ikBK6hxItWqhAwIr7Pd0bkcApAAA") + result = client.sign_psbt(psbt, wallet, wallet_hmac, navigator, + instructions=sign_psbt_instruction_approve_7(firmware), + testname=test_name) + + assert len(result) == 1 + + # sighash verified with bitcoin-core (real transaction) + sighash0 = bytes.fromhex("39CEACF28A980B46749DD416EABE6E380C0C3742D19AA3E2ABB64F0840251E5B") + + assert len(result) == 1 + + idx0, partial_sig0 = result[0] + + assert idx0 == 0 + assert partial_sig0.pubkey == bytes.fromhex("6b16e8c1f979fa4cc0f05b6a300affff941459b6f20de77de55b0160ef8e4cac") + assert partial_sig0.tapleaf_hash == bytes.fromhex( + "092eda033617e210ee7f7d0e378a404aea1c48b56aa103022becf7746e4700a4") + + assert len(partial_sig0.signature) == 65 + assert partial_sig0.signature[-1] == 1 # SIGHASH_ALL + + assert bip0340.schnorr_verify(sighash0, partial_sig0.pubkey, partial_sig0.signature[:64]) + + +def test_sign_psbt_against_wrong_tapleaf_hash(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + # Versions 2.1.2, 2.1.3 and 2.2.0 incorrectly derived keys for policies with keys whose + # derivation doesn't end in /** or /<0;1>/*. + wallet = WalletPolicy( + name="Used to return a wrong tapleaf_hash", + descriptor_template="tr(@0/<0;1>/*,{and_v(v:multi_a(1,@1/<2;3>/*,@2/<2;3>/*),older(2)),multi_a(2,@1/<0;1>/*,@2/<0;1>/*)})", + keys_info=[ + "tpubDD7LLJNCVTKQiB41FH3NyJPzMUNroRtzzY3WFAzKZDikrMpw9PJTi6A2Yes5Tamin4wsgJ4JLsj2AVUSvQqP2T6q3bztu7obRuU3Lrh4eTw", + "[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK", + "tpubDCczwGSwQAF9Z5gTqL3tjznCFC9De5kFBLGdJJuj3UogVyYXVG7HuFdNsvJ9oDtvn4waeawS8XvRpBfbAZaDv1pGRiZdc9qnQhLKTS8eWXH" + ] + ) + + wallet_hmac = bytes.fromhex( + "649d8ef6721d63046144f4f05d156655bc42fb0fe4a85020ac524cd79973c9d1") + + psbt_b64 = "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" + + result = client.sign_psbt(psbt_b64, wallet, wallet_hmac, navigator, + instructions=sign_psbt_instruction_approve_7(firmware), + testname=test_name) + + assert len(result) == 2 + + # This test assumes that keys are yielded in the same order as the internal placeholders + + part_sig_1 = result[0][1] + assert part_sig_1.pubkey == bytes.fromhex( + "21176cb588d36748033a66214169e13cb7928311554fbf8fd836b9ace439a1f4") + # version 2.2.0 returned b2ee0699c6063e37ee778bd87774660b3f4c62b47473f28a0d32e6ff2bccd5db for part_sig_1.tapleaf_hash + assert part_sig_1.tapleaf_hash == bytes.fromhex( + "b1dd2a8bcd207330117ecaff279706fbcbcc339f1de98779a435b11284411575") + + part_sig_2 = result[1][1] + assert part_sig_2.pubkey == bytes.fromhex( + "9e646fb9e0452460944e49f8869f9ab9da90820da5d53841af9e1271a3bcf9ce") + assert part_sig_2.tapleaf_hash == bytes.fromhex( + "5b82996fe6cf1bf43868511181c64c965b7bf5f16f007acec52dede5288f9225") diff --git a/tests/test_sign_psbt_v1.py b/tests/test_sign_psbt_v1.py new file mode 100644 index 000000000..f8af8c5c5 --- /dev/null +++ b/tests/test_sign_psbt_v1.py @@ -0,0 +1,480 @@ +# Tests using the V1 version of the wallet policy language, used before version 2.1.0 of the app +# Make sure we remain compatible for some time. + +import pytest + +import threading + +from decimal import Decimal + +from typing import List + +from pathlib import Path + +from ledger_bitcoin import WalletPolicy, MultisigWallet, AddressType, WalletType, PartialSignature +from ledger_bitcoin.exception.errors import IncorrectDataError, NotSupportedError +from ledger_bitcoin.exception.device_exception import DeviceException + +from ledger_bitcoin.psbt import PSBT +from ledger_bitcoin.wallet import AddressType + +from test_utils import bip0340, txmaker + +from embit.script import Script +from embit.networks import NETWORKS +from ragger.navigator import Navigator, NavInsID +from ragger.error import ExceptionRAPDU +from ragger.firmware import Firmware + +import requests +import json + +from ragger_bitcoin import RaggerClient + +from .instructions import * + +tests_root: Path = Path(__file__).parent + + +def open_psbt_from_file(filename: str) -> PSBT: + raw_psbt_base64 = open(filename, "r").read() + + psbt = PSBT() + psbt.deserialize(raw_psbt_base64) + return psbt + + +def test_sign_psbt_singlesig_pkh_1to1_v1(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + # PSBT for a legacy 1-input 1-output spend (no change address) + psbt = open_psbt_from_file(f"{tests_root}/psbt/singlesig/pkh-1to1.psbt") + + wallet = WalletPolicy( + "", + "pkh(@0)", + [ + "[f5acc2fd/44'/1'/0']tpubDCwYjpDhUdPGP5rS3wgNg13mTrrjBuG8V9VpWbyptX6TRPbNoZVXsoVUSkCjmQ8jJycjuDKBb9eataSymXakTTaGifxR6kmVsfFehH1ZgJT/**" + ], + version=WalletType.WALLET_POLICY_V1 + ) + + # expected sigs: + # #0: + # "pubkey" : "02ee8608207e21028426f69e76447d7e3d5e077049f5e683c3136c2314762a4718", + # "signature" : "3045022100e55b3ca788721aae8def2eadff710e524ffe8c9dec1764fdaa89584f9726e196022012a30fbcf9e1a24df31a1010356b794ab8de438b4250684757ed5772402540f401" + result = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) + + assert result == [( + 0, + PartialSignature( + pubkey=bytes.fromhex("02ee8608207e21028426f69e76447d7e3d5e077049f5e683c3136c2314762a4718"), + signature=bytes.fromhex( + "3045022100e55b3ca788721aae8def2eadff710e524ffe8c9dec1764fdaa89584f9726e196022012a30fbcf9e1a24df31a1010356b794ab8de438b4250684757ed5772402540f401" + ) + ) + )] + + +def test_sign_psbt_singlesig_sh_wpkh_1to2_v1(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + # PSBT for a wrapped segwit 1-input 2-output spend (1 change address) + psbt = open_psbt_from_file(f"{tests_root}/psbt/singlesig/sh-wpkh-1to2.psbt") + + wallet = WalletPolicy( + "", + "sh(wpkh(@0))", + [ + "[f5acc2fd/49'/1'/0']tpubDC871vGLAiKPcwAw22EjhKVLk5L98UGXBEcGR8gpcigLQVDDfgcYW24QBEyTHTSFEjgJgbaHU8CdRi9vmG4cPm1kPLmZhJEP17FMBdNheh3/**" + ], + version=WalletType.WALLET_POLICY_V1 + ) + + # expected sigs: + # #0: + # "pubkey" : "024ba3b77d933de9fa3f9583348c40f3caaf2effad5b6e244ece8abbfcc7244f67", + # "signature" : "30440220720722b08489c2a50d10edea8e21880086c8e8f22889a16815e306daeea4665b02203fcf453fa490b76cf4f929714065fc90a519b7b97ab18914f9451b5a4b45241201" + result = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve_2(firmware), + testname=test_name) + + assert result == [( + 0, + PartialSignature( + pubkey=bytes.fromhex("024ba3b77d933de9fa3f9583348c40f3caaf2effad5b6e244ece8abbfcc7244f67"), + signature=bytes.fromhex( + "30440220720722b08489c2a50d10edea8e21880086c8e8f22889a16815e306daeea4665b02203fcf453fa490b76cf4f929714065fc90a519b7b97ab18914f9451b5a4b45241201" + ) + ) + )] + + +def test_sign_psbt_singlesig_wpkh_1to2_v1(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + # PSBT for a legacy 1-input 2-output spend (1 change address) + psbt = open_psbt_from_file(f"{tests_root}/psbt/singlesig/wpkh-1to2.psbt") + + wallet = WalletPolicy( + "", + "wpkh(@0)", + [ + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**" + ], + version=WalletType.WALLET_POLICY_V1 + ) + + result = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve_2(firmware), + testname=test_name) + + # expected sigs + # #0: + # "pubkey" : "03ee2c3d98eb1f93c0a1aa8e5a4009b70eb7b44ead15f1666f136b012ad58d3068", + # "signature" : "3045022100ab44f34dd7e87c9054591297a101e8500a0641d1d591878d0d23cf8096fa79e802205d12d1062d925e27b57bdcf994ecf332ad0a8e67b8fe407bab2101255da632aa01" + + assert result == [( + 0, + PartialSignature( + pubkey=bytes.fromhex("03ee2c3d98eb1f93c0a1aa8e5a4009b70eb7b44ead15f1666f136b012ad58d3068"), + signature=bytes.fromhex( + "3045022100ab44f34dd7e87c9054591297a101e8500a0641d1d591878d0d23cf8096fa79e802205d12d1062d925e27b57bdcf994ecf332ad0a8e67b8fe407bab2101255da632aa01" + ) + ) + )] + + +def test_sign_psbt_singlesig_wpkh_2to2_v1(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + # PSBT for a legacy 2-input 2-output spend (1 change address) + + psbt = open_psbt_from_file(f"{tests_root}/psbt/singlesig/wpkh-2to2.psbt") + + wallet = WalletPolicy( + "", + "wpkh(@0)", + [ + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**" + ], + version=WalletType.WALLET_POLICY_V1 + ) + + result = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) + + # expected sigs + # #0: + # "pubkey" : "03455ee7cedc97b0ba435b80066fc92c963a34c600317981d135330c4ee43ac7a3", + # "signature" : "304402206b3e877655f08c6e7b1b74d6d893a82cdf799f68a5ae7cecae63a71b0339e5ce022019b94aa3fb6635956e109f3d89c996b1bfbbaf3c619134b5a302badfaf52180e01" + # #1: + # "pubkey" : "0271b5b779ad870838587797bcf6f0c7aec5abe76a709d724f48d2e26cf874f0a0", + # "signature" : "3045022100e2e98e4f8c70274f10145c89a5d86e216d0376bdf9f42f829e4315ea67d79d210220743589fd4f55e540540a976a5af58acd610fa5e188a5096dfe7d36baf3afb94001" + + assert result == [( + 0, + PartialSignature( + pubkey=bytes.fromhex("03455ee7cedc97b0ba435b80066fc92c963a34c600317981d135330c4ee43ac7a3"), + signature=bytes.fromhex( + "304402206b3e877655f08c6e7b1b74d6d893a82cdf799f68a5ae7cecae63a71b0339e5ce022019b94aa3fb6635956e109f3d89c996b1bfbbaf3c619134b5a302badfaf52180e01" + ) + ) + ), ( + 1, + PartialSignature( + pubkey=bytes.fromhex("0271b5b779ad870838587797bcf6f0c7aec5abe76a709d724f48d2e26cf874f0a0"), + signature=bytes.fromhex( + "3045022100e2e98e4f8c70274f10145c89a5d86e216d0376bdf9f42f829e4315ea67d79d210220743589fd4f55e540540a976a5af58acd610fa5e188a5096dfe7d36baf3afb94001" + ) + ) + )] + + +def test_sign_psbt_multisig_wsh_v1(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + wallet = MultisigWallet( + name="Cold storage", + address_type=AddressType.WIT, + threshold=2, + keys_info=[ + f"[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF/**", + f"[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK/**", + ], + version=WalletType.WALLET_POLICY_V1 + ) + + wallet_hmac = bytes.fromhex( + "d6434852fb3caa7edbd1165084968f1691444b3cfc10cf1e431acbbc7f48451f" + ) + + psbt = open_psbt_from_file(f"{tests_root}/psbt/multisig/wsh-2of2.psbt") + + result = client.sign_psbt(psbt, wallet, wallet_hmac, navigator, + instructions=sign_psbt_instruction_approve_6(firmware), + testname=test_name) + + assert result == [( + 0, + PartialSignature( + pubkey=bytes.fromhex("036b16e8c1f979fa4cc0f05b6a300affff941459b6f20de77de55b0160ef8e4cac"), + signature=bytes.fromhex( + "304402206ab297c83ab66e573723892061d827c5ac0150e2044fed7ed34742fedbcfb26e0220319cdf4eaddff63fc308cdf53e225ea034024ef96de03fd0939b6deeea1e8bd301" + ) + ) + )] + + +def test_sign_psbt_taproot_1to2_v1(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + # PSBT for a p2tr 1-input 2-output spend (1 change address) + + psbt = open_psbt_from_file(f"{tests_root}/psbt/singlesig/tr-1to2-sighash-all.psbt") + + wallet = WalletPolicy( + "", + "tr(@0)", + [ + "[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U/**" + ], + version=WalletType.WALLET_POLICY_V1 + ) + + result = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) + assert len(result) == 1 + + # Unlike other transactions, Schnorr signatures are not deterministic (unless the randomness is removed) + # Therefore, for this testcase we hard-code the sighash (which was validated with Bitcoin Core 22.0 when the + # transaction was sent), and we verify the produced Schnorr signature with the reference bip340 implementation. + + # sighash verified with bitcoin-core + sighash0 = bytes.fromhex("7A999E5AD6F53EA6448E7026061D3B4523F957999C430A5A492DFACE74AE31B6") + + # get the (tweaked) pubkey from the scriptPubKey + pubkey0_psbt = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + + idx0, partial_sig0 = result[0] + assert idx0 == 0 + assert partial_sig0.pubkey == pubkey0_psbt + + # the sighash 0x01 is appended to the signature + assert len(partial_sig0.signature) == 64+1 + assert partial_sig0.signature[-1] == 0x01 + + assert bip0340.schnorr_verify(sighash0, pubkey0_psbt, partial_sig0.signature[:-1]) + + +def test_sign_psbt_singlesig_wpkh_4to3_v1(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + # PSBT for a segwit 4-input 3-output spend (1 change address) + # this test also checks that addresses, amounts and fees shown on screen are correct + + wallet = WalletPolicy( + "", + "wpkh(@0)", + [ + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**" + ], + version=WalletType.WALLET_POLICY_V1 + ) + + n_ins = 4 + n_outs = 3 + + in_amounts = [10000 + 10000 * i for i in range(n_ins)] + sum_in = sum(in_amounts) + out_amounts = [sum_in // n_outs - i for i in range(n_outs)] + + change_index = 1 + + psbt = txmaker.createPsbt( + wallet, + in_amounts, + out_amounts, + [i == change_index for i in range(n_outs)] + ) + + sum_out = sum(out_amounts) + + assert sum_out < sum_in + + result = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve_9(firmware), + testname=test_name) + + assert len(result) == n_ins + + +def test_sign_psbt_singlesig_large_amount_v1(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + # Test with a transaction with an extremely large amount + + wallet = WalletPolicy( + "", + "wpkh(@0)", + [ + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**" + ], + version=WalletType.WALLET_POLICY_V1 + ) + + in_amounts = [21_000_000*100_000_000] + out_amounts = [21_000_000*100_000_000 - 100_000] + + psbt = txmaker.createPsbt(wallet, in_amounts, out_amounts, [False]) + + sum_in = sum(in_amounts) + sum_out = sum(out_amounts) + + assert sum_out < sum_in + + result = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) + + assert len(result) == 1 + + +def test_sign_psbt_singlesig_wpkh_512to256_v1(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str, enable_slow_tests: bool): + # PSBT for a transaction with 512 inputs and 256 outputs (maximum currently supported in the app) + # Very slow test (esp. with DEBUG enabled), so disabled unless the --enableslowtests option is used + + if not enable_slow_tests: + pytest.skip() + + n_inputs = 512 + n_outputs = 256 + + wallet = WalletPolicy( + "", + "tr(@0)", + [ + "[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U/**" + ], + version=WalletType.WALLET_POLICY_V1 + ) + + psbt = txmaker.createPsbt( + wallet, + [10000 + 10000 * i for i in range(n_inputs)], + [999 + 99 * i for i in range(n_outputs)], + [i == 42 for i in range(n_outputs)] + ) + + result = client.sign_psbt(psbt, wallet, None, None) + + assert len(result) == n_inputs + + +def test_sign_psbt_fail_11_changes_v1(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + # PSBT for transaction with 11 change addresses; the limit is 10, so it must fail with NotSupportedError + # before any user interaction + + wallet = WalletPolicy( + "", + "wpkh(@0)", + [ + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**" + ], + version=WalletType.WALLET_POLICY_V1 + ) + + psbt = txmaker.createPsbt( + wallet, + [11 * 100_000_000 + 1234], + [100_000_000] * 11, + [True] * 11, + ) + + with pytest.raises(ExceptionRAPDU) as e: + client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_tap(firmware), + testname=test_name) + + assert DeviceException.exc.get(e.value.status) == NotSupportedError + assert len(e.value.data) == 0 + + +def test_sign_psbt_fail_wrong_non_witness_utxo_v1(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + # PSBT for transaction with the wrong non-witness utxo for an input. + # It must fail with IncorrectDataError before any user interaction. + + wallet = WalletPolicy( + "", + "wpkh(@0)", + [ + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**" + ], + version=WalletType.WALLET_POLICY_V1 + ) + + psbt = txmaker.createPsbt( + wallet, + [3 * 100_000_000], + [1 * 100_000_000, 2 * 100_000_000], + [False, True] + ) + + # Modify the non_witness_utxo so that the txid does not matches + wit = psbt.inputs[0].non_witness_utxo + wit.nLockTime = wit.nLockTime ^ 1 # change one bit of nLockTime arbitrarily to change the txid + wit.rehash() + psbt.inputs[0].non_witness_utxo = wit + + client._no_clone_psbt = True + with pytest.raises(ExceptionRAPDU) as e: + client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) + assert DeviceException.exc.get(e.value.status) == IncorrectDataError + assert len(e.value.data) == 0 + client._no_clone_psbt = False + + +def test_sign_psbt_with_opreturn_v1(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + wallet = WalletPolicy( + "", + "wpkh(@0)", + [ + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**" + ], + version=WalletType.WALLET_POLICY_V1 + ) + + psbt_b64 = "cHNidP8BAKMCAAAAAZ0gZDu3l28lrZWbtsuoIfI07zpsaXXMe6sMHHJn03LPAAAAAAD+////AgAAAAAAAAAASGpGVGhlIFRpbWVzIDAzL0phbi8yMDA5IENoYW5jZWxsb3Igb24gYnJpbmsgb2Ygc2Vjb25kIGJhaWxvdXQgZm9yIGJhbmtzLsGVmAAAAAAAFgAUK5M/aeXrJEofBL7Uno7J5OyTvJ8AAAAAAAEAcQIAAAABnpp88I3RXEU5b28rI3GGAXaWkk+w1sEqWDXFXdacKg8AAAAAAP7///8CgJaYAAAAAAAWABQTR+gqA3tduzjPjEdZ8kKx9cfgmvNabSkBAAAAFgAUCA6eZPSQK9gnq8ngOSaQ0ZdPeIVBAAAAAQEfgJaYAAAAAAAWABQTR+gqA3tduzjPjEdZ8kKx9cfgmiIGAny3XTSwBcTrn2K78sRX12OOgT51fvzsj6aGd9lQtjZiGPWswv1UAACAAQAAgAAAAIAAAAAAAAAAAAAAIgIDGZuJ2DVvV+HOOAoSBc8oYG2+qJhVsRw9/s+4oaUzVokY9azC/VQAAIABAACAAAAAgAEAAAABAAAAAA==" + psbt = PSBT() + psbt.deserialize(psbt_b64) + + hww_sigs = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve_2(firmware), + testname=test_name) + + assert len(hww_sigs) == 1 + + +def test_sign_psbt_with_segwit_v16_v1(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + # This psbt contains an output with future psbt version 16 (corresponding to address + # tb1sqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq4hu3px). + # The app should accept it nonetheless. + + psbt_b64 = "cHNidP8BAH0CAAAAAZvg4s1Yxz9DddwBeI+qqU7hcldqGSgWPXuZZReEFYvKAAAAAAD+////AqdTiQAAAAAAFgAUK5M/aeXrJEofBL7Uno7J5OyTvJ9AQg8AAAAAACJgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAHECAAAAAYWOSCXXmA0ztidPI5A6FskW99o7nWNVeFP7rXND5B9aAAAAAAD+////AoCWmAAAAAAAFgAUE0foKgN7Xbs4z4xHWfJCsfXH4JrzWm0pAQAAABYAFF7XSHCIZoptcIrXIWce1tKqp11EaQAAAAEBH4CWmAAAAAAAFgAUE0foKgN7Xbs4z4xHWfJCsfXH4JoiBgJ8t100sAXE659iu/LEV9djjoE+dX787I+mhnfZULY2Yhj1rML9VAAAgAEAAIAAAACAAAAAAAAAAAAAIgIDGZuJ2DVvV+HOOAoSBc8oYG2+qJhVsRw9/s+4oaUzVokY9azC/VQAAIABAACAAAAAgAEAAAABAAAAAAA=" + psbt = PSBT() + psbt.deserialize(psbt_b64) + + wallet = WalletPolicy( + "", + "wpkh(@0)", + [ + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**" + ], + version=WalletType.WALLET_POLICY_V1 + ) + + hww_sigs = client.sign_psbt(psbt, wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) + + assert len(hww_sigs) == 1 diff --git a/tests/test_sign_psbt_with_sighash_types.py b/tests/test_sign_psbt_with_sighash_types.py new file mode 100644 index 000000000..abbcd2beb --- /dev/null +++ b/tests/test_sign_psbt_with_sighash_types.py @@ -0,0 +1,614 @@ +import pytest +from pathlib import Path +from ledger_bitcoin import WalletPolicy +from ledger_bitcoin.exception.errors import NotSupportedError +from ledger_bitcoin.exception.device_exception import DeviceException +from ledger_bitcoin.psbt import PSBT +from test_utils import bip0340 +from ragger.navigator import Navigator, NavInsID +from ragger.error import ExceptionRAPDU +from ragger.firmware import Firmware +from ragger_bitcoin import RaggerClient + +from .instructions import sign_psbt_instruction_approve, sign_psbt_instruction_approve_2, sign_psbt_instruction_approve_4, sign_psbt_instruction_approve_10 +tests_root: Path = Path(__file__).parent + +tr_wallet = WalletPolicy( + "", + "tr(@0/**)", + [ + "[f5acc2fd/86'/1'/0']tpubDDKYE6BREvDsSWMazgHoyQWiJwYaDDYPbCFjYxN3HFXJP5fokeiK4hwK5tTLBNEDBwrDXn8cQ4v9b2xdW62Xr5yxoQdMu1v6c7UDXYVH27U" + ], +) + +wpkh_wallet = WalletPolicy( + "", + "wpkh(@0/**)", + [ + "[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P" + ], +) + + +# Unlike other transactions, Schnorr signatures are not deterministic (unless the randomness is removed) +# Therefore, for this testcase we hard-code the sighash, and we verify the produced Schnorr signature with the reference bip340 implementation. +sighash_bitcoin_core_all_0 = bytes.fromhex("2221AA462110C77A8E2DD34C3681BAA9BFFF6553B4C609EC7E3D8FF9B1D18D69") +sighash_bitcoin_core_all_1 = bytes.fromhex("D47D3FA22B4F6C50521C49E1A42E8CB10689540A227491A8FC5AD0A6E413063E") +sighash_bitcoin_core_none_0 = bytes.fromhex("965976D58A387369D970F0B6560B144E1B721D41E04675592C41AC35D30D2A56") +sighash_bitcoin_core_none_1 = bytes.fromhex("67E85534A12E4054F4AFAA434D7A7C38123DA6909DF7E45DDB9945F7B8D832D0") +sighash_bitcoin_core_single_0 = bytes.fromhex("F9B834D7FE272F9EACE2FC5F7A97468B024438EF5D55338FC243D5273534A6B5") +sighash_bitcoin_core_single_1 = bytes.fromhex("9A4DDC13C6D0EE10A41D33C6595C63F51AF4C9314387685304F515F790260F78") +sighash_bitcoin_core_all_anyone_0 = bytes.fromhex("09A6559AF84C48C8D5A7984C5A72E53ED88D160AABAE99C18F00E78A55E7EDC7") +sighash_bitcoin_core_all_anyone_1 = bytes.fromhex("9B25C319E12F4755D8A43F3295B8C61B861FB23D7EBF7F9A25E6E8CE3242F939") +sighash_bitcoin_core_none_anyone_0 = bytes.fromhex("8FCEFFAE04D320E05DE04034069FE6AF8C7CBCC93CDE3F187AB0DEC202692735") +sighash_bitcoin_core_none_anyone_1 = bytes.fromhex("A06D37C1C8EEE7EA145F9D8A98CBE79F6BB1691B37F8F26F49F8318F9443B766") +sighash_bitcoin_core_single_anyone_0 = bytes.fromhex("971886B247797E0A616489B449B5E78AE8EC63E54B55727AF626B964DD8F329D") +sighash_bitcoin_core_single_anyone_1 = bytes.fromhex("6B130F2BE5467A8BC36227B8C2A082B46CA24F91A6A6A54AA5EFA4901BE5ADBB") + + +def open_psbt_from_file(filename: str) -> PSBT: + raw_psbt_base64 = open(filename, "r").read() + + psbt = PSBT() + psbt.deserialize(raw_psbt_base64) + return psbt + + +def test_sighash_all_sign_psbt(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-all-sign.psbt") + + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) + + # get the (tweaked) pubkey from the scriptPubKey + pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + pubkey1 = psbt.inputs[1].witness_utxo.scriptPubKey[2:] + + assert len(result) == 2 + + _, partial_sig0 = result[0] + assert len(partial_sig0.signature) == 64+1 + assert partial_sig0.signature[-1] == 0x01 + + _, partial_sig1 = result[1] + assert len(partial_sig1.signature) == 64+1 + assert partial_sig1.signature[-1] == 0x01 + + assert bip0340.schnorr_verify(sighash_bitcoin_core_all_0, pubkey0, partial_sig0.signature[:-1]) + assert bip0340.schnorr_verify(sighash_bitcoin_core_all_1, pubkey1, partial_sig1.signature[:-1]) + + +def test_sighash_all_input_modified(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-all-sign.psbt") + + psbt.tx.vin[0].nSequence = psbt.tx.vin[0].nSequence - 1 + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) + + # get the (tweaked) pubkey from the scriptPubKey + pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + pubkey1 = psbt.inputs[1].witness_utxo.scriptPubKey[2:] + + _, partial_sig0 = result[0] + _, partial_sig1 = result[1] + + assert bip0340.schnorr_verify(sighash_bitcoin_core_all_0, pubkey0, partial_sig0.signature[:-1]) == 0 + assert bip0340.schnorr_verify(sighash_bitcoin_core_all_1, pubkey1, partial_sig1.signature[:-1]) == 0 + + +def test_sighash_all_output_modified(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-all-sign.psbt") + + psbt.tx.vout[0].nValue = psbt.tx.vout[0].nValue - 1 + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) + + # get the (tweaked) pubkey from the scriptPubKey + pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + pubkey1 = psbt.inputs[1].witness_utxo.scriptPubKey[2:] + + _, partial_sig0 = result[0] + _, partial_sig1 = result[1] + + assert bip0340.schnorr_verify(sighash_bitcoin_core_all_0, pubkey0, partial_sig0.signature[:-1]) == 0 + assert bip0340.schnorr_verify(sighash_bitcoin_core_all_1, pubkey1, partial_sig1.signature[:-1]) == 0 + + +def test_sighash_none_sign_psbt(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-none-sign.psbt") + + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve_4(firmware), + testname=test_name) + + # get the (tweaked) pubkey from the scriptPubKey + pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + pubkey1 = psbt.inputs[1].witness_utxo.scriptPubKey[2:] + + assert len(result) == 2 + + _, partial_sig0 = result[0] + _, partial_sig1 = result[1] + + assert len(partial_sig0.signature) == 64+1 + assert len(partial_sig1.signature) == 64+1 + assert partial_sig0.signature[-1] == 0x02 + assert partial_sig1.signature[-1] == 0x02 + + assert bip0340.schnorr_verify(sighash_bitcoin_core_none_0, pubkey0, partial_sig0.signature[:-1]) + assert bip0340.schnorr_verify(sighash_bitcoin_core_none_1, pubkey1, partial_sig1.signature[:-1]) + + +def test_sighash_none_input_modified(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-none-sign.psbt") + psbt.tx.vin[0].nSequence = psbt.tx.vin[0].nSequence - 1 + + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve_4(firmware), + testname=test_name) + assert len(result) == 2 + + # get the (tweaked) pubkey from the scriptPubKey + pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + pubkey1 = psbt.inputs[1].witness_utxo.scriptPubKey[2:] + + _, partial_sig0 = result[0] + _, partial_sig1 = result[1] + + assert bip0340.schnorr_verify(sighash_bitcoin_core_none_0, pubkey0, partial_sig0.signature[:-1]) == 0 + assert bip0340.schnorr_verify(sighash_bitcoin_core_none_1, pubkey1, partial_sig1.signature[:-1]) == 0 + + +def test_sighash_none_output_modified(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-none-sign.psbt") + psbt.tx.vout[0].nValue = psbt.tx.vout[0].nValue - 1 + + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve_4(firmware), + testname=test_name) + assert len(result) == 2 + + # get the (tweaked) pubkey from the scriptPubKey + pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + pubkey1 = psbt.inputs[1].witness_utxo.scriptPubKey[2:] + + _, partial_sig0 = result[0] + _, partial_sig1 = result[1] + + assert bip0340.schnorr_verify(sighash_bitcoin_core_none_0, pubkey0, partial_sig0.signature[:-1]) + assert bip0340.schnorr_verify(sighash_bitcoin_core_none_1, pubkey1, partial_sig1.signature[:-1]) + + +def test_sighash_single_sign_psbt(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-single-sign.psbt") + + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve_4(firmware), + testname=test_name) + + assert len(result) == 2 + + # get the (tweaked) pubkey from the scriptPubKey + pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + pubkey1 = psbt.inputs[1].witness_utxo.scriptPubKey[2:] + + _, partial_sig0 = result[0] + _, partial_sig1 = result[1] + + assert len(partial_sig0.signature) == 64+1 + assert len(partial_sig1.signature) == 64+1 + assert partial_sig0.signature[-1] == 0x03 + assert partial_sig1.signature[-1] == 0x03 + + assert bip0340.schnorr_verify(sighash_bitcoin_core_single_0, pubkey0, partial_sig0.signature[:-1]) + assert bip0340.schnorr_verify(sighash_bitcoin_core_single_1, pubkey1, partial_sig1.signature[:-1]) + + +def test_sighash_single_input_modified(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-single-sign.psbt") + psbt.tx.vin[1].nSequence = psbt.tx.vin[1].nSequence - 1 + + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve_4(firmware), + testname=test_name) + + # get the (tweaked) pubkey from the scriptPubKey + pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + pubkey1 = psbt.inputs[1].witness_utxo.scriptPubKey[2:] + + assert len(result) == 2 + + _, partial_sig0 = result[0] + _, partial_sig1 = result[1] + + assert bip0340.schnorr_verify(sighash_bitcoin_core_single_0, pubkey0, partial_sig0.signature[:-1]) == 0 + assert bip0340.schnorr_verify(sighash_bitcoin_core_single_1, pubkey1, partial_sig1.signature[:-1]) == 0 + + +def test_sighash_single_output_same_index_modified(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-single-sign.psbt") + psbt.tx.vout[0].nValue = psbt.tx.vout[0].nValue - 1 + + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve_4(firmware), + testname=test_name) + + # get the (tweaked) pubkey from the scriptPubKey + pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + pubkey1 = psbt.inputs[1].witness_utxo.scriptPubKey[2:] + + assert len(result) == 2 + + _, partial_sig0 = result[0] + _, partial_sig1 = result[1] + + assert bip0340.schnorr_verify(sighash_bitcoin_core_single_0, pubkey0, partial_sig0.signature[:-1]) == 0 + assert bip0340.schnorr_verify(sighash_bitcoin_core_single_1, pubkey1, partial_sig1.signature[:-1]) + + +def test_sighash_single_output_different_index_modified(navigator: Navigator, firmware: Firmware, + client: RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-single-sign.psbt") + psbt.tx.vout[1].nValue = psbt.tx.vout[1].nValue - 1 + + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve_4(firmware), + testname=test_name) + + # get the (tweaked) pubkey from the scriptPubKey + pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + pubkey1 = psbt.inputs[1].witness_utxo.scriptPubKey[2:] + + assert len(result) == 2 + + _, partial_sig0 = result[0] + _, partial_sig1 = result[1] + + assert bip0340.schnorr_verify(sighash_bitcoin_core_single_0, pubkey0, partial_sig0.signature[:-1]) + assert bip0340.schnorr_verify(sighash_bitcoin_core_single_1, pubkey1, partial_sig1.signature[:-1]) == 0 + + +def test_sighash_single_3_ins_2_out(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-single-3-ins-2-outs.psbt") + + with pytest.raises(ExceptionRAPDU) as e: + client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve_4(firmware), + testname=test_name) + assert DeviceException.exc.get(e.value.status) == NotSupportedError + assert len(e.value.data) == 0 + + +def test_sighash_all_anyone_sign(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-all-anyone-can-pay-sign.psbt") + + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve_4(firmware), + testname=test_name) + + assert len(result) == 2 + + # get the (tweaked) pubkey from the scriptPubKey + pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + pubkey1 = psbt.inputs[1].witness_utxo.scriptPubKey[2:] + + _, partial_sig0 = result[0] + _, partial_sig1 = result[1] + + assert len(partial_sig0.signature) == 64+1 + assert len(partial_sig1.signature) == 64+1 + assert partial_sig0.signature[-1] == 0x81 + assert partial_sig1.signature[-1] == 0x81 + + assert bip0340.schnorr_verify(sighash_bitcoin_core_all_anyone_0, pubkey0, partial_sig0.signature[:-1]) + assert bip0340.schnorr_verify(sighash_bitcoin_core_all_anyone_1, pubkey1, partial_sig1.signature[:-1]) + + +def test_sighash_all_anyone_input_changed(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-all-anyone-can-pay-sign.psbt") + psbt.tx.vin[0].nSequence = psbt.tx.vin[0].nSequence - 1 + + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve_4(firmware), + testname=test_name) + + assert len(result) == 2 + + # get the (tweaked) pubkey from the scriptPubKey + pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + pubkey1 = psbt.inputs[1].witness_utxo.scriptPubKey[2:] + + _, partial_sig0 = result[0] + _, partial_sig1 = result[1] + + assert bip0340.schnorr_verify(sighash_bitcoin_core_all_anyone_0, pubkey0, partial_sig0.signature[:-1]) == 0 + assert bip0340.schnorr_verify(sighash_bitcoin_core_all_anyone_1, pubkey1, partial_sig1.signature[:-1]) + + +def test_sighash_all_anyone_output_changed(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-all-anyone-can-pay-sign.psbt") + psbt.tx.vout[0].nValue = psbt.tx.vout[0].nValue - 1 + + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve_4(firmware), + testname=test_name) + + assert len(result) == 2 + + # get the (tweaked) pubkey from the scriptPubKey + pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + pubkey1 = psbt.inputs[1].witness_utxo.scriptPubKey[2:] + + _, partial_sig0 = result[0] + _, partial_sig1 = result[1] + + assert bip0340.schnorr_verify(sighash_bitcoin_core_all_anyone_0, pubkey0, partial_sig0.signature[:-1]) == 0 + assert bip0340.schnorr_verify(sighash_bitcoin_core_all_anyone_1, pubkey1, partial_sig1.signature[:-1]) == 0 + + +def test_sighash_none_anyone_sign(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-none-anyone-can-pay-sign.psbt") + + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve_4(firmware), + testname=test_name) + + assert len(result) == 2 + + # get the (tweaked) pubkey from the scriptPubKey + pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + pubkey1 = psbt.inputs[1].witness_utxo.scriptPubKey[2:] + + _, partial_sig0 = result[0] + _, partial_sig1 = result[1] + + assert len(partial_sig0.signature) == 64+1 + assert len(partial_sig1.signature) == 64+1 + assert partial_sig0.signature[-1] == 0x82 + assert partial_sig1.signature[-1] == 0x82 + + assert bip0340.schnorr_verify(sighash_bitcoin_core_none_anyone_0, pubkey0, partial_sig0.signature[:-1]) + assert bip0340.schnorr_verify(sighash_bitcoin_core_none_anyone_1, pubkey1, partial_sig1.signature[:-1]) + + +def test_sighash_none_anyone_input_changed(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-none-anyone-can-pay-sign.psbt") + psbt.tx.vin[0].nSequence = psbt.tx.vin[0].nSequence - 1 + + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve_4(firmware), + testname=test_name) + + assert len(result) == 2 + + # get the (tweaked) pubkey from the scriptPubKey + pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + pubkey1 = psbt.inputs[1].witness_utxo.scriptPubKey[2:] + + _, partial_sig0 = result[0] + _, partial_sig1 = result[1] + + assert bip0340.schnorr_verify(sighash_bitcoin_core_none_anyone_0, pubkey0, partial_sig0.signature[:-1]) == 0 + assert bip0340.schnorr_verify(sighash_bitcoin_core_none_anyone_1, pubkey1, partial_sig1.signature[:-1]) + + +def test_sighash_none_anyone_output_changed(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-none-anyone-can-pay-sign.psbt") + psbt.tx.vout[0].nValue = psbt.tx.vout[0].nValue - 1 + + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve_4(firmware), + testname=test_name) + + assert len(result) == 2 + + # get the (tweaked) pubkey from the scriptPubKey + pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + pubkey1 = psbt.inputs[1].witness_utxo.scriptPubKey[2:] + + _, partial_sig0 = result[0] + _, partial_sig1 = result[1] + + assert bip0340.schnorr_verify(sighash_bitcoin_core_none_anyone_0, pubkey0, partial_sig0.signature[:-1]) + assert bip0340.schnorr_verify(sighash_bitcoin_core_none_anyone_1, pubkey1, partial_sig1.signature[:-1]) + + +def test_sighash_single_anyone_sign(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-single-anyone-can-pay-sign.psbt") + + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve_4(firmware), + testname=test_name) + + assert len(result) == 2 + + # get the (tweaked) pubkey from the scriptPubKey + pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + pubkey1 = psbt.inputs[1].witness_utxo.scriptPubKey[2:] + + _, partial_sig0 = result[0] + _, partial_sig1 = result[1] + + assert len(partial_sig0.signature) == 64+1 + assert len(partial_sig1.signature) == 64+1 + assert partial_sig0.signature[-1] == 0x83 + assert partial_sig1.signature[-1] == 0x83 + + assert bip0340.schnorr_verify(sighash_bitcoin_core_single_anyone_0, pubkey0, partial_sig0.signature[:-1]) + assert bip0340.schnorr_verify(sighash_bitcoin_core_single_anyone_1, pubkey1, partial_sig1.signature[:-1]) + + +def test_sighash_single_anyone_input_changed(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-single-anyone-can-pay-sign.psbt") + psbt.tx.vin[0].nSequence = psbt.tx.vin[0].nSequence - 1 + + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve_4(firmware), + testname=test_name) + + assert len(result) == 2 + + # get the (tweaked) pubkey from the scriptPubKey + pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + pubkey1 = psbt.inputs[1].witness_utxo.scriptPubKey[2:] + + _, partial_sig0 = result[0] + _, partial_sig1 = result[1] + + assert bip0340.schnorr_verify(sighash_bitcoin_core_single_anyone_0, pubkey0, partial_sig0.signature[:-1]) == 0 + assert bip0340.schnorr_verify(sighash_bitcoin_core_single_anyone_1, pubkey1, partial_sig1.signature[:-1]) + + +def test_sighash_single_anyone_output_changed(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-single-anyone-can-pay-sign.psbt") + psbt.tx.vout[0].nValue = psbt.tx.vout[0].nValue - 1 + + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve_4(firmware), + testname=test_name) + + assert len(result) == 2 + + # get the (tweaked) pubkey from the scriptPubKey + pubkey0 = psbt.inputs[0].witness_utxo.scriptPubKey[2:] + pubkey1 = psbt.inputs[1].witness_utxo.scriptPubKey[2:] + + _, partial_sig0 = result[0] + _, partial_sig1 = result[1] + + assert bip0340.schnorr_verify(sighash_bitcoin_core_single_anyone_0, pubkey0, partial_sig0.signature[:-1]) == 0 + assert bip0340.schnorr_verify(sighash_bitcoin_core_single_anyone_1, pubkey1, partial_sig1.signature[:-1]) + + +def test_sighash_unsupported(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-all-sign.psbt") + + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) + + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-unsupported.psbt") + + with pytest.raises(ExceptionRAPDU) as e: + client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) + assert DeviceException.exc.get(e.value.status) == NotSupportedError + assert len(e.value.data) == 0 + + +def test_sighash_unsupported_for_segwitv0(navigator: Navigator, firmware: Firmware, client: + RaggerClient, test_name: str): + psbt = open_psbt_from_file(f"{tests_root}/psbt/sighash/sighash-all-sign.psbt") + + result = client.sign_psbt(psbt, tr_wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) + + psbt = open_psbt_from_file(f"{tests_root}/psbt/singlesig/wpkh-1to2.psbt") + + psbt.inputs[0].sighash = 0 + + with pytest.raises(ExceptionRAPDU) as e: + client.sign_psbt(psbt, wpkh_wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) + assert DeviceException.exc.get(e.value.status) == NotSupportedError + assert len(e.value.data) == 0 + + psbt.inputs[0].sighash = 0x80 + + with pytest.raises(ExceptionRAPDU) as e: + client.sign_psbt(psbt, wpkh_wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) + assert DeviceException.exc.get(e.value.status) == NotSupportedError + assert len(e.value.data) == 0 + + psbt.inputs[0].sighash = 0x84 + + with pytest.raises(ExceptionRAPDU) as e: + client.sign_psbt(psbt, wpkh_wallet, None, navigator, + instructions=sign_psbt_instruction_approve(firmware), + testname=test_name) + assert DeviceException.exc.get(e.value.status) == NotSupportedError + assert len(e.value.data) == 0 + + +def test_sighash_segwitv0_sighash1(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + expected_sig = b"0E\x02!\x00\xabD\xf3M\xd7\xe8|\x90TY\x12\x97\xa1\x01\xe8P\n\x06A\xd1\xd5\x91\x87\x8d\r#\xcf\x80\x96\xfay\xe8\x02 ]\x12\xd1\x06-\x92^'\xb5{\xdc\xf9\x94\xec\xf32\xad\n\x8eg\xb8\xfe@{\xab!\x01%]\xa62\xaa\x01" + + psbt = open_psbt_from_file(f"{tests_root}/psbt/singlesig/wpkh-1to2.psbt") + psbt.inputs[0].sighash = 1 + result = client.sign_psbt(psbt, wpkh_wallet, None, navigator, + instructions=sign_psbt_instruction_approve_2(firmware), + testname=test_name) + assert result[0][1].signature == expected_sig + + +def test_sighash_segwitv0_sighash2(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): + expected_sig = b'0D\x02 o\x86>\xd5\x8b\xb5\xa5\xa2KZ\xcez\xb2\x92\xd0\xce\x04!L_\x8f9\xeb#m3\x9e\xb4\x8d\xc6sK\x02 p\x8d\x95\x0b4B\x02^\xf1nB\xd2\xea\x84b\x14\xc7\x00\x88"\xed\x19o=6.1.1,<7.0.0 +pytest-timeout>=2.1.0,<3.0.0 ledgercomm>=1.1.0,<1.2.0 ecdsa>=0.16.1,<0.17.0 typing-extensions>=3.7,<4.0 -embit>=0.4.10,<0.5.0 +embit>=0.7.0,<0.8.0 mnemonic==0.20 -bip32>=2.1,<3.0 \ No newline at end of file +bip32>=3.4,<4.0 \ No newline at end of file diff --git a/tests_mainnet/test_bip86.py b/tests_mainnet/test_bip86.py index ee19e5781..8bedf1a66 100644 --- a/tests_mainnet/test_bip86.py +++ b/tests_mainnet/test_bip86.py @@ -1,4 +1,4 @@ -from bitcoin_client.ledger_bitcoin import Client, PolicyMapWallet +from bitcoin_client.ledger_bitcoin import Client, WalletPolicy from test_utils import SpeculosGlobals, mnemonic @@ -13,11 +13,11 @@ def test_bip86(client: Client, speculos_globals: SpeculosGlobals): # test for a native taproot wallet (bech32m addresses, per BIP-0086) - wallet = PolicyMapWallet( + wallet = WalletPolicy( name="", - policy_map="tr(@0)", + descriptor_template="tr(@0/**)", keys_info=[ - f"[{fpr}/86'/0'/0']xpub6BgBgsespWvERF3LHQu6CnqdvfEvtMcQjYrcRzx53QJjSxarj2afYWcLteoGVky7D3UKDP9QyrLprQ3VCECoY49yfdDEHGCtMMj92pReUsQ/**", + f"[{fpr}/86'/0'/0']xpub6BgBgsespWvERF3LHQu6CnqdvfEvtMcQjYrcRzx53QJjSxarj2afYWcLteoGVky7D3UKDP9QyrLprQ3VCECoY49yfdDEHGCtMMj92pReUsQ", ], ) diff --git a/tests_mainnet/test_dashboard.py b/tests_mainnet/test_dashboard.py index a6f056a41..39e5afb7a 100644 --- a/tests_mainnet/test_dashboard.py +++ b/tests_mainnet/test_dashboard.py @@ -3,12 +3,15 @@ from speculos.client import SpeculosClient -def test_dashboard(comm: SpeculosClient, is_speculos: bool, app_version: str): +def test_dashboard(comm: SpeculosClient, is_speculos: bool, app_version: str, model: str): # Tests that the text shown in the dashboard screens are the expected ones if not is_speculos: pytest.skip("Requires speculos") + if model == "stax": + pytest.skip("No dashboard test for stax") + comm.press_and_release("right") comm.wait_for_text_event("Version") comm.wait_for_text_event(app_version) diff --git a/unit-tests/CMakeLists.txt b/unit-tests/CMakeLists.txt index 0f6967191..5dc70db86 100644 --- a/unit-tests/CMakeLists.txt +++ b/unit-tests/CMakeLists.txt @@ -21,18 +21,17 @@ if(NOT WIN32) endif() if(${CMAKE_VERSION} VERSION_LESS 3.10) - cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) + cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) endif() # project information project(unit_tests - VERSION 0.1 - DESCRIPTION "Unit tests for Ledger Nano application" - LANGUAGES C) - + VERSION 0.1 + DESCRIPTION "Unit tests for Ledger Nano application" + LANGUAGES C) # guard against bad build-type strings -if (NOT CMAKE_BUILD_TYPE) +if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Debug") endif() @@ -63,7 +62,7 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) message(FATAL_ERROR "In-source builds not allowed. Please make a new directory (called a build directory) and run CMake from there. You may need to remove CMakeCache.txt. ") endif() -add_compile_definitions(TEST DEBUG=0 SKIP_FOR_CMOCKA) +add_compile_definitions(TEST DEBUG=0 SKIP_FOR_CMOCKA PRINTF=printf) if (NOT DEFINED HAVE_LIQUID OR HAVE_LIQUID GREATER_EQUAL 1) message("${BoldCyan}** LIQUID SUPPORT ENABLED **${ColourReset}") @@ -79,6 +78,7 @@ if (CMAKE_C_COMPILER_ID STREQUAL "AppleClang") include_directories(/usr/local/include) link_directories(/usr/local/lib) endif() +include_directories(libs) add_executable(test_apdu_parser test_apdu_parser.c) add_executable(test_base58 test_base58.c) @@ -91,8 +91,13 @@ add_executable(test_parser test_parser.c) add_executable(test_script test_script.c) add_executable(test_wallet test_wallet.c) add_executable(test_write test_write.c) -add_executable(test_crypto test_crypto.c) +# add_executable(test_crypto test_crypto.c) add_executable(test_wif test_wif.c) + +# Mock libraries +add_library(crypto_mocks SHARED libs/crypto_mocks.c) +add_library(sha256 SHARED libs/sha-256.c) + if (HAVE_LIQUID) add_executable(test_liquid_addr test_liquid_addr.c) add_executable(test_liquid test_liquid.c) @@ -101,38 +106,43 @@ if (HAVE_LIQUID) add_executable(test_asset_metadata test_asset_metadata.c) endif() -add_library(apdu_parser ${LIB_TYPE} ../src/boilerplate/apdu_parser.c) -add_library(base58 ${LIB_TYPE} ../src/common/base58.c) -add_library(bip32 ${LIB_TYPE} ../src/common/bip32.c) -add_library(buffer ${LIB_TYPE} ../src/common/buffer.c) -add_library(display_utils ${LIB_TYPE} ../src/ui/display_utils.c) -add_library(format ${LIB_TYPE} ../src/common/format.c) -add_library(parser ${LIB_TYPE} ../src/common/parser.c) -add_library(read ${LIB_TYPE} ../src/common/read.c) -add_library(script ${LIB_TYPE} ../src/common/script.c) -add_library(varint ${LIB_TYPE} ../src/common/varint.c) -add_library(wallet ${LIB_TYPE} ../src/common/wallet.c) -add_library(write ${LIB_TYPE} ../src/common/write.c) -add_library(crypto ${LIB_TYPE} ../src/crypto.c) +# App's libraries +add_library(apdu_parser SHARED ../src/boilerplate/apdu_parser.c) +add_library(base58 SHARED ../src/common/base58.c) +add_library(bip32 SHARED ../src/common/bip32.c) +add_library(buffer SHARED ../src/common/buffer.c) +add_library(display_utils SHARED ../src/ui/display_utils.c) +add_library(format SHARED ../src/common/format.c) +add_library(parser SHARED ../src/common/parser.c) +add_library(read SHARED ../src/common/read.c) +add_library(script SHARED ../src/common/script.c) +add_library(varint SHARED ../src/common/varint.c) +add_library(wallet SHARED ../src/common/wallet.c) +add_library(write SHARED ../src/common/write.c) + +# add_library(crypto SHARED ../src/crypto.c) add_library(wif ${LIB_TYPE} ../src/common/wif.c) add_library(mock_crypto ${LIB_TYPE} mock_crypto.c lib/sha-2/sha-256.c) if (HAVE_LIQUID) add_library(liquid ${LIB_TYPE} ../src/liquid/liquid.c ../src/liquid/liquid_addr.c ../src/liquid/blech32.c ../src/liquid/liquid_assets.c ../src/liquid/contract_parser.c ../src/liquid/liquid_asset_metadata.c) endif() -target_link_libraries(test_apdu_parser PUBLIC cmocka ${GCOV_LIB} apdu_parser) -target_link_libraries(test_base58 PUBLIC cmocka ${GCOV_LIB} base58 mock_crypto) -target_link_libraries(test_bip32 PUBLIC cmocka ${GCOV_LIB} bip32 read) -target_link_libraries(test_bitvector PUBLIC cmocka ${GCOV_LIB}) -target_link_libraries(test_buffer PUBLIC cmocka ${GCOV_LIB} buffer varint read write bip32) -target_link_libraries(test_display_utils PUBLIC cmocka ${GCOV_LIB} display_utils) -target_link_libraries(test_format PUBLIC cmocka ${GCOV_LIB} format) -target_link_libraries(test_parser PUBLIC cmocka ${GCOV_LIB} parser buffer varint read write bip32) -target_link_libraries(test_script PUBLIC cmocka ${GCOV_LIB} script buffer varint read write bip32) -target_link_libraries(test_wallet PUBLIC cmocka ${GCOV_LIB} wallet buffer varint read write bip32 wif base58 crypto mock_crypto) -target_link_libraries(test_write PUBLIC cmocka ${GCOV_LIB} write) -target_link_libraries(test_crypto PUBLIC cmocka ${GCOV_LIB} crypto base58 read mock_crypto) -target_link_libraries(test_wif PUBLIC cmocka ${GCOV_LIB} wif base58 read mock_crypto) +# Mock libraries +target_link_libraries(crypto_mocks PUBLIC sha256) + +# App's libraries +target_link_libraries(test_apdu_parser PUBLIC cmocka gcov apdu_parser) +target_link_libraries(test_base58 PUBLIC cmocka gcov base58) +target_link_libraries(test_bip32 PUBLIC cmocka gcov bip32 read) +target_link_libraries(test_bitvector PUBLIC cmocka gcov) +target_link_libraries(test_buffer PUBLIC cmocka gcov buffer varint read write bip32) +target_link_libraries(test_display_utils PUBLIC cmocka gcov display_utils) +target_link_libraries(test_format PUBLIC cmocka gcov format) +target_link_libraries(test_parser PUBLIC cmocka gcov parser buffer varint read write bip32) +target_link_libraries(test_script PUBLIC cmocka gcov script buffer varint read write bip32) +target_link_libraries(test_wallet PUBLIC cmocka gcov wallet script buffer varint read write bip32 base58 crypto_mocks) +target_link_libraries(test_write PUBLIC cmocka gcov write) + if (HAVE_LIQUID) target_link_libraries(test_liquid_addr PUBLIC cmocka ${GCOV_LIB} liquid buffer varint bip32 base58 read write mock_crypto) target_link_libraries(test_liquid PUBLIC cmocka ${GCOV_LIB} liquid wif wallet script buffer varint bip32 base58 read write crypto mock_crypto) @@ -141,6 +151,7 @@ if (HAVE_LIQUID) target_link_libraries(test_asset_metadata PUBLIC cmocka ${GCOV_LIB} liquid buffer varint read write bip32 mock_crypto) endif() +# target_link_libraries(test_crypto PUBLIC cmocka gcov crypto) add_test(test_apdu_parser test_apdu_parser) add_test(test_base58 test_base58) add_test(test_bip32 test_bip32) @@ -152,7 +163,8 @@ add_test(test_parser test_parser) add_test(test_script test_script) add_test(test_wallet test_wallet) add_test(test_write test_write) -add_test(test_crypto test_crypto) +# TODO: restore tests for crypto.c +# add_test(test_crypto test_crypto) add_test(test_wif test_wif) if (HAVE_LIQUID) add_test(test_liquid_addr test_liquid_addr) diff --git a/unit-tests/libs/crypto_mocks.c b/unit-tests/libs/crypto_mocks.c new file mode 100644 index 000000000..79d09d066 --- /dev/null +++ b/unit-tests/libs/crypto_mocks.c @@ -0,0 +1,10 @@ +#include +#include "crypto_mocks.h" +#include "sha-256.h" + +void crypto_get_checksum(const uint8_t *in, uint16_t in_len, uint8_t out[static 4]) { + uint8_t buffer[32]; + calc_sha_256(buffer, in, in_len); + calc_sha_256(buffer, buffer, 32); + memmove(out, buffer, 4); +} diff --git a/unit-tests/libs/crypto_mocks.h b/unit-tests/libs/crypto_mocks.h new file mode 100644 index 000000000..436076ea5 --- /dev/null +++ b/unit-tests/libs/crypto_mocks.h @@ -0,0 +1,7 @@ +// We're currently unable to compile the app's crypto.c in unit tests. +// This library mocks the functions currently used in other modules that are part of +// the unit tests. + +#include + +void crypto_get_checksum(const uint8_t *in, uint16_t in_len, uint8_t out[static 4]); \ No newline at end of file diff --git a/unit-tests/libs/sha-256.c b/unit-tests/libs/sha-256.c new file mode 100644 index 000000000..3ae891b7a --- /dev/null +++ b/unit-tests/libs/sha-256.c @@ -0,0 +1,224 @@ +// from https://github.com/amosnier/sha-2/blob/0be5e1601b487b2aa6869e2fe12bd30ac2ca543c/sha-256.c + +#include "sha-256.h" + +#define TOTAL_LEN_LEN 8 + +/* + * Comments from pseudo-code at https://en.wikipedia.org/wiki/SHA-2 are reproduced here. + * When useful for clarification, portions of the pseudo-code are reproduced here too. + */ + +/* + * @brief Rotate a 32-bit value by a number of bits to the right. + * @param value The value to be rotated. + * @param count The number of bits to rotate by. + * @return The rotated value. + */ +static inline uint32_t right_rot(uint32_t value, unsigned int count) +{ + /* + * Defined behaviour in standard C for all count where 0 < count < 32, which is what we need here. + */ + return value >> count | value << (32 - count); +} + +/* + * @brief Update a hash value under calculation with a new chunk of data. + * @param h Pointer to the first hash item, of a total of eight. + * @param p Pointer to the chunk data, which has a standard length. + * + * @note This is the SHA-256 work horse. + */ +static inline void consume_chunk(uint32_t *h, const uint8_t *p) +{ + unsigned i, j; + uint32_t ah[8]; + + /* Initialize working variables to current hash value: */ + for (i = 0; i < 8; i++) + ah[i] = h[i]; + + /* + * The w-array is really w[64], but since we only need 16 of them at a time, we save stack by + * calculating 16 at a time. + * + * This optimization was not there initially and the rest of the comments about w[64] are kept in their + * initial state. + */ + + /* + * create a 64-entry message schedule array w[0..63] of 32-bit words (The initial values in w[0..63] + * don't matter, so many implementations zero them here) copy chunk into first 16 words w[0..15] of the + * message schedule array + */ + uint32_t w[16]; + + /* Compression function main loop: */ + for (i = 0; i < 4; i++) { + for (j = 0; j < 16; j++) { + if (i == 0) { + w[j] = + (uint32_t)p[0] << 24 | (uint32_t)p[1] << 16 | (uint32_t)p[2] << 8 | (uint32_t)p[3]; + p += 4; + } else { + /* Extend the first 16 words into the remaining 48 words w[16..63] of the + * message schedule array: */ + const uint32_t s0 = right_rot(w[(j + 1) & 0xf], 7) ^ right_rot(w[(j + 1) & 0xf], 18) ^ + (w[(j + 1) & 0xf] >> 3); + const uint32_t s1 = right_rot(w[(j + 14) & 0xf], 17) ^ + right_rot(w[(j + 14) & 0xf], 19) ^ (w[(j + 14) & 0xf] >> 10); + w[j] = w[j] + s0 + w[(j + 9) & 0xf] + s1; + } + const uint32_t s1 = right_rot(ah[4], 6) ^ right_rot(ah[4], 11) ^ right_rot(ah[4], 25); + const uint32_t ch = (ah[4] & ah[5]) ^ (~ah[4] & ah[6]); + + /* + * Initialize array of round constants: + * (first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311): + */ + static const uint32_t k[] = { + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, + 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, + 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, + 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, + 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, + 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, + 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, + 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, + 0xc67178f2}; + + const uint32_t temp1 = ah[7] + s1 + ch + k[i << 4 | j] + w[j]; + const uint32_t s0 = right_rot(ah[0], 2) ^ right_rot(ah[0], 13) ^ right_rot(ah[0], 22); + const uint32_t maj = (ah[0] & ah[1]) ^ (ah[0] & ah[2]) ^ (ah[1] & ah[2]); + const uint32_t temp2 = s0 + maj; + + ah[7] = ah[6]; + ah[6] = ah[5]; + ah[5] = ah[4]; + ah[4] = ah[3] + temp1; + ah[3] = ah[2]; + ah[2] = ah[1]; + ah[1] = ah[0]; + ah[0] = temp1 + temp2; + } + } + + /* Add the compressed chunk to the current hash value: */ + for (i = 0; i < 8; i++) + h[i] += ah[i]; +} + +/* + * Public functions. See header file for documentation. + */ + +void sha_256_init(struct Sha_256 *sha_256, uint8_t hash[SIZE_OF_SHA_256_HASH]) +{ + sha_256->hash = hash; + sha_256->chunk_pos = sha_256->chunk; + sha_256->space_left = SIZE_OF_SHA_256_CHUNK; + sha_256->total_len = 0; + /* + * Initialize hash values (first 32 bits of the fractional parts of the square roots of the first 8 primes + * 2..19): + */ + sha_256->h[0] = 0x6a09e667; + sha_256->h[1] = 0xbb67ae85; + sha_256->h[2] = 0x3c6ef372; + sha_256->h[3] = 0xa54ff53a; + sha_256->h[4] = 0x510e527f; + sha_256->h[5] = 0x9b05688c; + sha_256->h[6] = 0x1f83d9ab; + sha_256->h[7] = 0x5be0cd19; +} + +void sha_256_write(struct Sha_256 *sha_256, const void *data, size_t len) +{ + sha_256->total_len += len; + + const uint8_t *p = data; + + while (len > 0) { + /* + * If the input chunks have sizes that are multiples of the calculation chunk size, no copies are + * necessary. We operate directly on the input data instead. + */ + if (sha_256->space_left == SIZE_OF_SHA_256_CHUNK && len >= SIZE_OF_SHA_256_CHUNK) { + consume_chunk(sha_256->h, p); + len -= SIZE_OF_SHA_256_CHUNK; + p += SIZE_OF_SHA_256_CHUNK; + continue; + } + /* General case, no particular optimization. */ + const size_t consumed_len = len < sha_256->space_left ? len : sha_256->space_left; + memcpy(sha_256->chunk_pos, p, consumed_len); + sha_256->space_left -= consumed_len; + len -= consumed_len; + p += consumed_len; + if (sha_256->space_left == 0) { + consume_chunk(sha_256->h, sha_256->chunk); + sha_256->chunk_pos = sha_256->chunk; + sha_256->space_left = SIZE_OF_SHA_256_CHUNK; + } else { + sha_256->chunk_pos += consumed_len; + } + } +} + +uint8_t *sha_256_close(struct Sha_256 *sha_256) +{ + uint8_t *pos = sha_256->chunk_pos; + size_t space_left = sha_256->space_left; + uint32_t *const h = sha_256->h; + + /* + * The current chunk cannot be full. Otherwise, it would already have been consumed. I.e. there is space left for + * at least one byte. The next step in the calculation is to add a single one-bit to the data. + */ + *pos++ = 0x80; + --space_left; + + /* + * Now, the last step is to add the total data length at the end of the last chunk, and zero padding before + * that. But we do not necessarily have enough space left. If not, we pad the current chunk with zeroes, and add + * an extra chunk at the end. + */ + if (space_left < TOTAL_LEN_LEN) { + memset(pos, 0x00, space_left); + consume_chunk(h, sha_256->chunk); + pos = sha_256->chunk; + space_left = SIZE_OF_SHA_256_CHUNK; + } + const size_t left = space_left - TOTAL_LEN_LEN; + memset(pos, 0x00, left); + pos += left; + size_t len = sha_256->total_len; + pos[7] = (uint8_t)(len << 3); + len >>= 5; + int i; + for (i = 6; i >= 0; --i) { + pos[i] = (uint8_t)len; + len >>= 8; + } + consume_chunk(h, sha_256->chunk); + /* Produce the final hash value (big-endian): */ + int j; + uint8_t *const hash = sha_256->hash; + for (i = 0, j = 0; i < 8; i++) { + hash[j++] = (uint8_t)(h[i] >> 24); + hash[j++] = (uint8_t)(h[i] >> 16); + hash[j++] = (uint8_t)(h[i] >> 8); + hash[j++] = (uint8_t)h[i]; + } + return sha_256->hash; +} + +void calc_sha_256(uint8_t hash[SIZE_OF_SHA_256_HASH], const void *input, size_t len) +{ + struct Sha_256 sha_256; + sha_256_init(&sha_256, hash); + sha_256_write(&sha_256, input, len); + (void)sha_256_close(&sha_256); +} \ No newline at end of file diff --git a/unit-tests/libs/sha-256.h b/unit-tests/libs/sha-256.h new file mode 100644 index 000000000..2c1c8047f --- /dev/null +++ b/unit-tests/libs/sha-256.h @@ -0,0 +1,105 @@ +// from https://github.com/amosnier/sha-2/blob/0be5e1601b487b2aa6869e2fe12bd30ac2ca543c/sha-256.h + +#ifndef SHA_256_H +#define SHA_256_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @brief Size of the SHA-256 sum. This times eight is 256 bits. + */ +#define SIZE_OF_SHA_256_HASH 32 + +/* + * @brief Size of the chunks used for the calculations. + * + * @note This should mostly be ignored by the user, although when using the streaming API, it has an impact for + * performance. Add chunks whose size is a multiple of this, and you will avoid a lot of superfluous copying in RAM! + */ +#define SIZE_OF_SHA_256_CHUNK 64 + +/* + * @brief The opaque SHA-256 type, that should be instantiated when using the streaming API. + * + * @note Although the details are exposed here, in order to make instantiation easy, you should refrain from directly + * accessing the fields, as they may change in the future. + */ +struct Sha_256 { + uint8_t *hash; + uint8_t chunk[SIZE_OF_SHA_256_CHUNK]; + uint8_t *chunk_pos; + size_t space_left; + size_t total_len; + uint32_t h[8]; +}; + +/* + * @brief The simple SHA-256 calculation function. + * @param hash Hash array, where the result is delivered. + * @param input Pointer to the data the hash shall be calculated on. + * @param len Length of the input data, in byte. + * + * @note If all of the data you are calculating the hash value on is available in a contiguous buffer in memory, this is + * the function you should use. + * + * @note If either of the passed pointers is NULL, the results are unpredictable. + */ +void calc_sha_256(uint8_t hash[SIZE_OF_SHA_256_HASH], const void *input, size_t len); + +/* + * @brief Initialize a SHA-256 streaming calculation. + * @param sha_256 A pointer to a SHA-256 structure. + * @param hash Hash array, where the result will be delivered. + * + * @note If all of the data you are calculating the hash value on is not available in a contiguous buffer in memory, this is + * where you should start. Instantiate a SHA-256 structure, for instance by simply declaring it locally, make your hash + * buffer available, and invoke this function. Once a SHA-256 hash has been calculated (see further below) a SHA-256 + * structure can be initialized again for the next calculation. + * + * @note If either of the passed pointers is NULL, the results are unpredictable. + */ +void sha_256_init(struct Sha_256 *sha_256, uint8_t hash[SIZE_OF_SHA_256_HASH]); + +/* + * @brief Stream more input data for an on-going SHA-256 calculation. + * @param sha_256 A pointer to a previously initialized SHA-256 structure. + * @param data Pointer to the data to be added to the calculation. + * @param len Length of the data to add, in byte. + * + * @note This function may be invoked an arbitrary number of times between initialization and closing, but the maximum + * data length is limited by the SHA-256 algorithm: the total number of bits (i.e. the total number of bytes times + * eight) must be representable by a 64-bit unsigned integer. While that is not a practical limitation, the results are + * unpredictable if that limit is exceeded. + * + * @note This function may be invoked on empty data (zero length), although that obviously will not add any data. + * + * @note If either of the passed pointers is NULL, the results are unpredictable. + */ +void sha_256_write(struct Sha_256 *sha_256, const void *data, size_t len); + +/* + * @brief Conclude a SHA-256 streaming calculation, making the hash value available. + * @param sha_256 A pointer to a previously initialized SHA-256 structure. + * @return Pointer to the hash array, where the result is delivered. + * + * @note After this function has been invoked, the result is available in the hash buffer that initially was provided. A + * pointer to the hash value is returned for convenience, but you should feel free to ignore it: it is simply a pointer + * to the first byte of your initially provided hash array. + * + * @note If the passed pointer is NULL, the results are unpredictable. + * + * @note Invoking this function for a calculation with no data (the writing function has never been invoked, or it only + * has been invoked with empty data) is legal. It will calculate the SHA-256 value of the empty string. + */ +uint8_t *sha_256_close(struct Sha_256 *sha_256); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/unit-tests/test_bip32.c b/unit-tests/test_bip32.c index ad310e003..382c06a69 100644 --- a/unit-tests/test_bip32.c +++ b/unit-tests/test_bip32.c @@ -229,9 +229,7 @@ int main(void) { cmocka_unit_test(test_bip32_read), cmocka_unit_test(test_bad_bip32_read), cmocka_unit_test(test_is_pubkey_path_standard_true), - cmocka_unit_test(test_is_pubkey_path_standard_false), - cmocka_unit_test(test_is_address_path_standard_true), - cmocka_unit_test(test_is_address_path_standard_false) + cmocka_unit_test(test_is_pubkey_path_standard_false) }; return cmocka_run_group_tests(tests, NULL, NULL); diff --git a/unit-tests/test_buffer.c b/unit-tests/test_buffer.c index 3cc459290..ae05e2de8 100644 --- a/unit-tests/test_buffer.c +++ b/unit-tests/test_buffer.c @@ -191,6 +191,43 @@ static void test_buffer_peek(void **state) { assert_int_equal(c, 0x55); // unchanged because of failure } +static void test_buffer_peek_n(void **state) { + (void) state; + + uint8_t temp[6] = { + 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 + }; + buffer_t buf = {.ptr = temp, .size = sizeof(temp), .offset = 0}; + + bool result; + uint8_t c; + + for (int i = 0; i < 6; i++) { + result = buffer_peek_n(&buf, i, &c); + assert_true(result); + assert_int_equal(c, temp[i]); + } + + c = 42; + result = buffer_peek_n(&buf, 6, &c); // past the end + assert_false(result); + assert_int_equal(c, 42); // c should not change on failure + + buf.offset += 3; + + for (int i = 0; i < 3; i++) { + result = buffer_peek_n(&buf, i, &c); + assert_true(result); + assert_int_equal(c, temp[3+i]); + } + + c = 42; + result = buffer_peek_n(&buf, 4, &c); // past the end + assert_false(result); + assert_int_equal(c, 42); // c should not change on failure +} + + static void test_buffer_write(void **state) { (void) state; @@ -391,6 +428,37 @@ static void test_buffer_alloc(void **state) { assert_int_equal(buf.offset, (2 * sizeof(void*)) - 2); } +static void test_buffer_is_cur_aligned(void **state) { + (void) state; + + uint8_t data[32] __attribute__ ((aligned (4))); + + buffer_t buf = buffer_create(data + 2, sizeof(data) - 2); + + assert_false(buffer_is_cur_aligned(&buf)); //2 + + buffer_seek_cur(&buf, 1); + assert_false(buffer_is_cur_aligned(&buf)); //3 + + buffer_seek_cur(&buf, 1); + assert_true(buffer_is_cur_aligned(&buf)); //4 + + buffer_seek_cur(&buf, 1); + assert_false(buffer_is_cur_aligned(&buf)); //5 + + buffer_seek_cur(&buf, 1); + assert_false(buffer_is_cur_aligned(&buf)); //6 + + buffer_seek_cur(&buf, 1); + assert_false(buffer_is_cur_aligned(&buf)); //7 + + buffer_seek_cur(&buf, 1); + assert_true(buffer_is_cur_aligned(&buf)); //8 + + buffer_seek_cur(&buf, 1); + assert_false(buffer_is_cur_aligned(&buf)); //9 +} + // tests the buffer_snapshot/buffer_restore functions static void test_buffer_snapshot_restore(void **state) { (void) state; @@ -420,9 +488,11 @@ int main(void) { cmocka_unit_test(test_buffer_get_cur), cmocka_unit_test(test_buffer_read), cmocka_unit_test(test_buffer_peek), + cmocka_unit_test(test_buffer_peek_n), cmocka_unit_test(test_buffer_write), cmocka_unit_test(test_buffer_create), cmocka_unit_test(test_buffer_alloc), + cmocka_unit_test(test_buffer_is_cur_aligned), cmocka_unit_test(test_buffer_snapshot_restore)}; return cmocka_run_group_tests(tests, NULL, NULL); diff --git a/unit-tests/test_display_utils.c b/unit-tests/test_display_utils.c index 7a9cccbec..7d397ebf9 100644 --- a/unit-tests/test_display_utils.c +++ b/unit-tests/test_display_utils.c @@ -126,9 +126,9 @@ static void test_format_amount(void **state) { memset(out, 0xEE, sizeof(out)); format_amount(sats_testcases[i].coin, - sats_testcases[i].amount, - sats_testcases[i].decimals, - out); + sats_testcases[i].amount, + sats_testcases[i].decimals, + out); out[sizeof(out) - 1] = '\0'; assert_string_equal((char *) out, sats_testcases[i].expected); diff --git a/unit-tests/test_script.c b/unit-tests/test_script.c index d75376261..d8b49d598 100644 --- a/unit-tests/test_script.c +++ b/unit-tests/test_script.c @@ -18,6 +18,26 @@ unsigned int pic(unsigned int linked_address) { #include "common/script.h" +static void test_get_push_script_size(void **state) { + (void) state; + + assert_int_equal(get_push_script_size((uint32_t) 0), 1); + assert_int_equal(get_push_script_size((uint32_t) 1), 1); + assert_int_equal(get_push_script_size((uint32_t) 15), 1); + assert_int_equal(get_push_script_size((uint32_t) 16), 1); + assert_int_equal(get_push_script_size((uint32_t) 17), 2); + assert_int_equal(get_push_script_size((uint32_t) 0x7f), 2); + assert_int_equal(get_push_script_size((uint32_t) 0x80), 3); + assert_int_equal(get_push_script_size((uint32_t) 0xff), 3); + assert_int_equal(get_push_script_size((uint32_t) 0x7fff), 3); + assert_int_equal(get_push_script_size((uint32_t) 0x8000), 4); + assert_int_equal(get_push_script_size((uint32_t) 0x7fffff), 4); + assert_int_equal(get_push_script_size((uint32_t) 0x800000), 5); + assert_int_equal(get_push_script_size((uint32_t) 0x7fffffff), 5); + assert_int_equal(get_push_script_size((uint32_t) 0x80000000), 6); + assert_int_equal(get_push_script_size((uint32_t) 0xffffffff), 6); +} + static void test_get_script_type_valid(void **state) { (void) state; @@ -198,9 +218,6 @@ static void test_format_opscript_script_valid(void **state) { "0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425" "262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a"); - uint8_t input20[] = {OP_RETURN, OP_PUSHDATA1, 7, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}; - CHECK_VALID_TESTCASE(input20, "OP_RETURN 0x01020304050607"); - uint8_t input21[] = {OP_RETURN, OP_PUSHDATA1, 80, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, @@ -215,6 +232,18 @@ static void test_format_opscript_script_valid(void **state) { uint8_t input22[] = {OP_RETURN, OP_1NEGATE}; CHECK_VALID_TESTCASE(input22, "OP_RETURN -1"); + + uint8_t input23[] = {OP_RETURN, OP_0, OP_1, OP_5, OP_7, OP_16}; + CHECK_VALID_TESTCASE(input23, "OP_RETURN 0 1 5 7 16"); + + uint8_t input24[] = {OP_RETURN, OP_8, OP_1NEGATE, 15, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, OP_0, + 7, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77}; + CHECK_VALID_TESTCASE(input24, + "OP_RETURN 8 -1 0x0102030405060708090a0b0c0d0e0f 0 0x11223344556677"); + + uint8_t input_25[] = {OP_RETURN}; + CHECK_VALID_TESTCASE(input_25, "OP_RETURN"); } static void test_format_opscript_script_invalid(void **state) { @@ -224,9 +253,6 @@ static void test_format_opscript_script_invalid(void **state) { char out[MAX_OPRETURN_OUTPUT_DESC_SIZE]; assert_int_equal(format_opscript_script(input_empty, 0, out), -1); - uint8_t input_no_push[] = {OP_RETURN}; - CHECK_INVALID_TESTCASE(input_no_push); - uint8_t input_not_opreturn[] = {OP_DUP}; CHECK_INVALID_TESTCASE(input_not_opreturn); @@ -243,15 +269,50 @@ static void test_format_opscript_script_invalid(void **state) { {OP_RETURN, OP_PUSHDATA4, 0x06, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06}; CHECK_INVALID_TESTCASE(input_pushdata4); - uint8_t input_extra_push[] = {OP_RETURN, OP_0, OP_0}; + uint8_t input_extra_push[] = {OP_RETURN, 4, 1, 2, 3, 4, 42}; CHECK_INVALID_TESTCASE(input_extra_push); - uint8_t input_extra_push2[] = {OP_RETURN, 4, 1, 2, 3, 4, 42}; - CHECK_INVALID_TESTCASE(input_extra_push2); + uint8_t input_6pushes[] = {OP_RETURN, OP_1, OP_2, OP_3, OP_4, OP_5, OP_6}; + CHECK_INVALID_TESTCASE(input_6pushes); + + // clang-format off + uint8_t input_too_long[] = { + OP_RETURN, + OP_PUSHDATA1, 81, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 81 + }; + // clang-format on + CHECK_INVALID_TESTCASE(input_too_long); + + // not minimal push encodings + uint8_t input_pushdata_nonstandard[] = + {OP_RETURN, OP_PUSHDATA1, 7, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}; + CHECK_INVALID_TESTCASE(input_pushdata_nonstandard); + + uint8_t input_negative1_notminimal_1[] = {OP_RETURN, 1, 0x81}; + CHECK_INVALID_TESTCASE(input_negative1_notminimal_1); + uint8_t input_negative1_notminimal_2[] = {OP_RETURN, OP_PUSHDATA1, 1, 0x81}; + CHECK_INVALID_TESTCASE(input_negative1_notminimal_2); + for (uint8_t i = 0; i <= 16; i++) { + uint8_t input_negative1_notminimal_push_1[] = {OP_RETURN, 1, i}; + CHECK_INVALID_TESTCASE(input_negative1_notminimal_push_1); + uint8_t input_negative1_notminimal_push_2[] = {OP_RETURN, OP_PUSHDATA1, 1, i}; + CHECK_INVALID_TESTCASE(input_negative1_notminimal_push_2); + } + + // transaction containing non-push opcodes are not standard + uint8_t input_non_push_opcode[] = {OP_RETURN, OP_3, OP_2, OP_ADD, OP_0}; + CHECK_INVALID_TESTCASE(input_non_push_opcode); } int main(void) { const struct CMUnitTest tests[] = { + cmocka_unit_test(test_get_push_script_size), cmocka_unit_test(test_get_script_type_valid), cmocka_unit_test(test_get_script_type_invalid), cmocka_unit_test(test_format_opscript_script_valid), diff --git a/unit-tests/test_wallet.c b/unit-tests/test_wallet.c index fefdc87a9..975545487 100644 --- a/unit-tests/test_wallet.c +++ b/unit-tests/test_wallet.c @@ -18,283 +18,609 @@ unsigned int pic(unsigned int linked_address) { #include "common/wallet.h" +static int parse_policy(const char *descriptor_template, uint8_t *out, size_t out_size) { + buffer_t descriptor_template_buf = + buffer_create((void *) descriptor_template, strlen(descriptor_template)); + + return parse_descriptor_template(&descriptor_template_buf, + out, + out_size, + WALLET_POLICY_VERSION_V2); +} + // in unit tests, size_t integers are currently 8 compiled as 8 bytes; therefore, in the app // about half of the memory would be needed -#define MAX_POLICY_MAP_MEMORY_SIZE 512 +#define MAX_WALLET_POLICY_MEMORY_SIZE 512 + +// convenience function to compactly check common assertions on a key placeholder pointer +static void check_key_placeholder(const policy_node_key_placeholder_t *ptr, + int key_index, + uint32_t num_first, + uint32_t num_second) { + assert_int_equal(ptr->key_index, key_index); + assert_int_equal(ptr->num_first, num_first); + assert_int_equal(ptr->num_second, num_second); +} static void test_parse_policy_map_singlesig_1(void **state) { (void) state; - uint8_t out[MAX_POLICY_MAP_MEMORY_SIZE]; - - int res; + uint8_t out[MAX_WALLET_POLICY_MEMORY_SIZE]; - char *policy = "pkh(@0)"; - buffer_t policy_buf = buffer_create((void *) policy, strlen(policy)); + int res = parse_policy("pkh(@0/**)", out, sizeof(out)); - res = parse_policy_map(&policy_buf, out, sizeof(out), 0, 0); - assert_int_equal(res, 0); + assert_true(res >= 0); policy_node_with_key_t *node_1 = (policy_node_with_key_t *) out; - assert_int_equal(node_1->type, TOKEN_PKH); - assert_int_equal(node_1->key_index, 0); + assert_int_equal(node_1->base.type, TOKEN_PKH); + check_key_placeholder(r_policy_node_key_placeholder(&node_1->key_placeholder), 0, 0, 1); } static void test_parse_policy_map_singlesig_2(void **state) { (void) state; - uint8_t out[MAX_POLICY_MAP_MEMORY_SIZE]; - - int res; + uint8_t out[MAX_WALLET_POLICY_MEMORY_SIZE]; - char *policy = "sh(wpkh(@0))"; - buffer_t policy_buf = buffer_create((void *) policy, strlen(policy)); + int res = parse_policy("sh(wpkh(@0/**))", out, sizeof(out)); - res = parse_policy_map(&policy_buf, out, sizeof(out), 0, 0); - assert_int_equal(res, 0); + assert_true(res >= 0); policy_node_with_script_t *root = (policy_node_with_script_t *) out; - assert_int_equal(root->type, TOKEN_SH); + assert_int_equal(root->base.type, TOKEN_SH); - policy_node_with_key_t *inner = (policy_node_with_key_t *) root->script; + policy_node_with_key_t *inner = (policy_node_with_key_t *) r_policy_node(&root->script); - assert_int_equal(inner->type, TOKEN_WPKH); - assert_int_equal(inner->key_index, 0); + assert_int_equal(inner->base.type, TOKEN_WPKH); + check_key_placeholder(r_policy_node_key_placeholder(&inner->key_placeholder), 0, 0, 1); } static void test_parse_policy_map_singlesig_3(void **state) { (void) state; - uint8_t out[MAX_POLICY_MAP_MEMORY_SIZE]; + uint8_t out[MAX_WALLET_POLICY_MEMORY_SIZE]; - int res; + int res = parse_policy("sh(wsh(pkh(@0/**)))", out, sizeof(out)); - char *policy = "sh(wsh(pkh(@0)))"; - buffer_t policy_buf = buffer_create((void *) policy, strlen(policy)); - - res = parse_policy_map(&policy_buf, out, sizeof(out), 0, 0); - assert_int_equal(res, 0); + assert_true(res >= 0); policy_node_with_script_t *root = (policy_node_with_script_t *) out; - assert_int_equal(root->type, TOKEN_SH); + assert_int_equal(root->base.type, TOKEN_SH); - policy_node_with_script_t *mid = (policy_node_with_script_t *) root->script; + policy_node_with_script_t *mid = (policy_node_with_script_t *) r_policy_node(&root->script); - assert_int_equal(mid->type, TOKEN_WSH); + assert_int_equal(mid->base.type, TOKEN_WSH); - policy_node_with_key_t *inner = (policy_node_with_key_t *) mid->script; + policy_node_with_key_t *inner = (policy_node_with_key_t *) r_policy_node(&mid->script); - assert_int_equal(inner->type, TOKEN_PKH); - assert_int_equal(inner->key_index, 0); + assert_int_equal(inner->base.type, TOKEN_PKH); + check_key_placeholder(r_policy_node_key_placeholder(&inner->key_placeholder), 0, 0, 1); } static void test_parse_policy_map_multisig_1(void **state) { (void) state; - uint8_t out[MAX_POLICY_MAP_MEMORY_SIZE]; - - int res; + uint8_t out[MAX_WALLET_POLICY_MEMORY_SIZE]; - char *policy = "sortedmulti(2,@0,@1,@2)"; - buffer_t policy_buf = buffer_create((void *) policy, strlen(policy)); + int res = parse_policy("sortedmulti(2,@0/**,@1/**,@2/**)", out, sizeof(out)); - res = parse_policy_map(&policy_buf, out, sizeof(out), 0, 0); - assert_int_equal(res, 0); + assert_true(res >= 0); policy_node_multisig_t *node_1 = (policy_node_multisig_t *) out; - assert_int_equal(node_1->type, TOKEN_SORTEDMULTI); + assert_int_equal(node_1->base.type, TOKEN_SORTEDMULTI); assert_int_equal(node_1->k, 2); assert_int_equal(node_1->n, 3); - assert_int_equal(node_1->key_indexes[0], 0); - assert_int_equal(node_1->key_indexes[1], 1); - assert_int_equal(node_1->key_indexes[2], 2); + check_key_placeholder(&r_policy_node_key_placeholder(&node_1->key_placeholders)[0], 0, 0, 1); + check_key_placeholder(&r_policy_node_key_placeholder(&node_1->key_placeholders)[1], 1, 0, 1); + check_key_placeholder(&r_policy_node_key_placeholder(&node_1->key_placeholders)[2], 2, 0, 1); } static void test_parse_policy_map_multisig_2(void **state) { (void) state; - uint8_t out[MAX_POLICY_MAP_MEMORY_SIZE]; + uint8_t out[MAX_WALLET_POLICY_MEMORY_SIZE]; - int res; + int res = parse_policy("wsh(multi(3,@0/**,@1/**,@2/**,@3/**,@4/**))", out, sizeof(out)); - char *policy = "wsh(multi(3,@0,@1,@2,@3,@4))"; - buffer_t policy_buf = buffer_create((void *) policy, strlen(policy)); - - res = parse_policy_map(&policy_buf, out, sizeof(out), 0, 0); - assert_int_equal(res, 0); + assert_true(res >= 0); policy_node_with_script_t *root = (policy_node_with_script_t *) out; - assert_int_equal(root->type, TOKEN_WSH); + assert_int_equal(root->base.type, TOKEN_WSH); - policy_node_multisig_t *inner = (policy_node_multisig_t *) root->script; - assert_int_equal(inner->type, TOKEN_MULTI); + policy_node_multisig_t *inner = (policy_node_multisig_t *) r_policy_node(&root->script); + assert_int_equal(inner->base.type, TOKEN_MULTI); assert_int_equal(inner->k, 3); assert_int_equal(inner->n, 5); - for (int i = 0; i < 5; i++) assert_int_equal(inner->key_indexes[i], i); + for (int i = 0; i < 5; i++) { + check_key_placeholder(&r_policy_node_key_placeholder(&inner->key_placeholders)[i], i, 0, 1); + } } static void test_parse_policy_map_multisig_3(void **state) { (void) state; - uint8_t out[MAX_POLICY_MAP_MEMORY_SIZE]; - - int res; + uint8_t out[MAX_WALLET_POLICY_MEMORY_SIZE]; - char *policy = "sh(wsh(sortedmulti(3,@0,@1,@2,@3,@4)))"; - buffer_t policy_buf = buffer_create((void *) policy, strlen(policy)); + int res = + parse_policy("sh(wsh(sortedmulti(3,@0/**,@1/**,@2/**,@3/**,@4/**)))", out, sizeof(out)); - res = parse_policy_map(&policy_buf, out, sizeof(out), 0, 0); - assert_int_equal(res, 0); + assert_true(res >= 0); policy_node_with_script_t *root = (policy_node_with_script_t *) out; - assert_int_equal(root->type, TOKEN_SH); + assert_int_equal(root->base.type, TOKEN_SH); - policy_node_with_script_t *mid = (policy_node_with_script_t *) root->script; - assert_int_equal(mid->type, TOKEN_WSH); + policy_node_with_script_t *mid = (policy_node_with_script_t *) r_policy_node(&root->script); + assert_int_equal(mid->base.type, TOKEN_WSH); - policy_node_multisig_t *inner = (policy_node_multisig_t *) mid->script; - assert_int_equal(inner->type, TOKEN_SORTEDMULTI); + policy_node_multisig_t *inner = (policy_node_multisig_t *) r_policy_node(&mid->script); + assert_int_equal(inner->base.type, TOKEN_SORTEDMULTI); assert_int_equal(inner->k, 3); assert_int_equal(inner->n, 5); - for (int i = 0; i < 5; i++) assert_int_equal(inner->key_indexes[i], i); + for (int i = 0; i < 5; i++) { + check_key_placeholder(&r_policy_node_key_placeholder(&inner->key_placeholders)[i], i, 0, 1); + } } -// convenience function to parse as one liners +static void test_parse_policy_tr(void **state) { + (void) state; + + uint8_t out[MAX_WALLET_POLICY_MEMORY_SIZE]; + int res; + + // Simple tr without a tree + res = parse_policy("tr(@0/**)", out, sizeof(out)); + + assert_true(res >= 0); + policy_node_tr_t *root = (policy_node_tr_t *) out; + + assert_true(isnull_policy_node_tree(&root->tree)); + check_key_placeholder(r_policy_node_key_placeholder(&root->key_placeholder), 0, 0, 1); + + // Simple tr with a TREE that is a simple script + res = parse_policy("tr(@0/**,pk(@1/**))", out, sizeof(out)); + + assert_true(res >= 0); + root = (policy_node_tr_t *) out; + + check_key_placeholder(r_policy_node_key_placeholder(&root->key_placeholder), 0, 0, 1); + + assert_int_equal(r_policy_node_tree(&root->tree)->is_leaf, true); + + policy_node_with_key_t *tapscript = + (policy_node_with_key_t *) r_policy_node(&r_policy_node_tree(&root->tree)->script); + + assert_int_equal(tapscript->base.type, TOKEN_PK); + check_key_placeholder(r_policy_node_key_placeholder(&tapscript->key_placeholder), 1, 0, 1); + + // Simple tr with a TREE with two tapleaves + res = parse_policy("tr(@0/**,{pk(@1/**),pk(@2/<5;7>/*)})", out, sizeof(out)); + + assert_true(res >= 0); + root = (policy_node_tr_t *) out; -static int parse_policy(const char *policy, size_t policy_len, uint8_t *out, size_t out_len) { - buffer_t in_buf = buffer_create((void *) policy, policy_len); - return parse_policy_map(&in_buf, out, out_len, 0, 0); + check_key_placeholder(r_policy_node_key_placeholder(&root->key_placeholder), 0, 0, 1); + + policy_node_tree_t *taptree = r_policy_node_tree(&root->tree); + + assert_int_equal(taptree->is_leaf, false); + + policy_node_tree_t *taptree_left = + (policy_node_tree_t *) r_policy_node_tree(&taptree->left_tree); + assert_int_equal(taptree_left->is_leaf, true); + policy_node_with_key_t *tapscript_left = + (policy_node_with_key_t *) r_policy_node(&taptree_left->script); + + assert_int_equal(tapscript_left->base.type, TOKEN_PK); + check_key_placeholder(r_policy_node_key_placeholder(&tapscript_left->key_placeholder), 1, 0, 1); + + policy_node_tree_t *taptree_right = + (policy_node_tree_t *) r_policy_node_tree(&taptree->right_tree); + assert_int_equal(taptree_right->is_leaf, true); + policy_node_with_key_t *tapscript_right = + (policy_node_with_key_t *) r_policy_node(&taptree_right->script); + + assert_int_equal(tapscript_right->base.type, TOKEN_PK); + check_key_placeholder(r_policy_node_key_placeholder(&tapscript_right->key_placeholder), + 2, + 5, + 7); +} + +static void test_parse_policy_tr_multisig(void **state) { + (void) state; + + uint8_t out[MAX_WALLET_POLICY_MEMORY_SIZE]; + int res; + + // tr with a tree with two scripts: a multi_a and a sortedmulti_a: + res = parse_policy("tr(@0/**,{multi_a(1,@1/**,@2/**),sortedmulti_a(2,@3/**,@4/**,@5/**)})", + out, + sizeof(out)); + + assert_true(res >= 0); + + policy_node_tr_t *root = (policy_node_tr_t *) out; + + assert_int_equal(r_policy_node_key_placeholder(&root->key_placeholder)->key_index, 0); + assert_int_equal(r_policy_node_key_placeholder(&root->key_placeholder)->num_first, 0); + assert_int_equal(r_policy_node_key_placeholder(&root->key_placeholder)->num_second, 1); + + policy_node_tree_t *taptree = r_policy_node_tree(&root->tree); + + assert_int_equal(taptree->is_leaf, false); + + policy_node_tree_t *taptree_left = + (policy_node_tree_t *) r_policy_node_tree(&taptree->left_tree); + assert_int_equal(taptree_left->is_leaf, true); + policy_node_multisig_t *tapscript_left = + (policy_node_multisig_t *) r_policy_node(&taptree_left->script); + + assert_int_equal(tapscript_left->base.type, TOKEN_MULTI_A); + assert_int_equal(tapscript_left->k, 1); + assert_int_equal(tapscript_left->n, 2); + check_key_placeholder(&r_policy_node_key_placeholder(&tapscript_left->key_placeholders)[0], + 1, + 0, + 1); + check_key_placeholder(&r_policy_node_key_placeholder(&tapscript_left->key_placeholders)[1], + 2, + 0, + 1); + + policy_node_tree_t *taptree_right = + (policy_node_tree_t *) r_policy_node_tree(&taptree->right_tree); + assert_int_equal(taptree_right->is_leaf, true); + policy_node_multisig_t *tapscript_right = + (policy_node_multisig_t *) r_policy_node(&taptree_right->script); + + assert_int_equal(tapscript_right->base.type, TOKEN_SORTEDMULTI_A); + assert_int_equal(tapscript_right->k, 2); + assert_int_equal(tapscript_right->n, 3); + check_key_placeholder(&r_policy_node_key_placeholder(&tapscript_right->key_placeholders)[0], + 3, + 0, + 1); + check_key_placeholder(&r_policy_node_key_placeholder(&tapscript_right->key_placeholders)[1], + 4, + 0, + 1); + check_key_placeholder(&r_policy_node_key_placeholder(&tapscript_right->key_placeholders)[2], + 5, + 0, + 1); } -#define PARSE_POLICY(policy, out, out_len) parse_policy(policy, sizeof(policy) - 1, out, out_len) +static void test_get_policy_segwit_version(void **state) { + (void) state; + + uint8_t out[MAX_WALLET_POLICY_MEMORY_SIZE]; + policy_node_t *policy = (policy_node_t *) out; + + // legacy policies (returning -1) + parse_policy("pkh(@0/**)", out, sizeof(out)); + assert(get_policy_segwit_version(policy) == -1); + + parse_policy("sh(multi(2,@0/**,@1/**))", out, sizeof(out)); + assert(get_policy_segwit_version(policy) == -1); + + // segwit v0 policies + parse_policy("wpkh(@0/**)", out, sizeof(out)); + assert(get_policy_segwit_version(policy) == 0); + parse_policy("wsh(multi(2,@0/**,@1/**))", out, sizeof(out)); + assert(get_policy_segwit_version(policy) == 0); + parse_policy("sh(wpkh(@0/**))", out, sizeof(out)); + assert(get_policy_segwit_version(policy) == 0); + parse_policy("sh(wsh(multi(2,@0/**,@1/**)))", out, sizeof(out)); + assert(get_policy_segwit_version(policy) == 0); + + // segwit v1 policies + parse_policy("tr(@0/**)", out, sizeof(out)); + assert(get_policy_segwit_version(policy) == 1); + parse_policy("tr(@0/**,{pk(@1/**,multi(1,@2/**,@3/**)})", out, sizeof(out)); + assert(get_policy_segwit_version(policy) == 1); +} static void test_failures(void **state) { (void) state; - uint8_t out[MAX_POLICY_MAP_MEMORY_SIZE]; + uint8_t out[MAX_WALLET_POLICY_MEMORY_SIZE]; // excess byte not allowed - assert_true(0 > PARSE_POLICY("pkh(@0) ", out, sizeof(out))); + assert_true(0 > parse_policy("pkh(@0/**) ", out, sizeof(out))); // missing closing parenthesis - assert_true(0 > PARSE_POLICY("pkh(@0", out, sizeof(out))); + assert_true(0 > parse_policy("pkh(@0/**", out, sizeof(out))); // unknown token - assert_true(0 > PARSE_POLICY("yolo(@0)", out, sizeof(out))); - assert_true(0 > PARSE_POLICY("Pkh(@0)", out, sizeof(out))); // case-sensitive + assert_true(0 > parse_policy("yolo(@0/**)", out, sizeof(out))); + assert_true(0 > parse_policy("Pkh(@0/**)", out, sizeof(out))); // case-sensitive // missing or invalid key identifier - assert_true(0 > PARSE_POLICY("pkh()", out, sizeof(out))); - assert_true(0 > PARSE_POLICY("pkh(@)", out, sizeof(out))); - assert_true(0 > PARSE_POLICY("pkh(0)", out, sizeof(out))); + assert_true(0 > parse_policy("pkh()", out, sizeof(out))); + assert_true(0 > parse_policy("pkh(@)", out, sizeof(out))); + assert_true(0 > parse_policy("pkh(0)", out, sizeof(out))); // sh not top-level - assert_true(0 > PARSE_POLICY("sh(sh(pkh(@0)))", out, sizeof(out))); + assert_true(0 > parse_policy("sh(sh(pkh(@0/**)))", out, sizeof(out))); // wsh can only be inside sh - assert_true(0 > PARSE_POLICY("wsh(wsh(pkh(@0)))", out, sizeof(out))); + assert_true(0 > parse_policy("wsh(wsh(pkh(@0/**)))", out, sizeof(out))); // wpkh can only be inside sh - assert_true(0 > PARSE_POLICY("wsh(wpkh(@0)))", out, sizeof(out))); + assert_true(0 > parse_policy("wsh(wpkh(@0/**)))", out, sizeof(out))); // multi with invalid threshold - assert_true( - 0 > PARSE_POLICY("multi(6,@0,@1,@2,@3,@4)", out, sizeof(out))); // threshold larger than n - assert_true(0 > PARSE_POLICY("multi(0,@0,@1,@2,@3,@4)", out, sizeof(out))); + assert_true(0 > parse_policy("multi(6,@0/**,@1/**,@2/**,@3/**,@4/**)", + out, + sizeof(out))); // threshold larger than n + assert_true(0 > parse_policy("multi(0,@0/**,@1/**,@2/**,@3/**,@4/**)", out, sizeof(out))); // missing threshold or keys in multisig - assert_true(0 > PARSE_POLICY("multi(@0,@1,@2,@3,@4)", out, sizeof(out))); - assert_true(0 > PARSE_POLICY("multi(1)", out, sizeof(out))); - assert_true(0 > PARSE_POLICY("multi(1,)", out, sizeof(out))); + assert_true(0 > parse_policy("multi(@0/**,@1/**,@2/**,@3/**,@4/**)", out, sizeof(out))); + assert_true(0 > parse_policy("multi(1)", out, sizeof(out))); + assert_true(0 > parse_policy("multi(1,)", out, sizeof(out))); + + // syntactically invalid tr descriptors + assert_true(0 > parse_policy("tr(,pk(@0))", out, sizeof(out))); + assert_true(0 > parse_policy("tr(pk(@0))", out, sizeof(out))); + assert_true(0 > parse_policy("tr(pk(@0),@1/**)", out, sizeof(out))); + assert_true(0 > parse_policy("tr(@0/**,)", out, sizeof(out))); + assert_true(0 > parse_policy("tr(@0/**,{})", out, sizeof(out))); + assert_true(0 > parse_policy("tr(@0/**,@1/**)", out, sizeof(out))); + assert_true(0 > parse_policy("tr(@0/**,{pk(@1)})", out, sizeof(out))); + assert_true(0 > parse_policy("tr(@0/**,{pk(@1),})", out, sizeof(out))); + assert_true(0 > parse_policy("tr(@0/**,{,pk(@1)})", out, sizeof(out))); + assert_true(0 > parse_policy("tr(@0/**,{@1/**,pk(@2)})", out, sizeof(out))); + + // invalid tokens within tr scripts + assert_true(0 > parse_policy("tr(@0/**,multi(2,@1,@2))", out, sizeof(out))); + assert_true(0 > parse_policy("tr(@0/**,sortedmulti(2,@1,@2))", out, sizeof(out))); + assert_true(0 > parse_policy("tr(@0/**,sh(pk(@0/**)))", out, sizeof(out))); + assert_true(0 > parse_policy("tr(@0/**,wsh(pk(@0/**)))", out, sizeof(out))); } -static void test_policy_is_multisig(void **state) { - (void) state; - - uint8_t out[MAX_POLICY_MAP_MEMORY_SIZE]; - policy_node_t *policy = (policy_node_t *) out; - - assert_int_equal(0, PARSE_POLICY("pkh(@0)", out, sizeof(out))); - assert_false(policy_is_multisig(policy)); - - assert_int_equal(0, PARSE_POLICY("sh(wpkh(@0))", out, sizeof(out))); - assert_false(policy_is_multisig(policy)); - - assert_int_equal(0, PARSE_POLICY("sh(wsh(pkh(@0)))", out, sizeof(out))); - assert_false(policy_is_multisig(policy)); - - assert_int_equal(0, PARSE_POLICY("sortedmulti(2,@0,@1,@2)", out, sizeof(out))); - assert_true(policy_is_multisig(policy)); - - assert_int_equal(0, PARSE_POLICY("wsh(multi(3,@0,@1,@2,@3,@4))", out, sizeof(out))); - assert_true(policy_is_multisig(policy)); - - assert_int_equal(0, PARSE_POLICY("sh(wsh(sortedmulti(3,@0,@1,@2,@3,@4)))", out, sizeof(out))); - assert_true(policy_is_multisig(policy)); +enum TestMode { + TESTMODE_INVALID = 0, + TESTMODE_VALID = 1, + TESTMODE_NONMAL = 2, + TESTMODE_NEEDSIG = 4, + TESTMODE_TIMELOCKMIX = 8, // ignored in our tests + //! Invalid only under P2WSH context + TESTMODE_P2WSH_INVALID = 16, + //! Invalid only under Tapscript context + TESTMODE_TAPSCRIPT_INVALID = 32 +}; + +static void Test(const char *ms, const char *hexscript, int mode, int opslimit, int stacklimit) { + char descriptor_wsh[1024]; + char descriptor_tr[1024]; + + if (strlen(ms) + sizeof("wsh(") + sizeof(")") > sizeof(descriptor_wsh)) { + assert(false); + } + + if (strlen(ms) + sizeof("tr(@0/<100;101>/*,") + sizeof(")") > sizeof(descriptor_tr)) { + assert(false); + } + + // Wrap the miniscript inside "wsh" + strcpy(descriptor_wsh, "wsh("); + strcat(descriptor_wsh, ms); + strcat(descriptor_wsh, ")"); + + // Wrap the miniscript inside a "tr" script. + // We make sure to use a key placeholder with derivations that + // are not used elsewhere in the descriptor template. + strcpy(descriptor_tr, "tr(@0/<100;101>/*,"); + strcat(descriptor_tr, ms); + strcat(descriptor_tr, ")"); + uint8_t out_wsh[MAX_WALLET_POLICY_MEMORY_SIZE]; + uint8_t out_tr[MAX_WALLET_POLICY_MEMORY_SIZE]; + + uint8_t *out; + + int res = 0; + if ((mode & TESTMODE_P2WSH_INVALID) != 0 && (mode & TESTMODE_TAPSCRIPT_INVALID) != 0) { + assert(false); // at most one of TESTMODE_P2WSH_INVALID and TESTMODE_TAPSCRIPT_INVALID + } + + buffer_t descriptor_template_wsh_buf = + buffer_create((void *) descriptor_wsh, strlen(descriptor_wsh)); + + int res_wsh = parse_descriptor_template(&descriptor_template_wsh_buf, + out_wsh, + sizeof(out_wsh), + WALLET_POLICY_VERSION_V2); + + buffer_t descriptor_template_tr_buf = + buffer_create((void *) descriptor_tr, strlen(descriptor_tr)); + + int res_tr = parse_descriptor_template(&descriptor_template_tr_buf, + out_tr, + sizeof(out_tr), + WALLET_POLICY_VERSION_V2); + + res = res_wsh; + out = out_wsh; + + if (mode & TESTMODE_P2WSH_INVALID) { + assert_true(res_wsh < 0); + + // we use the result of parsing as wsh script in the remaining + // tests below, unless that's invalid + res = res_tr; + out = out_tr; + } + + if (mode & TESTMODE_TAPSCRIPT_INVALID) { + assert_true(res_tr < 0); + } + + if (mode == TESTMODE_INVALID) { + assert_true(res < 0); + } else { + assert_true(res >= 0); + + const policy_node_t *miniscript; + int context; + if (((policy_node_t *) out)->type == TOKEN_WSH) { + miniscript = r_policy_node(&((policy_node_with_script_t *) out)->script); + context = MINISCRIPT_CONTEXT_P2WSH; + } else { + assert_true(((policy_node_t *) out)->type == TOKEN_TR); + policy_node_tr_t *tr = (policy_node_tr_t *) out; + assert_true(r_policy_node_tree(&tr->tree)->is_leaf); + + miniscript = r_policy_node(&r_policy_node_tree(&tr->tree)->script); + context = MINISCRIPT_CONTEXT_TAPSCRIPT; + } + + policy_node_ext_info_t ext_info; + res = compute_miniscript_policy_ext_info(miniscript, &ext_info, context); + + assert_true(res == 0); + + int is_expected_needsig = (mode & TESTMODE_NEEDSIG) ? 1 : 0; + int is_expected_nonmal = (mode & TESTMODE_NONMAL) ? 1 : 0; + + int is_k = (mode & TESTMODE_TIMELOCKMIX) ? 0 : 1; + + // the hexscript is only used to compare with the script length + // (since the pubkeys are missing in the descriptor template, the exact bytes are not known) + int scriptlen = strlen(hexscript) / 2; + + assert_true(ext_info.s == is_expected_needsig); + assert_true(ext_info.m == is_expected_nonmal); + + assert_true(ext_info.k == is_k); + + if (scriptlen >= 1) { + assert_int_equal(ext_info.script_size, scriptlen); + } + + if (opslimit != -1) { + // if ext_info.ops.sat, we want to use 0 (consistently with bitcoin-core's + // implementation) + int ops_sat = (ext_info.ops.sat == -1) ? 0 : ext_info.ops.sat; + + int computed_opslimit = ext_info.ops.count + ops_sat; + assert_int_equal(computed_opslimit, opslimit); + } + if (stacklimit != -1) { + assert_true(ext_info.ss.sat >= 0); + int computed_stacklimit = ext_info.ss.sat + 1; + assert_int_equal(computed_stacklimit, stacklimit); + } + } } -#define PARSE_POLICY_MAP_KEY_INFO(str) \ - do { \ - memset(&map, 0, sizeof(map)); \ - buffer_t buffer = buffer_create((void *) (str), strlen(str)); \ - assert_int_equal(0, parse_policy_map_key_info(&buffer, &map)); \ - assert_false(buffer_can_read(&buffer, 1)); \ - } while(0) - -static void test_parse_policy_map_key_info(void **state) { - policy_map_key_info_t map; - - PARSE_POLICY_MAP_KEY_INFO("[d34db33f/44'/0'/0']xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL"); - assert_memory_equal( - map.master_key_derivation, - &((uint32_t[MAX_BIP32_PATH_STEPS]) { BIP32_FIRST_HARDENED_CHILD | 44, BIP32_FIRST_HARDENED_CHILD | 0, BIP32_FIRST_HARDENED_CHILD | 0, 0, 0, 0 }), - sizeof(map.master_key_derivation) - ); - assert_memory_equal(map.master_key_fingerprint, &((uint8_t[4]) { 0xd3, 0x4d, 0xb3, 0x3f }), sizeof(map.master_key_fingerprint)); - assert_int_equal(map.master_key_derivation_len, 3); - assert_int_equal(map.has_key_origin, 1); - assert_int_equal(map.wildcard_id, KEY_WILDCARD_NONE); - assert_string_equal(map.ext_pubkey, "xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL"); - - PARSE_POLICY_MAP_KEY_INFO("[f5acc2fd/84'/1'/0']tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P/**"); - assert_memory_equal( - map.master_key_derivation, - &((uint32_t[MAX_BIP32_PATH_STEPS]) { BIP32_FIRST_HARDENED_CHILD | 84, BIP32_FIRST_HARDENED_CHILD | 1, BIP32_FIRST_HARDENED_CHILD | 0, 0, 0, 0 }), - sizeof(map.master_key_derivation) - ); - assert_memory_equal(map.master_key_fingerprint, &((uint8_t[4]) { 0xf5, 0xac, 0xc2, 0xfd }), sizeof(map.master_key_fingerprint)); - assert_int_equal(map.master_key_derivation_len, 3); - assert_int_equal(map.has_key_origin, 1); - assert_int_equal(map.wildcard_id, KEY_WILDCARD_ANY); - assert_string_equal(map.ext_pubkey, "tpubDCtKfsNyRhULjZ9XMS4VKKtVcPdVDi8MKUbcSD9MJDyjRu1A2ND5MiipozyyspBT9bg8upEp7a8EAgFxNxXn1d7QkdbL52Ty5jiSLcxPt1P"); - - PARSE_POLICY_MAP_KEY_INFO("xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH"); - assert_int_equal(map.master_key_derivation_len, 0); - assert_int_equal(map.has_key_origin, 0); - assert_int_equal(map.wildcard_id, KEY_WILDCARD_NONE); - assert_string_equal(map.ext_pubkey, "xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH"); - - PARSE_POLICY_MAP_KEY_INFO("xpub661MyMwAqRbcFkPHucMnrGNzDwb6teAX1RbKQmqtEF8kK3Z7LZ59qafCjB9eCRLiTVG3uxBxgKvRgbubRhqSKXnGGb1aoaqLrpMBDrVxga8/<0;1>/*"); - assert_int_equal(map.master_key_derivation_len, 0); - assert_int_equal(map.has_key_origin, 0); - assert_int_equal(map.wildcard_id, KEY_WILDCARD_STANDARD_CHAINS); - assert_string_equal(map.ext_pubkey, "xpub661MyMwAqRbcFkPHucMnrGNzDwb6teAX1RbKQmqtEF8kK3Z7LZ59qafCjB9eCRLiTVG3uxBxgKvRgbubRhqSKXnGGb1aoaqLrpMBDrVxga8"); - - PARSE_POLICY_MAP_KEY_INFO("xpub661MyMwAqRbcFkPHucMnrGNzDwb6teAX1RbKQmqtEF8kK3Z7LZ59qafCjB9eCRLiTVG3uxBxgKvRgbubRhqSKXnGGb1aoaqLrpMBDrVxga8/0/*"); - assert_int_equal(map.master_key_derivation_len, 0); - assert_int_equal(map.has_key_origin, 0); - assert_int_equal(map.wildcard_id, KEY_WILDCARD_EXTERNAL_CHAIN); - assert_string_equal(map.ext_pubkey, "xpub661MyMwAqRbcFkPHucMnrGNzDwb6teAX1RbKQmqtEF8kK3Z7LZ59qafCjB9eCRLiTVG3uxBxgKvRgbubRhqSKXnGGb1aoaqLrpMBDrVxga8"); - - PARSE_POLICY_MAP_KEY_INFO("xpub661MyMwAqRbcFkPHucMnrGNzDwb6teAX1RbKQmqtEF8kK3Z7LZ59qafCjB9eCRLiTVG3uxBxgKvRgbubRhqSKXnGGb1aoaqLrpMBDrVxga8/1/*"); - assert_int_equal(map.master_key_derivation_len, 0); - assert_int_equal(map.has_key_origin, 0); - assert_int_equal(map.wildcard_id, KEY_WILDCARD_INTERNAL_CHAIN); - assert_string_equal(map.ext_pubkey, "xpub661MyMwAqRbcFkPHucMnrGNzDwb6teAX1RbKQmqtEF8kK3Z7LZ59qafCjB9eCRLiTVG3uxBxgKvRgbubRhqSKXnGGb1aoaqLrpMBDrVxga8"); +static void test_miniscript_types(void **state) { + (void) state; + + // tests for miniscript type system + // Tests taken from + // https://github.com/bitcoin/bitcoin/blob/5bf65ec66e5986c9188e3f6234f1c5c0f8dc7f90/src/test/miniscript_tests.cpp, + // except that all key expressions are replaced with placeholders @0/**, @1/**, ... + + // clang-format off + Test("l:older(1)", "?", TESTMODE_VALID | TESTMODE_NONMAL, -1, -1); // older(1): valid + Test("l:older(0)", "?", TESTMODE_INVALID, -1, -1); // older(0): k must be at least 1 + Test("l:older(2147483647)", "?", TESTMODE_VALID | TESTMODE_NONMAL, -1, -1); // older(2147483647): valid + Test("l:older(2147483648)", "?", TESTMODE_INVALID, -1, -1); // older(2147483648): k must be below 2^31 + Test("u:after(1)", "?", TESTMODE_VALID | TESTMODE_NONMAL, -1, -1); // after(1): valid + Test("u:after(0)", "?", TESTMODE_INVALID, -1, -1); // after(0): k must be at least 1 + Test("u:after(2147483647)", "?", TESTMODE_VALID | TESTMODE_NONMAL, -1, -1); // after(2147483647): valid + Test("u:after(2147483648)", "?", TESTMODE_INVALID, -1, -1); // after(2147483648): k must be below 2^31 + Test("andor(0,1,1)", "?", TESTMODE_VALID | TESTMODE_NONMAL, -1, -1); // andor(Bdu,B,B): valid + Test("andor(a:0,1,1)", "?", TESTMODE_INVALID, -1, -1); // andor(Wdu,B,B): X must be B + Test("andor(0,a:1,a:1)", "?", TESTMODE_INVALID, -1, -1); // andor(Bdu,W,W): Y and Z must be B/V/K + Test("andor(1,1,1)", "?", TESTMODE_INVALID, -1, -1); // andor(Bu,B,B): X must be d + Test("andor(n:or_i(0,after(1)),1,1)", "?", TESTMODE_VALID, -1, -1); // andor(Bdu,B,B): valid + Test("andor(or_i(0,after(1)),1,1)", "?", TESTMODE_INVALID, -1, -1); // andor(Bd,B,B): X must be u + Test("c:andor(0,pk_k(@0/**),pk_k(@1/**))", "?", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_NEEDSIG, -1, -1); // andor(Bdu,K,K): valid + Test("t:andor(0,v:1,v:1)", "?", TESTMODE_VALID | TESTMODE_NONMAL, -1, -1); // andor(Bdu,V,V): valid + Test("and_v(v:1,1)", "?", TESTMODE_VALID | TESTMODE_NONMAL, -1, -1); // and_v(V,B): valid + Test("t:and_v(v:1,v:1)", "?", TESTMODE_VALID | TESTMODE_NONMAL, -1, -1); // and_v(V,V): valid + Test("c:and_v(v:1,pk_k(@0/**))", "?", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_NEEDSIG, -1, -1); // and_v(V,K): valid + Test("and_v(1,1)", "?", TESTMODE_INVALID, -1, -1); // and_v(B,B): X must be V + Test("and_v(pk_k(@0/**),1)", "?", TESTMODE_INVALID, -1, -1); // and_v(K,B): X must be V + Test("and_v(v:1,a:1)", "?", TESTMODE_INVALID, -1, -1); // and_v(K,W): Y must be B/V/K + Test("and_b(1,a:1)", "?", TESTMODE_VALID | TESTMODE_NONMAL, -1, -1); // and_b(B,W): valid + Test("and_b(1,1)", "?", TESTMODE_INVALID, -1, -1); // and_b(B,B): Y must W + Test("and_b(v:1,a:1)", "?", TESTMODE_INVALID, -1, -1); // and_b(V,W): X must be B + Test("and_b(a:1,a:1)", "?", TESTMODE_INVALID, -1, -1); // and_b(W,W): X must be B + Test("and_b(pk_k(@0/**),a:1)", "?", TESTMODE_INVALID, -1, -1); // and_b(K,W): X must be B + Test("or_b(0,a:0)", "?", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_NEEDSIG, -1, -1); // or_b(Bd,Wd): valid + Test("or_b(1,a:0)", "?", TESTMODE_INVALID, -1, -1); // or_b(B,Wd): X must be d + Test("or_b(0,a:1)", "?", TESTMODE_INVALID, -1, -1); // or_b(Bd,W): Y must be d + Test("or_b(0,0)", "?", TESTMODE_INVALID, -1, -1); // or_b(Bd,Bd): Y must W + Test("or_b(v:0,a:0)", "?", TESTMODE_INVALID, -1, -1); // or_b(V,Wd): X must be B + Test("or_b(a:0,a:0)", "?", TESTMODE_INVALID, -1, -1); // or_b(Wd,Wd): X must be B + Test("or_b(pk_k(@0/**),a:0)", "?", TESTMODE_INVALID, -1, -1); // or_b(Kd,Wd): X must be B + Test("t:or_c(0,v:1)", "?", TESTMODE_VALID | TESTMODE_NONMAL, -1, -1); // or_c(Bdu,V): valid + Test("t:or_c(a:0,v:1)", "?", TESTMODE_INVALID, -1, -1); // or_c(Wdu,V): X must be B + Test("t:or_c(1,v:1)", "?", TESTMODE_INVALID, -1, -1); // or_c(Bu,V): X must be d + Test("t:or_c(n:or_i(0,after(1)),v:1)", "?", TESTMODE_VALID, -1, -1); // or_c(Bdu,V): valid + Test("t:or_c(or_i(0,after(1)),v:1)", "?", TESTMODE_INVALID, -1, -1); // or_c(Bd,V): X must be u + Test("t:or_c(0,1)", "?", TESTMODE_INVALID, -1, -1); // or_c(Bdu,B): Y must be V + Test("or_d(0,1)", "?", TESTMODE_VALID | TESTMODE_NONMAL, -1, -1); // or_d(Bdu,B): valid + Test("or_d(a:0,1)", "?", TESTMODE_INVALID, -1, -1); // or_d(Wdu,B): X must be B + Test("or_d(1,1)", "?", TESTMODE_INVALID, -1, -1); // or_d(Bu,B): X must be d + Test("or_d(n:or_i(0,after(1)),1)", "?", TESTMODE_VALID, -1, -1); // or_d(Bdu,B): valid + Test("or_d(or_i(0,after(1)),1)", "?", TESTMODE_INVALID, -1, -1); // or_d(Bd,B): X must be u + Test("or_d(0,v:1)", "?", TESTMODE_INVALID, -1, -1); // or_d(Bdu,V): Y must be B + Test("or_i(1,1)", "?", TESTMODE_VALID, -1, -1); // or_i(B,B): valid + Test("t:or_i(v:1,v:1)", "?", TESTMODE_VALID, -1, -1); // or_i(V,V): valid + Test("c:or_i(pk_k(@0/**),pk_k(@1/**))", "?", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_NEEDSIG, -1, -1); // or_i(K,K): valid + Test("or_i(a:1,a:1)", "?", TESTMODE_INVALID, -1, -1); // or_i(W,W): X and Y must be B/V/K + Test("or_b(l:after(100),al:after(1000000000))", "?", TESTMODE_VALID, -1, -1); // or_b(timelock, heighlock) valid + Test("and_b(after(100),a:after(1000000000))", "?", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_TIMELOCKMIX, -1, -1); // and_b(timelock, heighlock) invalid + Test("pk(@0/**)", "2103d30199d74fb5a22d47b6e054e2f378cedacffcb89904a61d75d0dbd407143e65ac", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_NEEDSIG, -1, -1); // alias to c:pk_k + Test("pkh(@0/**)", "76a914fcd35ddacad9f2d5be5e464639441c6065e6955d88ac", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_NEEDSIG, -1, -1); // alias to c:pk_h + + // Randomly generated test set that covers the majority of type and node type combinations + Test("lltvln:after(1231488000)", "6300676300676300670400046749b1926869516868", TESTMODE_VALID | TESTMODE_NONMAL, 12, 4); + Test("uuj:and_v(v:multi(2,@0/**,@1/**),after(1231488000))", "6363829263522103d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a21025601570cb47f238d2b0286db4a990fa0f3ba28d1a319f5e7cf55c2a2444da7cc52af0400046749b168670068670068", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_NEEDSIG | TESTMODE_TAPSCRIPT_INVALID, 14, 6); + Test("or_b(un:multi(2,@0/**,@1/**),al:older(16))", "63522103daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee872921024ce119c96e2fa357200b559b2f7dd5a5f02d5290aff74b03f3e471b273211c9752ae926700686b63006760b2686c9b", TESTMODE_VALID | TESTMODE_TAPSCRIPT_INVALID, 14, 6); + Test("j:and_v(vdv:after(1567547623),older(2016))", "829263766304e7e06e5db169686902e007b268", TESTMODE_VALID | TESTMODE_NONMAL, 11, 2); + Test("t:and_v(vu:hash256(131772552c01444cd81360818376a040b7c3b2b7b0a53550ee3edde216cec61b),v:sha256(ec4916dd28fc4c10d78e287ca5d9cc51ee1ae73cbfde08c6b37324cbfaac8bc5))", "6382012088aa20131772552c01444cd81360818376a040b7c3b2b7b0a53550ee3edde216cec61b876700686982012088a820ec4916dd28fc4c10d78e287ca5d9cc51ee1ae73cbfde08c6b37324cbfaac8bc58851", TESTMODE_VALID | TESTMODE_NONMAL, 12, 4); + Test("t:andor(multi(3,@0/**,@1/**,@2/**),v:older(4194305),v:sha256(9267d3dbed802941483f1afa2a6bc68de5f653128aca9bf1461c5d0a3ad36ed2))", "532102d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e2103fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a14602975562102e493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd1353ae6482012088a8209267d3dbed802941483f1afa2a6bc68de5f653128aca9bf1461c5d0a3ad36ed2886703010040b2696851", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_TAPSCRIPT_INVALID, 13, 6); + Test("or_d(multi(1,@0/**),or_b(multi(3,@1/**,@2/**,@3/**),su:after(500000)))", "512102f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f951ae73645321022f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a0121032fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f2103d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a53ae7c630320a107b16700689b68", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_TAPSCRIPT_INVALID, 15, 8); + Test("or_d(sha256(38df1c1f64a24a77b23393bca50dff872e31edc4f3b5aa3b90ad0b82f4f089b6),and_n(un:after(499999999),older(4194305)))", "82012088a82038df1c1f64a24a77b23393bca50dff872e31edc4f3b5aa3b90ad0b82f4f089b68773646304ff64cd1db19267006864006703010040b26868", TESTMODE_VALID, 16, 2); + Test("and_v(or_i(v:multi(2,@0/**,@1/**),v:multi(2,@2/**,@3/**)),sha256(d1ec675902ef1633427ca360b290b0b3045a0d9058ddb5e648b4c3c3224c5c68))", "63522102c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee52103774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb52af67522103e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a21025cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc52af6882012088a820d1ec675902ef1633427ca360b290b0b3045a0d9058ddb5e648b4c3c3224c5c6887", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_NEEDSIG | TESTMODE_TAPSCRIPT_INVALID, 11, 6); + Test("j:and_b(multi(2,@0/**,@1/**),s:or_i(older(1),older(4252898)))", "82926352210279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f8179821024ce119c96e2fa357200b559b2f7dd5a5f02d5290aff74b03f3e471b273211c9752ae7c6351b26703e2e440b2689a68", TESTMODE_VALID | TESTMODE_NEEDSIG | TESTMODE_TAPSCRIPT_INVALID, 14, 5); + Test("and_b(older(16),s:or_d(sha256(e38990d0c7fc009880a9c07c23842e886c6bbdc964ce6bdd5817ad357335ee6f),n:after(1567547623)))", "60b27c82012088a820e38990d0c7fc009880a9c07c23842e886c6bbdc964ce6bdd5817ad357335ee6f87736404e7e06e5db192689a", TESTMODE_VALID, 12, 2); + Test("j:and_v(v:hash160(20195b5a3d650c17f0f29f91c33f8f6335193d07),or_d(sha256(96de8fc8c256fa1e1556d41af431cace7dca68707c78dd88c3acab8b17164c47),older(16)))", "82926382012088a91420195b5a3d650c17f0f29f91c33f8f6335193d078882012088a82096de8fc8c256fa1e1556d41af431cace7dca68707c78dd88c3acab8b17164c4787736460b26868", TESTMODE_VALID, 16, 3); + Test("and_b(hash256(32ba476771d01e37807990ead8719f08af494723de1d228f2c2c07cc0aa40bac),a:and_b(hash256(131772552c01444cd81360818376a040b7c3b2b7b0a53550ee3edde216cec61b),a:older(1)))", "82012088aa2032ba476771d01e37807990ead8719f08af494723de1d228f2c2c07cc0aa40bac876b82012088aa20131772552c01444cd81360818376a040b7c3b2b7b0a53550ee3edde216cec61b876b51b26c9a6c9a", TESTMODE_VALID | TESTMODE_NONMAL, 15, 3); + Test("thresh(2,multi(2,@0/**,@1/**),a:multi(1,@2/**),ac:pk_k(@3/**))", "522103a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c721036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a0052ae6b5121036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a0051ae6c936b21022f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01ac6c935287", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_NEEDSIG | TESTMODE_TAPSCRIPT_INVALID, 13, 7); + Test("and_n(sha256(d1ec675902ef1633427ca360b290b0b3045a0d9058ddb5e648b4c3c3224c5c68),t:or_i(v:older(4252898),v:older(144)))", "82012088a820d1ec675902ef1633427ca360b290b0b3045a0d9058ddb5e648b4c3c3224c5c68876400676303e2e440b26967029000b269685168", TESTMODE_VALID, 14, 3); + Test("or_d(nd:and_v(v:older(4252898),v:older(4252898)),sha256(38df1c1f64a24a77b23393bca50dff872e31edc4f3b5aa3b90ad0b82f4f089b6))", "766303e2e440b26903e2e440b2696892736482012088a82038df1c1f64a24a77b23393bca50dff872e31edc4f3b5aa3b90ad0b82f4f089b68768", TESTMODE_VALID, 15, 3); + Test("c:and_v(or_c(sha256(9267d3dbed802941483f1afa2a6bc68de5f653128aca9bf1461c5d0a3ad36ed2),v:multi(1,@0/**)),pk_k(@1/**))", "82012088a8209267d3dbed802941483f1afa2a6bc68de5f653128aca9bf1461c5d0a3ad36ed28764512102c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db51af682103acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbeac", TESTMODE_VALID | TESTMODE_NEEDSIG | TESTMODE_TAPSCRIPT_INVALID, 8, 3); + Test("c:and_v(or_c(multi(2,@0/**,@1/**),v:ripemd160(1b0f3c404d12075c68c938f9f60ebea4f74941a0)),pk_k(@2/**))", "5221036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a002102352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d552ae6482012088a6141b0f3c404d12075c68c938f9f60ebea4f74941a088682103fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556ac", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_NEEDSIG | TESTMODE_TAPSCRIPT_INVALID, 10, 6); + Test("and_v(andor(hash256(8a35d9ca92a48eaade6f53a64985e9e2afeb74dcf8acb4c3721e0dc7e4294b25),v:hash256(939894f70e6c3a25da75da0cc2071b4076d9b006563cf635986ada2e93c0d735),v:older(50000)),after(499999999))", "82012088aa208a35d9ca92a48eaade6f53a64985e9e2afeb74dcf8acb4c3721e0dc7e4294b2587640350c300b2696782012088aa20939894f70e6c3a25da75da0cc2071b4076d9b006563cf635986ada2e93c0d735886804ff64cd1db1", TESTMODE_VALID, 14, 3); + Test("andor(hash256(5f8d30e655a7ba0d7596bb3ddfb1d2d20390d23b1845000e1e118b3be1b3f040),j:and_v(v:hash160(3a2bff0da9d96868e66abc4427bea4691cf61ccd),older(4194305)),ripemd160(44d90e2d3714c8663b632fcf0f9d5f22192cc4c8))", "82012088aa205f8d30e655a7ba0d7596bb3ddfb1d2d20390d23b1845000e1e118b3be1b3f040876482012088a61444d90e2d3714c8663b632fcf0f9d5f22192cc4c8876782926382012088a9143a2bff0da9d96868e66abc4427bea4691cf61ccd8803010040b26868", TESTMODE_VALID, 20, 3); + Test("or_i(c:and_v(v:after(500000),pk_k(@0/**)),sha256(d9147961436944f43cd99d28b2bbddbf452ef872b30c8279e255e7daafc7f946))", "630320a107b1692102c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5ac6782012088a820d9147961436944f43cd99d28b2bbddbf452ef872b30c8279e255e7daafc7f9468768", TESTMODE_VALID | TESTMODE_NONMAL, 10, 3); + Test("thresh(2,c:pk_h(@0/**),s:sha256(e38990d0c7fc009880a9c07c23842e886c6bbdc964ce6bdd5817ad357335ee6f),a:hash160(dd69735817e0e3f6f826a9238dc2e291184f0131))", "76a9145dedfbf9ea599dd4e3ca6a80b333c472fd0b3f6988ac7c82012088a820e38990d0c7fc009880a9c07c23842e886c6bbdc964ce6bdd5817ad357335ee6f87936b82012088a914dd69735817e0e3f6f826a9238dc2e291184f0131876c935287", TESTMODE_VALID, 18, 5); + Test("and_n(sha256(9267d3dbed802941483f1afa2a6bc68de5f653128aca9bf1461c5d0a3ad36ed2),uc:and_v(v:older(144),pk_k(@0/**)))", "82012088a8209267d3dbed802941483f1afa2a6bc68de5f653128aca9bf1461c5d0a3ad36ed28764006763029000b2692103fe72c435413d33d48ac09c9161ba8b09683215439d62b7940502bda8b202e6ceac67006868", TESTMODE_VALID | TESTMODE_NEEDSIG, 13, 4); + Test("and_n(c:pk_k(@0/**),and_b(l:older(4252898),a:older(16)))", "2103daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729ac64006763006703e2e440b2686b60b26c9a68", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_NEEDSIG | TESTMODE_TIMELOCKMIX, 12, 3); + Test("c:or_i(and_v(v:older(16),pk_h(@0/**)),pk_h(@1/**))", "6360b26976a9149fc5dbe5efdce10374a4dd4053c93af540211718886776a9142fbd32c8dd59ee7c17e66cb6ebea7e9846c3040f8868ac", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_NEEDSIG, 12, 4); + Test("or_d(c:pk_h(@0/**),andor(c:pk_k(@1/**),older(2016),after(1567547623)))", "76a914c42e7ef92fdb603af844d064faad95db9bcdfd3d88ac736421024ce119c96e2fa357200b559b2f7dd5a5f02d5290aff74b03f3e471b273211c97ac6404e7e06e5db16702e007b26868", TESTMODE_VALID | TESTMODE_NONMAL, 13, 4); + Test("c:andor(ripemd160(6ad07d21fd5dfc646f0b30577045ce201616b9ba),pk_h(@0/**),and_v(v:hash256(8a35d9ca92a48eaade6f53a64985e9e2afeb74dcf8acb4c3721e0dc7e4294b25),pk_h(@1/**)))", "82012088a6146ad07d21fd5dfc646f0b30577045ce201616b9ba876482012088aa208a35d9ca92a48eaade6f53a64985e9e2afeb74dcf8acb4c3721e0dc7e4294b258876a914dd100be7d9aea5721158ebde6d6a1fd8fff93bb1886776a9149fc5dbe5efdce10374a4dd4053c93af5402117188868ac", TESTMODE_VALID | TESTMODE_NEEDSIG, 18, 4); + Test("c:andor(u:ripemd160(6ad07d21fd5dfc646f0b30577045ce201616b9ba),pk_h(@0/**),or_i(pk_h(@1/**),pk_h(@2/**)))", "6382012088a6146ad07d21fd5dfc646f0b30577045ce201616b9ba87670068646376a9149652d86bedf43ad264362e6e6eba6eb764508127886776a914751e76e8199196d454941c45d1b3a323f1433bd688686776a91420d637c1a6404d2227f3561fdbaff5a680dba6488868ac", TESTMODE_VALID | TESTMODE_NEEDSIG, 23, 5); + Test("c:or_i(andor(c:pk_h(@0/**),pk_h(@1/**),pk_h(@2/**)),pk_k(@3/**))", "6376a914fcd35ddacad9f2d5be5e464639441c6065e6955d88ac6476a91406afd46bcdfd22ef94ac122aa11f241244a37ecc886776a9149652d86bedf43ad264362e6e6eba6eb7645081278868672102d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e68ac", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_NEEDSIG, 17, 6); + Test("thresh(1,c:pk_k(@0/**),altv:after(1000000000),altv:after(100))", "2103d30199d74fb5a22d47b6e054e2f378cedacffcb89904a61d75d0dbd407143e65ac6b6300670400ca9a3bb16951686c936b6300670164b16951686c935187", TESTMODE_VALID, 18, 4); + Test("thresh(2,c:pk_k(@0/**),ac:pk_k(@1/**),altv:after(1000000000),altv:after(100))", "2103d30199d74fb5a22d47b6e054e2f378cedacffcb89904a61d75d0dbd407143e65ac6b2103fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556ac6c936b6300670400ca9a3bb16951686c936b6300670164b16951686c935287", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_TIMELOCKMIX, 22, 5); + + // Additional Tapscript-related tests + Test("and_v(v:multi_a(2,@0/**,@1/**),after(1231488000))", "20d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85aac205601570cb47f238d2b0286db4a990fa0f3ba28d1a319f5e7cf55c2a2444da7ccba529d0400046749b1", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_NEEDSIG | TESTMODE_P2WSH_INVALID, 4, 3); + + // Since 'd:' is 'u' we can use it directly inside a thresh. But we can't under P2WSH. + Test("thresh(2,dv:older(42),s:pk(@0/**),s:pk(@1/**))", "7663012ab269687c205cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bcac937c20d30199d74fb5a22d47b6e054e2f378cedacffcb89904a61d75d0dbd407143e65ac935287", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_NEEDSIG | TESTMODE_P2WSH_INVALID, 12, 4); + + // clang-format on } -int main(void) { +int main() { const struct CMUnitTest tests[] = { cmocka_unit_test(test_parse_policy_map_singlesig_1), cmocka_unit_test(test_parse_policy_map_singlesig_2), @@ -302,9 +628,11 @@ int main(void) { cmocka_unit_test(test_parse_policy_map_multisig_1), cmocka_unit_test(test_parse_policy_map_multisig_2), cmocka_unit_test(test_parse_policy_map_multisig_3), + cmocka_unit_test(test_parse_policy_tr), + cmocka_unit_test(test_parse_policy_tr_multisig), + cmocka_unit_test(test_get_policy_segwit_version), cmocka_unit_test(test_failures), - cmocka_unit_test(test_policy_is_multisig), - cmocka_unit_test(test_parse_policy_map_key_info) + cmocka_unit_test(test_miniscript_types), }; return cmocka_run_group_tests(tests, NULL, NULL);