From 727b459633412cc8f3dd32d13af72cbdc25de7ef Mon Sep 17 00:00:00 2001 From: "snguyen.ntu@gmail.com" Date: Mon, 19 Feb 2018 01:03:35 +0700 Subject: [PATCH] Initial commit. Refactored to XZC --- AUTHORS | 4 +- Info.plist | 4 +- MANIFEST.in | 6 +- README.rst | 53 +- RELEASE-NOTES | 47 - contrib/build-wine/build-electrum-git.sh | 27 +- contrib/build-wine/build.sh | 4 +- contrib/build-wine/deterministic.spec | 30 +- contrib/build-wine/electrum.nsi | 26 +- contrib/build-wine/prepare-hw.sh | 28 + contrib/build-wine/prepare-pyinstaller.sh | 24 + contrib/build-wine/prepare-wine.sh | 39 +- contrib/freeze_packages.sh | 18 +- contrib/make_download | 14 +- contrib/make_osx | 6 + contrib/make_packages | 2 +- contrib/osx.spec | 87 + contrib/requirements.txt | 15 + electrum | 8 +- electrum-env | 2 +- electrum-xzc | 443 ++ electrum-xzc.conf.sample | 16 + electrum-xzc.desktop | 17 + electrum.icns | Bin 830527 -> 790464 bytes exlib/lyra2z-py/Lyra2.c | 197 + exlib/lyra2z-py/Lyra2.h | 51 + exlib/lyra2z-py/README.md | 55 + exlib/lyra2z-py/Sponge.c | 832 +++ exlib/lyra2z-py/Sponge.h | 107 + exlib/lyra2z-py/blake.c | 1121 ++++ exlib/lyra2z-py/lyra2z-zcoin.c | 44 + exlib/lyra2z-py/lyra2z-zcoin.h | 13 + exlib/lyra2z-py/lyra2z-zcoin.sln | 28 + exlib/lyra2z-py/lyra2z.c | 117 + exlib/lyra2z-py/lyra2z.h | 7 + exlib/lyra2z-py/lyra2z_hash.egg-info/PKG-INFO | 11 + .../lyra2z_hash.egg-info/SOURCES.txt | 11 + .../lyra2z_hash.egg-info/dependency_links.txt | 1 + .../lyra2z_hash.egg-info/top_level.txt | 1 + exlib/lyra2z-py/lyra2zmodule.c | 57 + exlib/lyra2z-py/setup.py | 19 + exlib/lyra2z-py/sph_blake.h | 327 ++ exlib/lyra2z-py/sph_types.h | 1986 ++++++++ exlib/lyra2z-py/test.py | 12 + gui/kivy/Makefile | 2 +- gui/kivy/i18n.py | 2 +- gui/kivy/main.kv | 2 +- gui/kivy/main_window.py | 70 +- gui/kivy/nfc_scanner/__init__.py | 2 +- gui/kivy/nfc_scanner/scanner_android.py | 10 +- gui/kivy/nfc_scanner/scanner_dummy.py | 2 +- gui/kivy/tools/bitcoin_intent.xml | 2 +- gui/kivy/tools/buildozer.spec | 6 +- gui/kivy/uix/context_menu.py | 2 +- gui/kivy/uix/dialogs/__init__.py | 2 +- gui/kivy/uix/dialogs/bump_fee_dialog.py | 6 +- gui/kivy/uix/dialogs/fee_dialog.py | 78 +- gui/kivy/uix/dialogs/fx_dialog.py | 2 +- gui/kivy/uix/dialogs/installwizard.py | 14 +- gui/kivy/uix/dialogs/nfc_transaction.py | 4 +- gui/kivy/uix/dialogs/qr_scanner.py | 2 +- gui/kivy/uix/dialogs/question.py | 2 +- gui/kivy/uix/dialogs/settings.py | 23 +- gui/kivy/uix/dialogs/tx_dialog.py | 8 +- gui/kivy/uix/dialogs/wallets.py | 2 +- gui/kivy/uix/menus.py | 2 +- gui/kivy/uix/screens.py | 34 +- gui/kivy/uix/ui_screens/about.kv | 8 +- gui/kivy/uix/ui_screens/address.kv | 8 +- gui/kivy/uix/ui_screens/history.kv | 2 +- gui/kivy/uix/ui_screens/network.kv | 4 +- gui/kivy/uix/ui_screens/receive.kv | 4 +- gui/kivy/uix/ui_screens/send.kv | 2 +- gui/kivy/uix/ui_screens/status.kv | 2 +- gui/qt/__init__.py | 41 +- gui/qt/address_dialog.py | 2 +- gui/qt/address_list.py | 34 +- gui/qt/amountedit.py | 13 +- gui/qt/console.py | 5 +- gui/qt/contact_list.py | 17 +- gui/qt/exception_window.py | 12 +- gui/qt/fee_slider.py | 35 +- gui/qt/history_list.py | 74 +- gui/qt/installwizard.py | 111 +- gui/qt/invoice_list.py | 11 +- gui/qt/main_window.py | 281 +- gui/qt/network_dialog.py | 8 +- gui/qt/password_dialog.py | 119 +- gui/qt/paytoedit.py | 8 +- gui/qt/qrcodewidget.py | 6 +- gui/qt/qrtextedit.py | 6 +- gui/qt/qrwindow.py | 6 +- gui/qt/request_list.py | 10 +- gui/qt/seed_dialog.py | 8 +- gui/qt/transaction_dialog.py | 23 +- gui/qt/util.py | 12 +- gui/qt/utxo_list.py | 2 +- gui/stdio.py | 14 +- gui/text.py | 12 +- icons.qrc | 2 +- icons/electrum-xzc.png | Bin 0 -> 8697 bytes icons/electrum.ico | Bin 51631 -> 289766 bytes icons/electrum_dark_icon.png | Bin 1268 -> 1401 bytes icons/electrum_launcher.png | Bin 12312 -> 8747 bytes icons/electrum_light_icon.png | Bin 1268 -> 1401 bytes icons/electrum_presplash.png | Bin 19127 -> 20301 bytes lib/base_wizard.py | 126 +- lib/bitcoin.py | 57 +- lib/blockchain.py | 78 +- lib/checkpoints.json | 991 +--- lib/checkpoints_testnet.json | 4521 ++--------------- lib/coinchooser.py | 20 +- lib/commands.py | 115 +- lib/contacts.py | 15 +- lib/currencies.json | 815 +-- lib/daemon.py | 17 +- lib/exchange_rate.py | 302 +- lib/i18n.py | 9 +- lib/keystore.py | 22 +- lib/network.py | 11 +- lib/paymentrequest.py | 22 +- lib/paymentrequest_pb2.py | 9 +- lib/plot.py | 6 +- lib/plugins.py | 43 +- lib/scrypt.py | 267 + lib/servers.json | 225 +- lib/servers_testnet.json | 8 +- lib/simple_config.py | 146 +- lib/storage.py | 101 +- lib/tests/test_bitcoin.py | 50 +- lib/tests/test_storage_upgrade.py | 96 +- lib/tests/test_transaction.py | 407 +- lib/tests/test_util.py | 40 +- lib/tests/test_wallet_vertical.py | 75 +- lib/transaction.py | 135 +- lib/util.py | 91 +- lib/version.py | 4 +- lib/wallet.py | 540 +- plugins/audio_modem/__init__.py | 2 +- plugins/audio_modem/qt.py | 8 +- plugins/cosigner_pool/__init__.py | 2 +- plugins/cosigner_pool/qt.py | 18 +- plugins/digitalbitbox/__init__.py | 2 +- plugins/digitalbitbox/cmdline.py | 2 +- plugins/digitalbitbox/digitalbitbox.py | 25 +- plugins/digitalbitbox/qt.py | 8 +- plugins/email_requests/__init__.py | 2 +- plugins/email_requests/qt.py | 18 +- plugins/hw_wallet/cmdline.py | 2 +- plugins/hw_wallet/plugin.py | 11 +- plugins/hw_wallet/qt.py | 35 +- plugins/keepkey/__init__.py | 2 +- plugins/keepkey/clientbase.py | 56 +- plugins/keepkey/cmdline.py | 2 +- plugins/keepkey/plugin.py | 39 +- plugins/keepkey/qt_generic.py | 40 +- plugins/labels/__init__.py | 2 +- plugins/labels/kivy.py | 2 +- plugins/labels/labels.py | 6 +- plugins/labels/qt.py | 10 +- plugins/ledger/__init__.py | 2 +- plugins/ledger/auth2fa.py | 10 +- plugins/ledger/cmdline.py | 2 +- plugins/ledger/ledger.py | 38 +- plugins/ledger/qt.py | 8 +- plugins/trezor/__init__.py | 2 +- plugins/trezor/clientbase.py | 56 +- plugins/trezor/cmdline.py | 2 +- plugins/trezor/plugin.py | 411 ++ plugins/trezor/qt_generic.py | 51 +- plugins/trezor/trezor.py | 453 +- plugins/virtualkeyboard/__init__.py | 2 +- plugins/virtualkeyboard/qt.py | 4 +- pubkeys/pooler.asc | 44 + requirements_travis.txt | 3 + scripts/bip70 | 8 +- scripts/block_headers | 4 +- scripts/get_history | 8 +- scripts/peers | 4 +- scripts/servers | 4 +- scripts/util.py | 6 +- scripts/watch_address | 6 +- setup.py | 76 +- snap/snapcraft.yaml | 14 +- 184 files changed, 8711 insertions(+), 9263 deletions(-) create mode 100755 contrib/build-wine/prepare-hw.sh create mode 100755 contrib/build-wine/prepare-pyinstaller.sh create mode 100755 contrib/make_osx create mode 100644 contrib/osx.spec create mode 100644 contrib/requirements.txt create mode 100755 electrum-xzc create mode 100644 electrum-xzc.conf.sample create mode 100644 electrum-xzc.desktop create mode 100644 exlib/lyra2z-py/Lyra2.c create mode 100644 exlib/lyra2z-py/Lyra2.h create mode 100644 exlib/lyra2z-py/README.md create mode 100644 exlib/lyra2z-py/Sponge.c create mode 100644 exlib/lyra2z-py/Sponge.h create mode 100644 exlib/lyra2z-py/blake.c create mode 100644 exlib/lyra2z-py/lyra2z-zcoin.c create mode 100644 exlib/lyra2z-py/lyra2z-zcoin.h create mode 100644 exlib/lyra2z-py/lyra2z-zcoin.sln create mode 100644 exlib/lyra2z-py/lyra2z.c create mode 100644 exlib/lyra2z-py/lyra2z.h create mode 100644 exlib/lyra2z-py/lyra2z_hash.egg-info/PKG-INFO create mode 100644 exlib/lyra2z-py/lyra2z_hash.egg-info/SOURCES.txt create mode 100644 exlib/lyra2z-py/lyra2z_hash.egg-info/dependency_links.txt create mode 100644 exlib/lyra2z-py/lyra2z_hash.egg-info/top_level.txt create mode 100644 exlib/lyra2z-py/lyra2zmodule.c create mode 100644 exlib/lyra2z-py/setup.py create mode 100644 exlib/lyra2z-py/sph_blake.h create mode 100644 exlib/lyra2z-py/sph_types.h create mode 100644 exlib/lyra2z-py/test.py create mode 100644 icons/electrum-xzc.png create mode 100644 lib/scrypt.py create mode 100644 plugins/trezor/plugin.py create mode 100644 pubkeys/pooler.asc create mode 100644 requirements_travis.txt diff --git a/AUTHORS b/AUTHORS index 9cff06784e0c..936932dcc678 100644 --- a/AUTHORS +++ b/AUTHORS @@ -9,4 +9,6 @@ Genjix - Porting pro-mode functionality to lite-gui and worked on server Slush - Work on the server. Designed the original Stratum spec. Julian Toash (Tuxavant) - Various fixes to the client. rdymac - Website and translations. -kyuupichan - Miscellaneous. \ No newline at end of file +kyuupichan - Miscellaneous. +pooler - Litecoin port. +sn-ntu - Zcoin port. diff --git a/Info.plist b/Info.plist index a8f58f733958..22c46a94aa26 100644 --- a/Info.plist +++ b/Info.plist @@ -6,10 +6,10 @@ CFBundleURLName - bitcoin + zcoin CFBundleURLSchemes - bitcoin + zcoin diff --git a/MANIFEST.in b/MANIFEST.in index 4fa5491a6d48..cb52871c28ff 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,9 +1,9 @@ include LICENCE RELEASE-NOTES AUTHORS include README.rst -include electrum.conf.sample -include electrum.desktop +include electrum-xzc.conf.sample +include electrum-xzc.desktop include *.py -include electrum +include electrum-xzc recursive-include lib *.py recursive-include gui *.py recursive-include plugins *.py diff --git a/README.rst b/README.rst index 9b183235477a..fbc11c3fe3a3 100644 --- a/README.rst +++ b/README.rst @@ -1,20 +1,13 @@ -Electrum - Lightweight Bitcoin client -===================================== +Electrum-XZC - Lightweight Zcoin client +======================================= :: Licence: MIT Licence - Author: Thomas Voegtlin + Original Author: Thomas Voegtlin + Port Maintainer: Pooler, SN Language: Python - Homepage: https://electrum.org/ - - -.. image:: https://travis-ci.org/spesmilo/electrum.svg?branch=master - :target: https://travis-ci.org/spesmilo/electrum - :alt: Build Status -.. image:: https://coveralls.io/repos/github/spesmilo/electrum/badge.svg?branch=master - :target: https://coveralls.io/github/spesmilo/electrum?branch=master - :alt: Test coverage statistics + Homepage: https://electrum.zcoin.io/ @@ -34,7 +27,7 @@ Electrum from its root directory, without installing it on your system; all the python dependencies are included in the 'packages' directory. To run Electrum from its root directory, just do:: - ./electrum + ./electrum-xzc You can also install Electrum on your system, by running this command:: @@ -53,10 +46,32 @@ Version". Development version =================== +ElectrumX developer decided to use newer Python 3 which isn't installed on many operating systems by default. Let's install it manually:: + + sudo add-apt-repository ppa:jonathonf/python-3.6 + sudo apt-get update && sudo apt-get install python3.6 python3.6-dev python3-pip python3-pyqt5 + +To make python3 use the new installed python 3.6 instead of the default 3.5 release, run following 3 commands:: + + sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1 + sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2 + sudo update-alternatives --config python3 + +Install dependencies:: + + sudo apt-get install pyqt5-dev-tools protobuf-compiler python-requests gettext + pip3 install --upgrade pip setuptools wheel + Check out the code from Github:: - git clone git://github.com/spesmilo/electrum.git - cd electrum + git clone git://github.com/sn-ntu/electrum-xzc.git + cd electrum-xzc + +Install lyra2z lib:: + + cd ./exlib/lyra2z-py/ + sudo python3 setup.py install + cd ../../ Run install (this should install dependencies):: @@ -64,17 +79,14 @@ Run install (this should install dependencies):: Compile the icons file for Qt:: - sudo apt-get install pyqt5-dev-tools pyrcc5 icons.qrc -o gui/qt/icons_rc.py Compile the protobuf description file:: - sudo apt-get install protobuf-compiler protoc --proto_path=lib/ --python_out=lib/ lib/paymentrequest.proto Create translations (optional):: - sudo apt-get install python-requests gettext ./contrib/make_locale @@ -93,12 +105,13 @@ This directory contains the python dependencies used by Electrum. Mac OS X / macOS -------- -See `contrib/build-osx/`. +See `contrib/build-osx/README`. + Windows ------- -See `contrib/build-wine/`. +See `contrib/build-wine/README` file. Android diff --git a/RELEASE-NOTES b/RELEASE-NOTES index ddadee13d6b4..2a06061e836b 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -1,50 +1,3 @@ -# Release 3.1 - (to be released) - - * Mempory pool based fee estimates. If this option is activated, - users can set transaction fees that target a desired depth in the - memory pool. This feature might be controversial, because miners - could conspire and fill the memory pool with expensive transactions - that never get mined. However, our current time-based fee estimates - results in sticky fees, which cause inexperienced users to overpay, - while more advanced users visit (and trust) websites that display - memorypool data, and set their fee accordingly. - * Local transactions: Transactions that have not been broadcasted can - be saved in the wallet file, and their outputs can be used in - subsequent transactions. Transactions that disapear from the memory - pool stay in the wallet, and can be rebroadcasted. This feature can - be combined with cold storage, to create several transactions - before broadcasting. - * The initial headers download was replaced with hardcoded - checkpoints, one per retargeting period. Past headers are - downloaded when needed. - * The two coin selection policies have been merged, and the policy - choice was removed from preferences. Previously, the 'privacy' - policy has been unusable because it was was not prioritizing - confirmed coins. - * The 'Send' tab of the Qt GUI displays how transaction fees are - computed from transaction size. - * RBF is enabled by default. This might cause some issues with - merchants that use wallets that do not display RBF transactions - until they are confirmed. - * Watching-only wallets and hardware wallets can be encrypted. - * Semi-automated crash reporting - * The SSL checkbox option was removed from the GUI. - * Capital gains: For each outgoing transaction, the difference - between the acquisition and liquidation prices of outgoing coins is - displayed in the wallet history. By default, historical exchange - rates are used to compute acquisition and liquidation prices. These - value can also be entered manually, in order to match the actual - price realized by the user. The order of liquidation of coins is - the natural order defined by the blockchain; this results in - capital gain values that are invariant to changes in the set of - addresses that are in the wallet. Any other ordering strategy (such - as FIFO, LIFO) would result in capital gain values that depend on - the set of addresses in the wallet. - - -# Release 3.0.6 : - * Fix transaction parsing bug #3788 - # Release 3.0.5 : (Security update) This is a follow-up to the 3.0.4 release, which did not completely fix diff --git a/contrib/build-wine/build-electrum-git.sh b/contrib/build-wine/build-electrum-git.sh index a8f743588f98..0878eaefc8f2 100755 --- a/contrib/build-wine/build-electrum-git.sh +++ b/contrib/build-wine/build-electrum-git.sh @@ -1,6 +1,6 @@ #!/bin/bash -NAME_ROOT=electrum +NAME_ROOT=electrum-xzc PYTHON_VERSION=3.5.4 # These settings probably don't need any change @@ -18,19 +18,19 @@ set -e cd tmp -for repo in electrum electrum-locale electrum-icons; do +for repo in electrum-xzc electrum-xzc-locale electrum-xzc-icons; do if [ -d $repo ]; then cd $repo git pull git checkout master cd .. else - URL=https://github.com/spesmilo/$repo.git + URL=https://github.com/sn-ntu/$repo.git git clone -b master $URL $repo fi done -pushd electrum-locale +pushd electrum-xzc-locale for i in ./locale/*; do dir=$i/LC_MESSAGES mkdir -p $dir @@ -38,7 +38,7 @@ for i in ./locale/*; do done popd -pushd electrum +pushd electrum-xzc if [ ! -z "$1" ]; then git checkout $1 fi @@ -48,17 +48,16 @@ echo "Last commit: $VERSION" find -exec touch -d '2000-11-11T11:11:11+00:00' {} + popd -rm -rf $WINEPREFIX/drive_c/electrum -cp -r electrum $WINEPREFIX/drive_c/electrum -cp electrum/LICENCE . -cp -r electrum-locale/locale $WINEPREFIX/drive_c/electrum/lib/ -cp electrum-icons/icons_rc.py $WINEPREFIX/drive_c/electrum/gui/qt/ +rm -rf $WINEPREFIX/drive_c/electrum-xzc +cp -r electrum-xzc $WINEPREFIX/drive_c/electrum-xzc +cp electrum-xzc/LICENCE . +cp -r electrum-xzc-locale/locale $WINEPREFIX/drive_c/electrum-xzc/lib/ +cp electrum-xzc-icons/icons_rc.py $WINEPREFIX/drive_c/electrum-xzc/gui/qt/ # Install frozen dependencies -$PYTHON -m pip install -r ../../deterministic-build/requirements.txt -$PYTHON -m pip install -r ../../deterministic-build/requirements-hw.txt +$PYTHON -m pip install -r ../../requirements.txt -pushd $WINEPREFIX/drive_c/electrum +pushd $WINEPREFIX/drive_c/electrum-xzc $PYTHON setup.py install popd @@ -79,7 +78,7 @@ popd wine "$WINEPREFIX/drive_c/Program Files (x86)/NSIS/makensis.exe" /DPRODUCT_VERSION=$VERSION electrum.nsi cd dist -mv electrum-setup.exe $NAME_ROOT-$VERSION-setup.exe +mv electrum-xzc-setup.exe $NAME_ROOT-$VERSION-setup.exe cd .. echo "Done." diff --git a/contrib/build-wine/build.sh b/contrib/build-wine/build.sh index 8bf650626c9b..efd23bc17c0f 100755 --- a/contrib/build-wine/build.sh +++ b/contrib/build-wine/build.sh @@ -13,7 +13,9 @@ echo "Clearing $here/build and $here/dist..." rm "$here"/build/* -rf rm "$here"/dist/* -rf -$here/prepare-wine.sh || exit 1 +$here/prepare-wine.sh && \ +$here/prepare-pyinstaller.sh && \ +$here/prepare-hw.sh || exit 1 echo "Resetting modification time in C:\Python..." # (Because of some bugs in pyinstaller) diff --git a/contrib/build-wine/deterministic.spec b/contrib/build-wine/deterministic.spec index 3dc5953b537b..80f13e4586f4 100644 --- a/contrib/build-wine/deterministic.spec +++ b/contrib/build-wine/deterministic.spec @@ -11,36 +11,38 @@ else: raise BaseException('no name') -home = 'C:\\electrum\\' +home = 'C:\\electrum-xzc\\' # see https://github.com/pyinstaller/pyinstaller/issues/2005 hiddenimports = [] hiddenimports += collect_submodules('trezorlib') hiddenimports += collect_submodules('btchip') hiddenimports += collect_submodules('keepkeylib') +hiddenimports += ['_scrypt'] datas = [ - (home+'lib/currencies.json', 'electrum'), - (home+'lib/servers.json', 'electrum'), - (home+'lib/checkpoints.json', 'electrum'), - (home+'lib/servers_testnet.json', 'electrum'), - (home+'lib/checkpoints_testnet.json', 'electrum'), - (home+'lib/wordlist/english.txt', 'electrum/wordlist'), - (home+'lib/locale', 'electrum/locale'), - (home+'plugins', 'electrum_plugins'), + (home+'lib/currencies.json', 'electrum_xzc'), + (home+'lib/servers.json', 'electrum_xzc'), + (home+'lib/checkpoints.json', 'electrum_xzc'), + (home+'lib/servers_testnet.json', 'electrum_xzc'), + (home+'lib/checkpoints_testnet.json', 'electrum_xzc'), + (home+'lib/wordlist/english.txt', 'electrum_xzc/wordlist'), + (home+'lib/locale', 'electrum_xzc/locale'), + (home+'plugins', 'electrum_xzc_plugins'), ] datas += collect_data_files('trezorlib') datas += collect_data_files('btchip') datas += collect_data_files('keepkeylib') # We don't put these files in to actually include them in the script but to make the Analysis method scan them for imports -a = Analysis([home+'electrum', +a = Analysis([home+'electrum-xzc', home+'gui/qt/main_window.py', home+'gui/text.py', home+'lib/util.py', home+'lib/wallet.py', home+'lib/simple_config.py', home+'lib/bitcoin.py', + home+'lib/blockchain.py', home+'lib/dnssec.py', home+'lib/commands.py', home+'plugins/cosigner_pool/qt.py', @@ -77,7 +79,7 @@ exe_standalone = EXE( a.scripts, a.binaries, a.datas, - name=os.path.join('build\\pyi.win32\\electrum', cmdline_name + ".exe"), + name=os.path.join('build\\pyi.win32\\electrum-xzc', cmdline_name + ".exe"), debug=False, strip=None, upx=False, @@ -90,7 +92,7 @@ exe_portable = EXE( a.scripts, a.binaries, a.datas + [ ('is_portable', 'README.md', 'DATA' ) ], - name=os.path.join('build\\pyi.win32\\electrum', cmdline_name + "-portable.exe"), + name=os.path.join('build\\pyi.win32\\electrum-xzc', cmdline_name + "-portable.exe"), debug=False, strip=None, upx=False, @@ -104,7 +106,7 @@ exe_dependent = EXE( pyz, a.scripts, exclude_binaries=True, - name=os.path.join('build\\pyi.win32\\electrum', cmdline_name), + name=os.path.join('build\\pyi.win32\\electrum-xzc', cmdline_name), debug=False, strip=None, upx=False, @@ -121,4 +123,4 @@ coll = COLLECT( debug=False, icon=home+'icons/electrum.ico', console=False, - name=os.path.join('dist', 'electrum')) + name=os.path.join('dist', 'electrum-xzc')) diff --git a/contrib/build-wine/electrum.nsi b/contrib/build-wine/electrum.nsi index 0a30033257ea..d70747b2a304 100644 --- a/contrib/build-wine/electrum.nsi +++ b/contrib/build-wine/electrum.nsi @@ -6,8 +6,8 @@ ;-------------------------------- ;Variables - !define PRODUCT_NAME "Electrum" - !define PRODUCT_WEB_SITE "https://github.com/spesmilo/electrum" + !define PRODUCT_NAME "Electrum-XZC" + !define PRODUCT_WEB_SITE "https://github.com/sn-ntu/electrum-xzc" !define PRODUCT_PUBLISHER "Electrum Technologies GmbH" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" @@ -16,7 +16,7 @@ ;Name and file Name "${PRODUCT_NAME}" - OutFile "dist/electrum-setup.exe" + OutFile "dist/electrum-xzc-setup.exe" ;Default installation folder InstallDir "$PROGRAMFILES\${PRODUCT_NAME}" @@ -72,7 +72,7 @@ !define MUI_ABORTWARNING !define MUI_ABORTWARNING_TEXT "Are you sure you wish to abort the installation of ${PRODUCT_NAME}?" - !define MUI_ICON "tmp\electrum\icons\electrum.ico" + !define MUI_ICON "tmp\electrum-xzc\icons\electrum.ico" ;-------------------------------- ;Pages @@ -110,7 +110,7 @@ Section Delete "$SMPROGRAMS\${PRODUCT_NAME}\*.*" ;Files to pack into the installer - File /r "dist\electrum\*.*" + File /r "dist\electrum-xzc\*.*" File "..\..\icons\electrum.ico" ;Store installation folder @@ -122,21 +122,21 @@ Section ;Create desktop shortcut DetailPrint "Creating desktop shortcut..." - CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\electrum-${PRODUCT_VERSION}.exe" "" + CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\electrum-xzc-${PRODUCT_VERSION}.exe" "" ;Create start-menu items DetailPrint "Creating start-menu items..." CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}" CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0 - CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\electrum-${PRODUCT_VERSION}.exe" "" "$INSTDIR\electrum-${PRODUCT_VERSION}.exe" 0 - CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Testnet.lnk" "$INSTDIR\electrum-${PRODUCT_VERSION}.exe" "--testnet" "$INSTDIR\electrum-${PRODUCT_VERSION}.exe" 0 + CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\electrum-xzc-${PRODUCT_VERSION}.exe" "" "$INSTDIR\electrum-xzc-${PRODUCT_VERSION}.exe" 0 + CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Testnet.lnk" "$INSTDIR\electrum-xzc-${PRODUCT_VERSION}.exe" "--testnet" "$INSTDIR\electrum-xzc-${PRODUCT_VERSION}.exe" 0 ;Links bitcoin: URI's to Electrum - WriteRegStr HKCU "Software\Classes\bitcoin" "" "URL:bitcoin Protocol" - WriteRegStr HKCU "Software\Classes\bitcoin" "URL Protocol" "" - WriteRegStr HKCU "Software\Classes\bitcoin" "DefaultIcon" "$\"$INSTDIR\electrum.ico, 0$\"" - WriteRegStr HKCU "Software\Classes\bitcoin\shell\open\command" "" "$\"$INSTDIR\electrum-${PRODUCT_VERSION}.exe$\" $\"%1$\"" + WriteRegStr HKCU "Software\Classes\zcoin" "" "URL:zcoin Protocol" + WriteRegStr HKCU "Software\Classes\zcoin" "URL Protocol" "" + WriteRegStr HKCU "Software\Classes\zcoin" "DefaultIcon" "$\"$INSTDIR\electrum.ico, 0$\"" + WriteRegStr HKCU "Software\Classes\zcoin\shell\open\command" "" "$\"$INSTDIR\electrum-xzc-${PRODUCT_VERSION}.exe$\" $\"%1$\"" ;Adds an uninstaller possibilty to Windows Uninstall or change a program section WriteRegStr HKCU "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" @@ -167,7 +167,7 @@ Section "Uninstall" Delete "$SMPROGRAMS\${PRODUCT_NAME}\*.*" RMDir "$SMPROGRAMS\${PRODUCT_NAME}" - DeleteRegKey HKCU "Software\Classes\bitcoin" + DeleteRegKey HKCU "Software\Classes\zcoin" DeleteRegKey HKCU "Software\${PRODUCT_NAME}" DeleteRegKey HKCU "${PRODUCT_UNINST_KEY}" SectionEnd diff --git a/contrib/build-wine/prepare-hw.sh b/contrib/build-wine/prepare-hw.sh new file mode 100755 index 000000000000..1851b7b0ffd9 --- /dev/null +++ b/contrib/build-wine/prepare-hw.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +TREZOR_GIT_URL=https://github.com/trezor/python-trezor.git +KEEPKEY_GIT_URL=https://github.com/keepkey/python-keepkey.git +BTCHIP_GIT_URL=https://github.com/LedgerHQ/btchip-python.git + +BRANCH=master + +PYTHON_VERSION=3.5.4 + +# These settings probably don't need any change +export WINEPREFIX=/opt/wine64 + +PYHOME=c:/python$PYTHON_VERSION +PYTHON="wine $PYHOME/python.exe -OO -B" + +# Let's begin! +cd `dirname $0` +set -e + +cd tmp + +$PYTHON -m pip install setuptools --upgrade +$PYTHON -m pip install cython --upgrade +$PYTHON -m pip install trezor==0.7.16 --upgrade +$PYTHON -m pip install keepkey==4.0.0 --upgrade +$PYTHON -m pip install btchip-python==0.1.23 --upgrade + diff --git a/contrib/build-wine/prepare-pyinstaller.sh b/contrib/build-wine/prepare-pyinstaller.sh new file mode 100755 index 000000000000..cf8a326cdf7f --- /dev/null +++ b/contrib/build-wine/prepare-pyinstaller.sh @@ -0,0 +1,24 @@ +#!/bin/bash +PYTHON_VERSION=3.5.4 + +PYINSTALLER_GIT_URL=https://github.com/ecdsa/pyinstaller.git +BRANCH=fix_2952 + +export WINEPREFIX=/opt/wine64 +PYHOME=c:/python$PYTHON_VERSION +PYTHON="wine $PYHOME/python.exe -OO -B" + +cd `dirname $0` +set -e +cd tmp +if [ ! -d "pyinstaller" ]; then + git clone -b $BRANCH $PYINSTALLER_GIT_URL pyinstaller +fi + +cd pyinstaller +git pull +git checkout $BRANCH +$PYTHON setup.py install +cd .. + +wine "C:/python$PYTHON_VERSION/scripts/pyinstaller.exe" -v diff --git a/contrib/build-wine/prepare-wine.sh b/contrib/build-wine/prepare-wine.sh index d62b4c63da7f..1282dc0bc870 100755 --- a/contrib/build-wine/prepare-wine.sh +++ b/contrib/build-wine/prepare-wine.sh @@ -72,22 +72,28 @@ done # upgrade pip $PYTHON -m pip install pip --upgrade -# Install pywin32-ctypes (needed by pyinstaller) -$PYTHON -m pip install pywin32-ctypes==0.1.2 +# Install PyWin32 +$PYTHON -m pip install pypiwin32 -# install PySocks -$PYTHON -m pip install win_inet_pton==1.0.1 - -$PYTHON -m pip install -r ../../deterministic-build/requirements-binaries.txt +# Install PyQt +$PYTHON -m pip install PyQt5 -# Install PyInstaller +## Install pyinstaller +#$PYTHON -m pip install pyinstaller==3.3 -$PYTHON -m pip install git+https://github.com/ecdsa/pyinstaller@fix_2952 # Install ZBar #wget -q -O zbar.exe "https://sourceforge.net/projects/zbar/files/zbar/0.10/zbar-0.10-setup.exe/download" #wine zbar.exe +# install Cryptodome +$PYTHON -m pip install pycryptodomex + +# install PySocks +$PYTHON -m pip install win_inet_pton + +# install websocket (python2) +$PYTHON -m pip install websocket-client # Upgrade setuptools (so Electrum can be installed later) $PYTHON -m pip install setuptools --upgrade @@ -105,4 +111,21 @@ wine nsis.exe /S # add dlls needed for pyinstaller: cp $WINEPREFIX/drive_c/python$PYTHON_VERSION/Lib/site-packages/PyQt5/Qt/bin/* $WINEPREFIX/drive_c/python$PYTHON_VERSION/ + +# Install MinGW +wget http://downloads.sourceforge.net/project/mingw/Installer/mingw-get-setup.exe +wine mingw-get-setup.exe + +echo "add c:\MinGW\bin to PATH using regedit" +echo "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" +regedit + +wine mingw-get install gcc +wine mingw-get install mingw-utils +wine mingw-get install mingw32-libz + +printf "[build]\ncompiler=mingw32\n" > $WINEPREFIX/drive_c/python$PYTHON_VERSION/Lib/distutils/distutils.cfg + +$PYTHON -m pip install scrypt + echo "Wine is configured. Please run prepare-pyinstaller.sh" diff --git a/contrib/freeze_packages.sh b/contrib/freeze_packages.sh index 3471e528bff5..c8e4527b968f 100755 --- a/contrib/freeze_packages.sh +++ b/contrib/freeze_packages.sh @@ -6,17 +6,17 @@ contrib=$(dirname "$0") which virtualenv > /dev/null 2>&1 || { echo "Please install virtualenv" && exit 1; } -for i in '' '-hw' '-binaries'; do - rm "$venv_dir" -rf - virtualenv -p $(which python3) $venv_dir +rm "$venv_dir" -rf +virtualenv -p $(which python3) $venv_dir - source $venv_dir/bin/activate +source $venv_dir/bin/activate - echo "Installing $i dependencies" +echo "Installing dependencies" - python -m pip install -r $contrib/requirements/requirements${i}.txt --upgrade +pushd $contrib/.. +python setup.py install +popd - pip freeze | sed '/^Electrum/ d' > $contrib/deterministic-build/requirements${i}.txt -done +pip freeze | sed '/^Electrum/ d' > $contrib/requirements.txt -echo "Done. Updated requirements" +echo "Updated requirements" diff --git a/contrib/make_download b/contrib/make_download index 84e4ff21b6ca..cfc0812aa88b 100755 --- a/contrib/make_download +++ b/contrib/make_download @@ -15,17 +15,17 @@ string = string.replace("##VERSION_ANDROID##", version_android) string = string.replace("##VERSION_APK##", version_apk) files = { - 'tgz': "Electrum-%s.tar.gz" % version, - 'zip': "Electrum-%s.zip" % version, - 'mac': "electrum-%s.dmg" % version_mac, - 'win': "electrum-%s.exe" % version_win, - 'win_setup': "electrum-%s-setup.exe" % version_win, - 'win_portable': "electrum-%s-portable.exe" % version_win, + 'tgz': "Electrum-XZC-%s.tar.gz" % version, + 'zip': "Electrum-XZC-%s.zip" % version, + 'mac': "electrum-xzc-%s.dmg" % version_mac, + 'win': "electrum-xzc-%s.exe" % version_win, + 'win_setup': "electrum-xzc-%s-setup.exe" % version_win, + 'win_portable': "electrum-xzc-%s-portable.exe" % version_win, } for k, n in files.items(): path = "dist/%s"%n - link = "https://download.electrum.org/%s/%s"%(version,n) + link = "https://download.electrum-xzc.org/%s"%n if not os.path.exists(path): os.system("wget -q %s -O %s" % (link, path)) if not os.path.getsize(path): diff --git a/contrib/make_osx b/contrib/make_osx new file mode 100755 index 000000000000..c634645f3dfc --- /dev/null +++ b/contrib/make_osx @@ -0,0 +1,6 @@ +#!/bin/bash +rm -rf dist +export PYTHONHASHSEED=22 +VERSION=`git describe --tags` +pyinstaller --noconfirm --ascii --name $VERSION contrib/osx.spec +hdiutil create -fs HFS+ -volname "Electrum-XZC" -srcfolder dist/Electrum-XZC.app dist/electrum-xzc-$VERSION.dmg diff --git a/contrib/make_packages b/contrib/make_packages index 9cfd32bb24cc..b3a36049722e 100755 --- a/contrib/make_packages +++ b/contrib/make_packages @@ -9,5 +9,5 @@ if [ $? -ne 0 ] ; then echo "Install pip3" ; exit ; fi rm "$contrib"/../packages/ -r #Install pure python modules in electrum directory -pip3 install -r $contrib/deterministic-build/requirements.txt -t $contrib/../packages +pip3 install -r $contrib/requirements.txt -t $contrib/../packages diff --git a/contrib/osx.spec b/contrib/osx.spec new file mode 100644 index 000000000000..7864b08292b3 --- /dev/null +++ b/contrib/osx.spec @@ -0,0 +1,87 @@ +# -*- mode: python -*- + +from PyInstaller.utils.hooks import collect_data_files, collect_submodules + +import sys +import os + +for i, x in enumerate(sys.argv): + if x == '--name': + VERSION = sys.argv[i+1] + break +else: + raise BaseException('no version') + +electrum = "../" +block_cipher=None + +# see https://github.com/pyinstaller/pyinstaller/issues/2005 +hiddenimports = [] +hiddenimports += collect_submodules('trezorlib') +hiddenimports += collect_submodules('btchip') +hiddenimports += collect_submodules('keepkeylib') +hiddenimports += ['_scrypt'] + +datas = [ + (electrum+'lib/currencies.json', 'electrum_xzc'), + (electrum+'lib/servers.json', 'electrum_xzc'), + (electrum+'lib/checkpoints.json', 'electrum_xzc'), + (electrum+'lib/servers_testnet.json', 'electrum_xzc'), + (electrum+'lib/checkpoints_testnet.json', 'electrum_xzc'), + (electrum+'lib/wordlist/english.txt', 'electrum_xzc/wordlist'), + (electrum+'lib/locale', 'electrum_xzc/locale'), + (electrum+'plugins', 'electrum_xzc_plugins'), +] +datas += collect_data_files('trezorlib') +datas += collect_data_files('btchip') +datas += collect_data_files('keepkeylib') + +# We don't put these files in to actually include them in the script but to make the Analysis method scan them for imports +a = Analysis([electrum+'electrum-xzc', + electrum+'gui/qt/main_window.py', + electrum+'gui/text.py', + electrum+'lib/util.py', + electrum+'lib/wallet.py', + electrum+'lib/simple_config.py', + electrum+'lib/bitcoin.py', + electrum+'lib/dnssec.py', + electrum+'lib/commands.py', + electrum+'plugins/cosigner_pool/qt.py', + electrum+'plugins/email_requests/qt.py', + electrum+'plugins/trezor/client.py', + electrum+'plugins/trezor/qt.py', + electrum+'plugins/keepkey/qt.py', + electrum+'plugins/ledger/qt.py', + ], + datas=datas, + hiddenimports=hiddenimports, + hookspath=[]) + +# http://stackoverflow.com/questions/19055089/pyinstaller-onefile-warning-pyconfig-h-when-importing-scipy-or-scipy-signal +for d in a.datas: + if 'pyconfig' in d[0]: + a.datas.remove(d) + break + +pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) + +exe = EXE(pyz, + a.scripts, + a.binaries, + a.datas, + name='Electrum-XZC', + debug=False, + strip=False, + upx=True, + icon=electrum+'electrum.icns', + console=False) + +app = BUNDLE(exe, + version = VERSION, + name='Electrum-XZC.app', + icon=electrum+'electrum.icns', + bundle_identifier=None, + info_plist = { + 'NSHighResolutionCapable':'True' + } +) diff --git a/contrib/requirements.txt b/contrib/requirements.txt new file mode 100644 index 000000000000..828818a6e5ef --- /dev/null +++ b/contrib/requirements.txt @@ -0,0 +1,15 @@ +certifi==2017.11.5 +chardet==3.0.4 +dnspython==1.15.0 +ecdsa==0.13 +idna==2.6 +jsonrpclib-pelix==0.3.1 +pbkdf2==1.3 +protobuf==3.5.0.post1 +pyaes==1.6.1 +PySocks==1.6.7 +qrcode==5.3 +requests==2.18.4 +scrypt==0.8.0 +six==1.11.0 +urllib3==1.22 diff --git a/electrum b/electrum index 25495f79e389..9df3e612af2c 100755 --- a/electrum +++ b/electrum @@ -193,8 +193,6 @@ def init_daemon(config_options): print_msg("Type 'electrum create' to create a new wallet, or provide a path to a wallet with the -w option") sys.exit(0) if storage.is_encrypted(): - if storage.is_encrypted_with_hw_device(): - raise NotImplementedError("CLI functionality of encrypted hw wallets") if config.get('password'): password = config.get('password') else: @@ -239,8 +237,6 @@ def init_cmdline(config_options, server): # commands needing password if (cmd.requires_wallet and storage.is_encrypted() and server is None)\ or (cmd.requires_password and (storage.get('use_encryption') or storage.is_encrypted())): - if storage.is_encrypted_with_hw_device(): - raise NotImplementedError("CLI functionality of encrypted hw wallets") if config.get('password'): password = config.get('password') else: @@ -267,14 +263,12 @@ def run_offline_command(config, config_options): if cmd.requires_wallet: storage = WalletStorage(config.get_wallet_path()) if storage.is_encrypted(): - if storage.is_encrypted_with_hw_device(): - raise NotImplementedError("CLI functionality of encrypted hw wallets") storage.decrypt(password) wallet = Wallet(storage) else: wallet = None # check password - if cmd.requires_password and wallet.has_password(): + if cmd.requires_password and storage.get('use_encryption'): try: seed = wallet.check_password(password) except InvalidPassword: diff --git a/electrum-env b/electrum-env index 42220edab67c..b44bd496b4e6 100755 --- a/electrum-env +++ b/electrum-env @@ -19,6 +19,6 @@ fi export PYTHONPATH="/usr/local/lib/python3.5/site-packages:$PYTHONPATH" -./electrum "$@" +./electrum-xzc "$@" deactivate diff --git a/electrum-xzc b/electrum-xzc new file mode 100755 index 000000000000..5bf33bd3be51 --- /dev/null +++ b/electrum-xzc @@ -0,0 +1,443 @@ +#!/usr/bin/env python3 +# -*- mode: python -*- +# +# Electrum - lightweight Bitcoin client +# Copyright (C) 2011 thomasv@gitorious +# +# 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. +import os +import sys + +# from https://gist.github.com/tito/09c42fb4767721dc323d +import threading +try: + import jnius +except: + jnius = None +if jnius: + orig_thread_run = threading.Thread.run + def thread_check_run(*args, **kwargs): + try: + return orig_thread_run(*args, **kwargs) + finally: + jnius.detach() + threading.Thread.run = thread_check_run + +script_dir = os.path.dirname(os.path.realpath(__file__)) +is_bundle = getattr(sys, 'frozen', False) +is_local = not is_bundle and os.path.exists(os.path.join(script_dir, "electrum-xzc.desktop")) +is_android = 'ANDROID_DATA' in os.environ + +# move this back to gui/kivy/__init.py once plugins are moved +os.environ['KIVY_DATA_DIR'] = os.path.abspath(os.path.dirname(__file__)) + '/gui/kivy/data/' + +if is_local or is_android: + sys.path.insert(0, os.path.join(script_dir, 'packages')) + + +def check_imports(): + # pure-python dependencies need to be imported here for pyinstaller + try: + import dns + import pyaes + import ecdsa + import requests + import qrcode + import pbkdf2 + import google.protobuf + import jsonrpclib + except ImportError as e: + sys.exit("Error: %s. Try 'sudo pip install '"%str(e)) + # the following imports are for pyinstaller + from google.protobuf import descriptor + from google.protobuf import message + from google.protobuf import reflection + from google.protobuf import descriptor_pb2 + from jsonrpclib import SimpleJSONRPCServer + # make sure that certificates are here + assert os.path.exists(requests.utils.DEFAULT_CA_BUNDLE_PATH) + + +if not is_android: + check_imports() + +# load local module as electrum +if is_local or is_android: + import imp + imp.load_module('electrum_xzc', *imp.find_module('lib')) + imp.load_module('electrum_xzc_gui', *imp.find_module('gui')) + imp.load_module('electrum_xzc_plugins', *imp.find_module('plugins')) + + + +from electrum_xzc import bitcoin, util +from electrum_xzc import SimpleConfig, Network +from electrum_xzc.wallet import Wallet, Imported_Wallet +from electrum_xzc.storage import WalletStorage +from electrum_xzc.util import print_msg, print_stderr, json_encode, json_decode +from electrum_xzc.util import set_verbosity, InvalidPassword +from electrum_xzc.commands import get_parser, known_commands, Commands, config_variables +from electrum_xzc import daemon +from electrum_xzc import keystore +from electrum_xzc.mnemonic import Mnemonic +import electrum_xzc_plugins + +# get password routine +def prompt_password(prompt, confirm=True): + import getpass + password = getpass.getpass(prompt, stream=None) + if password and confirm: + password2 = getpass.getpass("Confirm: ") + if password != password2: + sys.exit("Error: Passwords do not match.") + if not password: + password = None + return password + + + +def run_non_RPC(config): + cmdname = config.get('cmd') + + storage = WalletStorage(config.get_wallet_path()) + if storage.file_exists(): + sys.exit("Error: Remove the existing wallet first!") + + def password_dialog(): + return prompt_password("Password (hit return if you do not wish to encrypt your wallet):") + + if cmdname == 'restore': + text = config.get('text').strip() + passphrase = config.get('passphrase', '') + password = password_dialog() if keystore.is_private(text) else None + if keystore.is_address_list(text): + wallet = Imported_Wallet(storage) + for x in text.split(): + wallet.import_address(x) + elif keystore.is_private_key_list(text): + k = keystore.Imported_KeyStore({}) + storage.put('keystore', k.dump()) + storage.put('use_encryption', bool(password)) + wallet = Imported_Wallet(storage) + for x in text.split(): + wallet.import_private_key(x, password) + storage.write() + else: + if keystore.is_seed(text): + k = keystore.from_seed(text, passphrase, False) + elif keystore.is_master_key(text): + k = keystore.from_master_key(text) + else: + sys.exit("Error: Seed or key not recognized") + if password: + k.update_password(None, password) + storage.put('keystore', k.dump()) + storage.put('wallet_type', 'standard') + storage.put('use_encryption', bool(password)) + storage.write() + wallet = Wallet(storage) + if not config.get('offline'): + network = Network(config) + network.start() + wallet.start_threads(network) + print_msg("Recovering wallet...") + wallet.synchronize() + wallet.wait_until_synchronized() + msg = "Recovery successful" if wallet.is_found() else "Found no history for this wallet" + else: + msg = "This wallet was restored offline. It may contain more addresses than displayed." + print_msg(msg) + + elif cmdname == 'create': + password = password_dialog() + passphrase = config.get('passphrase', '') + seed_type = 'segwit' if config.get('segwit') else 'standard' + seed = Mnemonic('en').make_seed(seed_type) + k = keystore.from_seed(seed, passphrase, False) + storage.put('keystore', k.dump()) + storage.put('wallet_type', 'standard') + wallet = Wallet(storage) + wallet.update_password(None, password, True) + wallet.synchronize() + print_msg("Your wallet generation seed is:\n\"%s\"" % seed) + print_msg("Please keep it in a safe place; if you lose it, you will not be able to restore your wallet.") + + wallet.storage.write() + print_msg("Wallet saved in '%s'" % wallet.storage.path) + sys.exit(0) + + +def init_daemon(config_options): + config = SimpleConfig(config_options) + storage = WalletStorage(config.get_wallet_path()) + if not storage.file_exists(): + print_msg("Error: Wallet file not found.") + print_msg("Type 'electrum-xzc create' to create a new wallet, or provide a path to a wallet with the -w option") + sys.exit(0) + if storage.is_encrypted(): + if config.get('password'): + password = config.get('password') + else: + password = prompt_password('Password:', False) + if not password: + print_msg("Error: Password required") + sys.exit(1) + else: + password = None + config_options['password'] = password + + +def init_cmdline(config_options, server): + config = SimpleConfig(config_options) + cmdname = config.get('cmd') + cmd = known_commands[cmdname] + + if cmdname == 'signtransaction' and config.get('privkey'): + cmd.requires_wallet = False + cmd.requires_password = False + + if cmdname in ['payto', 'paytomany'] and config.get('unsigned'): + cmd.requires_password = False + + if cmdname in ['payto', 'paytomany'] and config.get('broadcast'): + cmd.requires_network = True + + # instanciate wallet for command-line + storage = WalletStorage(config.get_wallet_path()) + + if cmd.requires_wallet and not storage.file_exists(): + print_msg("Error: Wallet file not found.") + print_msg("Type 'electrum-xzc create' to create a new wallet, or provide a path to a wallet with the -w option") + sys.exit(0) + + # important warning + if cmd.name in ['getprivatekeys']: + print_stderr("WARNING: ALL your private keys are secret.") + print_stderr("Exposing a single private key can compromise your entire wallet!") + print_stderr("In particular, DO NOT use 'redeem private key' services proposed by third parties.") + + # commands needing password + if (cmd.requires_wallet and storage.is_encrypted() and server is None)\ + or (cmd.requires_password and (storage.get('use_encryption') or storage.is_encrypted())): + if config.get('password'): + password = config.get('password') + else: + password = prompt_password('Password:', False) + if not password: + print_msg("Error: Password required") + sys.exit(1) + else: + password = None + + config_options['password'] = password + + if cmd.name == 'password': + new_password = prompt_password('New password:') + config_options['new_password'] = new_password + + return cmd, password + + +def run_offline_command(config, config_options): + cmdname = config.get('cmd') + cmd = known_commands[cmdname] + password = config_options.get('password') + if cmd.requires_wallet: + storage = WalletStorage(config.get_wallet_path()) + if storage.is_encrypted(): + storage.decrypt(password) + wallet = Wallet(storage) + else: + wallet = None + # check password + if cmd.requires_password and storage.get('use_encryption'): + try: + seed = wallet.check_password(password) + except InvalidPassword: + print_msg("Error: This password does not decode this wallet.") + sys.exit(1) + if cmd.requires_network: + print_msg("Warning: running command offline") + # arguments passed to function + args = [config.get(x) for x in cmd.params] + # decode json arguments + if cmdname not in ('setconfig',): + args = list(map(json_decode, args)) + # options + kwargs = {} + for x in cmd.options: + kwargs[x] = (config_options.get(x) if x in ['password', 'new_password'] else config.get(x)) + cmd_runner = Commands(config, wallet, None) + func = getattr(cmd_runner, cmd.name) + result = func(*args, **kwargs) + # save wallet + if wallet: + wallet.storage.write() + return result + +def init_plugins(config, gui_name): + from electrum_xzc.plugins import Plugins + return Plugins(config, is_local or is_android, gui_name) + + +if __name__ == '__main__': + # The hook will only be used in the Qt GUI right now + util.setup_thread_excepthook() + # on osx, delete Process Serial Number arg generated for apps launched in Finder + sys.argv = list(filter(lambda x: not x.startswith('-psn'), sys.argv)) + + # old 'help' syntax + if len(sys.argv) > 1 and sys.argv[1] == 'help': + sys.argv.remove('help') + sys.argv.append('-h') + + # read arguments from stdin pipe and prompt + for i, arg in enumerate(sys.argv): + if arg == '-': + if not sys.stdin.isatty(): + sys.argv[i] = sys.stdin.read() + break + else: + raise BaseException('Cannot get argument from stdin') + elif arg == '?': + sys.argv[i] = input("Enter argument:") + elif arg == ':': + sys.argv[i] = prompt_password('Enter argument (will not echo):', False) + + # parse command line + parser = get_parser() + args = parser.parse_args() + + # config is an object passed to the various constructors (wallet, interface, gui) + if is_android: + config_options = { + 'verbose': True, + 'cmd': 'gui', + 'gui': 'kivy', + } + else: + config_options = args.__dict__ + f = lambda key: config_options[key] is not None and key not in config_variables.get(args.cmd, {}).keys() + config_options = {key: config_options[key] for key in filter(f, config_options.keys())} + if config_options.get('server'): + config_options['auto_connect'] = False + + config_options['cwd'] = os.getcwd() + + # fixme: this can probably be achieved with a runtime hook (pyinstaller) + if is_bundle and os.path.exists(os.path.join(sys._MEIPASS, 'is_portable')): + config_options['portable'] = True + + if config_options.get('portable'): + config_options['electrum_path'] = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'electrum-xzc_data') + + # kivy sometimes freezes when we write to sys.stderr + set_verbosity(config_options.get('verbose') and config_options.get('gui')!='kivy') + + # check uri + uri = config_options.get('url') + if uri: + if not uri.startswith('zcoin:'): + print_stderr('unknown command:', uri) + sys.exit(1) + config_options['url'] = uri + + # todo: defer this to gui + config = SimpleConfig(config_options) + cmdname = config.get('cmd') + + if config.get('testnet'): + bitcoin.NetworkConstants.set_testnet() + + # run non-RPC commands separately + if cmdname in ['create', 'restore']: + run_non_RPC(config) + sys.exit(0) + + if cmdname == 'gui': + fd, server = daemon.get_fd_or_server(config) + if fd is not None: + plugins = init_plugins(config, config.get('gui', 'qt')) + d = daemon.Daemon(config, fd, True) + d.start() + d.init_gui(config, plugins) + sys.exit(0) + else: + result = server.gui(config_options) + + elif cmdname == 'daemon': + subcommand = config.get('subcommand') + if subcommand in ['load_wallet']: + init_daemon(config_options) + + if subcommand in [None, 'start']: + fd, server = daemon.get_fd_or_server(config) + if fd is not None: + if subcommand == 'start': + pid = os.fork() + if pid: + print_stderr("starting daemon (PID %d)" % pid) + sys.exit(0) + init_plugins(config, 'cmdline') + d = daemon.Daemon(config, fd, False) + d.start() + if config.get('websocket_server'): + from electrum_xzc import websockets + websockets.WebSocketServer(config, d.network).start() + if config.get('requests_dir'): + path = os.path.join(config.get('requests_dir'), 'index.html') + if not os.path.exists(path): + print("Requests directory not configured.") + print("You can configure it using https://github.com/sn-ntu/electrum-xzc-merchant") + sys.exit(1) + d.join() + sys.exit(0) + else: + result = server.daemon(config_options) + else: + server = daemon.get_server(config) + if server is not None: + result = server.daemon(config_options) + else: + print_msg("Daemon not running") + sys.exit(1) + else: + # command line + server = daemon.get_server(config) + init_cmdline(config_options, server) + if server is not None: + result = server.run_cmdline(config_options) + else: + cmd = known_commands[cmdname] + if cmd.requires_network: + print_msg("Daemon not running; try 'electrum-xzc daemon start'") + sys.exit(1) + else: + init_plugins(config, 'cmdline') + result = run_offline_command(config, config_options) + # print result + if isinstance(result, str): + print_msg(result) + elif type(result) is dict and result.get('error'): + print_stderr(result.get('error')) + elif result is not None: + print_msg(json_encode(result)) + sys.exit(0) diff --git a/electrum-xzc.conf.sample b/electrum-xzc.conf.sample new file mode 100644 index 000000000000..f2afaf5daf3e --- /dev/null +++ b/electrum-xzc.conf.sample @@ -0,0 +1,16 @@ +# Configuration file for the electrum client +# Settings defined here are shared across wallets +# +# copy this file to /etc/electrum-xzc.conf if you want read-only settings + +[client] +server = 45.63.92.224:50001:t +proxy = None +gap_limit = 5 +# booleans use python syntax +use_change = True +gui = qt +num_zeros = 2 +# default transaction fee is in Satoshis +fee = 100000 +winpos-qt = [799, 226, 877, 435] diff --git a/electrum-xzc.desktop b/electrum-xzc.desktop new file mode 100644 index 000000000000..1706961438ef --- /dev/null +++ b/electrum-xzc.desktop @@ -0,0 +1,17 @@ +# If you want electrum to appear in a linux app launcher ("start menu"), install this by doing: +# sudo desktop-file-install electrum.desktop + +[Desktop Entry] +Comment=Lightweight Zcoin Client +Exec=electrum-xzc %u +GenericName[en_US]=Zcoin Wallet +GenericName=Zcoin Wallet +Icon=electrum-xzc +Name[en_US]=Electrum Zcoin Wallet +Name=Electrum Zcoin Wallet +Categories=Finance;Network; +StartupNotify=false +Terminal=false +Type=Application +MimeType=x-scheme-handler/zcoin; + diff --git a/electrum.icns b/electrum.icns index 977b124d0d2689d03659c9affaff13c34a51caad..57efaa563ed36e7d63050f229f225ef3d976f19b 100644 GIT binary patch literal 790464 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�V=S~8oz5Hoe=Y#IgkEUC zYIS74muhTKGPF6h>42Di1|pK-fyLMEvuQt+{rvT@dM#lL=^!PTX!;~*wF~(f#>m)~ z^AGp)VeOK>3X}*r-NN2O&D23if9BDLpic}bWV4q+;V9b;>R(YPtmZof9LVRh9&>X^i78OGloV)`qEJk_N)v1AIXMU*SZrK%euhMh4WC{- zr&FEuA|Pl&$?+rpki9I=Ho0iIlQV)(&+(`J;6@9EgWXEm$a^KdHrp%x^L>~^o&u_z zsPw2S!fUD*=HGiMJi{I@ z&K?{?)zKKpQbDhsh+9ofzERDpVbS9IK_IO+dP-gVdE9Lr+o$9;H-RZ%AJPV>SkOL68}gq&z17<*br^Y&M=6zot?HdFn}hrdzAyUyX2{WFSLqz6xaFwc zl{m#*Y*121F{8>Th7!Jzx;RW9>yJ)bKnCq16AH_b{yA#pkoD~KoE^7f9S3EJC?XZl z_faqb5V%kckJ6kRsOChHdoM2}bYu9jhDp@6l)oYO5QdAq8R+u$C#L^)R=R?}gR%go zl(QMFsaoI!+0=&nDqc9SuF;XTK)0|XUDp~0kC!MRy&@inrfZSGC$nMcfc5=AJhx1# z@_xlHJ*rhcEJKc<06c7Ya?Q^IFPn4rtT2%b0XK`ZDX4?#a2}WWGoO`sYv0x6|mgIq=Y{fjC~_VYk7Z%SDmK!)5G#*01&RKf@p~!H$AqY z>jn6s$Wv;SCaEt8oWIy;;66;6!VLG{R4qIySZ=0SilIy00WCq=Sl(ve*wTT6jh=tC zx;hEt-FW^vSeHJCiO&0otANSYOoEj)DDJbze~34(#fhp?ZunDbHR*_FwbWkV0K$jBxa zN#;trwO@~(V7-=myS$#AybgkQhhpo1SE{U4uH{-%pSnm8r81Lr; zQg#Wp;}02{EIeW-AH84U>pkgQ#h0D`Ym86lZ}Cn+pg){S#pi%`%xxY`?4J9edx}bv z#3NJW0-A}9ZjSeJ-wE*MNk&DNCTu+bCB&aIVs=?as^&*#=dLkH0a3#NKqYhZMJ(9p zLrpxDHIU6nHmz?Ywd}pS*iKS;oss;H2zx%ivLvNLS(h_IcI5@2-x``pX$+WeY_V6N zz=Ibf8>mybIRa#A^s}z}=SjQ{7!|cO!f-!-nmqMr^YCNW7>!}abJz>5$Gpe2^bp6Y zEac0bnBan>Z{kAmK=-U?)&3-HlGnii#t@}L4{PARsy@7>ziafJ<({tbVH+RCt55b^ zLq6@}SvQ-YhYALn)!5gTfB6siV>PadcUo7@&{@@sv1J&QjRD?AJL!ZLiqg4S#V zZ#2=xm^9l<^KVxJyhVbCo9Q{vr#jF741ut@NYnC{3mrMP`aLM2PU0H(0a?kgePDe4 zuvk&X?tO-A<#D*bc<%xeXd5&MAN(MDqJ;1e1&xXg15hJ7z@HCDn+Fp(nIWoar8@w9 zTo;=SX!Gx@zaFIyU0j46;{=QtLu*!&4!H5d^$kCxkC5DKDCnik1(c(vj|WioWh4?H0 z(#V+#J=ElM&^RkRROOif(%u%_aHu{}#7Pi8lLOfCNnG)JJ?|*t$&R%Q*TbT=U`c0l z^XUQdB?UmeXmbE)57TQ{9nUwj{QC#JE6ST*irIql_dG4!G465aVt(@oT(;WMFR_9< z%fabK><21I{1lJ{yWzoLohpOC&H6D80B~b|OP|zni$9mr7s2!Uii79(VF%UUup(W+tIzBySx}TY069WgVa9pXXk#cshX!f#x7qJFFBWQ( zor?Rn;V!hV7$Xu#zRxvKCx=Az06^yrbl#ue_E^+>Z6T5ME!)lNPk^m2W-T1W4I7Aa93Xx z5?B=CXyB@8k~Acd$iL3DFfhjaG1M1mj09MD5zH}CufBxRQci$_YqHhn142ADvq?y= zBnFArwD7>Wx262dA%Tlwd#Fp*^hKR2;-srKtGy6cq_GBr{!Fn+^(Wm?4O*+^~nT=kC2I83{hgI5aOlQ(7>k8-X z8$v5{%n_mU!Ve~~l@Cz$ij6^Zgz0>mbxwCfHOyNML%!yz&lVKr*iVg~h+Ft}N`+r? z7(Lrwa68qFbN_43-MJ-5(rxe0#3p0jM-QyKiq=GC!=_YZbXK>TNo2Onw7-cL=nkV6 zfbr?pAPY)2znQ91#&v(E%z$2G>n!DW!7{Y_WvrGTtg?6stnCpDbJb+gR)BZnC`CR? zhzVx&M7$lL?otbM(L5%NK)hq5ymh8^<;4n9t28RMcXUg_c2U2g9v8DzdZn0yE4o1q zy9{;b4Ok1AL(kQz6oaQqX7JL4T6<$Tmfy#DEYa5Jr+ZC!>_~%d?LpxG}L>b#{^$Sp$o}AO;ysa{(o|vTM{Te zDY@oU{{Tggi2lrkPLh7X$*D1M8_v}s*6Z}=y~}+?BySr+@ENdEJThib;*eB{Mg4NA2Z#j5 z3j5qNhH4O3&yb3(+2+lTZhhZITaghTWnrB~1M?}st5Ys|_65xvmN|+dC6CjwGJI>z zF;pQ9%6%O-ijD@3$GJ~m9}XxYz;=UppxEvA=L=>=cB7A^r?98HpY)tl(cfy=+@2XW zP#_G)-#LGSCyY^^DW?=uvb?ja8Wx7K3>H7q8q*d%G+!(@4_7Iv7aAGFr7z71PaB>b=JgykJULWBZxFof#gk4BFV#WC8EcJ&AKY3Un$aP;03pss_w z1H$oJVN#P|9a|fMv@h{0^F*MD4Ssvw;-$mr$pcWG)p5aA$a;#rMUNExGqyKcH;_-2 z`j7%a;5Lbuj#e=H{7iaJjgk1B><~PR#c5FIu z=c%zw9Z7=!7Fw)2l|0OuRVHQ={tdu<%*Q&KxmlX5Ne7}~Gb9Xd7=><-`nK~Z7c7z> zjKExgfR1^nVx}}x0!Q-VWvA2LrRAAGyW}&}8=|@%DtF3cVvy$gS2q@#@vV`ndDgO& z+-P#iw`5v)<(sd*BM6M||0;Z*VPv$YmXik9mR=^%r2Tv&n{MvZ{BdsPPEcL?Zkr0b zl|DAZM5op66mMm5{tVZGu2L-bp__Gr1r*Y1 z1R5`p6rq-XHXaNGLMB+Ypn^LHgqB1u8X}DA`)&!Iu-Yo(|2^W_uzT@2kR|fDXbbgo z3(%Wfa#-b}WT4^n;JgU)m=t!V0(y%mh3`r?#q#=ax9t7@Fard4mS82|LKs-K=@M$+ zK~^tRMppw~`L*rIoSN|sA3%W}>4wOqIwZWzdpy})SO*wcd4Uf}A-hU0n9PTsm0+t< zediMaTYJJhUfy};dXZA8`*M(886jOij=|w5^qi*dQ0Gc>CLI zNRCp(@al1V-EK-{BPZS7?(5aIB%9K$FuUQx#VfTPuJJ*%4gNU^G1;ol<{t0Fg#j6h ztfVvClc};5GSgZ9U~%q0y(x)DR)u#Moh^lhNNj$?%^NM#{~={Mt87LD?EM^pa{Am& zb0lnJ04icfOoR1g@{#hfvblEi za3VEC(|l7F6txzbcq74g!K}-Z)L)(_poT~$v_<3PybGHSJAHdvAK!Ah+&{bQ!&|$F z*G+*G7sk;(?S_k)v+woP5NTBteDlICC;3V{8?M^)SlpyVhdGg13$)q79syWYe@>sq2+^G3#! zZ_mTqUVa|n5%_zffbsbn6#9if*4ax=5RhG$zhh=3p!bf`Lk8Bn z%iWDer*y0tmz8{L%{M8DX*L{{zTKS)S$0G${P>qwc--7F-7UGte*u<6p_=vFR?Xr_ zL6R!G$LmGEzFK7cE@zK&T$owAn=ho%VEhOfAy%!wL7nj1QJDS?La}kcuYzI(s^r-Y zXNj zgKkyC&jqk*t!W*UzANU<)#k4ytVOnhC;pFZElpynF4Q9uU$LMxfd|xpp&3c9jl0Ui z0(k!O1{g6!9k3X2Romg(lFaQKWv$86YbOmK-<@}mU6bs>TQa533=4-?6a)eytwRNY zgzG?jdhHPmL%N&Gf5|Zv;tfXcN=`hk%vy&G;IHlJjs5E*LBa|%IDIfz2Acbf?39V% zy2&AZ!gCBU@CM+F4FUUKacYeKL<-aDq3qPCZ%jqmMw=8Pu3`Z~#Mv;^xop>Zl?01K zcR0`v3~oZFGu`-9jKESd_@!%^h=XLR!sGq!9NjSgBAX_gJCMf|#QF^+>S@0CrjYgFZejy-2h@6STcVtZ zPc>UP?V;|U6xtIaXL*C!Ug#?vy?Y9u1O;84gv({I>1d#3h#!FR162d7xEAp{`CP|6 zUdrL^fiz>kI$*-!6x=2xUllM7lvM*}|7N^Lf4p#=PVxh}-t_sWjJ7rDQ%dlOk9gKjJ<9?o>*{`5_=(MffTB`Qsy7`l3dz=r9y)Lqw znLb-R2lZjuZ7yYu0Xpk)-OarY$^)M0$KtRZ9TkihIQ~Cr04gOA8Zz8n^WGd>0ZwE< zwZ%?O=W80J*Y#GG7Ts!+ztgYjzS{+2GHJvL8EDdWM*-h0CL( zaAOmmS4BE4j|VTqJC@xg1Cq*}5F}mla%gL#$6qiFiPs>WiiSMaL)w|O_vGCt>ld53h|!QE%gW$^y=THcAG7&(?u{GYCfMOkK~C%SV(1iFeeLEh zGBOhV#&K*402Gbit0f^Lk;&+1jO%7i4YQj0bjl`*T*Tp|;|f^yB(kF4ay78RvhvLTT z;OxVrsprK~5Ha*Mr5^k71Wk-J%fYhx4ekVI_*&K)9jK4U$9oySQa)K*cg>~ozBg_) zn$C^CUQ}D;fl^)3>lhE$nSTq{lltKP+6``ysum6smWy|~D-`_ipF5$^BVuT!>ulu9 z!X$kehqagBW%PfibCF%^0v!X4aIZ;!l?8UZQkN(;L7+On_zZ_O;0q+8%f)Ana}>|0 zMSD;?#qHi4x)&x-bi-6DuK!x$2_NVnIad0$#st4&{)l&8wwG)M$5b$35Jlxg)W8SL;JL0r>A0OJ0KTr#;+ z0e~W~5V!#mlx!uiIFQFNTo5=aL<{V1fP0Ux)NR+pkr=%t=g!PkXv<`OXv2k4SSLM5 zPO8qU!P=b7Nj-!D`RxdtiNFbm?| z*;1Ip#o7|HMourx3qC+Xg645bc*O}4#DV@+fxyy$%o=ea{Ny|atbrT7{$%xDFNhb= zuYYX5#u^EW&Li02;r9T?-~9eg-B+5HPQHWmW!>TPo*264_oMkJU9NXAd^daR(2pf=lsfmThJjyDf=m!6UXzA{UZV$Av%fk$o1GCPnur z`M5CPlBr+B96x+vgPFXlyyOP^=7ThPas*lG?V`HriMH&>j+N*E{x-X+z$!q|3M}x7 z)I?qLsn0u5$aFDp535uX(2w<~+`EIpWBaxh>Y|4xNrBD^3NS;y3`Nq~7(_RcpkQqZ z8ORk~6zYfRVe$=zwgPH{XfllfC3`aLkoN9M@gsPPj3_(}P=LOx5#qvgP6ZYB8)n;O zr~I29aN5eehRij#O{SI%0Ic5+; zyNA9%eg-hJ&HADc&qj=iC6^+-{LfxG^vN?AK1hKhHx&vv28GkJY>O0fnAuNs6 zeVC~+lMS@Hv=} z#P1=B4oW$O?9CQ)Eh*=&{ujUnikZW&dM%o1jU|Yvts-DHo#U@f%aYsRxY7nWvvL|G zW&yP47_(ph7)?j|T!swU%<|Nu@Z|qN^6WyEkURQ&%#CY$Xa5vk;<-5-r@`q$o_6HV zB!4yB$iII4L9Nl^Cp>TE?8;%tFCaRiL94Zx>nF$Db^S&wBarK9S5?yRxULKWhzo{U zlP(GPY7xii+q&vE%46yLDu6guL6M|{6-}SUvqUd+J|)W_?aKo`R3Q9i)W$mLD8P;c z!0xJVGmvoJS_7V@nAQiDfSt#c(uF=uo6+?i{k~-c@=&xZ0M}RC_IaTjaxTjt8^nq- zuyaU9qXvhOcTt-wB0bHGWK7hLym|GDpFf_s24d%I4NkyqlJ<!n8#(hufbrXC{M5wq8@ttcKjo7+Y% zM1KB`9GojfMwS~t>4)LC5W|TuWf7l_hHmwsJTU{aR4tN4CFXw~QJPy(FN%h?zAR_? zPs+DLov9c5WbCp&qT4EGgtiWCv)(fgowM_ApW+q(Pcp9`Z4@fgj6n3_iA)3b{%Q19c1a-34&{rTuL8+o(z7rM5Uis5B(A@9iYdq#5v4NwKmtSL!7>b?rsCDwnj#loUzqnFZDBj!pOXWw1H&+ z$uh^Nio?Bj<^#gzWpw>;j*N&LITdWxe_x)G#-PtnJH8N`-IwglJRmDiy_{#?D;+Jc zLDWVd1_?>`D)%zFD9P8k-dgsn}U?glc)Q%V>rMN2xLk z7gMvo6{QVIaMY8%I2CDAp7A$ttlhtz0T>>K?YtEyd}?VzA(-4frkO2BnqO0;^`wYc z044ZpA)hPhwVNR-8>OeePQ9zfz@x-97kgcZ&!Xj1+-DN>%R>il&EjtKg%l?^$z862 z1+60*^3Vj`kZ{(JTgX$L*&pZKjo_JA`&4< ziMmu*pQW0Jv?0;b_s4a2TtnS4rNr_V0-)1(QH-xoby(ZrUjx}<`1x*Ljs{0!?3iIB z7D%DEtVc=?_dG1Db?(EyM zU^i0k@2Mp@aTU}ixt66o$j2P;yIYZ7b4oF}188#EeQf>wh?L}~bG@vg7KZ%HwMx>w z?^&7#Bw|*$+1@XwY&*oc7$C~ALbcwJYYyaQBEM}?Y2rTt2vd1k7;vUidK_>OQI9{+`#IfR!Kr1lp1}% z4ao;X;vZwVM{(l4zPAE0<$Z&Dffg#&%DF!9V^eZHdQxN5U&9TDyfCIED3_5~TvUO? z@Pv8zO9eR1`F!mYpbAB!`3Gw(E>AN?T>FAx=awZ7MwQU@MA+cM{1lJG=hVwN2{1Q- zs9NsvqBcash3uva5GkZDhpuhcIpN7amIV#5hN9GjhQXPgwo?2YhRbnb#QQAx2P==b zFhxv0KBg?uSAw#vgN4^nGHETKMy{|`^Vwk`kS6rpA-9`_j1gOPDzpncIIGBig!6L} z6I<|GUNWf>nQMD2lH5Y%(GKEJ(viZ1roy#zzNzj-Ua#aSM+daluAh~|fjFg!di1%q z%wMQB;~J^*uj6N>j9$!GI;CEV5SOwP*F@!2Jsn6&$kIPYbSRn)QSBk@w2aoZ!32VH z+%tk?qDo22sM~}C90EYCwRYy#d;FYsH;9Qs*ocf7!!*kix`Z~^op8I?R_!1}=LEPT zLL!wIi*1m6T)`ydk#@fOM{~Z=MVy$9eCMv^!fA%nSTfUXd|$yKQ)k=A6k!ZO*IEjB zS$0p2>K{nlVREJ*iA7<@S-SO>-39zV-pqTWLKICf~gYl=5u zeNgW^*J&RNo>k&q(U3}*U#c7O5^!49n5DZ5>`-W^oo;Ni$zPXOCH1StFiAL*yfhqF z^wPxD1<`^bmSTGUR?>nDl}$<6XX#WlO>bw-?50#wxQ5n3RuZU;dL8HJKB z|3%)fH(-XR6{?rBt35PH0)Z5yuOKTD`({TrQZCxh$rC*y5lQt8B87O@d61aC@iejbU?4 zbNu&E74AROL92JGU_{@*<}7Fz+0r3fbP>=1Rv^I~YFTOtO=<+z@ZILLwp9B)e9s(Y z{Gy}4X6V8aNA=t)7?@5`gF2L~=;9}G`WF_7>uv3W;NIsRq!6zCS`FPlM@Ht9?>t}i zaI#6$Ad|k0${IwFLKN!#QkD|2g!#)mFmfo$7D}Jaj#bvB;^hXj&ZDKu;BvfuI6l!}6)v^pHb*3@@RfrVp8B&qz9!z+(Qs;E> zlyyg+QL5fN5|g^yWkA`4XQvnM9jHKlw;?2ZWMh#4e?+wmkjI|vED5Us(CJ`7UpI@3 zhXV%kGXImq=j?*i#WB2$+Gx#y!xJ-RXd6MoZTmbjfU+FV6>;48nk0@&r zaOM=kRoD(H`4w49*B<+P6wM;dWm{6&F6#_1!3*8!e=fd!;}a@#d*el=X3}+9Q<%aK#H6NDGvpBMk}TcV zn$ma;CFH^8EWKx$9e#liwUB=_V-w;Gz4QRmW%ez zcU8?w`#IDBJFL9KCz1Tsda>6+;SnxjIVnv6dS{IOj*sJvTGS&odrn?P9pL`EjIZsH zb|58rG##voW?wU-V%lVDy@D%Z*P42u;Ep_}U8lDT6ir^?nX~WH&|;|h!~H4gIzJ_g z8DF!pYa&V%12=1}cKT1G^2}&O9()C0pjkQuMXxeL$&qZ1LPba*mPZb&n1+~7IZszO zVKk*rZckkWSX7Ji6KR!c`oouP`H0$fcXD3~=k2Jb)LW6+Wi)mInWXB#j7FerJ}b?2 zODmV7hYr^3?I4+V?M6z~9X44~K6zQIxCIRHYl^NC#<^j%1C+6+g!=?%)^^NbZ?I*x z^jxcch+5)^!TwVzcSnTXna1mwYp-o39*IK*V_O_v0ME!Lxdi>%y$7-3Lw3hDI`Zt} z76jCXbJG1T)CWJ$!`;IC{pus|_v7Gr+$oskbgO#5OG+!aYfmt3Vud_Sl1datmZl!J z>_!V_m0~VEb8mY3$)$XE#vWGDD9!Nh9OpUp z%txSbzBP%b7CIsQ%%U3W)FwKIuhmjy^A!kX}UzsuxrL}`DH! zz!%c$g#l$p=FY27^NLgAR9y12#!j&`VkWEh+&L=zWX)39cH&CrrP=n%0`twN;{{LU z|2!Ff zRHKt7zDwO0o++5eJI?KV3GC6$4Ey7_zfuB1Z0gtZJzK3Sq#!o4IT&G^a=Zd4N*wp3%k2U*sDdfJ(~4(xwBG0G|QwUiQz(C#vrQf$a+ELi>C zSv-25B$VFtvw9im$_tHc^!wRyp5)_PnW05=B{jxVH3k_N8SBHrCdP`X*(j!MS?;l;t(9@v z0>m0!b}u#F;&3IfFbI3+Of2;%RGA=bQYNqJ05&TtR*E*H4ImuMoTxa5UMU&M@GC40 zRZK`0nXNYx?S^z#%b@=CLPF zrU-F!aWLeKXje>H)Zm$^+%LO~fkz!Hzl6hpHSlsV3cE#>QyxWbB(aUb*9+UV97)UjRsE`T5 z$Oazodn?xkMHi~BRM|)(xNhj02S+H6?dLzmau1Sn3_JV;PTL}qdCC$*Qr#wE$e=>k zR)z!B43gpDMH&zUL4sFtXv`P*1(IXrwUwLavqMc8=vLBZP?tEFKnK0(KSyWW#63-K zy@$gcS71MO$g@}fb$!ZzG@a8ojvz6Fw%0au(i*ORTT}FT#Zc7SgeB7H6!Sk$`ns05 z=K05%IoknUD43!4NHSc>cERX(tg#vZ%SMLUK4ews#|cfFE{eJ(v@4XzBi$AY@l;S# z-Fe~8rN+EjpA|4e2>upa@sp?NC?qY%xwx3;<~J1ia0MUQ{7^tCa2QG{jJG>o_)(G| zG5DVd83$n2L9L|HbB2m=F%9XbJeZO+J|~0LeTf$3cu8blGxCk$o{o;3beIx;sk|hr zJt-qjXOkC}JbjVTd7GUz2BuiVs&nOO^kz)DXZ6P5MIPa)s&a`9xFxE_e8BmMn*z5> zXpZ8sR?2HijL62D&br&gW5&XFZ|*cUBn3N=1Go3Q8$JE|koo>y+EE5rG7Cme)CV?V zR=+|5xqT@hU#p)AZ=>_x)&(u+@;{|aXN^lD*~G5!$y6jDNc)D@}z z!LNlWCM!nnsXE|AZptUK7;f?aaN_qv{F@a!Z2W3(3E9^7Xn6zOBDKU3_+{`Bp))>Z zvyNbkc+paqN)Oycz6ttm9GjNL&2ZM7%u9LZ{;iT`{Ga7hbE&DOnbmszhd6SjY3kR1 z{ke)2=22L4MVY2x&(Q3X4jIBQr#qA^5Jn?WaZ$^;Q1wMfnt2#O)TzQ`;ICpm-k&b3 zOrPX)`e51hG-=FKZRQ^Zn(;56MXkVN=Wc7hhjJw~NG(Ob_2R11yQe4^t;4QVc~ikexXyTq=L@0oI+mtcToy zqLezo*o<8^q+E0oYRBpT?MBSQt*Dyva|I1(Cc{m*|1UAZ%sTcshg(W0h#4OA%668) za=MPda97)rlrpJL#XRmT!jw(9!G}&1LK#%zmuecB`42qcE3C`O2fT`V*|;40oH>4b z32F){3&?&bEof!?G#@GH3k0nv{_ksJsnXsi~{5anYG-8%zjF4N;sA687|>Xe9e zxUGWNuBf%%spLZR=-;a<#RZFQ9V8=b%3n!ghF`vffYQkz%rY)RQrJywVLXw6&Mb@m z^-t_EC>za~@!G}$xvpE7u`QB>By%;u_s4|1%FqN$!f|p8{ zAt1wEYSPIfu@)}dV0iS5*mf{`<7@iIod}QGDUCBik zd;%R_zW06Vfnx?q7mZ{p#plYn5PcL07RFI$D!`7%k;zp*t%|Lk(6};Zhz2(htaM_D zl;W2ddLT#;SPZxGMp1n03Ia_!1WC(TMsV{$2kw=GhWAPXHxGspZb0 zdh1m#ITg)K>%ZFxkspfDJyH+$j9Gm@^vO>9w!+7* z4$&!|OTiL#8k?)>q-VD8PHHsku^+N1dIoc{B{B|8JbkSz?eJw1o z%xvLoSU@K*1FDcjs#&}Bi6JK24MeB2a~w8}ZgFBay>pacB!`K!idva{q^`JS z$Yat5(d3)0MJ>{N>yhfITLVFi6;*cL_^5rTGsFH(N6Q894h+SJRBz~ZCbnMABHS7; zD(ov@P~WhjO6{q+GfPDvM|WJI6hvXi1RbQnoW36Gn;n4qv~{SBW(o zg*m}yG!ku_-M-koA*Us%HvA>*__aH6Q&r=YgcK-+YVD**c6}MF0{<7>zwDPzbO0wB zrW-xLahn*Jtq5tPe)#>R@$prqz$6x70g0*CB3A-T;1QZ+D+9Zzum$nV?xH=7>0J1T z3ZrfPm;l2bS|OX2Hh{CktH7&s*Y31mz5!U{(qtyuLU2VyFZF_VObtjdty}HABBFE* z`FYI%A0yqy(9r{prxCFUXNxs!`lcP~wM#$@-;(&3o2uFDlH;ngx5n$f1y~_t)#O+X zY*YnT8Wh#CVo{dY#z1mVHg^$&CliR>sa&g|NhQ57Ve^tzYr;BZO?(%+Ak=*d>J;2v zS^_^01#lboV0bHhV58NYhedPGG=H`{o!tLt?(K+3v@|=n-z=3zi=IWa;622KqIQSH z<&{YQZ^`;x)PzngjGi4=6@6fj$Zh*5BwU}R4ebgCB~cL_3^zrzYv)6Q&sjD$d5M4sc=4Wu0clR@zhj$k{md^0p7d z^@wvKyLcG9t3{f!3YJ`n3dP!LAiB4M(R2(C||AW*OmNPpGGrWo>y>|TIFgTQpR~qWxm%eKUx;El<~J?TAd)d zmp*ry(<1!KA)YhM)b|GnRJpw&Q#3UYlVJX%C5PcoakEbs0D?bp7GcljxUV-LL{-&Q zuy+Ed(K3C;$b=Acpny`fif)8D4?AxsuojB-0K84L8=wair>?tGSOJaqMw`Gqhr4dD zmn84XUHM8!ooVKBj3xUR{ecj!nGAAy{lY>A*CPkXfGp4!Q@6-54_cjjg8prk<-g+x z2LYIC#+O{eFo2e)J;|k+Em@asbrAf&u)2oYLYqM;ISDeWvvucgr(YQnQC++_LxC2@ ztm|n1STdAY+okd~AGUQJN}rhdpDwRE$!tUc!(f#8wH_%x#UO&{Lh`0%PSSqO=aoC= zub%ZDvx>p#x9|Jt)`ng&@lIV-zxSCuiiA1+*e(0;tga8|S7OU>hV!TLOi@iqBQ;rM zDJ6OXK;WVZB=`7Wma-O}maS@nwmu?E>Y`jSFiqR#lR_$)laYiC=oW7=C(jtmj3I^~ zWVKSsqj$-+DN_53aF)z+1EwM^C2V0qs>17qHXwgQ&E>))Z$l)(rnF@T3-%iRFd1q( z=gBYnf&&DQjLz1(;u3K1F!^CX-1^Faw|P>iA|Y5FHZphX9c8wu;43;t?BGQS9B zsktk=HUZ7dr!daNLPa4h=#PdqwJJZKA$eVC&I+G!U2f2BFUN~vqnCCOGOG}%7DKLi zJxm2*1QmmY9nc8r`B~e-)}-}x`BFIzTgd$3avqRFz6R>tfF`y;E=1Ev0zel<^j z@?A&qY^XDMO8)Kez&n(z-BXqZiA3^UA?5CKYKF5u$2KDKw{IFh+o%9AZI^+P- z!zk28G@luv$9rno3@|o!z`$I}!?|-NlZDo)VQRHUhGG%PU0X}9;6^e5je4JMAq{q^ zCy=D^Wj=tPC_pOG;uJ6JedE1-!Ws%^f7YiS0a9#Z>23@Vrv2WzKDj=;IY_h;sx%F9sFzw57GTCYj6Lo!3#8CT|^XT?)09jI_N9 z#Gd>61Rcm`#&z3IbQFQ|!Eu-4#W(NVYY?; z&qz)F<<_!i2hs{LihLovG+GuC_%Z1zQWzND;wn17Ep`{VRMf&A=D5!#h_)`3jfDSE zoAaE`h?_A6F397vo|c;L)aJfBWfNsdyJjt9+^{|%0q9YWgZ~zbPeA0L_F8YqXJApx z&n^$5m>yg+LlVTFy#vJsCj3|s;Bs)Cpyx_P?V?lH`4d>S+R~v;zll_#B)_`v?TRNs zfgn$P`2l0iewG@yg6~@aZJ;)shU*ffbdW!_h=@Yh(v>&sG{bp;e_15rSml?Z{*&Oj zsuTrCQWYY(QfP*ib%X4~U4E#q%JTAJopDg3q(*m=5`CPO8Xn72iGUCi_h??(0Gv+S zv(uyqRV`A=5tU4AQoFMQMY)O^PUAD#!>7*rA$%0`a`A$op^Z3ttwZp1-M{SUm13WB zUqh`Or&b=o4D`{V*}W2IUVcs*=bUbE@(Bky6Wa{;eE%NDWup#xy!bqvole2mW5DyF z$MdC!CAD1RO|pyj6jJdtOM`8QxovBt1C}|wsm2C4t`iGWy41kn^n_n!!gf4sbo_%5 znI{B>PEomy6%3d9KLxm~$L|KM)9+S>=S&HX5drGsmJ3P1J;mogZ(OaLkN_+E%86mV z%O|UM8-?QGQ!66#*01>>c|M-D?V?eb$3#F9=X0pi!i$??xq@6{9y|1B3q)Ya;$I>N z>VFPOqp9a!?A3U;GWLj2%D@lnGFBM-P~T5BE13z81mNWvV-DPb&QhK7%KhoCxcgE< zBw}@i#y1z9o2^}q=TtJ)%YqBn2w8PqKpuc7J|0WH#H+7qL;(nyVkFXmcZFa8@aeww z7JcYY+PU@WFM2`bQ<=cCG|%yxsAFr1`gCc%B3Wr#=#YyvBh(M43eQV?p{f0s#YOnr zt9ru8-yme<1nwH`PyAaR1);3&>1A~@{wy?C(w`tB_S!76C=4`<2$3GUcjDs0&6hzV z#Tr)N?k1wp1!Oj9|AI*{KoS;j2LMJuxxWtpeZ+nr=g@Jib?3B9%BtFFgwI=N;z%qt z$y&g4t&DT&mpyRi!q?H>i)C}^!_tKz%#V>sky7s3(Pf`U+#=w4ke*(h0{AV2P9Wd;tq@TjdPgn+<|ZZ^sLpD#&K zDVGeWlr0k>PCOG-Jcd>5+Up|?bsu^6^@wS2TKd)*AKou};cJr12A&~}npYA=UN6_YYF8h^>Dd-mTo z;z!l4>8pp?@h#0S1eAq}65`FqXVY+5-0-|KA&wI-kqajznd^7tr~CQPJDS_Ki9TrM z0#)$0`u%S^D>x;yWIQz{5kHSH1a4IuHFXgjeJR!Bee`r!z637PIh1@YCNlRLoL|Ys zd`XTsS2Ffe1P9cs6lZf=#vZ#XGcoTtE(a$DzBo4Mha)KW4G@hd_Fv+nZJ*C#MBUN$ zC;|%bhUv0@E?>a_SQUoVKFwEWn}GZI54`-Tplx?}f4ASB{$HO!6Z7Bj@BI)`)tz(Y zyjqwwH{CF`Tc%6qp1@O=B@k!d&-G=w`4cvG5w(0xWqFZd`2DGCg3s|iBJ8aiNCUwS z&zB&?`j$B)xn>UFejyB_x}{AUpHd1(@26mwJQ9PidRF5U>u3hf+>=)+Tfsx7>RzIO z3~M}x@I0bo5OG?p)JQr3d?_67?8hW03rL)TPlB|h4NL4*4i_%z8Nk<(ld=Hva# zf&T0D8W388iWfex4SHn3p52$w8!Ej914It0zSSu^293Po80<_HXPfaTEPT#RCXYAUX+X#Di>*Fvx@x?8gdnEd_?mU0 zN9;daQpv~dope5QYDP}sMa>>ezXr9i&98kMuq+jUiy5$5b?Xk=?x=#dfian zICe&fWGD-oaY#LIo$6_fr*haVY8bHiD6l-4gIt1 zwQ-YibTX%t(0%-&E?8X1kBvj}7~gdrGK4V(T9_Fh_-zpOA=C$&4nqaPKH|qZV!U1| zr+Wa4(irARB>s#B)lJ_gu}cH`tRu$7mx(1^Oi$CtCYGM0o)RFRr7g7i^onjq1NC@z3X- z@6;_2ponN+er?PRf0-w;a0hw6lI=wpf#G{fA6$-dxHlm74^ z;EyW42Ve%C)9W8o548?y!9Ufd@2TZ1kS1AAHxPXH_A`T`ZdYEDwP^3L?vFHa06 z@NqmQFq$$Q)EjvKrGbx&IoUMwHpnu6^Yd>&1Q0LQ@PjOa6HW$JrE_W5DxD))6+vT1 zM5%HCUD*%q%5Ib@Vnoz<9gxXFC%2R6Gf;n$G2|_vCqXOB#pDRnHABCPvalA2-sqHg&zW7_t_>w#_y%Dv8T)FkL)&g1lOYtG;lWAjw#NTF99PR&T zF7gPFizE-@B{TrP*L=&%PL)8QiIqQS$(N{=YIf&`W~e+ z^_fihgURo>-k)PrWK`N_t?lJ@V_)6#_I)aEsXC4g1F4o5&W@5L31v5QFG1? zlijLZxhNNZcKE9-YoxA;zM1xjNEc74K;?v(bWt)BIEJpV zowg`n@~f1hX<;xz|q9x?j(m z>B9mKBucqKFzm(BS6s5)cD%N9%YdX4+0Og2q~D>`+bfn+fJXx!_8CO>xHM7-kD*@y zwGe7{C6%Dj>R@|W-5+t6pDV{9kR>wF6^Q6mdx@at<@lH|95D#Sl%HFd;&F036yk!)ABwBe|W(6lElR;j@Ui>?ca!B?Xv=G4P0U3aG5nQ98w z7AjWdd*~i`Ju2PWdUoUtQoX|^7G_k?N02;I!kc8TxNkPv(+M8hyWGP*k-V!>Mep6v z&34xn6_Di}W1ExGR^LR1q4e06qUY63Y$$pVnY4(f!j>(3>Zl=`4sFjKsZQ#wWOh7G z+3TVX$WQ|<&MZnoPzi@df~%)5bhS5t6^<`qhJDANY@rHGGBc=&2uFkOb8ExDh%;3& zzt4SelHg| zCm*Rq%R~hqjq{r9(G=EA!P({THgAaL<#o<9JfSP<6987SNGMuo(^KhICrskgbtNFl zkj&9l%hKePW&JDM5N0O8`kre|KMspdv8?|WPBLfb2y7o&gdux)W|9ASPwJqCwKKK& zzWcxU1#4>jMIoAOj9{1*7?g$nSeJG8v8RWGT2*J7_P`)Yd9=;Z#%-Sdt2>>^-$FSy zmsNpj0#eiAsqMNzsc;#FbKqzIZ-WnDkDOvP$dhAs`tPXESJNpn3RQV3Q>aVih}?tP zGR_=o{|4Cpf1mm=i>moaW>ST=;N-w=A)0b{yyP3r9U?1|`azhEc*dYBw-W(IE3BtV z9ebb+$_=?2FgFW{8L>4>_U!_ z$ev7G2SN_9Luz|Dd$@JmI;z0_w7;ilB_vSK1IhYa{vNrImDIM#G(k~sA7%RkA#-!# zXb`07`NFJkJ`&a8s3(&R7|i#^(4$`DQEKA@$WA43M)+&N>%jp1?A*j7_5mnMzK&(V zS_da>qdpztADA^XAjbHgVVQ}DVjh2nXO+W>{_yurlXe-h+Rp66KEL;!LSNv*R zwztVbY``X4SZ4AMDx2PHn&l}7FCR<=eAKhU3R^vL2ngHN%&kLe$XRW1&D(Gp+QNCL z;O*%ACq)`bizj8ieIvo_JP^Mqk<^^$MO%wjNXhgi@arwBJnhf7l#kFG^Pm*fjO4s8 zaH(}L>b?>Ulvz+oS%@T<0s2T5ReFzEIi`8R>b^FjMZq-A9aTza6R*YjNImQwUPG`7|TpRUw%Owkn@467j^xOd8iQX%)$ z0bf`sR2#}e7{-57E`ml`+_>5xV`Y{o3fF?;(KhB_e3zvWZ8U{zOak-NSfT+{zULLg zya!m59Q29_lE#j`DmH3b?FHmlqJyXRZKSyxZ?q0rZYkT#Xa4}ECDaM7_j%Rl+BwZa z;_Ew^!Z?3K4P6yYNh=|?N!-%9LE1@x3rK=+dmJ@R{ni%I zZJ;96l90Zk%tqO$!(%{ep|&M|vv|5b2TSM=6vRZX7edrTB$aVR_7qh|5_Q#&ncrSwm;%ELS zAsn#i4s-=R^PR_|dtjoeE2}TkYBK}ktNs#5)VBcGd;-ND;_X&vEN*s?4EW)caU z9W5Rw0HFrY?3?0H2(tPXo`CHQ6@aE8-nuwx7A9UyrS_Go(=P(SMqFX^H?@}tmvpvu z_W^bCs6QZ}o}&{j5cH0R3P4Iu>hg{oHZy9+Spi&sKx zeAg3o$-`t9S7y&|!|@Z_T{tH93qg|Z+Sjo=PPhcXx}EIF2OptrNrYVCsp8D@QB3kur{X9>{6Lf}+`!K1 ziSG}kRlO?W;*w6W&r57l6ATGecCD>L*F5~@o5bT8^(j_&@I52b%DV-P zj^;Y|$C8}g8bhi_O&dfN55XpIBVwWO*`Ke!uvRZF`~o)4?%Sk_mO7`TNd{?#7~XU!J8FHouv(>SE(rh}*;Hojiz0YzQ<%3{WyKN&t$7jZtUP>Mk~(j?T^d5ic^9vOI^Mt_=n8!|2N z&9;ls_oV~2*|F z5*}}NE+`D-txc4IZTo(3c+R=_E94mF${8q{D@__R=%9A+-u4YUzGd5lD(#c_HYdWa z(?AC_BmXQJu(g>>-qeR;^oQ{HfmKhBs)Uq=9%+siuptUBuv7yR6pvX)1+T*0Z)o3y zes)7IKjc?FjSB=CKFdO=o`EQ1IX_&?8R{W@sox+PHluh2x57;v2r@p1jsc95{LGYC z$a_x>qBYSXVedz_zK;O;GIT{a(gGc&2v(i;C&UlH-}~;VHQXzz*z-AW zk5IYF1EMVhjUJLIPCC_VnM-9eOb#|bxrQ*#MYhF#$)RjHGGybD(>ESF`Q3e(&+#Iw z*!Be4KO=kAE7xkJ_E4VT^OdhP?d-1U%hu5A%39tc*{45Zc|1IY!{jdTgS&}>0N`gwO=O(0$q(RKq_!*9UPjgbx!I;qGTTm zsf<-X>7CK--sGPZH1WRVTu$_y+B5u~Y5;HC)J?zggk_;FJ4IU7B?ea-(`H=VbRswQ z1;`_Oge(yKQkUvvH_Q-uacm^FUZ7b@p~Bd#t#xHV%?uyq$L!jm$0N})z5?@c1JEAE zJ7)mp__~uaV5#InUy_~uw_9v%*gW(F(o`#b=#x=iH`L^uc>RquZ#FyotqF^=y*Z)bjxAs_+;l&zh7huhBYi?@sn z$8LnHY!ZCBTfp(i51}}*{@fv>n;5%2p$!WVZyuYTtQo~+(QpmAn2t=2EF)CEA-XL$ zw!7gjyJ^$5mwlY!+kLPmF7SkRL2-K0z;MC1t25sB(8PKM0u#PpQj9$Fry61U`SV!d zO-anJ}ffR2mf8 zM)E7KksQXM$Qh5hdAH`=(UXPb=&8Wf61^cy1@;i6nC6SCSkYQ8VFPr#=%-#k2x{3>NggRDG23M+Yh;xI!f_;KFMQN4Cf=3xOeB zyU}SMR79tt1q#;oU$mT6t5Ke!1m)(n7><8hM1C5^^C!FkorDP`Eol7c@Aa1%9h`gc zSKTIrXdXZP#rR!Gq%gYt2U41hmg@9BXB+1BK4AX+m}V7-NmQo6v1WDg*-J18i! z?uPq7z0@2kX=2yzDc+Cy1SRu2$(}`J0<%IVQ{Js=_|gu^-)8`*IcgfUwsZkCVAYloCzGX1>LEzU1H=@VY`TFL=X%sT%IA`pI`)}EQYrPn`YN#Px% zdN^g>Axx>;k==kmF zQ%Wc~hE+<#V8_a5LVs)|s~Mnb|4Zc2k?elhbev#1ib5C$t)r}Ok5IOcG;ce`U0v|X z*=uq47CF^1ZYYy;*ayoXDvxEeR_B9BBF{hbRDq3dwCJ`7?=Qw;w>sRP{Wc*X)@Eg2 zviosDtutLsRP!L*h0RY8`|Aq*UJn4M!O3(u#elbzHoc`EK#KUqI#UejWHOKomeq+DZp1{zNJp=k}NtrEE2lU0QyR6{FZ%q{fZ2ikr$v?9W>bJOAD)=0(9V8j_ zfAdI$-3lc_pxnJ67khH7dr^OPWqGZB-cVm$|7Myp8>?xN8n4Tc6d8eF;PmQBo+b=~ z=DxSip|aHHlTPHco3IRBy*1w1ws6T0g#uvhl=+1DXWZ`4LnP&r!XQ~mS(@kV%3tG-6g2ES$r{?jPI*?wQOjeNwuF@AZ z>kG{?X#J&W7fC5iS(;3t!?n%A15RuIW*e-^yqO$<@#y2*Z}TfW3H&E4C;VpAy|g{H zFw$!{1O_R{dk>q6Ad18=G-Um^3U3#rn?ep&I?!3eP-A57=ZV=3k4SCPiPniw(u z_+Mi(DGG1frWx1Yw5v=LU&9nJ+5jKSoWHPc5KPIJE^P{N78$unY>gA^(8;n`;>^-< zi*)We>U*D-MC$|C-Sib~(<5Y@oSV7Z?u?wq;fShJm;6qyI`rXp@y(nzBM_=Uz2mv_}rM2J<=3%n4GQ>tNL)PmGOf(dtRS)fvj#S`TR1^!RQcE}xXW2*NPZFX> zRHBB|;iGfSAjN~J_onxwZ zYL*deKOYEAJQvUd+l@43dYQ{!;}H)OtSD$nwpQgeNOJB&?C-jfOrW(E3L88SkbH39 zK_V6E$h>y~hD2xK8q-j6+D*sYbU6ppCT|V7414mx?ms$SKODomLxUG|_WCh?@%I<2 zFvK~}F~)S&YN-!;Y&}O4dEunz_#hP--RMnm)(pO7#nz94$oFTOxUkG5h2PbcDNx zf4AXp4d6HYToR}DqHP)vB_dpEM5$R#{dL%nbF}4k8@iHg4e#Q< z|4w7y%WP58Tg`8tk}W7PN`5H!&fyFQCe|8I@FantFY`td@hu)^h3&~?cl#~h0JEvt*h%HMh--k9H=;w$Q`KD?y>Fr;j{DX)K0KB& zJ1$h_&8RUp2`)!jQ$V>jHhRJ{w@Z)Mi|QDI))X^70@KCTkTC|AJr_@wCDvcLREY*J_l}bLdBmTXak1=q@kJ+gh#!<4I2Be;=Rn@6k1Hhi1n&Q$MCJQ=7KbN^A zRdsIdM+8E1RDc89oae%i1mK`=r8lQy!UI_~96S-o>BWP>hl6&VXOhA>>H?MAl5VO( z9sPWy`#ed4>(aCCdvBl`eAV-{xCDgcS9pb=E8LMm`;4qU)F~c6k4yeJ8Ny~1Y=6ZR zgt|i5xS*7emN;X)tela;dg}`S_)P%$cL*9Mv&9G8*DeN2AjM4=9}iGX*rNm2pj~hF zvSyCWSrHr%ologi@sEggMe@Da%7AHRYr^wBj(_fxuZ;tSZbk|EqLM;Lb{leWOBB7) zP9R&^XKUT39d|_mgukM?%)o{XH;J?fu@{=K1pi zu@A#!2sf0anV#q?=6kARu$1HLVq-_7XqOeK*18oGDq&|-)=(yB=Qj&Ipgtn)Hu|VV zHm)h#syk=CJ1TIxv_Id1dtB9}c3M@ZP=2pCq;f}{`TX+;M7C^a@DGQD_4= z>&r*UrjQg`8a}LDtJ2(XLkD&KAqD2<-dcOAt7I>j-W3vh7 z!P10!x+|x0d&1wnC=^Tbo*V$iOw~$UC*QMEGcRZ;~(+yJ8yh%qHrL zSEmPiaAYui>;NaVJI+fB^C-@am_CD(AG<-b05HHO!v{V**n+B>nI`13RON}S7p(|A z9}W|zIV=Ha_^sZ~tj%zP1@ zPuny-?1n{~oln3Y?F?$>OiFY{H!vJU8iky#NBS^_z#li;5G@}^@_54;qAk=jNvlTK z4POvV0XzpK>%O9TH3s5GdL2iCVi^{o3#A-RQttfe6UG5~x%k2|$%+~)Y-TC~8m8tI z;(H1%IeomnkNnQ>)+4SZWq@3G-WpTf6dpExXcLr^^!NdBI0^~0VS)2WP+lN(BHz~` zOfwCg&K^U=&E^n^V{V)!s$_1on%l*ySR*TmS@Vr9D`ilenxC`GYws08QG1OY-a!#d z+dB&hOa~kog$G3#4ApOyrZ`$4WO)U$Jfi#H_AMiXx~@0!&#y67=b-FEyiSpoF1+7r z41O(()mi#dF2;6?RZbcsD-tu_W~1W}Rf}g~aNTzQL=jxhO@~h*h2}N~f6Jy2PamVf zjw)lzk>aX8Rf|3O@JkFFRvRP>u0_bWn3PYGi8siD4Gw_NioLmWp%$0wX(t7B=r2D` ziaYjb#}X4p+S*W{ZvJ_R&fhfj@K0W?)=a#Dt=t zsT9CGt!vL3+(>v2fZ_Zvi81@X`{L#V-qhiDF@`Esd4c3JGX6Oz_C$-9e!cXf{!Ngo ztddQFNBWo{$DVsJ&jVt4o$Qfw`+}dvC$AYg`fI$vkypd*D~b*{0(R?yPNf(fVC4xUiap~;Zu_d9uLv}9 zsZ2%s+Kqmu&K2Sy;YTN%!E@25X;IlXdO;a%%i#6VN8T$=Nt6rvCx|(m8|23+uj>D8 zyhgn+@s*I}lk%LvUmHt!EfT|7=&4Dd(RF z@bt32-$^U&^dr9CLY#izO&{Coq5FLeKX0MdFSpcE`+YuthoYD8^e^~!X$Tq&_2LHD zEf!!}H>Z-)E}>zl!%(!3a=i?AVZP1oS6g}(9_%o`#n&mHX<3XzWD>))IE1yh9sBF= z6KrwczuTH`KYmfgnN=eHKUbi%rnLU5w?Plh-1cvFw>N)#nnH3@QJ}7RA~coPlz98> zU7IWJlB-AQB|ASeKF`aO)x#ApT~CPLQ?^Vhff~MO>X#F}^$e<6%kil#qYg}?U)8@< zB!=_VWCN5d^^Kdj6+l!_>=$*?Co$frL~Q-6hwOj{oFYhHPc5Wm>(q5*Lp)6>zp5+z zq3C8FPL^p3H)K0fT=p@FX8ceW&zK@?z;I4MThKg7caSti2)W6_F-aYyv<6$3M^||P ze6x*{Hhg$(aNE%=MBvSFRKZ1EGsm{u(V9k{P;rl_m#7cEHu<&pt4wA1UFZ;SP2WJ~ zbPKzz6$jy8wb<8J@I50)uF}A(w^l{PV?asvX*lJNomtr4w=U?H-I;F8h5|~yK)cbx z;k~RDROTC_-!Cq>ZS~%C$(A6!JQ2;@oy|A3XZ+LRbvk9uk?=B@yISpI;XUdlQU&+3 zPEcvMmne4ZGAxRUv&%JmP}Jjw&c;C1jQhGw^y>|O7&Z}T&RQWgE}irCNnPuhMIPB- zU0d4o$G7?^yZt>&O}#Ei-KU|o6*uAf1)CF(Kc?y^NYWj7kGW} z1w|}fqiQ01AHdik0(9EFY2t?$)FJ?U4u6R^wP=UK;-t#tIZm2=?pyQ z%gW?%GbiH~)Nf>Gb78->LR1M?LJyGPRe;EiPL3*Z&Fmdeh>c{`zn<;(oE3AF$PUqb z980-Q8+H6H<1)LkOI3$HYRHfuO*$pG++zvu?Ea^e;OYI(R7A72G$W4bqM|JxoeV>r zW&om5wi9E{#%?9JI?&b>b|{5F3wYNg`nm#>4P~P=D#02EPWXK3!7)>mCdb=xn{gi% z=0xV%qAA#w+gj7lHXD#Ms!#N8+Q4w@nc35{@?%U+1f?d%^VHee)7~5nh= z6A}ciR^0CL)dx?W>o{mit0QP}bs~3x7pN|>ro6XVycrJ;W&}y9O!!TlGRg)M*oNh@ z`o~n`l}T63(3mI1Lp@2l8nR5Fy?i)Bv>}`f;d52atcY^mA+xU!k|K~w6btP(cw%ih zEXiiO@TdJ}^q(S(U2Rfq(kE+t9W6Jxm`ztaBo=PEA(Sldi6Rex{@;S@wWwpTF43l^ z-z)XYs%`S7cjeETq&}PVQ>8OaR!CSwpVQVJv7v5VluVAOJSXXLQMb69bX2**;}+%a z->>&7g9Ec_d7bv{KV`KxNfVcmyoL2q8&NX$CTBd3bCpHkovTu3!y)@n3h!1iTGRP~ zG1QiK{`@&N(@y-*zUj@D?DPn_+#cZ6rfJ;6{znE@+V1zV6GO0#@3UiJDH!$Or$03Y|vxgd}m)K)yrCPbO`f&TRL0g zohbJ-my*XZ`Q%n=H$+z=&4*+z<`p)DEdkgf+u{msKV>Fi^lhlzU5 zM3Cion?4ab=H{85%c_p`#6v8Um!r9!i9h!%^)ruz3!)w-J7PqHb@UGRIYBTQvhkue zqN#{L-pa1wql^+RU?*T72R$&8!k4`%uHa^vt-HIC&eNt_3DMa_{IV_&ODnY2oQ#v61WYnyHR5IuX^+ z3yB&0w6hhwcK!kp*N0~mgI=g*Thysk*i7z!9x(vZ80$Qs6(DM=D?&nLe+zx9_5J>j%i(%(YA^cgxI4#PY0{kB8UfLA^l1Ih~*SCBm8?A`$bIyZj+wRrG8%l3oC8K#MJ0Q_V zb787Eqh2KWnDBh&1Xk=psLc&f{GDOF9z<=5Pw^Uqfq&l5pu|BRjGyZ zOom$GT=3G1%SFvJ(nf@l2KT=QS^=w5Lvt^VhJy9Y^DGhhYd8EQXiRC-A){nL{#=Wh z4Et*0EtsDr7nOVDCX-M+4Ry;B537)2ipZXb@$Zm`PDS}Waz;GN3@9dT)>ulgk#8X! zX|gsxizYZSB1MifK3OP`j=G_1;DYhh0ydQXGzh1sqwp37aq*EJr+~;JuYM$=&TaOa z)jrx>fe_)qaE^!=g0^P#KnFW0O~vc1(`9&2 zNu6L;d;>_d;!Du*!X!ie1vgGZ!Rk*5Zt!tiKmb+LkSJ~r?}6pBNef1d-u~8Do8keVR$!x!8n&M02 zlS~Z}#eLKt9fthnb|u^~W-+b}s6?M9tPoshDSpv>f4yheuy~m}tupY6v?8LhZ{jZq zEvu3PiANDAe*vXD7{^Tw5gTE907WwLYj1I7qXo6*XB!MB$dZ~mR{O618GYNdGJuyT zAZssI(Imgnx_JgVE5nb&8lE)kT}#AO;dSOX0us!{U@bA?JSzEWdKG&}AL8{EFJVju zqb=(2?uCe<^8s~mjb+wB$MB7)fi2L(S0otc&so@IpE1yXC6o7+j9xp+KK1pT1H>uSgtwzh8Gu!uiomgOOww$SD zbcX!LYfFJB;>6*u(Fw2i>$)wmo+q68JVCL_Ea<%?(+I#<+|cNx1D&bnvtD+JxzqUg z+H@dbRuWo2(HKVVrn2*8XRSPX>#_(5ziN6~Kmu1+g@JD(wM$5F!4r5JqZws+NtJ1P1$few23l&oeKH1gp^D^H?ZAfbe5s2kT&iXyUwI=FpB0lu2d=p^gAZH#6V)$d)v zO3c2$$c&m9cKD%^pBn#PfiWI@gU)M(kqQBIU^{lry?mlssA zcp~=bX8Dom`UGB4G71yfP7Cp@AR9P8?G5$HHfLpHjkm!M-V<~p0`1damit3+c}{ZO zA;On3-JpN^1olt9Y_~*u)f~_CZr8m<2d7FJGT14moUh+X&~TxeVJdgB_q#6hsk1ru zWd(_z+Zf8U>L{MwC$S2cd+@e$MKEoPEBh7*jhh7xm6V#V&|coVS11(R`P}sVa@kSe zP+HG5sV`|Ga=y8~`5&NB-R(Ka1KCsl@g(2CWclWV;rrkCKwu_Pva%h%ep^hod@6ki z4um>{rkBoqnWAb<{N3JD_B=!aRk<{7;utaV5Bd?J=F=h$N>(p~qV*Ab4Q|8jyq<-B z-O{-m`F1;x>@1K<{wQ}VGcFZCW!`FKI%DTWw_U%toum%LVj@8(48NOy-#ak5)#b*M z&VjscU*60{B3aXFNT;a^4thknv*YW8j|B^$7~RPq4;oSqVpTLVc*$RzXBLZaS9=jj z@>zUg$w#`}lw7NOIsFuC;@orY_z2R#^a)Hv^z_?gWj$zFZZf77tA}wLlo6PZ$- z#Yd%`R;AXHqqzRR$p=x=D7y~q1dC(l@u*b)dR!HTJRbhvU}U|zijh?P!`cPnow=_-6XoKNa3!j>cmP}gRedq*#8a+i6hqaXZ6=Q_*3_&SxQC&g6gVy9Kmnfbb z-=xY0qF1WubIZ7o?m#)ZbtB@|9~r=yPx@Sh2DY6B*dEoNS2396DrU9}HcZ4j%(;6$ z0S5tp#t~*dom!G4ewbWY`(NbZLBIvm9GOl__q{UZNhzD6MjBVYG0|~MEQmc5<%$-l z5N>`b^=$Z=p2244_bV#SlGuu;CSS@M!=3+aAd^BVrv0{p);n}otsj+7jU}1g_tw_^ z-n*Iw&C$i;>!NWFr41rmWD|ff!h;xJ{0$C6=d>sYgPa^S2H}F|@l#i~ESkaCif>f; zBKeaE?~)#$yzlx#n(_nSE)J0s3d4mfdGTbWm?Ww>LUwu4Gc*bb3N18iwCo*Vs|D9& zhN!LPQG{D|Xhos}0&8iHSd;Z|SDJYQy$;yX;g+!4zJ~RVH;YMNR0?yMUzuuInt&T! zKrQ_s&V;0dW2#he8P}`w0o@x$AAb?5^~ccq1Cb1Sfzh%h!&?blQh(xT=SK)B=rSbc z4%t4*y4(_E7)qf33Gq+cS!Y`UK^o3Mj_(kK0Zt%Jt$w6(a7dZ(CRFG!;0XwOPNqPK zuv$xP9~asm8xf0DwDQ8>-b+#855p~)--?Z>4IL-RvnbyOS}RGT_bixYo7QZmD5fyHlXC)03L z6D+9lpMRmWo{i$_s5(;p`jikmWS+zctl$vHKw?Z$`8MFOQV7Q9=-dK4!KFw}|Tzc{ux;$C`nve7wdmWmt;BoF7?S1&DDj zEz!KX71;)<<0!Mx_?cXw203cSs0yA|-h8CMPfZx#%S})hk0sL;q;e2ppes|q5Q!$?FuRsql|PwnVir88qM>VO&CjyCh?|yr z)2FPl!wI~U{~!ksbkdOFzQ=hFyL-)rO%>K+KhQ}JlPVe^EzAW7mLHdY7RgT4ca1Tp zWUR^`h{Su~7jK0IRRi%{@8S6A8UtAg%=N0sU7)I*dk@D{$#?4vA3F+qz+WoDV;baM z%DvA@6h-=pe%I+ivaTKC5^(26Ou|a8un|4Yq!)0B6u083db~4Q5zGiVP`&|eI!9} z|8{p|j6)8rp9Dxak;Dq5tfSgvH+5~k4}2KkN8sB z%!jZ?j{I6W;uxz2)3fk^RpJKj&-k_6Q5y7dDIfBhxfaxQIy%GD`Ct=lne^d|r7wXP zq2Z+K3US`SWQ7l-Z8$oEhBE`mT8yX?Xl&Y!?C$7E3NdE1Is&gr5uPw`r`}jgrhU*^ z`8xQVIrT6~{9i?syAw0`eFdC#yV!i6l4~MNa2}Nhu=ktCFQv+wc-IGx6F(9IN!jm% zAJwmF0Mg0D>Th(2IzEzYQu=E~q_{50ccSWWlo>AWAIrMvoYA7vkP$t`XHequD$~zk zSfQMz^{RK9gONPJM6>o5K*4N21vK-eL&RYpw0UB`8F$)NC9xn+h2_XA2SadZ1j~3| zCwE9z01o7QXh6d5Z})Et;4eZNu|Q_nlm;mCX~9V)Y<7^+#2u z49zD_->_BMkt|b+A1>;rYd$PM=e;#QyfgsyeukwYqsj7o0t;`pDTryJFpjI=W{#%_ zzQMCAHBj6GsRrUY9oX-cl`&P-8NJ~?{Ih9{#Raxg_OyTa<`QeC*`m>xd}j$HKMxOi zaN=%cr^Vv=wF@r8e|FOrJVF>UO6ga%Z(*H2zpE|H-G^Y7EcNW5cfy9^DzMw)2IAZ` zDiZhmFVaZL&vMtyQId#6@*8ukymCj3koWOpc2#iv#GWW)LZs3iGr5hKpjh) zBEQK@R%%qFVEP4`DbfVJ?9CmiZMSiWJWEWx*%;h_c@p)(QtC>BX1qhWs})Cn4b|a; zQS>qfr1^(KTsl*r9xuw?>b$=hs7EvrnO5-~0cBEdCafi$;zr_{e8T{EQe|p9*&j`= z>5DJGvb&?})~gFPNQ&2MP7jnFM!ibLH)eGSq{+Zobj2F*CozrxMO5iP{<%V3=c8WS za0V6(%*u(P#4c`P^mBI5TGnT=UT<#s>|@08!RM@;f=v;m3|hG`C79MnYO1s$$x6<(GE>U=T_g4dks`p?X0?@A8kV) zWYu*v2B37!Sp<*3h5)Dq;XQW=X|#+tufAB|-04EZg4gkX1|>8Dy(dakio3pCklA60 z9XY|8b~MrP8KovR{?aoUSX(huM$%^FIReQQwok@&7B0(&-A4(ws%jdWbYrU zdU*-d%(3g`PfP|JHxv#?m0y`fJ}S7sIyMHfjePe>5DL*mC<9#hYJPCs*V_U}9_!UK zg5YLt34a9;TC4eFO7g_YT&pok8zgU(jykE?q%dSrJAH@+apRR$7+4TbsbQsxY%x#m zA&XNMN;)}@Q_V6&F$y^bES5*)n?Fp^ZWC?>twi>%SN|KbD~{$r#%YtIughF+S9A??V@Uy9Sa9$Wxo948&@^>8CB-Xq> z*m-Kbq`cst?#TGT(MUnW*KdV@mVL*%>qop(jcZVb+Vc%^M=yO}k9N-?dQp#U&7HWE z&YhT!kzDatma7zgqy_J5iWwDtVHzUqTlm_%r1JSYnYv?%m#>3MQUf@WsL3xyf}Z72 zjeb9?<-tZ7Tt)>8_k(4*P@Eg(RVc3GswFjx+X`ckj;7XR(o)p=0Q-_w|3rcmLm7Y2 zS~;J=yyCCK>T7)DFrmJ7nDDA3sWtreA!jBS!GdOhliMnF=;-18`qx57^E`0_;Lks2 z5jN{b7)<|T0dkfN;TXwx3@W<%(?c^ih|&mJ#$OqBirDC%oNQ>ooc1#71YXn)06{>$ zzrdEXOt=SWz`0LWFE4S?CjVNvuGAacbs@MM>g?MV)H51RM)xw1U=A?SXk|e=&}oEr zAyZ9g95^z1n6o_)6UP>RBXN({MG<4qx4LKCg1Sa|M?>-D9bzm}H5r5WhK9mw?{n6J zdw2eCLFw0bY@ObOrJ$uP^EGN%;0VShYKP6<#VD0T2O+c|h>%9*a#EqMuJ!SuR;K=Z z#e2?p1f=p)F?YXo$&PHh0QLMTH7xG9|40}PdVtBc0ns`s$yJtksEZup-t|A*xX*;l zwh7bhC>&A_JlRhHQw$5A)J2XY=LUKGG;<3NO^#^{+yP{}pOJPsx*$})3$L;RHx1+y zEUtmRUI-wZw)34u>`s`vgpZa>u_t))szDycn02o4Nh&-Z=eey9qxrCD7&Sy?_0UF2 zd85h52m7#5APMus3k-Rwz(z+do;FOnlDwCz?d|e<-oRdm*_4m*FAMd+ayT?Xo%O`q z0Uc=sY%SBR_@Y$5&4RH-(?@P(BwB4Em%&J;vVB`-YHs=xU6mU)(pnWARwR^(3vW6t zq#=i`dhxG@-3C`l0D-b(0s^gJ^@I#8t6GLDZAv};Jugs{b2kNThNw>YrKVq-G0sO~ zQ*aj*b0G%jWUVeqdg@fLcDGuUzVgmi{tu@W5QyPRn9Ld2#=#sIx5@(P=6>61H2}XL z#tE-{@nbxDZd&?OXCxY5@qn)H?xE~o;Jpg*vj8D%WPcIg{|iU0BkoAzww(Lnr?tjt zPS*miKWDbxIPMI(rF6qx3)h#D*x@^i1vTZ1{PnUcv&uMf_Z6V)0&3z;XabC-t9?lE zjON@Z4-w6}51|Jp%&F^ieC%_iIQF0$1l|xJBvqt-1OIG^cCygL8yGGVr!GD~sd8Pp z#=mI^UMpp}bz0gYSJP5i>BKbQsRnrq(oDK|GGWCiyG$#9M`{W!#Eq6aNNUoSC~P*{ z4+7eh#u3}`BO%CzBh-0@lV*NE@mmboU)A#@6Ja zsMv!Rty`?8@v%%7L1!qpcy;_sU-M`%PUUCfpyJ_Z;{Pi7S3VJ@ynO;=XWxBWF*&Ef z?MOMJ3rHQtkrDv8uKTp@Sfx2UEE{?dLU9b9n7<>&iIc+SiElH#y>zDRu7N68mEH%7 zj*lwbQ?uivjM*DFSp#lTcgQEunLuL-CK8xqC$8S|mE12{4oEyJh)HSYxvcf_Fg7Rm zXS4uokW|nPI0d}(Ym?_T1cA(q!~LbwV2*k2YoVK5NVrgQ$)WBDi@!N-t5Fp-0{QP* zyN`S#UkS7OmfqMJ$DHB9${^G4du~zCHzFRD649n_VFekdOYfo$uo99GjdMtB^RM!T z*>qF$>Rrs_Zd7aBf@HE%^}^~MC(?JI9G5w~A_T;KifL!Z%)*S^-J6R<@e!+4{*(5r z){T(x!IUDO@YHl4tf%mzF!s;9b(W7sQ&0MlHc4Q63kT`@YYGHhX&mW*vyV&f|6?Sp zSm&S=WlWbbV-F#UzM%$B9y4(`_j+t>74u6G#KL{9#(S#*Bc8L}cNxD0gNltx3}Fq8 z$c(pe)5Oxw%)yBSCV!vuaE1M! zp~hb_#5z<#N-ph(+>*$+)t|@HVNSl39UmM`knWw-U;vjPCGH~G!VO~=E2q^qGu7HP z;JMDk$r8ZcJdKNaE5{q@LYpCdVNa_HU45PK6N#jCSr;|zJW~OtND00d6^N(8Yf7I6 zmbAEJ7kxjK7tO5hCRE_Rqr=GeMrCN|Yp|x+7a2FblearI7?v?HoT7wNwP6IkC2fv$ z&Y|sLD%prd&&DK%&KU3%ygqD`jW;-)$PSQMobyH*mgQYz0Os&%M|QL(Fc1D+R;_;* z1UFJd9i4Cl8W`U_oT}!dRrTRtL)B?)2CP3`9kZ+2ngAj1IhbaIZ!)OXuh|tN`yIfe z&ByhMPlPdeMU?5m{*d_O>H7jCnk)`A1fv>$bofH1_-2r2{jAv(H^dg&XRqOh`>sS$ zJ*bEvnsk&T<(c{hViF?c2x}DU0`Q1HF1+TQ>>%RA$KjSs|8?=+=gxggMx*H5p&PIi$dp$=VU%TTyHvi0 z5LQ;BgO3xMBgyUPc)cJS7s&%@fvHpgnBtz$9x#>cX)|rsh&=OvF+ikn<gRIiS#AtA)61KoAHy!kM{Wh zS>y|^%3a3R5v)0p`9|33D8z-^=yOj05Q+`m?G-qa{`#+qr% zszyG+2F&g{&PA;Ibl${NhFS!q-~vr`D+9#K-uvHr_Bf z7nGf70VL(QERlpy|9|QVV=ew8G1l)J=Eb%DWH|f?B--16MNpmAo~1#g;4iU{WHW7U z>o1?IrQfzOKn8(Bl#>0N;LoTi*wlYYV>%>AU>t4E7})AU0)%ob2;N92|4i-*^e~7j+8wffpL$*8A#Nu+A@ij)7Ttz(c z=kL^k9I?I8DKSVNQtq>V+DCv>;r3Ge7L8qGzy)u;R>D$oV0O|@1E?;FiK~vbhJZ)X zGSYUCub+hGNJi{B)tU3YivGPh!b+KU zrqnquPdtt3XMGl2C}I48@SK5A#OQx7&N0=3WZaBppA3qHi;g)tSoWz0Y?`}D>2c+3 zIA&Z9x$aTr!E`R=cavoN#i)59e&2@diT@RY1oj+dHYXGEy}m z>R^%oJ~b;37$uR6@6HBs0$cYb<6~J`x%x8;*UPemTmMaqg}OQD%(*w1xr5Bu*kh|< zC6~=*`uia?E~tTgSVwAgdQdawr!XFSHRW11WtP=&x|+HnHcnTXcbSTMu%iUq*3Zfy z5EevqKRU^_=jIQufs?5!3k?Tr7d+mh1Zeq9TC1R`Wlzqh4P4orOHN}KMmo`dej8X& z)X;a;O(*|DqV8Eoro?s11Vt^2aqeQtcKiHe<=mBlFluKQ-L!-X<1)=Qt>mq&ebzk* z3@IcMviD;Rr}axH58GtAV$PH+KGo2m#h&n#0OXrPsiXB~syyt6PoVlDOliLisFLAP zk^7jRaZc~~AH^`;zAlp`=X^#~+Ho#X@NGIJKe?0Wl4fa;BfVVHbJz7Cev zQab4$KRES!(BJdNmkih}<8|W^pTFz9GCPyE22rLQ8%mvz8pwYr^Uo!JMnhN`@}t(K z8AD=f#xkNjGjXWh&|zj+=D4)$;H4hrwy`qq;~ z6qN0riPid5m#*6O#go!y9evg5Jb=UGU|o8}Od(&jP4!(vSvY?+g0ZHDEAL&@MqL#NB(1kv3RU}Z>KP>ir~Fc4w=NH!sx}D1M&@IYaXF)1hsY^^=vZ{Q z46j?g9Tb{Zc2Jh}{^v_#e(QHB8fMya8{`ABAObRkF*>7cxKI3o!{0H@1NuF)>sN8Y zX-d$~LvJVAM*}zy8{@b%X}hSG*`v7h$Lv7K->a6^?+xq_AR{)Um|;>lm_Au?A}LKS zy(+y}%DGs*4)`isO_nzMO2g!`4D=c{z*?61SZ}VJH>@)802HAVXkrl%p6~nC*J+QF zdW$?vkbJf6JyCf479+5%w;w+;lyz-J0$H~f^pYIVb>aUW{j}!05&~0Av$k@8RWq6= zu+iEx^G)=6Q#|1su6=OZbMlQKb^(Ghdl)~n@3ki+Aljfm3;h2q9%PXEr0OE>hAcdt z(i`JHXXJu5inOQTQR9y`w-}KcMR6#x&vJ~~y)g=uQ$A-Jz2N!iR3->4Cb1@o9N-O1 zI#lE1jm?4JJl1}q|9|Cj zwGRi%-3hZF*aL>tUAqGQUM1F6*+tck;p2D?Zu8=n5)hrj{HiTj z#-n;fQ709iJ;!*b=K@K-jwmELr+Y<_M|ypJL2cIz0y940PMe5&uvYf*VDFjC8(bKh zLL1V=6sSx4>D{4A@E#G>AZ^xbI;9l$TW!6@kq>WX4gEEna6iEk=}8^Od*koQjs$g0 zg1*(5Da1IhEHdO^IUm$BXgT3^M*~>=^e3p*d8|LWMBb5TTBe+3EaEdSBDf97 zj5`?uIoQ3n`#HU=^`-7qE(_*qzZ14ou}4&-aF~aq0_C8@!p=B zHaVT&_=pi^D(*jRTC^0_TL3_9B?;ODV#kW(ULo-vqVqIw_Ip=F z5M0$(nm4N2+cFA!?0ks6ZZlU;v9aJ^0rJ;U+yUtwzA2|6Mj;PbrwF zm#Y%%B#r!($}WcI(GInEP%NhLLmPSw`h1AOo3|t%XoUpS1vjaz2|9tDzajym&P6uW z&5K5^YcfN`FI~IN=AC2$Mqw@9ZWI7rL(SUdo6mP2PKB^+Uh)zq$Q)OI(;E)%*XjO*;G_iNj?j>JCiKcPHGtmP5YH$oTd9U_1chVP*1V`Tvx7P*lA~Qb zQWR#HeNJ1agQYA%YK=g#TRyja%qVm}aTVPYyU&y+C~3jG(5h9tb~MgKQ2-zqL0CvYJj>0^F_<4ZFA+MCT2M zNd+uvDeLQ}m?ir6Hx-aYjEvoBDL_Mda*@lzQ7|hFq%?sf6{}>__hk)4M2Ut}disZv zLfQ_G{%*63Tmk0B zD4_{Cs7e!K&{%e3dF1f&POK7l7Tm0&KEg)yKz0E%r1c1p-n z{SOB)0Dk4h+JumIl|CNpl#FMbNoIzOn8l8KftqFMF)d_Elm4sSN!E}&cuTx+C2!95 zl4c-Q|6yY%$yc+2R0(Zm6x0~NZCy&dU94gu+Cto4>T#f&J`!)cLAx%P*G`;-hrRd| z6w3{f)$U#^@aGb`M)JJlvUFOmKkDWLJX9(xT?rSJ8ahR={pwfi8!W1OC z4h=@?f;x{7=l%qh)n>BMd1_2m(k>hA{Qwhp)c2`~%W5OlZ4l${KJ%Hf3;T$G>79SS zJtN;6%?Mj@bSTt{^1lqXV$I&eDYS@Zz}snP;nmF_h*mfXtc{Qa=8in-8>YKkti{OP zl1c_!|85I(jmGk4;7Jx6`Y0f z8gZAqMb{b#vwSF-z?hfBYQhW)WqqdEUvi{Na=}$R@T?$qwoi1SxGz zBw_R)bkG;#@#eBV_2+@BgY#oy{{z0%gG-4N_~~>@h)UeROO}Y6Wsv?cth{S7eO|C^ z#gD`Ey%1yb+JK~(u$vWT|{0ub|yaL@_FH^&lO|`iV@; zC50yxe8uU>-u)npXs4*5 z8uaLwgF6>9i6WrrQV}gsnw26^)6wG^wm;C0G3JmADR))KdrrSpX#v- zCKt4=+{Ul>FBR?ZtMVmvQ(zkXDHq=~&OP0?(gRyAHw*t7*U;`HrXdT+`QeUzG2djD z6?C+tN6*&Yv|+uECRKC3vDofA)x2ZePR~#V=Y6msz->n`(p#o^XMpcc-S;7R8`ae_ zdB+?B2~|zbC&;SCEBe;@+iW^{@rUngJi9vLjHWD#{KLQv2?uzt<|JBM~R z$NP~2C%x&0@s87bJY+(Bt{Tqh1M;>oEE^C3Yh`+~J1k>`R>J|Ofw1N}nfcK2r{ zw5J!5vk*pY*vghmI^zSs{Uo59taaewF%%rwyEowKLuuEr`=qVc+rC&Fz!D?EFm*ZvPu3=poo8Y9Ffe6{=0AVM$e2 zCZmkhCuFo;qXA9e)`sL*0O~w;3LJNpb1p8(DsK%+tqI};X#9T3N~T?Dd&3U8tMCS_ z1n`8c=rdH| zcvlKY+#bb3lTj)JEHRJL|3Hi6v46Sz_%#gcMBT!k2mJp{6y&OYUt}2Bg!xnwl7Pj! zpRUYk+%17e$$PX#<)dmY(WXKQQ6`6{{uBi_xGf}i70t%tb(gyXkFfZCbv6%7hX=O-%b7(}#S4FkWm@Wc?t?1Ng@wMMoN)X+$OD3{j? zbGZ@zr6D$ECXg`-B5o}>f(YG{N~ljWr|q{fkoiV0&u4t&!N<9bs5?wgh|LczivqVv6Z9pYCiR z-JUPJy=ksXVjG!;`dzX2M`{OrFk_4}0&)FeT$*M{N{5{3v?RsQ|5nCgZX9wzY%`XO z-k2JIEN_sdDA?-vYOvuD9oa?M{JU3dZvN4kSO5 zQT5txh;^9_k)@h(9dNd-B;QkHq8)m1qILOT8m(%#Z8_cKNr1eD4mv~HP0&2SUR|s_ z!La?p$%3#lt|qUYN7gRW_0z-X#Uzc90GgX&5MM(v!wr=R_fgKBp3&22Yf2B{fAz8d zL@k|Nv%}4>%Fn4gMXDGcLJDv)_yc9cv>a`jP-JV+4*E2zCy@A`Io3H9j+EW@7-i@Wb( zss<^1O>A$an~Z(BDP20NE}XZ0HXx;fx*h)=kWCk{vMov!_oWrdNt?p^(Fou zq+i3)$M||hd3bUog*HtrN|hxA z=%m*s9=u3>Qu*Ap!*X-VUd}ridmx$52mXQayG;ikX{7C zYRKF8;)Dw*h>Wi*p(=#3rc1nvOU2P%+4#DQl$;8Vpp1NG8@uCWW{6(OO0#(Xe&UWoZ6H4N;h@|jQ;5W52|E7@q%y=doy={m`mtAg(Dt)u&=l6b{`Rov?Xp z{XzGos(xS_LxZ8w)NG=f6dwnmtdudUo8J$=uZWEpeQJ5XCrvVrJ*xV&4=`?5DX5hh z*&Er~Z=r|^yq07qtcHq7kv89uCtVVp-c4|4rjWTS&~}MJ_8?l$oB^$Q0^`N`=P^LQ z8bWZGsGLx&`2Hl3U?5!RradFT1^Ub^!Jg}fb|Qr(EVP|U*2`ZJN4yvJX~sTANm4PV zV*z0|6ZN2=Z1Z)L)eIfS>>tOCqYf0?OpWh*gdHH@Kw9B;zntH26KQkTwQpL;e5j-| zs$gKq#yE22H>IVhwIS2ZRtS4a%O7pD>iRpxSxSoR4{-O4qXVS_D)|hV4CbY3>2U^C zHTBUagHnTnI;MD#SoWvEPRYn%>Lmu2L}ou>z<&tyz*e5YodX9VFbC5J)&fVmNJlt? z0B&fj#)xFlSnQs^k6_-RMX~YV*f~#+d1LAbF<6X8g!#0xA z10Dwjnp}^$r!T#&ov1_sXu|%6GaihGWt((h+{$Du*xV~BFY!R0b8#-+Q?n&X${Agg z$bC@wzRbrNoK@1`N`a_V)(riu?wOek=dW?)5U3p{6sY>@k|I&e2Y{_rb7`^~OBm6lng-r=8SrEITpwlB|3F>kfJ|>bglx>c?Y7ehM&*rrf zwOb+dgKjtZ(tOhtIpM2Wv+y#beZ~-@S3ht0Ic#}cyGyAs7=-d#iy64;xffJK7Ph^SMVs4ctrQ5-^zyvPC{eaG07I?+NN5=8J zM+5{qJX*`wdhrKaS@NjSN>DttIvOhjrtg4%abqK7p#VR#uHOG_auvG6N#Mla3>S|1 z)pXzweZ#nW33#4F7qMdUdI-sDsgZY^Eo5Ngs=#JE7G8P9+;Ve1hk`}(g+Pa+HiEz8 z13GY1imG4yS$5fd51h-H>ERRd?4`q{Pel2xA0jfV0`x20TjROCk=JtG^GFZo*ppyk z&CYwRPy_^vYkUR8d!P39RYCF`oF}_Kz`LnKKjUA}cFx<-DQbX;p1`c3&V#=*?>W@T z59xfwcJx9RATMePrDofEpL-bqzS|7o+b7UYecJN!NaP{IwgHdxUWjUa-K-+vB-tOK zB9}~29NC@(V{uC$j9@{Y#2~#rBs=@&U)p%tpM4Z6jFm_?(f2EEOk`S|=yPuxp3saqt{IeYD#RoqnF(;oLSUz1VR|d#t4=;nZ@7bDYAhQ8p#2x& zO~4Og-JIhwG3>>oGCaC)^<(v`isw3DFgSOy#=gSzAh$)$WvjJ}>p*B~s&6;);|eOR z{~JjeLG-xKZZoIeqVdZT8~X9QIn-{Db}SbnsE<4SoN_yaO+lED_%O&hcdTrv;gnfW zXSF7Y3ngO)9kT1XdanddV-rqk_lwue&SQbDW4=miPiZ3}C4J0W{yT6{$V}!sfXs&% zZ192_Pks0D0?f*#6LgM!mc53$%;uIODfjpmygDp_OtvzU$Ct7vza$V+?HH0n=iqEB zvhX02dQSW?+36HO&MrJ@H@*C5}H3rJH5A4`m*w-cJx(rdZJmK*`Gx@>yETe|F z;HF#|z%QHUukCogPE+h206{Mi4^*`9xcwT|eQ%xrT}IYeM1bCMT@t!D7!*GXbCis; zVaKt+M3D|}cA&a_gQ07!wU8e>Ym@O>+zaV1L0&{+%8cYEBUmy@7@y-b_0G0RdNHc7 z!4d?3Usv75mOHbWxf>3}6j3do->mHkIrf)wB{c7lB;J2-gF-fU2(Yh7mH%#r`z@qK z1r<5dZh4+|q^pApZdt84KII}WYy#}u$}0CxM2dBIhLX${?!*hAff=n*o3Gs*2^Ha%YS%-^qHTDTX4GI8Okn!&fZ&;QZ7#Ua zAk^??{T^LE{Vb4Fn+dN(XS62Dere>{ITGssbHuk*KI=pSR4uysq$V<{1*{cN&%|xK zJ|r~BAWmRFefW7cvWSP&PxML;0`B*fFy1druRIZYHSr`}UZY@qzR zTV(NnvjsGRp((9C%crtYjHLQj_8S1#+!jY1=qkYb-=dQCILQ$Qi1*E8#;rJ;+VWhr zgFZkX&pg(@&du_&ifa;^We%CaJQnl{NqJR#x@S=rapTKG;vG?`O&Qn|(Vz}-#*q>v zryZZ+ZMa6gU$T|-l2uOi%}SJwX3pS*L@dJ@Nb11w(7aoZ2KyphyYNOFgJhAyGbqgu z6j}OW)&DzM5k8a~mnk!*XP%d=L{|p?Rc`HvEZR|Fz(a!Cb!@XSC6>SfHC$>a)dtMw zf(wBk-00z!{oAJUjI0bp98>*dqCG>o4)g4d+hZFI`1#DKaOU<{68ymbIVLUCZ;yx5 zLQzJcf`?N?*0Xv|uLwqxR!=q2w?vccnraU{d4A+z<`EC*xMRoOr$ zu(qK7#crN5=uGH?$iiQ|{UALDz)CT>W6K&REtz$zET7R!e`j2<0Uwjoh zBYyJb+#2rZ5>;&iP(D7!qXSDtx3Ue-e`g7R@O7|rI1;ytnn+ztab2;Z z^LH&%lNss*Zl-Zq{Kj;~deAE9Je5~~qKv%99qY{+{vx3%db_LJGtUXRH_;r2-H9FN z#kX?X8?EM0JLpHo9btAkh+bp9>eceTwnP6XWfThK`zN_Ejm0n2I3m&xi1^x^hS_O& z5WAnTO6ay%YJQ`l;=HFs`V!8=KL0HRbknC#fPxx{A<4araDsdjEC+yKXRo>GXPvyy zUBUWj*M>p$ger5*8iA?XwV3gE$)77!nh834yx;KKpe(!}VM_p;$$pNd6JBd@$nno~ zn+LKng_#bsUES|QySQ8-lPC7;xC)Tyi|R-Co}F*LBFkr;6kts-w;C=EApr;N~v# z8AbBJO+==(nKCBf|6KV6u;TOZd~5y9LG)I-lT(~uq$o4Pv=;$1#`|*sw8~az*`%=>N{m|UxGuMRBi>I{M!qd`ePE!3u8cAmlJ!1nMoI>ogls*kN9Fs)NCxe`n56Ri1A;1s8-H zH%Q|XxRW&Hz{wLwT^~rZ)07EYlPUci6cfjUZb#m;EcM8YWui-p5V9x)>@6`V{u!pM zue=&(x4qG&P(IT~Dar59VZ;g}8V*;)E6T`H)F7R`+nZ$iiQJYw*TZ6f!p+F3)!@o# zb+;GO)-x{2tDO!?Vt3ne@(_UnhvZ%<&_tf8Ob+Jg`=EwALOdNaXr5)iZy0*3f?9`o zVdb8rNSAMK#vjikv2Kb8Q?U z4VyfnkOYWX9rS z?vnY~>!mwoZK)aFrJhdHU;>&YIAyUp7gzecvsiZ&0~=j<%?zf`FdPwZBuo)sREb3E zfTcabz|swne_a>T}{nTa+8I2_&0Hf3_Y*4IETsbjr7#TfEk;JYd)(gz-*M8^~5 z=RUuU9jPJhzg_7f+2iDQZNg%C15ieth86#rrMYk)_wezzZm z9ZRC@1+k}4_D(zW{Cma;+|o(2JD-R5Mmdg?Z4yI6Jw7cv6T3~=)t%>}Ge%z+4Ju8g(c+5dLPSz+mEEI5+1tHBZUJ5TeJ>HDR zd?}c4#0Hx$fsjtN1Dl5FpfP+!Y&|WAGIy1z(?VAI+C794`#1Mxd>+5#CGf6xZZ1!< zi2Ut6)F~@n+N8-^6l4fDjr05qk=l#_de6%s@aR{=0%=1AFnHs%uR=5b_Tf84y$GxOS(^s*aAKj3@UvRSr$HC!?n2*1rO+VOdAl^59lfC z@0(Yt9lw-M-%E5cx{^;x-=^kBe)u7YtJR|RMgZMG<~T_ITy-G4%Ukph_ZUmZw73Ao zam1pjaB--Yh_jvHi-|kTkOYZ%eVff6+40Noj$yVJVkf`+;tm%-NlfT4We65MRnNMF z0BheFQP5Ew_fyW8O38(U9ED`5ksCNqV%C#m8gpViMPeUgy=Pi0w*(;&sD_QB;(D)v zG&%8n58erSHd5Vs{#FdwiaGZClypld?i$OyZhQ8Vryw5DR=({P!1rZ{aULYo>&ty@JfJ1=WoB7WFip`%eHhb$SOXd&w$4;i?`;pmz2O0y$~zM{5wYpBuYd9rCq5&V8XYd zlxbR!^NuN>`KUE&LrM&JGUrcA#gX=?Yy`0py1)_xx_)L$LIPz>tq2ntD#~8cub6$9 zA_wr`s`E7!W3kw(fte@PDRo^1{=4NumL1PmvK7728G*;n_2}ac7f~9eWLDED zVT#osD9*j+Xv-NU0+VlL|A0yoPle#R@V$@QP*LFFSgQUJh^{WZTVMNphI|t)DXokS zA{BJm>`ub@(=|vu66c63zdoYGccC@C2MVZvXm$M`Ksqgr z@XJw+S&Wz78l2DC;dPMoVY#A9;+SiuxQD8z&T}A6@@~nK^JtK9xF9biDhx>l*lL=L z{-lC{KXbN7fF*o*zxQr-k_@jR!-NlENtaQrS}LX^CRKgeKIOY^*V3TfJLI`cKu7&| zr1&brsHq7P<0XCCdBCRlC70CDD7u=0aHbqNm`5DwL?X6*T421A08=n6cE_lvLsY~6 zAKu|H1;+hd*%eEY0qmcD7c07K)y#f**st=R0ec51dLgvK5#ql_S37Ek&ggKNVO-xL z^iJT+GPo+g<_f-lIVD|99(5omS0vUri{z1;>g&I=K1et?R!_nPO`#Gp!wmic#I=nk zP)R!Tarlf}f9r3uCMdW3;G74sl6HD%7|%?V5S>neYu`vW8_y23c&Rn8s7EM+0vM-R z;mZn3=Ubir*%B6QN2WN#>WTB% zir$z04v%?`KlA7Dg`3Ry9mPYN;8(Hp6T#G9mdCE~ePBFZ08pUg*`YJtn()l;KP>M~ zS~uF~8Bs}^L4sHW5Uw@LuHdFm9rDw5L$BqehW@hC=lV+i@&rtUMiu)lhr=MI%e3bl z&<@Z!T*HrDY#5h>Wj8-(+x%OyfbFy9E`fV;r?pBk4-1))^`Wg|eO}x<={jS1gS(8X zc)9ZkTpONAQN1ISyo`4KhZIg~OrOf(wYtFgtm+S2eiN z@8QK@piA5^@*oNmX_@S>_aR(4qzG7@S#Y>jsc@t^jQoJa1dcO+U!Hw`J5NoglJKHygs3C!@B2XflR=0aBWYm;|`yr1RsbtA6WNS_K> zd{$GR^VqZ7m1@YpU(TP3A4qeT+F^G%bD^~o>4%n6Ht`_Oe@>9Nm@n=-a{T#sgrw2? z4i;iXMAI8EMXR}CKyEIu?>w~k>Pt*`Ws?Zqvo*A7Nbg2N5u0W{(1q&3$Xqy56vj>D1QO-L6qScCWRElC zwxzffF3I1Z3Eb|Yp81_J<-gNn7=jn{ZeGr<#6cSagjaS&grq`Q_kX78k!0~RVXr1I zkj*7Hd5)&~>bv`?|~g zLva(ZG&o;EH1_lLHyX4IOuxBief} zPdZONekXX@lfYo=F|gU(+m3VI_$rxl(t7|>=LZ}<;=r~bV=(TvMN4GPAeH3BG;eVk zNmZ$C5?Nn!ndv6@hsin8O+X<+LkU3Q)eEkqzYl((a7LHTFXWo1zXP_;brgAbOo@jO zA*uoFt?K5}5jk@5DYBZB#${QT^}xd&rWct{1ic@N{~?ha!4xDm+K5v@ETuXITi2tK z|0mI8>KQjZ&VI6h^>jD*pnswU;*W9Q2sR#P!Owc9H4Wi5#xfc5>?riP`@>u*JP#>4 zyy?K6Y?feM4l^|u^6q!DsMx5N9k~{m1xSQr8x%TdSj3ddc*EJ-9v%zTLNq)8omeYt0G`?4k?Mxy2l zP){Kzgf|J=IQC*E)lu@K;6GC0s0&=3I|Qec$eAwX-(Al)-(IUEPcU>bb~Zy)NsNSq zom7%?Xq;J!E=)+Uwo1v+kFv7B!97DQ1ya7Zq;YHF0|N-{i&!=?IY*BUlx|QO0FAwD z8TCRc+_XTx_U;h=c*xy#kTKnG>$#$6R#>Ha*1Ps>IF4(^BmrG@FZr~D9vE(EM}lnU zWy-6SH&iKzcoeZD>$uvkrRr29$@D{?nkem&qEE7y@M>8zQ9ywnV=8!)Y zP@@|)_=GwTb@gO74s2OT{`{qNAelaqgLt~6@2s}+2v-ZM;6)*~tcSibdV}Ne73IS*F@O_FsdHKT2z^a$%Dp>;RCI*Ua6U9nJmNZymA5Ha7Rgs9ifJ zl#p+Spbrh=?|FlGgSOVJeK8yr2uHncGkLhyUd1C^PwrmxkI#qSjmt``8IiZCV*~y4 ziUA9tad5S^$gAqgY_uYIhK;JbOe8}WynEzN`@l>Gs8%5ald9 zM^uu)g?iMgu<4Am;wRi2&A&0>D18(IBSt469j5OIla(IAUj&{j_8ooXV#@?>ipkan zZ8dvz>A%*dW!$x8$uTLqe9wC*udKg^`6b)7YSeIZ%oU)cFPoVH`9*9T={8J=C!8xz;}$JsQK$6!$FID*qG5FUc8 zgfCi!*@w&e>Ju3?8f;iCh8VKL>P4f$6cWy90y=g(%MVL`Ey#W6O~b7tG(i6>`&irv z@a@m%4FEcCZ=Syd5-P@bEY;dSBFkNU;qp1$xv;1MaqzeUdfhG2Bt*)4)XZ zsl|ThHcUVyY~y{xYq~-x>LN}u`g=hQI$JFgZ_D%?ix&BK0HEce_XnER|2h{$|vc( zj@QKPV(zD_!83-2{f&c_f()s@7-@!ofnTNYwM$5*Rq z&xQPVFMf@Fh?AXGQjy$0pAE#iMGpxrb74QS&c+t5iQ45x|#F*GWWB5 zWXFe8d0tI4CgDYeEF4nrV|cXzJ%uhlq(#w3JvKhEq1&dYMiVzjU4nxp>63@LO| zD>`g>1W7j9?r%ms%e&VuN{$zr>+(DInD}<+f`rYPuw@xTgABHgv;o6Gv$sb3W4-Lu zLMN<3@N|o8f#Jt2d3^gl9GD+BzI!vclNvoGkKE^c+xE8%01Sn6w$&W*^<>VypspbG z5Z^s0OgGzKuvgZzc=Wt`upptcJx@PgCy#sS$UuwM6TSI3`3$g=eW%qqEfSWu)dA8Q z4Mr3vmC%6cP*EW6r-##99721Rn1KjuuZL~EE_{|&)qgg+qqm77{JRZFsTLdyHohUgFn(~Q zXCzAs(bmjQxSH84B6&{eB{}u}8KqT0L|dkiOfJjrjzW(o;~$QY-_^ERY0=mybeHQP zNk+Xy|0-8776^pP4>O7;(l-#Yq7Y}te6dIWZ^M5{;`W=~0slZYFu*lz(YPE|gjKZM zm8*17^>M?Afj_lX6axskjWTo(kMU77cuE0|#zGwe%wJLA9C1$hkw^Z8InA2^^0ZgB z#*;?3CJxL@6KTD09i~9zng;^cioTmVXVv;y+$yzLJv!_enlc>b2I98@Sn;a;uoeB- z6g?dR#>ZTOF)neGfi;h2$0WJ9%J=#!iRWOwSwS^R6+d|N1&Demr_1s>Y_OfmFYfR8 z{uC(x8{}HCHUPC?P)8fcswZmMnKKE4+w~77Mp6UB-Z^G`sy0$ToVmP3wgbjsqRJT{ z>(6!}eV$1%+LR7#)r!67>kI%-K(N160W;tRSB~0+2{+L6s)v34?5?tfQ~ zl@40OVG!oj#;1HEVk)2ZxULv%l-C3baYX+>1#z9#Rc4t* z+^%=!=WkIoO~~&3boq2`5YhXpJ0zFp;Sddy%SXem|0ZV7AzI#X+O!V*Gdp77iJ6PC zARd~8LKcfRL=<1bR?jV{VLWR3!7<&~Ur#WqLqCjiI*gaX)q$JV;w9^L@DZzkUqd2~ zIq!o8^BGkSadFqgkVw%aNgwi*$a(Mg2_va;b9;N?D_ldTtF;7{J>0RFe4dHMxO*g9Jt% z$7V+Ul+csPB?xjH>L!)L5eyI10Pc1UJ=vgQc6WF+!txuIwL)LHeWqs80g`V+n96|q zW)LS@PhGN6!%;=*Keu^fS%9{tb7JA@9~L^<1S0N{Qzq;QUgq)-bH;Ao6}kU<&#zTT zz@%~f1WJ}_qf4o#0q%lg9l)^E@b5GA5Q$pf@l5wAoB$X(t< zLyu})5RU}OaMWz-pTX&JZoj;RA+?vmG4jUxPEp%~n_T&@n{2egbluVS(+*yxAN4cB zW(W+Xf9sw^9cxL8k9dTklB6nlB=>1FtLmV)ZQ%f$8_pY7CjE#9eN@l`nwpx6`! zqNQ9KGOBs~;WfOVT7H)u`%NLHq*XQ5Hq|5(*a~Tj)&6X-yNaKtUaf|hk6lRMdaeVK zHUKjrk8p>E%oQdAcVgZ5sNHi^bAV^q7Kh)r{3ERYUu6P6NSpAFw*{HmbV0Bu!t;k# zm*kAM(y`s1NHInkGvA_LXv6mJ^Zvh)p!hlSwc4^=srKL*1hQ%kPXRxSKfhiYwy*75 z*^HKaCk=S<`{a^#{s_MBBe%C1O|C@rzt(pR&Zikw@+kz2iOaxdcuL&*$F-lQjicHl zUDQJ$5Y-q%v*8-fJ67Eh@Y_0u4)##-Y!tO_oOum1mjTLJhl!%7iM!Z(7J% z0#KLbQA#(f)L-^^LQR=YI$olS2KwVR0)%n>hrM4K`^NnSjs|-kjIRQB+D$sp($W~I zOdM+Xb@j`1FDX4$i^l1$;PyB6dsp12({bp?HKv3t&mMQoY+Er)Ce2@ixI8gn9F=!iVw?{)d=>2}I>a*zRzc zxgqtT&NAlCuddZ~GV#s{j>``iw-^5Ug%)FSu1&y|qGSIn#m~E$?fv!fs1B=9q>4k# zIi`f45|=pKzCRZix8yT^BHC89m&cr=>yQ9a667P}-_N1bvhy4q{%p~^FI-fGuSBAN z3z5UUV?mt3I1$o9%KLR7%=U5@jctIn)h4ws)uXJq7%B}KIY}OVEfy%TOegr+!cdEk zhs6mPt9z-C_3pALl_!dL5URI}zxF^Q8knqFXeET&5}uruo=>OZ8oUA7mMuhXeyIiX zNF|sxPkSD!wp3CR4%ZZa2J>U8+Wgr7azDW|95BWLneSa&an!DETZ{WI#ay-PqH_%(db1m(-G7g&BtFQ){NXx* zKcJ2;Fep9+CX|7-1K<5>eS-!!LYkzc@toglc3EneN;K_LZ%f3v#cnkfUovU2x1YXS zUoC14X|Rw%5_gOGG?If6F4yO>-~EJH;i}i+ii8$lM4lGIXw-`j9XudPsUB1H=+Y;j}pto`x>PCUxf}8xzY#D%HXuAakDp--$WMt;Aro3jRk!by4Fl9 zWUXb9*i;u6|p34&RJA@QTd$cYODAccDK%sn<(L%@t&5<+!Kf)ui7!=2! z%`g#WK`oZ>Or|TkP!8Xo5{>d_!n&nozF0y-2|l1@#4xFyahifNt@>CpRa0%K-CQ$B z??q(H(a-PniV5xF^vmg+}QMDM*c*xh4u@ zuA&kx;IFVjsmzIyxry{^E?N5*zApj5yUc-$30U>U9NBw1pKeiQzm4PhYe)v^^A^}1 zy0Wq2mPNyZ-Gbm+pFzQ^s1tv!l_FR>ket~HOqPgmE>xh(q64f@&Ef-(PJcR7SMOQEsIMlMz&a^p$^iFjUA}i@HvdnzR%~nhh>a+ShO#|HDn&35upQsEXQOmo>EWP{Xym;8LS8CxZGbhSZY1B^ ze%MLjhSbqC;72}eP(q{h{c>0|Eoxd|WDwGvGjdsZdUyhBBG9foGDlu8W6A%R1_cVzJ~Eb|RFDD=48^`&lDyx?rv zvKQC>R<>K2t!%_Yh*o3wtKR|8uW4`Y{Tf<3+MU!1|0eK$9)u&*$o@Z$Ga}#o z^3()(;JLz0{+-HY`uV1D%m8K=0maBgVmk4(JT&(pt$ZdFGoewTyLwQvboPX*cc0Ie zH<5~~&1p%&pB0o08pujW_B@=CjUCnBX>)tx_&-x7TBUq7DikC%C7Z|Z3Ioe zBxdNi@E=BTA$n3YM?N7~i(7t-USyy17}iCeg#1ouiOQ53;!14J;*n(iRx0+~T>#BX zU2_7%in9GxV`_nlA4Lr@@0%|jlMwG2+m%g_8I19g#ng2%oJ})7<0RVotf){%qyi#$ zQf0pQ)QYn4Fkz}nR6Wpd97c`AW_QU#;l0hX+qTH<-+AuLbRGjvMpEEzRBZE=Or&z} z#*0a>zOXJPWLcU;T%HRM-0cwk=T02@Sr~#bw)_uzM@;X)G9o6s4Tio7s`b59EQ25hh?OQ3q?y(AB$f-Jaix4b>PakqQ(g+Nql^ z{*9@1NXa0+6=+v}(dov)1`A|cuzc-*tg=1!2wec-%7Rdrq)Q`MFo0K)pa7naBR<`7 zMd*tgM6x!T{1Bk+$Bi%=r|ki-hPGn&#AA6O=1&H_3}#|c!S%71Y7w`B5Y1DD(PsNQ zkGvfjG+9zGVH4^ot=IcXcN?`n&&K+Z5WtE3-fS>asIUTmbMx?r3XkBE6frPj@8<)4 z)Ye^7*EMu`3|A*mU7v41LMx?1rL8m%uU)H~xv)QbD!44w41Sm94WB(8w@CqX*Z|BU4!*te?zWPc>A>=1(O! zXs@qv(%&8SZCg14E|MeT%=6A>bz^(ISIV6@iUVaS3E%X?0-q>F@)oe|d$Ld+@x7k^ zC7rRJ*9qR`&ZEToZN_;8C##U-igzJd?`aZ)5D>@E83s;DuT#Nkiomei*S^r}w@rn) zLZ1~0G}1Rg2UPjx=b8ny^M{u=f3_L5qD~8wvSpIh($+mCz3e98p$m!doy^gT^g~J! z0?`6>%;amQRAm7Hj~T+w9|23jhpFedI7&JYNTJA~2`Qs5a|@rS&ZRt+dj@=89pPHs z#SSDSlo)ZE%q}+eQ<)Bh$QdV!(HH=%gB2bcmeJ+P(Z(tvEvGtxyu`E+*rAbVZ-2*g zSq7S zjSJSyM2UtR{NDNBN8l0orw!CL?eASu3z}K&3I9e5F3F2(Zek$BYKUuR<4yDB1%e;D zEohZRA*O|L_?KVxBbn2%T-O?`n|!l;5Hgn7N%bE#Q1selzMA}n?9qJmmF_!0&bRwj zra39PrSh!zl%|0Fs4h>|6!UJ0VnOvSsNOv_!Nsql7W8a5sZ@Enw}t6A#5#uM|zMaCEhllVM%&|9hZT(>2(D~A<5-zyYQE%*y_cv zipZ32%T5@@+eIXj<16Q2H&diL(g{$YwJ4YF;Wstzy~bR11#EBeCsBru(|pRNc^?Xf zoF4A_nvvsAYmW)E)r$;#Vo2PIvIhf0_qblq63epFn!C<2)sW!E{88+^yxSqWDMUB`WE zBL@Zj7`6Cl+adaF2D5T_cdUwgaDoBYJp(a%uwEFC z(4N3!Ieo6#s9hV|lecuCBH;nQ2mBzTO1=$jc}>Uz6+@+rREnd3KmxJKTO-zbrNP8v ziGh3SWR>=F@|9#~o4!*PAn9$xWOJ5{>pyzO-!t3xd-lL$IEa<`C$SqVQI6d*GBs}! zhG7p;n*fQ*Pt1>AHJa0CR-#Fica#Q8^wX3+G!#*#Q7zmkCFW)++h<{VJHhfm{fhl$ zItQYK5aD*T`F!TI6*ytl$JD5LekIGH9lk9{7?St3oiCJp5br`_aL`%ml{6!&B4A8f0 z=H^-OP~!^(k5AwC$L}!BFKr=Iw$Lq|FI=BoO;|Q?akN{?LZ{wXtQWea9lKUzb!V=q z%yGgR-nFnC#j@_+XhlbsWO3iGQb~t{E z&Vnbby+8XTxw-LQj&%j8L$#_Iijj4i8cmfTvl6{*deLiJyg&RuVZ5-5eIt$|0dRH; zoie1m@tdDqt#PcVQvE~>i)!?B+-;;q9~3X8D(=Pp`4H$dI*98TK0>m$fHzl65sP(E)m%LzH2*2` zIVVfB^8w685P_>d7{|VClwN8uQ!>b(73)Ak;(*|J&v~fbYcPs zFW@_rB37ptY**o!M;?LL%46w68g~YpA_=?qUya2p0Nz$}T};udyFQED#n5@G5@+7< zz`#0g5Ux4%Cef%TA`y5J<8$a2Svobq9B6teW!8ixMP!*{PXwutl+w7#Of4q-53v!2 z#N{d3ne3_$L|@1c1s9IcFAwVQL-W)Ni~`|UZi z_JkLjwAe)rt0)4z%T1R_r;2ov{8ljmX82JhBT122cBOZTh~AI+b9U2FsgglgVqKAk zC?~F70q*fP1xGp~^*5}+`tJS33Xz(k|2S*6!(~XIGU0m+F~s6dpE7id9AR*6M6>xF z)X6?#8rP^tDQp7%w1GQe0k3cx*OL!(EV_Z``XF$^ea|4f$t8a&$|7zFs{$5%<4r{tTPId~~kjHc!ZTpmlu9pQ^U$gw{_uvD`D-wfl)NQyw zD`D)RmE1#S9!~4<(7)%R*WsXl&qMY2Xg&B}-_J!qo`U1}UVp=Y7n#4UMdBtDf&;M5uT@o8cj>1T>#`# zuM|G7mHaLKI1%;qk-9yghH|6UvfP>ax0s|sbXZmV!HoPtOMH2KS#VbjkUFZQ1L(PVT? zFP`iJw;0~rQfHcXByb49el&bMIRJZiz~T;p-E}W#yw?C1n(_mfz6$it{hA`*ElA1D z)`|E9VM|i9SWkBmI8Vcw4if#m^5h*)VE{a0cQ@%!3Dzq(+8~w(3U9_Liq|Ytop;f! zimBn8BO>>S`NdJ(N+oI6m)&MJ2+2$BQuJ>-?L}~WQt$B=>K{<3_^F51UL&7Kjh*cld^lZYaA7WG?E8sMF8*#wKC;(|?4(vp`UVcSF?Ulbg9} z*l_`Kev&QA2M=&I}@!TqD58|gTZC$T)MhwlVV;LiuJGl%li`W(Fy^4DjVbb zo49ZfD9sT0S{!!4%ZwHFdYClTlP&P8tm;C5;ElX_FGp4z_dN7;I@&+RkedugwE%8^d8bdx;hM zaXs@`nEo)_gprEd3f0MRNaz#ToT2fZOi7RriCYenfc~CkWb0ezK;ORHe#{gpYp?6d zJU<>mf1p@;L8;Ml+ABh^5eWM(@{Wxyb<)YwswMzI89+o}$f*M(lggc)78Cb3y2ZuknkMd`%m2;abW8pZbc^T`nVYcj`viOfxpp43NFm4cSA-C~6z=!S{iuN-6 z){laK*cGxg8eswu*(D!*BmmPriK~)LjiY?pljzUtCA$!TA*+2}OHnl_<}$rJ)_~qN zRd<*N3A6rU+iy{NM?$TZ^SNQWN+nOyOE=g$Bq88#DsXSA>I~S$f3!IvT=3N%8^j;T z4~gW^Tf=#C&wYzRLmRc8S(ohV1%|NUjc~=$!f6bNznuSNgXn=iZR@#VI7NqNkMnc4 zkbQXeseG}XhJ=~_UEfelV-p%V40lZ{v6)Bsj-LjK#Q|OdoG!%`s6ok?QdWQjMYP%Q z!cxkMy5;&UJU!4c1^{0bdsjd0rN%Gq;gN%F@)Jxm(0 zyGTB%dz#s-+k`A`;zl=vEEhFXFkB#s(PamNMczn;uGBFcTHj+}kOL-Q6Um9oU7DYv za$a5(EOH++525+o-)du+E?lW0S5Y!pl^3bQ=b{>u3uu{N7>xtm5{^ec{q2D8N3bnS!pLo$KK8f zS<|X|2I4tf{JHR|Ro-x7`ecuqGhxC4K)!LnpLEQWN$cuIfuAAnTz2Kg*$qE!_F1(= zGvn7at_pZ{mD8-XB`&fv0eIIN(6IKseGj)>$=DQO+*MS(37lhkE_g$NoXm1VZ7@H8 z+wH0Yc*_OAqCK#D>J{IPnR?t9{fc9ptk`yV&TlT68ceadT-n@!CCj8V7qwl>PDwPs zk+$$jopmyQT;IN51z}8!x4<)A0|C(8TMt zs$#tsAr+r@1ON`TLM3xTu0LZ}ivteqY1ss#;cocKNMkYCJ7f1Emw{`kWBjxE!57Q8 zPdR~mF*dg!eQfwjW zQ(nS<^1FxT@TDwR26(;WXGTr?)ZliQ<%@ge&92m3508)Smv*_zo)hcKI;`}ZE4>X` z(UleYpC81(VZ3sPRNADdA01k_4oX{R_2b+o8M2$48^7y%}EQxsYf_L)?g zOdAX>E}^e<`DV@ziPR?WPM*K$r(}#5Cv8L2_GIT`>-nLhky4p=XoG%4?njWJqX} z81~quY881~4=({NVM?xh=~8)fDe1Sn-42KZ-2hhkm}K6%Vg|~ZRy|((mYRFG!gjt$ zw^+c3U7XRp>J<0TN?T6TMbgxzdB7nl5Vow>=PKKRnG zV!||tje`#1A9!C}&FFaE$XeQ?*YoX-ed#o^F5$if#?ra31lozgJo%a{x@O_N|65?! zZbaaq2o}ATV^Pk|ZHRPWStFPy2|Q%r@m6}M#((fMi|U*41!6EVYzwVWRR{b%>D4(+ z3)Cn$7To?8(mg%tlJ*RBMcM>TPi_KDEeD?#4wkXH3Qn>ia|*}9@H{+gPpaxN)Vw4W zG%mFCaCCy8MY(ZLvD37`B_hO~a5(3k>yfpA7h{20=*UGs);im(3-=6ebAgd>J7Ojo zXp`+I?&961enVV2#FtxLM{lnY2~PGZDKVrHWTlkbbWh|p-k^GFZmCVY+E;lhwvY*3 zvI`tGO6^3vM!J7|49jZ5}0M?bgoQ)@P%b7j&y;551iIs6MO?EUNE?sVM?aQfbA z6vOhebi{iI7{M}3=^WDxI)?9a0|N+RJSk&3E8KElK?&1Q2!sGzvp5BA6|{0gI8Nxx z==RG+ra=`5X;WG#ger;X5dP2-C33}17)H=?0{zFjY+iv^;NvN?=Rh^ZEl&KS9c2hE zZ$zkj6+jC_oX3Jgx*5Qe^c!s2S#B$O%J%$)D~9Y3U`LH=?2cI`n(e(cp)XDZt1e2y zi#tm51u(3;69&8d!zGA0Ob&lVVK)*<#bHPy7-X|+@jpLI{~yr@eO(%U-97yM#Gen- zL_Qy-+v?oyK2EI1!}R;3;resFezpFp%6y#@{aP#ftDZ;a>WAm`-Iven|9Z7|^ZE^+ z57iueKT}iW^evyON~7WWmEib(r{~qC)8x~4&(@gv`n~)r9w+M7tLOE9&#SCI;jK5% z=-NIXvN%2;vnlm-cb}_VW8wQ5;P`&UXVtEMs=B^@uFtDje}#bOpfwfQhb!FG;C9n@ z_H-?Y=_FaY9rXb6gFVwnqgqc%2P&Yt7)Snw4Ia!!qz6WK8?hN7@id{SA4GCLA_REq z2@v6WT#r`7VJA$<0?~GNP$(HvXY(_vCqR{l33ba08nHmWmMH8MjqJ#y&HDp^r1&kf zeA*d30k&RHDTa`fC_-}CtX6fUtj2wV>%7p<#_E`U4vU?#+CskL*Lk2_EDFLsJvz3k z?@;b~k;@x`A(ct+Y3?V)Mfm6ihAccOCgr5Sq@Xv}-o%ZZIA6yZOJ|B#m5B6REh~Ma ze3A=WDck*{H1x8CMUu{Pwi*o|#uCXkGT@W^oecFNYoZuAVEeOn(%q^afa8O)U z*@B^U2z)B3+5HY`sFS?%G9XcIaHxCV5}8BkCJ(nWlnh>ATw z0*iZjZw1ZFp!urYdaEw_w#5xo=>C9XX9ym_8;?N6!)1wd`Q_zxr;)+QBROZ(clyZ? z6VVgP3O@0eSJ-#eM!x&S#mR9JVL#qW_gOSHUt9P_m~ea4%bmU@o^xFAVeCzp%x#4?gaP$AuRl`F$I z-pObYnzXe!lnSl564DO``}CcI6qYtXk6a9f%GYMi&f)bF?xxy@(5__%j{tLpMp^Nb z29TRDpE2ld_S}CLM{lLZ*0$_0_$H{5pjrSvhf;vFY%5WNLOrmKe$De)XatI(?kP)N zD;FPCF;MtSp9W-us#J3m(I?c(|5HfYS5uLw&CTztd`0=3&$|(&+*410TVFGMMi5orgJKe(mrAb}jq7$hJo+@~>4U{&E?O_D{`fcRp zvr%q45X#EBA3%sPx}6_6>KNz}vG(YAKwKCHl`^)pS6OBuw@6XN)i5yb)CuCKyDslk zXR2pMCJ)&7VD1m4#>)gHNj|gjYCJ7&PU z5qHv`b_;Oa2%U|Ipo^sAVQg8lUbYIR*2rWW8*!PSGH{e1Qu{`pV-CK@oX>@2lAsU* zyqXns$Aggb(q)3M*}$k8qFj!6b?@g4pig1<>|cf`nVl#Tu)z-Im9Qp}6z*%%kw061 zG~~2cPdXy}`+n545q^-&9l;7dTR~D3MmtT_bcBdM=S**Xo4mi&K;qIL)K-=~0mkmc zoI`$g{4K+-dI?$?<9}1uBY z?%ql>XAAzAQ}y7Tu?{%SvKj0~(?nx2=UJT}R}U!8k=gV2whgMijn=|44zf0qc1!T?xmfE%^> z@yG|G91gr}!7d@R3VKt4V8M5PFa#XfCqjJIT3drQrVWFn@u(tH#|2i>F?@JI68WL@ z6f*xWG&b3(GsjIYy}|4W3F#t%66@y1sVPqE%`ZE!VeerUHna6MAER+>K&7ijbUGju z?5s5GLL@>5Bhp6@ox?AVSSD2Y+AK_?QH!TYg`H4%-Dt2hwuggPR~gLUOcA&XPG?rw z?C8rkhK_Gbdej;({yXGqF`|m-xvq?O4m((ezq8;DKLQ^>Ebj0mBGkdb|;=-N0Ik0~lmkvLB zo^pp2)SM0?d9=+e>?#{{FB=K3tLgNIrxlTT-j_Un?(|hMI!*4~N%m9oCYSmBJ^ifN zX)oP_-)~)R2F1zG$CESIhEF(Uz7pMrXARGHoBB4--Y)HDus>UvH;6}J;L4+SzG{lW zXS6OM5B{A_TvnuyJuW&c@9>!d^jj~GEhbC6@F6Yb*G|wm=NaWc-NzBCM^2f=!j6nB z{Jxm(sZNos_MFbuM;>e%qhSs>{7ckv^xtQl5P*+NFHKghLhs}tCYF)4t&kRIhW49} zqXO4M>@Yf){O0bqvF3p_$EH&zIEGfsMqXEEYj#;M=mczx@#;wDM%9K*9;3$yBJ zpzp>$pKvu&JKG0U15X;8d=-x>>Vp_~`WE*(i|<$M3#=7%2;TGc=srAPrfC>pwiZfR z4`YGTK;H1Xt$fMm2RR%zBmYNNc0SKn@eMOBjK!IaIuVp&w6p+!2%nT%qF9O2&Z;&T zeofE^KtrZm5mV@KvRcERh>1*I ziYqu(MY#jXFq4x#uR=~H&Z6l3@Eb7}rFp%)e-72YTAPbXU9A1})#Vk!>>NtOpdw0B zLaUSK^L59Dl6%WewjCTqwG+3OVSkyP;!ph3UC;j@6ri_owaz3mUmJ#miGesTTxUiw z=wo3Y;*E{@IV76aBoMm1v2urw8l<1VA4I`^I#8r)R817?h)2sc^ZLo}JOCL9OGOaf z;PVVGTd`17^9_J#MKp5zKN8#{WfbSbT*G{jMCg;e?7q1SD#J)1j4M2BB3n_n5L)y= zrjHS(Sr1zsdT|TW*nyuBPkoqG%cl~|DP(83nln_8JycJoX{s)bP@J2G^^-sriEWlz zXia(Xj0OAchZ`ztT5SZRXc_W1F9nf7lRtx4mJj_<5uFd@<>HtbLzyS9ckQ_H$eajl8w`w;bK-rLoz1~C#pdIuoX^=@c=5VL>xNI}`d!dpXl>YDDE+yz=$C;NP zQnZBL=q-}?o0hw$;!7Qgo4K8a7S;+f`U^)Qjaa}U1)Lp4AVxmVkX7ywzv%HE4t$mm zh3-hz2Y&d7X1g~n(Yvw|EyrzRFgLB`sPBMhp)?^F+4ex3e1Li6vARMEEeSCxM@?tv zU|j4u-XQUb8}2)2^_r8VPR_CLj3%6$TPBbDz$?BVRr%Y&iwEV4hWgYPqsw^PR9WUZ z9$cFB!T#MLPhI*T0=8kxb!zCfs?EFg2yJ9epyN~9??9+t4%%B@d=`}dBQ9bi*O6i5 z%zlr`HF8auK6Zh?MY!GHNu)oWg4nOMzY=KSnL^K|LakeqDUTwowuoXDFoT)w`IlRy z9_Ss`H!wFZ6`zj)%I#{}6@HC*8#&!Jv=gW$wji@DSIYBaceX;I@5huS!_7Y;A-&>M z)_{STv#hOnwa1>TA=r=_03#Q7RO%r;y6F@0>nDo{>0ya!BaA8WWFnveA$%DM)Z?x# z_X#hS=>VG-IltJA_&fTYWjw z0??(tEsEqvp{Baw@2jwgf!zeh(+|sG{n~}_ZyGR{{4lx?S+l$OT^gxSZ`9Fb)4oMz zZcqJ$W__{$QEnavyNTVG!kc^-#1#7S5I_ z_HIEm5dxFOZyrha=PUjqOPk>f)__Tv3u`UzKNH~$U6tXOR`J_%SdJ#}mE3lrIvWn? z)KX;ROS)!W!XZSFYIArof#*Jc%C_zIduX82o^lKT3)Sf_jaj#(|2xdIJEw){u61vnU`3^S`a3 zh3x=mTi84l&$HI@sD+OY)Pmago}ck_AGSz+6BToAN_k$$*7x3rcF*N})E{$A{V=uM zw%HZDJ0Hxy7-zP`=OaHCc}agTj^4|5PHrSKQWffNv{{;*7b2hDPcN{P3voMOtYCmc z$~*xbIRchhOvY1MUvhl26?fj*dTeLM1vCd)LT?Ur?P)KKK}LBs1n@DQK}(POQNKwd z2Sulh8g=vIvR`~2huQuvIY}B-Gk1p&#iO469a@k7DDp9KqD|@zgjjC#ySqw@i6kh(Lr8q9 z0`$%`(VG8j1XBkgJL%Wp5klXNRjgJdZMyV(5v6P9rjPoFnA#i^5PCfqy!a!*zYO6W zbw1W2^^h)rjT}8@5DX(sW_wmI>?1m8LSHwQCW7^6Pxq}41{n9J@ufElOh<-Y&ffVR zDq<}SP1F61PPj*v{tTp3I#X**zgFMj$)qKL9;(WWC)%#VO4F}fVZXXZi-I5m?puNi zu2@?a({x$Tcj5~fdlpyi)|tfotZ9TuM{Qk4cKYl+C&qGMkrt@{Cb0^&-7OLf`LHMt zQT}$qsUjnCOMAl>cKs=7lS1OMR4?HtYj%=&AwNqNI;ail3-Zstz&H8?BOZK{iSRwU zaz`lxWBQ~baEsW-`&`~sx0)o640XoSVBWcl;(Hr=&C->$Y2i~F25zBQqm2I+A-8;r z35uQOq-|yO=S1p%xX_E^5Hbyp*~d zhI~F|Z!IU|%f1De{WQt9obP>3v(Dz(snjsyr0K(Eo#fgah^WK;>6H56Ox~+7&I$2B z6}}@+rdxo$ty+B5Pe|f?s+!a-hQlD#T*fzZi(-3x*4C%*zD;uP7wNRvXRFA-nHW$@ ztY^|6P5|m@V;dXH6>P%Iz=0_Eb&ezusVt^MrZi{>*E*6<_43Giip;7b36bu?R#>KD z>%^AdMT8>?p$@)eVA-=rDq@#a4=mYZGyullQzYxb*=DE$wISCiXPWU^c-Bo@WPmK1 z`Ce+FO1K8!w_jiUJ$){7Iph@aeGJrr);$?t`|$5m5>e#noexKC%*Icx@B~pr);w3+ zo=3Vc3R9urPR+)fRa3pVM8#v0MF6q(nQ(GVJrcIEYS{17R)VODHYG7~RW)FgNzRqh zV-8(2unG1yu034TmRPM9a=bx@62?T#!_tZQUG3w$@bNJ{B%`|}X?4y_1{IxIo&0l) zHcm^X&MxZ~G1_K~B01bVb1#emRU}ckQQ??A+Jq;VD?LvrH)hyYZh_;3g{9SDOaQd= zt6QlCbjaN782JqQgz$8Pc{m~u8nEP6kGlt)Om{C(1lBDwJkJXS-Dcplz2!R;QMXhb zj$1h{uv;Uz+Zi1&oiI~QobKZ>OD!*cixE)EIl?g&bA)McTD3duFgg=|?MkS-x8Inb z?*#dO=K*^$ki3DPVl^AM$^Hq%lu$w0eK*^}b-2G-)2;*GC4EkZXHfr7J*-7>mB3k} zM}{?>a+k`RMcXH;T4m(YZK2ly+$vnm#E?lLodyFBfc0aLj zik|*NIWup_fL*y4<(0^{(aU>TM}X|udAb?Yt=$CG(5j6X4uh!#4@dZLsLQId{|-58 z(Y#r}YIDoLlgv5!!3t|@zcrza2_ySy(xtE!eDr|tR<}FfKYrDc#az7}w5CFT;OtkEa`y8Wa*&4e@{FZ9l6D#8sEQMqpO2rqBQf9P;7@UW*OG zD&9|~P6r%--1W~B9${83SXK@BNi8y-UHj8JXinYU&4#J+KLq0s7^?Zs1@%jrM*NE1 z)ats-JF+Z}&tN}dp8;s$G&zbPye!yUjQ?coj_qI|)gggo;)pX3C-k_xS1N@{C7Uc1 zHKz~bihXniB|W3xs5W}u0)}A7Qn6b*&s`v}oZu~#IQ@FzN3-@ujfb0wMQVW{6dwp~ zyqRQPjXhSyL~!F6AQI6RjALeKzP#$v_EBoi{2cS916WtSrLk;^WV=K-gKN_d3HWVl^pd z(E_sG#Ft4@!X@+GNg2BTGnNlZ^81Br8m{W4E&&)5(x*Ag!^N@Ijc@8h5WqnL|*N-U*j81mVBon3kzn&wXg>A5_?$ORS%S*J?kZU-5#0pFas{)*0#uGs(B-Fc@v<8gfAB zrWr{#!91Jm+-naPB;-Kq*CR!U(lj-(Z1!=-{IN0!VT=y%EE8v#>Mfk5Sbp#^~XPWwZzd%XaOT|eKA@TlW(-eu*o-3%m~`W z`wztZ_8WfL$w#q*gsHf`SG1{s;7BP58xzybllOt5Zw%-}q{v!Kt|P*d*o9L$K^=71 zBBQpdNK@$T65~r~2U&O$8t3Q@ z#So4^bu7+W$^R>mLCQX_L9n`sf&~zjxlq%3tgP|D6u5D)_5LWQ`E{a*cdM4c+s{2x zf^2muD4;2d=UjEVjAWr8SrOlIU~@j*)t}5fj~$`bN7YR|e%o+qz)QI)q7AM06K(BC zAB16Si_|&)CMXI@D?P@7$t`2UW9maKK=X`UpDM9wC7iOEXu+5ms>!xushhO$@`W_~R< zs8zhMz68fhKVtThd^?4ZkEf=ZBKo%hK zXeWWi#^~A}4zxx1R;vqtG^ZQWbp(KR0)0kqsFFh8Y(X9Yp=7-O0;D5R7oH!&I7X?c zlSN%5O(~92)G$us>OO2$6*u_*P)PRv2}(Xo-3d^VN+~4IuFJyUwL0U-*AFpEC-01KYfT{{@rWoE*Emc zEG|1$$avP25vhSVH5~9K=PO6^mQke5=zQ_^f8@Q4#Mq@VUDod7Ktd+A@|?*{5;DU* zou9es+YAu z^i9Gs*>RFmPEiz^uC5?2`9>wfl<7z3IXgYXo-DpdCrE-QIK;9(+WFAJ(AUW@iG~Gy zmkJ`HCy>zfaQS;-^DtPbrYMBPc55v`>=FRRHXku>xwP?|HwtJ7q`+)mQfSgLqC+8>*x@mEOxZ<=q zN{g9tJixOrXs<+l zP$sGa`^h!JQ7#M-SrUHBdXw2N`vkT0HWVROD^>Z6QYsS}queD7tzKA~Tf7ZaH1^rX zLO{sY-*m{(VUnz`Q5QYp4kI@*a(H7K1@aSAnRW6(svjHiAHrqvcxn8F2!h@ZpNSn? zb<{B#QL=KoU+uMmtrN)P+S6Q``pEncWUGN$+u?^@43Xae`9@s$ZBxtD@unAwO*?Tt zm-Sq2@m>|5J?@u8IQ+L-;WLAWFz1Mnn2#3sWm)YGjC;qiXqXdj(V^T8k_uY->A#6C z0p0*VK)}CVWv36^BeXFJ?RE~k-E(iJ@QiI(IAS`QwCNwa0+-CcJ&%$W$~4WUqtudh z!faQGCAm|zUByUHnST{WA>(nm6u8kY9O)+z^UI0E*XM)2qNDkwKdT4`f_1?~?q-l@ z>U-(Z)ra#Dx+LpoqBuO}6BMkx#P?Ywn(|YqTFbXaFm7rIhV>YO@XQJu-{C{Ezm=2_ zluQ1MA>8s%9-i+Lx8W_)fk+fKyrdxD`}W*KS<9i+c!3fwGE`q`v`EHSc7xczJAdCd z^Vr|jaRTFRXH9^*xYn4T0uXDnL%1i*2~Dpj^Jw}zZCN7%R_H7|$KcAn&x9uZvv(>- z&0R87C%^r2qs%j|Ag#{!;oBH zx8mCUrJCT86{K6wf+yrjQuyVBswQKJtUeCzx9$IR}2Srl`$hQ5F( zZTV@q(MRL*cu2fpj@ro*^Gtb*`4pMlXIgb4Dgm%7`8HG`Wr9+c=!)5;3H_21dZBs3 zJrNSHt9eNa&XmXvDOp+l%1VB^1g55UtJa2y1TYr@aYGNFswHT5qvfXXN^4~C1leMg zPe7(K6)onRj;Do4eL6{&gIpTUl5lHf9&YO@Buj<=;W2?6GKXHlZx%pH=p!Bw$| zuygebt?(XtQQuWILjz+`ET9zi z@m^ z3y%M0j(!_hkJ-p};{KZr-E&rhq&qJXNz;69@L}Y+KTVvU(kmcg*5=oSsqc&5swTah z!g4^sqaofqH0GE-+C&Dhsjm&mhY#=fyhVZLsFDm8AUE678Yg6R@*cT!i8$ zW*(BNV*SuhtyfMhO!%&dh`0nPqH$cSJN7#~^4}z}$a?va+zuP6S?94$e&9w|dTJ6m znWxX^P9Q)buuuuO^dgX(!@b_huiz($b2Lp5I0?Tg5%Dyni$mP!mA|uXMLr151HOUn zLz_%*@IHmHx@dP=+lwyh6TJzXSzTy}D(gI&ZTEDb=R+c&C!wa^KVcn^Xs>7lE& zr9v4#XCLCmyYw!xgzAb*@zf+o{JL+I`%z={@|>Z+yGi|ssd(*z=4O`&@?H&F~M#a-eOQ5~GOqzrvGU1y0W`pChIaf!TfOpJ`EDMUt)TpAZD(|UjNw7lpGQ_rU{-=%9K zl%La@S1BK?3&T6>Jwu3uB)M!Mu=)Dc8VaWcdzLb%&Ms*!&#PZ+zv1_*lBgd-X*X%k zGOR`C&z5F{ok1e!C$o3h^Z-v2=6e}+rT=!K{ohll>c}1G_9(G?=*dN?rI!Q~e@}1+E805RlWp*!&3A(>(!xj( zw?wHGo0Q+FUY_!ddg<1T_HPUbE;G|4Si4NjXpcIP?k~CA6diIAtuT$3r}v_%6P_S6`S%Q=mSF?U1{o+f8ec@M;f- zaanVbt1yDr1Pna&R2Kc!nS*0$gc3aeKEE3o=67iv3EMPz(A#ejR z)m8!ij)F^}6gK8q1c1toaummQq~9_R;nJhbTdw?$yJLsFfkRfcM3x+*Gu|9)U@Y$E z>J-fuW*2xq2+_9eU4M6O5TR@YfjU#_;4T`E>EVuR(NbsS=PA?xU$>ITIkBux2F~7Q0we2|(>w-PsrTmV!LZ z)-0Q-Bn+(9f7+j@xJAc+7J3ZJbv^7AU|Orbfl+SPR+6ZmXAMyjRi;GkBo)K7k!Jo8 z6cDR(+(Yc20*JoEGGqmVVF`C9zl;n8^>5zH??-VbM_4SV<^$BSHW)#*Fv$3_eB_+$De(oBb!P{ zpiZE}u-;LepIZ4$GQqSK&9NX@K_^+2gN|sO&=Wn+xpIfbPs8GiS?xD2p!&I_w4^vT zs!4irnH91x8#UTboz^JAwtC8A(lR;|A$5PN3Oualq83bI1H+FfdvQOo*O661f@sNr z5+`rA4`ox_Qv}&l%G`MsIHWl*&LZY7LtK@9*+JhuFjEbGii&?6dJy)u-#|tlWkgqD zuu8asC3F+pcKz_aF;@{pTMKXVGHd==_d|g<#elO}C!SgvNZHi+W2|i%dF27yVMy`svxigJ)(ML#! z!cJDZQa|;HLE{oZp1jnSPo`D2s>laf2K%!C(n!z5Xlkm$qn$FIIL+OosnBUx?O@71 zAg+ZJEe0va#mrm?q;*^|7|p8$;g)`PBiFiPGI;fBod`{~Wo1Aigp!4 z-FcDqJ*s9ry_y2!+=95%k`%$t0(#Zh%|(k25!YrJLaz`gxuULBmAV0FX_C?2$e>E_ zRfM@SaOz%ONlG1`Ycey}H7JMH<=+(Oj&ZdJH9ecO>!`R}cWS zj3W>6aGw)v&!osZszzD~(rRI?4R_?thvaex@G@k`zQ~6jZ1Dd&J^R31#zi*g6pC%~ zgx(l@aqA1Q0ZbL_3;etz!Ip@na;@HRv2dXoC7W9RJ0kE#<+iLJ;@&di4E&5qxjg{+ z$z&j0h_>6NWEW*GDvUHZS}{6~IHr4l)b;z^H#?2uV{Z~w$nrs+_q<%S~BV^h$ zht(=`m&O2qLm`6UQn1#0RLzc@+_G%c(&6-AD7NPD$p~g5KT)gjwS{<%u=t^DykI=} zscHFNq5jyk-5dF1y_uNcu6s(sSs%?TZ1G&N0$h0 zRx2Ku<^_7cC`OPO>`E)Do2%#kT~yD3GcykDMY~LmL*aX=w|A6Quy7ZOldhY+%PEBN zKx!H0?4vL!VIW8rITfrf*4f94d~H2`gb8mwvFJ@6ylMt)LfJ-;?t(xEb)9~PUzvl= z@8DhJWbXrlZg9I~A)HqR_dwn6wmhtY74mj$tsxW~-l{d>Z{ij34!qlf_>}QlQ zz2@uB#z#=?uiom7CdZrUkRBF~w|kf#^@cnXP2>7=$3^?kL46}YSb0CasOOAZ@0av( z0rx)G0A&q_qhb)nGf;K>eGXLyf$I9DaHrE_h|4?qtQd@< zb6Q*rNhS+6A!C|8^jh%GSu4_wl?c5MGt<(Zm&TeIJ_tp8=svudzxABG6VSn9zL-qo zE%Z`KoH+7as=h$#%U}#Wx$Ze7FKN{%S*ekJB+(DJaw7rr8aW6m0m7}eI25CePdS?X z$Q9Yu@HeG=8YYH?E2%ino$QX&`Tom9Pu&|dvaEzLB%P^wkH~5lrg_b!(gcq4n|2q$ zzRkNaU(zo$yPKsnIfBPz{TNpFoxfGJ3mNA^SSX;sk2CbT+1=`bssSd{z858d>|rIb7CHR(=eI3ouXs`7 z7#dl25j01FZoN*a$7T$WX_PZm4pY%vX5J8li(>qHE_3b+y)KND!=Lw;MI#mt-a@nW zwAg+(WbCqg20T?S^u<4f%JWB5$BB-@q$(95MeuE_ftim=MsjTG)dA~*B4RV`%Ji&* zWCQfaVZSFUu&HkgJ^eqGJ^5Fdd?5RGccNbgPgNY89>{^J(@{@r+zD3gI@%h*Y+J1Hz-(xMiu21!peLTdY+21_uW1s8yMOV<*=7vf50arzztY zVgUr-*UYj156kwf@;5(7*ghJ!ches z;-4VxJvDy1-&E0)DN}73oNbaN2ehLj`o~909-IVp{>Vo7=MyBs+YuloEh8ujLkG2Y zRW#;W(DWYiB5dyMmeiSd`_NwkK3&S`yir^_ORG(Hrv_|qYB>&+PtA&VP@uO7(3k5n zu39C$8QFlG;HmruKNV)zo<3TMh^8tl<$|J{f{f^*5Y8%3O-Z8TC;nWas zbf*IhaLy!W{`>nhj7qaL()@doJl_rO_Tr3Yci)iJ47&qRoJ%&iQ?Pj1c#wzd&YAUC za%c>}p^TyT1vqgq=-w5HSpo)f#N`bn9W-8{4>@kEo>VN>@vJ@J=WjBV1j2ovh*zf@ z>8}&mRCxHa`q6#H`kDo(d9Mz0(BH;xdNl~RR6r2@N;O%_WFTSlU6yt7-CwQS5&;~2 zS;B?I@~yJ)mtW|)9WBE;J?6o-`@DTuFs9R0)eJ79yi#Kg!ARlAorL*meEyY(1y56A z?#^^XNsZx`Uc+yn9;bOuT@NDQ8qvlAl>JYt6oSf(~p= z5ay~7YM`NPak_g16c={rGiUB_1o#{IN+sAdxGzq1o4 zqBIC>T;rI;-=ZaeiD2P!=wfYJh%7sP+6QjZA7thWhzO^2-rpigHctXVv+>hrxnyq# z#6e-Aj0UXP{CFh%V4+a}P&?p2a#7w!+rnE`rxF&#@fT9>2^~R4mRO?dJ}4n_&!OdJ zM2LP!n*Q7sTM;j=Fd1Q59Nq>NCblB^o(&yCSX!eoM5{nr8w)cDTKY{>kkoLxe(ps!lvei>Z)*>#t z0us<}e4IBa{!;6*G%fQ~rs=FWi+?;a1lzoyM3et+ls8ZFK(X&#}C0vex$a56hEpvY(N2wxb#G#8x2E@Bet&j2*=?qMP!_F)sBuzD@qw#HNHkfvo!~_*mpIb?$6)3GifxMcIg}J~y41jf> z5UvCD-RWT8*=jK>D_nLdF&hl3%O3#0S3;ndsb%YSj-&Ujm_P9n= zJgp^q8}x|p=erSlF4-!29l)E^DNSs6|Gup6I%aG>q_{1wK{F^>> zeq-NoHMY4-C)uN)rUdcl6cQ2zaE(9mlivs03s^`NMrFvalsrR|?%Ux0yM|EyVc8WM zLAzQEI6nb{0@L{tnmJQTitG+T<4?L?ByN)MQBnIE^aLmMC~sedWilQ42hnM|x@Mdq zHE^qi5$fJkHz;xo7y9vOsX}bK4oK@wTeQTcR(t1C7W33&!6<8mY3QsS_U5uaQ%v zBgC!PYZ15!v*Bj83$VL+^up7^(E(>*hh8|*1s&wCCq^$J#--H~R3JD9ZXF2AADQwe zIed}l{T`E~iv`ElP(Jbqyzajg_0Iw}aubA|cJ=&FS6Bruj?$guGI`lB&8 z)0es8}*+lp#^*?&Fz1f>V2gV>XEuic$uHu5dZg%|?qbo6I;nRjr z70rjapr4+h#>9NY^Hx9H!4Zw1DgO1kfuSFN%9^V5-4Nsx@_gIkd-VLA<9<~+M=EH3KW|Z_vkCON zA*a>UM2QS`vhcRjzu){3Y(^#;0l=Up4XV2op5Hp%D{)poenqW*DCv_aOgjR=LwD{s z>KXvdJJOIf7oCjjgtIdJK`#A}TAHKUa#-3QD$)&gebce^;&m~=dJd@n=jYR-*RAlg0x373ty zK?m&sLRuKTL%;bk4G%<8c&JJg2(C8z(5NQc@o(SfN0}xN(WxCT*X?oNcftO~FSqY@ z!GWKD<8U3=%ajBP!->#n5z4k6ZF>AODIzD(t?H};uo;fw!EOEBONWFNoMYNugq-R_ zu)yb;(cnrE7IPE8FrHc4R>3%iRI|&L=Sz{Qh8*Hr*3^k@GDr<5=ESqlNED!0m+-zZ zs*ATmphV*V0j>B)-+HlZ*Sa5|d{T7uSdpk{xA+z-r}zL}Upla=E=UDDx|whbg=YTv zghNc245{Fd^;AdaQ*&ciSB<)fXfv)?_+AMpTk_WZ54j8JxjEfzLQPD+W58`+EKmq| zmzLhi>LajGS^5I+dUiIGc8DnN(>pXbDim8Ad}btXz>3?4n@S1w#!I}^;E<>fpjb@J zuX}wT#bIMs;w??ua$IUxF_;4v-we)SQ)4Vv7Y#*%OR8NmotxS1Zp8&b7+9vtH>H** znDNlsOZ;u~PGNln3j06~a{w0@_LtWE8lQq0p2lyZNwc9UI~{f4f**X?{OpFhDFxa< z#a|fu^3}@UI&>hvuprj6=QNzv%FLL=lsSxHF0BxE9yo;A?IV-j&Zjb--f~BZ^3|TC zU-&w!E?L<=dv%5Hg0v{nUWCx|Xt`1OIe3rIs^qNca*lb)*_-;FAi1W7E(4%( zQVnl4^SYuD6esZ+k8fjB>|AFs&`71w&?kxbS*Z9)!BZD?%jDm@sJ9A<04~m5N%fj? z&-yRS$(W&BhvVhiN@UISDNYZNv{3nydJz!v<*`pQDf=(>?uo=Xg@u``4m zivL%4JbM>`yUH47=@JKU*mntGbrU;rrxYNJ`L)wE_RzCjM|9n!AbpQ}chiB8o6#H42g!=n{bQ7F@Or*O<&{s-04<-hKQt8rB%-|xpS$}T_xgV*mY%K)$s@>gxFtm-xC2Ov!$!MNSdA5RMe5;gzVz2WGj^b>2)D z;^N;ZMAkJ>$F)o!Y1t{z0v&DK^+j%KIG3SP#WmLL<;LT1R@d>juczpOOV{}NWUG5(B0dt496(7W>G(_U>?LL0iY7>Fk}(nv_W z&Rcd0%$Z9~7HVhxt3{QmkoKr!_dAWxiCzJE<0Ch{E0=t7N-w)b%$gC^w9#-PB0f!51`whRZitd z1DXcPB6pktov|n&`@lAv?TlqX9tn3ge0Z9W_>wpIE|ZD591~VteYoIVkrMt01ty+` zbnR!2aLic?t(5gGPtWF@T4=QjtD35nQ8>YzCLbK5S4C=OvZO-k9KHv<`3_SHbSs^$ z1{^jU2Pbm}MsYo&B`>`+{e&M%C){O~&s61Gz3xD%%lv#}^F1lY9&zdPoMF7>O;}Of zAE&%yzA_GBLck4{BM5~V=fK20Rt@CoTSn>wT96j0t9t&H){P%l)knN`Nc`VJ#6h`H zKYk-p;$;#2Ap{S8;JYh*K)=k~G`Xz~#WY-mY>8eNn(afheVUVOt}hvKlPje(Eb>v7 zda-*SDtBsvf`+;7oP`#=>CHu8Wx$XeE>ywkcbP4j7{R`;klit!M(ZqF&LB<4OG%XjSz#5@D| zb5@!7idlF%fjCd<5DG`O9fZFMD+u+5#X?(_fQJrO!EcQ=m@?t9=Awzkr4ov>uy?`i zv^XQPst!IEbr(~yBE+yb#7?%_#x#YDdFiLp(rR5L77Rs3209(Fc(e|Dy%RYua)tqv zfKgcfRSpdGwDCIS;M(qP0S5xWy!}yVfL&F`s`@UuWAO~(4u375#q{;LqCVQqivZ%B z3&tt~m&;iV?EEfKAW@;%B5z)XgvlAZcPX7G12+PX8M)1~OPsli3`hbH;`Kp*PqLHc zTY8nrFy(?Cl)L!pwN@V#^BdyqVa>Zek+|-M8T=G!j>ZXBvSIiZ4gwGiJ}@@Ruvj6tdX1vB>p3t=+XEN{aiA7EgnRS(ML}4sX&>rGjK$BIu8G>C4g%=>stRvfK>Z=307-EnAJQ2T9M1&53s&yx< zY^e(Pnty<+-34`xlU~E%G4N-vHZ1-08q$P;ED@4o)1g~UCFX9%8vP=QMl^7PxYN$= z2fF!Uq4Xp=@&qd}??`w{z@3sXclqPSxL1*rjO<+A4mAoJA-3GgZ}QowR;uwq=g&(s zU+1{D5q7R}-p75;svB+HF&8N()w=-!YkcUGs;y5D3H@s~;J_gavVg3ghB`ogm-&)$ zMO79-yWH#+w6Q zHmAJX7(BhZD0Aou-A%r`v?GVMZ@k*_ra)*b+%#3iJfH6b71-R??JnC;G8dS(9h-5V zV?s-k+=l0D8=H5J5(BNunAc$NU@wL~e}fYLO*=s}+A8KvU&zjOM2vCBUOUS-3CbX4 zY|_Z0Ks+;ha`M!6gz3m%9)JkQHwO0k*I{=-?U0d#4ln!3v{oZH8!KD#N*FBfAZ;d@ zV!yD54xe}N5Kbs8Ll*+mvzlg}hPveG$~-rG8{UX~UhS(x%zZ12wak|`FJZ0lDfBVz zVT)v>3Yoj7zJN(C#7ea*`S_ zv8x|~cA~5_>jznTT34~HG;PdPp78n`B_}47bWoHeo{Hs?rf);6#@48dG@W^4cdZv1 zrZGw2nqugV*AAB=o@3Z^{pUdl@>|^NSb>+Q-(7Fh;V9%p^2|iG(FG`u3@+H zMddopPNOiT_r@*mmTNy27aar2EV^}?ALAb^AmIN|0O)_W*ep&m=@K>fZ&%XMlYYa! z;lfl_DE9Z-zK`1zdWjSLV6oIO_$wxBU$Y5wsQ66T0ONP$pi|8)NiBU0r1|bB_Tq`? zOOy?eA(f8JR$?J?l-xIUNA^fxEi;CYcnsiOFQz2O7A?HfX91~B@IUzZ z+{;S2A{|rv)Q;Y4t<0TU)qijc)F*kmQa6OS4E2pL40Q)}>jq#02I~h*&;a(aFHQ&oJw#2*8~WwbKbi zxELGMbBwXFm8NYiMQ+}Bc{=23M8S$u>P}YS-A@eWQALUk!1GZ(|7!K*!>ITNvsSX9 zd0y{0iE*Gkd%e_TAu29dTyNH;&YLqxS1HPVr?v#*RlSv1hTAvfwssAmf;|WTzgxM2 zSfrrAsBXex-+z>|SA&kFG3(LMSM1qaitDW}-YxSIJV($}g$Gt#g1n0y0{BQFF#%FW z0q;Q&pX7^?q=K{VEP#E4NOq_;q@<1ANv5o1@LKscaNg&DE+-G8#~3g!O6xQ5J>kY#Hyk7C}tEw?0cwq$e6io%Bdd zQ3}P{QoA%LHTpnpKd}MoS=L%swS17bC|x%f7TlVZ^*${O1?R6lnRz!{wM- zD0$6TlGw4(mEPHu93VT_qVsd281)cd z5>GfUEu6cr_78tUCWEpuXbD>*@4t}byOq?183ReuN>JOv%T&txtP(d$p^=*(TG8p80dfuu#x|%WmEL6h@kYQL-98EML^&&L#*dNclwK_5Ut;Y6T3F!M5l1=#ert zDTI1kKmS$C!^8{^eBNO^S7mx6H&wr%e{yw5e2xWCtZ}V)_ZV9SF{oD1)hFqA-*+Gp=tR?NGR;VhQ zL{g0|<sg}k$byir z254tgVaQqvgC3iv7;UArcAtz}*Ge_%nV08qOh=;qp;|rh)yq6>LeLCUUKrv)_NI98 zvzRg03r%a)Y@Tyl{?9m5?`mdlxWZ^BNe{)?BNhDAwY_-WyTk(Zw!dzNrTJMzHNqKv zV?I@xJz8Voi`dJ5ZdO@$+{fai>}5swCHBtyQXTds_$r$ZymV^Y>@Yys6DfS1X}dh! z;J)=ybQ0Vh@g(YhD5lKujnu;TG^UnSqz~$t5m$w=M)ef)K8D0vThtN%LzuGve;z}9 zui;;uM!idfQW$u?YpYUBEx>6j*Qod4E z#`&CMam~ab{bsJ3ic1;<4!N5)ucZ+v@h%}d+dxQ!?YmaMwmCRSq{bANiw?YCKy83< zVFSEK7KGCtKgOY5sRd$Cn$}nc2`jcvQRTODdi`p z*B=^QonnSDpV;>MEC(tgo$P301YK!Ups_}2#b-sYXx=F3m(7JA4b=y?Aum&vAnA3S z8sXzzQ+q=KS@P~b_(tOh2RaJ0(SF|saw#w)U?&sfV~8}N`gRn(7l^ev4%zn>M48xZ z*vkRD3itJhU|yP5=4eiRA@Ja>0JHo{2-*g`ca_M0Pg(Mbbr8&u{bU0td|N>?i(CZpVOk$L z4Jz>PZ>hHHM~nff@V_XTEPpBF+V8Rreq?wY&0NMpl>*Ru{y89I=|R zBcLqal6nCT=$hVG{oh0WdW>`DDM;mvA+aE4yqxk>(N^U_Q5P+5nz@ZjpZoCjT`AK0+L)I6$2$%AEnI zdbw<6PY-cqAHr#my-Z87AdlS*FeLIJ*a)1|KYp zjQD%2u8#?N(Y-P~Ws)*ALyS6@+(W;H8XQGfcGL@M$Z4TFW7)PXz#*CYl4>)W#8fht zP$Gla9WL8xzE>l=V2$RUUkf>7?)cv-5C+F8=gig&uB>v4 z_D1_BA;v1!m0fH4M=i@9rE;>S&@aPFWNu0_%g$p;sH2LR@$2V=5Vb^Mk~StSBZY0I z0~R!3{!<#cGywW<{~6OW&`gr|yAzV{XIR<|ovGKK=UNxYFq&j#Kf5yFIIhK;=GZ}L z#A@eQh{ACAfR?B5vu1M`MO|XJmE1XN{8` zZOt(v?&oR`bBI2l1%tyvZuC#uSU4$#{{T|Ikz6HjAKE|||5={sQ*}2~vrmw=W*-s> zFl9|&RaIQ&*@0KHuTq|4cL^FTwX)S&Tx~g2mDyv|-t&+ueEuwt@7zQpN?^d)agG%l zb3{3sE@jGAiaiUs9AJkN8Djqj?j2hgWVZe1DtMjZ4?vnIg6CXG^^%m+REnaX(a&}J zbLWcs{r=<~TH+lh#|ol^R2^dpSpfF;0(?$!m#~(4;$es+CVyR`jME0a`@zTSAzwl) zjL{qi9FwZWC<4KPwr8q5&G+Js{U|$#g zaYHKnFCP2KsNugF>(k#$TDf^GyC;fZTcQ zu-J>BHi6n}7wthDmmt)|q1dIy_E>mt$7Ka9-7t2NFXL1Ud-sj76*C`(6S zs%06_L_Pw64LSkgyYrJye}&%t7f$*##UT4Sx*zXJr>ZOsa|zNfzk#^uo9FS9?CF~J zdG?B~GK@P+{O!pmtYr5AEU^=&fs*t49YUt)J~hJGn*#OTe1yt6ucQsqGFh zZu9Te)>&1>QEiDwo`gy<(@5prsoHL6E3bt$_OGn%s&k8&;QQ3Ykv~3ClDa>V7=B;K zh4W%$zUf_K?AQZs5PLajo0mLItQ_mbOVEJ;q990{4a zl5uMFx)XKmAFJ3P?{#?JN^lT8Q#x{NV-CxBq`*JMj31;ccVsVck62v5KfNsU;|A$f z`SCK4>X)IZ|3a~p`}bKp&Wi#AYR&5`t8jgTe7PE$9dUs2T)0A2_f&WCtbiG0s(a02 zhc?zMq&SZ3=XAUv+(7`|A(i+!rB=R+|AqnXSk6o>}_91sjYJpjO}<65);OxnkH^U zxErXodg}2brccU~fxDcc@rg+QuF8XE`cS(U(0V-BM8Y`A?+0SBB2vDZEA-Ogr)otV(&*_TPk%=YT5Oe0-B&#wfZ8J(X8jlJqb8mfsiIX-kd7kRoM4(Mugi z^>)KR+wY4`b|0n%R%6=MX>}z%yc@5@fyW?AfTEuhKtaNGMlI5|LY?tsS(<)3&<-3y z+%>)D6?}?t)$AXazCXR@dsa-OTv+EwWCXDn$nB>i4{q$WC5UYYpGicgC_~WO?Gj$N z8}<)-4YZE6KpegZR@WW=gnDHnTrjU*u0`wzBUiFYrTi=Mt(ZF-&ml7Mxu;qS<0h#C zf&6YG)E-z$K(nUyJt>2{ah`(xbQsH*7<#(tAF2C02tNu@P6-c&>mH!DD2hP!X_iC{8ny^Qx)5VrE@}&l>zAELBg>C?a)9GY zFOUP)`ksUnRPUuEcr6+C)Af3UPJ0T?|rjI z`$ZGz=QGEw!!$yDb(9?~B%IIz6h?Rs-^!6O*tbaPuuRnW>p+!qfncZ8;GVS?>5d18 zn`(ewsp>ftct)7C79#*AGGfq62mm?dpO6VFnG>cE4?^71K|ZMhwwG>DAm=jGFBDj3 z4VdCsU+t2{r`Pq+^3s$DtwZ?a|QnQ-68f{`>}cvGB^WC`Vto`(@cLL)Iw|tHL(II>fJqb31!iHV;4DT99mmg zyG-(sB=e{Ro@#G!@)(%{@&-wLG4YckJJ`77mQmrU@y=bS3>R0l8B(oJ#kJLlARJ zl1YHH25$Wxbmjzws9B0)0nUI^s}qcX&LZOj$?NB&?jm=Slv60Bu}BngKvG+^xL3j6 zhdg&Y6TbF8A7?a?q93eSCgZ7P_ZN&+5ozhSrL+qyZvdJX`2!yQJ~OC;`4#2S1V*JOEYn=s|64v3rZ$KcEm({ z-}bHLdf_x|6_I0osKv`)~nFF(WCbENLUEYz zcE5IgwUSy;DTivZ#*#|B^7z{(lIbH6Mj?8Crx+1=ziNQh?a=3~D)>Gd)h^c9Pe1j`?=X#D)$=^<4nZ1em4pd>w&eRf z5-6w1mP|~EkaD4EDjxHy<*|;Gx40pDKSg7}GMJ&hR|3T8%jsq7>fY=d$mqwhQ0$c2 z=;Y4ytRU2>Q;_2{PFbnSAD5m_(Q21H`(E-n7-q?bzsxM=Rw;1VFsXmC7DkR6cFp}R zXeXzmU9;!vaR0;-Z`gS)bn>v)f z!JF{a-wEv+BKss3x^%zyx%G%-=GahTG)0xuTLHoh%P9&+7mHqjX6Vn#J%e<;6cjIg z>c}G{;F@kg2$RFsw!(YcqMI;DO1F{k_F;unFIQzhYHnUcZ{z42@05j#e-tM8sngv| z{{&Wia;sa&@?t6uRtji4GJ}LXN!L$NNviD4xEuP3h@ObXWK*N5QCXV-rHptLIC3Mv z0Ue{-k1z^PPjs)P7STjfTaYh-vnKemA1WnN7eNuIibznfZ~HW>v3Ma*l2amQDG8#H zPZ(h|WrW5rJ7fXHq0Yryj+}i5LwLnxhxVNt|6@#GO%UlpTQIE`YfbHIVi+)d)G)4( z%h`;SPD#<+F3sDmSult6zNnov_)CV`LA;QfX>T!e$sGmEnY{2{3gjbkbAFvQz-ABy zG*H}U0#tT zWARlZ<=B)c=z{D$_huRc%Seruy9f00SbS`XLPYsb)jR?8x0)c+2K~6HgvkhC8H{FI zUul=%ux07b#-5pr@xzI`JU_UtmZJg^zHxnh#8oH2JnV-Zi3ZR(hdwA_YrQGoS@-Qd znxTGU^L}2|ECI64lxGiqZUbPdTOxgOcCfo(3pXo>98kv`ylPh(O^~1-?1Egw%py$% zN^9IQ+rqo3_MXImzZPEnl`aWYBDE*_UcUo}Dtc<2E@R+v&Y_fl@xHBWzOJ{s>g#{@ z>%Z;ntM>XRe&0c_+u48ndUE}~h@b8B4E?=2-&N;*T^Zk3NO#qK@}ECnudBUXeO>Ke zR?B|g(LZmcukG}P{k@}W>gYH2`aJjB=+8c`iRaI=KW|a@+tgR^xHzw?XRoWe9(`TX z{|3^2-rv7(sP*>xZQpNhy860V{l1qS_WDjwtEJ28y#F_-3+?J7_+Mc2YX{KpP%>Fr zwEbKYnoSq3F`qT)B8E@UYN# z3cIcu%1`t8myTFU@(I3jOj3k)uO_mOTvaaB(%2)mG?y(biCK>OqoOsFyil)Y_ihbW3i5uIULMZbl-8n-`byc>4S; zj&~XE@QDv`(n9DA&T0AfY}+vaboY*~bJMh?Mb)Ry>ktBBfc7ztgguPu8%osaxaDn> zSPataCa=5V9qhYB>ngFp^z!hl)a@1I0`V+^Zob?p;%=U#pf}duoRZWElNB=VAxbhi zKtc*JynB*kLX*F|c0T=g-O09z-nu?LP|wQ0H5HBvjOGc)c+glEzE)EB!$4(KGMADj zxib9qI3JGgO+23D^`eAPHwt@)c|G4OkHjjZV_6)LDX+O)%Qp5&J|chfjz-@ke2d8Z zrk+(~nVopl=}-eK{mJ!=zOJLn5M)^>u!MOCFiEG%-V) zNMiB?CbLw2XY;Y5^etzg)`v2i)V+O;(a(%B5RS^5avVTfw(&_9y(wvH+>tk3{ABJ$Y5$j6KFYDYSC^i>D;L>&x)8r7>R>1A@9S|@O}z- z26`#6B_im%9D|br_VOyUw;M*}YHg}QCOFq(!to`km@ z7<-igS0zp+e3VB5$t?*x#92?(Z>+L9QOEHK7rheDd+E)>@p)_*-g(Cqy1glx5*ccen|8y9BV~5 zYWZ-^)kH;cqsuUy1H=NeUz!xe7=i#&K&`)!BZE2qED+7ZSdux67r@F}ZYd`-tRNeL zi*!?wLrqvd8xPyfRbSJyZpkrnLZo!8qmiE1qxpTEv3tP3=awDAsP|vJ?qLKXEp;@G zcOH=+^=SA))u~*re~jzZF1}_g(gy=b(R5IhS@7uB3z2#ky<6xhvEt{wu@+D3wM0nN z54ULlIj0U+$H~YcdK$~jnd>v7M2r-)x}W>h(yz;M?OIdQR2Alv&XaqmWDDsWgCEC3 z5NlWDPof`p+X6H-IM-@l!C!y3mUav(L?&dlSjes4SEs5AvrAZ03-^0xenW3rJ9?Jo zR8`UXG^*A}8wH2cl45+>eBK2lCQ8pp5u70{A9>oRX%Po)=-w#kAT~g#=Mdle1lqp= z+jAOo)*#B>b~%`^+M!{!W0hVWMIG{xTzFt_@L+GUho!J|01VX@yDrpRK7fl+87?g< zzc+-A@oo|q_9@&^Jf__I(g(~VMaNbX{lNi??h4JT#KNcJwVyY^f@=kxn$63B!}Z7pb68CFz)p}$LGFodv#4dDv__x%O>fN`M z659DW=pM*oR8=W@05^rwH`|}71e!I5YO+cBI$-W>QYyA+O6}5~d_9T-OM>AGH}3ho zt6@+wiR!lgIRg2xT{9O7uy5z@ch_h6Jz&&M~u7{G%0{5UG{u5{E_^ws7 zQiq2WgF?oOpYUSdPfkT8>Y{9_j4kbJqB691;$BSvEGlut6h>io+WX&$ZYMqu;Hr#N zn8Wf`Yd1e|BDxAD?>Rb0AE9^=A~4o{xDvc5pROtoEND)?xwJUB9lTO|TK%FRQZ9x# z1sti}2$x=fCum*P!qU^kHU}{UmAQ(NLc+d7RYr>QRoOr*y1G(lOAdbU6%IO!i+1y& z(kRpXIUdr9;P8d*nz>`PU`EZN21y61IMbW==xB4B&hk{|8(sZwyZ zfjrZE(zYT=94H4Kle~!A4Xhd9EN#SkC>m~#EaAVPNbGfGr9T<|VCxz2CKq|!QB=Sft{*4-U3rly{(G#dkm6*EAud+KQWrKjhNAlpFnI` zT!=N&cO#I1v8XhV4jXdjD$V~qJ_J{o%i-f){=U;=f`k@pSEn%B>thC1iV?mwk>4Z~ zNjN$)Jb7L=^{9aK>0@_%)083Bqk^vw0_KBgy;I%u23q^O`D#I2=?or^-bf*=`Zf?T zAMmnEe3`qK&9=LKXYJ`3wRx1xHH7>S@Sw!P$d3vYMe~1+D%`^~z3SHyKf)^Q5;TVgkr0Ea$~BF!L~BJq<50y&L&XWh{*gQrxg+Yt6F|0@5Z_c?lzSK^Tthx}JP6 z^;M;W=mSf`eD9T7cL^y;F_}~QCq8*?@BO?M-(5o|?y$LA0alXPMy{(cV0Y|bv`O!K zT=1A-4M7)6XtbfuaN8+-=@PZwjpM>E`2n8AVc|{i*U0Bfph5LlkoLkFb8!b*Y8D#6 zu{KgeHLOeljx#8YDj3xdSc!ikFyj;v>+~;2N8ccVSvv-eoz9u> z`hUR{jfo=KG9@1DamOk%*poHgtES|aOmmxmditcfC_8CD3w4IawX{`7=42sAisC_N zVA9`%w$IVHyjh-&M#!G_ z8F-{eUR%ZMxHnYENgCAA3W9y8`ZzpEj1FzUW5G5aWcZ7b%T6eyw%TipPg|t?L!qgC zkujEPgB2mcG?7iwX9i59(4CXmp|5+$G}>MYV(_&^f!^}BX~GbpG*OD+)1rCV+K=!O zkg9tc3S8p9G#gawQqDA0Oe6lM=AiKutk8?D-ukE#OQ@f&%A1cAq!l5RCG!^AX)s0V z_6MyKJPq7k#kKk?HI&RHZa(oKk@_b`c_4}K*^BklLgE>gH&phbuYb~d>Z)@CRfNkh zn_6WZAH_r>Bn(0yiR;I5E1V<%0Pi{zcQ?{*q(qfl73dua3D<)QVJbtt#7oj~A+Y1y zB5gw|((lMzGVnVzheM``SqZ@|DoYrwF24JA@&O=9mH4=vGNF=KvNSP47?G<`?n%kk zE*BQwq%IdQ%}y@gaB%PKDhruXDIN=8(MLW%x*(Y|do(T`B4WVt836+rI(!3K{OOki zO|aRU$L&Wd`F}dP|0^$fCOl2>fD!&R)i7)A54kwM^5oksU`UTCCu6A6bVT4jQO_+y zjiu16wxe{y_%+EB+HMvU8QFVFt+uH={0pAyTvxOl#wcI{#GaOf=d8h_q)W??lQ`+^ zzbkp~%2lQCyi;HTUgCR$GPiNZcIDkgZD_(xudh-ZK7m8tRJev&ob)2lgPp+f%H)9xJjq8{fk}VUIvBN{7CYMte!zar*^En#)#lpp?^%3y;$6_EC-6iuPNy z=Qt;_1@7FAW@LDTiKI+#5ZP;@iX_fInT-VI=aP=F%E!D0#Xbxm*NBb3o1x|In(ICb zmu1txMjo|gW>#@iY=-nEVTk(!gtGRhbbRk0czoGT5M!3rJrjx;8JBT@o!I~dMol%r zcGFS`HPRgP{8neV#vh+v3kU{H(k6d~2^~*bga)=xDOF%{#!%HTE8~EHt>tw~F2|RB zWflKC5am3(BReP{XXLI^hBdP4Dn_8b90!|xS0%C*J>vV;)P7aj%ao2m3*WIUf1woI z9uqVtl$}DI?O@Z)>3j9YSJe#Pdl#Sebb%*B?2(n3S6K@v`7YZXGadsm-VP*tv!%%T z1^*Df+6sN&8;%>Ck@8K28*~ErR}XI|1O=)lWFmY)Y1NPiK>Q`%kbhxHAN~B$JfH%N zpq$cps5p1hDKTY6zP#+)MdGi?GyU>HJ~AMt3fPcyY_S1$CKT2ErS_>@H!xPLi#p}@ zWFEpBgHt>L_Ho2;-=gvtTw|bxc#u4#XHU784_-@S`&@8SHq?gsT5tJ_ofAO2>-)xn zm__fXK#rf{{Y&vE7NInTh9{U>%e@TzYk-SItcm94s8nauUb-O0PiXemrN0PXBhdRv z^C15eu2J(t8!?r2G_8ik)hZszyC5iG z+n2Ge7P<;zEV|xz<(Vs?@qOl{o6VmM^g1`5^i@vHR+Np5lUmu&o3bl>C{d(g%=nG& zNwja2BvEPy^s5SShdjk+7A9yO7pave&^2E$CF6Uf=TGQ{o$5t@lF{DW-ffl+I58p~ zPREOF=jFF%+XtX(@wpp?$(26vTX)G)FN2y!Q)2R-V(}6oMAKSvkts2n5;V3T3ovG;!@0xo&kss8|I4G$V_wS&0p<3LOoy zx}zl_KrAq}I3NUPc%A?wgpId6!vGElD)kU(udarhcC?tJw2`(uS;CQL^ycfj-iF?e`lcmj^P0T4B^EfHL%~`Mj&SGkjYrPAK~*V*ghXU@ zrEQO6$Mfr;TtiUWxF9YcYc|_Q#%AHm4hEEB z29idYKsSjn7oAS)3J{*{#cgqn``KFq*O1P4pgaAEL*sOT#ffF;AqPS~ zhF6Vz;T&8bBfRK?&OQ5tgP#e2rl-_$58{jEZ-mrvYI3`aNqp#o7gX+x?o-;-poqlN z)>!?AYoFs){66vi=?a0@Yx%|dqZ4#PX@osYZrISC8TfAjxSGCiSspl)p(7eoBU*hr zVF{&K`0=+C6gj_#*FL1f=5BQ7b~%#&WH0uqDa?EB%{M~ZIc*izGiT~9=O9J*4k=uG z%ugLSkCq@%V5zZzag+Z`l&BqNY@G(E34XoQg7!>8r0ybwN0UCx%Drl9GGfnou;4>g z&vr9aaoUT>RvMlY*zDCh5GIXPS&Jl6{772edq}_E=>=5XG6aOdF0sd@?fPQmbMa;L zTk$q+B|r8ME6c<(;Pwyzwkdu7Zd(Ji=y#$J@UII`_l@P7nkjDWcYprMv zeFr2=Vq5dy#n`dMCjY*EmOxQ66h9=06m>}M9JY~*(m_sVtCyuch^@Qp4VdH zFt>n)W7ABI9FZPE$r_G$!!OGwriF6hmQLeV?gLK3$09*Flo>(%!i;NFeQ!;VFbuW- zC&wBlBD4of9oZs}l1seI4lXsMx;jea3V#TqJZ~;kvE{*4oJoz}_&giQnA@2bJddyy z9Tn?F1!pS&Ty42+HO%s4NC2H=R^=Q|KpNHu6Kl#u#<8F=vP`P<#v%v&Zpk@Nl8pUB zCT2){{}=elU+5#qOgdrUqV!9%|x8_rsnCtcB12@0BuAn za`obDfFn5<hTuE$P3 zO5G3jz(trRZGXXR@GFyYTB>r*0(#|@T|Yh)R;7ZVtAnn|uDwozJ-A>K-jE0Hs%m_^ z$gjNSJ4?jx^}z#N3Tk0}k@Yte#>%WYQIOaiY)S|KXCUWk<f-j@Wxm%wwAI z(1kYkUg$egGmK71mIROH+eu&Q=)tbe4}~_|oH1-uf-VV8((svbMM0S?R8Cw{w5X{x zP&Q6sJWp(@I!*+Y!2LW$rh*^>PuBC%h`lnEK99MS@5pqSpZpoNW|w;Q-=z45!AHZD zE4GEN{)6NusZH!7%ZG{rY0`#KMfOr&LEQUjPOPviw4Xo5qA;_{k0OjsbpneqK*@J% z>ePvm~MHcCLS zt_~87xup_DNTVG{t;{Kk?=_BWp)06)Og(*;vHB(_sSF(hm#k!sl3n2~_6o;wDn)g4 zorR_0V<$q|Nf1Z3n~>AHaQ-QewSndD!4C1UYj!8B#dCDNK|0fKo8w&Y(ZsT7Rp!$-&k>*kS}yr6fl#;n!L-f55Ngxe||^nV_T; zJ2_=Z-&~L2y`&+dZcAB{>BNZhI~D%#sdGeWu#6#F$bvqIyBm3^8j{PJiU}rR5Lx!m ztGU>UD|g3vg$0JG?K{USI>hG9ia`Fu4$5uKQ{s6fN|3@CQ?nMS^7m^)p-e5lrhH2q z`QGlU4`g6EM10nKKf~6SH+ib*HpKPsH7}Vu*Zoi9-5mm%il6TxtcC(E8nEwSoCd18! zhSOzr8#pwN^2d&tDa}W7Ok9}BuQjjx=jEMq4GFa|74#{EX1oO)l|m>=KDC(l($Khl zP^z9;^Bojgis234Ih#crbJG52ClgPqin`}?=1UUy=Nrl)#7-?{n9CAuvXq*qaG!u- zSmE16K8pa(twjjb&gg$*kecH6HvU#*)NN>tA?VVJ4l3;;F25=q*fQ~^)GEMpDVB+q z3fC+)p{dif{ma2@#iA<$mihh*?TK<*MG05c*uabKQC!CS@MxdLH@>e+#oN&V*9pB@ z8HndIN$WQ0WOn%7FetV?k}G1|#efjT$h3AbeZumOJ5n;u8yk8iG}gjU?@!MJaj{oI z{|HnyRw0#_9%5NyDjD|+-p5RkmJdZeO7Ha~7uAJN@*(YiJiFRUY2jVGRoEt)dK*5?$-Wy9|=AO$?oc>X9TAu%zN zUZFzOX6Y3W!Ja6y`Mb_(ey9*ECWwnNr3C|g^SobgdE&PwT@7>}`8sanONQCQ*RG_}NkBC~nEICqT?iE!kV zHUW0B9KjT}2Hkh-W-|!7X-G+CKSM)a;=)bwiX0!XCS?5uTm`JMCeT^L@xL2SzMKG; z#+!W&F-9Lx1Oh=x8nf?U)W|umV%x?Gmz0ee1;!1Ec)>-Iuv8MkOcELa#81cYJf3V= zUWN(xadaCiN~=PWxe+IGBNkcEXo1x_NQM&qsS?%{rz)BCQ~SFM# zM_Y%R(ZkbY8QSb87GVp7PFt@=aPB<73Vg8p5B05E22a(;7AyK$2At^d-*gI3@{`mD zRncABtJDQp-5E)*7XIX$yfNlZG6h=n2Pl)n;fk*MctH|i8cft!rUg3me{W*{HOPVP zCLU%=2belg{W9%dX*2#71NK=Dw5RWSbGBo%C8Q^uRf=_Dt5XBD3J22pizty-dgVy9 zqoZa+3)NSayvqA4fJ?%Hk!;#m&1Y=V8yeTtP!ENmqO-LM#+ntU6`i9JN!z@J^}@v8 z=L8*$yc2g3>1W)4H5RF0V#%YF0Iqi*H;qef3VjI0p!!3$EUrVM*6jqz1b-XtJ;$-` zr<4Fu3M>8?1=gN5)O!)b8?Ffb1Eq7dvs}zfrpJ^^#{CGc(-OhOGEdcqa=2#-Zqm&! zoIx1okSUnJbP?fxh_xY@;aB1t-!QvxkFk_l{FbAI+aQE>TUait(E-b`*RB9Q$Kco7 z9gM~*-Nwd&xBo~_iS(4&(S;ni8f)Mw2P6d4*)XcmH-~d%z5hlv|Y)IziUh3EO(98Nj)<@7likVeGu&xdW-{Uw^98-_biq zZN{uccosb>%8w$H;G?6g8IOaHItUZHqc69Sq5_6$Hs88o4huQn<8c;0`2iSF{g@Ju zTwFBtai!;j9@RyiZz$J3Wg?K#oroy?h(-m{gu{Dy<;^g$5<1OwF;+HCr74@U#Wf09 z^bCw{;Q$dwdB3V6ES--5vXikoEoiEPnkdgdR!(~-;PCT|SVXS;s|R}m-onJ%i0J-R zXBvZa2P>igOg(WiQU7IeE90vGK$yJ`iB6}sS<0HfRJ7GToGJv(@G1#U%LixIHjdRe zneJ{ZKuhhq0VWu@G#$B zyWqX4_b2u83qYNbcape*bYUCi+vpRF9t@JYu|=o4D`h4la0rcrwYJjeq-HeIR0lxg zcAGFu)$6@-Hb`6ehH4hQ(_u*0*zIve*D4C1^fdLg!|y~3InnIPBWoEb_X!D3ner6! z1*&+twVKdHFxh5(cj38EY1yZPBsHGyF=EZ2hIvdP8%{j+R`GoMHGCw0-RPc%`U+4K zW=yZSb6~#ctCI%89Nh8KA(%VabvEK?z`&+voLPX4Z(7hvJguk(k?{ zfApaW-Ub#(f}A5Aej{i^D|>p{9n_3)zG^dS2d$Beea9klio@j#__~X?Sy<$#P!E_mZ-Ff4e`-MU9yn1I4s6h2&o_pH}*DY?>2_x<=eR*!$)v zU~yQwAQp|y3#4&Ra~g4wXOvY-1cIoBqb;LPyW{N=p~8-p6yE<$qzUg&Q<6T5pmw`* z?djI9aclt`{4A&l;47vbBosk)i(ptni20dWbwpgY41~m+er!r*M1A8)ujTG-C8m|% zAdw%0SfK;WX3rti%X}lJBK$d=I;P-EVJ)m4wr4^~{kXoH{n0$WZefvB-ddjT=-r8t z6i@UNq6A&|rs`dD$Ph2q6Q%HXC+6$?348Fa&-|N$pWTN9ka<_B~ zfhyWpesc1PVt-RylHvU$Wo|V^2}da?$I$ogx;{v^`nl{x=>AX#&1v zh&2T}OCT|hu^E*9`Y0`Km|>L3zx%HTGm6#^rOotssH2arq3}s(hINIF zI8-F)vM^Pus=teC1b27#83F>M9cLP32s|}ZaZJjoVN1~k#K);ePkmEje=1dQkw;tZ z(69vzdL;Wu@AogV#Eb?k+^|v5(Ic(6qS3B|Z(HF&@RJCO{FwMr3_ywA-qelhZ}nMztCjt>lW1mAA{RyA;z18Q*}^ZB)*jw|yEF%R!lpw>m-@IbnDqQ^l zk>Xb0^$zVVa^T*pTB#$E3qKYGUx_`Qz?vJm?0E0u4}q$he@WR1BM7!tn{pEOnjxoz z%{*kd3Ou}q#J?|WrLVK<>fV?a~r_HDJd_rBVNR*!_xHc*8)9q`Wrreh+rpSwIK& z!Sop@wvD{o&Z{aO;uJv-7ZiGrr4p=bA(YZv^QaJ81cs$^L1&lnS!Yu=)VIq&+>j2{%il&K23d1VB)Gx6e znEAx#-<39xvocuNdI9GWmDW__JV%Sbi?ey^%_#OXJa3#U1qM`q9q@F@kkn@iKQ zrbjowgMgn5Czp)^RQ?#XH3VH0ae)I7t!ew|`i(Z`6x_m{Jx;O3-{NJ)8hQ*j7Op?5lFF}?X}6-bzYh+@fa5%D0F-qHa{6FIdJ)C9+;K=ax$Z7) z!$YmX7>r>0gzjz~%Gt_8_d8Q~TrlPbMC<;V*4BGVpKdO$7A~V_(v;bfw+%}#Mo)uw zHdOej^qV=~xCi|{NFV1$<7LVoNAoQQh(@1#GG8AcgHH-#^P{RAukCn`<=5Jz?{&NB zM$6vPJy)kPXmskWbbQX1O*BBV&}zZVk@k0BM%>eXaZhNTf`qm-JV~-jWWo*hMilC} zcm*i0s|NHMt87B^=o8o4L)f8!r8~ceusp4z_wR+;Zjt5wZ7mdGT!!`Ge1^NxejIWS zkhm!!D?XYBwfpv-pg$EIMwt0NYCEGg+Hp)qpj@*TciF!f+sY2_%X;ocxeXLp6ghRD z4@;-LG(DL@b_n24m+EN$MRaj${#<#l?#zZ;J=|qIEry#nA_GSuYPNd1HTom#Nnc2 zLfE=%9#_VrL25kiHk>0`xDy`;29J0cjRt}) z6XggPIpT^k8~3<-UoP237`+x+F3~ijWbN8c>Feb3?DX|3rT(2C2uwtzv^A%iffv%K4!Zij$HSavg+l zopaN2PQ}$qJH@t8b@OvKRo&MQ7hKB_6?h8fgWmrww!2)*hKdkR458Rhu*K)8Bly^) zQ`g4&Yh1To2Xu90Qq6M!;U>5$NizE}?yfCYqDRtUBMZF!;*Wcg-I1_7$ha8wjn#r2 z6tzAZX3+al1w20SQr*C||2fBGPA6Aq8io|3oP`{-x@Go;wKYE(95yB;+63g=Fcmsm z6~x`RLbAe)4o5PU%zYP%yxHN>kFB`MV>tvRdpe(k}m10FF)d7lC7YQyB z<~8P%nXF$`#MFrSYF+t1l(*%}Tm4j6S2#R6nuU>ne4j@ylQ+ys89p&%o?| zoyBvS3$MqW5%?IEU@`haRW&M-5;RW}vj9#S335tXG$Hx8H)UN1id|y`pjHDJAAQnO zYhBbdK_5yeHCS4I@&4Aju*lRY;-AcrK`w9W%h0a=h#_O)T3nex>n%_MF2QIW50j@v zP#%cG>@gMpay;Py@3tc{HuIKS`G#-n>Z^B6!x#{DLFH;h+Mfj(Bt;NWqU55Hr+@2lYrGr@9 ziwx3h1#eCfnE@+G(cNLG_w))XIfmo{yx~-z0T8@?U3HYC(_@&N_<9Pi!ITXdWIyby z_BPh)jjKZWzp-cmF&t7Ca6Fng`vAc{`e&y6l|x}+;I(`ioAZZ8K|Ktea3aZ73t4*mb(}STse?s zp1@^dz@VYXQP(Z{Qdk0Op`0CFLfeRpR6GZ!z~8dP`cG{CBf_{sZnMtK?vauce*o7= z^b&5ZnTM&5#d#u(rw|%!(+cAS6nV^{IEjly87zVs{>f%E$p17`gn1ZiV!IA7>mJuT?;#}TJn9_=EQ)(*Hkq&;WQZrFTOT`7`KNDE2|u!b z1?K2m6xpnnmy4Y=h?iaL0W$~@iiU+|FHkAxZLK|R4Ymi=yk?Qyr#s>P+|h1@X(`A| zE^BDCnj_RUiYlTNw<9t}DI5T~+No^sMSuSj2MXbh>MEqMsFlqJ!OVnh(u{unNSdg} z#4_rH6o-4(Z(h;3!xeQ3^OH^Gpe~wN6jQG_3irrukO^5nVKrVsNp4+O?mTe-af&iY z^{ChkRI8}HTt$AW>{@q^dwYVDz|SKvl$L#|f}c(n_6GMa?8N4s<&t|$Yz%4VWiE6_ zk7~Xw9%@O;qq2w^s7P##x5c6J-$G(VIQ5@(e;mf%-#gr?Wnf3pw>$o@aFOmW|5=VQ zKixVX-FiS)s>20m*lXCbb!+|`9MoSpBs*FbbpDHZ@=&qkgrXkEPJVi6ndDJBU{3Js zv4~Swp-v&ZW$4is64oj|Sh4U~P386pD7Rz7PXbzhkHvk^P1m$l5!i28C9Eh74u3to zlx0m40G+M~gyV1+d4iACThN8}Q7*1+gX_pGis?A@;Y|=EUbKhs73<}&KFzl3mt-3s zB5?>)ZYeW>6|4^n~ zzyL8%>I+rhZrrziFddC$0rKIA{&cGYS_IP^uT6Y9VNRJOGca3Y)a$dsl}s=a*{htx zh=b=v?cqbZ-Zy-jg$~SqY5)_FmH#A<%tgWiIiML_x<>7t5`r^@evZcIM%W)XMo6I| z*z7<_Z{RnVF(As`^d7%g>#mfm&!@hnd~9&#K8hbidX^1oxp zv+N(d-z4M_7Ml>8_|W)a!Hp$hQ2$;h%cxfGsV1~x*Y2Z%D_02E{d#ZhkE_2tw}uv< z5G2LI(Ne!zjYDPbaCR-wV*gC(g@X)*e19SF^_6fw?Le=eBl`PCUp~Yzon;>WSiS-f zjmxyFXu@^9V6}B}x^r#mVa?^$&v`H?3Ht*uI_+EiuMb@0c2h3ck=V#wPUE&=ZX*hX z;7hFg(%-7$JO+b<++WK=s&=T+9?4ks8>5ygNWXF9|5jvdmf>xTYR)`@9`*Tek5R9A zkIY6zP%?b>hpMZ)ueb{UCFw>QNdm&i`jiU)ATi&GBee%^@p&@53T3}i>AhtGpP+p? zj&TwXyJ=d4Rfq47$&bVoJ}W##Y}x3)E6g<}1G6cqJ$Q?(7YjJ@v(F5A6!zQ!$^TfH_1aRB2~C5P-%NQvVKjY%<(KnbEhmXNR?;W!qfb zH4O0IV4*31KJ;1T?>b2q6?qmaZ~3X%KJ1ZlAnZZOviw5{Cv&=k)Hu1*5fy!_B{DIg zdZE;$MXQ-#nYBZiFfGf63%3zEOj)#kO@tX%m{cT^M+flS_IU4GL!?U|aC-TjsPh}O z@Z2lpq_XKm9IF=Xt_JM996ywSvx)h1HyUxDKMMVa$PuhfYZ0taEi{7*eHvR1(A)Myf<0-&gVPyD!(>W3Ewn*Jn^{bC5w{Ue z48d;fnQmwreL66>2UV}-`g9s(B&g+*98DJWZK+UETnLHG3&5_+y9P`ZW_9B{CK;vy z9#C8IZ5T;3;M2u(w`xL|e(r8!BqtW!m7j~7U{a_5e|l>`OO+)hatayo_&SpK%V?2% z51ENR0?cPG!4|FQK0Izij?&@y05&dCQ^Wd}Wq!5TGFA!C$yMJEK|UM>T<~qS|0PuL zJK(&zxlRz)3%{kb$$x^RVF)wMAkbP;9Mxa<;359cOX1d;P|GfhE{`aj*8&7Dvgj1V zZNPHWMYOCBz@xIo{WR1vgMeCWPf9OVqK9U>;oWNe) zIr6*W&DQVJIAY^$Eohm<9JH($`p1*f1wsdAkwn;E;u>IdAWdt()PRF6N9XFk{dxC!BSp0dwyFT%~1x z^;I%lT7^>WpSg#9s$H?$pG9g+i$?IosS!tur?QGcI_LrSSIPSW{viyCZ;YAltLbS& z+FQ0@kUe!G$Vn~KPaNHqf&8-m6#)=fsg>u8Xs`1T1a`80r}Lh{@t|eJhEoAdub4Ak z?bt3}o|o`^fG3Ib45;lR>KSye%vTZcKw^ zG$NIMf6$70()3d}U9Ex_Jot25LvfaKu}(}dGSqzg-uy}rws17m zPZPaMtpq)Vam%JVPHUO#35mhs9T;KZ5E&`pmUMsXFL{ZOB1UFv7iqx%K2D&9O-mp! zEBafRi8&ZBwxpwJWqGmEfGY69{EbLx2?+Q1;)Ci0uI8MxeUDpiiMF}Q(d*XDO3jdq zjOc&P5lj1XUN;}v-L~4j15k5fjYhivab)s@{Ue^p0S)Hc(Bqf_1$&%avAAS`yiQc- zYvY$@RBsFKaNu^T(jPzR(qhHeu{;zgR?=48$9Ser$g01-#N90+2fHK zJle;H`l0&}<(7gJnKt30esZ*k08KsUBk38GYwf$f(uV;5Vh9~PCztJ&HuxGnbK|YI z^bF8%z)r_Ge2}U1^yp^JK&1ImM~k!&oV{zIbv2a#8BfU`EiQUDTL71Gm(krK%SeH% zL+capK;wEna<0X#H5aiFON?v&qG$Tbu8Z1H(CH(%*e3@cD7!kN%HX!T+emxK?ZVmN7A0F_#IbfIEsE(@|2fp;f)ppMS?k zP1d=(lu@0<*mC~y#;HoX>-SyypJRMxZ$4CHKQ0*E_mei7|=an<5hp5Et9Y89L$DGEDwA%??G7$KDB*%td1(z5BJ^BPu@2;j;Aml=w7 z@?iW&TlEYYSY!tkBr_D2Oy9IO4z-#Ti3sp>6fUKQ|9nN;Kn zi8r5_G&J+-M*)Yda#Y{-bxr#i{(v@1<0uDzs+v9`$-i(bZ_6n(a^_j``af`39ZQ#E z6`Apr-w0-H9AX2Jl;o>mjL(A6;6RP7COfJ`lok!sR%PKJOY5Vb{DjKDF=4UWx3&eq zJbCRbzBO6#)p;j&7hdqRVSpM?P>ts&(3M264&OG7Tg508z54j7&{kF8|k*s zblB=?pD?L@e55h>KM}!PDLBgZHYjs1I;u)U!l=0ZL3wS?y=E(Rf6XcSd>9rEG;Xds z#Gn{3tvjx#W4L>Wt4}pl^K*PYogJ~FcAcqR^CJ$s)@3$f2ybw5vI$i@fi_ydqDTTj zDsAIW`soiOW3$utc0FhUh6_oo+8 z`+G6zA;(A335{AItUA#K9LpuHbR+hTf1U@P1!=B77|iR8VGr)tF6gu3nMzGnG87g7VS-{Ak3B! zv%{|Os0ZGznT>erZ8{;rq#iNXrE2Awput}c#;d5s{=SAB(`-FML8DGK9kO&vQ*`tz zWN_=ZnsCq)SNgLS(v)yBo^%H>1qMPt=nrg`@jr}JV-NvZ3u1M^lS3Az5Dp|o!VN1a zh`cXH{uLQATLK=8zgW~j=F=~86vm0K6`cm5=w2&&=`Pv5eOj;EkCKpazGRhIGB4|= zFzMX*0C=x;Og|O_rg3oPVYL7n4z&VXshek-K{L^J>5S%kzJ@g9?xWV<!C8ZvNj zZHNu;{8(6pKAgl0fEn}z=7~X6XUqhB&gC;!=tC2VYnv`o=*rl zge|fJv$VbNt(p=k@te0;hA?<|$_)LeSnL8!IYXNDnc=FXG0P`a2zX_TvV-RE*gSc; z3pD5;W6VI@1B7ppCK+J_M$@(9Mqc9W+i@VLrtZ2BpvQ=`O-4v!oh*6Z&k?B2rCA37 z3{$71tFb~0k4R)qihMk>5X>VIKlv(xLz%vO5+J9$4&fZ%fCcn^lQhtV3RdtL4FqAS z1odPtL zBaoc!v5I$hD_V(V*3Hp9gYW@!2Y@e?c{oE{yS9O-xdzH^ze%8#Dn+09;9K{mVIMK{ zsB4tJKC~^aczzl&xl2bilWdrh8g6t%Y2eBp7-cK=gFuji-!}MJ$J9zw{1<*F8dhPi8nCA3P4A5#DABVM5G;@29t6l_AfZ z85Jq)FwR59r&=+nzDZsvBb^9HvKRz7tLhn3>b*}aHk}bqaKX3x9B0?P0;e?#KPM_w zt8DKw4`LQSe_5wZ^nk>as9kcAzcb0&M?~gVzbdpUW`f_2@}=0}2Fn8Nx7<-%NE=;X z@wc%#nI441$hER^y>~=XeFfMMMKerL=H&9su9WlGUo7DG97flV^daJU!zn`RS1YX^ ztdnRp6XT-jdr)yI)FvltP$Hl<^p@-(X@=^qq7cp7>f_Uj4z6oq4);o`=f7sZJLkhw zRa$a$pqi3&8Wp%?*8*n4v&%ui8Y~AL0h@u^z6!AGQ0?w;Ib=XW2z);#Ed*6KP#6hW zOia7awnoRgQJbCD>-^#H`Ss;bgQV8tibn3*a@hO4bh@o2j9snP9>}`vkTmgIrlo>! zX%Vh*&bO-wZgfpWorrxbk~V0-!4doXoo^|2Co{)JBxO9ETBfK=CFJ~>^keqpD9~yc zhk!^g7$o*&aG5i(U^)*R+*3d@s`)aYL`W~R-CED7M&|?nQhd4(mYyz)QA^zu`^5bX0Jb6hrsjn-5xC6@#vXjEY@ zU1%@btb@qEB|Z^r^eHY{Ps*j2Ii*Sd5T+dl12HpxI^k!djo(XLkQ>3ES*4&|ODo;X33UU#lQQzw!v>kvhWMk<<+ z&;!zJU+7V!4&JpL{Pw>Zsg>tnQzLzm+}wxYzo02dNn?t}hX#xqD&SW>T)jNu6lTwh z;c8bL61=u)dClBXNF<>gPOD87;IayuAn3qLfwZvBxosW(bDKYgibgci`GSemf8|mR zDZJpFY^ZO}(J*+)8Oo)({%B?uzVpEi>pR6@Oi_LvUrbti8@wo zBe*qpc64{g4RAkMNUfN*VjNfzC2>#+Nt$Z14}<#{kR}t|}nR z;!O2y2JJOaT`!-F*Fe&?S*Yo`6?3l)i>nSngX8czw#p1O^|15D@YVsLEqLlzILe^( zhCca=nXybnb#Y+rr_&VhtnAEA!aXJezriQi%!FN zr-CeH!Y|4^Etx<{0*(QP6EBp0e7P9%>2~95YnX;bo6BJ>Gtx3%gMh!}I!IQhWMI?y zxilZg?pS(+KLABQy1#f6UOZxHlz>emU(34%HXZ z&~~D1I|a;V*uZRg1$?RhUJUz~xc3}<(m08*4j=Zncf+d$uTa-TL;YBqL3{(n93%3y z)P78Q>42dd+WbO7N(YqS|W>}Yzlj;pbW=?y{bRcXZU0fT4opmm|j=FSmI=-0ScLLpmg>Jji zQNK6v=Lne<8nkP-;Zz~+$+S@&M3jS5w&mnbs%K<5Hm2^&LG*cHzAC-%&dt4XwepP8 zP>fsP;r`-Em<4G{aJv!`4l$~G|3>WS$Q!ie@2rz;ozKE_{I0vgsWSas)26& zSe;48q5wK;D;3p@FGxJOk`*=rlyYzFyn(dE!z^a;0!Ipxm%?5{(T@-^lejeTl?Mi* zo(QeXo86zpVglvk_tcJ@%W2)OOFpZ0Il)gDpscC^mRgkC#0+B0mxyG)K!Wg}l%GAB zX6c+0<4DQfRhGDR5P!%s`MJGV5O%|eu?;yGi&!uRn;g~%cX%8}jzV@>8|2VlBvvZ# zOtI0mIC~kMZL=6{GLK2xuW$c&j#|ih88=pH{gqwqN25F66BnM+1$D^siQ%=(?$1!8s)6fW1{|8qj z$9y0rq~`nfpb|mI{d{YZ+(kY%I#$?wig!DR+u?&qFn$i)9#mPrwce-2l1m{_S%0y^ zg=29zf;Vt&qX3jLED1z2)Nxb13t!3rg~w8Uv9atEG~Fiu?vDSI-Q*phO^bno$iXX-R94b*%bNswP4Q zH2hN04GXMDs9MW1zz_s97Z>2!3$%FQs+;`gehWf3)G_nnM}-WP47+Su+hhF_uPH#? zbuOq5(0(C{IjR0%o^9#lD#vi^>|YJl05lffY~1g{T$2y&VMR>|)G&2Cw2!Eo6T891 zqVjl*0$|PEs-Jq^@oRw>lZtI@t+)qz^Wo&9X4McMonaIm<=wt6No?O9xOY&{-K!1c zX|NjBj{h3YuriL9Wj439Q4r;wnj3C;#>RJvCb;OEI*@{sakAM*;Bv9JpXnw*$`^dl zzZA++>47^4YWLD>=qw4BtbREEBQA;>axM$~!Z`FS_8w$?r{unk&$0!AWuuRoqB9O= z01o(3e#F2O^m>EKqvPY3XDSV2v$rzxlD-b{)X)kln4_dI)wf^R=UAoX0$i^oQrItk%R#t$$&M~R`LVTUsH&1u__EZJku<>$z3m?5r2`53tdJ@$ zd-e~gn0SO=cx4d6EaAX0f15RK^11~;4Ah{rw=OcI~~{opfPc z33ukge`Bmo;HmZ$dPLcAD8I5f(JQL4ieSb;bvV{@IoJkg{ab13c?u$N!2}zuz@jMX zpS6?Zdl3n!2WWgGPs(lOg&n@Jj~>j==inP;A+9jtpN61B#j!5NUcs%O3|%VwJ+5gW z29Fc$Ir$+HSd>pP?mGa5Qzv%S1Cd==a~$X(ZX28t0^;}uihZ5u1mU{xfY(tRM!3w? zi6)^8*?`DnNAR3{zwG#`Q3oW>oGiZY!J=KYD6p_7puoi-vT(BWf=HA~u0f zTW%r<_x(QDQgLyc3sKnJK~fa`QY!&Vq`LYbSWA*Estu?OEOa z>gFl8OrFjkkF$B@w^sFCPh?9L2tH7=T&Pjb%v*_a2;@kJxcJOhpFZEe%9Qq>w= zvw-TJx+@ZxPK>o|^PJgBAPNorR|$d}TI#%(_a}+j=>X3s7Par{-p_ejVeiJ3? z;la4-TvX7RlVd0X$gRCm>sen$&1*e`+*7Fq zM-eFTB(62TlDXeF{}wN>_Q_+mHq*RrKK04R#7Xg=z2#30ih>wX#EAbp9@LB_zdPMM z&-vN_$&hUa3bl<`6qfUYex(^CqLBuIEp=WpCJuj=^hAHHu*d?Dxrniz;F}Stv^X^F z!hEZMPaTCS*#WEtxJvCf+yNlLLG@b~3SO_P%|vtb12o{vnD}oa$IyZ$ol5%q(dmar z>)@jr+pms5HvCPVxIutEZxCFRRzt|HAb^uuZ9_(RJf5(#5%_`gWJ4Rj>>%&jA)DKz z#@gsDryPclli0KQ^nnxqML`H-ao6`q@Q&TKY$rhEEEb40wE?r}t^`f86RuSh+BnF! z2fn^eAQCrA=9ERt3wLr;XtJ+N3P69>0tK%L{-Wn4!01bVnN95({{z97vt95~AMmmk zLuvGsd{FzO94YiERSXwzPLY0vdaMv}hyd&0YrRopv{{|^EBGp~G-yN!~WB*Mi^`gOjB|v&Y&Ur8=E5fp3coG**un`Lup}-|d zG%O&J{EV55gi$eN^$o7$$T%DFGFKaw<@1z7rVQ|R49X_OXa+=20@x9g}>?fb02sXm%hGJTDY@!0VP#g3L15mRo4XNT>kwA zG?H-nFU!n7Q}^$_8b2QE6welz8XO~b#%YJ<7-50WqD-xDUvg_f_AQFsB0s) zI#fE=ZOI`^SHzZ>n`+F1Gm!xQLh)vcPyanqpQ<-b+*qsO=0Y|W_f#gOUnB&W9gX4b z%t<2k6!h)5vARjcKvz%NrxQDwd zv8h9MZ7!ae-NWJa4Hog4lJHleo4vgg{^!M( zy8#f3fhu~t&z^x@A!&=qz&MRW$!)Q#U$$rO;qNkqTX;#cl?FQx?8X^HBTdD69zHa+(S?% zLK~pY>Ah`lPj^o=qSI`Z$`Lt)hOl5(tT|g)jXQ)CVIp4oL%~puN$gPdx2sE&0oP|5 zYEJ@yWYjInCD!9hkzKC(+AopE2AR11cLHOT*XM=e(Znk5k=|u%fa=YblELl~E*9$m zis!Uj6fJFfWQF_b=*_t%%Rj|d28^m}Rkea#|5t!7EkR$hP^!GVgxu0{Uaat%(7dO3 z4{HsgVEy9NGr$IRntQ>AiAj|klD&N;b|-6#IQQj)?3b8Ao(IS(XCDB{8Z)GfAc6EV zX{xX4&RxqbY+x-FFvL@8Z3&c%TE|)rv|}Y|O>(c6G=W{mBxRH5A`nmWrggsMBP$!A zk+tbv=8#+tP&KO%kMW-C56L5&2rf`c-YB$43LOys7B3vN>*s}Ja?;DrnDhfKGF|B? zG;L7T!}jrGYUHc8RSteQ?-0OM{n=?}MxFqoI_?Kr)dcr{iGJtV0>`J5z zY`8I#gu5aPboU66l?HS!b$vG3R(0IgQO}TT%mDDfnb=i!6#V?ZN=L<@n~4 zDxQtVz46~GHF=Y%Exkb*gncZ%lIR01k{!+!QOOSPD_@=VMoCp`Z9h5S*^OlB6gcZ~ zc>gxSBq512FE-%gsQ#?(L%`1a8T2Hzwmzb#E@VbAKc;T~fA9OEO(B}3&6-{)l)*)b zi|7w{!}cu|6XRg{>pBL$_GyLF+p?i=sxtEB4|jgo8oNnU4s=HoOOdsF96OOhAl^f9s*D?Cy znZF&8Nl^sSR;~1*fB7JEQ(n;UQ^dO(xA5h0n2UYQ@9LCZKjgi4Gk(V(q7T%m4 z`btWUG&4EqE*#}$rz#7`cU<}cqZH=rh)4n}lOwCCOn&dBbD+&W%Yc!ErQsDDalj{W z*Vza=M7}+nQP5Ao*%q|}2rxykRY|5w7^yXsA*)P3`Okm}#aLv`(M`HIqsn4?$HExE z$Zuw|2=5xcfgbpUkoUuHM49wIF#;`ct>H|97NG zz9d&7F_?3;7r-ibeqL$o8kV%eW$nxmewU(;|wB6P-L>{ z;uxWZ9u2>ak-3Mv{4DW{hYstME0Qv0N^t)57a>Tp{WcwMJ;6P;I!6;sWp{LCj9T&E zy74Xd3ZJ1$3RI6(EC=S!OyLIn2fGB8;9BSxpAn$fUS=2M1{@j4$0?(DStW&Dl8!^D z9S{Fkhkcdj{9D+)Ge-bd%`vTMfN@=pGRpzG%0JifCQ)@_wY<7}EvgeJ4H{K9O{)`7 zQ*xt-wdEznPb=+>ef7EMACn85=e==(1=E)QlQtGt{@%)3X^Z z4bb}rV&k7_9{sWHL+|OLUf7= zPD-u>ft+SZ-OrS}lgA26Rs4i}@j)irqMzSnO0Cy9oY6dWIjk5T1{X~ocffNDX?tkn z|6GR4{zI(ScYxu}+v7!!=pVbg2%U-3dzp(R-^Dh!MopL-!tHDO2!lT@*9FYG9n~Rm zEs=AL7rd>vXvh6f1r9c?)dBV`EB2|n(l=ex_iD2>bA65KU_(VsB zG;#}LL_Ax1jHc>9(R*afG*<334%iGCFisZ+lkoPa`p{E)+IW{n6$^f>4j?j|K^ERo znNdV)&eQttS=0)ej)-LDCCg)u18bNTu|7QM)z_|6Jap!AsqQYM7|Hj6nMW!cXI7i` z(sUS&m`RU&*UsvX8yaMPwQ0)G1@~4sQ*U<|P0&-sNH@_RV^ihYN@UISDMYFQK$mGP z>*Lyv9#1Y&6OV~s^X6~}Fg)G`OPZaZg=eIJ`~kIoDjc)8Z4jfly_=%(>52QjT9bZI zgdfVsd!=_qzQR=;wn34U3-pe&hBSRry&bv6^jyf5nnbXfIrR&=RU?;RQ2Z53Yc4l& z@&~!*1)s55u}g`SykDI0Bo=>1+Sps+>0{ZvoxrKxx{bgfHb~_pQoBiCscK}`C?zmv zGwPJyIZC(QDtrJLceUhzoi7AYbtIwDlgW*PTwp?~CbV@|;R^8qhvy2$z;DkBCaPcM zu~X|);J9`(MQA7Gh@*Sjm;-_8I;)PE2{UPZW2S>#3#WMkD8wOAZ{n#6^*}SSs=Bng z^ux0WxJPvR<-O>ws*7W5F^|pz$^dzcAR|gaE<;YOr*)zWS8BP@n_d(+dt>W7;sT2a zvQ&dO6B~JW0YE?-x;Y@tO#12-P^a0{_AB|3R#peHUOx8 zP{@V=3PhSNB?WM{S{1El{LA})C+lcm1QZ&hq_DH6u=xdB?HL8yWqO-FAybBV>i%_T zV(GTgnZ`9Wg#jP0;hZR!>yX-(BKbX*_on)jk-JepA?VObrI?(t*+fS_iB0|}+`SMl zY`4s_MBF=0cB?8eZDgf?*H{WMhTXA^v8CgKe#U1W?*VfW2nND^BlU!h^&-mUhn;ra z5kASHNNHN#`D88d2@PPZS%U6J>I~boN0Lw47Cxa7dz=*HXDNPjBKy82ivs74Qb`X&V+~6XQQb$caI{S>B*x}0B&|#aY9j$ zCaEnPRmJagk_{g;2ld5Dmfz5cf8i`G9@I-1bsqk;Iw_HbisEO^)|zM9<&CO zFOXN64U2n2!&<1Vg`jB~^s6d`b;J-$$^oLz)WjoH!y4xhTwF2*(zrO4?j1e)7j(Dk zH_5(6!_OdcAEcG4s_6e62rhy*)M`_DK{LYfKszY^P(JfO5TVJM7FJx=WRW-HN5K?r z_-~3&^ma8XKQb?6Y9nQ?%grDPpsfCAy|Htq*&mYf7~5x}BF?3?xsS6$f%JoPJNOQZ z$JOEl@br!utAknTL!9BMP(2SNwODBkN;OoNhQP3(ZQ6NRtk_7KQ~mHA0~>oEDMz2! z-*cPGsilcT`)H5!vWhY4Gb!n_~+}0f_ z6HHxY*l}I8&xt!UDG|k!8D7KRdWn1_6m3#ctd6&5TyZExz1TC7#K~0kXnMv8PInrv z#FEdr(5hS$s4l&~55+I2w|@KqvXOh8XOGfPcXqN*#EbXye$ewvlFnN(#(jb?$Qq_! zn`4Po1mD3F&QP^i;zg%U8cw;pM=e=8B~Sj{Yv=l~S|62sa$|lMc zCYLqFW?X+WY;8;mz^kgJ$iU?epkh%XN0Ex1JmmpQJH&Jnid-s6z?Zu2gsA(hW2fS7 zAh@wCCeQoann8nfcE!#JrPR^d<71CLLNzzFRDXtP2Sse*y15`n+$mRS<(Q(B#l9}LCGb)5Nn#IW?5b(;5mU}^fvA>-{*Rw zY`S@_3@xjf_RK9*6@>kB$TeD6w4tP-7*{JK{)|}JZeWDt!5S|&su`;N8BHn34;cKc z^oYiuYVDy2KFvH?D@qsg(cRVpQo%n-Ltg@#2a|M(aRQPkTh-l7%-T{0Rt(ZeIxXK{ zyKzn4<#}eHi66`<%joi{skUkS^TeE1a{Dzns8x&90ZpUChsE^Gnp*yI z3zDV$I|%}LG8}Y6&W6zF4@f6|U0J`3>D@^d?J*SM9gXl7H{G9fYXXW@^6~^!2VBSiB^#LxP}J%+P0roc0C9Z(g|r07$E?jz&&Sd{ zE7QCu^{)wlPkQPF7R(ef-nBFca|wyZh5eI)pt+TLpwS_!(+PLa%X2n+PW0* z1LyX$u;`0|IE&tAMfEoKArV-p(+c_^$^M4=0eBV3Y5kE8hO~~`d zbuBr_!>CfQ7FQGR7xR`GaQ!p(GK1C*MM@$OH_}&J2op$;`_YVzzi;vybj@SH(4*I&b9m>>r;vc2eeC$7BKBWU7kuLDZJ%^oYFH4_Mh&7B}P~Qwd zM`)o|D8BSxk(6ciX{toJ<|D!FEmYBphoFhs*w(*@$`#!(tEkEag|DqkakcuQg>y{{ za0pif<7CsDBdNSxJZmYOY$lP&fMQ##v318P4VblPtH0{_tCC8_-;QVM$TXd-YCy9| zP^^QAr=hwj4s#XGcf_Gv6KFbJKpqGiyQ#Q$$V!n8KZ6zzVlhy*c@sSFW44HDGo3uO4R zD~~Y|*|!?tgWOqwQ2Aa={?NS$HQP&yjcv$bh9CenEi4-j^fX zUrKNetg=Q2bIyYb(L2O)gWfqkFvk+_z@3C1q0>#y^!FZ3L6$~dWsRUVz^s6MUso6p z>qrfp!!i+j$$>*zDnozMmh<9rB?xdAPxx-RM#sGuarBV>TF{j-GI1G?XyhPc=vU^J zZPu6`Z}(2sY^U#BEEu40_?l8$FChYr9>Ep-4HJ@oE+`Sr5tv907TWM&FNQvS-_u(; z#$%dzC#y@Ma0-baUXwaO-NDFC@Y~Cm;^)7-v?b*nfw9K6g&~5vtb+ktaxNbZY4!Hh zF<|+uD(|+=0Qnvfi8SC;5_gsuS&;GL%Ty4Yp70^8=@xd7o+v3=N3Qe~QSCg5VLwKC z9b?SB1VlL!1lnMB^Mk<>XA5M#_nWBuQKAOoB(u6s=|B8-WRHz05h;Y|Iyzd>QJVURi^yz%J4r{+j_`T@?- zy=`AMaO}cj1`ViZIW?-ZKyt}7rk_Q^+z#`KWn5A~^7@aqjyydhF^#`fH!BGmiehQk zaBsKO=$2VZhD+6OQvk+795#vb)k_Zb#yV$Cf{1$C-%j9#jqu@KFE%5QZF*V{K6nTh zClnqlS+<(?y?w5~w*@JLc-AtOl8gF5F0MlSer{#Dy=RGs=l^QRbfmt91QL3A!*J%_ z1B&u1Hp~#l(iHM;5KG2RucR_?-vP8c?t&?KY4igY zw$DksShb2<77xf0Z0an5fsc**>$B_bpT0pje4}bbL?KGMIIHqDy3mVk8^tpB7+bXW z01EWSmPqR^pwz7f`p6i3OSD603z&b}k;aTtX;j8ZgKHU({%r(zCrgCkaCCb$K`?=C zlj}DScSLiIBuBtP6p`SS5Td|FF4BTyF2A&`M>&VdnEjhl{7QoG@Ss4O0ln_@p>1|V zb&Rf3tQ%hr!`oTBIi?~+$@=2%&!*7K2x{G*!5Nzo5l~IuR^v}+tN9?DyyLQqCh2;F zFZPPGa7oyjCA<@N?|9Bz=skNVkPF0@MRhNg)43&ZX4S4U@`9F8_2?*e?s+%~jdc7VW+wTLy z02-Bko}LQ#ih;!0(~LEVgL@;zgd@z`tK5cC1Pb*%lirPXW&IMO*qg5i=oK^st|{T>8HjPdqOY5YoWEv|Uv#Q`+3 z`KaW}Yp8G9bsru&U*BcQoN)c5ixIu}qXWd9NWNh`k4sn164EZ+4@~%H^#_k&YyG>W~R$5QI;;Z?`7-bbjvq zt^*n2#WI(sv}uqdaKo2xh2$4ag4kc1Dybm;2JcAe1kwpIU-Gcof}`+Z7aMr$jM-NB zJo#xRA|xh$Qr6#{0%*vVSD#-2EIHx-47zrRZeSej_~?cC=%C$a`ONTn9VlD|!^IDb zdGf9h^9}B)h--5r7%^*k8M&WAI4X`%`S#@82;>(r^rnH<|2*=L1j;ztMAQ^ma|ay9 z*``AMks)(_KWc{QEqCe(-GL;=?X#`4b@oojt^ z4GG85qDkjl>=0hL&}k<8?=u2e0s9~;A7!5I>xtlL^T!K0O?y#2&2UOs(Lr>&>*Fzt zsec;o@b|iG(9>!%~X^G-aDMh`8fXHa^!W|6bO8K6s)Q$&UACdFcdMs4bf=p zcaW^+w_h zb6E@+7T~EOd%FjZ27;K*Y#5XoZ2o@Xm|v6QTJ}>rgi*6KzpVoWGQSh`{q3ie!`25k z@`z{~gG!^6D~Kgkce~N-{uOS`DzGg>1)bk|kuCY~I_I80)pV0^q-=l#fa&g#q6wNY z*(Qi`3#C!NqACoJn>A$K}eGj66I z50pDpVMaLqOFHR{i4;pn>~Q`bqV+M6t9N@ZW=bh?*{$GKE-J>J%9(*wYj;x~pG`Tc z2M8kP`2^#7mf5XgAr6(h8aLy+XNR)UGP`L1Kk0rTu?szg;6XdY&Uj+s7qJ_7>-IP1 zBFne8rFye^j#fkWo=#H@TJr&j(74;SRpi4)c;4P#Zi@J_-wIYs#z-PH(*Q^e6IS&> z-{KL@lR5z!&^E(55>tP;K7!Y! zV`=bohlI@$EfTKU?Owz+lp#?2m8l!)2Gx7n^3?+#OX)P;9fzNBV?yGQxp5oJP8@PI zN#&qFos_Gr35X0CaO4=*(s!+9%JJ988T4-!FBwAHB1vNW*gX)qfFOpoN9_*&keXHTbu%qD<1U^uQ2{{)Z=MUUq5QrA(0HqeHv{sG8prq zwxy4Y6i=ZXt5b@NkTm*3RDMOb#Y&vE3i^>#Qn|X9RR4EDTJhjP@fUc1o+2R#Jx2Fq zt$zf3M&iG(!-t{jiX*5J^c>Y!%j*7h@S2{51&#~&+HjFT(9+`q+>?{^HIR!p7{LQ5YdeQ5DoV$S^B_=NMPKQYs%jZDepLKwnak#R1#Od`gC0Wz0sbQkX z6+Qm+(wUj05zM^@K;o8p)@EV!gyxGU1asyc9y$vg$)-DugS`Qa;_Nd9h;(O;08?+W z1>iG`{9)JnOU+*fmQwa<>rfx>t-?c(QJbW0d+8XN&Aa{6b*q3N(D$NEG7l|E%s~kj z5DVmB^1$td>>YxEaXd)n!hfM8Y0_*}!I0*KMCcq?<_q48yqUg4>KCNJrw~0P-iPuo zHU&Q{)%A@w*5#tC)wBVnGe8q~OUlbqE)5)CY>6->a6L^8EOca?l}vJdsy*Kd+u(?g zSvaA}R(P_o`gA=B5tQGI_ld6Yo=(eW>pfB_x5d$CSu4y=A$;h5Vetdy=}5?^*|;e} zE(CTI0dWFQWU5VHCO8?B?s!5cvqs4#FXknn=_i>TDW#w)0OwYaWrnMj!tGyfG~|*t zToN}z8Oz$bIZxYcu_-O^{dMA?G0PQ-W1q(}d3`fJ-RkPHl}t@+JC54(q!f3fOJ&k` ziXwrJ?aNbc1JnvCe?s@utV+M}j0qLxSP5$>(Nfzd0WiR>5lP^wnXE;$Wp8&kOzITQ z(u%`CckRpCMCG3598jCblqN(33X9lF7c~w1a8if_<3)msj#0h9JdS>YxWOl^!C=o2}lMm;Yn|wIJ18<*~7~_2t(a z|gcl@aKrb1`fC4%1QXF@Dywf=7n_V=5-87xGE z=6Yqnya?=ib6S-Du0#ux!c0;fZm(viTh6{a1BS1wylg z-hdh$%+P^47ek~C6y;rF=wQ_Z`-p|j4)8h?2V;}S^e`d^w#lE(lCQiCf&@4Wl+&`= z?g*%pkk)xnF*6%<+-FxMxSW+H`Nq!3^pM8huroN%M_+y#t~vvAwoZ5AMG}f@&9|GB zr}g{+h4k_X!Q9HPp?hmMJrE|JUZchNtn^#;(y-!{68)V;xinaPG9WuG{AH3sSn0%@ zO_YIXUbN-YEhC+y{NBzkyQ^d5wtL2%H5g**7&^#P8kp!A0!+{pmq8McC(fNRRmJu? zk*>~F0#2+ehF|NPG=VyD`F5B)oDE)0INz>IptntglF3F)v8!=LTs;oU^SX&p62@VX zFD``ke5N`}P}P)|Dn@QcN(i_S6=hLSaKMaj@Q}V3aLt0?ijHB7andGyf7Dvb^x($G z#`KY*JhB4WziVXdvw=h z*q0Bc@$Z8es7ca(FhW0o|8_(U1P?jrqo4lJD+>@-75S(Avt8y9FV*bTbz`k!iAg>} zJZ96{>S;vly~$p07Paz$n+XWuXCUBG?a9!1W@T5zJ$*gr4cl3ydXkpG*XM-Lh=pTx zwx{PTlJ@iopXB#xI7NP@D!XhYXTf$9$OW7s8tD`{dykvdRp_7gj`jG73J0)`=s(#Z z_V=ajq#V)M!MvuXo8*@8Q-t5Hq*c5S3d+1;YxpH4%6mVGi!UZz(%I^*y?TMLzT>9AlH$M z{&|ZpKqX0fQO~VU0y=tkoGJshWniERbOQ*Ios&@b+aFl{T9fwKSXAK=99AZu`PPty zvs9n_o@kd<<6Tm?R7o~-H=6vNxRBTu4L`4yBKa+vL25`RzLF@e7k z8ia+`l6p)Zk(_HEVYkPh1liHf+92$ZR;@QaLNw^}ce41;Ax|2wZikU6g?Nbqk7|UK z@)h9`EO`_Ut)4ea*%cbd#wGZ3{{`0tiFH}@ZE(!v+Rj8KX`k*Yl#ub+3lm&R@T*E(P0d?qL{(P{N!_iXi3KI0#3VX+? z2W}*LnQ5GE2+2qU0%q4aVy>l!Ch*VB{nQ&UjB5*}G@;yxxp;K(95cJM<@zKXBFB1b zy!|(FrdboGCpUjumKS`*P&%+J;=xM%pzrbh$jL>%1IkQ;Ata=rY@qLCpXCttSAKJ; z1E)v{`K~os?q8jU3FP%$)u|RDJ;mQg_=nu~%0c0Dr12pU{|$DLgvTDE(~6AgR+Es{ zF*Y6vcR~zBGueR#SkZ1Lq$Z#+Q!;KSc*vyX6MaB=Yn`G(&ZeeN(ET4IkX(qiGI}Fx z7kh9%#d-K0`Clj+xFrg7*vE-g_O>c6aqO{>$}HbjXicDdiIE@*^|;LnInvts_v8`Z z+Pst4M!_aCVW)ZGs41fpUf@5kEe6ZO#aL5QyKo%>9#d+#Lht&+TTsPd?I7u&v;S}< z{|{JjE2%R9Dn$bkdS1Mrt-TfvWnbIhE+g*b0v?cYnwf6Ytl-eT!)%i(k;REAV^ZNs zg&->gyhREirA{N73@JwpIz}vKF*H>?rk(pZoFtwLX?Sv-{v* zP28&@nz0MX1x^~vCAp{j3{&gg98qJfd(8bH`fWq9%+^>$+4>Td^!2m$Qf?#vGhRFc zM5JhZtF)*8%%Fi-I2le$t$2L#R5pVCn0N^c&r_NRV!@&?o-{{3tQz;SRbR?cZBKPHhK^u>Zb zrYoO0U`A{N77gAQ9JvOct+CW00c@BWG?F)h*N6T-!v9KbvN~&E^j~d46}uAA9u)Cd4F0-kP^4a zle*3BwXCAX!1e_ACr-xd>XzbrI2hra-6){qRR}xaO;Mk>(?Pw~z%>lM9OuX$7D z<8+?AmNOs zpv5xg+J1~@qQ*e-dyv7&X2KWY>^5AUMt{7tnO2`Qy#8x{zproEvHK^Gr@SG9 zG7+>X4N4|N!RxfqZ=F>VV2JpUq}R!OImA})50;wup&a5ih}|iCRS(!3q|)ChaLGgB(TR=vR2CC2hDtRrYebS5+qKWQ?{UI$_YG&` zPm8%aZS64zE=%J#{8JkePK#>ZJPG@^FS;bR6SM*`2Y{Rf6PZM{CQdw>`z|jqIgon| zWPnAMN2;kf6l{rGU88YCj)|Yk^1SPz+j8FJ>#GhLh$1}ynaUU*Z;H2E% zw7V-3wX=X1g2FmGgbN2hYLc?~N!bFeWQQ%@Wl%25R2OeXf4_M+G^;jukjZnH#Hg`e zK>bn20SGX51n-rM}JK zqZ#C4ucolx_G0m0povV|9rCu`_B9SScV!qBmM*Ag4FkQ!w%hSb@z>^I`_=qg#hZ+j zk87IH`imgr=@a>aqqR2&yP(JXpmdaam6C5g1Zc0gS~{=!9{)bF)dYy2v>g;|9f;%@ z!fAM`9kp|^=*ZisP*^Ia+?v*gx1vcii<1CALH%xB5`%DW?JUNNJ%2aLDZMnP4|55o zDzw>amOqPs6!m?wvb6PXDUUE33CJhp$UE2V z%Gp$-q+dQ?N-VFr4$_5%CKph&D`EDC8Mi2%lzG*6LS)Qv@4q3mX&nuvzl-g{Z6~~8 z1#9BB?eL&YuS2u1TdRUV4p4@uT<+G967F(_22gXOXqh z{AL^?4@!9-C4|RN%_!@aeZokj0BTONZpcN(o1p|zR)A@cCLlygoUtBKSp&WcW`&M= zEssrS0XtF1T*U8wQ8-uoz*RYXqWKs|i!Uv-=sOM0A)XQbX2IB(d$5uvh9qpl4! z48f2k_3NZc@0&wcfb|VSt{C%Z+AtAIzT$Mqg-PX-)P6QJ(Ze_a_G#nov=hb+o(7Bt zdpC`_*kU?kl-Y`Ue>#Mj8%<8-l)=8(8T-(??9Lq9?(8Qw;mh7W&3397#Q zDG`;gHjZbOizv4mf-_QC@8w&6v9c+fB{`B3#aKXujy`nNA%J8;EX7LA4*zasG9ciR z&-L{hhXLfnG&iJB7H0H(5(44n>Q_MeE%XpTLf`sK<}wq;4>kdieK+kl7!FzwfQ(~n zl2;hRK7WM(aBGlrD$bl+DYk&TsaLsJ;N>S~;qy=Me24agT~HiD(YVElkdb+a_n3lr zqVn|)ydlRmUd&$VpASt<)+Y}>^GUl#p zBkb;;7X%Ss;b%*!5(+UCi2K%6m1`7HpU8cAw`MW~QT2tkvXq_GBX?ZUbzyL5y3wuB zp*oC_yhQ}kBE-&eNX{BPiIsyEf_AV5B9o3r?}UvkzvxQ8^9m>Em&`s7{HP@-z-8Xh zmebhv=k>14$%;+2?m*4>)9Cb8M8wgVsRhd9rrT@+kM6Je$y@+D;b~^B2h~w7dLTPp zmwiihSO~u*Y4$-{*V~8IGxx9hbR12mJW@8^prEZt3(2Fkf?{hdi*SSFQ0OO1KjAsi zqE+-_=jDL|3Mj!_yaB~?=K;uI=I^*P7T0|Se&SaZRwxZ^b9OSYvnvPE)9%*`6BPb7 zTxs?KPmrbxjl|vi_=Or{A~W2e;gT|*7k8yIfHCjFvK_I|5Wvq6h@|Jv&4VqtNn3T$ zqP=Rjg(6|qZs<@pOXtQ2;#^XvX1VV*bL*phlK1{EJwjTR45R(V3mDc``>eehCDZ5T zAH_1O)+-V(P0ow+YO?8<1@Ae9RR{2GB<<*yZ#X&-{y6Kf<1n-`9a?M!>ID7@mL(4) z0cQj&+v)?DyMa8Ml)G=iLv(}oY@IL^T^9ITzOgm8L}pa#!XY>NiX@+|AN{hJrDhTy z9{)4vpf0;n|3YAE5bVJHNeOuEUuFKk7d&~<&W~3FqmLN!H~aYB3xA-zld41)ZjPj=kh0l@>MGL_lZ(7 zvWTHSrjn>*i>#^c`_D_WzZ1CKH+YU@lS5e@rID8tI8rytAWp&>+n z-oQF!31A!Z-;78L@|!3Cf?9SXxdiR)MBOb2e4B-J@#xraidEMtZR z5Jz&)qFHx!K^*jQRMi*p0Gw?>(Hl~df@W3Zpxj62LkjuZCSa8^?cFus*PyF3G#sxz zt^mZ*iwTqRl9zt;7xACQ#coVIn&2j4RB`t?*v6<{-bT}8oUGHih}EVaFvd2beb}hk zP3|8@{G3osh}jn3bl6Qcp`1W<76fz0{eDAl%&AFdz1H4cxB7fZ;ljMFI=Wk3`xRBd zdZ?uB5AvlNk(#m2eK7^Mk$hA1uHvpu>_1|fJVL3iYq=L1#nL_u(uWdc>PkO{Ak#la z;$i^(`?RgIl~f?Z1Q6|P7GIw(utbcY9Fmu$iRx@e<}U=eWWC=o#8vkQu6mJ5Omhcz z2}p|(wawegpScB9r8`M8`hcLA&O?86qi--9n^Q2^WqyN>{)VUANaqRa&C`lfnm{40 zL_=?zlG&e$KWzJ0rve&@;r!v?oEWoQ&*COwrHE2`Ux}&N$|W~@-gK4~PQ_vu)W*V} zpkNUVlMMjVH)iG6!+`OHpWk2cpJqM1SEBcPWjfR;UFnpl`mvT*@ z+73kkhHK|U!)LGMW%Ksi)Z8J8fVeti?ZX~yS@1cpd;rkup0UAON149*VbTmt$v`vSszeIQIZr)le~0LxCkn^CGJuLM*w z@e_UqW_mtfUTb4~+-M>}_M#=l9{Kr;r4CmxiZT_q@|WDIX4|}h3li@T$ zG;EPa-ppDo(n`+WhU1x_&$OxS9LYSauv&m=FI7DTXg~iXgC)0CMK~VgKd4f>^}+Cs z$6IktRB+*3{x(ShRsHnJ97aKx0J7aHd|gMZV}K1>frO;R+cKE1zE4xHr5M@C8$CdUsy299@7uOUmJ9ES(9~= zjx0TP4&?KD-MmrPm;9w_vS~|xRN1B@&xgIO9k%H*+5x#G24A+{lA%UPgOzLdv$KjV z?>P#h&YJVisTLs=8N;tlIJD)}9rYjEEUxY|IcEz&_Rc9AV6_6G1Yx3S@)~hxca1L= zN9ssYFd)rMh0dL7s$^jqydNW|4{;@uD}+ELN!}}k`Ni{ny6=6xnD^V+wf5{4_V$PT zJr@5%(3kjjkKb=qU&GM{zTZKQ;nijK=neMtmwml2-)@F;KCOkm-$Bm%eFA6Iv^U$@ zxA63@{vMK7+uHAay(E7RNsst?IA3o`)9SXbx2iks>U;QJJa4yZFSosp`+ML18&iF~ z$A1q``|b4JzTV@z?dnhXdSw4$=~aEbP+x8R{5qlj9aVn~3-fCQvZVVCvkjM&vUE51 z@$w+OJ%_bY)8B1`+1O=n#fj~6G+wBIQ2A&wAI<{U0u@;s=I+LZU?)eqn~khP2s8Ox zF~tsj74ZD+V#38Zzl%{N2-`<@>jPL3i61*@fqc$~h;t%^r$}UD!qm8FFE1LjaZW=T zJx1FmNmw14*S~M!LOHoo36LHF6=?kij>=aOt>ajKMgglAA6Nyn^d#5sB1xno^T`jm z^%1Yi<*zPO)tmM{q5-nc z+v~IL$fa4awBMy!SxUflCJBlHPa4?d1xn$nfP$A5HB;<%g`SqC#4mAoDWtg&gpTlT zt4?se;PphI1(&`;`nZ(JVs5T)%wVls0F=5?7-B?=SMQwd(KUN8C@e;Ia|%V7df-%c6*qmZ8f@tg79nhOdF=+MHJC;V;90>2l}}c*8-DyN8WQR9gQi-` z;hOkpiye3_Q3M9}E#VOB$&)!ucCtU6-XUk-;ojWT%U#oMt{?8L!|m4-?ai_cOuAvn z7qGVjQId!|2q`5rberlr>;AIc*1(dO^^x*QG;CVO?mb8LiftAh$w|n1nwj2`y#h#v z9Ck7u<@>vTY?&WK43wCFr}s4b;ry7TK_$oPpKG5OuT6Z*YZNvlG%v z^xWy8l`GhNI_!6ZP-v!8nbrN78JrElImuOMxW?B5@C7elvG4OqADmnZ#v7xWe7tC4 zp8s(*thL=6O!qLXs<1ubKge@Lk&^Cv)197N3Ly`Ex8X(}ff*e-n49uOxa*vjs2@OO z8wqBI;d4`H)GT&p#GWHA+{Hq;}&jTcfp}1FE9jAXAG18a@bZuHGT-VU33YN<+eVg`6O?{ zB~#~gcf4I!v-W&gS2PyJ1?76Jn3uuEp+Ig#ev5G+j`9xxugmE6r} zmI&cKV@*Yej^086jb)|DiRhkM^zy*)J0|nVh+z!n;KwfNDJQxtqF?wlGsK8UCPI-cn3Tv1} zw?3qI;cYGtE$EY~49G|J1866<4>BXQnKi0B*JDX)A?Sm`KzNwmRteP$ad$xswe9uK zc*n5VnV8e|@qWnNwT?_9^85gL09syJw|e`Uq1vA_gwmSC+r9{u^|13u!&D>#CvT#N zHpwn`dYeP$EHhc&v8e+~$hVwwI;r~Sd~r(vb9pC`UXQsG)2Y&jjlbVVT-oS2R6>=K zFmN%PSms)Zt7wyU{JDHoe3V#>8f0<|8I>l1U+S(vGdCqN{tM~eK66e;Wvp9f?*#|_}4P!O*ZgR)14-qk7>ZN^&9@1Ai_O!vqC!HrY6@df$C<) z1%$)QBHVATT=eD7hKW`FFk(9B#)o>|xrdPVHgJZO{b7O(jD<8a-p;_qc|OvaJ~~Uu zv`J?o0;h>*VpZ<~0#x~!`oAfO?|-k5>6{@#ws{&9xlH^iC!rHsQ(5cx@ZS;ovTt;K z2BL(NFza)8H>0+9fNlJ@+5X!t%~XtN8}o3-0dy~-?liD2!Qx-r3y}}xoj+^+fu$8L z$5lW`pg42ogdQ5SUAzi`b|n$`cH1n{Th~AmWCjpOZ>bt8#|Y?j3R@;nR)W}|nO*bZ zhv)Tr!sGyOg6;K5m9VWVsLQLG<6!MS@!>zx^A_SQ4>-M&HVe9X>!tyyPKXE74IA^n zOWttUNS!e8Hapz~u)H1inRF>X%X0`NjYRdWV!idDky=5xD^I_^Q6X}4eo&To z#{X4`f8V6hsGnk3$zdoJ(cTRx41+C z7>(LLSnnpT8N_F)3plBEHq$a8q$8C7HnjHDQAX7=K1eW_su4OfS?N59H!Anxpv*c4 z7($%c4+}amW6n@g3W_1p-I13AxR0qq(VzK<<-HG1kvD!DrAhLBEsP9^~USlalz=JyD z4@GBtAR&if0#anbrFhdHunF`J4kK`UNY`S zbM=(%#wg5^+bcEt-hzuW`CUe5AiyPtZM-a7XFybg7TH;&W%#IcjO_Gfau341QcRoL z`rSj}RL1$IHZI6hZ);Fet!5ZND{dfK)Cz0l5TxlCJqgmQ>DBYaEN*WP-d&dRooxq8 z0pYq9eae4|MZ}=JPtjVp#rk>+*s=><5Dv4lBjbIldML$3i~8G&>sxAifE9K>YpyoTzB{B?%*f``%Ut zDAOo_2F)Q2_N?Io$6m^1hK~I?Eeph1>ZT`cMCrT#cT^%P65pV*PEFq;2X+V0BhpUT znj%zo3Tv}PTBZ@GDmmih{Z=%gcLAdFFm2=$8(J_ODkZ6Yniv9|kiOi(LF7U4FX}Ger z{W(!Ub4!KJZbZ-$V}=zMLgl8xJZF-_lZ0Sng8s*?m!#(#cs)Wh7NfNN+=mj$QdN+$ zRBFjrT%INN)t@Fn$}p)ZHQ>cA?DwNF0=p<9wKmPe;w^4KDN-2l4~)d{=bj;6d36tM z0al3xFg-iC4Oe3cdMX!p}?~IbTR9 z>AgKol+-jzQO@Aq{|hNHH29lxDFU60V>KXjILM^89;@)&msGMV;rV{)FY}dV4V%YF zl$wiA;C)&t?Vtf<2yOMz@J4@JtuB=>Spl*p@JEvFk>*8FF%1mr2ESM4)487|TlO`@ zE5*SLKR(G_br<)7(SDP^i9>-~5Px3n*<{dc47)MYGhMYYK6}|!&CIZ$k$uX}$E26U)P(Op+>mud+!2fnXcr{>B%VI%9IC$^>MGB^ zYhWX_l7y@UlN(k9BecF#T7L8r(0Owg0hNQ+Nt;~8nUsApQ67&n=rX+EBl^N||8gHW zdPk;`2+J#4^Yn+u$sXQv@dL94l%pkjs&!d9A=cHS{;(l1L$B}27RR5nc8iCYIagB1 z6QnnC^7Ymx+4Ms{em>8fQ4lqmoO-B4(pvtY0^gp3!V(!+3O{Chz%Y{VPgObnC2e2R zZ+%busxF}nmGjs63im=!+c?E);vx>~wi|mx)cg6HziSVc5zo1S$MUX$l#Zj^G08DE zz3Dx`Hgj3sGYz^Dx5Wl|fQa$(-K6hXFd8kI(6_Hc#L_{q7wBU~0LvpCb@{PzV)D}F zCLtk->}JkQptM^5H%sN#OCHh`gT1IUgZeN3qF=B}oSCYyo+V_SRZqE@lR%imMuq{w7eJ zUWb3(LV&@gB)-Q5NhTZnVMuqxjBnCM5}viNU&$KrmBu@NQ~V3EH+ZU(e&@Jf79mJ{ znf-nYVLLpLGz#iV#BO4v*UJVgzB;h?FtppT!w8&H1HzUyH=zNvOf<43BHbXD`1ueT z@5{lxXR_LJW0#XE6+qZObdObPXTz8el4DrJ;0$#r;`>N^F@e`ATI}9TW zzgZ+=%AcF<%xJGi;J~xY42v(ruWJIIUUJ*9Lj?Yu?ocFZq96=HcR8Z!>#RXA$;#0S zq2DmTPzeF~#W=LS_2!7Gy=^r2rTaLSXfud)B3LIgB_qC)WZA2~;gLz|`SFbKq_S!^ zuNB*@p>=gUQ%;Ib`nle}A2@RSxl4rr$tg``Cd9>ic)(Q4Q9?&6eL<_)y=1@RcLY)|QmUXiCo|TDHL(%)elf429Cy{0qr**N-5AF^v^j5J zWDgYdKGh$P2AI{68RxP~B^@o`A-59?Dr54$=^a{4USRrtGmBtm-?6*AA$>rulVEUv zOG^8)FZp+eTgij>YSw_lzuP*6K$477laK#%!88FHr&0nmw5p|@F?zGj94>DCC~er| zWzX3}!!d;{{m7=8q!9yxTjC5k4L_}1ESAx**(yLPK3G4VQ^rGB5^F8kBTM=2d zhCucZ3cD}m6OT`(-F11|lY}W=nWJ`!KK@0DSmis&LP-|$XbEytJLPo4Gyf3X07gwsGM%RO{LST~H+=P# zjKpGR@ls~YMyL6}uGx)%?omw*PgYzKB>0v4W#@Yx6|;#zd8Awt{O~VeIj$U*d9h?Q z$<;l=>YlmK0k%WdO@mmoYkYBy_Q*;>%qaj{67VInpr4=zu!IqYZCC8%ey};^1LY(N zukIqLr8w6q3&Tj`gSLx?Vrcn;ED3aF9KPt^%U^8fd??z2RP5}(`*IKLbjn0G0+GB! zqvlS)V|nG^zBb)V?8TQld+aZ14G=jfl{~&xF%Af>VNyrzRJ4P1dTEcd-1-a0S zY9J?9}AgNh6t zNb*+J$&h#)Z0_5!lZ)l0R8K4%*wsc?VE5qRx4<200hPPRYDf^2$He1K@%$Dc3XBLx ztsv8OpF-T-z+TJ*u?54w$7B86W}O<1c}$1Rb}*I+?q%d`jl#+nekW|qI<^?2`9dwH zn*ru{XVYT&qO5uUfbeWb09%YUNKC1a^!!9+^cKqHE@#Q}YwGDT05dX3yL_TA?m^~3 zyzM!zQrA%qK1E?+^ImxePh&!vfzN-1c7YftixRXz`K8fRXl11Pu=jlPUjgGEIc2^I z=oW-)@40}O#QseXMEL%?AyWbFUhvw-q~qjurW_@~7CD zCV-g%%=CACgRM8lLNu~n-p><>ai+XtVQc5p5KJkDugppzNr$fhBZO)Vj=&3ZZ2$YuyZU343#iB$;cj&?2pc>qTDeI6=d&7bfo zhFH0Dt%y@r)%qq^Z1^&~4;&#^^8x4$ZoODlhBMwdE>;nB(zFXF52thKk#`D2X5;#An9TZikz z48W*hF}Nc|d|9M3E2kNC*uVXEFaopH1)`do4IxK>KLDb6=K^cpJG>=jYd=9AgeSfR zRxOFC&{Fu|E=O1@s-Qa+j{Ux}nMsrEFlnt`LCI_=z`>n|S__&aw`I+;+P&{&r-%># zQJzY+Vs#B3jbDdPZ~PjX4VeO*yXi=ASa$S*L*HpB;Dfa&1 zF(^i>QVCgJ=n2BXw}z~SIf8uMHF}4ofkHG+{=|=;W~veab^w7j4OIXgt<02kaz)nA zze0%i5-lWq?uwh@C@{bnj0hpPaTf)lsIi4$)Av2rmR!?pq*r`yP_nonX0*HYupRxXog9kgU8W9< z(m!p@AKUr)5V_ZLJ>A4K#ia=J#3glxYxBt?aOJtE`b*xf5ra_maeP;DpENm6Z}1nB zK>0RItQP8FR^D;@!vlV%%b9(fs6~o!u1$5Koi0eA{Tc@G}l3h7umL9KkD67K&O+_#YSX1-ciSXiWaa14umw9jUf8*bwb5Tn` zx94op#gLaJEj0oY$0gL7jU7rnkfF@ZWdk~01G%>3E&Mh&S;V*LGC1*CyOd}n1v;vr^XZLm7Sz+~5FbiE!(yp-s z(abDKHmsFmH$*3-L?XvWN^IVqiVGhjheJt2nS%hmQc?Bj_aopv_`(4)f6=$d{s*lJ0Q6*6aw*U6SjI8ER5I43 zzMRVqb$MP%pm1Xlfn;{viP@MAL4MyLIC2-YM^%;1MFM}1tY9E#X4OeoR$)N=&=5*7 zgVGr0DMg<=b`IDDaJwM9_DS`bnQSCKnDW0RSqSq6H;aMk=$7Ly9u4*t7mcuQHi>7@ z27vkDNSAk6{P0^w^bQOKjQD7f2PWL^cCPmN{pvF1Om<}qLK&K-9mQj3K*T^{ak|VmQ+_0}S@9H;hD?>jL)JPRNrU-%RE)sdAs07E4ncK|@M7Mn4gIW$OebMsrk-U}p^pgA{#%lFf|4TpL_ zso&fkH&gDR^jQ&~CwPVQye5vkF%!uA=%m^=nJDgDv6rN%s}q-oaBk|$+&^PZg>|#QzF4AQW6`%fu&Afcf;pDN@sVQ7AF2jH^Iv zgcr8wR?bfDOW{BnW(r(Go;5=onMU>Bq2j(F@vWJA?mVo*{=D0Nx&RosH~R#aO@q+NPhs zhj_UgCV|pqfWWmQS6T6LqHfl%4u@9^Uq(`sdH&VCuN-@=#p9R>IyUg7&!Ejn-t8cn zW6`?t+y5Pa!l^i~SlL(*K<}sb?`etgwGbX5JN)%BGS35(tbfdMMM%)Jp2Vq_sX!rr zu#xE_o_<7>a%T&=wq!xhm>u(iQr@>!jrN$~<`R|nmYXC&(}|IZNfdqtsEJi+ZgM34 zhpNCZbbSU!avOIkAcf*Nb-#Msj60-w($A=BtgW3v+kN&S zHZYYBOdB>1UXK(@p|5hHq}}mQ%Kl*3aLOml?sb`2nR}ES=aB)fdV>ma#rIS$q?PF2 zB^FEzWw#x2AV<=rZ9etUl^+GgH957-tNJfAS@SwhehNouP=;9=KIoF6V2-WX+_kU!3V@2V+2?Ma4d7qWA;Av8( zLAC6T0ArFyvC1+jN9{9{-M(4RUtTM5^V#Vwl&g4Fchn=DR>QSSEBRZuG+imPSB+-x zYglN3r@*p)ROncNSL~Gw&fSp5IyXd2Lb*GR!~b-_-qU=$4CnSa#)&KbaoyUfsrd`h z1`s*>6B2fS5qXAIkz-yPf*LK|_I~0>LUlHJdnV!;ylY#u!)?@bnXk4B z=aYki0y+o(WoJ_dNhV>3j@vhU$C|piAQ&GFNxbuo`YA6)hp10{r(M=$$^bHLwb+m$XJU5fTEb*?zhTIUy-blOT|Rd!)lJ10> z50_MK&E3VH8ZoUNTK6Lj_lt5o&3@4v4y`4uvXEi!SAl$mh>sD-fJj(z&7bb-S)qnQ zXWF3$erXAja0!a7KrBTZNi{e$`GX8IfhG{ZOHJZj>4ti3x9$=x`uni?g-3aNB-W}{ z?i&%9b09yKfBM>`s+M}) zb*!qDH7dW}qT^9PV;9Lk&Oz9+g?me#-{~i!!)3`l?g${zL&-~g3WW<(6;$`IupU0g zlw`#jm%X`x!#opHHQQL)vKNLdh8P$5tc^|432qMaNis}i)cULA9LP2p>kNkpa#pV* z*RmGM35a%1QA8W8vOsH&vo9^dl?yb(M^pjJZ z;I4eHd2Y`r1`SR7kj@3q<0Gt1pXIS`(++w@lA{~T^h#H)|5p=4#FSnO7Nl`gA^}4s zXMCeRc}N33T5;7JlS}+K6BN&`>V(kQ5r7hEvckEdEa{rC2{O<~GImhYs$gqrY!yd8 zAlPPni8_+e$Zc*~dXQ@pA1(7(=ayqL#uw9i#7&GOd4zvVX$K0zMiUUEUGWO2nG5I; zXD0=X+^s#Ne%Q2g?T^AA2Hkc-a(9uyd+C?rX0s9=l*oSbx7_sG`CVUFG<9N{zQ*S5 z9C)J+9__rZuF3}`(6q2s5(|QvB<&U;+UuaO+|L)B$@-y^%iCae6WBPCYzcJ6^n`!n zZ(#6I*njk)6Bsv2=rm3G(6I##;lYm-R3B}$iv_g*9T4~ESdR910Ly;in+gbj%1U%4 zR__Fqauk&veeI>DX^Hz%mXMGGAoIYo!VBrW?b%Mb;zb-)><) zuo`2=elLPmQ*sf_PVKl28!NAZPul&FTXF@OHT3#-bB4%ai*O`vx3}8qhfv_3TiOME zh0k`ZqxN~?ua7$Lp3T_YG7Y74a#+8p)he5@_HYkz#Pj3+gR=^!7wN1fjfMd87-ghq zI{1u#SRcKZ+5Lh4eOw7k9oujeA@am{!8sDgqVt`RZc`cUqmQSO7t#vVy=Gh8KN)H6 z-IB_b7nIun1IE1GYD;t8s!P3VUec&^ZxSs6nHvZq$7ArN6T~t|DiZ%j%4Lql$0pf- z$hu>WP}zrl4W9pVu>ckkj0y}7Vz7#Gp>=;*QK|gWKO7CP6i`UBeRwVU>g0}sji8~- z<7O&ZR@r^dsFpEo8vD-ynnE#mE*-^b;v_v%DhB@g4DlxKzC!ZeFUonYpb{n?!&?OP z&sAL=$=PiA-qrA8AKmVZ9CH4Ib9o*jTiLB~d^*kM#7vayTboFjEIn9XQ0~C&PU!a9 z{K|ou*9!(sjiyU*kBQ`qxaiN7zCA3n>9#JVd&wv|XE9!0YxE;zIhU8sS*g;%Fd zj1NSxv4_oa^;xe&5R&B7eI5z^ zVr3J*(JkM?ZS`>?f(?BA(wtlKw4E5cNy-weKfE#GAeAmmkb*%RJaUmj>cH~i;_QA_ z#7T=4&JIjQOZovs=v0=9y=HJs=4jdI*#W)PDlQaiaH`iq7t=#_)cz12yT7>?R$-!8 z2*)63Gl2*M0^^W#k$a3n>;?MNg_O&Hj$7omoFUZ7jyEEKl3vJZzImpUac*_ZUzdT?a&FPhKO zLtsD`FkeEd7gH#g0NMwu%SfR-^tU*j@{u@jQQ)0ljVYua{TRO&WGFqt@*f0I5SNjg zSUXfr&VP3u%Xzg)Bh6jGQc8B%)bKLD`7BkRQ^U9(o@07fAb8{DEDh2k6z95Lf3h}Y zqYvd^6b8wR{HJxFT4chm@UsXXW(R~fZ+n^nP?|jYGsT=_tq@{D*_&0fR;x8L&0m<= z*r{5*Vm0_|v-eIMGZS<5Bb$IVmVnh9R5A^K&cN~u&e1nmnF}Eok$#02xE|N~Vjy&( z{y`QmxE^T_be*krG;7EwCR-_ul&uDYR_S*vi=TEy<57}A`}>FVt3vOBHzWpoED&K{ zP^QHq-lEByv*YG6EWq@bm!Z}Z%6fu9k#vw#A|3xW`#@N&#QSM^whj3606W#j430k9 z1y^&)18=m2rcAkpfXp|xCd~FKo6MKOY2kqy7jfjOKRu_QAhbw)ph9mznLcXm`F*v@_d1Ap{_Xv3|Ar_D}sqj)RwuT!q zJftGHRAC^2F*}xx=IT)N*a2vTv+_|v;d9L(oNT2Z4Ir55t9S>mi`Ns3<}cgRwFplx zl;wFK*<4r0>jUi@R_vMOTn2KR^JavNz*9E&Kx$U?9;D4ceE=rTOmr zM+ZF|EL~r{iJ84E${I)1{=vG3W*vCeU3TFB=08UPspPt*RMa3d4n0;WpzxUZc zDP9i}P;j}qSD^&;uC>d569`ju^>@G3Ggwtl`HVDyeCbhRCoZPD+CkY+edD^qg zkhx+k^}icGy9x!a5!IpE`ueEJ!g}TuCppP3Dnb@&D|3lI{1H<&9@`tU2Z%q`@H zu57$AQYXC@vjJqPN5NjjcZP!Z=>VpX4HeWo4~AqG{(#7tg~mY(45g10r=GndnC%-h zO(&Zn;S1;zwHX{XCMDVgvP99f0!?bL3Nqc1O5fwqGoH056e~!9YlYIM82l|G0M0V(C#0|exb~2+5%3_9;fQ)S9p_7c>buD-%EE}ED} z2o2{>;3Ksn8uIIkSXr21Kk`(i$Kc)V)VcuMu4odkK~*qLAwy@{Jlr}^tYlJ|=YqXN zb3hTMVYl@$OW~FAb>%KgU@+Cbap|r84mu|OpBFgly(tmRG|c(~{|#zV{e2Yr9S$tv za|*aMU-9f)LS#tcistUyOhnU(8#!+u2J(Z0yR8Hb8n6o290MBY%en=EuNIkD1lkJE zStcLhJAj49dFuRfel)nRZLOQN2X80 zGc{p1_bNY06Y~%PsR8F(c2XK2?x|kf0PKUx#|7auK!zcSw9AV%ivd)lEvFT>vbohD zjf3$S$T1hkSH?#WpXb=5?N;#erx*r#y0|%k##{&~I<6$R+zhtM8$Oc&M_jMX$`Ws$ zswR7e&CZBeop6xp!>$>m$_ya!Rz57%_YoUR3YUpqPL-z5yRr|68prIb_BPh)jjL0g z!mp#}$KHd_Bh%*!_9kjv!m&C(+MbZsH~>dP$h%^gR!?@xdcWZ(A3y*QrgLMKZCUP$>p$2`Ra_ zOC5utuy~-PMF=*51-^j8?jN z`LfD1H*edCQ?0vD=ZT)f)vkJ_CBVm1Lw1_}J^8l%s!)rEP^vUiDpup4+kiAB+8##sMdxGKzq` zZAaE{p!3Z@iRUV2v`L~b@e~MdG*rVYC_&htNU3W5q?L4A8CzS!pco2iQu5ggTO0RB z+D&_NU8gJp9q={xBlYczRDC)BctyL2jd5a-;9;?!5{_eU$w9anxe0D?N2V7&3Y715 zZiumF&NAxCxKyv>ted}yi0ZFG{AMAZ~mA4n7QuehK@;!@`jQUx4 z2jq=&(O}@F1{eopmabwu+R7~ahM4EFKgL~8%WF3m42;eYn(^dLIJmjH0JHl`SeGgH z3(pc!=7P4~@|}z-mAH#=-DQg02B8z?0$pbGceRreQ4Z%R7egS#+40Z7iU*`9ISo>AoYaO)=Gm20m!&zTc3p z7O0Z>dieKFQTkYitIgAZJM#SCGDO{cHI@3DIo*JcRWU@vKioMKjl?fOc#zRU!&Ujm z6=YNb;rc^77Za%^4bcqcT#_nKpJt6mQYKNsb> z7YEn3efv%0=ORdphXrd+%Zwr(s4F7IFe-heRkN|M{y-ECjcufxJ9wr@OPoES*z5MG?3&9|5y(wd*H7J#mb3ae{a7FUyLzEIy!?Ky0HcY#LvTz ztTZt}VI-JwS*xkBidxe}aE8pnve24|VwPsCsv!zaRkOt`LGT*+O%Ne3BX_bW4O)SG z91&h{B^68C!!-2MC$53mwV{?0DU`bg`x57{nM)71p?kvRT5{H6Gw{Dx?WD0l%b6Y*ABS zP|#(HB!VMm!+>go&Zvg@?Ui>P$`fy(FZ8k7;4v%9%b45DJUHQOzouiDZ+PbUool&e z3f)g4vbVThR@grBiK}G$IA6_Q!%|q`oKddn*}RP*)y!~P=EVbc&g{6__NSVOU(sgd z$8r3-IZ!<=Iq$mKt$(C=ci%-j_?#TSz@N8|;+nO|MnwRz)C3Cf*EU?-m+Uc&^)8XQ z1RRX^BJ|JvGYRLH3Bbod(aiKE1{rbVr#i@h0W1{NcHekb`aDWDDZKPK1RxRK4wV?# zi2S1Bw1+TG~~J1>07{$8vge7o*1pH$BaEDyDq`QK4d60X>S z{`W~;Xqr;j(Z?r%*8gH~rS^q=-y=#i5cCYlOTesSTL4lLGKbNRDCUYppA$*+m$%|Y zCZUhk7a3iFQE4Gebt>BE>I1fF(WFYr@;D(o#O(*qej^0eSmNgU?1GuzGiH%TKao(M zg|!dUQzg-&Jbji|RjE7`YaS}bsKRfJl-!G@wlUrbK457^FszHOb-k%DiJ4|Spw=>Z zAm4n`%`K#q^DXc_-C!3XO-T9XEqql?pOW={Fcf9rWj1cGw1y7?(OaX2N5H{+Um67n zSARokV{?LnL5X=JKBzA^e*V%$^o}XiRV&g5w6iny4M)VY=u7yY8{fQWNH!$sMuk3S zurwWTt$>!CxD-2{+@Mg{??jr=0> z7W!ZbA|NLaMR!Lfo4e#a3nL2uJck8?a#1NE^P-UU?zAU6ddbNzPM(DsPHI+T#bFto zX6{@w#sc`%;)WT5XuS!{)B)j_3gt_9mRflSxTMqN z=;wTd1N0DfGtq|FTIi0`xy1!OS-g!l7IQMOC9ZcgEd` zu-uHJ(y+lM`Mv(ATk zJlh7!j^TmUS<#HW+=Jxy-&TiYR zy>7NgbZiT0PqjsuMUiil{6YnLE=_^OG~gB66!LsXvZ?-+WP#x^G>n+|x)^aZA|(>l zQpAc7eD_~lG{YF@eE)n*R)8<#%MD8Si+iO*Wjq{Bs*SL3tJVWEl+`g0PtIo5%#*ct zB^rqXBoxJcu!Nu({ntI|7>m5_T)XibpGn|uje)XVRO?qmPPvDt5sczX3beF4t=bssFKmxR`bB+KgVhkMSc$!f*%%MoKnL~!pn(=o z=YDt&_kPRE3e>M3a!Ho^d6xJHQ+G8Vx5C$l{}fvilUC(dz);x5&AiAti?ov-bsWTe z=1KzqJ3z$0nfCr)Y+>i!x*}PTBsftrD~%uAg{z1wSY_RSLOhRcy`g|L#u6!)G;<5L zM&k87S&%HsBoPJcHPQs*@}yWEL^5WEKFzuJw!RT6p!(yE{sXNvvlV2lP&mznO8*>1 zsaeYaa74~;d6^w)e(pY0Yd&%zxhWgxB@rF%X*|m}#Fk~l%3HE;P%X1pvdB0Rn=MRR zhfWc+M^lB9;_&tBpcjgwGvF+2@4hK>`GsmS${B=jaZ$6kUU35Ul17_LvG@xx{*&Zb zrw^JK)r?Mhs*;23rO>Si#X8w5SlfixT1aT&ya3xGw5=j0px-0f_5;A+lhXB|0hBtH z0)JEzQ)D_NG`Sff>J8?W`imKVlaffY#Dldm>QSSJc}r3YM0uwY)?v-Psdy@2BAY`_ zPCBr1!3RJtP^+9o@G;)wH-*gtthq5M;@o;d!3NH(PA1KSiDdX+GG#{k8fvYn&PSM7 z<9R*p@!cpT=NHM2=uoY0yNj~XDb3xZxgip6$O7mzmfr163(Mvhe*XLrz97G+ZU*B0 zDXzkM%8(2o9)iBYNrO(5k{Q@$fB8dJRfMnqKBQNGw5tHgC>mE$8TeS`t6vknuxU0m ztd?CcA6#v{(G+$rZY$OGKc!F7y<+c-R~zI~SUZL@ZAejjsZkx>y73dN9sZ+rwH0E3X;N(d z`BR#xv)~nN`hO$5`BsSvlSMq+i#X4qsjOFi+k63JGRoL{LIyJ)u@`FtX8K~Aqy;ME z(BwvB^tcyvOaLl*4s;sk9Zo)+Egxsr!GP&Z~`%8LUGw17R`p4IN2xsqAX)knvm0`eb@}g_B z{4b;l4)Ko;G2@#g)Jv21e0;#6N{tr}i7xps%y48EBequXw#73~8*{w|6be8!JM?@8 z#{4V}%sRI}v!VjyyE<(cpau4d*SR0I@U7rOh z`QIFCY*CVGExC&PWi6}$m}txD&Q7_A&@Sr_Z7**_a!Ie<>rn1qd^!^TL|H}qzEp3` z3&n=j+m^STc>^V>ls))KMD)1ug|HdqeOV);^sNf~WY(eb{LKB0_b^OgN=P#*qr{hk_h@ppd~Kuk6$o2xEf zUR7Qwlw-8UuAK&D?Oa^{JPgcW}Q@h4=vUMF;N6gmL zuuW)*sNoFyYs-}ulzln{$F|_$pXNSJ;V%DYRZ1u8`_@1NKx-Q}%nJi-jrt-6OQ;WU zy}+0ffi#&1X0U$u!Oue-L^GUJgL1noU%*1GHG>zgtpgRNj;bC$G6M4S+PQ> zWf2(^-7iK5wxB;YGTOX?W!Dr3T283D>@vO|1y>0hsoAmF!X$-O0g=>!2bbGf z8WfZ78-YLa;^U^Mrta*h_qJzwP7sxx_6;DWnur1}kKW4QIIi&Da$swI984NE-ir%& zL8t7ZQQ_IG-iezMOTz~W(i^Pth{UKemcBvQsffv`nvNrw%V$ly7f=VbACQTTy7=d~ zW5l&aPt8f7@*=rHB{0n5x}o3DwaMN+qzU2HJMs-Go(d1}%<9B@?Pwh-E~bof+KpD- zaRTPi2v_vC6<`cVduo(1o_e?-q>V%x4kG5w2^Cy1Zl6vkskxW5{b6QF%hm&q4kVOL zHUhS73~$<<7Tg2naM@~0Dbe|hQ`$u%!9gV2jcYU7wKRoKKjerH_9k|#0w1O<1~fyWR-$XY<A`bN5b)?}}fCr3V{18@6s1xSbHjf?OAk zlMZ%X^Wq(bf^Ny)C~6Q9(Gga_@5mfIjd`Nuy-N_Z3Z1CZ=~N{trU5g7WzPpIgf12P z#LLPav|OPXFIBmC#{Yki%WQ%vs56PA${ZQ#M?Aqh>!0^0ihT>)CUhU@7I@PSaZ&~A z?))How)Q;7N3x8dK%P)sSVD~TsHI&=rCx9?cc6ZsUy--0X>7+!MW>+w9fRW#MIDyd z=x3vwI1B4&Y+-=+0FVN^PSL#`*N1;iE9tD;5u!}M{4_m>sijMTby=_M z&mRa21eEF*(3G1m5z?YZs6d?wv|&saWZj7-Q5VJfl5bbufQOC8bTD{Fcpip{ORB<1 zQOhe3#2g>e1chtxn9a(!T3VB#wfy|JaYu&>ru<#9W$d{q=&er5QsaOHu~2zM+5S`p z>k6P_2U>7#KD@iC124KA8Zs20V>uN%)v(kcp`=}- z3>IW9m_vv?3J{=@C}Rzdyn3<2Rz*mL^C^urwN4O^bI$yUgI_rZ`u5_F*jnV9U|k4M zMq17pTPb)2Oy+u=O`aRZ%nmToIGeKeFEDD6p_lVrTQW^%i~0A{ir;NShExtU2nMkY zQgJPS<1`5FA^CQDp}3%eXIv)8M*m$J%kdMqjlaSQKA@~YLS++&u>Ntt$m7~dD^fYV zkv~?fCQ&my7E=JUGcZSPP(H>Fz5|o3wZ&)xe~u=5`|t8eVU6 zaRZ@Wl!V4pD1C~IJ)xL;I$tPSuD(TrJU}k*vlbR-Cr?g(YfR+KNf~raW(GSlhXU9IE$2UWQg>}DSJ&i*uc9vS9qEOY95B0q$N4NPQ+{xs$K!xif zyeF}tQ~M;Z6tdnjB%8*oZJ4r&%G;i+lx`$7Ug{T!MEe!gf}jn^;Oiw1qewTp5sTy#<3^ zT|!=F5w+tZ0D=+@w{3wdi*E4dz~bp$@8EbN&qgo{gl<(~bR*)>KwlD*gR*=ip?qFd zb0yTnx;OZnPwvkCIjvEJ4VTvz0@F>KwLHNM)dHYs88C8%WWtbMWdhTLsM@{&nWm!j zbo2(d>i1d)-IKuoDtarZa6Ze21!Jn>*_M0{e=7a=aO>F9gG}va@2Q}F4(!~C`)n!a z9Nw8N?PRK}OWoZoX-q(>ka)?ot@{|n=xS@?5zhFS*ET&`@_ax`o)a3kGLR4fY%cbx z`LgsnF~W<|haZzgs7og@jlDvm8KCHIW56jy*)zA@YON9Fe0r=8rK$oRMWO3DECy;J zbZJ@>$~r@ohC}f3cZ)jhzN$rdCjME{;VvEq-z7}|tvU@oR)G5*Fz3Vo8!K3-h<+Z~ zAS=uVf_5C+egrt?nT0M&idI%_9)!l@4w3b_?4R?-#sC?WU9y8>wRZ@Ty2?33>jnKX zePw9g^X@P+`n|1mXPBZ|@6z?{V@S;QZ`RV^QA--}e9E3wuNiXelcv{PX;FcV+{t16 zO(aq)6;S?3{nLeZFI(^Z>y%2fyW+BM_7`!?rE|@G_=6mq+QTEyC zCUz2vAumb(oQjTZ^!nErhQ^1ZPadkNd(^wGdy>@SsyxgZ`u9pI@1DL~Hk7-$))$vi zX4blLoP)oy;`S=_UJGg3BmRd`bMuMP_YYJ*_w8$MFv(K}dO&F{L^=N<1Wh_&rsR3m}Dtdnr9_f3ZSEH#p$f1u z2M#`hXLW3bA*4&0jpnUhq&cRK*9Uu}{l|1UkXF}#7JkjNyFq&E(eQT~M(5JTEXl$^ zqDA^OOgkI)Mr1@! zYYdwAqkwCua^#~defNPuih0p0>y8+sn2Ilds?vMPya*|wUI%VIXa%9Nl4UbUQeMz| zs0+p^d^*d8GN2LKGIgM8nH1Zw`CF_Cpa?&6qw1JI_36Y-;(TNPVkcH~k!**zIzV11e6Fg{1*tmi%aUq>(- z)0r=JOQzcrQkbyahc1!|p%Q0ckZ49H+~X;=@HH<^*R@g=5EsM>t=E`$1g2o2ynI6S zDudBlJ(Yg=-+0#yLxI7YK$hX@w}`d4;^9T){dbnWg@@inoa2G~&_ z+-Xy(ukD-L7|r^6FXq6v%qXf902^$jqKF8h0|($eCrI9qV&~H}5c>F!DJf@!g5^Ab;B9cRF|{ zEiO}bnlQZ6lxf>GATA+!vo0CPzmvW6|2kNKChh(wRfn#Ngx{0(?+fqv)i9qj*eeY6 zTI;@huPIkE!k=- zXg`m7BOiv>wbD~XHhu(R6GqB9O96c3!N^>;3O7(lEGh!nTV9XxtW%`4J?7QK$IZyx z#4@o*7#87Clc~ICYT1h6&mh01vLi}|7`98Abz%etBZ*0$d;&}}7A8^q1sP_Ywk_B1 z`V(h)v%T!N;{u6X4-b*2V7u$TJ=={GpVey%)1m0piGh@{>mGC;!F>$gjEf(TR4JyDBR!bD2KO4EV*m3 z=^nv=rzLFXVc;q5WAqQEs!>MsfFme{K0o~(;YTYrY}XP2&p8}23F;ijuX;gzB|pnJ zcHFJSDd~!21Tqbt8y&E7sizodh&|B1;~Zg#WgS9u&zz6=*Zjo9*%St&oNz|IXRn7r zHP1H3*j1b}c)eR_wWuHz#=n#2<$0MA0s|Z7J9U-p{*VN!^Mp}l0SKW6W4FfS`LFdi zr>=0IqE2Gjl+Vz;={Kcma^>vNNk}6t1*D11Y*>9u#KVpPkP!5;@FL20KJ@?ltX7 zvhC593#ZgUQ-+FqbW;C#Cd-|MM|e453@?a%pJU!YrP}+~s(fCvWq%J~!=4fiBW#UI zGVzyAaaZqDmG_H$v{N?B1qg`tZ>hF(YPe-?nNr)T^=%POJk*+rG?qxAj=?~-GMfKq zcA2*<-}uFscj8?+Se$Msu_i$8KfuXLALH75zHg>69`J*B-!kB6(YdHQ2Gb=&>gyE{ zx_T9!%d%h`w>s7M(Z>!}UCGUi*`D8a8j#lrsl@CryfCy+nU_|;Q(!-5e@|Re$RsZ} zemV*Qgy31Gh6C$-reU_wt#_v@VJGi>j4ZC*vKCd_sI?>%fgDUY3%Te?ZV2t`7Ndx3 zVOE#aNtnj^j|^%dFa>%+A6-=Ru-0x~aaS zNLFI2w`B13voh?T+wK>d^K>+}Mx^T~HJjwgt9c0U+sz`)T)RLc^xA3={qZ_?&Kl-q zw;#3m8#Po#AckWsKDLM);>qw7HM#H%uoI)nyO(ogCe=b2i>z6PuJmgZKa zls$of^JsKoE1L!#l+?KLm<$ks2JUCDrXv|THu$y5`T%=5%I<*^hrK581}6L5Kkqal zGJwrZ=j4L|p~Hsv0RcpHq_eYVSBlK2cES!_jK=f74~rdPVQcMu4!k9tuedan>{t# z_cQi05N)(wM&1gWkbYeqOpjTzv@jR{E8M7~F(43s-+aL*EY~0er~>^ewJH%ZhX+RU zoU#CxzC)2+dEyZ{wdmwF!Y3_O?=~rNW{s5xST0)PUK_Lk^1;Zh5>XhsuS}6BYPd<@ z4*~WXX&Md!KArZXKk0i+;yq$PcEpe#`~PcXb`l40&%W8B;7`U_q;{uo*IHFQG{YgR zO{Z~dq7!Xz#m1;61nr+9oA}Fi^gkX(_X=9S#jJRNP7Cz~T7&wy1V|t1v_U#RcB9+Jgk`IsBbC zL2SZ~D^$C4Rr}EN4{pxEj5L?jpg!)!9qRDKtjTp(>C@Z3?kx|!zqk=mEp*Xzz6s0F zxRtgtzqB8sur1FfrSq>UNz%yrlul~L>Q5uhjS$V31jT}Y{@c{iAMl3s8I#w29fgKql4L}&O?RZK2SxBW(4SHt>WNS4x&UC%aVn?6#chxo zAjRC%S|aWXh(8Zy`sm}=Q++&t!%05}$}+&gTQ zcT4tYtojvLo=(~UYqf6p%5I-hy@9QJOhA`B&{9ho23<$;S@wGi_Z60$NOr^on&M{+ zK7EX!VyP0nXrs3{u-Dk~Kp8X|LE8Fhl{xjnPNYe+O~sa`<#I`||1I`7P@Jqpops>E z12gCMh(M^VK3I1k9q9m1HkKri_R{8gaf(zLbN_$u`=U)Dn%cG4f57C!aVl}N|1?j~ zgBJnqG{R_6@>Z1ynStyT#A$KhTp?X4H^RJaXUXpe<*23p$}uO(<^1&xB)~kWH`PwaeirH`!Tb1W69+4RN|7d$>VB@ z+;~jK8vA;dzdF8%;Doq3J{!^WK&=@V!mb6g8{vr1IZDqvAykG>x8oi{4Yct&1mlRG zp-bj(;g#R>>|1x@m=9?`mqqID)I$U)u1rf7G+TLc@+KV`NA0B6&Kwlpbsy)Cdtk#6 ziDUi*^7)OBz18Ax#{0)!rqQnz>2c!T^lX~ECVd-05sS>Pl9DMrQB(3UAat{*?9H6_ z<7>a>7bk>{*M~nNVhXt^{;jhwHzaz~bO+Bv2pJOIX`%ZMPIKG~if%`o=dCVHxP;En ziH-*i1*imayAO)2Di?rv-c|vsA|lyN&mo1n=UYiI+;HU2G~;5Kf1d|}MR3mGMa&|s zHs9ePJxJnrKN;djc;-_KZmo;qt6p3l>vOJyws+cc^Z3_|%p&x?k9`N@P(;%=Cr!At zjek?14Da-^*-;21q-fC%gs)?|o87tHJzJ;fLD-q}i3->MO1tS6{Vs;Jfe~fuu82S` z1VqXnwr@|+Ohp{%!oYZvIgrwg7Rs$4IZS6y*6`|(dXl5XVx)wC_XqkJrhpR-Nw|4q z_u64^Wh%|Rl9dXkmdd-tHNtDt719uLY6aSr(5ICQcVK7&kx&9-_xohQP=SHZcl*W|QpR112H=5=V$^Dwj{hNB!9EW~0+0 ze)1gR5^Xfy3NzXwTGTP-5ogA_t0HIonn6Rhkf;1Uq)7fsKa-<>uA|tTWx_|t*=Po2 zpy(2@YDZ0B+gcmwR*jJ8krx2ln?^3TuD{$N@L2uPns9!G1A#*1+17+RW2LO;x0bC& z8tSN^xBUBcYV$u8(M9u|IH}<)4gPXj-}>kXCDfB?3BXuaHd_h8hUUGwjfC4N&b#}F zqHG9fT54UzxwFP4M0cOkMutHiXbkh&v;1%$m@KRTSt-xVj~26K`S7Ia>^7rU?TA9t zsx`?Xm;>b>a^AR+?K$`5U+A1RL zM%~HC#n&{a+fuY-vCl+YLkoY&LeTr7`xI}@k^w-9$smcQk*vqydv6^~ums>?$Jlr0 z*t_zDho;(`xemXV7KCrd83B65L830O`&|f%UXD1 zZ^QyjpC4>N|3Wp+>};8W`uajew$G4P0xCLIi>1TYQ=Hk>hC)dQ&1rqw=4ymdMfI)20i2qKm7lUt>dG~VQ6LwVHKXk{I%H0o3UaN3( zf8~zS@IFl~67H2|h_)9NqkH9UYHYbhHvuM+Z7H?^?m6Y!N@T?Kqchj*OGRTbcCq0D z2B6A@l5)bWQaH3G7BF*4NAJzyTO8XE!AhYa!_jseZ}6!ssGyXzrlvwW&^REAJvH;{ z-WRj8wtDLebrYW-PS7`>ZAU7X&fc3h{msmJbqexzO3=7r$L6q^ESz~f?3|#U^k003 z`{xCQM;W&`syLUUQsd633NWkhBS7RGGSg=)E6Xj4>nKU+tF}@U-M>NqR^ib0$$+(D zmmm+OXHDn&fmR$MdA;KAQ0hy${%4}`5Ny?1jnv;M1pg(>WmfMDg?8Aux`Bvr3uxIt zkT_tZtT8UDS*tspZp=UOR2sXrLRiK%0V052jqqxuatvuQ<1LM&RtVJO$+A*Khz4Fu z3|V9JmVj&O98%{#zHB}8{s*wPPv)z5#ZcNQ%|iP+dk>Ma zZfw;X(WL=TfgtB!2w9Y{re8IYKvPi>99nkequ5D>AFBW8V<9zHF=v--EoJigALr1voT+P>ozY4pel2DVa(Y{XFOJnRjfrR zDDuN3Saw)|v*3xYwt;d`PaxebYj(sx>tdL1KKvAyaCg}C9 zb<3l@Iwold#~*z|zTm-d>rmz)fxZ*$WQP3;*)(!1Iv{7!70-ft!HKusb+WrVrj9hS z-B4T@8Uz0ZT^g_sK}RNiGo0p>RLo!2ScDkFR(iK#*%E;d$evk$L?mhdOK)^sRj{wH zx{U674!vWAd2!B1>EQ91#K3>qY5G5}SC-^ns7u(DxnWjNq9vXw7TleoXqgP0q3oUJ zUogH*_M$00MucDdu$^toYeQlJ9zZ4IBCEZBjLa6#}JYd@IqeeHMSVG;4yoT!s;(h^(7=tly+o0 zZKVMP1|IQwWHZm)w_UzMf%OFeP=3uY3MJu#f&;ShH}C*eRkR`AC}vq^9cI?Zn$Wsn+M-)S4lse~Q2@OX&N9&?cLF0TT|Avo_{x zo-jnljV3^>!{Tq~h`x`!nHS3!xTUD-?u9ufc@J*0;uB>wn5Y{g4<-2&eQzM+Luzx? z>Bl0D6sk$<6wq|=FJ>9gd=Aa?ob>!@Se+!_+}|dX`v$o8Sx@~9MjO03qi<@xI@Ypo zP}vbMBZfBvdIP?6Gka%FK%gie2q?%8-Vl7P-p8<`&;r3bIkkSXJS7{5(mF@a3Ip;5 zq;oh&((bT>h`$Z;S&M@tvzRJLj7b}n6EOb{+E!|s8Doyh;DG>uj3O7SG0)Z&SKhzO zUy;Wxm6m|aK9rAUqOqM%7GkoXqTBAy13>Ary$(aozh8mwdYxqFW@#iFTCzKkuAfBD zv*?Wu#WZHm85sUd>j{=R)wq_UnqCZ;R1W8+bTTkFXWUhjN~v_tvs3VNhMfrz>Md-~ zm3DlW1&d`ZKotz20+k~mjn-9_d|NJ}4e(l>wB+`_4>^>>tYk!3YYqTOCCS&xjnASG zL{c4~j)RuaOIlIdOmBG7*`+^~0X^pn6~ZAQi?<41HIU&?@re}ZOXh~nL$S1o=%67q z>O3LcC`%Vu0Ia_+SV|z_g?74lvOC``TmHU;+0i-`2$hMV$#bxU%b5Uyltr61D!R<@ zHDcDYA`3WQ(mu?9=*Zg|iuedbBBz>2W#K7FM?_SKrLQ|knUI6epAUFTa<8cdH1QW* zbRPy!JTeZDqrUatRRPkHtge&rSg;S*t%F*CrqBhkoAdHyIOvC)EwRuZkWT!%vw`W= zJ9&ip`*%6$&c$@N6#e)&&@_s1LBLhF< zXJco9CxPDdRE8DLH5~zIbUILwIK=u_Hy!&SbqA~Q+SYsS4u}HcszloSO!hk-G&hm@ zDA3W@n`3G@+GEk%p^D*?>69}Bm;3jYe&V_RC$1_RmqpNLG#owj{Ya|*b4A*u0ZvbV`O)(y93@t_Gqw*Q2~Sk zV8x|=eC8>C<T7n6ImY6=lW>%F126T-PX8(m z9s7yUc4i~BN_NXDHcl16DLgBEz{kfpucfLiZ{jcGfGrdUAFHQ^QoKpVxZX|jqyeU8 zXlK|iir4FilW_pJe8I^kvr1ZtPXAqrCEqGa@umV_4UZ??F4iPd>C>AJtRUiPHwsJq z?6IYbrN$s|*VZ_k2%DeL^O<2OD&;LE#kB`k?#vkprw#JM!V- z$VC+S$J8r}@*wqEN^7F{|&I_d>;_+k_){9Q(p;Q zR0SmO`N}=cgjgSff->gFOO7m1&#&-cFJXi_7&T1mXf}bFP28htgoBKEMlB3~UXtK&~#@}xdle86zx$dDjXh7x`CHLnS)d|0||8|F7Qh`F}eI%a8+g++>eLO zBNyww?wmH2UQP@Pac>2IV}WN)fMK(x7l zKRhcw2=xJTK#;EJovUn%y@8EyrD$VBTmkpuLo7|01atWq~o1CQ%?;{AQIfl5eCr~Fu}1swZR+aOem-Mklc8pq8wMEnIC^insR`(n#1EbJRZRSP0M}1pt(>t@OrVFO zC^*9M%VYi(_e+Du(6|D^`bSuLgM&QsnxE3`i{2eCG63VclD(KKK8IW<)UcoPv=iK0 z$kE^Sq2X3Bi}5l9-n{ej3X#W>B!3(vc0bhPU&gO=PBcje{fK8N7R8x<9S1XZhi;(ENK*Z6% z6BeBz{8QAMeS`=tjo(+%|5m#r<%hP?H;8%7k29J5iK!T+P{4I*Rl8k3{WCz)_|ncp zxYxY9@iYROHXtbxN1wRi=_9iel|S%2hpV95Y?{1>iM~}YE-K`?(Ac5@L6B#cDkyR+ zlOAM%^Sqv8j z%Mh1zraSNjzwjOCqN5YiKmL=drUpH&D*3!%vUq}r(rgJ=k<5#f7Umuq5Ah63{lgM~ zZZsL#vW%w!O{uRR4dQDCuE);Iot-uiJKwLXJEm zLL#X?GmE{tyi~NfFBSWbZDDvC{g;*~WEC=#*@i>{1rFu(ZzRz29y=%xc437xNib}6 z_G49BtPoHkZb?pd3o$Mz-mYe=#U#d_G_pqZwLYw{9v`1>C%UDkH7>k8_g>~)WBcX_ zi=tG3VgMBmxBm%2ESewMnbS2?pDh(4T=L-K*(2ZdvfG22;-7%!`vwue@zK~wE}RG4 zFh)IQGwEK8s=PMNN zcJ`WZ4(E0~KcM;>gkD2;3T7tCqY8PJcPEaBgeHKW3cM$pLfN}WOLM44_hS5i$-W03 z7@N(iGtX4D_iYzL`lI(y)1n;GXDgZ~5ATo|7A9*1&X7u zQ!Qk~s|o*8K^SZfY=(2vdOIgd1|uSksTZX@d_uz16Dz!EEXWw(UCPlBjz_bi&l6dE z7BGQhXM*7xa`v|0j*TW?Oxf^O$uO^x8*Lqw_t;?E*HpUQEEFS5lu(msh0Pb=aC9Qq zK0P|9AcFyGNwl(&WKx+AaiY;f><0bk1DWWcn*Om6X?`CXJ6-bkj=M1qz=P6c1h7bf zE(r#vY|CCFFvIj!jD`=-+iJ7V6%T6h`1@P@l{A33!#yBlpJ6+u_Hd z4BHTO%6G#t?-Wbav52HdWd;O9kw1Zs|4*UlLEPau48utdqA*2BMkUa+kC%_To2QlH zZa{4Xh0~hTD3Rm##$~KUjP@8gCs+(oh)WP_S(fyF} z#7QlC=PVDrHKRl5(2-?M@?Ji8BZM1H-2@h?8wry9k}huukn_oi{(qCubANa0jR~anHf}WKMH2v^b)y@~r#y$_sA>+}oQwX~4 zyu+cMbX&vTztotbRbZ33C1J3l#6tH#S^kpWC^gt*Ml#&3Yk@jSJBY^E1BkgkQ8>Y) zGLH1$N+`XdRfR3l#SF;NQ2{sraR_Pcy?GMHMsn$GD#?J$3p$7hLg7l;wb2-0e3o(N z@BG~8tzvWU^tQ+B18<~s(cKaK(>B&^4#oDG#{FT=l!k#Q1+U{QJh5EnUDO*fiY~|H z`x)z*5^=UQLpds}LbhifLx0fHdG@N;`a>7mJ+h1|yl&=$G@RMS#0%qZ6{|T(q(x2ofC8brgbU)dkthepM)ML>7{Kqm#%^`r;tF@Ab+$ z1dJo`TCbT?$xsAB0R#G5ECCTvP71LmADV(b>>JE(!lGT;vj~7l+;l!(w zhuE(0b$cF8$w@3x0M0QCI&)fxO`XN)WQc_i1OgD}0Mg)r>b+9*mFGdKsup{y=PF6U zTKisft25M@>rf=b47KlU6CLz^8H0h#O#!8w)QaZdRFP$&`s;h@~t3rYSwP^;}bT6{suZ>8bHDWb!n!jB70JR z=Sp3{Y>Ojm++Apmcl^E8*bDBQdG6-H{}A~v$J0by@R$@VM~(W|g(>kt7q7DAkO?g< zW(t8ehmp+#TGLS|b-$bLb$1(FOkHNfp^=ZcE-3cslW>8P5q3eoAM4a@I|{{%N~2dQ~(rc%VvV4D0hj)x8#A23>@ zv*WTVlVJcdRTWMe3^3#B8B5{F(gY^0{ScqkTwwEi=LudRN}p#STUUKOPif{Puz^js zU|(_|eU*d`m8ps>gb_&|5yr7$Hxm;@TIK{v&Gh9qb>MJ6|Vng z)M*^vmh?D5iO2VPe0TVgLa@VNScM_G<@5d@sU<)t@Cp56W!r{F4JEl$4kF<;jUZTW zZbzHQ9%%1**18>^P+n`bbe+p#sj4gdn$MfJMki$N?1m~iu#8;2i$`DR?0n{0I?JkI zjwr9wATLL@hG}wR9$?=Ba>^Qg|7wwHrW{X8{c4D0Fy5j&hZ{X2M}_`^j2@$ud(PQ^ zK&R{SNuc*qU)sepUQ@L2udZNiIn~_u*TWKGR?#r`Aa@8)c;M9&nqD|cyG#DW1pNo^ zM44wJ+hr#^>_)^*pV3UQONoUz5%swYzGoI`n>^_e;9P2N`2^_67jj==u&xfq0NnQu zf25(?D2-hTheGLbEP=Veu8^W!Um@GgJpOf&+_uzhWs1 z-U;D*u8R3xs(KX8{5dRtOFT?v0&?jf6+!~_09-HHq$zUB2j%Igung!qt%;E97 z;X}$lGrmQlbm;P)vUQyd?X6k~ik8QJp09E-i!z=0j(g1qznVQlru%}*R|aSY_j_A@ zKsUr^9&sZ{BM4h01Fq?OBS;J{ijFSY9V{Q=PdQmb}DIk;kP_g=#%IDe+L3rVC@7Nch)uNH)a!OLfMGUrudjN9g4 zh!be^zpHu*kiI9luR)TX{E@ zXZZ4IwZUP>&an9zQUF!-C~8`j@0h!#_nY)3FxfLg##r$mljhw_~P5U4XpU zWN9&B0C76<+m1_a%1JCokq9)dthXbLoq?{a7)@ugJfIov<+H{}0Bw2aXBhB)XD3j{3XZ-2lsK~CbHW+$?oKV{ zBL?Hv3lY%2AYvx-VwMYLN#D3t%*(7OZ>m^w!up~9;f}fGOd=@vlaB1;JCon@Dagbd z<8XsE)}RHz-%E8cr^0yl+$rbi;_?4k1&YN2(bdCQ3>I92{r_%&=#VBo8hLt7g!EU@ zCEo~O&3fbO=CZm!U{P>Lj5Ys6rHe4hrJ(OfJ|j=}T;DE4hb~5;f=I}IjP~!1?>=ZR zfWjnh82to&DhhHscThchbZfY&C&qVMv`tP2uqf%j465@8QL7nE>gW6V+Ib>o&8Sa9 z@#uh(b~IW9$Eg)%7V8y|cb`7Y9EXRo_}7L%V@d`?;uae&ZOQlyxq-evA;D zS`aFxCas+t1p9>mldCQ$)OZSkSZOWSk(A`oVuj7gvgJexn`?^jNyl^(s>E?|jPrF2V_| zFnRL$l?%OADtCv{v7rarqr^%X*d-(GaaT!sgg$AE9CXb^A1}_5^eZuj#ooxsC5+Q9 zJ1q|fB?P*k(?_cjY5YNL(N-cTFcfIUh*YFDrycmBsRnd>ynP4E=L}oC?hl{%KB?xf zrUd4p(+F`uB78}$>!r3A?&iB%sbnEmB_S# zhq=uUI6ld|k>3AWhOv6_oG$(2M#0%X+QmYsi3u0e9jUhiW?&bv0dv=1tc%57?f$|d zVMLW&;uLm&IV~pYbT2QNBy}~pUc?7_uWjl0mb_tyF*K4jJ$M?E8v2kCXDpsxF7G{9 zNCxS2oV*(md_Zx?GfeC?sK;A7^Ah?F{S8bF?sSspP%oYRL?ln(?3}%^AibHGjN$TU zOv15|`t$z|ty`s!{$FN#_*<&M7c?t~?^dc^lf5O>*vx$!c4Uw(Z8|8iiKJ*dEELEKL9mc0 zj-%O4t_A{b|b8T646Q1$x^c*0z|m%)52aJE48ar+V~(Y;p1V?YiQ>|%jBeRAcEfLZvD!Q zWtn78Gxx=r&cfcG=oBx+o8gG4WyW5yB-EOi*QfTMdS`2VDpRkNKD3qjlcGtZO-)j6 zMM>S&3(G0gOs|h-05F9(#SVXTeFKarL9_1Kwr$(CZQHhO+qP}nw(UKOv-ZC8-`u=B z_H<7notk7a)7`1=s!uP}kLQ>tmHYW=tlZ~U;9}5O?+0DFLI3eu?_cnu1UA6^X8QJ6 z6o`2b56S8!na=kQ7RkVc zj`O#3?h#zc5Ah98^pNA&vz7QM#t$&t8DXkv4(I?4@}GGR1DjWHg}Rmfn?1 zJ$v0v$Y-6U1x^4&S9?rg&k7B?1^Os&NL|V=lgK}S{L?f5Vi38*{3pNRQM$C~%iVf- zJxtoC6h0HAX*o#hw-lpM(BGRgrE=J$qO#-wCAN;~xK>b(DYu=8g7-qk6}ie>~sn+pDdZtqgh}iSXP>jK5+eA;v)ynqq(Pw6iPyx{FC2 z)DnzHh)HYq&-3{(nBACq1*UM;lb=)x6jhZ|MdKVQlT$g8Nj}V7Q5sHOHf`iNTwG=)dQ! z40V(}=$@fVOW9Xk{U#Emhc^meE!sVlAVh=t3_Df;Z{lCpoUDwbC)BQJlldO=;L@&$ z<=k`MCMfxR9@dGFl_S!_R2XHv&X#2b@E`%qQ~f0dm}#f0T{H+9^o@fAiv)A4j@?bT z4qiuYa$vg^n@k=QXbxAZ-Fv2^H5-Oz`tJDp$h89#I_E^~)=D3!4+w-He!c)Lt#z9l zMidURr{J$be<{06auZoMY#?Er4c*{F9)&c-yIF~)^31-OTeep_l%0`FSTz>7CDvA) zV((_}1-_(hl?OkP|3Lvbjl7bG>~@DpI=l_m)%|^_)FqfLpxn#<(<3%%gHSUp}kCG>6&cN1IzP6l@wvT%Tv&-ijXnLeSOJ zP8Z>AO5n}O)hX7>s{dgVFng#gi}_GM$3iI`lUc*(<1Do|KHF$`T4x(|9fg`t{ym0I z=*%v`7*T1!Vpa0;gMc3AeU1Z|=0_>X5KbH_?WNJ&cZ2)0vP=`IZf)`@knAFDxxf&B zQL7jOxs&^`#f8yI1|b-po=Out#l|dpawhWVoI0$4FPm}Y8gK|^B%6!5<2_~!d2iZv!@6zE(U$J9e#tPK+tMVLP zH$g&3c<@>x$iV&eg1Wn}umz_Sg>`J3EKt5b5lWC-89US=q*Sb$CyKe10DCga>@cZ6{cK^3`FN+wsHrA(Lv@aI6T#-`n1^mQ8D z|AWMHDqgjO^m>S^RTR|eK37m|dAe<%JRnU7=&QFHj3YFqj-MrUdxvg6llTPIES#i| z9u(oitW^Y^Xm>7oovg5mKv2+_#{lL)4rjXqOy;kNY9d3?qQe@%O*pEmAR9}!2)eIs zbWUGL+;Z~n{XN2LO$pX`rJizAy)&Grv0CNHu@HEnv9@I+n)OCEM5ki^Rv{YOS()^N zI1Hzc=Jz8i5QOs9-H40$$_Mw!tjyopa_8an8Ny28(GRf2VY#p9eoC!HHBii-e|*aV`z zfO0?kPh$*7g{9Q3liZP3rrcPVbtaTD#^|!mc0#^=@^DP=CGkZGpQ$`;h1KQ9YFl1S zW!Gjcl-S~pD)J_fu~TV&3i$kg5y3-`XiW^p=zJ|3E zGL0R1%Xj-hC{J52Wdp0XxA?HEyOo_{4Z>34WiG(;ug9;;&8uD$k%OM=S4J0>5>@UM zEro!mfAei{-5@ESq#hc)EB+vJ;2;dqb)js3+-QsL>4D>-G7pLHD>6#FM_UAOQ;9=3 zvh*D{MpvZlJYX;P3{FC7a5(v;1NH6bZ&jqK-7K{&%$7 zW@R8a+MS;Y@>ui(z{oEW5u)eT_Ir z(`LP9^Di^zvl33)nDNndk=w0ti5tSb&j-BRO^Vr;ku8=7hc?nZGFk#HTmdVxK(wx( zEpHnQ%<+I2#JC`yOyIRTo%{grGf3+JuXf`BZUDov{)NEiZ3pXj$yRnbxm|()Y&SmK zU1Nu7gH=lN4d&u)FrJ#}2aj084(j<7!WxlunpAkBVZ{L6Ibp6Z#((*a5}QDZz}J;# z$z!175BFPh0=E#U!O6WUg7l(^>_m>~cHmweFTpg+@{|%*GR~ZXYkL$Rk8C;?Dm5In z+JE(C9H%?9_GfF;`YHHqZqZXP&s{w_Nk_fv4<9RUm(2YIBR3S>`?2~>f$Ra@EZA6H zfdKsdrzZXCE3U-#mYm(!A~+P!Az%*I4sO(dc74CZNtBdwil9c zB++N&juE6_sX<*UmhE5jXIjAuR^t^8f3C)=(=s z*5cgZ4M!gCQ!dvoRBxX;)Y4bKb=W){kyjn_&bh0G^C6N$+EXr1Ou}Me{e0FprBzRZ zh~@n>%GirJBVg6b44+p*KZ{dqx>5OcDdXj}uS~2~$=@nWWHPY)xK40xH#D59e2}r>fepl+#*U8MP66YHgH<1BVQev1I;>Nb%xr{Xtt- zkhH_R^C;i({^`u)gU*#a;*b0*9J=^2MBan@i{~Lap7FNc5+;YZr;+$)QY4^Mc^U4pBoOk(vogrZf18<$DXf~_nW2aD6FGmAdEu6v?bk2a?d$`8 z?`wuH<{*9*zZw5JQgx;x7%SGcS&Z6wHoPL4CX+yOlml-Az#X$!0}#bRn#aZcGvv*K zz_Ew5EyOi}a{^`zh9^98X>wq;G`MD+v_SxJTD7;`pi#aTFp|5@ZcMdWYhG*1*NkHJ zU3*ZRRNw);{Y-P$0hDpfzaR=iWNhloWuiRO^h|e)2I90{F*Hd_2B270&xNK@*!(_VCPoST=q{dn_&Hu{5dT#ZesQ>2 zFhc^3!G%Ja#6W>Ed2kF^&QcjFNo&=PcI+m872{T6dY=H`iw9$I^sW6Bc|5Bu-y`>J z-=5<@JgX#B@`m8xkiNG7YY|($bDR5|o%(QzU5JSNk%$UAQh>6cJ-%PTHqiKZkdyF9 z?~C%fVJFzo9kc&;%QZ9%7BcKKUvwoG6nq#DsD_}_WX zSL4C+A|`#e!pIO6G!L_dp;HNAw|;28P%ynY{2%4~97Bq4&_X)9?kUFJ;B!-HJWHeK(*b%vhGQkX7we zB?jm*#ZbRu!6^ILbu+K%LzI7VYPF0DM#=B>DD69s%6kI$bgOkSo%Gs$7sIxbd{ERf24bL&MGE@x||zwTtZC zUJ~dEo>8)md6JO`BN5=OK_V(?2@S(=!|qCgB)Q(YI7Py)uq*YpJSvR}@(vsNMx)*@ zALMT(S{!LdpZ8Miqe`Xe?~Jj!Rpt5JWp1>9gdArS#}@yTvXQcA2VTq?n%s!QInM{* zWhuh5X4j5^MIjmF$G<605AsW#`IlMr!EWC4551d;zgBK?&ZKS;b`JM&0!>B8qSp0K z$|j}pdb5*A&moet%$tA>Vo0PS9RnYpjLAQ!YAk5eHT-C|`Y8sYrQsEUKhIcD9R;G? zmlxi#R&iOjPLdIsJ8fcFVWikgVyGzgRaB*mA&~XbD}<~Lje?=T@je= z8iySR18cRPAb0&r^aB1Z(Z?8Rnou&;ppUl0R3$girOmZf|G~kX51wA1gMoZWce%Ij z&SF52B2M1ccQ)5RGes-B1WdjYUa(N6M62Yp6-?~?IRxWrC?PfmLM^qP#ctZV5@}<=$1w3_{?EGA9UKLq;>G z1m`XHgCGl6+X0DW6gJtH4FDxvV3%>(A$NnL{*WisKwU73C)(|{02DzKA-Yk?+XxY$ z|Cf_70I6!F`ugcc3fVrHz!hIl>(p9PZkk`<_>BBnGKVxYisXRJGVthpx1R#EISVz# z%N>?&b((lI1GDFvW40#@`Sh;|+6JU#U=(^{Qpn{_6(+U0cNmnHi2{2Q3BDAVa>QZs zugl6`&Ke5^S1OPnc+g;vp*?6$5M&@Oi2wm>o2n%gi&vUD<7ctCE8@C`Q4TSzJ)<#NyrT=LSJc_f?PnKTi5%z(tSMliio`FnHk<340E(~8 z15bZ;j{dG<_jkTZU{MRD6F&R4wtVD0edN=(wfvw&eo@MPQMmrNn7*t%Ub)3r4*9nF zt8Z)hLkass5q(;FK652s*(_hVXnbVdwYC1B^gkAxZ>u~0pz6MKxNmKLQElH?(zn+4 zt%dfj#UHBaTZg{<18^9QH>w)G6mLUUi0Pi+FVUrV(?BM6a zMqzP7Xlp0gQD8nfIQ_G;Iy0}@w=e^_HhG`NxBZ7qOyd+G&hHXt|@4Uq?Jr{-@lg)muOS)Q$A{b zrk`Ku^I+KY$Ng_;rJ>#SlmBcXSwX6e3Zzoxo0Z>`7abl4@&fF_LJdc!0$f57!zs5V zi5>%o$L4y0XJC{&d5!GVQ20R#csQO{Q-_Em9l-|#X>u;3^x5-C5UHpo1F2QW8sj&g zD{WB+{Ox@N{pJ=!^K{G07d_#=_30%(-3t8i0bE_7{_88aK8x1NTy~DLeBDvN9*!09 zs)<^qJp8H`fXQM8nDH<+o{n6Q00*v;-nK7`84Gp=)xdP>M@=_KU(eHF(#dHah`hNcxP zv&ZN#&}redFj@g&3{4E2hGEukcqo48>k>;2+xJjV-qWu#%aWB6*&^q7`j7Oe`3F3X z{{bSfSnz8Qi0Kf77W-dcE8-O;I173VN)(FY-ajtEoDqIX>xFXuCAl7@T5hi7Fu&I3 zJ`#(?+9Nc{8ciS{V(Sv0_wM7G_|?_8iY~*kS!S|$t|E)5P^x9?$^KK&!EXkd@lUj0 z7446-2RNcdb>#ZHa-xabs)2P*bPHO-;Oi4#(KJf5If{~Fjigi;JO0=9MalI)-9w^PUR{DAl(5xc5u>i;7I z=*%uZjBzTCf$`yh5Zxm73>X)n58F9t@eNc1+twDk0u+JK0CLXQnAVx5W8;hAA0Ca? zmuJcw6h@O<*jDxFB_CH|Z0-OErPt(xwFw&i!nz>9;-n`TsJ|kx{ReMPeIP1*b^&e# zekrPaUY(V~7XE32YGkdv!M+n5y(Dm2SkDRnl z8cAWQ1e+Pl@z7tOL7Ng0P97y`PB0-ABx2iaJg#ES6gb9m$fU}ayeyXX6lkbi%FG9u z?+x(iJ(}CZWQZB-YfIEn43WpDr3(o${;Y;J7B36w7wJlQqW*$4N5mRgHCon3ss!ViHPE!17q({`MWU?%CZ{n z#$e0Z;%xmMNVnbsGSv{!oG)NnwNG*nlXfPDXTaNZiuU8g=p5@Pl8hpkg&0@I?MOt} z>Edh3A|~nEr>>bRnAz}e8*4|xG@pK;Q1n#R()_`CJMi*yEwKopZTu;KK_D;>!uNM# zn_8`vAAvEoO3`=u`;SDSNdmhTEGk4-{qv0LdzEd*BsD7V#m*&r*4)+vMtWQxu!>h{ z7O&p`q#)xh)gcAVIJoliEgnaAsAGq#CTg}fF~2v(D;)yE`3x0;IT@Z}G%6e0P~89% zei`NtE?U91Kz~o+y?mqaie{fvQzALncmQGmcWIQe9=?irJ8k}RKgR2jsRgnY^Pvyn zFa0Ob5vJfGTGJVNPk-I#?Qr|{n2pG)Bcqnr?jQh73#k*--*K&PE6G0UM}+4@*zC6@ z0h=hSZwfkX4Fj{!zD;P?)0g{WhF|!fUI-;ic%%kDH3OJMckYq!y`9>gjjHfW6MHYT zm$ua?aEhW$EW(Jg6gj_lYOMhO{G|X_fDhvxgCerWTq^Xo@(q1#Rt~}G_0PYrF=D&j z>W%>(URudg`TG`^3$$Ov7$5Wb1~zT*uSfd2R))^xe2rqb-b|h5@l2SoQe7o!`UlNX zKJ7h=JKzS5Owl>qLasA&ren}f zB40i;_yDZmgTO|WPetx_Y^wfdjLO(a>&Ovxse5-~U6b5z5|ootq>aJdg@#hXlENHx zmblGZu@0&xH6x6)dXH5lF1m+t>uWth z02E3YFr79+=>4=3I6tXvUX0PCOgK9pkLA`do-{OX z4k9>)8iUxqq^5TD(ngBFOXqPqAATe4)*CxR-`kjeT7gq_*0f4o8w*DewYw@{H>D!z zD~oC`7=c{GE_+cf+%m#}CEv*Xp2577Xl9lcw*vZ)2b4z~$QF}Vt(`SRr9j;4sd_4>N)&94W5Q!L?55U|tuc#LzZ9vSi&l#p)Vx{95 z`b*b4e?q)IC%el)$N@S;e0{nQQ!{wUCI~##8Iy$0hG+iAhrAF1Jd*HbL96jSwN&fJ z^7UBx0dW2}%ffYiL1e!ah0KtkR)4Hb3*k(lHALc~mdC!Ev;ZQi7XmdKpRZ)Ja$c;i zrd~T?PaB zPZs$K!Q*m#=I|-+7)E_8!ExkV0U0t-`|MYV;4ppzi)`=mVSE22pNjKS41@pq!X3Sa z^B9dt7F7N1JMmgFzFX~|Gc~S73#xbNfMMxx!b9&(iE+;#l43Oe(AZ>q2WOu$y4=nx4}nz zu_g3BoR9ddVpMk=#-eD(l;Ub4*C~}5p#cv3Rk^8rYOC?nWSR^2IqU=w%AoE`DJ;Zvi`N=0eJ@>cmYc)OU%n$AnA-5d=xH(IBo6(+5|R{%JtV!a|}h^3TFfeP&?b^7olGJQXc_U;bi}v z>x4pE5^-8wLG%xnRMzj!jbb(57+=l@)^futEH%pLl2-_QkHHvlFvYS|j_8R+s5jk$ z;1(33sB=A*!rLGk_mH^td{#RjiccE*<2$BT{Ni5z4L>x{w!q6{dLPTJ z=vu`nXq+3(4HCeSLRJR=Rsebqt;vxCa}O02DLvt;R{QuivVV?AB+6nF@&ayJvENsY zDi)L%3q%1(66o6W@Hi5Op~G?w7=C3h(Zsfmt>Cl@)NA>rKBCUJ4&+IqE7wom=7u@; z%tsTB=E^bEG}{zu6W-;SC7V64ImRH%0MgZ5Hr#zFl@I<+=kyx(r<_a-@#F777Wl{< z$KYup_POo6f&st}-@go#;VDt9BPBzD9$8U%N?H-a+jhVYFn2 z2MDP_(Bg+p+DY^;e}dd;_u=?Gd+vO~3lrEEBriBgUC(0tft)obBfE)$F0pLtz{N{s zsE-38B_8Lo17x>PDqxFsEyW0A*FW4kUKIN-oKySshh+D{K2z@Cjhduyb=H_W5%K>X z_H$Ye%7oFH1?L`rgb8plp2ouMA#EB20jF;XCo$qI+i4O2nd{@Z$0cGY5;EwD509TA zDvIj&ae3!He^xvqd*0+HzMI8;>Qz{6Ht4s)hut9I&S3D!Y+bm6$J8A>h|UNjlEfP@ z;9io&mhXf=cL+2oA_dM+jaq@%ns0>rJF0nvlA9c&BMLeZ3+ePn%vtSEj|-(oIvQCF z;12>%H4PK!#o#1VVwe%kXMaQvb2HGb`%Gw7`S1V_PBD{p?QMikds5Uv_l6%FC5Lt) z&RJI>x=yq>lL_r1U6E2mYy=#J^4GX~L6iT==djzO_ywDM*mqD)-*7Z6>V5ev;ph8{ z60iJG6cv|$DjzF;>pCBsS0!?J^CzSe>Jun(8{cFKC%I<zk(NRM=IjMUUW}w-V=^-|=T^ejQ~5>9>n5h0F|zqc z493d?u-*rD1JIa$Jt@CnMoGzFn4~eT;R?vf0eQ}ldic1|u8?Zh!;7vwNItgI2q11F z_9_7D>c*C;k;BN8)gxjgz+BAO!VT|!`GXo{B)WQ0cEF=@2MZ*3HmA8mACr?{7bT+O z$k02~y3E|Rc_E~@A4b+xR`5C~!?jmYoWsw=vgg8Ile1$0?H{UfQ>N~0Q;u}ESA?5h z29K-}On6-dFE?r&D870dVyV;RD|F)yJ}SMYYWnN1bK9CFP zLrAQLgePGK<}z|ajxNSR-7Hs^^4}g0nwhd1wI4odX=Zuy!%0hzG7>3vv5E4F3&%1G z179t@4O2D0t#tdu?w5R0H>*4MkA4q4W)pAbpsV6AXv(+$V@ewtTPjSI4J-ex$6F## z>&D(UK5E9jDpERu;|BoG+6Dyeo`45q`oO~K#snlDH}`T$?w&sml{A|ko74M2}*(PtLZ zeqr$JJ#<9(z~N!gxvTb{E1mu@EMM|0_sj1TJ6BUGu7_FtydM3XxtF-0kcfv%W88=| zOb)QGI5EgnDSev>7fVFsK8PLj<^v`d&}X{h+grNRH7XM>?aVMXmyjiq`U)ZpOY>VD$>K*3I_5dWv+XaA7hIRjIlb%q8?-3zWrRJ~ z8UrRSPW*nN1#sUnlS%Woc5@wM#hIaZsC8*nud*b;>h(|7lt8GbGCuzRW*U{(vC}@; zjXuV4rrD=)VsOXl%h(R+o#!02lc~aQfQ49)kH$)kWTP8yI6s4otMFkIv^(rM64u+s zK9%I1&v%e4tR?R^)l9S?o_(JSDl30U(j?@K%^8^A1*{;-e~1||a4S^ic@9_WM-Pky z60scb$q~%I4z|pjO?U2e5Q9>Q)90e#dCtC^Otgezdnj2YJ#%{E&!@5fX~DMg`$9mZ z3`Wh<661r-dhV(S2~`!yXTD^_`s4}>;7XSKHXt;O9iT-!T;aZLn_6dAp|Oa054Cn= zAAf1o=C@y?0p*pylKa}Li|wZHqo>tGqaawA?i&Qe7QS2MYp%zOaI2UbKzE5;V&M1C z7#->Ig`eX8m3TBIm~Hr>rXlCD&|(w)R5q#rbY9#)s-OVkyrbj4%xF-I*4K}>+8z+M zTNzJo-be=E{n*KE)E<6cb*J9Ee8nv%NdLQOY0Ss~0RAcn0001Er9eOc3l$Fak4G_c z@pQ0qU?TX(1N=9Y|3@wUiD;G!J{jc(W$ROZ=fd8}png9?3 z017*q8oJm!aS=!vIxCnu5vZ9uIa}J>5irtmGBD6F{we{${IdiI015&E0Qjo|fGi*& zA))ZU)?Zx!6u|$d7U=(}1^&Oa2>}0jUH{;f{yidjKU^<>(gn-})=uRHD;kdcYp7Xw zcn5GR3L49j7kZ<-$w+E)WHe0?iOIdqa}O_yFss7g8jewlVICxtohSC8iO8TtGI5M{ z4zn9j#}@(j87Nu~$5}1=M7mG5>3!1LFCG9x2t^qmp&TPK9l-@zCaX-lHq`_y%SX=K z0WE8aEZENImi~eLxJxH50x~5FFV@x(V~4sZH~`lK7{U$?+xD0I^c}De89$8j`Rd;x zX8ApQl=hstGecb!xCdgEpPm(&OWfG+_M&?$NV8~JOAebJq?1+LIn)CrX)rbS`Ajhl ziqhy~b4m z3#3qmmvi!75XOm~v~Jd_IBlY!YjQRs4%^P;Q{EMfuza^Wu<=_SeUPt_BDX*Q2i>1< znyqmD<7Fj)3NZ~RMm;l0egXU{%O<+DJ#Py-kH2iiD37yXW-j%Vnu6E(zLigFMV-77AM}lOXhke`RQ3lz3hXl(;%mlZ#@p z!s<(`FGrVUB4U2M%V&hBmBWpkG5fUP->x{2kTl!%umEeqN(Vodtpomw>n%ocDx$7y zfzRzCqkN1v#tc+V+tH7!C)=Gb5R!@O3?^omfAYya|=P>5&rwkKa;A)pMHVr51`A<504%p=@H zB=K~_T`ENqsXqV>mj)V`81Fv z!}M42?+Z9v6`%1AbSLpq8HY8~^^EO}VvQ!bn8Idh0dHjQ1Ge7LD}F6Spp!?%OfgAp zqv<}!fc-kiTS8df-F~=F!T;yGXVYK-`nvG=i8fGuCmz=qqIV}DU4FzW8&F2V!{dfT z0VwSeze+kWGI%`pHQ$QdTE+<@qYZnYSv&mDf(FxnsbW^a&&Hj#fup?3Lole|?%j;= z_ZfpES zz9_!yBh<0>+Y$5{?%Zq^N2Z6dSZ$mP%ZBPN+t0alr-rHea>~8`>tMVEz^bPOJN?jE0rr?Xu`<>XVJsm<= z02_T{FCl@#!Z6-QnOgb0RX$a3`%;g05=4!0&lr0^u{72`K4R5+J)he}=4Ls_r*)gr zfWeL-dJ0N!PuR&(nu>c6gbDo*5_cO$IknEmmfC0zb&PzkZ2ftE@u1qT@NwCt)U3YS z2VLA;G+TU(DG3ggC`bq5cNG|w!$mH?7@A^Vezt7!kbqXRy|8jLwml{g9E-n>EF?BA zZo}zfc=Z5=)TH2jzTSwr9f3wu7&mf$!KkwS-}wAu9L<%-uQ%3UvaJLoJi=D$T3Vlz zpr=CHvGGl^YH#?xe0ACwF7Nd1Vj8fyC9t^W$smuvO3LA?cMnl9?o-MH3*tZGpC8f? zdz}D&>FtlO$-tOK7g`+1f;Ic$3p;r;^u`;Tt?Fzj@wzbLu3h5?<4@#b3)sLLXUuBfz&>WL@g9!Dfpa$Oah z^4Or~mn!GucM95{tpqBVVy1DuqEc0nD}c0a5TgcwT{hE^?`hYb%Qn%}v+4V6T@_7m{W0{K9U+{3$t z!}4ojU;8ry_&Je|M`VJ}_a&PFzz{-FzViVu1sEX>guBckN<_C~+Yk+xUgNrtSIYOW?h4M@;r&42Uhs>zLi#WFl@^U;fslZ?w7W5C^5xM0JM>s1 zT$&^_;1!|GHSXLr78$s5sb(&wd^CURU~xYf7I;7cRWT)mZ($ zG=b1e%&ASYUZ>@6rxVkT^qX5c%gq%8l*7ds$YSc#RDB?3%ba|aS0qBaBFaZIEz-|= z{CpdwLXpE2w#VwKkl7Hz<;dWq#GV`f5CUHx9+Ou}*<3~nR|)O+ zM$Q#t^Ps1#I@-_dJeW+K3bw;QX&o%pXg;DbdsW)+hYJ%RD#*teDqV67+CjSJqdKuH zy2HRIZ`3yhCyb*%eo)vv`3@v5VXGYCTQ0=r*m0=o)f9i4zW$05Y3L!UXpZ_b2EN~U zS}$IjL-pVG2m_RP6R& zON1Q}oU=KVxazGb6x>S9Hq*SJmae&wTtrjYk>1vMg{M&&*h++%ft&LY4qD>3QX6`QE@!_A9NfC)G^JGM>s?eJZVQ)bXDNAYF>e=%`U0 zo@K*p4HD^02cUOm0r?Gn!(vqd}9CEaNFR@Z%P82_+qx3g~XW3EDoPVivd|6kUNP z3L+5cG#G%JLNeyfva-uW zbJ>SX^)}9{KIO#a@>QH8OOX6CFlo7;#)*Wju|?{qpa8k1M{-7*l9Uy=oi7{{D`QsR)D;OVQP%Ip@khMzOHr?6J&s+tL3H+sFeoN~mL zNh3M1OL6wa$<^ZQk4+ve9gm8)eOqcj)rnXGAJn!68a&ulAnQIp`ij&7$|(@DiTkV; z?1I!V+7t`G?}083mpr@i+JP;wyEOfl77Y1m#8?O?9C=d`rsUxOuS&OE%)#nQBywM- z_tvpTA`&96wNx)99;Bj6yy#HEpkfN`#&1Dzc)JIap~fxlC$NhA?NGl?WaM_HB@p<* zY`zEdos9|rv38!W$OU97J|1LVtXV+8e;nH*zCva<7a#>4yaTh|iz4giMqOgdCS6xp zeE@egUl{gJ~FQ4K~%RyuD zICqPM3u3UcfU6YY0@Py~LDB&w#5TFY?U)FjFQ2mjmui;Ne3^>7UwCHt>7Sm&b*hw% z4YS~Hl0cd#R_5Q4yZfra#XDHy;JoM3FMQ&zJ)%+1O3uh5Y0kKdL3?ZKFdpB`X@;6w z8)Dx4C3wA=Y*~4}>zNiOAbeAS>Z8O2>&eHh1_S&{4iqj<1Ef{NlP(XQtBi`<^73*A zgxS9kENj)AQ-)8*RVu9cq7d%K+Ayl)Rcx(oz?CiZvD*6k`p=~ z=_ggSCgV-9YE8^l=F^F7cPEf1?FAW3JacZ84LQY_f^9OdxJ~Fz(U14WJyWs>)CF17 zrak8wJ~m6&?oc5kY)A=S&vZnp>_Wu{CjdsLN^=_@w!###2BYkawT+3^n0037vkFk` zQNMHrJ9HUx&dj^ngw(Qwera+S94p*?uf6(#RvSR6Y`f@wE0dJKxb&lPMICT1P{ay| zKYx{g4C}obv7C-|TaiE8G&Z!cdFUn_6g74(<~Zw#sz{O6i}t5`M$QiECOGbJ4|?H@ zn-g5l8W6v=+dmp|tVLFpWR2qkL>RE<%FM|75Dagnq- z9;b2xc!q#4?Wo=q-Me(--DRAPtk)DP9JB=S5nNeILQaBlmLRbB=LyWH#Wc1oo8%oj z-8a!6=F7tG!^JObT#`11tcl4dMLz+QDdC=td)U9Ncb$EC_@F3SG^*C-lZH&MR z(2x8n7|QOS^jNJ7g2>5YNt>6x4_zXHwO8>*O{UtfFN}x3ia~EqsDF3kN_q9o68I!f zUZ8@73*gg;u>~8TasdpYFQJQxX21Eo=!s%E^fmt6ZsL$73urW01qP5<`4hLzqiuW& zsG5L^?PZm{BkC`ptFWI>@{jz%XgC!`5bQwT-7sF&JI0rdI%&lE^8U zbuDMV!jkXi(c1&~m#fbCGq0CNU?kmNvlgM(Z4inr6Bp^! z4MCQn_iG%KG|C^zfWa%{PCUXd_v5TvVBM7@gly;Rs@76-1TWQ^4vgJcn}#*zUg z&PqwHadKoz4CsaR+ArkxY;ERld9{V-%subu8PA5o<+|{&No(E#!EvqitN5G zH|ddggIa@W-+UiBQ5TEJbe56VAxPTXPY6C~oxpEq5!Nk&BMfgzfH|oclHyQ=+_b|p}8l`kfGG}fZ4QkZ9)dH)O2e%e>SC8|EJf88SqWZO_aMg0KI)kP9( zCF?qO>*|-E3Ac&X1dojo>7@ILxM^}${(Eg85lgoTV|E5!`bKsTVx z&I9J8RWu&*_1K1QNbX7H8^07yZo9RQrjTa!%Qzv!B;V1+6txxhnxfcipVVX*`y-R1 z22iegNO?1kof#IqcHokViI2OTPTYnaL#oWPXIdy#3hEj(6@i+k12NTdyST6&Nh3lt zAqHE1z{e}k@l9m$(B zR@qTp$CqB_Rp-+lLpl!YjC~=~L(H>>kL}jaX;2Tlike1P!#WK@TS?=;4{#wD^D`+Z zrw`gkAiQ5aA+gqSW}{-`e=?V+A(C)@KqZ`_No(}%FWlG~8)9gDoWQyXIesOM%4s}z z8Q@>Q{8@PK@$Bs?DiJ-`GepympRJPAVDSm&WCf#! zb8PlGE|fsR=-}E2$m3}T@OMv4D|&JCDbnRO&jp}TV<>kzYkfZ_BSWNLJ$8+?OYBio zI=GW1s_C&+*-(N?3t7H6XbY4ZM_j=$xC4d0pZb6B^-Vp(a6x!$+q>`Dwr$(CZQHhO z+qP}nw%M;~nx+@+Z#a{jnTL;6V|Zl4HgOHkG{yQ#@6AHH@RR!Dl2}QQY%0xaQP4)y zhwqdEVtP5eb(dh8Vv5JxIZ6sOQ%$F48OsBq3cAPEnSDvhXn%qQ>JXlC*6pcKbJ;Xj zC?@zwqoM!jYcF?}ZZ}B1%U~ye;#WFK#X%QaUvBje=0W*-lf!SNSCALNO2Oq?<~t^v z>#zst#Fy=eGpz0n&tD{I`)-Dx$ebu9g>M{0vK5wfg2;6f@=i7n%{XFvf`JHkuGD~G zy>;y|r8Y_B0FdMH^i2IO(x_B1BCAI{icT7jDvv{>+*)_J5*_TXTq&fQ6lq@a61+Jn zhX55HgY&#KHMV57R-+pJjwZ`gtMaZBgB)Uay*a}KDhR%WaE4u`p+A4e#lWn6*eX}-yAp?x@5HpATMvnOiPwiw&**NtuKzDRQ9ay{teQ7HWZ~pAZ~1R?I$Gk+Aj+!njF%*1&Evg`w#l2pu8x!nBC?WnqE1LYTCxYAatsUbtLz< zcQ*zEl!GfOIly0muo!U!@y%4oAeo-ch`t$(cced`-@S?>A6)I~x$dUXN6o)CCGrV+ zer!##$8P@|QaJ52#wW)~vPcue*eJWFE@vGl+{EQrgvrhI#bJh31=P4EWT_MwdBR7l zpYmxh3_Hs|Disu0MtjIr(Q_EGt{&^^9vB-S%;#lF|25)7Hv0lU*t2R7m1El^b4 z1KPLRu$-Zz!1s{@h>t6Tv66hG{)zU7BN^kO<{LZL48N-fFoaaamy@z7}q$ zwu;-?pos^@*5O%959?XvIi>Pg^T<;30}lY0aJ<=wuFN3e=}{=A!<_o!6QW@U0Dc!f zFVL`*=r~u`;OY~hnwuhy zTK_97Gvw?s`pyQFV5xX{J=>EV^h7czB~+y>kTD3{dmK{3airJ+KprLd&Yxs21c0+` zQOsixG$9DRYoz9JaZ7v5X2+=LBig!eIEyGGfs6s21Ms%JT zBpGBsW~r;}&QY)Cepj@#yDG+61cacC{k)XTIjP=kMej-$-*0WanO}gq0~1vzKD7mL zm@OjV;c6ZOQ?gnMl&`#wb(;pPgQYH&D1Y_9QpUs({cy&7^`H>^oeI(#}vCt#R!VjX~U$U#x;FV2Ja@iNo9TS521>wKZWx z!s3`xaFEe;Vhr)l`G`q;!fC$;@re7+f{9C~Wn;g8g8HI#Un-Yi~> znG>(?pg7G`N>8Q-#CUc(#E}Zmpr#{h4+?!{0)Sa0`e7Me#YxQjPWiT1nh8|SBP>zx z6W%GL zgEMzDyMoE=Wpv!m{zNrLj;jBAJwl^lIAs4E8x)M!cmB7}TI@nqOxJoZH+qJo(U|y1 z%42U+Dz+d8?qNb6t6t#O)InNQI&b*F!e?g$&~HacXvtDoV-WSba5Xr)+E9q{!X16A zyW2G3E4C5uUMX4iTdsC;Uxo>^#J>isl!#RrE$9|e-6CnjiGQ(fg4Qh3uPh*9T&bsz zL2X86`}nbnz&C5NQ)g@;K$+o77ci0N2u~OTq|rw0fh2nEhe2UodDv(w08Lh_KD!T= z8Hb9ysxZKwjPzNP?HH~%wuz$MG3Nt7X85$ zD(Z^|l2yWrMi`~Ttuty1ce+kMtP258YM&P8aw4uZirSAvzC->W*TeV3cRWH=ErZ`! zv$$}HOx7w)nA$_a&E})9=$fHEc+aMvzloTiJ;K&(;%S_BdRO;M!E zr-YYt!B1#E5kNSKXb09QQ2?j_1bQ~`5vJlOVsTA+qY#U3H!=rCMeGzkfiRss<3j9G+JwC=klTYE$9fuUNU5|I^fmUqAsn8siG_)&x% zC*axUrIK)MQrJ$C`j2B>Ms1%AzT@YoY>VrENfOU|q0b6gfXF@X$=}!L$tR)}bG}^e z_(*y#fQm{j=T^9)0n?k z4m{SV746OWX#?Oosyn!Xdc)6|y*SeP3cs|XGogi?dbDp?P+b#td`$^!KOl;oF;Qri z!x`BFT$`?wf*TG5kZ_1LY@2}rDOSP|PPz7w`$l390=gc>j)6xJVTTFyFq9m3i7vq9 z#~#`UgT5a(qOI-9Nr%rpwt#_QSEs^D(aEsm#&dd6BsM*?z9U;)xo;uP%h>T$Q#g3- zSqea>H>=3ZC{Q#@TX%*!W_=W0p&5Jdl4(9L7 z69s624tukx2JSKh%%D|adBL@T@@Oa#7jNT1wJa|OIOx=$?4afzc+)@2$A9W}fR(di z&0TESMSH;iib|$2h>RkKj}L{tRq?g+pWH8cN?2FyOWzPT5&+K1CdgX&k~tofM(Yu6 z->Z@>Vs+h^9pRM@GV{FqbA(8#&pZD(>O?9Qe9Ld7fpq+x@$hW`4K4EaRtXF2R6xpq zid=k(kI%V$?R|T*8kNhD!s55VHa*VpjH@^Or2Ac6TNJovd!jI(mxGAe!tbB5ESmvlNTIdVDk^eU{sWO7YzXh15<T~4WYIy55%vxrCd?r?#TKN#Ug%- z3mi+;>4M&`x=6-{14(8Au%(N7IGeQ3@7VI6&vJ8s|8D55PniA@` zumGbFDC2ibjjrsEjt-O=3iokg*C2Iem{?m$7!nOxiM#gmb^sKyOEPqU^}bRi@txPC zBkN@)3szx8m_>LhcdUsuYdt>`aFbS5Kph*03x|SAtzn%i z+E^wUWd{M|z`#)aodVnn6RaKlq_R(inU-K!Fztrg{u)v_&ueS`4eu-_8z=w_t zH9G}Khw)=0y6Z-KK%Cxd%Vgr86Tql{Xu>==^vP@g?3Kr4I}F?onX;H*n;}9h3Onfd zk930U**y)HXo*6o8tfYWm_Jb`T}9egjSrS$C)G!#@X3}z3JgUqKbh3@Yq6iff|xCT zCD{k-wDa4V2j6UAwSz*v)v@o&v7%OWc$bVhwzYEqxx=xfm|%UzI>cUTwh3S|)IpIF z5a$NVhxc{uhXnx6hjF)Y)qaA3!5lc)8WFZ8C-w}=wRbrGIf6=(n+-d+DFoDLfT?|( z`Yq=WFg8*->;YsWue&#pMPocu8(+;o~~6FYO39HVfNPRe|YE^ z_OJhzR|c9ufn)Vo(f*cOjtve>gfVcQkY1LaJD1{}P{dI<=&_9(Z#2!A&H+<|lXWJ@ z)Oge`0Paz;{c0XESefYG^GbO!xeV=TqhN+=^9qfmDLC6o;0k_8$5qXp%_Z&smm#K8 zzX6`{*6`hE>h7Ta?B;*7!qwLvANm!V2b-MlZzKf$g==Y9PASUQ^h?b22R35Ux1Gv# zorn6YxjPQ$?7awe!@Gik<=nOX?YEa#67uosB{#R+d=E&)({pXOS{M!p!Ai0rxrBXS zZ3)WVHUwLM%|rT;0@(ODvUspMlTot$ZV#3!%IKWPzKt-Pm6*cmKy=WR0q+)60^1Q< zorOV+9M!cmH}XK;gjw>1wFgWF4uXQ11kF-=>JLChd7#ns;X83VU0!bH%p!ucSvr?` z?OlY27sQ7>L<;ki#~jE z@-S#ZDI5jr?fG@!jk}&#QXG()tgb>HHnmV=}Bq^vCq<+{t$DB?G#*hJ**;GL;!7l=+DPwI~7fk;y*c$$)#lYu-z~(9shLz zmmq5?C!nhSdW&rS+QA9iG=ol5XYkE=JaBY?=`{2%9kWusrU7kxG(+&yIRx4I&CQ6A z`u+9pO?uwBCx!VcyddVUEwwKyyByqr{KJLaJbW#y76ekU^h4f|Z@3aVO4z2fvu7WfQCDgsJlQf!(zl*ZzBJ=5Ov029E=T@@ciyl8gK^eGJEukT4%#& z4>`T;8m>H12#*BhAn)s;)=u-9$f2We$PhgIQ@VlxQ^?cxK|A(vuH_!MA+t#t0b>rV z0~^qPJC!3k5l5a#fO_l>osjp=o&>06I9VLiP{?8RJA#7z@q4!+*DK|na-9dR?0t=1 zUBm_z^eqfZ;meW?`~XH#rs+8dS)fg?q;4SNbQJAmB|X&-+`SEK`h_fuy8W+wwO1S+ zO;BLNV8-igNlpmc1o);_ZBpZ!m%8O&^Q^yb%!it_lmCydvbvunLNvZovH!2Jeo1}S z*DZML^FTwB^}a-MVHP2r@lf$%uIHOCWYy$Jjp`4EM#mqxAyFPN@77d&$^5Fya6?rL zH4;$4trys(?m2kS7_d=XigZ8RJ$r~gx7>0q44vSC-NcH(>K|3ee-ViV2*nM5#8M!g zB0z-`cC$IyRNoTprmE$G`+@cdSOsTnJ2{F=V#428D@K=9f|lCyaaTC6&M81OVTUwl znUc|1;%I!aR*-gNFm6_vvPGJo1!iO{>is^_W=nN|tad1c>R5<7K1P_KoysLI%0ut& z5iEgMNvFXe_GK07MAJ>$Q|IEzu0b%4*`(bp-Oz`G+F*Qab zsVK~6hMFVB6~-S7DRI9g%&|pFgH)|%c+@?yDI!w%$7rra__WpeXfoXe0xgKpB!$RC zFgcV#xy}t|HQ@#VG$EdW^Z%D4zoP~)V zKOR49(~)FsuT+#6dc|#B&%btdp=9Z-fQM%Ed4$XTy&{qfaYUn$;?A~Pk2a(W<9B%= z!PWELtTAjwQZ_L}3;Er#|P#sdejTJ;cQEX!6;S>7=H9tT}38HYUsznI$>K zVc21FrO^uat>`d|DEAt)5fEAC7qsOO93E-9jN?I)dixOCGCg0j*mNLVUt<1f{B@)6 zo0YITW=sGVpmn1x^nJi#+0@l2v~Iumn*sHy*be@EQ)8z%RjoiHF9)l*ZDD^pywZ7^ zO*aTffgi@(x^kHd*WWhanAb@6s}x#2E#4ege_&%W()g`ip$1j}U)2E;*g_j1`Cm_M zY;5m#h<#a_y#~+#0X4e)utStgdsxQX%_NX1c_O#V1!F219Q;Fb?OvUj-T20KAgC%* z_ip1SL0LDzdBY&Q;l{32cOn|0w|mS@n?7Dh-Z5}Hak^z7ulWYPc@kqkS? z$j@~re9q?gvlnoTnj#R2G(JTyPr_Ar_b+g3IM`@+yWI{DlHqK()D#{8KwdCWr;$+O z!VO&EFw<)*(u zbE>|&{lsFkNNm*ob<_q&pP$BGZ3)ZWFg`+z{^ z?=ZjR^r*u*CDDxiiBQ~!ZW0qP3U~~~%q=>K0~}|X-XFi86iUYEaFVwB{M?t%U%rkC z44G4AP8}}r?8rjM>@F3zt`{fFa}eT@DVMMUP#L{#6-Cp=idG?&ifw0FZV34z&1Z{| zum3b={qoo?Fe0&#yKNO%U~}EYj{Dfs#(=^gvazw3c;dR)2w<67U`NJ4_H#t2-xPh3 zA}FwV0nmN~7ifFndBG%hU9$HJ*QSnz+c(DuHIDdAe`2)$U{%%>ySUbDs^QJO$|GgO z=uEXWqmbte@bkt`Ru&Nk_&PaDymL=td6S1lk~lhVFEZCCT8a^Dn9zVrz4;klp#>q0f&arSZ72Z$Ob?d4-@fH1 zHey@mwSUwFO~jS#5hlOf;@dJ!@lI%bw#SO0U2D0?m-N)+~h zsQNHl3EU%Znyr}2aGvZM*dSZ@-QXhx{k#uESDTGG1YF{y?y-p}LL zXa}AD8~Y-SQ^uE)RjizqgfM<8HC3Om!C0TV3-qzZRE%OeL%-iFjs0C!uV`kWA4ot_ znf9o7#RbfU(a|4&_K?4giVEkyZ)BZB25F<{@b3HuN#~UbZ+aqwU_^DVM$su;Avvyu zj9Nz^(n~WJs>f~H@IwqU=!M8FEiQ0eN!wMUOL3!~YB zUb7S)aBG=#c@}boZB&x2V^SHh^}D!;x&{BU-~$8s;)JlK>?;@^Z>Y74zfDh$na$wO;muy(7i5Xi-b=Eq3+gk2Iq=!9~;5-D(x{Q!*&#-xj|Zr4B;y|)z%ny?34 z#Sa{Tj30}FSIA%^HvWw3IIu1`R+w-7_@2BXf9hQ}H{C0J8^N~)^Gu+UZ5dG1H*nFo zmsD+JnN0ErQ(fy!ZFaSTsG&#b#eL40;~xEU$gvT}5eVZW?UF@lkI-P@_e+k`!>MSA ziGSmyTV5u!OpDIWO;}ic8KlJ}{}^lmZ^{%ZIx>k1gtwR1$MW$5r1bQO?En8dZ`);% z%I+s=><6iRzDmXPf}>rjCVr;Q^<$^JjJ!CuO+)PiuWZmh&W< zaHyuC-6(|`X(JdDLYT0LpZz^>b-0d}&9eMEQ6Oz)uuJFIHlcYGtZ#}g9oF;DJ! zP05_fuquHJzgG=D3X%_+ReeVz_(WOvU3;Fq+Z8+;&f7gw-*VQZvMUx932PctamkB)E{ zhEi;-$oil-NUo<{LJ<15;(?oTt*GF6c+R2Hb=zRK5 zv42!t0N`TmFRm%Uujcg}?=>T?W>UDA_90bC+K^$&2-2+0n>-ZIFG#e~6ydLf@w6CfCr zU_>7XHQhRz3|?YV#FDaTxW*KkWx8 zm5dU}2<4qG8qaeAhY}QdZEN2VlZu7D7Ka);phAk1VC^)xD6h;m|6vWhArSdwE+iH{ z4;k6p`>`^-W=QJZ@i7{wzZ-{EL+D%`m+x%NV2w9n@a~G_V*+sQ*+cp>KHO33I|#?` ztu`KP#|n>%{uY$LQTH)mPLSPg$V(B|6NI+`AIFAIY=jdtXx-=D@4hzsm6# zu6M>>&;87Uuwr2KwU`pq{7)YOD4@;L+jO0l9bxB&(~%#01BNn_i0kxAXCl-boeaEDNR#xM$ux99ajBAss< zt_|PN(xM*}%q?0>W`X(1IN*Y<+O=jz=JZ8zWE%U%z1&RG`{prvhkF6Fs~_Wp7o^0`x~SUXKqui*Ki@%F970oS)6SCH}CSn z^r%5mJ;=_8B2)Q$(M?PAfIe#}&&b{OK~Nj79`Lz*V1bQsfblDONQjCSW_HodMeeiK#zw7%lo1{{@|QcIh5>R%6)DaB~=dIhEaGyx%;h|b>Hwxvnv zO09bz-0qQ5Ny6RCR@Eb-b)0|pAc$2Z&Q{6 z6%SQyw*cg{;4eq)RXx8^&+qW^*E1=%(wG$6^U_vhfU0au-d+1vlOKb?xjAP5cePk2 zB>PYE5W86D6j|%%p-Z3bWT{!k{|_iMevaZH7)c4BX-CP-t{yG%hmt_Efd87_s?UC9 zYivdJwGierZfW#LHwQ0!liW8fApdGrI{-nOz(XSndL!yI8u_3p@+C&Y+Yja9B)cB? z9ND77UNeYSW6{6}MuIo(9tq%J0JNvnq!+48T>$?XeMXWes5v{qgLw}GS7sPxs-fm- z)0U)mTXDg%3l~~0@$M1~(WZr{8qyGz!aHc-)tjGT$4L@^z*&8xGCUi^_)Fyoi*f0H zCF6rt2WLea*a@JNh5TOnpOT>LDm~u<$!4id+Uv3Rcw!+6%$HPjLc?6C*2q@w2@3?&VQ%-oUslF{GXo9c-S0_=(nx& zP}z?bNrniG-fju}0E2n!w4FgEYn?XvGr0IgQZ*@Xb9j)=)3O~FzH zEDPduh@EvsyUNny@R0*9g|Py^1;-m)UqaPYslrf*2atbzLfOyOMZ#jEvBu+gEl$=< z>Y%ygH_!+F)>!B7(lHH0`s-YBjOt0mR>a(@TK6f%mcw$(I4A}&zt_@AhjcbLFP_nm zb(x)=+#qgx86b#B(M`Tu5zBfsepV>?<8T;^&``x7Oph&<*rkk2cv`V;Dc#d0qoRnO=h%737+Tpc zZSR^2U%>|*iE^sc+Z>tkEI9qR(j~3aKN?4?8n_E2(!nDx5?|^)7Hsr1#Ah0OhJkrM zU9mc`+l)P=H@ux)Ek!wq(5{CH?sr0C85M_y;`k%I_`qAz)%$njkGJyeSpaKI3y=*c8o|TeH*HbB_HR}1#a*X`wIl?5(}j+ z+^gvzgIJ5o&*7|gF`k$-FJfN;=2*eVskj#>;=#GW_-8(}+%a1g_e>Kv3lCOyTy001 z+&znlbNu+lA-z|OP0uw~b51idLdPp2SPxigi$_f*E?#}Eu8MzHjvo~rB7s@u{}aoE zY;2>^z{%UJiPN&uWZ)lzzJ07=u>B3C%a4J(BVknX1dIGeH4jyOE5tp5WOY%^3yIa# zYJo7x@&kJJ)ZkMWX|@L`z2yFx6|KXgWny3Xd4y4B($S?=+_us!MPpgb9nC16g1hWg zGIZ#?{>cxx$OkSnpy99Ei^ElPjKNpv2+iEZ;fIt-K3*A(9jnrs@nZ2xiG4SG5qSnw zPdlH%DmcE?Iiu~5=D`C#Wr#LDT8w0x{?DytS@|_Oy=MNWcd2dQ(F7zbT!SXz@2cV? zjREw}_@CL+Rt*}LSj5@)pbOmh>*E9KwsQh65|YzUSVw+>+4}RV$u&pm<%g|JNNERSWR*ZrH6YUC_Kv8+>joT<74h z>%5~Y$M&UouuU>~#>0I%p&d=XSwQ|srcfzyp1s`eMA7wR!_$VDGm$jq^}$Vb*j&ubIvgCAn1e_z~6sRMfU+a3T|)iz?W5 ze0JXvNnzvKY7d|)g#}_cLPjhjyUylq4dV_bnxd3qblxqvSqUG-TLF& zCO6ydWR)7#>rdgr+T4rou4Qc0+uoGWvGu|$=4-gafOn%UE%MASDU4*rzcTFILsR)= zm5lM`o}|bWFgsVjEU3N%Iy?I6CshRbwlv_$IJ`JXsi)iHkP#mE67{p_i#HrqmFgzTLOW5e{E7F~=ul#;oGVby&i} ztAr}Q{X+O*%4{k^ff7s zoTFt9%y?rL+V$Hfo6v$U3%_GN4M43@iC^+Pl# zgfHepD73MgA5SD5m!*NNKLB?jn|oK z_n)6$zIGxq_BHDRSXiW6#Wq-5aj(`lAKY^|x!-U%KB0UE!Kcu(*le>A=JNs5b)fuQ zSca;$466DPqj&1cN3xP=Mgy8H;Oyq=2a8`cglxK(r;{$%X6%N zuW~{~IlR^)p!&lamy*GcCdhZ17eb9#Hiy1D0)0OOoCjj zy`5J^lpxpfJ925-p%FBjtdN9ds)5D5Cyiwl2_=~U{*ii-{hFvq~ z#V&hEviFfqml`+taE1t&|9po(e%U#h+Nf8<+OdviI?{H3`24#3C|sV`Wa(QoC72{y z_V%@mn{e{Dn;Uq(h3HN*RGa1hOv?WB(+q zThK^7e81}=?6JzIYAt`D!SPUOAQSz-qpLlMV1$Wm-CW> zFb11wA&`d$5OCoqSgS45W*Z21Y7zL))4Y>BCO88%Ihl5~t?rKtoh*Q!DsG|JMkuo} z98Q_bkjP?f@2%&Ay9A$zf=GXygUAIp~U@drd7PC|Zgxp`YC#bG?L~ z^(hD2jc3SM<{ULx2=mr^Ock#z@hPyuD|DGHzqQU2_XU+$3{Oy^S?Enu&5Ah}Ddw67 z>u9#apL`@T)Z-ibitbya@lXz6oCF*8K|UnL10adWN`%;@n26(sBNjgOT8u4R zHB`Q@oBj%1=ltrxPSDS>dristeqtcZnlZPS=S5Gc7?6ICa{6Bi-TvMDLk11Pt#2z( znP``ol4%0j{$9jcD_HRe)mO|!ExL_>BM1j#3}XtBmR;SV*=8NfZ*~703k%e7dOjogEPr(_L(RFYL*6lBiDs-&}y4PPDvIy?qOEFc{cHJQ73OdWL87t zF-Rfl7fL>4Ou}F;E%=i=*v2}T1#7T5?FgmPfWZp$Hft3Z6^)X|pW|?F+rh_pL@dt` zoI2e@_vIrqiET=Q2P(L$-<;?knEE|L@w_u9HG@?6d~39CPNd4DQ`$1*I0Qe*FB|fZ z6XI0RE$8#cT(^KaaQjqNmTO=vPOoI@bgn5W+3IH$kgWfj@HrO_D-!AL@B=?O9GZD2 zR{8!}pCGfY^ZVR?db#-y0C=()SC+y2Lo0seN}(P{p2aEX zRHCvB?kHiJ_gfx6ABYOiH`P~Ad{GL=Ne+k(RhRX%p1jT`f&5%A;PIwY$268kt_W z#7OH~=6h?fj-`cM_1DefCkH9|rY0rwaN{uY7~56ZNlY_egL>rUhQM@*lGQE(vI66) zmxsU#1G*s10-!8(3{GL=4G^VCKM?i-Fl%p*i=UMaNer@@683SoK69;^zC!e zGraZcp*fZqvtzrJv3%A2vvxan+(iV9xaH>8aZ3p*yV>36`mP+!8LsSQ+&5{U?eT3z zO#*tjzHe#*CEj%6$Y;EuUz_cM21#*Qpt&%gB!TEadc4eqpZ;V*H07I6Wn5x8KOFW+ z2uD7T*=F45zyh7cu1mOb#t<$)eGaHx1~(&^dgs~)0d0cXy6VM%uuSWhEr^#aPk z7qA(w?{J@yEr6yQ#&=x){^7qw!0GhvFQuv0{i*V@{(L6wv~rEOoe4wCBtKlq0f{D$ zE2BWRmu-J@wwf1IYau z*dTpEdl$ufG1ZJ9{;*E{-i#>4 z1jL@HmU*m#YfN3B5fl!$fjZmPVMA44JOshDeLYhji6dkU8tZSPdZu{|1{=j^c51}^#%Fh&1Dx7cvBS^sC9y~sDCb^Y z^T;%y4y`ao`~&XEy|7}=BT>aa-Gm zj`#Ajt5IcLL3k$wspz6IP?iE^n4mz-6PloQIl;xS4JtD%%_p#gnCQ}^jFtk-w%`*( zkX86dL(WAS>eKV};Qb_Xeh*uLS*H9Pg$2EJBah!jC}m|-6Ggtn1ceMSWMyBaU|Ie7 zJ9SZSG=W}jj=JV#{$N~^%;40yL|b3tZ&d~ABKZ6&d|}bdR?@Ho<*A(__x-V1wP%?f zrxap^Zg#j8J~K+9dU9P-fE7!RE-fiSRF0+3TWsE2QHM&D-Dxq5+Q8}bfQdMJb7r}t zoy%pKCpI~p=~b~Xf9;^F(fNFB%C&B4A31etW^KCM?+DLlJ3i}9ZxVbgjPp~cr#sF$ zUx*_2)-{Tf-ZIws%Y zCr{cBw3qu>GT;gaeUMA@MHw5y z=!0ZPezjyZ&&Cl_~e>U~}v*oL0p^B>f)@Gx!awK$R`cXo~B z0n9yk-3E93FU89B&-Hv)mLzm6a7JeSQs6Cma1+!o?5txUg-~eDl0E9UF$B40;0?;& zaMO^?5`}W>62x9sV-2&j*=HnRB?q)9L|?P&0hntA{hI(ji!AaA{t3l?yQmN1J9HO+TTnY@)l)i_#}V_FtEsYQx=iDaLXcRr`*u&WD1Kr}hDf_6>tF{3XlghX<`P$kLOs}orh4%p-S_&t-Hio8pS+A49@RVxlk8)^MZUE zvmz2UT#-Ymvab3omv73u+&{6=vDdXP2+N)%SI2H>IC_FBX$B==YSbgRZN0}8CpTbI zP-(?aLr^{bON>Pfp^@J#B!wVehsrh2U}9wzp8HzE>VDk4pmBc!7EyK?qV~xC?Kuv$ z+m%t4{CtX{-|(`nNX4$5dDQFZuIaj%fhZi!{aoX>lh~1@r35H(apkP#sW;l|a1aXH zh4k%nk%C+)>QZVH`BPoi6v^YXJ$qQ_-wl*MD`CeXej+hq*R=HiEchG;$jHC2>_@in z1pE1)4~=d`WF+9#ku*Sn;_fw+J^-TlriLcA^&>ir6gTg8fw=5WJ0QPGZBV%W>&C7W zE**8+^WVZdu4It)dFFvi{wFyIOT}%(%|6l)%8`#~Z=-AknEaQ4P#)WLrZu>e$H=VG z?yk6v&fOe1ykB1OvLaC)mwZPFmFuD?(fnunnX6XMPW^E=k&JhM4|>hOJC>xzKTgdc z9=*%$VqBuh4;loX^H0 z5v4$TfndjQ8o9@lI=B!X$3GaTndNP&3lt#&x|0ox6REc_6vWms6`%xH){n1c`xCBp zGjFHO+s-A=iIV>VV?dn0nocBtbeXA8X%^N7f7^c>ZIa!occk665u*d?18BnIMtDEu z3Xf=WGkm!`RT33*Dr!!jH-~9QLf{)5I-PRnd zwrkowkO!NpB6Lhr=IdYzf5xJ1hGEx4%vHpT!e73r4^~B#{7gPh(UBy0YiYh|-+s?6 zTamd@>M>*R!}jwqn%VmY@qGj6*4iqaDP0HF6|yj{mg3SwEA`H^tr(`Rz+7;4t z5DqPe=EwEJPyy&uI+K7AoiIEB031B~%n#q6#%-LsdK3xB0*mtvMe}1J-Xq0V1c{G+ z;Z%4g;#lmrXa9$hrX9|svV}bcE*&t&{`REn#u$ougDcy`VJkQR$XMX(kZB9t@v8)G z@E;XzeO|NS=Mj+-{%fTa$8fFE*knb%(5U=91V);;mJoNw+QIB86Mbv`HUaWkJX^GG%5t3zFa9x7+Y<$pTXH3By4p;s45|%1z?IXP@xg9Xs4S zh}jYuOpNae->E>eo9=}bCyLX^t(#qXeW+Dgb~l3mOT(l}Z=Ipd*EZ0gtP;!ZGoo-Q zfqT-TRE@KSyo2`un5@(nPaiM={@etzPzAB(*G3;iP&MAv4u1lCx7iq!+B8zr-aA^< zf&%?(RN_J*MA!64Ebi0%I?CdOC8Y%i7>|ta>bHa`)*dUs1v*k@E;tJM*0uK3LVrQ^ zRmju@V;Q78I)jWWAU@lmGgVrVd(ld6&B+os2>>UnZD3xC6e0gd}eMqzi8&g2SY* z-4np*_dMI>#JFa0d=dbWbX|c_-bOW~3B#$kRxT|H!Nk!BrZaDQP83uTq&+6 zLu6&^5(2}jw;LHa8%Z(m-Gg|NYEB3>(vfG00$=1IU8burC&6-aO%!9$a_sZvcO;qZ zyJ?D|i2nufx;TBi=*Y_(n@);*d?#ag6p!^Rt7Pz@g^rE?aqTNemoBI_&fS2N%h!%# zEl}|J1k@M>+wn}IH^CM4HQd6)<$fOz`pA`w?0?-y8@|LEBqHMMho01NGsu)*hK5N) zIWe9xAtyMef$r)e-lZ4XYRIglR(0}<}>+|a0fGXV*(I5%4vWMP8T zs`^6ecRYx0{Et&Nip~tL&?X1@i#gXz_UDP|wrZwct!H9whLL>6!SQ77q|Uh}l*d3K zLOm3bK>uH=L`~w_F+}FWkDLc7ZYIFS$zK#B@@kzZM|t*6VxZ1Doy`IK#jac2}Pi6i-!oRsd_5Sniot6 z2WbAwNNVI}+iBw{o?=jb2`yy>K$luPL0JX(6{rF$ht{Ug{NykQ?g2Jj?~HA9;9K`A zNTWvh^QS9V6^H2x+~{$px@%$nT#nYG`E2xUzytl{2-6#eOR8*!bn{fwQG1hgd{04HcrnJ-Y9H%vnfPSc*e-IEV+2jR3Ff%a$jgfh7aZ zx?eC(WyK3QpFXDbNx0DDhQU=I{Bp(?$&6xv55$BgVQb~BC2mN=wfIEoZk2G z6o-Di!Mdo*g79wrl@rBlDF7+Wc;(P?ui}KB&f;|QaKVNt_+x6|-xMx!z}efjl3o0s zt;&bpF5Twzp!@c{oW!@FZz>+}NdZ;q3? z_LG!s|13p)_g4tIpDMrluZ=j;2rd6T7y64aTik09Xi8hURhd$J;sVT_I0tytdMUZ) zsKCg)iPS|oye|}o99$|O(}?UN{-Xvj(t9nX&dVKJQ7TyRzpeyrYS-E$j`70lEguL| z%ULU-eRr3hebi#P9->Tv$gYD?v*!xxxbJ7qx_+&SeXBu6&xT5QnZI(K;rR;nUM!;m>kvpA)0xt^}Hl!z~jVkP{|7R8{os?4*IgWsOYFi@ob3 zzx1l}S-2@`w(1y{Ew63P$3W!@TiPYhK-r6&` z(c369tdUu=n$*4fY*DX!(*`oWsJ``>y~mChLBmrz0)&nk=TfY{bB4ID4E#&=RF*7evwBAIqE)_Ox1peUm{iPW0WHsJ>+>RCuEPb$re;6K&4Di zq~U?`F-%Vdl*YDsF?k++fAjVj+IUjO9Y&ckW9ITlT-y<6(tw=%r&`@o);t5>lmQ`6 zTW3ReAX(*Q&%`g_a?zJ|M|C#CFia>_LRx`gf$>Z_(*vYcw-2IZ^wye5LCbuU!Ee17 z(to2s5xa`M5Rr)E{AA|9Y}-mj>%c5@))D2d8ui;#QQJW5=}BZsNujwY3Qm+-wvQ?&dN~ z%O0C6ooZEB7O{@GcLB#|E#R2wDy>f3qIrSQzie!ni6h$FrOB{AbM)v&7_Bwgh*#}>XmU*va@nYA@U z@g22CwfXXywBa@LAvQ&c0-b5|UY-sMVx^AK3G68k$Gsaz&hxX1id67qEd|_@!no;kjJ%pWGa*&>Aa?6mI3(r>r$pL%N63E6&94NbLO#!uHKo(s$ukzn zKejDvd*x-T4U}rL6#p$K!?~t8W14RH_YnRN$w;osrfvjR|8^dAewFKc)ieN9A|B;z zIbQtht-nDH`-p5~B9+$E+l8{4B5@30M_PKW$QVm>hxxhp1Zf+?mM6l%g7k5a@!#vf z&VJ$vx4KEDwRL%|<_c%M8&@%X&2HLWO|iqS()NW4R_l~gh`jzZ`HOLzU)pjcrc6i3 z9Yl@h3@>l;!CKaT?wA><@Cc%Pg<0DPmQv|#t=Vu{TCelve=5EezZ956W_Q~ z#lc`lw5PN*q^Omhdvw{{@sT`ta2`XUMuI?c3IolLYfmV@0FR0Q+ zc6+uva?vi0U@RIoSo)0I@lXpNLJFChXqq1F)tH1i)h>_uP!~65rJrUbd1qErkPt-+W-fK!7rTLx#sXqO%T`8PH2-%PWbV zq(%f&hwH#G|8*zO*cKP`6%Hiw?@|6UZxZ^%rP@vdJ}Yji!aE~G$aeU*de$LFL9z=b zAmd`Ejq8PfY$}6(#C)1{8yw;G_qQl#A^U;A-(T#j0K4Hks+UDd$CgC?>%I3_ulf|J zZD=Aa)r&aK8K((=XeSky?-;brBh(*iAB8+% z8H#0sV2f|Os;=BbK8*wHqCUWotpWCIzXpqsC- z=Eq^OzgS9@$tvV*<8G^*LI+?%*prU0?c-M8*kDvaV}JN<65Aw4a~T91ZveLCwlT)r z_sk6#W?3ro!}0W!Xs1_JTEV`=*%z4J>KEXKmuBOa%Qrv7&2&P>RLx$U@XszctI|8GuO2g3q>f4Nilt zeuoOp0~G-P><{&tMh)U61#WI$jN*$w%UN5fHM783WDr=ZB(>Wa{#|h*=^l(3d3{p> zk~<6}q%V`7@M2YkZ{wA5-cX%OS}b=sK)9@1pVWbPSmuHo)jZqMCa-A7m1~SZFe*^C zSmP*x|5CDNXS~eSM17B|gghZto2islGqRB0_yge?` z;l^d)oeb(?-Q^QbE&-OXhaYR0tPPq63uwR2?HClyVTMPSvH7NF0#xl>+t_cNd(g!$ z=@i}d>Z_`-de~^5slvq9p-991CgegI>V*z(T#sSXFdL}3Co3To-w5(22yE^-gyZx- zmerT{gDxg+uO$iEa-=%x^D&a|`|lGkH=Bl<)eqK@Vh1+dfz4_^=VG&8vKAUOr88d) z2rFdcWevRp{{h^KZtH+l>p(~i=HmE&RnptsiGF{eya5`I$5klbTv~5CDIyH?+WT$y z%CCyDWN0f!P;cu;p(g0^zj{1b>4aC=&(=v3^$?;jNv_>GUlM)kZRnG#P@-?)O$gBq z_&lmo7}3ze0GUXpOtxwYe|D1y4Poq@P>!$fpkIr=O*bSZnwnvr-#(}seYcV&s%$$K za+%~5+)J80%^SwrH(t^`sxY95aBlbF9 zAD>b1gp9SrI|$<1a++#Hw8)3uSMz@0BHNXkQMW!nF;wnxUMglj*nuEG-aBeXZB#vG zH@N#DEBv{$^4mN3$8REO?ny0%3A(v3Pb;aaS+tOF`Sxvo9bEq(S$h0CdA|y~_cbM*GaZL1sHa$Y} zD$Fm7{CC_&XiTqULxDEvQ2@M^YtxGv1Jq0B ziv}J!Le%9b5(Ziu9R@1F_oGq#A@Zr34~1x&J)8-7I@x^B!fIMgp1X2tE28Q9_=Jqv zkx&O+CzUob11q#6+}@-WWXu0^`U{^Lvy!KLIUg?CQ5v6zEHJAK5MyN`i#T-$=uS4# zNVyma#H7AB#-4Lu28^UC6*r3E8PZjnyJ27%Fhs>S73i3fkZ!Z^tvZf;+F$iq0RR_M zZF{Ny4q;T(F^V0?)(jpJCA}9U*NlNvuntK51KZCtJYxTT=3~lTN9W;WS6X6h4?b4| zc8kMV%jYn!gTk}-AkNRaryrEC#A|_H(o+&p6MrQODB&fWvuar2KAP&-!&^Zcb!^nf zrAQ1(QPW-%uiT6+HzOa!sjK|}2aMv~mCA!wK>Ee`)N|$`9UOUt?a?4Q_T72DR2k}Q;K)9^3J!*FMWlAjTbHSGNCOl40_F731hnO82>PA2K+xj|aa zaHD=ghN!4;kAvaAWOywoCZ*Dur-~@e^}5_9SFf$!@7JdoC zhyQ>01xr%v1Bah6+0e7OKX(M;r4}+sgWk<)zIgECY0|$f?HnaM(N_x2Ilg5f2%o42 zfle__DdD6W;mnZTz{5+n*or-9{>dq2M|Q2^0aDG&EUe@N5-JToqtfQGd%Bd56<|jv znt;9HbhCC~fGFa&_+NnYYd0&dA+Hz%#I1ppnLQJ{%RJ-0+eh&-^9 zwmQ^-OE(*q(x?;|Y-c6k_btjwocLRzjoE-3tDbNBE3a5c*LOXt9Q=T-6wL!EEwzbv>mNC-ypX;sNU3{C^8mm z?qhf{Ls|&4@E=QbxQfc*5&6-ET2uVsW^v~^G+VmXm_!iRN3xZT44|AJLNfYu7_uun z9_;3iJkf{m)0E)i7}v5K`KcTs(xp-eu*QBjl?`{l9&KLt(23ztMtjY(=kH;dF4Fhj zx2+GXL%?9|*^BgIB-Y=xse9r8XsoWnd7e2t0Q>^`7BOQ}l2E5qL_=F%|7w8%ga8*% z^6aylW}94A%NKh&J8-|QL07#O6|AckpWlj zEc3B`A7D=zN7bv`ZyNB+dtd}ZCkAqR44s}#ogA5`q6uMkdeY56jz7lSvMakfHSr@b z;@83oI909N`L^jA@Y-DZHJljAmW_cj7*;NsQ*{yMV5{O5ZE5x06~sfPx(J;q%+?>JsK~DuC)?m#+C22ugu54rJJBm7nFX&-$ZZKjzq^p=K?&S znLwpK`Q7yWpnDI(5p3I=Y*S03>lnK0tzBBCob$Lsx}haX_pvycw_OvdQC0Ui>LmGb z-ZE(_2dWC9v>-Tnv;IyfuPVN8HEjmD#`UPh+zU_S(_6*`X~ab4+9&puNEg6iSX#NY zw7&^xeQ%1105$Sym$M~Gz9>YB#SJ+{?M~&|gzawfGA8_(H)Icc<~d6*Xsq8Srk;iM zR9lt`SS$|>%?myov|*=LIn>k$SOEYtgyzHF#Pp=rc3J}*$n-kWx8^C>lsrRgN!#Xt)Y(%fb%)1Z{{DTOKh7>gd9GE;5X@eXjH1OHWEQU*f4P z5bE|4CmWvafXvn*3q?>;za_5Y%n*Z@E9sboB_Lcm6Jq~EDJFe=)Tx5eU(1=1nDKyz zph!FGW=-a6zKrS_!FMCnh9bGQwqy|zuzK&k1Ek83BwZn!JM0WGJq+5BF=C@~1f)&( z=SZ+p)t;DEHTBcR5?-s_*sjB{_87A%FgYnIgzsNV? zgpzyP4%Ph~*C2FUmuA{&MXltz%ZBgqXyjH^?}*C|f;(z$jt0Ei6_1rq({Zuc7A3Tq zbq8wH#Kg(T3I0c$F0Jd8qlkLQYT%``IWH(VWu_Ra4%qFar>Dbou2 zu*g`P+=5m(F@&iFT-Gqt0vr=u*`*99SDi^jbd!0lR}w$f%u-^}Er#08D4#t@H!#DY zr3A4}=b#89^gLGyvw>I`wBQj(0pVhFNrlshZpTz8>R}=Ja`Ez-PV9r)M}=52oQe_N z4~wDc$r}%Llud|KXaiZa>Gl_=*)y_mn9VYE3|?;uQ!#mmneF>7>vUXR+!C;qy7iCx&u5*A8_^Hse+*- zfu7I?jym3Uyv)!ztMo}U@Ub%1pjir1tq`6{5VfJm(QYjiTy3$;b4)G3xJq{<^r?A( zNUMOwGfdg(r+xSxJ&zK%6XGL$ku;ZJ4c{Leco~;p1o_Mi017 z>F*@T+{yAM`aoKCbUMZ=X9nB~OWXq<1ob#jgI!Y-QAN2 zjY9FA+8Qp!zm()`f%r-41NY`D>D;MT zt=hO_Ll;z8Q>1>mL*rO z63TD<5?M%7F+!&2J3$sS)_(|ZT`&FcPOS^>&WW|r9tuGp#RjfTU!oG)+U3;RO55PB z7M%)s(;qPunb4iKZ-g3@vzRgeg5~Cq-3e!4!-1-Ts9ZlN71?tx9~s$v=q*k*A1p)n z#sXfN$Z5Z*&O&|9rH@Twul=(oV1-mP5bn)W)cOGnV8-HQfKthCy*oq3x?hnU9$@54 zD#JJd27@nQ+lncQ+pLZFZ4UB6uQ9TaiW{ryLU?!Kow5~y)Kk{Wg;D|e~balf|zXU3>7jEqgqsM@r$8?;LT5zKeMx`uiLRDJ%zzg~pNIoKWLPUM z&H%b7^WKu^>^VE9{*XV84F+hQ02ak%zHIvAV=QZP!v#d#FWb}OBDl{%_XM>R5*;1) ztABGuhf7X-)~T8*D&@ql&S&@UB)4wF3;uJtr;XQuFar5;~ zt9*?pd)Mxau~TvkO|G2qi*>o8wZImkU*1Pot5~{98el;${X|8@TaD-p6E{|q!iAXa zw)*$>imr_~3gY}U5^qS{@}i4spqUk{?Bm;4)0RzV*Iu*qWkfT7(^oi{eiTXdYssea z%99FJY*c2%8b@|Fj+_{zp^pNRyEPz zAV^27-_ni+Xuyl9WhMsoD0?;JNrz_-L=x@+6o4Q8t(Y_hFbG*uJA0M$O<@FNmWrd~ z&3HX*BB&%|1OcT0^9H0|3sdmf|t&FBfHD#f{*p>-P7i ztc>n0lhlxGzQkfElC@oHvoJ_>$T#RgP87^LwUwxPq;9-Kzt1aXhrFQH26P%x>%7=- zT^~lr9H5S&az$s`ay{TXwbJa#LV#WcTqu)VDGpUsI;xa!s~IZuEDVr&_Reu}kvsJA zeA!9e%JP`XVcAHL{C9(tAjVvAAq77X0IzV|MAvZFx|*W%k?jG$_kEm?{XTJA<~Qnb zpqP!=`s=xkXj;k@t@Z*Nr!7VJj zSEmu^N|z1)eyD;UrR06}O?d!25l{M)SM^B&blo?iTTu&q(o^5*@7Xarcio5*{QCqu zLQu2J-<%s03()}l)ilqM^&2X3^>tjyrnGsjB(bX19^z%-TMWzcj1+2B9Lx)|B5v}% zLIt=bTn#abJrLRrI&_B1Hyxz)dRX)U`F3Z=`#8C=%Asu1h~>HG9WylY?{5Q6-p)&M zcLa8^O-4zJlRytl-^prKr|VhtL+wI%f~1sdwsY;Z-|uxv-*g0UBz zX2=R)!gUtjB+lNR1I8sa*cX@DPxG=bF;q~PbGdE{fv)S(PwyA*61;QZ(z2Eh8ob0# zy$#;!06|%+MRrX}LGD@ggzBdZ>S&K3`=<5jo6@Q|v*~5M9f@y{eYJYEJZ#(K zATC5Xa~*dfx#x|E^+Va~9Xe`rFPM7MjPb?Rx~g@BKB{V_^i6dRpQ2b3dFkOuW36NO zv@}c!nn@z}uUbY8_-X?*T=LFmk<^(L0+S0MMbfe* z-JcEsVq6qQT|@pox5}3h=b5A^_}XyAZl#j+wTuezR~nF4a^av8akW$Tz<4Cm)RN|e zqEXAv=z7J3E#`pXT<+XEYoR;dg;vIcq1lU+V}>cGX7=M9Vj%Ph6LH5--(VEHGx;*} zl4A`ROutu6{=2f^E5S#!Cc;JX@9f}R#X^7Zy3aAH#dz%{gFg~w$xXxnVy2kfSF+)a zjfFbw8zOD7?7xxG_P>i;b@Ic7zm@x{8ELUAaertGzGfpsF?yG3DcsbBU(f&vxQY|q z%-axV+m5TX@}Ul98c(v@^YtM(VP0 zfVnlQPR&7_(`;vY{gRaQyRr|uz#bbLdgC@X`l2=<-nDVEjnVttEq3-6KW`*L1(G}d z5amBz6Un`X3HSkw&}-{q8IxlHtTdS#uHQDV)*h5LTz0h_2G(6TQYixtOP9oxT%9~? zo1*Za?0*AMRL&c;wpC@tgmOzY^)mfeFp+!G;D!T@D;?3ZdS185HYe4pW;!|oNZ^Jq zqo@tMPJ&d?)Y=LU8Am^?mSD_gxD;08M%fSbMh00l?94KN$=R>M!$&{qAhP4)>%+UE z03UO!#E>+_iL?b~!*IOf)B1L~ODa*SCZNHX@u3k9!j!6t9DT^!B6$X|Um4Miy-9eV zS&Kj&)$%sQ_d7}Lb3P@x-=TGqA5Zn{3aYZOYY9@p7SI@$axRDR#q*CIQ8?TZz7||< zid+$opJSR)i>o6RaWUr|hgpylxk6(fAmj{#QmVjX7FRagdLEqz7fG@LjWVUFNmB0jYDTzU+!+BK6SUywW8+xs(0w{M82)hf9-#{ae+7wkR+#Hu-^&DYvJcK-q>J z#KgXZ@d!V23U}l_Yx2gpx``f1ajwGS2$4;aHR@@x>zaP*!3|qRF#jHHdHluzoGe3h zYY5ZiocNu;p(&!OzDa=AB*62?w;g`j!9x+&^d?M5r$L?njqN%*$LwEP0_Vl12X2H% z^R{9bl`6jteaN^iAYr0JZ`q9d%(W*g4@9!amRENxglO+M@6gY)3%Pha(4i#nZHf{K zNC`%=by%i-7}IqzN+nIaicx2TDoL)DPFPEh@fvn`Tobr}%)qs6v7dbFhMMGUZ+O~t z3v_;OFW_xNHBi@tbZ4i6(+2AIBU&}CvA~Dwn8Wxmsap7(&$U1!RNo@BO zBQ|R0X;ea8@Q+PB0O*Po5T)90xqUnTFt8g@L8~DGGCL_wNSan4y^fDGwt+KN-2~(f za8BG@;)JhgH!_NK{YmkOQ+me}Q*5ISci_;%E1lwYD{DI?dm#1#6nZMrCE%0|7ywFl zd@1_ekPO|hQC|v+gfyZvS!ch_D+7~Dtr8G*rX4@}GK#JG<3M7{C;%ANY)>s^D zn^Mkcv=$TI?+oWv)a#n-9N?EIPr6s~e698qYiQ@m;r|v{@H^RK6i0xvHg;Z)PftSN zM(r58mM{1ZM}x13OLvD_AUNYfnma^SmJjY&_Q^CTZuytGTD%~LOeo*FOW<0Z#cp(T zQe(dcmy^}&btpg5o)@#=I6TG2*M;iuP0{<$c$t!_r$23T$46O;^v>(JvKtYK0Dc{3cTb&0_GsyFomA!e_~e zRKZ%L!vAW}Dx+a(pHCQ5@^D3xF>BvfI%Kr;(in>H4Y7@3=z*BvgdvRSytjxBI!YiT zu3eKvnFM0NzQdMevPXIx(vF+LST@*#032R)d-@~XNC3oo`5?^m7JudVj* z-wkDSft1#)t_oMvZ=^0x3{Hw9M4voqTlpt|-z<-@LO|2pw%m^D)7e?t6kiWr1TQo^~KpShO_a#u9;k?Rv1m z=!r)>SICFw147o<5Uihia>m2eCOd=1*B8tR%azqSu*2Y0-b(%EJ4tMZm4>FtG}Y@F z^_bb(Vw_XUWUCz{6tqPxjB8V6*>8Y2o`&breQmf2L7Sj)ttranZxW~?O?U#q)>}(P zAPU)NY%^5!@&Hh&?Dz`Hjv`hsg{)Sp z1O&xYHMp;=s(5bhpvHHJt+|It2dVhjJv;2i1uNXuu6{Gay@0=t^4)p>iVrkIcg5X{ z({-aU0MVOoH5CU$WV!l7o#JwRcwoD~NdyeJu**>Jdj}pV4!z7ZtBVjIHct-|*o|&7DYjs4%vjNFJ zY74>p!dSncw?yQf#aD2;XsO!h0ymD0Dv8^rW1kyOY?H7S;AI7ysL2)FEG4RvmvpYs z`dk#qhn*N)^kYD!d@9u3+&|3w5VAw3G`G9)SK32r%m@T`dN5$;f~7FIG88b1ij_f} zP!1jG>X|0b1TwgX!~6dR0qLO5$M3sUu5N-umLm2Z4|kCQIoBR>hV;O!SqHG)Ej~yD zag8~VboZsm^S&-4-qQ%746XQd(VlD8Sz_C%5(S0XvxCe6YF!uFwY(56r`y?VSx zKn#7wDt~W4bqlh`*(@Rn5uBRb`nyY%&sxWXBsZGvEoa%(ie`w;=!M8wV8+m87`5Pq znVi>RYjiwj%Cb>jWRtUiSH#($wce+={H~|HUQhOc70Z<8QGcc9Kwv4;^|&eHCpeAj z%*(zfRO2%s132X|3>Ya9|4cZiZyXV2s=uI=Bd0emIBY5#rIyk{4pqTEuRFX~vTjL6g54YBcd7U8Yt}RY zv{L66dnj$ zyW!j%3i66Vz5Pb(MkbpFCZHF6(bRm#5UIjjvF)F~yNhZBcwHbreq2m+fLNcN zZc}ts()=Ns z&rxaY$w*PER#dKRf#mo5A&E^R!I0bQJMuJFZNKHPZk03MDH%g?=~QPzx0M|z1TRK0 zy@*vrmtXh-_bXqq=))g=q?-1VJ3W&dJlf*ieysWxuIH?w4hN^sC~~x)jGDbi5?T-b zmE!6Z@d~x2x(V5`>_&o~9s(T|&Csada0?=5t3=SiyKG0O|6KI$QKDC$mRDasnM&SX z4S5*61K(%bk-s)(o6TxpEgl0D^5iZhefkLE<)|-mt@Mq!%1ec|ezIdcG%kFWc=cn^Hc+ooRNS#P((=dd>rnRa%q=?-2n4hU@JcjA;fDBR3w5_nO zr!L!361sqHB4TV)aU`lzs*qv|X`k9AOBP_xV_j|36;FOdu*~UL`7^q9%JFSzb@2XAlm7+3+<8Ja%9MX^3q`YvsJR6EJ? zjdxkM>ajhSbFBeA;ULN02TjMaG3Cq#R~q2y!4uC*Ve#BX=&~dzijyu6LD3Au>%j=~ z;DZ<5X1sxK|4d2xU@4MmgGF@LVhG~Lqia_Iw@yrSU!a`bUQTiYOM)(sAiw;lygGvz z$&;)hEaDW|PS;8fe&^d3`IlGew2URaMQ{tH_p%O7V|3nNp;-#JQ_+%b?Za)B%K*H) zsj@%N3UM(CJE+GU1xnvq;}Uj))%BhbRrA{?2aG+fx+YOVGeR^w{|`!{fg0Nx9!^|U znAGD#QTvL1#UoKKi0;d3oNpKxU3JT@)?j&4?W)avr@XDe?}WeWcUoxM6g;2j4-|Mz zWAS!4JaS76GDb6C*;6qVZdq2)5MlRFm$j&`d{2jon`|Tu@8}i-!kdjVb%RI})Q)to zxD?vz1O>BO0m@3fNJ8cU2Mj zI(;S+AnWk;JpO*A*Wu}n{QWew_N+@HBw9 zkc7aAy`t|^K$L%}@`8)L~NOp-^L=~Cx zZx{56)ES5@2?2V4cj(*5HhGeeG$dJh0^$JrHtJN9Vl1=uwsbQ@9jjc8FFX+8Y zOPLF%O|FP?YvPsI=|K`;bhundM1eUwnV!#*BC70 zheO$JNo&%;n`3Hh0En`2etd{pg9)O2zQpV)K`&6{oYLQ#U! zgDQ>NX<1y&|6U|X?Y>UcAy*PDHH&DBAu`D*nWbEvos~J+}dkPoy<<%}53RiDA8A zVi~IL5}$Xjsz`>9y#P6w+UDs2TVkW=;D?{%~DVG#T=Q7U9IVj9W|oIkh2 zHBwLDCQAslm4)GF3h_~}M2WH!4Y47iUTLcERgIX*Il@I~p^Od^!Gds9JQ02})8~gc z+nZ5$ppCf)0SUq!uO(IHh_`{8a0Tc{H^VFB&=<{*zd@U*!8B1aN(M&2n>(yPc21xX zW2L9vcJ(&FZ%Y*}z3|2@LG5Hc$&L{K=tr=V{fGmDRy{eBQQd8rh-jbP9@V_zS{+u9EdN zTvlIt`hDaH*;X@Rynw(si=NE+?4>C|&_!C%tF0qlz=M_PQE>I4H$fBr5qQB_t%|Uj z4u_+Uml7U*syR*u(8K%|+k$ccL3cXG(yB8*opN!+ND_7#2e`qukgC(vwY}Vvg(&L@ z*vfgWF${*t?h)#Y#^BK~v|{R6`8MA3mwfL8q7Cy@6_6|!KGAmxedv+C9c1f&G;zKs zDL27bS*9MMHP5N%ylvgdqoozkH`?sTsP&dm+W>P-`wMV~>qXU>k=zOrIRxhvf-`)+ z2lav|&1i^!l*yT3mQ6SMa8}JF4yIsVAM>ir{xJ;jdd1re+aQn*IF+a2j;5hl4b;HL zq;lQF5HZQp;W4$Pb&hV-M8sRs4?!EYMhH9q^oduTf#TZHO(=#y zjK4{|X-=>bsrW$fMESJ#4CpGsZwj)t@*JM`# zx$X>(<8ZB^@r@ql<4|VEVm0UdhoFCH%XK?NKcl)y2<=jfRfTvj^@nW0s>q$coFOlZ zg~COfOkKf7sFx31{JfokZ1oWv;+E1lV(Yj(Uo)|%zKEJZeiA5&cp8&Yh_F4;~v@(*U+ z!Jbb3SgS^k7Cgb4uPl&2_w_ZO^|my0f1s7r+qp0v?+@?*ai~MR3wVyhq8HiygNoD4 z>R8o<7m@|?VD)hf5qpZLuy?yxnmoQKli2-Ww_0MCO?~-V(q0(OZq70KrGxJ%ei(-L zfPd-1fvpqip{9QW_CU#w*|vLTu4#pyA8@hQt1N?(7+WHMG#ig-XbeR%G)wPaIH>-A zX?mL)Yu=}o0Z|gGvd%bm(2W7tsAz@vjk=gEx9|hv&Qy%vsAOC4-TUu9B|W>?f~Rp< zQ8K3M?;!sq9p6iWtrI%s%)2!ShdPL$kBU`HT72}VT78Vs3up>oFvR0Kg=FVbUg=DH-~K&o!Q zqSJaWb_1P=$nQ26IImyj+zIf^^03;;wftB}TEz`2{ZhiT5!7d#-*2jVt^UMT*+9B+ z#f>!Di-qrpuZAJzyH2S4vE+q3)(f z(+-X0o{-^2c*aHH@%MDiBoH5E2Yws!Q>&84r~35o0ahw=9lP?UZ4r>mg4&Ah^qu9p zv8g$#8sUd?hdZYR;m$w60*l6a9O64m>KgQg9`|a^T?0bjZqqqKVHSpwC6p1~`zGKf zAJYV<0>2V=p$jo-n70Yox?fEF)08FIxB^3uL`b_+uKFU{Ihz{9sVI#MqqHSiKRtOa zh?DvB=b1cvRuUF18^8kB2)`(3?X>6VE5nBf*8XlCK=sfnJ0SsSu^C8|`$l4uT zMzno8(J%3Jkukl9Kpzh8XTf=ZLhfCY<-W3br~wS_ajwA|?GH`(5Rpix{BUlT7(d#% zPmOpxo}2e}OWSHF#g z0yP!LoAzHn9dMwCVu%L6kB{J8k5B?0{f`)>T-$}9d_acFZCh(#5u-`9Z0hBqwea|q zUZ0lG6k1P@&LxoD{$DN-N!1Ne;#qr3-Bj>8Q+KdqXhxzKCiAgqdS5 zgI^fCt=CEdOtm=#6bOt$L|xZE3I%&37q4AoZqZ-_7->q1Ec}gSQH3Z9h!yRPz(P@f zGJFi4O_*NleP8C4^%$r%W{!!rJ8P!)nP)@)nnYLLDKIw#8h(T7w{|nL?Js>!=Rl&B zYnIxTbI+ba%2jjdMDO?o)GUG4W^;K1<;Nx*BwnWn{q;CU!fDYXm-P%P$k{m(rwUoQ zhes5fG>sxulo%_Pq-Vy*#-P`%Wjq9w({@XqTMMdH3&}$^K`J9fl=HAK(c1Pnu+k|I zFm_KH=LQjLJVPu!z=l#$sz-ViAa4wh_-YsBQi_F=P4!HdeiuyA#B;Z43 z97-Qk)yapGSGxSem#zy57C{U%s26u){0g=^FIE^ z05~cN1SZP6U^h-R1DtNFIpAP(7m)fjCLowvoD*(6j{|+pK)=m(Vpz^rM%H>JCP*!A zK6bD<>{B3(O1gXhGw$X4ioP_S|9qhOIEinmQ%ttJzspj5kgg7=i5_~bsBj@AeQCLn zzow`y$SGA?w2QTb#Nq*;`q^r<(w== z9)z@w{5Ou*ak@!dO^FP`({%X3GSI0LKG_|iB+Dv9R)><(kWZ_a>k?B%J0wAcLt#Ih zJEf%ibC-;ha|XugRXMRyXuRJOOPzN&Nn$|+yYSEd`H_vsVv(}pxJLWQt7@V_;)7SR zMsSlc-jm$9j#NDmsEC%U*0G8<@>gOc+FU(eZBcequtf|!Q;51kfpA|n3Eg^yC8mdI zb2ybK3XFWkwvF!A#D~M((utaXTAxWXMeIXzi8`<}R~q$%TZz;5fY0^lA0#Z-@d;=l zlxUv$!KviinY@xjs^a>2=7(%Ry_pty2WRaca>(UwmK@%t^E$VkTXIyVcXM84e+0TO zPMymJB*xwbK(88|=0tTLThdU^e$taAOUzn| zke&-ag2^u^IT0mLh!36Qnn{};O4zW=HYWH;r-@TaU0r8(1d(jKn18^V{lQ5TM{XW$ z{lR6&R1Z$%mlXVDtv>sG5iJ{<6VC-GKy5W@@ZNGbArG#Wq2*{>%K|k@eyLPHvQ=UjBQ!cdd8UQZm)W5O=DAGb@-Z(Q1_N{Uf~_T zXl2w@*fBA(Jbrgp(sacs1T)a!ISIemvYz+gace7-|4T>EYq%CwgNUgOMKE^r+iDg6 z_dXp*LNi^yh3iKOhhr@WWVGOvbErS415F5yuoXBzUFXNx#?w8L^}YQdAVQ1QvoW-E zK!Kt9QgoJ2ag{P}gsGE&tUO|l31D%58jO*EKT;2W6h80e_V z)nxXs5PZK><>EH_tr!fUXapwpw#2dxUd(5}oi?(g)SMJL2xo@d|JP z3}EDprS6Uq2`y`{9+WCM*t@l(^jPIFU0X_E|7q~56; zXo%Qq1+q56=~U5YZ%|Unt{i-*S3u2lv$Y}3IbuXi@#z1l$nEE-dXffPi--^MFTdEY zFCPR5%KDGn^UZV*?oxg8|9YUo~ApYn9QNMwZ+?RXoo_~r-NMJi%#;yh93 zA~vGeFTklP+lWtxBAM8TF^y>CK`l{klN;{q9`z^l5p6)UB~*G{MV^C0mBno0jO$_d z86_pxO`tcE|APC24V2Qu@;mwYC4C*pibkHfgvHcx<3-q`mr=6E+W5CfhANr0WT zf%eq|K~BAfCD`0gx4#uowVr$w@hP$;Z&FIu`P0y>^kc%ZZfyMikQ9;h#%(9$h|0

YhvyMnX;a(*>4>33#`L_gt#;5nUbnEAzD!t>9;(WLIp1BzRGwn3uy znd>KuYc3+LYk)iELsD{xn%umueVFah^=Avx2^X>H-<=Qe#$=sNeA&fZ=Mw>^CR+E+ zVCD#O+z-X~uPUlI-t@k$?=jURuKbPoLnUp69h(9h+eHsK9$@574UBW<;uK~oAc^TM zh4T*QpB>k@D{SErua@<1sm>V zaFS+W-LHOGFzd=;#Ty;F09`i@HPcFC*YGDDCmzc3Sg=v3Qxr)}+eT$cc`^5z>!Id$ zkntb>gl(lw-oIS*mW8Cl7U_l=R>IQ5-b8GI`0OhZ9&0e-LeNx&w#5CIRW@DHqw5cr zF3+6WX|anyw7a3{b2iSA(?w1jXIhpC=f?{L;rw~XONoQYVhMMe1O^|OLM!!&`9z6%%r z5DIR+VW{+KDL`lPHL+T+hYUOk;zySLL_X#_UHyp2gM_q2a>>QcGS1suJP{CQj7P?x z8AU^vD}Aj_c7N6e6}iTPCMn0MJ4{(nSft72(vnT)XnaTcHI_bVd8=v!S__ytH*!<( zYz-#8B1(Nq@kfya{NaJ%AQ3+3?arUpQSUpK`)VV|bqw@PY==wnU3yaOoKBz`CTTewSq==!t$oxO^X`fnal& zXzZjFp_98ehenrGFQC(I0wRKPw@|T9xqV$(t6hFk{jLs5Kl96(ziSROP2tt~M=@Ss z!|a+1@k=IG<8iwer)#|Q8o&O5nOUXj#+%f%r9u>w&j)C6-vVT^+VW3TsKBMh5f{g^ zN8fgR1h2kb)yTn46A5U!!e1vhFk=D{q6Bt2E{6{mcTg$4}zmH(`C60LKVyZ z!wE5`ElJN>bCEfzPwL8a+%uHFff~rzsgh&57xC9s9*Y5>z!GjUt)el7$OuyP_eQ~< zA=hN{c>lD!pN)eqmVO}xF}mnEdJ*y%BuFX=`kfCEJed7Y;oOA=T_)?aH+Yl#Nw?mc zoP8}ZM0t(@jDR0g3gis4q%DN&Xd%9qndO!~hb%+$tNifZ36un0StCqW>}Y4LhvH`J zDk~KA$zz926JW@#b%RR>iwQ(;=_Io;#~!NTYhh(BaiosFP)}{op*>=>qusC;ZvI#z^_GFDXTTD zJ$yj6VS9XndCB{<7i4u{TubfMX*KKE$L3(3305 zib|50-H;N-J$_;!u`~7syT*P@)?sDG(H?@ zO+kY#hIfGY{f`Q+lbS7krRPi2*J+ejKNW6Oc0De4_b?a<154;FvtbOz@vJ^i5wj#R zRe^;`;qL)0r(?JTS_A1Zv`0Qzu#K=LY`@6UA=P#cGWCKO|5-JMk<6hEYLQFPK&3~e~diF3ArkXmK5uJHwO6~~QDQ^}s- zwgXoo6f^fEl#!~uL(i(YcpPaK5Jmo+cXVIc?H}J%$ar2vVIvJgzklyu46J5|#US`Q zqiv9J+rzr257L+f$Q%UzyBj#=A*0F(dWdNhg9Os-j38IJQ7RcQY08RNUN(5Qv9Y%9&5w&9LA93ens<_{?y0~@Wx z>+dW9KR=I>c^>L%!Og?vqqa1T-t)Q_i?Afy>(&z0O zC#s5S4igBAqcY>sR?Y_NFD2&&-3e2)x;{*p&X)H&iWbT{Rckqq#9G5OvC}Tf3>Z4c z&}o@#9~omEgspYxgYcGy(#??7j+HH*t)84Chwac={d&10-enQT!;t-FfZYqaz)vT&2gO5AC?GSD z=MEjx0wQQ}?ox%rSnv(^umt0Nq?7Yfa1iU6j|sw6z=4-`Y@wu8uCG@Mp`E*~3`~Q6 zAm*teeuNf#DkG(m+`RU;reG{ z6inH?6?(8#*=6on#n>>SJcPQ>8`Jej7+Ogso@`aMR}_%si11ET7JGv-2B*s=0t&nU z=65*-n^0kqZTA7Gj6D_>7+lIyx9NhXP@b&l?uJ71Es5{+=s4`x6X-w&4vjBq>#_*y z;rtBEtylA}EL2c{9;&3{vQ55xe&g4*>V*?Q@geLe+@KTS~+D zxmJwUAd%h#at&H-Lhn?m;{B=|=Nsy?^lr2?RbXRunJQE3fvWh2r-p?Egbzozv&&S^rB{=?ymXA`H zGDt>PXe=+Nt+xVbr~stJYbrKR5bg~94(DnO9XOZ4Xw4sLB5EiGMBpNmik`e)ZK=M@6Gq) zen}sTYmPphyWhr@_IJ(7H&?8i!UQ#v$g~YD*=B8dout_;UGZHHERq){`N`Nl6@xfm zGUQRPiW~P>Ii|KmD_zJht&$0Bd=Cc2PpB-HJVllY4i@iR7Qd%vyP!)C`hN2;Wr+vzr#6ff zSw}QWvJAz13P=vmX9o7ChBj`6`+B9wy|;tJuVojIPs(5p_7$N7bNVRLn{GsErw@2R z3|<$fbGDt0D5v$eG0bABrd#aWpY>zmKqQh8P0Jq}Hn+ZXXOw4Kv54#X9tg3V(vFT{ z|7tB?|BMva>JKf{ZD&0_JB~` z&QF85l7l!{RS!6#1dJFg&SI=@i`6In_^2`#$DZ7Rt#ZMNcAKPqW{?u3je@4RKzk8^ zvbPv6KP%C#q}npv>b;J3m$%s&i9`_rJeBC?o1e&B^Y*E;%gR|V3bL;o3T-+O%3JPacI37Od$E?NA>!kbaEOS?GYKDP%&sh2Re z%vM&`P1YpzEop&2<7>CR+<~CDO3i4HvahHVsNX6bi!eZpaHci4dTkf#XP`)Gw ziuCSHjz60toj1T$vYNRir}F)Ntv}MYcXZU5_&d1JNE~Z;1HbD%A~hVc`bd0Uox9#^ z_qi9Ucugv?zyc6-d97Kh0@TcI+iJL%K(F#*(2o41U?z8s?*hJTj<1u8U%MDt6|me* z!eu$QmTq&4f~L$>f_yKT4u^PO?gH?E)zm~>$F5cM>LqG^1*f}C&&E64N0(7Yd{-%p$2QH46*e1( z<_x*BifD`JVAtFAPN>Y9Y9PwPT&k?874>(*NLo0gGOoC^J$I*YD@1mw#@ zmj%F2%E?7*H}#WQ?9Wt=;czhROh@SdjiohN)n`*97fj-hDhF!h{>PdA6U*d#XSc^$ zD64f)I~nUAIx&)^!-1?~HLTW1>!X86W3+?r<>4(&I!?GFTg0q@Pl+AC=DspBvtuon z7Mjctc2wW26f5`G1Z%x^8US{fcg7`}wrh(-sEkCgJd(62o(CK({+IL*g&T(!zNG=} z-(AXU@@(XUKDhhnM)f{Dq+b;XLtZfPQ)J6j)>3lg|( z#ul7ZIkKNg##wjFPUA9-bWv$0>k6Uevx|`&GAYY93wu zpNPErN}{l_#h=j(o`Dv^fVFf++4OBmlXxs?80M-QzJC8(?V$UwO1&Rk*6#e;XaD&E z%I2rPMr{o4*mMj3Gn5~7*m$g)Jhv5XhIukHE*q1HrcPR&#kUla+B-d!&(*J3ur)^? z&cS`fuU!MKgq5vt*YW{$p3}Y9NZPqa{m1P_<8cfLhudiHj`46;{$Ga2A6ZCvq9gn@ zGMG@ZGO`uyNHlK;!)_{IKLJKSsC&zyd`1>l3%FU^=lvNUB&j_dPj$>_sly*nmZf`m z+xToC-4eSTUE@eCnyd*&Zr;Y2fDdnQ@Qwau+O+t0HC_6$hKSxD@t0juW>E<+O?jk#f~+z+tPQbit`UtA*QDzw~8s|dE= ze~9X=MNWcGcCW}YT=5sRU3dX?8PuJWAxE6k08IsZB1HjU#{_clw4(o#D7yph<=(Q7 zBzD||MRK|Qi6fN%ce9kV@Yn`PHLyr}t6mC?F&@=~m?w!-j3eehhbqB7yak+H(UY0- z-yEwB5QPFlH}FQb_!ThaaKoTI2ZOq5hrd*1a@VEC4nI+va1Kfiv|NPDu2e>FkA?~9 z%=lbNJsW4d;X6>oL>?hOUJ3b?Ueo(}IUBFYhWvgPTw`~Wp#ExZc{-B$5`m7T4kRJW z6qTfh#l;&P`Tl0Om04;`Qq#C))BeF1nm~fFM9(>Aguxz%TDxH-V6&((Du(^!!a+nh zI<-%5B3ox>@#RIq!IDkFGQZBhe6PMDy;^)|&$(poRH&X2)q6YydkRh*E3cl6(CIH! z>^Z-ZJ~3E^Cx6+xhjIlvCYAHD;_wR7R3c;o%WJ5_*By^?+w-63m^?XzG^Rt9Z6%`h z?qeBm2JKw%X0)zhA2NRZ{v$~vqd5Yiv7duzrf%&|=zwWDhG3Vi32r{r`T#}8Pym?X zmtvv~cM}+cQ7b5_fNr0yza1|Tb~C=JW|4ufL-EnCxWw$kHm~+SW)vPV)SYd1^)e8z zefXRRcK-XL2jL7`U+KE!h{kBo9if90NC0t~v%Rtd{5L9+)S4ND6slUj3U213YpGe^ zsED>6eh9IPx;}Ew*JKAGO@*hx4b% zG?4c9GB|K$oHv&0$)JCe?xb_8mI}_O2X7tk<90$>hyEJ~EbqJO08=ejwnQLCe0~YeME{1TKUz(-6S3~HG*d)uG1t^YTqBFQ zsoT1{N|96j{X`&5y*>CqLpHZcSr3-%|nf;G2H z9b87h2x9*7^W^gtB>7CcB!d=a<@qON@5T5kBzMBOsH#x$2gElsJYK+Ae~fvd7j*E> zp+Y*(LKiZ!y)LjQImznj#N&zenM$&pQi~46+GLErehy|8imCoPKF=p3xZJLW^AvM2 zrBW=NIgGp7NXeqYGV6Q28R~0Lr%{378f&I>Xsuu%jY9Eq1&WRX!bu#Y?tzS5Uw*}M z!)&~jF{C8(&aKKvrnbCif|jcwJYB$BOK-Ee++csX;$&QkK4y8cem^rryZRp?^rMDR zEzZW1@I%FBE*I57?u*$nJwgK`^!RN5SSt@w?G;fJrQfvrz(5uY~t#edH4 zj5>)*4iQl3*JJYX5c}qL5{EjDz4Sh{R`l*Mu?6oUre(eG1k#AJoOow7)dWrWj1m;4 z&uS{RRg#&j6`uepZn~XDNz9a9CEX`#tv9D=*zEO?=fC2@co(_Ih9?w5MdxDn&b(?s zGnAUZg4Q0Ees*vSs`R2=o9HUF(p7&ET^F=#k!fLkK_7`Ww_|Y8)CKQ{k8ppvGh$rH zh6Hvi(oqOGo;9YhyZ~6KJ70&e;tvhNYO^?gqBtMcj?Mz{ikRy|qsdx2KEb|LNo{AEERGKtpa9Rp1Ea6b3ZINz*jxO|6FrWD3~=KxApLPx#q%7SmIrV-_JYcdZR38d?!EA^RnIq`FfV2X=(K5g+3_6-`{&Jw1(3a zg|veS0|J)^%&xFmqj7{h$YM(=;AyhnaX}%9cIy5_@f$?;IfOnG?Y^#nOp+n= z4)Q-pacPWp2w!fY44&c9^m`)tHU@Q&x*}Kmvu|cJ+;0IEAbyRg#RK;Y)nBckrBr!r z)+6!fO+vUmJvwaVO;4Ed0KmEu95PN6#D(&m26*bIMZ48umw!-N%bcX2XEW4U`6;#@ zWZSoIh>!R4f!iV|(bJzAk^fc^TnB5EET|079MI(hGK@@I5_fx>=%~&WR;nsX-?pnu zr?HO3hTXiT&TQ5*=sy#TinvVbZUcOEgQe+3W{Ye?GPVG}t^*AIytcP^?WqHlX$XPS zlqY}cICmiuZ+5mTcv_YNIl$#=q_Y8)C4B~{ho34S_URv)7mitpo77wPP7qIXJDZmj z0H4J=U659JU(P;WkF^ma0}ciishpH~p*0@Wxpj*Ia#uQGrT}TL7^<-J(-#Oge7078 z{9+R>OUvEiP~_6a!d~UrH4nf|vw3~gFD|~l+KjM{5?%|9Qf(A;7L}--Cde(X&DXhH z2JWcy8K~3Ut-2G2g|kSY%=?m%eTh;(S59s~BdPM~Q#c{d&t0LtnX-nU_umKK;;-!F zKeBf1 z+{;3Qz^zJSb#80x|9_ZDBk)zck(^D?EPXDNINBgeKV)Ab381@}O@FEoG3oIn6+JGl zykV(irtbW^Ae_2>h)*2X`6Gx_aiK|ZC(;_rlQoZI-_8s6*j~IqMIH>Zm@UEp!r|Ug zMg@EczFb?-jzyHgk{utqB(WYNPjmvxOfQ~0`Y<#5j(0Gxm>TxrmjzvhSoV_qNQ(_- z@$l-kP}?BOmsPvZ-`V4k=jltf9zM7Z{?t?C^wM!IGjg9{{%!Ni!8_ z)BjKXri%3!W8AO?ZKj*~ljj(P>^!N-l;utSsMiY>#8Q=WO7&`c?_DU5aiC z%MfVxnC_*dL~AvAts!^A7->f)6@51mC$OPeN%{tEMo$IM<8!r6C`)}xdiPr-Ym=pTFT;1F1jh=1EVskFoNT~Y(O z9W~JHsf-G*$cu?7MS5r)lgiEzz#+BScOmA=WDDbgB2;E7bIpN660l~kJ`>B>zR0V3 z!wM%jM(PNEVsZkl#Tbba<`B_BLilPEY`wMXUolya@K`frw*1oR{&dq_&-d`-Qa>@i zHyE8IUSH94UepFtjr9lLYmu_WNW@JmJ*L1Wg1NAFiUt(4i0AMTX9UT?qk>7CV!=us^5ay9|Zi1y60iEe_zZ|3Z2MHyTPKJ#nTksh&pU8q2Z6 zftyZeP{R+d%%rqGYv6GwRX|(P4GdbSX(U$^(4D9_KaQH}2oN#`II~~WQ>xD~075b_ ztizzHsf%KE>TapEa>ZdLfIp=^rt7J@KAeUS#8>S*qSJOHK{;1WDxjKT?8#Bx<9Q}<^8Up=;9HR1%=S8|O_Q7; z&llc$G7EE>gr=sT%~Aucm|F(;#Nr*h4kJZ)1xZdYhrq@Z3bXyH9 z%%(j=;s;{M7SJKZLDK%!zwRx!5V;pVaCF{7%02M?qUU2qoyP_*_E|6mmLVo=r#@ z+(B5#V4PiV`LPht>>c;^)nc2%I^V5cmz}E=l`(PH;4T-me0Q4gfMAQ3d_t-UdwiwL zaA^q(+AtQ*b!_3y0G5Kj>LFm7Sa-qwAA)2$(3b*PXxDR?GCElGmyZK(#T&qed*s4} z)G=}1`kdL0A9=HA?}Cy%U87_r+VDmlTmvtCv9k^DkNrK(y$BB#P@L19GHyUi)ZU{w zRHsvBarFPDMPb3z8q%VyT`xJLI^25{7TDsEowju(G*0kGcYNjqO>XN+iNtv5@%rX+ zJt-?LFhTD7pgL4&cHFmU7FPNqgej?64i)SJ0_+=#f3(LjLzUetwn|I18dvwZ|BWcw zUpr(62U}bEM;t937~yz9y<_n4XmCeEow*&9o}uj?N}^uVu1OsE$l0iR3?lvO_ynrO zZ)#=g*5yU$P-ndeS9%K)o-8vZ>~V*L80Y>`#LBonVj4mJ(> z=WqMfPe=%={(J5(PgzGtuERDn4k%yo=^V1f^PqMBa4mR&+TyN9I*WA~Au^r2J-If-2T1^mC5*3)<>XBRa0HLw&x!uA`!7qbQbse;AZgX^Da4Qd>kjLJL&f zNK|c+yVzH@I5w1BD6J^q`cHw5=mty)M(x}rjn{N5H9uPyGFr(h~pSDTzIXgG-?2jrAA@<{K5$i^mf)6YGi zk;MdSgKbq#V4f}TW)%%s)O(Zr+LDv33Wwz4(*!nE$?nVnvB+X*rfG0A8}kXqk()>P z|9_0NkoH}HKu&}mWv3A5MIZyVcTlbk8&`4w@pLFdV39T%UvIIZpln7O!*IUib{U-X z90YNa+Oi&?R5;*Z#{tMevvvb-2nLFXq0V8{GrH5V_DWL5J+HevB&+8U8fN_-@-oPk z%^Bg$2%k8dBQm9XHoeNWOq&2GUYcj8S2C_Vd^KTzSoYzeomZ9HLTu4xEHJZTi&a<#1v0J*EqvTO}(&Dn$0`$YKs63WO6Ajt|lP9cQo=C&*&?L zwZ)P>m!N>&;~^Hu-3v4`&{!nj0hX*mu=##0#M&#fX&cI%QTh;dtghr{FRHTz_oJIn zfo@sJymW<`Ubxc`lJqVMU(3pYZp&Z5F$$r$yc8=}t$pLa8_*?cn8C`UjsfQ+G?kD? z$E;{Nf7u3GZ;>4ubV(|KZ2hLZ+aFW<7hNp&=!q=oxi%`{C4WOUJi^S;#`e^Fq_ENE zVzB=)(+y`vgU)pp6WRK%AmI~N>>$&PjnId&G8)a z3afKAgX@TboHi(6mx*(*uTv@!=OE&H$k$MB;coxH+Ke>ML(%e>)W+K5K@>ZmUON<3od{V28`msYvOPilQQQeYX3 zw2Nft(j7b4KPw=RtsOAUOpg_ZYcJgm&D=WTp(C||u>bo;N~5-E?%z59LR3ZJ8`@RW zu(;+?W&`W-9U)|}h%2csI-QbJ4F@bzrW<=h{<}!eXc*uVbDU4AmKo@wybY!$D)=%&OC^mRk2(x zOwb_32Bl!|iU=JDv_?TkhztcI>@(m&kY|(^SIxN=g#`0;QN0%UJ1{sx(WPZO=*c#` zFWS`_*T8j_?{gW?X|K}n=%RWKR6t)XH@O)G{&&Jsiw6Tf0UdJ43FLHTJmuEk7T{Mo zW1v+pzB@ZXBLa;P0V?RDLQUyxXirKoYLMM>+$j_&sSaqHeB59k{k&0MV=|Z|=OC>0 zb43ojU>PD2^N5uM>}KAQO3?P=1<8PQ4^}c1bq2+lmI@efIM{00`yL}HX;i-Sy=hoysIGqLP~LvJ64 zS!CWVHlG$2Lzi^9POpK*GB#3!UO@}S_UAkEYk8E>u4r^SpV_rk}%zRa+%wShk zuUgV)X8ap+-2jE5_j6Chl2MOX%-Ajvl2C$Il@zCYw)j)?_h7Eqt{<-NTZ$As8KPRB|xvX~U=1 ze)Uw!1f}#ag+u zJ#B3W+kvxtenJ~9W?PjKvU$!+?e{{f=DMYy>5s+RzKCC=ht)2q4e|bA~u~8TO zol1Z%C?Dq)N1qeCIhJ2S&a#&WP0RDmj{y)hZH*pD+8poI0dC+w%zCF|Y#8`odRa}# zw?_|#R7M9O+VSHTwqLVvLst)Cz66h0;>*V4em}dT~7Oekmg@p&Wj}gv0DWe%6wLeO-BvSC!nvu$Pc7D&=?mOwSU3RZIE8 zpj8I@rU>-^?neV%GyhV2mb!vN0PF@vt%=Trav779uZowu8&x=EZ7OU58F8RzGxO+q zHzLJ{o(~r>Tke`1_MoK`3|f%-)W>JePhn;qbFZU?$OGPX!Avlsco=88*S)ZkZLyJ^EOyh9empQ zDQI1sjtK>vnm75M#q1*O9c4iTe9!yE`-|=WjAPqKcPvbu%49Yj`qq3T2Qj*BT1OHD z+I-ihULfIRF~Xd8Pt0{HcPPoMox~(~1cJZQmr!m>EVB|=^_2D+U(iEkNI^s5Wnz7H zQd%qXn?yGUD}+M4ZaUMI{+hz;JNlke7j4tmwZ<~-AafC@mG+o$fqj8K8kGOzywQ4;Sq3rZ90@2*pXiZi-hH@GA#! zqcf<571SjoOCq~309;OkuLMM)D|v6r5&P3uyB4t1^A5=(Xyo0OBj)Y(zRP_PYZ1p3 z2n1*8M-sHv4@=FxsuJN$Q&n~>$YYnp{mtL#VE5tV)gBBbwa>^IAsgp-`>&ihAzH?^ zf0)_9zI*T}UjclYOM|WIw9VZeSNbZ{sH|(rw{nSPwHvpxJ3rkJjCCk!7ML+;a#_<| zE6%9r&i0M-usvhjQz7XWoT6-$ZtPT~)=*EHglW4_RZ&)K?E_*QK`Rs1xpF4>M{?zf zu7H=#NM%6TaPrCvT2_XG8k4s+FyfprC%c1Un!vD!^!rImQun~Ph38NoVqb|EmW%}G zm9pbm;Gou(csD5l)Yp=w=YeqVY4fM4bFoec&SNDyJM27T`N(N=!1_&Bxp!N6xu?;2 z&4{vGR}FQgB=rY@ukx1zgz@B)Xc!^wL<{&esonMAE%}y5#3(t?bWIUJP!26~8%Mw> zY#j!&{-N$mC^ujk$4gjN)CQ2$KA-^RDRcNx%88?71D)}W#K1Sw#0Zj407~gRK#9(F zz?a0g7YsrES9$gAU>%$Lm~Led7>V{LM)=Rw}>TkAdZ5w^M7r)wLxuId{MiI`Na7XRW+>sNU9pM2MlnhR|Wt{!z)HyL=u$UL0lAF z3g$cOufKAN119qxlo8LdX98T2T& z;8>+XjwFNiR?m;4q_+n;d1C+5XDpLK1`cO6h(5)cr|dp2z!{>jJmX-28stFp&CMk? zj&5@R_3q~=&vRKo(3Ys+ZkZGDog?xL^V-s%u(Y8|t$K8ns@gQ{JOBQ<3V~G>DjzNJ zii^t+Du60vQIeO48~~Ucs~AWE3ix&9>REsVe2;;1#tD#lHZqXk;K@g+b+NlhEtz;7 zNf7K*f&4srqw@}tL!eWlyFKJR>8qTVq}JDt+ADov#=IFVq)mlr1imNqGSG;Yw0~Z~ zy3KZ}QeAxHj#Km1BmE*Iwupx3I2!*OY^FKO)@hD@9o(WF%PG?pW(vXsVK9n$?O(la zwzY-dW#>i0+mbB#qy}C~HV#b6BqlMf6dEsLSJYdSX~Tw+>bQMV1mkuZizh{ITW`JS zTsNlst7yj;KVB>FrQbiyTok!kkVhpv?0>_G)>VN(x1M{C&DlXK9{fW;1z8iC@y3>( z#zn(_4Ul=S>X)U3pUSw?m%Ps-F+--A0tfZPpzy@qXAc45eEWb))aQ@rAg<82?QHLY zQwP(m^-D=?+HmR>Qya{(c27nCoXhtP%eLw$Hw`%kQgUIkwhC^iR(-+&K3q8SDpiQ5 zL)Fbn`XWiT5SdQ6%KucdQ!t5HDCni>isO16V?0}34m;OjSx(h}3m7CVse7N}OL+u{ zyM{?ESyEdHRL=ID%|vyQDY9k&NKN;`zNO#$r8bF8`sJK;lBZYo z@iFhhQECaC=_qw7J8Sgiq2{6-A+7Pwb$?)Ok5nY`(b`c^4%SyS&+y<*E(vt`{`m1F zmm{3&r%O;~0W$DdzqcF*Q<71tbySA6%sdS%{tPxJ=zDn)DxW1%=Gq>GBoe(TiqSEw#s3>to2RX%PXPqR-qt_i3sw7S^j zWW{|Lz>;&5wFH(p6#B)4$!R*cqdxq^jUH7d+MWXQ--87VWv*A`2QDQYVraQ#f?*vs z3LBnvoZarbUymf&6-QD^!}m2kK4$QnI?1lbigotT>X%{}HeQ)jMzPym`pMD~A{5hV zbpn?iJ%4iG(09)>%Ecj`KY62rCM5HCQ;XpH!p!DWAbcQ|RC#k{JkXM<+ zxThboa4@Ve0ld>~35-uJWmWD3*>A<-Hli01bOmq~p@L=jh$tt4d%t5L4;V$7a<(y+ zu0~1kjQ|(3om21<>|3w82eja;ksc>S_);hLwi*r0_rA{0KHB{f$aJ?bJYO46h9c>% zNS)(z42bjSRnLJDsp>mEz!!VB<}jM?T7*N79Xrcf#F}t&k%yDl*DGVFoA0iO^Y!3* z)|9`zm;d9Qaa&Gc;qVu_4e`faa*oudbMuyKOHsMzmZ3?oPD#bLAd8erA%f(7bm4Et zFKueh+2z%EVSh*^k5M_lkjz0qm$w+S!e`=@BOWRG#8z&sQ-$g?j=XfF&_XOEbspru zA^!4Yc!O&4Rs(OMVMX@l^fW8vT`BYg=lc)Y>ZoK|)l?b^jEO6{-f6repQ>+1w^0~Q z1JlG~B4=-4!()z6!p3EC)*Fdw|F;bu{y?ik%T`*dWa}AXgS2k=UvyOtO%xRf#rqbE z8Qg1rj>8VoiY38kH#W&MrBN|srIAlNtj`ZeXt6P8Iq3a{C7Ua$ex;Ej|9Gmepo=Cx zz+@RW^Y1-cIYZKL~Zx59^II1*}b((65qtYKw*q<)~MA@f^?-;*NUSSEL`}NL1hZ zqa(CdXTr-McPg{-Ul&0LLeSB^T}XUdPY77VlPqMl-geJa%%}KgKVLX#G@A12L)qMa zWMT$Z$+s{hAAAR=MSWkyo%X|bXEHo?pYOpE$p;;4{L}}wji+G93o9F&}kZh z30%FQK6;e;{^uG*xVB%{Gllbv5}Qq}n+rnM_Tu5}RR=YdbVrG+}~%a-=N&uPjK0C(GnNd;sw%}K~me#`O>^X?N`sD5+|7l2zKp>h=Mmtr2+Gj{Qz z&sg_ODhglB?_5j=Fin0CHd-NrF1P{tRH{1+32 zC03_wIFIai^#vIRL=}J@^UwMk=d8mLl$LdsP@R8Mj@em>Vf_A}z~XTu2^z`^BHkKU zt7O1c7SHd5+9S}r2pwq7^IUN_4LK=aaY-aV{|~?O+{HVG{L|N@oT%jb+PC)oal5k9 z`a$WesDZkDx^SzLF7C3*vy7P!vWoPO7ne1wJ^UhVF7z>G_J5oC-8(S6S5npej#Gm2 z@xj$=$#mA=tfMa{+e9t+jUvHE1YHv_{=6mo*#Pu4%iw-VVG*u=oOaN@= z;vTgGAIbcm<}N^CS8yK0UQnD1V%}hoz(y>o4)LOHPv8GG6<7_^*@DkY!K+rdw+h%A zUl`CZXSy;ZZcd^8z|{GGh6nhU3eza(=4axrEIcol?q@k+p)*Dx6G{1?M1mxTvB?CEDoy?P@gUk9r41 z3=WMZc0FrMoeqleAoV>LK!`DhzHuYalc^M!%2~V+;F|8ELSNgM))a^%tEL!}mo(?X zO%hnY=U-m&oW5Gb!Vp~aCH$jX8YYWWod{r#)$9T1{fzGy33pmYb5e0@MjeghR`&#fMc58h%7>o7NyV3muza7$(WmNnqWB?O+-Dx-!nl({<{)hletF* zpqey|Kn%P6l<;OcGDQL@{>2s*;VtZ;!xeJjytGJwX#^--IxmA31j>0kJ&c_FGtb@& zad!!fuvFfoQj&!2Q&U@P4Tn)^_i%2sO);#EZ=oGI;>DzX`IF4vGrNQ|oiDGVAw%Gp zE#VdvQZBjlWYI9mkPi<|V^nk#?wj1`g*^q2hR7M>KQB){FYlrRKf>(+DZ{yhSSb~{ zW+oYUhPe&WQdI&`dq2U5{D?!_c{5V>t=Ql=lZmdejA)e#X}iKBF2kE~^&H4jLgK^E zwloKjNT2iFYb+#K)T$NrffpA0e=VjHTGP~MUKDZ&wBlSO7Uk(w)JOc>xN<}9rrjkc zSW=`79(49q-1I9KdtfwnRh_GoaejV|GIw`w;{V*a5IQ_)C|jBKlJ3ZganWf$E}yzuu9zZMEu>;oQRFT?6-M-~_`s*%KIJkb zj%_S91ZpAuvI2}{1D6-0YH4fNcuPp?d;?G-1L-j0J5sszRiU10dVH=IF8tFu3hP~B zRxG~wS(o^_?06%JMXTiav32=9$pSfd{v|OQ>`{8wxrq@!NsT06nL?U7FIPVjkHfGK z9JtI%%nekiKfMG+P~7oZWL|w?{j^?KSKB6_ zxdyu*Tv;YS$rYM))xQ*dhheM$mBB2bib)n!uZ`Z=#Cz5!CL4Eys0W%j_9fxFiX1K}$EIw_nAmM=seb7&r z{l!NFQ8%yTG#0JZfr6*O8e(h14`skr*TQb@)A2s(?2Hil78&_*#hf>xQQh1wu0dh{ zJb~UBm;f%EtLp@5S*4m@g^hl3&3od}2+K4%Db+yuCi`rIW%Ks+PVqA8M>|l%$Y=K6 z8&UP+KQxA6RW=XtM?t`;E_cAG9Tl!@7(E0aEJ0)IgR&w*qbcZw({_ z@0C8&w4~pis&BwoQQhT}c*HDc_R^uIgEVoQ@48x7j{vZhUrUMJ`S@<&{P35iRxYvD zS{4Q#E5jnh1rBhi!mGXw+pX@6maauBK>KT=>w!+xdMPazpLSIH6%-ZZ&-JTcHxM59 zRyIG(a7JAp1>W)zwcWM^@MX@6fa-EBVDA8kg(;2jqX`mkp4WBcb~F?|1_%q1G<}Jx!utanqM5WB zsbBAq?*bN@i+aXKkbl7tgK>_XP+R2Q$5rH;J&n7?AK-_lvPtXsiv6(_$C-_hZ`x)Z zrLEd+wW^yA<=JMAGLA5e)r|%y(u9{fDoJ}N&&yYn$ybOn&hpz`7WxdF56+JMK8+m5 zAV6o&BD&h2rlLLY;Zn{Ws$at@;sZLKJQou?D0&AU0mms|3(Y(0tK9sBqJJq6eoixo zdp@(vVV+7-#(~k6+IO#-TDlx;CS)x#du>> z{0W++JNFRJK;g**Ga>f|$}?vPGA39g8uarN>uh!_JuqVcM~uMekJ$JtPxXe0SycGA z=|7rRkid+>b+C0d$~I?Ww<(mt`bAakysA(8W42B@PCvH*hCv6bhLG(;Mg;r3S$%Z zlyvtUeK9hgA@Z19CmfL&yg~!4Rv`ttxw-B*mNP6ewlX33ux7_&hcG9X3{By;0yYIeiq;I+_Ukh?N-n-=$O2 z$)f!%J!~XjJ|lZf%UlqhM=DZL?1eX$kb3`-GX7G`m8=1B) zz`SSBNNLc&IOnmR%`yQ;vGr~rr`X;2?%rdt<7uC=yl=uL{bc03>9^srZv5NC zxx*dw3v~!WYSd#jZyp!(0%M>1ff2tBs&@hz64Whh;<^198Wb0xquvn)=A8q9BxLGW zIT?3jdMjQ)1D>27k~9DUL&wwE6Ed}Uxb;pJpdcY1JyW9Wf+6f0ShJ>2!AY?t+qZ&% zZ;H+021d~)z!Ku9Hp-fo(^2D4Fdt_(i+Qdm8I8thNAe*s7f!U3$xI2gm+F9-CZ`?&AYebM#{dy4&PyZuV*iWAR~1X4>fExrOUDO)m1;!nmU+YRcha9qmC#Z`R8|3G=c* ztAkJ;HCDUex7uN-$=X{dXDIvUbMlx<{UfkRU)(BNwh2Th{#3NruXL|l^kmIL>5%Z?* zUT3<5lrNErOvIM@&*eH$U$Q?2uoj2_xO;-$g9nkhCVD^YJ2Z7u{IQSR%a8t?Hi=Q9 z;5sngBPVYdMLvv#^(rb3ay60N!YrutaLAsb8FPfC?7;lvk7vuJW5VGax#g=>U4@47 z&H}B*!Dtp+1o)tTt$#c7B)tC5su}oZKlqGdr19wK`Nb=a4LQkDeX|DKj%@rNOJ9o* zM2}VwnphXKK&#_aW0%gff4!Umh(3?h!u^3|j@LlTOQ#^5ruHm^zInGQr$bY1BxE4@ zj*~1$dehRNd5rk>uBV2E+jWixW(gC-h3<2F)}6v&CJgvZo+2*sB|^`?5rm*cfd!BR z{;ogsrqxb+MREeVz6|wL2}<#=j^xBCqOhXeZs(wH4zwq(BDPeK1Lrv8XR;WB4Y*V_ z@qOTX18Bw_lh|Wa^$>Ba0D1RR-@?qN?$KvINdRiYS?1OMgWP$OLQ|^e_Oj{G2&EDU zPV%(qGG)JCxkqdzqDsa(IBNCeJB9LU)aecXP$QxK%Arigawaui*RyGmW{aCB52Kwj zNCeZ1T4ElGngM44G4aW6)*Uv~UH=;d08OgRD+XVXQ$b@9zVzuAjb#$awYB$%*7eRY z5}yln6$)(tD``k(xNTO-QSl0Rq`tcZd#x-jxkh_vumE;qGmB1%bqW3W%kfw>(`eO% zEC!_jRa-)Ymp^`s9PczuT63HhefYTYQ~$nE|VeUfV~(@36t3{UJ`0APOY zQWLSMTgKi@*b5!Jv&t!PdS3d_Do{FmzX|d9sqG7S`NA6}jS_i18H#YaI=HBUo@$2# z?&!VzmKlW{T1Vf(<8s-UfQu1+#D>l>h4T58A(`xC{NIeLF!tf7?2Pv6kkln0broFk%&Dxa#S7z=5q0YnbrD4aTncX;Da$0zPi;bbSdGQn)9Wi}rwr(Gl8&b?2@+b$(W zlj885nBt=p4T-$(ETD`-6LHdOzhLeUtLAQcVBV6rEr=lnB^i8$5$fCjU0=%VQ#(0L zPX<*<=dFY%wEk!N_+B6~2)(sHO|(h+&YPlv>1!sOxozmGq1Om7Txllvg@taS)dl02 zXU9ON8v;!n`rl)g_d##LOkq-HIWSA+dx2f=c6@|IV0cZ)I7m8^Sw9hb1%gz65`YuF zdx~y4ui*4z2;`59SdvM==HBK%_wc6C2z05uzj1|{31jQSecBn0E^ma< zyp9I$LoD~dg5{Dr7qJ*0V>m15W{}C*T-~ZUeNkkfM$io+?6zh+lgfkv@%sQXgpQa+f35tVXl84IwJ9)Ix2fBI=biWie}3yy%jfL!YdUG4*&|Rpb<&& z8+0J1n&%OS)ZcRpBc^gbBH}}wm|kpp`Ac%+a!yC)zM0_@2;BbC6y0b9ob>O!j=c8@ zWix-kDd|6&sbX|R1IkKbJ^f*CFE{8o9276UP_=w=O7x;J2C?Sc0`yR7r_zM1ed*e=WnX*X*9a zy3B`UL}cC-D7ybRaX(e=NY_X6thYuX+xd(vU|bw7MVaa)Q^uLCR}>wK{m!InqO5;!TBn?yqXHa8RsHX(>6 zmHly?xw}4tg}5cyG}ISScV-DIN_m+74eGR^!4nz&MoXJn`k1fh*(s5SL?$lY$f-j3o~GZ0QNi%x%P3{A59M{< z!v!NAL2|Z%UX!^7s)sHu2omrjF%=V1UnM@_gH?;3A?W2^>FDhcn#pnHOXOXh0iJoT zxa@mygIdFGeccF+|#rzr|o>cJ;E3MR-aMxefB0&@=pE16f0lo zxu+AjgJ2}^LPocSysXcwBmu72BGK_1oOz%%%Dy_S*KBN2+r_L^i9KB4^dqXQIf036 z7+KDSXjHLF0iS3o%d*WN30V&l85CWGeDk+(277~IMvpJvu z76Ui){*jBsrorO&&5$Xtvt~?(G(mm{Fd0x$p-V(S=ki;Q6Kh*QH`8C{t+BwQX#ozJc4<>S@s=;TuW-bR%X`(`fEEx6s>9k^f}#*f;=+n zo`Pwv5ymZog?Xxfk_DRamuMs?hVdOKJu*p==uM^1&@@nryvwo0rg$cT@{+^(HY^cy--Y-0X zHFv)ovF_?l(yj!@1}|54B!fj(O&Sp=+i!r-cN8ojpp<;yFRHk5gsTe9Ez^OYnAVo! zwhdVoD&Rhkm^AA1_Bc!Q&xCQ>#1ZefDq{$%0=YLSTvdUHf0GK*IScz zHY|I_p5wxEXltudt$mJ?#fWH9p{H^7l1q`rc?yBOf#-BQuiYDObEU#8@|%Qb25G`h36V+ms#?eZtXCM~VdCKy8|qJ9p0+ zO_!8!-dtzfHU|$tY?om=8EEXmCwRM+|9x#VBI~5Y`n<8t1g(O#;=`P*88(@&;9IbW zh`L$*2y3UxMMc6M6RBy5`s+OZXZKngXK9b?f7M!7IM}MmD?VaNUexvvc2JA^30NY) z#yoZ_H;*{?`{ci;Q$P;8)k(3Nb#$i20Zrw?9BnWta5OYd^9><7m?9#`n5L6)^{ie< zF8=Cqv2a7@P8%gqGD`=}9r-aQ@?Xd53MGaw9b6KEHy1E2lNs}hD7{E4;xswJ{ijKl z7qPd=qHA2(6f(xa?{C83@7-yP<^p9?F-qhF=0G;A1GgI)#n+HH)&lqusWvGeaZL9q zJ#bk?9tX>kg~tv71}BKDGjP9&fHMe7D88z0L(tgwm5XWwjm5I_xhD2I+9NNpwnslT zB>Sy(B2htys1%iw1#|YfZmKhw)213fi+@kS-E=KPGdPvQ*3?|ATz+TdpbbSM#tm@? z;FZVsABU`JFf|Azs;|(t;n+`qr;<17yJ8F^P?w(~F|8C8{Uyk9V%8*q!_9<6kG!b> zFbw&WlKTqoEsly+4AQ9 z`-+9T2#l3*rW6SXA1@xDEL$H;vG_AjcC^epE>#!Ew^%JZHo)kO%yOJvQHN&RT2cv4WMDjG5#ZO+}%jR#6vAS9x#!l(CUk5j)ttn`T2G7 z;Bg$}x@ASpMJ6sFHThoY^BY;3;hddG8R9HuKeRPpMzGTb+vUw8gVpLqH~l{amIVehnnG)3WdA z+j4X>E|+7SE2ug*XcX?oi4h)VB+;&)#D}#G*(KMcPdL(c{UDOWJ=;4Du4=yR7GOC* z>!+n~3A!`pq#g#~e~c`70mbQp#R)hD*yq}RqYTN+oa8vE%jj^XrB+YV&!N)MEvOxo&7;J5uH9c8wDgb1{1sh=nUgB));y)b|5N##hGN+ zc&y3gO(R*~O3?!Z&gy1Hr5S|TX`P$i0@hCv);ZEoCFTSbqxvua5TIFLthc=WX|SBb zGH6H0hFg==wc;0n4hktOx95cYg%YIz9Q*SLM->g(ApHMuK~$5FHZ%QVUbi&#*R@>UM0uKURB@|?oAH7j>tSogO>n^E(Q z_ij`);Xr9vK03x#pCR7hVUoYilI4XNdi3w_QSex|N!IoVi&0OGEWj%by~&uojtimS z&;0wq&j*0|Zrf!7h{v9Vjt@7$#SXPi7?QV~m(tH>GhSiIsF`0m)HIIMc_ zM#1^?8V>o(0qnSfutg?;axC$b*X9*%T+%O))(oknyT-XP^nnCwWZ_u!VBd4sGH&q6 zh78xHM0kLXf*>}@gyLA z%vDj*vVYo47U#9DZBtG6#Vg=%M(>LpriG}9gLDv zl7*qEj39YaB@7A4=Th3+)5d^7W0Wu*EQp5B6l~+^Ld+dcipJe7wQL-gkyZoCbK|N6 zY^wAZ-x+uO6xQ}MU*F(fxw6*=RCxu)`vn)WR|d|!V$AxH?~y|=VCVZw@jIb_GLVpSZtS_Q2p^Zla5V8gJ=WuCIO%#(MCL0IBDA6AHA%(ib&#K~+g$qe1eBc{AP^5j70Q|>qt{2xZ?|kVn z>vtM;ln#GQf_F(j<-sn9r@f6`N6Rvdk@43>A@_Wd$K)J?@}!O+)&t9Q;y6|Go5K2I zk{QY`GXG4iK@3-@MWZyGXInYv;_L$!^!gY`F{hSF_CGJwh`+VaEz!Fvo17eY1r1iPGfE|4(&*B-j zaT8oH8$n}o_>G>6?_Zb{(QMBN>H6=U9trA z4KYU}7?2>h0T)5_d9yh2+Vi>>`ielEiJ9blZ9Sfpqw3Rcz3~5hcjklx%KnITVH?o? z=0egm2FK%XutBZ2__vdRFMu+y8VK~BfjHww2BGIb2Y>a#4H#fPc^`|q#m%daa%Q%* zzC8@6z;a$-2HP<^ChQyW*o`4)w#7Kf^Ze>=CLrINA(xV~h_q;WG)o>UW5b3?)tAVCCgj!(5hwzUaC} zf+vQ+Mj=?F^FJD(0B6Dv$jbxq{+F@KS`cCjJD0|qP20%_@o=H=wz}G%I?Sdd%0vF_qRBSZlP{W z81;Wbzyq^S@Xw!4Zi3ahqIqODPz7u3Nw{j8PH01pGO?tf^_68|zou%G-NEZ1|55)e zyqWG1yOR1Jz$xx~A<8mxeiY~o#)Kdd(aB!lm-;of>FRbNA)tXPvi@JB zR-!pOZ!g0TXpG6OCOPYurvR#*BLXMhBPkliR|#b6BjFqyg`g@pa2Ocqspgstmm2E` z9R0!{C9oQjyA*oL?r;?lqh~cGgBhir_WqIj+=(*dJDV5sor4tzT|N76OdZ%^ZHo#Y z%-kOlAu(`Scp@{ctS9ru-sRo2v0Dw{KgBMKPoP*2GhprVtxK`@Ip`G5i+CwZ7#3>G z#>m)>%7XEGL7p^4;ah^`FZmXpDA4l0i`*1NvdOA1h2JKq_hWKoPKH&{P zp&+XT>*TYtf4!IY@sGp(a7FV&zMK5@t9k7xXd^Ml!87-oa5{W*Im~WhoVa$2gXvK4 z;56B!M3CgcBwOz?D3&1v<~L9?$85yH*cLv!Sj)ecRK*70T8cx>$%Kpr&LnOQjG=5m z&(-BpT8BJ{WXq;O-xV>E76&0`GbE-umFyVFZmU@D?gcNH1+$TBiLJl2 zYyFENV#rJBwW(z#L+X`Nz4OP}O`4mOR+X-;kDDED{f9j{+&@F;O>c&IYS&diWylwk z4d%`fm}m|FTjlJZ4?|LEx0g-5P6-8#e~NL{A-+4=3g`Z#OuGeU!5VNLau@WJCZuP4 zCdS(Er!LAU3ewvI^Z9{$^2yg$n(%I_a8uw~5)$DnDgca_o{~%?Mm>`bzyRAZL-xlK z1c1d0is1%Uf`QALXL_tn2#BQk`3+;Qev6$(qP3f29!yL5>j(6p$1bUQ+u%&_^Wwzb zM_!s+jz7!T_#Qu;+zQF&lvdu1zNG6%$O#L^Q~HgsA*<-8uW1$~Zr zIm!P9q;dMnE}0l^EJ_9wHg{7u63fz@_ZT(VFqag?!u8W;u`AtD2#QYzVxSBPJl-VZ zof6*hZchXT2L{1`uQV_x@6v(vjbaeJp^G~;(z^K7#m=eXj`Qdy-S&3`mlzSUPd}bA z$g)hqTp9f+4w;Xs0nvjCmP*lL-uQH+8`Wp~RDr=c?*r^;&?MJUv(R%=z1um?#^HlF zg`yzlCtU3Nn(0_eO{Sc+xn0iIx0K?`46N@d@Meporv0iTrD%4Elx@ykOH->S$Cps_ zX8^EtbFMuUR{n<7g7<^_(Ae`PKy`wzd6JJX;AdKkV%FcActtNVwh1UnAuQ2c(8mUs z>hx!O2pI&SA>ZjjqFO3Adkp(?iaiUWCnmbZAEsMzrHjf6%8}_Ly1=$=xI|(-DP-W1 zd;BN96p==PF4UqNU-!-uSF%9Z-Fl1TAAYU?dIf@0 z%UDk1on!gGg7%!jD#kNKkWR^-+AQA;?$%GG^wxO8l!Y(wPKmhENGmH-Y*qf!k`m&G z&y~DyEV`tbWWpug}JKoJ18_R9cEt7 zSGo1urzto(!z1VS8BG`A7k~RWS4l5K5Dp-DP-CVWrX+rNl$hyo#LTAUjx zr0OD`w*FbDrN+npp!7XI6=uSSK5WXmnDsm_-#t`^a!W_CMUW-9Llbe*)$A~K-Z zo7GRu1ZIaSl|D1tHcb=-V1Ug?#P zln!;rZ_y_dY7QtAZlC1jyW4mrf>A*2?g!hM!xfs7t^X?>)VwPQT@PFltl*YJIEQ}X z-gbEhQauQp7kTr2PA4D2Ucgj*l?3Pdiam?{mN}6jx<^X#maHaE#XpPN_-xvDd5PJv zoT~#~MOJt@CtOWUe$30thWZ$`soF;IgAVK9GbQ;h>);CL*`Z}-G(RuyOR2OI{2eTjzZzEM;PHcsaD2K+4`_6LtgH*CO0jN2JW{qEzlbOXUWa zT|EVeXtT8+j}4&4TUeW6c$SQps~mOW!(ns~Bf}`M{z{>fNEeC^oe(xU#{dxQ;JE|z z)dDwu3{&Gk1RtZ8)iS+b1!K?Z)Xr6*n`j_*EII-5WwHguTm<6L7=>ZKnTd*WnJi4` zs7EKKaLOsZNj07Ht88<^oO>1TU5;7t#n{;)l_v}&-Ruw8 zRk%SPIgk2#^($hEfV>j_Y?-;X(Bia^sLGkjfF9X+blbZi1puU;{PRlnnd6bxM{#(D z@uT)Yp3iDU7d7RA;zE8fUn1+<#gQNl@5h8hxL-Xum}!9fUdu(BO{De173$p%?uuR? zpnRXy8e_1cd*~vjxu{Kk-+U3dRj_V(NNuKOU1A|DJ^k5Gn`qVBO`y4iR+TqH8%~3( zOnw=!97^ddjiT^oyl1$;OTmf}`>PxO3%8#_uE~whpUs!@RIF(O4d<=_oYGrKy9J+b zoi*DxmpRJX-!olJ;`zIxfOk3VF}ir7kr+*dEjgyz?}E>Bb5BSN?2;Y*R+UR@@j;MK zrNaJacml(R_Vt+>0;tcg3RPF9wkNgY432aU(YpbM%)$EGTUh=hvbCNman8b#e2ETf zMC-Y1HlsS+#{YOU(4_-6P}m!Z(|&335)NXlEfawSdrQ)sHP*pPe*iB<4unfm`do{h zS7C;N8rn_PfkLUqkZH7EVQIJ+k(}s1cL7-}9U0Z!7O++>V{aJs{D2wh?Yxn4zVb!Y zc5<`~ECoL++V`1YzxFZIm#_C4j*(ti(M&7$WwkFip72wGy}>X8_KL~Pc1b1XqLfLmkcL68mB_%D8olj%U2RBlfxxi2eH0pqkHQzPY!ko3w#P!_X)$-FzqkvRe1e5dGXuWb9{ zz!CM;oo2kP`GV>HX>JMti-mL*d%)w6B&^#x=ZzBj7eKG=fyO|hXNCl|)=IV8yo4h; z<_MN(vAynndG45~=Jc)?1P`9#ftQ+R?zQ8y%H!Ra5+pm;#1e__A#q;L%q7z!3PoqqcjTm2VRCh5PSu5(YcH~idDLRFQZoMn5?*)zqjJj3_nJ#C> zM_l<80{yt$rJBTw4+WW!bS~*YOYYxxrJ%&J!5%z54Cc!ZfCbizib8?NjI4e?^wJkl zWnQb|jFm%HRU6wk<7p~O@7hJnE&|T7Dy9(Ved_VrG*zY`kG0a_#l3}@4g1P#(!n;) zi?>Xlu`hnbTCBk1vr>tOvu;{-pT6r+gWEq%ACv&NYx_MI&OW-<}2v8!hNn?7hK|x;Hn2Xxa<%ynm7&aeBeGoUh*r+CMWGZlHF$ zDAy6=Kb%&Qt2LoC>7+Mia|wGnqq_05LV~1hIz+^3l;Cs}${(HEpfHUBW2d>@X8lG1 zK$j75@rQ}`EaD@{t(+chmPo5asuR&y8gqVGZq+K-Lk{_7`)BHSsqDqDBoT7A>Fp~q z+--SgoMS8-u2mWmC*Je}Ok#Z5cs_}!zSdCk#2XX(bO9Z|>VcjT`JYW{6n^?~zwAz|+oMUU0n2Tj?+ zi4lt*= z>i0<|Y3n>I5R(_i$lP=1Y4zp}to8+avL_p57D5>7U|udX!hmw|`lfNvHsP5~h+vzn zWkJGHfE#K|$$cHB;*%$aQm78h<}Es9y8R0cd%NvyH1=}SnS#EDfXYO0wTQ>An{??D zcPg+6Uj`dh4DjJo@v2Ye_Itwk>%zz}a9)=Yn&@6--^oy$7&ZBTM~Xk1A|oybMwhm6 zG8;4Ppihztri%W75925cZZ<9& z<>zjfJI$Uh`r3s50ZoMO;;uLQDTuF!x3kins*>r}RqC%N=bebH)JLdqaFA+^^Pl!) zs{e6#Qk092U6tUEik4v<4w)*}sfO+saq%a0WplQ&gc7|xfSyzP3L%L`%8NDm83cc} zDuu7fXYN4GREQom6x&mr_*ktz;Z`@N+u0PEk^HIFcQ#-Eo%65>s>Jwt;kBnE3MKN+ zj5iTR7vMZ&TXxX8vv8RvvQQ3T)d)ZEY~VcN{~G0gxx0djuJuhLoKg6@^z|?E3j!g$ zmdm(d6^ZXA9Z4q|XpfZT)8-hi$%E)&DJWIfgUgA%rB?lHJz&P?a8!?;sab3@*Pq>_ zb#g5jvl8OKMV7J=m{P|Ralm|L2t}Btq3Ey`Ov$ADbldJXR|_&*5J)wSRE;H3{VeBP z@$;$Sc^5!SGSY9PKeiHMcQo@VMKRHQSVx6r@^7r7x!kG!*>%!Oj~gsp&!()GPsaax zh+CuKG-8YL%uN7w4A=z4YLa?Xri4dqHKlG=^i~7$NP36Fsqt7qiaBN}u5(y?(XrOH zb`1fCHkwF3Za62`;!FupD;^e#$ET%{isWEB;lg`Q?9Mf%k4nIj2{bBFD$I* zUssA!#OoEJ#!2mtJ$D~a##C|W+)I#y-*dhp^bP4b_5vUdv?r^S2y<}F&sy6Np3Zq%LY*DTr{Gc+q$wO9cV8ao#=jP_Mm zXX`Aw5~^FdD;5;IQ_Qb{+3s(W721?CZU+s;v^=t_v`=!po~j)$gP4JavUKKTK|#~t zJ5HV1I5bgCh*pRoDvC~>bV_=)g*WfPPp;Y-p@lfF*YPc{(*Od(-Leq__luM;!KkS# z?ETGUlAmc|dmlv!*Qj4q3F3%_mN!iQTECd-TX=o$rNSIMscCHWDoLihS?%=sh{Q=Txqo&;EX(k#WzYW zULO>3Ug_)u^v$C0rW>n&yaliG>uRmMO3Xy{IYz`3gAK}{xN>>`IuQWWs@sC;4H*#% z7}f))UR{OqAMFRCa1a%yJ?c=-mjMY+9Qd9p@Q||XH%_>nOK2BV7+@kdT8R%3iR&g@ z(}Pc6h4!xBeD#muSlOiB1!0lZ^}yXAOAzwBSA4n?FXl#BOdFV*L!xrr`iw+V#5ygp zZ>Xwt9}O>h)R)2Akx0=H9aCjmc?7pWmh0*y3Hr5bZ(q;(~t?WFCy*^X`I zXZPdycM3KrUvF>_inTGbLSaB~{jb#=7cY+n&od0(P;rYZ5hKs7du?5}rrMgeIh52m z8pD1~hWqfyu#r;#cq=5XXT&!)>LeE1xS*UD6M)BdEOT`uOj>;?x(Q-Y#pgk&HU%1` zNy`6r9Oa|IC4GA_4iWqwwLGhCA;E^ng2~8^*q=wi6O9hbGxM;Sy`i7oGeXUV2&O@A zz?KnzfL0fp5U#sdG>p}jGG>n}CJ(_G$=`v3{t)a}wm6HU7Y_8Jo?b(wz>6?SJh`7OaQ&kA!)Hvlg!0S52OM3+jRXY8 zpP*e++az);-P~^ziYBj#pLe8k;pMqXlNb5x$~eXkU>c7An#4z;Gp2(euUC<& zB+De~%Y|2@f7sx8=3cjA ztxm8*$i+jDkH0}YO3-9BVM^)4f|^oi5v26L!xfT~CW??5bPGwhY4Ov?9XnfKZtIx5 zCVA6o+oy!ZJ(K&%a(m)K7swMGRBz}2(X<2pxGDhw2V{_P!UDA5`YWSj!*9UBdk4{Z zL;GnOu6i-NjUUb3C#bJZdHa9pK_WS0##D}U+_iGQsCK?&z{dC*pU64G|A4uC=nFUs zN1m;Zo$_y!U4I#PfG(ObAmR6>pTrikREW2j(!0-eDVe%F)qjGkT|BnJJx-l7O2uc= zqu6dS3x!4YFJk;lIPVx!vVXEqKW=oU z@p{tyUnnRvaa|V7H+Nf`P{nG?U%y7GQ-%oxqH2&!04)Oe!-Bik93@2QI`@|C4jM0d zq`CygYPiYq%w0{2MF}!>36(GPu8A83fCou(VNZ07aQ6Dt+@M^dcjVPGG(7<>q<5d> z8J_<#=TA4F5}?}^MpMV=!&6=Je3+6$;7BEiCg8RjYXVcJ`>Ipc`g(GM4Unal|8D@s zPZVP%h))Ix&{fV_Clp=1UuQvn1k|84Z%3E|wA{QK571a{s3ZH%S;4N=Y72(SBO(Wr zCS7%pZ={L9KTks+F_gJBnUdZb&yAFrBbKfmRdakcf*E5L4ukMw&HPZJ;xaHc4fZk3 zPP0gvN*@>M)TBmcm3ZD(fh$-~T-a)QD1{)G>*OA9Ua$BE{Z#sz3|(5AtZ{6IWJdMtm7fwDEwG+xLeLzaG zNke#BwQ+XY*nt)IVJ}4-;ybw)wbmOy&aIlH^!hzZUCV}{wC2rgsncX)rsI=&5_ja zuD%Yhc`pA+$c9QWA)Ixv!_vILb^QryKvr4}XA*~zPgW%=nJWYfcmgKL02Ov??i6pL zC6c!lzQDTYh=WoY!DkEW*0P&T+*H6$_lJJdjmw~{s%7`Js{?$n4918c1gJ*IvDg#j zh%g?&?_wzl^XPH@Jty-&a+_&s1flJEG(-Cb3h^dag5AVtjT}eHcnSlN1Gzi^^_|t} zl{_~vTO-my11t_PP}*f_eg2SHv=iRXerDMzmqv=ZY1vl81&&!z8>6KUS9DVWqTHkX zx~{7}E4+FSSd-`n0H;->0i`oj0kz=0xT6A4`{_xz%5I!e{bS(;)o^XLBu zrUEzCB(SeXxmVeEAatmQs%6*o)Ly29hB_LCNKry>zD~6Z#g4t8#NL#4e!B%0HSzsF z#!vhM@``Ba2i|W-INtd96Xf79ecMn{XLOe(d++1dj~GayHXRqI??on6s$KX6tWmDy04%sZ%ttKdFzqT1{&*UXPQW zVvNhH*fLmOs57cVRY~8Zwq-@3p z<2X%$%D&akb|@+~-*pKiHx|19W|0HaxzK>rbobL0_^iRRI)FJA1b zHcGyNZx8m;pcFxG)!gLjb&HFR>;30kIMmM9_S4K2Vy<2I*E|nkjD^)< z!*$^-qzA4tpPK6n+--sOGT}m%R5nRC-kL zjn6Ga;#|b&v1kf){jOJVM@t+67vOzA-8M?v{RCRoCW-cjo!|; zn?ZCuy~kFkBdDFGzR0AnG*mO3B)c_y&*_7kBMvx7JdO1Hx%Ld6OwpxtL_0Zj_KPaB z1JUVZF4c<2wY^eEmZ1TH{bRR*BNq(+eAsAFgZN%Y+%t6mhWWW!8>GZuaCU$aFVJ*0 z$tRs8KZ609goikwgx{lrI|CbJ-FynFFZhQ*HSJ=*Xb}9JEx%i6@89GJ56r75uqNxM(1tr9gsO`ez<$aht6$#;I^7x(^v{$q~5x(`qy)tcY?T z__t4~>zmw41z=-Hjyk{hqlUS4nMz~XgX&=2jvbEH;U#WjHl7UFjYqZfumQ%@h@TKUbDH&)S2Ez6$U;}(4bXbpKWhN~D6&h_l`qy{kmlg7FX!}gmMzMc) zTN}Nk)b%VY#!Yk&IwByrR>#QVoWCn)DAKn8JQmw$YDk+v%*soG0x#7SO+3KP1mIu> zAazGBVtj?=wb~8X%_Z+0!Gs3NVbUz+off%DzJE*TbMZnn@&0zp8CA~YI~_Af3(U0w zKdgDN)p1{r_c3qZUkC|O8YH~ywNcxvY0Df~KR_(y9nj#_`QkAg=`59ts0!u7Ox!b{ zBS}4l^?@o5FkCMOPswSRKuzTlkcqKKMCLTwx8|^q;x@;}+VRZErME|14oIOIxaB{d z%Z0(?22F>CJ>&Xoqcj36@Lbq{m|=9Gb<~+$4^ql>sZKe09dbMy! zb5I=bkUbSJ&{;v2+3>I-&Pgsj-jGD_2lUuJP9<_qB2TI8#W;uEr)$NtdMVu>#Yk1|KfR&ezeP71p1U)m>4+Oco zFDx~wnnh~FA*b-qCV$oa^>#SoBHtE%tW7v;_Xnlz|0U@lLmZkASFl_HQi+$)mDQ@+ z_GO^mNxqEz__c68b4YbKz9Oo}jC&3Uc2#RPm}1+f-Kyo&($a7eHvf2aVPs`-W7bC> zQemuvLerjR{CG2AT_45`O>dIR0a>Sk4XEQd8C1cDxA)3=I7A7%C)O%$i6y(`z$s@4M=PhIx!!%$d6Lelnz$l?+NVqw+S5> z)v4cjhAGa=R^x|xglq^)C^>w}*o@cm#q);plOwYjdKE5+II;4V)!=ylU3u|7d4Uap z(SJ5LiQ{Xy&WpNXX2}outl&7WnqRo3-t_ z?PH2hi{&w+YB#rK)c5Z2&x7EdO%OI8COdpPl}|`JZ*G-BvqYlAa=MB5z=SUF0{I5p zeqTIeM$y2|pL6o6@(-SN=#@UX1!)_Ny-;TGV4cvTljc`+fBfo=&PC>hz6#VAOmM1m zRUr=Q?y$D?R7cY87HDKUDz1`6%MlkO#iNgvb&M!58;xLq3$Kl^xS10}K*jp@gMeI2 z9M?h$@*$e&CHdgx`5zAR111X=Hv)}K_0>nZk(L3zP$&a%enZc86*`AIej}OkOB~hk z!fQoSU4Ufd3`pU^wQay_WKvdkJdwTIC}9Uo6aOiYG9>`R%q65Dgv?p|tGb3;+dQYh z-*tJMjX;k{@X^!etX-hbHUDf%RupW;Ow)Hf+cH4PxVf~M*UM*lAZxM{HJd1G}|ku0E8(@~%-t|xRSseCwJoq_V`vHRu-i@V1G99anW zt|g&f5B!%(*cTSSu`9X@_cH8Q;A+;5+bM#~&E17_e*t1bqyfDU(rBvP2G53~3vR-F zqzVJ1fIx6|uR>fX0p@?9O8O0^S=$&i;VqZ;+1TE6SP&=Ti{j8+K*WnY5mNLoxTd%A zJjILO8$-UIeE_wyZ+^OesNL&sWQb_Ogwt@|&T z0UhEwu@c7ef1x;qeeX8YhJv2rrfLm&SH znL&NcWvRYW1|b5O#ZS~omPV-MWok6*sFPQa{L~R+>TF&` zu}=3f0YO*mUtN%*iaJWRuZ&u(#PVgka=QLSN+TnfqL;jN42(=O25dW zxbN|R$SBdAs_`yTcYmJ8{5xwLi{Uc`@KIRv-@onKS41Z&U*BJd*f3XjhQO@tBXD9u zwQQk}2XHj&5sJ@xyyMsDVHf+vN*faY@O zT|kvS4DVrO=1v-EhD4pr`T)O~Sd4cAq%YR_o5a{`nRx|FpblDT%<^K8F!QuFsl`^Z zYQ*d^+NJx|GBJZ%w~YcO?HHBbqn9ZpC7_sTp?}i#`k8r$F6Jzns=>nPuM?CcQe*zORg;mtHu)erT-mr-owZ6UH})_Wuz%YDKSbV1nnh{up`Wfe*pMldBaR# zs1T4(;t*wq;YvAQ?AM@2H3?AjKxN@(v;b$HcI`rrUUUwZ=oH=f1N`?O&VR+85a-LR zXT5KqEj^hA=*pcwk%sbVhCf-C(0CLLZ*LLb{o3Ag1SasC_i{5=c*aP%|&9Rhz2_J4<}*YNcq{vGvy!>`}r>SO;0rS?5KSE0}x+ zs`NLiNjQM^Qp*WMaz*_u#sEt|w7+}sa^mn(jO0zx>pUz@Nqw6hMLgQA{Rru@22-Ur z?iCRTskTj=bw_-qX(*W;(m zbFzgS^GthZZ84ph%v+g1L)w3W^6pd-%qgc`S=7EF%s}y!S{r+0i(!6!{Iy1(FL!Ti z5yk^e#yonyn=TOLf_l*7y00V$QGT#9MLjsCWAUX`l{NZZ_P)zS8&9v4q%E!&tM{L4 z9(4q0^qN4EqepmBvvP`yy)2ltcZw-n`_s&fxDM01~3VeT`+S*RtiU zHD!Z$e0LT1G|U#I@6-ERh99Q)RBqiB_eG7Q8t*F-L^>s!C9`m>B5JVzWT0P6ia3Pb zIp0wt2A2XQVv=jdY3eE9y-pKy0-+p({Q@^Q!Mo_x8tXC@8`S404Mn-J1R1%OYFt^p z+IO-@prX*%vci=tCd9rG0}Nz*cKUms(9;TT1{xyfNHsqy7xn0q+A)k|UqICru- zalX8KkWtosc0zxKHHd-NwxM>jtGM{2k87YL=ziN;B992-1Z* zau}1rf~obui6xN--fACll(ec-=c#LU#`0Sq3xKL?tDeIO*-+aD>-McU1b+V}G^tgm zLS+ExqteAtBI5UJXsA%9MkwDY7wjKeENkONE@nmZeqfy~)kc(Edu(25af zoUJ@XV66^%?@8>&ITKk|+GRy_*yYJbaU&+u-VdyvKjB&9sOEz$=lzP2(wZ+SjK002 zDr7%EV;U6?Z*{tGZ~tX$T@e?qy#bW{Y16pfW+--Eiqza=65Z}5E2ImorBy}(Nc8V~ z2|Yq}D0lA81wQ7P?5Dx59^xOsAppC3t0jExd7}$O3_CEjR@M`%A^%#8-zh2l?Q-Q( zwhl5R(b)7>9JDE0HJ=fn*tp}lKr{M7gZQFC=mh2}_e+971}l(J1ZR~5tV->~Kr+2Y zEy#nahRaqpA`Ob_8Bed0@-77hejw~-yFOgN%`=^TmDiQ{wH$P=(m=%^@d`*Ewj!`l z5KTkd*6=+;FMLTho$GvZBk&nRbggopH(E8RlYo4Z=NQ*RbTV~Y;kn6_wd{&< zM>39kL*!!V>1RD!2&Eezc&Rrg>xQkiQFa}ZIYIO3i?SO5hshZ;BCw6o6nE%yb&|s= zB58Oflb7}X8=Ae1unsMyG;J7wX=sKf+CxgutQ~?z%K34-9*sG=@^AGs`jS5BS2a}D z^A`uz0`!`l67-G1Fb-oZ+GDBH4H%|QnunN{IfTPcCdkva+4e$x>3shxPehP@x`HSs z4ZTh(ETJW<>2JS6oaXEXu;LWrzLvdS`xkeM921UD*a2TRT)R)Voyk$AM=T!2jqk>d zrlBxBm^X|#S|8>AA_=EVC?^HqulycID`~`G;BA1pzO|*z3*6w|E=lJKbLKNAEM(PV zs*Pn5xU-CmF0G8DzHD^ui}4y}X;Vt0r_n#HMj$(jh)KHMYctguv02uyiL_X+yogN2 zvqBgRX_P=$jNjAB!Lspzg6Y_0)9`E{X4L-^BV+k%Wx+=&H%~4af6$P59n}h(l0}W{ zevKIMY6}OH;DLxdL%hV-mm|seRMb=0KczIB_f_BO?o%zH=t+*3RLPore!nsa4uw%! z%9m2@Qzgh{Jo!yvB^M?%kR58}Qwa%$J>jR`<%vh*vRH{w;K7eIQW%CIMB9k>;&_WR z7AXG&NV1#cHfb1sfgd)Ve;U504qwF6y08sUS=WdwPA>@nX?`KuJ+XvCZP3yY#p#oc z0h*|->m1fdU=1QL`yjWt(T{)h1@J_~%@;n;$y7bE-q4*oXB$6WX4vE}{X8)ERLw%k zh!YQVG?V@DP6xW9X2LsCmrJ$YV*GC=B0ft!W6_@O^`G<8PEP2Ei+s?U@6ZstAT6NW zhZ1+;gU1?wAhqH>v${yjllwRrDe5&P?(aAB8Dj9N;xJyB2HuFyYBq;d=K{#`BJKPy zrcK#9<=h2Q4ykfE-uLun$yM;!`lQ`eX9bt3^M6|;e3DR%X&gYOD`Eb!4;FsyqG1}8 zcs=JpW>XJO|;Xp)K9Xt%IK9 z^SjzicR7;Ec37@=nebz0gq8l9CzjS#?v?t}CvEsks@O7QD)uJ2HFeV~jhTg)YzsDi zMk^woO1)_O`Jqw1KQ&-~d#RQ$th;?Efh;Fa)Z` zd4B651tgwW2-r{fuLAMTC^4BB7pTICAM6>O;oC!x*fa)$<&`@6^C8!H{p|J|8B9XN7~XL=r$fGm&F>F%zL;38)tlKDX2+eRVkk z!B_-Mo=#$rQTg3e8Jc@$_LZGX4L+}*k^N@kVKi)tNvpJ>G+lvi0OdFjg;Phm2P^&r zKTlgVSx@!RSDDY-UqG;es9A>81jrk+zsax=a#ze#@Oyt>qI zA!SlPDQ3#Sj%c6dOYH}FB|Mk8@q<}UPgjHO1%nsmV=_2;10EKgZLluo*r-ofeCU&x z(pOuFW6amrfsawevq0gz>EyqMF<;2FEueeV9@Qg|qE&LC-S8`kTFC-ao=R3qy#HfLB;jWi+f_fRh=+xDTD06BI3&>l(hJ@`iHkK#wd&w_iJZ%gWS-_4+MIT zK5-64ojhj6;0av1<)Rp3jBi9o&t%qw$lQa{ETz3j_sJj-sCZfh)!`;#-HSM^Fw=z| z5H1FY77Zc~q^%=N6j*M=IltW0Dyep(TH6il3@;gdsRq)I4EPFqqwOQSI^_cJTyPt* zaO_^$1!u4#Uov_Lylg|rv~1{h61A&~Q%3`AJq^!-{1%$NA_NW3?a!H!vNu(fh|vRn z4kO{j3z7z~wg9{eHyrqlm1;Qa(Mx-`*l@*xuWrPf%k+?3M3RUt_T?B#9uH!`9*gX6XP_tLaD%$3H z@@m6lWBCJ=OIIkYX(@!2e7x(YOXT!hx9;5B4uu)=Sb~&WxnASuV$psHEPrc`n|Q+^ za!^?hgd*@PuO+Awut%-&LcRhFZNWU}$q&36xp;Qp^LOq+-EF9xS{@GFfHw-&--ZBV}`&AXJBflqCZe(wG;k36$h6*jW*+(669SJ%vX>dn?#8G!4P6otUT2dOQ(6J@a>Z zzop+yM0s9+S1gM`7c`ucOz}6<3Pu}m-+0scVMi99&FqU~MD#$C!~v~WBV6vj@qAfS ztcm@;$GNIi#mr#vIJDTgG_ zT1BJXbkz=|(G2D2NQ46W`W*=&Z~JRl^xQ0kMWC0`qCqDX7o~p5JQ^p)$m{HrshU#G zi=j;9VLem^O{c%cEhaDBr6;Pu9lysuE9?}3kW*8gAi6$nGpv)6R$O+PF5nFf1z^)W zrfztt16DSx3?&tJHGw0j_?-mw*5^#C!c8$55~SI+kIN(m%RtcPC1~8JOgY&cv4T5- zW>S{Q7yZ+8rd=Dkd7Ic6Hk&Q$0f(}&XZf4A%56dyn1RCj`90aMXiZ9{{SH)P`kPz} zMI7_B=2U*O!N1UMwL+>oU2Ad{@-3Gzsv{19JQyW24{FBAP~z`=K(UjzcDL-}EJdqw zMXHq_QD9UfQRAAXHl~?NygNjl_Kz|yc<+$Hh@wlTheWEYFPdbd)Ymr-4J+s6rH5Ua zvXCw)`tb8qm=G(lhYrnv;0Mm$HXeO+FzI9y8l)hgh`U&Rv-E9s+QR5$Q#+{t0!^w_ zyWt$6?Q}}6%1I!hdy-{uQPP6&qC~o8?sipx-R@1$csrh$w!Y~v2j&%uuEY(ZD;0OSbbStWB z&1y4tOZ+G#bpp>EY%?WR-~~q|+G=S~7ghceB4v+3vCHs*QPErmx;d>$W-iEkh^Cca zl&d;?KAIZr`9`Q-q;x19xz4Wj!T3tIf&T#skc!t>-~EGItYyi5u`SF0OW=t|OwR0) z@f6ST2f?-S& zvE8^MajL(4c@^ABuQ$!x1&ImAojXvK)4lPK*3FarkR0pi(MW%jmPwhvSo}w~X>oak zc*r}it>pD<4`|y`SM{T!CUJw~F&`R{mcer#B}Rp*n!$1%Q&FNawKUM*5pa7rpM*cZYUh_>gef;QHBw(_xQ_MQVE0tvFj|R zl4FIQ_|FNowBjIW27bP(X+w>^)HoN0^Fo;6^(n8?IdbADF35$mXguAVjFInR7y)uK z-`QMb4sHPmK!I3wfg%VycQYuc(X~-jy34x~$1AaZ&W%LlWOrH(Y2FmDsua$rtHy3TEdo- zYSL9;=a``ve52Dn=aZmNF*v}sB2$34PVvK5GdDJ51|Z#KnT*Fjt>M)FV2aMUNl7bZ zVb0FE3|fZC=y_KAzh@973M}YMDE)pw$kucB{?{c7JE+!0IsGwxs-bPG`TF@$Q@~^r z<08~bdzwcw?zv-Z$z1Fm*E~oc8|ei<{+@Ljc%9$hss+7US=YB~$9Ab43+@fSBUH{V zOD7ARQN@`dU{z7MCu0cRm=ImTB|Yl%o^BAod6y*dZDuMaRCQK0~M+& zQY5|a6qm3n47xhv%}3fd9^XPy04OqQ)@h0=DUVZC+{xXCXZf33 zny_Zy-bksar{CnFHYDE|st<6du71)gFW1n;+IUphUBThI>cJ2h*R|xL2_7HQ?+_$ly!#~&W+s;t z`FuF_ym{dUjLB(xiXz{Uh6dTC?VT3);z$?W((0tgn_;MYgM8Z-vGFLtIWOI%8uTd%xmB0H)iIq53^o6XJM<)5bd0WKb1*jO<*6MwN zB>@*)>T}>NTEYK7oGW+|V1K@4*TQr_oyzL)E(8XAyw$myJAuOtSIQKKF+O424^iWp zxLNL(*x4JG&4s%r`}Lmz&%etbWPFN89iGGd7&Gk&-~|tIN$sLot%w;O%_Ao@d_&L% zFIhjhgdVBR#Pu#~U~Ywe0;jB8|>-RMMQNcy5<5XtFCUX|rZMjh=_nVkG%Yheihlkg`h6$yTR@tg`@MKlj z?N(B5xBR)APCb#~yvP>gL)d<|w*J!IlD}i>0ia*Y@b`%&h)5f!(&j};L`c#uZKuFC zm5eNui%EaoqygnAF=hV7ubh~gGL`bS@Kjtn5Cu60(w`surfj#H;{4c|xOcDV@6L9> zpG(z{E|+BgbJPTA6jR^i{KPlhUw|q8CvB0#b2_nA9?b9*Ua^_|6;!C-ZIv}%O|Y>} zI8jgTI3t-0YHS_nX06J?emkOkwNR|BtlY}m(uf~Wc#vc}^Yyd9TPQCyj|UtSRtmtT zR1M8-D4N~^4QkEW?6EAp!5~PB?X3f!>BD1MJJG7N;wRHwn&j$*UY(XY_n$Z3vLRh$A>OSCi*YxV&5#LWRVQ22is{>g`9mSh_k-hV@>?(ez-!p;wX3Uu~MHtejhC zRKbH(NxBJhyZ_ft17NJDKpncVZ)EzJW*&)PrcwaKs#^#=ttAt&kjbLU*o znnFIf+^~r94iSmp88Ympd32$f|0)6a?X#Eq%UP`#?VD8(Y32q9sR}U?gujQ&P&N1& zX>3Gkp4)^!VxE#9+$QqX%QtlKU9@W;w$I>(=j@A4Gbn~E;C94h|0LRhXo{>}+v&J- zh8PgoAA*tNHU5o}zngOo53vA8sKwp6%Rc+O%Y%@Jl0ch>A<0CBBE(1ESJoEv))S(W z$n1)SE!LjGXeOTovj#;ykhJJnbk6<|$7ZKE_0G|0?lJhMOw~&b^@`uOm=UHETJ>mM zx1E#*PUab{~}fkRDbqxES3@K==L1JdyLRd>ja7x8oKKcZC&eU5vSwHL#f>3 zKfWuu6BmmV;l%dB5kgIBftS1)MSB<}JKxy5R01BI%5xdhroBN`5O*mJSKcP^fbsCv z^6n)3DUE}^T7-xwDW?K9wWCj7H=)yn^m=l?s$fuf_ae_0qJ^7Nxq5#&W3(Vd3Oj5N z3C=;PIul2GSnA@4&{R==vHx!+dQ`D+@LT3_Hj%*e%pgvfv(2!Kt{|l%l~_f2OTwWq z?d7LZXZD44l?E{#PurCE^SAN^^pqa6k@0SA`3Biol!4l>QJTs zZ@MKv{(PFbA_iLP^LviO^{bG6p6)h7*9{{ABYZ!84$;bDy?l_4G{kqj$Sxl1cQcE` zHWph@fqdh`V-}Xv1mEL(OB2G7ZeQ(0nMnzrLC%1agP3!!Yv@|37qnN3ym4>uUm>3R zd*o}N>ZjErK27{1r& zfGc3feF~(HZwkpOQs~R%lO@?5OQh^n_=r$7~2$sMiong4-1IBcjt{V}; zXnLtbzPHxfK6!&XW0(Oq0AoNxd1h_vFucs$5d{)c^d~dS)w;C0KBF{@Sz7+tmX?U8 zYfa?&J`CRpX&A{gw|;D2g$s&kdK`w}JKyb%fP^?N)sSb4$@fpDiRs;#_60Y+1r@D7 zQSebxC{-29jH$56O%(JK_VN=nZ(~cJ7cXqo{TAEuf%Ix;lLDdZjRDyfk=O$@PluPw z%ACmin!}e&8;AdX2|K_oN@acGlFt^{>L13;hgVjGQng@5%{}6!T+2SBUYm}m+#8PW zs{eezg#{?QuZ%C}=1R`)XfXD@o$+=z z+h{8=wUFLI5}knR-vKAw(%EuBMfHtMmdj+;nW>Tkk<2!5^x@hvGljp}<1C5zEH*0_ zQD<$iP$ms{lvxBKuNvM2I42V zmw<}W4E>w(&PlmwPHte*WODSkB=yg__AVp566MLBPa@SV*4(X!}q)1(WyD1lV}%aOcp`mrc#+#vNm`D3OSQR|AiBX9AU0x>0ZNr z9iFg|Kk?3DI*N{|bwR540r-@R;c-jJT9Fn;$Q<2BEQC7J6Z-=rgLA7t8&hQHIrPVj zKw@~t+p|&3KxOslI$7i-=n=W=!)gr2028@enL1t@^sXhPR7!m`mFF34HTUkKWuz<3 zCqrp(y5iIkm!PO8y{^=!LINJLg*O8fdL99AUAZt>A-PwlO|0|-JtrSPk2^^yqv2*P zU!JZh*FCgC&DeWa0IY3Pox2K+?J;C2=K7UZBfKy=fWf^H&hYq@ zaG7ZnoMQ@E3$hsfv4Cflj0V+j?VoZ##ZV9C-Z(`V%EM$i&?45$a zKK*G3_=8z7v+>uvtTgFCOBekgnVZPW=I_%aw1Ge-J2p{9X6CqJZMS_es8F>D;FCH`-6=d9cSMp72A>~j8KB1g7^gok{T)2sK&5<2xSkx!ZP>2 z%plx*!6UE@T{&9pPP)CsV!h}rvOkehii0z#2sJsa8|tOgp~OM2l;6IJ>S`9aOG2d9 zU9EZLi5I!pjGB}TKZup(ojZt__870-KMQBx8lHieuO7LF){>(lAx_9mvXy(_+`L~2 z^z-jhxI7=b3U_d|({cVNwMY^O;Fx&I4zhZ=tqyO9+LU^9BrZ;5jZ`^!IQ@as?rt)2 zO^iZstpd_W!zox@i_}=JX#`*OI3DASy7G2ve|)3g82mZNbba;z1#rt!`aRH`=dsya zjtq@+=%S0S$bsvO`J6k`e;TAi4p|S4itNW3X7LP>aSYlN9Ll%3{2>ArjVGB5kLK? zc~LrUNGBu15;jtMz%YwM|{51ogm&w-e}wQNB@_|84FbdYYirqVg4n5jY~zK@q5;T~yhXghYVnWoJhh}@&dOEarZ%az16IrXsvNZp~*&K5JKkM z=lHjrszP;czM07{k1^5B8`|buUR+P2!v5MO1i+cb7%~Dn-Fn5`Qcczkx>^*Ge)A}g ze~l!0%@O_nsM?T)FYfDRMg!0i1_QpX>t-RCCop#V5GqatQlPxas?glOg39e%CbPyV zokagGC-om#I%TuTu0>KdCE9bufD^f=2G2f9XkiuAf81o0b!FqjD@cQgNLQx&72K6X z#^fC3VtgQR=|4hzMt&vSqvU<=7RyI1CB8kcfd#K7*$LL?p%S8q3R4zge_m0o%^bnV zJhA^fWJ6yn*mC1p+ru%KX<{JE5SIP+qcmfVJak9U|AB|Y{7<`7lrTc!czUw<(lDOk z3j zeE4oKpDjVR@`BaZZ#K4N{%#Hh`Go%{e_wBMlAsr1`6sx5&}Z&hr3bEjz$`) zOJyl9kVCD94K)@nAO94<{U&p<2Y!SEH{RR5;U?c&lT3zKAnEV=-!$ss?Dj+nRkrV0 z;_K)beUEBZk$4I)5Z@9`*35Sjq1|0w<&eJDC@2W1MJ^8}eo0 za*=q%U$jx|ug(@9m&G|R`MsWZg(BYqWl1CsPojb+T}1uUVxa{AV8yo4mJ!u;MTD3+ zw?2dYWOgl77iHb9O78{&ptEZa(&~Occ^U>MgN+jGu1vm{Wver=A#}>voBY(K@-YVh zByLG{Hem9 zfDiGzc<5@TRzVKO?!CV@xl;3au1Z4c(I${Z&q46qieL;DTh@B z>aXo>EmZA;{o)qYWtaEBP$u^dRWy7yR z#^NR2q;wdA_eP}&VDHiYGQO;7F9@E}C}!z}&*p?dlj*2@g5M(xwH$p_sZ8Z|k@lws zyR~STSgkhpm|7DE8dBXHBm(J!o>HF{VCadNy(brH4yeNAH$gYoB$pnrZb^uzZES`U zLGj)Ba!v355XI{3-|M*kD8S01PpOXOJP2;7UtxV$N(z&2_+DmyBX02;t~(fTmNvmQ zL%cFO_QrHVMmGN^Y_j>13AmJ(cN`#uuk^tl9eF*GA~$lRH?ym3ZHHlhq?~R~IaaS1 z*n)T0zsmCYZ&v|Ze}DdE@t+}yS~?L8D z>c`~2Z{`SYoFzifN0`v7d|6RGcJm*35KE&3^Ol$8Uk`#_v||%MDT>IKL&d;16xTUw z7_E}yqQ+I+v5Xfk%*aB?WLI_`b>@n>IDPj)sr;xppE#**_J&WQrqw}C+-qeALds$p zFg;=1gL31&ECM6m4$yp8?($5r1dfvQyhoANHSamhF~Dut3wB{GWiiE*qAYTpBWkV{ zp*wn_-Io^}Wt5yo7dX+(ZY>rNIZq_{LPjDA-8J}2ZDcp%Gh1s)jg@z5&d}bQ z4YlqIyuM?RO4!c*45l9y{=9+;^VHmaZLX=5Glxk}063POm$d5~t_=$h3ZR#=438k52QMsd{?|JIi$|w&gLI4M2eSen#=2F#( z9xK%(SK}T~zH=(-im2S2Pr<|H(+Qt#2iPV`MXOl>ZySEzfa_%E%ikK`= zq;SG0hO=RrFpBNo7l7GJUY3MTzUY8cl#gU4P5I4K zQQu^C790dKxe~l1ryWR)A5dnKFSW;QyNl=!N}4a>7dWn75rrkGL++(|LDmyj2X=Nb zr0MF~ZFdotuwZYT-1itowTPLh=fK{F>6EbZEo%vZl$D;cr(NRx)*vBh-|hqm3hL3x zJ%_6pqn!zpU3O-;UnB+q{tihI|VI1g8m;2Abt$X%@h1Zt_cGY)U?M#xsyA_Ij1h*7MOfj79X8qC6_X}ZDgw- zU@%OO%5p`IqQRL0pADnh8;rPDrEErLCr~XBP(*g&=Q^XA`F<8zl0he#36#3ke?ssY z-713EB)L5ajB5mkep=`gfmC@fb=fEIhx(Ceh;Wm?w71ev+3T`4#juJm?x4InxNafX z#el<#4~TQm^zRhYiE44m(F6_Y>5k50gIM8_pZU(D8oYP`&NhaRuZodVwT$XfydIKm zDR1>qQWWgT&$N)nipAn24&>jtCt8Xi4Ik2tePj2V)alAFFVI-Q(z^8_kAfwLOTW)j z1Wwlt9`R#9LWS))IBdbc9d!uJ!|XZEv_qU;Z}v_H-hI*nBAw_dHaV=uWJ$jkjo5kw znz!rPRpQr&O#2rJ^D8CkbWt1sTQ5yBg+I3JvHI3IOD@0p>vzu-18`=Lrx==m3KJr= zUP;d^AUi%csu$82deDPSoo7%oMy^4@)f}F|bDocs7=5QppIy}e;b}rUj+BhDouv@N z_U|Kv(Y3_9l$&j_IJ`96-};k#q*iCEO?Q9EzG>q^7kdjlwG#kdU5Fg@cCI$HBQmz@ z-$U-1U_6uXS|&n29(NPyZNze$N5tR`4@-1u8Vai%_U7SzQsmvl;bp!F*26FeW^5y5S--I5FoKJ4zd5FsUMsO}}Se>)h(nePK8A zmo^q4>xw!n`L8#GX-E%j@#njiCidtuI8u)Xh^8m6hFg%DcGQTte5exG$!AtMV6cdj zyD3X#C=$oq7uka$OrfIygG|VMo#TyG6-3nt#5%Dx9gvbplu@y@AZLwTcIanEGn~?T zGFD6WjP``iW*i2N9#T7l?h~WXgh`s2fT;!xFlTr4SO=x(5uogXs5`J7{+y6aw2V=q z)wxBDl}q?qe22fFE#qS5AbJ7&kKw8v-GJwD@8EXZ*{1G&&vuKE)F|N9FiOZ@3~LL4 zFeV#d6ExV$b`q_kR@1i;;ptuCPSN!vg9#8%DHQ`?4C{)+3a|2lN^@jGky{FFY^hs@ zxb9C^k1ul!`*0qAzf8E&WgcMIVKCREt9)zAoh%BteOeeV^L0d|L4xWGue>_yjV&MA z`U-PVKM*x{c43v%QjBSH+qrfQ@BthgMQdw+UigI+(TqGAx*u`w9cV+T7yYBrR+qoC zZYi!Y2xS;LlHp)*v9yvC6ksFsRcWXRtf=Y^%t*ZYUW|gLZ;wCQoU;JV=O5@=XLx$OoFdD zQFG+^RL1GCH)=`>GU^W7tH;xi-O896OIk=~KzM#-(<4O$-|yn|?;ZE15=NC=BAh=O zt`@~HJ&xwiH)V$)=|4@Upp_T2SkVbE1c;b~u9_mH6%^qdJgdvkh(YY@!-Gr8Jo~L@ zamxadF+dCgK{|Qsd+Wpw51{Z4-HW4pWq2c^gl?AJ@w2pl3Q@q4!l0d*HsgE;v>QlWKazP>OSd z`OYt?@cHu2C{&DUeZ_z|-7jmsgTOEI4pQKu{sR-YvXq);J;>#x_Bzv+yhB*fKHkdI zfUlzb7tH(rg+j(3@HvTiDiVD(yFQu{qP7x*mLjb7U6%$1l9EdZaVtQsY*x?%_OM8X z30-eSd^_uKT@hT-i9ue}BOx9mgZPziPgvz z_y)9+?SOH|4S!zzvx*?jb=4t9O%urhaQHZF5tByO$*wXZ~lgQYDot~z*1?VYorD~KizGXvi9s&!L>_E z=%tW2h4_kN(9&#OdZa6cUyhMltt?ZekPEP8lH6v#H`4=@e}miHaFd(!7S3{X8Oig< za1aME#Ok$3jIOvjB7!M`rF>cL^;-2yjW409aylJW@UR2fb{z||m$n;C9`=ioGLqA| z>(t=I!jOr2O7Y`jAvATVGKT^Ux3R}_cuO$j@VlqLfPtL&Yn6gx1l?aEtQ2ErPD`(> z%=Zf~P38zJ-zzzQgtE4>3e2*RL+L)b_2_V8Ke3&x7J;&lMRZcrN>yJcAIRP`rf6-i zm@YjxRU6P#wOyly2d0DQq=7SE&a@Oc7RY6YoG;5_CxQHqRnKm1`gTbDd?z7LXnjVM z5`7>1=IJ%b$TP@&B@R8KEvHp&La-uPKAIGV_dr79T04(a8wyVIl+CrgppQMI-*}GQM;%Fo&t! zQv6^@uR7Q=w@clohl?UMUc=u-9_3*<$*&s{e3M}t@alCOH0(OlIiYUkp`j^Ck zHwam=X`xXlM9acziG)psunVgm#&z%D0>*?(W_DQ_W3gNISCVLaacwIHjUkvH3?t<7 zGV(qi>Tbe%uU(g@;of?l_DrkQsE>ORT2)^7BHB&#laMMsN0yv{(alC;oxz~sER*Q8`KJ9K6B zWcnbD^6yi{-m7047z$*E54-Nq%hEeOySXf4k43OnXSr1G>Jh2i?1mwYfGVqDi8Cw< za%qlh#wn+9VaoMSfQ*hixeQ*#Ey5+@>0#D>7k-IQS1KP#Z8tA~=(7;#ABLy3dPJ#( zWk>53v^Q!4!}dUdd_N>$hh|M(B%J8Q?+PB<>s^ znF>x6FC`uSd(^D}Db!VO&#xNiI~NfywPq7A z$iVVY7vK}0iPJhk2qxId>rP6~R*`Gy#DJiFPuz>yFldfb$T%d`FR}|0q7;)`v-f++ z9=KUWV2UGK`w^HeX9aDjFdutlpwy%U0TvP{!P_Ec?%$+to2;o?@XF6(u1;;fFNS)mE8vjZffR^m6HPGIu{6S+LQ<3rK9BQP+r?>2M$0C?ouGn{}|< zBt0hjC>=BwoJa%jPhwn!w7*X;qmML2_UbhsX8i3!5X=}*Zk!aVefVky`-Q-Yos9FV(qL^?bl$=P;t7?0ly?|d`s zAX?N*x_g&T(H7cN86va_WgFitU+wYA^y$4k-Lp~&Fe+XFe))yY`5noC3L#a3|0P)4 z?jmcir1RaL-Qg!V1f`fUW)YwuxwppSOGj{GHD<8GvSI_P6i=ge?aaGT91WZCxRrJD zyIE&1N+%mF$=*cIQy}*skEc@(x_`T*LcmywTaq!@p@XjmD_5WoxIi`!%VIZdKliUs**g+8wnI`Bj zh}xo0vwP!kE@Dy49g{mScQSCXQzc6qzV<$);p)=)QwMeHg%kAr>(OK|p(Qn{&2pOd zI#Qn$6z)JG3mL2xo0brF@znDN2sD&Q-dIdA)b4C8^)l*V6ZC~oS~vA$V2l^;U!3!I zN6Ts{^WAsraLviaxGGru3bG~`Y)1=@TNj;K&F_FJk_To)+uAU1tc;n#1|?*&BTF;g zRGcPJe{n_^pF$9OR77}h|9f#7vX3P)4%(kBv4)5jG{w9$WW$3LONO zft{e&xwX)tJYd%ezvIMtZyox9u!2e(>d|X=3yS4gT}d1V_vG;Apv#O=!QyMR&`gfv zV;2UkPp!gTwQA1#y8e)f50E%b2<{*}f?RfQ0rc4aDds*h4&{g=4?TTEiwG(@hE#ma zsOekhJ2J9_xA7hebNWHeVz^MM(_fNvV3wz)EylFq2>vKom96|Ase{P$KHa;_rX`uK zV0l(7NaB&DMBZ2{;J?pNQfksxZamP@=2VD$tpsZCM_Vo|oDR)mJ~!HQWU>?@yxe|v zA6U1dG|UB6nqJC9@6YNZm=Bm(hiobhU2aH@>SRhn7xSupetZYhY~ESgMXKow3rDsh zpoSK-G?w5dJE;V9*Wa~P>o^vV!Sqx)-W5)qZs)tw`q%Dr1_$4B>A9BCsNI0Nup1_3 zFC%?Yi6%h1x4{~`o_8j*I2R0@j_k=OkfSg_X(Y3#dhI{K-KxPKGOgW0p035AH%~k+ z;(7>ZOB%Lzp3y8|V+o0dFo7Fw?3o}UEQo7~$?@f3T`BBdwV<@4Wwsm)l{u68=MHOt zV5HEO2gnO+ZhFwj&u%6FxuR|?IN~1b;7wt`24{Lzn9#CapVr?JD)kL8jSK`ab4Er-=Z6h%Syfp>hjg=) zP}0gL(XK?r1eWJKOpat3^Ia`Ak=!KRkL2TbG`@!D`0`^_u@CsZ(@SMr7Ww^Bcum08 zEA*dg$oOM&ygS9VifYXmmH3y6UukJ3dc>Tk8X8>EkS+Y9&A8^SYvNLU90|HO5y*_^ zErd0kv0pqzJDpodl%h~THxSyZymG!@_qsO>V9n=5Ubb%Y(YVswvi|bYgR~{Ei$ovq z4okhEl8mR11f1?XPprI`iLW~2Yo?WmORK_ljvGQjl+8L(Oy>K$tfiu7h7{so1FX_p z2a`%@E1=Ut*Gbj5oF126!V!fSMd$ql82xoDzWIWG`lB`$nr~Gf!w8_+64RDyjUP)y z#8Ati{kMI&wLqL3evtlb+p$mY+tpgjTEgxpYfeWzIb~MWr)S5fuM|2?3|+bmf%9TTNW=l`Gs- zy<;-Pl$!~^s_Qg}K0D6RWH7pinZefA_Z=?Hm&z(RjYliqCDvG`6(8BhNxl=5F2`}d zn!7CjZSecAqs1N|m?oJfx5Z7#;9Cfq2BED$kr1{#qNNHwRhsk}0hoHX~JEb^&xQOJu6Jj|z-=ijKo^iRUE?IY;9;3^<{qj04!T?J^ zw7(PBgW%3E=93PJ-fdFCq&*fwfm66mEUXBPyE{XVsmSvGHRuNnuEPUrPt;=FeC(&t z5jG0L4EVOFXZDpBbOW-G+;%n4k+drt8T^Syp=lQZ-u8pDaAp`a}yfOOxF7}htUZL(qdHe=sgs$QlgsL<8yqjPl`;Bf2YU!dpNFyr-!(n zny2M-u?s+*n;iE{;43K0lqY2TGGYDv)93FG?Lqx!aIw_GJd=FtH+ol{ovsa(NMzHX zFX}8?KU?KN)Z6xtEY*y={3FH@V1S(gd~F9C(Kf^jvodaDqww!zuZT!Xzi=YRQHi0! zK*IXhzuDKutV^j0<{rtHr2Az3yn{6%uWIEmta8Uj^x}oTPl6H_5+s6Ansy*q;hzNt zywlSr!uhpu_yq^qSVWd(6ipfwwYl}Ci}5VqgMl)DL@_lK5-qfF47{A8(9BHkn2#PG zpL)sVH^k7dm#GlU8t^!fa{S2y!bEWRTMCBbh^ye}n+b>6_H~wcn_vC%jd#X5bxHmw zYa8Ol8zhg2oQyCEi)h?Pz$nmQ=6SjrqinKDIJG#GWoQN=t~Fo|nM5dPv$eq+c#nZi z$Ss<`2wW+MOkEVgfb;&M$>428GAWFR*2uFrLti(1JmdtO`CkEYKeq8chi4aIqI$ov z_Br}`Hj$zn%b4AsMo09Eydo%LiMP&1?*GUs{3(#7DBQ@FbkYFr;O_;G6 zwq=p5luABZ(Hm_XAP4Hm9Uu9?hjK#6=hAJrIza(Ru*S(k_Xe-MGZRC7xN)ylCZ1Uu->^eo@_MLxTy2e z^bE;oq1Oq9a>VFqZbMbT4Z3pGSpN1MBj2DQSoX3nSaDf5lo#`W+>A_x$s0w@muwRe z>cx1Px7^lV+5NZ#U$!lBmSt(xF^^ z8b(gZ>ZT%=byuBQ+%xI6E50w0KxYG#2`ZSI)0^Z5p68QiR($vdgI!pU{{Jt8(VvqA z*4G^Gr@yy(V#Qt2WW^U9^uVcv={q|2eAq2Q6j~pA{)r>`b2raHiMxll2JaPE z^w8XCmlSwIFprTeoWr~cb@gY!Em=PpvwzJaI!=?=@`jFtf?X4%RYk$GVG-mYFj-z^2tXnM z{@4v}6Z%Zn9N6Wz5crvPOi{DK|9&I@{G;5QmY~FTW!3|<&2>ZS0p$J)A&Dx|E=Y@3 zPTa~mx8Pbxv#~}*-zyj$N9yK6hd&E~zHy>A4t~qyJ=bSd6)mJWio+eLq&#$X=yX_D zXyKJB-}@c6Qp)t=n)(oVjl071A@K$_#BdDJHr%?}Gc~{5tO-ND(okNZr)u7El74-w zs|bh)sR-e(Tk5c452Mm%*WOp?khVh0IK`nz1rF_n*s@eM(0Ej`cI>Z`65Uz((f5DHkmdb?=W3Aj8ND4$(``$E-(D5u@)8y}K zbx(Nz1t3So8c(xzgIQa`gKO=c^Y#lJ9ueQ`uiy?5D zqGM0=Wd}szcm<-nw?%AAF_);_^EGxXOQtFat{^TaA9(a>Det<1`EHQtc>fx3 z*zvU`9eQeXO8e~%p-wp2kc9Ue-qs_s(ak?Ob`lls)2@)3?X%Pk{%&9b##re6!7qD% zjlM(vPshs|mD@E4S+;x&sDDGDO$+QPo5nuox^>jK1oEshWrIFfFyV~ZwCa~;c3m)c zLxM3uN`W5^7H|bmb+|+H&BKaJEABNmk#ie``noAOPaNP(RYHUt;NSL$YlmjU6BYVE z6z>OVze|FXRf?Ddd$Jh{TbiN|X5s8AvyQ0TR zOiuP>BO$dGwMm&6!ul)Pk5?Loy#L|^ZX@5s3^a(6m#L&6tk6T%v60O z;!_`d^5Ojunpf&2hIyqjWWkwh z5Z=!llMZi08N^3AVlWypyb|(|xTVv;5ZwGMc*4g4{=IqeYX`|y#6oBqM_T-ooZj4= z%~^XiFi5$1(WE5aw{7Ad=ZKBLBldvjg4|qi`Lc=xApYtb1O5bmc9BQjp!rz-a7ET-#aH2xFRdcqV^Pi&($UZW?D+@O=c zYB%V><%qCSZu2ZtR|_21dP0hYrXJE;*y0tEmOAszi-|61MpS8h9PKQ1ab>3v-K3mz z&M+@qA*26eDey_^g4Y!T;f#GPIEZc}qTAf>Ga3J7wdc!rVX}*3@oukM}l(ENdTXAbz^o6b}W;>SNrQ2mmxI( z_)r3oSZv;@%ldQ_dA%;$w^7{~-_vCrEfFBKL9m=+vJA}?c)^~>{Kx~}OQ}TKW!2Uv zn@3ShhU;6mJ}vvclofj%q|ik#G-ociBO6xTs+c69ix054~a{*4N>1 zrcMEGY8t>_d+=qPibihz1<`@ch8Pi&aBHp3@kBP*H`1$mwC0Y_!31Y>>Yh|G&W1Zi ze$j_<(A%cih$wQR5NyX0(STybxQ27S8& zL!^8R`$T^as+)rQAnQ07pr4G-ug~Wy6BE4G4#im5yqUweyj#O8y!|qp%k&Eqz1M+W6FaZ0S@rdIuk!Dv; z*05-6fd6)>H_79yo$;;b!&PFeGW#ld@_-S5rrbTVzVnAwf22c6=MyCDGnM` z5D-62M-BIkyPBwPcSuUEnq1T2ndqH9V;4 z897g9RwdYEOi{`l!9Psfy8Mt@?-{k&QSB64`4}*kV*hY|Y@!+*W&{{Zf$>on6u&7U zLy6je_DtloQNaeO%*Vbx$vPBuQqcc@uA@rTi96ilhG)bUxzWS)jyXp!MGN2GWz|h& z9OfpM$%y8Iho8BCRVyb)JUu--s&lwJVF(+pnq9l|fa#awhgy;$x^+C13@v7mR@x*@;sTX)2 zkVA@TZ8G8ZIF_-Fw*|3JqKC@!1K|2B zi!-@%iVtXwfyUGB@ifUb#Y*>0;soagQa~~+zTi-0p<5pG#Ak%@ZfO_0f^K|;t*hML zTehR;@4JKJBNj?$sY50{2*_4wU3voUaeOW`0YcUE*dpo2P(;KR6~CKS_f5pBQXcJ+ zDbnxS&ukEo0fI<1+a*iv$;{9V;V`IqEt#}+aSDkJAUNh~Uljd>v(iaR;wAcpnG~DR zT6ITlTY3C(>I5(bX0ihe=*O}OnNNrrvxucq<`s>||921H&bH11_6;!52}lI3tUD)# zGF?sP2zR?Hw8@#EdUEnjA7U@%UuDzD+tN!Si*w?z{}X4pM`}uf3e{s}O>m`$+@n-e zcy1p`m?D#%|4kU@f?;q_0<8+wJ0mqFpY!W&bmNR1k}?-qe5Yl7JZkR;KKiB+vO;^w z%lUkMZ>*T!@+IN3r`iX>z*C7)$R}TP-Qx2EP7-M?Lr+e&SpgTv_O5MdMg$X_-fE-< z2x24WLYur>TNdl~Bm3DEpu29BaYXy$TMJK~AjZaf$pw59MUy{Q3OJ2K&NBLM0TJ(G zy3b4Du_6N~ILC-8Mrv?@;LJtU6#EaD6u@a$mPG}^+$Q3yM~$`z=`9pj@VTP^aSzp746f|*?(o?@-UcxiVhUVE;D@9BEbER&?x_sZpjpSy0_(@i^#PSxLHFTwO zhD`@gj4r*KL!CmM5l3{Lm&*+PtB}Y-x!es_wI?bX!HPu5>@CHT$JBK)r%Ve7YNCsE zXH(BapFG1ADP^{H(&EhFJh(1-s7Z!%`)-g_8zf5yOezAIkz%<(aY?N)^k`JKGX2_) z;_i+Y;(iiRpuEc3`5rE_92&OC>y(vVWmQ9Qy+Vm?EEpsz-QEcSR zLwlD12WQ~;J;bj+6VCOkrPCEDn4Jj}f$)h5@yX*v9TeT3>^(%DUC>?@d% z#<)mYzD0bA(^b?hFLVlYs3M<#5#-GcVo;3UkEe%f_uA%7oA4YX5hDZv#9PoGl3`>R zuob$?Gn9&YJ+2#t@5r1!YStJ1Hbi`NdoDh)C?e7ny>xIXS`&=F`l5b@xY(*Pj*)=2 zKEN5gZ;x&Zq~Hmv9U~V8hoD}AcZ`DH5tybHxp|+{Vx(LR-kG=|Z#(W%v$crJ=6dAE zSSTK9gEy*poT6XZG)>bjplLx}9e-8+;36|VxM`;pf{uF>Bq`H8g(Bm`o=7^h!qFt2 zFG4+UOPAwtJM&d5hKWGIg&QtLfgy@HxO|>*_T;1nGFvufDUn5Oi*&i%<{{?)@Oj zdN)@PC)B|QrQ!s%sJ{lSXmXWI_J>N}LTD#`&oFEEo5_79LM?&>()yU(jozRLuqnUP z0~`)@_2cEBQMRT(+a9e?Z%ZcXeZ(&!027)zW0TjgqB08Xr41mWQENhhK>2q;4%4%$u#I^4Z6|8Z zF@c}sH4C`Xi}UTx#<3C@cxM^(SU|8{ufyG>v9vwRT#lg2FrT%JCNRW6>_8u1nPRc$ zXRbNHRp`Eu)YEXtdxgq3P`R+x|12dQc5QPTotb9^x34gnJj*`iErZ-S_s&v&;%#Hd zeY8ecJjwv{MX#g{Pq0#*N-79IGx(s%7Y4dR(j|L}1+L%r6B*=D@jJgn{CkEj_h!M) z>HU+`SO0SFHqXEUI5+&9_^W4-ddL2Abs?jMmwCxRZY>B+DFvkjnZht?GXdXu(jI&g zTMJ&_Do1l&^t3`IL#heVFGic1m7bcl@`dW=p)~?JfbUiVx8j#cjjwkY*0X?wRU7!& zDD6NF`TCVKdJsY3kcr*ldYf~3zQB(C;^Z&;+egTSs(3g4vrvjVE#LwSW&8Ny?o4+3 znikX^Z8?ZWZL#?KwHByc;N(GB<yXi$1I(QcO@&G?c3cK+)w0?b@ zKNDgr`bTj$-Plx=S2a)MC3A_S5)9EH)I)u_p7blYUCmLwY-6tSMl((Kt}eP58*cD< zm_N6ZVaIufI`3K!QSv3y`|(*ZcSobp`t&D-Sys7wqHR3ux-&;o2NHgSyW+YRvpQ30 z9lBLfmz4j3M@GM?DxtEO#-KHLlp(9+YE&_Vt$-f%5go53Q8|0@5AdghBazf zbfmcy4W)u#wt)4+8azqHI2PLuF%%=!&ab5Bnsj6Qsw=-49NYLjPVdcmM~*IR7ZU34e|d;J{qGco ziT%s%aBgRM)6Rrniq0Z_DD|!S8rt zNPe$??_=vVYm~%5TR|rMq`ShyI1}0h*C$_gH=u z37ik2Gcl8o2cED-E`;FJYXdMbj?z-O{}TeP!9%#LNLI8JxbQ+98+o7w@NXWJkg2NQ zm%p6uRBy6tEw>T`G^r_E(F_MsWseAXDR6vkLa0PE7CpEXabwmSmprld{4RmD4`Kmb zKzrOY%)g*PAx{bOF0&@Z+a{*x3(NkPQBXDk1F5NY&Q2^Y{8HIlz~9odiHZxq3{MI5 zBWlx^<-o#$6!nj|JF1VdjX7IlF#D(YrmH-tNk`ENVPPF3qfpN@XQ+39Qp&!12_Tdh z1Q)z zb-<*+v|8-f1;$Jiv5ufzOxk(QdB$wB0|+QaKVM#1`?zH3h zCf2%0M#BVt?=YRgO0NuOrY4en12i_M1QDbO*;d_na4j^_50iJqZ@pB+S-6wGEWePa zR4%uC=kbaDA3l@9liwFGN0e z`Os-v%H_;1VU)7Ekj*eNl6>qSAb)78>$$Y{AObRWRTcjyXrD96a)(B5#ofMYa{)Qr zQPoHI0~(77?~mMdWy<$kn98!*#VsG0oy|wUnjlTNDAiCb399aV*S0@SLb3{p>3)tx zdW6BHr9E%g0Q-v1pwUy)Awo<-tH&dgqlv4Hu7RyOam~SDF^XAuCusjKD`P=m{X`91 zJ<5Sy2>SN31VXD#7YRfT7^;N-e@hLs$Zo&z)U zQAh@e2j?%yng>z}pr?PA69qk$oEC=JF-&$w7w6?;RrQj$8YPGRNx~r0we@%MR19Y!G5K` z#PCc=3HD~kU`XOv68e{FIJ0-4GI2yGRFD(D%najVlmNe}as$oM7~c)sSpgvf>q|Es zGfU**12xn!jQbyGH`;@0xp$@1mFgqP_@eDeX!{G9Oeko@>NGSwd?fb0!J4>*U7g(^ z$KjtdX!47pzpcLrrX9ZwC!8Spu7({XtN`AjxPL);cF=NiZMEQUhyidl6%_Zk%Fnqn zypj|lKVI5hliVe!Jl?iIfZ#w)_M^4-xbh|nAxDxj9tqF2N*12Uw&C^9_ZXwrBP0`c z)QWz~tGiU2BaNgfD^X9N_+xk*k?i$T?Ho3~0*Fkmf@it^Iwv_=drbYX${qm)Dnhw5 zHuRd8ndurmUYdmrSKdY-7QBb}jAEiN(#b9EJppi%tzJ+#O7-1&p{NvHR*=%UeH6j( znc||=-~eJYO%=;m?>suHkT1UPXO5oUAa7GE&wXBKEJs;WT}Kd&EO9_3NA9b1=V|xR z|6N(sT|UHa zT|I9p*%1ArLLUOCo9m)s6#<9>S9)3HQ+@`-#{j2UIDRSZ>n|%uU)Br`U!uXsuc2}- z@qp7dW2?d%Y0BfB;)G=+ zqH=*v0%AX|ij$!PpVgv+zsy4tA!6TMNXxgUR-CU11O3F~oY7CUz1 z{L*dpzNd$!fI|5S47&6?gDh9g-$~xUzoqs~w6Sgz7X%e+V0QxlS@U_5w?NAi7T7pOXfASqU#3X?4qL=DqQ4A^iVMip9@0#)}0B^fs17)qe! zXo@i`ss#BsgvevTrR}F#i76(m5VQI4zL=oKwX@6Jsc7MQiwRp4&UhS$3m4lV7NTAnRe~q_#eSgLG z(g3H~mkiMYY#l{;YaPD-FG_aWIpcqR4o$9xA{~SACF~zY_nPv>HDY}8wvQe@A-@7- z+w|H>Lct}uFruyMXvn!XuSFxwn*tbNI|vc?6?fS?_iyj`ULZ0Ey|qA1v`PBTo1%f~ zYbKnzZRo0@*9b6NX(soDg>ItN1>=}!$3UkMF@BMWtB0&26==jD*UdeNch`2%Z0I<&6pw~OZwHkg5iXLu#kD`nC1V1YX_t1 z5{rCv68gj@* zsI}0jq^9*UU-%Tpdv|@@(LzAC@mzV)Mz)?HbyFNVY_druj^=~eWCaE@y+iL$iFW6j zZDo!GiGR3zvSF_ncCzROj9bmq4JE+uICc~g-d#E`-fvsS)9~98YQr#p+Oe3!whh=* zPC#P~JzSIeI&6(&hGrV4<^}&`Xvj8EVVU8k9s(V-Qz=uUPc9zf@>pV&{5*lxk}K?z z==*MP0Nzy@g)udXpf0f{@tN6G=yoooyv*&J1k|1LRD~~(o6##j>Ty?J9(ySTDUN@m zLJD_1tD~=*dVf8#nM~jfiY~<~WEpuCD$OB}J$;yWQB}0z(kS!O7#5ELKT$p>P9y1k zTKEu$5kfFaP85Ucw#_0KvYfr*n@YMatR7%YS}1p~B24;hG5-NiZOy9XxBwrgH{-1i zl@h2-4H_&Si}V5*vK74nzFVDefrPWP17&tp2JQft7dZJH@C|Yy003zb57u6iI%J%m zGz&!emw375wRZlS4C!z}cirW?qQM*98S|dKcjG3yKMe{7GMMQ^RQsLqjvbDq&nr*k zP9J?E&s3P~Ct;oy@s^S^SQpq$Ae?IkdLM1{{@}uPxT)!C30pqDfv7n}tasrP=!bva zmTnrrrFm6(OXKSqH;{%OFNZ!40%K~4;*5cmC%i+q}8O`vMB#Zdwv;QX?sKLxSC#X47QJXY!A*Ri|fQ2l@Na zC)Q#{*Ikkyq1IwaLbzZy?Zi=bPB8oj#4+%e$lQ0Br!_p3f?7NpnH`XmFKx-AJh{pG zA=8H{E=IyYE|o~XAw(M;Xn8h;!aF7 zgGw1q;own{m@?UYqXeiSK(q^eFU?tYfUuV(@Adk329W;HZ1`@yQNMipwwP$a+WM%zK=pZnllCJdOl<;$Ot@(aU@}LAQ#q*S zxL$E*NOv=Uy)5m#h)RDxza!t9zX3#E+XiLb>kLLMW-H!(b`A&XB1-r;pj(&#u}N*a zs!%fnph^u1dc=UzkMhqyy-aEst75@ZB%Q;c6(t&f$&qOF>J-A2yLg(kSJ4M3!TgO- zRal?$^vAk9s6oov%ZZY+G;T-|8KCHi9lRWDsBcR_?KoAwRhETSPOK6N3Ba~3{{fp7 zX@VF?Sh&!Qxx%IPT#;;&0b8lH8+e-vZ3r{NV&4vtYUmT5fMrEtxev8`@AJ)*@Jcp0 zA~*)QR=z6Zcx1&K^7t?vVAT=Kmh8pC87X42qf8|ou`!zQmuMs?hVdJpd5Oz+N;!cU zdmH>STfWmzjUB^+k8h{a?|Y)a5u-u6LqO+(OG^`Z2zzZOxW7^)ztV^U@M&F|E?T2c zYJ3mhD?g?X5o-NCb7ty^LK{~CouO-!P+3fp7K8jJ-m~%i3kri@{+^a?&PA69Jh8FO z7-la7xzT@~plj(r^npu32P8UcYEya|i&Z*n&?El~9W_QQW?Ada%jbzJvI+GxH`XOJ zzjxjFbuKlTK9W|q`1@pB&kN-h)S(y*?&X17>ITa$TFAjwcW@&>JhvN~DE z2a-GvcN2tVPU0?5b3K7Y2T6PoJV{cTb4OD;4|HYLyG-1Y?hu)S{rH9-HxgPumNX58 z48e_27i_>{h*=BU0t3gzFPs`dklF)2M}YqqLTTLW=^^}`Yo*=7sV5)rChRAaHEj`w zY|w*M{fH~<{jNo(GB;EYP}H>J*`wjRdrCDZJnCfE6u0C4i^fSVP;{BtW*$!2eH17i zC@-UBFrh7U__a}xk@3+s!I+~mc!=7Qd<|OJyF{h`LaG7dUpy`_9jz_?{d&fm={wI% z8p@1Rb+tg(K^}OfzVS!-0mT6B# zG45nMpBRP^O*Gq9KF3$uyctD&nHaX}0d^du3I$_j%7H~tOBmE3%kW8-0<{ua?X$jS zG%P!>#c@?;_;391tnA(Vk}8TWJJWC<;<_lDE$aY#I;dQxnr0H0MNO#_=kw;wM%X7H zRj6%A=)P5%H8W8=y48LZzn@=94W>Z~d^X8dms+uIkjrs7(bWnpmCWM8! z`qejG?h@Wk#Pl~N>yZzx&F-o1^|ZpuIYJw(TF$0g7^y&#LRoxr)d)N9M76cns&j`@ z*?;gNb5)c|Bm${sz}4rYMlt$K_%cc&ucpf+lt96}q^QA!B2qjUUL^nnR@MT$b@vXJXwpV#jUfKuYP)vZs~*np3;pmpk4%SuVZt7)L|;`B0U5ZJs*4;r27VNP z4<*XT0FOFW=J$%r?A9^3*o?-OpSUS;l*`7*2Wr$UkGN9fl>2Pt9gc|koxlwUV6A8` z0ywnoV7VnTDr)E|-)+y|e!9N4xWGyK$-4{53P_EabXmnw2_N;MG}EB50e3qk`01H+ z%`Et73uaRWHT`_CNkQm%X{6ZyB7+e1Qcj8mhU6c@2LDSG>r1R00H&t-b(y%9EJT(@ zzw$rUeQY$8tHp24Gl1sunU!%{=~9WMt_IBXbsAw&A`WweEOL7{krQ6~=?J>Gc3f7` zA^hUM|3d30*i$23j?ITv;;6kwvpc zKd`eV3Qv)lFUdRYJ8CW#mOq(ZHtWM7tMA8FbJ0c>X)enH_kTEgjz^3uY2j8ez z!24Ujk~MEHb?+>Ei$sq9F$7rNp)wYQ90lndp@OH>t7M8NOJ$3H+v;nrt*>@rq?y^h z;4NhF9b=sye2^18V3LK2UVjWgq_SrcC#)0XFU=dUd(1qM;eY5@rdC5zY`H362r;92 zcx7=7KlHUgBO0rOso^xBh|RQD$Gma)u~r@y7pW2)9e8-ToKnV9g{YXA^1iCjycR(^ zh9pfB%siYtu<`KF?oVAVmWn#FSh=ymLKrBVxLfWjh7`x!81UGS-p~+b&HfJytPn41 zKK#{O2M9{*8efT{3)jIn0D;j6;I4g$kL0Gs-0`puJjMlxKT~-|Y;etER2Pjdgm;NB zbS#83&X{*MJMZm>2de@X%>}QReZQLVWdBWy%px;v@k*J%ufDfcDj?{Rh*%DtH@2Zi zzK4jMFT)NW86D)o!eBx-?|gs7_deXb@gZhfp(*40JwlE>zEal%uS%zb&cy^K?$VaTnPS&zf>CFdOV=vkXU z-`(mEm;~;2c3cdjt+-5o#=d5JyH$2vt z?a5#+GN^O~aG6|N_=|47pU?vH#8r!BdjC`t;;?4cmVbTOd#(|qB-A2h>;O5v6W^n+ zMpu7{Su`>;dwJ=vYva4o{3YZMY~O~F7?Xn)TKvP9qRI^QPTuMRI#@g(Y;pJ83;WCv z6@gi{jugo&?T5slib-lmP03r=9!BuCjLSJ;HW?y4Y?)Fe=89>}m@J_PD$fIi#N8z1 z4__|^RhFE~7Iw`?OW(+<-2{v*K8QP#qC!aC_g$qTupXFzjuCYtP-GJo5_$ zsD5NH0|75|sn1E@Ryb+TO;U>8H{+@VY^wAZ-x+uO6xLs4loj~)p#?irYFz&Og92Ea z3ZClg4*^YkT_B=yygy3sQWH3wwKy4{x?06sn7Fy|da(>cG2jB$j=BxB)~GIrRxckWAdYe8KztNC+sYG~2=ysPZq0DI6#LP?jU}99uugn+?}dLBEZuVJ@-sdj_Huw$;xthCb57V#9?9pG+JHI~VG4(XWF#>Z(h*!u30yTv z&FrzT7)9+)DVs(wEf_b62#wd_lb!}_)8xlY35gI_-nAp{!e9Zg zO;m$LY+m>z-ERa3In&$sV9&wM0TFVUH(uxdhB@k7d_<7}bFc-Fpm+VDXS=wX0tWZ} z-r7X_Li2i%F}d=>4jJ99M51?pl-%~x`oK4+h$mc!6v%t;BVu}Cm0J7LE0Igt$zavU;_zUNiMDtmjOYYNo+prHq)cI*ev2rhm*R!M^~Rzem}c4;i zgUIJ6wo84I5%xEQ%Ec47=9$Bc{P5Y`9I^=V?w7^1=m)s{hnWNf;{YN-;7A(?` z-<-D}6$32j;N*8zGK%)mI--o2Oo%Ty$B`<_N+ zA|v?bUG>rjsO*4F0qGOFuT+ylJshZ_DzLW#-@G~JVrO2uO!bBNJF-R#rPJJwT27P-A67F4jmLC$hq2^eVoTcO_Bbh?BhBF=l(OSFcv zl%`aq02m|YUBKHMuYZ+Oz4OP}O`4mOR>sL*Cv?y2uIT9uBF`(TIJ_S4u|n%ujLM*n z_}}8p{~UGo5ilMmA~z3(Y;sG=Z~^g!k|-eLKSMuW@Y@)EAg!@;dLfWFg{;jNOfFtjZe={42p>s3ZEgC zwACluA!j4Z(>vDyE8QB=-$7h7V~ELqL2!#>MGS(P%MvpVcmpV|K);SM$APHrwS1*Z zMGv78hKjHbt~m~($JO+uS2{hmGSgbBsEBl@8_K#-N~anmSeZh-8{=Y&0#85E6l$#$n7?=IbD}*IIk4Ic}m~Iv< zlSn3DxKDc@;U2&ji1-D7HYVJ=8$q9ojJQpK%@ z`4NS$u}x2T{}mGGgHzTze!!TiL1GdRdNx{iMg+R}H8Lc7=iM=KZjw!Az_laX{%+DR zTliC#|4XNR4;=N%(OZO*8mW@HBER_9eHH>muR<=5O#oRF=_kMkiF$^Ca(0eNGm%#g zkO~E1)B;H8(*$^x0fcsOE1n(oIt+~Yw<~OCr8#WL>67?Q+u6zteQFMB|4&PX6Q)97 z(8>WDF+nK@J+qzMsbk2~oaB7bKzG{e0bV8s-*23TbLVc;dk6DqX2O~SPp8anu~uOU z^bXxu?=G9yn+gS`U^V(k?)jOGlOjgBs|F7;8o#SNtCJ@%&9v&$K(3!Wswy&=D;>?Y z%G;u-E70-ZVG`nlhi8g>8MZQ#V9X9+P5AqGiliqqx*G&hu^NUs*CfiBFxE-tCJ5p8 zFTc;hhdGr}<={b73~8m5D&C1H)+)DoE@zCT?~x@$a$F<*Q*rbY1Y93-Oj8$abMFA+W+V&B-GKy(D+!K~qeu#26E62Kj8`J&+1`k9y1H4AfKPk1qbELB#V;Y*W_pb1ID<{NMc#=Lu6wTgI7 za5Jd;1;*_^t=RZ>`U?t=d(C(4T$Iao?nA8~3P!|}{aAw72oE+k#4jM@OqFv12g)>o z$FqmA-ZwwH)VZ;e&xV2}a82MGlEr*QeoeB;Y<4{Y=HSiF7V`PE(abY>9%=+J8^(}faV7)*Ldz-Hhy zC9lcchQ*AXZpnd2+yZcEFqOcS_Z8eK1D@p>;4kVK$A!TQQ(pF4Leey2xcuXy^-rGiTqQcLvK8Dc*_a+CB%a;sMbDNag z+)0OF;zFlZ*7MlJhE#9*jeSDv*5p4JOKSzF29t?lazuT4mSfYKYoXW|Z4|Z>YyWkO zIf!Bz<1=kWX#`lyN-;gXl|bS9jo}`8T7KsX)%bRSpE}p#tdr52D5jk-N4<$h*KD2Z z+KLl)AR1@v5`*-19T=-`b;i)2(xQ81@#26Ptky;-;hGu}_nKxkh)v}?8ee(9=N(Z8DJ2cjzNV#M1p@Cw;G+a9-Gam`UhUo`B5K;_p`cFQzEVt(h*J6JA0JH&$dTu1&C@3L_Zf6! zKSnpy_ZCS5MDB>EDRCSlqJ+vq-&+QLuS_t18sG#V+BdjH(eQijig6+96U-85E z)DsCGlg8Dk-wJ2(pnYuMFH!Q-0lUo`&ZAT+dz&>!CC>+nnbs$VN=jy+j_eF z6w&0Sr9*yL9v&)H#RJ!WAggvt)+xO-)oh-8T0J>Wc%#t9JgP}X@yNHGqG9x$mfi|z z9CF#olrD)d?htZ&FE2STb#bVV;b?+neK>Da?b(b}K6vq@8FN1le$|RFN3}_jhv2ty zX8fm`8fv`P>;)fSy|8#@=%J)&^K=67(o;?wR%jN$N=Il*nwWOv@&Njl5WPmAJiknb2H!O)gw;Q zT2GtJ!G^>@ z1(fDEwJ)217r~1&xUzRzU%#VUhs^GiHFxldl5nI6jH|H(4)LC`uQf!P6u$0_rH5Lv zL2M3hnn=1r9Q|gwCaG`hMkyW;w#K?0SV%wpr?GX`t18{s26x}%Y9wLg6HY2L)$497 z3r$h8>i2hra}Nixi82om|2>fqz;4i$>N!!rP}{2Q;*w@1zbX|+u-}r7GI4}Xa7vD_ zEqFO!l|CH*B&t1Ic=Ueels>@X`up?JiF-y;75EWm9ZFuWi%%)4*kiPsz&}I9a3-iR zewbvfDuVm%hL%d>3Z#yI0TIC*0r2fdL$r}q)4#gB-T<}8jfMzw7hcdDBV8-&45An$$bJ3xzr3MDYqZcF|M(EJD8F}1LuS~mjM(3TWsdR zxUoHB@gMelJn9%JGFceGE{_RW-(MfIiox%S}-tXzR)m(e)=Y?tgH40#i4*kD

NE}5eU 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

7*E<6liHv6VO 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 literal 830527 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

Si=B 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≫eSmFp-FRT>gCAkiY@T+>C!`%j-~|KHtr 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%0A@5PqwHyRkJ%AI@%bqb` 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 z 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

HKz^Rj4iIhvi%-4^*L%eym8VmB-6dD#FQqe1 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⋙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 +#include +#include +#include +#ifndef _MSC_VER +# include +#endif +#include +#include "Lyra2.h" +#include "Sponge.h" + +/** + * Executes Lyra2 based on the G function from Blake2b. This version supports salts and passwords + * whose combined length is smaller than the size of the memory matrix, (i.e., (nRows x nCols x b) bits, + * where "b" is the underlying sponge's bitrate). In this implementation, the "basil" is composed by all + * integer parameters (treated as type "unsigned int") in the order they are provided, plus the value + * of nCols, (i.e., basil = kLen || pwdlen || saltlen || timeCost || nRows || nCols). + * + * @param K The derived key to be output by the algorithm + * @param kLen Desired key length + * @param pwd User password + * @param pwdlen Password length + * @param salt Salt + * @param saltlen Salt length + * @param timeCost Parameter to determine the processing time (T) + * @param nRows Number or rows of the memory matrix (R) + * @param nCols Number of columns of the memory matrix (C) + * + * @return 0 if the key is generated correctly; -1 if there is an error (usually due to lack of memory for allocation) + */ +int LYRA2(uint64_t* wholeMatrix, void *K, uint64_t kLen, const void *pwd, uint64_t pwdlen, const void *salt, uint64_t saltlen, uint64_t timeCost, uint64_t nRows, uint64_t nCols) { + + //============================= Basic variables ============================// + int64_t row = 2; //index of row to be processed + int64_t prev = 1; //index of prev (last row ever computed/modified) + int64_t rowa = 0; //index of row* (a previous row, deterministically picked during Setup and randomly picked while Wandering) + int64_t tau; //Time Loop iterator + int64_t step = 1; //Visitation step (used during Setup and Wandering phases) + int64_t window = 2; //Visitation window (used to define which rows can be revisited during Setup) + int64_t gap = 1; //Modifier to the step, assuming the values 1 or -1 + //==========================================================================/ + + //========== Initializing the Memory Matrix and pointers to it =============// + //Tries to allocate enough space for the whole memory matrix + + + const int64_t ROW_LEN_INT64 = BLOCK_LEN_INT64 * nCols; + const int64_t ROW_LEN_BYTES = ROW_LEN_INT64 * 8; + + if (wholeMatrix == NULL) { + return -1; + } + + //==========================================================================/ + + //============= Getting the password + salt + basil padded with 10*1 ===============// + //OBS.:The memory matrix will temporarily hold the password: not for saving memory, + //but this ensures that the password copied locally will be overwritten as soon as possible + + //First, we clean enough blocks for the password, salt, basil and padding + uint64_t nBlocksInput = ((saltlen + pwdlen + 6 * sizeof (uint64_t)) / BLOCK_LEN_BLAKE2_SAFE_BYTES) + 1; + byte *ptrByte = (byte*) wholeMatrix; + memset(ptrByte, 0, nBlocksInput * BLOCK_LEN_BLAKE2_SAFE_BYTES); + + //Prepends the password + memcpy(ptrByte, pwd, pwdlen); + ptrByte += pwdlen; + + //Concatenates the salt + memcpy(ptrByte, salt, saltlen); + ptrByte += saltlen; + + //Concatenates the basil: every integer passed as parameter, in the order they are provided by the interface + memcpy(ptrByte, &kLen, sizeof (uint64_t)); + ptrByte += sizeof (uint64_t); + memcpy(ptrByte, &pwdlen, sizeof (uint64_t)); + ptrByte += sizeof (uint64_t); + memcpy(ptrByte, &saltlen, sizeof (uint64_t)); + ptrByte += sizeof (uint64_t); + memcpy(ptrByte, &timeCost, sizeof (uint64_t)); + ptrByte += sizeof (uint64_t); + memcpy(ptrByte, &nRows, sizeof (uint64_t)); + ptrByte += sizeof (uint64_t); + memcpy(ptrByte, &nCols, sizeof (uint64_t)); + ptrByte += sizeof (uint64_t); + + //Now comes the padding + *ptrByte = 0x80; //first byte of padding: right after the password + ptrByte = (byte*) wholeMatrix; //resets the pointer to the start of the memory matrix + ptrByte += nBlocksInput * BLOCK_LEN_BLAKE2_SAFE_BYTES - 1; //sets the pointer to the correct position: end of incomplete block + *ptrByte ^= 0x01; //last byte of padding: at the end of the last incomplete block + //==========================================================================/ + + //======================= Initializing the Sponge State ====================// + //Sponge state: 16 uint64_t, BLOCK_LEN_INT64 words of them for the bitrate (b) and the remainder for the capacity (c) + uint64_t *state = _mm_malloc(16 * sizeof (uint64_t), 32); + if (state == NULL) { + return -1; + } + initState(state); + //==========================================================================/ + + //================================ Setup Phase =============================// + //Absorbing salt, password and basil: this is the only place in which the block length is hard-coded to 512 bits + uint64_t *ptrWord = wholeMatrix; + for (int i = 0; i < nBlocksInput; i++) { + absorbBlockBlake2Safe(state, ptrWord); //absorbs each block of pad(pwd || salt || basil) + ptrWord += BLOCK_LEN_BLAKE2_SAFE_INT64; //goes to next block of pad(pwd || salt || basil) + } + + //Initializes M[0] and M[1] + reducedSqueezeRow0(state, &wholeMatrix[0], nCols); //The locally copied password is most likely overwritten here + reducedDuplexRow1(state, &wholeMatrix[0], &wholeMatrix[ROW_LEN_INT64], nCols); + + do { + //M[row] = rand; //M[row*] = M[row*] XOR rotW(rand) + reducedDuplexRowSetup(state, &wholeMatrix[prev*ROW_LEN_INT64], &wholeMatrix[rowa*ROW_LEN_INT64], &wholeMatrix[row*ROW_LEN_INT64], nCols); + + //updates the value of row* (deterministically picked during Setup)) + rowa = (rowa + step) & (window - 1); + //update prev: it now points to the last row ever computed + prev = row; + //updates row: goes to the next row to be computed + row++; + + //Checks if all rows in the window where visited. + if (rowa == 0) { + step = window + gap; //changes the step: approximately doubles its value + window *= 2; //doubles the size of the re-visitation window + gap = -gap; //inverts the modifier to the step + } + + } while (row < nRows); + //==========================================================================/ + + //============================ Wandering Phase =============================// + row = 0; //Resets the visitation to the first row of the memory matrix + for (tau = 1; tau <= timeCost; tau++) { + //Step is approximately half the number of all rows of the memory matrix for an odd tau; otherwise, it is -1 + step = (tau % 2 == 0) ? -1 : nRows / 2 - 1; + do { + //Selects a pseudorandom index row* + //------------------------------------------------------------------------------------------ + //rowa = ((unsigned int)state[0]) & (nRows-1); //(USE THIS IF nRows IS A POWER OF 2) + rowa = ((uint64_t) (state[0])) % nRows; //(USE THIS FOR THE "GENERIC" CASE) + //------------------------------------------------------------------------------------------ + + //Performs a reduced-round duplexing operation over M[row*] XOR M[prev], updating both M[row*] and M[row] + reducedDuplexRow(state, &wholeMatrix[prev*ROW_LEN_INT64], &wholeMatrix[rowa*ROW_LEN_INT64], &wholeMatrix[row*ROW_LEN_INT64], nCols); + + //update prev: it now points to the last row ever computed + prev = row; + + //updates row: goes to the next row to be computed + //------------------------------------------------------------------------------------------ + //row = (row + step) & (nRows-1); //(USE THIS IF nRows IS A POWER OF 2) + row = (row + step) % nRows; //(USE THIS FOR THE "GENERIC" CASE) + //------------------------------------------------------------------------------------------ + + } while (row != 0); + } + //==========================================================================/ + + //============================ Wrap-up Phase ===============================// + //Absorbs the last block of the memory matrix + absorbBlock(state, &wholeMatrix[rowa*ROW_LEN_INT64]); + + //Squeezes the key + squeeze(state, K, kLen); + //==========================================================================/ + + //========================= Freeing the memory =============================// + _mm_free(state); + //==========================================================================/ + + return 0; +} + diff --git a/exlib/lyra2z-py/Lyra2.h b/exlib/lyra2z-py/Lyra2.h new file mode 100644 index 000000000000..0e53680ca2e1 --- /dev/null +++ b/exlib/lyra2z-py/Lyra2.h @@ -0,0 +1,51 @@ +/** + * Header file for the Lyra2 Password Hashing Scheme (PHS). + * + * Author: The Lyra PHC team (http://www.lyra-kdf.net/) -- 2014. + * + * This software is hereby placed in the public domain. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef LYRA2_H_ +#define LYRA2_H_ + +#include + +typedef unsigned char byte; + +//Block length required so Blake2's Initialization Vector (IV) is not overwritten (THIS SHOULD NOT BE MODIFIED) +#define BLOCK_LEN_BLAKE2_SAFE_INT64 8 //512 bits (=64 bytes, =8 uint64_t) +#define BLOCK_LEN_BLAKE2_SAFE_BYTES (BLOCK_LEN_BLAKE2_SAFE_INT64 * 8) //same as above, in bytes + + +#ifdef BLOCK_LEN_BITS + #define BLOCK_LEN_INT64 (BLOCK_LEN_BITS/64) //Block length: 768 bits (=96 bytes, =12 uint64_t) + #define BLOCK_LEN_BYTES (BLOCK_LEN_BITS/8) //Block length, in bytes +#else //default block lenght: 768 bits + #define BLOCK_LEN_INT64 12 //Block length: 768 bits (=96 bytes, =12 uint64_t) + #define BLOCK_LEN_BYTES (BLOCK_LEN_INT64 * 8) //Block length, in bytes +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + int LYRA2(uint64_t* matrix, void *K, uint64_t kLen, const void *pwd, uint64_t pwdlen, const void *salt, uint64_t saltlen, uint64_t timeCost, uint64_t nRows, uint64_t nCols); + +#ifdef __cplusplus +} + +#endif + +#endif /* LYRA2_H_ */ diff --git a/exlib/lyra2z-py/README.md b/exlib/lyra2z-py/README.md new file mode 100644 index 000000000000..08acbf44cff6 --- /dev/null +++ b/exlib/lyra2z-py/README.md @@ -0,0 +1,55 @@ + +---------------------------------- +Python C module for lyra2z hashing +---------------------------------- + +Notes for Zcoin: +---------------- + +Module: lyra2z_hash + +Please see the "test.py" for a testcase + +From a previous readme from ocminer (updated): + +Requirements: +------------- +In order to run P2Pool and other Python based pools with the Zcoin network, you would need to build and install the +lyra2z_hash module for Python that includes the lyra2z proof of work code that Zcoin uses for hashes. + +Linux: + + sudo python setup.py install + + +Windows (mingw): +* Install MinGW: http://www.mingw.org/wiki/Getting_Started +* Install Python 2.7: http://www.python.org/getit/ + +In cmd type this: + + C:\Python27\python.exe setup.py build --compile=mingw32 install + + - untested + + +Windows (microsoft visual c++) +* Open visual studio console + +In cmd type this: + + SET VS90COMNTOOLS=%VS140COMNTOOLS% # For visual c++ 2015 + C:\Python27\python.exe setup.py install + + Test the install: + + C:\Python27\python.exe + ... + >>>import lyra2z_hash + >>>help('lyra2z_hash') + >>>quit() + + - tested ok + + + diff --git a/exlib/lyra2z-py/Sponge.c b/exlib/lyra2z-py/Sponge.c new file mode 100644 index 000000000000..c82f2ae54313 --- /dev/null +++ b/exlib/lyra2z-py/Sponge.c @@ -0,0 +1,832 @@ +/** + * A simple implementation of Blake2b's internal permutation + * in the form of a sponge. + * + * Author: The Lyra PHC team (http://www.lyra-kdf.net/) -- 2014. + * + * This software is hereby placed in the public domain. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include +#include +#include +#include "Sponge.h" +#include "Lyra2.h" + +#include + +/** + * Initializes the Sponge State. The first 512 bits are set to zeros and the remainder + * receive Blake2b's IV as per Blake2b's specification. Note: Even though sponges + * typically have their internal state initialized with zeros, Blake2b's G function + * has a fixed point: if the internal state and message are both filled with zeros. the + * resulting permutation will always be a block filled with zeros; this happens because + * Blake2b does not use the constants originally employed in Blake2 inside its G function, + * relying on the IV for avoiding possible fixed points. + * + * @param state The 1024-bit array to be initialized + */ +inline void initState(uint64_t state[/*16*/]) { + //First 512 bis are zeros + memset(state, 0, 64); + //Remainder BLOCK_LEN_BLAKE2_SAFE_BYTES are reserved to the IV + state[8] = blake2b_IV[0]; + state[9] = blake2b_IV[1]; + state[10] = blake2b_IV[2]; + state[11] = blake2b_IV[3]; + state[12] = blake2b_IV[4]; + state[13] = blake2b_IV[5]; + state[14] = blake2b_IV[6]; + state[15] = blake2b_IV[7]; +} + +/** + * Execute Blake2b's G function, with all 12 rounds. + * + * @param v A 1024-bit (16 uint64_t) array to be processed by Blake2b's G function + */ +inline static void blake2bLyra(uint64_t *v) { + ROUND_LYRA(0); + ROUND_LYRA(1); + ROUND_LYRA(2); + ROUND_LYRA(3); + ROUND_LYRA(4); + ROUND_LYRA(5); + ROUND_LYRA(6); + ROUND_LYRA(7); + ROUND_LYRA(8); + ROUND_LYRA(9); + ROUND_LYRA(10); + ROUND_LYRA(11); +} + +/** + * Executes a reduced version of Blake2b's G function with only one round + * @param v A 1024-bit (16 uint64_t) array to be processed by Blake2b's G function + */ +inline static void reducedBlake2bLyra(uint64_t *v) { + ROUND_LYRA(0); +} + +/** + * Performs a squeeze operation, using Blake2b's G function as the + * internal permutation + * + * @param state The current state of the sponge + * @param out Array that will receive the data squeezed + * @param len The number of bytes to be squeezed into the "out" array + */ +inline void squeeze(uint64_t *state, byte *out, unsigned int len) { + int fullBlocks = len / BLOCK_LEN_BYTES; + byte *ptr = out; + int i; + //Squeezes full blocks + for (i = 0; i < fullBlocks; i++) { + memcpy(ptr, state, BLOCK_LEN_BYTES); + blake2bLyra(state); + ptr += BLOCK_LEN_BYTES; + } + + //Squeezes remaining bytes + memcpy(ptr, state, (len % BLOCK_LEN_BYTES)); +} + +/** + * Performs an absorb operation for a single block (BLOCK_LEN_INT64 words + * of type uint64_t), using Blake2b's G function as the internal permutation + * + * @param state The current state of the sponge + * @param in The block to be absorbed (BLOCK_LEN_INT64 words) + */ +inline void absorbBlock(uint64_t *state, const uint64_t *in) { + //XORs the first BLOCK_LEN_INT64 words of "in" with the current state + state[0] ^= in[0]; + state[1] ^= in[1]; + state[2] ^= in[2]; + state[3] ^= in[3]; + state[4] ^= in[4]; + state[5] ^= in[5]; + state[6] ^= in[6]; + state[7] ^= in[7]; + state[8] ^= in[8]; + state[9] ^= in[9]; + state[10] ^= in[10]; + state[11] ^= in[11]; + + //Applies the transformation f to the sponge's state + blake2bLyra(state); +} + +/** + * Performs an absorb operation for a single block (BLOCK_LEN_BLAKE2_SAFE_INT64 + * words of type uint64_t), using Blake2b's G function as the internal permutation + * + * @param state The current state of the sponge + * @param in The block to be absorbed (BLOCK_LEN_BLAKE2_SAFE_INT64 words) + */ +inline void absorbBlockBlake2Safe(uint64_t *state, const uint64_t *in) { + //XORs the first BLOCK_LEN_BLAKE2_SAFE_INT64 words of "in" with the current state + + state[0] ^= in[0]; + state[1] ^= in[1]; + state[2] ^= in[2]; + state[3] ^= in[3]; + state[4] ^= in[4]; + state[5] ^= in[5]; + state[6] ^= in[6]; + state[7] ^= in[7]; + + + //Applies the transformation f to the sponge's state + blake2bLyra(state); + +} + +/** + * Performs a reduced squeeze operation for a single row, from the highest to + * the lowest index, using the reduced-round Blake2b's G function as the + * internal permutation + * + * @param state The current state of the sponge + * @param rowOut Row to receive the data squeezed + */ +inline void reducedSqueezeRow0(uint64_t* state, uint64_t* rowOut, uint64_t nCols) { + uint64_t* ptrWord = rowOut + (nCols-1)*BLOCK_LEN_INT64; //In Lyra2: pointer to M[0][C-1] + int i; + //M[row][C-1-col] = H.reduced_squeeze() + for (i = 0; i < nCols; i++) { + ptrWord[0] = state[0]; + ptrWord[1] = state[1]; + ptrWord[2] = state[2]; + ptrWord[3] = state[3]; + ptrWord[4] = state[4]; + ptrWord[5] = state[5]; + ptrWord[6] = state[6]; + ptrWord[7] = state[7]; + ptrWord[8] = state[8]; + ptrWord[9] = state[9]; + ptrWord[10] = state[10]; + ptrWord[11] = state[11]; + + //Goes to next block (column) that will receive the squeezed data + ptrWord -= BLOCK_LEN_INT64; + + //Applies the reduced-round transformation f to the sponge's state + reducedBlake2bLyra(state); + } +} + +/** + * Performs a reduced duplex operation for a single row, from the highest to + * the lowest index, using the reduced-round Blake2b's G function as the + * internal permutation + * + * @param state The current state of the sponge + * @param rowIn Row to feed the sponge + * @param rowOut Row to receive the sponge's output + */ +inline void reducedDuplexRow1(uint64_t *state, uint64_t *rowIn, uint64_t *rowOut, uint64_t nCols) { + uint64_t* ptrWordIn = rowIn; //In Lyra2: pointer to prev + uint64_t* ptrWordOut = rowOut + (nCols-1)*BLOCK_LEN_INT64; //In Lyra2: pointer to row + int i; + + for (i = 0; i < nCols; i++) { + + //Absorbing "M[prev][col]" + state[0] ^= (ptrWordIn[0]); + state[1] ^= (ptrWordIn[1]); + state[2] ^= (ptrWordIn[2]); + state[3] ^= (ptrWordIn[3]); + state[4] ^= (ptrWordIn[4]); + state[5] ^= (ptrWordIn[5]); + state[6] ^= (ptrWordIn[6]); + state[7] ^= (ptrWordIn[7]); + state[8] ^= (ptrWordIn[8]); + state[9] ^= (ptrWordIn[9]); + state[10] ^= (ptrWordIn[10]); + state[11] ^= (ptrWordIn[11]); + + //Applies the reduced-round transformation f to the sponge's state + reducedBlake2bLyra(state); + + //M[row][C-1-col] = M[prev][col] XOR rand + ptrWordOut[0] = ptrWordIn[0] ^ state[0]; + ptrWordOut[1] = ptrWordIn[1] ^ state[1]; + ptrWordOut[2] = ptrWordIn[2] ^ state[2]; + ptrWordOut[3] = ptrWordIn[3] ^ state[3]; + ptrWordOut[4] = ptrWordIn[4] ^ state[4]; + ptrWordOut[5] = ptrWordIn[5] ^ state[5]; + ptrWordOut[6] = ptrWordIn[6] ^ state[6]; + ptrWordOut[7] = ptrWordIn[7] ^ state[7]; + ptrWordOut[8] = ptrWordIn[8] ^ state[8]; + ptrWordOut[9] = ptrWordIn[9] ^ state[9]; + ptrWordOut[10] = ptrWordIn[10] ^ state[10]; + ptrWordOut[11] = ptrWordIn[11] ^ state[11]; + + + //Input: next column (i.e., next block in sequence) + ptrWordIn += BLOCK_LEN_INT64; + //Output: goes to previous column + ptrWordOut -= BLOCK_LEN_INT64; + } +} + +/** + * Performs a duplexing operation over "M[rowInOut][col] [+] M[rowIn][col]" (i.e., + * the wordwise addition of two columns, ignoring carries between words). The + * output of this operation, "rand", is then used to make + * "M[rowOut][(N_COLS-1)-col] = M[rowIn][col] XOR rand" and + * "M[rowInOut][col] = M[rowInOut][col] XOR rotW(rand)", where rotW is a 64-bit + * rotation to the left and N_COLS is a system parameter. + * + * @param state The current state of the sponge + * @param rowIn Row used only as input + * @param rowInOut Row used as input and to receive output after rotation + * @param rowOut Row receiving the output + * + */ +inline void reducedDuplexRowSetup(uint64_t *state, uint64_t *rowIn, uint64_t *rowInOut, uint64_t *rowOut, uint64_t nCols) { + + uint64_t* ptrWordIn = rowIn; //In Lyra2: pointer to prev + uint64_t* ptrWordInOut = rowInOut; //In Lyra2: pointer to row* + uint64_t* ptrWordOut = rowOut + (nCols-1)*BLOCK_LEN_INT64; //In Lyra2: pointer to row + +#ifdef __AVX2__ + __m256i* vstate = (__m256i*)state; + __m256i* vptrWordIn = (__m256i*)ptrWordIn; //In Lyra2: pointer to prev + __m256i* vptrWordInOut = (__m256i*)ptrWordInOut; //In Lyra2: pointer to row* + __m256i* vptrWordOut = (__m256i*)ptrWordOut; //In Lyra2: pointer to row + + for (int i = 0; i < nCols; i++) { + //Absorbing "M[prev] [+] M[row*]" + vstate[0] = _mm256_xor_si256(vstate[0], _mm256_add_epi64(vptrWordIn[0], vptrWordInOut[0])); + vstate[1] = _mm256_xor_si256(vstate[1], _mm256_add_epi64(vptrWordIn[1], vptrWordInOut[1])); + vstate[2] = _mm256_xor_si256(vstate[2], _mm256_add_epi64(vptrWordIn[2], vptrWordInOut[2])); + + //Applies the reduced-round transformation f to the sponge's state + reducedBlake2bLyra(state); + + //M[row][col] = M[prev][col] XOR rand + vptrWordOut[0] = _mm256_xor_si256(vptrWordIn[0], vstate[0]); + vptrWordOut[1] = _mm256_xor_si256(vptrWordIn[1], vstate[1]); + vptrWordOut[2] = _mm256_xor_si256(vptrWordIn[2], vstate[2]); + + //M[row*][col] = M[row*][col] XOR rotW(rand) + __m256i x1 = _mm256_permute4x64_epi64(vstate[0], 0x93); + __m256i x2 = _mm256_permute4x64_epi64(vstate[1], 0x93); + __m256i x3 = _mm256_permute4x64_epi64(vstate[2], 0x93); + vptrWordInOut[0] = _mm256_xor_si256(vptrWordInOut[0], _mm256_blend_epi32(x1, x3, 0x03)); + vptrWordInOut[1] = _mm256_xor_si256(vptrWordInOut[1], _mm256_blend_epi32(x2, x1, 0x03)); + vptrWordInOut[2] = _mm256_xor_si256(vptrWordInOut[2], _mm256_blend_epi32(x3, x2, 0x03)); + + //Inputs: next column (i.e., next block in sequence) + vptrWordInOut += (BLOCK_LEN_INT64 / 4); + vptrWordIn += (BLOCK_LEN_INT64 / 4); + //Output: goes to previous column + vptrWordOut -= (BLOCK_LEN_INT64 / 4); + } +#else + for (int i = 0; i < nCols; i++) { + //Absorbing "M[prev] [+] M[row*]" + state[0] ^= (ptrWordIn[0] + ptrWordInOut[0]); + state[1] ^= (ptrWordIn[1] + ptrWordInOut[1]); + state[2] ^= (ptrWordIn[2] + ptrWordInOut[2]); + state[3] ^= (ptrWordIn[3] + ptrWordInOut[3]); + state[4] ^= (ptrWordIn[4] + ptrWordInOut[4]); + state[5] ^= (ptrWordIn[5] + ptrWordInOut[5]); + state[6] ^= (ptrWordIn[6] + ptrWordInOut[6]); + state[7] ^= (ptrWordIn[7] + ptrWordInOut[7]); + state[8] ^= (ptrWordIn[8] + ptrWordInOut[8]); + state[9] ^= (ptrWordIn[9] + ptrWordInOut[9]); + state[10] ^= (ptrWordIn[10] + ptrWordInOut[10]); + state[11] ^= (ptrWordIn[11] + ptrWordInOut[11]); + + //Applies the reduced-round transformation f to the sponge's state + reducedBlake2bLyra(state); + + //M[row][col] = M[prev][col] XOR rand + ptrWordOut[0] = ptrWordIn[0] ^ state[0]; + ptrWordOut[1] = ptrWordIn[1] ^ state[1]; + ptrWordOut[2] = ptrWordIn[2] ^ state[2]; + ptrWordOut[3] = ptrWordIn[3] ^ state[3]; + ptrWordOut[4] = ptrWordIn[4] ^ state[4]; + ptrWordOut[5] = ptrWordIn[5] ^ state[5]; + ptrWordOut[6] = ptrWordIn[6] ^ state[6]; + ptrWordOut[7] = ptrWordIn[7] ^ state[7]; + ptrWordOut[8] = ptrWordIn[8] ^ state[8]; + ptrWordOut[9] = ptrWordIn[9] ^ state[9]; + ptrWordOut[10] = ptrWordIn[10] ^ state[10]; + ptrWordOut[11] = ptrWordIn[11] ^ state[11]; + + //M[row*][col] = M[row*][col] XOR rotW(rand) + ptrWordInOut[0] ^= state[11]; + ptrWordInOut[1] ^= state[0]; + ptrWordInOut[2] ^= state[1]; + ptrWordInOut[3] ^= state[2]; + ptrWordInOut[4] ^= state[3]; + ptrWordInOut[5] ^= state[4]; + ptrWordInOut[6] ^= state[5]; + ptrWordInOut[7] ^= state[6]; + ptrWordInOut[8] ^= state[7]; + ptrWordInOut[9] ^= state[8]; + ptrWordInOut[10] ^= state[9]; + ptrWordInOut[11] ^= state[10]; + + //Inputs: next column (i.e., next block in sequence) + ptrWordInOut += BLOCK_LEN_INT64; + ptrWordIn += BLOCK_LEN_INT64; + //Output: goes to previous column + ptrWordOut -= BLOCK_LEN_INT64; + } +#endif +} + +/** + * Performs a duplexing operation over "M[rowInOut][col] [+] M[rowIn][col]" (i.e., + * the wordwise addition of two columns, ignoring carries between words). The + * output of this operation, "rand", is then used to make + * "M[rowOut][col] = M[rowOut][col] XOR rand" and + * "M[rowInOut][col] = M[rowInOut][col] XOR rotW(rand)", where rotW is a 64-bit + * rotation to the left. + * + * @param state The current state of the sponge + * @param rowIn Row used only as input + * @param rowInOut Row used as input and to receive output after rotation + * @param rowOut Row receiving the output + * + */ +inline void reducedDuplexRow(uint64_t *state, uint64_t *rowIn, uint64_t *rowInOut, uint64_t *rowOut, uint64_t nCols) { + uint64_t* ptrWordInOut = rowInOut; //In Lyra2: pointer to row* + uint64_t* ptrWordIn = rowIn; //In Lyra2: pointer to prev + uint64_t* ptrWordOut = rowOut; //In Lyra2: pointer to row + +#ifdef __AVX2__ + __m256i* vstate = (__m256i*)state; + __m256i* vptrWordIn = (__m256i*)ptrWordIn; //In Lyra2: pointer to prev + __m256i* vptrWordInOut = (__m256i*)ptrWordInOut; //In Lyra2: pointer to row* + __m256i* vptrWordOut = (__m256i*)ptrWordOut; //In Lyra2: pointer to row + + int prefetch_distance = 3*3; +#ifdef ROW_PREFETCH + for(int i=0; i + +#if defined(__GNUC__) +#define ALIGN __attribute__ ((aligned(32))) +#elif defined(_MSC_VER) +#define ALIGN __declspec(align(32)) +#else +#define ALIGN +#endif + + +/*Blake2b IV Array*/ +static const uint64_t blake2b_IV[8] = +{ + 0x6a09e667f3bcc908ULL, 0xbb67ae8584caa73bULL, + 0x3c6ef372fe94f82bULL, 0xa54ff53a5f1d36f1ULL, + 0x510e527fade682d1ULL, 0x9b05688c2b3e6c1fULL, + 0x1f83d9abfb41bd6bULL, 0x5be0cd19137e2179ULL +}; + +/*Blake2b's rotation*/ +static inline uint64_t rotr64( const uint64_t w, const unsigned c ){ + return ( w >> c ) | ( w << ( 64 - c ) ); +} + +/*Blake2b's G function*/ +#define G(r,i,a,b,c,d) \ + do { \ + a = a + b; \ + d = rotr64(d ^ a, 32); \ + c = c + d; \ + b = rotr64(b ^ c, 24); \ + a = a + b; \ + d = rotr64(d ^ a, 16); \ + c = c + d; \ + b = rotr64(b ^ c, 63); \ + } while(0) + + +/*One Round of the Blake2b's compression function*/ +#define ROUND_LYRA(r) \ + G(r,0,v[ 0],v[ 4],v[ 8],v[12]); \ + G(r,1,v[ 1],v[ 5],v[ 9],v[13]); \ + G(r,2,v[ 2],v[ 6],v[10],v[14]); \ + G(r,3,v[ 3],v[ 7],v[11],v[15]); \ + G(r,4,v[ 0],v[ 5],v[10],v[15]); \ + G(r,5,v[ 1],v[ 6],v[11],v[12]); \ + G(r,6,v[ 2],v[ 7],v[ 8],v[13]); \ + G(r,7,v[ 3],v[ 4],v[ 9],v[14]); + +//---- Housekeeping +extern void initState(uint64_t state[/*16*/]); + +//---- Squeezes +extern void squeeze(uint64_t *state, unsigned char *out, unsigned int len); +extern void reducedSqueezeRow0(uint64_t* state, uint64_t* row, uint64_t nCols); + +//---- Absorbs +extern void absorbBlock(uint64_t *state, const uint64_t *in); +extern void absorbBlockBlake2Safe(uint64_t *state, const uint64_t *in); + +//---- Duplexes +extern void reducedDuplexRow1(uint64_t *state, uint64_t *rowIn, uint64_t *rowOut, uint64_t nCols); +extern void reducedDuplexRowSetup(uint64_t *state, uint64_t *rowIn, uint64_t *rowInOut, uint64_t *rowOut, uint64_t nCols); +extern void reducedDuplexRow(uint64_t *state, uint64_t *rowIn, uint64_t *rowInOut, uint64_t *rowOut, uint64_t nCols); + +//---- Misc +void printArray(unsigned char *array, unsigned int size, char *name); + +//////////////////////////////////////////////////////////////////////////////////////////////// + + +////TESTS//// +//void reducedDuplexRowc(uint64_t *state, uint64_t *rowIn, uint64_t *rowInOut, uint64_t *rowOut); +//void reducedDuplexRowd(uint64_t *state, uint64_t *rowIn, uint64_t *rowInOut, uint64_t *rowOut); +//void reducedDuplexRowSetupv4(uint64_t *state, uint64_t *rowIn1, uint64_t *rowIn2, uint64_t *rowOut1, uint64_t *rowOut2); +//void reducedDuplexRowSetupv5(uint64_t *state, uint64_t *rowIn, uint64_t *rowInOut, uint64_t *rowOut); +//void reducedDuplexRowSetupv5c(uint64_t *state, uint64_t *rowIn, uint64_t *rowInOut, uint64_t *rowOut); +//void reducedDuplexRowSetupv5d(uint64_t *state, uint64_t *rowIn, uint64_t *rowInOut, uint64_t *rowOut); +///////////// + + +#endif /* SPONGE_H_ */ diff --git a/exlib/lyra2z-py/blake.c b/exlib/lyra2z-py/blake.c new file mode 100644 index 000000000000..28b32a71495a --- /dev/null +++ b/exlib/lyra2z-py/blake.c @@ -0,0 +1,1121 @@ +/* $Id: blake.c 252 2011-06-07 17:55:14Z tp $ */ +/* + * BLAKE implementation. + * + * ==========================(LICENSE BEGIN)============================ + * + * Copyright (c) 2007-2010 Projet RNRT SAPHIR + * + * 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. + * + * ===========================(LICENSE END)============================= + * + * @author Thomas Pornin + */ + +#include +#include +#include +#include + +#include "sph_blake.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#if SPH_SMALL_FOOTPRINT && !defined SPH_SMALL_FOOTPRINT_BLAKE +#define SPH_SMALL_FOOTPRINT_BLAKE 1 +#endif + +#if SPH_SMALL_FOOTPRINT_BLAKE +#define SPH_COMPACT_BLAKE_32 1 +#endif + +#if SPH_64 && (SPH_SMALL_FOOTPRINT_BLAKE || !SPH_64_TRUE) +#define SPH_COMPACT_BLAKE_64 1 +#endif + +#ifdef _MSC_VER +#pragma warning (disable: 4146) +#endif + +static const sph_u32 IV224[8] = { + SPH_C32(0xC1059ED8), SPH_C32(0x367CD507), + SPH_C32(0x3070DD17), SPH_C32(0xF70E5939), + SPH_C32(0xFFC00B31), SPH_C32(0x68581511), + SPH_C32(0x64F98FA7), SPH_C32(0xBEFA4FA4) +}; + +static const sph_u32 IV256[8] = { + SPH_C32(0x6A09E667), SPH_C32(0xBB67AE85), + SPH_C32(0x3C6EF372), SPH_C32(0xA54FF53A), + SPH_C32(0x510E527F), SPH_C32(0x9B05688C), + SPH_C32(0x1F83D9AB), SPH_C32(0x5BE0CD19) +}; + +#if SPH_64 + +static const sph_u64 IV384[8] = { + SPH_C64(0xCBBB9D5DC1059ED8), SPH_C64(0x629A292A367CD507), + SPH_C64(0x9159015A3070DD17), SPH_C64(0x152FECD8F70E5939), + SPH_C64(0x67332667FFC00B31), SPH_C64(0x8EB44A8768581511), + SPH_C64(0xDB0C2E0D64F98FA7), SPH_C64(0x47B5481DBEFA4FA4) +}; + +static const sph_u64 IV512[8] = { + SPH_C64(0x6A09E667F3BCC908), SPH_C64(0xBB67AE8584CAA73B), + SPH_C64(0x3C6EF372FE94F82B), SPH_C64(0xA54FF53A5F1D36F1), + SPH_C64(0x510E527FADE682D1), SPH_C64(0x9B05688C2B3E6C1F), + SPH_C64(0x1F83D9ABFB41BD6B), SPH_C64(0x5BE0CD19137E2179) +}; + +#endif + +#if SPH_COMPACT_BLAKE_32 || SPH_COMPACT_BLAKE_64 + +static const unsigned sigma[16][16] = { + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, + { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 }, + { 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4 }, + { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8 }, + { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13 }, + { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9 }, + { 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11 }, + { 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10 }, + { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5 }, + { 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0 }, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, + { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 }, + { 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4 }, + { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8 }, + { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13 }, + { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9 } +}; + +/* + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 14 10 4 8 9 15 13 6 1 12 0 2 11 7 5 3 + 11 8 12 0 5 2 15 13 10 14 3 6 7 1 9 4 + 7 9 3 1 13 12 11 14 2 6 5 10 4 0 15 8 + 9 0 5 7 2 4 10 15 14 1 11 12 6 8 3 13 + 2 12 6 10 0 11 8 3 4 13 7 5 15 14 1 9 + 12 5 1 15 14 13 4 10 0 7 6 3 9 2 8 11 + 13 11 7 14 12 1 3 9 5 0 15 4 8 6 2 10 + 6 15 14 9 11 3 0 8 12 2 13 7 1 4 10 5 + 10 2 8 4 7 6 1 5 15 11 9 14 3 12 13 0 +*/ +#endif + +#define Z00 0 +#define Z01 1 +#define Z02 2 +#define Z03 3 +#define Z04 4 +#define Z05 5 +#define Z06 6 +#define Z07 7 +#define Z08 8 +#define Z09 9 +#define Z0A A +#define Z0B B +#define Z0C C +#define Z0D D +#define Z0E E +#define Z0F F + +#define Z10 E +#define Z11 A +#define Z12 4 +#define Z13 8 +#define Z14 9 +#define Z15 F +#define Z16 D +#define Z17 6 +#define Z18 1 +#define Z19 C +#define Z1A 0 +#define Z1B 2 +#define Z1C B +#define Z1D 7 +#define Z1E 5 +#define Z1F 3 + +#define Z20 B +#define Z21 8 +#define Z22 C +#define Z23 0 +#define Z24 5 +#define Z25 2 +#define Z26 F +#define Z27 D +#define Z28 A +#define Z29 E +#define Z2A 3 +#define Z2B 6 +#define Z2C 7 +#define Z2D 1 +#define Z2E 9 +#define Z2F 4 + +#define Z30 7 +#define Z31 9 +#define Z32 3 +#define Z33 1 +#define Z34 D +#define Z35 C +#define Z36 B +#define Z37 E +#define Z38 2 +#define Z39 6 +#define Z3A 5 +#define Z3B A +#define Z3C 4 +#define Z3D 0 +#define Z3E F +#define Z3F 8 + +#define Z40 9 +#define Z41 0 +#define Z42 5 +#define Z43 7 +#define Z44 2 +#define Z45 4 +#define Z46 A +#define Z47 F +#define Z48 E +#define Z49 1 +#define Z4A B +#define Z4B C +#define Z4C 6 +#define Z4D 8 +#define Z4E 3 +#define Z4F D + +#define Z50 2 +#define Z51 C +#define Z52 6 +#define Z53 A +#define Z54 0 +#define Z55 B +#define Z56 8 +#define Z57 3 +#define Z58 4 +#define Z59 D +#define Z5A 7 +#define Z5B 5 +#define Z5C F +#define Z5D E +#define Z5E 1 +#define Z5F 9 + +#define Z60 C +#define Z61 5 +#define Z62 1 +#define Z63 F +#define Z64 E +#define Z65 D +#define Z66 4 +#define Z67 A +#define Z68 0 +#define Z69 7 +#define Z6A 6 +#define Z6B 3 +#define Z6C 9 +#define Z6D 2 +#define Z6E 8 +#define Z6F B + +#define Z70 D +#define Z71 B +#define Z72 7 +#define Z73 E +#define Z74 C +#define Z75 1 +#define Z76 3 +#define Z77 9 +#define Z78 5 +#define Z79 0 +#define Z7A F +#define Z7B 4 +#define Z7C 8 +#define Z7D 6 +#define Z7E 2 +#define Z7F A + +#define Z80 6 +#define Z81 F +#define Z82 E +#define Z83 9 +#define Z84 B +#define Z85 3 +#define Z86 0 +#define Z87 8 +#define Z88 C +#define Z89 2 +#define Z8A D +#define Z8B 7 +#define Z8C 1 +#define Z8D 4 +#define Z8E A +#define Z8F 5 + +#define Z90 A +#define Z91 2 +#define Z92 8 +#define Z93 4 +#define Z94 7 +#define Z95 6 +#define Z96 1 +#define Z97 5 +#define Z98 F +#define Z99 B +#define Z9A 9 +#define Z9B E +#define Z9C 3 +#define Z9D C +#define Z9E D +#define Z9F 0 + +#define Mx(r, i) Mx_(Z ## r ## i) +#define Mx_(n) Mx__(n) +#define Mx__(n) M ## n + +#define CSx(r, i) CSx_(Z ## r ## i) +#define CSx_(n) CSx__(n) +#define CSx__(n) CS ## n + +#define CS0 SPH_C32(0x243F6A88) +#define CS1 SPH_C32(0x85A308D3) +#define CS2 SPH_C32(0x13198A2E) +#define CS3 SPH_C32(0x03707344) +#define CS4 SPH_C32(0xA4093822) +#define CS5 SPH_C32(0x299F31D0) +#define CS6 SPH_C32(0x082EFA98) +#define CS7 SPH_C32(0xEC4E6C89) +#define CS8 SPH_C32(0x452821E6) +#define CS9 SPH_C32(0x38D01377) +#define CSA SPH_C32(0xBE5466CF) +#define CSB SPH_C32(0x34E90C6C) +#define CSC SPH_C32(0xC0AC29B7) +#define CSD SPH_C32(0xC97C50DD) +#define CSE SPH_C32(0x3F84D5B5) +#define CSF SPH_C32(0xB5470917) + +#if SPH_COMPACT_BLAKE_32 + +static const sph_u32 CS[16] = { + SPH_C32(0x243F6A88), SPH_C32(0x85A308D3), + SPH_C32(0x13198A2E), SPH_C32(0x03707344), + SPH_C32(0xA4093822), SPH_C32(0x299F31D0), + SPH_C32(0x082EFA98), SPH_C32(0xEC4E6C89), + SPH_C32(0x452821E6), SPH_C32(0x38D01377), + SPH_C32(0xBE5466CF), SPH_C32(0x34E90C6C), + SPH_C32(0xC0AC29B7), SPH_C32(0xC97C50DD), + SPH_C32(0x3F84D5B5), SPH_C32(0xB5470917) +}; + +#endif + +#if SPH_64 + +#define CBx(r, i) CBx_(Z ## r ## i) +#define CBx_(n) CBx__(n) +#define CBx__(n) CB ## n + +#define CB0 SPH_C64(0x243F6A8885A308D3) +#define CB1 SPH_C64(0x13198A2E03707344) +#define CB2 SPH_C64(0xA4093822299F31D0) +#define CB3 SPH_C64(0x082EFA98EC4E6C89) +#define CB4 SPH_C64(0x452821E638D01377) +#define CB5 SPH_C64(0xBE5466CF34E90C6C) +#define CB6 SPH_C64(0xC0AC29B7C97C50DD) +#define CB7 SPH_C64(0x3F84D5B5B5470917) +#define CB8 SPH_C64(0x9216D5D98979FB1B) +#define CB9 SPH_C64(0xD1310BA698DFB5AC) +#define CBA SPH_C64(0x2FFD72DBD01ADFB7) +#define CBB SPH_C64(0xB8E1AFED6A267E96) +#define CBC SPH_C64(0xBA7C9045F12C7F99) +#define CBD SPH_C64(0x24A19947B3916CF7) +#define CBE SPH_C64(0x0801F2E2858EFC16) +#define CBF SPH_C64(0x636920D871574E69) + +#if SPH_COMPACT_BLAKE_64 + +static const sph_u64 CB[16] = { + SPH_C64(0x243F6A8885A308D3), SPH_C64(0x13198A2E03707344), + SPH_C64(0xA4093822299F31D0), SPH_C64(0x082EFA98EC4E6C89), + SPH_C64(0x452821E638D01377), SPH_C64(0xBE5466CF34E90C6C), + SPH_C64(0xC0AC29B7C97C50DD), SPH_C64(0x3F84D5B5B5470917), + SPH_C64(0x9216D5D98979FB1B), SPH_C64(0xD1310BA698DFB5AC), + SPH_C64(0x2FFD72DBD01ADFB7), SPH_C64(0xB8E1AFED6A267E96), + SPH_C64(0xBA7C9045F12C7F99), SPH_C64(0x24A19947B3916CF7), + SPH_C64(0x0801F2E2858EFC16), SPH_C64(0x636920D871574E69) +}; + +#endif + +#endif + +#define GS(m0, m1, c0, c1, a, b, c, d) do { \ + a = SPH_T32(a + b + (m0 ^ c1)); \ + d = SPH_ROTR32(d ^ a, 16); \ + c = SPH_T32(c + d); \ + b = SPH_ROTR32(b ^ c, 12); \ + a = SPH_T32(a + b + (m1 ^ c0)); \ + d = SPH_ROTR32(d ^ a, 8); \ + c = SPH_T32(c + d); \ + b = SPH_ROTR32(b ^ c, 7); \ + } while (0) + +#if SPH_COMPACT_BLAKE_32 + +#define ROUND_S(r) do { \ + GS(M[sigma[r][0x0]], M[sigma[r][0x1]], \ + CS[sigma[r][0x0]], CS[sigma[r][0x1]], V0, V4, V8, VC); \ + GS(M[sigma[r][0x2]], M[sigma[r][0x3]], \ + CS[sigma[r][0x2]], CS[sigma[r][0x3]], V1, V5, V9, VD); \ + GS(M[sigma[r][0x4]], M[sigma[r][0x5]], \ + CS[sigma[r][0x4]], CS[sigma[r][0x5]], V2, V6, VA, VE); \ + GS(M[sigma[r][0x6]], M[sigma[r][0x7]], \ + CS[sigma[r][0x6]], CS[sigma[r][0x7]], V3, V7, VB, VF); \ + GS(M[sigma[r][0x8]], M[sigma[r][0x9]], \ + CS[sigma[r][0x8]], CS[sigma[r][0x9]], V0, V5, VA, VF); \ + GS(M[sigma[r][0xA]], M[sigma[r][0xB]], \ + CS[sigma[r][0xA]], CS[sigma[r][0xB]], V1, V6, VB, VC); \ + GS(M[sigma[r][0xC]], M[sigma[r][0xD]], \ + CS[sigma[r][0xC]], CS[sigma[r][0xD]], V2, V7, V8, VD); \ + GS(M[sigma[r][0xE]], M[sigma[r][0xF]], \ + CS[sigma[r][0xE]], CS[sigma[r][0xF]], V3, V4, V9, VE); \ + } while (0) + +#else + +#define ROUND_S(r) do { \ + GS(Mx(r, 0), Mx(r, 1), CSx(r, 0), CSx(r, 1), V0, V4, V8, VC); \ + GS(Mx(r, 2), Mx(r, 3), CSx(r, 2), CSx(r, 3), V1, V5, V9, VD); \ + GS(Mx(r, 4), Mx(r, 5), CSx(r, 4), CSx(r, 5), V2, V6, VA, VE); \ + GS(Mx(r, 6), Mx(r, 7), CSx(r, 6), CSx(r, 7), V3, V7, VB, VF); \ + GS(Mx(r, 8), Mx(r, 9), CSx(r, 8), CSx(r, 9), V0, V5, VA, VF); \ + GS(Mx(r, A), Mx(r, B), CSx(r, A), CSx(r, B), V1, V6, VB, VC); \ + GS(Mx(r, C), Mx(r, D), CSx(r, C), CSx(r, D), V2, V7, V8, VD); \ + GS(Mx(r, E), Mx(r, F), CSx(r, E), CSx(r, F), V3, V4, V9, VE); \ + } while (0) + +#endif + +#if SPH_64 + +#define GB(m0, m1, c0, c1, a, b, c, d) do { \ + a = SPH_T64(a + b + (m0 ^ c1)); \ + d = SPH_ROTR64(d ^ a, 32); \ + c = SPH_T64(c + d); \ + b = SPH_ROTR64(b ^ c, 25); \ + a = SPH_T64(a + b + (m1 ^ c0)); \ + d = SPH_ROTR64(d ^ a, 16); \ + c = SPH_T64(c + d); \ + b = SPH_ROTR64(b ^ c, 11); \ + } while (0) + +#if SPH_COMPACT_BLAKE_64 + +#define ROUND_B(r) do { \ + GB(M[sigma[r][0x0]], M[sigma[r][0x1]], \ + CB[sigma[r][0x0]], CB[sigma[r][0x1]], V0, V4, V8, VC); \ + GB(M[sigma[r][0x2]], M[sigma[r][0x3]], \ + CB[sigma[r][0x2]], CB[sigma[r][0x3]], V1, V5, V9, VD); \ + GB(M[sigma[r][0x4]], M[sigma[r][0x5]], \ + CB[sigma[r][0x4]], CB[sigma[r][0x5]], V2, V6, VA, VE); \ + GB(M[sigma[r][0x6]], M[sigma[r][0x7]], \ + CB[sigma[r][0x6]], CB[sigma[r][0x7]], V3, V7, VB, VF); \ + GB(M[sigma[r][0x8]], M[sigma[r][0x9]], \ + CB[sigma[r][0x8]], CB[sigma[r][0x9]], V0, V5, VA, VF); \ + GB(M[sigma[r][0xA]], M[sigma[r][0xB]], \ + CB[sigma[r][0xA]], CB[sigma[r][0xB]], V1, V6, VB, VC); \ + GB(M[sigma[r][0xC]], M[sigma[r][0xD]], \ + CB[sigma[r][0xC]], CB[sigma[r][0xD]], V2, V7, V8, VD); \ + GB(M[sigma[r][0xE]], M[sigma[r][0xF]], \ + CB[sigma[r][0xE]], CB[sigma[r][0xF]], V3, V4, V9, VE); \ + } while (0) + +#else + +#define ROUND_B(r) do { \ + GB(Mx(r, 0), Mx(r, 1), CBx(r, 0), CBx(r, 1), V0, V4, V8, VC); \ + GB(Mx(r, 2), Mx(r, 3), CBx(r, 2), CBx(r, 3), V1, V5, V9, VD); \ + GB(Mx(r, 4), Mx(r, 5), CBx(r, 4), CBx(r, 5), V2, V6, VA, VE); \ + GB(Mx(r, 6), Mx(r, 7), CBx(r, 6), CBx(r, 7), V3, V7, VB, VF); \ + GB(Mx(r, 8), Mx(r, 9), CBx(r, 8), CBx(r, 9), V0, V5, VA, VF); \ + GB(Mx(r, A), Mx(r, B), CBx(r, A), CBx(r, B), V1, V6, VB, VC); \ + GB(Mx(r, C), Mx(r, D), CBx(r, C), CBx(r, D), V2, V7, V8, VD); \ + GB(Mx(r, E), Mx(r, F), CBx(r, E), CBx(r, F), V3, V4, V9, VE); \ + } while (0) + +#endif + +#endif + +#define DECL_STATE32 \ + sph_u32 H0, H1, H2, H3, H4, H5, H6, H7; \ + sph_u32 S0, S1, S2, S3, T0, T1; + +#define READ_STATE32(state) do { \ + H0 = (state)->H[0]; \ + H1 = (state)->H[1]; \ + H2 = (state)->H[2]; \ + H3 = (state)->H[3]; \ + H4 = (state)->H[4]; \ + H5 = (state)->H[5]; \ + H6 = (state)->H[6]; \ + H7 = (state)->H[7]; \ + S0 = (state)->S[0]; \ + S1 = (state)->S[1]; \ + S2 = (state)->S[2]; \ + S3 = (state)->S[3]; \ + T0 = (state)->T0; \ + T1 = (state)->T1; \ + } while (0) + +#define WRITE_STATE32(state) do { \ + (state)->H[0] = H0; \ + (state)->H[1] = H1; \ + (state)->H[2] = H2; \ + (state)->H[3] = H3; \ + (state)->H[4] = H4; \ + (state)->H[5] = H5; \ + (state)->H[6] = H6; \ + (state)->H[7] = H7; \ + (state)->S[0] = S0; \ + (state)->S[1] = S1; \ + (state)->S[2] = S2; \ + (state)->S[3] = S3; \ + (state)->T0 = T0; \ + (state)->T1 = T1; \ + } while (0) + +#if SPH_COMPACT_BLAKE_32 + +#define COMPRESS32 do { \ + sph_u32 M[16]; \ + sph_u32 V0, V1, V2, V3, V4, V5, V6, V7; \ + sph_u32 V8, V9, VA, VB, VC, VD, VE, VF; \ + unsigned r; \ + V0 = H0; \ + V1 = H1; \ + V2 = H2; \ + V3 = H3; \ + V4 = H4; \ + V5 = H5; \ + V6 = H6; \ + V7 = H7; \ + V8 = S0 ^ CS0; \ + V9 = S1 ^ CS1; \ + VA = S2 ^ CS2; \ + VB = S3 ^ CS3; \ + VC = T0 ^ CS4; \ + VD = T0 ^ CS5; \ + VE = T1 ^ CS6; \ + VF = T1 ^ CS7; \ + M[0x0] = sph_dec32be_aligned(buf + 0); \ + M[0x1] = sph_dec32be_aligned(buf + 4); \ + M[0x2] = sph_dec32be_aligned(buf + 8); \ + M[0x3] = sph_dec32be_aligned(buf + 12); \ + M[0x4] = sph_dec32be_aligned(buf + 16); \ + M[0x5] = sph_dec32be_aligned(buf + 20); \ + M[0x6] = sph_dec32be_aligned(buf + 24); \ + M[0x7] = sph_dec32be_aligned(buf + 28); \ + M[0x8] = sph_dec32be_aligned(buf + 32); \ + M[0x9] = sph_dec32be_aligned(buf + 36); \ + M[0xA] = sph_dec32be_aligned(buf + 40); \ + M[0xB] = sph_dec32be_aligned(buf + 44); \ + M[0xC] = sph_dec32be_aligned(buf + 48); \ + M[0xD] = sph_dec32be_aligned(buf + 52); \ + M[0xE] = sph_dec32be_aligned(buf + 56); \ + M[0xF] = sph_dec32be_aligned(buf + 60); \ + for (r = 0; r < 14; r ++) \ + ROUND_S(r); \ + H0 ^= S0 ^ V0 ^ V8; \ + H1 ^= S1 ^ V1 ^ V9; \ + H2 ^= S2 ^ V2 ^ VA; \ + H3 ^= S3 ^ V3 ^ VB; \ + H4 ^= S0 ^ V4 ^ VC; \ + H5 ^= S1 ^ V5 ^ VD; \ + H6 ^= S2 ^ V6 ^ VE; \ + H7 ^= S3 ^ V7 ^ VF; \ + } while (0) + +#else + +#define COMPRESS32 do { \ + sph_u32 M0, M1, M2, M3, M4, M5, M6, M7; \ + sph_u32 M8, M9, MA, MB, MC, MD, ME, MF; \ + sph_u32 V0, V1, V2, V3, V4, V5, V6, V7; \ + sph_u32 V8, V9, VA, VB, VC, VD, VE, VF; \ + V0 = H0; \ + V1 = H1; \ + V2 = H2; \ + V3 = H3; \ + V4 = H4; \ + V5 = H5; \ + V6 = H6; \ + V7 = H7; \ + V8 = S0 ^ CS0; \ + V9 = S1 ^ CS1; \ + VA = S2 ^ CS2; \ + VB = S3 ^ CS3; \ + VC = T0 ^ CS4; \ + VD = T0 ^ CS5; \ + VE = T1 ^ CS6; \ + VF = T1 ^ CS7; \ + M0 = sph_dec32be_aligned(buf + 0); \ + M1 = sph_dec32be_aligned(buf + 4); \ + M2 = sph_dec32be_aligned(buf + 8); \ + M3 = sph_dec32be_aligned(buf + 12); \ + M4 = sph_dec32be_aligned(buf + 16); \ + M5 = sph_dec32be_aligned(buf + 20); \ + M6 = sph_dec32be_aligned(buf + 24); \ + M7 = sph_dec32be_aligned(buf + 28); \ + M8 = sph_dec32be_aligned(buf + 32); \ + M9 = sph_dec32be_aligned(buf + 36); \ + MA = sph_dec32be_aligned(buf + 40); \ + MB = sph_dec32be_aligned(buf + 44); \ + MC = sph_dec32be_aligned(buf + 48); \ + MD = sph_dec32be_aligned(buf + 52); \ + ME = sph_dec32be_aligned(buf + 56); \ + MF = sph_dec32be_aligned(buf + 60); \ + ROUND_S(0); \ + ROUND_S(1); \ + ROUND_S(2); \ + ROUND_S(3); \ + ROUND_S(4); \ + ROUND_S(5); \ + ROUND_S(6); \ + ROUND_S(7); \ + ROUND_S(8); \ + ROUND_S(9); \ + ROUND_S(0); \ + ROUND_S(1); \ + ROUND_S(2); \ + ROUND_S(3); \ + H0 ^= S0 ^ V0 ^ V8; \ + H1 ^= S1 ^ V1 ^ V9; \ + H2 ^= S2 ^ V2 ^ VA; \ + H3 ^= S3 ^ V3 ^ VB; \ + H4 ^= S0 ^ V4 ^ VC; \ + H5 ^= S1 ^ V5 ^ VD; \ + H6 ^= S2 ^ V6 ^ VE; \ + H7 ^= S3 ^ V7 ^ VF; \ + } while (0) + +#endif + +#if SPH_64 + +#define DECL_STATE64 \ + sph_u64 H0, H1, H2, H3, H4, H5, H6, H7; \ + sph_u64 S0, S1, S2, S3, T0, T1; + +#define READ_STATE64(state) do { \ + H0 = (state)->H[0]; \ + H1 = (state)->H[1]; \ + H2 = (state)->H[2]; \ + H3 = (state)->H[3]; \ + H4 = (state)->H[4]; \ + H5 = (state)->H[5]; \ + H6 = (state)->H[6]; \ + H7 = (state)->H[7]; \ + S0 = (state)->S[0]; \ + S1 = (state)->S[1]; \ + S2 = (state)->S[2]; \ + S3 = (state)->S[3]; \ + T0 = (state)->T0; \ + T1 = (state)->T1; \ + } while (0) + +#define WRITE_STATE64(state) do { \ + (state)->H[0] = H0; \ + (state)->H[1] = H1; \ + (state)->H[2] = H2; \ + (state)->H[3] = H3; \ + (state)->H[4] = H4; \ + (state)->H[5] = H5; \ + (state)->H[6] = H6; \ + (state)->H[7] = H7; \ + (state)->S[0] = S0; \ + (state)->S[1] = S1; \ + (state)->S[2] = S2; \ + (state)->S[3] = S3; \ + (state)->T0 = T0; \ + (state)->T1 = T1; \ + } while (0) + +#if SPH_COMPACT_BLAKE_64 + +#define COMPRESS64 do { \ + sph_u64 M[16]; \ + sph_u64 V0, V1, V2, V3, V4, V5, V6, V7; \ + sph_u64 V8, V9, VA, VB, VC, VD, VE, VF; \ + unsigned r; \ + V0 = H0; \ + V1 = H1; \ + V2 = H2; \ + V3 = H3; \ + V4 = H4; \ + V5 = H5; \ + V6 = H6; \ + V7 = H7; \ + V8 = S0 ^ CB0; \ + V9 = S1 ^ CB1; \ + VA = S2 ^ CB2; \ + VB = S3 ^ CB3; \ + VC = T0 ^ CB4; \ + VD = T0 ^ CB5; \ + VE = T1 ^ CB6; \ + VF = T1 ^ CB7; \ + M[0x0] = sph_dec64be_aligned(buf + 0); \ + M[0x1] = sph_dec64be_aligned(buf + 8); \ + M[0x2] = sph_dec64be_aligned(buf + 16); \ + M[0x3] = sph_dec64be_aligned(buf + 24); \ + M[0x4] = sph_dec64be_aligned(buf + 32); \ + M[0x5] = sph_dec64be_aligned(buf + 40); \ + M[0x6] = sph_dec64be_aligned(buf + 48); \ + M[0x7] = sph_dec64be_aligned(buf + 56); \ + M[0x8] = sph_dec64be_aligned(buf + 64); \ + M[0x9] = sph_dec64be_aligned(buf + 72); \ + M[0xA] = sph_dec64be_aligned(buf + 80); \ + M[0xB] = sph_dec64be_aligned(buf + 88); \ + M[0xC] = sph_dec64be_aligned(buf + 96); \ + M[0xD] = sph_dec64be_aligned(buf + 104); \ + M[0xE] = sph_dec64be_aligned(buf + 112); \ + M[0xF] = sph_dec64be_aligned(buf + 120); \ + for (r = 0; r < 16; r ++) \ + ROUND_B(r); \ + H0 ^= S0 ^ V0 ^ V8; \ + H1 ^= S1 ^ V1 ^ V9; \ + H2 ^= S2 ^ V2 ^ VA; \ + H3 ^= S3 ^ V3 ^ VB; \ + H4 ^= S0 ^ V4 ^ VC; \ + H5 ^= S1 ^ V5 ^ VD; \ + H6 ^= S2 ^ V6 ^ VE; \ + H7 ^= S3 ^ V7 ^ VF; \ + } while (0) + +#else + +#define COMPRESS64 do { \ + sph_u64 M0, M1, M2, M3, M4, M5, M6, M7; \ + sph_u64 M8, M9, MA, MB, MC, MD, ME, MF; \ + sph_u64 V0, V1, V2, V3, V4, V5, V6, V7; \ + sph_u64 V8, V9, VA, VB, VC, VD, VE, VF; \ + V0 = H0; \ + V1 = H1; \ + V2 = H2; \ + V3 = H3; \ + V4 = H4; \ + V5 = H5; \ + V6 = H6; \ + V7 = H7; \ + V8 = S0 ^ CB0; \ + V9 = S1 ^ CB1; \ + VA = S2 ^ CB2; \ + VB = S3 ^ CB3; \ + VC = T0 ^ CB4; \ + VD = T0 ^ CB5; \ + VE = T1 ^ CB6; \ + VF = T1 ^ CB7; \ + M0 = sph_dec64be_aligned(buf + 0); \ + M1 = sph_dec64be_aligned(buf + 8); \ + M2 = sph_dec64be_aligned(buf + 16); \ + M3 = sph_dec64be_aligned(buf + 24); \ + M4 = sph_dec64be_aligned(buf + 32); \ + M5 = sph_dec64be_aligned(buf + 40); \ + M6 = sph_dec64be_aligned(buf + 48); \ + M7 = sph_dec64be_aligned(buf + 56); \ + M8 = sph_dec64be_aligned(buf + 64); \ + M9 = sph_dec64be_aligned(buf + 72); \ + MA = sph_dec64be_aligned(buf + 80); \ + MB = sph_dec64be_aligned(buf + 88); \ + MC = sph_dec64be_aligned(buf + 96); \ + MD = sph_dec64be_aligned(buf + 104); \ + ME = sph_dec64be_aligned(buf + 112); \ + MF = sph_dec64be_aligned(buf + 120); \ + ROUND_B(0); \ + ROUND_B(1); \ + ROUND_B(2); \ + ROUND_B(3); \ + ROUND_B(4); \ + ROUND_B(5); \ + ROUND_B(6); \ + ROUND_B(7); \ + ROUND_B(8); \ + ROUND_B(9); \ + ROUND_B(0); \ + ROUND_B(1); \ + ROUND_B(2); \ + ROUND_B(3); \ + ROUND_B(4); \ + ROUND_B(5); \ + H0 ^= S0 ^ V0 ^ V8; \ + H1 ^= S1 ^ V1 ^ V9; \ + H2 ^= S2 ^ V2 ^ VA; \ + H3 ^= S3 ^ V3 ^ VB; \ + H4 ^= S0 ^ V4 ^ VC; \ + H5 ^= S1 ^ V5 ^ VD; \ + H6 ^= S2 ^ V6 ^ VE; \ + H7 ^= S3 ^ V7 ^ VF; \ + } while (0) + +#endif + +#endif + +static const sph_u32 salt_zero_small[4] = { 0, 0, 0, 0 }; + +static void +blake32_init(sph_blake_small_context *sc, + const sph_u32 *iv, const sph_u32 *salt) +{ + memcpy(sc->H, iv, 8 * sizeof(sph_u32)); + memcpy(sc->S, salt, 4 * sizeof(sph_u32)); + sc->T0 = sc->T1 = 0; + sc->ptr = 0; +} + +static void +blake32(sph_blake_small_context *sc, const void *data, size_t len) +{ + unsigned char *buf; + size_t ptr; + DECL_STATE32 + + buf = sc->buf; + ptr = sc->ptr; + if (len < (sizeof sc->buf) - ptr) { + memcpy(buf + ptr, data, len); + ptr += len; + sc->ptr = ptr; + return; + } + + READ_STATE32(sc); + while (len > 0) { + size_t clen; + + clen = (sizeof sc->buf) - ptr; + if (clen > len) + clen = len; + memcpy(buf + ptr, data, clen); + ptr += clen; + data = (const unsigned char *)data + clen; + len -= clen; + if (ptr == sizeof sc->buf) { + if ((T0 = SPH_T32(T0 + 512)) < 512) + T1 = SPH_T32(T1 + 1); + COMPRESS32; + ptr = 0; + } + } + WRITE_STATE32(sc); + sc->ptr = ptr; +} + +static void +blake32_close(sph_blake_small_context *sc, + unsigned ub, unsigned n, void *dst, size_t out_size_w32) +{ + union { + unsigned char buf[64]; + sph_u32 dummy; + } u; + size_t ptr, k; + unsigned bit_len; + unsigned z; + sph_u32 th, tl; + unsigned char *out; + + ptr = sc->ptr; + bit_len = ((unsigned)ptr << 3) + n; + z = 0x80 >> n; + u.buf[ptr] = ((ub & -z) | z) & 0xFF; + tl = sc->T0 + bit_len; + th = sc->T1; + if (ptr == 0 && n == 0) { + sc->T0 = SPH_C32(0xFFFFFE00); + sc->T1 = SPH_C32(0xFFFFFFFF); + } else if (sc->T0 == 0) { + sc->T0 = SPH_C32(0xFFFFFE00) + bit_len; + sc->T1 = SPH_T32(sc->T1 - 1); + } else { + sc->T0 -= 512 - bit_len; + } + if (bit_len <= 446) { + memset(u.buf + ptr + 1, 0, 55 - ptr); + if (out_size_w32 == 8) + u.buf[55] |= 1; + sph_enc32be_aligned(u.buf + 56, th); + sph_enc32be_aligned(u.buf + 60, tl); + blake32(sc, u.buf + ptr, 64 - ptr); + } else { + memset(u.buf + ptr + 1, 0, 63 - ptr); + blake32(sc, u.buf + ptr, 64 - ptr); + sc->T0 = SPH_C32(0xFFFFFE00); + sc->T1 = SPH_C32(0xFFFFFFFF); + memset(u.buf, 0, 56); + if (out_size_w32 == 8) + u.buf[55] = 1; + sph_enc32be_aligned(u.buf + 56, th); + sph_enc32be_aligned(u.buf + 60, tl); + blake32(sc, u.buf, 64); + } + out = dst; + for (k = 0; k < out_size_w32; k ++) + sph_enc32be(out + (k << 2), sc->H[k]); +} + +#if SPH_64 + +static const sph_u64 salt_zero_big[4] = { 0, 0, 0, 0 }; + +static void +blake64_init(sph_blake_big_context *sc, + const sph_u64 *iv, const sph_u64 *salt) +{ + memcpy(sc->H, iv, 8 * sizeof(sph_u64)); + memcpy(sc->S, salt, 4 * sizeof(sph_u64)); + sc->T0 = sc->T1 = 0; + sc->ptr = 0; +} + +static void +blake64(sph_blake_big_context *sc, const void *data, size_t len) +{ + unsigned char *buf; + size_t ptr; + DECL_STATE64 + + buf = sc->buf; + ptr = sc->ptr; + if (len < (sizeof sc->buf) - ptr) { + memcpy(buf + ptr, data, len); + ptr += len; + sc->ptr = ptr; + return; + } + + READ_STATE64(sc); + while (len > 0) { + size_t clen; + + clen = (sizeof sc->buf) - ptr; + if (clen > len) + clen = len; + memcpy(buf + ptr, data, clen); + ptr += clen; + data = (const unsigned char *)data + clen; + len -= clen; + if (ptr == sizeof sc->buf) { + if ((T0 = SPH_T64(T0 + 1024)) < 1024) + T1 = SPH_T64(T1 + 1); + COMPRESS64; + ptr = 0; + } + } + WRITE_STATE64(sc); + sc->ptr = ptr; +} + +static void +blake64_close(sph_blake_big_context *sc, + unsigned ub, unsigned n, void *dst, size_t out_size_w64) +{ + union { + unsigned char buf[128]; + sph_u64 dummy; + } u; + size_t ptr, k; + unsigned bit_len; + unsigned z; + sph_u64 th, tl; + unsigned char *out; + + ptr = sc->ptr; + bit_len = ((unsigned)ptr << 3) + n; + z = 0x80 >> n; + u.buf[ptr] = ((ub & -z) | z) & 0xFF; + tl = sc->T0 + bit_len; + th = sc->T1; + if (ptr == 0 && n == 0) { + sc->T0 = SPH_C64(0xFFFFFFFFFFFFFC00); + sc->T1 = SPH_C64(0xFFFFFFFFFFFFFFFF); + } else if (sc->T0 == 0) { + sc->T0 = SPH_C64(0xFFFFFFFFFFFFFC00) + bit_len; + sc->T1 = SPH_T64(sc->T1 - 1); + } else { + sc->T0 -= 1024 - bit_len; + } + if (bit_len <= 894) { + memset(u.buf + ptr + 1, 0, 111 - ptr); + if (out_size_w64 == 8) + u.buf[111] |= 1; + sph_enc64be_aligned(u.buf + 112, th); + sph_enc64be_aligned(u.buf + 120, tl); + blake64(sc, u.buf + ptr, 128 - ptr); + } else { + memset(u.buf + ptr + 1, 0, 127 - ptr); + blake64(sc, u.buf + ptr, 128 - ptr); + sc->T0 = SPH_C64(0xFFFFFFFFFFFFFC00); + sc->T1 = SPH_C64(0xFFFFFFFFFFFFFFFF); + memset(u.buf, 0, 112); + if (out_size_w64 == 8) + u.buf[111] = 1; + sph_enc64be_aligned(u.buf + 112, th); + sph_enc64be_aligned(u.buf + 120, tl); + blake64(sc, u.buf, 128); + } + out = dst; + for (k = 0; k < out_size_w64; k ++) + sph_enc64be(out + (k << 3), sc->H[k]); +} + +#endif + +/* see sph_blake.h */ +void +sph_blake224_init(void *cc) +{ + blake32_init(cc, IV224, salt_zero_small); +} + +/* see sph_blake.h */ +void +sph_blake224(void *cc, const void *data, size_t len) +{ + blake32(cc, data, len); +} + +/* see sph_blake.h */ +void +sph_blake224_close(void *cc, void *dst) +{ + sph_blake224_addbits_and_close(cc, 0, 0, dst); +} + +/* see sph_blake.h */ +void +sph_blake224_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst) +{ + blake32_close(cc, ub, n, dst, 7); + sph_blake224_init(cc); +} + +/* see sph_blake.h */ +void +sph_blake256_init(void *cc) +{ + blake32_init(cc, IV256, salt_zero_small); +} + +/* see sph_blake.h */ +void +sph_blake256(void *cc, const void *data, size_t len) +{ + blake32(cc, data, len); +} + +/* see sph_blake.h */ +void +sph_blake256_close(void *cc, void *dst) +{ + sph_blake256_addbits_and_close(cc, 0, 0, dst); +} + +/* see sph_blake.h */ +void +sph_blake256_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst) +{ + blake32_close(cc, ub, n, dst, 8); + sph_blake256_init(cc); +} + +#if SPH_64 + +/* see sph_blake.h */ +void +sph_blake384_init(void *cc) +{ + blake64_init(cc, IV384, salt_zero_big); +} + +/* see sph_blake.h */ +void +sph_blake384(void *cc, const void *data, size_t len) +{ + blake64(cc, data, len); +} + +/* see sph_blake.h */ +void +sph_blake384_close(void *cc, void *dst) +{ + sph_blake384_addbits_and_close(cc, 0, 0, dst); +} + +/* see sph_blake.h */ +void +sph_blake384_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst) +{ + blake64_close(cc, ub, n, dst, 6); + sph_blake384_init(cc); +} + +/* see sph_blake.h */ +void +sph_blake512_init(void *cc) +{ + blake64_init(cc, IV512, salt_zero_big); +} + +/* see sph_blake.h */ +void +sph_blake512(void *cc, const void *data, size_t len) +{ + blake64(cc, data, len); +} + +/* see sph_blake.h */ +void +sph_blake512_close(void *cc, void *dst) +{ + sph_blake512_addbits_and_close(cc, 0, 0, dst); +} + +/* see sph_blake.h */ +void +sph_blake512_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst) +{ + blake64_close(cc, ub, n, dst, 8); + sph_blake512_init(cc); +} + +#endif + +#ifdef __cplusplus +} +#endif diff --git a/exlib/lyra2z-py/lyra2z-zcoin.c b/exlib/lyra2z-py/lyra2z-zcoin.c new file mode 100644 index 000000000000..0959ff87b6ec --- /dev/null +++ b/exlib/lyra2z-py/lyra2z-zcoin.c @@ -0,0 +1,44 @@ +// +// lyra2z-zcoin.c : windows test harness for Lyra2z hashing +// + +#include "lyra2z-zcoin.h" +#include "Lyra2z.h" +#include + +static const char test[] = { + 0x70, 0x00, 0x00, 0x00, 0x5d, 0x38, 0x5b, 0xa1, + 0x14, 0xd0, 0x79, 0x97, 0x1b, 0x29, 0xa9, 0x41, + 0x8f, 0xd0, 0x54, 0x9e, 0x7d, 0x68, 0xa9, 0x5c, + 0x7f, 0x16, 0x86, 0x21, 0xa3, 0x14, 0x20, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x57, 0x85, 0x86, 0xd1, + 0x49, 0xfd, 0x07, 0xb2, 0x2f, 0x3a, 0x8a, 0x34, + 0x7c, 0x51, 0x6d, 0xe7, 0x05, 0x2f, 0x03, 0x4d, + 0x2b, 0x76, 0xff, 0x68, 0xe0, 0xd6, 0xec, 0xff, + 0x9b, 0x77, 0xa4, 0x54, 0x89, 0xe3, 0xfd, 0x51, + 0x17, 0x32, 0x01, 0x1d, 0xf0, 0x73, 0x10, 0x00 +}; +static const testlen = sizeof(test); + +#define OUTLEN 32 +static char out[OUTLEN]; + +static void dump(char* d, int len) { + int i = 0; + if (d == NULL || len < 1) { + printf("do me a favor...\n"); + return; + } + for (i = 0; i < len; i++) { + printf("%02x ", (unsigned char)d[i]); + } + printf("\n"); +} + +int main() +{ + lyra2z_hash(out, test); + dump(out, OUTLEN); + return 0; +} + diff --git a/exlib/lyra2z-py/lyra2z-zcoin.h b/exlib/lyra2z-py/lyra2z-zcoin.h new file mode 100644 index 000000000000..503f3e410ca5 --- /dev/null +++ b/exlib/lyra2z-py/lyra2z-zcoin.h @@ -0,0 +1,13 @@ +#pragma once +// +// Windows only stuff +// + +// Including SDKDDKVer.h defines the highest available Windows platform. + +// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and +// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. +#define _WIN32_WINNT _WIN32_WINNT_WIN7 +#include + +#include diff --git a/exlib/lyra2z-py/lyra2z-zcoin.sln b/exlib/lyra2z-py/lyra2z-zcoin.sln new file mode 100644 index 000000000000..ed0bdb0cc3c5 --- /dev/null +++ b/exlib/lyra2z-py/lyra2z-zcoin.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lyra2z-zcoin", "lyra2z-zcoin.vcxproj", "{12DBC121-1B34-45B1-82BC-91F9EC4D1062}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {12DBC121-1B34-45B1-82BC-91F9EC4D1062}.Debug|x64.ActiveCfg = Debug|x64 + {12DBC121-1B34-45B1-82BC-91F9EC4D1062}.Debug|x64.Build.0 = Debug|x64 + {12DBC121-1B34-45B1-82BC-91F9EC4D1062}.Debug|x86.ActiveCfg = Debug|Win32 + {12DBC121-1B34-45B1-82BC-91F9EC4D1062}.Debug|x86.Build.0 = Debug|Win32 + {12DBC121-1B34-45B1-82BC-91F9EC4D1062}.Release|x64.ActiveCfg = Release|x64 + {12DBC121-1B34-45B1-82BC-91F9EC4D1062}.Release|x64.Build.0 = Release|x64 + {12DBC121-1B34-45B1-82BC-91F9EC4D1062}.Release|x86.ActiveCfg = Release|Win32 + {12DBC121-1B34-45B1-82BC-91F9EC4D1062}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/exlib/lyra2z-py/lyra2z.c b/exlib/lyra2z-py/lyra2z.c new file mode 100644 index 000000000000..cdd07b515f96 --- /dev/null +++ b/exlib/lyra2z-py/lyra2z.c @@ -0,0 +1,117 @@ +// +// Hacked from cpuminer-xzc +// + +#ifdef _MSC_VER +# define _mm_malloc _aligned_malloc +#else +# include +# include +#endif + +#include +#include "sph_blake.h" +#include "Lyra2.h" + +static void get_lyra2z_hash(uint64_t* mtx, void *state, const void *input) +{ + sph_blake256_context ctx_blake; + + uint32_t hashA[8], hashB[8]; + + sph_blake256_init(&ctx_blake); + sph_blake256(&ctx_blake, input, 80); + sph_blake256_close(&ctx_blake, hashA); + + LYRA2(mtx, hashB, 32, hashA, 32, hashA, 32, 8, 8, 8); + + memcpy(state, hashB, 32); +} + +void lyra2z_hash(void *output, const void *input) +{ + size_t size = (int64_t)((int64_t)16 * 16 * 96); // from cpuminer-xzc + // Windows: _aligned_malloc(size,align) + uint64_t *mtx = _mm_malloc(size, 64); // freed in algo + get_lyra2z_hash(mtx, output, input); +} + + +// cpuminer +// +#if 0 +void lyra2z_hash(uint64_t* wholeMatrix, void *state, const void *input) +{ +#ifdef VERBOSE_HASH_TIMING + struct timespec spec; + clock_gettime(CLOCK_REALTIME, &spec); + double start = spec.tv_sec + spec.tv_nsec / 1.0e9; +#endif + + sph_blake256_context ctx_blake; + + uint32_t hashA[8], hashB[8]; + + sph_blake256_init(&ctx_blake); + sph_blake256(&ctx_blake, input, 80); + sph_blake256_close(&ctx_blake, hashA); + +// LYRA2(0, hashB, 32, hashA, 32, hashA, 32, 2, 8, 8); + + LYRA2(wholeMatrix, hashB, 32, hashA, 32, hashA, 32, 8, 8, 8); + +#ifdef VERBOSE_HASH_TIMING + if (hash[0] % 32 == 0) { + clock_gettime(CLOCK_REALTIME, &spec); + double end = spec.tv_sec + spec.tv_nsec / 1.0e9; + printf("Hash time: %f ms\n", (end - start) * 1000); + } +#endif + + memcpy(state, hashB, 32); +} + +int scanhash_lyra2z(int thr_id, struct work *work, uint32_t max_nonce, uint64_t *hashes_done) +{ + + size_t size = (int64_t)((int64_t)16 * 16 * 96); + uint64_t *wholeMatrix = _mm_malloc(size, 64); + + uint32_t _ALIGN(128) hash[8]; + uint32_t _ALIGN(128) endiandata[20]; + uint32_t *pdata = work->data; + uint32_t *ptarget = work->target; + + const uint32_t Htarg = ptarget[7]; + const uint32_t first_nonce = pdata[19]; + uint32_t nonce = first_nonce; + + if (opt_benchmark) + ptarget[7] = 0x0000ff; + + for (int i = 0; i < 19; i++) { + be32enc(&endiandata[i], pdata[i]); + } + + do { + be32enc(&endiandata[19], nonce); + lyra2z_hash(wholeMatrix, hash, endiandata); + // lyra2z_hash(0, hash, endiandata); + + if (hash[7] <= Htarg && fulltest(hash, ptarget)) { + work_set_target_ratio(work, hash); + pdata[19] = nonce; + *hashes_done = pdata[19] - first_nonce; + _mm_free(wholeMatrix); + return 1; + } + nonce++; + + } while (nonce < max_nonce && !work_restart[thr_id].restart); + + pdata[19] = nonce; + *hashes_done = pdata[19] - first_nonce + 1; + _mm_free(wholeMatrix); + return 0; +} +#endif // 0 diff --git a/exlib/lyra2z-py/lyra2z.h b/exlib/lyra2z-py/lyra2z.h new file mode 100644 index 000000000000..7b26dd9d9e9e --- /dev/null +++ b/exlib/lyra2z-py/lyra2z.h @@ -0,0 +1,7 @@ + +#ifndef _LYRA2Z_H +# define _LYRA2Z_H + +void lyra2z_hash(void *output, const void *input); + +#endif // _LYRA2Z_H diff --git a/exlib/lyra2z-py/lyra2z_hash.egg-info/PKG-INFO b/exlib/lyra2z-py/lyra2z_hash.egg-info/PKG-INFO new file mode 100644 index 000000000000..9033864dc6df --- /dev/null +++ b/exlib/lyra2z-py/lyra2z_hash.egg-info/PKG-INFO @@ -0,0 +1,11 @@ +Metadata-Version: 1.0 +Name: lyra2z-hash +Version: 0.1.0 +Summary: Bindings for Lyra2Z proof of work used by Zcoin +Home-page: https://github.com/devwarrior777/lyra2z-py +Author: devwarrior +Author-email: devwarrior.zcoin@gmail.com +License: UNKNOWN +Description-Content-Type: UNKNOWN +Description: UNKNOWN +Platform: UNKNOWN diff --git a/exlib/lyra2z-py/lyra2z_hash.egg-info/SOURCES.txt b/exlib/lyra2z-py/lyra2z_hash.egg-info/SOURCES.txt new file mode 100644 index 000000000000..69959bfb3f6b --- /dev/null +++ b/exlib/lyra2z-py/lyra2z_hash.egg-info/SOURCES.txt @@ -0,0 +1,11 @@ +Lyra2.c +README.md +Sponge.c +blake.c +lyra2z.c +lyra2zmodule.c +setup.py +lyra2z_hash.egg-info/PKG-INFO +lyra2z_hash.egg-info/SOURCES.txt +lyra2z_hash.egg-info/dependency_links.txt +lyra2z_hash.egg-info/top_level.txt \ No newline at end of file diff --git a/exlib/lyra2z-py/lyra2z_hash.egg-info/dependency_links.txt b/exlib/lyra2z-py/lyra2z_hash.egg-info/dependency_links.txt new file mode 100644 index 000000000000..8b137891791f --- /dev/null +++ b/exlib/lyra2z-py/lyra2z_hash.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/exlib/lyra2z-py/lyra2z_hash.egg-info/top_level.txt b/exlib/lyra2z-py/lyra2z_hash.egg-info/top_level.txt new file mode 100644 index 000000000000..55f3839ca87d --- /dev/null +++ b/exlib/lyra2z-py/lyra2z_hash.egg-info/top_level.txt @@ -0,0 +1 @@ +lyra2z_hash diff --git a/exlib/lyra2z-py/lyra2zmodule.c b/exlib/lyra2z-py/lyra2zmodule.c new file mode 100644 index 000000000000..4bb430a46027 --- /dev/null +++ b/exlib/lyra2z-py/lyra2zmodule.c @@ -0,0 +1,57 @@ +#include + +#include "lyra2z.h" + +static PyObject *lyra2z_getpowhash(PyObject *self, PyObject *args) +{ + char *output; + PyObject *value; +#if PY_MAJOR_VERSION >= 3 + PyBytesObject *input; +#else + PyStringObject *input; +#endif + if (!PyArg_ParseTuple(args, "S", &input)) + return NULL; + Py_INCREF(input); + output = PyMem_Malloc(32); + +#if PY_MAJOR_VERSION >= 3 + lyra2z_hash((char *)PyBytes_AsString((PyObject*) input), output); +#else + lyra2z_hash((char *)PyString_AsString((PyObject*) input), output); +#endif + Py_DECREF(input); +#if PY_MAJOR_VERSION >= 3 + value = Py_BuildValue("y#", output, 32); +#else + value = Py_BuildValue("s#", output, 32); +#endif + PyMem_Free(output); + return value; +} + +static PyMethodDef Lyra2ZMethods[] = { + { "getPoWHash", lyra2z_getpowhash, METH_VARARGS, "Returns the proof of work hash using lyra2z hash" }, + { NULL, NULL, 0, NULL } +}; + +#if PY_MAJOR_VERSION >= 3 +static struct PyModuleDef Lyra2ZModule = { + PyModuleDef_HEAD_INIT, + "lyra2z_hash", + "...", + -1, + Lyra2ZMethods +}; + +PyMODINIT_FUNC PyInit_lyra2z_hash(void) { + return PyModule_Create(&Lyra2ZModule); +} + +#else + +PyMODINIT_FUNC initlyra2z_hash(void) { + (void) Py_InitModule("lyra2z_hash", Lyra2ZMethods); +} +#endif diff --git a/exlib/lyra2z-py/setup.py b/exlib/lyra2z-py/setup.py new file mode 100644 index 000000000000..02b79dcdb185 --- /dev/null +++ b/exlib/lyra2z-py/setup.py @@ -0,0 +1,19 @@ +from setuptools import setup, Extension + +lyra2z_hash_module = Extension('lyra2z_hash', + sources = [ + 'lyra2zmodule.c', + 'lyra2z.c', + 'Sponge.c', + 'Lyra2.c', + 'blake.c'], + include_dirs=['.']) + +setup (name = 'lyra2z_hash', + version = '0.1.0', + author_email = 'devwarrior.zcoin@gmail.com', + author = 'devwarrior', + url = 'https://github.com/devwarrior777/lyra2z-py', + description = 'Bindings for Lyra2Z proof of work used by Zcoin', + ext_modules = [lyra2z_hash_module]) + diff --git a/exlib/lyra2z-py/sph_blake.h b/exlib/lyra2z-py/sph_blake.h new file mode 100644 index 000000000000..d8d794399d00 --- /dev/null +++ b/exlib/lyra2z-py/sph_blake.h @@ -0,0 +1,327 @@ +/* $Id: sph_blake.h 252 2011-06-07 17:55:14Z tp $ */ +/** + * BLAKE interface. BLAKE is a family of functions which differ by their + * output size; this implementation defines BLAKE for output sizes 224, + * 256, 384 and 512 bits. This implementation conforms to the "third + * round" specification. + * + * ==========================(LICENSE BEGIN)============================ + * + * Copyright (c) 2007-2010 Projet RNRT SAPHIR + * + * 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. + * + * ===========================(LICENSE END)============================= + * + * @file sph_blake.h + * @author Thomas Pornin + */ + +#ifndef SPH_BLAKE_H__ +#define SPH_BLAKE_H__ + +#ifdef __cplusplus +extern "C"{ +#endif + +#include +#include "sph_types.h" + +/** + * Output size (in bits) for BLAKE-224. + */ +#define SPH_SIZE_blake224 224 + +/** + * Output size (in bits) for BLAKE-256. + */ +#define SPH_SIZE_blake256 256 + +#if SPH_64 + +/** + * Output size (in bits) for BLAKE-384. + */ +#define SPH_SIZE_blake384 384 + +/** + * Output size (in bits) for BLAKE-512. + */ +#define SPH_SIZE_blake512 512 + +#endif + +/** + * This structure is a context for BLAKE-224 and BLAKE-256 computations: + * it contains the intermediate values and some data from the last + * entered block. Once a BLAKE computation has been performed, the + * context can be reused for another computation. + * + * The contents of this structure are private. A running BLAKE + * computation can be cloned by copying the context (e.g. with a simple + * memcpy()). + */ +typedef struct { +#ifndef DOXYGEN_IGNORE + unsigned char buf[64]; /* first field, for alignment */ + size_t ptr; + sph_u32 H[8]; + sph_u32 S[4]; + sph_u32 T0, T1; +#endif +} sph_blake_small_context; + +/** + * This structure is a context for BLAKE-224 computations. It is + * identical to the common sph_blake_small_context. + */ +typedef sph_blake_small_context sph_blake224_context; + +/** + * This structure is a context for BLAKE-256 computations. It is + * identical to the common sph_blake_small_context. + */ +typedef sph_blake_small_context sph_blake256_context; + +#if SPH_64 + +/** + * This structure is a context for BLAKE-384 and BLAKE-512 computations: + * it contains the intermediate values and some data from the last + * entered block. Once a BLAKE computation has been performed, the + * context can be reused for another computation. + * + * The contents of this structure are private. A running BLAKE + * computation can be cloned by copying the context (e.g. with a simple + * memcpy()). + */ +typedef struct { +#ifndef DOXYGEN_IGNORE + unsigned char buf[128]; /* first field, for alignment */ + size_t ptr; + sph_u64 H[8]; + sph_u64 S[4]; + sph_u64 T0, T1; +#endif +} sph_blake_big_context; + +/** + * This structure is a context for BLAKE-384 computations. It is + * identical to the common sph_blake_small_context. + */ +typedef sph_blake_big_context sph_blake384_context; + +/** + * This structure is a context for BLAKE-512 computations. It is + * identical to the common sph_blake_small_context. + */ +typedef sph_blake_big_context sph_blake512_context; + +#endif + +/** + * Initialize a BLAKE-224 context. This process performs no memory allocation. + * + * @param cc the BLAKE-224 context (pointer to a + * sph_blake224_context) + */ +void sph_blake224_init(void *cc); + +/** + * Process some data bytes. It is acceptable that len is zero + * (in which case this function does nothing). + * + * @param cc the BLAKE-224 context + * @param data the input data + * @param len the input data length (in bytes) + */ +void sph_blake224(void *cc, const void *data, size_t len); + +/** + * Terminate the current BLAKE-224 computation and output the result into + * the provided buffer. The destination buffer must be wide enough to + * accomodate the result (28 bytes). The context is automatically + * reinitialized. + * + * @param cc the BLAKE-224 context + * @param dst the destination buffer + */ +void sph_blake224_close(void *cc, void *dst); + +/** + * Add a few additional bits (0 to 7) to the current computation, then + * terminate it and output the result in the provided buffer, which must + * be wide enough to accomodate the result (28 bytes). If bit number i + * in ub has value 2^i, then the extra bits are those + * numbered 7 downto 8-n (this is the big-endian convention at the byte + * level). The context is automatically reinitialized. + * + * @param cc the BLAKE-224 context + * @param ub the extra bits + * @param n the number of extra bits (0 to 7) + * @param dst the destination buffer + */ +void sph_blake224_addbits_and_close( + void *cc, unsigned ub, unsigned n, void *dst); + +/** + * Initialize a BLAKE-256 context. This process performs no memory allocation. + * + * @param cc the BLAKE-256 context (pointer to a + * sph_blake256_context) + */ +void sph_blake256_init(void *cc); + +/** + * Process some data bytes. It is acceptable that len is zero + * (in which case this function does nothing). + * + * @param cc the BLAKE-256 context + * @param data the input data + * @param len the input data length (in bytes) + */ +void sph_blake256(void *cc, const void *data, size_t len); + +/** + * Terminate the current BLAKE-256 computation and output the result into + * the provided buffer. The destination buffer must be wide enough to + * accomodate the result (32 bytes). The context is automatically + * reinitialized. + * + * @param cc the BLAKE-256 context + * @param dst the destination buffer + */ +void sph_blake256_close(void *cc, void *dst); + +/** + * Add a few additional bits (0 to 7) to the current computation, then + * terminate it and output the result in the provided buffer, which must + * be wide enough to accomodate the result (32 bytes). If bit number i + * in ub has value 2^i, then the extra bits are those + * numbered 7 downto 8-n (this is the big-endian convention at the byte + * level). The context is automatically reinitialized. + * + * @param cc the BLAKE-256 context + * @param ub the extra bits + * @param n the number of extra bits (0 to 7) + * @param dst the destination buffer + */ +void sph_blake256_addbits_and_close( + void *cc, unsigned ub, unsigned n, void *dst); + +#if SPH_64 + +/** + * Initialize a BLAKE-384 context. This process performs no memory allocation. + * + * @param cc the BLAKE-384 context (pointer to a + * sph_blake384_context) + */ +void sph_blake384_init(void *cc); + +/** + * Process some data bytes. It is acceptable that len is zero + * (in which case this function does nothing). + * + * @param cc the BLAKE-384 context + * @param data the input data + * @param len the input data length (in bytes) + */ +void sph_blake384(void *cc, const void *data, size_t len); + +/** + * Terminate the current BLAKE-384 computation and output the result into + * the provided buffer. The destination buffer must be wide enough to + * accomodate the result (48 bytes). The context is automatically + * reinitialized. + * + * @param cc the BLAKE-384 context + * @param dst the destination buffer + */ +void sph_blake384_close(void *cc, void *dst); + +/** + * Add a few additional bits (0 to 7) to the current computation, then + * terminate it and output the result in the provided buffer, which must + * be wide enough to accomodate the result (48 bytes). If bit number i + * in ub has value 2^i, then the extra bits are those + * numbered 7 downto 8-n (this is the big-endian convention at the byte + * level). The context is automatically reinitialized. + * + * @param cc the BLAKE-384 context + * @param ub the extra bits + * @param n the number of extra bits (0 to 7) + * @param dst the destination buffer + */ +void sph_blake384_addbits_and_close( + void *cc, unsigned ub, unsigned n, void *dst); + +/** + * Initialize a BLAKE-512 context. This process performs no memory allocation. + * + * @param cc the BLAKE-512 context (pointer to a + * sph_blake512_context) + */ +void sph_blake512_init(void *cc); + +/** + * Process some data bytes. It is acceptable that len is zero + * (in which case this function does nothing). + * + * @param cc the BLAKE-512 context + * @param data the input data + * @param len the input data length (in bytes) + */ +void sph_blake512(void *cc, const void *data, size_t len); + +/** + * Terminate the current BLAKE-512 computation and output the result into + * the provided buffer. The destination buffer must be wide enough to + * accomodate the result (64 bytes). The context is automatically + * reinitialized. + * + * @param cc the BLAKE-512 context + * @param dst the destination buffer + */ +void sph_blake512_close(void *cc, void *dst); + +/** + * Add a few additional bits (0 to 7) to the current computation, then + * terminate it and output the result in the provided buffer, which must + * be wide enough to accomodate the result (64 bytes). If bit number i + * in ub has value 2^i, then the extra bits are those + * numbered 7 downto 8-n (this is the big-endian convention at the byte + * level). The context is automatically reinitialized. + * + * @param cc the BLAKE-512 context + * @param ub the extra bits + * @param n the number of extra bits (0 to 7) + * @param dst the destination buffer + */ +void sph_blake512_addbits_and_close( + void *cc, unsigned ub, unsigned n, void *dst); + +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/exlib/lyra2z-py/sph_types.h b/exlib/lyra2z-py/sph_types.h new file mode 100644 index 000000000000..6c8ecf4b676f --- /dev/null +++ b/exlib/lyra2z-py/sph_types.h @@ -0,0 +1,1986 @@ +/* $Id: sph_types.h 260 2011-07-21 01:02:38Z tp $ */ +/** + * Basic type definitions. + * + * This header file defines the generic integer types that will be used + * for the implementation of hash functions; it also contains helper + * functions which encode and decode multi-byte integer values, using + * either little-endian or big-endian conventions. + * + * This file contains a compile-time test on the size of a byte + * (the unsigned char C type). If bytes are not octets, + * i.e. if they do not have a size of exactly 8 bits, then compilation + * is aborted. Architectures where bytes are not octets are relatively + * rare, even in the embedded devices market. We forbid non-octet bytes + * because there is no clear convention on how octet streams are encoded + * on such systems. + * + * ==========================(LICENSE BEGIN)============================ + * + * Copyright (c) 2007-2010 Projet RNRT SAPHIR + * + * 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. + * + * ===========================(LICENSE END)============================= + * + * @file sph_types.h + * @author Thomas Pornin + */ + +#ifndef SPH_TYPES_H__ +#define SPH_TYPES_H__ + +#include + +/* + * All our I/O functions are defined over octet streams. We do not know + * how to handle input data if bytes are not octets. + */ +#if CHAR_BIT != 8 +#error This code requires 8-bit bytes +#endif + +/* ============= BEGIN documentation block for Doxygen ============ */ + +#ifdef DOXYGEN_IGNORE + +/** @mainpage sphlib C code documentation + * + * @section overview Overview + * + * sphlib is a library which contains implementations of + * various cryptographic hash functions. These pages have been generated + * with doxygen and + * document the API for the C implementations. + * + * The API is described in appropriate header files, which are available + * in the "Files" section. Each hash function family has its own header, + * whose name begins with "sph_" and contains the family + * name. For instance, the API for the RIPEMD hash functions is available + * in the header file sph_ripemd.h. + * + * @section principles API structure and conventions + * + * @subsection io Input/output conventions + * + * In all generality, hash functions operate over strings of bits. + * Individual bits are rarely encountered in C programming or actual + * communication protocols; most protocols converge on the ubiquitous + * "octet" which is a group of eight bits. Data is thus expressed as a + * stream of octets. The C programming language contains the notion of a + * "byte", which is a data unit managed under the type "unsigned + * char". The C standard prescribes that a byte should hold at + * least eight bits, but possibly more. Most modern architectures, even + * in the embedded world, feature eight-bit bytes, i.e. map bytes to + * octets. + * + * Nevertheless, for some of the implemented hash functions, an extra + * API has been added, which allows the input of arbitrary sequences of + * bits: when the computation is about to be closed, 1 to 7 extra bits + * can be added. The functions for which this API is implemented include + * the SHA-2 functions and all SHA-3 candidates. + * + * sphlib defines hash function which may hash octet streams, + * i.e. streams of bits where the number of bits is a multiple of eight. + * The data input functions in the sphlib API expect data + * as anonymous pointers ("const void *") with a length + * (of type "size_t") which gives the input data chunk length + * in bytes. A byte is assumed to be an octet; the sph_types.h + * header contains a compile-time test which prevents compilation on + * architectures where this property is not met. + * + * The hash function output is also converted into bytes. All currently + * implemented hash functions have an output width which is a multiple of + * eight, and this is likely to remain true for new designs. + * + * Most hash functions internally convert input data into 32-bit of 64-bit + * words, using either little-endian or big-endian conversion. The hash + * output also often consists of such words, which are encoded into output + * bytes with a similar endianness convention. Some hash functions have + * been only loosely specified on that subject; when necessary, + * sphlib has been tested against published "reference" + * implementations in order to use the same conventions. + * + * @subsection shortname Function short name + * + * Each implemented hash function has a "short name" which is used + * internally to derive the identifiers for the functions and context + * structures which the function uses. For instance, MD5 has the short + * name "md5". Short names are listed in the next section, + * for the implemented hash functions. In subsequent sections, the + * short name will be assumed to be "XXX": replace with the + * actual hash function name to get the C identifier. + * + * Note: some functions within the same family share the same core + * elements, such as update function or context structure. Correspondingly, + * some of the defined types or functions may actually be macros which + * transparently evaluate to another type or function name. + * + * @subsection context Context structure + * + * Each implemented hash fonction has its own context structure, available + * under the type name "sph_XXX_context" for the hash function + * with short name "XXX". This structure holds all needed + * state for a running hash computation. + * + * The contents of these structures are meant to be opaque, and private + * to the implementation. However, these contents are specified in the + * header files so that application code which uses sphlib + * may access the size of those structures. + * + * The caller is responsible for allocating the context structure, + * whether by dynamic allocation (malloc() or equivalent), + * static allocation (a global permanent variable), as an automatic + * variable ("on the stack"), or by any other mean which ensures proper + * structure alignment. sphlib code performs no dynamic + * allocation by itself. + * + * The context must be initialized before use, using the + * sph_XXX_init() function. This function sets the context + * state to proper initial values for hashing. + * + * Since all state data is contained within the context structure, + * sphlib is thread-safe and reentrant: several hash + * computations may be performed in parallel, provided that they do not + * operate on the same context. Moreover, a running computation can be + * cloned by copying the context (with a simple memcpy()): + * the context and its clone are then independant and may be updated + * with new data and/or closed without interfering with each other. + * Similarly, a context structure can be moved in memory at will: + * context structures contain no pointer, in particular no pointer to + * themselves. + * + * @subsection dataio Data input + * + * Hashed data is input with the sph_XXX() fonction, which + * takes as parameters a pointer to the context, a pointer to the data + * to hash, and the number of data bytes to hash. The context is updated + * with the new data. + * + * Data can be input in one or several calls, with arbitrary input lengths. + * However, it is best, performance wise, to input data by relatively big + * chunks (say a few kilobytes), because this allows sphlib to + * optimize things and avoid internal copying. + * + * When all data has been input, the context can be closed with + * sph_XXX_close(). The hash output is computed and written + * into the provided buffer. The caller must take care to provide a + * buffer of appropriate length; e.g., when using SHA-1, the output is + * a 20-byte word, therefore the output buffer must be at least 20-byte + * long. + * + * For some hash functions, the sph_XXX_addbits_and_close() + * function can be used instead of sph_XXX_close(). This + * function can take a few extra bits to be added at + * the end of the input message. This allows hashing messages with a + * bit length which is not a multiple of 8. The extra bits are provided + * as an unsigned integer value, and a bit count. The bit count must be + * between 0 and 7, inclusive. The extra bits are provided as bits 7 to + * 0 (bits of numerical value 128, 64, 32... downto 0), in that order. + * For instance, to add three bits of value 1, 1 and 0, the unsigned + * integer will have value 192 (1*128 + 1*64 + 0*32) and the bit count + * will be 3. + * + * The SPH_SIZE_XXX macro is defined for each hash function; + * it evaluates to the function output size, expressed in bits. For instance, + * SPH_SIZE_sha1 evaluates to 160. + * + * When closed, the context is automatically reinitialized and can be + * immediately used for another computation. It is not necessary to call + * sph_XXX_init() after a close. Note that + * sph_XXX_init() can still be called to "reset" a context, + * i.e. forget previously input data, and get back to the initial state. + * + * @subsection alignment Data alignment + * + * "Alignment" is a property of data, which is said to be "properly + * aligned" when its emplacement in memory is such that the data can + * be optimally read by full words. This depends on the type of access; + * basically, some hash functions will read data by 32-bit or 64-bit + * words. sphlib does not mandate such alignment for input + * data, but using aligned data can substantially improve performance. + * + * As a rule, it is best to input data by chunks whose length (in bytes) + * is a multiple of eight, and which begins at "generally aligned" + * addresses, such as the base address returned by a call to + * malloc(). + * + * @section functions Implemented functions + * + * We give here the list of implemented functions. They are grouped by + * family; to each family corresponds a specific header file. Each + * individual function has its associated "short name". Please refer to + * the documentation for that header file to get details on the hash + * function denomination and provenance. + * + * Note: the functions marked with a '(64)' in the list below are + * available only if the C compiler provides an integer type of length + * 64 bits or more. Such a type is mandatory in the latest C standard + * (ISO 9899:1999, aka "C99") and is present in several older compilers + * as well, so chances are that such a type is available. + * + * - HAVAL family: file sph_haval.h + * - HAVAL-128/3 (128-bit, 3 passes): short name: haval128_3 + * - HAVAL-128/4 (128-bit, 4 passes): short name: haval128_4 + * - HAVAL-128/5 (128-bit, 5 passes): short name: haval128_5 + * - HAVAL-160/3 (160-bit, 3 passes): short name: haval160_3 + * - HAVAL-160/4 (160-bit, 4 passes): short name: haval160_4 + * - HAVAL-160/5 (160-bit, 5 passes): short name: haval160_5 + * - HAVAL-192/3 (192-bit, 3 passes): short name: haval192_3 + * - HAVAL-192/4 (192-bit, 4 passes): short name: haval192_4 + * - HAVAL-192/5 (192-bit, 5 passes): short name: haval192_5 + * - HAVAL-224/3 (224-bit, 3 passes): short name: haval224_3 + * - HAVAL-224/4 (224-bit, 4 passes): short name: haval224_4 + * - HAVAL-224/5 (224-bit, 5 passes): short name: haval224_5 + * - HAVAL-256/3 (256-bit, 3 passes): short name: haval256_3 + * - HAVAL-256/4 (256-bit, 4 passes): short name: haval256_4 + * - HAVAL-256/5 (256-bit, 5 passes): short name: haval256_5 + * - MD2: file sph_md2.h, short name: md2 + * - MD4: file sph_md4.h, short name: md4 + * - MD5: file sph_md5.h, short name: md5 + * - PANAMA: file sph_panama.h, short name: panama + * - RadioGatun family: file sph_radiogatun.h + * - RadioGatun[32]: short name: radiogatun32 + * - RadioGatun[64]: short name: radiogatun64 (64) + * - RIPEMD family: file sph_ripemd.h + * - RIPEMD: short name: ripemd + * - RIPEMD-128: short name: ripemd128 + * - RIPEMD-160: short name: ripemd160 + * - SHA-0: file sph_sha0.h, short name: sha0 + * - SHA-1: file sph_sha1.h, short name: sha1 + * - SHA-2 family, 32-bit hashes: file sph_sha2.h + * - SHA-224: short name: sha224 + * - SHA-256: short name: sha256 + * - SHA-384: short name: sha384 (64) + * - SHA-512: short name: sha512 (64) + * - Tiger family: file sph_tiger.h + * - Tiger: short name: tiger (64) + * - Tiger2: short name: tiger2 (64) + * - WHIRLPOOL family: file sph_whirlpool.h + * - WHIRLPOOL-0: short name: whirlpool0 (64) + * - WHIRLPOOL-1: short name: whirlpool1 (64) + * - WHIRLPOOL: short name: whirlpool (64) + * + * The fourteen second-round SHA-3 candidates are also implemented; + * when applicable, the implementations follow the "final" specifications + * as published for the third round of the SHA-3 competition (BLAKE, + * Groestl, JH, Keccak and Skein have been tweaked for third round). + * + * - BLAKE family: file sph_blake.h + * - BLAKE-224: short name: blake224 + * - BLAKE-256: short name: blake256 + * - BLAKE-384: short name: blake384 + * - BLAKE-512: short name: blake512 + * - BMW (Blue Midnight Wish) family: file sph_bmw.h + * - BMW-224: short name: bmw224 + * - BMW-256: short name: bmw256 + * - BMW-384: short name: bmw384 (64) + * - BMW-512: short name: bmw512 (64) + * - CubeHash family: file sph_cubehash.h (specified as + * CubeHash16/32 in the CubeHash specification) + * - CubeHash-224: short name: cubehash224 + * - CubeHash-256: short name: cubehash256 + * - CubeHash-384: short name: cubehash384 + * - CubeHash-512: short name: cubehash512 + * - ECHO family: file sph_echo.h + * - ECHO-224: short name: echo224 + * - ECHO-256: short name: echo256 + * - ECHO-384: short name: echo384 + * - ECHO-512: short name: echo512 + * - Fugue family: file sph_fugue.h + * - Fugue-224: short name: fugue224 + * - Fugue-256: short name: fugue256 + * - Fugue-384: short name: fugue384 + * - Fugue-512: short name: fugue512 + * - Groestl family: file sph_groestl.h + * - Groestl-224: short name: groestl224 + * - Groestl-256: short name: groestl256 + * - Groestl-384: short name: groestl384 + * - Groestl-512: short name: groestl512 + * - Hamsi family: file sph_hamsi.h + * - Hamsi-224: short name: hamsi224 + * - Hamsi-256: short name: hamsi256 + * - Hamsi-384: short name: hamsi384 + * - Hamsi-512: short name: hamsi512 + * - JH family: file sph_jh.h + * - JH-224: short name: jh224 + * - JH-256: short name: jh256 + * - JH-384: short name: jh384 + * - JH-512: short name: jh512 + * - Keccak family: file sph_keccak.h + * - Keccak-224: short name: keccak224 + * - Keccak-256: short name: keccak256 + * - Keccak-384: short name: keccak384 + * - Keccak-512: short name: keccak512 + * - Luffa family: file sph_luffa.h + * - Luffa-224: short name: luffa224 + * - Luffa-256: short name: luffa256 + * - Luffa-384: short name: luffa384 + * - Luffa-512: short name: luffa512 + * - Shabal family: file sph_shabal.h + * - Shabal-192: short name: shabal192 + * - Shabal-224: short name: shabal224 + * - Shabal-256: short name: shabal256 + * - Shabal-384: short name: shabal384 + * - Shabal-512: short name: shabal512 + * - SHAvite-3 family: file sph_shavite.h + * - SHAvite-224 (nominally "SHAvite-3 with 224-bit output"): + * short name: shabal224 + * - SHAvite-256 (nominally "SHAvite-3 with 256-bit output"): + * short name: shabal256 + * - SHAvite-384 (nominally "SHAvite-3 with 384-bit output"): + * short name: shabal384 + * - SHAvite-512 (nominally "SHAvite-3 with 512-bit output"): + * short name: shabal512 + * - SIMD family: file sph_simd.h + * - SIMD-224: short name: simd224 + * - SIMD-256: short name: simd256 + * - SIMD-384: short name: simd384 + * - SIMD-512: short name: simd512 + * - Skein family: file sph_skein.h + * - Skein-224 (nominally specified as Skein-512-224): short name: + * skein224 (64) + * - Skein-256 (nominally specified as Skein-512-256): short name: + * skein256 (64) + * - Skein-384 (nominally specified as Skein-512-384): short name: + * skein384 (64) + * - Skein-512 (nominally specified as Skein-512-512): short name: + * skein512 (64) + * + * For the second-round SHA-3 candidates, the functions are as specified + * for round 2, i.e. with the "tweaks" that some candidates added + * between round 1 and round 2. Also, some of the submitted packages for + * round 2 contained errors, in the specification, reference code, or + * both. sphlib implements the corrected versions. + */ + +/** @hideinitializer + * Unsigned integer type whose length is at least 32 bits; on most + * architectures, it will have a width of exactly 32 bits. Unsigned C + * types implement arithmetics modulo a power of 2; use the + * SPH_T32() macro to ensure that the value is truncated + * to exactly 32 bits. Unless otherwise specified, all macros and + * functions which accept sph_u32 values assume that these + * values fit on 32 bits, i.e. do not exceed 2^32-1, even on architectures + * where sph_u32 is larger than that. + */ +typedef __arch_dependant__ sph_u32; + +/** @hideinitializer + * Signed integer type corresponding to sph_u32; it has + * width 32 bits or more. + */ +typedef __arch_dependant__ sph_s32; + +/** @hideinitializer + * Unsigned integer type whose length is at least 64 bits; on most + * architectures which feature such a type, it will have a width of + * exactly 64 bits. C99-compliant platform will have this type; it + * is also defined when the GNU compiler (gcc) is used, and on + * platforms where unsigned long is large enough. If this + * type is not available, then some hash functions which depends on + * a 64-bit type will not be available (most notably SHA-384, SHA-512, + * Tiger and WHIRLPOOL). + */ +typedef __arch_dependant__ sph_u64; + +/** @hideinitializer + * Signed integer type corresponding to sph_u64; it has + * width 64 bits or more. + */ +typedef __arch_dependant__ sph_s64; + +/** + * This macro expands the token x into a suitable + * constant expression of type sph_u32. Depending on + * how this type is defined, a suffix such as UL may + * be appended to the argument. + * + * @param x the token to expand into a suitable constant expression + */ +#define SPH_C32(x) + +/** + * Truncate a 32-bit value to exactly 32 bits. On most systems, this is + * a no-op, recognized as such by the compiler. + * + * @param x the value to truncate (of type sph_u32) + */ +#define SPH_T32(x) + +/** + * Rotate a 32-bit value by a number of bits to the left. The rotate + * count must reside between 1 and 31. This macro assumes that its + * first argument fits in 32 bits (no extra bit allowed on machines where + * sph_u32 is wider); both arguments may be evaluated + * several times. + * + * @param x the value to rotate (of type sph_u32) + * @param n the rotation count (between 1 and 31, inclusive) + */ +#define SPH_ROTL32(x, n) + +/** + * Rotate a 32-bit value by a number of bits to the left. The rotate + * count must reside between 1 and 31. This macro assumes that its + * first argument fits in 32 bits (no extra bit allowed on machines where + * sph_u32 is wider); both arguments may be evaluated + * several times. + * + * @param x the value to rotate (of type sph_u32) + * @param n the rotation count (between 1 and 31, inclusive) + */ +#define SPH_ROTR32(x, n) + +/** + * This macro is defined on systems for which a 64-bit type has been + * detected, and is used for sph_u64. + */ +#define SPH_64 + +/** + * This macro is defined on systems for the "native" integer size is + * 64 bits (64-bit values fit in one register). + */ +#define SPH_64_TRUE + +/** + * This macro expands the token x into a suitable + * constant expression of type sph_u64. Depending on + * how this type is defined, a suffix such as ULL may + * be appended to the argument. This macro is defined only if a + * 64-bit type was detected and used for sph_u64. + * + * @param x the token to expand into a suitable constant expression + */ +#define SPH_C64(x) + +/** + * Truncate a 64-bit value to exactly 64 bits. On most systems, this is + * a no-op, recognized as such by the compiler. This macro is defined only + * if a 64-bit type was detected and used for sph_u64. + * + * @param x the value to truncate (of type sph_u64) + */ +#define SPH_T64(x) + +/** + * Rotate a 64-bit value by a number of bits to the left. The rotate + * count must reside between 1 and 63. This macro assumes that its + * first argument fits in 64 bits (no extra bit allowed on machines where + * sph_u64 is wider); both arguments may be evaluated + * several times. This macro is defined only if a 64-bit type was detected + * and used for sph_u64. + * + * @param x the value to rotate (of type sph_u64) + * @param n the rotation count (between 1 and 63, inclusive) + */ +#define SPH_ROTL64(x, n) + +/** + * Rotate a 64-bit value by a number of bits to the left. The rotate + * count must reside between 1 and 63. This macro assumes that its + * first argument fits in 64 bits (no extra bit allowed on machines where + * sph_u64 is wider); both arguments may be evaluated + * several times. This macro is defined only if a 64-bit type was detected + * and used for sph_u64. + * + * @param x the value to rotate (of type sph_u64) + * @param n the rotation count (between 1 and 63, inclusive) + */ +#define SPH_ROTR64(x, n) + +/** + * This macro evaluates to inline or an equivalent construction, + * if available on the compilation platform, or to nothing otherwise. This + * is used to declare inline functions, for which the compiler should + * endeavour to include the code directly in the caller. Inline functions + * are typically defined in header files as replacement for macros. + */ +#define SPH_INLINE + +/** + * This macro is defined if the platform has been detected as using + * little-endian convention. This implies that the sph_u32 + * type (and the sph_u64 type also, if it is defined) has + * an exact width (i.e. exactly 32-bit, respectively 64-bit). + */ +#define SPH_LITTLE_ENDIAN + +/** + * This macro is defined if the platform has been detected as using + * big-endian convention. This implies that the sph_u32 + * type (and the sph_u64 type also, if it is defined) has + * an exact width (i.e. exactly 32-bit, respectively 64-bit). + */ +#define SPH_BIG_ENDIAN + +/** + * This macro is defined if 32-bit words (and 64-bit words, if defined) + * can be read from and written to memory efficiently in little-endian + * convention. This is the case for little-endian platforms, and also + * for the big-endian platforms which have special little-endian access + * opcodes (e.g. Ultrasparc). + */ +#define SPH_LITTLE_FAST + +/** + * This macro is defined if 32-bit words (and 64-bit words, if defined) + * can be read from and written to memory efficiently in big-endian + * convention. This is the case for little-endian platforms, and also + * for the little-endian platforms which have special big-endian access + * opcodes. + */ +#define SPH_BIG_FAST + +/** + * On some platforms, this macro is defined to an unsigned integer type + * into which pointer values may be cast. The resulting value can then + * be tested for being a multiple of 2, 4 or 8, indicating an aligned + * pointer for, respectively, 16-bit, 32-bit or 64-bit memory accesses. + */ +#define SPH_UPTR + +/** + * When defined, this macro indicates that unaligned memory accesses + * are possible with only a minor penalty, and thus should be prefered + * over strategies which first copy data to an aligned buffer. + */ +#define SPH_UNALIGNED + +/** + * Byte-swap a 32-bit word (i.e. 0x12345678 becomes + * 0x78563412). This is an inline function which resorts + * to inline assembly on some platforms, for better performance. + * + * @param x the 32-bit value to byte-swap + * @return the byte-swapped value + */ +static inline sph_u32 sph_bswap32(sph_u32 x); + +/** + * Byte-swap a 64-bit word. This is an inline function which resorts + * to inline assembly on some platforms, for better performance. This + * function is defined only if a suitable 64-bit type was found for + * sph_u64 + * + * @param x the 64-bit value to byte-swap + * @return the byte-swapped value + */ +static inline sph_u64 sph_bswap64(sph_u64 x); + +/** + * Decode a 16-bit unsigned value from memory, in little-endian convention + * (least significant byte comes first). + * + * @param src the source address + * @return the decoded value + */ +static inline unsigned sph_dec16le(const void *src); + +/** + * Encode a 16-bit unsigned value into memory, in little-endian convention + * (least significant byte comes first). + * + * @param dst the destination buffer + * @param val the value to encode + */ +static inline void sph_enc16le(void *dst, unsigned val); + +/** + * Decode a 16-bit unsigned value from memory, in big-endian convention + * (most significant byte comes first). + * + * @param src the source address + * @return the decoded value + */ +static inline unsigned sph_dec16be(const void *src); + +/** + * Encode a 16-bit unsigned value into memory, in big-endian convention + * (most significant byte comes first). + * + * @param dst the destination buffer + * @param val the value to encode + */ +static inline void sph_enc16be(void *dst, unsigned val); + +/** + * Decode a 32-bit unsigned value from memory, in little-endian convention + * (least significant byte comes first). + * + * @param src the source address + * @return the decoded value + */ +static inline sph_u32 sph_dec32le(const void *src); + +/** + * Decode a 32-bit unsigned value from memory, in little-endian convention + * (least significant byte comes first). This function assumes that the + * source address is suitably aligned for a direct access, if the platform + * supports such things; it can thus be marginally faster than the generic + * sph_dec32le() function. + * + * @param src the source address + * @return the decoded value + */ +static inline sph_u32 sph_dec32le_aligned(const void *src); + +/** + * Encode a 32-bit unsigned value into memory, in little-endian convention + * (least significant byte comes first). + * + * @param dst the destination buffer + * @param val the value to encode + */ +static inline void sph_enc32le(void *dst, sph_u32 val); + +/** + * Encode a 32-bit unsigned value into memory, in little-endian convention + * (least significant byte comes first). This function assumes that the + * destination address is suitably aligned for a direct access, if the + * platform supports such things; it can thus be marginally faster than + * the generic sph_enc32le() function. + * + * @param dst the destination buffer + * @param val the value to encode + */ +static inline void sph_enc32le_aligned(void *dst, sph_u32 val); + +/** + * Decode a 32-bit unsigned value from memory, in big-endian convention + * (most significant byte comes first). + * + * @param src the source address + * @return the decoded value + */ +static inline sph_u32 sph_dec32be(const void *src); + +/** + * Decode a 32-bit unsigned value from memory, in big-endian convention + * (most significant byte comes first). This function assumes that the + * source address is suitably aligned for a direct access, if the platform + * supports such things; it can thus be marginally faster than the generic + * sph_dec32be() function. + * + * @param src the source address + * @return the decoded value + */ +static inline sph_u32 sph_dec32be_aligned(const void *src); + +/** + * Encode a 32-bit unsigned value into memory, in big-endian convention + * (most significant byte comes first). + * + * @param dst the destination buffer + * @param val the value to encode + */ +static inline void sph_enc32be(void *dst, sph_u32 val); + +/** + * Encode a 32-bit unsigned value into memory, in big-endian convention + * (most significant byte comes first). This function assumes that the + * destination address is suitably aligned for a direct access, if the + * platform supports such things; it can thus be marginally faster than + * the generic sph_enc32be() function. + * + * @param dst the destination buffer + * @param val the value to encode + */ +static inline void sph_enc32be_aligned(void *dst, sph_u32 val); + +/** + * Decode a 64-bit unsigned value from memory, in little-endian convention + * (least significant byte comes first). This function is defined only + * if a suitable 64-bit type was detected and used for sph_u64. + * + * @param src the source address + * @return the decoded value + */ +static inline sph_u64 sph_dec64le(const void *src); + +/** + * Decode a 64-bit unsigned value from memory, in little-endian convention + * (least significant byte comes first). This function assumes that the + * source address is suitably aligned for a direct access, if the platform + * supports such things; it can thus be marginally faster than the generic + * sph_dec64le() function. This function is defined only + * if a suitable 64-bit type was detected and used for sph_u64. + * + * @param src the source address + * @return the decoded value + */ +static inline sph_u64 sph_dec64le_aligned(const void *src); + +/** + * Encode a 64-bit unsigned value into memory, in little-endian convention + * (least significant byte comes first). This function is defined only + * if a suitable 64-bit type was detected and used for sph_u64. + * + * @param dst the destination buffer + * @param val the value to encode + */ +static inline void sph_enc64le(void *dst, sph_u64 val); + +/** + * Encode a 64-bit unsigned value into memory, in little-endian convention + * (least significant byte comes first). This function assumes that the + * destination address is suitably aligned for a direct access, if the + * platform supports such things; it can thus be marginally faster than + * the generic sph_enc64le() function. This function is defined + * only if a suitable 64-bit type was detected and used for + * sph_u64. + * + * @param dst the destination buffer + * @param val the value to encode + */ +static inline void sph_enc64le_aligned(void *dst, sph_u64 val); + +/** + * Decode a 64-bit unsigned value from memory, in big-endian convention + * (most significant byte comes first). This function is defined only + * if a suitable 64-bit type was detected and used for sph_u64. + * + * @param src the source address + * @return the decoded value + */ +static inline sph_u64 sph_dec64be(const void *src); + +/** + * Decode a 64-bit unsigned value from memory, in big-endian convention + * (most significant byte comes first). This function assumes that the + * source address is suitably aligned for a direct access, if the platform + * supports such things; it can thus be marginally faster than the generic + * sph_dec64be() function. This function is defined only + * if a suitable 64-bit type was detected and used for sph_u64. + * + * @param src the source address + * @return the decoded value + */ +static inline sph_u64 sph_dec64be_aligned(const void *src); + +/** + * Encode a 64-bit unsigned value into memory, in big-endian convention + * (most significant byte comes first). This function is defined only + * if a suitable 64-bit type was detected and used for sph_u64. + * + * @param dst the destination buffer + * @param val the value to encode + */ +static inline void sph_enc64be(void *dst, sph_u64 val); + +/** + * Encode a 64-bit unsigned value into memory, in big-endian convention + * (most significant byte comes first). This function assumes that the + * destination address is suitably aligned for a direct access, if the + * platform supports such things; it can thus be marginally faster than + * the generic sph_enc64be() function. This function is defined + * only if a suitable 64-bit type was detected and used for + * sph_u64. + * + * @param dst the destination buffer + * @param val the value to encode + */ +static inline void sph_enc64be_aligned(void *dst, sph_u64 val); + +#endif + +/* ============== END documentation block for Doxygen ============= */ + +#ifndef DOXYGEN_IGNORE + +/* + * We want to define the types "sph_u32" and "sph_u64" which hold + * unsigned values of at least, respectively, 32 and 64 bits. These + * tests should select appropriate types for most platforms. The + * macro "SPH_64" is defined if the 64-bit is supported. + */ + +#undef SPH_64 +#undef SPH_64_TRUE + +#if defined __STDC__ && __STDC_VERSION__ >= 199901L + +/* + * On C99 implementations, we can use to get an exact 64-bit + * type, if any, or otherwise use a wider type (which must exist, for + * C99 conformance). + */ + +#include + +#ifdef UINT32_MAX +typedef uint32_t sph_u32; +typedef int32_t sph_s32; +#else +typedef uint_fast32_t sph_u32; +typedef int_fast32_t sph_s32; +#endif +#if !SPH_NO_64 +#ifdef UINT64_MAX +typedef uint64_t sph_u64; +typedef int64_t sph_s64; +#else +typedef uint_fast64_t sph_u64; +typedef int_fast64_t sph_s64; +#endif +#endif + +#define SPH_C32(x) ((sph_u32)(x)) +#if !SPH_NO_64 +#define SPH_C64(x) ((sph_u64)(x)) +#define SPH_64 1 +#endif + +#else + +/* + * On non-C99 systems, we use "unsigned int" if it is wide enough, + * "unsigned long" otherwise. This supports all "reasonable" architectures. + * We have to be cautious: pre-C99 preprocessors handle constants + * differently in '#if' expressions. Hence the shifts to test UINT_MAX. + */ + +#if ((UINT_MAX >> 11) >> 11) >= 0x3FF + +typedef unsigned int sph_u32; +typedef int sph_s32; + +#define SPH_C32(x) ((sph_u32)(x ## U)) + +#else + +typedef unsigned long sph_u32; +typedef long sph_s32; + +#define SPH_C32(x) ((sph_u32)(x ## UL)) + +#endif + +#if !SPH_NO_64 + +/* + * We want a 64-bit type. We use "unsigned long" if it is wide enough (as + * is common on 64-bit architectures such as AMD64, Alpha or Sparcv9), + * "unsigned long long" otherwise, if available. We use ULLONG_MAX to + * test whether "unsigned long long" is available; we also know that + * gcc features this type, even if the libc header do not know it. + */ + +#if ((ULONG_MAX >> 31) >> 31) >= 3 + +typedef unsigned long sph_u64; +typedef long sph_s64; + +#define SPH_C64(x) ((sph_u64)(x ## UL)) + +#define SPH_64 1 + +#elif ((ULLONG_MAX >> 31) >> 31) >= 3 || defined __GNUC__ + +typedef unsigned long long sph_u64; +typedef long long sph_s64; + +#define SPH_C64(x) ((sph_u64)(x ## ULL)) + +#define SPH_64 1 + +#else + +/* + * No 64-bit type... + */ + +#endif + +#endif + +#endif + +/* + * If the "unsigned long" type has length 64 bits or more, then this is + * a "true" 64-bit architectures. This is also true with Visual C on + * amd64, even though the "long" type is limited to 32 bits. + */ +#if SPH_64 && (((ULONG_MAX >> 31) >> 31) >= 3 || defined _M_X64) +#define SPH_64_TRUE 1 +#endif + +/* + * Implementation note: some processors have specific opcodes to perform + * a rotation. Recent versions of gcc recognize the expression above and + * use the relevant opcodes, when appropriate. + */ + +#define SPH_T32(x) ((x) & SPH_C32(0xFFFFFFFF)) +#ifdef _MSC_VER +#define SPH_ROTL32(x, n) _rotl(x, n) +#define SPH_ROTR32(x, n) _rotr(x, n) +#else +#define SPH_ROTL32(x, n) SPH_T32(((x) << (n)) | ((x) >> (32 - (n)))) +#define SPH_ROTR32(x, n) SPH_ROTL32(x, (32 - (n))) +#endif + +#if SPH_64 + +#define SPH_T64(x) ((x) & SPH_C64(0xFFFFFFFFFFFFFFFF)) +#ifdef _MSC_VER +#define SPH_ROTL64(x, n) _rotl64(x, n) +#define SPH_ROTR64(x, n) _rotr64(x, n) +#else +#define SPH_ROTL64(x, n) SPH_T64(((x) << (n)) | ((x) >> (64 - (n)))) +#define SPH_ROTR64(x, n) SPH_ROTL64(x, (64 - (n))) +#endif + +#endif + +#ifndef DOXYGEN_IGNORE +/* + * Define SPH_INLINE to be an "inline" qualifier, if available. We define + * some small macro-like functions which benefit greatly from being inlined. + */ +#if (defined __STDC__ && __STDC_VERSION__ >= 199901L) || defined __GNUC__ +#define SPH_INLINE inline +#elif defined _MSC_VER +#define SPH_INLINE __inline +#else +#define SPH_INLINE +#endif +#endif + +/* + * We define some macros which qualify the architecture. These macros + * may be explicit set externally (e.g. as compiler parameters). The + * code below sets those macros if they are not already defined. + * + * Most macros are boolean, thus evaluate to either zero or non-zero. + * The SPH_UPTR macro is special, in that it evaluates to a C type, + * or is not defined. + * + * SPH_UPTR if defined: unsigned type to cast pointers into + * + * SPH_UNALIGNED non-zero if unaligned accesses are efficient + * SPH_LITTLE_ENDIAN non-zero if architecture is known to be little-endian + * SPH_BIG_ENDIAN non-zero if architecture is known to be big-endian + * SPH_LITTLE_FAST non-zero if little-endian decoding is fast + * SPH_BIG_FAST non-zero if big-endian decoding is fast + * + * If SPH_UPTR is defined, then encoding and decoding of 32-bit and 64-bit + * values will try to be "smart". Either SPH_LITTLE_ENDIAN or SPH_BIG_ENDIAN + * _must_ be non-zero in those situations. The 32-bit and 64-bit types + * _must_ also have an exact width. + * + * SPH_SPARCV9_GCC_32 UltraSPARC-compatible with gcc, 32-bit mode + * SPH_SPARCV9_GCC_64 UltraSPARC-compatible with gcc, 64-bit mode + * SPH_SPARCV9_GCC UltraSPARC-compatible with gcc + * SPH_I386_GCC x86-compatible (32-bit) with gcc + * SPH_I386_MSVC x86-compatible (32-bit) with Microsoft Visual C + * SPH_AMD64_GCC x86-compatible (64-bit) with gcc + * SPH_AMD64_MSVC x86-compatible (64-bit) with Microsoft Visual C + * SPH_PPC32_GCC PowerPC, 32-bit, with gcc + * SPH_PPC64_GCC PowerPC, 64-bit, with gcc + * + * TODO: enhance automatic detection, for more architectures and compilers. + * Endianness is the most important. SPH_UNALIGNED and SPH_UPTR help with + * some very fast functions (e.g. MD4) when using unaligned input data. + * The CPU-specific-with-GCC macros are useful only for inline assembly, + * normally restrained to this header file. + */ + +/* + * 32-bit x86, aka "i386 compatible". + */ +#if defined __i386__ || defined _M_IX86 + +#define SPH_DETECT_UNALIGNED 1 +#define SPH_DETECT_LITTLE_ENDIAN 1 +#define SPH_DETECT_UPTR sph_u32 +#ifdef __GNUC__ +#define SPH_DETECT_I386_GCC 1 +#endif +#ifdef _MSC_VER +#define SPH_DETECT_I386_MSVC 1 +#endif + +/* + * 64-bit x86, hereafter known as "amd64". + */ +#elif defined __x86_64 || defined _M_X64 + +#define SPH_DETECT_UNALIGNED 1 +#define SPH_DETECT_LITTLE_ENDIAN 1 +#define SPH_DETECT_UPTR sph_u64 +#ifdef __GNUC__ +#define SPH_DETECT_AMD64_GCC 1 +#endif +#ifdef _MSC_VER +#define SPH_DETECT_AMD64_MSVC 1 +#endif + +/* + * 64-bit Sparc architecture (implies v9). + */ +#elif ((defined __sparc__ || defined __sparc) && defined __arch64__) \ + || defined __sparcv9 + +#define SPH_DETECT_BIG_ENDIAN 1 +#define SPH_DETECT_UPTR sph_u64 +#ifdef __GNUC__ +#define SPH_DETECT_SPARCV9_GCC_64 1 +#define SPH_DETECT_LITTLE_FAST 1 +#endif + +/* + * 32-bit Sparc. + */ +#elif (defined __sparc__ || defined __sparc) \ + && !(defined __sparcv9 || defined __arch64__) + +#define SPH_DETECT_BIG_ENDIAN 1 +#define SPH_DETECT_UPTR sph_u32 +#if defined __GNUC__ && defined __sparc_v9__ +#define SPH_DETECT_SPARCV9_GCC_32 1 +#define SPH_DETECT_LITTLE_FAST 1 +#endif + +/* + * ARM, little-endian. + */ +#elif defined __arm__ && __ARMEL__ + +#define SPH_DETECT_LITTLE_ENDIAN 1 + +/* + * MIPS, little-endian. + */ +#elif MIPSEL || _MIPSEL || __MIPSEL || __MIPSEL__ + +#define SPH_DETECT_LITTLE_ENDIAN 1 + +/* + * MIPS, big-endian. + */ +#elif MIPSEB || _MIPSEB || __MIPSEB || __MIPSEB__ + +#define SPH_DETECT_BIG_ENDIAN 1 + +/* + * PowerPC. + */ +#elif defined __powerpc__ || defined __POWERPC__ || defined __ppc__ \ + || defined _ARCH_PPC + +/* + * Note: we do not declare cross-endian access to be "fast": even if + * using inline assembly, implementation should still assume that + * keeping the decoded word in a temporary is faster than decoding + * it again. + */ +#if defined __GNUC__ +#if SPH_64_TRUE +#define SPH_DETECT_PPC64_GCC 1 +#else +#define SPH_DETECT_PPC32_GCC 1 +#endif +#endif + +#if defined __BIG_ENDIAN__ || defined _BIG_ENDIAN +#define SPH_DETECT_BIG_ENDIAN 1 +#elif defined __LITTLE_ENDIAN__ || defined _LITTLE_ENDIAN +#define SPH_DETECT_LITTLE_ENDIAN 1 +#endif + +/* + * Itanium, 64-bit. + */ +#elif defined __ia64 || defined __ia64__ \ + || defined __itanium__ || defined _M_IA64 + +#if defined __BIG_ENDIAN__ || defined _BIG_ENDIAN +#define SPH_DETECT_BIG_ENDIAN 1 +#else +#define SPH_DETECT_LITTLE_ENDIAN 1 +#endif +#if defined __LP64__ || defined _LP64 +#define SPH_DETECT_UPTR sph_u64 +#else +#define SPH_DETECT_UPTR sph_u32 +#endif + +#endif + +#if defined SPH_DETECT_SPARCV9_GCC_32 || defined SPH_DETECT_SPARCV9_GCC_64 +#define SPH_DETECT_SPARCV9_GCC 1 +#endif + +#if defined SPH_DETECT_UNALIGNED && !defined SPH_UNALIGNED +#define SPH_UNALIGNED SPH_DETECT_UNALIGNED +#endif +#if defined SPH_DETECT_UPTR && !defined SPH_UPTR +#define SPH_UPTR SPH_DETECT_UPTR +#endif +#if defined SPH_DETECT_LITTLE_ENDIAN && !defined SPH_LITTLE_ENDIAN +#define SPH_LITTLE_ENDIAN SPH_DETECT_LITTLE_ENDIAN +#endif +#if defined SPH_DETECT_BIG_ENDIAN && !defined SPH_BIG_ENDIAN +#define SPH_BIG_ENDIAN SPH_DETECT_BIG_ENDIAN +#endif +#if defined SPH_DETECT_LITTLE_FAST && !defined SPH_LITTLE_FAST +#define SPH_LITTLE_FAST SPH_DETECT_LITTLE_FAST +#endif +#if defined SPH_DETECT_BIG_FAST && !defined SPH_BIG_FAST +#define SPH_BIG_FAST SPH_DETECT_BIG_FAST +#endif +#if defined SPH_DETECT_SPARCV9_GCC_32 && !defined SPH_SPARCV9_GCC_32 +#define SPH_SPARCV9_GCC_32 SPH_DETECT_SPARCV9_GCC_32 +#endif +#if defined SPH_DETECT_SPARCV9_GCC_64 && !defined SPH_SPARCV9_GCC_64 +#define SPH_SPARCV9_GCC_64 SPH_DETECT_SPARCV9_GCC_64 +#endif +#if defined SPH_DETECT_SPARCV9_GCC && !defined SPH_SPARCV9_GCC +#define SPH_SPARCV9_GCC SPH_DETECT_SPARCV9_GCC +#endif +#if defined SPH_DETECT_I386_GCC && !defined SPH_I386_GCC +#define SPH_I386_GCC SPH_DETECT_I386_GCC +#endif +#if defined SPH_DETECT_I386_MSVC && !defined SPH_I386_MSVC +#define SPH_I386_MSVC SPH_DETECT_I386_MSVC +#endif +#if defined SPH_DETECT_AMD64_GCC && !defined SPH_AMD64_GCC +#define SPH_AMD64_GCC SPH_DETECT_AMD64_GCC +#endif +#if defined SPH_DETECT_AMD64_MSVC && !defined SPH_AMD64_MSVC +#define SPH_AMD64_MSVC SPH_DETECT_AMD64_MSVC +#endif +#if defined SPH_DETECT_PPC32_GCC && !defined SPH_PPC32_GCC +#define SPH_PPC32_GCC SPH_DETECT_PPC32_GCC +#endif +#if defined SPH_DETECT_PPC64_GCC && !defined SPH_PPC64_GCC +#define SPH_PPC64_GCC SPH_DETECT_PPC64_GCC +#endif + +#if SPH_LITTLE_ENDIAN && !defined SPH_LITTLE_FAST +#define SPH_LITTLE_FAST 1 +#endif +#if SPH_BIG_ENDIAN && !defined SPH_BIG_FAST +#define SPH_BIG_FAST 1 +#endif + +#if defined SPH_UPTR && !(SPH_LITTLE_ENDIAN || SPH_BIG_ENDIAN) +#error SPH_UPTR defined, but endianness is not known. +#endif + +#if SPH_I386_GCC && !SPH_NO_ASM + +/* + * On x86 32-bit, with gcc, we use the bswapl opcode to byte-swap 32-bit + * values. + */ + +static SPH_INLINE sph_u32 +sph_bswap32(sph_u32 x) +{ + __asm__ __volatile__ ("bswapl %0" : "=r" (x) : "0" (x)); + return x; +} + +#if SPH_64 + +static SPH_INLINE sph_u64 +sph_bswap64(sph_u64 x) +{ + return ((sph_u64)sph_bswap32((sph_u32)x) << 32) + | (sph_u64)sph_bswap32((sph_u32)(x >> 32)); +} + +#endif + +#elif SPH_AMD64_GCC && !SPH_NO_ASM + +/* + * On x86 64-bit, with gcc, we use the bswapl opcode to byte-swap 32-bit + * and 64-bit values. + */ + +static SPH_INLINE sph_u32 +sph_bswap32(sph_u32 x) +{ + __asm__ __volatile__ ("bswapl %0" : "=r" (x) : "0" (x)); + return x; +} + +#if SPH_64 + +static SPH_INLINE sph_u64 +sph_bswap64(sph_u64 x) +{ + __asm__ __volatile__ ("bswapq %0" : "=r" (x) : "0" (x)); + return x; +} + +#endif + +/* + * Disabled code. Apparently, Microsoft Visual C 2005 is smart enough + * to generate proper opcodes for endianness swapping with the pure C + * implementation below. + * + +#elif SPH_I386_MSVC && !SPH_NO_ASM + +static __inline sph_u32 __declspec(naked) __fastcall +sph_bswap32(sph_u32 x) +{ + __asm { + bswap ecx + mov eax,ecx + ret + } +} + +#if SPH_64 + +static SPH_INLINE sph_u64 +sph_bswap64(sph_u64 x) +{ + return ((sph_u64)sph_bswap32((sph_u32)x) << 32) + | (sph_u64)sph_bswap32((sph_u32)(x >> 32)); +} + +#endif + + * + * [end of disabled code] + */ + +#else + +static SPH_INLINE sph_u32 +sph_bswap32(sph_u32 x) +{ + x = SPH_T32((x << 16) | (x >> 16)); + x = ((x & SPH_C32(0xFF00FF00)) >> 8) + | ((x & SPH_C32(0x00FF00FF)) << 8); + return x; +} + +#if SPH_64 + +/** + * Byte-swap a 64-bit value. + * + * @param x the input value + * @return the byte-swapped value + */ +static SPH_INLINE sph_u64 +sph_bswap64(sph_u64 x) +{ + x = SPH_T64((x << 32) | (x >> 32)); + x = ((x & SPH_C64(0xFFFF0000FFFF0000)) >> 16) + | ((x & SPH_C64(0x0000FFFF0000FFFF)) << 16); + x = ((x & SPH_C64(0xFF00FF00FF00FF00)) >> 8) + | ((x & SPH_C64(0x00FF00FF00FF00FF)) << 8); + return x; +} + +#endif + +#endif + +#if SPH_SPARCV9_GCC && !SPH_NO_ASM + +/* + * On UltraSPARC systems, native ordering is big-endian, but it is + * possible to perform little-endian read accesses by specifying the + * address space 0x88 (ASI_PRIMARY_LITTLE). Basically, either we use + * the opcode "lda [%reg]0x88,%dst", where %reg is the register which + * contains the source address and %dst is the destination register, + * or we use "lda [%reg+imm]%asi,%dst", which uses the %asi register + * to get the address space name. The latter format is better since it + * combines an addition and the actual access in a single opcode; but + * it requires the setting (and subsequent resetting) of %asi, which is + * slow. Some operations (i.e. MD5 compression function) combine many + * successive little-endian read accesses, which may share the same + * %asi setting. The macros below contain the appropriate inline + * assembly. + */ + +#define SPH_SPARCV9_SET_ASI \ + sph_u32 sph_sparcv9_asi; \ + __asm__ __volatile__ ( \ + "rd %%asi,%0\n\twr %%g0,0x88,%%asi" : "=r" (sph_sparcv9_asi)); + +#define SPH_SPARCV9_RESET_ASI \ + __asm__ __volatile__ ("wr %%g0,%0,%%asi" : : "r" (sph_sparcv9_asi)); + +#define SPH_SPARCV9_DEC32LE(base, idx) ({ \ + sph_u32 sph_sparcv9_tmp; \ + __asm__ __volatile__ ("lda [%1+" #idx "*4]%%asi,%0" \ + : "=r" (sph_sparcv9_tmp) : "r" (base)); \ + sph_sparcv9_tmp; \ + }) + +#endif + +static SPH_INLINE void +sph_enc16be(void *dst, unsigned val) +{ + ((unsigned char *)dst)[0] = (val >> 8); + ((unsigned char *)dst)[1] = val; +} + +static SPH_INLINE unsigned +sph_dec16be(const void *src) +{ + return ((unsigned)(((const unsigned char *)src)[0]) << 8) + | (unsigned)(((const unsigned char *)src)[1]); +} + +static SPH_INLINE void +sph_enc16le(void *dst, unsigned val) +{ + ((unsigned char *)dst)[0] = val; + ((unsigned char *)dst)[1] = val >> 8; +} + +static SPH_INLINE unsigned +sph_dec16le(const void *src) +{ + return (unsigned)(((const unsigned char *)src)[0]) + | ((unsigned)(((const unsigned char *)src)[1]) << 8); +} + +/** + * Encode a 32-bit value into the provided buffer (big endian convention). + * + * @param dst the destination buffer + * @param val the 32-bit value to encode + */ +static SPH_INLINE void +sph_enc32be(void *dst, sph_u32 val) +{ +#if defined SPH_UPTR +#if SPH_UNALIGNED +#if SPH_LITTLE_ENDIAN + val = sph_bswap32(val); +#endif + *(sph_u32 *)dst = val; +#else + if (((SPH_UPTR)dst & 3) == 0) { +#if SPH_LITTLE_ENDIAN + val = sph_bswap32(val); +#endif + *(sph_u32 *)dst = val; + } else { + ((unsigned char *)dst)[0] = (val >> 24); + ((unsigned char *)dst)[1] = (val >> 16); + ((unsigned char *)dst)[2] = (val >> 8); + ((unsigned char *)dst)[3] = val; + } +#endif +#else + ((unsigned char *)dst)[0] = (val >> 24); + ((unsigned char *)dst)[1] = (val >> 16); + ((unsigned char *)dst)[2] = (val >> 8); + ((unsigned char *)dst)[3] = val; +#endif +} + +/** + * Encode a 32-bit value into the provided buffer (big endian convention). + * The destination buffer must be properly aligned. + * + * @param dst the destination buffer (32-bit aligned) + * @param val the value to encode + */ +static SPH_INLINE void +sph_enc32be_aligned(void *dst, sph_u32 val) +{ +#if SPH_LITTLE_ENDIAN + *(sph_u32 *)dst = sph_bswap32(val); +#elif SPH_BIG_ENDIAN + *(sph_u32 *)dst = val; +#else + ((unsigned char *)dst)[0] = (val >> 24); + ((unsigned char *)dst)[1] = (val >> 16); + ((unsigned char *)dst)[2] = (val >> 8); + ((unsigned char *)dst)[3] = val; +#endif +} + +/** + * Decode a 32-bit value from the provided buffer (big endian convention). + * + * @param src the source buffer + * @return the decoded value + */ +static SPH_INLINE sph_u32 +sph_dec32be(const void *src) +{ +#if defined SPH_UPTR +#if SPH_UNALIGNED +#if SPH_LITTLE_ENDIAN + return sph_bswap32(*(const sph_u32 *)src); +#else + return *(const sph_u32 *)src; +#endif +#else + if (((SPH_UPTR)src & 3) == 0) { +#if SPH_LITTLE_ENDIAN + return sph_bswap32(*(const sph_u32 *)src); +#else + return *(const sph_u32 *)src; +#endif + } else { + return ((sph_u32)(((const unsigned char *)src)[0]) << 24) + | ((sph_u32)(((const unsigned char *)src)[1]) << 16) + | ((sph_u32)(((const unsigned char *)src)[2]) << 8) + | (sph_u32)(((const unsigned char *)src)[3]); + } +#endif +#else + return ((sph_u32)(((const unsigned char *)src)[0]) << 24) + | ((sph_u32)(((const unsigned char *)src)[1]) << 16) + | ((sph_u32)(((const unsigned char *)src)[2]) << 8) + | (sph_u32)(((const unsigned char *)src)[3]); +#endif +} + +/** + * Decode a 32-bit value from the provided buffer (big endian convention). + * The source buffer must be properly aligned. + * + * @param src the source buffer (32-bit aligned) + * @return the decoded value + */ +static SPH_INLINE sph_u32 +sph_dec32be_aligned(const void *src) +{ +#if SPH_LITTLE_ENDIAN + return sph_bswap32(*(const sph_u32 *)src); +#elif SPH_BIG_ENDIAN + return *(const sph_u32 *)src; +#else + return ((sph_u32)(((const unsigned char *)src)[0]) << 24) + | ((sph_u32)(((const unsigned char *)src)[1]) << 16) + | ((sph_u32)(((const unsigned char *)src)[2]) << 8) + | (sph_u32)(((const unsigned char *)src)[3]); +#endif +} + +/** + * Encode a 32-bit value into the provided buffer (little endian convention). + * + * @param dst the destination buffer + * @param val the 32-bit value to encode + */ +static SPH_INLINE void +sph_enc32le(void *dst, sph_u32 val) +{ +#if defined SPH_UPTR +#if SPH_UNALIGNED +#if SPH_BIG_ENDIAN + val = sph_bswap32(val); +#endif + *(sph_u32 *)dst = val; +#else + if (((SPH_UPTR)dst & 3) == 0) { +#if SPH_BIG_ENDIAN + val = sph_bswap32(val); +#endif + *(sph_u32 *)dst = val; + } else { + ((unsigned char *)dst)[0] = val; + ((unsigned char *)dst)[1] = (val >> 8); + ((unsigned char *)dst)[2] = (val >> 16); + ((unsigned char *)dst)[3] = (val >> 24); + } +#endif +#else + ((unsigned char *)dst)[0] = val; + ((unsigned char *)dst)[1] = (val >> 8); + ((unsigned char *)dst)[2] = (val >> 16); + ((unsigned char *)dst)[3] = (val >> 24); +#endif +} + +/** + * Encode a 32-bit value into the provided buffer (little endian convention). + * The destination buffer must be properly aligned. + * + * @param dst the destination buffer (32-bit aligned) + * @param val the value to encode + */ +static SPH_INLINE void +sph_enc32le_aligned(void *dst, sph_u32 val) +{ +#if SPH_LITTLE_ENDIAN + *(sph_u32 *)dst = val; +#elif SPH_BIG_ENDIAN + *(sph_u32 *)dst = sph_bswap32(val); +#else + ((unsigned char *)dst)[0] = val; + ((unsigned char *)dst)[1] = (val >> 8); + ((unsigned char *)dst)[2] = (val >> 16); + ((unsigned char *)dst)[3] = (val >> 24); +#endif +} + +/** + * Decode a 32-bit value from the provided buffer (little endian convention). + * + * @param src the source buffer + * @return the decoded value + */ +static SPH_INLINE sph_u32 +sph_dec32le(const void *src) +{ +#if defined SPH_UPTR +#if SPH_UNALIGNED +#if SPH_BIG_ENDIAN + return sph_bswap32(*(const sph_u32 *)src); +#else + return *(const sph_u32 *)src; +#endif +#else + if (((SPH_UPTR)src & 3) == 0) { +#if SPH_BIG_ENDIAN +#if SPH_SPARCV9_GCC && !SPH_NO_ASM + sph_u32 tmp; + + /* + * "__volatile__" is needed here because without it, + * gcc-3.4.3 miscompiles the code and performs the + * access before the test on the address, thus triggering + * a bus error... + */ + __asm__ __volatile__ ( + "lda [%1]0x88,%0" : "=r" (tmp) : "r" (src)); + return tmp; +/* + * On PowerPC, this turns out not to be worth the effort: the inline + * assembly makes GCC optimizer uncomfortable, which tends to nullify + * the decoding gains. + * + * For most hash functions, using this inline assembly trick changes + * hashing speed by less than 5% and often _reduces_ it. The biggest + * gains are for MD4 (+11%) and CubeHash (+30%). For all others, it is + * less then 10%. The speed gain on CubeHash is probably due to the + * chronic shortage of registers that CubeHash endures; for the other + * functions, the generic code appears to be efficient enough already. + * +#elif (SPH_PPC32_GCC || SPH_PPC64_GCC) && !SPH_NO_ASM + sph_u32 tmp; + + __asm__ __volatile__ ( + "lwbrx %0,0,%1" : "=r" (tmp) : "r" (src)); + return tmp; + */ +#else + return sph_bswap32(*(const sph_u32 *)src); +#endif +#else + return *(const sph_u32 *)src; +#endif + } else { + return (sph_u32)(((const unsigned char *)src)[0]) + | ((sph_u32)(((const unsigned char *)src)[1]) << 8) + | ((sph_u32)(((const unsigned char *)src)[2]) << 16) + | ((sph_u32)(((const unsigned char *)src)[3]) << 24); + } +#endif +#else + return (sph_u32)(((const unsigned char *)src)[0]) + | ((sph_u32)(((const unsigned char *)src)[1]) << 8) + | ((sph_u32)(((const unsigned char *)src)[2]) << 16) + | ((sph_u32)(((const unsigned char *)src)[3]) << 24); +#endif +} + +/** + * Decode a 32-bit value from the provided buffer (little endian convention). + * The source buffer must be properly aligned. + * + * @param src the source buffer (32-bit aligned) + * @return the decoded value + */ +static SPH_INLINE sph_u32 +sph_dec32le_aligned(const void *src) +{ +#if SPH_LITTLE_ENDIAN + return *(const sph_u32 *)src; +#elif SPH_BIG_ENDIAN +#if SPH_SPARCV9_GCC && !SPH_NO_ASM + sph_u32 tmp; + + __asm__ __volatile__ ("lda [%1]0x88,%0" : "=r" (tmp) : "r" (src)); + return tmp; +/* + * Not worth it generally. + * +#elif (SPH_PPC32_GCC || SPH_PPC64_GCC) && !SPH_NO_ASM + sph_u32 tmp; + + __asm__ __volatile__ ("lwbrx %0,0,%1" : "=r" (tmp) : "r" (src)); + return tmp; + */ +#else + return sph_bswap32(*(const sph_u32 *)src); +#endif +#else + return (sph_u32)(((const unsigned char *)src)[0]) + | ((sph_u32)(((const unsigned char *)src)[1]) << 8) + | ((sph_u32)(((const unsigned char *)src)[2]) << 16) + | ((sph_u32)(((const unsigned char *)src)[3]) << 24); +#endif +} + +#if SPH_64 + +/** + * Encode a 64-bit value into the provided buffer (big endian convention). + * + * @param dst the destination buffer + * @param val the 64-bit value to encode + */ +static SPH_INLINE void +sph_enc64be(void *dst, sph_u64 val) +{ +#if defined SPH_UPTR +#if SPH_UNALIGNED +#if SPH_LITTLE_ENDIAN + val = sph_bswap64(val); +#endif + *(sph_u64 *)dst = val; +#else + if (((SPH_UPTR)dst & 7) == 0) { +#if SPH_LITTLE_ENDIAN + val = sph_bswap64(val); +#endif + *(sph_u64 *)dst = val; + } else { + ((unsigned char *)dst)[0] = (val >> 56); + ((unsigned char *)dst)[1] = (val >> 48); + ((unsigned char *)dst)[2] = (val >> 40); + ((unsigned char *)dst)[3] = (val >> 32); + ((unsigned char *)dst)[4] = (val >> 24); + ((unsigned char *)dst)[5] = (val >> 16); + ((unsigned char *)dst)[6] = (val >> 8); + ((unsigned char *)dst)[7] = val; + } +#endif +#else + ((unsigned char *)dst)[0] = (val >> 56); + ((unsigned char *)dst)[1] = (val >> 48); + ((unsigned char *)dst)[2] = (val >> 40); + ((unsigned char *)dst)[3] = (val >> 32); + ((unsigned char *)dst)[4] = (val >> 24); + ((unsigned char *)dst)[5] = (val >> 16); + ((unsigned char *)dst)[6] = (val >> 8); + ((unsigned char *)dst)[7] = val; +#endif +} + +/** + * Encode a 64-bit value into the provided buffer (big endian convention). + * The destination buffer must be properly aligned. + * + * @param dst the destination buffer (64-bit aligned) + * @param val the value to encode + */ +static SPH_INLINE void +sph_enc64be_aligned(void *dst, sph_u64 val) +{ +#if SPH_LITTLE_ENDIAN + *(sph_u64 *)dst = sph_bswap64(val); +#elif SPH_BIG_ENDIAN + *(sph_u64 *)dst = val; +#else + ((unsigned char *)dst)[0] = (val >> 56); + ((unsigned char *)dst)[1] = (val >> 48); + ((unsigned char *)dst)[2] = (val >> 40); + ((unsigned char *)dst)[3] = (val >> 32); + ((unsigned char *)dst)[4] = (val >> 24); + ((unsigned char *)dst)[5] = (val >> 16); + ((unsigned char *)dst)[6] = (val >> 8); + ((unsigned char *)dst)[7] = val; +#endif +} + +/** + * Decode a 64-bit value from the provided buffer (big endian convention). + * + * @param src the source buffer + * @return the decoded value + */ +static SPH_INLINE sph_u64 +sph_dec64be(const void *src) +{ +#if defined SPH_UPTR +#if SPH_UNALIGNED +#if SPH_LITTLE_ENDIAN + return sph_bswap64(*(const sph_u64 *)src); +#else + return *(const sph_u64 *)src; +#endif +#else + if (((SPH_UPTR)src & 7) == 0) { +#if SPH_LITTLE_ENDIAN + return sph_bswap64(*(const sph_u64 *)src); +#else + return *(const sph_u64 *)src; +#endif + } else { + return ((sph_u64)(((const unsigned char *)src)[0]) << 56) + | ((sph_u64)(((const unsigned char *)src)[1]) << 48) + | ((sph_u64)(((const unsigned char *)src)[2]) << 40) + | ((sph_u64)(((const unsigned char *)src)[3]) << 32) + | ((sph_u64)(((const unsigned char *)src)[4]) << 24) + | ((sph_u64)(((const unsigned char *)src)[5]) << 16) + | ((sph_u64)(((const unsigned char *)src)[6]) << 8) + | (sph_u64)(((const unsigned char *)src)[7]); + } +#endif +#else + return ((sph_u64)(((const unsigned char *)src)[0]) << 56) + | ((sph_u64)(((const unsigned char *)src)[1]) << 48) + | ((sph_u64)(((const unsigned char *)src)[2]) << 40) + | ((sph_u64)(((const unsigned char *)src)[3]) << 32) + | ((sph_u64)(((const unsigned char *)src)[4]) << 24) + | ((sph_u64)(((const unsigned char *)src)[5]) << 16) + | ((sph_u64)(((const unsigned char *)src)[6]) << 8) + | (sph_u64)(((const unsigned char *)src)[7]); +#endif +} + +/** + * Decode a 64-bit value from the provided buffer (big endian convention). + * The source buffer must be properly aligned. + * + * @param src the source buffer (64-bit aligned) + * @return the decoded value + */ +static SPH_INLINE sph_u64 +sph_dec64be_aligned(const void *src) +{ +#if SPH_LITTLE_ENDIAN + return sph_bswap64(*(const sph_u64 *)src); +#elif SPH_BIG_ENDIAN + return *(const sph_u64 *)src; +#else + return ((sph_u64)(((const unsigned char *)src)[0]) << 56) + | ((sph_u64)(((const unsigned char *)src)[1]) << 48) + | ((sph_u64)(((const unsigned char *)src)[2]) << 40) + | ((sph_u64)(((const unsigned char *)src)[3]) << 32) + | ((sph_u64)(((const unsigned char *)src)[4]) << 24) + | ((sph_u64)(((const unsigned char *)src)[5]) << 16) + | ((sph_u64)(((const unsigned char *)src)[6]) << 8) + | (sph_u64)(((const unsigned char *)src)[7]); +#endif +} + +/** + * Encode a 64-bit value into the provided buffer (little endian convention). + * + * @param dst the destination buffer + * @param val the 64-bit value to encode + */ +static SPH_INLINE void +sph_enc64le(void *dst, sph_u64 val) +{ +#if defined SPH_UPTR +#if SPH_UNALIGNED +#if SPH_BIG_ENDIAN + val = sph_bswap64(val); +#endif + *(sph_u64 *)dst = val; +#else + if (((SPH_UPTR)dst & 7) == 0) { +#if SPH_BIG_ENDIAN + val = sph_bswap64(val); +#endif + *(sph_u64 *)dst = val; + } else { + ((unsigned char *)dst)[0] = val; + ((unsigned char *)dst)[1] = (val >> 8); + ((unsigned char *)dst)[2] = (val >> 16); + ((unsigned char *)dst)[3] = (val >> 24); + ((unsigned char *)dst)[4] = (val >> 32); + ((unsigned char *)dst)[5] = (val >> 40); + ((unsigned char *)dst)[6] = (val >> 48); + ((unsigned char *)dst)[7] = (val >> 56); + } +#endif +#else + ((unsigned char *)dst)[0] = val; + ((unsigned char *)dst)[1] = (val >> 8); + ((unsigned char *)dst)[2] = (val >> 16); + ((unsigned char *)dst)[3] = (val >> 24); + ((unsigned char *)dst)[4] = (val >> 32); + ((unsigned char *)dst)[5] = (val >> 40); + ((unsigned char *)dst)[6] = (val >> 48); + ((unsigned char *)dst)[7] = (val >> 56); +#endif +} + +/** + * Encode a 64-bit value into the provided buffer (little endian convention). + * The destination buffer must be properly aligned. + * + * @param dst the destination buffer (64-bit aligned) + * @param val the value to encode + */ +static SPH_INLINE void +sph_enc64le_aligned(void *dst, sph_u64 val) +{ +#if SPH_LITTLE_ENDIAN + *(sph_u64 *)dst = val; +#elif SPH_BIG_ENDIAN + *(sph_u64 *)dst = sph_bswap64(val); +#else + ((unsigned char *)dst)[0] = val; + ((unsigned char *)dst)[1] = (val >> 8); + ((unsigned char *)dst)[2] = (val >> 16); + ((unsigned char *)dst)[3] = (val >> 24); + ((unsigned char *)dst)[4] = (val >> 32); + ((unsigned char *)dst)[5] = (val >> 40); + ((unsigned char *)dst)[6] = (val >> 48); + ((unsigned char *)dst)[7] = (val >> 56); +#endif +} + +/** + * Decode a 64-bit value from the provided buffer (little endian convention). + * + * @param src the source buffer + * @return the decoded value + */ +static SPH_INLINE sph_u64 +sph_dec64le(const void *src) +{ +#if defined SPH_UPTR +#if SPH_UNALIGNED +#if SPH_BIG_ENDIAN + return sph_bswap64(*(const sph_u64 *)src); +#else + return *(const sph_u64 *)src; +#endif +#else + if (((SPH_UPTR)src & 7) == 0) { +#if SPH_BIG_ENDIAN +#if SPH_SPARCV9_GCC_64 && !SPH_NO_ASM + sph_u64 tmp; + + __asm__ __volatile__ ( + "ldxa [%1]0x88,%0" : "=r" (tmp) : "r" (src)); + return tmp; +/* + * Not worth it generally. + * +#elif SPH_PPC32_GCC && !SPH_NO_ASM + return (sph_u64)sph_dec32le_aligned(src) + | ((sph_u64)sph_dec32le_aligned( + (const char *)src + 4) << 32); +#elif SPH_PPC64_GCC && !SPH_NO_ASM + sph_u64 tmp; + + __asm__ __volatile__ ( + "ldbrx %0,0,%1" : "=r" (tmp) : "r" (src)); + return tmp; + */ +#else + return sph_bswap64(*(const sph_u64 *)src); +#endif +#else + return *(const sph_u64 *)src; +#endif + } else { + return (sph_u64)(((const unsigned char *)src)[0]) + | ((sph_u64)(((const unsigned char *)src)[1]) << 8) + | ((sph_u64)(((const unsigned char *)src)[2]) << 16) + | ((sph_u64)(((const unsigned char *)src)[3]) << 24) + | ((sph_u64)(((const unsigned char *)src)[4]) << 32) + | ((sph_u64)(((const unsigned char *)src)[5]) << 40) + | ((sph_u64)(((const unsigned char *)src)[6]) << 48) + | ((sph_u64)(((const unsigned char *)src)[7]) << 56); + } +#endif +#else + return (sph_u64)(((const unsigned char *)src)[0]) + | ((sph_u64)(((const unsigned char *)src)[1]) << 8) + | ((sph_u64)(((const unsigned char *)src)[2]) << 16) + | ((sph_u64)(((const unsigned char *)src)[3]) << 24) + | ((sph_u64)(((const unsigned char *)src)[4]) << 32) + | ((sph_u64)(((const unsigned char *)src)[5]) << 40) + | ((sph_u64)(((const unsigned char *)src)[6]) << 48) + | ((sph_u64)(((const unsigned char *)src)[7]) << 56); +#endif +} + +/** + * Decode a 64-bit value from the provided buffer (little endian convention). + * The source buffer must be properly aligned. + * + * @param src the source buffer (64-bit aligned) + * @return the decoded value + */ +static SPH_INLINE sph_u64 +sph_dec64le_aligned(const void *src) +{ +#if SPH_LITTLE_ENDIAN + return *(const sph_u64 *)src; +#elif SPH_BIG_ENDIAN +#if SPH_SPARCV9_GCC_64 && !SPH_NO_ASM + sph_u64 tmp; + + __asm__ __volatile__ ("ldxa [%1]0x88,%0" : "=r" (tmp) : "r" (src)); + return tmp; +/* + * Not worth it generally. + * +#elif SPH_PPC32_GCC && !SPH_NO_ASM + return (sph_u64)sph_dec32le_aligned(src) + | ((sph_u64)sph_dec32le_aligned((const char *)src + 4) << 32); +#elif SPH_PPC64_GCC && !SPH_NO_ASM + sph_u64 tmp; + + __asm__ __volatile__ ("ldbrx %0,0,%1" : "=r" (tmp) : "r" (src)); + return tmp; + */ +#else + return sph_bswap64(*(const sph_u64 *)src); +#endif +#else + return (sph_u64)(((const unsigned char *)src)[0]) + | ((sph_u64)(((const unsigned char *)src)[1]) << 8) + | ((sph_u64)(((const unsigned char *)src)[2]) << 16) + | ((sph_u64)(((const unsigned char *)src)[3]) << 24) + | ((sph_u64)(((const unsigned char *)src)[4]) << 32) + | ((sph_u64)(((const unsigned char *)src)[5]) << 40) + | ((sph_u64)(((const unsigned char *)src)[6]) << 48) + | ((sph_u64)(((const unsigned char *)src)[7]) << 56); +#endif +} + +#endif + +#endif /* Doxygen excluded block */ + +#endif diff --git a/exlib/lyra2z-py/test.py b/exlib/lyra2z-py/test.py new file mode 100644 index 000000000000..3d27ebeb727e --- /dev/null +++ b/exlib/lyra2z-py/test.py @@ -0,0 +1,12 @@ +import lyra2z_hash +import weakref +import binascii +import StringIO + +from binascii import unhexlify, hexlify + +teststart = '700000005d385ba114d079971b29a9418fd0549e7d68a95c7f168621a314201000000000578586d149fd07b22f3a8a347c516de7052f034d2b76ff68e0d6ecff9b77a45489e3fd511732011df0731000'; +testbin = unhexlify(teststart) +hash_bin = lyra2z_hash.getPoWHash(testbin) + +print(hexlify(hash_bin)) diff --git a/gui/kivy/Makefile b/gui/kivy/Makefile index e616f9d1a1ef..34bab6eeb483 100644 --- a/gui/kivy/Makefile +++ b/gui/kivy/Makefile @@ -10,7 +10,7 @@ prepare: # running pre build setup @cp tools/buildozer.spec ../../buildozer.spec # copy electrum to main.py - @cp ../../electrum ../../main.py + @cp ../../electrum-xzc ../../main.py @-if [ ! -d "../../.buildozer" ];then \ cd ../..; buildozer android debug;\ cp -f gui/kivy/tools/blacklist.txt .buildozer/android/platform/python-for-android/src/blacklist.txt;\ diff --git a/gui/kivy/i18n.py b/gui/kivy/i18n.py index e0be39082c8a..e1c09df4ac1a 100644 --- a/gui/kivy/i18n.py +++ b/gui/kivy/i18n.py @@ -35,7 +35,7 @@ def bind(label): @staticmethod def switch_lang(lang): # get the right locales directory, and instanciate a gettext - from electrum.i18n import LOCALE_DIR + from electrum_xzc.i18n import LOCALE_DIR locales = gettext.translation('electrum', LOCALE_DIR, languages=[lang], fallback=True) _.lang = locales.gettext for label in _.observers: diff --git a/gui/kivy/main.kv b/gui/kivy/main.kv index 853ddd94e792..212f073e99a8 100644 --- a/gui/kivy/main.kv +++ b/gui/kivy/main.kv @@ -1,7 +1,7 @@ #:import Clock kivy.clock.Clock #:import Window kivy.core.window.Window #:import Factory kivy.factory.Factory -#:import _ electrum_gui.kivy.i18n._ +#:import _ electrum_xzc_gui.kivy.i18n._ ########################### diff --git a/gui/kivy/main_window.py b/gui/kivy/main_window.py index 020388fadcd1..8c3ca3e3071c 100644 --- a/gui/kivy/main_window.py +++ b/gui/kivy/main_window.py @@ -7,15 +7,15 @@ from decimal import Decimal import threading -import electrum -from electrum.bitcoin import TYPE_ADDRESS -from electrum import WalletStorage, Wallet -from electrum_gui.kivy.i18n import _ -from electrum.paymentrequest import InvoiceStore -from electrum.util import profiler, InvalidPassword -from electrum.plugins import run_hook -from electrum.util import format_satoshis, format_satoshis_plain -from electrum.paymentrequest import PR_UNPAID, PR_PAID, PR_UNKNOWN, PR_EXPIRED +import electrum_xzc as electrum +from electrum_xzc.bitcoin import TYPE_ADDRESS +from electrum_xzc import WalletStorage, Wallet +from electrum_xzc_gui.kivy.i18n import _ +from electrum_xzc.paymentrequest import InvoiceStore +from electrum_xzc.util import profiler, InvalidPassword +from electrum_xzc.plugins import run_hook +from electrum_xzc.util import format_satoshis, format_satoshis_plain +from electrum_xzc.paymentrequest import PR_UNPAID, PR_PAID, PR_UNKNOWN, PR_EXPIRED from kivy.app import App from kivy.core.window import Window @@ -30,10 +30,10 @@ from kivy.lang import Builder ## lazy imports for factory so that widgets can be used in kv -#Factory.register('InstallWizard', module='electrum_gui.kivy.uix.dialogs.installwizard') -#Factory.register('InfoBubble', module='electrum_gui.kivy.uix.dialogs') -#Factory.register('OutputList', module='electrum_gui.kivy.uix.dialogs') -#Factory.register('OutputItem', module='electrum_gui.kivy.uix.dialogs') +#Factory.register('InstallWizard', module='electrum_xzc_gui.kivy.uix.dialogs.installwizard') +#Factory.register('InfoBubble', module='electrum_xzc_gui.kivy.uix.dialogs') +#Factory.register('OutputList', module='electrum_xzc_gui.kivy.uix.dialogs') +#Factory.register('OutputItem', module='electrum_xzc_gui.kivy.uix.dialogs') from .uix.dialogs.installwizard import InstallWizard from .uix.dialogs import InfoBubble @@ -48,14 +48,14 @@ # register widget cache for keeping memory down timeout to forever to cache # the data -Cache.register('electrum_widgets', timeout=0) +Cache.register('electrum_xzc_widgets', timeout=0) from kivy.uix.screenmanager import Screen from kivy.uix.tabbedpanel import TabbedPanel from kivy.uix.label import Label from kivy.core.clipboard import Clipboard -Factory.register('TabbedCarousel', module='electrum_gui.kivy.uix.screens') +Factory.register('TabbedCarousel', module='electrum_xzc_gui.kivy.uix.screens') # Register fonts without this you won't be able to use bold/italic... # inside markup. @@ -67,7 +67,7 @@ 'gui/kivy/data/fonts/Roboto-Bold.ttf') -from electrum.util import base_units +from electrum_xzc.util import base_units class ElectrumWindow(App): @@ -95,7 +95,7 @@ def choose_server_dialog(self, popup): from .uix.dialogs.choice_dialog import ChoiceDialog protocol = 's' def cb2(host): - from electrum.bitcoin import NetworkConstants + from electrum_xzc.bitcoin import NetworkConstants pp = servers.get(host, NetworkConstants.DEFAULT_PORTS) port = pp.get(protocol, '') popup.ids.host.text = host @@ -132,7 +132,7 @@ def set_URI(self, uri): self.send_screen.set_URI(uri) def on_new_intent(self, intent): - if intent.getScheme() != 'bitcoin': + if intent.getScheme() != 'zcoin': return uri = intent.getDataString() self.set_URI(uri) @@ -154,7 +154,7 @@ def on_history(self, d): self._trigger_update_history() def _get_bu(self): - return self.electrum_config.get('base_unit', 'mBTC') + return self.electrum_config.get('base_unit', 'XZC') def _set_bu(self, value): assert value in base_units.keys() @@ -241,7 +241,7 @@ def __init__(self, **kwargs): App.__init__(self)#, **kwargs) - title = _('Electrum App') + title = _('Electrum-XZC App') self.electrum_config = config = kwargs.get('config', None) self.language = config.get('language', 'en') self.network = network = kwargs.get('network', None) @@ -295,17 +295,17 @@ def on_pr(self, pr): self.send_screen.do_clear() def on_qr(self, data): - from electrum.bitcoin import base_decode, is_address + from electrum_xzc.bitcoin import base_decode, is_address data = data.strip() if is_address(data): self.set_URI(data) return - if data.startswith('bitcoin:'): + if data.startswith('zcoin:'): self.set_URI(data) return # try to decode transaction - from electrum.transaction import Transaction - from electrum.util import bh2u + from electrum_xzc.transaction import Transaction + from electrum_xzc.util import bh2u try: text = bh2u(base_decode(data, None, base=43)) tx = Transaction(text) @@ -342,7 +342,7 @@ def show_request(self, addr): self.receive_screen.screen.address = addr def show_pr_details(self, req, status, is_invoice): - from electrum.util import format_time + from electrum_xzc.util import format_time requestor = req.get('requestor') exp = req.get('exp') memo = req.get('memo') @@ -364,7 +364,7 @@ def show_pr_details(self, req, status, is_invoice): popup.open() def show_addr_details(self, req, status): - from electrum.util import format_time + from electrum_xzc.util import format_time fund = req.get('fund') isaddr = 'y' popup = Builder.load_file('gui/kivy/uix/ui_screens/invoice.kv') @@ -563,13 +563,13 @@ def init_ui(self): #setup lazy imports for mainscreen Factory.register('AnimatedPopup', - module='electrum_gui.kivy.uix.dialogs') + module='electrum_xzc_gui.kivy.uix.dialogs') Factory.register('QRCodeWidget', - module='electrum_gui.kivy.uix.qrcodewidget') + module='electrum_xzc_gui.kivy.uix.qrcodewidget') # preload widgets. Remove this if you want to load the widgets on demand - #Cache.append('electrum_widgets', 'AnimatedPopup', Factory.AnimatedPopup()) - #Cache.append('electrum_widgets', 'QRCodeWidget', Factory.QRCodeWidget()) + #Cache.append('electrum_xzc_widgets', 'AnimatedPopup', Factory.AnimatedPopup()) + #Cache.append('electrum_xzc_widgets', 'QRCodeWidget', Factory.QRCodeWidget()) # load and focus the ui self.root.manager = self.root.ids['manager'] @@ -581,7 +581,7 @@ def init_ui(self): self.receive_screen = None self.requests_screen = None self.address_screen = None - self.icon = "icons/electrum.png" + self.icon = "icons/electrum-xzc.png" self.tabs = self.root.ids['tabs'] def update_interfaces(self, dt): @@ -631,7 +631,7 @@ def update_status(self, *dt): if not self.wallet.up_to_date or server_height == 0: status = _("Synchronizing...") elif server_lag > 1: - status = _("Server lagging ({} blocks)").format(server_lag) + status = _("Server lagging (%d blocks)"%server_lag) else: c, u, x = self.wallet.get_balance() text = self.format_amount(c+x+u) @@ -670,8 +670,8 @@ def notify(self, message): from plyer import notification icon = (os.path.dirname(os.path.realpath(__file__)) + '/../../' + self.icon) - notification.notify('Electrum', message, - app_icon=icon, app_name='Electrum') + notification.notify('Electrum-XZC', message, + app_icon=icon, app_name='Electrum-XZC') except ImportError: Logger.Error('Notification: needs plyer; `sudo pip install plyer`') @@ -846,7 +846,7 @@ def delete_wallet(self): def _delete_wallet(self, b): if b: basename = os.path.basename(self.wallet.storage.path) - self.protected(_("Enter your PIN code to confirm deletion of {}").format(basename), self.__delete_wallet, ()) + self.protected(_("Enter your PIN code to confirm deletion of %s") % basename, self.__delete_wallet, ()) def __delete_wallet(self, pw): wallet_path = self.get_wallet_path() diff --git a/gui/kivy/nfc_scanner/__init__.py b/gui/kivy/nfc_scanner/__init__.py index fd3d263a3fd4..e2b5deeb6a13 100644 --- a/gui/kivy/nfc_scanner/__init__.py +++ b/gui/kivy/nfc_scanner/__init__.py @@ -41,4 +41,4 @@ def nfc_disable_exchange(self): NFCScanner = core_select_lib('nfc_manager', ( # keep the dummy implementtation as the last one to make it the fallback provider.NFCScanner = core_select_lib('nfc_scanner', ( ('android', 'scanner_android', 'ScannerAndroid'), - ('dummy', 'scanner_dummy', 'ScannerDummy')), True, 'electrum_gui.kivy') + ('dummy', 'scanner_dummy', 'ScannerDummy')), True, 'electrum_xzc_gui.kivy') diff --git a/gui/kivy/nfc_scanner/scanner_android.py b/gui/kivy/nfc_scanner/scanner_android.py index b8f860293238..db89dcd0930d 100644 --- a/gui/kivy/nfc_scanner/scanner_android.py +++ b/gui/kivy/nfc_scanner/scanner_android.py @@ -10,7 +10,7 @@ raise ImportError import threading -from electrum_gui.kivy.nfc_scanner import NFCBase +from electrum_xzc_gui.kivy.nfc_scanner import NFCBase from jnius import autoclass, cast from android.runnable import run_on_ui_thread from android import activity @@ -165,20 +165,20 @@ def nfc_enable(self): def create_AAR(self): '''Create the record responsible for linking our application to the tag. ''' - return NdefRecord.createApplicationRecord(JString("org.electrum.kivy")) + return NdefRecord.createApplicationRecord(JString("org.electrum_xzc.kivy")) def create_TNF_EXTERNAL(self, data): '''Create our actual payload record. ''' if BUILDVERSION >= 14: - domain = "org.electrum" + domain = "org.electrum_xzc" stype = "externalType" extRecord = NdefRecord.createExternal(domain, stype, data) else: # Creating the NdefRecord manually: extRecord = NdefRecord( NdefRecord.TNF_EXTERNAL_TYPE, - "org.electrum:externalType", + "org.electrum_xzc:externalType", '', data) return extRecord @@ -213,7 +213,7 @@ def _nfc_enable_ndef_exchange(self, data): # Create record ndef_record = NdefRecord( NdefRecord.TNF_MIME_MEDIA, - 'org.electrum.kivy', '', data) + 'org.electrum_xzc.kivy', '', data) # Create message ndef_message = NdefMessage([ndef_record]) diff --git a/gui/kivy/nfc_scanner/scanner_dummy.py b/gui/kivy/nfc_scanner/scanner_dummy.py index 1ad2c17a3b24..e1cfadb29aed 100644 --- a/gui/kivy/nfc_scanner/scanner_dummy.py +++ b/gui/kivy/nfc_scanner/scanner_dummy.py @@ -1,6 +1,6 @@ ''' Dummy NFC Provider to be used on desktops in case no other provider is found ''' -from electrum_gui.kivy.nfc_scanner import NFCBase +from electrum_xzc_gui.kivy.nfc_scanner import NFCBase from kivy.clock import Clock from kivy.logger import Logger diff --git a/gui/kivy/tools/bitcoin_intent.xml b/gui/kivy/tools/bitcoin_intent.xml index f433f72c1ef8..b0e66c27628e 100644 --- a/gui/kivy/tools/bitcoin_intent.xml +++ b/gui/kivy/tools/bitcoin_intent.xml @@ -3,5 +3,5 @@ - + diff --git a/gui/kivy/tools/buildozer.spec b/gui/kivy/tools/buildozer.spec index b3679889db6c..957a804fe0f2 100644 --- a/gui/kivy/tools/buildozer.spec +++ b/gui/kivy/tools/buildozer.spec @@ -1,13 +1,13 @@ [app] # (str) Title of your application -title = Electrum +title = Electrum-XZC # (str) Package name -package.name = Electrum +package.name = Electrum_XZC # (str) Package domain (needed for android/ios packaging) -package.domain = org.electrum +package.domain = org.electrum_xzc # (str) Source code where the main.py live source.dir = . diff --git a/gui/kivy/uix/context_menu.py b/gui/kivy/uix/context_menu.py index dee0212af45d..fc4b3f3caac8 100644 --- a/gui/kivy/uix/context_menu.py +++ b/gui/kivy/uix/context_menu.py @@ -8,7 +8,7 @@ from kivy.factory import Factory from kivy.clock import Clock -from electrum_gui.kivy.i18n import _ +from electrum_xzc_gui.kivy.i18n import _ Builder.load_string(''' diff --git a/gui/kivy/uix/dialogs/__init__.py b/gui/kivy/uix/dialogs/__init__.py index c5269f380f1c..eb8b3f97f54e 100644 --- a/gui/kivy/uix/dialogs/__init__.py +++ b/gui/kivy/uix/dialogs/__init__.py @@ -4,7 +4,7 @@ from kivy.properties import NumericProperty, StringProperty, BooleanProperty from kivy.core.window import Window -from electrum_gui.kivy.i18n import _ +from electrum_xzc_gui.kivy.i18n import _ diff --git a/gui/kivy/uix/dialogs/bump_fee_dialog.py b/gui/kivy/uix/dialogs/bump_fee_dialog.py index 1a6dc6228ef9..9f9a7a5e3f78 100644 --- a/gui/kivy/uix/dialogs/bump_fee_dialog.py +++ b/gui/kivy/uix/dialogs/bump_fee_dialog.py @@ -3,8 +3,8 @@ from kivy.properties import ObjectProperty from kivy.lang import Builder -from electrum.util import fee_levels -from electrum_gui.kivy.i18n import _ +from electrum_xzc.util import fee_levels +from electrum_xzc_gui.kivy.i18n import _ Builder.load_string(''' @@ -73,7 +73,7 @@ def __init__(self, app, fee, size, callback): self.callback = callback self.config = app.electrum_config self.fee_step = self.config.max_fee_rate() / 10 - self.dynfees = self.config.is_dynfee() and self.app.network + self.dynfees = self.config.get('dynamic_fees', True) and self.app.network self.ids.old_fee.value = self.app.format_amount_and_units(self.init_fee) self.update_slider() self.update_text() diff --git a/gui/kivy/uix/dialogs/fee_dialog.py b/gui/kivy/uix/dialogs/fee_dialog.py index 1c61c6a21f83..97f3b54686b3 100644 --- a/gui/kivy/uix/dialogs/fee_dialog.py +++ b/gui/kivy/uix/dialogs/fee_dialog.py @@ -3,8 +3,8 @@ from kivy.properties import ObjectProperty from kivy.lang import Builder -from electrum.util import fee_levels -from electrum_gui.kivy.i18n import _ +from electrum_xzc.util import fee_levels +from electrum_xzc_gui.kivy.i18n import _ Builder.load_string(''' @@ -18,17 +18,7 @@ orientation: 'horizontal' size_hint: 1, 0.5 Label: - text: (_('Target') if dynfees.active else _('Fixed rate')) + ':' - Label: - id: fee_target - text: '' - BoxLayout: - orientation: 'horizontal' - size_hint: 1, 0.5 - Label: - text: (_('Current rate') if dynfees.active else _('Estimate')) + ':' - Label: - id: fee_estimate + id: fee_per_kb text: '' Slider: id: slider @@ -42,15 +32,7 @@ text: _('Dynamic Fees') CheckBox: id: dynfees - on_active: root.on_dynfees(self.active) - BoxLayout: - orientation: 'horizontal' - size_hint: 1, 0.5 - Label: - text: _('Use mempool') - CheckBox: - id: mempool - on_active: root.on_mempool(self.active) + on_active: root.on_checkbox(self.active) Widget: size_hint: 1, 1 BoxLayout: @@ -78,44 +60,45 @@ def __init__(self, app, config, callback): self.config = config self.fee_rate = self.config.fee_per_kb() self.callback = callback - self.mempool = self.config.use_mempool_fees() - self.dynfees = self.config.is_dynfee() - self.ids.mempool.active = self.mempool + self.dynfees = self.config.get('dynamic_fees', True) self.ids.dynfees.active = self.dynfees self.update_slider() self.update_text() def update_text(self): value = int(self.ids.slider.value) - target, estimate = self.get_fee_text(value) - self.ids.fee_target.text = target - self.ids.fee_estimate.text = estimate + self.ids.fee_per_kb.text = self.get_fee_text(value) def update_slider(self): slider = self.ids.slider - maxp, pos, fee_rate = self.config.get_fee_slider(self.dynfees, self.mempool) - slider.range = (0, maxp) - slider.step = 1 - slider.value = pos + if self.dynfees: + slider.range = (0, 4) + slider.step = 1 + slider.value = self.config.get('fee_level', 2) + else: + slider.range = (0, 9) + slider.step = 1 + slider.value = self.config.static_fee_index(self.fee_rate) - def get_fee_text(self, pos): - dyn = self.dynfees - mempool = self.mempool - if dyn: - fee_rate = self.config.depth_to_fee(pos) if mempool else self.config.eta_to_fee(pos) + def get_fee_text(self, value): + if self.ids.dynfees.active: + tooltip = fee_levels[value] + if self.config.has_fee_estimates(): + dynfee = self.config.dynfee(value) + tooltip += '\n' + (self.app.format_amount_and_units(dynfee)) + '/kB' else: - fee_rate = self.config.static_fee(pos) - return self.config.get_fee_text(pos, dyn, mempool, fee_rate) + fee_rate = self.config.static_fee(value) + tooltip = self.app.format_amount_and_units(fee_rate) + '/kB' + if self.config.has_fee_estimates(): + i = self.config.reverse_dynfee(fee_rate) + tooltip += '\n' + (_('low fee') if i < 0 else 'Within %d blocks'%i) + return tooltip def on_ok(self): value = int(self.ids.slider.value) self.config.set_key('dynamic_fees', self.dynfees, False) - self.config.set_key('mempool_fees', self.mempool, False) if self.dynfees: - if self.mempool: - self.config.set_key('depth_level', value, True) - else: - self.config.set_key('fee_level', value, True) + self.config.set_key('fee_level', value, True) else: self.config.set_key('fee_per_kb', self.config.static_fee(value), True) self.callback() @@ -123,12 +106,7 @@ def on_ok(self): def on_slider(self, value): self.update_text() - def on_dynfees(self, b): + def on_checkbox(self, b): self.dynfees = b self.update_slider() self.update_text() - - def on_mempool(self, b): - self.mempool = b - self.update_slider() - self.update_text() diff --git a/gui/kivy/uix/dialogs/fx_dialog.py b/gui/kivy/uix/dialogs/fx_dialog.py index 5184679206c1..62af43f5e45e 100644 --- a/gui/kivy/uix/dialogs/fx_dialog.py +++ b/gui/kivy/uix/dialogs/fx_dialog.py @@ -66,7 +66,7 @@ from kivy.uix.widget import Widget from kivy.clock import Clock -from electrum_gui.kivy.i18n import _ +from electrum_xzc_gui.kivy.i18n import _ from functools import partial class FxDialog(Factory.Popup): diff --git a/gui/kivy/uix/dialogs/installwizard.py b/gui/kivy/uix/dialogs/installwizard.py index 651810907cdc..981ceefcc562 100644 --- a/gui/kivy/uix/dialogs/installwizard.py +++ b/gui/kivy/uix/dialogs/installwizard.py @@ -14,7 +14,7 @@ from kivy.clock import Clock from kivy.utils import platform -from electrum.base_wizard import BaseWizard +from electrum_xzc.base_wizard import BaseWizard from . import EventsDialog @@ -28,7 +28,7 @@ Builder.load_string(''' #:import Window kivy.core.window.Window -#:import _ electrum_gui.kivy.i18n._ +#:import _ electrum_xzc_gui.kivy.i18n._ @@ -135,7 +135,7 @@ height: self.minimum_height Label: color: root.text_color - text: _('From {} cosigners').format(n.value) + text: _('From %d cosigners')%n.value Slider: id: n range: 2, 5 @@ -143,7 +143,7 @@ value: 2 Label: color: root.text_color - text: _('Require {} signatures').format(m.value) + text: _('Require %d signatures')%m.value Slider: id: m range: 1, n.value @@ -559,8 +559,8 @@ class RestoreSeedDialog(WizardDialog): def __init__(self, wizard, **kwargs): super(RestoreSeedDialog, self).__init__(wizard, **kwargs) self._test = kwargs['test'] - from electrum.mnemonic import Mnemonic - from electrum.old_mnemonic import words as old_wordlist + from electrum_xzc.mnemonic import Mnemonic + from electrum_xzc.old_mnemonic import words as old_wordlist self.words = set(Mnemonic('en').wordlist).union(set(old_wordlist)) self.ids.text_input_seed.text = test_seed if is_test else '' self.message = _('Please type your seed phrase using the virtual keyboard.') @@ -807,7 +807,7 @@ def password_dialog(self, message, callback): popup.init(message, callback) popup.open() - def request_password(self, run_next, force_disable_encrypt_cb=False): + def request_password(self, run_next): def callback(pin): if pin: self.run('confirm_password', pin, run_next) diff --git a/gui/kivy/uix/dialogs/nfc_transaction.py b/gui/kivy/uix/dialogs/nfc_transaction.py index cb10315e9054..d2003ab19d0f 100644 --- a/gui/kivy/uix/dialogs/nfc_transaction.py +++ b/gui/kivy/uix/dialogs/nfc_transaction.py @@ -8,7 +8,7 @@ def __init__(self, **kwargs): # Delayed Init global NFCSCanner if NFCSCanner is None: - from electrum_gui.kivy.nfc_scanner import NFCScanner + from electrum_xzc_gui.kivy.nfc_scanner import NFCScanner self.scanner = NFCSCanner super(NFCTransactionDialog, self).__init__(**kwargs) @@ -29,4 +29,4 @@ def _start(*l): anim.bind(on_complete=_cmp) _start() return - Animation.cancel_all(sctr) \ No newline at end of file + Animation.cancel_all(sctr) diff --git a/gui/kivy/uix/dialogs/qr_scanner.py b/gui/kivy/uix/dialogs/qr_scanner.py index eeb6061e2ee9..c7aa73ad800a 100644 --- a/gui/kivy/uix/dialogs/qr_scanner.py +++ b/gui/kivy/uix/dialogs/qr_scanner.py @@ -2,7 +2,7 @@ from kivy.factory import Factory from kivy.lang import Builder -Factory.register('QRScanner', module='electrum_gui.kivy.qr_scanner') +Factory.register('QRScanner', module='electrum_xzc_gui.kivy.qr_scanner') class QrScannerDialog(Factory.AnimatedPopup): diff --git a/gui/kivy/uix/dialogs/question.py b/gui/kivy/uix/dialogs/question.py index 3b5b36be643b..dbbef01e50aa 100644 --- a/gui/kivy/uix/dialogs/question.py +++ b/gui/kivy/uix/dialogs/question.py @@ -6,7 +6,7 @@ from kivy.uix.label import Label from kivy.uix.widget import Widget -from electrum_gui.kivy.i18n import _ +from electrum_xzc_gui.kivy.i18n import _ Builder.load_string(''' diff --git a/gui/kivy/uix/dialogs/settings.py b/gui/kivy/uix/dialogs/settings.py index e73f33650466..624e591f0f0e 100644 --- a/gui/kivy/uix/dialogs/settings.py +++ b/gui/kivy/uix/dialogs/settings.py @@ -3,18 +3,18 @@ from kivy.properties import ObjectProperty from kivy.lang import Builder -from electrum.util import base_units -from electrum.i18n import languages -from electrum_gui.kivy.i18n import _ -from electrum.plugins import run_hook -from electrum import coinchooser -from electrum.util import fee_levels +from electrum_xzc.util import base_units +from electrum_xzc.i18n import languages +from electrum_xzc_gui.kivy.i18n import _ +from electrum_xzc.plugins import run_hook +from electrum_xzc import coinchooser +from electrum_xzc.util import fee_levels from .choice_dialog import ChoiceDialog Builder.load_string(''' #:import partial functools.partial -#:import _ electrum_gui.kivy.i18n._ +#:import _ electrum_xzc_gui.kivy.i18n._ id: settings @@ -46,13 +46,13 @@ SettingsItem: bu: app.base_unit title: _('Denomination') + ': ' + self.bu - description: _("Base unit for Bitcoin amounts.") + description: _("Base unit for Zcoin amounts.") action: partial(root.unit_dialog, self) CardSeparator SettingsItem: status: root.fee_status() title: _('Fees') + ': ' + self.status - description: _("Fees paid to the Bitcoin miners.") + description: _("Fees paid to the Zcoin miners.") action: partial(root.fee_dialog, self) CardSeparator SettingsItem: @@ -204,7 +204,10 @@ def callback(status): d.open() def fee_status(self): - return self.config.get_fee_status() + if self.config.get('dynamic_fees', True): + return fee_levels[self.config.get('fee_level', 2)] + else: + return self.app.format_amount_and_units(self.config.fee_per_kb()) + '/kB' def fee_dialog(self, label, dt): if self._fee_dialog is None: diff --git a/gui/kivy/uix/dialogs/tx_dialog.py b/gui/kivy/uix/dialogs/tx_dialog.py index 5339b0d39c01..18d8c31e96b8 100644 --- a/gui/kivy/uix/dialogs/tx_dialog.py +++ b/gui/kivy/uix/dialogs/tx_dialog.py @@ -5,9 +5,9 @@ from kivy.clock import Clock from kivy.uix.label import Label -from electrum_gui.kivy.i18n import _ +from electrum_xzc_gui.kivy.i18n import _ from datetime import datetime -from electrum.util import InvalidPassword +from electrum_xzc.util import InvalidPassword Builder.load_string(''' @@ -112,7 +112,7 @@ def update(self): if timestamp: self.date_str = datetime.fromtimestamp(timestamp).isoformat(' ')[:-3] elif exp_n: - self.date_str = _('Within {} blocks').format(exp_n) if exp_n > 0 else _('unknown (low fee)') + self.date_str = _('Within %d blocks') % exp_n if exp_n > 0 else _('unknown (low fee)') else: self.date_str = '' @@ -171,7 +171,7 @@ def do_broadcast(self): self.app.broadcast(self.tx) def show_qr(self): - from electrum.bitcoin import base_encode, bfh + from electrum_xzc.bitcoin import base_encode, bfh text = bfh(str(self.tx)) text = base_encode(text, base=43) self.app.qr_dialog(_("Raw Transaction"), text) diff --git a/gui/kivy/uix/dialogs/wallets.py b/gui/kivy/uix/dialogs/wallets.py index d7b0469bf551..6e4dfec78325 100644 --- a/gui/kivy/uix/dialogs/wallets.py +++ b/gui/kivy/uix/dialogs/wallets.py @@ -5,7 +5,7 @@ from kivy.properties import ObjectProperty from kivy.lang import Builder -from electrum.util import base_units +from electrum_xzc.util import base_units from ...i18n import _ from .label_dialog import LabelDialog diff --git a/gui/kivy/uix/menus.py b/gui/kivy/uix/menus.py index 6b6efa9a739e..f8c98ac748b7 100644 --- a/gui/kivy/uix/menus.py +++ b/gui/kivy/uix/menus.py @@ -7,7 +7,7 @@ from kivy.properties import ListProperty from kivy.uix.widget import Widget -from electrum_gui.i18n import _ +from electrum_xzc_gui.i18n import _ class ContextMenuItem(Widget): '''abstract class diff --git a/gui/kivy/uix/screens.py b/gui/kivy/uix/screens.py index 0133f789e027..0c71e7ff5f90 100644 --- a/gui/kivy/uix/screens.py +++ b/gui/kivy/uix/screens.py @@ -17,15 +17,15 @@ from kivy.factory import Factory from kivy.utils import platform -from electrum.util import profiler, parse_URI, format_time, InvalidPassword, NotEnoughFunds -from electrum import bitcoin -from electrum.util import timestamp_to_datetime -from electrum.paymentrequest import PR_UNPAID, PR_PAID, PR_UNKNOWN, PR_EXPIRED +from electrum_xzc.util import profiler, parse_URI, format_time, InvalidPassword, NotEnoughFunds +from electrum_xzc import bitcoin +from electrum_xzc.util import timestamp_to_datetime +from electrum_xzc.paymentrequest import PR_UNPAID, PR_PAID, PR_UNKNOWN, PR_EXPIRED from .context_menu import ContextMenu -from electrum_gui.kivy.i18n import _ +from electrum_xzc_gui.kivy.i18n import _ class EmptyLabel(Factory.Label): pass @@ -89,6 +89,7 @@ def show_menu(self, obj): # note: this list needs to be kept in sync with another in qt TX_ICONS = [ + "close", "close", "close", "unconfirmed", @@ -177,11 +178,11 @@ class SendScreen(CScreen): payment_request = None def set_URI(self, text): - import electrum + import electrum_xzc as electrum try: uri = electrum.util.parse_URI(text, self.app.on_pr) except: - self.app.show_info(_("Not a Bitcoin URI")) + self.app.show_info(_("Not a Zcoin URI")) return amount = uri.get('amount') self.screen.address = uri.get('address', '') @@ -219,7 +220,7 @@ def do_save(self): # it sould be already saved return # save address as invoice - from electrum.paymentrequest import make_unsigned_request, PaymentRequest + from electrum_xzc.paymentrequest import make_unsigned_request, PaymentRequest req = {'address':self.screen.address, 'memo':self.screen.message} amount = self.app.get_amount(self.screen.amount) if self.screen.amount else 0 req['amount'] = amount @@ -251,10 +252,10 @@ def do_send(self): else: address = str(self.screen.address) if not address: - self.app.show_error(_('Recipient not specified.') + ' ' + _('Please scan a Bitcoin address or a payment request')) + self.app.show_error(_('Recipient not specified.') + ' ' + _('Please scan a Zcoin address or a payment request')) return if not bitcoin.is_address(address): - self.app.show_error(_('Invalid Bitcoin Address') + ':\n' + address) + self.app.show_error(_('Invalid Zcoin Address') + ':\n' + address) return try: amount = self.app.get_amount(self.screen.amount) @@ -291,7 +292,7 @@ def _do_send(self, amount, message, outputs, rbf): _("Amount to be sent") + ": " + self.app.format_amount_and_units(amount), _("Mining fee") + ": " + self.app.format_amount_and_units(fee), ] - if fee >= config.get('confirm_fee', 100000): + if fee >= config.get('confirm_fee', 1000000): msg.append(_('Warning')+ ': ' + _("The fee for this transaction seems unusually high.")) msg.append(_("Enter your PIN code to proceed")) self.app.protected('\n'.join(msg), self.send_tx, (tx, message)) @@ -355,7 +356,7 @@ def on_address(self, addr): Clock.schedule_once(lambda dt: self.update_qr()) def get_URI(self): - from electrum.util import create_URI + from electrum_xzc.util import create_URI amount = self.screen.amount if amount: a, u = self.screen.amount.split() @@ -371,7 +372,7 @@ def update_qr(self): def do_share(self): uri = self.get_URI() - self.app.do_share(uri, _("Share Bitcoin Request")) + self.app.do_share(uri, _("Share Zcoin Request")) def do_copy(self): uri = self.get_URI() @@ -522,12 +523,7 @@ def get_card(self, addr, balance, is_used, label): def update(self): self.menu_actions = [('Receive', self.do_show), ('Details', self.do_view)] wallet = self.app.wallet - if self.screen.show_change == 0: - _list = wallet.get_receiving_addresses() - elif self.screen.show_change == 1: - _list = wallet.get_change_addresses() - else: - _list = wallet.get_addresses() + _list = wallet.get_change_addresses() if self.screen.show_change else wallet.get_receiving_addresses() search = self.screen.message container = self.screen.ids.search_container container.clear_widgets() diff --git a/gui/kivy/uix/ui_screens/about.kv b/gui/kivy/uix/ui_screens/about.kv index e542b557eb0d..c70ca0936f84 100644 --- a/gui/kivy/uix/ui_screens/about.kv +++ b/gui/kivy/uix/ui_screens/about.kv @@ -1,7 +1,7 @@ -#:import VERSION electrum.version.ELECTRUM_VERSION +#:import VERSION electrum_xzc.version.ELECTRUM_VERSION Popup: - title: _("About Electrum") + title: _("About Electrum-XZC") BoxLayout: orientation: 'vertical' spacing: '10dp' @@ -26,10 +26,10 @@ Popup: size_hint_x: 0.4 TopLabel: markup: True - text: '[color=6666ff][ref=x]https://electrum.org[/ref][/color]' + text: '[color=6666ff][ref=x]https://electrum-xzc.org[/ref][/color]' on_ref_press: import webbrowser - webbrowser.open("https://electrum.org") + webbrowser.open("https://electrum-xzc.org") size_hint_x: 0.6 TopLabel: text: _('Developers') diff --git a/gui/kivy/uix/ui_screens/address.kv b/gui/kivy/uix/ui_screens/address.kv index d0247a3429e4..c0178ec4922b 100644 --- a/gui/kivy/uix/ui_screens/address.kv +++ b/gui/kivy/uix/ui_screens/address.kv @@ -1,4 +1,4 @@ -#:import _ electrum_gui.kivy.i18n._ +#:import _ electrum_xzc_gui.kivy.i18n._ #:import Decimal decimal.Decimal #:set btc_symbol chr(171) #:set mbtc_symbol chr(187) @@ -50,7 +50,7 @@ AddressScreen: name: 'address' message: '' pr_status: 'Pending' - show_change: 0 + show_change: False show_used: 0 on_message: self.parent.update() @@ -70,9 +70,9 @@ AddressScreen: spacing: '5dp' AddressButton: id: search - text: {0:_('Receiving'), 1:_('Change'), 2:_('All')}[root.show_change] + text: _('Change') if root.show_change else _('Receiving') on_release: - root.show_change = (root.show_change + 1) % 3 + root.show_change = not root.show_change Clock.schedule_once(lambda dt: app.address_screen.update()) AddressFilter: opacity: 1 diff --git a/gui/kivy/uix/ui_screens/history.kv b/gui/kivy/uix/ui_screens/history.kv index ad06c5eafb52..bec1857eb8fd 100644 --- a/gui/kivy/uix/ui_screens/history.kv +++ b/gui/kivy/uix/ui_screens/history.kv @@ -1,4 +1,4 @@ -#:import _ electrum_gui.kivy.i18n._ +#:import _ electrum_xzc_gui.kivy.i18n._ #:import Factory kivy.factory.Factory #:set font_light 'gui/kivy/data/fonts/Roboto-Condensed.ttf' #:set btc_symbol chr(171) diff --git a/gui/kivy/uix/ui_screens/network.kv b/gui/kivy/uix/ui_screens/network.kv index f499618a8d51..71e18ab4950a 100644 --- a/gui/kivy/uix/ui_screens/network.kv +++ b/gui/kivy/uix/ui_screens/network.kv @@ -11,7 +11,7 @@ Popup: height: self.minimum_height padding: '10dp' SettingsItem: - value: _("{} connections.").format(app.num_nodes) if app.num_nodes else _("Not connected") + value: _("%d connections.")% app.num_nodes if app.num_nodes else _("Not connected") title: _("Status") + ': ' + self.value description: _("Connections with Electrum servers") action: lambda x: None @@ -46,7 +46,7 @@ Popup: CardSeparator SettingsItem: - title: _('Fork detected at block {}').format(app.blockchain_checkpoint) if app.num_chains>1 else _('No fork detected') + title: _('Fork detected at block %d')%app.blockchain_checkpoint if app.num_chains>1 else _('No fork detected') fork_description: (_('You are following branch') if app.auto_connect else _("Your server is on branch")) + ' ' + app.blockchain_name description: self.fork_description if app.num_chains>1 else _('Connected nodes are on the same chain') action: app.choose_blockchain_dialog diff --git a/gui/kivy/uix/ui_screens/receive.kv b/gui/kivy/uix/ui_screens/receive.kv index c58b77ec72ba..c19fb600adf8 100644 --- a/gui/kivy/uix/ui_screens/receive.kv +++ b/gui/kivy/uix/ui_screens/receive.kv @@ -1,4 +1,4 @@ -#:import _ electrum_gui.kivy.i18n._ +#:import _ electrum_xzc_gui.kivy.i18n._ #:import Decimal decimal.Decimal #:set btc_symbol chr(171) #:set mbtc_symbol chr(187) @@ -68,7 +68,7 @@ ReceiveScreen: pos_hint: {'center_y': .5} BlueButton: id: address_label - text: s.address if s.address else _('Bitcoin Address') + text: s.address if s.address else _('Zcoin Address') shorten: True disabled: True CardSeparator: diff --git a/gui/kivy/uix/ui_screens/send.kv b/gui/kivy/uix/ui_screens/send.kv index 8aa70c0709cb..f2a45517e031 100644 --- a/gui/kivy/uix/ui_screens/send.kv +++ b/gui/kivy/uix/ui_screens/send.kv @@ -1,4 +1,4 @@ -#:import _ electrum_gui.kivy.i18n._ +#:import _ electrum_xzc_gui.kivy.i18n._ #:import Decimal decimal.Decimal #:set btc_symbol chr(171) #:set mbtc_symbol chr(187) diff --git a/gui/kivy/uix/ui_screens/status.kv b/gui/kivy/uix/ui_screens/status.kv index aeb6309c81c0..f9e9801983d2 100644 --- a/gui/kivy/uix/ui_screens/status.kv +++ b/gui/kivy/uix/ui_screens/status.kv @@ -1,5 +1,5 @@ Popup: - title: "Electrum" + title: "Electrum-XZC" confirmed: 0 unconfirmed: 0 unmatured: 0 diff --git a/gui/qt/__init__.py b/gui/qt/__init__.py index 0879208f94ff..bb154a4aea81 100644 --- a/gui/qt/__init__.py +++ b/gui/qt/__init__.py @@ -25,7 +25,6 @@ import signal import sys -import traceback try: @@ -38,14 +37,14 @@ from PyQt5.QtCore import * import PyQt5.QtCore as QtCore -from electrum.i18n import _, set_language -from electrum.plugins import run_hook -from electrum import WalletStorage -# from electrum.synchronizer import Synchronizer -# from electrum.verifier import SPV -# from electrum.util import DebugMem -from electrum.util import UserCancelled, print_error -# from electrum.wallet import Abstract_Wallet +from electrum_xzc.i18n import _, set_language +from electrum_xzc.plugins import run_hook +from electrum_xzc import WalletStorage +# from electrum_xzc.synchronizer import Synchronizer +# from electrum_xzc.verifier import SPV +# from electrum_xzc.util import DebugMem +from electrum_xzc.util import UserCancelled, print_error +# from electrum_xzc.wallet import Abstract_Wallet from .installwizard import InstallWizard, GoBack @@ -95,8 +94,6 @@ def __init__(self, config, daemon, plugins): QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_X11InitThreads) if hasattr(QtCore.Qt, "AA_ShareOpenGLContexts"): QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_ShareOpenGLContexts) - if hasattr(QGuiApplication, 'setDesktopFileName'): - QGuiApplication.setDesktopFileName('electrum.desktop') self.config = config self.daemon = daemon self.plugins = plugins @@ -110,7 +107,7 @@ def __init__(self, config, daemon, plugins): # init tray self.dark_icon = self.config.get("dark_icon", False) self.tray = QSystemTrayIcon(self.tray_icon(), None) - self.tray.setToolTip('Electrum') + self.tray.setToolTip('Electrum-XZC') self.tray.activated.connect(self.tray_activated) self.build_tray_menu() self.tray.show() @@ -132,7 +129,7 @@ def build_tray_menu(self): submenu.addAction(_("Close"), window.close) m.addAction(_("Dark/Light"), self.toggle_tray_icon) m.addSeparator() - m.addAction(_("Exit Electrum"), self.close) + m.addAction(_("Exit Electrum-XZC"), self.close) def tray_icon(self): if self.dark_icon: @@ -193,10 +190,8 @@ def start_new_window(self, path, uri): else: try: wallet = self.daemon.load_wallet(path, None) - except BaseException as e: - traceback.print_exc(file=sys.stdout) - d = QMessageBox(QMessageBox.Warning, _('Error'), - _('Cannot load wallet:') + '\n' + str(e)) + except BaseException as e: + d = QMessageBox(QMessageBox.Warning, _('Error'), 'Cannot load wallet:\n' + str(e)) d.exec_() return if not wallet: @@ -213,14 +208,7 @@ def start_new_window(self, path, uri): return wallet.start_threads(self.daemon.network) self.daemon.add_wallet(wallet) - try: - w = self.create_window_for_wallet(wallet) - except BaseException as e: - traceback.print_exc(file=sys.stdout) - d = QMessageBox(QMessageBox.Warning, _('Error'), - _('Cannot create window for wallet:') + '\n' + str(e)) - d.exec_() - return + w = self.create_window_for_wallet(wallet) if uri: w.pay_to_URI(uri) w.bring_to_top() @@ -253,7 +241,8 @@ def main(self): return except GoBack: return - except BaseException as e: + except: + import traceback traceback.print_exc(file=sys.stdout) return self.timer.start() diff --git a/gui/qt/address_dialog.py b/gui/qt/address_dialog.py index 9afd50adcbe2..2d9c67b804f2 100644 --- a/gui/qt/address_dialog.py +++ b/gui/qt/address_dialog.py @@ -23,7 +23,7 @@ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -from electrum.i18n import _ +from electrum_xzc.i18n import _ from PyQt5.QtCore import * from PyQt5.QtGui import * diff --git a/gui/qt/address_list.py b/gui/qt/address_list.py index 8377e6bf0c65..eed640fd8260 100644 --- a/gui/qt/address_list.py +++ b/gui/qt/address_list.py @@ -25,10 +25,10 @@ import webbrowser from .util import * -from electrum.i18n import _ -from electrum.util import block_explorer_URL -from electrum.plugins import run_hook -from electrum.bitcoin import is_address +from electrum_xzc.i18n import _ +from electrum_xzc.util import block_explorer_URL +from electrum_xzc.plugins import run_hook +from electrum_xzc.bitcoin import is_address class AddressList(MyTreeWidget): @@ -38,11 +38,11 @@ def __init__(self, parent=None): MyTreeWidget.__init__(self, parent, self.create_menu, [], 1) self.refresh_headers() self.setSelectionMode(QAbstractItemView.ExtendedSelection) - self.show_change = 0 + self.show_change = False self.show_used = 0 self.change_button = QComboBox(self) self.change_button.currentIndexChanged.connect(self.toggle_change) - for t in [_('Receiving'), _('Change'), _('All')]: + for t in [_('Receiving'), _('Change')]: self.change_button.addItem(t) self.used_button = QComboBox(self) self.used_button.currentIndexChanged.connect(self.toggle_used) @@ -60,10 +60,11 @@ def refresh_headers(self): headers.extend([_('Tx')]) self.update_headers(headers) - def toggle_change(self, state): - if state == self.show_change: + def toggle_change(self, show): + show = bool(show) + if show == self.show_change: return - self.show_change = state + self.show_change = show self.update() def toggle_used(self, state): @@ -76,12 +77,7 @@ def on_update(self): self.wallet = self.parent.wallet item = self.currentItem() current_address = item.data(0, Qt.UserRole) if item else None - if self.show_change == 0: - addr_list = self.wallet.get_receiving_addresses() - elif self.show_change == 1: - addr_list = self.wallet.get_change_addresses() - else: - addr_list = self.wallet.get_addresses() + addr_list = self.wallet.get_change_addresses() if self.show_change else self.wallet.get_receiving_addresses() self.clear() for address in addr_list: num = len(self.wallet.history.get(address,[])) @@ -110,14 +106,14 @@ def on_update(self): address_item.setData(0, Qt.UserRole+1, True) # label can be edited if self.wallet.is_frozen(address): address_item.setBackground(0, ColorScheme.BLUE.as_color(True)) - if self.wallet.is_beyond_limit(address): + if self.wallet.is_beyond_limit(address, self.show_change): address_item.setBackground(0, ColorScheme.RED.as_color(True)) self.addChild(address_item) if address == current_address: self.setCurrentItem(address_item) def create_menu(self, position): - from electrum.wallet import Multisig_Wallet + from electrum_xzc.wallet import Multisig_Wallet is_multisig = isinstance(self.wallet, Multisig_Wallet) can_delete = self.wallet.can_delete_address() selected = self.selectedItems() @@ -139,10 +135,10 @@ def create_menu(self, position): if not multi_select: column_title = self.headerItem().text(col) copy_text = item.text(col) - menu.addAction(_("Copy {}").format(column_title), lambda: self.parent.app.clipboard().setText(copy_text)) + menu.addAction(_("Copy %s")%column_title, lambda: self.parent.app.clipboard().setText(copy_text)) menu.addAction(_('Details'), lambda: self.parent.show_address(addr)) if col in self.editable_columns: - menu.addAction(_("Edit {}").format(column_title), lambda: self.editItem(item, col)) + menu.addAction(_("Edit %s")%column_title, lambda: self.editItem(item, col)) menu.addAction(_("Request payment"), lambda: self.parent.receive_at(addr)) if self.wallet.can_export(): menu.addAction(_("Private key"), lambda: self.parent.show_private_key(addr)) diff --git a/gui/qt/amountedit.py b/gui/qt/amountedit.py index 551353289368..204f7721c13c 100644 --- a/gui/qt/amountedit.py +++ b/gui/qt/amountedit.py @@ -5,7 +5,7 @@ from PyQt5.QtWidgets import (QLineEdit, QStyle, QStyleOptionFrame) from decimal import Decimal -from electrum.util import format_satoshis_plain +from electrum_xzc.util import format_satoshis_plain class MyLineEdit(QLineEdit): @@ -82,9 +82,9 @@ def __init__(self, decimal_point, is_int = False, parent=None): def _base_unit(self): p = self.decimal_point() if p == 8: - return 'BTC' + return 'XZC' if p == 5: - return 'mBTC' + return 'mXZC' if p == 2: return 'bits' raise Exception('Unknown base unit') @@ -106,7 +106,12 @@ def setAmount(self, amount): class FeerateEdit(BTCAmountEdit): def _base_unit(self): - return 'sat/byte' + p = self.decimal_point() + if p == 2: + return 'mXZC/kB' + if p == 0: + return 'sat/byte' + raise Exception('Unknown base unit') def get_amount(self): sat_per_byte_amount = BTCAmountEdit.get_amount(self) diff --git a/gui/qt/console.py b/gui/qt/console.py index bde05a3dfa2d..af7384b30110 100644 --- a/gui/qt/console.py +++ b/gui/qt/console.py @@ -6,7 +6,7 @@ from PyQt5 import QtCore from PyQt5 import QtGui from PyQt5 import QtWidgets -from electrum import util +from electrum_xzc import util if platform.system() == 'Windows': @@ -203,8 +203,7 @@ def write(self, text): self.skip = not self.skip if type(self.namespace.get(command)) == type(lambda:None): - self.appendPlainText("'{}' is a function. Type '{}()' to use it in the Python console." - .format(command, command)) + self.appendPlainText("'%s' is a function. Type '%s()' to use it in the Python console."%(command, command)) self.newPrompt() return diff --git a/gui/qt/contact_list.py b/gui/qt/contact_list.py index a1794459355f..954794345a48 100644 --- a/gui/qt/contact_list.py +++ b/gui/qt/contact_list.py @@ -24,10 +24,10 @@ # SOFTWARE. import webbrowser -from electrum.i18n import _ -from electrum.bitcoin import is_address -from electrum.util import block_explorer_URL, FileImportFailed -from electrum.plugins import run_hook +from electrum_xzc.i18n import _ +from electrum_xzc.bitcoin import is_address +from electrum_xzc.util import block_explorer_URL +from electrum_xzc.plugins import run_hook from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import ( @@ -57,10 +57,7 @@ def import_contacts(self): filename, __ = QFileDialog.getOpenFileName(self.parent, "Select your wallet file", wallet_folder) if not filename: return - try: - self.parent.contacts.import_file(filename) - except FileImportFailed as e: - self.parent.show_message(str(e)) + self.parent.contacts.import_file(filename) self.on_update() def create_menu(self, position): @@ -75,10 +72,10 @@ def create_menu(self, position): column = self.currentColumn() column_title = self.headerItem().text(column) column_data = '\n'.join([item.text(column) for item in selected]) - menu.addAction(_("Copy {}").format(column_title), lambda: self.parent.app.clipboard().setText(column_data)) + menu.addAction(_("Copy %s")%column_title, lambda: self.parent.app.clipboard().setText(column_data)) if column in self.editable_columns: item = self.currentItem() - menu.addAction(_("Edit {}").format(column_title), lambda: self.editItem(item, column)) + menu.addAction(_("Edit %s")%column_title, lambda: self.editItem(item, column)) menu.addAction(_("Pay to"), lambda: self.parent.payto_contacts(keys)) menu.addAction(_("Delete"), lambda: self.parent.delete_contacts(keys)) URLs = [block_explorer_URL(self.config, 'addr', key) for key in filter(is_address, keys)] diff --git a/gui/qt/exception_window.py b/gui/qt/exception_window.py index a15bbe25a540..c3bcb8688871 100644 --- a/gui/qt/exception_window.py +++ b/gui/qt/exception_window.py @@ -32,9 +32,9 @@ from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import * -from electrum.i18n import _ +from electrum_xzc.i18n import _ import sys -from electrum import ELECTRUM_VERSION, bitcoin +from electrum_xzc import ELECTRUM_VERSION issue_template = """

Traceback

@@ -49,7 +49,7 @@
   
  • Locale: {locale}
  • """ -report_server = "https://crashhub.electrum.org/crash" +report_server = "https://crashhub.electrum-xzc.org/crash" class Exception_Window(QWidget): @@ -59,7 +59,7 @@ def __init__(self, main_window, exctype, value, tb): self.exc_args = (exctype, value, tb) self.main_window = main_window QWidget.__init__(self) - self.setWindowTitle('Electrum - ' + _('An Error Occured')) + self.setWindowTitle('Electrum-XZC - ' + _('An Error Occured')) self.setMinimumSize(600, 300) main_box = QVBoxLayout() @@ -105,10 +105,6 @@ def __init__(self, main_window, exctype, value, tb): self.show() def send_report(self): - if bitcoin.NetworkConstants.GENESIS[-4:] not in ["4943", "e26f"] and ".electrum.org" in report_server: - # Gah! Some kind of altcoin wants to send us crash reports. - self.main_window.show_critical("Please report this issue manually.") - return report = self.get_traceback_info() report.update(self.get_additional_info()) report = json.dumps(report) diff --git a/gui/qt/fee_slider.py b/gui/qt/fee_slider.py index 04911d878219..8645eb9067f8 100644 --- a/gui/qt/fee_slider.py +++ b/gui/qt/fee_slider.py @@ -1,4 +1,6 @@ -from electrum.i18n import _ + +from electrum_xzc.i18n import _ + from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import QSlider, QToolTip @@ -20,30 +22,37 @@ def __init__(self, window, config, callback): def moved(self, pos): with self.lock: - if self.dyn: - fee_rate = self.config.depth_to_fee(pos) if self.config.use_mempool_fees() else self.config.eta_to_fee(pos) - else: - fee_rate = self.config.static_fee(pos) + fee_rate = self.config.dynfee(pos) if self.dyn else self.config.static_fee(pos) tooltip = self.get_tooltip(pos, fee_rate) QToolTip.showText(QCursor.pos(), tooltip, self) self.setToolTip(tooltip) self.callback(self.dyn, pos, fee_rate) def get_tooltip(self, pos, fee_rate): - mempool = self.config.use_mempool_fees() - target, estimate = self.config.get_fee_text(pos, self.dyn, mempool, fee_rate) + from electrum_xzc.util import fee_levels + rate_str = self.window.format_fee_rate(fee_rate) if fee_rate else _('unknown') if self.dyn: - return _('Target') + ': ' + target + '\n' + _('Current rate') + ': ' + estimate + tooltip = fee_levels[pos] + '\n' + rate_str else: - return _('Fixed rate') + ': ' + target + '\n' + _('Estimate') + ': ' + estimate + tooltip = 'Fixed rate: ' + rate_str + if self.config.has_fee_estimates(): + i = self.config.reverse_dynfee(fee_rate) + tooltip += '\n' + (_('Low fee') if i < 0 else 'Within %d blocks'%i) + return tooltip def update(self): with self.lock: self.dyn = self.config.is_dynfee() - mempool = self.config.use_mempool_fees() - maxp, pos, fee_rate = self.config.get_fee_slider(self.dyn, mempool) - self.setRange(0, maxp) - self.setValue(pos) + if self.dyn: + pos = self.config.get('fee_level', 2) + fee_rate = self.config.dynfee(pos) + self.setRange(0, 4) + self.setValue(pos) + else: + fee_rate = self.config.fee_per_kb() + pos = self.config.static_fee_index(fee_rate) + self.setRange(0, 9) + self.setValue(pos) tooltip = self.get_tooltip(pos, fee_rate) self.setToolTip(tooltip) diff --git a/gui/qt/history_list.py b/gui/qt/history_list.py index fcd4deb47cb7..68c34d89af87 100644 --- a/gui/qt/history_list.py +++ b/gui/qt/history_list.py @@ -25,15 +25,16 @@ import webbrowser -from electrum.wallet import UnrelatedTransactionException, TX_HEIGHT_LOCAL +from electrum_xzc.wallet import UnrelatedTransactionException from .util import * -from electrum.i18n import _ -from electrum.util import block_explorer_URL -from electrum.util import timestamp_to_datetime, profiler +from electrum_xzc.i18n import _ +from electrum_xzc.util import block_explorer_URL +from electrum_xzc.util import timestamp_to_datetime, profiler # note: this list needs to be kept in sync with another in kivy TX_ICONS = [ + "warning.png", "warning.png", "warning.png", "unconfirmed.png", @@ -58,15 +59,10 @@ def __init__(self, parent=None): self.setColumnHidden(1, True) def refresh_headers(self): - headers = ['', '', _('Date'), _('Description'), _('Amount'), _('Balance')] + headers = ['', '', _('Date'), _('Description') , _('Amount'), _('Balance')] fx = self.parent.fx if fx and fx.show_history(): - headers.extend(['%s '%fx.ccy + _('Value')]) - headers.extend(['%s '%fx.ccy + _('Acquisition price')]) - headers.extend(['%s '%fx.ccy + _('Capital Gains')]) - self.editable_columns |= {6} - else: - self.editable_columns -= {6} + headers.extend(['%s '%fx.ccy + _('Amount'), '%s '%fx.ccy + _('Balance')]) self.update_headers(headers) def get_domain(self): @@ -91,23 +87,11 @@ def on_update(self): balance_str = self.parent.format_amount(balance, whitespaces=True) label = self.wallet.get_label(tx_hash) entry = ['', tx_hash, status_str, label, v_str, balance_str] - fiat_value = None - if value is not None and fx and fx.show_history(): + if fx and fx.show_history(): date = timestamp_to_datetime(time.time() if conf <= 0 else timestamp) - fiat_value = self.wallet.get_fiat_value(tx_hash, fx.ccy) - if not fiat_value: - fiat_value = fx.historical_value(value, date) - fiat_default = True - else: - fiat_default = False - value_str = fx.format_fiat(fiat_value) - entry.append(value_str) - # fixme: should use is_mine - if value < 0: - ap, lp = self.wallet.capital_gain(tx_hash, fx.timestamp_rate, fx.ccy) - cg = None if lp is None or ap is None else lp - ap - entry.append(fx.format_fiat(ap)) - entry.append(fx.format_fiat(cg)) + for amount in [value, balance]: + text = fx.historical_value_str(amount, date) + entry.append(text) item = QTreeWidgetItem(entry) item.setIcon(0, icon) item.setToolTip(0, str(conf) + " confirmation" + ("s" if conf != 1 else "")) @@ -121,27 +105,12 @@ def on_update(self): if value and value < 0: item.setForeground(3, QBrush(QColor("#BC1E1E"))) item.setForeground(4, QBrush(QColor("#BC1E1E"))) - if fiat_value and not fiat_default: - item.setForeground(6, QBrush(QColor("#1E1EFF"))) if tx_hash: item.setData(0, Qt.UserRole, tx_hash) self.insertTopLevelItem(0, item) if current_tx == tx_hash: self.setCurrentItem(item) - def on_edited(self, item, column, prior): - '''Called only when the text actually changes''' - key = item.data(0, Qt.UserRole) - text = item.text(column) - # fixme - if column == 3: - self.parent.wallet.set_label(key, text) - self.update_labels() - self.parent.update_completions() - elif column == 6: - self.parent.wallet.set_fiat_value(key, self.parent.fx.ccy, text) - self.on_update() - def on_doubleclick(self, item, column): if self.permit_edit(item, column): super(HistoryList, self).on_doubleclick(item, column) @@ -193,12 +162,12 @@ def create_menu(self, position): menu = QMenu() - if height == TX_HEIGHT_LOCAL: + if height == -2: menu.addAction(_("Remove"), lambda: self.remove_local_tx(tx_hash)) - menu.addAction(_("Copy {}").format(column_title), lambda: self.parent.app.clipboard().setText(column_data)) - for c in self.editable_columns: - menu.addAction(_("Edit {}").format(self.headerItem().text(c)), lambda: self.editItem(item, c)) + menu.addAction(_("Copy %s")%column_title, lambda: self.parent.app.clipboard().setText(column_data)) + if column in self.editable_columns: + menu.addAction(_("Edit %s")%column_title, lambda: self.editItem(item, column)) menu.addAction(_("Details"), lambda: self.parent.show_transaction(tx)) @@ -232,8 +201,14 @@ def remove_local_tx(self, delete_tx): for tx in to_delete: self.wallet.remove_transaction(tx) self.wallet.save_transactions(write=True) - # need to update at least: history_list, utxo_list, address_list - self.parent.need_update.set() + root = self.invisibleRootItem() + child_count = root.childCount() + _offset = 0 + for i in range(child_count): + item = root.child(i - _offset) + if item.data(0, Qt.UserRole) in to_delete: + root.removeChild(item) + _offset += 1 def onFileAdded(self, fn): with open(fn) as f: @@ -244,5 +219,4 @@ def onFileAdded(self, fn): self.parent.show_error(e) else: self.wallet.save_transactions(write=True) - # need to update at least: history_list, utxo_list, address_list - self.parent.need_update.set() + self.on_update() diff --git a/gui/qt/installwizard.py b/gui/qt/installwizard.py index d23631aca1a2..ff6768af5eaf 100644 --- a/gui/qt/installwizard.py +++ b/gui/qt/installwizard.py @@ -8,15 +8,15 @@ from PyQt5.QtGui import * from PyQt5.QtWidgets import * -from electrum import Wallet, WalletStorage -from electrum.util import UserCancelled, InvalidPassword -from electrum.base_wizard import BaseWizard, HWD_SETUP_DECRYPT_WALLET -from electrum.i18n import _ +from electrum_xzc import Wallet, WalletStorage +from electrum_xzc.util import UserCancelled, InvalidPassword +from electrum_xzc.base_wizard import BaseWizard +from electrum_xzc.i18n import _ from .seed_dialog import SeedLayout, KeysLayout from .network_dialog import NetworkChoiceLayout from .util import * -from .password_dialog import PasswordLayout, PasswordLayoutForHW, PW_NEW +from .password_dialog import PasswordLayout, PW_NEW class GoBack(Exception): @@ -24,15 +24,11 @@ class GoBack(Exception): MSG_GENERATING_WAIT = _("Electrum is generating your addresses, please wait...") MSG_ENTER_ANYTHING = _("Please enter a seed phrase, a master key, a list of " - "Bitcoin addresses, or a list of private keys") + "Zcoin addresses, or a list of private keys") MSG_ENTER_SEED_OR_MPK = _("Please enter a seed phrase or a master key (xpub or xprv):") -MSG_COSIGNER = _("Please enter the master public key of cosigner #{}:") +MSG_COSIGNER = _("Please enter the master public key of cosigner #%d:") MSG_ENTER_PASSWORD = _("Choose a password to encrypt your wallet keys.") + '\n'\ + _("Leave this field empty if you want to disable encryption.") -MSG_HW_STORAGE_ENCRYPTION = _("Set wallet file encryption.") + '\n'\ - + _("Your wallet file does not contain secrets, mostly just metadata. ") \ - + _("It also contains your master public key that allows watching your addresses.") + '\n\n'\ - + _("Note: If you enable this setting, you will need your hardware device to open your wallet.") MSG_RESTORE_PASSPHRASE = \ _("Please enter your seed derivation passphrase. " "Note: this is NOT your encryption password. " @@ -106,7 +102,7 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard): def __init__(self, config, app, plugins, storage): BaseWizard.__init__(self, config, storage) QDialog.__init__(self, None) - self.setWindowTitle('Electrum - ' + _('Install Wizard')) + self.setWindowTitle('Electrum-XZC - ' + _('Install Wizard')) self.app = app self.config = config # Set for base base class @@ -151,7 +147,7 @@ def __init__(self, config, app, plugins, storage): hbox.setStretchFactor(scroll, 1) outer_vbox.addLayout(hbox) outer_vbox.addLayout(Buttons(self.back_button, self.next_button)) - self.set_icon(':icons/electrum.png') + self.set_icon(':icons/electrum-xzc.png') self.show() self.raise_() self.refresh_gui() # Need for QT on MacOSX. Lame. @@ -178,7 +174,7 @@ def run_and_get_wallet(self): hbox2.addWidget(self.pw_e) hbox2.addStretch() vbox.addLayout(hbox2) - self.set_layout(vbox, title=_('Electrum wallet')) + self.set_layout(vbox, title=_('Electrum-XZC wallet')) wallet_folder = os.path.dirname(self.storage.path) @@ -200,18 +196,12 @@ def on_filename(filename): msg =_("This file does not exist.") + '\n' \ + _("Press 'Next' to create this wallet, or choose another file.") pw = False + elif self.storage.file_exists() and self.storage.is_encrypted(): + msg = _("This file is encrypted.") + '\n' + _('Enter your password or choose another file.') + pw = True else: - if self.storage.is_encrypted_with_user_pw(): - msg = _("This file is encrypted with a password.") + '\n' \ - + _('Enter your password or choose another file.') - pw = True - elif self.storage.is_encrypted_with_hw_device(): - msg = _("This file is encrypted using a hardware device.") + '\n' \ - + _("Press 'Next' to choose device to decrypt.") - pw = False - else: - msg = _("Press 'Next' to open this wallet.") - pw = False + msg = _("Press 'Next' to open this wallet.") + pw = False else: msg = _('Cannot read file') pw = False @@ -237,46 +227,23 @@ def on_filename(filename): if not self.storage.file_exists(): break if self.storage.file_exists() and self.storage.is_encrypted(): - if self.storage.is_encrypted_with_user_pw(): - password = self.pw_e.text() - try: - self.storage.decrypt(password) - break - except InvalidPassword as e: - QMessageBox.information(None, _('Error'), str(e)) - continue - except BaseException as e: - traceback.print_exc(file=sys.stdout) - QMessageBox.information(None, _('Error'), str(e)) - return - elif self.storage.is_encrypted_with_hw_device(): - try: - self.run('choose_hw_device', HWD_SETUP_DECRYPT_WALLET) - except InvalidPassword as e: - # FIXME if we get here because of mistyped passphrase - # then that passphrase gets "cached" - QMessageBox.information( - None, _('Error'), - _('Failed to decrypt using this hardware device.') + '\n' + - _('If you use a passphrase, make sure it is correct.')) - self.stack = [] - return self.run_and_get_wallet() - except BaseException as e: - traceback.print_exc(file=sys.stdout) - QMessageBox.information(None, _('Error'), str(e)) - return - if self.storage.is_past_initial_decryption(): - break - else: - return - else: - raise Exception('Unexpected encryption version') + password = self.pw_e.text() + try: + self.storage.decrypt(password) + break + except InvalidPassword as e: + QMessageBox.information(None, _('Error'), str(e)) + continue + except BaseException as e: + traceback.print_exc(file=sys.stdout) + QMessageBox.information(None, _('Error'), str(e)) + return path = self.storage.path if self.storage.requires_split(): self.hide() - msg = _("The wallet '{}' contains multiple accounts, which are no longer supported since Electrum 2.7.\n\n" - "Do you want to split your wallet into multiple files?").format(path) + msg = _("The wallet '%s' contains multiple accounts, which are no longer supported since Electrum 2.7.\n\n" + "Do you want to split your wallet into multiple files?"%path) if not self.question(msg): return file_list = '\n'.join(self.storage.split_accounts()) @@ -294,10 +261,10 @@ def on_filename(filename): action = self.storage.get_action() if action and action != 'new': self.hide() - msg = _("The file '{}' contains an incompletely created wallet.\n" - "Do you want to complete its creation now?").format(path) + msg = _("The file '%s' contains an incompletely created wallet.\n" + "Do you want to complete its creation now?") % path if not self.question(msg): - if self.question(_("Do you want to delete '{}'?").format(path)): + if self.question(_("Do you want to delete '%s'?") % path): os.remove(path) self.show_warning(_('The file was removed')) return @@ -419,25 +386,17 @@ def show_seed_dialog(self, run_next, seed_text): self.exec_layout(slayout) return slayout.is_ext - def pw_layout(self, msg, kind, force_disable_encrypt_cb): - playout = PasswordLayout(None, msg, kind, self.next_button, - force_disable_encrypt_cb=force_disable_encrypt_cb) + def pw_layout(self, msg, kind): + playout = PasswordLayout(None, msg, kind, self.next_button) playout.encrypt_cb.setChecked(True) self.exec_layout(playout.layout()) return playout.new_password(), playout.encrypt_cb.isChecked() @wizard_dialog - def request_password(self, run_next, force_disable_encrypt_cb=False): + def request_password(self, run_next): """Request the user enter a new password and confirm it. Return the password or None for no password.""" - return self.pw_layout(MSG_ENTER_PASSWORD, PW_NEW, force_disable_encrypt_cb) - - @wizard_dialog - def request_storage_encryption(self, run_next): - playout = PasswordLayoutForHW(None, MSG_HW_STORAGE_ENCRYPTION, PW_NEW, self.next_button) - playout.encrypt_cb.setChecked(True) - self.exec_layout(playout.layout()) - return playout.encrypt_cb.isChecked() + return self.pw_layout(MSG_ENTER_PASSWORD, PW_NEW) def show_restore(self, wallet, network): # FIXME: these messages are shown after the install wizard is diff --git a/gui/qt/invoice_list.py b/gui/qt/invoice_list.py index a4a8374f7ed2..c701aa40f5c8 100644 --- a/gui/qt/invoice_list.py +++ b/gui/qt/invoice_list.py @@ -24,8 +24,8 @@ # SOFTWARE. from .util import * -from electrum.i18n import _ -from electrum.util import format_time, FileImportFailed +from electrum_xzc.i18n import _ +from electrum_xzc.util import format_time class InvoiceList(MyTreeWidget): @@ -61,10 +61,7 @@ def import_invoices(self): filename, __ = QFileDialog.getOpenFileName(self.parent, "Select your wallet file", wallet_folder) if not filename: return - try: - self.parent.invoices.import_file(filename) - except FileImportFailed as e: - self.parent.show_message(str(e)) + self.parent.invoices.import_file(filename) self.on_update() def create_menu(self, position): @@ -79,7 +76,7 @@ def create_menu(self, position): pr = self.parent.invoices.get(key) status = self.parent.invoices.get_status(key) if column_data: - menu.addAction(_("Copy {}").format(column_title), lambda: self.parent.app.clipboard().setText(column_data)) + menu.addAction(_("Copy %s")%column_title, lambda: self.parent.app.clipboard().setText(column_data)) menu.addAction(_("Details"), lambda: self.parent.show_invoice(key)) if status == PR_UNPAID: menu.addAction(_("Pay Now"), lambda: self.parent.do_pay_invoice(key)) diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py index df86e3e893b8..ab05858a2853 100644 --- a/gui/qt/main_window.py +++ b/gui/qt/main_window.py @@ -39,21 +39,21 @@ from .exception_window import Exception_Hook from PyQt5.QtWidgets import * -from electrum.util import bh2u, bfh - -from electrum import keystore, simple_config -from electrum.bitcoin import COIN, is_address, TYPE_ADDRESS, NetworkConstants -from electrum.plugins import run_hook -from electrum.i18n import _ -from electrum.util import (format_time, format_satoshis, PrintError, - format_satoshis_plain, NotEnoughFunds, - UserCancelled, NoDynamicFeeEstimates) -from electrum import Transaction -from electrum import util, bitcoin, commands, coinchooser -from electrum import paymentrequest -from electrum.wallet import Multisig_Wallet +from electrum_xzc.util import bh2u, bfh + +from electrum_xzc import keystore, simple_config +from electrum_xzc.bitcoin import COIN, is_address, TYPE_ADDRESS, NetworkConstants +from electrum_xzc.plugins import run_hook +from electrum_xzc.i18n import _ +from electrum_xzc.util import (format_time, format_satoshis, PrintError, + format_satoshis_plain, NotEnoughFunds, + UserCancelled, NoDynamicFeeEstimates) +from electrum_xzc import Transaction +from electrum_xzc import util, bitcoin, commands, coinchooser +from electrum_xzc import paymentrequest +from electrum_xzc.wallet import Multisig_Wallet try: - from electrum.plot import plot_history + from electrum_xzc.plot import plot_history except: plot_history = None @@ -65,7 +65,7 @@ from .util import * -from electrum.util import profiler +from electrum_xzc.util import profiler class StatusBarButton(QPushButton): def __init__(self, icon, tooltip, func): @@ -86,7 +86,7 @@ def keyPressEvent(self, e): self.func() -from electrum.paymentrequest import PR_PAID +from electrum_xzc.paymentrequest import PR_PAID class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): @@ -130,7 +130,8 @@ def __init__(self, gui_object, wallet): self.create_status_bar() self.need_update = threading.Event() - self.decimal_point = config.get('decimal_point', 5) + self.decimal_point = config.get('decimal_point', 8) + self.fee_unit = config.get('fee_unit', 0) self.num_zeros = int(config.get('num_zeros',0)) self.completions = QStringListModel() @@ -165,7 +166,7 @@ def add_optional_tab(tabs, tab, icon, description, name): if self.config.get("is_maximized"): self.showMaximized() - self.setWindowIcon(QIcon(":icons/electrum.png")) + self.setWindowIcon(QIcon(":icons/electrum-xzc.png")) self.init_menubar() wrtabs = weakref.proxy(tabs) @@ -292,6 +293,7 @@ def on_network(self, event, *args): self.need_update.set() self.gui_object.network_updated_signal_obj.network_updated_signal \ .emit(event, args) + elif event == 'new_transaction': self.tx_notifications.append(args[0]) self.notify_transactions_signal.emit() @@ -313,12 +315,6 @@ def on_network_qt(self, event, args=None): if self.config.is_dynfee(): self.fee_slider.update() self.do_update_fee() - elif event == 'fee_histogram': - if self.config.is_dynfee(): - self.fee_slider.update() - self.do_update_fee() - # todo: update only unconfirmed tx - self.history_list.update() else: self.print_error("unexpected network_qt signal:", event, args) @@ -378,7 +374,7 @@ def init_geometry(self): self.setGeometry(100, 100, 840, 400) def watching_only_changed(self): - name = "Electrum Testnet" if NetworkConstants.TESTNET else "Electrum" + name = "Electrum-XZC Testnet" if NetworkConstants.TESTNET else "Electrum-XZC" title = '%s %s - %s' % (name, self.wallet.electrum_version, self.wallet.basename()) extra = [self.wallet.storage.get('wallet_type', '?')] @@ -387,7 +383,7 @@ def watching_only_changed(self): extra.append(_('watching only')) title += ' [%s]'% ', '.join(extra) self.setWindowTitle(title) - self.password_menu.setEnabled(self.wallet.may_have_password()) + self.password_menu.setEnabled(self.wallet.can_change_password()) self.import_privkey_menu.setVisible(self.wallet.can_import_privkey()) self.import_address_menu.setVisible(self.wallet.can_import_address()) self.export_menu.setEnabled(self.wallet.can_export()) @@ -396,8 +392,8 @@ def warn_if_watching_only(self): if self.wallet.is_watching_only(): msg = ' '.join([ _("This wallet is watching-only."), - _("This means you will not be able to spend Bitcoins with it."), - _("Make sure you own the seed phrase or the private keys, before you request Bitcoins to be sent to this wallet.") + _("This means you will not be able to spend zcoins with it."), + _("Make sure you own the seed phrase or the private keys, before you request zcoins to be sent to this wallet.") ]) self.show_warning(msg, title=_('Information')) @@ -531,7 +527,7 @@ def add_toggle_action(view_menu, tab): help_menu = menubar.addMenu(_("&Help")) help_menu.addAction(_("&About"), self.show_about) - help_menu.addAction(_("&Official website"), lambda: webbrowser.open("http://electrum.org")) + help_menu.addAction(_("&Official website"), lambda: webbrowser.open("http://electrum-xzc.org")) help_menu.addSeparator() help_menu.addAction(_("&Documentation"), lambda: webbrowser.open("http://docs.electrum.org/")).setShortcut(QKeySequence.HelpContents) help_menu.addAction(_("&Report Bug"), self.show_report_bug) @@ -544,24 +540,24 @@ def donate_to_server(self): d = self.network.get_donation_address() if d: host = self.network.get_parameters()[0] - self.pay_to_URI('bitcoin:%s?message=donation for %s'%(d, host)) + self.pay_to_URI('zcoin:%s?message=donation for %s'%(d, host)) else: self.show_error(_('No donation address for this server')) def show_about(self): - QMessageBox.about(self, "Electrum", + QMessageBox.about(self, "Electrum-XZC", _("Version")+" %s" % (self.wallet.electrum_version) + "\n\n" + - _("Electrum's focus is speed, with low resource usage and simplifying Bitcoin. You do not need to perform regular backups, because your wallet can be recovered from a secret phrase that you can memorize or write on paper. Startup times are instant because it operates in conjunction with high-performance servers that handle the most complicated parts of the Bitcoin system." + "\n\n" + + _("Electrum's focus is speed, with low resource usage and simplifying Zcoin. You do not need to perform regular backups, because your wallet can be recovered from a secret phrase that you can memorize or write on paper. Startup times are instant because it operates in conjunction with high-performance servers that handle the most complicated parts of the Zcoin system." + "\n\n" + _("Uses icons from the Icons8 icon pack (icons8.com)."))) def show_report_bug(self): msg = ' '.join([ _("Please report any bugs as issues on github:
    "), - "https://github.com/spesmilo/electrum/issues

    ", + "https://github.com/sn-ntu/electrum-xzc/issues

    ", _("Before reporting a bug, upgrade to the most recent version of Electrum (latest release or git HEAD), and include the version number in your report."), _("Try to explain not only what the bug is, but how it occurs.") ]) - self.show_message(msg, title="Electrum - " + _("Reporting Bugs")) + self.show_message(msg, title="Electrum-XZC - " + _("Reporting Bugs")) def notify_transactions(self): if not self.network or not self.network.is_connected(): @@ -591,9 +587,9 @@ def notify(self, message): if self.tray: try: # this requires Qt 5.9 - self.tray.showMessage("Electrum", message, QIcon(":icons/electrum_dark_icon"), 20000) + self.tray.showMessage("Electrum-XZC", message, QIcon(":icons/electrum_dark_icon"), 20000) except TypeError: - self.tray.showMessage("Electrum", message, QSystemTrayIcon.Information, 20000) + self.tray.showMessage("Electrum-XZC", message, QSystemTrayIcon.Information, 20000) @@ -640,7 +636,10 @@ def format_amount_and_units(self, amount): return text def format_fee_rate(self, fee_rate): - return format_satoshis(fee_rate/1000, False, self.num_zeros, 0, False) + ' sat/byte' + if self.fee_unit == 0: + return format_satoshis(fee_rate/1000, False, self.num_zeros, 0, False) + ' sat/byte' + else: + return self.format_amount(fee_rate) + ' ' + self.base_unit() + '/kB' def get_decimal_point(self): return self.decimal_point @@ -650,9 +649,9 @@ def base_unit(self): if self.decimal_point == 2: return 'bits' if self.decimal_point == 5: - return 'mBTC' + return 'mXZC' if self.decimal_point == 8: - return 'BTC' + return 'XZC' raise Exception('Unknown base unit') def connect_fields(self, window, btc_e, fiat_e, fee_e): @@ -776,7 +775,7 @@ def create_receive_tab(self): self.receive_address_e = ButtonsLineEdit() self.receive_address_e.addCopyButton(self.app) self.receive_address_e.setReadOnly(True) - msg = _('Bitcoin address where the payment should be received. Note that each payment request uses a different Bitcoin address.') + msg = _('Zcoin address where the payment should be received. Note that each payment request uses a different Zcoin address.') self.receive_address_label = HelpLabel(_('Receiving address'), msg) self.receive_address_e.textChanged.connect(self.update_receive_qr) self.receive_address_e.setFocusPolicy(Qt.NoFocus) @@ -806,8 +805,8 @@ def create_receive_tab(self): msg = ' '.join([ _('Expiration date of your request.'), _('This information is seen by the recipient if you send them a signed payment request.'), - _('Expired requests have to be deleted manually from your list, in order to free the corresponding Bitcoin addresses.'), - _('The bitcoin address never expires and will always be part of this electrum wallet.'), + _('Expired requests have to be deleted manually from your list, in order to free the corresponding Zcoin addresses.'), + _('The Zcoin address never expires and will always be part of this Electrum wallet.'), ]) grid.addWidget(HelpLabel(_('Request expires'), msg), 3, 0) grid.addWidget(self.expires_combo, 3, 1) @@ -889,15 +888,14 @@ def sign_payment_request(self, addr): if alias_addr: if self.wallet.is_mine(alias_addr): msg = _('This payment request will be signed.') + '\n' + _('Please enter your password') - password = None - if self.wallet.has_keystore_encryption(): - password = self.password_dialog(msg) - if not password: + password = self.password_dialog(msg) + if password: + try: + self.wallet.sign_payment_request(addr, alias, alias_addr, password) + except Exception as e: + self.show_error(str(e)) return - try: - self.wallet.sign_payment_request(addr, alias, alias_addr, password) - except Exception as e: - self.show_error(str(e)) + else: return else: return @@ -1012,10 +1010,6 @@ def update_receive_qr(self): if self.qr_window and self.qr_window.isVisible(): self.qr_window.set_content(addr, amount, message, uri) - def set_feerounding_text(self, num_satoshis_added): - self.feerounding_text = (_('Additional {} satoshis are going to be added.') - .format(num_satoshis_added)) - def create_send_tab(self): # A 4-column grid layout. All the stretch is in the last column. # The exchange rate plugin adds a fiat widget in column 2 @@ -1027,7 +1021,7 @@ def create_send_tab(self): self.amount_e = BTCAmountEdit(self.get_decimal_point) self.payto_e = PayToEdit(self) msg = _('Recipient of the funds.') + '\n\n'\ - + _('You may enter a Bitcoin address, a label from your list of contacts (a list of completions will be proposed), or an alias (email-like address that forwards to a Bitcoin address)') + + _('You may enter a Zcoin address, a label from your list of contacts (a list of completions will be proposed), or an alias (email-like address that forwards to a Zcoin address)') payto_label = HelpLabel(_('Pay to'), msg) grid.addWidget(payto_label, 1, 0) grid.addWidget(self.payto_e, 1, 1, 1, -1) @@ -1074,17 +1068,14 @@ def create_send_tab(self): hbox.addStretch(1) grid.addLayout(hbox, 4, 4) - msg = _('Bitcoin transactions are in general not free. A transaction fee is paid by the sender of the funds.') + '\n\n'\ + msg = _('Zcoin transactions are in general not free. A transaction fee is paid by the sender of the funds.') + '\n\n'\ + _('The amount of fee can be decided freely by the sender. However, transactions with low fees take more time to be processed.') + '\n\n'\ + _('A suggested fee is automatically added to this field. You may override it. The suggested fee increases with the size of the transaction.') self.fee_e_label = HelpLabel(_('Fee'), msg) def fee_cb(dyn, pos, fee_rate): if dyn: - if self.config.use_mempool_fees(): - self.config.set_key('depth_level', pos, False) - else: - self.config.set_key('fee_level', pos, False) + self.config.set_key('fee_level', pos, False) else: self.config.set_key('fee_per_kb', fee_rate, False) @@ -1124,7 +1115,7 @@ def setAmount(self, byte_size): self.size_e.setFixedWidth(140) self.size_e.setStyleSheet(ColorScheme.DEFAULT.as_stylesheet()) - self.feerate_e = FeerateEdit(lambda: 0) + self.feerate_e = FeerateEdit(lambda: 2 if self.fee_unit else 0) self.feerate_e.setAmount(self.config.fee_per_byte()) self.feerate_e.textEdited.connect(partial(on_fee_or_feerate, self.feerate_e, False)) self.feerate_e.editingFinished.connect(partial(on_fee_or_feerate, self.feerate_e, True)) @@ -1134,10 +1125,8 @@ def setAmount(self, byte_size): self.fee_e.editingFinished.connect(partial(on_fee_or_feerate, self.fee_e, True)) def feerounding_onclick(): - text = (self.feerounding_text + '\n\n' + - _('To somewhat protect your privacy, Electrum tries to create change with similar precision to other outputs.') + ' ' + - _('At most 100 satoshis might be lost due to this rounding.') + ' ' + - _("You can disable this setting in '{}'.").format(_('Preferences')) + '\n' + + text = (_('To somewhat protect your privacy, Electrum tries to create change with similar precision to other outputs.') + ' ' + + _('At most 100 satoshis might be lost due to this rounding.') + '\n' + _('Also, dust is not kept as change, but added to the fee.')) QMessageBox.information(self, 'Fee rounding', text) @@ -1266,6 +1255,9 @@ def do_update_fee(self): '''Recalculate the fee. If the fee was manually input, retain it, but still build the TX to see if there are enough funds. ''' + if not self.config.get('offline') and self.config.is_dynfee() and not self.config.has_fee_estimates(): + self.statusBar().showMessage(_('Waiting for fee estimates...')) + return False freeze_fee = self.is_send_fee_frozen() freeze_feerate = self.is_send_feerate_frozen() amount = '!' if self.is_max else self.amount_e.get_amount() @@ -1336,9 +1328,12 @@ def do_update_fee(self): # show/hide fee rounding icon feerounding = (fee - displayed_fee) if fee else 0 - self.set_feerounding_text(feerounding) - self.feerounding_icon.setToolTip(self.feerounding_text) - self.feerounding_icon.setVisible(bool(feerounding)) + if feerounding: + self.feerounding_icon.setToolTip( + _('additional {} satoshis will be added').format(feerounding)) + self.feerounding_icon.setVisible(True) + else: + self.feerounding_icon.setVisible(False) if self.is_max: amount = tx.output_value() @@ -1388,7 +1383,7 @@ def protected(func): def request_password(self, *args, **kwargs): parent = self.top_level_window() password = None - while self.wallet.has_keystore_encryption(): + while self.wallet.has_password(): password = self.password_dialog(parent=parent) if password is None: # User cancelled password input @@ -1453,10 +1448,10 @@ def read_send_tab(self): for _type, addr, amount in outputs: if addr is None: - self.show_error(_('Bitcoin Address is None')) + self.show_error(_('Zcoin Address is None')) return if _type == TYPE_ADDRESS and not bitcoin.is_address(addr): - self.show_error(_('Invalid Bitcoin Address')) + self.show_error(_('Invalid Zcoin Address')) return if amount is None: self.show_error(_('Invalid Amount')) @@ -1523,7 +1518,7 @@ def do_send(self, preview = False): if fee > confirm_rate * tx.estimated_size() / 1000: msg.append(_('Warning') + ': ' + _("The fee for this transaction seems unusually high.")) - if self.wallet.has_keystore_encryption(): + if self.wallet.has_password(): msg.append("") msg.append(_("Enter your password to proceed")) password = self.password_dialog('\n'.join(msg)) @@ -1673,7 +1668,7 @@ def pay_to_URI(self, URI): try: out = util.parse_URI(URI, self.on_pr) except BaseException as e: - self.show_error(_('Invalid bitcoin URI:') + '\n' + str(e)) + self.show_error(_('Invalid zcoin URI:') + '\n' + str(e)) return self.show_send_tab() r = out.get('r') @@ -1926,37 +1921,17 @@ def update_lock_icon(self): def update_buttons_on_seed(self): self.seed_button.setVisible(self.wallet.has_seed()) - self.password_button.setVisible(self.wallet.may_have_password()) + self.password_button.setVisible(self.wallet.can_change_password()) self.send_button.setVisible(not self.wallet.is_watching_only()) def change_password_dialog(self): - from electrum.storage import STO_EV_XPUB_PW - if self.wallet.get_available_storage_encryption_version() == STO_EV_XPUB_PW: - from .password_dialog import ChangePasswordDialogForHW - d = ChangePasswordDialogForHW(self, self.wallet) - ok, encrypt_file = d.run() - if not ok: - return - - try: - hw_dev_pw = self.wallet.keystore.get_password_for_storage_encryption() - except UserCancelled: - return - except BaseException as e: - traceback.print_exc(file=sys.stderr) - self.show_error(str(e)) - return - old_password = hw_dev_pw if self.wallet.has_password() else None - new_password = hw_dev_pw if encrypt_file else None - else: - from .password_dialog import ChangePasswordDialogForSW - d = ChangePasswordDialogForSW(self, self.wallet) - ok, old_password, new_password, encrypt_file = d.run() - + from .password_dialog import ChangePasswordDialog + d = ChangePasswordDialog(self, self.wallet) + ok, password, new_password, encrypt_file = d.run() if not ok: return try: - self.wallet.update_password(old_password, new_password, encrypt_file) + self.wallet.update_password(password, new_password, encrypt_file) except BaseException as e: self.show_error(str(e)) return @@ -1964,7 +1939,7 @@ def change_password_dialog(self): traceback.print_exc(file=sys.stdout) self.show_error(_('Failed to update password')) return - msg = _('Password was updated successfully') if self.wallet.has_password() else _('Password is disabled, this wallet is not protected') + msg = _('Password was updated successfully') if new_password else _('Password is disabled, this wallet is not protected') self.show_message(msg, title=_("Success")) self.update_lock_icon() @@ -2118,10 +2093,7 @@ def do_sign(self, address, message, signature, password): address = address.text().strip() message = message.toPlainText().strip() if not bitcoin.is_address(address): - self.show_message(_('Invalid Bitcoin address.')) - return - if self.wallet.is_watching_only(): - self.show_message(_('This is a watching-only wallet.')) + self.show_message(_('Invalid Zcoin address.')) return if not self.wallet.is_mine(address): self.show_message(_('Address not in wallet.')) @@ -2141,7 +2113,7 @@ def do_verify(self, address, message, signature): address = address.text().strip() message = message.toPlainText().strip().encode('utf-8') if not bitcoin.is_address(address): - self.show_message(_('Invalid Bitcoin address.')) + self.show_message(_('Invalid Zcoin address.')) return try: # This can throw on invalid base64 @@ -2193,9 +2165,6 @@ def sign_verify_message(self, address=''): @protected def do_decrypt(self, message_e, pubkey_e, encrypted_e, password): - if self.wallet.is_watching_only(): - self.show_message(_('This is a watching-only wallet.')) - return cyphertext = encrypted_e.toPlainText() task = partial(self.wallet.decrypt_message, pubkey_e.text(), cyphertext, password) self.wallet.thread.add(task, on_success=lambda text: message_e.setText(text.decode('utf-8'))) @@ -2256,7 +2225,7 @@ def password_dialog(self, msg=None, parent=None): return d.run() def tx_from_text(self, txt): - from electrum.transaction import tx_from_str + from electrum_xzc.transaction import tx_from_str try: tx = tx_from_str(txt) return Transaction(tx) @@ -2265,7 +2234,7 @@ def tx_from_text(self, txt): return def read_tx_from_qrcode(self): - from electrum import qrscanner + from electrum_xzc import qrscanner try: data = qrscanner.scan_barcode(self.config.get_video_device()) except BaseException as e: @@ -2274,7 +2243,7 @@ def read_tx_from_qrcode(self): if not data: return # if the user scanned a bitcoin URI - if str(data).startswith("bitcoin:"): + if str(data).startswith("zcoin:"): self.pay_to_URI(data) return # else if the user scanned an offline signed tx @@ -2297,7 +2266,7 @@ def read_tx_from_file(self): return self.tx_from_text(file_content) def do_process_from_text(self): - from electrum.transaction import SerializationError + from electrum_xzc.transaction import SerializationError text = text_dialog(self, _('Input raw transaction'), _("Transaction:"), _("Load transaction")) if not text: return @@ -2309,7 +2278,7 @@ def do_process_from_text(self): self.show_critical(_("Electrum was unable to deserialize the transaction:") + "\n" + str(e)) def do_process_from_file(self): - from electrum.transaction import SerializationError + from electrum_xzc.transaction import SerializationError try: tx = self.read_tx_from_file() if tx: @@ -2318,7 +2287,7 @@ def do_process_from_file(self): self.show_critical(_("Electrum was unable to deserialize the transaction:") + "\n" + str(e)) def do_process_from_txid(self): - from electrum import transaction + from electrum_xzc import transaction txid, ok = QInputDialog.getText(self, _('Lookup transaction'), _('Transaction ID') + ':') if ok and txid: txid = str(txid).strip() @@ -2353,7 +2322,7 @@ def export_privkeys_dialog(self, password): e.setReadOnly(True) vbox.addWidget(e) - defaultname = 'electrum-private-keys.csv' + defaultname = 'electrum-xzc-private-keys.csv' select_msg = _('Select file to export your private keys to') hbox, filename_e, csv_button = filename_field(self, self.config, defaultname, select_msg) vbox.addLayout(hbox) @@ -2450,7 +2419,7 @@ def do_import_labels(self): def do_export_labels(self): labels = self.wallet.labels try: - fileName = self.getSaveFileName(_("Select file to save your labels"), 'electrum_labels.json', "*.json") + fileName = self.getSaveFileName(_("Select file to save your labels"), 'electrum-xzc_labels.json', "*.json") if fileName: with open(fileName, 'w+') as f: json.dump(labels, f, indent=4, sort_keys=True) @@ -2462,7 +2431,7 @@ def export_history_dialog(self): d = WindowModalDialog(self, _('Export History')) d.setMinimumSize(400, 200) vbox = QVBoxLayout(d) - defaultname = os.path.expanduser('~/electrum-history.csv') + defaultname = os.path.expanduser('~/electrum-xzc-history.csv') select_msg = _('Select file to export your wallet transactions to') hbox, filename_e, csv_button = filename_field(self, self.config, defaultname, select_msg) vbox.addLayout(hbox) @@ -2494,13 +2463,32 @@ def plot_history_dialog(self): plt.show() def do_export_history(self, wallet, fileName, is_csv): - history = wallet.export_history(fx=self.fx) + history = wallet.get_history() lines = [] for item in history: + tx_hash, height, confirmations, timestamp, value, balance = item + if height>0: + if timestamp is not None: + time_string = format_time(timestamp) + else: + time_string = _("unverified") + else: + time_string = _("unconfirmed") + + if value is not None: + value_string = format_satoshis(value, True) + else: + value_string = '--' + + if tx_hash: + label = wallet.get_label(tx_hash) + else: + label = "" + if is_csv: - lines.append([item['txid'], item.get('label', ''), item['confirmations'], item['value'], item['date']]) + lines.append([tx_hash, label, confirmations, value_string, time_string]) else: - lines.append(item) + lines.append({'txid':tx_hash, 'date':"%16s"%time_string, 'label':label, 'value':value_string}) with open(fileName, "w+") as f: if is_csv: @@ -2510,7 +2498,7 @@ def do_export_history(self, wallet, fileName, is_csv): transaction.writerow(line) else: import json - f.write(json.dumps(lines, indent=4)) + f.write(json.dumps(lines, indent = 4)) def sweep_key_dialog(self): d = WindowModalDialog(self, title=_('Sweep private keys')) @@ -2553,7 +2541,7 @@ def get_pk(): address_e.textChanged.connect(on_address) if not d.exec_(): return - from electrum.wallet import sweep_preparations + from electrum_xzc.wallet import sweep_preparations try: self.do_clear() coins, keypairs = sweep_preparations(get_pk(), self.network) @@ -2626,7 +2614,7 @@ def settings_dialog(self): lang_help = _('Select which language is used in the GUI (after restart).') lang_label = HelpLabel(_('Language') + ':', lang_help) lang_combo = QComboBox() - from electrum.i18n import languages + from electrum_xzc.i18n import languages lang_combo.addItems(list(languages.values())) try: index = languages.keys().index(self.config.get("language",'')) @@ -2661,21 +2649,6 @@ def on_nz(): nz.valueChanged.connect(on_nz) gui_widgets.append((nz_label, nz)) - msg = '\n'.join([ - _('Time based: fee rate is based on average confirmation time estimates'), - _('Mempool based: fee rate is targetting a depth in the memory pool') - ] - ) - fee_type_label = HelpLabel(_('Fee estimation') + ':', msg) - fee_type_combo = QComboBox() - fee_type_combo.addItems([_('Time based'), _('Mempool based')]) - fee_type_combo.setCurrentIndex(1 if self.config.use_mempool_fees() else 0) - def on_fee_type(x): - self.config.set_key('mempool_fees', x==1) - self.fee_slider.update() - fee_type_combo.currentIndexChanged.connect(on_fee_type) - fee_widgets.append((fee_type_label, fee_type_combo)) - def on_dynfee(x): self.config.set_key('dynamic_fees', x == Qt.Checked) self.fee_slider.update() @@ -2705,6 +2678,18 @@ def on_use_rbf(x): use_rbf_cb.stateChanged.connect(on_use_rbf) fee_widgets.append((use_rbf_cb, None)) + self.fee_unit = self.config.get('fee_unit', 0) + fee_unit_label = HelpLabel(_('Fee Unit') + ':', '') + fee_unit_combo = QComboBox() + fee_unit_combo.addItems([_('sat/byte'), _('mXZC/kB')]) + fee_unit_combo.setCurrentIndex(self.fee_unit) + def on_fee_unit(x): + self.fee_unit = x + self.config.set_key('fee_unit', x) + self.fee_slider.update() + fee_unit_combo.currentIndexChanged.connect(on_fee_unit) + fee_widgets.append((fee_unit_label, fee_unit_combo)) + msg = _('OpenAlias record, used to receive coins and to sign payment requests.') + '\n\n'\ + _('The following alias providers are available:') + '\n'\ + '\n'.join(['https://cryptoname.co/', 'http://xmr.link']) + '\n\n'\ @@ -2755,9 +2740,9 @@ def on_alias_edit(): SSL_id_e.setReadOnly(True) id_widgets.append((SSL_id_label, SSL_id_e)) - units = ['BTC', 'mBTC', 'bits'] + units = ['XZC', 'mXZC', 'bits'] msg = _('Base unit of your wallet.')\ - + '\n1BTC=1000mBTC.\n' \ + + '\n1XZC=1000mXZC.\n' \ + _(' These settings affects the fields in the Send tab')+' ' unit_label = HelpLabel(_('Base unit') + ':', msg) unit_combo = QComboBox() @@ -2769,9 +2754,9 @@ def on_unit(x, nz): return edits = self.amount_e, self.fee_e, self.receive_amount_e amounts = [edit.get_amount() for edit in edits] - if unit_result == 'BTC': + if unit_result == 'XZC': self.decimal_point = 8 - elif unit_result == 'mBTC': + elif unit_result == 'mXZC': self.decimal_point = 5 elif unit_result == 'bits': self.decimal_point = 2 @@ -2800,7 +2785,7 @@ def on_be(x): block_ex_combo.currentIndexChanged.connect(on_be) gui_widgets.append((block_ex_label, block_ex_combo)) - from electrum import qrscanner + from electrum_xzc import qrscanner system_cameras = qrscanner._find_system_cameras() qr_combo = QComboBox() qr_combo.addItem("Default","default") @@ -2875,18 +2860,6 @@ def on_unconf(x): unconf_cb.stateChanged.connect(on_unconf) tx_widgets.append((unconf_cb, None)) - def on_outrounding(x): - self.config.set_key('coin_chooser_output_rounding', bool(x)) - enable_outrounding = self.config.get('coin_chooser_output_rounding', False) - outrounding_cb = QCheckBox(_('Enable output value rounding')) - outrounding_cb.setToolTip( - _('Set the value of the change output so that it has similar precision to the other outputs.') + '\n' + - _('This might improve your privacy somewhat.') + '\n' + - _('If enabled, at most 100 satoshis might be lost due to this, per transaction.')) - outrounding_cb.setChecked(enable_outrounding) - outrounding_cb.stateChanged.connect(on_outrounding) - tx_widgets.append((outrounding_cb, None)) - # Fiat Currency hist_checkbox = QCheckBox() fiat_address_checkbox = QCheckBox() diff --git a/gui/qt/network_dialog.py b/gui/qt/network_dialog.py index f1c578e36c29..f0e5f02877fd 100644 --- a/gui/qt/network_dialog.py +++ b/gui/qt/network_dialog.py @@ -30,10 +30,10 @@ from PyQt5.QtWidgets import * import PyQt5.QtCore as QtCore -from electrum.i18n import _ -from electrum.bitcoin import NetworkConstants -from electrum.util import print_error -from electrum.network import serialize_server, deserialize_server +from electrum_xzc.i18n import _ +from electrum_xzc.bitcoin import NetworkConstants +from electrum_xzc.util import print_error +from electrum_xzc.network import serialize_server, deserialize_server from .util import * diff --git a/gui/qt/password_dialog.py b/gui/qt/password_dialog.py index e0da43021c8e..5784307b283b 100644 --- a/gui/qt/password_dialog.py +++ b/gui/qt/password_dialog.py @@ -26,12 +26,12 @@ from PyQt5.QtCore import Qt from PyQt5.QtGui import * from PyQt5.QtWidgets import * -from electrum.i18n import _ +from electrum_xzc.i18n import _ from .util import * import re import math -from electrum.plugins import run_hook +from electrum_xzc.plugins import run_hook def check_password_strength(password): @@ -57,7 +57,7 @@ class PasswordLayout(object): titles = [_("Enter Password"), _("Change Password"), _("Enter Passphrase")] - def __init__(self, wallet, msg, kind, OK_button, force_disable_encrypt_cb=False): + def __init__(self, wallet, msg, kind, OK_button): self.wallet = wallet self.pw = QLineEdit() @@ -126,8 +126,7 @@ def __init__(self, wallet, msg, kind, OK_button, force_disable_encrypt_cb=False) def enable_OK(): ok = self.new_pw.text() == self.conf_pw.text() OK_button.setEnabled(ok) - self.encrypt_cb.setEnabled(ok and bool(self.new_pw.text()) - and not force_disable_encrypt_cb) + self.encrypt_cb.setEnabled(ok and bool(self.new_pw.text())) self.new_pw.textChanged.connect(enable_OK) self.conf_pw.textChanged.connect(enable_OK) @@ -164,96 +163,28 @@ def new_password(self): return pw -class PasswordLayoutForHW(object): - - def __init__(self, wallet, msg, kind, OK_button): - self.wallet = wallet - - self.kind = kind - self.OK_button = OK_button - - vbox = QVBoxLayout() - label = QLabel(msg + "\n") - label.setWordWrap(True) - - grid = QGridLayout() - grid.setSpacing(8) - grid.setColumnMinimumWidth(0, 150) - grid.setColumnMinimumWidth(1, 100) - grid.setColumnStretch(1,1) - - logo_grid = QGridLayout() - logo_grid.setSpacing(8) - logo_grid.setColumnMinimumWidth(0, 70) - logo_grid.setColumnStretch(1,1) - - logo = QLabel() - logo.setAlignment(Qt.AlignCenter) - - logo_grid.addWidget(logo, 0, 0) - logo_grid.addWidget(label, 0, 1, 1, 2) - vbox.addLayout(logo_grid) - - if wallet and wallet.has_storage_encryption(): - lockfile = ":icons/lock.png" - else: - lockfile = ":icons/unlock.png" - logo.setPixmap(QPixmap(lockfile).scaledToWidth(36)) - - vbox.addLayout(grid) - - self.encrypt_cb = QCheckBox(_('Encrypt wallet file')) - grid.addWidget(self.encrypt_cb, 1, 0, 1, 2) - - self.vbox = vbox - - def title(self): - return _("Toggle Encryption") - - def layout(self): - return self.vbox - - -class ChangePasswordDialogBase(WindowModalDialog): +class ChangePasswordDialog(WindowModalDialog): def __init__(self, parent, wallet): WindowModalDialog.__init__(self, parent) - is_encrypted = wallet.has_storage_encryption() - OK_button = OkButton(self) - - self.create_password_layout(wallet, is_encrypted, OK_button) - - self.setWindowTitle(self.playout.title()) - vbox = QVBoxLayout(self) - vbox.addLayout(self.playout.layout()) - vbox.addStretch(1) - vbox.addLayout(Buttons(CancelButton(self), OK_button)) - self.playout.encrypt_cb.setChecked(is_encrypted) - - def create_password_layout(self, wallet, is_encrypted, OK_button): - raise NotImplementedError() - - -class ChangePasswordDialogForSW(ChangePasswordDialogBase): - - def __init__(self, parent, wallet): - ChangePasswordDialogBase.__init__(self, parent, wallet) - if not wallet.has_password(): - self.playout.encrypt_cb.setChecked(True) - - def create_password_layout(self, wallet, is_encrypted, OK_button): + is_encrypted = wallet.storage.is_encrypted() if not wallet.has_password(): msg = _('Your wallet is not protected.') msg += ' ' + _('Use this dialog to add a password to your wallet.') else: if not is_encrypted: - msg = _('Your bitcoins are password protected. However, your wallet file is not encrypted.') + msg = _('Your zcoins are password protected. However, your wallet file is not encrypted.') else: msg = _('Your wallet is password protected and encrypted.') msg += ' ' + _('Use this dialog to change your password.') - self.playout = PasswordLayout( - wallet, msg, PW_CHANGE, OK_button, - force_disable_encrypt_cb=not wallet.can_have_keystore_encryption()) + OK_button = OkButton(self) + self.playout = PasswordLayout(wallet, msg, PW_CHANGE, OK_button) + self.setWindowTitle(self.playout.title()) + vbox = QVBoxLayout(self) + vbox.addLayout(self.playout.layout()) + vbox.addStretch(1) + vbox.addLayout(Buttons(CancelButton(self), OK_button)) + self.playout.encrypt_cb.setChecked(is_encrypted or not wallet.has_password()) def run(self): if not self.exec_(): @@ -261,26 +192,6 @@ def run(self): return True, self.playout.old_password(), self.playout.new_password(), self.playout.encrypt_cb.isChecked() -class ChangePasswordDialogForHW(ChangePasswordDialogBase): - - def __init__(self, parent, wallet): - ChangePasswordDialogBase.__init__(self, parent, wallet) - - def create_password_layout(self, wallet, is_encrypted, OK_button): - if not is_encrypted: - msg = _('Your wallet file is NOT encrypted.') - else: - msg = _('Your wallet file is encrypted.') - msg += '\n' + _('Note: If you enable this setting, you will need your hardware device to open your wallet.') - msg += '\n' + _('Use this dialog to toggle encryption.') - self.playout = PasswordLayoutForHW(wallet, msg, PW_CHANGE, OK_button) - - def run(self): - if not self.exec_(): - return False, None - return True, self.playout.encrypt_cb.isChecked() - - class PasswordDialog(WindowModalDialog): def __init__(self, parent=None, msg=None): diff --git a/gui/qt/paytoedit.py b/gui/qt/paytoedit.py index d13d80390145..31d7d9ab7695 100644 --- a/gui/qt/paytoedit.py +++ b/gui/qt/paytoedit.py @@ -30,7 +30,7 @@ import re from decimal import Decimal -from electrum import bitcoin +from electrum_xzc import bitcoin from . import util @@ -88,7 +88,7 @@ def parse_output(self, x): return bitcoin.TYPE_SCRIPT, script def parse_script(self, x): - from electrum.transaction import opcodes, push_script + from electrum_xzc.transaction import opcodes, push_script script = '' for word in x.split(): if word[0:3] == 'OP_': @@ -122,7 +122,7 @@ def check_text(self): self.payto_address = None if len(lines) == 1: data = lines[0] - if data.startswith("bitcoin:"): + if data.startswith("zcoin:"): self.scan_f(data) return try: @@ -260,7 +260,7 @@ def keyPressEvent(self, e): def qr_input(self): data = super(PayToEdit,self).qr_input() - if data.startswith("bitcoin:"): + if data.startswith("zcoin:"): self.scan_f(data) # TODO: update fee diff --git a/gui/qt/qrcodewidget.py b/gui/qt/qrcodewidget.py index dc444d6a5fd3..453a329e0d60 100644 --- a/gui/qt/qrcodewidget.py +++ b/gui/qt/qrcodewidget.py @@ -8,8 +8,8 @@ import os import qrcode -import electrum -from electrum.i18n import _ +import electrum_xzc +from electrum_xzc.i18n import _ from .util import WindowModalDialog @@ -102,7 +102,7 @@ def __init__(self, data, parent=None, title = "", show_text=False): hbox = QHBoxLayout() hbox.addStretch(1) - config = electrum.get_config() + config = electrum_xzc.get_config() if config: filename = os.path.join(config.path, "qrcode.png") diff --git a/gui/qt/qrtextedit.py b/gui/qt/qrtextedit.py index aef68f0539ae..78cdce118a4f 100644 --- a/gui/qt/qrtextedit.py +++ b/gui/qt/qrtextedit.py @@ -1,6 +1,6 @@ -from electrum.i18n import _ -from electrum.plugins import run_hook +from electrum_xzc.i18n import _ +from electrum_xzc.plugins import run_hook from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import QFileDialog @@ -51,7 +51,7 @@ def file_input(self): self.setText(data) def qr_input(self): - from electrum import qrscanner, get_config + from electrum_xzc import qrscanner, get_config try: data = qrscanner.scan_barcode(get_config().get_video_device()) except BaseException as e: diff --git a/gui/qt/qrwindow.py b/gui/qt/qrwindow.py index 163c462cc208..ac39e5f5c5a4 100644 --- a/gui/qt/qrwindow.py +++ b/gui/qt/qrwindow.py @@ -29,8 +29,8 @@ from PyQt5.QtGui import * from PyQt5.QtWidgets import QHBoxLayout, QVBoxLayout, QLabel, QWidget -from electrum_gui.qt.qrcodewidget import QRCodeWidget -from electrum.i18n import _ +from electrum_xzc_gui.qt.qrcodewidget import QRCodeWidget +from electrum_xzc.i18n import _ if platform.system() == 'Windows': MONOSPACE_FONT = 'Lucida Console' @@ -46,7 +46,7 @@ class QR_Window(QWidget): def __init__(self, win): QWidget.__init__(self) self.win = win - self.setWindowTitle('Electrum - '+_('Payment Request')) + self.setWindowTitle('Electrum-XZC - '+_('Payment Request')) self.setMinimumSize(800, 250) self.address = '' self.label = '' diff --git a/gui/qt/request_list.py b/gui/qt/request_list.py index 59b084ff9583..4e2ae27c1a31 100644 --- a/gui/qt/request_list.py +++ b/gui/qt/request_list.py @@ -23,10 +23,10 @@ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -from electrum.i18n import _ -from electrum.util import format_time, age -from electrum.plugins import run_hook -from electrum.paymentrequest import PR_UNKNOWN +from electrum_xzc.i18n import _ +from electrum_xzc.util import format_time, age +from electrum_xzc.plugins import run_hook +from electrum_xzc.paymentrequest import PR_UNKNOWN from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import QTreeWidgetItem, QMenu @@ -115,7 +115,7 @@ def create_menu(self, position): column_title = self.headerItem().text(column) column_data = item.text(column) menu = QMenu(self) - menu.addAction(_("Copy {}").format(column_title), lambda: self.parent.app.clipboard().setText(column_data)) + menu.addAction(_("Copy %s")%column_title, lambda: self.parent.app.clipboard().setText(column_data)) menu.addAction(_("Copy URI"), lambda: self.parent.view_and_paste('URI', '', self.parent.get_request_URI(addr))) menu.addAction(_("Save as BIP70 file"), lambda: self.parent.export_payment_request(addr)) menu.addAction(_("Delete"), lambda: self.parent.delete_payment_request(addr)) diff --git a/gui/qt/seed_dialog.py b/gui/qt/seed_dialog.py index 09e20cef8935..fba21c827686 100644 --- a/gui/qt/seed_dialog.py +++ b/gui/qt/seed_dialog.py @@ -26,7 +26,7 @@ from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import * -from electrum.i18n import _ +from electrum_xzc.i18n import _ from .util import * from .qrtextedit import ShowQRTextEdit, ScanQRTextEdit @@ -136,14 +136,14 @@ def get_seed(self): return ' '.join(text.split()) def on_edit(self): - from electrum.bitcoin import seed_type + from electrum_xzc.bitcoin import seed_type s = self.get_seed() b = self.is_seed(s) if not self.is_bip39: t = seed_type(s) label = _('Seed Type') + ': ' + t if t else '' else: - from electrum.keystore import bip39_is_checksum_valid + from electrum_xzc.keystore import bip39_is_checksum_valid is_checksum, is_wordlist = bip39_is_checksum_valid(s) status = ('checksum: ' + ('ok' if is_checksum else 'failed')) if is_wordlist else 'unknown wordlist' label = 'BIP39' + ' (%s)'%status @@ -172,7 +172,7 @@ def on_edit(self): class SeedDialog(WindowModalDialog): def __init__(self, parent, seed, passphrase): - WindowModalDialog.__init__(self, parent, ('Electrum - ' + _('Seed'))) + WindowModalDialog.__init__(self, parent, ('Electrum-XZC - ' + _('Seed'))) self.setMinimumWidth(400) vbox = QVBoxLayout(self) title = _("Your wallet generation seed is:") diff --git a/gui/qt/transaction_dialog.py b/gui/qt/transaction_dialog.py index 5097af28a047..e584f3c978bb 100644 --- a/gui/qt/transaction_dialog.py +++ b/gui/qt/transaction_dialog.py @@ -30,12 +30,12 @@ from PyQt5.QtGui import * from PyQt5.QtWidgets import * -from electrum.bitcoin import base_encode -from electrum.i18n import _ -from electrum.plugins import run_hook +from electrum_xzc.bitcoin import base_encode +from electrum_xzc.i18n import _ +from electrum_xzc.plugins import run_hook -from electrum.util import bfh -from electrum.wallet import UnrelatedTransactionException +from electrum_xzc.util import bfh +from electrum_xzc.wallet import UnrelatedTransactionException from .util import * @@ -179,13 +179,10 @@ def sign_done(success): self.main_window.sign_tx(self.tx, sign_done) def save(self): - if not self.wallet.add_transaction(self.tx.txid(), self.tx): - self.show_error(_("Transaction could not be saved. It conflicts with current history.")) - return + self.wallet.add_transaction(self.tx.txid(), self.tx) self.wallet.save_transactions(write=True) - # need to update at least: history_list, utxo_list, address_list - self.main_window.need_update.set() + self.main_window.history_list.update() self.save_button.setDisabled(True) self.show_message(_("Transaction saved successfully")) @@ -221,11 +218,11 @@ def update(self): if timestamp: time_str = datetime.datetime.fromtimestamp(timestamp).isoformat(' ')[:-3] - self.date_label.setText(_("Date: {}").format(time_str)) + self.date_label.setText(_("Date: %s")%time_str) self.date_label.show() elif exp_n: - text = '%.2f MB'%(exp_n/1000000) - self.date_label.setText(_('Position in mempool') + ': ' + text + ' ' + _('from tip')) + text = '%d blocks'%(exp_n) if exp_n > 0 else _('unknown (low fee)') + self.date_label.setText(_('Expected confirmation time') + ': ' + text) self.date_label.show() else: self.date_label.hide() diff --git a/gui/qt/util.py b/gui/qt/util.py index c0bdf62e8300..aba16e0e7907 100644 --- a/gui/qt/util.py +++ b/gui/qt/util.py @@ -6,7 +6,7 @@ from collections import namedtuple from functools import partial -from electrum.i18n import _ +from electrum_xzc.i18n import _ from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import * @@ -21,7 +21,7 @@ dialogs = [] -from electrum.paymentrequest import PR_UNPAID, PR_PAID, PR_EXPIRED +from electrum_xzc.paymentrequest import PR_UNPAID, PR_PAID, PR_EXPIRED pr_icons = { PR_UNPAID:":icons/unpaid.png", @@ -389,9 +389,7 @@ def __init__(self, parent, create_menu, headers, stretch_column=None, self.editor = None self.pending_update = False if editable_columns is None: - editable_columns = {stretch_column} - else: - editable_columns = set(editable_columns) + editable_columns = [stretch_column] self.editable_columns = editable_columns self.setItemDelegate(ElectrumItemDelegate(self)) self.itemDoubleClicked.connect(self.on_doubleclick) @@ -480,12 +478,8 @@ def update(self): self.pending_update = True else: self.setUpdatesEnabled(False) - scroll_pos = self.verticalScrollBar().value() self.on_update() self.setUpdatesEnabled(True) - # To paint the list before resetting the scroll position - self.parent.app.processEvents() - self.verticalScrollBar().setValue(scroll_pos) if self.current_filter: self.filter(self.current_filter) diff --git a/gui/qt/utxo_list.py b/gui/qt/utxo_list.py index 40f9fa208e22..168e9edc01b3 100644 --- a/gui/qt/utxo_list.py +++ b/gui/qt/utxo_list.py @@ -23,7 +23,7 @@ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. from .util import * -from electrum.i18n import _ +from electrum_xzc.i18n import _ class UTXOList(MyTreeWidget): diff --git a/gui/stdio.py b/gui/stdio.py index 4b0daa156b5b..f86d91db1f20 100644 --- a/gui/stdio.py +++ b/gui/stdio.py @@ -1,9 +1,9 @@ from decimal import Decimal _ = lambda x:x #from i18n import _ -from electrum import WalletStorage, Wallet -from electrum.util import format_satoshis, set_verbosity -from electrum.bitcoin import is_address, COIN, TYPE_ADDRESS +from electrum_xzc import WalletStorage, Wallet +from electrum_xzc.util import format_satoshis, set_verbosity +from electrum_xzc.bitcoin import is_address, COIN, TYPE_ADDRESS import getpass, datetime # minimal fdisk like gui for console usage @@ -16,7 +16,7 @@ def __init__(self, config, daemon, plugins): self.network = daemon.network storage = WalletStorage(config.get_wallet_path()) if not storage.file_exists: - print("Wallet not found. try 'electrum create'") + print("Wallet not found. try 'electrum-xzc create'") exit() if storage.is_encrypted(): password = getpass.getpass('Password:', stream=None) @@ -163,7 +163,7 @@ def main(self): def do_send(self): if not is_address(self.str_recipient): - print(_('Invalid Bitcoin address')) + print(_('Invalid Zcoin address')) return try: amount = int(Decimal(self.str_amount) * COIN) @@ -208,12 +208,12 @@ def do_send(self): print(_('Error')) def network_dialog(self): - print("use 'electrum setconfig server/proxy' to change your network settings") + print("use 'electrum-xzc setconfig server/proxy' to change your network settings") return True def settings_dialog(self): - print("use 'electrum setconfig' to change your settings") + print("use 'electrum-xzc setconfig' to change your settings") return True def password_dialog(self): diff --git a/gui/text.py b/gui/text.py index 9ecf91affaaa..01b173c4b3d7 100644 --- a/gui/text.py +++ b/gui/text.py @@ -3,10 +3,10 @@ from decimal import Decimal import getpass -import electrum -from electrum.util import format_satoshis, set_verbosity -from electrum.bitcoin import is_address, COIN, TYPE_ADDRESS -from electrum import Wallet, WalletStorage +import electrum_xzc as electrum +from electrum_xzc.util import format_satoshis, set_verbosity +from electrum_xzc.bitcoin import is_address, COIN, TYPE_ADDRESS +from electrum_xzc import Wallet, WalletStorage _ = lambda x:x @@ -20,7 +20,7 @@ def __init__(self, config, daemon, plugins): self.network = daemon.network storage = WalletStorage(config.get_wallet_path()) if not storage.file_exists(): - print("Wallet not found. try 'electrum create'") + print("Wallet not found. try 'electrum-xzc create'") exit() if storage.is_encrypted(): password = getpass.getpass('Password:', stream=None) @@ -320,7 +320,7 @@ def do_clear(self): def do_send(self): if not is_address(self.str_recipient): - self.show_message(_('Invalid Bitcoin address')) + self.show_message(_('Invalid Zcoin address')) return try: amount = int(Decimal(self.str_amount) * COIN) diff --git a/icons.qrc b/icons.qrc index 195e9af9dd7f..ab55d88927aa 100644 --- a/icons.qrc +++ b/icons.qrc @@ -1,6 +1,6 @@ - icons/electrum.png + icons/electrum-xzc.png icons/clock1.png icons/clock2.png icons/clock3.png diff --git a/icons/electrum-xzc.png b/icons/electrum-xzc.png new file mode 100644 index 0000000000000000000000000000000000000000..333a7bd7fbbdbb2c4b36d86b90b6846f7f35baa5 GIT binary patch literal 8697 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 literal 0 HcmV?d00001 diff --git a/icons/electrum.ico b/icons/electrum.ico index 618bc99e2aaeb553c3ae8da1ef1ab1847766e2a6..269bd7bb4bdf6d308f7e70b38a7a6741f68903c2 100644 GIT binary patch literal 289766 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 UB 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 H(YAjB8B%B( literal 51631 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 diff --git a/icons/electrum_dark_icon.png b/icons/electrum_dark_icon.png index 6fee7de9f74c2ee792c60d373ba493a824df5b5a..94d1b34127f66133a3c0990c7b8d8867658ab0b9 100644 GIT binary patch delta 622 zcmeyu`IBpcNZpZkb%9#)7O>#A(yy-sz&&wbGe(BGPyBjtCqM%l%yn|WqQF>2Xvob^$xN%nt>NF&Z!3Ws7(8A5 KT-G@yGywo(5)k_U delta 490 zcmey#^@VeSO1(m|N02WALzOB6LqjtI!_WUf`XvKHsR0ASs{{rHs~HRo;`x)}kGe51 zFwO|@332`ZAE<=E($bVFsGcgOkZ(vmmHa`j3j(MUj6myw@#4N__wUJ!Oxre}Vsc^P OWbkzLb6Mw<&;$T;m3MLg diff --git a/icons/electrum_launcher.png b/icons/electrum_launcher.png index 37af81ca9f9bbbc2ce5a1db2318abcb6a9dd950a..85339b0974ad44c936be93241b1d03c1bf6a2b81 100644 GIT binary patch literal 8747 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 diff --git a/icons/electrum_light_icon.png b/icons/electrum_light_icon.png index da52cb3c17b06b75d94d634de1f1a58c727a7c35..8db10687592fa7655af4f418c81a725852eec0d4 100644 GIT binary patch delta 622 zcmeyu`IBpcNZpZkb%9#)7O>#A(yy-sz&&wbGe(BGPyBjtCqM%l%yn|WqQF>2Xvob^$xN%nt>NF&Z!3Ws7(8A5 KT-G@yGywod&rkgT delta 490 zcmey#^@VeSO1(m|N02WALzOB6LqjtI!_WUf`XvKHsR0ASs{{rHs~HRo;`x)}kGe51 zFwO|@332`ZAE<=k?(OqbLG@HIg?vNmspJoGT@XN>U<6tZjF-3@_j)EXGHu&@iphnE Olfl!~&t;ucLK6TXzi`+9 diff --git a/icons/electrum_presplash.png b/icons/electrum_presplash.png index 8d7b414db8b023e2f008d3ff5c9b426b4733a15a..291d640de1e4264ab4d2df601c550d76d9e20624 100644 GIT binary patch literal 20301 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 H;(h&JSJQUI literal 19127 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 Hr-UW|;P5kU diff --git a/lib/base_wizard.py b/lib/base_wizard.py index ab18b7617a60..209f0e6aa070 100644 --- a/lib/base_wizard.py +++ b/lib/base_wizard.py @@ -24,19 +24,12 @@ # SOFTWARE. import os -import sys -import traceback - from . import bitcoin from . import keystore from .keystore import bip44_derivation from .wallet import Imported_Wallet, Standard_Wallet, Multisig_Wallet, wallet_types -from .storage import STO_EV_USER_PW, STO_EV_XPUB_PW, get_derivation_used_for_hw_device_encryption from .i18n import _ -from .util import UserCancelled -# hardware device setup purpose -HWD_SETUP_NEW_WALLET, HWD_SETUP_DECRYPT_WALLET = range(0, 2) class ScriptTypeNotSupported(Exception): pass @@ -91,7 +84,7 @@ def new(self): ('standard', _("Standard wallet")), ('2fa', _("Wallet with two-factor authentication")), ('multisig', _("Multi-signature wallet")), - ('imported', _("Import Bitcoin addresses or private keys")), + ('imported', _("Import Zcoin addresses or private keys")), ] choices = [pair for pair in wallet_kinds if pair[0] in wallet_types] self.choice_dialog(title=title, message=message, choices=choices, run_next=self.on_wallet_type) @@ -148,28 +141,23 @@ def choose_keystore(self): def import_addresses_or_keys(self): v = lambda x: keystore.is_address_list(x) or keystore.is_private_key_list(x) - title = _("Import Bitcoin Addresses") - message = _("Enter a list of Bitcoin addresses (this will create a watching-only wallet), or a list of private keys.") + title = _("Import Zcoin Addresses") + message = _("Enter a list of Zcoin addresses (this will create a watching-only wallet), or a list of private keys.") self.add_xpub_dialog(title=title, message=message, run_next=self.on_import, is_valid=v, allow_multi=True) def on_import(self, text): - # create a temporary wallet and exploit that modifications - # will be reflected on self.storage if keystore.is_address_list(text): - w = Imported_Wallet(self.storage) + self.wallet = Imported_Wallet(self.storage) for x in text.split(): - w.import_address(x) + self.wallet.import_address(x) elif keystore.is_private_key_list(text): k = keystore.Imported_KeyStore({}) self.storage.put('keystore', k.dump()) - w = Imported_Wallet(self.storage) + self.wallet = Imported_Wallet(self.storage) for x in text.split(): - w.import_private_key(x, None) - self.keystores.append(w.keystore) - else: - return self.terminate() - return self.run('create_wallet') + self.wallet.import_private_key(x, None) + self.terminate() def restore_from_key(self): if self.wallet_type == 'standard': @@ -188,7 +176,7 @@ def on_restore_from_key(self, text): k = keystore.from_master_key(text) self.on_keystore(k) - def choose_hw_device(self, purpose=HWD_SETUP_NEW_WALLET): + def choose_hw_device(self): title = _('Hardware Keystore') # check available plugins support = self.plugins.get_hardware_support() @@ -197,7 +185,7 @@ def choose_hw_device(self, purpose=HWD_SETUP_NEW_WALLET): _('No hardware wallet support found on your system.'), _('Please install the relevant libraries (eg python-trezor for Trezor).'), ]) - self.confirm_dialog(title=title, message=msg, run_next= lambda x: self.choose_hw_device(purpose)) + self.confirm_dialog(title=title, message=msg, run_next= lambda x: self.choose_hw_device()) return # scan devices devices = [] @@ -217,51 +205,34 @@ def choose_hw_device(self, purpose=HWD_SETUP_NEW_WALLET): _('If your device is not detected on Windows, go to "Settings", "Devices", "Connected devices", and do "Remove device". Then, plug your device again.') + ' ', _('On Linux, you might have to add a new permission to your udev rules.'), ]) - self.confirm_dialog(title=title, message=msg, run_next= lambda x: self.choose_hw_device(purpose)) + self.confirm_dialog(title=title, message=msg, run_next= lambda x: self.choose_hw_device()) return # select device self.devices = devices choices = [] for name, info in devices: state = _("initialized") if info.initialized else _("wiped") - label = info.label or _("An unnamed {}").format(name) + label = info.label or _("An unnamed %s")%name descr = "%s [%s, %s]" % (label, name, state) choices.append(((name, info), descr)) msg = _('Select a device') + ':' - self.choice_dialog(title=title, message=msg, choices=choices, run_next= lambda *args: self.on_device(*args, purpose=purpose)) + self.choice_dialog(title=title, message=msg, choices=choices, run_next=self.on_device) - def on_device(self, name, device_info, *, purpose): + def on_device(self, name, device_info): self.plugin = self.plugins.get_plugin(name) try: - self.plugin.setup_device(device_info, self, purpose) - except OSError as e: - self.show_error(_('We encountered an error while connecting to your device:') - + '\n' + str(e) + '\n' - + _('To try to fix this, we will now re-pair with your device.') + '\n' - + _('Please try again.')) - devmgr = self.plugins.device_manager - devmgr.unpair_id(device_info.device.id_) - self.choose_hw_device(purpose) - return + self.plugin.setup_device(device_info, self) except BaseException as e: self.show_error(str(e)) - self.choose_hw_device(purpose) + self.choose_hw_device() return - if purpose == HWD_SETUP_NEW_WALLET: - if self.wallet_type=='multisig': - # There is no general standard for HD multisig. - # This is partially compatible with BIP45; assumes index=0 - self.on_hw_derivation(name, device_info, "m/45'/0") - else: - f = lambda x: self.run('on_hw_derivation', name, device_info, str(x)) - self.derivation_dialog(f) - elif purpose == HWD_SETUP_DECRYPT_WALLET: - derivation = get_derivation_used_for_hw_device_encryption() - xpub = self.plugin.get_xpub(device_info.device.id_, derivation, 'standard', self) - password = keystore.Xpub.get_pubkey_from_xpub(xpub, ()) - self.storage.decrypt(password) + if self.wallet_type=='multisig': + # There is no general standard for HD multisig. + # This is partially compatible with BIP45; assumes index=0 + self.on_hw_derivation(name, device_info, "m/45'/0") else: - raise Exception('unknown purpose: %s' % purpose) + f = lambda x: self.run('on_hw_derivation', name, device_info, str(x)) + self.derivation_dialog(f) def derivation_dialog(self, f): default = bip44_derivation(0, bip43_purpose=44) @@ -394,45 +365,13 @@ def on_keystore(self, k): self.run('create_wallet') def create_wallet(self): - encrypt_keystore = any(k.may_have_password() for k in self.keystores) - # note: the following condition ("if") is duplicated logic from - # wallet.get_available_storage_encryption_version() - if self.wallet_type == 'standard' and isinstance(self.keystores[0], keystore.Hardware_KeyStore): - # offer encrypting with a pw derived from the hw device - k = self.keystores[0] - try: - k.handler = self.plugin.create_handler(self) - password = k.get_password_for_storage_encryption() - except UserCancelled: - devmgr = self.plugins.device_manager - devmgr.unpair_xpub(k.xpub) - self.choose_hw_device() - return - except BaseException as e: - traceback.print_exc(file=sys.stderr) - self.show_error(str(e)) - return - self.request_storage_encryption( - run_next=lambda encrypt_storage: self.on_password( - password, - encrypt_storage=encrypt_storage, - storage_enc_version=STO_EV_XPUB_PW, - encrypt_keystore=False)) + if any(k.may_have_password() for k in self.keystores): + self.request_password(run_next=self.on_password) else: - # prompt the user to set an arbitrary password - self.request_password( - run_next=lambda password, encrypt_storage: self.on_password( - password, - encrypt_storage=encrypt_storage, - storage_enc_version=STO_EV_USER_PW, - encrypt_keystore=encrypt_keystore), - force_disable_encrypt_cb=not encrypt_keystore) - - def on_password(self, password, *, encrypt_storage, - storage_enc_version=STO_EV_USER_PW, encrypt_keystore): - self.storage.set_keystore_encryption(bool(password) and encrypt_keystore) - if encrypt_storage: - self.storage.set_password(password, enc_version=storage_enc_version) + self.on_password(None, False) + + def on_password(self, password, encrypt): + self.storage.set_password(password, encrypt) for k in self.keystores: if k.may_have_password(): k.update_password(None, password) @@ -448,13 +387,6 @@ def on_password(self, password, *, encrypt_storage, self.storage.write() self.wallet = Multisig_Wallet(self.storage) self.run('create_addresses') - elif self.wallet_type == 'imported': - if len(self.keystores) > 0: - keys = self.keystores[0].dump() - self.storage.put('keystore', keys) - self.wallet = Imported_Wallet(self.storage) - self.wallet.storage.write() - self.terminate() def show_xpub_and_add_cosigners(self, xpub): self.show_xpub_dialog(xpub=xpub, run_next=lambda x: self.run('choose_keystore')) @@ -469,7 +401,7 @@ def choose_seed_type(self): _("The type of addresses used by your wallet will depend on your seed."), _("Segwit wallets use bech32 addresses, defined in BIP173."), _("Please note that websites and other wallets may not support these addresses yet."), - _("Thus, you might want to keep using a non-segwit wallet in order to be able to receive bitcoins during the transition period.") + _("Thus, you might want to keep using a non-segwit wallet in order to be able to receive zcoins during the transition period.") ]) choices = [ ('create_standard_seed', _('Standard')), diff --git a/lib/bitcoin.py b/lib/bitcoin.py index 84339755986f..a944b728013e 100644 --- a/lib/bitcoin.py +++ b/lib/bitcoin.py @@ -68,6 +68,21 @@ def read_json(filename, default): 'p2wsh': 0x2aa7ed3 } +# class Zcoin(Coin): +# NAME = "Zcoin" +# SHORTNAME = "XZC" +# NET = "mainnet" +# P2PKH_VERBYTE = bytes.fromhex("52") +# P2SH_VERBYTES = [bytes.fromhex("07")] +# WIF_BYTE = bytes.fromhex("d2") +# GENESIS_HASH = ('4381deb85b1b2c9843c222944b616d99' +# '7516dcbd6a964e1eaf0def0830695233') +# TX_COUNT = 1 +# TX_COUNT_HEIGHT = 1 +# TX_PER_BLOCK = 1 +# IRC_PREFIX = None +# RPC_PORT = 8888 +# REORG_LIMIT = 5000 class NetworkConstants: @@ -75,10 +90,10 @@ class NetworkConstants: def set_mainnet(cls): cls.TESTNET = False cls.WIF_PREFIX = 0x80 - cls.ADDRTYPE_P2PKH = 0 - cls.ADDRTYPE_P2SH = 5 - cls.SEGWIT_HRP = "bc" - cls.GENESIS = "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f" + cls.ADDRTYPE_P2PKH = 82 # 0x52 + cls.ADDRTYPE_P2SH = 7 # 0x07 + cls.SEGWIT_HRP = "xzc" + cls.GENESIS = "4381deb85b1b2c9843c222944b616d997516dcbd6a964e1eaf0def0830695233" cls.DEFAULT_PORTS = {'t': '50001', 's': '50002'} cls.DEFAULT_SERVERS = read_json('servers.json', {}) cls.CHECKPOINTS = read_json('checkpoints.json', []) @@ -86,11 +101,11 @@ def set_mainnet(cls): @classmethod def set_testnet(cls): cls.TESTNET = True - cls.WIF_PREFIX = 0xef + cls.WIF_PREFIX = 0xbf cls.ADDRTYPE_P2PKH = 111 - cls.ADDRTYPE_P2SH = 196 - cls.SEGWIT_HRP = "tb" - cls.GENESIS = "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943" + cls.ADDRTYPE_P2SH = 58 + cls.SEGWIT_HRP = "txzc" + cls.GENESIS = "4966625a4b2851d9fdee139e56211a0d88575f59ed816ff5e6a63deb4e3e29a0" cls.DEFAULT_PORTS = {'t':'51001', 's':'51002'} cls.DEFAULT_SERVERS = read_json('servers_testnet.json', {}) cls.CHECKPOINTS = read_json('checkpoints_testnet.json', []) @@ -100,9 +115,9 @@ def set_testnet(cls): ################################## transactions -FEE_STEP = 10000 -MAX_FEE_RATE = 300000 - +FEE_STEP = 100000 +MAX_FEE_RATE = 1000000 +FEE_TARGETS = [25, 10, 5, 2] COINBASE_MATURITY = 100 COIN = 100000000 @@ -512,10 +527,10 @@ def DecodeBase58Check(psz): # extended key export format for segwit SCRIPT_TYPES = { - 'p2pkh':0, + 'p2pkh':82, 'p2wpkh':1, 'p2wpkh-p2sh':2, - 'p2sh':5, + 'p2sh':7, 'p2wsh':6, 'p2wsh-p2sh':7 } @@ -619,7 +634,7 @@ def minikey_to_private_key(text): def msg_magic(message): length = bfh(var_int(len(message))) - return b"\x18Bitcoin Signed Message:\n" + length + message + return b"\x19Zcoin Signed Message:\n" + length + message def verify_message(address, sig, message): @@ -643,8 +658,8 @@ def verify_message(address, sig, message): return False -def encrypt_message(message, pubkey, magic=b'BIE1'): - return EC_KEY.encrypt_message(message, bfh(pubkey), magic) +def encrypt_message(message, pubkey): + return EC_KEY.encrypt_message(message, bfh(pubkey)) def chunks(l, n): @@ -789,7 +804,7 @@ def verify_message(self, sig, message): # ECIES encryption/decryption methods; AES-128-CBC with PKCS7 is used as the cipher; hmac-sha256 is used as the mac @classmethod - def encrypt_message(self, message, pubkey, magic=b'BIE1'): + def encrypt_message(self, message, pubkey): assert_bytes(message) pk = ser_to_point(pubkey) @@ -803,20 +818,20 @@ def encrypt_message(self, message, pubkey, magic=b'BIE1'): iv, key_e, key_m = key[0:16], key[16:32], key[32:] ciphertext = aes_encrypt_with_iv(key_e, iv, message) ephemeral_pubkey = bfh(ephemeral.get_public_key(compressed=True)) - encrypted = magic + ephemeral_pubkey + ciphertext + encrypted = b'BIE1' + ephemeral_pubkey + ciphertext mac = hmac.new(key_m, encrypted, hashlib.sha256).digest() return base64.b64encode(encrypted + mac) - def decrypt_message(self, encrypted, magic=b'BIE1'): + def decrypt_message(self, encrypted): encrypted = base64.b64decode(encrypted) if len(encrypted) < 85: raise Exception('invalid ciphertext: length') - magic_found = encrypted[:4] + magic = encrypted[:4] ephemeral_pubkey = encrypted[4:37] ciphertext = encrypted[37:-32] mac = encrypted[-32:] - if magic_found != magic: + if magic != b'BIE1': raise Exception('invalid ciphertext: invalid magic bytes') try: ephemeral_pubkey = ser_to_point(ephemeral_pubkey) diff --git a/lib/blockchain.py b/lib/blockchain.py index 8a69276f3d1f..65ba152c481b 100644 --- a/lib/blockchain.py +++ b/lib/blockchain.py @@ -26,8 +26,19 @@ from . import util from . import bitcoin from .bitcoin import * +import lyra2z_hash -MAX_TARGET = 0x00000000FFFF0000000000000000000000000000000000000000000000000000 +try: + import scrypt + getPoWHash = lambda x: scrypt.hash(x, x, N=1024, r=1, p=1, buflen=32) +except ImportError: + util.print_msg("Warning: package scrypt not available; synchronization could be very slow") + from .scrypt import scrypt_1024_1_1_80 as getPoWHash + +MAX_TARGET = 0x00000FFFFF000000000000000000000000000000000000000000000000000000 +HF_LYRA2VAR_HEIGHT = 500 +HF_LYRA2_HEIGHT = 8192 +HF_LYRA2Z_HEIGHT = 20500 def serialize_header(res): s = int_to_hex(res.get('version'), 4) \ @@ -57,6 +68,34 @@ def hash_header(header): header['prev_block_hash'] = '00'*32 return hash_encode(Hash(bfh(serialize_header(header)))) +def pow_hash_header(header): + # return hash_encode(getPoWHash(bfh(serialize_header(header)))) + # if (!fTestNet & & nHeight >= HF_LYRA2Z_HEIGHT) { + # lyra2z_hash(BEGIN(nVersion), BEGIN(powHash)); + # } else if (!fTestNet & & nHeight >= HF_LYRA2_HEIGHT) { + # LYRA2(BEGIN(powHash), 32, BEGIN(nVersion), 80, BEGIN(nVersion), 80, 2, 8192, 256); + # } else if (!fTestNet & & nHeight >= HF_LYRA2VAR_HEIGHT) { + # LYRA2(BEGIN(powHash), 32, BEGIN(nVersion), 80, BEGIN(nVersion), 80, 2, nHeight, 256); + # } else if (fTestNet & & nHeight >= HF_LYRA2Z_HEIGHT_TESTNET) {// testnet + # lyra2z_hash(BEGIN(nVersion), BEGIN(powHash)); + # } else if (fTestNet & & nHeight >= HF_LYRA2_HEIGHT_TESTNET) {// testnet + # LYRA2(BEGIN(powHash), 32, BEGIN(nVersion), 80, BEGIN(nVersion), 80, 2, 8192, 256); + # } else if (fTestNet & & nHeight >= HF_LYRA2VAR_HEIGHT_TESTNET) {// testnet + # LYRA2(BEGIN(powHash), 32, BEGIN(nVersion), 80, BEGIN(nVersion), 80, 2, nHeight, 256); + # } else { + # scrypt_N_1_1_256(BEGIN(nVersion), BEGIN(powHash), GetNfactor(nTime)); + # } + try: + height = header.get('block_height') + if height >= HF_LYRA2Z_HEIGHT: + return hash_encode(lyra2z_hash.getPoWHash(bfh(serialize_header(header)))) + elif height >= HF_LYRA2_HEIGHT: + return hash_encode(lyra2z_hash.getPoWHash(bfh(serialize_header(header)))) + else: + return hash_encode(lyra2z_hash.getPoWHash(bfh(serialize_header(header)))) + except Exception as e: + print_error(e) + blockchains = {} @@ -149,16 +188,21 @@ def update_size(self): self._size = os.path.getsize(p)//80 if os.path.exists(p) else 0 def verify_header(self, header, prev_hash, target): + return _hash = hash_header(header) + _powhash = pow_hash_header(header) if prev_hash != header.get('prev_block_hash'): raise BaseException("prev hash mismatch: %s vs %s" % (prev_hash, header.get('prev_block_hash'))) + if int('0x' + _powhash, 16) > target: + raise BaseException("insufficient proof of work: %s vs target %s" % (int('0x' + _powhash, 16), target)) + return if bitcoin.NetworkConstants.TESTNET: return bits = self.target_to_bits(target) if bits != header.get('bits'): raise BaseException("bits mismatch: %s vs %s" % (bits, header.get('bits'))) - if int('0x' + _hash, 16) > target: - raise BaseException("insufficient proof of work: %s vs target %s" % (int('0x' + _hash, 16), target)) + if int('0x' + _powhash, 16) > target: + raise BaseException("insufficient proof of work: %s vs target %s" % (int('0x' + _powhash, 16), target)) def verify_chunk(self, index, data): num = len(data) // 80 @@ -265,27 +309,35 @@ def get_hash(self, height): elif height < len(self.checkpoints) * 2016: assert (height+1) % 2016 == 0, height index = height // 2016 - h, t = self.checkpoints[index] + h, t, _ = self.checkpoints[index] return h else: return hash_header(self.read_header(height)) + def get_timestamp(self, height): + if height < len(self.checkpoints) * 2016 and (height+1) % 2016 == 0: + index = height // 2016 + _, _, ts = self.checkpoints[index] + return ts + return self.read_header(height).get('timestamp') + def get_target(self, index): # compute target from chunk x, used in chunk x+1 if bitcoin.NetworkConstants.TESTNET: return 0 if index == -1: - return MAX_TARGET + return 0x00000FFFF0000000000000000000000000000000000000000000000000000000 if index < len(self.checkpoints): - h, t = self.checkpoints[index] + h, t, _ = self.checkpoints[index] return t # new target - first = self.read_header(index * 2016) + # Zcoin: go back the full period unless it's the first retarget + first_timestamp = self.get_timestamp(index * 2016 - 1 if index > 0 else 0) last = self.read_header(index * 2016 + 2015) bits = last.get('bits') target = self.bits_to_target(bits) - nActualTimespan = last.get('timestamp') - first.get('timestamp') - nTargetTimespan = 14 * 24 * 60 * 60 + nActualTimespan = last.get('timestamp') - first_timestamp + nTargetTimespan = 84 * 60 * 60 nActualTimespan = max(nActualTimespan, nTargetTimespan // 4) nActualTimespan = min(nActualTimespan, nTargetTimespan * 4) new_target = min(MAX_TARGET, (target * nActualTimespan) // nTargetTimespan) @@ -293,8 +345,8 @@ def get_target(self, index): def bits_to_target(self, bits): bitsN = (bits >> 24) & 0xff - if not (bitsN >= 0x03 and bitsN <= 0x1d): - raise BaseException("First part of bits should be in [0x03, 0x1d]") + if not (bitsN >= 0x03 and bitsN <= 0x1e): + raise BaseException("First part of bits should be in [0x03, 0x1e]") bitsBase = bits & 0xffffff if not (bitsBase >= 0x8000 and bitsBase <= 0x7fffff): raise BaseException("Second part of bits should be in [0x8000, 0x7fffff]") @@ -348,5 +400,7 @@ def get_checkpoints(self): for index in range(n): h = self.get_hash((index+1) * 2016 -1) target = self.get_target(index) - cp.append((h, target)) + # Zcoin: also store the timestamp of the last block + tstamp = self.get_timestamp((index+1) * 2016 - 1) + cp.append((h, target, tstamp)) return cp diff --git a/lib/checkpoints.json b/lib/checkpoints.json index 0055895f484d..0637a088a01e 100644 --- a/lib/checkpoints.json +++ b/lib/checkpoints.json @@ -1,990 +1 @@ -[ - [ - "00000000693067b0e6b440bc51450b9f3850561b07f6d3c021c54fbd6abb9763", - 26959535291011309493156476344723991336010898738574164086137773096960 - ], - [ - "00000000f037ad09d0b05ee66b8c1da83030abaf909d2b1bf519c3c7d2cd3fdf", - 26959535291011309493156476344723991336010898738574164086137773096960 - ], - [ - "000000006ce8b5f16fcedde13acbc9641baa1c67734f177d770a4069c06c9de8", - 26959535291011309493156476344723991336010898738574164086137773096960 - ], - [ - "00000000563298de120522b5ae17da21aaae02eee2d7fcb5be65d9224dbd601c", - 26959535291011309493156476344723991336010898738574164086137773096960 - ], - [ - "000000009b0a4b2833b4a0aa61171ee75b8eb301ac45a18713795a72e461a946", - 26959535291011309493156476344723991336010898738574164086137773096960 - ], - [ - "00000000fa8a7363e8f6fdc88ec55edf264c9c7b31268c26e497a4587c750584", - 26959535291011309493156476344723991336010898738574164086137773096960 - ], - [ - "000000008ac55b5cd76a5c176f2457f0e9df5ff1c719d939f1022712b1ba2092", - 26959535291011309493156476344723991336010898738574164086137773096960 - ], - [ - "000000007f0c796631f00f542c0b402d638d3518bc208f8c9e5d29d2f169c084", - 26959535291011309493156476344723991336010898738574164086137773096960 - ], - [ - "00000000ffb062296c9d4eb5f87bbf905d30669d26eab6bced341bd3f1dba5fd", - 26959535291011309493156476344723991336010898738574164086137773096960 - ], - [ - "0000000074c108842c3ec2252bba62db4050bf0dddfee3ddaa5f847076b8822f", - 26959535291011309493156476344723991336010898738574164086137773096960 - ], - [ - "0000000067dc2f84a73fbf5d3c70678ce4a1496ef3a62c557bc79cbdd1d49f22", - 26959535291011309493156476344723991336010898738574164086137773096960 - ], - [ - "00000000dbf06f47c0624262ecb197bccf6bdaaabc2d973708ac401ac8955acc", - 26959535291011309493156476344723991336010898738574164086137773096960 - ], - [ - "000000009260fe30ec89ef367122f429dcc59f61735760f2b2288f2e854f04ac", - 26959535291011309493156476344723991336010898738574164086137773096960 - ], - [ - "00000000f9f1a700898c4e0671af6efd441eaf339ba075a5c5c7b0949473c80b", - 26959535291011309493156476344723991336010898738574164086137773096960 - ], - [ - "000000005107662c86452e7365f32f8ffdc70d8d87aa6f78630a79f7d77fbfe6", - 26959535291011309493156476344723991336010898738574164086137773096960 - ], - [ - "00000000984f962134a7291e3693075ae03e521f0ee33378ec30a334d860034b", - 22791193517536179595645637622052884930882401463536451358196587084939 - ], - [ - "000000005e36047e39452a7beaaa6721048ac408a3e75bb60a8b0008713653ce", - 20657752757787447339704949573503817091559730029795210136290380062967 - ], - [ - "00000000128d789579ffbec00203a371cbb39cee27df35d951fd66e62ed59258", - 20055900442607493419304231885070612388653052033693203212369143515380 - ], - [ - "000000008dde642fb80481bb5e1671cb04c6716de5b7f783aa3388456d5c8a85", - 14823964236757567892443379740509603561300486961438335652879209691748 - ], - [ - "000000008135b689ad1557d4e148a8b9e58e2c4a67240fc87962abb69710231a", - 10665478642773714533594093039651282002301533435475036254747899885223 - ], - [ - "00000000308496ef3e4f9fa542a772df637b4aaf1dcce404424611feacfc09e7", - 7129928201274994723790235748908587989251132236328748923672922318604 - ], - [ - "000000001a2e0c63d7d012003c9173acfd04ccd6372027718979228c461b5ed5", - 5949911830998722926292643443014583571932577723103865087785236463581 - ], - [ - "000000002e0c0ac26ccde91b51ab018576b3a126b413e9f6f787b36637f1b174", - 5905493731356012500002445562241380310188483401887904088185399375735 - ], - [ - "00000000103226f85fe2b68795f087dcec345e523363f18017e60b5c94175355", - 4430144627991408624040948791361640318006240855899368474057439916851 - ], - [ - "000000001ae6f66fd4de47f8d6f357e798943bbfc4f39ebf14b0975fab059173", - 3447600873975070077932488290376750731396138937686397230467460081722 - ], - [ - "000000000a3f22690162744d3bc0b674c92e661a25afb3d2ac8b39b27ac14373", - 2351604930866654632766829472567920383958332390561025111996712740267 - ], - [ - "0000000006dc436c3c515a97446af858c1203a501c85d26c4a30afa380aba4a1", - 2098151743855439919137531366951071713579837678345159724749870973527 - ], - [ - "000000000943fe1680ffcc498ce50790ff8e842a8af2c157664e4fbc1cb7cb46", - 2275792073644785018721128646741518076327875870388847727099387795022 - ], - [ - "000000000847b2144376c1fb057ea1d5a027d5a6004277ed4c72422e93df04e9", - 1622204498754365521718764766072378227544231556364276849425436764228 - ], - [ - "00000000094505954deb1d31382b86d0510fd280a34143400b1856a4d52b4c93", - 1551050141962082184940599235022157265046848054947355206102386866143 - ], - [ - "000000000109272cecb3f7e98ac12cf149fa8a1b2aaab248e1b006b0dc595a3a", - 1389323441362281405504133894690662702230469716601985716313296951861 - ], - [ - "0000000009e6aa0fe39b790625ffeb18a2d6ff5060a5bd14e699e83c54109977", - 1147154217026336014073920869620380692430705543951348139504758384216 - ], - [ - "0000000000d14af55c4eae0121184919baba2deb8bf89c3af6b8e4c4f35c8e4e", - 594008212391331743177258641174232971084553374243271275697110908234 - ], - [ - "0000000003dfbfa2b33707e691ab2ab7cda7503be2c2cce43d1b21cd1cc757fb", - 148501965484106068333659342839523859586884345264449234288706060288 - ], - [ - "0000000000c169d181d66d242901f70d006f3e088c1ae9cacb88b94b8266e9c3", - 110393704409292953137636253955510629068475916699790368077242928142 - ], - [ - "000000000009f7d1439d6a2fc1a456db8e843674275bf0133fc7b43b5f45b96e", - 76555780966028280774274008956877300222068246662708272689770207398 - ], - [ - "000000000011b8a8fad7973548b50f6d4b2ba1690f7487c374e43248c576354f", - 52679970922643127683947083904801524368866887307161543562595547363 - ], - [ - "000000000077e856b6cc475d9cf784119811214c9cac8d7b674ec24faa7c2c0c", - 43246875121342569218488803557695204365585581295709263857216301849 - ], - [ - "00000000004cbb474f2cbf3a65f690efa09804512af3351ba3a0888c806c6625", - 37817522176947171595261355763110820847417850236612020028828535138 - ], - [ - "0000000000235b1ec6656d8e91f3dde3b6ab9ad7e75b332e4da9355ce60d860e", - 29373105354589651513503064535568195122478342070358205617825458296 - ], - [ - "00000000002a153a2c95a8e5493db93086b0e3fe590b636a5871ace57523ef93", - 20444489530085161064085987129079503334049188267661948259198215487 - ], - [ - "00000000000e9550e084908cf91a4e8b74f9f1315d1bc4020709f9e7f261bb18", - 19563851393374294635996921207472450463857223702361327968607284610 - ], - [ - "00000000002c2cfef3bb85b463d3fcd39b73a6d3d5ae11c1e2a8113e3794f28d", - 12545027206560661467344001226069385793869578030934168709550533072 - ], - [ - "00000000000fa92b757ee29674aa97e98a49ba3ad340d2baa94155d71648dfe1", - 8719871918647905191685831001181973300414533694245757905046274783 - ], - [ - "0000000000030571601dbc8e13d00d45004eee6ea8b6ab3cdfb38d2546fee21c", - 5942997561411541711563156602531385577600077786198627208704997014 - ], - [ - "00000000000bb6adef42e63082b20fd2b1dc1b324c51973512a4c31f29a9986e", - 3926018509229572344313816286588613965571477415700629866143917555 - ], - [ - "000000000000765094788a98dbb8adac30d248b7129b59b1441ee2b7ef9e332f", - 3337325505332425700040650320729095537310516946108490809993884103 - ], - [ - "00000000000431a0aa9625f82975709f3c6f4f64d04c559512af051599872084", - 2200422254731939804709388022233205762025354383380152145148334197 - ], - [ - "00000000000292b850b8f8578e6b4d03cbb4a78ada44afbb4d2f80a16490e8f9", - 1861317049673577272902795125376526066826651733332976503154178702 - ], - [ - "0000000000025afe84e27423011af25f777e5a94545dbd00fd04bebe9050f7dd", - 1653210985697702096268217038408538100642620147117674184232799239 - ], - [ - "0000000000000e389cccae2a40437be574fd806909e24136711e7f8bce671d65", - 1462202160246170142640486657710301628879951515428353771159991652 - ], - [ - "0000000000030510bf6bc1649726cf2e6e4010c64a2c8fd3fde5dc92535ca40e", - 1224747759897877506274637367000463834699323352769332185408382770 - ], - [ - "00000000000082648057f14fc835779c6ce46a407bafb2e5c2ac1d20d9f4e822", - 1036993586117576703268996282150397585765576605730719362190807632 - ], - [ - "000000000000f38accd6b22959010471a6d9f159d43bf2a9d4c53c220201254e", - 739430452756642306146040915925451887239493960335784687377022899 - ], - [ - "0000000000004ed7a73133678b5eb883cd8882bf14dfb26c104ae0c3f94cf4ee", - 484980150867459464772730739859302095672636271057575743647282522 - ], - [ - "00000000000037bb3ff4cf649a1757d4028ecc10f893529b4a2214792c981f96", - 353834202080594446847490995785168095798368734611949601937470709 - ], - [ - "0000000000008008f46559fe7f181e9dc0648f213472a1e576e8bf506b88f22f", - 390846686979010943280302753017141998917705716027679590623447523 - ], - [ - "000000000000691d0c2444db713bf6c088844cc95a37cdc55cc269bb0a31d8c8", - 327399809810416473497219170054754564569687652741316499001410264 - ], - [ - "00000000000071153b0afcc64a425f8442c29749610797119e732dd4b723f675", - 291937852278662838074813817696277197987476923260730675453803937 - ], - [ - "000000000000a384acb522e4e5935ad2bc31366ecf1f16f1f11023e967ef033d", - 245829147781851502645710488124949429684812753873220896184598139 - ], - [ - "0000000000002e532093d43e901292121fb7c6583caf2d13b666fe7e194b4a97", - 171262571764606989041741296999128813297927395580615685573053946 - ], - [ - "00000000000033e435c4bbddc7eb255146aa7f18e61a832983af3a9ee5dd144d", - 110439004522135981410957929709803254805947931106765020063637821 - ], - [ - "00000000000028ff4b0bd45f0e3e713f91fa1821d28a276a1a1f32f786662f13", - 61993466854134149454140006024796140857619052825495269156061184 - ], - [ - "0000000000001ef9c75318e116a607af4de68fb4f67c788677ee6779fb5fa0d5", - 47525095027499967685539085016596651791271838150303471592202567 - ], - [ - "0000000000000e6e98694ccb8247aad63aaa1e2bec5a7be14329407e4cea6223", - 30742242324775075538370115437091356458943450412845263377277862 - ], - [ - "000000000000000a2153574b2523a6d1844c3cb82d085e2575846dd8c5d4ebb4", - 19547340168280248765311813293333293631817970001494998481269884 - ], - [ - "00000000000002a92c1b1ffb2a8388979cf30798e312335ae2a1b922927ee83d", - 17248294060755457364687620800167145237577978222086136949668577 - ], - [ - "00000000000004d54b1422ce733922e7672a4e2ecc86dcf96c0de06565cddaa6", - 15943944661534740097945584046599407470739618287604834836788345 - ], - [ - "00000000000009dd91ae96cbbf67af42340b0bc715b3606aa725f630b470262d", - 14273487520109069190865495135324295912393888045891964854360837 - ], - [ - "00000000000007d33d78522fa95bdcd4a25072aeac844cbe9b6bc5d0cc885d0a", - 14930240326912220437232591181374307607822146395712988852898063 - ], - [ - "00000000000003dd57f5dd1228f68390b586700063225d26bac972bd120546d2", - 15164777495018002532932947047554711971850359981358394796619712 - ], - [ - "000000000000076bdeca878b47c392f51fbda543b1e69612cf7d305deb537604", - 15357836661363254148000422860842573817259062733233058353910518 - ], - [ - "00000000000008eb1bb7e18d9dfe62210d761cbf114d59ca08e4f638b8563e30", - 15958691676650473757098043151847631737628132481844875166319930 - ], - [ - "00000000000001b0d8d885e4d77d7c51e8f1fdaba68f229ac04d191915845f09", - 18362382113291570192217962968958993778167022285180280072455374 - ], - [ - "000000000000081baa3a716d5f9ab072c9fc3b798900234c9be23ab02a287c30", - 22401656061533210580918575951901358551917227873474367195418168 - ], - [ - "00000000000005b88d0224b9b0d4b65d3de9a61d93609bb91c9297440f1c4657", - 22607630170339665188190152183146632918104515553204180801386220 - ], - [ - "000000000000027d6a6870403fa43a650b7d9a6e61243f375a79ea935ad9ef1f", - 24717308784096979165831027254372357786209337057535982141051915 - ], - [ - "0000000000000810a3490b86e4f302f6557f9621c5c8620c2b09ec8f0cf72794", - 23340837323532611728563455098354667083079032543420012677249737 - ], - [ - "000000000000073833bca8d0ea909fde717e251576b7b3ccaaa58ad5d39eed60", - 23242403153239567181248045649858932694926499996163845297462125 - ], - [ - "000000000000031b7fd2ed1f28ff74e969aa891297706c38bd2e1d3bc48183c4", - 21554570223215082708991040006621195807471559921461022664387024 - ], - [ - "0000000000000b0738bcba382983811d40b531f2e68cd57126092755f1be4ba6", - 20615559358036706401988446678345142325284830029403352655769482 - ], - [ - "000000000000000664cbfd5e3fa497c07614c33a0934b83e01fbe980634a9aa4", - 19540900118929245469513784022598005389554682908250308721002538 - ], - [ - "000000000000021eb520df39289a70e40c59822a8c47924dc4940e7d0c1455c4", - 19588382633956678748738987427134971684150657954263472331193639 - ], - [ - "0000000000000275e0c41b11bc250fe887c5e60c8ebaaa449f5c28c67133d496", - 18009312093826905807996061071987479121278814437031313100845126 - ], - [ - "000000000000097fb0fdbeee0cee7e8f4e1a4ef8fad49f3d549624b0d47abed0", - 17993487382135493395314550202532083574115934981151443202421804 - ], - [ - "000000000000053f199ae19d34365277e534f978ea2f6c69cd4757a4fc099af5", - 16574652347477707606538518827054821354422596190208356086094719 - ], - [ - "0000000000000217b2e7b4f61682d24b9357d62ad29f27ed45ea2a32dc1f32f6", - 17085566110414426392074980811822124799183310889195548936089857 - ], - [ - "000000000000039c1d77acd4702393f48ca61983c64fc0209ade141c694b2359", - 17870696125576904989516147458864032514115346444088781066283239 - ], - [ - "0000000000000ae53f0c78330f6c2fbece2752909bc3742823e4fab29c5fd2b0", - 15554723035590620381978382489682684584827446061258013409024347 - ], - [ - "00000000000004b4d72b8631a85ec7d226dc696f1913ba1bf735b7c8dec207b8", - 16944240402989056240270048857919858304172512515419325535711617 - ], - [ - "00000000000006e06735bffb7d2f215dcadd8311fc33f4a46661fdca3dc0560e", - 17028766006301915583302001014128348187011555103613522799474256 - ], - [ - "000000000000055fc0110d4a38ffb338eabc30c8b0aef355d4643d21b5b6a860", - 15614541816377627606833566623846498830327983334155710863946027 - ], - [ - "000000000000081b69cb4de006c14084c4861f0e4a140c37200117a738733fe8", - 15392658582903619517884239396883829533752908215468116311928350 - ], - [ - "00000000000009920770f2d40b5b6a8aba33d969b855c91b0f56e3db9c27e41a", - 14444739202621038642296525467957270513966223272539123613709315 - ], - [ - "0000000000000791dd1cb7a684a54c72ccde51f459fff0fc3e6e051641b1e941", - 13237069982010980053565410157895773782534548540484990599728904 - ], - [ - "000000000000019da474a1a598b5cf28534b7fd9b214eed0f36c67c203a9b449", - 12305441845260052457400411036992507599992679866354285875870526 - ], - [ - "000000000000074333e888bac730f9772b65e4cc9d07edb122c6e3c6606bc8ab", - 11046102047853392984991332456419807063224677592114743703633836 - ], - [ - "000000000000067080669115c445f378f3dec19787558d0e03263b9dec5d7720", - 10007086165511791816771124848728462094811571795311807624126594 - ], - [ - "0000000000000304760bf583f4ac241c5ffe77312fa213634eba252c720530f1", - 9412804029559050886132126846183090289448911866201243978830721 - ], - [ - "000000000000041fb61665c8a31b8b5c3ae8fe81903ea81530c979d5094e6f9d", - 8825807680257895657479991196220989276506275995152177228848553 - ], - [ - "000000000000022fc7f2a5c87b2bab742d71c4eb662d572df33f18193d6abf0e", - 8774981337152660993121733114298631263731662998207194412401974 - ], - [ - "000000000000013c6d43ba38bc5f24e699515b9d78602694112fefdc64606640", - 8158793708965770005321748925786317683564827171691288121295309 - ], - [ - "00000000000001665176b9a810fddf27cca60dfcfd80bf113289fcc8ffed0284", - 8002813558257060656072356380146767001272597020026124199745768 - ], - [ - "00000000000002dc6ef80f56a00f1091471d942ce9bfb656ebdab4ea0b77eb0b", - 7839578136187174365862370390163660393786299729896106652527867 - ], - [ - "00000000000002a1fa5546ec48ca88b9e5710e2c6d895bb3675004fdacd6ab13", - 7999436853933517849738304697453936802516675338771116464559736 - ], - [ - "00000000000000f517517c11e649b98feca7da84ae44fb643de5a86798fe3c31", - 9047933968943662429055854851798411859479270438104123361452456 - ], - [ - "0000000000000299cab92a923348acf9251f656bcbacdb641fd0a66d895a6e8f", - 8296401729498848716200066027575181804609215798824798623774115 - ], - [ - "000000000000027508b977f72c3a0f06f1f36e311ad079536630661880934501", - 9081043763417525999805054818818176389840193708186237826596038 - ], - [ - "00000000000001925959229452cc6fbfef0104ebed7ccd6f584f2439c5dd1f1b", - 8230756222604082728916412296377630357556635887892965869189316 - ], - [ - "00000000000003b34ca89509da5f558af468c194afaa8d458bbeb07c50cc7c74", - 7384132762576773456261468151764493698188252321818593178380086 - ], - [ - "0000000000000076559e314ab0c86cc552e34fd79488415d3d17f6ea3c01adb3", - 6172235633712067451972497618887145940241016806561805162089236 - ], - [ - "000000000000003a58043252cdc30ed2f37fb17e6ef1658324b1478f16c1463b", - 5561375174290806544537887055854541186367445945410171525594428 - ], - [ - "000000000000011babf767e60240658195b693711c217d7da0d9215ccab45333", - 4026320687087602082485484360946232153393536063582206994825059 - ], - [ - "000000000000027579d28fb480ccad8e2516d1219d4c1919e3fd4fc0c882955d", - 3513562835129894943437236119628516496362458327482173263945837 - ], - [ - "0000000000000074546fe07f80ba15fc81897ec56a5535de727df9fda9dab500", - 3004086841873755151847218915251583968757589997419002536446958 - ], - [ - "00000000000000b6c55833b80c07894f4c4d3bb686e5ddbc1b1d162e22752ca3", - 2675564091736135973597987074403776057837198839748912144832848 - ], - [ - "00000000000001326f2f970753122e35bfdf3358d046ddf5ea22e57f5d82b00d", - 2409853811740497723006216754124060157774336072925654369402748 - ], - [ - "00000000000000641084745613912464ff73c974bafd0bf6dd306295f019d306", - 2218270940716371747904935551989691447849649677886077648624174 - ], - [ - "000000000000011ae105ddb1a5bbac6931a6578d95c201525f3a945276a64559", - 1727570438327407251342043828017904756815782584333725141104066 - ], - [ - "00000000000000d9b66fee19af89eaaf3f3933d1acd2617924c107f0abbe0a41", - 1394050998377933499722472690026032322818492088393319462766728 - ], - [ - "0000000000000011956d42670c2f75eeb344ac0657a806775998e2c58fa4b157", - 1263613033940095470462619539828531085609177044392029609988618 - ], - [ - "00000000000000959b1ea990368fd16d494e68ee13bd7245ddd9cdfba3330100", - 1030471032625362817908252078771570487808270046919474202776261 - ], - [ - "0000000000000091f86b1e423e24fe358c72db181cfcc2738c85f2f51871a960", - 862536742724199235179104073167840532858949484653681168904647 - ], - [ - "0000000000000055e146e473b49fe656a1f2f4b8c33e72b80acc18f84d9fcc26", - 720982725653754866133106184196823339064064188411714396293721 - ], - [ - "000000000000004f6a191a3261274735292bc30a1f79f23a143e4ee7dd2f64c1", - 530591605956209005375408931042036763612094286954585940489028 - ], - [ - "000000000000005327c8e714272803c60277333362e74ec88b9ffab5410c2358", - 410030655694725315191023225682702558843537088229871225194892 - ], - [ - "0000000000000002e2a62b8705564c38d6a746fc8e971a450a69989152b5ee97", - 310118507134852270764417655876559284597214440570539833833949 - ], - [ - "00000000000000202bf3ff30109538bfd9b5075c6438ab5ef64ebe2cf9b61404", - 239366804613626989118705458454015500681551595998816410136871 - ], - [ - "000000000000001c997105893f5991cb45765ff856b6e503f8466cb22cdd330a", - 181156300891423147840813581996669801683959668074714341556907 - ], - [ - "0000000000000010c13ce182a3d8fc6748b75640447eb360d7739a5fe984ffc1", - 142431143903518058663503832095902619444236806543928975891292 - ], - [ - "000000000000000bbb49db68b79ecc8393376d78272d237bb612288af64c1de8", - 100696286705944192804288311731154032278221074156374274573154 - ], - [ - "0000000000000001bbfd0973c367d30eef2416d9e94bdddea53bccf541a4858f", - 68962785458117760598328072539715155134139124175836033018875 - ], - [ - "0000000000000004ee5b6ace996ab746f1e6dd952cdbc74c0b4f8b9ac51c7335", - 52765647417137724306257751915372504293019655403366801103482 - ], - [ - "0000000000000002f2f23b515085d0c9f37a2824304ccb7ca1546a48548d0dac", - 44233494692117781485772218913793271750746093635349642503033 - ], - [ - "00000000000000045590c3fdeca1753d148a87614a70fa0897a17f90bb321654", - 38110303308616451367971130315102755539751527244002747835354 - ], - [ - "0000000000000002b704edc0bf1435fe2116040b547adb1bc2d196eb81779834", - 29679712134953944285822600537404275892101515173751373902643 - ], - [ - "00000000000000038cc59dc6dd68ae0fbe2ded8a3de65dbd9a2f9a36d26772df", - 22829284162675848134182694598477416531051323480214451851537 - ], - [ - "0000000000000000a979bc50075e7cdf0da5274f7314910b2d798b1aeaf6543f", - 19005972021752888554737867279515830726136655207276613952446 - ], - [ - "0000000000000001dd8e548c8cf5b77cde6e5631cd542e39f42c41952e5e7085", - 15065030752662243106668159124876133476723125447787423397009 - ], - [ - "0000000000000002513542a461de351a5a94f96b4bcd3e324a48d2d71b403fe0", - 12288777851891587151373320769563000373599628572350950946294 - ], - [ - "000000000000000150cc07163e78d599a7e56c0d1040641bffb382705ac17df0", - 10284450072667651845630380921900049634274231900711580829901 - ], - [ - "00000000000000009051d83d276dad5c547612f67c2907acf6a143039bddb1bb", - 8614457133517962240383077577277860009688882364333357498735 - ], - [ - "00000000000000000b83d3947d2790ab0bcbbb61eba1eb8d8f0f0eb3e9d461e0", - 7065404376960081064548050202734411051432779994036264291865 - ], - [ - "00000000000000005a4fbbaeffee6d52fa329dd8c559f90c9b30264c46ad33fd", - 6343128691613752139911564815777925738673759990853012864417 - ], - [ - "00000000000000006b6834bae83e895a78c5026a8c8141388040d90506cf3148", - 5384566985902468539838947745491317290501351277582100625895 - ], - [ - "0000000000000000bf3c066c9acdb008e7fff3672f1391b35c8877b76b9e295e", - 4405445424268587912774001698765643657938467054813941696357 - ], - [ - "00000000000000006bcf448b771c8f4db4e2ca653474e3b29504ec08422b3fba", - 3863116091606416844204395924633339211949472882692642434091 - ], - [ - "000000000000000098686ab04cc22fec77e4fa2d76d5a3cc0eb8cbf4ed800cdc", - 3369644874471976788888364569461031006144821186115339704344 - ], - [ - "000000000000000036cc637d80982595b1fa30f877efe8904965e6fd70aeae1a", - 3045099804940836864917455634208357232827311736852711219052 - ], - [ - "00000000000000000ee9b585e0a707347d7c80f3a905f48fa32d448917335366", - 2578448738892556035161639572550297683334908085589209042124 - ], - [ - "00000000000000000401800189014bad6a3ca1af029e19b362d6ef3c5425a8dc", - 2293150027595934059742111263510686973492486336734191444857 - ], - [ - "00000000000000001b44d4645ac00773be676f3de8a8bff1a5fdd1fb04d2b3b2", - 2002553394643609738890838973561169711471353898661293921361 - ], - [ - "00000000000000003ff2a53152ee98910d7383c0177459ad258c4b2d2c4d4610", - 1602973121906621623499825176001242504910089450561449296745 - ], - [ - "00000000000000001bb242c9463b511b9e6a99a6d48bd783acb070ca27861c2b", - 1555090301026128543569302441423333574769288057539276771351 - ], - [ - "000000000000000019d43247356b848a7ef8b1c786d8c833b76e382608cb59e9", - 1438882618901096676077751337424466243540231648216042671672 - ], - [ - "00000000000000003711b624fbde8c77d4c7e25334cfa8bc176b7248ca67b24b", - 1366448148696423482270218240630565379904190231445288559686 - ], - [ - "0000000000000000092c1f996e0b6d07fd0e73dfe6409a5c2adc1206e997c3a2", - 1130631792721554272454999472203133803635779505498977249380 - ], - [ - "000000000000000020ce180d66df9d3c28aee9fcec7896071ec67091a9753283", - 982897902661444504749094486748895114762769275663213548760 - ], - [ - "000000000000000018d37d53ae02e13634eefb8d9246253e99c1bdf65ac293ea", - 903780674822307262725136466127288858430591999464421319774 - ], - [ - "00000000000000001607d1a21507dea1c0e5f398daf94d35fb7e0a3238f96a0f", - 777796786715545142990933608995805126717575855757223448283 - ], - [ - "00000000000000001acae244523061f650ddab9c3271d13c0cd86071ae6e8a5f", - 770217857427240993023051315984564139215374347389780685886 - ], - [ - "0000000000000000104430189dba1219b0e3dd90824e8c2271609aca5b71250f", - 749175002550855564826315453191856424408132088739667533908 - ], - [ - "00000000000000001aa260733b6d8f8faa2092af35e55973278bb17f8eaeca6b", - 680733332917879088904702563202563546480869669564659182916 - ], - [ - "000000000000000009925ad5866a9cb3a1d83d9399137bccc7b5470b38b1db2b", - 668970749931191589798031473561994304229010598616526068121 - ], - [ - "00000000000000001133acacb92e43e24af63a487923361a4a98c87a5550dffe", - 673862885517789065391946314370719009092913047398806257816 - ], - [ - "000000000000000018c66b4a76ca69204e24ee069da9368c7a9883adb36c24af", - 683252375980679323816587400004061743952674823748550569728 - ], - [ - "000000000000000010b13aed220b96c35ccd5f07125b51308db976eefcd718f9", - 663358898259210531333699235628449595078182768956016850932 - ], - [ - "0000000000000000031b14ece1cfda0e23774e473cd2676834f73155e4f46a2b", - 613111677421249032126095464155766633549817788831841702233 - ], - [ - "000000000000000010bfa427c8d305d861ab5ee4776d87d6d911f5fb3045c754", - 653202571346946874804858789924935228771775905822751784751 - ], - [ - "000000000000000005d1e9e192a43a19e2fbd933ffb27df2623187ad5ce10adc", - 606440210473080582646260971729051700700295823810315465086 - ], - [ - "00000000000000000f9e30784bd647e91f6923263a674c9c5c18084fe79a41f8", - 577485545195557219124205162278233745767078209386685370301 - ], - [ - "00000000000000000036d3e1c36e4b959a3e4ad6376ce9ae65961e60350c86e8", - 568436189899844976161013318161470010900802307864463999350 - ], - [ - "00000000000000000b3ec9df7aebc319bb12491ba651337f9b3541e78446eca8", - 577075446183156083131210077122535091982277790261940376730 - ], - [ - "000000000000000012d24ce222e3c81d4c148f2bce88f752c0dba184c3bc6844", - 545227685810993878908530774661151072647124692119579479626 - ], - [ - "000000000000000000c4ccbdd98c267bd16bda12b63b648c47af3ac51c1cc574", - 566251462633192796874293710752184671013063323002614261298 - ], - [ - "00000000000000000056bfec1dca8e82710f411af64b1d3b04a2d2364a81993f", - 565861163013726292152715860908846169118213713027013549266 - ], - [ - "00000000000000001275d1cadce690546f74f77f6d4a6190e2137a8a819946f6", - 552365082628398268882484833076555675653086455208105645421 - ], - [ - "000000000000000003816ae80c6413b84cbee2f639ba497ab5872ec9711eb256", - 566500826506537696689556913703962485638366020240431987761 - ], - [ - "00000000000000000d92953224570f521b09553194da1ca3c4b31a09a238f4f6", - 542528831070582225190358970054175523872885764221168055524 - ], - [ - "000000000000000006721943f23cfacf20c17c2ad6ea4e902af36b01f92e3c06", - 545717458684443426657861963694104795617022469075593560376 - ], - [ - "0000000000000000031d9af2fe38cc02410361fb213181fdb667c74e210d54c4", - 527828116295419256939747768525818422990809696098687485908 - ], - [ - "0000000000000000142e8a13ef6994961655c8e86aece3f0abebd2ee05473e75", - 515692649961651115318501607126660466594771968970128733915 - ], - [ - "00000000000000000c7a8db37a746d6637ef6a6eab28735608fd715ee2f394e7", - 511567833081612605062932845380344111401319750691048028647 - ], - [ - "000000000000000007854877c66c71a49af40d20f2d6f817becfe4d66d5e5a81", - 496889275651173623472900330204902534352929519684753746862 - ], - [ - "000000000000000005ce1d2d10aeb9def4d38233e859d98a4a168ea3fa36687a", - 473326016878892721329791660926511941983191613711888666872 - ], - [ - "000000000000000007c71decfe74855ad99dc2aa4a2e713165db5a8d6da5f32a", - 454358905739145490120646206475613103265889121292141221496 - ], - [ - "000000000000000008ce4f34161be6760569877c685e37ebebce3546ea42a767", - 443317174350997401226699663083830316501226707336190868827 - ], - [ - "0000000000000000086233f4843682eb47bacb58930a5577fbfd5c9ebd57ddf9", - 442803156296231091698861521258691618419467911445974398697 - ], - [ - "000000000000000010a904eee4fc763c6b88d378884f368fd652f63c1af71580", - 433057295538880306866830023102486508102611067408810729986 - ], - [ - "00000000000000000c114754749d622d4fa2f78c84d7147c345b2b99a8e83d2e", - 409419135913169127551416754586994781281659818649795994250 - ], - [ - "000000000000000000a5039e32cc9a89aeffbde1391e8bc9ae9724127904f01d", - 370716565562591807409073645534324134138902968133741824826 - ], - [ - "000000000000000003b0b73d9b3259c318cca48a6335b5d64545583f7f3773fa", - 340818601652590375722654926010534269909167221015231774473 - ], - [ - "00000000000000000198bcc5bd65fd0ccd1c7e3b49e0170ea80296cbfee05042", - 288495776454828940814130957501183806179235220269688957284 - ], - [ - "00000000000000000a60f379d3dc1413491f360809a97cbb02c81442c613dce7", - 259524927038954052049842432960406271327041356520946780931 - ], - [ - "0000000000000000038973a5f8ba8cdc7e371dcc8f4b24337ef695f24b962907", - 237834533496394499560421837048697627284447080833665891069 - ], - [ - "000000000000000004b8ec471974913d052a3af7dc2a8c6f01c2ac2f3d1f7b19", - 224600594221399775791208366807237501899705336368643295004 - ], - [ - "0000000000000000075d572eef1c4210adc7abf4e40986d7f0a80003853bfec4", - 187068024570118295326670137055767916260683809649859998591 - ], - [ - "0000000000000000074f9edbfc07648dc74392ba8248f0983ffea63431b3bc20", - 164898586657174446766450284432249324933473312757247241703 - ], - [ - "000000000000000003c4a4d9c62b3a7f4893afe14eef8a6a377229d23ad4b1ea", - 170169949941312779383320359289276524103458774855674537695 - ], - [ - "00000000000000000404b6939e6c35a5448386e5d58f318c82ce2fefb7d73e47", - 162900642628594452312926252009782198966469183066378413701 - ], - [ - "0000000000000000034656c96781091b5fbc799c881ea85b41cba0b88128eff7", - 161578253985639514393501040432436419806938319938347383115 - ], - [ - "0000000000000000045645e2acd740a88d2b3a09369e9f0f80d5376e4b6c5189", - 150883217088565412406283744917586302541065882485692466643 - ], - [ - "00000000000000000381e6a138308c6547d6fe3eb3437250ffefdebbf71eefd1", - 150899431314054665651533974629900879951167127567886958331 - ], - [ - "0000000000000000012100ddbb2102e65fb1ebbf104ead754a4110abffc4b8bc", - 138784704342716220538434620238263807017514526920482840730 - ], - [ - "0000000000000000046f56e59b9b1293b5e7c1587aa6d29c4f3f79b98cf22ee6", - 135263027158857483473983812897618462696878980167989570177 - ], - [ - "000000000000000001bd1c291e91f4476f93454d4542d2ed7e44fc86902c93bb", - 137505575960473580232190762314053902119220761315057010096 - ], - [ - "000000000000000001c37a483375ff6fd6ed7c5b79d80167b027a8fdb0721dcd", - 128714000003724620550017796842876174875520737762229396938 - ], - [ - "0000000000000000051804b4c2da5298c4573386bf1d4242bf0e26a49ec32e42", - 126334257597368896694079008874105899845411447996852366067 - ], - [ - "0000000000000000034bff7888f1f7294311f0199322f77c1457018c875bd9e1", - 126278728489740292169183109579386034099056145098127681816 - ], - [ - "00000000000000000506b43c9283ccbc40f583e0c734e4a8af2ce6a4262c6221", - 133533674521328301805375468020445677637867523414815983180 - ], - [ - "000000000000000003937068e19a0750a33978050f019d2b60f430e3da707db9", - 124023231761354306172598997090326962528984683316222123922 - ], - [ - "000000000000000002e2f6ec3c9eb965aa706c788da7dede201b6b4b8fae3971", - 122123890689597169329897975011373560881532793639713851004 - ], - [ - "000000000000000000b3076636b13562bb4315f895bcb324e0c962763c2196b1", - 119378471659813172166584350643745606396975629669615648535 - ], - [ - "00000000000000000025b8961d1d0cfba33b0205ec10b3ce541618e352b0bbd5", - 111760099061575845238587552104542233599456594020708180600 - ], - [ - "00000000000000000421d58b78b9f063a4b20e181d55c9c79082f9e4b8b30925", - 104283398725864083874296861096497976441886465506877958948 - ], - [ - "0000000000000000027fd968d41741f31c73c4a3b304472da0165245278e2ea3", - 106299891835047816880570816560226555729378855394467112113 - ], - [ - "00000000000000000364a23184b8a2c009d13172094421c22e4d9bc85dcf90a5", - 105881534387569087602448606393026827269357803018613746024 - ], - [ - "0000000000000000042a2ed4a504424060407825d774a54f2e148fa769ee72ff", - 95668758377605096786059344838386233938948428360571473100 - ], - [ - "0000000000000000025f769f13f2806fed19d9948b1a7ef19048177789afc5d3", - 94012478943487551583874745631213709785208280748731165788 - ], - [ - "000000000000000000b3ff31d54e9e83515ee18360c7dc59e30697d083c745ff", - 86923144448447518913809103136679872784564523201770836515 - ], - [ - "0000000000000000021ecdcb2368ce66c23efd8bd8ab6a88a8bb70571c6e67f0", - 84861696667064232085350895302379622169877065200841464945 - ], - [ - "000000000000000001972cb33b862b27c1dc3f3a723f7d1cfd69aebe0409126c", - 80022436630974307725804284020086214397285337936510125904 - ], - [ - "000000000000000000cb26d2b1018d80670ccc41d89c7da92175bd6b00f27a3e", - 68605895635350324123887563889758158648405285708846995220 - ], - [ - "00000000000000000276deb4022f66cacd929c690cd6b4f7e740836b614b21f4", - 63859488458993656960329361157926368758742149072401957675 - ], - [ - "000000000000000000587912ced677698c86eec8b1d70144dccb1c6b0bad0f17", - 61163588147080336562860372542789363550797760125590468374 - ], - [ - "0000000000000000009f989a246ac4221ebdced8ccebae9b8d5c83b69bb5e7c8", - 58509968837817799412963215131374851975666125194369450244 - ], - [ - "000000000000000000038bed8b89c4e82c13076dd64dc5f7a349c39d3921d607", - 56672978024443644437306289406994921596646228103740151166 - ], - [ - "00000000000000000122f47d580700a3a5b4b6cb46669a36e4fa974c720ab6cd", - 53958706289281806789111061412993899806784528297928389354 - ], - [ - "00000000000000000172ad9ea56a90bdfed0f364a902500e9ff4d74f000ced99", - 51765097045688608012424287693701763884232488530834902033 - ], - [ - "00000000000000000201d7429db233c7055e9699c5bfb57b167ca8d0c710dc71", - 51649247587912518226490987244672765779747315777961084943 - ], - [ - "000000000000000000c0549b2a8adbefbf6c909f61fdc4d6087c44a549cf8201", - 48144761676638685568393252844604229390549310101321306353 - ], - [ - "0000000000000000015b6789cdc5dc13766f58b38f16d5b35bf79ce4b040f7fd", - 45240056525891956455575817517143990421796325617308336169 - ], - [ - "0000000000000000013a31b29f845d97465bff53f901027f8ab4b1a2f59118a8", - 39719085345888042233262788103506269388987831055953076236 - ], - [ - "00000000000000000088cdeaa7389a7de9f09e3a28b3647630fea3bd1b107134", - 37880653743061241847157755785329340895782894371522587986 - ], - [ - "000000000000000001389446206ebcd378c32cd00b4920a8a1ba7b540ca7d699", - 38043253251243498799796359449649225329347481521269202959 - ], - [ - "000000000000000000f41e2b7f056b6edef47477d0d0f5833d5d4a047151f2dc", - 33510049713200839962002052974605137446441531580345905745 - ], - [ - "0000000000000000010e0373719b7538e713e47d8d7189826dce4264d85a79b8", - 31340511093499215382498875631096178729473407545556119324 - ], - [ - "00000000000000000053e2d10bd703ad5b7787614965711d6170b69b133aa366", - 29201554221106481014362444600779904393001928219662824381 - ], - [ - "000000000000000000cbeff0b533f8e1189cf09dfbebf57a8ebe349362811b80", - 30354232589320643409720162249214362116926806095467115096 - ], - [ - "000000000000000000d0ad638ad61e7c4c3113618b8b26b2044347c00c042278", - 29217445580005453044145144287633722880237231025559536344 - ], - [ - "000000000000000000a7bda943639876a2d7a8caf4cac45678fb237d59c28ba1", - 24433315186493117547015353728839494165411420867297244659 - ], - [ - "000000000000000000fb6c6a307c8363e923873499ba6299597769c10a438e61", - 23988337581966024451862874735374376736823985966238572778 - ], - [ - "0000000000000000006f408147ffbcaa0fb1dcf1f199c527ffdaf159d86e5cd9", - 22526603255015707503680924025827203599625190615869254262 - ], - [ - "000000000000000000e3be3cf7343d7792c0d47d3c39ddb9ceaf19961e9eeab4", - 18556473167918062248854389700869820348727762534776424137 - ], - [ - "000000000000000000b3fb09d6def197657e20f9c1d5e9680cfcac1e1f9aa269", - 19759157687224108664379003516351943599373215433413919905 - ], - [ - "000000000000000000bfe71f044145e1b42fdfb3a523ee2a215e80fa6afc2a98", - 20014601621424565995143800336070874732337755340431658220 - ], - [ - "000000000000000000cee3bff56ee49c0f96d1cbd17fa17dc6f84b3f48aed765", - 16946223147907286639275870228581142863500004051737247938 - ] -] \ No newline at end of file +[] \ No newline at end of file diff --git a/lib/checkpoints_testnet.json b/lib/checkpoints_testnet.json index 44c8b36a6b5b..47fc03291eda 100644 --- a/lib/checkpoints_testnet.json +++ b/lib/checkpoints_testnet.json @@ -1,4356 +1,837 @@ [ [ - "00000000864b744c5025331036aa4a16e9ed1cbb362908c625272150fa059b29", - [ - 0, - 0 - ] + "0a083934469e9bad81b1b7038ad3252fdbdca3c2a61b9cf67695d1e5339513e5", + 0, + 1487031391 ], [ - "000000002e9ccffc999166ccf8d72129e1b2e9c754f6c90ad2f77cab0d9fb4c7", - [ - 0, - 0 - ] + "64c8a77f51fae49d484b67f8e8ef59f0dcd706b95fcdb5dc75d9953384c097df", + 0, + 1487271985 ], [ - "0000000009b9f0436a9c733e2c9a9d9c8fe3475d383bdc1beb7bfa995f90be70", - [ - 0, - 0 - ] + "bebca2c6b59117df1e0ded81d6c805e3c1250c9ec42d43629a55a1aa99ece186", + 0, + 1487547539 ], [ - "000000000a9c9c79f246042b9e2819822287f2be7cd6487aecf7afab6a88bed5", - [ - 0, - 0 - ] + "4bec3dcfbd2614e74b399825b323226ea54fc0225c593b6c740f9b8d55b16165", + 0, + 1487625740 ], [ - "000000003a7002e1247b0008cba36cd46f57cd7ce56ac9d9dc5644265064df09", - [ - 0, - 0 - ] + "7c88208fc0837cbf9e986b949cbe0596daf896b643fa3b1d398d0edbd5670674", + 0, + 1487891850 ], [ - "00000000061e01e82afff6e7aaea4eb841b78cc0eed3af11f6706b14471fa9c8", - [ - 0, - 0 - ] + "328feda15b8eb91f4626ea0edda82989d46960e8c35f4bf1f9e590668a365892", + 0, + 1488178547 ], [ - "000000003911e011ae2459e44d4581ac69ba703fb26e1421529bd326c538f12d", - [ - 0, - 0 - ] + "9e4a65bbdb396817fa22278d0491dec4a52dfc81bd1284728ae1104d57cce248", + 0, + 1488472292 ], [ - "000000000a5984d6c73396fe40de392935f5fc2a8e48eedf38034ce0a3178a60", - [ - 0, - 0 - ] + "2b1698baef2860f34e78306d5f01b3c5f2924cd487e6c266a9dfc1c175af4336", + 0, + 1488817945 ], [ - "000000000786bdc642fa54c0a791d58b732ed5676516fffaeca04492be97c243", - [ - 0, - 0 - ] + "240c82a42cdfb7fa1238287e985379e9b8e8eff23d90c9c951f60213fe122fc2", + 0, + 1489444205 ], [ - "000000001359c49f9618f3ee69afbd1b3196f1832acc47557d42256fcc6b7f48", - [ - 0, - 0 - ] + "d225c6efd5431dbf81997835c9486c8aad7ad17e5a76b2df90906bc8b39d69d2", + 0, + 1489601589 ], [ - "00000000270dde98d582af35dff5aed02087dad8529dc5c808c67573d6dabaf4", - [ - 0, - 0 - ] + "cb61c73edbd859e38399301f6f74acc7f9b9e50527d0eec92ff512a7345c017c", + 0, + 1489884491 ], [ - "00000000425c160908c215c4adf998771a2d1c472051bc58320696f3a5eb0644", - [ - 0, - 0 - ] + "0e7acdf73282c080da3ee4e039facbcfe623bf91118cf84ead01e2a3443be18d", + 0, + 1490191735 ], [ - "0000000006a5976471986377805d4a148d8822bb7f458138c83f167d197817c9", - [ - 0, - 0 - ] + "9c158e6bcfe742cb6599d2fb2d95894438a01d8e163284b242bb16151dc56085", + 0, + 1490545488 ], [ - "000000000318394ea17038ef369f3cccc79b3d7dfda957af6c8cd4a471ffa814", - [ - 0, - 0 - ] + "5fdb1def0e18833487134ba974c869fec74f5d4f5ddc26ede8e077bd8d925b8e", + 0, + 1490783079 ], [ - "000000000ad4f9d0b8e86871478cc849f7bc42fb108ebec50e4a795afc284926", - [ - 0, - 0 - ] + "d5cd594e50532e3cbb7e887e8d8a586a71c9b49cef28300e8e40ed3d4aa93537", + 0, + 1491388405 ], [ - "000000000207e63e68f2a7a4c067135883d726fd65e3620142fb9bdf50cce1f6", - [ - 0, - 0 - ] + "7b8c7006b86e153c6e73f75e23d053920bb95fbf13fd578a3e869070774b10e9", + 0, + 1491557747 ], [ - "00000000003b426d2c12ee66b2eedb4dcc05d5e158685b222240d31e43687762", - [ - 0, - 0 - ] + "48f87162211b9fa7b28341b4b2c3de752eaa3ed854fb2533ac0ffbf89238ddb2", + 0, + 1491809515 ], [ - "00000000017cf6ee86e3d483f9a978ded72be1fa5af37d287a71c5dfb87cdd83", - [ - 0, - 0 - ] + "25db6e71e6f14a98066cf0e29e0186eade588c68a1b8f11cded81e166418a22b", + 0, + 1492147555 ], [ - "00000000004b1d9fe16fc0c72cfa0395c98a3e460cd2affb8640e28bca295a4a", - [ - 0, - 0 - ] + "e5f401565463c1581f823c7fc9f168b6d7dbb7dbb6fe06d05081dab3983a3ba5", + 0, + 1492446999 ], [ - "0000000046d191b09f7726e4f8bfaffed6c30734afbf1f95e6bddbe0b07d9e88", - [ - 0, - 0 - ] + "6740fa3580f2dda47d852b21ee2943e0ba0d4b385b9e560a78c199320358ec7f", + 0, + 1492773524 ], [ - "0000000082cec8200e9ea055c2991bf74560eb7e7140691ea53e7828dbdc9553", - [ - 0, - 0 - ] + "ea9360739a35cb829df1fc20def8a73471e31d27d856929ee008225bb5c18dfb", + 0, + 1492883273 ], [ - "000000003775b96d6b362d4804afe2d9c3cf3cbb46a45c3ccc377c94e83edd23", - [ - 0, - 0 - ] + "aca324bbe8e072d15849be5b3849b4a3a5e4312ebc9b2009d579b95a329279fa", + 0, + 1493204955 ], [ - "00000000037835a92404acb2f18768a49d4f93685ead30aad6bb3b073f411e02", - [ - 0, - 0 - ] + "eb32ce670b64427b6d982cc12e18339f03e37f5eef4c2fc29043e61ce6451269", + 0, + 1493336938 ], [ - "0000000006cf75d17706d1f62e6b08e6ba5facfde38a8920b7d808a6b6781ff2", - [ - 0, - 0 - ] + "5ba6fe56dfd9d2c729bf4f0a7762c05921bc40ca3055c6a5f976ddf9a503dda7", + 0, + 1493708364 ], [ - "0000000003dff257cdae43703fcd0ca91fda0970f5fc04258b4608fb1942a6f6", - [ - 0, - 0 - ] + "c12e478167babd663c3e0dff615b8ad82b8d085088748b0b9afec78fb45bedc4", + 0, + 1493889135 ], [ - "0000000000532d97d18867658e08c789f627535652382147e33bf8626d4131bc", - [ - 0, - 0 - ] + "38c247e2222bc7f23df39d18c4a8a9f3e9870b9d1af6f09f7609a2de4e108695", + 0, + 1494053295 ], [ - "000000000266dfb79bb11dedd0ae748505863ab3ab731269cd71a2c2fbd159b3", - [ - 0, - 0 - ] + "9bf789025cce72e6f9a73eaf83e9236433946b6fbad10baad12c22617a788536", + 0, + 1494063722 ], [ - "00000000349ff0119d5c0dd8ffad8bf41cd6126a88416148b81fa4dcaebc42e1", - [ - 0, - 0 - ] + "aeb9ce2a2959e64b8f1d531d2301164d013063306e2dc8ae1fb450db592a01f5", + 0, + 1494122264 ], [ - "000000003c61939b4799eeea4335218d30de9b1071605126d719dce0f0d14810", - [ - 0, - 0 - ] + "a8420d5dbef341ff4198c42186077948e47609188617d1956abe775af8f72c7c", + 0, + 1494337286 ], [ - "000000003d9284570ed648d2b12ad24046ac8b9abcf05c4e9813ea110490cf73", - [ - 0, - 0 - ] + "f7b8e6c92926add3db58751cdd52731d3bdde7a07d1c8150d074888cab9e7b7a", + 0, + 1494597416 ], [ - "0000000001360b66e6dc0ccfbd75356034e721ae55c3d5c71a58be5d281c252b", - [ - 0, - 0 - ] + "1176aea5d05f7162e440649338b3a4baacaf3d3fe1235faad1adfc2b14e4860e", + 0, + 1494931142 ], [ - "000000000c114f42504916bfb2ee26ed8307b3f7f74226c1cfe1f5302ec23d26", - [ - 0, - 0 - ] + "311af2d6491e32118af7918f684c4c8b0a30e0cf6344072a673b5d0094d77160", + 0, + 1495054877 ], [ - "0000000007acac3fcf97b4ca81821263b704364adaa2736fce0a0722bfed4f8d", - [ - 0, - 0 - ] + "15df5b0c4faf5895e426617356be99f51c7fc93b3644a149d9ffd7a15a70b29b", + 0, + 1495197350 ], [ - "00000000059768ef7731d27f9c2be48c6e16d7cb56680625f08ff25ead504280", - [ - 0, - 0 - ] + "327386817db660c5f70796a7a7b46390b2fb6177442a4fd306e5ad08aceec777", + 0, + 1495616316 ], [ - "000000000351c8908f1f52518ce4bd251b896ca3fbccb69a2607db6624bafcfc", - [ - 0, - 0 - ] + "c1c65035bffab1f00a2501a5340df8d4c6a2792f11a49062705348b0d7cdee9d", + 0, + 1495984860 ], [ - "0000000068d7ccae048e212e9e2ecb4d944f583b4490df4fbf654b4915597052", - [ - 0, - 0 - ] + "1b76a0697fa9ab75d945123dba28c213b61b1bd82e830890f7f55c01d1c600ed", + 0, + 1496317693 ], [ - "000000000e2aaa36417187233ff55325473bd5b7a164b358da60c96d1920fd77", - [ - 0, - 0 - ] + "4f5fa3b91b79720f2abd27976cbdb73f3dc90e3bfc33f02cd8412f0e97e24539", + 0, + 1496626709 ], [ - "000000001eb11ef6dbe0647bc87a8d218f6e59c2b9690f17edcf0dbd39cd0308", - [ - 0, - 0 - ] + "a700040d1fffbb99723b54281e3495a807513895f84030bc0158bb0b4661dbc0", + 0, + 1496912288 ], [ - "00000000022e7855e24cc3fff67ce093242434a8ffa45882333a0f08a40aad9c", - [ - 0, - 0 - ] + "5669e2d5cdfa36d346dfc4853424a3a2b4a266e9fe3237d3e4f872478d0cab68", + 0, + 1497008640 ], [ - "000000000210130ff4e3186258c09a8463c1e196f5c5432b4c7b6954e907bf63", - [ - 0, - 0 - ] + "5dd0c4a5dc98d6a942b12c617fa499c0151f5ed7a7c87ab77cfc41b07a25fb10", + 0, + 1497150657 ], [ - "0000000000e01372ede322bf88ee5ed8a46dd4fd8df832eca16180263fc8b1ef", - [ - 0, - 0 - ] + "14beed2fe1652915d4aa807f55293b438abd65258baae5b450dfb894c4eb6cd4", + 0, + 1497412738 ], [ - "00000000a0701896e26d5d884834b267512e0af52c92edc4bccf1c5c803d3c4f", - [ - 0, - 0 - ] + "3f8bb28b127ac7e5fd14c3bc6d1944a1c22cabd26dc9ac5756b2ea18c50c9e2a", + 0, + 1497843367 ], [ - "00000000869fc8d9ac1588f3e5bdfd60253e9824083800b7794010e0e9c6b6fe", - [ - 0, - 0 - ] + "d78882fce0596d56c99265fc840ad522f006ab6f456c5f6c48b83c29d8f5ad9e", + 0, + 1497894933 ], [ - "000000001d43b3165ec30736f28f0761600b092686f861db23ec38f2d92b0ec6", - [ - 0, - 0 - ] + "17223fa708285c6258f45244efd3d922063705237f579aced1a661226902847c", + 0, + 1497988852 ], [ - "000000000ef4092da8c2056e5933de0e1530194c3ad941a9b393fbb26f98862e", - [ - 0, - 0 - ] + "44f06da90d3836d37a01ea5d758be79ed09992870912e7dd2490d9c9b9b3b70f", + 0, + 1498253819 ], [ - "0000000001e3fed39f70023909f962bea146b03bc8e94e5d19d7da93123f4f64", - [ - 0, - 0 - ] + "5828007113bcebf1016aad38eea99f4a4305160afed747dd2af9efc77babded2", + 0, + 1498259753 ], [ - "0000000000b4b8c877bbe3cde97649845290bb78999ecff4621b9bf2ab16aa2e", - [ - 0, - 0 - ] + "d482356e7e977ff0b73a4fc432f1009a97bb8e73ebad062800af2914277afb31", + 0, + 1498549788 ], [ - "00000000006095ba3b4742883a0ec427a3fd685ffb65b987ea77ebfedea7da82", - [ - 0, - 0 - ] + "0a1a8c5434af036a3bb22efefb20aff51948aa71e4a8cfe1bd348c71972bc72c", + 0, + 1499081056 ], [ - "000000000168f0a76a6068a34fc042553aff4aa63b906028f28c2a4c327328e1", - [ - 0, - 0 - ] + "b64366f229369e7ba61b390a1ed026b2b5d618c637be8eb31e6291bbac4cfbdc", + 0, + 1499449930 ], [ - "0000000000af10f3079b4989ac4ff0baaecab38220510cdae9672d6922e93919", - [ - 0, - 0 - ] + "7db8dd1a7800faa4c1f711589769cbf5952a6d0a1e0545cb2428742d26a04eed", + 0, + 1499588110 ], [ - "0000000000312791ada0f6a4c5eaf2a1cd57cd06f5970a8ab49923817b862c35", - [ - 0, - 0 - ] + "8400774f2ce98720e9deec98d8e702a4a89eb71fe60078eb14025bc6f50b44fd", + 0, + 1499692551 ], [ - "000000000055f3d4f45c4d199d9c230cb2cfeb68c8e934cfd061bd616358655a", - [ - 0, - 0 - ] + "b501b69e334a59ff53418562dfa8d19f0c1ab9a6262094687320904888db4279", + 0, + 1499758298 ], [ - "000000000036b6129bb5a786bfdd75cb4b932f7dcae9da469d3ba35096f1e821", - [ - 0, - 0 - ] + "53c9c3eadc09607cea4a543b4198b1376fd0d873a7a431e3facd18ffb68c96af", + 0, + 1499764361 ], [ - "00000000002fbccf271c13e486673251ecd7951ecc12ee73c4390e0ff09e9b59", - [ - 0, - 0 - ] + "3dbeefacd672d741362b44993075f69910f6be0e2365b7baeefdd03f03c7c2f5", + 0, + 1499770673 ], [ - "0000000000314e297a81bf002fc40eb391d8883ea45ee4e782385aa0fdba6452", - [ - 0, - 0 - ] + "88d469e0722afccdae591d9fac3b2e9206b4337a2b4ceb860db5cc6e5b6a93e2", + 0, + 1499779442 ], [ - "00000000d3c473819ec3b3c268f7b555df22772e407bc8f246a47cfc579ec61f", - [ - 0, - 0 - ] + "0db530711cf188cad70d696ae43dc14ae449b351876486372120e9b699ac3552", + 0, + 1499801456 ], [ - "0000000075a438fda6bdb391263d0a2a6e8e68edd9dd8f70fe5734eab9351eb8", - [ - 0, - 0 - ] + "2c9a5a8880c7f8ea0bda04b38a83c91aec0781b11e99e59e1021045e324d0c48", + 0, + 1499873373 ], [ - "0000000017ebae0a2bec50008b4a4ea8839798cbd9ff228e76aba087d0ff1736", - [ - 0, - 0 - ] + "d3505c66dba3a58e506f8a41127310d57fecb187562df2ae70179de2ff83bd73", + 0, + 1500382038 ], [ - "000000000800466ba31c0bbc12b125f16d05ed27788de045e25d6f093817d29c", - [ - 0, - 0 - ] + "adb1c056849a74d9d78b3aa883d774bd7c9935853c1410a082592b5d10689f9c", + 0, + 1500459595 ], [ - "00000000002163c41f2264f202e611aeb9ba6c0a3ee95cd8e5e7e571edc64edf", - [ - 0, - 0 - ] + "af326d9bb82880939e646642787ee0a5a1dbce83b379903aa8d35edb9f618b22", + 0, + 1500710651 ], [ - "0000000000de9882d417786fce8c755cfaad17f40cda744d4badedfe5e414e31", - [ - 0, - 0 - ] + "52e6c9c0bad4223e60debda5621a960b0238486df24b5dd9cc4ded5b71849341", + 0, + 1500760523 ], [ - "00000000002af352cf41f60a5ebf033bf7e4967c0597cee706ba877b795aefb4", - [ - 0, - 0 - ] + "85087d9dfc8013b470dac2f3f8d71ed6bee9a6f3fb5f5afaf9698d5f99717a63", + 0, + 1500836909 ], [ - "0000000000009ca0030f1dd0b09cc628f2d4d278c87b20781a1b136dc395debf", - [ - 0, - 0 - ] + "1ae12813c8bddfab0693a4fc8b5353e6aca4c88ec8492e1cff431f766d25528c", + 0, + 1501359299 ], [ - "00000000ffd27370a76d06a0da0e3805f47e35e2cf584d73d2c5ecaa2e525642", - [ - 0, - 0 - ] + "10c76d53784f00b3b4433f123aeb24fae8d4ebadad186a025e55babc29bf5377", + 0, + 1501624492 ], [ - "00000000720da6910aa75099baa020cb8db37e1dc19cdff66152225b7609c23a", - [ - 0, - 0 - ] + "4f42c943670b4858f3a198ebde3edda4f6c999139ed572431d1a1d22df4a4c87", + 0, + 1501628395 ], [ - "000000000a5c2cc704bce5e8527ce91bac7430c659624ecd86e6a1bb9b697962", - [ - 0, - 0 - ] + "46d93984b064a07344b230ccb979c1106db0318769c364faa960ec5bcc395c83", + 0, + 1501632204 ], [ - "00000000084273545134e9a06483c8fab00c2b0628056bb1967f310c74a971bc", - [ - 0, - 0 - ] + "bfdfed63c9265e4ca71b749dba4ba079e7586f3a769fa0f34def7575ed1a2753", + 0, + 1502086628 ], [ - "0000000002f66f4da52804647b1c3e1f89d17bdb05e9cd4ebbd922007c773f21", - [ - 0, - 0 - ] + "8fce60c1ac1924f4782e9b8a148c9be1c5e16e8c07cbea49ffbf653c525ac3e2", + 0, + 1502108755 ], [ - "00000000c46146c9d0a67a354b3f82947e52670a3bded6d8513ab34a68ae18bd", - [ - 0, - 0 - ] + "12e77d4e2916c563a974b1fda3a1f2f5ea71767f1c6ef8340d3c96413beb3c60", + 0, + 1502227916 ], [ - "000000002f61c429d7dbe7bde75796086efe574998766806138710a2d6001eba", - [ - 0, - 0 - ] + "68b0df4d6ee6c155c21d79446fcdd50344ce3651a02ac73b2be9a9d5c3028e0e", + 0, + 1502448943 ], [ - "0000000001daf3e3e78a57df2c2d2ddd14093d10515925e75c818bec3bbd30c2", - [ - 0, - 0 - ] + "f0fd7e8b80a3668876493db84b35a6349c4c3077b7471903fd299a1947969e9a", + 0, + 1502623472 ], [ - "0000000002e133a7427a9aac6ceca969b27507c14111a45512cdf8f52a436de0", - [ - 0, - 0 - ] + "bfea3a1f2206a93f977ccfeeb2ba5354ac90e640de99f8f24ece095fd08b11d8", + 0, + 1502637950 ], [ - "0000000000f7c4374d458666740de1d0e8c55229a209ced7c38e38708781487c", - [ - 0, - 0 - ] + "babcb18933d36aefb2ac6c42557fc9d178026054ccd92937406aee52a7017e91", + 0, + 1502658737 ], [ - "000000000035bb9ea329ba30b83eeb4ea6f57c2fe703b97f9b879f21e22643e0", - [ - 0, - 0 - ] + "5e4eadc35f65e50248b4ef73e9b6434b373473befadc585c9a596030ba778de3", + 0, + 1502680445 ], [ - "00000000001220503e0aaee266bca85de09ce97b0091f24972d1ad1c8afe8609", - [ - 0, - 0 - ] + "c3d7eb99cf8d0e16d4e92ef3483c57d881abffb670e4d8a282c1821c4ee2c1c0", + 0, + 1502735499 ], [ - "000000000010a614c60457f8d2ae2bb826d037f52113252888fadda8ed773c9c", - [ - 0, - 0 - ] + "ad061c82cc119a5e479d4d86370e12c20a3dd51a2f152af86b4d75b0e20eb7e8", + 0, + 1502916488 ], [ - "00000000585a8b882ecff8aa8434feeac4ef199ca669bd81ed473e37f0bb4528", - [ - 0, - 0 - ] + "7387000a0c182042d90a92d962851b0746224d92bf2afae0b1b6e90bd49db176", + 0, + 1503294964 ], [ - "000000009504ffdb5fe82ad88218fb5e75a8bc185247e30e22d23b9fd9b7f282", - [ - 0, - 0 - ] + "e6a6d57151dd2ef53e470850125f873e567f9428d2ad21d5d60abb909f35c37e", + 0, + 1503368860 ], [ - "000000000ddec7d73bcd653168d82e34cf5746e006bccda8a9c031c3289b9568", - [ - 0, - 0 - ] + "12cbe96f31596816d5f9267a46182732e97ea973c30966fdec9dfa86a0b85b45", + 0, + 1503707060 ], [ - "000000000cb6620ee4e8cb8b6b4d51251e5961f7ae2e83538ab3a4fef3bcc773", - [ - 0, - 0 - ] + "cd2a723b20b6039206639a2b62e8ab795f6d7f72dd23560c41482fe4cc5383dc", + 0, + 1503947202 ], [ - "000000000239224a0841738513c1eda712b73266ea958aa75f44a3985ebfab82", - [ - 0, - 0 - ] + "a03c6e2eb8f76c380f2dfdcc462f071bb1b51459bc6570788d0dde8d8fc15931", + 0, + 1504386196 ], [ - "00000000002630c7c3586fcc19079300403c54dc293bcfdf8a9981f85a5c31bc", - [ - 0, - 0 - ] + "525dfcdd8bffda56c593e1b0dd0ce46317c08dac8347b88da84859be80a3945b", + 0, + 1504395103 ], [ - "000000000028d8c34f44e51fd71f5401094a983f6566e6d08ce86ec5d1bd639c", - [ - 0, - 0 - ] + "079ec52212b748a953968f13dc6a224336f94d9a0a3f5c7156edf26554297288", + 0, + 1504404536 ], [ - "00000000000dca95f1828adc3c37b4625f60aeb35a6614a4358322b7a6bc2f7d", - [ - 0, - 0 - ] + "7872488a596536837faf87c87616ab8b8a043eacd8ab31c4b0a08eedeb37dae4", + 0, + 1504414377 ], [ - "00000000d72ec84fda18959ddc474d1a31a3a13b1d94695136c4810af8c01a0b", - [ - 0, - 0 - ] + "05bfbfa2d3b194f38babd171f7f694dda1edb493ce61201e2e2264090eb8cc06", + 0, + 1504423920 ], [ - "00000000327c29604996eb7f0a208160969ee4408a1cad277a956334f94e0f35", - [ - 0, - 0 - ] + "cfb1943c6a7821c11bbf3d40f6fd35f2054b1db63c046b964551391329cf9e0b", + 0, + 1504433399 ], [ - "000000000e1bd41d009c1910fcfee7bf1cc1adb04b0b7a632ac36c1092f01bb7", - [ - 0, - 0 - ] + "1a677c66a4d21bde0581a04fbe7a31e36340ee5263e460d1f7becf1465e190d9", + 0, + 1504450920 ], [ - "000000000201a5afed48b9d095b949229e9882ef8bc96767be3097c87264dfb6", - [ - 0, - 0 - ] + "efdf992d0d6bb4bbc09d13f365d32756297664d94eaa4586b1d137d5e37b23e0", + 0, + 1504518607 ], [ - "00000000003f28e8f3f9c80b1269bb0aa3b57501c12458550ef04fd43aca6a33", - [ - 0, - 0 - ] + "6e308250d2db09d593af7a9b411d7ccff8d997e6cce5fb05d3538be1a1692785", + 0, + 1505200043 ], [ - "000000000029e09fc14e38a6a0103c8c67383f41af7d76998055682525f4ca89", - [ - 0, - 0 - ] + "0e9b1b29775236a3613cda5a9944add77d2c08a8051ae9ebba113ebfd3ea5e72", + 0, + 1505370936 ], [ - "00000000285ce297602995582ba5d32d583d618a6a92643566e25dd36cf2b7ab", - [ - 0, - 0 - ] + "c670314a5346b357eb06632b467421f3787390a0fa76efe2b8122c90d44f5afb", + 0, + 1505376098 ], [ - "00000000657045fa54fac52b8480dc84bd4c418940ba63679f4bd6add6a39962", - [ - 0, - 0 - ] + "e22b59d871637f9dca5ad1bacef248706ad75bbe99d4659b2d78b3274ed8b880", + 0, + 1505376644 ], [ - "0000000017b7bb58be05a47ff7c4ead27db750813d6bcf3f99cbcc35324cf445", - [ - 0, - 0 - ] + "4e0c82930edc8d3b55cb879fcce459c29fb895a0ddf72acd892690432e65beae", + 0, + 1505377048 ], [ - "00000000003a310e39b6df17f17450496b4f5c1593399bfa1ab8b4d39bac9b25", - [ - 0, - 0 - ] + "07a974c9e7874df72d3320831a1fdfad6bc8b2e52db7d52bf109cfe466cbd2bc", + 0, + 1505814246 ], [ - "00000000000bfbc5294f003548a9636ebbcea3ba42577821266317676fbc363c", - [ - 0, - 0 - ] + "7800648f7725971127345c27dee98867583888ae0a8f8c955c2ce15604845664", + 0, + 1505823902 ], [ - "000000002329351dd70c24da2eea5ac19f65b6053c4611aa4eb93bcc2783c57e", - [ - 0, - 0 - ] + "9048f9d8d30c3dfae1cd37333a1b39aa6adcdc49467114c9d325b11d5c988bef", + 0, + 1505833115 ], [ - "000000004ce02f1005aa6fa4d158c6e4fce95ab053d88ae74881dd080c24e057", - [ - 0, - 0 - ] + "645420bfef16e27c66be824b857eac67b045ad06be7f3af02da0ceb8472ace00", + 0, + 1505855305 ], [ - "0000000000fdaaa54cdaade8cfb75245de0747c60c0307ad11be9fe154535565", - [ - 0, - 0 - ] + "8e0d17dc4f71eeefcdd3be44378829fa040dc9b51c90a5dd5b78a9991bc4f848", + 0, + 1505939481 ], [ - "0000000003dc49f7472f960eedb4fb2d1ccc8b0530ca6c75ed2bba9718b6f297", - [ - 0, - 0 - ] + "fcc044b4942344578e5ed164dad40eb6780bcbc290f2f73d86dee80d881ae4f3", + 0, + 1506167616 ], [ - "00000000014ca604d769d4b99fff03ae3ac84d1e8eb991c5dac7c3cd4d9e68ee", - [ - 0, - 0 - ] + "6cbdc6d7e021c3921f9c57285dc7af47d678f1c071928a7e5422828ec5e5bd74", + 0, + 1506413620 ], [ - "0000000000190ab8ecef3a3d5583563851672d81a4d4d952b8cf3bd503c655e5", - [ - 0, - 0 - ] + "8f25bda4312fa8e69aafb1d9473e47aeb4aa1f8787e6949be46e9621458467b7", + 0, + 1506732628 ], [ - "00000000001204d263b607987fab11e1c19c94b7e3e674cc73cc2fb7b05fbf07", - [ - 0, - 0 - ] + "70c3a4ff6ec718257ba940c48a85ff7312cfebe2b52d2e06dbf95b25462f9fdb", + 0, + 1507077945 ], [ - "0000000000141e8d7f7ac359a8ae58e35ce6010c25ddd6f1881f41c0b939332e", - [ - 0, - 0 - ] + "951d285017cb9385ac11b707adbafd5dac65fdf6038ccca26eed3047cc36e3f1", + 0, + 1507391141 ], [ - "00000000946344dd06ef5ddd13fb74f20c475daf911ff4e3f1dcdf64c330e274", - [ - 0, - 0 - ] + "d49edd271268efee9d30832468c0c25fb7fd16788ee2c65e9957b4920f930927", + 0, + 1507675477 ], [ - "00000000ec77a7892e48b85bcbaf404d16d7fc93747d7e9e3ba6195a9b6f1525", - [ - 0, - 0 - ] + "50f628962e3786bb6429bc5ead30603695f8c8a3ad22404377e61c462733ec53", + 0, + 1507958942 ], [ - "0000000018a305c04dea8e93e423ce9569872e0ec5af49d23a0e3872b0ad6297", - [ - 0, - 0 - ] + "bd15f130f8d1ce7546b33a15c1786e9c5cf58882e197aa21aaf7e6c1df47f831", + 0, + 1508251619 ], [ - "00000000055e32c5f8a86c9a712eeb6440bbf9810ae6da12d0cea2493138a885", - [ - 0, - 0 - ] + "122ba36eeaefa3a495741ed988c61fd0baa9811108745a93e9ef1b6ac074d3c0", + 0, + 1508549611 ], [ - "0000000001913fcbe67badbce4234e86e35a1ea867ecd69814b5f5ab039b7d4b", - [ - 0, - 0 - ] + "90ee4052c6b3cc4474041b399f9de1e7111280827dacaba16385e10d920a74eb", + 0, + 1508556022 ], [ - "00000000002c71fe4403aee704720ceafd21f9f8c9c97a8bfbd25bb46223aa40", - [ - 0, - 0 - ] + "458926783d9204d434a126448f7d23a687643fa10b9366f35307a87afab6d26a", + 0, + 1508560990 ], [ - "0000000000343a42da0c811836d0785c272591facd816f0e7fdcfb1109d8f9a8", - [ - 0, - 0 - ] + "989cc92c146d06257510879ff097d7612b75d26cb7fc59a8bde44647eaf776a1", + 0, + 1508565525 ], [ - "00000000000309b182608b3eea7fafd0d72e3c79a0a3a9cda03cde3947e332e1", - [ - 0, - 0 - ] + "cb13a3217dac25ea8fc93ac6a26a3277bdb738fabf5a95969176b3b082574d09", + 0, + 1508570875 ], [ - "00000000000204cc04e421c3958a64d7bc024a474ce792d42ab5b48a5a6f3927", - [ - 0, - 0 - ] + "fde843237c2e4d63dc489629e64197d45646216317811e2c52104826487060c2", + 0, + 1508576170 ], [ - "000000005eaa010e7255bd37e0b00780575074a74d889e17c4dbc578f917348d", - [ - 0, - 0 - ] + "4a453857d6fef29856fd8824d0efcb8670499513fd6474106610e5f19c4d7712", + 0, + 1508593698 ], [ - "00000000a0d425f62d9196c069286dc6635ded9d027de40070d397e45bd63e0e", - [ - 0, - 0 - ] + "d661e4b940672c07d1caa8622eb3c27cb513a90eff079ef6f8cbbb63d68325db", + 0, + 1508660981 ], [ - "000000003355fd37068ce2d5d2a94ef964eeb9b687f21f4a00850a3e6cc4a71f", - [ - 0, - 0 - ] + "3196b5c73bbe4743e0a9f81bbc96ac8b265865365e878304b487e14e6e5d5e52", + 0, + 1508893643 ], [ - "000000000ca9148dabe9424cd8c96860c90d836ab25970a3e91856764e2e640c", - [ - 0, - 0 - ] + "ae05edd6255a7ab91915a6c1f304fd546e5111be5987b17a36c9b7240872c242", + 0, + 1508903759 ], [ - "0000000000bde23f829dde8edef35436be4b8978da21fd2c3a8100ef5334e3cc", - [ - 0, - 0 - ] + "9560072b185a9b844f15cc2d31993bc1acbf1dc74bebddb7a194e575afb5a539", + 0, + 1508913856 ], [ - "000000000028bb26f1427fbfabeae65d55a9e59e18230713e40f0f7c9c2dee12", - [ - 0, - 0 - ] + "accf359d5c4b288c0dfc55aec650eaf23395723e3072ec5f187040bcbc18ca37", + 0, + 1508923502 ], [ - "00000000002ac05422d254e597ee6b5e0f8be9b3e2f887486442d720c7766919", - [ - 0, - 0 - ] + "195a8ef9de9e7b9406ed47d120066fd995d80ff6733c86f177e31781f3582a7e", + 0, + 1508933161 ], [ - "00000000000e36d0b6f187dd9601b1d1dcd987c3e0f6a081ffd039c7c5e32462", - [ - 0, - 0 - ] + "fb5133b6ea27d54d19030ca5f5a8d0b2ba07328db8ed48807a1c88067794f611", + 0, + 1508942548 ], [ - "0000000000048d7b1f2a2a11fda34a5cfeea067ab03e482931e5a0f463f438ba", - [ - 0, - 0 - ] + "6a7451b1da111502846ce31817bbb41e406d2addb470ac35a11bc02f1c145be4", + 0, + 1508965207 ], [ - "00000000f780ab88c8a4f4247573a749fbb087a4e3fb6a7d29926de8a9ab3462", - [ - 0, - 0 - ] + "97a5da8ddf783e92723d8f144ccfb298fb71aa5500a0866c52d8603951d500d6", + 0, + 1509054503 ], [ - "000000000313bbe6a940e6a8c40ba091aa1ebbaad135bbbff3ed8ae07cf574d2", - [ - 0, - 0 - ] + "25f511ac099be0a19fb6be5310213b30b2079a0261ef996c4fbac368fae8b6fa", + 0, + 1509295929 ], [ - "000000001d4ab29721aa2722482562670a0d71dc1eb73231c5dafb64756b04e8", - [ - 0, - 0 - ] + "1d93a96e4f9167e5ce92c06875f0e40d27b50b5a93268b91a7d6a5a31fe87f06", + 0, + 1509849489 ], [ - "0000000006588bcbdec38d19962b96cf0352cbf1b90f3379cc6787d018cdb96d", - [ - 0, - 0 - ] + "4af6bbb0c7cc6b713ed198e2fe843eb157f21ef7d819ced11ed1dabaa7154002", + 0, + 1510031044 ], [ - "000000000022e79539a21ac24f9daa2cbddf2bb4a3125f88a5efc20d13ea856b", - [ - 0, - 0 - ] + "36d45e0e2f66f44161ff60e71f8c8dec910c4f09a04bbeaa742f4cda6512f4ed", + 0, + 1510665766 ], [ - "0000000000dd284b7fee584cc578a10fbe57e8efe6bf6ebacb23c0ac5d46cdf7", - [ - 0, - 0 - ] + "2abf82b0a4e5934b1358463b4bc31e50ba4ef14cbcab91e77a14dd4b44c08053", + 0, + 1510736546 ], [ - "00000000001451143787f411c93d5506065c3fb597966f2fd7a4a5c078ee6aa2", - [ - 0, - 0 - ] + "54915147123860724f1123295b47252cfeda0169cd073524c1bbeaa171a97943", + 0, + 1510811445 ], [ - "00000000000ca977394af1e414dc1f9d83efa007f7226e11d3a00f59a1fdfad1", - [ - 0, - 0 - ] + "5d8c25eec3e9d247007280725d712091c0b59c72d19121fa961a1294833b9fc3", + 0, + 1510836356 ], [ - "0000000000011f8caa80580e7a796bbce5b84e60731bf48e03c6ff5c6bba868e", - [ - 0, - 0 - ] + "490d07773a8f44524d7e9515be56f95bbf25db3c75c26de5fac0691751d5c9b4", + 0, + 1510937948 ], [ - "000000000001705beb1376af1af08b437acef6befbe7d3b60c5fbaf6bb7f38c9", - [ - 0, - 0 - ] + "d76907b5f14aa52c454ece23f9ef8b1b943220eeadba6cf31223968f6f83758e", + 0, + 1511172624 ], [ - "000000000000c838f1f45422d93ca9b5838368a37423efa8439ee24b2bf247a2", - [ - 0, - 0 - ] + "e2a7ca19f416fa0322e485059d09f262bf0c760abee1276eaad3fbbd9268dee2", + 0, + 1511425493 ], [ - "00000000000111ad857d31d07fdc8b32d17af2522c18bdaccfef449b29d17362", - [ - 0, - 0 - ] + "c384f0c07d8bb7609f344b91fedc4c664423fa27b138121bd1168e91812110b2", + 0, + 1511750602 ], [ - "000000000000312a7718fc616b0ecfdbf6066f71ec1a4a8c43f50f02f61cc398", - [ - 0, - 0 - ] + "aaed18fed1a4c7a2b4c9e5c194cdf86aa22f5c65a9541b9c4cbd104c59e1fe19", + 0, + 1511764732 ], [ - "0000000000007d232b217a59b804ef67091c5720a5460c2c16bf97b97a24801e", - [ - 0, - 0 - ] + "aeb3d1cdb62a6ab51b0d9e27155c86c6c0702f225eba44c47cdd8ab4482c89b0", + 0, + 1511786043 ], [ - "000000000000177235c33695aced585685b4c500eb76e72caad02e17503900eb", - [ - 0, - 0 - ] + "6a735b5812a4cfb558ff3e3eeb6f012768121d17e0f269e9dd38e8f2a35c0e63", + 0, + 1511811517 ], [ - "00000000000037f5c5890da7a8e2acd2b0669ad7db648ac43140c637a1c81637", - [ - 0, - 0 - ] + "ec498d0508a46af973abb5c8473672360dcf08dacd6f702988b524e3db6424af", + 0, + 1511907405 ], [ - "0000000000002123904063f223bc35135c426a4f9a0b74c1907e837b810f0321", - [ - 0, - 0 - ] + "814ad78f99524088fa312702e9ea67cc3125fd84f6713442362df8816af32420", + 0, + 1512446876 ], [ - "0000000000000961db809da357d91a9341170fafef9f24896d8730bd05cf3f96", - [ - 0, - 0 - ] + "cc87089c316fc639eb7403269dacd9445f96aa8083f3fabc1c87f862e4f619f5", + 0, + 1512511314 ], [ - "000000000d2e8fcd05eb874e98cfc3a6e239f6974950e6f50b0487513ecab760", - [ - 0, - 0 - ] + "81c544d05c0893b62ff75e6d3828ed8a565c3d95b7290a3f9b714bb9c5ee24cf", + 0, + 1512668729 ], [ - "00000000017e362508c8db23fae0431eaed708d9db13e48fd5d318066bf6733f", - [ - 0, - 0 - ] + "5be3e23cbba3ccfd79ca9b38754574ba8a3829a7af4c8b5635f3d221c45cc7f9", + 0, + 1512807779 ], [ - "000000000011b2bc4fe36f90b7ba5a62f974db250bfdc285b70c71148023c7e3", - [ - 0, - 0 - ] + "9512e0c6a5113040b2808a726ad20df456b55da11cf14ad428895b15434ad2b0", + 0, + 1513082065 ], [ - "000000000001be28570b378dd5dd2eb3aa495c229913b6757fe8900dfa3cce99", - [ - 0, - 0 - ] + "3ba5f489ac96e4db346442b2bd8109ca4eeb23266938aa19bc1174d69a7d5b1f", + 0, + 1513317649 ], [ - "0000000000242bd0bb16d0a5324e0b4b5a83697dabb3b4a059084557478e50b9", - [ - 0, - 0 - ] + "b9416e79c25718001ac423c8f2201651e5d02b0a773c7adfe49eb8c76b74bce8", + 0, + 1513349588 ], [ - "0000000000d8ce69d18da32ed52e503d6b5ad48d970b90545f956b2d2af2edf6", - [ - 0, - 0 - ] + "892f8da9c402aa8f12759c2aebeba479ce28559a424b4af5b4d8d14a5943beed", + 0, + 1513503564 ], [ - "0000000000366655bf0cb3dd0cd7801e0adbd26b5b441b77a9e3642597effb00", - [ - 0, - 0 - ] + "33fd9f4c6c4e4542a3744f43a5573361fbadc44223e499e5445b966a563f52b6", + 0, + 1513712219 ], [ - "00000000000dc7aa00d4607ca8374d40d1187f1c084b620edb45fc39bc8d2db8", - [ - 0, - 0 - ] + "83d7a51080ce5c2d255b2ff97014014c958bf2512c491124bcb90d7d41bee1cb", + 0, + 1513763627 ], [ - "000000000003baf60d9c6e70a765cf517f66a124509191188e9547ad09edf68b", - [ - 0, - 0 - ] + "968c97fbc02cd5f1a83efdadf45bef494b58cc6031379fe00b41222f1763855b", + 0, + 1513894393 ], [ - "000000000000e0f476893b8fb4d37e855353075fde73dbc1fe181cc956349f19", - [ - 0, - 0 - ] + "935f58e69e0dae752e2b051f1e5a3d247d89c408e521ebf56f2fbba359cacbaa", + 0, + 1514242833 ], [ - "00000000000032ed16b7de758abadf4a4fb2df7a101ff275c51f29e1555a89a5", - [ - 0, - 0 - ] + "1a667efb2bf148d822b15012c1feafa1f0a7723749c711ca24283a4a9b099351", + 0, + 1514322812 ], [ - "0000000000000a564d03f0f2fe20f6fb5f038d931f732d817641cd7fff3b0acd", - [ - 0, - 0 - ] + "a91d8a9a51700af722e8c14e05a817842b731b5cc7f079a715cf626874ca3288", + 0, + 1514498771 ], [ - "000000000000011aa4d0fdcea8d4ca85cd5d548e322e2b6abd17f8444be855c5", - [ - 0, - 0 - ] + "747a922ce3c20970de8927be185539b6224f67dee6b6c4792363bdb0af2ca8fc", + 0, + 1514513511 ], [ - "0000000000000610588540267a0eb544531047d4c8af0f21fca7cd3d96205cfc", - [ - 0, - 0 - ] + "678f2129c71f030dc67a84d514e0f876ba003f28179d567ff67998242233d61c", + 0, + 1514528178 ], [ - "00000000000002770dab5e14843149df8f76b8dc8458ed3ed2ed8a14a6e2e564", - [ - 0, - 0 - ] + "beb4554068dd2aef462957a8e29c0aec2d56a75597d71c881511969b09a9bb46", + 0, + 1514542196 ], [ - "00000000000006b70ebc9f75bd32f466602cbd4b86c3c2d2379059542bb8bec6", - [ - 0, - 0 - ] + "e8fb9985ba0fcabe870e59551756e89e7df2c388a7ecba73e66accc138b9b951", + 0, + 1514551024 ], [ - "00000000000000ef579af389fa7674f98a2371063fa8b218c5ca0ad94e21b896", - [ - 0, - 0 - ] + "5ce74447071a2bd566dae15621ef128489b14e51de5e2dfd24c7d4831bdad02d", + 0, + 1514581587 ], [ - "000000000000021b6108dc988f9153383f9501ab9001109aa87902ddd4c8a4d1", - [ - 0, - 0 - ] + "8f64b7bbcd52e073036bc27b1395a4eb8dec3dd64bce06062e7002a0b6260692", + 0, + 1514767565 ], [ - "000000000000022c02ff22bc0af5201f0e1a14a75879c494731e4fbf999218c8", - [ - 0, - 0 - ] + "895f4b8179cc6be6d1276fca80ddd217fd7170aec945fb0a5e7b73461e0b2d36", + 0, + 1515036061 ], [ - "000000000000032651c988edc1ccd08e82b888cbb8135e24a958ac0c0b640d5d", - [ - 0, - 0 - ] + "6487f0b9ebfe3b70cb713777a13aac4052ce821ebd21e8db0b0f55a60370835d", + 0, + 1515051084 ], [ - "000000000000015aefdfa0790bed326c38c358c07aac0674f5b2e771258b8df3", - [ - 0, - 0 - ] + "25fe87131d5624aaa57eaf26c1b4124c262445aaada56390964a40b4d32c957f", + 0, + 1515065475 ], [ - "00000000000000822e1534c86afef911b67d3fa20cf2b12d93d20d64005f54d7", - [ - 0, - 0 - ] + "4d4f81f73de56193863d7a8aa6d9baec1f992614a3bed2ba7b69566ae1f76b54", + 0, + 1515079878 ], [ - "00000000000000338b871276768c923b1c603fd6150bd054c2287e532e61de7f", - [ - 0, - 0 - ] + "9ef2a3513244340f7dc4ef161ce15b320b8cdb239602189a76d5c9d800406782", + 0, + 1515094753 ], [ - "00000000000002d0af52c0cae894bf836b61137ace2bd7500abd13a584c02741", - [ - 0, - 0 - ] + "a980bbd7ca94482deb4a224c8cb431856d34bb7f3d8b86fd16405824261b09b0", + 0, + 1515109848 ], [ - "000000006f8443a458f38d8731821c07a2fda0ecdbb1cf797f541844d468ce0c", - [ - 0, - 0 - ] + "70c3974624aa1586cba0a2fce7b930e4878c012dc837009837652350c157ae6a", + 0, + 1515125019 ], [ - "0000000000b6fbd8b4e227f5514979a61d8b0b918d2adc154e585ca926386704", - [ - 0, - 0 - ] + "88406b8010bf2986264ac9c4b2714dfc89365e07aa8f9f22f0f3a0e90d7c11a1", + 0, + 1515140313 ], [ - "000000000f4f5e49b10278e27d9dee15b92f9d4a257138a206831e0c00188767", - [ - 0, - 0 - ] + "cdf0ddced3d0db3b020d64211904d08a2bb323dbc3b6b79ae6b9102a0ef577b6", + 0, + 1515190247 ], [ - "0000000002c7e9769bd8ae9906fc5682e937b5c31ab5b5b86e4d70af2c15a95c", - [ - 0, - 0 - ] - ], - [ - "0000000000f68a1db8cd387e0a2f93f45149fe1ee4a230bb386313bdd42058e8", - [ - 0, - 0 - ] - ], - [ - "0000000000f0f65c360c8f0f9853ad1142f16675dc1175d61afdbef977776b25", - [ - 0, - 0 - ] - ], - [ - "000000000004f734e634156511cbef7dfefebdf317e7488aa6c2562572d7ecb7", - [ - 0, - 0 - ] - ], - [ - "0000000000002a46a7a16787e8317dc567ae26816324c2035be0186ba54d5cb8", - [ - 0, - 0 - ] - ], - [ - "000000000001a593e6f01875b77e270163538d88452779bb557df7c2607c28e0", - [ - 0, - 0 - ] - ], - [ - "0000000000004f24cfafa10bd50a452535f64be577a6161e51c7c71542f654c4", - [ - 0, - 0 - ] - ], - [ - "00000000597cce73e84b63f08cfcb9b01f5e7621752d8c8e08fabbd6ab5c0dd5", - [ - 0, - 0 - ] - ], - [ - "000000007cad379df01247771fff471bc99faea1b86218602f45ab13efc5e9f6", - [ - 0, - 0 - ] - ], - [ - "000000000d6085aab25892be49c49d6c0a3949befdc3ddce2faa46b104e1e804", - [ - 0, - 0 - ] - ], - [ - "0000000002be5996786b42d6a229093896aea9966b1854ea261e01e84da1f420", - [ - 0, - 0 - ] - ], - [ - "00000000002684b72056e270b115d80b12b2f68eac7412355287226aecd9b5e0", - [ - 0, - 0 - ] - ], - [ - "0000000079ea27efb24366c87856a9e371c56fcbd59d09d3164a5c2fc15fcbca", - [ - 0, - 0 - ] - ], - [ - "000000001694120525dba4548ca54087544da1fbefa51c38f0208d683418825d", - [ - 0, - 0 - ] - ], - [ - "000000000693e80d372938f3553151ab9d0a9a6922182591c701df739dc9a502", - [ - 0, - 0 - ] - ], - [ - "0000000002950d9cb23c8511937811910b712f73d448e6fdc2e39e029b86848b", - [ - 0, - 0 - ] - ], - [ - "000000000091c40056c6a48f33db17764af89c01f62ae653aa5e494146164cee", - [ - 0, - 0 - ] - ], - [ - "00000000001f373c47e1a39af4e1ebcd8c88411ec49d6bd520c2781564070971", - [ - 0, - 0 - ] - ], - [ - "00000000000809ca4b2170c57958709b867095b1972d80a2ee55359fbd0940fe", - [ - 0, - 0 - ] - ], - [ - "0000000000038e7bd66fc3308447b1370dbdd0661c427c512bdbc641ff360fb2", - [ - 0, - 0 - ] - ], - [ - "000000009a3325df76e2de1fc1970cc2f241fa8a41da9ad745a0d9666d9ff51d", - [ - 0, - 0 - ] - ], - [ - "000000003176e92ff837bf43a48a995c1a321b166475f586ffb4b962e0254a4a", - [ - 0, - 0 - ] - ], - [ - "0000000001ae3292e81ca3859b75bccd5bff825cd9f496efd085160c716ed05e", - [ - 0, - 0 - ] - ], - [ - "00000000033bdac4f0d36bb912fba28bb5caa54d1b611759a10f79ff3c969cf2", - [ - 0, - 0 - ] - ], - [ - "00000000004c6db7fa0e2c9f08693abfeb128c5827b511a5c46c623a103b416b", - [ - 0, - 0 - ] - ], - [ - "00000000003d87f48bb95e9431760d0c5f4f93c77d02fce9dd1673e9f5b01029", - [ - 0, - 0 - ] - ], - [ - "00000000000e214fc3d8b97571eb75d248ca29f8e25a584c33de8488ceee72b0", - [ - 0, - 0 - ] - ], - [ - "00000000000133269b7159b828700d02de770a8cbd91f3d166e6bbc95d8e0dfc", - [ - 0, - 0 - ] - ], - [ - "000000000000cc92e2dd933a08f7fd87f84451627982fb66583587858217c059", - [ - 0, - 0 - ] - ], - [ - "00000000000030708136c20c4c8216314005b3cb5c551ded33b26cf64d2ff47d", - [ - 0, - 0 - ] - ], - [ - "00000000c472a1341d479ed02f31b699e448c035049a7092670b38f4ec6121f0", - [ - 0, - 0 - ] - ], - [ - "000000000a358834d6eed41b9b7161a338aba53828111414cdea7552ed15548a", - [ - 0, - 0 - ] - ], - [ - "000000000e13e77372daea775c8358916e57ed11835899c14e5140ed9be11089", - [ - 0, - 0 - ] - ], - [ - "00000000008252cd0931f94b2465bd4f93e4bfeec6697962c5b034cf3d12cf7c", - [ - 0, - 0 - ] - ], - [ - "00000000019812cd6cde3a43831234be71e68118be24a80161349b8b327acb5b", - [ - 0, - 0 - ] - ], - [ - "00000000005865499f301adfb59f8380743e4c3b3ab220ca4eb97dc6628df626", - [ - 0, - 0 - ] - ], - [ - "000000000015f77e1e61329560a4378eb401fa5bf0ef90b0a014a4d7857ca7a8", - [ - 0, - 0 - ] - ], - [ - "00000000e9cbcbb625e8a463ba8e7f14be46ba9538ffe93338784ccad3d992e8", - [ - 0, - 0 - ] - ], - [ - "000000000fb27169efcc2873cfaac223ebb91cc5e1e5ad7e9a312d42bedf7c42", - [ - 0, - 0 - ] - ], - [ - "000000000c9c96d62ebfbf3fa4003f1d46d175140ab084dee17e8125fa40f24a", - [ - 0, - 0 - ] - ], - [ - "000000000311e3a766b1ab2064b68a344a561eb496d595126808ffb166c71cc1", - [ - 0, - 0 - ] - ], - [ - "00000000677568c82262ac3a4ca3f909bdfb0b35145ad490fa3fbdc719d06b91", - [ - 0, - 0 - ] - ], - [ - "000000000ee77ba9ab657e51fd9140f5c9b46731d9341e98188f929c97d04746", - [ - 0, - 0 - ] - ], - [ - "0000000008a67eb9c91a6d74168f3f385270fa942ea00bdd31924d1b6ea11148", - [ - 0, - 0 - ] - ], - [ - "00000000017f93c9e0026e90d579e18c83b4a8557f0c00e9b85ab164cf4466c5", - [ - 0, - 0 - ] - ], - [ - "0000000000994efa379235c03711a8e6b29895d928b5fde96cb01c02374c0602", - [ - 0, - 0 - ] - ], - [ - "00000000b3be9f23c943d71d7c7dbdf6dd672d77a712f6c83e9796a85e4379f2", - [ - 0, - 0 - ] - ], - [ - "000000000713e1089b0b2bdcba462b740c9396f822f1c73e090713978a7f1314", - [ - 0, - 0 - ] - ], - [ - "0000000002fc44d358401a7ac9ce4ddcb17f3cbac08e40242e755e60ab2292ed", - [ - 0, - 0 - ] - ], - [ - "00000000021ef2c04fd30be7049f73b9a8353ac96a467dd5f0b9c1457be1bc5e", - [ - 0, - 0 - ] - ], - [ - "000000000023b95b440ccbbdcb914172cf675cd15d6111bd7f5a436a4925d36e", - [ - 0, - 0 - ] - ], - [ - "00000000001983521dbffd1b742a6d4b5dfda3f46579fbbdd83a2ebf9a039bec", - [ - 0, - 0 - ] - ], - [ - "0000000000044d53dbea312432e68fa90dc2148946f613216dbdeec86f6a67c1", - [ - 0, - 0 - ] - ], - [ - "00000000000107667692f12d21a55a72ff1dce828f96872e36c35bfbae475a8d", - [ - 0, - 0 - ] - ], - [ - "000000000000252d1d0c01744ec25af801ef7c57e2581c95295070b6a8a85bd5", - [ - 0, - 0 - ] - ], - [ - "000000001c1da54e16dc06158677024d9e74bff39bfaec83434ac33673fcc251", - [ - 0, - 0 - ] - ], - [ - "00000000b4d0c6ae86bfdf7ba4c205fc3e6b3b6d63836b85e30e9d8bac922301", - [ - 0, - 0 - ] - ], - [ - "000000002b16179cb022bf678bd847dd6fc1908d0df04abf0c7874981eb33ee7", - [ - 0, - 0 - ] - ], - [ - "000000000e6783554aae41856424d184dc4fa061f40676efd107e6f933a25641", - [ - 0, - 0 - ] - ], - [ - "00000000005ae4acbab519895b4b523d97a09e381c9e4b044e642f73b8c0f1b0", - [ - 0, - 0 - ] - ], - [ - "000000000010372b59c9595d947064804b75ab21868dd075a3842ab7d2df6181", - [ - 0, - 0 - ] - ], - [ - "00000000002f9f587ea304093be049d3142ac0c92f9c68928a4f82d12b929b69", - [ - 0, - 0 - ] - ], - [ - "000000000005d4cae51b3c76dc3c61bed0c265c4f228c0c4d1d3d147146c34eb", - [ - 0, - 0 - ] - ], - [ - "000000000001a5b6c0e0a0b485a490cb52ccdf9b22596656039b51545bb07be5", - [ - 0, - 0 - ] - ], - [ - "000000000000d723d0976338edf55d08edab995dd6283cbb688855f0dca6e8f5", - [ - 0, - 0 - ] - ], - [ - "00000000bfebfae90208a82c7fa06c0f61674dbf1e4f9162e370656c38d611bb", - [ - 0, - 0 - ] - ], - [ - "000000000c91cd144b2a92ab5024c87f70cc1d76a4a7f26a82a98c5aaad62850", - [ - 0, - 0 - ] - ], - [ - "00000000077c8114eb5cfb69c3924c699d0c70334360dd1daa95db0db4816953", - [ - 0, - 0 - ] - ], - [ - "000000000348a6443e091db8f68e88a10afad7c6e3e5392247902c4b4feade43", - [ - 0, - 0 - ] - ], - [ - "0000000000d63b70351e05829ad8a56336521b361b0d50eb7ea1f5b46c25b00a", - [ - 0, - 0 - ] - ], - [ - "00000000004658603163f0ede572120a1bbfce8d313aa282ae54d2ffd9fe9079", - [ - 0, - 0 - ] - ], - [ - "0000000000048063b410c793db34856f23acfb19a0ce72f5997fa572773378c8", - [ - 0, - 0 - ] - ], - [ - "00000000000228fb6e587fa593ff8b4764064bba8bfc2f43ba5b1f12af33d04a", - [ - 0, - 0 - ] - ], - [ - "00000000000082e3ddb75c0ea2a98922b1556ce10346f9bb0cedd97ccb3fdf62", - [ - 0, - 0 - ] - ], - [ - "00000000000005571b54d4886b44b81c21dfbefa554cd7c23430e5aeff6b5ae2", - [ - 0, - 0 - ] - ], - [ - "00000000306a603ca1a0d961e08e103a9f13f3615163c3373d1bd2a67cadc2a7", - [ - 0, - 0 - ] - ], - [ - "00000000195d93ba7ae19832b622de86ebdadf3c78f1751ef2b2e9b0e3a530d8", - [ - 0, - 0 - ] - ], - [ - "0000000000476d0d00cbc68bb20b4893f0e608b02a1e029b8c6c73e169c49e69", - [ - 0, - 0 - ] - ], - [ - "000000000051348044bc10fc05960c244c3ccd3b3b6c145ffd9958a1c8bc0215", - [ - 0, - 0 - ] - ], - [ - "0000000001e4df369203badca9aedc28c240d592b12d284ce0b0463fc7537c09", - [ - 0, - 0 - ] - ], - [ - "000000000091cc1ccd448b0ec9185618a84dea96f52477cfb9b9ca2b60cebe83", - [ - 0, - 0 - ] - ], - [ - "000000000024a50299c0ef0c6dec9c64336b6cf5c1a1b0013e22fd4fcee1d7d1", - [ - 0, - 0 - ] - ], - [ - "00000000000349248c1df06c3783d1270cd97ce7f605b9036fca0fdc2f0fbb96", - [ - 0, - 0 - ] - ], - [ - "000000000001afe6793e7427a3d780876d26eb7f2ded92563f991bf7302aea69", - [ - 0, - 0 - ] - ], - [ - "0000000000007148006e139e24d9fccc307661c9a0cbcd1af983487c2f0780c9", - [ - 0, - 0 - ] - ], - [ - "0000000000002734722a341984738177a3f6f264291424e4984f2128d921bf29", - [ - 0, - 0 - ] - ], - [ - "000000000109b02caaa95e49a477757a41a42daed40e92f54fa09e63f5538cd2", - [ - 0, - 0 - ] - ], - [ - "000000009a11c7ff8b8fa7fbff5a04c25906f701ab5bd67195736f9ccc839ab9", - [ - 0, - 0 - ] - ], - [ - "000000002b1d77f8e0cd60af1c62ef6d381e8905665b15a7fbc546d0c1a45e18", - [ - 0, - 0 - ] - ], - [ - "0000000002588cb017de9e2f23cea7edc5082f1b3faec890f9252d556efeac40", - [ - 0, - 0 - ] - ], - [ - "00000000008b07f177adc24a4b1a64d2dbcfbcc903ba861d493e11d6b33af7dc", - [ - 0, - 0 - ] - ], - [ - "0000000000bab8db5020aa8e052165275e8eb3e7c843533246bf6e4c8374757e", - [ - 0, - 0 - ] - ], - [ - "0000000000138488fdca8bfc327e6dbd6c72c5f1dc5868d9c0ea886665b9b56b", - [ - 0, - 0 - ] - ], - [ - "0000000000094021fc954efbf08be667fef1b817e8715d4093a561fc30264aa7", - [ - 0, - 0 - ] - ], - [ - "000000000000e8183e64072db79adfc6c09b650c4178001be3fade4050b06005", - [ - 0, - 0 - ] - ], - [ - "0000000000004c93e8661c75974cd191c68dd66999da4f70d039c0ba4a12b970", - [ - 0, - 0 - ] - ], - [ - "00000000000021c675b3ec404bb996f5e68f9eeceeac6946e5a6822987824d33", - [ - 0, - 0 - ] - ], - [ - "0000000000000ad85684d30f25d1ec34638f099df2f33b418a07307c68fe3c2d", - [ - 0, - 0 - ] - ], - [ - "000000000009c6add76ac42a1942c4ce74d25d1b8975d4e3ac8932185e785a44", - [ - 0, - 0 - ] - ], - [ - "000000001e7d828d354716881683eb6fb5caec5d91afce298e4e3bcee9574924", - [ - 0, - 0 - ] - ], - [ - "000000000a0e438ab203d8fd3e56100f2f14759f704bff6c699df0bb4e9aad64", - [ - 0, - 0 - ] - ], - [ - "000000000b7d5c2895df8bc1fdf5d31e0f663564cb5cff3b18642c44a71b6248", - [ - 0, - 0 - ] - ], - [ - "000000000193209ecd92fce00a75975446423d94a325ed525c15d5ab921da273", - [ - 0, - 0 - ] - ], - [ - "000000000020835bdc30ac67efdbc785d15186914bc14e86387f97450df46418", - [ - 0, - 0 - ] - ], - [ - "00000000000c9078321f0030214c75e170b01ec664d39bab1b1e48460a54eb63", - [ - 0, - 0 - ] - ], - [ - "00000000000ac68b63d486ade190dc9108eb3730d25e7537649fe21c30e0121f", - [ - 0, - 0 - ] - ], - [ - "000000000002a94dfc5f4b677b251a7a7647dbb99c0803df8658222227fe3e3f", - [ - 0, - 0 - ] - ], - [ - "000000000000b076bbef0e50593b1595ffb3d571e7ad95dbdf06dca8824ef7f3", - [ - 0, - 0 - ] - ], - [ - "000000000000167075c8bcd24233d25cd268271c0e8fcb6f301ee1b6f6ff0341", - [ - 0, - 0 - ] - ], - [ - "00000000013107aa587bcf12ac445330ff0325d73c5253f7e6a49ed8c50257bb", - [ - 0, - 0 - ] - ], - [ - "00000000090ff53d49c9ffd51511af8d5cba2038a8e25e3b17186b1bc941f43d", - [ - 0, - 0 - ] - ], - [ - "000000000d9e704d5607f77f8983cc56069571a3761d5bd5da55f05ec5d8e844", - [ - 0, - 0 - ] - ], - [ - "0000000002b2b4c0950fb6390f0ae860840e84eb0a82e5e8a9bc37c14bbf43b0", - [ - 0, - 0 - ] - ], - [ - "0000000000be10137a2434dce1d97850b768ce878c1c80ec905f6e9f21e65fa7", - [ - 0, - 0 - ] - ], - [ - "00000000005cd966f80183d4c048e63a5c14f649298dfd261d989d9e3c026bf4", - [ - 0, - 0 - ] - ], - [ - "00000000000e8f30e55006a4082380c4b1a372b7ad919d3a9b0a52fe5ee881d3", - [ - 0, - 0 - ] - ], - [ - "0000000000018c70a4c27bdba237ad19ebae5d3ca23f1394ccc746d73669a1c4", - [ - 0, - 0 - ] - ], - [ - "0000000000022acc8432c883953227786f7a6560aeaf0176d232c8affa5b25b4", - [ - 0, - 0 - ] - ], - [ - "0000000000001854e95b28b4efcb2cfeb08c76d8cf1fb03f2055b3fb758f3a1c", - [ - 0, - 0 - ] - ], - [ - "000000000000187080c2c39f5a3ea8be72ac4d3ec0d16b21cd34f1541bef23be", - [ - 0, - 0 - ] - ], - [ - "0000000000001593766a3c63b524f658ec7690df467cc7bbcebbdb56385500d4", - [ - 0, - 0 - ] - ], - [ - "00000000000012d6966dc51a41f2c617192169ec8418405e164ba83b9f7ecdfe", - [ - 0, - 0 - ] - ], - [ - "0000000000001d0c7d0a2605e127b00448b71e756ad96625116ab8ca18f74900", - [ - 0, - 0 - ] - ], - [ - "000000000009cb439ea49282d257595ad1f7602856c16cc26fff423f7783c792", - [ - 0, - 0 - ] - ], - [ - "0000000000889282b98336c994d7420a639221e0484b511227fd616d78dbd028", - [ - 0, - 0 - ] - ], - [ - "000000000071a4a2ad6767864bd21239c74c9912a40ca9fd3b209e21b66460d9", - [ - 0, - 0 - ] - ], - [ - "0000000000f3ed2c3c9a7c3a7291e859cecba8cf9243d23a4892e6be8ea9b70f", - [ - 0, - 0 - ] - ], - [ - "00000000006a4258ffdff8b7f6f4f685ce18c6eb1d7a1cf501ca9e02fcb7620a", - [ - 0, - 0 - ] - ], - [ - "00000000004af78f1a109d1267a9c24d69c6a4b30fea49f0efa6c8834cf394f9", - [ - 0, - 0 - ] - ], - [ - "0000000000193bf3efbb145747198470a81b2cd33c991057676742d5c22a64b2", - [ - 0, - 0 - ] - ], - [ - "000000000006b436798c7e4a8c3bdbf054a66707feee5a18ce9ca57eb95bb48a", - [ - 0, - 0 - ] - ], - [ - "0000000000001db50c7caa3a02ea4f173343f958f334a8bf3f8638add9e69b34", - [ - 0, - 0 - ] - ], - [ - "0000000000003c621629cc0bcec5968d61d2e42c6673de4d46555118ad5001d8", - [ - 0, - 0 - ] - ], - [ - "0000000000001262bef2918265f6dd4534013a4650444054fb4f5e490c5ed57b", - [ - 0, - 0 - ] - ], - [ - "0000000000000120ceee972d70cc84430006645997c7337976c673bd75cbef2b", - [ - 0, - 0 - ] - ], - [ - "00000000ba16134dc0c418a116b97ad5deccd6bf6e3daa028a8a6a80d7823faf", - [ - 0, - 0 - ] - ], - [ - "00000000a1a00d6d6fe0660e63402a5a7c7248589211594d37fd800456ce84b6", - [ - 0, - 0 - ] - ], - [ - "00000000394766cec78f962c29aaa715b66e3ad34e1f2323dba45e087cb3b395", - [ - 0, - 0 - ] - ], - [ - "0000000008b15a3020676f5e084210ecc05f646885eca1cf6a10e9ae9e3995cc", - [ - 0, - 0 - ] - ], - [ - "0000000002cf7eb98abe784f6e516670a88b9028a6faabfd099a364c2dc5c42b", - [ - 0, - 0 - ] - ], - [ - "000000000054015fec337a9ee43eea501d2292f031f5bc1f09758d20f5cd3135", - [ - 0, - 0 - ] - ], - [ - "0000000000068d24d31a9f1192d848155a2f90939627bc456c9a337135a923fa", - [ - 0, - 0 - ] - ], - [ - "000000000006262bd09358258edcc455f9ba46b7f9d6e69d0f6b9da89488a4a5", - [ - 0, - 0 - ] - ], - [ - "000000000002327bf77ae67961463ea98a78dab06c24ac7d58b1727c5f856626", - [ - 0, - 0 - ] - ], - [ - "0000000000006672235c1606fbacd7861b16b267d203b4d687708eeb1fc25e6d", - [ - 0, - 0 - ] - ], - [ - "000000000000ac0c9a39a47313a8715f125c46d6ea8be8741b99b1db4a8aae47", - [ - 0, - 0 - ] - ], - [ - "0000000000007e93f6578e7856aae0ecf6341e1312664d9e1d812ff254c37ae6", - [ - 0, - 0 - ] - ], - [ - "0000000000002a980acdb1443926875e7d4a57859b2b45ce3fa92c7716319f62", - [ - 0, - 0 - ] - ], - [ - "0000000000683bfd82c63514bc58a80daf699a6bcd040bb2a499540baf52463d", - [ - 0, - 0 - ] - ], - [ - "00000000373e6262928d7a6cac965b294aef35f90b72c85100ef91501775e06a", - [ - 0, - 0 - ] - ], - [ - "0000000000f7bc44061b65c62d4d7747138df127dd2a30f583c3ebb66a25c7a4", - [ - 0, - 0 - ] - ], - [ - "000000000212a71c38d0e13ab7c5646c949d4b7ca23afedbe351a43b7607043b", - [ - 0, - 0 - ] - ], - [ - "0000000000a836e88f76ee5dcca1e884572f32f4460a3b024280738d76e98ced", - [ - 0, - 0 - ] - ], - [ - "0000000000413f6c1b1c9841961636bb3290f2410ba0731f3522c4ff3faa2e0e", - [ - 0, - 0 - ] - ], - [ - "0000000000082336107412226110ab2a53016d4faad4deec048828507a300248", - [ - 0, - 0 - ] - ], - [ - "000000000000a91e7a3f35a23f01621dd051e314da617714991467131808d3bf", - [ - 0, - 0 - ] - ], - [ - "000000000000cd6576950f6f238227c3ba7f62405ed1bf3af4878c6dc1b04635", - [ - 0, - 0 - ] - ], - [ - "0000000000674099e9741e44da03e9531402a2607a19a65660b57470340828db", - [ - 0, - 0 - ] - ], - [ - "0000000030c4744001ae85f9e6b46ed0664449927b86b8fbf25b22b851d23671", - [ - 0, - 0 - ] - ], - [ - "00000000002f5095ad1a12eb9eedf88ce1e7268368461b6b4e10051148f436cb", - [ - 0, - 0 - ] - ], - [ - "000000000057d3e2a77eadb8b9613cb839ab02a96094dd5d0a6d1f09026c3936", - [ - 0, - 0 - ] - ], - [ - "00000000004e0a28be887d6ed037cd9102cbbda7d6c9e584ba51f2c2dce96232", - [ - 0, - 0 - ] - ], - [ - "0000000000211346d8099f7ecea72481c4cd45591f5e0d7e347725ac2162f142", - [ - 0, - 0 - ] - ], - [ - "0000000000199ae9fc06c5acee766db6033b86f76c266cadefe1461c611c2198", - [ - 0, - 0 - ] - ], - [ - "00000000004c9e5748558d4f5a75bc824171e3b958152dfd6844330f1e907f8c", - [ - 0, - 0 - ] - ], - [ - "0000000000137addf1521361dad1ee007eb9e6dd4eb8441492ebfaa3c240d556", - [ - 0, - 0 - ] - ], - [ - "000000000054d4c77bb7964e5327c35760d87b890ea336aec5ecdeb783350738", - [ - 0, - 0 - ] - ], - [ - "00000000006b7b06d04818e97a4df66164b471912f88d9cd02de4af6c8bbe74f", - [ - 0, - 0 - ] - ], - [ - "0000000000380fa9858e3e90335c061a3776a26bee1e8b6851de33ec63670782", - [ - 0, - 0 - ] - ], - [ - "00000000000842598b03fb79ce7386e9f9181a02dcf1effc8f70d3ff7368ccd5", - [ - 0, - 0 - ] - ], - [ - "000000000003d3475edecd733fc7b82432882d9c9f1350a98ef8921b87db4dec", - [ - 0, - 0 - ] - ], - [ - "00000000000000e330a8d57a38dbcc0b0a5dc7a4210f231b8082b9be5f9e4bce", - [ - 0, - 0 - ] - ], - [ - "000000000000218ff87fd50cfba2fd04203a78d2600cb2c4dcb039d803426e19", - [ - 0, - 0 - ] - ], - [ - "00000000007c96e6e3ed3146260348ac79ea7dc2ec2ae6bf8dc203400a37721d", - [ - 0, - 0 - ] - ], - [ - "000000005abaa10bf7260470c28ba32f1755b4cfd3734aad580681e39a9605a5", - [ - 0, - 0 - ] - ], - [ - "00000000005e77c226e6fffccafa56055e68f0ea0a30101e6a243ab9b3e07db0", - [ - 0, - 0 - ] - ], - [ - "0000000000e989fe27f85b89c1e852d7bc94b09033cc6c8b32fbbbd9383a9ae1", - [ - 0, - 0 - ] - ], - [ - "000000000091a1e962438583146293ef34156962445ffc5e81e4d0fe327d37ac", - [ - 0, - 0 - ] - ], - [ - "0000000000477978a6903217e2817d10e99bdfedb4f8bc396b96fd5b0b93b522", - [ - 0, - 0 - ] - ], - [ - "00000000000bfd9e5f13a9c03c48e8b58a937cf1ae2849160f1ca11f8fcced3c", - [ - 0, - 0 - ] - ], - [ - "00000000000158dd3c31b6379887b4353ef2898c03b7ce55458fcd57cb6f0639", - [ - 0, - 0 - ] - ], - [ - "00000000000029d7009eb56b9d38366005576b82a9b59fc845522a34ad36a38a", - [ - 0, - 0 - ] - ], - [ - "0000000000e6e207a82b8ad7136352204bb8e9ccfcd25885a715d3c65cbee997", - [ - 0, - 0 - ] - ], - [ - "0000000000fadc4429f50fc534ccac4db5e51a313df25034d6c5c25f7e83448c", - [ - 0, - 0 - ] - ], - [ - "000000000019c58defcfdab6c6ab9497685e61118effda4c2613bf44be19fcbd", - [ - 0, - 0 - ] - ], - [ - "000000000006cf444d846093c5045d42ddc0986ca805f261476d0fd2eb474c39", - [ - 0, - 0 - ] - ], - [ - "0000000000d0856a3d6a1e5b1ac7e388cc029bd8410b3b1489598974fe470568", - [ - 0, - 0 - ] - ], - [ - "00000000003d9aae63ed532b78082ca5386211e22410fd24ebd5318d1a4cd1da", - [ - 0, - 0 - ] - ], - [ - "00000000000345003879f86021a6d5e3fe93813246818c145947b7e225691177", - [ - 0, - 0 - ] - ], - [ - "00000000000175393730cde3e49de7af2b81ae736eee005a9f9c4a1e878c52ec", - [ - 0, - 0 - ] - ], - [ - "00000000000087a8c621c879aec2a897258632d6aa631b9a38ba4d564e08682a", - [ - 0, - 0 - ] - ], - [ - "0000000000002ea641b2975935bd9caf337b51ac9f9bb90a54f6ea6ee5d3112b", - [ - 0, - 0 - ] - ], - [ - "0000000000000c544f9b6a8cbab6d25caf949875622bf75139234850b10affe1", - [ - 0, - 0 - ] - ], - [ - "0000000000000f66fc4e37232a29f3389c493863a980d58a1d570eddd5268999", - [ - 0, - 0 - ] - ], - [ - "00000000001213fe2bbb8aacb1fc14983586e09db964151cb507956a81b35f25", - [ - 0, - 0 - ] - ], - [ - "0000000000ba82c2160602ddc1913bc4c133ad0af8848e014367c84110d00e05", - [ - 0, - 0 - ] - ], - [ - "0000000000b7a98b364b1cf9521275a915c7a1b3a0f0c052c7d8efb620ec0870", - [ - 0, - 0 - ] - ], - [ - "000000000047dc62db23540ab4aee43e54812aedb623a2a158aa3244fc784722", - [ - 0, - 0 - ] - ], - [ - "00000000005291002da10e53c3855882251a6e5a425b5e639ef9be3bd05767ca", - [ - 0, - 0 - ] - ], - [ - "00000000005ffbcbc0d9b380584bdc78050a6f0c3582b4c9c5103a150cbc71f5", - [ - 0, - 0 - ] - ], - [ - "00000000000a7a69cc06b0a68b27a8fa5d29727ec3b6db8d32d61cf7489b5ff3", - [ - 0, - 0 - ] - ], - [ - "000000000007212eb8c49758d98cefaa6098da2b877a6055be341f5f7c0ad301", - [ - 0, - 0 - ] - ], - [ - "000000000068d1099d8cf3f43f6d164f2925b1d52ede75640cc65ca020e1de1c", - [ - 0, - 0 - ] - ], - [ - "0000000008d5ddef4468a4414bd08184c2eba0ec536b85a743b1091828a6a884", - [ - 0, - 0 - ] - ], - [ - "000000000acae40db93b589783b0cde70b98552955cb3c12f08de1b417d9008d", - [ - 0, - 0 - ] - ], - [ - "000000000066a51eaa3a54036f338719da3d5779180c0bc3787b533410de90e5", - [ - 0, - 0 - ] - ], - [ - "00000000008b521677a6e897950aac69640e52efb01b7af10bba3820ecd09a89", - [ - 0, - 0 - ] - ], - [ - "00000000001823f0e399311cab0fcf57403e094feebf99b22030bafd2004da87", - [ - 0, - 0 - ] - ], - [ - "00000000000bf821c2abf5bcd00ca96439ddf5b0b593be5601145fda5338efdc", - [ - 0, - 0 - ] - ], - [ - "000000000003f4fd19b2af0141289177014ecc6dce6ea8fb50bab93d4a291095", - [ - 0, - 0 - ] - ], - [ - "00000000000011842d892a02e55ca594caddc9f3cea1979ddffefc070eda8498", - [ - 0, - 0 - ] - ], - [ - "000000000000208aa0259d20f51c0e7b8895e18a93aea79af9b3832e710ef134", - [ - 0, - 0 - ] - ], - [ - "00000000000007218f849e72dee1f7fb6fcf36f3b6745c6468187ed2ed13287f", - [ - 0, - 0 - ] - ], - [ - "00000000000f79f656cae641c2b74554c6ecd673c0c7550671c4c2af940661b3", - [ - 0, - 0 - ] - ], - [ - "0000000000199b4d178c05fd1c3154c9a4632eadc7bfc734c4522176c977ce8a", - [ - 0, - 0 - ] - ], - [ - "00000000085d0682d481635cb2e6de2e4d9884589455a86194f0b222f9acb3c6", - [ - 0, - 0 - ] - ], - [ - "00000000015972a5a6786a14b009bf582c4bbf7b9854591dd8d26f82b43ddaef", - [ - 0, - 0 - ] - ], - [ - "000000000064bf72b7bdbfcbe96dbbd0efcaf7aa94c0f92cb4e6662819468fe4", - [ - 0, - 0 - ] - ], - [ - "00000000003df36b7962bb4ad62266c462382eddc93f4bfeac464b95f7a89ee9", - [ - 0, - 0 - ] - ], - [ - "000000000006516d3a9f424eb61db5dfb85aeee29708b78c65d24827bd926263", - [ - 0, - 0 - ] - ], - [ - "000000000001c1709fe1b294712638db356e89155650f6fbecde79ec47a92af7", - [ - 0, - 0 - ] - ], - [ - "000000000000dfc23251344b593c16c28cd195abcb337519d7bc82175721a033", - [ - 0, - 0 - ] - ], - [ - "0000000000000aae2dd2bf0b8581d137fcfa3d9c4cadbe3ef3834d7cae4268c0", - [ - 0, - 0 - ] - ], - [ - "000000000000092a5baff3d9a5ae87689b2afe668e71bac3b342c7d383f0060f", - [ - 0, - 0 - ] - ], - [ - "00000000000fa906eeff7d2e126698d88b8cda01d32ea2c039c26984daaa17a3", - [ - 0, - 0 - ] - ], - [ - "00000000002d4315e5bdc2bcfdb245b914130764a50943a2b2e02ea3acf5c47b", - [ - 0, - 0 - ] - ], - [ - "0000000000fc2bc9bb83e04cbe922d64719295bfef6320027725402306bcf1a0", - [ - 0, - 0 - ] - ], - [ - "000000000142690e7c334b97612746d6db208e6153bdfa8479d86d1b575feacd", - [ - 0, - 0 - ] - ], - [ - "0000000000629a7820e8cdbbed18dcfe16c992152badc745ca73b9b34e53fb0d", - [ - 0, - 0 - ] - ], - [ - "000000000023c2e9dbf3fe03248e40f4ec3fb2dc81ac573d5a6a4f490c701877", - [ - 0, - 0 - ] - ], - [ - "000000000013658a43b6d1c4be95fa36e32d3edf80716de3a8f7e98858016adb", - [ - 0, - 0 - ] - ], - [ - "000000000007c847295d8c4b6da9d8a64b57c3a2307e64387bf8882b9d35d6de", - [ - 0, - 0 - ] - ], - [ - "0000000000032bf90b823332af80bd2ea18f411f081c7dca8f2fe79d9215526b", - [ - 0, - 0 - ] - ], - [ - "000000000000001bc0655da6f24c6952e811006897a0c6dd8b6bd94f178636c8", - [ - 0, - 0 - ] - ], - [ - "0000000000001e1d09b15393190cf686e25488db7fcbc2f1ebacc8165fe6e3a0", - [ - 0, - 0 - ] - ], - [ - "00000000000cc79ae066badb4157def4067057cefd705bf87f1d832845a7ab36", - [ - 0, - 0 - ] - ], - [ - "000000000014408398244b94b4eff6b54875802ede6df2d1d21915333a195719", - [ - 0, - 0 - ] - ], - [ - "0000000000114135a1bc757110c05162fa649b694db9569be117e34832c87257", - [ - 0, - 0 - ] - ], - [ - "00000000009b15fb2bcee1af904989ba0761e4cddc6b3ee214c0bb07dac6211f", - [ - 0, - 0 - ] - ], - [ - "000000000012be506dde2c54adf355bdb41a457b0abec436202a3be73f0b052c", - [ - 0, - 0 - ] - ], - [ - "00000000000963760ceb5fc65570650d494805e05c9d753f3ea6d44247ad3d08", - [ - 0, - 0 - ] - ], - [ - "00000000000bfec54977673f68b6fe5f088398e697d778fa7987f8bab6a70825", - [ - 0, - 0 - ] - ], - [ - "000000000000e7f428bb413c17032c0031af0d26133ba93f744a5a0c16cf7e1a", - [ - 0, - 0 - ] - ], - [ - "00000000000036bc80378323c6eaff8ab350b6d89955f602960cb7c93d2feb4c", - [ - 0, - 0 - ] - ], - [ - "00000000000f0d5edcaeba823db17f366be49a80d91d15b77747c2e017b8c20a", - [ - 0, - 0 - ] - ], - [ - "00000000001ff8fd57798082ab5a7452ada211e1c3be38745155505601498829", - [ - 0, - 0 - ] - ], - [ - "000000000020f960b535eac585e5810ad64f158c1142f0eecd925c8058172933", - [ - 0, - 0 - ] - ], - [ - "0000000000067bd89409368d221507a160e5c45972eeb01efe210054fe8e7d85", - [ - 0, - 0 - ] - ], - [ - "00000000003521f2d5ea3232d4835ca6c6bae083ba90458f67d4cd765ce93b09", - [ - 0, - 0 - ] - ], - [ - "000000000005ab3ff3a0c484eff7b571fb78ce27d93f77a480074232e5ce0c1d", - [ - 0, - 0 - ] - ], - [ - "00000000001048c9eca7cc1cbb86946c04498052071f7e7c775bba565ada337c", - [ - 0, - 0 - ] - ], - [ - "00000000000154caacde41be616f924d7d478812148242fba85605eefec9ac61", - [ - 0, - 0 - ] - ], - [ - "000000000000c34f75bd6f338c0206a31a8d5021cc2ded51e88a6ef4fe686d10", - [ - 0, - 0 - ] - ], - [ - "0000000000001e0581d86c49a6ca14ba88639ef908abb09210b57989e06b1a1f", - [ - 0, - 0 - ] - ], - [ - "0000000000d0e6dc0bf830b50bde3e400e16ec4f772f92a55390e62d4aa73af3", - [ - 0, - 0 - ] - ], - [ - "00000000069c2501a2f32cc69af72a602ff674438ae04dd05516f72a71b9ab26", - [ - 0, - 0 - ] - ], - [ - "0000000000c926b38954550c9b8d363ff058c2eb135eebdb3e640cfa67df803d", - [ - 0, - 0 - ] - ], - [ - "000000000011e9ad9c18e9e2095c3662af5be1e918dff653758583aa45dc8197", - [ - 0, - 0 - ] - ], - [ - "0000000000f311624ff4dcdf07400d0d2fec8b16b14c1c16babc377a2d85ad21", - [ - 0, - 0 - ] - ], - [ - "00000000002e455cabfdc2a8955e8ddfe717b12efe5b80937b0c0ad6ac977fc5", - [ - 0, - 0 - ] - ], - [ - "00000000000fed8889a22339b340f599ac7908e790bfc3cfca9b78078a52d228", - [ - 0, - 0 - ] - ], - [ - "0000000000012ca4492956b3f859b00e5db14b54d422cd95c68c7150743db365", - [ - 0, - 0 - ] - ], - [ - "0000000000004c58e8f7bac59eb4a036764a4d8e0da51c0290858ab14fb72481", - [ - 0, - 0 - ] - ], - [ - "0000000000002f60bc99563ff5b4b800c176fe8bde95e8f968fd6b53d74c9cef", - [ - 0, - 0 - ] - ], - [ - "0000000000000bffd10a3fb0b5b86d8b2561f39d07f8a4c41dfa08e3e49b7db5", - [ - 0, - 0 - ] - ], - [ - "00000000000006a296be9cd8fd4e3145c146863adbe08b71831abb8a869d032c", - [ - 0, - 0 - ] - ], - [ - "0000000000000c557f496e82891039ff22e277bd604be6e2e8b95e519bee91f9", - [ - 0, - 0 - ] - ], - [ - "0000000000399b30d2111c4bf3051c1f7f2f35bba7ff290d92393341ae47df55", - [ - 0, - 0 - ] - ], - [ - "000000001f88733439e4e8d3c474504aed62037faa16f3845b4c671f69732e26", - [ - 0, - 0 - ] - ], - [ - "0000000018aa2f93d2ab76a7e2f1bf5b565b4a1b0ececb6ee46490984f6c0d4b", - [ - 0, - 0 - ] - ], - [ - "0000000005e22674fcf65ce7be896a0557205ab26d1f76d73a717f5f14a6d6ad", - [ - 0, - 0 - ] - ], - [ - "0000000000223d866b324c097973210f8fc715c9535908359d61d8e1ab2f0100", - [ - 0, - 0 - ] - ], - [ - "00000000002b321fd6452ab43849bd7a781953ec4485554e0fdc579f2a52c90a", - [ - 0, - 0 - ] - ], - [ - "0000000000173132748c51b5754b0341232325bd118455bf3c8d25164d3eb92a", - [ - 0, - 0 - ] - ], - [ - "00000000000143158cdea5fbb9453bbe1a7a900e6feba1e2193e4f5c106d9fba", - [ - 0, - 0 - ] - ], - [ - "0000000000014677751456af5630025b3d9921a4eafb4d36a06498f0c6a84c56", - [ - 0, - 0 - ] - ], - [ - "000000000000243976cf2d30ecd3cb1fd0b805fba4da92d2758f78e1c6f8ae92", - [ - 0, - 0 - ] - ], - [ - "0000000000001323db1ab3f247bcb1e92592004b43e4bed0966ed09f675cf269", - [ - 0, - 0 - ] - ], - [ - "000000000000017a410c22c4b6caf710f5ccf005d644caf276ea8626a538798d", - [ - 0, - 0 - ] - ], - [ - "0000000000170b2b1374e3a0dfdce2fbc5e302e1e0e9fb419dc057c9959902d1", - [ - 0, - 0 - ] - ], - [ - "000000000015b4fad4d929630487680cda2d3aada138c58cc08241ef6dd4ab09", - [ - 0, - 0 - ] - ], - [ - "00000000000abebab869f1620843d413a3d9e06dc7d9f5201a414d547ace1f99", - [ - 0, - 0 - ] - ], - [ - "00000000000b0bdaf05c2fe8b12ebd2372f49d8eabcfbccdadd68b5e5b7c9565", - [ - 0, - 0 - ] - ], - [ - "00000000000ca1af42ee1be2c8895d94f39dab5fcdbe0b4b4065f4be534e7294", - [ - 0, - 0 - ] - ], - [ - "000000000069d0cc8c0452bf86cff87db05232f801a162acab2d080d6e4e9ea9", - [ - 0, - 0 - ] - ], - [ - "000000000019c7f7685f5bdc3afbb5e978cb3f4f70fea7b2b410139741303b53", - [ - 0, - 0 - ] - ], - [ - "00000000000d3874ce21db78f4d1883ad9ae8b26c1d7c13f3d723ff85629d595", - [ - 0, - 0 - ] - ], - [ - "0000000000033f87c25275ff72b58630d8da90221f2c84bcbd77c8e615709f8b", - [ - 0, - 0 - ] - ], - [ - "000000000000dc72adaaae6483eb6737de7d21b3a24b2426330e80b078ceaed1", - [ - 0, - 0 - ] - ], - [ - "00000000000002fb1337228db02ac464565271f22f045c1b6ee5e449f057a829", - [ - 0, - 0 - ] - ], - [ - "00000000000001902376ff640d3088899af0819dbd15f602156a13ac2fc8e94e", - [ - 0, - 0 - ] - ], - [ - "000000000000007ee49761a1c8284a3b8acefa39e37e455be4773d648e2db794", - [ - 0, - 0 - ] - ], - [ - "00000000000005b4d495a77f57018dbc72bf47993d494349329a3c653f04ab93", - [ - 0, - 0 - ] - ], - [ - "000000000000009dcb3ae6d68828e2f5ccfd58780abb260354e74484106f81ce", - [ - 0, - 0 - ] - ], - [ - "00000000a3ceb118021fb42d39be52db951c6f852bb9a241046e972706f7329a", - [ - 0, - 0 - ] - ], - [ - "00000000574e8e1c27fa54c77b4e7cd1b79de070f0d3ad5b383206ab9777d983", - [ - 0, - 0 - ] - ], - [ - "0000000039d562f640c1743421d53e7e04c3e8ba222c339fff6f3d25b1d4a7fe", - [ - 0, - 0 - ] - ], - [ - "000000000001cb1559d55c697871e18d5c26800f77fb11587241bfbec3b15e26", - [ - 0, - 0 - ] - ], - [ - "000000000006e01a93090319756c7ca826ef655feb0cc2ef9abcc59d67de5e5b", - [ - 0, - 0 - ] - ], - [ - "000000000000a81aaf5a4c013032638a077af6aad8bc449d74daef8ad3a74419", - [ - 0, - 0 - ] - ], - [ - "00000000000087d0574963c1582f2161298e2de5e48f74566291ef9afc2be24a", - [ - 0, - 0 - ] - ], - [ - "0000000000033251e71c347cd663945fb68efe82a8c6666c0b41e93f1c46658d", - [ - 0, - 0 - ] - ], - [ - "000000000000f592857e6f0e4711b5b93fdf95f2b21a5963bde15be750a07908", - [ - 0, - 0 - ] - ], - [ - "0000000000004353c8426e18b942a5012934ddac8322b86d6ab98ed7c0ee86ed", - [ - 0, - 0 - ] - ], - [ - "00000000004f027845b699f42e7d0d30c530e99524c5f97186ce6a250a5fac42", - [ - 0, - 0 - ] - ], - [ - "000000002fc6407edc060df90785082834867331e6746a43ed34a26fbdc5df64", - [ - 0, - 0 - ] - ], - [ - "0000000000048733007c91ea3665bd4e1653b10799e3f43abee0fe830ffbb3ad", - [ - 0, - 0 - ] - ], - [ - "0000000000025a9b1c5afceba0c78c4b0320797acdc1ad50b4e040f148fbff7f", - [ - 0, - 0 - ] - ], - [ - "00000000007ca6d026d27387edc1c5570de41c61bacbcb1dad2c0f300b49e637", - [ - 0, - 0 - ] - ], - [ - "00000000000258f683a77ad509da82a4fab24188fdb4b4690e212c50794a9abb", - [ - 0, - 0 - ] - ], - [ - "0000000000015111bce7b6ac13c930484e14e31e13e43355cb4d63c8f1782440", - [ - 0, - 0 - ] - ], - [ - "000000000001ca074fdecac7749d95f28f10c83a7e13787fd865bfbe505382bc", - [ - 0, - 0 - ] - ], - [ - "0000000000001c11a6505dd44ab405fdc07ddfc015f3c1166a5d9352ab58b52c", - [ - 0, - 0 - ] - ], - [ - "0000000000000c83f7f8e1cab4efa08d6c68c4555fb6ab542e01b87edd8f56ac", - [ - 0, - 0 - ] - ], - [ - "00000000000009561d0ceba15388573d2a994aff24512ec3ed7d7881aa0997dd", - [ - 0, - 0 - ] - ], - [ - "00000000007dc7cfbbb94db1fbc076a70a1252fd595686b4d75b2ea77ed6ee9e", - [ - 0, - 0 - ] - ], - [ - "00000000000251feb68a8c90852f73aeb29ebda191038737b7edd37c9475f4ac", - [ - 0, - 0 - ] - ], - [ - "0000000000013f9a97045ea9047654e514951288911b2c3986787c27bab49106", - [ - 0, - 0 - ] - ], - [ - "0000000006e8c37735c61f22bec69f4cb7eba03172349e7012b7704652f3e83a", - [ - 0, - 0 - ] - ], - [ - "0000000001f341add5657043d8e50e53ba079fe24966a2668f904be5579c84b9", - [ - 0, - 0 - ] - ], - [ - "000000000029a6275cd477d77939424bd183c2f1308a9912f45aa7cc9ed13b56", - [ - 0, - 0 - ] - ], - [ - "00000000000a0336239e5e1faedf5bd2eedf38c9a5ba34a832356aea70aeb102", - [ - 0, - 0 - ] - ], - [ - "000000000003c1a2b25093a64eb624055f6a3a26e18b8e7ea2d9382ec7a3609a", - [ - 0, - 0 - ] - ], - [ - "000000000001bd89bf7e8740ce22adfa6e8793bd1716a647e558ed1742ee8329", - [ - 0, - 0 - ] - ], - [ - "0000000000001320421f1bb2c94000e11a621f581fc277c0e2911c3b89f680bd", - [ - 0, - 0 - ] - ], - [ - "000000000054ce90a949f5ae2d43c4ace599668c6ccbc50620f6d5705922ea7c", - [ - 0, - 0 - ] - ], - [ - "00000000200d16fea4857e6b73169cc593421a57971acdbcaf87a31d7d8d72c8", - [ - 0, - 0 - ] - ], - [ - "0000000000e75602181c88f713b91c49de291ed878be305d25b75c0ec5fbe942", - [ - 0, - 0 - ] - ], - [ - "000000000081f8169c3c3665f20351dc0fe499612ae232ec0b55858a8e5dc6e9", - [ - 0, - 0 - ] - ], - [ - "0000000000d7ad232e7593fb435d125343b8113bbdb3705ab58ac0e18c26cc79", - [ - 0, - 0 - ] - ], - [ - "0000000000076df615d887e33193ca2dc0f2fc0e70744512c95da6242e9b1a81", - [ - 0, - 0 - ] - ], - [ - "0000000000084a62093d1929843e74456686429b698a7ea9b1901c1565779f58", - [ - 0, - 0 - ] - ], - [ - "00000000000251d1da01e9de9fcaf3ca3a64bff78a5faf51a8e697dfab6b5e4b", - [ - 0, - 0 - ] - ], - [ - "000000000000609a8798996b1f1fe0b66060a628eadc380d0d369a2318c2d0ec", - [ - 0, - 0 - ] - ], - [ - "00000000000014770aeab044a022e86d888a6ede75b6474022c71aead3a1db74", - [ - 0, - 0 - ] - ], - [ - "00000000000004101d04ebc90ade5d4b911aa13c038ecf25e9887d877203ddb8", - [ - 0, - 0 - ] - ], - [ - "000000007c700410b61eb7ff1aaccbfc3a79e4e4484ad7a2b0eda4d91dc4b613", - [ - 0, - 0 - ] - ], - [ - "00000000055ff438a031413ee042fd3c0a2b69be98690542806ff123b7988024", - [ - 0, - 0 - ] - ], - [ - "000000002eca5f9f2c3b656d2550662fdee4c95da133eade51a5cae653bc69fe", - [ - 0, - 0 - ] - ], - [ - "000000000c679b76ccf0c5b943095fdee8fa466311edbea2c4a05f9430ffef3f", - [ - 0, - 0 - ] - ], - [ - "00000000007c6f494e32d5d9de58fa008a770fdc0a7b4a141be5b7c2de3ab970", - [ - 0, - 0 - ] - ], - [ - "0000000000d5dcd5a26c8ad29c1293e70401e2f90d8288469df3816b8cc6d4aa", - [ - 0, - 0 - ] - ], - [ - "00000000000d754d94f36cacbfb620710672afb1558499cabe17ca62c54a7d3a", - [ - 0, - 0 - ] - ], - [ - "000000000004096bb78fba714b130f7f1f929e2803c75a7a85619f7a2b86567f", - [ - 0, - 0 - ] - ], - [ - "0000000000020e686c38d44c35896df35f9f1b7723a82a826a5e2393c25ef68c", - [ - 0, - 0 - ] - ], - [ - "000000000000504f9af6885c0cb6484109ea205a956c8efae9557a1f5b9233da", - [ - 0, - 0 - ] - ], - [ - "0000000000000e8746e52e4320ec17e66434a3936a3825f7046fe874e92275fb", - [ - 0, - 0 - ] - ], - [ - "0000000000000f48d818a9a026270c9f733f629959bea25192596d59874b1ce2", - [ - 0, - 0 - ] - ], - [ - "00000000eaa9214cb05b241828a1cfb0c4209fb7ea64429815d61f7c1d98939e", - [ - 0, - 0 - ] - ], - [ - "000000001f7f915a6002cce4edd5cba392307f3a199a520ee8937327a9135162", - [ - 0, - 0 - ] - ], - [ - "0000000009674ee0c606d687bdcddf8e023462927e2902b3381bc4bb862a7397", - [ - 0, - 0 - ] - ], - [ - "0000000001f3f3528c083a4b11eb2f04d8bbeca92b57f05d8282909bde78bc77", - [ - 0, - 0 - ] - ], - [ - "000000000131917ac459aefb91774dbb42caeca497afc0cfd1766e0338cc7f88", - [ - 0, - 0 - ] - ], - [ - "000000000027634444081e1289354cb50034a506bb306a2ac1d8280683771c5c", - [ - 0, - 0 - ] - ], - [ - "000000000017a852acff78fbee573329d45bb8b121e9f6fc1e4f687bb3778ada", - [ - 0, - 0 - ] - ], - [ - "000000000006789e1a00eca982fb2827f680b254c4a0ecb005af4464f3585a02", - [ - 0, - 0 - ] - ], - [ - "0000000000015d2e9f54b1e9419d6b32ce68ae626cdd7f2a1954f22ca39ae0fa", - [ - 0, - 0 - ] - ], - [ - "0000000000002f7893bc169165ed9fefb434b6201103f23cc84a747a68ff8797", - [ - 0, - 0 - ] - ], - [ - "00000000000008471ccf356a18dd48aa12506ef0b6162cb8f98a8d8bb0465902", - [ - 0, - 0 - ] - ], - [ - "0000000000000596f00b9db53c4111bcde16f3781471c5307af1a996e34ec20a", - [ - 0, - 0 - ] - ], - [ - "000000000000007b5d2406f64f5f5833c063a6906552e815e603140c00bca951", - [ - 0, - 0 - ] - ], - [ - "0000000093ca5d935740a1b25f10ce092fd777c2bb521f3156619389ae78931e", - [ - 0, - 0 - ] - ], - [ - "00000000292f3a48559527341f72400a0f8a783aebcaae5bfa0e390dfaa5286b", - [ - 0, - 0 - ] - ], - [ - "000000001e852ed7ddf0108d1fce0f4f686f43c8c1b85bcb12c43e564dc7630e", - [ - 0, - 0 - ] - ], - [ - "000000000c4bea8fb1e7f3a1f3e6c6b3f71388c0ec7eef3de381853767e89f87", - [ - 0, - 0 - ] - ], - [ - "00000000029ef31a21711b55c4300efa38ace0b706091e373f48285286f2c578", - [ - 0, - 0 - ] - ], - [ - "0000000000979060786bb008f193d3917e28667bb1b28329f3adadc172e4cce7", - [ - 0, - 0 - ] - ], - [ - "000000000019030ceb98013b1627517b45b04ee055ef445813bbebaa25fa1ed3", - [ - 0, - 0 - ] - ], - [ - "00000000000adf202247bb794fc9a3c82cd8767143f1e6ed5f60940ee18b09a8", - [ - 0, - 0 - ] - ], - [ - "000000000000b19061e2481d8be6183b3d881b0d58601072d2a32729435f6af3", - [ - 0, - 0 - ] - ], - [ - "0000000000007a6d34f59b29e8d4da53e51e3414acd18527466d064945fe19fc", - [ - 0, - 0 - ] - ], - [ - "0000000000002e66ca213a2c3e9eb5fa62de29feb83880a0bd29f90fca8ad199", - [ - 0, - 0 - ] - ], - [ - "0000000000000b4ca10aa100728d0928f37db5296303db1b74ffe29e4a17b6cd", - [ - 0, - 0 - ] - ], - [ - "0000000000000143309f6b19567955743775f61f8dc6932c0b46cf5fb11c6c72", - [ - 0, - 0 - ] - ], - [ - "00000000000000b04d5409b3ac60cc18c0b9a3d58b303594635a8f75a9d2abd5", - [ - 0, - 0 - ] - ], - [ - "000000000000040a2699f62a552703a278608248c2ce823f4cd8845376e9a371", - [ - 0, - 0 - ] - ], - [ - "00000000000005cfcb850db7e83d4963994f958bae9b1de1483f5aeb3d449925", - [ - 0, - 0 - ] - ], - [ - "00000000000190f80220e70c1481153671a7c90fd856988c183ab0e3d9313df8", - [ - 0, - 0 - ] - ], - [ - "000000009374563a06178641d06776f66554c2a094b5319f0801fe35cef72ccf", - [ - 0, - 0 - ] - ], - [ - "00000000003e4e6e5e8e4a89e7de50eed104d4a49d2992ff101b6740beec7cb5", - [ - 0, - 0 - ] - ], - [ - "0000000000618cd377d14aaa441cbdb92527894f98da316eca81664f8ab5488d", - [ - 0, - 0 - ] - ], - [ - "00000000000d977ab2897885fee712f58612fce8c10ffbe9400326fe3429b77b", - [ - 0, - 0 - ] - ], - [ - "00000000000c3575b487dd0f938c5bc744fa65ca4ca3a9c981b8bda903ec110b", - [ - 0, - 0 - ] - ], - [ - "0000000000247ac689595ed8d62678bfe53e5af13c0f5455e558f5e6bb375c16", - [ - 0, - 0 - ] - ], - [ - "0000000000093d175376aa621176511f335a48f824b66d998e8082f85134a48b", - [ - 0, - 0 - ] - ], - [ - "000000000000c0c0448fe922f2c737946297d35f2c25ad7cc223e11bbe58e1f8", - [ - 0, - 0 - ] - ], - [ - "00000000000016abe4e7c10ddb658bb089b2ef3b1de3f3329097cf679eedf2b5", - [ - 0, - 0 - ] - ], - [ - "000000000000242757cea5b68c52b83dd8c2eb9257492074fc69dfa30bd4cbf4", - [ - 0, - 0 - ] - ], - [ - "00000000000006813f3dd7726a509fbe3101835db155dfd35d44aeae6aedb316", - [ - 0, - 0 - ] - ], - [ - "000000000000053cc4f39cff1c8cee1aff7e289a85dee84164d2d981afc8f17a", - [ - 0, - 0 - ] - ], - [ - "00000000000000789724805cf1d37ef689acf52c47a460507f540d5e5ca79bfa", - [ - 0, - 0 - ] - ], - [ - "00000000000003d71618bb8952887f65540270a5e54d6246b9419e08831b5e4e", - [ - 0, - 0 - ] - ], - [ - "0000000000000251a513a33eadfad67c015f6e3b291dfd0ae1cc4bb3a43006dc", - [ - 0, - 0 - ] - ], - [ - "00000000968009e3f8d6e6071e7def68298307717a9af6c2d44986deaae297d5", - [ - 0, - 0 - ] - ], - [ - "0000000062bcacb734df83bbfa3e1b9a8dfa570ecffb6c29eaaf8e9498cccd30", - [ - 0, - 0 - ] - ], - [ - "000000001d4618c0931bd3c25ee592c35341f30ff3b549a671f637b3c26ef414", - [ - 0, - 0 - ] - ], - [ - "000000000418b329df96a004f1b652ad06a7ca295f9f2e711c412d00493f5a86", - [ - 0, - 0 - ] - ], - [ - "000000000302bfb88e9027237d023c4b969e106c9a7a23a84103776de7880836", - [ - 0, - 0 - ] - ], - [ - "000000000069b9f7d9134fd93c8b7e3af8b26bbcbb5553af02fb6ed644d7fca5", - [ - 0, - 0 - ] - ], - [ - "00000000000411ec444240ee91e2777ad18b80dee854e3e838e32209e84774fa", - [ - 0, - 0 - ] - ], - [ - "0000000000007c73f322eba4dee5463305227c7e1a8139f1b7b296444f265052", - [ - 0, - 0 - ] - ], - [ - "00000000000129adf0f9c0242aedbb9d87935d67ee4ddea758c00344d4b6a29e", - [ - 0, - 0 - ] - ], - [ - "000000000000343594e671158b6e1b4b6499f6ad66e2aeabf1f6d295d3dba850", - [ - 0, - 0 - ] - ], - [ - "000000000000320f0d5c22ba22b588b97a0e02273034bcd53669b1c8c4eeda1b", - [ - 0, - 0 - ] - ], - [ - "0000000000001e8cdb2d98471a5c60bdbddbe644b9ad08e17a97b3a7dce1e332", - [ - 0, - 0 - ] - ], - [ - "0000000000000026c9994ccdd027e86f51a2e36812f754bd855a7f9b1ca56511", - [ - 0, - 0 - ] - ], - [ - "00000000000002746a820a2c08b35b8d0493c4b5d468fcc971b9c88003e84849", - [ - 0, - 0 - ] - ], - [ - "000000000002949f844e92645df73ce9c093e5aac0d962a0fa13eb076eec835c", - [ - 0, - 0 - ] - ], - [ - "00000000000156fbda67468ae2863993b98a41227c420246e4bc4e68c84df0e8", - [ - 0, - 0 - ] - ], - [ - "000000000003b43c6c807122c8dd10e2a0cffbf72946f41c97c1ab82d416f74d", - [ - 0, - 0 - ] - ], - [ - "000000000004e0635c2438b1b649007e5d424b3de846299a8db53049ebf4da0c", - [ - 0, - 0 - ] - ], - [ - "00000000000258e4b79e3cca2ab7d12b35ba77fc491572f2e794f0a10f5236d9", - [ - 0, - 0 - ] - ], - [ - "0000000000f5816875d9fece105e499b0467b8fb23ea973c48d828a235acdebd", - [ - 0, - 0 - ] - ], - [ - "000000000001353bbaec810af7a4c74b4964ae072361c0889ed6d59cf16db6fd", - [ - 0, - 0 - ] - ], - [ - "00000000000b354d8c389473670ca6bed7e3dffa069f270d35ec9dad810af141", - [ - 0, - 0 - ] - ], - [ - "000000000002fa1f39e7cd8730fa08085ba2b532146ad1ef3b400a13e835ca36", - [ - 0, - 0 - ] - ], - [ - "000000000000d2c7943eee59652a9783bff27e474a92ec206c5c6e3cdd58d0d7", - [ - 0, - 0 - ] - ], - [ - "00000000000036034181b4d9a84a97490b49fbee4262b9cfb25a7bfc9c0eec9f", - [ - 0, - 0 - ] - ], - [ - "00000000000007deb59381cce692f152fc902732d96a7e7d463bc83915b37c0a", - [ - 0, - 0 - ] - ], - [ - "00000000ea7d32833462c0f72ade0cae4766e6065caa4e510331929c56d16632", - [ - 0, - 0 - ] - ], - [ - "000000000068fce0ddd370d4c8f9129a7bc7843e75fc57666202d3b90239e269", - [ - 0, - 0 - ] - ], - [ - "0000000026b4a2212c9c9493f8bd9d5331cab6d8eda8ee017410e58a783ca069", - [ - 0, - 0 - ] - ], - [ - "0000000009535ea2dc7e83c31cd17f1db1bb78b0a678fc0610844273de143bf5", - [ - 0, - 0 - ] - ], - [ - "00000000008607cbd5baca91d5b8b82ee965aace335744a3e21578af22bee8ba", - [ - 0, - 0 - ] - ], - [ - "000000000030dcedae0f5e98c4e176f9569ce76c4d4135bb028fc3144ef381d9", - [ - 0, - 0 - ] - ], - [ - "0000000000297c3f0e3fa85731222ba934a955bf513247a72a33c74c498cadbe", - [ - 0, - 0 - ] - ], - [ - "0000000000020a0d4a1e8120cbdb486e758b58919c9df12e0edc8ca1f2795e94", - [ - 0, - 0 - ] - ], - [ - "000000000000078773afc9023182bfb6534a60158672e6bc6e8aa5052854da80", - [ - 0, - 0 - ] - ], - [ - "00000000000102ecdd67800807d9e137357805b9bbf8a439ed86bde5b19fbeb7", - [ - 0, - 0 - ] - ], - [ - "0000000000005c3d2e3c7ee737c67ab465533acb233e0df902c1525fc11c3a55", - [ - 0, - 0 - ] - ], - [ - "0000000000001a77771650cdbbceff87caa4461391ba6a4ddc9815b5b0ab47b0", - [ - 0, - 0 - ] - ], - [ - "000000000000071ec390bbd28fa2a84e52ab5b32901d0723d22646b04ae01dc3", - [ - 0, - 0 - ] - ], - [ - "00000000000005c3ec3194f710c6f26ee736d59cc935ddfa574440f39846433a", - [ - 0, - 0 - ] - ], - [ - "00000000000001cc3df6924591939269d61ead563b9eb68402a2ca01d7ff99e2", - [ - 0, - 0 - ] - ], - [ - "000000008c778b3554ceaf3a13a856acbfe46b5750fb86fd92ba30651c2852f4", - [ - 0, - 0 - ] - ], - [ - "00000000107ca31f75f8ea76073dda3c33330b2706c1ec20c3ec240e853b65c5", - [ - 0, - 0 - ] - ], - [ - "0000000006ba99b08e7f2869ce113e2ad7464891de7b4cfa96f330d706a2da46", - [ - 0, - 0 - ] - ], - [ - "000000000f31036bd51b2818f6dfb90ada9be5019abf55fb15694b181e269865", - [ - 0, - 0 - ] - ], - [ - "00000000004fcc101bc47eb7a379b9f608d5c00ac04d2d0ea165ae2937070796", - [ - 0, - 0 - ] - ], - [ - "000000000044d5ca3eda838edef0df7e69e1934047f8482822ce58ff7a18466d", - [ - 0, - 0 - ] - ], - [ - "000000000029bdfb157be6d400c4dd3370d98afdd8cd3db6f1ada8c19bbf4650", - [ - 0, - 0 - ] - ], - [ - "000000000005e9699ad8035caa4f73af781ac2040c87b8aa77459b3607209aa8", - [ - 0, - 0 - ] - ], - [ - "000000000001c0ba033f7d85beeaa167c9bde0e192240653a7ff6d9b81679842", - [ - 0, - 0 - ] - ], - [ - "0000000000000e0176111f29e800b49c7b8c7226dbbf4df715f1a4f06bcaaa49", - [ - 0, - 0 - ] - ], - [ - "00000000ac3bb2cf42192e9053f5384355228a2b3d70b4ece4d45773a5d5ddd2", - [ - 0, - 0 - ] - ], - [ - "000000000f29f7b60842b1044b2db7998e9bcbd92f8ec6fe8d159c6d582f1f1a", - [ - 0, - 0 - ] - ], - [ - "00000000352f86bc5f9760961a25de009940508bb2cd0b37f378fbc87dc97eef", - [ - 0, - 0 - ] - ], - [ - "000000000e9b3086008679ed57f59857f64c3954368ba1088117dbf88d5839cd", - [ - 0, - 0 - ] - ], - [ - "000000000015324bd8fed0e61b62bd1d6c663b862cb98ea03c494a92e4a8d0af", - [ - 0, - 0 - ] - ], - [ - "000000000020475a181b7a084b341860a72fc0c1fdfcc13a85adeb0471444b0f", - [ - 0, - 0 - ] - ], - [ - "0000000000031905c508a975707b74f24e733880382775ee0e6250666473e1d8", - [ - 0, - 0 - ] - ], - [ - "000000000000ca38b15d2ea33a6eef505a9c661540a18882f79ba9a3c575a9bd", - [ - 0, - 0 - ] - ], - [ - "000000000002739979a7a89fa279303b6606885e750b19e91ed637d7f222b392", - [ - 0, - 0 - ] - ], - [ - "00000000000091e935fc266facc2c92759d5468a39aee5be6b76b519a9bc7567", - [ - 0, - 0 - ] - ], - [ - "00000000000006e339938254208203b67c3c400f703fc29535fc646699e36e58", - [ - 0, - 0 - ] - ], - [ - "00000000000008f6f1d1150d77f93a7f1baa24b65ceb471b1825b2e92ca6997c", - [ - 0, - 0 - ] + "efda9a1f82cb5e6ac5558782ff638e492e21792530f2ee0e91edf780f152d7d6", + 0, + 1515502379 ] ] \ No newline at end of file diff --git a/lib/coinchooser.py b/lib/coinchooser.py index ffc5bfd8e901..472e3aa3820f 100644 --- a/lib/coinchooser.py +++ b/lib/coinchooser.py @@ -87,8 +87,6 @@ def strip_unneeded(bkts, sufficient_funds): class CoinChooserBase(PrintError): - enable_output_value_rounding = False - def keys(self, coins): raise NotImplementedError @@ -137,13 +135,7 @@ def trailing_zeroes(val): zeroes = [trailing_zeroes(i) for i in output_amounts] min_zeroes = min(zeroes) max_zeroes = max(zeroes) - - if n > 1: - zeroes = range(max(0, min_zeroes - 1), (max_zeroes + 1) + 1) - else: - # if there is only one change output, this will ensure that we aim - # to have one that is exactly as precise as the most precise output - zeroes = [min_zeroes] + zeroes = range(max(0, min_zeroes - 1), (max_zeroes + 1) + 1) # Calculate change; randomize it a bit if using more than 1 output remaining = change_amount @@ -158,10 +150,8 @@ def trailing_zeroes(val): n -= 1 # Last change output. Round down to maximum precision but lose - # no more than 10**max_dp_to_round_for_privacy - # e.g. a max of 2 decimal places means losing 100 satoshis to fees - max_dp_to_round_for_privacy = 2 if self.enable_output_value_rounding else 0 - N = pow(10, min(max_dp_to_round_for_privacy, zeroes[0])) + # no more than 100 satoshis to fees (2dp) + N = pow(10, min(2, zeroes[0])) amount = (remaining // N) * N amounts.append(amount) @@ -380,6 +370,4 @@ def get_name(config): def get_coin_chooser(config): klass = COIN_CHOOSERS[get_name(config)] - coinchooser = klass() - coinchooser.enable_output_value_rounding = config.get('coin_chooser_output_rounding', False) - return coinchooser + return klass() diff --git a/lib/commands.py b/lib/commands.py index d6c71a8a7879..8f3b67751a75 100644 --- a/lib/commands.py +++ b/lib/commands.py @@ -34,7 +34,7 @@ from decimal import Decimal from .import util -from .util import bfh, bh2u, format_satoshis, json_decode, print_error +from .util import bfh, bh2u, format_satoshis, json_decode from .import bitcoin from .bitcoin import is_address, hash_160, COIN, TYPE_ADDRESS from .i18n import _ @@ -81,8 +81,8 @@ def func_wrapper(*args, **kwargs): wallet = args[0].wallet password = kwargs.get('password') if c.requires_wallet and wallet is None: - raise BaseException("wallet not loaded. Use 'electrum daemon load_wallet'") - if c.requires_password and password is None and wallet.has_password(): + raise BaseException("wallet not loaded. Use 'electrum-xzc daemon load_wallet'") + if c.requires_password and password is None and wallet.storage.get('use_encryption'): return {'error': 'Password required' } return func(*args, **kwargs) return func_wrapper @@ -130,8 +130,8 @@ def create(self, segwit=False): @command('wn') def restore(self, text): """Restore a wallet from text. Text can be a seed phrase, a master - public key, a master private key, a list of bitcoin addresses - or bitcoin private keys. If you want to be prompted for your + public key, a master private key, a list of Zcoin addresses + or Zcoin private keys. If you want to be prompted for your seed, type '?' or ':' (concealed) """ raise BaseException('Not a JSON-RPC command') @@ -175,8 +175,7 @@ def getaddresshistory(self, address): """Return the transaction history of any address. Note: This is a walletless server query, results are not checked by SPV. """ - sh = bitcoin.address_to_scripthash(address) - return self.network.synchronous_get(('blockchain.scripthash.get_history', [sh])) + return self.network.synchronous_get(('blockchain.address.get_history', [address])) @command('w') def listunspent(self): @@ -193,8 +192,7 @@ def getaddressunspent(self, address): """Returns the UTXO list of any address. Note: This is a walletless server query, results are not checked by SPV. """ - sh = bitcoin.address_to_scripthash(address) - return self.network.synchronous_get(('blockchain.scripthash.listunspent', [sh])) + return self.network.synchronous_get(('blockchain.address.listunspent', [address])) @command('') def serialize(self, jsontx): @@ -288,7 +286,7 @@ def ismine(self, address): @command('') def dumpprivkeys(self): """Deprecated.""" - return "This command is deprecated. Use a pipe instead: 'electrum listaddresses | electrum getprivatekeys - '" + return "This command is deprecated. Use a pipe instead: 'electrum-xzc listaddresses | electrum-xzc getprivatekeys - '" @command('') def validateaddress(self, address): @@ -316,12 +314,20 @@ def getaddressbalance(self, address): """Return the balance of any address. Note: This is a walletless server query, results are not checked by SPV. """ - sh = bitcoin.address_to_scripthash(address) - out = self.network.synchronous_get(('blockchain.scripthash.get_balance', [sh])) + out = self.network.synchronous_get(('blockchain.address.get_balance', [address])) out["confirmed"] = str(Decimal(out["confirmed"])/COIN) out["unconfirmed"] = str(Decimal(out["unconfirmed"])/COIN) return out + @command('n') + def getproof(self, address): + """Get Merkle branch of an address in the UTXO set""" + p = self.network.synchronous_get(('blockchain.address.get_proof', [address])) + out = [] + for i,s in p: + out.append(i) + return out + @command('n') def getmerkle(self, txid, height): """Get Merkle branch of a transaction included in a block. Electrum @@ -440,24 +446,50 @@ def paytomany(self, outputs, fee=None, from_addr=None, change_addr=None, nocheck return tx.as_dict() @command('w') - def history(self, year=None, show_addresses=False, show_fiat=False): + def history(self): """Wallet history. Returns the transaction history of your wallet.""" - kwargs = {'show_addresses': show_addresses} - if year: - import time - start_date = datetime.datetime(year, 1, 1) - end_date = datetime.datetime(year+1, 1, 1) - kwargs['from_timestamp'] = time.mktime(start_date.timetuple()) - kwargs['to_timestamp'] = time.mktime(end_date.timetuple()) - if show_fiat: - from .exchange_rate import FxThread - fx = FxThread(self.config, None) - kwargs['fx'] = fx - return self.wallet.export_history(**kwargs) + balance = 0 + out = [] + for item in self.wallet.get_history(): + tx_hash, height, conf, timestamp, value, balance = item + if timestamp: + date = datetime.datetime.fromtimestamp(timestamp).isoformat(' ')[:-3] + else: + date = "----" + label = self.wallet.get_label(tx_hash) + tx = self.wallet.transactions.get(tx_hash) + tx.deserialize() + input_addresses = [] + output_addresses = [] + for x in tx.inputs(): + if x['type'] == 'coinbase': continue + addr = x.get('address') + if addr == None: continue + if addr == "(pubkey)": + prevout_hash = x.get('prevout_hash') + prevout_n = x.get('prevout_n') + _addr = self.wallet.find_pay_to_pubkey_address(prevout_hash, prevout_n) + if _addr: + addr = _addr + input_addresses.append(addr) + for addr, v in tx.get_outputs(): + output_addresses.append(addr) + out.append({ + 'txid': tx_hash, + 'timestamp': timestamp, + 'date': date, + 'input_addresses': input_addresses, + 'output_addresses': output_addresses, + 'label': label, + 'value': str(Decimal(value)/COIN) if value is not None else None, + 'height': height, + 'confirmations': conf + }) + return out @command('w') def setlabel(self, key, label): - """Assign a label to an item. Item may be a bitcoin address or a + """Assign a label to an item. Item may be a Zcoin address or a transaction ID""" self.wallet.set_label(key, label) @@ -535,7 +567,7 @@ def _format_request(self, out): PR_PAID: 'Paid', PR_EXPIRED: 'Expired', } - out['amount (BTC)'] = format_satoshis(out.get('amount')) + out['amount (XZC)'] = format_satoshis(out.get('amount')) out['status'] = pr_str[out.get('status', PR_UNKNOWN)] return out @@ -601,8 +633,7 @@ def addrequest(self, amount, memo='', expiration=None, force=False): def addtransaction(self, tx): """ Add a transaction to the wallet history """ tx = Transaction(tx) - if not self.wallet.add_transaction(tx.txid(), tx): - return False + self.wallet.add_transaction(tx.txid(), tx) self.wallet.save_transactions() return tx.txid() @@ -662,8 +693,8 @@ def help(self): param_descriptions = { 'privkey': 'Private key. Type \'?\' to get a prompt.', - 'destination': 'Bitcoin address, contact or alias', - 'address': 'Bitcoin address', + 'destination': 'Zcoin address, contact or alias', + 'address': 'Zcoin address', 'seed': 'Seed phrase', 'txid': 'Transaction ID', 'pos': 'Position', @@ -673,8 +704,8 @@ def help(self): 'pubkey': 'Public key', 'message': 'Clear text message. Use quotes if it contains spaces.', 'encrypted': 'Encrypted message', - 'amount': 'Amount to be sent (in BTC). Type \'!\' to send the maximum available.', - 'requested_amount': 'Requested amount (in BTC).', + 'amount': 'Amount to be sent (in XZC). Type \'!\' to send the maximum available.', + 'requested_amount': 'Requested amount (in XZC).', 'outputs': 'list of ["address", amount]', 'redeem_script': 'redeem script (hexadecimal)', } @@ -691,7 +722,7 @@ def help(self): 'labels': ("-l", "Show the labels of listed addresses"), 'nocheck': (None, "Do not verify aliases"), 'imax': (None, "Maximum number of inputs"), - 'fee': ("-f", "Transaction fee (in BTC)"), + 'fee': ("-f", "Transaction fee (in XZC)"), 'from_addr': ("-F", "Source address (must be a wallet address; use sweep to spend from non-wallet address)."), 'change_addr': ("-c", "Change address. Default is a spare address, or the source address if it's not in the wallet"), 'nbits': (None, "Number of bits of entropy"), @@ -710,9 +741,6 @@ def help(self): 'pending': (None, "Show only pending requests."), 'expired': (None, "Show only expired requests."), 'paid': (None, "Show only paid requests."), - 'show_addresses': (None, "Show input and output addresses"), - 'show_fiat': (None, "Show fiat value of transactions"), - 'year': (None, "Show history for a given year"), } @@ -723,7 +751,6 @@ def help(self): 'num': int, 'nbits': int, 'imax': int, - 'year': int, 'entropy': int, 'tx': tx_from_str, 'pubkeys': json_loads, @@ -741,10 +768,10 @@ def help(self): 'requests_dir': 'directory where a bip70 file will be written.', 'ssl_privkey': 'Path to your SSL private key, needed to sign the request.', 'ssl_chain': 'Chain of SSL certificates, needed for signed requests. Put your certificate at the top and the root CA at the end', - 'url_rewrite': 'Parameters passed to str.replace(), in order to create the r= part of bitcoin: URIs. Example: \"(\'file:///var/www/\',\'https://electrum.org/\')\"', + 'url_rewrite': 'Parameters passed to str.replace(), in order to create the r= part of zcoin: URIs. Example: \"(\'file:///var/www/\',\'https://electrum-xzc.org/\')\"', }, 'listrequests':{ - 'url_rewrite': 'Parameters passed to str.replace(), in order to create the r= part of bitcoin: URIs. Example: \"(\'file:///var/www/\',\'https://electrum.org/\')\"', + 'url_rewrite': 'Parameters passed to str.replace(), in order to create the r= part of zcoin: URIs. Example: \"(\'file:///var/www/\',\'https://electrum-xzc.org/\')\"', } } @@ -787,7 +814,7 @@ def subparser_call(self, parser, namespace, values, option_string=None): parser = self._name_parser_map[parser_name] except KeyError: tup = parser_name, ', '.join(self._name_parser_map) - msg = _('unknown parser {!r} (choices: {})').format(*tup) + msg = _('unknown parser %r (choices: %s)') % tup raise ArgumentError(self, msg) # parse all the remaining options into the namespace # store any unrecognized options on the object, so that the top @@ -809,19 +836,19 @@ def add_global_options(parser): group = parser.add_argument_group('global options') group.add_argument("-v", "--verbose", action="store_true", dest="verbose", default=False, help="Show debugging information") group.add_argument("-D", "--dir", dest="electrum_path", help="electrum directory") - group.add_argument("-P", "--portable", action="store_true", dest="portable", default=False, help="Use local 'electrum_data' directory") + group.add_argument("-P", "--portable", action="store_true", dest="portable", default=False, help="Use local 'electrum-xzc_data' directory") group.add_argument("-w", "--wallet", dest="wallet_path", help="wallet path") group.add_argument("--testnet", action="store_true", dest="testnet", default=False, help="Use Testnet") def get_parser(): # create main parser parser = argparse.ArgumentParser( - epilog="Run 'electrum help ' to see the help for a command") + epilog="Run 'electrum-xzc help ' to see the help for a command") add_global_options(parser) subparsers = parser.add_subparsers(dest='cmd', metavar='') # gui parser_gui = subparsers.add_parser('gui', description="Run Electrum's Graphical User Interface.", help="Run GUI (default)") - parser_gui.add_argument("url", nargs='?', default=None, help="bitcoin URI (or bip70 file)") + parser_gui.add_argument("url", nargs='?', default=None, help="zcoin URI (or bip70 file)") parser_gui.add_argument("-g", "--gui", dest="gui", help="select graphical user interface", choices=['qt', 'kivy', 'text', 'stdio']) parser_gui.add_argument("-o", "--offline", action="store_true", dest="offline", default=False, help="Run offline") parser_gui.add_argument("-m", action="store_true", dest="hide_gui", default=False, help="hide GUI on startup") diff --git a/lib/contacts.py b/lib/contacts.py index 5157adc41057..571d195e0f74 100644 --- a/lib/contacts.py +++ b/lib/contacts.py @@ -23,12 +23,9 @@ import re import dns import json -import traceback -import sys from . import bitcoin from . import dnssec -from .util import FileImportFailed, FileImportFailedEncrypted class Contacts(dict): @@ -54,12 +51,8 @@ def import_file(self, path): try: with open(path, 'r') as f: d = self._validate(json.loads(f.read())) - except json.decoder.JSONDecodeError: - traceback.print_exc(file=sys.stderr) - raise FileImportFailedEncrypted() - except BaseException: - traceback.print_exc(file=sys.stdout) - raise FileImportFailed() + except: + return self.update(d) self.save() @@ -94,13 +87,13 @@ def resolve(self, k): 'type': 'openalias', 'validated': validated } - raise Exception("Invalid Bitcoin address or alias", k) + raise Exception("Invalid Zcoin address or alias", k) def resolve_openalias(self, url): # support email-style addresses, per the OA standard url = url.replace('@', '.') records, validated = dnssec.query(url, dns.rdatatype.TXT) - prefix = 'btc' + prefix = 'xzc' for record in records: string = record.strings[0] if string.startswith('oa1:' + prefix): diff --git a/lib/currencies.json b/lib/currencies.json index a4e85f1f6fc4..af8c4b5fba37 100644 --- a/lib/currencies.json +++ b/lib/currencies.json @@ -1,538 +1,194 @@ { - "BitPay": [ - "AED", - "AFN", - "ALL", - "AMD", - "ANG", - "AOA", - "ARS", - "AUD", - "AWG", - "AZN", - "BAM", - "BBD", - "BCH", - "BDT", - "BGN", - "BHD", - "BIF", - "BMD", - "BND", - "BOB", - "BRL", - "BSD", - "BTC", - "BTN", - "BWP", - "BZD", - "CAD", - "CDF", - "CHF", - "CLF", - "CLP", - "CNY", - "COP", - "CRC", - "CUP", - "CVE", - "CZK", - "DJF", - "DKK", - "DOP", - "DZD", - "EGP", - "ETB", - "EUR", - "FJD", - "FKP", - "GBP", - "GEL", - "GHS", - "GIP", - "GMD", - "GNF", - "GTQ", - "GYD", - "HKD", - "HNL", - "HRK", - "HTG", - "HUF", - "IDR", - "ILS", - "INR", - "IQD", - "IRR", - "ISK", - "JEP", - "JMD", - "JOD", - "JPY", - "KES", - "KGS", - "KHR", - "KMF", - "KPW", - "KRW", - "KWD", - "KYD", - "KZT", - "LAK", - "LBP", - "LKR", - "LRD", - "LSL", - "LYD", - "MAD", - "MDL", - "MGA", - "MKD", - "MMK", - "MNT", - "MOP", - "MRO", - "MUR", - "MVR", - "MWK", - "MXN", - "MYR", - "MZN", - "NAD", - "NGN", - "NIO", - "NOK", - "NPR", - "NZD", - "OMR", - "PAB", - "PEN", - "PGK", - "PHP", - "PKR", - "PLN", - "PYG", - "QAR", - "RON", - "RSD", - "RUB", - "RWF", - "SAR", - "SBD", - "SCR", - "SDG", - "SEK", - "SGD", - "SHP", - "SLL", - "SOS", - "SRD", - "STD", - "SVC", - "SYP", - "SZL", - "THB", - "TJS", - "TMT", - "TND", - "TOP", - "TRY", - "TTD", - "TWD", - "TZS", - "UAH", - "UGX", - "USD", - "UYU", - "UZS", - "VEF", - "VND", - "VUV", - "WST", - "XAF", - "XAG", - "XAU", - "XCD", - "XOF", - "XPF", - "YER", - "ZAR", - "ZMW", - "ZWL" - ], - "BitStamp": [ - "USD" - ], - "BitcoinAverage": [ - "AED", - "AFN", - "ALL", - "AMD", - "ANG", - "AOA", - "ARS", - "AUD", - "AWG", - "AZN", - "BAM", - "BBD", - "BDT", - "BGN", - "BHD", - "BIF", - "BMD", - "BND", - "BOB", - "BRL", - "BSD", - "BTN", - "BWP", - "BYN", - "BZD", - "CAD", - "CDF", - "CHF", - "CLF", - "CLP", - "CNH", - "CNY", - "COP", - "CRC", - "CUC", - "CUP", - "CVE", - "CZK", - "DJF", - "DKK", - "DOP", - "DZD", - "EGP", - "ERN", - "ETB", - "EUR", - "FJD", - "FKP", - "GBP", - "GEL", - "GGP", - "GHS", - "GIP", - "GMD", - "GNF", - "GTQ", - "GYD", - "HKD", - "HNL", - "HRK", - "HTG", - "HUF", - "IDR", - "ILS", - "IMP", - "INR", - "IQD", - "IRR", - "ISK", - "JEP", - "JMD", - "JOD", - "JPY", - "KES", - "KGS", - "KHR", - "KMF", - "KPW", - "KRW", - "KWD", - "KYD", - "KZT", - "LAK", - "LBP", - "LKR", - "LRD", - "LSL", - "LYD", - "MAD", - "MDL", - "MGA", - "MKD", - "MMK", - "MNT", - "MOP", - "MRO", - "MUR", - "MVR", - "MWK", - "MXN", - "MYR", - "MZN", - "NAD", - "NGN", - "NIO", - "NOK", - "NPR", - "NZD", - "OMR", - "PAB", - "PEN", - "PGK", - "PHP", - "PKR", - "PLN", - "PYG", - "QAR", - "RON", - "RSD", - "RUB", - "RWF", - "SAR", - "SBD", - "SCR", - "SDG", - "SEK", - "SGD", - "SHP", - "SLL", - "SOS", - "SRD", - "SSP", - "STD", - "SVC", - "SYP", - "SZL", - "THB", - "TJS", - "TMT", - "TND", - "TOP", - "TRY", - "TTD", - "TWD", - "TZS", - "UAH", - "UGX", - "USD", - "UYU", - "UZS", - "VEF", - "VND", - "VUV", - "WST", - "XAF", - "XAG", - "XAU", - "XCD", - "XDR", - "XOF", - "XPD", - "XPF", - "XPT", - "YER", - "ZAR", - "ZMW", - "ZWL" - ], - "Bitmarket": [ - "PLN" - ], - "Bitso": [ - "MXN" - ], - "Bitvalor": [ - "BRL" - ], - "BlockchainInfo": [ - "AUD", - "BRL", - "CAD", - "CHF", - "CLP", - "CNY", - "DKK", - "EUR", - "GBP", - "HKD", - "INR", - "ISK", - "JPY", - "KRW", - "NZD", - "PLN", - "RUB", - "SEK", - "SGD", - "THB", - "TWD", - "USD" + "Bit2C": [ + "NIS" ], - "CoinDesk": [ - "AED", - "AFN", - "ALL", - "AMD", - "ANG", - "AOA", + "BitcoinAverage": [ + "AED", + "AFN", + "ALL", + "AMD", + "ANG", + "AOA", + "ARS", + "AUD", + "AWG", + "AZN", + "BAM", + "BBD", + "BDT", + "BGN", + "BHD", + "BIF", + "BMD", + "BND", + "BOB", + "BRL", + "BSD", + "BTC", + "BTN", + "BWP", + "BYN", + "BZD", + "CAD", + "CDF", + "CHF", + "CLF", + "CLP", + "CNH", + "CNY", + "COP", + "CRC", + "CUC", + "CUP", + "CVE", + "CZK", + "DJF", + "DKK", + "DOP", + "DZD", + "EGP", + "ERN", + "ETB", + "ETH", + "EUR", + "FJD", + "FKP", + "GBP", + "GEL", + "GGP", + "GHS", + "GIP", + "GMD", + "GNF", + "GTQ", + "GYD", + "HKD", + "HNL", + "HRK", + "HTG", + "HUF", + "IDR", + "ILS", + "IMP", + "INR", + "IQD", + "IRR", + "ISK", + "JEP", + "JMD", + "JOD", + "JPY", + "KES", + "KGS", + "KHR", + "KMF", + "KPW", + "KRW", + "KWD", + "KYD", + "KZT", + "LAK", + "LBP", + "LKR", + "LRD", + "LSL", + "LYD", + "MAD", + "MDL", + "MGA", + "MKD", + "MMK", + "MNT", + "MOP", + "MRO", + "MUR", + "MVR", + "MWK", + "MXN", + "MYR", + "MZN", + "NAD", + "NGN", + "NIO", + "NOK", + "NPR", + "NZD", + "OMR", + "PAB", + "PEN", + "PGK", + "PHP", + "PKR", + "PLN", + "PYG", + "QAR", + "RON", + "RSD", + "RUB", + "RWF", + "SAR", + "SBD", + "SCR", + "SDG", + "SEK", + "SGD", + "SHP", + "SLL", + "SOS", + "SRD", + "SSP", + "STD", + "SVC", + "SYP", + "SZL", + "THB", + "TJS", + "TMT", + "TND", + "TOP", + "TRY", + "TTD", + "TWD", + "TZS", + "UAH", + "UGX", + "USD", + "UYU", + "UZS", + "VEF", + "VND", + "VUV", + "WST", + "XAF", + "XAG", + "XAU", + "XCD", + "XDR", + "XOF", + "XPD", + "XPF", + "XPT", + "XRP", + "YER", + "ZAR", + "ZEC", + "ZMW", + "ZWL" + ], + "BitcoinVenezuela": [ "ARS", - "AUD", - "AWG", - "AZN", - "BAM", - "BBD", - "BDT", - "BGN", - "BHD", - "BIF", - "BMD", - "BND", - "BOB", - "BRL", - "BSD", - "BTC", - "BTN", - "BWP", - "BYR", - "BZD", - "CAD", - "CDF", - "CHF", - "CLF", - "CLP", - "CNY", - "COP", - "CRC", - "CUP", - "CVE", - "CZK", - "DJF", - "DKK", - "DOP", - "DZD", - "EEK", - "EGP", - "ERN", - "ETB", "EUR", - "FJD", - "FKP", - "GBP", - "GEL", - "GHS", - "GIP", - "GMD", - "GNF", - "GTQ", - "GYD", - "HKD", - "HNL", - "HRK", - "HTG", - "HUF", - "IDR", - "ILS", - "INR", - "IQD", - "IRR", - "ISK", - "JEP", - "JMD", - "JOD", - "JPY", - "KES", - "KGS", - "KHR", - "KMF", - "KPW", - "KRW", - "KWD", - "KYD", - "KZT", - "LAK", - "LBP", - "LKR", - "LRD", - "LSL", - "LTL", - "LVL", - "LYD", - "MAD", - "MDL", - "MGA", - "MKD", - "MMK", - "MNT", - "MOP", - "MRO", - "MTL", - "MUR", - "MVR", - "MWK", - "MXN", - "MYR", - "MZN", - "NAD", - "NGN", - "NIO", - "NOK", - "NPR", - "NZD", - "OMR", - "PAB", - "PEN", - "PGK", - "PHP", - "PKR", - "PLN", - "PYG", - "QAR", - "RON", - "RSD", - "RUB", - "RWF", - "SAR", - "SBD", - "SCR", - "SDG", - "SEK", - "SGD", - "SHP", - "SLL", - "SOS", - "SRD", - "STD", - "SVC", - "SYP", - "SZL", - "THB", - "TJS", - "TMT", - "TND", - "TOP", - "TRY", - "TTD", - "TWD", - "TZS", - "UAH", - "UGX", "USD", - "UYU", - "UZS", - "VEF", - "VND", - "VUV", - "WST", - "XAF", - "XAG", - "XAU", - "XBT", - "XCD", - "XDR", - "XOF", - "XPF", - "YER", - "ZAR", - "ZMK", - "ZMW", - "ZWL" + "VEF" + ], + "Bitfinex": [ + "USD" + ], + "Bitso": [ + "MXN" + ], + "BitStamp": [ + "USD" ], "Coinbase": [ "AED", @@ -547,7 +203,6 @@ "AZN", "BAM", "BBD", - "BCH", "BDT", "BGN", "BHD", @@ -557,6 +212,7 @@ "BOB", "BRL", "BSD", + "BTC", "BTN", "BWP", "BYN", @@ -567,7 +223,6 @@ "CHF", "CLF", "CLP", - "CNH", "CNY", "COP", "CRC", @@ -623,7 +278,7 @@ "LKR", "LRD", "LSL", - "LTC", + "XZC", "LTL", "LVL", "LYD", @@ -707,96 +362,32 @@ "ZMW", "ZWL" ], - "Foxbit": [ - "BRL" + "CoinSpot": [ + "AUD" ], - "Kraken": [ - "CAD", + "GoCoin": [ + "USD" + ], + "HitBTC": [ "EUR", - "GBP", - "JPY", "USD" ], - "LocalBitcoins": [ - "AED", - "ARS", - "AUD", - "BAM", - "BDT", - "BHD", - "BOB", - "BRL", - "BYN", - "CAD", - "CHF", - "CLP", - "CNY", - "COP", - "CRC", - "CZK", - "DKK", - "DOP", - "EGP", - "ETH", + "Kraken": [ "EUR", - "GBP", - "GHS", - "HKD", - "HRK", - "HUF", - "IDR", - "ILS", - "INR", - "IRR", - "JOD", - "JPY", - "KES", - "KRW", - "KZT", - "LKR", - "MAD", - "MXN", - "MYR", - "NGN", - "NOK", - "NZD", - "PAB", - "PEN", - "PHP", - "PKR", - "PLN", - "QAR", - "RON", - "RSD", - "RUB", - "RWF", - "SAR", - "SEK", - "SGD", - "THB", - "TRY", - "TTD", - "TZS", - "UAH", - "UGX", - "USD", - "UYU", - "VEF", - "VND", - "XAR", - "ZAR", - "ZMW" + "USD" + ], + "OKCoin": [ + "USD" ], "MercadoBitcoin": [ "BRL" ], - "NegocieCoins": [ - "BRL" + "QuadrigaCX": [ + "CAD" ], "WEX": [ "EUR", "RUB", "USD" - ], - "itBit": [] -} \ No newline at end of file + ] +} diff --git a/lib/daemon.py b/lib/daemon.py index bebcf4046f57..8bdd9bb978e3 100644 --- a/lib/daemon.py +++ b/lib/daemon.py @@ -25,8 +25,6 @@ import ast import os import time -import traceback -import sys # from jsonrpc import JSONRPCResponseManager import jsonrpclib @@ -123,12 +121,13 @@ def __init__(self, config, fd, is_gui): self.config = config if config.get('offline'): self.network = None + self.fx = None else: self.network = Network(config) self.network.start() - self.fx = FxThread(config, self.network) - if self.network: + self.fx = FxThread(config, self.network) self.network.add_jobs([self.fx]) + self.gui = None self.wallets = {} # Setup JSONRPC server @@ -264,7 +263,7 @@ def run_cmdline(self, config_options): path = config.get_wallet_path() wallet = self.wallets.get(path) if wallet is None: - return {'error': 'Wallet "%s" is not loaded. Use "electrum daemon load_wallet"'%os.path.basename(path) } + return {'error': 'Wallet "%s" is not loaded. Use "electrum-xzc daemon load_wallet"'%os.path.basename(path) } else: wallet = None # arguments passed to function @@ -300,10 +299,6 @@ def init_gui(self, config, plugins): gui_name = config.get('gui', 'qt') if gui_name in ['lite', 'classic']: gui_name = 'qt' - gui = __import__('electrum_gui.' + gui_name, fromlist=['electrum_gui']) + gui = __import__('electrum_xzc_gui.' + gui_name, fromlist=['electrum_xzc_gui']) self.gui = gui.ElectrumGui(config, self, plugins) - try: - self.gui.main() - except BaseException as e: - traceback.print_exc(file=sys.stdout) - # app will exit now + self.gui.main() diff --git a/lib/exchange_rate.py b/lib/exchange_rate.py index 6931e3388a18..e3a39dbd7e36 100644 --- a/lib/exchange_rate.py +++ b/lib/exchange_rate.py @@ -2,8 +2,6 @@ import inspect import requests import sys -import os -import json from threading import Thread import time import csv @@ -35,7 +33,7 @@ def __init__(self, on_quotes, on_history): def get_json(self, site, get_string): # APIs must have https url = ''.join(['https://', site, get_string]) - response = requests.request('GET', url, headers={'User-Agent' : 'Electrum'}, timeout=10) + response = requests.request('GET', url, headers={'User-Agent' : 'Electrum'}) return response.json() def get_csv(self, site, get_string): @@ -61,44 +59,19 @@ def update(self, ccy): t.setDaemon(True) t.start() - def read_historical_rates(self, ccy, cache_dir): - filename = os.path.join(cache_dir, self.name() + '_'+ ccy) - if os.path.exists(filename): - timestamp = os.stat(filename).st_mtime - try: - with open(filename, 'r') as f: - h = json.loads(f.read()) - except: - h = None - else: - h = None - timestamp = False - if h: - self.history[ccy] = h + def get_historical_rates_safe(self, ccy): + try: + self.print_error("requesting fx history for", ccy) + self.history[ccy] = self.historical_rates(ccy) + self.print_error("received fx history for", ccy) self.on_history() - return h, timestamp - - def get_historical_rates_safe(self, ccy, cache_dir): - h, timestamp = self.read_historical_rates(ccy, cache_dir) - if h is None or time.time() - timestamp < 24*3600: - try: - self.print_error("requesting fx history for", ccy) - h = self.request_history(ccy) - self.print_error("received fx history for", ccy) - self.on_history() - except BaseException as e: - self.print_error("failed fx history:", e) - return - filename = os.path.join(cache_dir, self.name() + '_' + ccy) - with open(filename, 'w') as f: - f.write(json.dumps(h)) - self.history[ccy] = h - self.on_history() - - def get_historical_rates(self, ccy, cache_dir): + except BaseException as e: + self.print_error("failed fx history:", e) + + def get_historical_rates(self, ccy): result = self.history.get(ccy) if not result and ccy in self.history_ccys(): - t = Thread(target=self.get_historical_rates_safe, args=(ccy, cache_dir)) + t = Thread(target=self.get_historical_rates_safe, args=(ccy,)) t.setDaemon(True) t.start() return result @@ -107,8 +80,6 @@ def history_ccys(self): return [] def historical_rate(self, ccy, d_t): - if d_t is None: - return None return self.history.get(ccy, {}).get(d_t.strftime('%Y-%m-%d')) def get_currencies(self): @@ -116,11 +87,18 @@ def get_currencies(self): return sorted([str(a) for (a, b) in rates.items() if b is not None and len(a)==3]) +class Bit2C(ExchangeBase): + + def get_rates(self, ccy): + json = self.get_json('www.bit2c.co.il', '/Exchanges/XZCNIS/Ticker.json') + return {'NIS': Decimal(json['ll'])} + + class BitcoinAverage(ExchangeBase): def get_rates(self, ccy): json = self.get_json('apiv2.bitcoinaverage.com', '/indices/global/ticker/short') - return dict([(r.replace("BTC", ""), Decimal(json[r]['last'])) + return dict([(r.replace("XZC", ""), Decimal(json[r]['last'])) for r in json if r != 'timestamp']) def history_ccys(self): @@ -128,227 +106,137 @@ def history_ccys(self): 'MXN', 'NOK', 'NZD', 'PLN', 'RON', 'RUB', 'SEK', 'SGD', 'USD', 'ZAR'] - def request_history(self, ccy): + def historical_rates(self, ccy): history = self.get_csv('apiv2.bitcoinaverage.com', - "/indices/global/history/BTC%s?period=alltime&format=csv" % ccy) + "/indices/global/history/XZC%s?period=alltime&format=csv" % ccy) return dict([(h['DateTime'][:10], h['Average']) for h in history]) -class Bitcointoyou(ExchangeBase): - - def get_rates(self, ccy): - json = self.get_json('bitcointoyou.com', "/API/ticker.aspx") - return {'BRL': Decimal(json['ticker']['last'])} - - def history_ccys(self): - return ['BRL'] - - class BitcoinVenezuela(ExchangeBase): def get_rates(self, ccy): json = self.get_json('api.bitcoinvenezuela.com', '/') - rates = [(r, json['BTC'][r]) for r in json['BTC'] - if json['BTC'][r] is not None] # Giving NULL for LTC + rates = [(r, json['XZC'][r]) for r in json['XZC'] + if json['XZC'][r] is not None] # Giving NULL sometimes return dict(rates) def history_ccys(self): return ['ARS', 'EUR', 'USD', 'VEF'] - def request_history(self, ccy): + def historical_rates(self, ccy): return self.get_json('api.bitcoinvenezuela.com', - "/historical/index.php?coin=BTC")[ccy +'_BTC'] + "/historical/index.php?coin=XZC")[ccy +'_XZC'] - -class Bitmarket(ExchangeBase): +class Bitfinex(ExchangeBase): def get_rates(self, ccy): - json = self.get_json('www.bitmarket.pl', '/json/BTCPLN/ticker.json') - return {'PLN': Decimal(json['last'])} - - -class BitPay(ExchangeBase): - - def get_rates(self, ccy): - json = self.get_json('bitpay.com', '/api/rates') - return dict([(r['code'], Decimal(r['rate'])) for r in json]) + json = self.get_json('api.bitfinex.com', '/v1/pubticker/xzcusd') + return {'USD': Decimal(json['last_price'])} class Bitso(ExchangeBase): def get_rates(self, ccy): - json = self.get_json('api.bitso.com', '/v2/ticker') - return {'MXN': Decimal(json['last'])} + json = self.get_json('api.bitso.com', '/v3/ticker/?book=xzc_mxn') + return {'MXN': Decimal(json['payload']['last'])} class BitStamp(ExchangeBase): def get_rates(self, ccy): - json = self.get_json('www.bitstamp.net', '/api/ticker/') + json = self.get_json('www.bitstamp.net', '/api/v2/ticker/xzcusd/') return {'USD': Decimal(json['last'])} -class Bitvalor(ExchangeBase): - - def get_rates(self,ccy): - json = self.get_json('api.bitvalor.com', '/v1/ticker.json') - return {'BRL': Decimal(json['ticker_1h']['total']['last'])} - - -class BlockchainInfo(ExchangeBase): - - def get_rates(self, ccy): - json = self.get_json('blockchain.info', '/ticker') - return dict([(r, Decimal(json[r]['15m'])) for r in json]) - - -class BTCChina(ExchangeBase): - - def get_rates(self, ccy): - json = self.get_json('data.btcchina.com', '/data/ticker') - return {'CNY': Decimal(json['ticker']['last'])} - - -class BTCParalelo(ExchangeBase): - - def get_rates(self, ccy): - json = self.get_json('btcparalelo.com', '/api/price') - return {'VEF': Decimal(json['price'])} - - class Coinbase(ExchangeBase): def get_rates(self, ccy): - json = self.get_json('coinbase.com', - '/api/v1/currencies/exchange_rates') - return dict([(r[7:].upper(), Decimal(json[r])) - for r in json if r.startswith('btc_to_')]) + json = self.get_json('api.coinbase.com', + '/v2/exchange-rates?currency=XZC') + rates = json['data']['rates'] + return dict([(k, Decimal(rates[k])) for k in rates]) -class CoinDesk(ExchangeBase): - - def get_currencies(self): - dicts = self.get_json('api.coindesk.com', - '/v1/bpi/supported-currencies.json') - return [d['currency'] for d in dicts] +class CoinSpot(ExchangeBase): def get_rates(self, ccy): - json = self.get_json('api.coindesk.com', - '/v1/bpi/currentprice/%s.json' % ccy) - result = {ccy: Decimal(json['bpi'][ccy]['rate_float'])} - return result - - def history_starts(self): - return { 'USD': '2012-11-30', 'EUR': '2013-09-01' } - - def history_ccys(self): - return self.history_starts().keys() + json = self.get_json('www.coinspot.com.au', '/pubapi/latest') + return {'AUD': Decimal(json['prices']['xzc']['last'])} - def request_history(self, ccy): - start = self.history_starts()[ccy] - end = datetime.today().strftime('%Y-%m-%d') - # Note ?currency and ?index don't work as documented. Sigh. - query = ('/v1/bpi/historical/close.json?start=%s&end=%s' - % (start, end)) - json = self.get_json('api.coindesk.com', query) - return json['bpi'] - -class Coinsecure(ExchangeBase): +class GoCoin(ExchangeBase): def get_rates(self, ccy): - json = self.get_json('api.coinsecure.in', '/v0/noauth/newticker') - return {'INR': Decimal(json['lastprice'] / 100.0 )} - - -class Foxbit(ExchangeBase): - - def get_rates(self,ccy): - json = self.get_json('api.bitvalor.com', '/v1/ticker.json') - return {'BRL': Decimal(json['ticker_1h']['exchanges']['FOX']['last'])} + json = self.get_json('x.g0cn.com', '/prices') + xzc_prices = json['prices']['XZC'] + return dict([(r, Decimal(xzc_prices[r])) for r in xzc_prices]) -class itBit(ExchangeBase): +class HitBTC(ExchangeBase): def get_rates(self, ccy): - ccys = ['USD', 'EUR', 'SGD'] - json = self.get_json('api.itbit.com', '/v1/markets/XBT%s/ticker' % ccy) + ccys = ['EUR', 'USD'] + json = self.get_json('api.hitbtc.com', '/api/1/public/XZC%s/ticker' % ccy) result = dict.fromkeys(ccys) if ccy in ccys: - result[ccy] = Decimal(json['lastPrice']) + result[ccy] = Decimal(json['last']) return result class Kraken(ExchangeBase): def get_rates(self, ccy): - ccys = ['EUR', 'USD', 'CAD', 'GBP', 'JPY'] - pairs = ['XBT%s' % c for c in ccys] + dicts = self.get_json('api.kraken.com', '/0/public/AssetPairs') + pairs = [k for k in dicts['result'] if k.startswith('XXZCZ')] json = self.get_json('api.kraken.com', '/0/public/Ticker?pair=%s' % ','.join(pairs)) - return dict((k[-3:], Decimal(float(v['c'][0]))) - for k, v in json['result'].items()) + ccys = [p[5:] for p in pairs] + result = dict.fromkeys(ccys) + result[ccy] = Decimal(json['result']['XXZCZ'+ccy]['c'][0]) + return result + def history_ccys(self): + return ['EUR', 'USD'] -class LocalBitcoins(ExchangeBase): + def historical_rates(self, ccy): + query = '/0/public/OHLC?pair=XZC%s&interval=1440' % ccy + json = self.get_json('api.kraken.com', query) + history = json['result']['XXZCZ'+ccy] + return dict([(time.strftime('%Y-%m-%d', time.localtime(t[0])), t[4]) + for t in history]) - def get_rates(self, ccy): - json = self.get_json('localbitcoins.com', - '/bitcoinaverage/ticker-all-currencies/') - return dict([(r, Decimal(json[r]['rates']['last'])) for r in json]) - -class MercadoBitcoin(ExchangeBase): +class OKCoin(ExchangeBase): def get_rates(self, ccy): - json = self.get_json('api.bitvalor.com', '/v1/ticker.json') - return {'BRL': Decimal(json['ticker_1h']['exchanges']['MBT']['last'])} + json = self.get_json('www.okcoin.com', '/api/v1/ticker.do?symbol=xzc_usd') + return {'USD': Decimal(json['ticker']['last'])} -class NegocieCoins(ExchangeBase): +class MercadoBitcoin(ExchangeBase): def get_rates(self,ccy): - json = self.get_json('api.bitvalor.com', '/v1/ticker.json') - return {'BRL': Decimal(json['ticker_1h']['exchanges']['NEG']['last'])} - - def history_ccys(self): - return ['BRL'] + json = self.get_json('www.mercadobitcoin.net', '/api/xzc/ticker/') + return {'BRL': Decimal(json['ticker']['last'])} -class Unocoin(ExchangeBase): +class QuadrigaCX(ExchangeBase): - def get_rates(self, ccy): - json = self.get_json('www.unocoin.com', 'trade?buy') - return {'INR': Decimal(json)} + def get_rates(self,ccy): + json = self.get_json('api.quadrigacx.com', '/v2/ticker?book=xzc_cad') + return {'CAD': Decimal(json['last'])} class WEX(ExchangeBase): def get_rates(self, ccy): - json_eur = self.get_json('wex.nz', '/api/3/ticker/btc_eur') - json_rub = self.get_json('wex.nz', '/api/3/ticker/btc_rur') - json_usd = self.get_json('wex.nz', '/api/3/ticker/btc_usd') - return {'EUR': Decimal(json_eur['btc_eur']['last']), - 'RUB': Decimal(json_rub['btc_rur']['last']), - 'USD': Decimal(json_usd['btc_usd']['last'])} - - -class Winkdex(ExchangeBase): - - def get_rates(self, ccy): - json = self.get_json('winkdex.com', '/api/v0/price') - return {'USD': Decimal(json['price'] / 100.0)} - - def history_ccys(self): - return ['USD'] - - def request_history(self, ccy): - json = self.get_json('winkdex.com', - "/api/v0/series?start_time=1342915200") - history = json['series'][0]['results'] - return dict([(h['timestamp'][:10], h['price'] / 100.0) - for h in history]) + json_eur = self.get_json('wex.nz', '/api/3/ticker/xzc_eur') + json_rub = self.get_json('wex.nz', '/api/3/ticker/xzc_rur') + json_usd = self.get_json('wex.nz', '/api/3/ticker/xzc_usd') + return {'EUR': Decimal(json_eur['xzc_eur']['last']), + 'RUB': Decimal(json_rub['xzc_rur']['last']), + 'USD': Decimal(json_usd['xzc_usd']['last'])} def dictinvert(d): @@ -376,9 +264,7 @@ def get_exchanges_and_currencies(): exchange = klass(None, None) try: d[name] = exchange.get_currencies() - print(name, "ok") except: - print(name, "error") continue with open(path, 'w') as f: f.write(json.dumps(d, indent=4, sort_keys=True)) @@ -409,10 +295,7 @@ def __init__(self, config, network): self.history_used_spot = False self.ccy_combo = None self.hist_checkbox = None - self.cache_dir = os.path.join(config.path, 'cache') self.set_exchange(self.config_exchange()) - if not os.path.exists(self.cache_dir): - os.mkdir(self.cache_dir) def get_currencies(self, h): d = get_exchanges_by_ccy(h) @@ -435,7 +318,7 @@ def run(self): # This runs from the plugins thread which catches exceptions if self.is_enabled(): if self.timeout ==0 and self.show_history(): - self.exchange.get_historical_rates(self.ccy, self.cache_dir) + self.exchange.get_historical_rates(self.ccy) if self.timeout <= time.time(): self.timeout = time.time() + 150 self.exchange.update(self.ccy) @@ -483,15 +366,12 @@ def set_exchange(self, name): # A new exchange means new fx quotes, initially empty. Force # a quote refresh self.timeout = 0 - self.exchange.read_historical_rates(self.ccy, self.cache_dir) def on_quotes(self): - if self.network: - self.network.trigger_callback('on_quotes') + self.network.trigger_callback('on_quotes') def on_history(self): - if self.network: - self.network.trigger_callback('on_history') + self.network.trigger_callback('on_history') def exchange_rate(self): '''Returns None, or the exchange rate as a Decimal''' @@ -509,38 +389,22 @@ def get_fiat_status_text(self, btc_balance, base_unit, decimal_point): self.value_str(COIN / (10**(8 - decimal_point)), rate), self.ccy) def value_str(self, satoshis, rate): - if satoshis is not None and rate is not None: + if satoshis is None: # Can happen with incomplete history + return _("Unknown") + if rate: value = Decimal(satoshis) / COIN * Decimal(rate) - else: - value = None - return self.format_fiat(value) - - def format_fiat(self, value): - if value is not None: return "%s" % (self.ccy_amount_str(value, True)) return _("No data") def history_rate(self, d_t): - if d_t is None: - return None rate = self.exchange.historical_rate(self.ccy, d_t) # Frequently there is no rate for today, until tomorrow :) # Use spot quotes in that case if rate is None and (datetime.today().date() - d_t.date()).days <= 2: rate = self.exchange.quotes.get(self.ccy) self.history_used_spot = True - return Decimal(rate) if rate is not None else None + return rate def historical_value_str(self, satoshis, d_t): rate = self.history_rate(d_t) return self.value_str(satoshis, rate) - - def historical_value(self, satoshis, d_t): - rate = self.history_rate(d_t) - if rate: - return Decimal(satoshis) / COIN * Decimal(rate) - - def timestamp_rate(self, timestamp): - from electrum.util import timestamp_to_datetime - date = timestamp_to_datetime(timestamp) - return self.history_rate(date) diff --git a/lib/i18n.py b/lib/i18n.py index 49adf87caf23..eed5174a0a5f 100644 --- a/lib/i18n.py +++ b/lib/i18n.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# -*- coding: utf-8 -*- # # Electrum - lightweight Bitcoin client # Copyright (C) 2012 thomasv@gitorious @@ -29,7 +30,13 @@ def _(x): global language - return language.gettext(x) + dic = [('Bitcoin', 'Zcoin'), ('bitcoin', 'zcoin'), ('比特币', '莱特币')] + for b, l in dic: + x = x.replace(l, b) + t = language.gettext(x) + for b, l in dic: + t = t.replace(b, l) + return t def set_language(x): global language diff --git a/lib/keystore.py b/lib/keystore.py index e3579958a285..5b6d1f0212d4 100644 --- a/lib/keystore.py +++ b/lib/keystore.py @@ -45,10 +45,6 @@ def is_watching_only(self): def can_import(self): return False - def may_have_password(self): - """Returns whether the keystore can be encrypted with a password.""" - raise NotImplementedError() - def get_tx_derivations(self, tx): keypairs = {} for txin in tx.inputs(): @@ -120,6 +116,9 @@ def __init__(self, d): def is_deterministic(self): return False + def can_change_password(self): + return True + def get_master_public_key(self): return None @@ -197,6 +196,9 @@ def has_seed(self): def is_watching_only(self): return not self.has_seed() + def can_change_password(self): + return not self.is_watching_only() + def add_seed(self, seed): if self.seed: raise Exception("a seed exists") @@ -520,13 +522,9 @@ def is_watching_only(self): assert not self.has_seed() return False - def get_password_for_storage_encryption(self): - from .storage import get_derivation_used_for_hw_device_encryption - client = self.plugin.get_client(self) - derivation = get_derivation_used_for_hw_device_encryption() - xpub = client.get_xpub(derivation, "standard") - password = self.get_pubkey_from_xpub(xpub, ()) - return password + def can_change_password(self): + return False + def bip39_normalize_passphrase(passphrase): @@ -685,7 +683,7 @@ def is_private_key_list(text): def bip44_derivation(account_id, bip43_purpose=44): - coin = 1 if bitcoin.NetworkConstants.TESTNET else 0 + coin = 1 if bitcoin.NetworkConstants.TESTNET else 2 return "m/%d'/%d'/%d'" % (bip43_purpose, coin, int(account_id)) def from_seed(seed, passphrase, is_p2sh): diff --git a/lib/network.py b/lib/network.py index bf7d4eb415c1..4855c0fcb5c1 100644 --- a/lib/network.py +++ b/lib/network.py @@ -321,10 +321,8 @@ def send_subscriptions(self): self.queue_request('blockchain.scripthash.subscribe', [h]) def request_fee_estimates(self): - from .simple_config import FEE_ETA_TARGETS self.config.requested_fee_estimates() - self.queue_request('mempool.get_fee_histogram', []) - for i in FEE_ETA_TARGETS: + for i in bitcoin.FEE_TARGETS: self.queue_request('blockchain.estimatefee', [i]) def get_status_value(self, key): @@ -334,8 +332,6 @@ def get_status_value(self, key): value = self.banner elif key == 'fee': value = self.config.fee_estimates - elif key == 'fee_histogram': - value = self.config.mempool_fees elif key == 'updated': value = (self.get_local_height(), self.get_server_height()) elif key == 'servers': @@ -547,11 +543,6 @@ def process_response(self, interface, response, callbacks): elif method == 'server.donation_address': if error is None: self.donation_address = result - elif method == 'mempool.get_fee_histogram': - if error is None: - self.print_error(result) - self.config.mempool_fees = result - self.notify('fee_histogram') elif method == 'blockchain.estimatefee': if error is None and result > 0: i = params[0] diff --git a/lib/paymentrequest.py b/lib/paymentrequest.py index c1e25441ac61..a6d64b40ab95 100644 --- a/lib/paymentrequest.py +++ b/lib/paymentrequest.py @@ -40,15 +40,14 @@ from . import bitcoin from . import util from .util import print_error, bh2u, bfh -from .util import FileImportFailed, FileImportFailedEncrypted from . import transaction from . import x509 from . import rsakey from .bitcoin import TYPE_ADDRESS -REQUEST_HEADERS = {'Accept': 'application/bitcoin-paymentrequest', 'User-Agent': 'Electrum'} -ACK_HEADERS = {'Content-Type':'application/bitcoin-payment','Accept':'application/bitcoin-paymentack','User-Agent':'Electrum'} +REQUEST_HEADERS = {'Accept': 'application/zcoin-paymentrequest', 'User-Agent': 'Electrum'} +ACK_HEADERS = {'Content-Type':'application/zcoin-payment','Accept':'application/zcoin-paymentack','User-Agent':'Electrum'} ca_path = requests.certs.where() ca_list = None @@ -78,7 +77,7 @@ def get_payment_request(url): response.raise_for_status() # Guard against `bitcoin:`-URIs with invalid payment request URLs if "Content-Type" not in response.headers \ - or response.headers["Content-Type"] != "application/bitcoin-paymentrequest": + or response.headers["Content-Type"] != "application/zcoin-paymentrequest": data = None error = "payment URL not pointing to a payment request handling server" else: @@ -153,7 +152,7 @@ def verify(self, contacts): return True if pr.pki_type in ["x509+sha256", "x509+sha1"]: return self.verify_x509(pr) - elif pr.pki_type in ["dnssec+btc", "dnssec+ecdsa"]: + elif pr.pki_type in ["dnssec+xzc", "dnssec+ecdsa"]: return self.verify_dnssec(pr, contacts) else: self.error = "ERROR: Unsupported PKI Type for Message Signature" @@ -203,7 +202,7 @@ def verify_dnssec(self, pr, contacts): if info.get('validated') is not True: self.error = "Alias verification failed (DNSSEC)" return False - if pr.pki_type == "dnssec+btc": + if pr.pki_type == "dnssec+xzc": self.requestor = alias address = info.get('address') pr.signature = '' @@ -318,7 +317,7 @@ def make_unsigned_request(req): def sign_request_with_alias(pr, alias, alias_privkey): - pr.pki_type = 'dnssec+btc' + pr.pki_type = 'dnssec+xzc' pr.pki_data = str(alias) message = pr.SerializeToString() ec_key = bitcoin.regenerate_key(alias_privkey) @@ -427,7 +426,7 @@ def serialize_request(req): requestor = req.get('name') if requestor and signature: pr.signature = bfh(signature) - pr.pki_type = 'dnssec+btc' + pr.pki_type = 'dnssec+xzc' pr.pki_data = str(requestor) return pr @@ -472,12 +471,9 @@ def import_file(self, path): with open(path, 'r') as f: d = json.loads(f.read()) self.load(d) - except json.decoder.JSONDecodeError: + except: traceback.print_exc(file=sys.stderr) - raise FileImportFailedEncrypted() - except BaseException: - traceback.print_exc(file=sys.stdout) - raise FileImportFailed() + return self.save() def save(self): diff --git a/lib/paymentrequest_pb2.py b/lib/paymentrequest_pb2.py index f596128c1569..0e90d9af0857 100644 --- a/lib/paymentrequest_pb2.py +++ b/lib/paymentrequest_pb2.py @@ -18,9 +18,9 @@ DESCRIPTOR = _descriptor.FileDescriptor( name='paymentrequest.proto', package='payments', + syntax='proto2', serialized_pb=_b('\n\x14paymentrequest.proto\x12\x08payments\"+\n\x06Output\x12\x11\n\x06\x61mount\x18\x01 \x01(\x04:\x01\x30\x12\x0e\n\x06script\x18\x02 \x02(\x0c\"\xa3\x01\n\x0ePaymentDetails\x12\x15\n\x07network\x18\x01 \x01(\t:\x04main\x12!\n\x07outputs\x18\x02 \x03(\x0b\x32\x10.payments.Output\x12\x0c\n\x04time\x18\x03 \x02(\x04\x12\x0f\n\x07\x65xpires\x18\x04 \x01(\x04\x12\x0c\n\x04memo\x18\x05 \x01(\t\x12\x13\n\x0bpayment_url\x18\x06 \x01(\t\x12\x15\n\rmerchant_data\x18\x07 \x01(\x0c\"\x95\x01\n\x0ePaymentRequest\x12\"\n\x17payment_details_version\x18\x01 \x01(\r:\x01\x31\x12\x16\n\x08pki_type\x18\x02 \x01(\t:\x04none\x12\x10\n\x08pki_data\x18\x03 \x01(\x0c\x12\"\n\x1aserialized_payment_details\x18\x04 \x02(\x0c\x12\x11\n\tsignature\x18\x05 \x01(\x0c\"\'\n\x10X509Certificates\x12\x13\n\x0b\x63\x65rtificate\x18\x01 \x03(\x0c\"i\n\x07Payment\x12\x15\n\rmerchant_data\x18\x01 \x01(\x0c\x12\x14\n\x0ctransactions\x18\x02 \x03(\x0c\x12#\n\trefund_to\x18\x03 \x03(\x0b\x32\x10.payments.Output\x12\x0c\n\x04memo\x18\x04 \x01(\t\">\n\nPaymentACK\x12\"\n\x07payment\x18\x01 \x02(\x0b\x32\x11.payments.Payment\x12\x0c\n\x04memo\x18\x02 \x01(\tB(\n\x1eorg.bitcoin.protocols.paymentsB\x06Protos') ) -_sym_db.RegisterFileDescriptor(DESCRIPTOR) @@ -54,6 +54,7 @@ ], options=None, is_extendable=False, + syntax='proto2', extension_ranges=[], oneofs=[ ], @@ -126,6 +127,7 @@ ], options=None, is_extendable=False, + syntax='proto2', extension_ranges=[], oneofs=[ ], @@ -184,6 +186,7 @@ ], options=None, is_extendable=False, + syntax='proto2', extension_ranges=[], oneofs=[ ], @@ -214,6 +217,7 @@ ], options=None, is_extendable=False, + syntax='proto2', extension_ranges=[], oneofs=[ ], @@ -265,6 +269,7 @@ ], options=None, is_extendable=False, + syntax='proto2', extension_ranges=[], oneofs=[ ], @@ -302,6 +307,7 @@ ], options=None, is_extendable=False, + syntax='proto2', extension_ranges=[], oneofs=[ ], @@ -318,6 +324,7 @@ DESCRIPTOR.message_types_by_name['X509Certificates'] = _X509CERTIFICATES DESCRIPTOR.message_types_by_name['Payment'] = _PAYMENT DESCRIPTOR.message_types_by_name['PaymentACK'] = _PAYMENTACK +_sym_db.RegisterFileDescriptor(DESCRIPTOR) Output = _reflection.GeneratedProtocolMessageType('Output', (_message.Message,), dict( DESCRIPTOR = _OUTPUT, diff --git a/lib/plot.py b/lib/plot.py index 06f8edd75697..18b32c71e1f1 100644 --- a/lib/plot.py +++ b/lib/plot.py @@ -1,10 +1,10 @@ from PyQt5.QtGui import * -from electrum.i18n import _ +from electrum_xzc.i18n import _ import datetime from collections import defaultdict -from electrum.bitcoin import COIN +from electrum_xzc.bitcoin import COIN import matplotlib matplotlib.use('Qt5Agg') @@ -35,7 +35,7 @@ def plot_history(wallet, history): plt.subplots_adjust(bottom=0.2) plt.xticks( rotation=25 ) ax = plt.gca() - plt.ylabel('BTC') + plt.ylabel('XZC') plt.xlabel('Month') xfmt = md.DateFormatter('%Y-%m-%d') ax.xaxis.set_major_formatter(xfmt) diff --git a/lib/plugins.py b/lib/plugins.py index b3611c167432..883afe167828 100644 --- a/lib/plugins.py +++ b/lib/plugins.py @@ -48,9 +48,9 @@ def __init__(self, config, is_local, gui_name): DaemonThread.__init__(self) if is_local: find = imp.find_module('plugins') - plugins = imp.load_module('electrum_plugins', *find) + plugins = imp.load_module('electrum_xzc_plugins', *find) else: - plugins = __import__('electrum_plugins') + plugins = __import__('electrum_xzc_plugins') self.pkgpath = os.path.dirname(plugins.__file__) self.config = config self.hw_wallets = {} @@ -95,7 +95,7 @@ def count(self): def load_plugin(self, name): if name in self.plugins: return self.plugins[name] - full_name = 'electrum_plugins.' + name + '.' + self.gui_name + full_name = 'electrum_xzc_plugins.' + name + '.' + self.gui_name loader = pkgutil.find_loader(full_name) if not loader: raise RuntimeError("%s implementation for %s plugin not found" @@ -312,8 +312,6 @@ def __init__(self, config): # What we recognise. Each entry is a (vendor_id, product_id) # pair. self.recognised_hardware = set() - # Custom enumerate functions for devices we don't know about. - self.enumerate_func = set() # For synchronization self.lock = threading.RLock() self.hid_lock = threading.RLock() @@ -336,9 +334,6 @@ def register_devices(self, device_pairs): for pair in device_pairs: self.recognised_hardware.add(pair) - def register_enumerate_func(self, func): - self.enumerate_func.add(func) - def create_client(self, device, handler, plugin): # Get from cache first client = self.client_lookup(device.id_) @@ -367,20 +362,15 @@ def unpair_xpub(self, xpub): if not xpub in self.xpub_ids: return _id = self.xpub_ids.pop(xpub) - self._close_client(_id) + client = self.client_lookup(_id) + self.clients.pop(client, None) + if client: + client.close() def unpair_id(self, id_): xpub = self.xpub_by_id(id_) if xpub: self.unpair_xpub(xpub) - else: - self._close_client(id_) - - def _close_client(self, id_): - client = self.client_lookup(id_) - self.clients.pop(client, None) - if client: - client.close() def pair_xpub(self, xpub, id_): with self.lock: @@ -452,11 +442,11 @@ def force_pair_xpub(self, plugin, handler, info, xpub, derivation, devices): # The user input has wrong PIN or passphrase, or cancelled input, # or it is not pairable raise DeviceUnpairableError( - _('Electrum cannot pair with your {}.\n\n' - 'Before you request bitcoins to be sent to addresses in this ' + _('Electrum cannot pair with your %s.\n\n' + 'Before you request zcoins to be sent to addresses in this ' 'wallet, ensure you can pair with your device, or that you have ' - 'its seed (and passphrase, if any). Otherwise all bitcoins you ' - 'receive will be unspendable.').format(plugin.device)) + 'its seed (and passphrase, if any). Otherwise all zcoins you ' + 'receive will be unspendable.') % plugin.device) def unpaired_device_infos(self, handler, plugin, devices=None): '''Returns a list of DeviceInfo objects: one for each connected, @@ -482,9 +472,9 @@ def select_device(self, plugin, handler, keystore, devices=None): infos = self.unpaired_device_infos(handler, plugin, devices) if infos: break - msg = _('Please insert your {}. Verify the cable is ' + msg = _('Please insert your %s. Verify the cable is ' 'connected and that no other application is using it.\n\n' - 'Try to connect again?').format(plugin.device) + 'Try to connect again?') % plugin.device if not handler.yes_no_question(msg): raise UserCancelled() devices = None @@ -494,7 +484,7 @@ def select_device(self, plugin, handler, keystore, devices=None): for info in infos: if info.label == keystore.label: return info - msg = _("Please select which {} device to use:").format(plugin.device) + msg = _("Please select which %s device to use:") % plugin.device descriptions = [info.label + ' (%s)'%(_("initialized") if info.initialized else _("wiped")) for info in infos] c = handler.query_choice(msg, descriptions) if c is None: @@ -514,7 +504,6 @@ def scan_devices(self): self.print_error("scanning devices...") with self.hid_lock: hid_list = hid.enumerate(0, 0) - # First see what's connected that we know about devices = [] for d in hid_list: @@ -530,10 +519,6 @@ def scan_devices(self): devices.append(Device(d['path'], interface_number, id_, product_key, usage_page)) - # Let plugin handlers enumerate devices we don't know about - for f in self.enumerate_func: - devices.extend(f()) - # Now find out what was disconnected pairs = [(dev.path, dev.id_) for dev in devices] disconnected_ids = [] diff --git a/lib/scrypt.py b/lib/scrypt.py new file mode 100644 index 000000000000..67572d50d5e0 --- /dev/null +++ b/lib/scrypt.py @@ -0,0 +1,267 @@ +#!/usr/bin/env python3 +# +# scrypt.py - basic implementation of Litecoin's proof-of-work algorithm +# Copyright (C) 2014, 2017 pooler@litecoinpool.org +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import hashlib +import hmac + +def scrypt_1024_1_1_80(header): + if not isinstance(header, bytes) or len(header) != 80: + raise ValueError('header must be 80 bytes') + + mac = hmac.new(header, digestmod=hashlib.sha256) + + V = [0]*32*1024 + X = [0]*32 + + B = list(header[:]) + [0]*4 + for i in range(4): + B[83] = i + 1 + m = mac.copy() + m.update(bytes(B)) + H = m.digest() + for j in range(8): + X[i*8 + j] = (H[j*4 + 0] << 0 | H[j*4 + 1] << 8 | + H[j*4 + 2] << 16 | H[j*4 + 3] << 24) + + for i in range(1024): + V[i*32:i*32+32] = X + _xor_salsa8_2(X) + + for i in range(1024): + k = (X[16] & 1023) * 32 + for j in range(32): + X[j] ^= V[k+j] + _xor_salsa8_2(X) + + B = [0]*(128+3) + [1] + for i in range(32): + B[i*4 + 0] = X[i] >> 0 & 0xff + B[i*4 + 1] = X[i] >> 8 & 0xff + B[i*4 + 2] = X[i] >> 16 & 0xff + B[i*4 + 3] = X[i] >> 24 & 0xff + + mac.update(bytes(B)) + return mac.digest() + +def _xor_salsa8_2(X): + [ + x00, x01, x02, x03, x04, x05, x06, x07, + x08, x09, x10, x11, x12, x13, x14, x15, + x16, x17, x18, x19, x20, x21, x22, x23, + x24, x25, x26, x27, x28, x29, x30, x31 + ] = X + + x00 ^= x16 + x01 ^= x17 + x02 ^= x18 + x03 ^= x19 + x04 ^= x20 + x05 ^= x21 + x06 ^= x22 + x07 ^= x23 + x08 ^= x24 + x09 ^= x25 + x10 ^= x26 + x11 ^= x27 + x12 ^= x28 + x13 ^= x29 + x14 ^= x30 + x15 ^= x31 + + t00 = x00 + t01 = x01 + t02 = x02 + t03 = x03 + t04 = x04 + t05 = x05 + t06 = x06 + t07 = x07 + t08 = x08 + t09 = x09 + t10 = x10 + t11 = x11 + t12 = x12 + t13 = x13 + t14 = x14 + t15 = x15 + + for j in range(4): + t = t00+t12 & 0xffffffff; t04 ^= (t >> 25) | (t << 7) + t = t04+t00 & 0xffffffff; t08 ^= (t >> 23) | (t << 9) + t = t08+t04 & 0xffffffff; t12 ^= (t >> 19) | (t << 13) + t = t12+t08 & 0xffffffff; t00 ^= (t >> 14) | (t << 18) + t = t05+t01 & 0xffffffff; t09 ^= (t >> 25) | (t << 7) + t = t09+t05 & 0xffffffff; t13 ^= (t >> 23) | (t << 9) + t = t13+t09 & 0xffffffff; t01 ^= (t >> 19) | (t << 13) + t = t01+t13 & 0xffffffff; t05 ^= (t >> 14) | (t << 18) + t = t10+t06 & 0xffffffff; t14 ^= (t >> 25) | (t << 7) + t = t14+t10 & 0xffffffff; t02 ^= (t >> 23) | (t << 9) + t = t02+t14 & 0xffffffff; t06 ^= (t >> 19) | (t << 13) + t = t06+t02 & 0xffffffff; t10 ^= (t >> 14) | (t << 18) + t = t15+t11 & 0xffffffff; t03 ^= (t >> 25) | (t << 7) + t = t03+t15 & 0xffffffff; t07 ^= (t >> 23) | (t << 9) + t = t07+t03 & 0xffffffff; t11 ^= (t >> 19) | (t << 13) + t = t11+t07 & 0xffffffff; t15 ^= (t >> 14) | (t << 18) + t = t00+t03 & 0xffffffff; t01 ^= (t >> 25) | (t << 7) + t = t01+t00 & 0xffffffff; t02 ^= (t >> 23) | (t << 9) + t = t02+t01 & 0xffffffff; t03 ^= (t >> 19) | (t << 13) + t = t03+t02 & 0xffffffff; t00 ^= (t >> 14) | (t << 18) + t = t05+t04 & 0xffffffff; t06 ^= (t >> 25) | (t << 7) + t = t06+t05 & 0xffffffff; t07 ^= (t >> 23) | (t << 9) + t = t07+t06 & 0xffffffff; t04 ^= (t >> 19) | (t << 13) + t = t04+t07 & 0xffffffff; t05 ^= (t >> 14) | (t << 18) + t = t10+t09 & 0xffffffff; t11 ^= (t >> 25) | (t << 7) + t = t11+t10 & 0xffffffff; t08 ^= (t >> 23) | (t << 9) + t = t08+t11 & 0xffffffff; t09 ^= (t >> 19) | (t << 13) + t = t09+t08 & 0xffffffff; t10 ^= (t >> 14) | (t << 18) + t = t15+t14 & 0xffffffff; t12 ^= (t >> 25) | (t << 7) + t = t12+t15 & 0xffffffff; t13 ^= (t >> 23) | (t << 9) + t = t13+t12 & 0xffffffff; t14 ^= (t >> 19) | (t << 13) + t = t14+t13 & 0xffffffff; t15 ^= (t >> 14) | (t << 18) + + x00 = x00+t00 & 0xffffffff + x01 = x01+t01 & 0xffffffff + x02 = x02+t02 & 0xffffffff + x03 = x03+t03 & 0xffffffff + x04 = x04+t04 & 0xffffffff + x05 = x05+t05 & 0xffffffff + x06 = x06+t06 & 0xffffffff + x07 = x07+t07 & 0xffffffff + x08 = x08+t08 & 0xffffffff + x09 = x09+t09 & 0xffffffff + x10 = x10+t10 & 0xffffffff + x11 = x11+t11 & 0xffffffff + x12 = x12+t12 & 0xffffffff + x13 = x13+t13 & 0xffffffff + x14 = x14+t14 & 0xffffffff + x15 = x15+t15 & 0xffffffff + + x16 ^= x00 + x17 ^= x01 + x18 ^= x02 + x19 ^= x03 + x20 ^= x04 + x21 ^= x05 + x22 ^= x06 + x23 ^= x07 + x24 ^= x08 + x25 ^= x09 + x26 ^= x10 + x27 ^= x11 + x28 ^= x12 + x29 ^= x13 + x30 ^= x14 + x31 ^= x15 + + t00 = x16 + t01 = x17 + t02 = x18 + t03 = x19 + t04 = x20 + t05 = x21 + t06 = x22 + t07 = x23 + t08 = x24 + t09 = x25 + t10 = x26 + t11 = x27 + t12 = x28 + t13 = x29 + t14 = x30 + t15 = x31 + + for j in range(4): + t = t00+t12 & 0xffffffff; t04 ^= (t >> 25) | (t << 7) + t = t04+t00 & 0xffffffff; t08 ^= (t >> 23) | (t << 9) + t = t08+t04 & 0xffffffff; t12 ^= (t >> 19) | (t << 13) + t = t12+t08 & 0xffffffff; t00 ^= (t >> 14) | (t << 18) + t = t05+t01 & 0xffffffff; t09 ^= (t >> 25) | (t << 7) + t = t09+t05 & 0xffffffff; t13 ^= (t >> 23) | (t << 9) + t = t13+t09 & 0xffffffff; t01 ^= (t >> 19) | (t << 13) + t = t01+t13 & 0xffffffff; t05 ^= (t >> 14) | (t << 18) + t = t10+t06 & 0xffffffff; t14 ^= (t >> 25) | (t << 7) + t = t14+t10 & 0xffffffff; t02 ^= (t >> 23) | (t << 9) + t = t02+t14 & 0xffffffff; t06 ^= (t >> 19) | (t << 13) + t = t06+t02 & 0xffffffff; t10 ^= (t >> 14) | (t << 18) + t = t15+t11 & 0xffffffff; t03 ^= (t >> 25) | (t << 7) + t = t03+t15 & 0xffffffff; t07 ^= (t >> 23) | (t << 9) + t = t07+t03 & 0xffffffff; t11 ^= (t >> 19) | (t << 13) + t = t11+t07 & 0xffffffff; t15 ^= (t >> 14) | (t << 18) + t = t00+t03 & 0xffffffff; t01 ^= (t >> 25) | (t << 7) + t = t01+t00 & 0xffffffff; t02 ^= (t >> 23) | (t << 9) + t = t02+t01 & 0xffffffff; t03 ^= (t >> 19) | (t << 13) + t = t03+t02 & 0xffffffff; t00 ^= (t >> 14) | (t << 18) + t = t05+t04 & 0xffffffff; t06 ^= (t >> 25) | (t << 7) + t = t06+t05 & 0xffffffff; t07 ^= (t >> 23) | (t << 9) + t = t07+t06 & 0xffffffff; t04 ^= (t >> 19) | (t << 13) + t = t04+t07 & 0xffffffff; t05 ^= (t >> 14) | (t << 18) + t = t10+t09 & 0xffffffff; t11 ^= (t >> 25) | (t << 7) + t = t11+t10 & 0xffffffff; t08 ^= (t >> 23) | (t << 9) + t = t08+t11 & 0xffffffff; t09 ^= (t >> 19) | (t << 13) + t = t09+t08 & 0xffffffff; t10 ^= (t >> 14) | (t << 18) + t = t15+t14 & 0xffffffff; t12 ^= (t >> 25) | (t << 7) + t = t12+t15 & 0xffffffff; t13 ^= (t >> 23) | (t << 9) + t = t13+t12 & 0xffffffff; t14 ^= (t >> 19) | (t << 13) + t = t14+t13 & 0xffffffff; t15 ^= (t >> 14) | (t << 18) + + x16 = x16+t00 & 0xffffffff + x17 = x17+t01 & 0xffffffff + x18 = x18+t02 & 0xffffffff + x19 = x19+t03 & 0xffffffff + x20 = x20+t04 & 0xffffffff + x21 = x21+t05 & 0xffffffff + x22 = x22+t06 & 0xffffffff + x23 = x23+t07 & 0xffffffff + x24 = x24+t08 & 0xffffffff + x25 = x25+t09 & 0xffffffff + x26 = x26+t10 & 0xffffffff + x27 = x27+t11 & 0xffffffff + x28 = x28+t12 & 0xffffffff + x29 = x29+t13 & 0xffffffff + x30 = x30+t14 & 0xffffffff + x31 = x31+t15 & 0xffffffff + + X[:] = [ + x00, x01, x02, x03, x04, x05, x06, x07, + x08, x09, x10, x11, x12, x13, x14, x15, + x16, x17, x18, x19, x20, x21, x22, x23, + x24, x25, x26, x27, x28, x29, x30, x31 + ] + + + +if __name__ == '__main__': + from binascii import unhexlify + + vectors = [ + ("00"*80, "161d0876f3b93b1048cda1bdeaa7332ee210f7131b42013cb43913a6553a4b69"), + ("ff"*80, "5253069c14ecedf978745486375ee37415e977f55cdbedac31ebee8bf33dd127"), + ("010000000000000000000000000000000000000000000000000000000000000000000000d9ced4ed1130f7b7faad9be25323ffafa33232a17c3edf6cfd97bee6bafbdd97b9aa8e4ef0ff0f1ecd513f7c", "001e67b013726fd7382e9acb69165b4b6316227fb3156b5b414ba6340c050000"), + ("01000000ae178934851bfa0e83ccb6a3fc4bfddff3641e104b6c4680c31509074e699be2bd672d8d2199ef37a59678f92443083e3b85edef8b45c71759371f823bab59a97126614f44d5001d45920180", "01796dae1f78a72dfb09356db6f027cd884ba0201e6365b72aa54b3b00000000"), + ("020000008f49e5fd7ef50db9a2a1bff5d3e93717a096329a8ac802a248463ef366ceea1099b1fd0db4ce8f4728251711f759081d0b5b4da015fb78421d8ffbfda1105a2abda1db521b64101b00e60cd0", "461ae94540dc88c9bffbf42bb47e46a2416280adbeeb1d883c18090000000000"), + ] + + from timeit import default_timer + t0 = default_timer() + + for header, hash in vectors: + assert scrypt_1024_1_1_80(unhexlify(header)) == unhexlify(hash) + + dt = (default_timer() - t0) / len(vectors) + print("%.1f ms/hash" % (dt*1000)) + print("%.2f hash/s" % (1.0 / dt)) diff --git a/lib/servers.json b/lib/servers.json index 1f6398584f18..8c9da79c4906 100644 --- a/lib/servers.json +++ b/lib/servers.json @@ -1,228 +1,5 @@ { - "E-X.not.fyi": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "ELECTRUMX.not.fyi": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "ELEX01.blackpole.online": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "VPS.hsmiths.com": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "bitcoin.freedomnode.com": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "btc.smsys.me": { - "pruning": "-", - "s": "995", - "version": "1.1" - }, - "currentlane.lovebitco.in": { - "pruning": "-", - "t": "50001", - "version": "1.1" - }, - "daedalus.bauerj.eu": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "de01.hamster.science": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "ecdsa.net": { - "pruning": "-", - "s": "110", - "t": "50001", - "version": "1.1" - }, - "elec.luggs.co": { - "pruning": "-", - "s": "443", - "version": "1.1" - }, - "electrum.akinbo.org": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "electrum.antumbra.se": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "electrum.be": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "electrum.coinucopia.io": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "electrum.cutie.ga": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "electrum.festivaldelhumor.org": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "electrum.hsmiths.com": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "electrum.qtornado.com": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "electrum.vom-stausee.de": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "electrum3.hachre.de": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "electrumx.bot.nu": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "electrumx.westeurope.cloudapp.azure.com": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "elx01.knas.systems": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "ex-btc.server-on.net": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "helicarrier.bauerj.eu": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "mooo.not.fyi": { - "pruning": "-", - "s": "50012", - "t": "50011", - "version": "1.1" - }, - "ndnd.selfhost.eu": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "node.arihanc.com": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "node.xbt.eu": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "node1.volatilevictory.com": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "noserver4u.de": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "qmebr.spdns.org": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "raspi.hsmiths.com": { - "pruning": "-", - "s": "51002", - "t": "51001", - "version": "1.1" - }, - "s2.noip.pl": { - "pruning": "-", - "s": "50102", - "version": "1.1" - }, - "s5.noip.pl": { - "pruning": "-", - "s": "50105", - "version": "1.1" - }, - "songbird.bauerj.eu": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "us.electrum.be": { - "pruning": "-", - "s": "50002", - "t": "50001", - "version": "1.1" - }, - "us01.hamster.science": { + "45.63.92.224": { "pruning": "-", "s": "50002", "t": "50001", diff --git a/lib/servers_testnet.json b/lib/servers_testnet.json index 4ec92007f2fe..08464002860e 100644 --- a/lib/servers_testnet.json +++ b/lib/servers_testnet.json @@ -1,8 +1,4 @@ { - "testnetnode.arihanc.com": {"t":"51001", "s":"51002"}, - "testnet1.bauerj.eu": {"t":"51001", "s":"51002"}, - "14.3.140.101": {"t":"51001", "s":"51002"}, - "testnet.hsmiths.com": {"t":"53011", "s":"53012"}, - "electrum.akinbo.org": {"t":"51001", "s":"51002"}, - "ELEX05.blackpole.online": {"t":"52011", "s":"52002"} + "electrum1.zcoin.io": {"t":"51001", "s":"51002"}, + "electrum2.zcoin.io": {"t":"51001", "s":"51002"} } diff --git a/lib/simple_config.py b/lib/simple_config.py index 072edccd0e05..979bbe1ca316 100644 --- a/lib/simple_config.py +++ b/lib/simple_config.py @@ -6,12 +6,9 @@ from copy import deepcopy from .util import (user_dir, print_error, PrintError, - NoDynamicFeeEstimates, format_satoshis) + NoDynamicFeeEstimates) -from .bitcoin import MAX_FEE_RATE - -FEE_ETA_TARGETS = [25, 10, 5, 2] -FEE_DEPTH_TARGETS = [10000000, 5000000, 2000000, 1000000, 500000, 200000, 100000] +from .bitcoin import MAX_FEE_RATE, FEE_TARGETS config = None @@ -39,7 +36,7 @@ class SimpleConfig(PrintError): 2. User configuration (in the user's config directory) They are taken in order (1. overrides config options set in 2.) """ - fee_rates = [5000, 10000, 20000, 30000, 50000, 70000, 100000, 150000, 200000, 300000] + fee_rates = [100000, 125000, 150000, 200000, 250000, 300000, 400000, 500000, 700000, 1000000] def __init__(self, options=None, read_user_config_function=None, read_user_dir_function=None): @@ -51,7 +48,6 @@ def __init__(self, options=None, read_user_config_function=None, # a thread-safe way. self.lock = threading.RLock() - self.mempool_fees = {} self.fee_estimates = {} self.fee_estimates_last_updated = {} self.last_time_fee_estimates_requested = 0 # zero ensures immediate fees @@ -231,7 +227,7 @@ def get_wallet_path(self): new_path = os.path.join(self.path, "wallets", "default_wallet") # default path in pre 1.9 versions - old_path = os.path.join(self.path, "electrum.dat") + old_path = os.path.join(self.path, "electrum-xzc.dat") if os.path.exists(old_path) and not os.path.exists(new_path): os.rename(old_path, new_path) @@ -267,9 +263,9 @@ def max_fee_rate(self): f = MAX_FEE_RATE return f - def eta_to_fee(self, i): + def dynfee(self, i): if i < 4: - j = FEE_ETA_TARGETS[i] + j = FEE_TARGETS[i] fee = self.fee_estimates.get(j) else: assert i == 4 @@ -280,107 +276,18 @@ def eta_to_fee(self, i): fee = min(5*MAX_FEE_RATE, fee) return fee - def fee_to_depth(self, target_fee): - depth = 0 - for fee, s in self.mempool_fees: - depth += s - if fee <= target_fee: - break - else: - return 0 - return depth - - def depth_to_fee(self, i): - target = self.depth_target(i) - depth = 0 - for fee, s in self.mempool_fees: - depth += s - if depth > target: - break - else: - return 0 - return fee * 1000 - - def depth_target(self, i): - return FEE_DEPTH_TARGETS[i] - - def eta_target(self, i): - return FEE_ETA_TARGETS[i] - - def fee_to_eta(self, fee_per_kb): + def reverse_dynfee(self, fee_per_kb): import operator - l = list(self.fee_estimates.items()) + [(1, self.eta_to_fee(4))] + l = list(self.fee_estimates.items()) + [(1, self.dynfee(4))] + for i in range(len(l)-1, 0, -1): + if l[i][1] == l[i-1][1]: + del l[i-1] dist = map(lambda x: (x[0], abs(x[1] - fee_per_kb)), l) min_target, min_value = min(dist, key=operator.itemgetter(1)) if fee_per_kb < self.fee_estimates.get(25)/2: min_target = -1 return min_target - def depth_tooltip(self, depth): - return "%.1f MB from tip"%(depth/1000000) - - def eta_tooltip(self, x): - return 'Low fee' if x < 0 else 'Within %d blocks'%x - - def get_fee_status(self): - dyn = self.is_dynfee() - mempool = self.use_mempool_fees() - pos = self.get_depth_level() if mempool else self.get_fee_level() - fee_rate = self.fee_per_kb() - target, tooltip = self.get_fee_text(pos, dyn, mempool, fee_rate) - return target - - def get_fee_text(self, pos, dyn, mempool, fee_rate): - rate_str = (format_satoshis(fee_rate/1000, False, 0, 0, False) + ' sat/byte') if fee_rate is not None else 'unknown' - if dyn: - if mempool: - depth = self.depth_target(pos) - text = self.depth_tooltip(depth) - else: - eta = self.eta_target(pos) - text = self.eta_tooltip(eta) - tooltip = rate_str - else: - text = rate_str - if mempool: - if self.has_fee_mempool(): - depth = self.fee_to_depth(fee_rate) - tooltip = self.depth_tooltip(depth) - else: - tooltip = '' - else: - if self.has_fee_etas(): - eta = self.fee_to_eta(fee_rate) - tooltip = self.eta_tooltip(eta) - else: - tooltip = '' - return text, tooltip - - def get_depth_level(self): - maxp = len(FEE_DEPTH_TARGETS) - 1 - return min(maxp, self.get('depth_level', 2)) - - def get_fee_level(self): - maxp = len(FEE_ETA_TARGETS) - 1 - return min(maxp, self.get('fee_level', 2)) - - def get_fee_slider(self, dyn, mempool): - if dyn: - if mempool: - pos = self.get_depth_level() - maxp = len(FEE_DEPTH_TARGETS) - 1 - fee_rate = self.depth_to_fee(pos) - else: - pos = self.get_fee_level() - maxp = len(FEE_ETA_TARGETS) - 1 - fee_rate = self.eta_to_fee(pos) - else: - fee_rate = self.fee_per_kb() - pos = self.static_fee_index(fee_rate) - maxp = 9 - return maxp, pos, fee_rate - - def static_fee(self, i): return self.fee_rates[i] @@ -388,29 +295,21 @@ def static_fee_index(self, value): dist = list(map(lambda x: abs(x - value), self.fee_rates)) return min(range(len(dist)), key=dist.__getitem__) - def has_fee_etas(self): - return len(self.fee_estimates) == 4 - - def has_fee_mempool(self): - return bool(self.mempool_fees) + def has_fee_estimates(self): + return len(self.fee_estimates)==4 def is_dynfee(self): - return bool(self.get('dynamic_fees', True)) - - def use_mempool_fees(self): - return bool(self.get('mempool_fees', False)) + return self.get('dynamic_fees', False) def fee_per_kb(self): """Returns sat/kvB fee to pay for a txn. Note: might return None. """ - if self.is_dynfee(): - if self.use_mempool_fees(): - fee_rate = self.depth_to_fee(self.get_depth_level()) - else: - fee_rate = self.eta_to_fee(self.get_fee_level()) + dyn = self.is_dynfee() + if dyn: + fee_rate = self.dynfee(self.get('fee_level', 2)) else: - fee_rate = self.get('fee_per_kb', self.max_fee_rate()/2) + fee_rate = self.get('fee_per_kb', self.max_fee_rate()/10) return fee_rate def fee_per_byte(self): @@ -428,12 +327,7 @@ def estimate_fee(self, size): @classmethod def estimate_fee_for_feerate(cls, fee_per_kb, size): - # note: We only allow integer sat/byte values atm. - # The GUI for simplicity reasons only displays integer sat/byte, - # and for the sake of consistency, we thus only use integer sat/byte in - # the backend too. - fee_per_byte = int(fee_per_kb / 1000) - return int(fee_per_byte * size) + return int(fee_per_kb * size / 1000.) def update_fee_estimates(self, key, value): self.fee_estimates[key] = value @@ -461,7 +355,7 @@ def get_video_device(self): def read_user_config(path): - """Parse and store the user config settings in electrum.conf into user_config[].""" + """Parse and store the user config settings in electrum-xzc.conf into user_config[].""" if not path: return {} config_path = os.path.join(path, "config") diff --git a/lib/storage.py b/lib/storage.py index d87a339a8344..fa9911149d1e 100644 --- a/lib/storage.py +++ b/lib/storage.py @@ -33,7 +33,7 @@ import base64 import zlib -from .util import PrintError, profiler, InvalidPassword +from .util import PrintError, profiler from .plugins import run_hook, plugin_loaders from .keystore import bip44_derivation from . import bitcoin @@ -56,13 +56,6 @@ def multisig_type(wallet_type): match = [int(x) for x in match.group(1, 2)] return match -def get_derivation_used_for_hw_device_encryption(): - return ("m" - "/4541509'" # ascii 'ELE' as decimal ("BIP43 purpose") - "/1112098098'") # ascii 'BIE2' as decimal - -# storage encryption version -STO_EV_PLAINTEXT, STO_EV_USER_PW, STO_EV_XPUB_PW = range(0, 3) class WalletStorage(PrintError): @@ -77,11 +70,9 @@ def __init__(self, path, manual_upgrades=False): if self.file_exists(): with open(self.path, "r") as f: self.raw = f.read() - self._encryption_version = self._init_encryption_version() if not self.is_encrypted(): self.load_data(self.raw) else: - self._encryption_version = STO_EV_PLAINTEXT # avoid new wallets getting 'upgraded' self.put('seed_version', FINAL_SEED_VERSION) @@ -115,47 +106,11 @@ def load_data(self, s): if self.requires_upgrade(): self.upgrade() - def is_past_initial_decryption(self): - """Return if storage is in a usable state for normal operations. - - The value is True exactly - if encryption is disabled completely (self.is_encrypted() == False), - or if encryption is enabled but the contents have already been decrypted. - """ - return bool(self.data) - def is_encrypted(self): - """Return if storage encryption is currently enabled.""" - return self.get_encryption_version() != STO_EV_PLAINTEXT - - def is_encrypted_with_user_pw(self): - return self.get_encryption_version() == STO_EV_USER_PW - - def is_encrypted_with_hw_device(self): - return self.get_encryption_version() == STO_EV_XPUB_PW - - def get_encryption_version(self): - """Return the version of encryption used for this storage. - - 0: plaintext / no encryption - - ECIES, private key derived from a password, - 1: password is provided by user - 2: password is derived from an xpub; used with hw wallets - """ - return self._encryption_version - - def _init_encryption_version(self): try: - magic = base64.b64decode(self.raw)[0:4] - if magic == b'BIE1': - return STO_EV_USER_PW - elif magic == b'BIE2': - return STO_EV_XPUB_PW - else: - return STO_EV_PLAINTEXT + return base64.b64decode(self.raw)[0:4] == b'BIE1' except: - return STO_EV_PLAINTEXT + return False def file_exists(self): return self.path and os.path.exists(self.path) @@ -165,50 +120,20 @@ def get_key(self, password): ec_key = bitcoin.EC_KEY(secret) return ec_key - def _get_encryption_magic(self): - v = self._encryption_version - if v == STO_EV_USER_PW: - return b'BIE1' - elif v == STO_EV_XPUB_PW: - return b'BIE2' - else: - raise Exception('no encryption magic for version: %s' % v) - def decrypt(self, password): ec_key = self.get_key(password) - if self.raw: - enc_magic = self._get_encryption_magic() - s = zlib.decompress(ec_key.decrypt_message(self.raw, enc_magic)) - else: - s = None + s = zlib.decompress(ec_key.decrypt_message(self.raw)) if self.raw else None self.pubkey = ec_key.get_public_key() s = s.decode('utf8') self.load_data(s) - def check_password(self, password): - """Raises an InvalidPassword exception on invalid password""" - if not self.is_encrypted(): - return - if self.pubkey and self.pubkey != self.get_key(password).get_public_key(): - raise InvalidPassword() - - def set_keystore_encryption(self, enable): - self.put('use_encryption', enable) - - def set_password(self, password, enc_version=None): - """Set a password to be used for encrypting this storage.""" - if enc_version is None: - enc_version = self._encryption_version - if password and enc_version != STO_EV_PLAINTEXT: + def set_password(self, password, encrypt): + self.put('use_encryption', bool(password)) + if encrypt and password: ec_key = self.get_key(password) self.pubkey = ec_key.get_public_key() - self._encryption_version = enc_version else: self.pubkey = None - self._encryption_version = STO_EV_PLAINTEXT - # make sure next storage.write() saves changes - with self.lock: - self.modified = True def get(self, key, default=None): with self.lock: @@ -250,8 +175,7 @@ def _write(self): if self.pubkey: s = bytes(s, 'utf8') c = zlib.compress(s) - enc_magic = self._get_encryption_magic() - s = bitcoin.encrypt_message(c, self.pubkey, enc_magic) + s = bitcoin.encrypt_message(c, self.pubkey) s = s.decode('utf8') temp_path = "%s.tmp.%s" % (self.path, os.getpid()) @@ -339,9 +263,6 @@ def upgrade(self): self.write() def convert_wallet_type(self): - if not self._is_upgrade_method_needed(0, 13): - return - wallet_type = self.get('wallet_type') if wallet_type == 'btchip': wallet_type = 'ledger' if self.get('keystore') or self.get('x1/') or wallet_type=='imported': @@ -525,9 +446,6 @@ def remove_from_list(list_name): self.put('seed_version', 16) def convert_imported(self): - if not self._is_upgrade_method_needed(0, 13): - return - # '/x' is the internal ID for imported accounts d = self.get('accounts', {}).get('/x', {}).get('imported',{}) if not d: @@ -554,9 +472,6 @@ def convert_imported(self): raise BaseException('no addresses or privkeys') def convert_account(self): - if not self._is_upgrade_method_needed(0, 13): - return - self.put('accounts', None) def _is_upgrade_method_needed(self, min_version, max_version): diff --git a/lib/tests/test_bitcoin.py b/lib/tests/test_bitcoin.py index dbae5005da4b..cb6b7fc6b759 100644 --- a/lib/tests/test_bitcoin.py +++ b/lib/tests/test_bitcoin.py @@ -63,17 +63,17 @@ def sign_message_with_wif_privkey(wif_privkey, msg): return key.sign_message(msg, compressed) sig1 = sign_message_with_wif_privkey( - 'L1TnU2zbNaAqMoVh65Cyvmcjzbrj41Gs9iTLcWbpJCMynXuap6UN', msg1) - addr1 = '15hETetDmcXm1mM4sEf7U2KXC9hDHFMSzz' + 'T7J3unHmmx9S8e8Zdi9r98A7wTW386HkxvMbUKEMsAY9JRWfbSe6', msg1) + addr1 = 'LPvBisC3rGmpGa3E3NeQk3PHQN4VS237y2' sig2 = sign_message_with_wif_privkey( - '5Hxn5C4SQuiV6e62A1MtZmbSeQyrLFhu5uYks62pU5VBUygK2KD', msg2) - addr2 = '1GPHVTY8UD9my6jyP4tb2TYJwUbDetyNC6' + '6uGWYKbyKLBMa1ysfq9rMANcbtYKY49vrawvaH3rBXooApLq6t2', msg2) + addr2 = 'LacEkfqxYsPqDuS8ZCstJUc59gxVm2DQaT' sig1_b64 = base64.b64encode(sig1) sig2_b64 = base64.b64encode(sig2) - self.assertEqual(sig1_b64, b'H/9jMOnj4MFbH3d7t4yCQ9i7DgZU/VZ278w3+ySv2F4yIsdqjsc5ng3kmN8OZAThgyfCZOQxZCWza9V5XzlVY0Y=') - self.assertEqual(sig2_b64, b'G84dmJ8TKIDKMT9qBRhpX2sNmR0y5t+POcYnFFJCs66lJmAs3T8A6Sbpx7KA6yTQ9djQMabwQXRrDomOkIKGn18=') + self.assertEqual(sig1_b64, b'IHGAMaPxjrn3CD19S7J5KAq4xF6mdLznsSL8SrqhNwficUHlK5wSth6/JiZ/pEyo92nkUoA+kL9VJpjLnKJKTmM=') + self.assertEqual(sig2_b64, b'G14KtfFZQYjyhz4PUzX/yz8eEC1BFHsaEKZOJGLeTWJoNp/umpi5zPeCvhUcgSoMtAkmw3pATrM2bcDdYi1tqIs=') self.assertTrue(verify_message(addr1, sig1, msg1)) self.assertTrue(verify_message(addr2, sig2, msg2)) @@ -149,18 +149,18 @@ def test_op_push(self): def test_address_to_script(self): # bech32 native segwit # test vectors from BIP-0173 - self.assertEqual(address_to_script('BC1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KV8F3T4'), '0014751e76e8199196d454941c45d1b3a323f1433bd6') - self.assertEqual(address_to_script('bc1pw508d6qejxtdg4y5r3zarvary0c5xw7kw508d6qejxtdg4y5r3zarvary0c5xw7k7grplx'), '5128751e76e8199196d454941c45d1b3a323f1433bd6751e76e8199196d454941c45d1b3a323f1433bd6') - self.assertEqual(address_to_script('BC1SW50QA3JX3S'), '6002751e') - self.assertEqual(address_to_script('bc1zw508d6qejxtdg4y5r3zarvaryvg6kdaj'), '5210751e76e8199196d454941c45d1b3a323') + self.assertEqual(address_to_script('XZC1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KGMN4N9'), '0014751e76e8199196d454941c45d1b3a323f1433bd6') + self.assertEqual(address_to_script('xzc1pw508d6qejxtdg4y5r3zarvary0c5xw7kw508d6qejxtdg4y5r3zarvary0c5xw7k0tul4w'), '5128751e76e8199196d454941c45d1b3a323f1433bd6751e76e8199196d454941c45d1b3a323f1433bd6') + self.assertEqual(address_to_script('XZC1SW50QZGYDF5'), '6002751e') + self.assertEqual(address_to_script('xzc1zw508d6qejxtdg4y5r3zarvaryvdzur3w'), '5210751e76e8199196d454941c45d1b3a323') # base58 P2PKH - self.assertEqual(address_to_script('14gcRovpkCoGkCNBivQBvw7eso7eiNAbxG'), '76a91428662c67561b95c79d2257d2a93d9d151c977e9188ac') - self.assertEqual(address_to_script('1BEqfzh4Y3zzLosfGhw1AsqbEKVW6e1qHv'), '76a914704f4b81cadb7bf7e68c08cd3657220f680f863c88ac') + self.assertEqual(address_to_script('LNuZh2Eeps3L114Lu4PVCxBR61UvqcAb8p'), '76a91428662c67561b95c79d2257d2a93d9d151c977e9188ac') + self.assertEqual(address_to_script('LVTnwCztciF3bcZpSqvJStuMSXrnDt1pUU'), '76a914704f4b81cadb7bf7e68c08cd3657220f680f863c88ac') # base58 P2SH - self.assertEqual(address_to_script('35ZqQJcBQMZ1rsv8aSuJ2wkC7ohUCQMJbT'), 'a9142a84cf00d47f699ee7bbc1dea5ec1bdecb4ac15487') - self.assertEqual(address_to_script('3PyjzJ3im7f7bcV724GR57edKDqoZvH7Ji'), 'a914f47c8954e421031ad04ecd8e7752c9479206b9d387') + self.assertEqual(address_to_script('MBmyiC29MUQSfPC2gKtdrazbSWHvGqJCnU'), 'a9142a84cf00d47f699ee7bbc1dea5ec1bdecb4ac15487') + self.assertEqual(address_to_script('MWBtJBTgiEWYQ7m17wFktku2dvSFZXqhWZ'), 'a914f47c8954e421031ad04ecd8e7752c9479206b9d387') class Test_bitcoin_testnet(unittest.TestCase): @@ -178,16 +178,16 @@ def tearDownClass(cls): def test_address_to_script(self): # bech32 native segwit # test vectors from BIP-0173 - self.assertEqual(address_to_script('tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7'), '00201863143c14c5166804bd19203356da136c985678cd4d27a1b8c6329604903262') - self.assertEqual(address_to_script('tb1qqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvsesrxh6hy'), '0020000000c4a5cad46221b2a187905e5266362b99d5e91c6ce24d165dab93e86433') + self.assertEqual(address_to_script('txzc1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3qsnr4fp'), '00201863143c14c5166804bd19203356da136c985678cd4d27a1b8c6329604903262') + self.assertEqual(address_to_script('txzc1qqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvsesu9tmgm'), '0020000000c4a5cad46221b2a187905e5266362b99d5e91c6ce24d165dab93e86433') # base58 P2PKH self.assertEqual(address_to_script('mutXcGt1CJdkRvXuN2xoz2quAAQYQ59bRX'), '76a9149da64e300c5e4eb4aaffc9c2fd465348d5618ad488ac') self.assertEqual(address_to_script('miqtaRTkU3U8rzwKbEHx3g8FSz8GJtPS3K'), '76a914247d2d5b6334bdfa2038e85b20fc15264f8e5d2788ac') # base58 P2SH - self.assertEqual(address_to_script('2N3LSvr3hv5EVdfcrxg2Yzecf3SRvqyBE4p'), 'a9146eae23d8c4a941316017946fc761a7a6c85561fb87') - self.assertEqual(address_to_script('2NE4ZdmxFmUgwu5wtfoN2gVniyMgRDYq1kk'), 'a914e4567743d378957cd2ee7072da74b1203c1a7a0b87') + self.assertEqual(address_to_script('QWhD3ruwwBHamrNuan4a5M46BpskgXmWih'), 'a9146eae23d8c4a941316017946fc761a7a6c85561fb87') + self.assertEqual(address_to_script('QhRKknpVnak33GhwHuQ3mCEA7k8F4zxDXG'), 'a914e4567743d378957cd2ee7072da74b1203c1a7a0b87') class Test_xprv_xpub(unittest.TestCase): @@ -270,17 +270,17 @@ def test_is_bip32_derivation(self): class Test_keyImport(unittest.TestCase): priv_pub_addr = ( - {'priv': 'KzMFjMC2MPadjvX5Cd7b8AKKjjpBSoRKUTpoAtN6B3J9ezWYyXS6', + {'priv': 'T6BXB6VCkmZEWm9wkG4TLWrhgbTVWtSDHfj42gzdk1UKAt3qZMPk', 'pub': '02c6467b7e621144105ed3e4835b0b4ab7e35266a2ae1c4f8baa19e9ca93452997', - 'address': '17azqT8T16coRmWKYFj3UjzJuxiYrYFRBR', + 'address': 'LRox6fSH5krrgaCUiPiLkm458B5pyG8vxq', 'minikey' : False, 'txin_type': 'p2pkh', 'compressed': True, 'addr_encoding': 'base58', 'scripthash': 'c9aecd1fef8d661a42c560bf75c8163e337099800b8face5ca3d1393a30508a7'}, - {'priv': '5Hxn5C4SQuiV6e62A1MtZmbSeQyrLFhu5uYks62pU5VBUygK2KD', + {'priv': '6uGWYKbyKLBMa1ysfq9rMANcbtYKY49vrawvaH3rBXooApLq6t2', 'pub': '04e5fe91a20fac945845a5518450d23405ff3e3e1ce39827b47ee6d5db020a9075422d56a59195ada0035e4a52a238849f68e7a325ba5b2247013e0481c5c7cb3f', - 'address': '1GPHVTY8UD9my6jyP4tb2TYJwUbDetyNC6', + 'address': 'LacEkfqxYsPqDuS8ZCstJUc59gxVm2DQaT', 'minikey': False, 'txin_type': 'p2pkh', 'compressed': False, @@ -288,7 +288,7 @@ class Test_keyImport(unittest.TestCase): 'scripthash': 'f5914651408417e1166f725a5829ff9576d0dbf05237055bf13abd2af7f79473'}, {'priv': 'LHJnnvRzsdrTX2j5QeWVsaBkabK7gfMNqNNqxnbBVRaJYfk24iJz', 'pub': '0279ad237ca0d812fb503ab86f25e15ebd5fa5dd95c193639a8a738dcd1acbad81', - 'address': '3GeVJB3oKr7psgKR6BTXSxKtWUkfsHHhk7', + 'address': 'MNrdc4TmGxyFgBbKC4SsGbaHqBM7uzsjTf', 'minikey': False, 'txin_type': 'p2wpkh-p2sh', 'compressed': True, @@ -296,7 +296,7 @@ class Test_keyImport(unittest.TestCase): 'scripthash': 'd7b04e882fa6b13246829ac552a2b21461d9152eb00f0a6adb58457a3e63d7c5'}, {'priv': 'L8g5V8kFFeg2WbecahRSdobARbHz2w2STH9S8ePHVSY4fmia7Rsj', 'pub': '03e9f948421aaa89415dc5f281a61b60dde12aae3181b3a76cd2d849b164fc6d0b', - 'address': 'bc1qqmpt7u5e9hfznljta5gnvhyvfd2kdd0r90hwue', + 'address': 'xzc1qqmpt7u5e9hfznljta5gnvhyvfd2kdd0rpnd2yf', 'minikey': False, 'txin_type': 'p2wpkh', 'compressed': True, @@ -305,7 +305,7 @@ class Test_keyImport(unittest.TestCase): # from http://bitscan.com/articles/security/spotlight-on-mini-private-keys {'priv': 'SzavMBLoXU6kDrqtUVmffv', 'pub': '02588d202afcc1ee4ab5254c7847ec25b9a135bbda0f2bc69ee1a714749fd77dc9', - 'address': '19GuvDvMMUZ8vq84wT79fvnvhMd5MnfTkR', + 'address': 'LTVsBSEBS8oCBdpE7b6SwwrguZzMUnjsWr', 'minikey': True, 'txin_type': 'p2pkh', 'compressed': True, # this is actually ambiguous... issue #2748 diff --git a/lib/tests/test_storage_upgrade.py b/lib/tests/test_storage_upgrade.py index a91b881739fe..845cf9e253d4 100644 --- a/lib/tests/test_storage_upgrade.py +++ b/lib/tests/test_storage_upgrade.py @@ -12,12 +12,12 @@ class TestStorageUpgrade(WalletTestCase): def test_upgrade_from_client_1_9_8_seeded(self): - wallet_str = "{'addr_history':{'177hEYTccmuYH8u68pYfaLteTxwJrVgvJj':[],'15V7MsQK2vjF5aEXLVG11qi2eZPZsXdnYc':[],'1DgrwN2JCDZ6uPMSvSz8dPeUtaxLxWM2kf':[],'1H3mPXHFzA8UbvhQVabcDjYw3CPb3djvxs':[],'1DjtUCcQwwzA3GSPA7Kd79PMnri7tLDPYC':[],'1PGEgaPG1XJqmuSj68GouotWeYkCtwo4wm':[],'1PAgpPxnL42Hp3cWxmSfdChPqqGiM8g7zj':[],'1HocPduHmQUJerpdaLG8DnmxvnDCVQwWsa':[]},'accounts_expanded':{},'master_public_key':'756d1fe6ded28d43d4fea902a9695feb785447514d6e6c3bdf369f7c3432fdde4409e4efbffbcf10084d57c5a98d1f34d20ac1f133bdb64fa02abf4f7bde1dfb','use_encryption':False,'seed':'2605aafe50a45bdf2eb155302437e678','accounts':{0:{0:['1DjtUCcQwwzA3GSPA7Kd79PMnri7tLDPYC','1PAgpPxnL42Hp3cWxmSfdChPqqGiM8g7zj','177hEYTccmuYH8u68pYfaLteTxwJrVgvJj','1PGEgaPG1XJqmuSj68GouotWeYkCtwo4wm','15V7MsQK2vjF5aEXLVG11qi2eZPZsXdnYc'],1:['1H3mPXHFzA8UbvhQVabcDjYw3CPb3djvxs','1HocPduHmQUJerpdaLG8DnmxvnDCVQwWsa','1DgrwN2JCDZ6uPMSvSz8dPeUtaxLxWM2kf']}},'seed_version':4}" + wallet_str = "{'addr_history':{'LRLeVkmShS9bXwbFJxXxrMxQgBJb1CxRW4':[],'LPi4d5i97ayJLNvgWdFJHrmnrmkr3BAgdS':[],'LXupCaL8GsoAAC3c6ayRuQiF6oKd6jzvF2':[],'LbGiejb64pNXrjPZfiauVkchFQksBnFjrz':[],'LXxqjQvF2cEDJ58YLFJvPAT8155Q4q6D63':[],'LhVBwnh66BYu2i8tGGG7BpxGrm7Uz9RSMq':[],'LhPe5cGcQiGM4rJg8uRxuDmA43dzQUckM4':[],'Lc2ZerD7r4iMufWnkUFRVoqj8zaUdra9gy':[]},'accounts_expanded':{},'master_public_key':'756d1fe6ded28d43d4fea902a9695feb785447514d6e6c3bdf369f7c3432fdde4409e4efbffbcf10084d57c5a98d1f34d20ac1f133bdb64fa02abf4f7bde1dfb','use_encryption':False,'seed':'2605aafe50a45bdf2eb155302437e678','accounts':{0:{0:['LXxqjQvF2cEDJ58YLFJvPAT8155Q4q6D63','LhPe5cGcQiGM4rJg8uRxuDmA43dzQUckM4','LRLeVkmShS9bXwbFJxXxrMxQgBJb1CxRW4','LhVBwnh66BYu2i8tGGG7BpxGrm7Uz9RSMq','LPi4d5i97ayJLNvgWdFJHrmnrmkr3BAgdS'],1:['LbGiejb64pNXrjPZfiauVkchFQksBnFjrz','Lc2ZerD7r4iMufWnkUFRVoqj8zaUdra9gy','LXupCaL8GsoAAC3c6ayRuQiF6oKd6jzvF2']}},'seed_version':4}" self._upgrade_storage(wallet_str) # TODO pre-2.0 mixed wallets are not split currently #def test_upgrade_from_client_1_9_8_mixed(self): - # wallet_str = "{'addr_history':{'15V7MsQK2vjF5aEXLVG11qi2eZPZsXdnYc':[],'177hEYTccmuYH8u68pYfaLteTxwJrVgvJj':[],'1DjtUCcQwwzA3GSPA7Kd79PMnri7tLDPYC':[],'1PGEgaPG1XJqmuSj68GouotWeYkCtwo4wm':[],'1PAgpPxnL42Hp3cWxmSfdChPqqGiM8g7zj':[],'1DgrwN2JCDZ6uPMSvSz8dPeUtaxLxWM2kf':[],'1H3mPXHFzA8UbvhQVabcDjYw3CPb3djvxs':[],'1HocPduHmQUJerpdaLG8DnmxvnDCVQwWsa':[]},'accounts_expanded':{},'master_public_key':'756d1fe6ded28d43d4fea902a9695feb785447514d6e6c3bdf369f7c3432fdde4409e4efbffbcf10084d57c5a98d1f34d20ac1f133bdb64fa02abf4f7bde1dfb','use_encryption':False,'seed':'2605aafe50a45bdf2eb155302437e678','accounts':{0:{0:['1DjtUCcQwwzA3GSPA7Kd79PMnri7tLDPYC','1PAgpPxnL42Hp3cWxmSfdChPqqGiM8g7zj','177hEYTccmuYH8u68pYfaLteTxwJrVgvJj','1PGEgaPG1XJqmuSj68GouotWeYkCtwo4wm','15V7MsQK2vjF5aEXLVG11qi2eZPZsXdnYc'],1:['1H3mPXHFzA8UbvhQVabcDjYw3CPb3djvxs','1HocPduHmQUJerpdaLG8DnmxvnDCVQwWsa','1DgrwN2JCDZ6uPMSvSz8dPeUtaxLxWM2kf'],'mpk':'756d1fe6ded28d43d4fea902a9695feb785447514d6e6c3bdf369f7c3432fdde4409e4efbffbcf10084d57c5a98d1f34d20ac1f133bdb64fa02abf4f7bde1dfb'}},'imported_keys':{'15CyDgLffJsJgQrhcyooFH4gnVDG82pUrA':'5JyVyXU1LiRXATvRTQvR9Kp8Rx1X84j2x49iGkjSsXipydtByUq','1Exet2BhHsFxKTwhnfdsBMkPYLGvobxuW6':'L3Gi6EQLvYw8gEEUckmqawkevfj9s8hxoQDFveQJGZHTfyWnbk1U','1364Js2VG66BwRdkaoxAaFtdPb1eQgn8Dr':'L2sED74axVXC4H8szBJ4rQJrkfem7UMc6usLCPUoEWxDCFGUaGUM'},'seed_version':4}" + # wallet_str = "{'addr_history':{'LPi4d5i97ayJLNvgWdFJHrmnrmkr3BAgdS':[],'LRLeVkmShS9bXwbFJxXxrMxQgBJb1CxRW4':[],'LXxqjQvF2cEDJ58YLFJvPAT8155Q4q6D63':[],'LhVBwnh66BYu2i8tGGG7BpxGrm7Uz9RSMq':[],'LhPe5cGcQiGM4rJg8uRxuDmA43dzQUckM4':[],'LXupCaL8GsoAAC3c6ayRuQiF6oKd6jzvF2':[],'LbGiejb64pNXrjPZfiauVkchFQksBnFjrz':[],'Lc2ZerD7r4iMufWnkUFRVoqj8zaUdra9gy':[]},'accounts_expanded':{},'master_public_key':'756d1fe6ded28d43d4fea902a9695feb785447514d6e6c3bdf369f7c3432fdde4409e4efbffbcf10084d57c5a98d1f34d20ac1f133bdb64fa02abf4f7bde1dfb','use_encryption':False,'seed':'2605aafe50a45bdf2eb155302437e678','accounts':{0:{0:['LXxqjQvF2cEDJ58YLFJvPAT8155Q4q6D63','LhPe5cGcQiGM4rJg8uRxuDmA43dzQUckM4','LRLeVkmShS9bXwbFJxXxrMxQgBJb1CxRW4','LhVBwnh66BYu2i8tGGG7BpxGrm7Uz9RSMq','LPi4d5i97ayJLNvgWdFJHrmnrmkr3BAgdS'],1:['LbGiejb64pNXrjPZfiauVkchFQksBnFjrz','Lc2ZerD7r4iMufWnkUFRVoqj8zaUdra9gy','LXupCaL8GsoAAC3c6ayRuQiF6oKd6jzvF2'],'mpk':'756d1fe6ded28d43d4fea902a9695feb785447514d6e6c3bdf369f7c3432fdde4409e4efbffbcf10084d57c5a98d1f34d20ac1f133bdb64fa02abf4f7bde1dfb'}},'imported_keys':{'LPRvUteVjy7MwDYro7o6XJ8SzhaYBJQhoM':'6vHESf1YF8tPdqpGyEiNvibJPRZzKsB4ijYsywkUaz3SfUAnidY','LZBc9EVXNXW1aGdrxodATNp9kYeCxufeWb':'T96yXyhXKvujT4sMAPihoJJ2sXNTwDircc7WnT2qqXTdBs433uZ5','LMK1a5LKLkLFCEKukwwTrGxPboNvZjDbcY':'T8hVerMmMsVnq7mkXpEw4krEhXJ5BZNVv7mb4C7LoV8Ni8iywME1'},'seed_version':4}" # self._upgrade_storage(wallet_str, accounts=2) def test_upgrade_from_client_2_0_4_seeded(self): @@ -25,19 +25,19 @@ def test_upgrade_from_client_2_0_4_seeded(self): self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_0_4_importedkeys(self): - wallet_str = '{"accounts":{"/x":{"imported":{"1364Js2VG66BwRdkaoxAaFtdPb1eQgn8Dr":["0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5","L2sED74axVXC4H8szBJ4rQJrkfem7UMc6usLCPUoEWxDCFGUaGUM"],"15CyDgLffJsJgQrhcyooFH4gnVDG82pUrA":["04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2","5JyVyXU1LiRXATvRTQvR9Kp8Rx1X84j2x49iGkjSsXipydtByUq"],"1Exet2BhHsFxKTwhnfdsBMkPYLGvobxuW6":["0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f","L3Gi6EQLvYw8gEEUckmqawkevfj9s8hxoQDFveQJGZHTfyWnbk1U"]}}},"accounts_expanded":{},"use_encryption":false,"wallet_type":"imported"}' + wallet_str = '{"accounts":{"/x":{"imported":{"LMK1a5LKLkLFCEKukwwTrGxPboNvZjDbcY":["0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5","T8hVerMmMsVnq7mkXpEw4krEhXJ5BZNVv7mb4C7LoV8Ni8iywME1"],"LPRvUteVjy7MwDYro7o6XJ8SzhaYBJQhoM":["04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2","6vHESf1YF8tPdqpGyEiNvibJPRZzKsB4ijYsywkUaz3SfUAnidY"],"LZBc9EVXNXW1aGdrxodATNp9kYeCxufeWb":["0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f","T96yXyhXKvujT4sMAPihoJJ2sXNTwDircc7WnT2qqXTdBs433uZ5"]}}},"accounts_expanded":{},"use_encryption":false,"wallet_type":"imported"}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_0_4_watchaddresses(self): - wallet_str = '{"accounts":{"/x":{"imported":{"1DgrwN2JCDZ6uPMSvSz8dPeUtaxLxWM2kf":[null,null],"1H3mPXHFzA8UbvhQVabcDjYw3CPb3djvxs":[null,null],"1HocPduHmQUJerpdaLG8DnmxvnDCVQwWsa":[null,null]}}},"accounts_expanded":{},"wallet_type":"imported"}' + wallet_str = '{"accounts":{"/x":{"imported":{"LXupCaL8GsoAAC3c6ayRuQiF6oKd6jzvF2":[null,null],"LbGiejb64pNXrjPZfiauVkchFQksBnFjrz":[null,null],"Lc2ZerD7r4iMufWnkUFRVoqj8zaUdra9gy":[null,null]}}},"accounts_expanded":{},"wallet_type":"imported"}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_0_4_trezor_singleacc(self): - wallet_str = '''{"accounts":{"0":{"change":["033608f89d381bcb9964df9da428d706d3eb30c14433af8de21bee2601e7392a80","0295c3905730d987ae9a9c09ad85c9c22c28aa414448f9d3450d8afb3da0d78890","038cf10bcf2bd3384f05974295fc83fc4e9cb48c0105995ad86d3ea237edb7e1d1"],"receiving":["020be78fa1a35e44fb1ee3141b40bd8d68330f12f98fdef5ba249b4d8c52a6a1ae","03f23e9a3b5337f322f720f533653349f6e97228d1c4a6feca36d4d1554aa19f74","03d3e7cfde0117561856e6e43d87852480c512910bfd1988c2ff1e6f6d795f7046","02ec56fc0bfe6a1466a783737919edbe83c8907af29a5ae672919ffcb1bb96303f","031b1d151f6584f9926614a7c335ee61606ff7a9769ca6e175ad99f9c7b5e9fb4d","03d782be0ace089e02529029b08ca9107b0e58302306de30bd9f9a3a1ed40c3717","0325784a4290eeeea1f99a928cf6c75c33417659dbd50a3a2850136dc3138ba631","035b7c1176926a54cdeb0342df5ecc7bb3fe1820fce99491fb50c091e3093f200f","02e0a2d615bff26a57754afa0e8ac8b692a79b399f6d04647398f377dcac4116be","026c7cee5bce1ae9e2fa930001ece81c35442a461fc9ef1266ac3d41b9f13e3bd5","0217b1d5066708e0cdaee99087c407db684131e34578adc7800dc66f329576c457","03ec0ed891b0ead00f1eaca7a4736d6816e348731d995bd4e77acbc8c582f68429","028cb4c682dde9692de47f71f3b16755cc440d722b84eed68db2b3d80bce83d50a","03d5d770a58d32b5d59b12861bbda37560fe7b789181b3349abf56223ea61b39c4","0250b6aee8338ac0497f2106b0ed014f5a2419c7bf429eb2b17a70bec77e6ff482","02565da9be6fc66a1e354638dcd8a4244e8733f38599c91c4f1ab0fb8d5d94fd2f","02e6c88509ff676b686afc2326370684bbc6edc0b31e09f312df4f7a17fe379e31","02224fef0921e61adcb2cd14ef45dbe4b859f1fcdc62eba26c6a7ce386c0a8f4b1","034c63da9c2a20132d9fd1088028de18f7ccd72458f9eb07a72452bd9994d28b1f","032bfe2fc88a55e19ba2338155b79e67b7d061d5fd1844bc8edc1808d998f8ba2c"],"xpub":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9"}},"accounts_expanded":{},"labels":{"0":"Main account"},"master_public_keys":{"x/0'":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9","x/1'":"xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG"},"next_account2":["1","xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG","03571f041921078b153a496638d703dfd1cee75e73c42653bbe0650ab6168d6a5b","18i2zqeCh6Gjto81KvVaeSM8YBUAkmgjRG"],"wallet_type":"trezor"}''' + wallet_str = '''{"accounts":{"0":{"change":["033608f89d381bcb9964df9da428d706d3eb30c14433af8de21bee2601e7392a80","0295c3905730d987ae9a9c09ad85c9c22c28aa414448f9d3450d8afb3da0d78890","038cf10bcf2bd3384f05974295fc83fc4e9cb48c0105995ad86d3ea237edb7e1d1"],"receiving":["020be78fa1a35e44fb1ee3141b40bd8d68330f12f98fdef5ba249b4d8c52a6a1ae","03f23e9a3b5337f322f720f533653349f6e97228d1c4a6feca36d4d1554aa19f74","03d3e7cfde0117561856e6e43d87852480c512910bfd1988c2ff1e6f6d795f7046","02ec56fc0bfe6a1466a783737919edbe83c8907af29a5ae672919ffcb1bb96303f","031b1d151f6584f9926614a7c335ee61606ff7a9769ca6e175ad99f9c7b5e9fb4d","03d782be0ace089e02529029b08ca9107b0e58302306de30bd9f9a3a1ed40c3717","0325784a4290eeeea1f99a928cf6c75c33417659dbd50a3a2850136dc3138ba631","035b7c1176926a54cdeb0342df5ecc7bb3fe1820fce99491fb50c091e3093f200f","02e0a2d615bff26a57754afa0e8ac8b692a79b399f6d04647398f377dcac4116be","026c7cee5bce1ae9e2fa930001ece81c35442a461fc9ef1266ac3d41b9f13e3bd5","0217b1d5066708e0cdaee99087c407db684131e34578adc7800dc66f329576c457","03ec0ed891b0ead00f1eaca7a4736d6816e348731d995bd4e77acbc8c582f68429","028cb4c682dde9692de47f71f3b16755cc440d722b84eed68db2b3d80bce83d50a","03d5d770a58d32b5d59b12861bbda37560fe7b789181b3349abf56223ea61b39c4","0250b6aee8338ac0497f2106b0ed014f5a2419c7bf429eb2b17a70bec77e6ff482","02565da9be6fc66a1e354638dcd8a4244e8733f38599c91c4f1ab0fb8d5d94fd2f","02e6c88509ff676b686afc2326370684bbc6edc0b31e09f312df4f7a17fe379e31","02224fef0921e61adcb2cd14ef45dbe4b859f1fcdc62eba26c6a7ce386c0a8f4b1","034c63da9c2a20132d9fd1088028de18f7ccd72458f9eb07a72452bd9994d28b1f","032bfe2fc88a55e19ba2338155b79e67b7d061d5fd1844bc8edc1808d998f8ba2c"],"xpub":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9"}},"accounts_expanded":{},"labels":{"0":"Main account"},"master_public_keys":{"x/0'":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9","x/1'":"xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG"},"next_account2":["1","xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG","03571f041921078b153a496638d703dfd1cee75e73c42653bbe0650ab6168d6a5b","LSvzG3x2mkWo9bpAW4UsvTQtkPqSoUkJop"],"wallet_type":"trezor"}''' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_0_4_trezor_multiacc(self): - wallet_str = '''{"accounts":{"0":{"change":["03143bc04f007c454e03caf9d59b61e27f527b5e6723e167b50197ce45e2071902","03157710459a8213a79060e2f2003fe0eb7a7ed173ac3f846309de52269dd44740","028ec4bbbf4ac9edfabb704bd82acb0840f2166312929ce01af2b2e99059b16dee"],"receiving":["03d27c0f5594d8df0616d64a735c909098eb867d01c6f1588f04ca2cf353837ec0","024d299f21e9ee9cc3eb425d04f45110eff46e45abcab24a3e594645860518fb97","03f6bc650e5f118ab4a63359a9cde4ab8382fe16e7d1b36b0a459145a79bef674b","028bed00a2fbd03f1ff43e0150ec1018458f7b39f3e4e602e089b1f47f8f607136","02108b15014d53f2e4e1b5b2d8f5eaf82006bbc4f273dbfbaef91eff08f9d10ea5","02a9a59a529818f3ba7a37ebe34454eac2bcbe4da0e8566b13f369e03bb020c4c4","023fde4ecf7fbdffb679d92f58381066cf2d840d34cb2d8bef63f7c5182d278d53","02ad8bf6dc0ff3c39bd20297d77fbd62073d7bf2fa44bf716cdd026db0819bb2b4","029c8352118800beaef1f3fa9c12afe30d329e7544bea9b136b717b88c24d95d92","02c42c251392674e2c2768ccd6224e04298bd5479436f02e9867ecc288dd2eb066","0316f3c82d9fce97e267b82147d56a4b170d39e6cf01bfaff6c2ae6bcc79a14447","0398554ee8e333061391b3e866505bbc5e130304ae09b198444bcd31c4ba7846ea","02e69d21aadb502e9bd93c5536866eff8ca6b19664545ccc4e77f3508e0cbe2027","0270fb334407a53a23ad449389e2cb055fae5017ca4d79ec8e082038db2d749c50","03d91a8f47453f9da51e0194e3aacff88bf79a625df82ceee73c71f3a7099a5459","0306b2d3fd06c4673cc90374b7db0c152ba7960be382440cecc4cdad7642e0537c","028020dd6062f080e1e2b49ca629faa1407978adab13b74875a9de93b16accf804","03907061c5f6fde367aafe27e1d53b39ff9c2babffe8ab7cf8c3023acba5c39736","029749462dba9af034455f5e0f170aac67fe9365ce7126092b4d24ced979b5381f","02f001d35308833881b3440670d25072256474c6c4061daf729055bf9563134105"],"xpub":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y"},"1":{"change":["03b0df486b4e1baa03ad565622820d692089b059c8f9fefa3567c3fa26d0cbaa34","0294c76c062c865873dccab84d51682f880e0197b64789c61bff85e1be2506925e","036f900d0c6bafbbcac0fbc95bed44954007faa182655cf69dc84d50c22e6edce8"],"receiving":["02106878f6aefd9a81e1ca4a5f30ea0e1851aa36404fb62d19bd2325e180112b58","039e95f369e8d65aa7a7bf6a5d7d3259b827c1549c77c9b502b75a18f7708a9aa9","0273197861097be131542f8b7e03bc912934da51bc957d425be5bc7c1b69fb44ec","02b4c829b6a20815c5e1eef7ffd5d55c99505a7afeac5135ec2c97cfaae3483604","0312b1285272f1005c5834de2eec830ce9f9163c842d728c3921ae790716d8503f","0354059948c709c777a49a37e150271a3377f7aaee17798253d5240e4119f2a1c6","03800d87cc3878912d22a42a79db7ddbff3efec727d29ae1c0165730e5314483cd","03cafa35ad9adb41cff39e3bc2e0592d88c8b91981e73f068397e6c863c42c7b00","028668f734a4927e03621e319ab385919e891d248c86aea07ab922492d3d414ad3","02e42d46823893978ae7be9e032be21ce3e613cecb5ffe687b534795f90dc8ef85","03b86914af797e7b68940bc4ee2dec134036781a8e23ffaf4189ca7637e0afe898","021221ae9be51a9747aa7ebc2213a42a2364ce790ee86255277dc5f9beeb0bf6b4","03c8d58183f5d8102f8eb5f6db0f60add0a51ec6737097c46fc8a6b7c840d7571f","0304de0806b299cef4be3a162bac78f811d4adacc6a229ffdaeb7333bce72d88ff","03e08262e18616a3a9b9aecbfb8a860ccee147820a3c60050695ef72ff2cedc4a7","02caf4d61bb5deec29a39e5a1cc6d5987ec71d61d57c57bb5c2a47dd9266130bec","0252d429002d9c06f0befbef6c389bdd021969b416dd83d220394e414bd5d83c0a","024e23ce58533163df3e1d5766295144beb8f9729b1ac41e80ba485f39c483dfe6","026de9e7e6b11fbecd88b7b49915b5df64d672ef900aa043a8cac3bc79eb414089","02aaac08fc100014ec692efa0f3b408bf741e1dc68ebe28ce41837662810f40986","03e0d2b426705dcc5cb62c6113b10153f10624c926a3fe86142fd9020e7d6a2129"],"xpub":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH"}},"accounts_expanded":{},"addr_history":{"12vWPzJtGLKRZjnYVtWSufjRuoE8pHLpmi":[["a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837",490002]]},"labels":{"0":"Main account","1":"acc1"},"master_public_keys":{"x/0'":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y","x/1'":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH","x/2'":"xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa"},"next_account2":["2","xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa","031b68cff8114df7677c4fe80619b701ea966428ecbeba55c9224cd8149cc5f05e","1JGek3B8b3Nt3p39x27QK5UnFtNnZ2ZdGJ"],"transactions":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":"01000000018394dfaba83ca6f510f622ecf95b445e856eab3193cb0dad53e1262841149d5f00000000da0047304402207761cdbf009c0bd3864c6a457288cadfa565601f782cc09f0046926d54a1b68b022060b73a7babb5dfd5188c4697cfcab6c15c4dd3de8507d39722e3a6b728f697dc01483045022100a540921229b02c4cfbf2d57222a455cbb4a5bd09bff063749fb71292f720850a02204dd18369213ec4cb033cbf222e8439eb8a9dd0a1b864bfeefa44cfe0c0066ee401475221025966a0193194a071e71501f9f8987111f7364bd8105a006f908b1f743da8d353210397c83f4963bdf333f129ab8000d89536bfea0971fc7578fdff5c2104b296c4d252aefdffffff0288130000000000001976a9141516b5e9653ab1fb09180186077fc2d7dfa07e5788aca0ba09000000000017a9148132c19d6b9abba9ec978ca5269d577ae104541e8700000000"},"verified_tx3":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":[490002,1508090436,607]},"wallet_type":"trezor"}''' + wallet_str = '''{"accounts":{"0":{"change":["03143bc04f007c454e03caf9d59b61e27f527b5e6723e167b50197ce45e2071902","03157710459a8213a79060e2f2003fe0eb7a7ed173ac3f846309de52269dd44740","028ec4bbbf4ac9edfabb704bd82acb0840f2166312929ce01af2b2e99059b16dee"],"receiving":["03d27c0f5594d8df0616d64a735c909098eb867d01c6f1588f04ca2cf353837ec0","024d299f21e9ee9cc3eb425d04f45110eff46e45abcab24a3e594645860518fb97","03f6bc650e5f118ab4a63359a9cde4ab8382fe16e7d1b36b0a459145a79bef674b","028bed00a2fbd03f1ff43e0150ec1018458f7b39f3e4e602e089b1f47f8f607136","02108b15014d53f2e4e1b5b2d8f5eaf82006bbc4f273dbfbaef91eff08f9d10ea5","02a9a59a529818f3ba7a37ebe34454eac2bcbe4da0e8566b13f369e03bb020c4c4","023fde4ecf7fbdffb679d92f58381066cf2d840d34cb2d8bef63f7c5182d278d53","02ad8bf6dc0ff3c39bd20297d77fbd62073d7bf2fa44bf716cdd026db0819bb2b4","029c8352118800beaef1f3fa9c12afe30d329e7544bea9b136b717b88c24d95d92","02c42c251392674e2c2768ccd6224e04298bd5479436f02e9867ecc288dd2eb066","0316f3c82d9fce97e267b82147d56a4b170d39e6cf01bfaff6c2ae6bcc79a14447","0398554ee8e333061391b3e866505bbc5e130304ae09b198444bcd31c4ba7846ea","02e69d21aadb502e9bd93c5536866eff8ca6b19664545ccc4e77f3508e0cbe2027","0270fb334407a53a23ad449389e2cb055fae5017ca4d79ec8e082038db2d749c50","03d91a8f47453f9da51e0194e3aacff88bf79a625df82ceee73c71f3a7099a5459","0306b2d3fd06c4673cc90374b7db0c152ba7960be382440cecc4cdad7642e0537c","028020dd6062f080e1e2b49ca629faa1407978adab13b74875a9de93b16accf804","03907061c5f6fde367aafe27e1d53b39ff9c2babffe8ab7cf8c3023acba5c39736","029749462dba9af034455f5e0f170aac67fe9365ce7126092b4d24ced979b5381f","02f001d35308833881b3440670d25072256474c6c4061daf729055bf9563134105"],"xpub":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y"},"1":{"change":["03b0df486b4e1baa03ad565622820d692089b059c8f9fefa3567c3fa26d0cbaa34","0294c76c062c865873dccab84d51682f880e0197b64789c61bff85e1be2506925e","036f900d0c6bafbbcac0fbc95bed44954007faa182655cf69dc84d50c22e6edce8"],"receiving":["02106878f6aefd9a81e1ca4a5f30ea0e1851aa36404fb62d19bd2325e180112b58","039e95f369e8d65aa7a7bf6a5d7d3259b827c1549c77c9b502b75a18f7708a9aa9","0273197861097be131542f8b7e03bc912934da51bc957d425be5bc7c1b69fb44ec","02b4c829b6a20815c5e1eef7ffd5d55c99505a7afeac5135ec2c97cfaae3483604","0312b1285272f1005c5834de2eec830ce9f9163c842d728c3921ae790716d8503f","0354059948c709c777a49a37e150271a3377f7aaee17798253d5240e4119f2a1c6","03800d87cc3878912d22a42a79db7ddbff3efec727d29ae1c0165730e5314483cd","03cafa35ad9adb41cff39e3bc2e0592d88c8b91981e73f068397e6c863c42c7b00","028668f734a4927e03621e319ab385919e891d248c86aea07ab922492d3d414ad3","02e42d46823893978ae7be9e032be21ce3e613cecb5ffe687b534795f90dc8ef85","03b86914af797e7b68940bc4ee2dec134036781a8e23ffaf4189ca7637e0afe898","021221ae9be51a9747aa7ebc2213a42a2364ce790ee86255277dc5f9beeb0bf6b4","03c8d58183f5d8102f8eb5f6db0f60add0a51ec6737097c46fc8a6b7c840d7571f","0304de0806b299cef4be3a162bac78f811d4adacc6a229ffdaeb7333bce72d88ff","03e08262e18616a3a9b9aecbfb8a860ccee147820a3c60050695ef72ff2cedc4a7","02caf4d61bb5deec29a39e5a1cc6d5987ec71d61d57c57bb5c2a47dd9266130bec","0252d429002d9c06f0befbef6c389bdd021969b416dd83d220394e414bd5d83c0a","024e23ce58533163df3e1d5766295144beb8f9729b1ac41e80ba485f39c483dfe6","026de9e7e6b11fbecd88b7b49915b5df64d672ef900aa043a8cac3bc79eb414089","02aaac08fc100014ec692efa0f3b408bf741e1dc68ebe28ce41837662810f40986","03e0d2b426705dcc5cb62c6113b10153f10624c926a3fe86142fd9020e7d6a2129"],"xpub":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH"}},"accounts_expanded":{},"addr_history":{"LM9TfCciLzZUpYUhg2VkBgoC81bQwrav4C":[["a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837",490002]]},"labels":{"0":"Main account","1":"acc1"},"master_public_keys":{"x/0'":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y","x/1'":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH","x/2'":"xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa"},"next_account2":["2","xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa","031b68cff8114df7677c4fe80619b701ea966428ecbeba55c9224cd8149cc5f05e","LcVc1FUxfhcwJcjK8A6hb6YYU6k4e4MLdT"],"transactions":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":"01000000018394dfaba83ca6f510f622ecf95b445e856eab3193cb0dad53e1262841149d5f00000000da0047304402207761cdbf009c0bd3864c6a457288cadfa565601f782cc09f0046926d54a1b68b022060b73a7babb5dfd5188c4697cfcab6c15c4dd3de8507d39722e3a6b728f697dc01483045022100a540921229b02c4cfbf2d57222a455cbb4a5bd09bff063749fb71292f720850a02204dd18369213ec4cb033cbf222e8439eb8a9dd0a1b864bfeefa44cfe0c0066ee401475221025966a0193194a071e71501f9f8987111f7364bd8105a006f908b1f743da8d353210397c83f4963bdf333f129ab8000d89536bfea0971fc7578fdff5c2104b296c4d252aefdffffff0288130000000000001976a9141516b5e9653ab1fb09180186077fc2d7dfa07e5788aca0ba09000000000017a9148132c19d6b9abba9ec978ca5269d577ae104541e8700000000"},"verified_tx3":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":[490002,1508090436,607]},"wallet_type":"trezor"}''' self._upgrade_storage(wallet_str, accounts=2) def test_upgrade_from_client_2_0_4_multisig(self): @@ -49,19 +49,19 @@ def test_upgrade_from_client_2_1_1_seeded(self): self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_1_1_importedkeys(self): - wallet_str = '{"accounts":{"/x":{"imported":{"1364Js2VG66BwRdkaoxAaFtdPb1eQgn8Dr":["0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5","L2sED74axVXC4H8szBJ4rQJrkfem7UMc6usLCPUoEWxDCFGUaGUM"],"15CyDgLffJsJgQrhcyooFH4gnVDG82pUrA":["04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2","5JyVyXU1LiRXATvRTQvR9Kp8Rx1X84j2x49iGkjSsXipydtByUq"],"1Exet2BhHsFxKTwhnfdsBMkPYLGvobxuW6":["0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f","L3Gi6EQLvYw8gEEUckmqawkevfj9s8hxoQDFveQJGZHTfyWnbk1U"]}}},"accounts_expanded":{},"pruned_txo":{},"transactions":{},"txi":{},"txo":{},"use_encryption":false,"wallet_type":"imported"}' + wallet_str = '{"accounts":{"/x":{"imported":{"LMK1a5LKLkLFCEKukwwTrGxPboNvZjDbcY":["0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5","T8hVerMmMsVnq7mkXpEw4krEhXJ5BZNVv7mb4C7LoV8Ni8iywME1"],"LPRvUteVjy7MwDYro7o6XJ8SzhaYBJQhoM":["04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2","6vHESf1YF8tPdqpGyEiNvibJPRZzKsB4ijYsywkUaz3SfUAnidY"],"LZBc9EVXNXW1aGdrxodATNp9kYeCxufeWb":["0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f","T96yXyhXKvujT4sMAPihoJJ2sXNTwDircc7WnT2qqXTdBs433uZ5"]}}},"accounts_expanded":{},"pruned_txo":{},"transactions":{},"txi":{},"txo":{},"use_encryption":false,"wallet_type":"imported"}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_1_1_watchaddresses(self): - wallet_str = '{"accounts":{"/x":{"imported":{"1DgrwN2JCDZ6uPMSvSz8dPeUtaxLxWM2kf":[null,null],"1H3mPXHFzA8UbvhQVabcDjYw3CPb3djvxs":[null,null],"1HocPduHmQUJerpdaLG8DnmxvnDCVQwWsa":[null,null]}}},"accounts_expanded":{},"pruned_txo":{},"transactions":{},"txi":{},"txo":{},"wallet_type":"imported"}' + wallet_str = '{"accounts":{"/x":{"imported":{"LXupCaL8GsoAAC3c6ayRuQiF6oKd6jzvF2":[null,null],"LbGiejb64pNXrjPZfiauVkchFQksBnFjrz":[null,null],"Lc2ZerD7r4iMufWnkUFRVoqj8zaUdra9gy":[null,null]}}},"accounts_expanded":{},"pruned_txo":{},"transactions":{},"txi":{},"txo":{},"wallet_type":"imported"}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_1_1_trezor_singleacc(self): - wallet_str = '''{"accounts":{"0":{"change":["033608f89d381bcb9964df9da428d706d3eb30c14433af8de21bee2601e7392a80","0295c3905730d987ae9a9c09ad85c9c22c28aa414448f9d3450d8afb3da0d78890","038cf10bcf2bd3384f05974295fc83fc4e9cb48c0105995ad86d3ea237edb7e1d1"],"receiving":["020be78fa1a35e44fb1ee3141b40bd8d68330f12f98fdef5ba249b4d8c52a6a1ae","03f23e9a3b5337f322f720f533653349f6e97228d1c4a6feca36d4d1554aa19f74","03d3e7cfde0117561856e6e43d87852480c512910bfd1988c2ff1e6f6d795f7046","02ec56fc0bfe6a1466a783737919edbe83c8907af29a5ae672919ffcb1bb96303f","031b1d151f6584f9926614a7c335ee61606ff7a9769ca6e175ad99f9c7b5e9fb4d","03d782be0ace089e02529029b08ca9107b0e58302306de30bd9f9a3a1ed40c3717","0325784a4290eeeea1f99a928cf6c75c33417659dbd50a3a2850136dc3138ba631","035b7c1176926a54cdeb0342df5ecc7bb3fe1820fce99491fb50c091e3093f200f","02e0a2d615bff26a57754afa0e8ac8b692a79b399f6d04647398f377dcac4116be","026c7cee5bce1ae9e2fa930001ece81c35442a461fc9ef1266ac3d41b9f13e3bd5","0217b1d5066708e0cdaee99087c407db684131e34578adc7800dc66f329576c457","03ec0ed891b0ead00f1eaca7a4736d6816e348731d995bd4e77acbc8c582f68429","028cb4c682dde9692de47f71f3b16755cc440d722b84eed68db2b3d80bce83d50a","03d5d770a58d32b5d59b12861bbda37560fe7b789181b3349abf56223ea61b39c4","0250b6aee8338ac0497f2106b0ed014f5a2419c7bf429eb2b17a70bec77e6ff482","02565da9be6fc66a1e354638dcd8a4244e8733f38599c91c4f1ab0fb8d5d94fd2f","02e6c88509ff676b686afc2326370684bbc6edc0b31e09f312df4f7a17fe379e31","02224fef0921e61adcb2cd14ef45dbe4b859f1fcdc62eba26c6a7ce386c0a8f4b1","034c63da9c2a20132d9fd1088028de18f7ccd72458f9eb07a72452bd9994d28b1f","032bfe2fc88a55e19ba2338155b79e67b7d061d5fd1844bc8edc1808d998f8ba2c"],"xpub":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9"}},"accounts_expanded":{},"labels":{"0":"Main account"},"master_public_keys":{"x/0'":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9","x/1'":"xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG"},"next_account2":["1","xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG","03571f041921078b153a496638d703dfd1cee75e73c42653bbe0650ab6168d6a5b","18i2zqeCh6Gjto81KvVaeSM8YBUAkmgjRG"],"pruned_txo":{},"transactions":{},"txi":{},"txo":{},"wallet_type":"trezor"}''' + wallet_str = '''{"accounts":{"0":{"change":["033608f89d381bcb9964df9da428d706d3eb30c14433af8de21bee2601e7392a80","0295c3905730d987ae9a9c09ad85c9c22c28aa414448f9d3450d8afb3da0d78890","038cf10bcf2bd3384f05974295fc83fc4e9cb48c0105995ad86d3ea237edb7e1d1"],"receiving":["020be78fa1a35e44fb1ee3141b40bd8d68330f12f98fdef5ba249b4d8c52a6a1ae","03f23e9a3b5337f322f720f533653349f6e97228d1c4a6feca36d4d1554aa19f74","03d3e7cfde0117561856e6e43d87852480c512910bfd1988c2ff1e6f6d795f7046","02ec56fc0bfe6a1466a783737919edbe83c8907af29a5ae672919ffcb1bb96303f","031b1d151f6584f9926614a7c335ee61606ff7a9769ca6e175ad99f9c7b5e9fb4d","03d782be0ace089e02529029b08ca9107b0e58302306de30bd9f9a3a1ed40c3717","0325784a4290eeeea1f99a928cf6c75c33417659dbd50a3a2850136dc3138ba631","035b7c1176926a54cdeb0342df5ecc7bb3fe1820fce99491fb50c091e3093f200f","02e0a2d615bff26a57754afa0e8ac8b692a79b399f6d04647398f377dcac4116be","026c7cee5bce1ae9e2fa930001ece81c35442a461fc9ef1266ac3d41b9f13e3bd5","0217b1d5066708e0cdaee99087c407db684131e34578adc7800dc66f329576c457","03ec0ed891b0ead00f1eaca7a4736d6816e348731d995bd4e77acbc8c582f68429","028cb4c682dde9692de47f71f3b16755cc440d722b84eed68db2b3d80bce83d50a","03d5d770a58d32b5d59b12861bbda37560fe7b789181b3349abf56223ea61b39c4","0250b6aee8338ac0497f2106b0ed014f5a2419c7bf429eb2b17a70bec77e6ff482","02565da9be6fc66a1e354638dcd8a4244e8733f38599c91c4f1ab0fb8d5d94fd2f","02e6c88509ff676b686afc2326370684bbc6edc0b31e09f312df4f7a17fe379e31","02224fef0921e61adcb2cd14ef45dbe4b859f1fcdc62eba26c6a7ce386c0a8f4b1","034c63da9c2a20132d9fd1088028de18f7ccd72458f9eb07a72452bd9994d28b1f","032bfe2fc88a55e19ba2338155b79e67b7d061d5fd1844bc8edc1808d998f8ba2c"],"xpub":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9"}},"accounts_expanded":{},"labels":{"0":"Main account"},"master_public_keys":{"x/0'":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9","x/1'":"xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG"},"next_account2":["1","xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG","03571f041921078b153a496638d703dfd1cee75e73c42653bbe0650ab6168d6a5b","LSvzG3x2mkWo9bpAW4UsvTQtkPqSoUkJop"],"pruned_txo":{},"transactions":{},"txi":{},"txo":{},"wallet_type":"trezor"}''' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_1_1_trezor_multiacc(self): - wallet_str = '''{"accounts":{"0":{"change":["03143bc04f007c454e03caf9d59b61e27f527b5e6723e167b50197ce45e2071902","03157710459a8213a79060e2f2003fe0eb7a7ed173ac3f846309de52269dd44740","028ec4bbbf4ac9edfabb704bd82acb0840f2166312929ce01af2b2e99059b16dee"],"receiving":["03d27c0f5594d8df0616d64a735c909098eb867d01c6f1588f04ca2cf353837ec0","024d299f21e9ee9cc3eb425d04f45110eff46e45abcab24a3e594645860518fb97","03f6bc650e5f118ab4a63359a9cde4ab8382fe16e7d1b36b0a459145a79bef674b","028bed00a2fbd03f1ff43e0150ec1018458f7b39f3e4e602e089b1f47f8f607136","02108b15014d53f2e4e1b5b2d8f5eaf82006bbc4f273dbfbaef91eff08f9d10ea5","02a9a59a529818f3ba7a37ebe34454eac2bcbe4da0e8566b13f369e03bb020c4c4","023fde4ecf7fbdffb679d92f58381066cf2d840d34cb2d8bef63f7c5182d278d53","02ad8bf6dc0ff3c39bd20297d77fbd62073d7bf2fa44bf716cdd026db0819bb2b4","029c8352118800beaef1f3fa9c12afe30d329e7544bea9b136b717b88c24d95d92","02c42c251392674e2c2768ccd6224e04298bd5479436f02e9867ecc288dd2eb066","0316f3c82d9fce97e267b82147d56a4b170d39e6cf01bfaff6c2ae6bcc79a14447","0398554ee8e333061391b3e866505bbc5e130304ae09b198444bcd31c4ba7846ea","02e69d21aadb502e9bd93c5536866eff8ca6b19664545ccc4e77f3508e0cbe2027","0270fb334407a53a23ad449389e2cb055fae5017ca4d79ec8e082038db2d749c50","03d91a8f47453f9da51e0194e3aacff88bf79a625df82ceee73c71f3a7099a5459","0306b2d3fd06c4673cc90374b7db0c152ba7960be382440cecc4cdad7642e0537c","028020dd6062f080e1e2b49ca629faa1407978adab13b74875a9de93b16accf804","03907061c5f6fde367aafe27e1d53b39ff9c2babffe8ab7cf8c3023acba5c39736","029749462dba9af034455f5e0f170aac67fe9365ce7126092b4d24ced979b5381f","02f001d35308833881b3440670d25072256474c6c4061daf729055bf9563134105"],"xpub":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y"},"1":{"change":["03b0df486b4e1baa03ad565622820d692089b059c8f9fefa3567c3fa26d0cbaa34","0294c76c062c865873dccab84d51682f880e0197b64789c61bff85e1be2506925e","036f900d0c6bafbbcac0fbc95bed44954007faa182655cf69dc84d50c22e6edce8"],"receiving":["02106878f6aefd9a81e1ca4a5f30ea0e1851aa36404fb62d19bd2325e180112b58","039e95f369e8d65aa7a7bf6a5d7d3259b827c1549c77c9b502b75a18f7708a9aa9","0273197861097be131542f8b7e03bc912934da51bc957d425be5bc7c1b69fb44ec","02b4c829b6a20815c5e1eef7ffd5d55c99505a7afeac5135ec2c97cfaae3483604","0312b1285272f1005c5834de2eec830ce9f9163c842d728c3921ae790716d8503f","0354059948c709c777a49a37e150271a3377f7aaee17798253d5240e4119f2a1c6","03800d87cc3878912d22a42a79db7ddbff3efec727d29ae1c0165730e5314483cd","03cafa35ad9adb41cff39e3bc2e0592d88c8b91981e73f068397e6c863c42c7b00","028668f734a4927e03621e319ab385919e891d248c86aea07ab922492d3d414ad3","02e42d46823893978ae7be9e032be21ce3e613cecb5ffe687b534795f90dc8ef85","03b86914af797e7b68940bc4ee2dec134036781a8e23ffaf4189ca7637e0afe898","021221ae9be51a9747aa7ebc2213a42a2364ce790ee86255277dc5f9beeb0bf6b4","03c8d58183f5d8102f8eb5f6db0f60add0a51ec6737097c46fc8a6b7c840d7571f","0304de0806b299cef4be3a162bac78f811d4adacc6a229ffdaeb7333bce72d88ff","03e08262e18616a3a9b9aecbfb8a860ccee147820a3c60050695ef72ff2cedc4a7","02caf4d61bb5deec29a39e5a1cc6d5987ec71d61d57c57bb5c2a47dd9266130bec","0252d429002d9c06f0befbef6c389bdd021969b416dd83d220394e414bd5d83c0a","024e23ce58533163df3e1d5766295144beb8f9729b1ac41e80ba485f39c483dfe6","026de9e7e6b11fbecd88b7b49915b5df64d672ef900aa043a8cac3bc79eb414089","02aaac08fc100014ec692efa0f3b408bf741e1dc68ebe28ce41837662810f40986","03e0d2b426705dcc5cb62c6113b10153f10624c926a3fe86142fd9020e7d6a2129"],"xpub":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH"}},"accounts_expanded":{},"addr_history":{"12sQvVXgdoy2QDorLgr2t6J8JVzygBGueC":[],"12vWPzJtGLKRZjnYVtWSufjRuoE8pHLpmi":[["a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837",490002]],"146j6RMbWpKYEaGTdWVza3if3bnCD9Maiz":[],"14Co2CRVu67XLCGrD4RVVpadtoXcodUUWM":[],"15KDqFhdXP6Zn4XtJVVVgahJ7chw9jGhvQ":[],"15zoPN5rVKDCsKnZUkTYJWFv4gLdYTat8S":[],"17YQXYHoDqcpd7GvWN9BYK8FnDryhYbKyH":[],"18TKpsznSha4VHLzpVatnrEBdtWkoQSyGw":[],"1BngGArwhpzWjCREXYRS1uhUGszCTe7vqb":[],"1E9wSjSWkFJp3HUaUzUF9eWpCkUZnsNCuX":[],"1ES8hmtgXFLRex71CZHu85cLFRYDczeTZ":[],"1FdV7zK6RdRAKqg3ccGHGK51nJLUwpuBFp":[],"1GjFaGxzqK12N2F7Ao49k7ZvMApCmK7Enk":[],"1HkHDREiY3m9UCxaSAZEn1troa3eHWaiQD":[],"1J2NdSfFiQLhkHs2DVyBmB47Mk65rfrGPp":[],"1KnQX5D5Tv2u5CyWpuXaeM8CvuuVAmfwRz":[],"1Le4rXQD4kMGsoet4EH8VGzt5VZjdHBpid":[],"1LpV3F25jiNWV8N2RPP1cnKGgpjZh2r8xu":[],"1Mdq8bVFSBfaeH5vjaXGjiPiy6qPVtdfUo":[],"1MrA1WS4iWcTjLrnSqNNpXzSq5W92Bttbj":[],"1NFhYYBh1zDGdnqD1Avo9gaVV8LvnAH6iv":[],"1NMkEhuUYsxTCkfq9zxxCTozKNNqjHeKeC":[],"1NTRF8Y7Mu57dQ9TFwUA98EdmzbAamtLYe":[],"1rDkHFozR7kC7MxRiakx3mBeU1Fu6BRbG":[]},"labels":{},"master_public_keys":{"x/0'":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y","x/1'":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH","x/2'":"xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa"},"next_account2":["2","xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa","031b68cff8114df7677c4fe80619b701ea966428ecbeba55c9224cd8149cc5f05e","1JGek3B8b3Nt3p39x27QK5UnFtNnZ2ZdGJ"],"pruned_txo":{},"transactions":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":"01000000018394dfaba83ca6f510f622ecf95b445e856eab3193cb0dad53e1262841149d5f00000000da0047304402207761cdbf009c0bd3864c6a457288cadfa565601f782cc09f0046926d54a1b68b022060b73a7babb5dfd5188c4697cfcab6c15c4dd3de8507d39722e3a6b728f697dc01483045022100a540921229b02c4cfbf2d57222a455cbb4a5bd09bff063749fb71292f720850a02204dd18369213ec4cb033cbf222e8439eb8a9dd0a1b864bfeefa44cfe0c0066ee401475221025966a0193194a071e71501f9f8987111f7364bd8105a006f908b1f743da8d353210397c83f4963bdf333f129ab8000d89536bfea0971fc7578fdff5c2104b296c4d252aefdffffff0288130000000000001976a9141516b5e9653ab1fb09180186077fc2d7dfa07e5788aca0ba09000000000017a9148132c19d6b9abba9ec978ca5269d577ae104541e8700000000"},"txi":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":{}},"txo":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":{"12vWPzJtGLKRZjnYVtWSufjRuoE8pHLpmi":[[0,5000,false]]}},"verified_tx3":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":[490002,1508090436,607]},"wallet_type":"trezor"}''' + wallet_str = '''{"accounts":{"0":{"change":["03143bc04f007c454e03caf9d59b61e27f527b5e6723e167b50197ce45e2071902","03157710459a8213a79060e2f2003fe0eb7a7ed173ac3f846309de52269dd44740","028ec4bbbf4ac9edfabb704bd82acb0840f2166312929ce01af2b2e99059b16dee"],"receiving":["03d27c0f5594d8df0616d64a735c909098eb867d01c6f1588f04ca2cf353837ec0","024d299f21e9ee9cc3eb425d04f45110eff46e45abcab24a3e594645860518fb97","03f6bc650e5f118ab4a63359a9cde4ab8382fe16e7d1b36b0a459145a79bef674b","028bed00a2fbd03f1ff43e0150ec1018458f7b39f3e4e602e089b1f47f8f607136","02108b15014d53f2e4e1b5b2d8f5eaf82006bbc4f273dbfbaef91eff08f9d10ea5","02a9a59a529818f3ba7a37ebe34454eac2bcbe4da0e8566b13f369e03bb020c4c4","023fde4ecf7fbdffb679d92f58381066cf2d840d34cb2d8bef63f7c5182d278d53","02ad8bf6dc0ff3c39bd20297d77fbd62073d7bf2fa44bf716cdd026db0819bb2b4","029c8352118800beaef1f3fa9c12afe30d329e7544bea9b136b717b88c24d95d92","02c42c251392674e2c2768ccd6224e04298bd5479436f02e9867ecc288dd2eb066","0316f3c82d9fce97e267b82147d56a4b170d39e6cf01bfaff6c2ae6bcc79a14447","0398554ee8e333061391b3e866505bbc5e130304ae09b198444bcd31c4ba7846ea","02e69d21aadb502e9bd93c5536866eff8ca6b19664545ccc4e77f3508e0cbe2027","0270fb334407a53a23ad449389e2cb055fae5017ca4d79ec8e082038db2d749c50","03d91a8f47453f9da51e0194e3aacff88bf79a625df82ceee73c71f3a7099a5459","0306b2d3fd06c4673cc90374b7db0c152ba7960be382440cecc4cdad7642e0537c","028020dd6062f080e1e2b49ca629faa1407978adab13b74875a9de93b16accf804","03907061c5f6fde367aafe27e1d53b39ff9c2babffe8ab7cf8c3023acba5c39736","029749462dba9af034455f5e0f170aac67fe9365ce7126092b4d24ced979b5381f","02f001d35308833881b3440670d25072256474c6c4061daf729055bf9563134105"],"xpub":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y"},"1":{"change":["03b0df486b4e1baa03ad565622820d692089b059c8f9fefa3567c3fa26d0cbaa34","0294c76c062c865873dccab84d51682f880e0197b64789c61bff85e1be2506925e","036f900d0c6bafbbcac0fbc95bed44954007faa182655cf69dc84d50c22e6edce8"],"receiving":["02106878f6aefd9a81e1ca4a5f30ea0e1851aa36404fb62d19bd2325e180112b58","039e95f369e8d65aa7a7bf6a5d7d3259b827c1549c77c9b502b75a18f7708a9aa9","0273197861097be131542f8b7e03bc912934da51bc957d425be5bc7c1b69fb44ec","02b4c829b6a20815c5e1eef7ffd5d55c99505a7afeac5135ec2c97cfaae3483604","0312b1285272f1005c5834de2eec830ce9f9163c842d728c3921ae790716d8503f","0354059948c709c777a49a37e150271a3377f7aaee17798253d5240e4119f2a1c6","03800d87cc3878912d22a42a79db7ddbff3efec727d29ae1c0165730e5314483cd","03cafa35ad9adb41cff39e3bc2e0592d88c8b91981e73f068397e6c863c42c7b00","028668f734a4927e03621e319ab385919e891d248c86aea07ab922492d3d414ad3","02e42d46823893978ae7be9e032be21ce3e613cecb5ffe687b534795f90dc8ef85","03b86914af797e7b68940bc4ee2dec134036781a8e23ffaf4189ca7637e0afe898","021221ae9be51a9747aa7ebc2213a42a2364ce790ee86255277dc5f9beeb0bf6b4","03c8d58183f5d8102f8eb5f6db0f60add0a51ec6737097c46fc8a6b7c840d7571f","0304de0806b299cef4be3a162bac78f811d4adacc6a229ffdaeb7333bce72d88ff","03e08262e18616a3a9b9aecbfb8a860ccee147820a3c60050695ef72ff2cedc4a7","02caf4d61bb5deec29a39e5a1cc6d5987ec71d61d57c57bb5c2a47dd9266130bec","0252d429002d9c06f0befbef6c389bdd021969b416dd83d220394e414bd5d83c0a","024e23ce58533163df3e1d5766295144beb8f9729b1ac41e80ba485f39c483dfe6","026de9e7e6b11fbecd88b7b49915b5df64d672ef900aa043a8cac3bc79eb414089","02aaac08fc100014ec692efa0f3b408bf741e1dc68ebe28ce41837662810f40986","03e0d2b426705dcc5cb62c6113b10153f10624c926a3fe86142fd9020e7d6a2129"],"xpub":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH"}},"accounts_expanded":{},"addr_history":{"LM6NBhqWiUD5f2W1WpqLA7MtWiNFjW5Gpf":[],"LM9TfCciLzZUpYUhg2VkBgoC81bQwrav4C":[["a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837",490002]],"LNKgMdfRbUZbVNxcoeVHr4nRFp9ULZX4bT":[],"LNRkHQjKykMaazy1PCQnmqeQ71ttwUuuQK":[],"LPYB6U1Tc3Ld2sE3UdUnxbm4Kq5DDkPCEX":[],"LQDkeaPgZyTG88UietSqaXKgGthudu92c8":[],"LRmMnkbdJVrssuy5gW8UpLC1zSEFp7omPC":[],"LSgH66JcXMp7k639zdaC4sHwr6t2yTKAwQ":[],"LW1dXPAmnVEZz17PhgQjHvmEV6MUcd6Zhi":[],"LYNthwkLpuYsJ6Ajf8TYRfaaQxqqtYWC1P":[],"LKTPPv5imBVPgTeGBLYbB99NYTnpPpF5wV":[],"LZrSPCcvWHfDaeNCnkFaYL8mzWhm89qZxo":[],"LaxCqVGpuyF5cpwGLw3T28dgZPBUoRcMSZ":[],"LbyEUdYYci1Cj1ejcJYY42xd1nQvM6eiXw":[],"LcFKtey5o4am16ZBPdxV3C7sZxTMyRqyoN":[],"Le1MnHWuYaGxL1fg13WsvNBy98GmHpurMG":[],"Les27ji39QbL8cM3ENGRmJ4eHhw1nkrHLf":[],"Lf3SJTKupNcZjw4BbXNJtoP2u36qoUPFJ4":[],"LfrnPoo5Wqudu5n5uiWa1jTVBKCfbNbeG4":[],"Lg57GijtoArWz9YwcyMg6Z4D3HsR6N1tGr":[],"LgUeokVX6eTKtbXNBJv6RheFhLiCzwSPaE":[],"LgahVvDJdYCWTZMzL8xFUUskXak7rKY76R":[],"LggNWLqwSZKAtCqcS5TTR9JPzCxSgoznXZ":[],"LL5B1VZe55MoSv47bra4E4pwrgNY1zHv1o":[]},"labels":{},"master_public_keys":{"x/0'":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y","x/1'":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH","x/2'":"xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa"},"next_account2":["2","xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa","031b68cff8114df7677c4fe80619b701ea966428ecbeba55c9224cd8149cc5f05e","LcVc1FUxfhcwJcjK8A6hb6YYU6k4e4MLdT"],"pruned_txo":{},"transactions":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":"01000000018394dfaba83ca6f510f622ecf95b445e856eab3193cb0dad53e1262841149d5f00000000da0047304402207761cdbf009c0bd3864c6a457288cadfa565601f782cc09f0046926d54a1b68b022060b73a7babb5dfd5188c4697cfcab6c15c4dd3de8507d39722e3a6b728f697dc01483045022100a540921229b02c4cfbf2d57222a455cbb4a5bd09bff063749fb71292f720850a02204dd18369213ec4cb033cbf222e8439eb8a9dd0a1b864bfeefa44cfe0c0066ee401475221025966a0193194a071e71501f9f8987111f7364bd8105a006f908b1f743da8d353210397c83f4963bdf333f129ab8000d89536bfea0971fc7578fdff5c2104b296c4d252aefdffffff0288130000000000001976a9141516b5e9653ab1fb09180186077fc2d7dfa07e5788aca0ba09000000000017a9148132c19d6b9abba9ec978ca5269d577ae104541e8700000000"},"txi":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":{}},"txo":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":{"LM9TfCciLzZUpYUhg2VkBgoC81bQwrav4C":[[0,5000,false]]}},"verified_tx3":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":[490002,1508090436,607]},"wallet_type":"trezor"}''' self._upgrade_storage(wallet_str, accounts=2) def test_upgrade_from_client_2_1_1_multisig(self): @@ -73,19 +73,19 @@ def test_upgrade_from_client_2_2_0_seeded(self): self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_2_0_importedkeys(self): - wallet_str = '{"accounts":{"/x":{"imported":{"1364Js2VG66BwRdkaoxAaFtdPb1eQgn8Dr":["0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5","L2sED74axVXC4H8szBJ4rQJrkfem7UMc6usLCPUoEWxDCFGUaGUM"],"15CyDgLffJsJgQrhcyooFH4gnVDG82pUrA":["04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2","5JyVyXU1LiRXATvRTQvR9Kp8Rx1X84j2x49iGkjSsXipydtByUq"],"1Exet2BhHsFxKTwhnfdsBMkPYLGvobxuW6":["0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f","L3Gi6EQLvYw8gEEUckmqawkevfj9s8hxoQDFveQJGZHTfyWnbk1U"]}}},"accounts_expanded":{},"pruned_txo":{},"stored_height":489714,"transactions":{},"txi":{},"txo":{},"use_encryption":false,"wallet_type":"imported"}' + wallet_str = '{"accounts":{"/x":{"imported":{"LMK1a5LKLkLFCEKukwwTrGxPboNvZjDbcY":["0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5","T8hVerMmMsVnq7mkXpEw4krEhXJ5BZNVv7mb4C7LoV8Ni8iywME1"],"LPRvUteVjy7MwDYro7o6XJ8SzhaYBJQhoM":["04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2","6vHESf1YF8tPdqpGyEiNvibJPRZzKsB4ijYsywkUaz3SfUAnidY"],"LZBc9EVXNXW1aGdrxodATNp9kYeCxufeWb":["0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f","T96yXyhXKvujT4sMAPihoJJ2sXNTwDircc7WnT2qqXTdBs433uZ5"]}}},"accounts_expanded":{},"pruned_txo":{},"stored_height":489714,"transactions":{},"txi":{},"txo":{},"use_encryption":false,"wallet_type":"imported"}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_2_0_watchaddresses(self): - wallet_str = '{"accounts":{"/x":{"imported":{"1DgrwN2JCDZ6uPMSvSz8dPeUtaxLxWM2kf":[null,null],"1H3mPXHFzA8UbvhQVabcDjYw3CPb3djvxs":[null,null],"1HocPduHmQUJerpdaLG8DnmxvnDCVQwWsa":[null,null]}}},"accounts_expanded":{},"pruned_txo":{},"stored_height":0,"transactions":{},"txi":{},"txo":{},"wallet_type":"imported"}' + wallet_str = '{"accounts":{"/x":{"imported":{"LXupCaL8GsoAAC3c6ayRuQiF6oKd6jzvF2":[null,null],"LbGiejb64pNXrjPZfiauVkchFQksBnFjrz":[null,null],"Lc2ZerD7r4iMufWnkUFRVoqj8zaUdra9gy":[null,null]}}},"accounts_expanded":{},"pruned_txo":{},"stored_height":0,"transactions":{},"txi":{},"txo":{},"wallet_type":"imported"}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_2_0_trezor_singleacc(self): - wallet_str = '''{"accounts":{"0":{"change":["033608f89d381bcb9964df9da428d706d3eb30c14433af8de21bee2601e7392a80","0295c3905730d987ae9a9c09ad85c9c22c28aa414448f9d3450d8afb3da0d78890","038cf10bcf2bd3384f05974295fc83fc4e9cb48c0105995ad86d3ea237edb7e1d1"],"receiving":["020be78fa1a35e44fb1ee3141b40bd8d68330f12f98fdef5ba249b4d8c52a6a1ae","03f23e9a3b5337f322f720f533653349f6e97228d1c4a6feca36d4d1554aa19f74","03d3e7cfde0117561856e6e43d87852480c512910bfd1988c2ff1e6f6d795f7046","02ec56fc0bfe6a1466a783737919edbe83c8907af29a5ae672919ffcb1bb96303f","031b1d151f6584f9926614a7c335ee61606ff7a9769ca6e175ad99f9c7b5e9fb4d","03d782be0ace089e02529029b08ca9107b0e58302306de30bd9f9a3a1ed40c3717","0325784a4290eeeea1f99a928cf6c75c33417659dbd50a3a2850136dc3138ba631","035b7c1176926a54cdeb0342df5ecc7bb3fe1820fce99491fb50c091e3093f200f","02e0a2d615bff26a57754afa0e8ac8b692a79b399f6d04647398f377dcac4116be","026c7cee5bce1ae9e2fa930001ece81c35442a461fc9ef1266ac3d41b9f13e3bd5","0217b1d5066708e0cdaee99087c407db684131e34578adc7800dc66f329576c457","03ec0ed891b0ead00f1eaca7a4736d6816e348731d995bd4e77acbc8c582f68429","028cb4c682dde9692de47f71f3b16755cc440d722b84eed68db2b3d80bce83d50a","03d5d770a58d32b5d59b12861bbda37560fe7b789181b3349abf56223ea61b39c4","0250b6aee8338ac0497f2106b0ed014f5a2419c7bf429eb2b17a70bec77e6ff482","02565da9be6fc66a1e354638dcd8a4244e8733f38599c91c4f1ab0fb8d5d94fd2f","02e6c88509ff676b686afc2326370684bbc6edc0b31e09f312df4f7a17fe379e31","02224fef0921e61adcb2cd14ef45dbe4b859f1fcdc62eba26c6a7ce386c0a8f4b1","034c63da9c2a20132d9fd1088028de18f7ccd72458f9eb07a72452bd9994d28b1f","032bfe2fc88a55e19ba2338155b79e67b7d061d5fd1844bc8edc1808d998f8ba2c"],"xpub":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9"}},"accounts_expanded":{},"labels":{"0":"Main account"},"master_public_keys":{"x/0'":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9","x/1'":"xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG"},"next_account2":["1","xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG","03571f041921078b153a496638d703dfd1cee75e73c42653bbe0650ab6168d6a5b","18i2zqeCh6Gjto81KvVaeSM8YBUAkmgjRG"],"pruned_txo":{},"stored_height":0,"transactions":{},"txi":{},"txo":{},"wallet_type":"trezor"}''' + wallet_str = '''{"accounts":{"0":{"change":["033608f89d381bcb9964df9da428d706d3eb30c14433af8de21bee2601e7392a80","0295c3905730d987ae9a9c09ad85c9c22c28aa414448f9d3450d8afb3da0d78890","038cf10bcf2bd3384f05974295fc83fc4e9cb48c0105995ad86d3ea237edb7e1d1"],"receiving":["020be78fa1a35e44fb1ee3141b40bd8d68330f12f98fdef5ba249b4d8c52a6a1ae","03f23e9a3b5337f322f720f533653349f6e97228d1c4a6feca36d4d1554aa19f74","03d3e7cfde0117561856e6e43d87852480c512910bfd1988c2ff1e6f6d795f7046","02ec56fc0bfe6a1466a783737919edbe83c8907af29a5ae672919ffcb1bb96303f","031b1d151f6584f9926614a7c335ee61606ff7a9769ca6e175ad99f9c7b5e9fb4d","03d782be0ace089e02529029b08ca9107b0e58302306de30bd9f9a3a1ed40c3717","0325784a4290eeeea1f99a928cf6c75c33417659dbd50a3a2850136dc3138ba631","035b7c1176926a54cdeb0342df5ecc7bb3fe1820fce99491fb50c091e3093f200f","02e0a2d615bff26a57754afa0e8ac8b692a79b399f6d04647398f377dcac4116be","026c7cee5bce1ae9e2fa930001ece81c35442a461fc9ef1266ac3d41b9f13e3bd5","0217b1d5066708e0cdaee99087c407db684131e34578adc7800dc66f329576c457","03ec0ed891b0ead00f1eaca7a4736d6816e348731d995bd4e77acbc8c582f68429","028cb4c682dde9692de47f71f3b16755cc440d722b84eed68db2b3d80bce83d50a","03d5d770a58d32b5d59b12861bbda37560fe7b789181b3349abf56223ea61b39c4","0250b6aee8338ac0497f2106b0ed014f5a2419c7bf429eb2b17a70bec77e6ff482","02565da9be6fc66a1e354638dcd8a4244e8733f38599c91c4f1ab0fb8d5d94fd2f","02e6c88509ff676b686afc2326370684bbc6edc0b31e09f312df4f7a17fe379e31","02224fef0921e61adcb2cd14ef45dbe4b859f1fcdc62eba26c6a7ce386c0a8f4b1","034c63da9c2a20132d9fd1088028de18f7ccd72458f9eb07a72452bd9994d28b1f","032bfe2fc88a55e19ba2338155b79e67b7d061d5fd1844bc8edc1808d998f8ba2c"],"xpub":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9"}},"accounts_expanded":{},"labels":{"0":"Main account"},"master_public_keys":{"x/0'":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9","x/1'":"xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG"},"next_account2":["1","xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG","03571f041921078b153a496638d703dfd1cee75e73c42653bbe0650ab6168d6a5b","LSvzG3x2mkWo9bpAW4UsvTQtkPqSoUkJop"],"pruned_txo":{},"stored_height":0,"transactions":{},"txi":{},"txo":{},"wallet_type":"trezor"}''' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_2_0_trezor_multiacc(self): - wallet_str = '''{"accounts":{"0":{"change":["03143bc04f007c454e03caf9d59b61e27f527b5e6723e167b50197ce45e2071902","03157710459a8213a79060e2f2003fe0eb7a7ed173ac3f846309de52269dd44740","028ec4bbbf4ac9edfabb704bd82acb0840f2166312929ce01af2b2e99059b16dee"],"receiving":["03d27c0f5594d8df0616d64a735c909098eb867d01c6f1588f04ca2cf353837ec0","024d299f21e9ee9cc3eb425d04f45110eff46e45abcab24a3e594645860518fb97","03f6bc650e5f118ab4a63359a9cde4ab8382fe16e7d1b36b0a459145a79bef674b","028bed00a2fbd03f1ff43e0150ec1018458f7b39f3e4e602e089b1f47f8f607136","02108b15014d53f2e4e1b5b2d8f5eaf82006bbc4f273dbfbaef91eff08f9d10ea5","02a9a59a529818f3ba7a37ebe34454eac2bcbe4da0e8566b13f369e03bb020c4c4","023fde4ecf7fbdffb679d92f58381066cf2d840d34cb2d8bef63f7c5182d278d53","02ad8bf6dc0ff3c39bd20297d77fbd62073d7bf2fa44bf716cdd026db0819bb2b4","029c8352118800beaef1f3fa9c12afe30d329e7544bea9b136b717b88c24d95d92","02c42c251392674e2c2768ccd6224e04298bd5479436f02e9867ecc288dd2eb066","0316f3c82d9fce97e267b82147d56a4b170d39e6cf01bfaff6c2ae6bcc79a14447","0398554ee8e333061391b3e866505bbc5e130304ae09b198444bcd31c4ba7846ea","02e69d21aadb502e9bd93c5536866eff8ca6b19664545ccc4e77f3508e0cbe2027","0270fb334407a53a23ad449389e2cb055fae5017ca4d79ec8e082038db2d749c50","03d91a8f47453f9da51e0194e3aacff88bf79a625df82ceee73c71f3a7099a5459","0306b2d3fd06c4673cc90374b7db0c152ba7960be382440cecc4cdad7642e0537c","028020dd6062f080e1e2b49ca629faa1407978adab13b74875a9de93b16accf804","03907061c5f6fde367aafe27e1d53b39ff9c2babffe8ab7cf8c3023acba5c39736","029749462dba9af034455f5e0f170aac67fe9365ce7126092b4d24ced979b5381f","02f001d35308833881b3440670d25072256474c6c4061daf729055bf9563134105"],"xpub":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y"},"1":{"change":["03b0df486b4e1baa03ad565622820d692089b059c8f9fefa3567c3fa26d0cbaa34","0294c76c062c865873dccab84d51682f880e0197b64789c61bff85e1be2506925e","036f900d0c6bafbbcac0fbc95bed44954007faa182655cf69dc84d50c22e6edce8"],"receiving":["02106878f6aefd9a81e1ca4a5f30ea0e1851aa36404fb62d19bd2325e180112b58","039e95f369e8d65aa7a7bf6a5d7d3259b827c1549c77c9b502b75a18f7708a9aa9","0273197861097be131542f8b7e03bc912934da51bc957d425be5bc7c1b69fb44ec","02b4c829b6a20815c5e1eef7ffd5d55c99505a7afeac5135ec2c97cfaae3483604","0312b1285272f1005c5834de2eec830ce9f9163c842d728c3921ae790716d8503f","0354059948c709c777a49a37e150271a3377f7aaee17798253d5240e4119f2a1c6","03800d87cc3878912d22a42a79db7ddbff3efec727d29ae1c0165730e5314483cd","03cafa35ad9adb41cff39e3bc2e0592d88c8b91981e73f068397e6c863c42c7b00","028668f734a4927e03621e319ab385919e891d248c86aea07ab922492d3d414ad3","02e42d46823893978ae7be9e032be21ce3e613cecb5ffe687b534795f90dc8ef85","03b86914af797e7b68940bc4ee2dec134036781a8e23ffaf4189ca7637e0afe898","021221ae9be51a9747aa7ebc2213a42a2364ce790ee86255277dc5f9beeb0bf6b4","03c8d58183f5d8102f8eb5f6db0f60add0a51ec6737097c46fc8a6b7c840d7571f","0304de0806b299cef4be3a162bac78f811d4adacc6a229ffdaeb7333bce72d88ff","03e08262e18616a3a9b9aecbfb8a860ccee147820a3c60050695ef72ff2cedc4a7","02caf4d61bb5deec29a39e5a1cc6d5987ec71d61d57c57bb5c2a47dd9266130bec","0252d429002d9c06f0befbef6c389bdd021969b416dd83d220394e414bd5d83c0a","024e23ce58533163df3e1d5766295144beb8f9729b1ac41e80ba485f39c483dfe6","026de9e7e6b11fbecd88b7b49915b5df64d672ef900aa043a8cac3bc79eb414089","02aaac08fc100014ec692efa0f3b408bf741e1dc68ebe28ce41837662810f40986","03e0d2b426705dcc5cb62c6113b10153f10624c926a3fe86142fd9020e7d6a2129"],"xpub":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH"}},"accounts_expanded":{},"addr_history":{"12sQvVXgdoy2QDorLgr2t6J8JVzygBGueC":[],"12vWPzJtGLKRZjnYVtWSufjRuoE8pHLpmi":[["a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837",490002]],"146j6RMbWpKYEaGTdWVza3if3bnCD9Maiz":[],"14Co2CRVu67XLCGrD4RVVpadtoXcodUUWM":[],"15KDqFhdXP6Zn4XtJVVVgahJ7chw9jGhvQ":[],"15zoPN5rVKDCsKnZUkTYJWFv4gLdYTat8S":[],"17YQXYHoDqcpd7GvWN9BYK8FnDryhYbKyH":[],"18TKpsznSha4VHLzpVatnrEBdtWkoQSyGw":[],"1BngGArwhpzWjCREXYRS1uhUGszCTe7vqb":[],"1E9wSjSWkFJp3HUaUzUF9eWpCkUZnsNCuX":[],"1ES8hmtgXFLRex71CZHu85cLFRYDczeTZ":[],"1FdV7zK6RdRAKqg3ccGHGK51nJLUwpuBFp":[],"1GjFaGxzqK12N2F7Ao49k7ZvMApCmK7Enk":[],"1HkHDREiY3m9UCxaSAZEn1troa3eHWaiQD":[],"1J2NdSfFiQLhkHs2DVyBmB47Mk65rfrGPp":[],"1KnQX5D5Tv2u5CyWpuXaeM8CvuuVAmfwRz":[],"1Le4rXQD4kMGsoet4EH8VGzt5VZjdHBpid":[],"1LpV3F25jiNWV8N2RPP1cnKGgpjZh2r8xu":[],"1Mdq8bVFSBfaeH5vjaXGjiPiy6qPVtdfUo":[],"1MrA1WS4iWcTjLrnSqNNpXzSq5W92Bttbj":[],"1NFhYYBh1zDGdnqD1Avo9gaVV8LvnAH6iv":[],"1NMkEhuUYsxTCkfq9zxxCTozKNNqjHeKeC":[],"1NTRF8Y7Mu57dQ9TFwUA98EdmzbAamtLYe":[],"1rDkHFozR7kC7MxRiakx3mBeU1Fu6BRbG":[]},"labels":{},"master_public_keys":{"x/0'":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y","x/1'":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH","x/2'":"xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa"},"next_account2":["2","xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa","031b68cff8114df7677c4fe80619b701ea966428ecbeba55c9224cd8149cc5f05e","1JGek3B8b3Nt3p39x27QK5UnFtNnZ2ZdGJ"],"pruned_txo":{},"stored_height":490006,"transactions":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":"01000000018394dfaba83ca6f510f622ecf95b445e856eab3193cb0dad53e1262841149d5f00000000da0047304402207761cdbf009c0bd3864c6a457288cadfa565601f782cc09f0046926d54a1b68b022060b73a7babb5dfd5188c4697cfcab6c15c4dd3de8507d39722e3a6b728f697dc01483045022100a540921229b02c4cfbf2d57222a455cbb4a5bd09bff063749fb71292f720850a02204dd18369213ec4cb033cbf222e8439eb8a9dd0a1b864bfeefa44cfe0c0066ee401475221025966a0193194a071e71501f9f8987111f7364bd8105a006f908b1f743da8d353210397c83f4963bdf333f129ab8000d89536bfea0971fc7578fdff5c2104b296c4d252aefdffffff0288130000000000001976a9141516b5e9653ab1fb09180186077fc2d7dfa07e5788aca0ba09000000000017a9148132c19d6b9abba9ec978ca5269d577ae104541e8700000000"},"txi":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":{}},"txo":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":{"12vWPzJtGLKRZjnYVtWSufjRuoE8pHLpmi":[[0,5000,false]]}},"verified_tx3":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":[490002,1508090436,607]},"wallet_type":"trezor"}''' + wallet_str = '''{"accounts":{"0":{"change":["03143bc04f007c454e03caf9d59b61e27f527b5e6723e167b50197ce45e2071902","03157710459a8213a79060e2f2003fe0eb7a7ed173ac3f846309de52269dd44740","028ec4bbbf4ac9edfabb704bd82acb0840f2166312929ce01af2b2e99059b16dee"],"receiving":["03d27c0f5594d8df0616d64a735c909098eb867d01c6f1588f04ca2cf353837ec0","024d299f21e9ee9cc3eb425d04f45110eff46e45abcab24a3e594645860518fb97","03f6bc650e5f118ab4a63359a9cde4ab8382fe16e7d1b36b0a459145a79bef674b","028bed00a2fbd03f1ff43e0150ec1018458f7b39f3e4e602e089b1f47f8f607136","02108b15014d53f2e4e1b5b2d8f5eaf82006bbc4f273dbfbaef91eff08f9d10ea5","02a9a59a529818f3ba7a37ebe34454eac2bcbe4da0e8566b13f369e03bb020c4c4","023fde4ecf7fbdffb679d92f58381066cf2d840d34cb2d8bef63f7c5182d278d53","02ad8bf6dc0ff3c39bd20297d77fbd62073d7bf2fa44bf716cdd026db0819bb2b4","029c8352118800beaef1f3fa9c12afe30d329e7544bea9b136b717b88c24d95d92","02c42c251392674e2c2768ccd6224e04298bd5479436f02e9867ecc288dd2eb066","0316f3c82d9fce97e267b82147d56a4b170d39e6cf01bfaff6c2ae6bcc79a14447","0398554ee8e333061391b3e866505bbc5e130304ae09b198444bcd31c4ba7846ea","02e69d21aadb502e9bd93c5536866eff8ca6b19664545ccc4e77f3508e0cbe2027","0270fb334407a53a23ad449389e2cb055fae5017ca4d79ec8e082038db2d749c50","03d91a8f47453f9da51e0194e3aacff88bf79a625df82ceee73c71f3a7099a5459","0306b2d3fd06c4673cc90374b7db0c152ba7960be382440cecc4cdad7642e0537c","028020dd6062f080e1e2b49ca629faa1407978adab13b74875a9de93b16accf804","03907061c5f6fde367aafe27e1d53b39ff9c2babffe8ab7cf8c3023acba5c39736","029749462dba9af034455f5e0f170aac67fe9365ce7126092b4d24ced979b5381f","02f001d35308833881b3440670d25072256474c6c4061daf729055bf9563134105"],"xpub":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y"},"1":{"change":["03b0df486b4e1baa03ad565622820d692089b059c8f9fefa3567c3fa26d0cbaa34","0294c76c062c865873dccab84d51682f880e0197b64789c61bff85e1be2506925e","036f900d0c6bafbbcac0fbc95bed44954007faa182655cf69dc84d50c22e6edce8"],"receiving":["02106878f6aefd9a81e1ca4a5f30ea0e1851aa36404fb62d19bd2325e180112b58","039e95f369e8d65aa7a7bf6a5d7d3259b827c1549c77c9b502b75a18f7708a9aa9","0273197861097be131542f8b7e03bc912934da51bc957d425be5bc7c1b69fb44ec","02b4c829b6a20815c5e1eef7ffd5d55c99505a7afeac5135ec2c97cfaae3483604","0312b1285272f1005c5834de2eec830ce9f9163c842d728c3921ae790716d8503f","0354059948c709c777a49a37e150271a3377f7aaee17798253d5240e4119f2a1c6","03800d87cc3878912d22a42a79db7ddbff3efec727d29ae1c0165730e5314483cd","03cafa35ad9adb41cff39e3bc2e0592d88c8b91981e73f068397e6c863c42c7b00","028668f734a4927e03621e319ab385919e891d248c86aea07ab922492d3d414ad3","02e42d46823893978ae7be9e032be21ce3e613cecb5ffe687b534795f90dc8ef85","03b86914af797e7b68940bc4ee2dec134036781a8e23ffaf4189ca7637e0afe898","021221ae9be51a9747aa7ebc2213a42a2364ce790ee86255277dc5f9beeb0bf6b4","03c8d58183f5d8102f8eb5f6db0f60add0a51ec6737097c46fc8a6b7c840d7571f","0304de0806b299cef4be3a162bac78f811d4adacc6a229ffdaeb7333bce72d88ff","03e08262e18616a3a9b9aecbfb8a860ccee147820a3c60050695ef72ff2cedc4a7","02caf4d61bb5deec29a39e5a1cc6d5987ec71d61d57c57bb5c2a47dd9266130bec","0252d429002d9c06f0befbef6c389bdd021969b416dd83d220394e414bd5d83c0a","024e23ce58533163df3e1d5766295144beb8f9729b1ac41e80ba485f39c483dfe6","026de9e7e6b11fbecd88b7b49915b5df64d672ef900aa043a8cac3bc79eb414089","02aaac08fc100014ec692efa0f3b408bf741e1dc68ebe28ce41837662810f40986","03e0d2b426705dcc5cb62c6113b10153f10624c926a3fe86142fd9020e7d6a2129"],"xpub":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH"}},"accounts_expanded":{},"addr_history":{"LM6NBhqWiUD5f2W1WpqLA7MtWiNFjW5Gpf":[],"LM9TfCciLzZUpYUhg2VkBgoC81bQwrav4C":[["a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837",490002]],"LNKgMdfRbUZbVNxcoeVHr4nRFp9ULZX4bT":[],"LNRkHQjKykMaazy1PCQnmqeQ71ttwUuuQK":[],"LPYB6U1Tc3Ld2sE3UdUnxbm4Kq5DDkPCEX":[],"LQDkeaPgZyTG88UietSqaXKgGthudu92c8":[],"LRmMnkbdJVrssuy5gW8UpLC1zSEFp7omPC":[],"LSgH66JcXMp7k639zdaC4sHwr6t2yTKAwQ":[],"LW1dXPAmnVEZz17PhgQjHvmEV6MUcd6Zhi":[],"LYNthwkLpuYsJ6Ajf8TYRfaaQxqqtYWC1P":[],"LKTPPv5imBVPgTeGBLYbB99NYTnpPpF5wV":[],"LZrSPCcvWHfDaeNCnkFaYL8mzWhm89qZxo":[],"LaxCqVGpuyF5cpwGLw3T28dgZPBUoRcMSZ":[],"LbyEUdYYci1Cj1ejcJYY42xd1nQvM6eiXw":[],"LcFKtey5o4am16ZBPdxV3C7sZxTMyRqyoN":[],"Le1MnHWuYaGxL1fg13WsvNBy98GmHpurMG":[],"Les27ji39QbL8cM3ENGRmJ4eHhw1nkrHLf":[],"Lf3SJTKupNcZjw4BbXNJtoP2u36qoUPFJ4":[],"LfrnPoo5Wqudu5n5uiWa1jTVBKCfbNbeG4":[],"Lg57GijtoArWz9YwcyMg6Z4D3HsR6N1tGr":[],"LgUeokVX6eTKtbXNBJv6RheFhLiCzwSPaE":[],"LgahVvDJdYCWTZMzL8xFUUskXak7rKY76R":[],"LggNWLqwSZKAtCqcS5TTR9JPzCxSgoznXZ":[],"LL5B1VZe55MoSv47bra4E4pwrgNY1zHv1o":[]},"labels":{},"master_public_keys":{"x/0'":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y","x/1'":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH","x/2'":"xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa"},"next_account2":["2","xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa","031b68cff8114df7677c4fe80619b701ea966428ecbeba55c9224cd8149cc5f05e","LcVc1FUxfhcwJcjK8A6hb6YYU6k4e4MLdT"],"pruned_txo":{},"stored_height":490006,"transactions":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":"01000000018394dfaba83ca6f510f622ecf95b445e856eab3193cb0dad53e1262841149d5f00000000da0047304402207761cdbf009c0bd3864c6a457288cadfa565601f782cc09f0046926d54a1b68b022060b73a7babb5dfd5188c4697cfcab6c15c4dd3de8507d39722e3a6b728f697dc01483045022100a540921229b02c4cfbf2d57222a455cbb4a5bd09bff063749fb71292f720850a02204dd18369213ec4cb033cbf222e8439eb8a9dd0a1b864bfeefa44cfe0c0066ee401475221025966a0193194a071e71501f9f8987111f7364bd8105a006f908b1f743da8d353210397c83f4963bdf333f129ab8000d89536bfea0971fc7578fdff5c2104b296c4d252aefdffffff0288130000000000001976a9141516b5e9653ab1fb09180186077fc2d7dfa07e5788aca0ba09000000000017a9148132c19d6b9abba9ec978ca5269d577ae104541e8700000000"},"txi":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":{}},"txo":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":{"LM9TfCciLzZUpYUhg2VkBgoC81bQwrav4C":[[0,5000,false]]}},"verified_tx3":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":[490002,1508090436,607]},"wallet_type":"trezor"}''' self._upgrade_storage(wallet_str, accounts=2) def test_upgrade_from_client_2_2_0_multisig(self): @@ -97,19 +97,19 @@ def test_upgrade_from_client_2_3_2_seeded(self): self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_3_2_importedkeys(self): - wallet_str = '{"accounts":{"/x":{"imported":{"1364Js2VG66BwRdkaoxAaFtdPb1eQgn8Dr":["0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5","L2sED74axVXC4H8szBJ4rQJrkfem7UMc6usLCPUoEWxDCFGUaGUM"],"15CyDgLffJsJgQrhcyooFH4gnVDG82pUrA":["04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2","5JyVyXU1LiRXATvRTQvR9Kp8Rx1X84j2x49iGkjSsXipydtByUq"],"1Exet2BhHsFxKTwhnfdsBMkPYLGvobxuW6":["0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f","L3Gi6EQLvYw8gEEUckmqawkevfj9s8hxoQDFveQJGZHTfyWnbk1U"]}}},"accounts_expanded":{},"pruned_txo":{},"stored_height":489715,"transactions":{},"txi":{},"txo":{},"use_encryption":false,"wallet_type":"imported"}' + wallet_str = '{"accounts":{"/x":{"imported":{"LMK1a5LKLkLFCEKukwwTrGxPboNvZjDbcY":["0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5","T8hVerMmMsVnq7mkXpEw4krEhXJ5BZNVv7mb4C7LoV8Ni8iywME1"],"LPRvUteVjy7MwDYro7o6XJ8SzhaYBJQhoM":["04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2","6vHESf1YF8tPdqpGyEiNvibJPRZzKsB4ijYsywkUaz3SfUAnidY"],"LZBc9EVXNXW1aGdrxodATNp9kYeCxufeWb":["0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f","T96yXyhXKvujT4sMAPihoJJ2sXNTwDircc7WnT2qqXTdBs433uZ5"]}}},"accounts_expanded":{},"pruned_txo":{},"stored_height":489715,"transactions":{},"txi":{},"txo":{},"use_encryption":false,"wallet_type":"imported"}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_3_2_watchaddresses(self): - wallet_str = '{"accounts":{"/x":{"imported":{"1DgrwN2JCDZ6uPMSvSz8dPeUtaxLxWM2kf":[null,null],"1H3mPXHFzA8UbvhQVabcDjYw3CPb3djvxs":[null,null],"1HocPduHmQUJerpdaLG8DnmxvnDCVQwWsa":[null,null]}}},"accounts_expanded":{},"pruned_txo":{},"stored_height":0,"transactions":{},"txi":{},"txo":{},"wallet_type":"imported"}' + wallet_str = '{"accounts":{"/x":{"imported":{"LXupCaL8GsoAAC3c6ayRuQiF6oKd6jzvF2":[null,null],"LbGiejb64pNXrjPZfiauVkchFQksBnFjrz":[null,null],"Lc2ZerD7r4iMufWnkUFRVoqj8zaUdra9gy":[null,null]}}},"accounts_expanded":{},"pruned_txo":{},"stored_height":0,"transactions":{},"txi":{},"txo":{},"wallet_type":"imported"}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_3_2_trezor_singleacc(self): - wallet_str = '''{"accounts":{"0":{"change":["033608f89d381bcb9964df9da428d706d3eb30c14433af8de21bee2601e7392a80","0295c3905730d987ae9a9c09ad85c9c22c28aa414448f9d3450d8afb3da0d78890","038cf10bcf2bd3384f05974295fc83fc4e9cb48c0105995ad86d3ea237edb7e1d1","029b76e98f87c537165f016cf6840fe40c172ca0dba10278fb10e49a2b718cd156","034f08127c3651e5c5a65803e22dcbb1be10a90a79b699173ed0de82e0ceae862e","036013206a41aa6f782955b5a3b0e67f9a508ecd451796a2aa4ee7a02edef9fb7e"],"receiving":["020be78fa1a35e44fb1ee3141b40bd8d68330f12f98fdef5ba249b4d8c52a6a1ae","03f23e9a3b5337f322f720f533653349f6e97228d1c4a6feca36d4d1554aa19f74","03d3e7cfde0117561856e6e43d87852480c512910bfd1988c2ff1e6f6d795f7046","02ec56fc0bfe6a1466a783737919edbe83c8907af29a5ae672919ffcb1bb96303f","031b1d151f6584f9926614a7c335ee61606ff7a9769ca6e175ad99f9c7b5e9fb4d","03d782be0ace089e02529029b08ca9107b0e58302306de30bd9f9a3a1ed40c3717","0325784a4290eeeea1f99a928cf6c75c33417659dbd50a3a2850136dc3138ba631","035b7c1176926a54cdeb0342df5ecc7bb3fe1820fce99491fb50c091e3093f200f","02e0a2d615bff26a57754afa0e8ac8b692a79b399f6d04647398f377dcac4116be","026c7cee5bce1ae9e2fa930001ece81c35442a461fc9ef1266ac3d41b9f13e3bd5","0217b1d5066708e0cdaee99087c407db684131e34578adc7800dc66f329576c457","03ec0ed891b0ead00f1eaca7a4736d6816e348731d995bd4e77acbc8c582f68429","028cb4c682dde9692de47f71f3b16755cc440d722b84eed68db2b3d80bce83d50a","03d5d770a58d32b5d59b12861bbda37560fe7b789181b3349abf56223ea61b39c4","0250b6aee8338ac0497f2106b0ed014f5a2419c7bf429eb2b17a70bec77e6ff482","02565da9be6fc66a1e354638dcd8a4244e8733f38599c91c4f1ab0fb8d5d94fd2f","02e6c88509ff676b686afc2326370684bbc6edc0b31e09f312df4f7a17fe379e31","02224fef0921e61adcb2cd14ef45dbe4b859f1fcdc62eba26c6a7ce386c0a8f4b1","034c63da9c2a20132d9fd1088028de18f7ccd72458f9eb07a72452bd9994d28b1f","032bfe2fc88a55e19ba2338155b79e67b7d061d5fd1844bc8edc1808d998f8ba2c"],"xpub":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9"}},"accounts_expanded":{},"labels":{"0":"Main account"},"master_public_keys":{"x/0'":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9","x/1'":"xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG"},"next_account2":["1","xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG","03571f041921078b153a496638d703dfd1cee75e73c42653bbe0650ab6168d6a5b","18i2zqeCh6Gjto81KvVaeSM8YBUAkmgjRG"],"pruned_txo":{},"stored_height":0,"transactions":{},"txi":{},"txo":{},"wallet_type":"trezor"}''' + wallet_str = '''{"accounts":{"0":{"change":["033608f89d381bcb9964df9da428d706d3eb30c14433af8de21bee2601e7392a80","0295c3905730d987ae9a9c09ad85c9c22c28aa414448f9d3450d8afb3da0d78890","038cf10bcf2bd3384f05974295fc83fc4e9cb48c0105995ad86d3ea237edb7e1d1","029b76e98f87c537165f016cf6840fe40c172ca0dba10278fb10e49a2b718cd156","034f08127c3651e5c5a65803e22dcbb1be10a90a79b699173ed0de82e0ceae862e","036013206a41aa6f782955b5a3b0e67f9a508ecd451796a2aa4ee7a02edef9fb7e"],"receiving":["020be78fa1a35e44fb1ee3141b40bd8d68330f12f98fdef5ba249b4d8c52a6a1ae","03f23e9a3b5337f322f720f533653349f6e97228d1c4a6feca36d4d1554aa19f74","03d3e7cfde0117561856e6e43d87852480c512910bfd1988c2ff1e6f6d795f7046","02ec56fc0bfe6a1466a783737919edbe83c8907af29a5ae672919ffcb1bb96303f","031b1d151f6584f9926614a7c335ee61606ff7a9769ca6e175ad99f9c7b5e9fb4d","03d782be0ace089e02529029b08ca9107b0e58302306de30bd9f9a3a1ed40c3717","0325784a4290eeeea1f99a928cf6c75c33417659dbd50a3a2850136dc3138ba631","035b7c1176926a54cdeb0342df5ecc7bb3fe1820fce99491fb50c091e3093f200f","02e0a2d615bff26a57754afa0e8ac8b692a79b399f6d04647398f377dcac4116be","026c7cee5bce1ae9e2fa930001ece81c35442a461fc9ef1266ac3d41b9f13e3bd5","0217b1d5066708e0cdaee99087c407db684131e34578adc7800dc66f329576c457","03ec0ed891b0ead00f1eaca7a4736d6816e348731d995bd4e77acbc8c582f68429","028cb4c682dde9692de47f71f3b16755cc440d722b84eed68db2b3d80bce83d50a","03d5d770a58d32b5d59b12861bbda37560fe7b789181b3349abf56223ea61b39c4","0250b6aee8338ac0497f2106b0ed014f5a2419c7bf429eb2b17a70bec77e6ff482","02565da9be6fc66a1e354638dcd8a4244e8733f38599c91c4f1ab0fb8d5d94fd2f","02e6c88509ff676b686afc2326370684bbc6edc0b31e09f312df4f7a17fe379e31","02224fef0921e61adcb2cd14ef45dbe4b859f1fcdc62eba26c6a7ce386c0a8f4b1","034c63da9c2a20132d9fd1088028de18f7ccd72458f9eb07a72452bd9994d28b1f","032bfe2fc88a55e19ba2338155b79e67b7d061d5fd1844bc8edc1808d998f8ba2c"],"xpub":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9"}},"accounts_expanded":{},"labels":{"0":"Main account"},"master_public_keys":{"x/0'":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9","x/1'":"xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG"},"next_account2":["1","xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG","03571f041921078b153a496638d703dfd1cee75e73c42653bbe0650ab6168d6a5b","LSvzG3x2mkWo9bpAW4UsvTQtkPqSoUkJop"],"pruned_txo":{},"stored_height":0,"transactions":{},"txi":{},"txo":{},"wallet_type":"trezor"}''' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_3_2_trezor_multiacc(self): - wallet_str = '''{"accounts":{"0":{"change":["03143bc04f007c454e03caf9d59b61e27f527b5e6723e167b50197ce45e2071902","03157710459a8213a79060e2f2003fe0eb7a7ed173ac3f846309de52269dd44740","028ec4bbbf4ac9edfabb704bd82acb0840f2166312929ce01af2b2e99059b16dee","021a9f1201968bd835029daf09ae98745a75bcb8c6143b80610cfc2eb2eee94dd8","031fe8323703fee4a1f6c59f27ceed4e227f5643b1cb387b39619b6b5499a971b4","033199fc62b72ce98e3780684e993f31d520f1da0bf2880ed26153b2efcc86ac1d"],"receiving":["03d27c0f5594d8df0616d64a735c909098eb867d01c6f1588f04ca2cf353837ec0","024d299f21e9ee9cc3eb425d04f45110eff46e45abcab24a3e594645860518fb97","03f6bc650e5f118ab4a63359a9cde4ab8382fe16e7d1b36b0a459145a79bef674b","028bed00a2fbd03f1ff43e0150ec1018458f7b39f3e4e602e089b1f47f8f607136","02108b15014d53f2e4e1b5b2d8f5eaf82006bbc4f273dbfbaef91eff08f9d10ea5","02a9a59a529818f3ba7a37ebe34454eac2bcbe4da0e8566b13f369e03bb020c4c4","023fde4ecf7fbdffb679d92f58381066cf2d840d34cb2d8bef63f7c5182d278d53","02ad8bf6dc0ff3c39bd20297d77fbd62073d7bf2fa44bf716cdd026db0819bb2b4","029c8352118800beaef1f3fa9c12afe30d329e7544bea9b136b717b88c24d95d92","02c42c251392674e2c2768ccd6224e04298bd5479436f02e9867ecc288dd2eb066","0316f3c82d9fce97e267b82147d56a4b170d39e6cf01bfaff6c2ae6bcc79a14447","0398554ee8e333061391b3e866505bbc5e130304ae09b198444bcd31c4ba7846ea","02e69d21aadb502e9bd93c5536866eff8ca6b19664545ccc4e77f3508e0cbe2027","0270fb334407a53a23ad449389e2cb055fae5017ca4d79ec8e082038db2d749c50","03d91a8f47453f9da51e0194e3aacff88bf79a625df82ceee73c71f3a7099a5459","0306b2d3fd06c4673cc90374b7db0c152ba7960be382440cecc4cdad7642e0537c","028020dd6062f080e1e2b49ca629faa1407978adab13b74875a9de93b16accf804","03907061c5f6fde367aafe27e1d53b39ff9c2babffe8ab7cf8c3023acba5c39736","029749462dba9af034455f5e0f170aac67fe9365ce7126092b4d24ced979b5381f","02f001d35308833881b3440670d25072256474c6c4061daf729055bf9563134105"],"xpub":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y"},"1":{"change":["03b0df486b4e1baa03ad565622820d692089b059c8f9fefa3567c3fa26d0cbaa34","0294c76c062c865873dccab84d51682f880e0197b64789c61bff85e1be2506925e","036f900d0c6bafbbcac0fbc95bed44954007faa182655cf69dc84d50c22e6edce8","03d1be74f1360ecede61ad1a294b2e53d64d44def67848e407ec835f6639d825ff","03a6a526cfadd510a47da95b074be250f5bb659b857b8432a6d317e978994c30b7","022216da9e351ae57174f93a972b0b09d788f5b240b5d29985174fbd2119a981a9"],"receiving":["02106878f6aefd9a81e1ca4a5f30ea0e1851aa36404fb62d19bd2325e180112b58","039e95f369e8d65aa7a7bf6a5d7d3259b827c1549c77c9b502b75a18f7708a9aa9","0273197861097be131542f8b7e03bc912934da51bc957d425be5bc7c1b69fb44ec","02b4c829b6a20815c5e1eef7ffd5d55c99505a7afeac5135ec2c97cfaae3483604","0312b1285272f1005c5834de2eec830ce9f9163c842d728c3921ae790716d8503f","0354059948c709c777a49a37e150271a3377f7aaee17798253d5240e4119f2a1c6","03800d87cc3878912d22a42a79db7ddbff3efec727d29ae1c0165730e5314483cd","03cafa35ad9adb41cff39e3bc2e0592d88c8b91981e73f068397e6c863c42c7b00","028668f734a4927e03621e319ab385919e891d248c86aea07ab922492d3d414ad3","02e42d46823893978ae7be9e032be21ce3e613cecb5ffe687b534795f90dc8ef85","03b86914af797e7b68940bc4ee2dec134036781a8e23ffaf4189ca7637e0afe898","021221ae9be51a9747aa7ebc2213a42a2364ce790ee86255277dc5f9beeb0bf6b4","03c8d58183f5d8102f8eb5f6db0f60add0a51ec6737097c46fc8a6b7c840d7571f","0304de0806b299cef4be3a162bac78f811d4adacc6a229ffdaeb7333bce72d88ff","03e08262e18616a3a9b9aecbfb8a860ccee147820a3c60050695ef72ff2cedc4a7","02caf4d61bb5deec29a39e5a1cc6d5987ec71d61d57c57bb5c2a47dd9266130bec","0252d429002d9c06f0befbef6c389bdd021969b416dd83d220394e414bd5d83c0a","024e23ce58533163df3e1d5766295144beb8f9729b1ac41e80ba485f39c483dfe6","026de9e7e6b11fbecd88b7b49915b5df64d672ef900aa043a8cac3bc79eb414089","02aaac08fc100014ec692efa0f3b408bf741e1dc68ebe28ce41837662810f40986","03e0d2b426705dcc5cb62c6113b10153f10624c926a3fe86142fd9020e7d6a2129"],"xpub":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH"}},"accounts_expanded":{},"addr_history":{"12sQvVXgdoy2QDorLgr2t6J8JVzygBGueC":[],"12vWPzJtGLKRZjnYVtWSufjRuoE8pHLpmi":[["a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837",490002]],"146j6RMbWpKYEaGTdWVza3if3bnCD9Maiz":[],"14Co2CRVu67XLCGrD4RVVpadtoXcodUUWM":[],"15KDqFhdXP6Zn4XtJVVVgahJ7chw9jGhvQ":[],"15sFkiVrGad5QiKgtYjfgi8SSeEfRzxed6":[],"15zoPN5rVKDCsKnZUkTYJWFv4gLdYTat8S":[],"17YQXYHoDqcpd7GvWN9BYK8FnDryhYbKyH":[],"18TKpsznSha4VHLzpVatnrEBdtWkoQSyGw":[],"1BngGArwhpzWjCREXYRS1uhUGszCTe7vqb":[],"1E9wSjSWkFJp3HUaUzUF9eWpCkUZnsNCuX":[],"1ES8hmtgXFLRex71CZHu85cLFRYDczeTZ":[],"1FdV7zK6RdRAKqg3ccGHGK51nJLUwpuBFp":[],"1GjFaGxzqK12N2F7Ao49k7ZvMApCmK7Enk":[],"1HkHDREiY3m9UCxaSAZEn1troa3eHWaiQD":[],"1J2NdSfFiQLhkHs2DVyBmB47Mk65rfrGPp":[],"1KnQX5D5Tv2u5CyWpuXaeM8CvuuVAmfwRz":[],"1KotB3FVFcYuHAVdRNAe2ZN1MREpVWnBgs":[],"1Le4rXQD4kMGsoet4EH8VGzt5VZjdHBpid":[],"1LpV3F25jiNWV8N2RPP1cnKGgpjZh2r8xu":[],"1Mdq8bVFSBfaeH5vjaXGjiPiy6qPVtdfUo":[],"1MrA1WS4iWcTjLrnSqNNpXzSq5W92Bttbj":[],"1NFhYYBh1zDGdnqD1Avo9gaVV8LvnAH6iv":[],"1NMkEhuUYsxTCkfq9zxxCTozKNNqjHeKeC":[],"1NTRF8Y7Mu57dQ9TFwUA98EdmzbAamtLYe":[],"1NZs4y3cJhukVdKSYDhaiMHhP4ZU2qVpAL":[],"1rDkHFozR7kC7MxRiakx3mBeU1Fu6BRbG":[]},"labels":{},"master_public_keys":{"x/0'":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y","x/1'":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH","x/2'":"xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa"},"next_account2":["2","xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa","031b68cff8114df7677c4fe80619b701ea966428ecbeba55c9224cd8149cc5f05e","1JGek3B8b3Nt3p39x27QK5UnFtNnZ2ZdGJ"],"pruned_txo":{},"stored_height":490008,"transactions":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":"01000000018394dfaba83ca6f510f622ecf95b445e856eab3193cb0dad53e1262841149d5f00000000da0047304402207761cdbf009c0bd3864c6a457288cadfa565601f782cc09f0046926d54a1b68b022060b73a7babb5dfd5188c4697cfcab6c15c4dd3de8507d39722e3a6b728f697dc01483045022100a540921229b02c4cfbf2d57222a455cbb4a5bd09bff063749fb71292f720850a02204dd18369213ec4cb033cbf222e8439eb8a9dd0a1b864bfeefa44cfe0c0066ee401475221025966a0193194a071e71501f9f8987111f7364bd8105a006f908b1f743da8d353210397c83f4963bdf333f129ab8000d89536bfea0971fc7578fdff5c2104b296c4d252aefdffffff0288130000000000001976a9141516b5e9653ab1fb09180186077fc2d7dfa07e5788aca0ba09000000000017a9148132c19d6b9abba9ec978ca5269d577ae104541e8700000000"},"txi":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":{}},"txo":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":{"12vWPzJtGLKRZjnYVtWSufjRuoE8pHLpmi":[[0,5000,false]]}},"verified_tx3":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":[490002,1508090436,607]},"wallet_type":"trezor"}''' + wallet_str = '''{"accounts":{"0":{"change":["03143bc04f007c454e03caf9d59b61e27f527b5e6723e167b50197ce45e2071902","03157710459a8213a79060e2f2003fe0eb7a7ed173ac3f846309de52269dd44740","028ec4bbbf4ac9edfabb704bd82acb0840f2166312929ce01af2b2e99059b16dee","021a9f1201968bd835029daf09ae98745a75bcb8c6143b80610cfc2eb2eee94dd8","031fe8323703fee4a1f6c59f27ceed4e227f5643b1cb387b39619b6b5499a971b4","033199fc62b72ce98e3780684e993f31d520f1da0bf2880ed26153b2efcc86ac1d"],"receiving":["03d27c0f5594d8df0616d64a735c909098eb867d01c6f1588f04ca2cf353837ec0","024d299f21e9ee9cc3eb425d04f45110eff46e45abcab24a3e594645860518fb97","03f6bc650e5f118ab4a63359a9cde4ab8382fe16e7d1b36b0a459145a79bef674b","028bed00a2fbd03f1ff43e0150ec1018458f7b39f3e4e602e089b1f47f8f607136","02108b15014d53f2e4e1b5b2d8f5eaf82006bbc4f273dbfbaef91eff08f9d10ea5","02a9a59a529818f3ba7a37ebe34454eac2bcbe4da0e8566b13f369e03bb020c4c4","023fde4ecf7fbdffb679d92f58381066cf2d840d34cb2d8bef63f7c5182d278d53","02ad8bf6dc0ff3c39bd20297d77fbd62073d7bf2fa44bf716cdd026db0819bb2b4","029c8352118800beaef1f3fa9c12afe30d329e7544bea9b136b717b88c24d95d92","02c42c251392674e2c2768ccd6224e04298bd5479436f02e9867ecc288dd2eb066","0316f3c82d9fce97e267b82147d56a4b170d39e6cf01bfaff6c2ae6bcc79a14447","0398554ee8e333061391b3e866505bbc5e130304ae09b198444bcd31c4ba7846ea","02e69d21aadb502e9bd93c5536866eff8ca6b19664545ccc4e77f3508e0cbe2027","0270fb334407a53a23ad449389e2cb055fae5017ca4d79ec8e082038db2d749c50","03d91a8f47453f9da51e0194e3aacff88bf79a625df82ceee73c71f3a7099a5459","0306b2d3fd06c4673cc90374b7db0c152ba7960be382440cecc4cdad7642e0537c","028020dd6062f080e1e2b49ca629faa1407978adab13b74875a9de93b16accf804","03907061c5f6fde367aafe27e1d53b39ff9c2babffe8ab7cf8c3023acba5c39736","029749462dba9af034455f5e0f170aac67fe9365ce7126092b4d24ced979b5381f","02f001d35308833881b3440670d25072256474c6c4061daf729055bf9563134105"],"xpub":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y"},"1":{"change":["03b0df486b4e1baa03ad565622820d692089b059c8f9fefa3567c3fa26d0cbaa34","0294c76c062c865873dccab84d51682f880e0197b64789c61bff85e1be2506925e","036f900d0c6bafbbcac0fbc95bed44954007faa182655cf69dc84d50c22e6edce8","03d1be74f1360ecede61ad1a294b2e53d64d44def67848e407ec835f6639d825ff","03a6a526cfadd510a47da95b074be250f5bb659b857b8432a6d317e978994c30b7","022216da9e351ae57174f93a972b0b09d788f5b240b5d29985174fbd2119a981a9"],"receiving":["02106878f6aefd9a81e1ca4a5f30ea0e1851aa36404fb62d19bd2325e180112b58","039e95f369e8d65aa7a7bf6a5d7d3259b827c1549c77c9b502b75a18f7708a9aa9","0273197861097be131542f8b7e03bc912934da51bc957d425be5bc7c1b69fb44ec","02b4c829b6a20815c5e1eef7ffd5d55c99505a7afeac5135ec2c97cfaae3483604","0312b1285272f1005c5834de2eec830ce9f9163c842d728c3921ae790716d8503f","0354059948c709c777a49a37e150271a3377f7aaee17798253d5240e4119f2a1c6","03800d87cc3878912d22a42a79db7ddbff3efec727d29ae1c0165730e5314483cd","03cafa35ad9adb41cff39e3bc2e0592d88c8b91981e73f068397e6c863c42c7b00","028668f734a4927e03621e319ab385919e891d248c86aea07ab922492d3d414ad3","02e42d46823893978ae7be9e032be21ce3e613cecb5ffe687b534795f90dc8ef85","03b86914af797e7b68940bc4ee2dec134036781a8e23ffaf4189ca7637e0afe898","021221ae9be51a9747aa7ebc2213a42a2364ce790ee86255277dc5f9beeb0bf6b4","03c8d58183f5d8102f8eb5f6db0f60add0a51ec6737097c46fc8a6b7c840d7571f","0304de0806b299cef4be3a162bac78f811d4adacc6a229ffdaeb7333bce72d88ff","03e08262e18616a3a9b9aecbfb8a860ccee147820a3c60050695ef72ff2cedc4a7","02caf4d61bb5deec29a39e5a1cc6d5987ec71d61d57c57bb5c2a47dd9266130bec","0252d429002d9c06f0befbef6c389bdd021969b416dd83d220394e414bd5d83c0a","024e23ce58533163df3e1d5766295144beb8f9729b1ac41e80ba485f39c483dfe6","026de9e7e6b11fbecd88b7b49915b5df64d672ef900aa043a8cac3bc79eb414089","02aaac08fc100014ec692efa0f3b408bf741e1dc68ebe28ce41837662810f40986","03e0d2b426705dcc5cb62c6113b10153f10624c926a3fe86142fd9020e7d6a2129"],"xpub":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH"}},"accounts_expanded":{},"addr_history":{"LM6NBhqWiUD5f2W1WpqLA7MtWiNFjW5Gpf":[],"LM9TfCciLzZUpYUhg2VkBgoC81bQwrav4C":[["a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837",490002]],"LNKgMdfRbUZbVNxcoeVHr4nRFp9ULZX4bT":[],"LNRkHQjKykMaazy1PCQnmqeQ71ttwUuuQK":[],"LPYB6U1Tc3Ld2sE3UdUnxbm4Kq5DDkPCEX":[],"LQ6D1vogMEs8fX1r4gixxjCCerbwTX3srN":[],"LQDkeaPgZyTG88UietSqaXKgGthudu92c8":[],"LRmMnkbdJVrssuy5gW8UpLC1zSEFp7omPC":[],"LSgH66JcXMp7k639zdaC4sHwr6t2yTKAwQ":[],"LW1dXPAmnVEZz17PhgQjHvmEV6MUcd6Zhi":[],"LYNthwkLpuYsJ6Ajf8TYRfaaQxqqtYWC1P":[],"LKTPPv5imBVPgTeGBLYbB99NYTnpPpF5wV":[],"LZrSPCcvWHfDaeNCnkFaYL8mzWhm89qZxo":[],"LaxCqVGpuyF5cpwGLw3T28dgZPBUoRcMSZ":[],"LbyEUdYYci1Cj1ejcJYY42xd1nQvM6eiXw":[],"LcFKtey5o4am16ZBPdxV3C7sZxTMyRqyoN":[],"Le1MnHWuYaGxL1fg13WsvNBy98GmHpurMG":[],"Le2qSFZKLGnxXyBnbW9wJaRmZdc6bfBmDG":[],"Les27ji39QbL8cM3ENGRmJ4eHhw1nkrHLf":[],"Lf3SJTKupNcZjw4BbXNJtoP2u36qoUPFJ4":[],"LfrnPoo5Wqudu5n5uiWa1jTVBKCfbNbeG4":[],"Lg57GijtoArWz9YwcyMg6Z4D3HsR6N1tGr":[],"LgUeokVX6eTKtbXNBJv6RheFhLiCzwSPaE":[],"LgahVvDJdYCWTZMzL8xFUUskXak7rKY76R":[],"LggNWLqwSZKAtCqcS5TTR9JPzCxSgoznXZ":[],"LgnpLBMSPN9okS1biMgszNMTbGvkCxAxom":[],"LL5B1VZe55MoSv47bra4E4pwrgNY1zHv1o":[]},"labels":{},"master_public_keys":{"x/0'":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y","x/1'":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH","x/2'":"xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa"},"next_account2":["2","xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa","031b68cff8114df7677c4fe80619b701ea966428ecbeba55c9224cd8149cc5f05e","LcVc1FUxfhcwJcjK8A6hb6YYU6k4e4MLdT"],"pruned_txo":{},"stored_height":490008,"transactions":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":"01000000018394dfaba83ca6f510f622ecf95b445e856eab3193cb0dad53e1262841149d5f00000000da0047304402207761cdbf009c0bd3864c6a457288cadfa565601f782cc09f0046926d54a1b68b022060b73a7babb5dfd5188c4697cfcab6c15c4dd3de8507d39722e3a6b728f697dc01483045022100a540921229b02c4cfbf2d57222a455cbb4a5bd09bff063749fb71292f720850a02204dd18369213ec4cb033cbf222e8439eb8a9dd0a1b864bfeefa44cfe0c0066ee401475221025966a0193194a071e71501f9f8987111f7364bd8105a006f908b1f743da8d353210397c83f4963bdf333f129ab8000d89536bfea0971fc7578fdff5c2104b296c4d252aefdffffff0288130000000000001976a9141516b5e9653ab1fb09180186077fc2d7dfa07e5788aca0ba09000000000017a9148132c19d6b9abba9ec978ca5269d577ae104541e8700000000"},"txi":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":{}},"txo":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":{"LM9TfCciLzZUpYUhg2VkBgoC81bQwrav4C":[[0,5000,false]]}},"verified_tx3":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":[490002,1508090436,607]},"wallet_type":"trezor"}''' self._upgrade_storage(wallet_str, accounts=2) def test_upgrade_from_client_2_3_2_multisig(self): @@ -121,19 +121,19 @@ def test_upgrade_from_client_2_4_3_seeded(self): self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_4_3_importedkeys(self): - wallet_str = '{"accounts":{"/x":{"imported":{"1364Js2VG66BwRdkaoxAaFtdPb1eQgn8Dr":["0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5","L2sED74axVXC4H8szBJ4rQJrkfem7UMc6usLCPUoEWxDCFGUaGUM"],"15CyDgLffJsJgQrhcyooFH4gnVDG82pUrA":["04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2","5JyVyXU1LiRXATvRTQvR9Kp8Rx1X84j2x49iGkjSsXipydtByUq"],"1Exet2BhHsFxKTwhnfdsBMkPYLGvobxuW6":["0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f","L3Gi6EQLvYw8gEEUckmqawkevfj9s8hxoQDFveQJGZHTfyWnbk1U"]}}},"accounts_expanded":{},"stored_height":477636,"use_encryption":false,"wallet_type":"imported"}' + wallet_str = '{"accounts":{"/x":{"imported":{"LMK1a5LKLkLFCEKukwwTrGxPboNvZjDbcY":["0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5","T8hVerMmMsVnq7mkXpEw4krEhXJ5BZNVv7mb4C7LoV8Ni8iywME1"],"LPRvUteVjy7MwDYro7o6XJ8SzhaYBJQhoM":["04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2","6vHESf1YF8tPdqpGyEiNvibJPRZzKsB4ijYsywkUaz3SfUAnidY"],"LZBc9EVXNXW1aGdrxodATNp9kYeCxufeWb":["0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f","T96yXyhXKvujT4sMAPihoJJ2sXNTwDircc7WnT2qqXTdBs433uZ5"]}}},"accounts_expanded":{},"stored_height":477636,"use_encryption":false,"wallet_type":"imported"}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_4_3_watchaddresses(self): - wallet_str = '{"accounts":{"/x":{"imported":{"1DgrwN2JCDZ6uPMSvSz8dPeUtaxLxWM2kf":[null,null],"1H3mPXHFzA8UbvhQVabcDjYw3CPb3djvxs":[null,null],"1HocPduHmQUJerpdaLG8DnmxvnDCVQwWsa":[null,null]}}},"accounts_expanded":{},"pruned_txo":{},"stored_height":490038,"transactions":{},"txi":{},"txo":{},"wallet_type":"imported"}' + wallet_str = '{"accounts":{"/x":{"imported":{"LXupCaL8GsoAAC3c6ayRuQiF6oKd6jzvF2":[null,null],"LbGiejb64pNXrjPZfiauVkchFQksBnFjrz":[null,null],"Lc2ZerD7r4iMufWnkUFRVoqj8zaUdra9gy":[null,null]}}},"accounts_expanded":{},"pruned_txo":{},"stored_height":490038,"transactions":{},"txi":{},"txo":{},"wallet_type":"imported"}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_4_3_trezor_singleacc(self): - wallet_str = '''{"accounts":{"0":{"change":["033608f89d381bcb9964df9da428d706d3eb30c14433af8de21bee2601e7392a80","0295c3905730d987ae9a9c09ad85c9c22c28aa414448f9d3450d8afb3da0d78890","038cf10bcf2bd3384f05974295fc83fc4e9cb48c0105995ad86d3ea237edb7e1d1","029b76e98f87c537165f016cf6840fe40c172ca0dba10278fb10e49a2b718cd156","034f08127c3651e5c5a65803e22dcbb1be10a90a79b699173ed0de82e0ceae862e","036013206a41aa6f782955b5a3b0e67f9a508ecd451796a2aa4ee7a02edef9fb7e"],"receiving":["020be78fa1a35e44fb1ee3141b40bd8d68330f12f98fdef5ba249b4d8c52a6a1ae","03f23e9a3b5337f322f720f533653349f6e97228d1c4a6feca36d4d1554aa19f74","03d3e7cfde0117561856e6e43d87852480c512910bfd1988c2ff1e6f6d795f7046","02ec56fc0bfe6a1466a783737919edbe83c8907af29a5ae672919ffcb1bb96303f","031b1d151f6584f9926614a7c335ee61606ff7a9769ca6e175ad99f9c7b5e9fb4d","03d782be0ace089e02529029b08ca9107b0e58302306de30bd9f9a3a1ed40c3717","0325784a4290eeeea1f99a928cf6c75c33417659dbd50a3a2850136dc3138ba631","035b7c1176926a54cdeb0342df5ecc7bb3fe1820fce99491fb50c091e3093f200f","02e0a2d615bff26a57754afa0e8ac8b692a79b399f6d04647398f377dcac4116be","026c7cee5bce1ae9e2fa930001ece81c35442a461fc9ef1266ac3d41b9f13e3bd5","0217b1d5066708e0cdaee99087c407db684131e34578adc7800dc66f329576c457","03ec0ed891b0ead00f1eaca7a4736d6816e348731d995bd4e77acbc8c582f68429","028cb4c682dde9692de47f71f3b16755cc440d722b84eed68db2b3d80bce83d50a","03d5d770a58d32b5d59b12861bbda37560fe7b789181b3349abf56223ea61b39c4","0250b6aee8338ac0497f2106b0ed014f5a2419c7bf429eb2b17a70bec77e6ff482","02565da9be6fc66a1e354638dcd8a4244e8733f38599c91c4f1ab0fb8d5d94fd2f","02e6c88509ff676b686afc2326370684bbc6edc0b31e09f312df4f7a17fe379e31","02224fef0921e61adcb2cd14ef45dbe4b859f1fcdc62eba26c6a7ce386c0a8f4b1","034c63da9c2a20132d9fd1088028de18f7ccd72458f9eb07a72452bd9994d28b1f","032bfe2fc88a55e19ba2338155b79e67b7d061d5fd1844bc8edc1808d998f8ba2c"],"xpub":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9"}},"accounts_expanded":{},"labels":{"0":"Main account"},"master_public_keys":{"x/0'":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9","x/1'":"xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG"},"next_account2":["1","xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG","03571f041921078b153a496638d703dfd1cee75e73c42653bbe0650ab6168d6a5b","18i2zqeCh6Gjto81KvVaeSM8YBUAkmgjRG"],"pruned_txo":{},"stored_height":485855,"transactions":{},"txi":{},"txo":{},"wallet_type":"trezor"}''' + wallet_str = '''{"accounts":{"0":{"change":["033608f89d381bcb9964df9da428d706d3eb30c14433af8de21bee2601e7392a80","0295c3905730d987ae9a9c09ad85c9c22c28aa414448f9d3450d8afb3da0d78890","038cf10bcf2bd3384f05974295fc83fc4e9cb48c0105995ad86d3ea237edb7e1d1","029b76e98f87c537165f016cf6840fe40c172ca0dba10278fb10e49a2b718cd156","034f08127c3651e5c5a65803e22dcbb1be10a90a79b699173ed0de82e0ceae862e","036013206a41aa6f782955b5a3b0e67f9a508ecd451796a2aa4ee7a02edef9fb7e"],"receiving":["020be78fa1a35e44fb1ee3141b40bd8d68330f12f98fdef5ba249b4d8c52a6a1ae","03f23e9a3b5337f322f720f533653349f6e97228d1c4a6feca36d4d1554aa19f74","03d3e7cfde0117561856e6e43d87852480c512910bfd1988c2ff1e6f6d795f7046","02ec56fc0bfe6a1466a783737919edbe83c8907af29a5ae672919ffcb1bb96303f","031b1d151f6584f9926614a7c335ee61606ff7a9769ca6e175ad99f9c7b5e9fb4d","03d782be0ace089e02529029b08ca9107b0e58302306de30bd9f9a3a1ed40c3717","0325784a4290eeeea1f99a928cf6c75c33417659dbd50a3a2850136dc3138ba631","035b7c1176926a54cdeb0342df5ecc7bb3fe1820fce99491fb50c091e3093f200f","02e0a2d615bff26a57754afa0e8ac8b692a79b399f6d04647398f377dcac4116be","026c7cee5bce1ae9e2fa930001ece81c35442a461fc9ef1266ac3d41b9f13e3bd5","0217b1d5066708e0cdaee99087c407db684131e34578adc7800dc66f329576c457","03ec0ed891b0ead00f1eaca7a4736d6816e348731d995bd4e77acbc8c582f68429","028cb4c682dde9692de47f71f3b16755cc440d722b84eed68db2b3d80bce83d50a","03d5d770a58d32b5d59b12861bbda37560fe7b789181b3349abf56223ea61b39c4","0250b6aee8338ac0497f2106b0ed014f5a2419c7bf429eb2b17a70bec77e6ff482","02565da9be6fc66a1e354638dcd8a4244e8733f38599c91c4f1ab0fb8d5d94fd2f","02e6c88509ff676b686afc2326370684bbc6edc0b31e09f312df4f7a17fe379e31","02224fef0921e61adcb2cd14ef45dbe4b859f1fcdc62eba26c6a7ce386c0a8f4b1","034c63da9c2a20132d9fd1088028de18f7ccd72458f9eb07a72452bd9994d28b1f","032bfe2fc88a55e19ba2338155b79e67b7d061d5fd1844bc8edc1808d998f8ba2c"],"xpub":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9"}},"accounts_expanded":{},"labels":{"0":"Main account"},"master_public_keys":{"x/0'":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9","x/1'":"xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG"},"next_account2":["1","xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG","03571f041921078b153a496638d703dfd1cee75e73c42653bbe0650ab6168d6a5b","LSvzG3x2mkWo9bpAW4UsvTQtkPqSoUkJop"],"pruned_txo":{},"stored_height":485855,"transactions":{},"txi":{},"txo":{},"wallet_type":"trezor"}''' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_4_3_trezor_multiacc(self): - wallet_str = '''{"accounts":{"0":{"change":["03143bc04f007c454e03caf9d59b61e27f527b5e6723e167b50197ce45e2071902","03157710459a8213a79060e2f2003fe0eb7a7ed173ac3f846309de52269dd44740","028ec4bbbf4ac9edfabb704bd82acb0840f2166312929ce01af2b2e99059b16dee","021a9f1201968bd835029daf09ae98745a75bcb8c6143b80610cfc2eb2eee94dd8","031fe8323703fee4a1f6c59f27ceed4e227f5643b1cb387b39619b6b5499a971b4","033199fc62b72ce98e3780684e993f31d520f1da0bf2880ed26153b2efcc86ac1d"],"receiving":["03d27c0f5594d8df0616d64a735c909098eb867d01c6f1588f04ca2cf353837ec0","024d299f21e9ee9cc3eb425d04f45110eff46e45abcab24a3e594645860518fb97","03f6bc650e5f118ab4a63359a9cde4ab8382fe16e7d1b36b0a459145a79bef674b","028bed00a2fbd03f1ff43e0150ec1018458f7b39f3e4e602e089b1f47f8f607136","02108b15014d53f2e4e1b5b2d8f5eaf82006bbc4f273dbfbaef91eff08f9d10ea5","02a9a59a529818f3ba7a37ebe34454eac2bcbe4da0e8566b13f369e03bb020c4c4","023fde4ecf7fbdffb679d92f58381066cf2d840d34cb2d8bef63f7c5182d278d53","02ad8bf6dc0ff3c39bd20297d77fbd62073d7bf2fa44bf716cdd026db0819bb2b4","029c8352118800beaef1f3fa9c12afe30d329e7544bea9b136b717b88c24d95d92","02c42c251392674e2c2768ccd6224e04298bd5479436f02e9867ecc288dd2eb066","0316f3c82d9fce97e267b82147d56a4b170d39e6cf01bfaff6c2ae6bcc79a14447","0398554ee8e333061391b3e866505bbc5e130304ae09b198444bcd31c4ba7846ea","02e69d21aadb502e9bd93c5536866eff8ca6b19664545ccc4e77f3508e0cbe2027","0270fb334407a53a23ad449389e2cb055fae5017ca4d79ec8e082038db2d749c50","03d91a8f47453f9da51e0194e3aacff88bf79a625df82ceee73c71f3a7099a5459","0306b2d3fd06c4673cc90374b7db0c152ba7960be382440cecc4cdad7642e0537c","028020dd6062f080e1e2b49ca629faa1407978adab13b74875a9de93b16accf804","03907061c5f6fde367aafe27e1d53b39ff9c2babffe8ab7cf8c3023acba5c39736","029749462dba9af034455f5e0f170aac67fe9365ce7126092b4d24ced979b5381f","02f001d35308833881b3440670d25072256474c6c4061daf729055bf9563134105"],"xpub":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y"},"1":{"change":["03b0df486b4e1baa03ad565622820d692089b059c8f9fefa3567c3fa26d0cbaa34","0294c76c062c865873dccab84d51682f880e0197b64789c61bff85e1be2506925e","036f900d0c6bafbbcac0fbc95bed44954007faa182655cf69dc84d50c22e6edce8","03d1be74f1360ecede61ad1a294b2e53d64d44def67848e407ec835f6639d825ff","03a6a526cfadd510a47da95b074be250f5bb659b857b8432a6d317e978994c30b7","022216da9e351ae57174f93a972b0b09d788f5b240b5d29985174fbd2119a981a9"],"receiving":["02106878f6aefd9a81e1ca4a5f30ea0e1851aa36404fb62d19bd2325e180112b58","039e95f369e8d65aa7a7bf6a5d7d3259b827c1549c77c9b502b75a18f7708a9aa9","0273197861097be131542f8b7e03bc912934da51bc957d425be5bc7c1b69fb44ec","02b4c829b6a20815c5e1eef7ffd5d55c99505a7afeac5135ec2c97cfaae3483604","0312b1285272f1005c5834de2eec830ce9f9163c842d728c3921ae790716d8503f","0354059948c709c777a49a37e150271a3377f7aaee17798253d5240e4119f2a1c6","03800d87cc3878912d22a42a79db7ddbff3efec727d29ae1c0165730e5314483cd","03cafa35ad9adb41cff39e3bc2e0592d88c8b91981e73f068397e6c863c42c7b00","028668f734a4927e03621e319ab385919e891d248c86aea07ab922492d3d414ad3","02e42d46823893978ae7be9e032be21ce3e613cecb5ffe687b534795f90dc8ef85","03b86914af797e7b68940bc4ee2dec134036781a8e23ffaf4189ca7637e0afe898","021221ae9be51a9747aa7ebc2213a42a2364ce790ee86255277dc5f9beeb0bf6b4","03c8d58183f5d8102f8eb5f6db0f60add0a51ec6737097c46fc8a6b7c840d7571f","0304de0806b299cef4be3a162bac78f811d4adacc6a229ffdaeb7333bce72d88ff","03e08262e18616a3a9b9aecbfb8a860ccee147820a3c60050695ef72ff2cedc4a7","02caf4d61bb5deec29a39e5a1cc6d5987ec71d61d57c57bb5c2a47dd9266130bec","0252d429002d9c06f0befbef6c389bdd021969b416dd83d220394e414bd5d83c0a","024e23ce58533163df3e1d5766295144beb8f9729b1ac41e80ba485f39c483dfe6","026de9e7e6b11fbecd88b7b49915b5df64d672ef900aa043a8cac3bc79eb414089","02aaac08fc100014ec692efa0f3b408bf741e1dc68ebe28ce41837662810f40986","03e0d2b426705dcc5cb62c6113b10153f10624c926a3fe86142fd9020e7d6a2129"],"xpub":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH"}},"accounts_expanded":{},"addr_history":{"12vWPzJtGLKRZjnYVtWSufjRuoE8pHLpmi":[["a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837",490002]]},"labels":{"0":"Main account"},"master_public_keys":{"x/0'":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y","x/1'":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH","x/2'":"xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa"},"next_account2":["2","xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa","031b68cff8114df7677c4fe80619b701ea966428ecbeba55c9224cd8149cc5f05e","1JGek3B8b3Nt3p39x27QK5UnFtNnZ2ZdGJ"],"pruned_txo":{},"stored_height":490009,"transactions":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":"01000000018394dfaba83ca6f510f622ecf95b445e856eab3193cb0dad53e1262841149d5f00000000da0047304402207761cdbf009c0bd3864c6a457288cadfa565601f782cc09f0046926d54a1b68b022060b73a7babb5dfd5188c4697cfcab6c15c4dd3de8507d39722e3a6b728f697dc01483045022100a540921229b02c4cfbf2d57222a455cbb4a5bd09bff063749fb71292f720850a02204dd18369213ec4cb033cbf222e8439eb8a9dd0a1b864bfeefa44cfe0c0066ee401475221025966a0193194a071e71501f9f8987111f7364bd8105a006f908b1f743da8d353210397c83f4963bdf333f129ab8000d89536bfea0971fc7578fdff5c2104b296c4d252aefdffffff0288130000000000001976a9141516b5e9653ab1fb09180186077fc2d7dfa07e5788aca0ba09000000000017a9148132c19d6b9abba9ec978ca5269d577ae104541e8700000000"},"txi":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":{}},"txo":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":{"12vWPzJtGLKRZjnYVtWSufjRuoE8pHLpmi":[[0,5000,false]]}},"verified_tx3":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":[490002,1508090436,607]},"wallet_type":"trezor"}''' + wallet_str = '''{"accounts":{"0":{"change":["03143bc04f007c454e03caf9d59b61e27f527b5e6723e167b50197ce45e2071902","03157710459a8213a79060e2f2003fe0eb7a7ed173ac3f846309de52269dd44740","028ec4bbbf4ac9edfabb704bd82acb0840f2166312929ce01af2b2e99059b16dee","021a9f1201968bd835029daf09ae98745a75bcb8c6143b80610cfc2eb2eee94dd8","031fe8323703fee4a1f6c59f27ceed4e227f5643b1cb387b39619b6b5499a971b4","033199fc62b72ce98e3780684e993f31d520f1da0bf2880ed26153b2efcc86ac1d"],"receiving":["03d27c0f5594d8df0616d64a735c909098eb867d01c6f1588f04ca2cf353837ec0","024d299f21e9ee9cc3eb425d04f45110eff46e45abcab24a3e594645860518fb97","03f6bc650e5f118ab4a63359a9cde4ab8382fe16e7d1b36b0a459145a79bef674b","028bed00a2fbd03f1ff43e0150ec1018458f7b39f3e4e602e089b1f47f8f607136","02108b15014d53f2e4e1b5b2d8f5eaf82006bbc4f273dbfbaef91eff08f9d10ea5","02a9a59a529818f3ba7a37ebe34454eac2bcbe4da0e8566b13f369e03bb020c4c4","023fde4ecf7fbdffb679d92f58381066cf2d840d34cb2d8bef63f7c5182d278d53","02ad8bf6dc0ff3c39bd20297d77fbd62073d7bf2fa44bf716cdd026db0819bb2b4","029c8352118800beaef1f3fa9c12afe30d329e7544bea9b136b717b88c24d95d92","02c42c251392674e2c2768ccd6224e04298bd5479436f02e9867ecc288dd2eb066","0316f3c82d9fce97e267b82147d56a4b170d39e6cf01bfaff6c2ae6bcc79a14447","0398554ee8e333061391b3e866505bbc5e130304ae09b198444bcd31c4ba7846ea","02e69d21aadb502e9bd93c5536866eff8ca6b19664545ccc4e77f3508e0cbe2027","0270fb334407a53a23ad449389e2cb055fae5017ca4d79ec8e082038db2d749c50","03d91a8f47453f9da51e0194e3aacff88bf79a625df82ceee73c71f3a7099a5459","0306b2d3fd06c4673cc90374b7db0c152ba7960be382440cecc4cdad7642e0537c","028020dd6062f080e1e2b49ca629faa1407978adab13b74875a9de93b16accf804","03907061c5f6fde367aafe27e1d53b39ff9c2babffe8ab7cf8c3023acba5c39736","029749462dba9af034455f5e0f170aac67fe9365ce7126092b4d24ced979b5381f","02f001d35308833881b3440670d25072256474c6c4061daf729055bf9563134105"],"xpub":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y"},"1":{"change":["03b0df486b4e1baa03ad565622820d692089b059c8f9fefa3567c3fa26d0cbaa34","0294c76c062c865873dccab84d51682f880e0197b64789c61bff85e1be2506925e","036f900d0c6bafbbcac0fbc95bed44954007faa182655cf69dc84d50c22e6edce8","03d1be74f1360ecede61ad1a294b2e53d64d44def67848e407ec835f6639d825ff","03a6a526cfadd510a47da95b074be250f5bb659b857b8432a6d317e978994c30b7","022216da9e351ae57174f93a972b0b09d788f5b240b5d29985174fbd2119a981a9"],"receiving":["02106878f6aefd9a81e1ca4a5f30ea0e1851aa36404fb62d19bd2325e180112b58","039e95f369e8d65aa7a7bf6a5d7d3259b827c1549c77c9b502b75a18f7708a9aa9","0273197861097be131542f8b7e03bc912934da51bc957d425be5bc7c1b69fb44ec","02b4c829b6a20815c5e1eef7ffd5d55c99505a7afeac5135ec2c97cfaae3483604","0312b1285272f1005c5834de2eec830ce9f9163c842d728c3921ae790716d8503f","0354059948c709c777a49a37e150271a3377f7aaee17798253d5240e4119f2a1c6","03800d87cc3878912d22a42a79db7ddbff3efec727d29ae1c0165730e5314483cd","03cafa35ad9adb41cff39e3bc2e0592d88c8b91981e73f068397e6c863c42c7b00","028668f734a4927e03621e319ab385919e891d248c86aea07ab922492d3d414ad3","02e42d46823893978ae7be9e032be21ce3e613cecb5ffe687b534795f90dc8ef85","03b86914af797e7b68940bc4ee2dec134036781a8e23ffaf4189ca7637e0afe898","021221ae9be51a9747aa7ebc2213a42a2364ce790ee86255277dc5f9beeb0bf6b4","03c8d58183f5d8102f8eb5f6db0f60add0a51ec6737097c46fc8a6b7c840d7571f","0304de0806b299cef4be3a162bac78f811d4adacc6a229ffdaeb7333bce72d88ff","03e08262e18616a3a9b9aecbfb8a860ccee147820a3c60050695ef72ff2cedc4a7","02caf4d61bb5deec29a39e5a1cc6d5987ec71d61d57c57bb5c2a47dd9266130bec","0252d429002d9c06f0befbef6c389bdd021969b416dd83d220394e414bd5d83c0a","024e23ce58533163df3e1d5766295144beb8f9729b1ac41e80ba485f39c483dfe6","026de9e7e6b11fbecd88b7b49915b5df64d672ef900aa043a8cac3bc79eb414089","02aaac08fc100014ec692efa0f3b408bf741e1dc68ebe28ce41837662810f40986","03e0d2b426705dcc5cb62c6113b10153f10624c926a3fe86142fd9020e7d6a2129"],"xpub":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH"}},"accounts_expanded":{},"addr_history":{"LM9TfCciLzZUpYUhg2VkBgoC81bQwrav4C":[["a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837",490002]]},"labels":{"0":"Main account"},"master_public_keys":{"x/0'":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y","x/1'":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH","x/2'":"xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa"},"next_account2":["2","xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa","031b68cff8114df7677c4fe80619b701ea966428ecbeba55c9224cd8149cc5f05e","LcVc1FUxfhcwJcjK8A6hb6YYU6k4e4MLdT"],"pruned_txo":{},"stored_height":490009,"transactions":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":"01000000018394dfaba83ca6f510f622ecf95b445e856eab3193cb0dad53e1262841149d5f00000000da0047304402207761cdbf009c0bd3864c6a457288cadfa565601f782cc09f0046926d54a1b68b022060b73a7babb5dfd5188c4697cfcab6c15c4dd3de8507d39722e3a6b728f697dc01483045022100a540921229b02c4cfbf2d57222a455cbb4a5bd09bff063749fb71292f720850a02204dd18369213ec4cb033cbf222e8439eb8a9dd0a1b864bfeefa44cfe0c0066ee401475221025966a0193194a071e71501f9f8987111f7364bd8105a006f908b1f743da8d353210397c83f4963bdf333f129ab8000d89536bfea0971fc7578fdff5c2104b296c4d252aefdffffff0288130000000000001976a9141516b5e9653ab1fb09180186077fc2d7dfa07e5788aca0ba09000000000017a9148132c19d6b9abba9ec978ca5269d577ae104541e8700000000"},"txi":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":{}},"txo":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":{"LM9TfCciLzZUpYUhg2VkBgoC81bQwrav4C":[[0,5000,false]]}},"verified_tx3":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":[490002,1508090436,607]},"wallet_type":"trezor"}''' self._upgrade_storage(wallet_str, accounts=2) def test_upgrade_from_client_2_4_3_multisig(self): @@ -141,63 +141,63 @@ def test_upgrade_from_client_2_4_3_multisig(self): self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_5_4_seeded(self): - wallet_str = '{"accounts":{"0":{"change":["0253e61683b66ebf5a4916334adf1409ffe031016717868c9600d313e87538e745","021762e47578385ecedc03c7055da1713971c82df242920e7079afaf153cc37570","0303a8d6a35956c228aa95a17aab3dee0bca255e8b4f7e8155b23acef15cf4a974","02e881bc60018f9a6c566e2eb081a670f48d89b4a6615466788a4e2ce20246d4c6","02f0090e29817ef64c17f27bf6cdebc1222f7e11d7112073f45708e8d218340777","035b9c53b85fd0c2b434682675ac862bfcc7c5bb6993aee8e542f01d96ff485d67"],"receiving":["024fbc610bd51391794c40a7e04b0e4d4adeb6b0c0cc84ac0b3dad90544e428c47","024a2832afb0a366b149b6a64b648f0df0d28c15caa77f7bbf62881111d6915fe9","028cd24716179906bee99851a9062c6055ec298a3956b74631e30f5239a50cb328","039761647d7584ba83386a27875fe3d7715043c2817f4baca91e7a0c81d164d73d","02606fc2f0ce90edc495a617329b3c5c5cc46e36d36e6c66015b1615137278eabd","02191cc2986e33554e7b155f9eddcc3904fdba43a5a3638499d3b7b5452692b740","024b5bf755b2f65cab1f7e5505febc1db8b91781e5aac352902e79bc96ad7d9ad0","0309816cb047402b84133f4f3c5e56c215e860204513278beef54a87254e44c14a","03f53d34337c12ddb94950b1fee9e4a9cf06ad591db66194871d31a17ec7b59ac7","0325ede4b08073d7f288741c2c577878919fd5d832a9e6e04c9eac5563ae13aa83","02eca43081b04f68d6c8b81781acd59e5b8d2ba44dba195369afc40790fd9edef7","029a8ca96c64d3a98345be1594208908f2be5e6af6bcc6ff3681f271e75fcf232e","02fbe0804980750163a216cc91cfe86e907addf0e80797a8ea5067977eb4897c1b","0344f32fc1ee8b2eb08f419325529f495d77a3b5ea683bbce7a44178705ab59302","021dd62bdf18256bd5316ce3cbcca58785378058a41ba2d1c58f4cc76449b3c424","035e61cdbdb4306e58a816a19ad92c7ca3a392b67ac6d7257646868ffe512068c5","0326a4db82f21787d0246f8144abe6cda124383b7d93a6536f36c05af530ea262a","02b352a27a8f9c57b8e5c89b357ba9d0b5cb18bf623509b34cd881fcf8b89a819a","02a59188edef1ed29c158a0adb970588d2031cfe53e72e83d35b7e8dd0c0c77525","02e8b9e42a54d072c8887542c405f6c99cfabf41bdde639944b44ba7408837afd1"],"xpub":"xpub661MyMwAqRbcGh7ywNf1BYoFCs8mht2YnvkMYUJTazrAWbnbvkrisvSvrKGjRTDtw324xzprbDgphsmPv2pB6K5Sux3YNHC8pnJANCBY6vG"}},"accounts_expanded":{},"addr_history":{"12LXoVHUnAXn6BVBpshjwd7sSTwp5nsd7W":[],"12iXPYBErR6ZMESB9Nv74S4pVxdGMNLiW2":[],"13jmb5Vc2qh29tPhg637BwCJN7hStGWYXE":[],"14dHBBbwFVC7niSCqrb5HCHRK5K8rrgaW6":[],"14xsHuYGs4gKpRK3deuYwhMBTAwUeu2dpB":[],"15MpWMUasNVPTpzC5hK2AuVFwQ3AHd8fkv":[],"17nmvao3F84ebPrcv1LUxPUSS94U9EvCUt":[],"17yotEc8oUgJVQUnkjZSQjcqqZEbFFnXx8":[],"1A3c1rCCS2MYYobffyUHwPqkqE5ZpvG8Um":[],"1AtCzmcth79q6HgeyDnM3NLfr29hBHcfcg":[],"1AufJhUsMbqwbLK9JzUGQ9tTwphCQiVCwD":[],"1B77DkhJ8qHcwPQC2c1HyuNcYu5TzxxaJ7":[],"1D4bgjc4MDtEPWNTVfqG5bAodVu3D1Gjft":[],"1DefMPXdeCSQC5ieu8kR7hNGAXykNzWXpm":[],"1E673RESY1SvTWwUr5hQ1E7dGiRiSgkYFP":[],"1Ex6hnmpgp3FQrpR5aYvp9zpXemFiH7vky":[],"1FH2iAc5YgJKj1KcpJ1djuW3wJ2GbQezAv":[],"1GpjShJMGrLQGP6nZFDEswU7qUUgJbNRKi":[],"1H4BtV4Grfq2azQgHSNziN7MViQMDR9wxd":[],"1HnWq29dPuDRA7gx9HQLySGdwGWiNx4UP1":[],"1LMuebyhm8vnuw5qX3tqU2BhbacegeaFuE":[],"1LTJK8ffwJzRaNR5dDEKqJt6T8b4oVbaZx":[],"1LtXYvRr4j1WpLLA398nbmKhzhqq4abKi8":[],"1NfsUmibBxnuA3ir8GJvPUtY5czuiCfuYK":[],"1Q3cZjzADnnx5pcc1NN2ekJjLijNjXMXfr":[],"1okpBWorqo5WsBf5KmocsfhBCEDhNstW2":[]},"master_private_keys":{"x/":"xprv9s21ZrQH143K4D3WqM7zpQrWeqJHJRJhRhpkk5tr2fKBdoTTPDYUL88T12Ad9RHwViugcMbngkMDY626vD5syaFDoUB2cpLeraBaHvZHWFn"},"master_public_keys":{"x/":"xpub661MyMwAqRbcGh7ywNf1BYoFCs8mht2YnvkMYUJTazrAWbnbvkrisvSvrKGjRTDtw324xzprbDgphsmPv2pB6K5Sux3YNHC8pnJANCBY6vG"},"pruned_txo":{},"seed":"tent alien genius panic stage below spoon swap merge hammer gorilla squeeze ability","seed_version":11,"stored_height":489715,"transactions":{},"txi":{},"txo":{},"use_encryption":false,"wallet_type":"standard","winpos-qt":[100,100,840,400]}' + wallet_str = '{"accounts":{"0":{"change":["0253e61683b66ebf5a4916334adf1409ffe031016717868c9600d313e87538e745","021762e47578385ecedc03c7055da1713971c82df242920e7079afaf153cc37570","0303a8d6a35956c228aa95a17aab3dee0bca255e8b4f7e8155b23acef15cf4a974","02e881bc60018f9a6c566e2eb081a670f48d89b4a6615466788a4e2ce20246d4c6","02f0090e29817ef64c17f27bf6cdebc1222f7e11d7112073f45708e8d218340777","035b9c53b85fd0c2b434682675ac862bfcc7c5bb6993aee8e542f01d96ff485d67"],"receiving":["024fbc610bd51391794c40a7e04b0e4d4adeb6b0c0cc84ac0b3dad90544e428c47","024a2832afb0a366b149b6a64b648f0df0d28c15caa77f7bbf62881111d6915fe9","028cd24716179906bee99851a9062c6055ec298a3956b74631e30f5239a50cb328","039761647d7584ba83386a27875fe3d7715043c2817f4baca91e7a0c81d164d73d","02606fc2f0ce90edc495a617329b3c5c5cc46e36d36e6c66015b1615137278eabd","02191cc2986e33554e7b155f9eddcc3904fdba43a5a3638499d3b7b5452692b740","024b5bf755b2f65cab1f7e5505febc1db8b91781e5aac352902e79bc96ad7d9ad0","0309816cb047402b84133f4f3c5e56c215e860204513278beef54a87254e44c14a","03f53d34337c12ddb94950b1fee9e4a9cf06ad591db66194871d31a17ec7b59ac7","0325ede4b08073d7f288741c2c577878919fd5d832a9e6e04c9eac5563ae13aa83","02eca43081b04f68d6c8b81781acd59e5b8d2ba44dba195369afc40790fd9edef7","029a8ca96c64d3a98345be1594208908f2be5e6af6bcc6ff3681f271e75fcf232e","02fbe0804980750163a216cc91cfe86e907addf0e80797a8ea5067977eb4897c1b","0344f32fc1ee8b2eb08f419325529f495d77a3b5ea683bbce7a44178705ab59302","021dd62bdf18256bd5316ce3cbcca58785378058a41ba2d1c58f4cc76449b3c424","035e61cdbdb4306e58a816a19ad92c7ca3a392b67ac6d7257646868ffe512068c5","0326a4db82f21787d0246f8144abe6cda124383b7d93a6536f36c05af530ea262a","02b352a27a8f9c57b8e5c89b357ba9d0b5cb18bf623509b34cd881fcf8b89a819a","02a59188edef1ed29c158a0adb970588d2031cfe53e72e83d35b7e8dd0c0c77525","02e8b9e42a54d072c8887542c405f6c99cfabf41bdde639944b44ba7408837afd1"],"xpub":"xpub661MyMwAqRbcGh7ywNf1BYoFCs8mht2YnvkMYUJTazrAWbnbvkrisvSvrKGjRTDtw324xzprbDgphsmPv2pB6K5Sux3YNHC8pnJANCBY6vG"}},"accounts_expanded":{},"addr_history":{"LLZV4hbJrpmqLzBM11h3DeBdegK69wQPAW":[],"LLwUekV4w5Lcc38LKWuQLT8aiAzYUt6rV6":[],"LMxirHoS7Vw5Qh5rrE2QTxG4aL4j21r9LX":[],"LNrESPumL9SB3X8N1zaNZDMBXHgQybaGTT":[],"LPBpZ7r6wivP5E1ContrDiQwfPJkhWTbrF":[],"LPammZnQx2jSidgMFqJKSvZ29cQSNfc17S":[],"LS1jBo6sKnJhrCYn69KnEQYCeMRkDtkqkX":[],"LSCm9Suxt8vMkDAwvsYjgkgc3mbsQRfEne":[],"LUGZH4W2WgbbocHpr7TbDQuX3SSqxPLXLZ":[],"LV7AFyvimmPtM6Np9MmeKPQS4EWyG1kwBq":[],"LV8cZunhSG5zr91JV8TZgAxEA34UU4yR6h":[],"LVL4Uy18DVXgCC6MCjzbFvSNm7Sk6LpGsa":[],"LXHYwwutRt8HeK4cfopZMcEZqiGKLDy663":[],"LXsccbqTirgTStQp5GjiPiS2NkM2TDKFtF":[],"LYK4JdYGcfgyiKde2DghHFBPUvnzYgZLQp":[],"LZB3y15emUHJffWaFiYE6B4ajs8Xs23Lc1":[],"LZVyyNuudLYNyp1mzRzw1vZp9WPYobqd43":[],"Lb3ghucBMWaTXBnwjPCY9xXt3gqxSwt4GG":[],"LbH99hN6wL55qo6qTaNHzPB7hvmdKowJMY":[],"Lc1U6ETTUZTUQvP7KRPeFTLQ9UszVBUyZi":[],"LearupHXqoArAjmzhBt8k3FTonyvouya2f":[],"LegFaLyW1yEUqB7EoMDd7KwrfLxLrS7Yv6":[],"Lf7Up8jg9PFa592KDH85snPUCvD7CwMncF":[],"Lgtpjz2RGd2xQrR1JQJDfVxJHqNBtXWemb":[],"LiGZpxHzJT31LdJmBWMKvmNVYw6eunGpTP":[],"LL2i5PpdwW38mfspFTm6ttjTPQbVktGudJ":[]},"master_private_keys":{"x/":"xprv9s21ZrQH143K4D3WqM7zpQrWeqJHJRJhRhpkk5tr2fKBdoTTPDYUL88T12Ad9RHwViugcMbngkMDY626vD5syaFDoUB2cpLeraBaHvZHWFn"},"master_public_keys":{"x/":"xpub661MyMwAqRbcGh7ywNf1BYoFCs8mht2YnvkMYUJTazrAWbnbvkrisvSvrKGjRTDtw324xzprbDgphsmPv2pB6K5Sux3YNHC8pnJANCBY6vG"},"pruned_txo":{},"seed":"tent alien genius panic stage below spoon swap merge hammer gorilla squeeze ability","seed_version":11,"stored_height":489715,"transactions":{},"txi":{},"txo":{},"use_encryption":false,"wallet_type":"standard","winpos-qt":[100,100,840,400]}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_5_4_importedkeys(self): - wallet_str = '{"accounts":{"/x":{"imported":{"1364Js2VG66BwRdkaoxAaFtdPb1eQgn8Dr":["0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5","L2sED74axVXC4H8szBJ4rQJrkfem7UMc6usLCPUoEWxDCFGUaGUM"],"15CyDgLffJsJgQrhcyooFH4gnVDG82pUrA":["04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2","5JyVyXU1LiRXATvRTQvR9Kp8Rx1X84j2x49iGkjSsXipydtByUq"],"1Exet2BhHsFxKTwhnfdsBMkPYLGvobxuW6":["0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f","L3Gi6EQLvYw8gEEUckmqawkevfj9s8hxoQDFveQJGZHTfyWnbk1U"]}}},"accounts_expanded":{},"addr_history":{},"pruned_txo":{},"stored_height":489716,"transactions":{},"txi":{},"txo":{},"use_encryption":false,"wallet_type":"imported","winpos-qt":[595,261,840,400]}' + wallet_str = '{"accounts":{"/x":{"imported":{"LMK1a5LKLkLFCEKukwwTrGxPboNvZjDbcY":["0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5","T8hVerMmMsVnq7mkXpEw4krEhXJ5BZNVv7mb4C7LoV8Ni8iywME1"],"LPRvUteVjy7MwDYro7o6XJ8SzhaYBJQhoM":["04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2","6vHESf1YF8tPdqpGyEiNvibJPRZzKsB4ijYsywkUaz3SfUAnidY"],"LZBc9EVXNXW1aGdrxodATNp9kYeCxufeWb":["0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f","T96yXyhXKvujT4sMAPihoJJ2sXNTwDircc7WnT2qqXTdBs433uZ5"]}}},"accounts_expanded":{},"addr_history":{},"pruned_txo":{},"stored_height":489716,"transactions":{},"txi":{},"txo":{},"use_encryption":false,"wallet_type":"imported","winpos-qt":[595,261,840,400]}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_5_4_watchaddresses(self): - wallet_str = '{"accounts":{"/x":{"imported":{"1DgrwN2JCDZ6uPMSvSz8dPeUtaxLxWM2kf":[null,null],"1H3mPXHFzA8UbvhQVabcDjYw3CPb3djvxs":[null,null],"1HocPduHmQUJerpdaLG8DnmxvnDCVQwWsa":[null,null]}}},"accounts_expanded":{},"addr_history":{},"pruned_txo":{},"stored_height":490038,"transactions":{},"txi":{},"txo":{},"wallet_type":"imported","winpos-qt":[406,393,840,400]}' + wallet_str = '{"accounts":{"/x":{"imported":{"LXupCaL8GsoAAC3c6ayRuQiF6oKd6jzvF2":[null,null],"LbGiejb64pNXrjPZfiauVkchFQksBnFjrz":[null,null],"Lc2ZerD7r4iMufWnkUFRVoqj8zaUdra9gy":[null,null]}}},"accounts_expanded":{},"addr_history":{},"pruned_txo":{},"stored_height":490038,"transactions":{},"txi":{},"txo":{},"wallet_type":"imported","winpos-qt":[406,393,840,400]}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_5_4_trezor_singleacc(self): - wallet_str = '''{"accounts":{"0":{"change":["033608f89d381bcb9964df9da428d706d3eb30c14433af8de21bee2601e7392a80","0295c3905730d987ae9a9c09ad85c9c22c28aa414448f9d3450d8afb3da0d78890","038cf10bcf2bd3384f05974295fc83fc4e9cb48c0105995ad86d3ea237edb7e1d1","029b76e98f87c537165f016cf6840fe40c172ca0dba10278fb10e49a2b718cd156","034f08127c3651e5c5a65803e22dcbb1be10a90a79b699173ed0de82e0ceae862e","036013206a41aa6f782955b5a3b0e67f9a508ecd451796a2aa4ee7a02edef9fb7e"],"receiving":["020be78fa1a35e44fb1ee3141b40bd8d68330f12f98fdef5ba249b4d8c52a6a1ae","03f23e9a3b5337f322f720f533653349f6e97228d1c4a6feca36d4d1554aa19f74","03d3e7cfde0117561856e6e43d87852480c512910bfd1988c2ff1e6f6d795f7046","02ec56fc0bfe6a1466a783737919edbe83c8907af29a5ae672919ffcb1bb96303f","031b1d151f6584f9926614a7c335ee61606ff7a9769ca6e175ad99f9c7b5e9fb4d","03d782be0ace089e02529029b08ca9107b0e58302306de30bd9f9a3a1ed40c3717","0325784a4290eeeea1f99a928cf6c75c33417659dbd50a3a2850136dc3138ba631","035b7c1176926a54cdeb0342df5ecc7bb3fe1820fce99491fb50c091e3093f200f","02e0a2d615bff26a57754afa0e8ac8b692a79b399f6d04647398f377dcac4116be","026c7cee5bce1ae9e2fa930001ece81c35442a461fc9ef1266ac3d41b9f13e3bd5","0217b1d5066708e0cdaee99087c407db684131e34578adc7800dc66f329576c457","03ec0ed891b0ead00f1eaca7a4736d6816e348731d995bd4e77acbc8c582f68429","028cb4c682dde9692de47f71f3b16755cc440d722b84eed68db2b3d80bce83d50a","03d5d770a58d32b5d59b12861bbda37560fe7b789181b3349abf56223ea61b39c4","0250b6aee8338ac0497f2106b0ed014f5a2419c7bf429eb2b17a70bec77e6ff482","02565da9be6fc66a1e354638dcd8a4244e8733f38599c91c4f1ab0fb8d5d94fd2f","02e6c88509ff676b686afc2326370684bbc6edc0b31e09f312df4f7a17fe379e31","02224fef0921e61adcb2cd14ef45dbe4b859f1fcdc62eba26c6a7ce386c0a8f4b1","034c63da9c2a20132d9fd1088028de18f7ccd72458f9eb07a72452bd9994d28b1f","032bfe2fc88a55e19ba2338155b79e67b7d061d5fd1844bc8edc1808d998f8ba2c"],"xpub":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9"}},"accounts_expanded":{},"addr_history":{},"labels":{"0":"Main account"},"master_public_keys":{"x/0'":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9","x/1'":"xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG"},"next_account2":["1","xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG","03571f041921078b153a496638d703dfd1cee75e73c42653bbe0650ab6168d6a5b","18i2zqeCh6Gjto81KvVaeSM8YBUAkmgjRG"],"pruned_txo":{},"stored_height":490046,"transactions":{},"txi":{},"txo":{},"wallet_type":"trezor","winpos-qt":[522,328,840,400]}''' + wallet_str = '''{"accounts":{"0":{"change":["033608f89d381bcb9964df9da428d706d3eb30c14433af8de21bee2601e7392a80","0295c3905730d987ae9a9c09ad85c9c22c28aa414448f9d3450d8afb3da0d78890","038cf10bcf2bd3384f05974295fc83fc4e9cb48c0105995ad86d3ea237edb7e1d1","029b76e98f87c537165f016cf6840fe40c172ca0dba10278fb10e49a2b718cd156","034f08127c3651e5c5a65803e22dcbb1be10a90a79b699173ed0de82e0ceae862e","036013206a41aa6f782955b5a3b0e67f9a508ecd451796a2aa4ee7a02edef9fb7e"],"receiving":["020be78fa1a35e44fb1ee3141b40bd8d68330f12f98fdef5ba249b4d8c52a6a1ae","03f23e9a3b5337f322f720f533653349f6e97228d1c4a6feca36d4d1554aa19f74","03d3e7cfde0117561856e6e43d87852480c512910bfd1988c2ff1e6f6d795f7046","02ec56fc0bfe6a1466a783737919edbe83c8907af29a5ae672919ffcb1bb96303f","031b1d151f6584f9926614a7c335ee61606ff7a9769ca6e175ad99f9c7b5e9fb4d","03d782be0ace089e02529029b08ca9107b0e58302306de30bd9f9a3a1ed40c3717","0325784a4290eeeea1f99a928cf6c75c33417659dbd50a3a2850136dc3138ba631","035b7c1176926a54cdeb0342df5ecc7bb3fe1820fce99491fb50c091e3093f200f","02e0a2d615bff26a57754afa0e8ac8b692a79b399f6d04647398f377dcac4116be","026c7cee5bce1ae9e2fa930001ece81c35442a461fc9ef1266ac3d41b9f13e3bd5","0217b1d5066708e0cdaee99087c407db684131e34578adc7800dc66f329576c457","03ec0ed891b0ead00f1eaca7a4736d6816e348731d995bd4e77acbc8c582f68429","028cb4c682dde9692de47f71f3b16755cc440d722b84eed68db2b3d80bce83d50a","03d5d770a58d32b5d59b12861bbda37560fe7b789181b3349abf56223ea61b39c4","0250b6aee8338ac0497f2106b0ed014f5a2419c7bf429eb2b17a70bec77e6ff482","02565da9be6fc66a1e354638dcd8a4244e8733f38599c91c4f1ab0fb8d5d94fd2f","02e6c88509ff676b686afc2326370684bbc6edc0b31e09f312df4f7a17fe379e31","02224fef0921e61adcb2cd14ef45dbe4b859f1fcdc62eba26c6a7ce386c0a8f4b1","034c63da9c2a20132d9fd1088028de18f7ccd72458f9eb07a72452bd9994d28b1f","032bfe2fc88a55e19ba2338155b79e67b7d061d5fd1844bc8edc1808d998f8ba2c"],"xpub":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9"}},"accounts_expanded":{},"addr_history":{},"labels":{"0":"Main account"},"master_public_keys":{"x/0'":"xpub6D77dkWgEcSNBq7xDA1RUysGvD64QNy2TykC9UuRK6fEzqy3512HR2p2spstKCybkhDqkNStPWZKcnhwdD6kDYWJxsTQJhg9RCwifzcfJN9","x/1'":"xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG"},"next_account2":["1","xpub6D77dkWgEcSNFtXV2CQgsbfG33VyGMaUtUdpbdfMMHsS4WDzLtRapchQWcVBMFFjdRYjhkvQwGnJeKWPP3C2e1DevATAEUzL258Lhfkd7KG","03571f041921078b153a496638d703dfd1cee75e73c42653bbe0650ab6168d6a5b","LSvzG3x2mkWo9bpAW4UsvTQtkPqSoUkJop"],"pruned_txo":{},"stored_height":490046,"transactions":{},"txi":{},"txo":{},"wallet_type":"trezor","winpos-qt":[522,328,840,400]}''' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_5_4_trezor_multiacc(self): - wallet_str = '''{"accounts":{"0":{"change":["03143bc04f007c454e03caf9d59b61e27f527b5e6723e167b50197ce45e2071902","03157710459a8213a79060e2f2003fe0eb7a7ed173ac3f846309de52269dd44740","028ec4bbbf4ac9edfabb704bd82acb0840f2166312929ce01af2b2e99059b16dee","021a9f1201968bd835029daf09ae98745a75bcb8c6143b80610cfc2eb2eee94dd8","031fe8323703fee4a1f6c59f27ceed4e227f5643b1cb387b39619b6b5499a971b4","033199fc62b72ce98e3780684e993f31d520f1da0bf2880ed26153b2efcc86ac1d"],"receiving":["03d27c0f5594d8df0616d64a735c909098eb867d01c6f1588f04ca2cf353837ec0","024d299f21e9ee9cc3eb425d04f45110eff46e45abcab24a3e594645860518fb97","03f6bc650e5f118ab4a63359a9cde4ab8382fe16e7d1b36b0a459145a79bef674b","028bed00a2fbd03f1ff43e0150ec1018458f7b39f3e4e602e089b1f47f8f607136","02108b15014d53f2e4e1b5b2d8f5eaf82006bbc4f273dbfbaef91eff08f9d10ea5","02a9a59a529818f3ba7a37ebe34454eac2bcbe4da0e8566b13f369e03bb020c4c4","023fde4ecf7fbdffb679d92f58381066cf2d840d34cb2d8bef63f7c5182d278d53","02ad8bf6dc0ff3c39bd20297d77fbd62073d7bf2fa44bf716cdd026db0819bb2b4","029c8352118800beaef1f3fa9c12afe30d329e7544bea9b136b717b88c24d95d92","02c42c251392674e2c2768ccd6224e04298bd5479436f02e9867ecc288dd2eb066","0316f3c82d9fce97e267b82147d56a4b170d39e6cf01bfaff6c2ae6bcc79a14447","0398554ee8e333061391b3e866505bbc5e130304ae09b198444bcd31c4ba7846ea","02e69d21aadb502e9bd93c5536866eff8ca6b19664545ccc4e77f3508e0cbe2027","0270fb334407a53a23ad449389e2cb055fae5017ca4d79ec8e082038db2d749c50","03d91a8f47453f9da51e0194e3aacff88bf79a625df82ceee73c71f3a7099a5459","0306b2d3fd06c4673cc90374b7db0c152ba7960be382440cecc4cdad7642e0537c","028020dd6062f080e1e2b49ca629faa1407978adab13b74875a9de93b16accf804","03907061c5f6fde367aafe27e1d53b39ff9c2babffe8ab7cf8c3023acba5c39736","029749462dba9af034455f5e0f170aac67fe9365ce7126092b4d24ced979b5381f","02f001d35308833881b3440670d25072256474c6c4061daf729055bf9563134105"],"xpub":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y"},"1":{"change":["03b0df486b4e1baa03ad565622820d692089b059c8f9fefa3567c3fa26d0cbaa34","0294c76c062c865873dccab84d51682f880e0197b64789c61bff85e1be2506925e","036f900d0c6bafbbcac0fbc95bed44954007faa182655cf69dc84d50c22e6edce8","03d1be74f1360ecede61ad1a294b2e53d64d44def67848e407ec835f6639d825ff","03a6a526cfadd510a47da95b074be250f5bb659b857b8432a6d317e978994c30b7","022216da9e351ae57174f93a972b0b09d788f5b240b5d29985174fbd2119a981a9"],"receiving":["02106878f6aefd9a81e1ca4a5f30ea0e1851aa36404fb62d19bd2325e180112b58","039e95f369e8d65aa7a7bf6a5d7d3259b827c1549c77c9b502b75a18f7708a9aa9","0273197861097be131542f8b7e03bc912934da51bc957d425be5bc7c1b69fb44ec","02b4c829b6a20815c5e1eef7ffd5d55c99505a7afeac5135ec2c97cfaae3483604","0312b1285272f1005c5834de2eec830ce9f9163c842d728c3921ae790716d8503f","0354059948c709c777a49a37e150271a3377f7aaee17798253d5240e4119f2a1c6","03800d87cc3878912d22a42a79db7ddbff3efec727d29ae1c0165730e5314483cd","03cafa35ad9adb41cff39e3bc2e0592d88c8b91981e73f068397e6c863c42c7b00","028668f734a4927e03621e319ab385919e891d248c86aea07ab922492d3d414ad3","02e42d46823893978ae7be9e032be21ce3e613cecb5ffe687b534795f90dc8ef85","03b86914af797e7b68940bc4ee2dec134036781a8e23ffaf4189ca7637e0afe898","021221ae9be51a9747aa7ebc2213a42a2364ce790ee86255277dc5f9beeb0bf6b4","03c8d58183f5d8102f8eb5f6db0f60add0a51ec6737097c46fc8a6b7c840d7571f","0304de0806b299cef4be3a162bac78f811d4adacc6a229ffdaeb7333bce72d88ff","03e08262e18616a3a9b9aecbfb8a860ccee147820a3c60050695ef72ff2cedc4a7","02caf4d61bb5deec29a39e5a1cc6d5987ec71d61d57c57bb5c2a47dd9266130bec","0252d429002d9c06f0befbef6c389bdd021969b416dd83d220394e414bd5d83c0a","024e23ce58533163df3e1d5766295144beb8f9729b1ac41e80ba485f39c483dfe6","026de9e7e6b11fbecd88b7b49915b5df64d672ef900aa043a8cac3bc79eb414089","02aaac08fc100014ec692efa0f3b408bf741e1dc68ebe28ce41837662810f40986","03e0d2b426705dcc5cb62c6113b10153f10624c926a3fe86142fd9020e7d6a2129"],"xpub":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH"}},"accounts_expanded":{},"addr_history":{"12bBPWWDwvtXrR9ntSgaQ7AnGyVJr16m5q":[],"12vWPzJtGLKRZjnYVtWSufjRuoE8pHLpmi":[["a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837",490002]],"13853om3ye5c8x6K1LfT3uCWEnG14Z82ML":[],"13BGVmizH8fk3qNm1biNZxAaQY3vPwurjZ":[],"13Tvp2DLQFpUxvc7JxAD3TXfAUWvjhwUiL":[],"15EQcTGzduGXSaRihKy1FY99EQQco8k2UW":[],"15paDwtQ33jJmJhjoBJhpWYGJDFCZppEF9":[],"17X8K766zBYLTjSNvHB9hA6SWRPMTcT556":[],"17zSo4aveNaE5DiTmwNZtxrJmS5ymzvwqj":[],"19BRVkUFfrAcxW9poaBSEUA2yv7SwN3SXh":[],"19gPT2mb9FQCiiPdAmMAaberShzNRiAtTB":[],"1A3vopoUcrWn7JbiAzGZactQz8HbnC1MoD":[],"1D1bn2Jzcx4D2GXbxzrJ1GwP4eNq98Q948":[],"1DvytpRGLJujPtSLYTRABzpy2r6hKJBYQd":[],"1EGg2acXNhJfv1bU3ixrbrmgxFtAUWpdY":[],"1Ev3S9YWxS7KWT8kyLmEuKV5sexNKcMUKV":[],"1FfpRnukxbfBnoudWvw9sdmc86YbVs7eGb":[],"1GBxNE82WLgd38CzoFTEkz6QS9EwLj1ym7":[],"1JFDe97zENNUiKeizcFUHss13vS2AcrVdE":[],"1JGek3B8b3Nt3p39x27QK5UnFtNnZ2ZdGJ":[],"1JQqX3yg6VYxL6unuRArDQaBZYo3ktSCCP":[],"1JUbrr4grE71ZgWNqm9z9ZHHJDcCzFYM4V":[],"1JuHUVbYfBLDUhTHx5tkDDyDbCnMsF8C9w":[],"1KZu7p244ETkdB5turRP4vhG2QJskARYWS":[],"1LE7jioE7y24m3MMZayRKpvdCy2Dz2LQae":[],"1LVr2pTU7LPQu8o8DqsxcGrvwu5rZADxfi":[],"1LmugnVryiuMbgdUAv3LucnRMLvqg8AstU":[],"1MPN5vptDZCXc11fZjpW1pvAgUZ5Ksh3ky":[]},"labels":{"0":"Main account"},"master_public_keys":{"x/0'":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y","x/1'":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH","x/2'":"xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa"},"next_account2":["2","xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa","031b68cff8114df7677c4fe80619b701ea966428ecbeba55c9224cd8149cc5f05e","1JGek3B8b3Nt3p39x27QK5UnFtNnZ2ZdGJ"],"pruned_txo":{},"stored_height":490009,"transactions":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":"01000000018394dfaba83ca6f510f622ecf95b445e856eab3193cb0dad53e1262841149d5f00000000da0047304402207761cdbf009c0bd3864c6a457288cadfa565601f782cc09f0046926d54a1b68b022060b73a7babb5dfd5188c4697cfcab6c15c4dd3de8507d39722e3a6b728f697dc01483045022100a540921229b02c4cfbf2d57222a455cbb4a5bd09bff063749fb71292f720850a02204dd18369213ec4cb033cbf222e8439eb8a9dd0a1b864bfeefa44cfe0c0066ee401475221025966a0193194a071e71501f9f8987111f7364bd8105a006f908b1f743da8d353210397c83f4963bdf333f129ab8000d89536bfea0971fc7578fdff5c2104b296c4d252aefdffffff0288130000000000001976a9141516b5e9653ab1fb09180186077fc2d7dfa07e5788aca0ba09000000000017a9148132c19d6b9abba9ec978ca5269d577ae104541e8700000000"},"txi":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":{}},"txo":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":{"12vWPzJtGLKRZjnYVtWSufjRuoE8pHLpmi":[[0,5000,false]]}},"verified_tx3":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":[490002,1508090436,607]},"wallet_type":"trezor","winpos-qt":[757,469,840,400]}''' + wallet_str = '''{"accounts":{"0":{"change":["03143bc04f007c454e03caf9d59b61e27f527b5e6723e167b50197ce45e2071902","03157710459a8213a79060e2f2003fe0eb7a7ed173ac3f846309de52269dd44740","028ec4bbbf4ac9edfabb704bd82acb0840f2166312929ce01af2b2e99059b16dee","021a9f1201968bd835029daf09ae98745a75bcb8c6143b80610cfc2eb2eee94dd8","031fe8323703fee4a1f6c59f27ceed4e227f5643b1cb387b39619b6b5499a971b4","033199fc62b72ce98e3780684e993f31d520f1da0bf2880ed26153b2efcc86ac1d"],"receiving":["03d27c0f5594d8df0616d64a735c909098eb867d01c6f1588f04ca2cf353837ec0","024d299f21e9ee9cc3eb425d04f45110eff46e45abcab24a3e594645860518fb97","03f6bc650e5f118ab4a63359a9cde4ab8382fe16e7d1b36b0a459145a79bef674b","028bed00a2fbd03f1ff43e0150ec1018458f7b39f3e4e602e089b1f47f8f607136","02108b15014d53f2e4e1b5b2d8f5eaf82006bbc4f273dbfbaef91eff08f9d10ea5","02a9a59a529818f3ba7a37ebe34454eac2bcbe4da0e8566b13f369e03bb020c4c4","023fde4ecf7fbdffb679d92f58381066cf2d840d34cb2d8bef63f7c5182d278d53","02ad8bf6dc0ff3c39bd20297d77fbd62073d7bf2fa44bf716cdd026db0819bb2b4","029c8352118800beaef1f3fa9c12afe30d329e7544bea9b136b717b88c24d95d92","02c42c251392674e2c2768ccd6224e04298bd5479436f02e9867ecc288dd2eb066","0316f3c82d9fce97e267b82147d56a4b170d39e6cf01bfaff6c2ae6bcc79a14447","0398554ee8e333061391b3e866505bbc5e130304ae09b198444bcd31c4ba7846ea","02e69d21aadb502e9bd93c5536866eff8ca6b19664545ccc4e77f3508e0cbe2027","0270fb334407a53a23ad449389e2cb055fae5017ca4d79ec8e082038db2d749c50","03d91a8f47453f9da51e0194e3aacff88bf79a625df82ceee73c71f3a7099a5459","0306b2d3fd06c4673cc90374b7db0c152ba7960be382440cecc4cdad7642e0537c","028020dd6062f080e1e2b49ca629faa1407978adab13b74875a9de93b16accf804","03907061c5f6fde367aafe27e1d53b39ff9c2babffe8ab7cf8c3023acba5c39736","029749462dba9af034455f5e0f170aac67fe9365ce7126092b4d24ced979b5381f","02f001d35308833881b3440670d25072256474c6c4061daf729055bf9563134105"],"xpub":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y"},"1":{"change":["03b0df486b4e1baa03ad565622820d692089b059c8f9fefa3567c3fa26d0cbaa34","0294c76c062c865873dccab84d51682f880e0197b64789c61bff85e1be2506925e","036f900d0c6bafbbcac0fbc95bed44954007faa182655cf69dc84d50c22e6edce8","03d1be74f1360ecede61ad1a294b2e53d64d44def67848e407ec835f6639d825ff","03a6a526cfadd510a47da95b074be250f5bb659b857b8432a6d317e978994c30b7","022216da9e351ae57174f93a972b0b09d788f5b240b5d29985174fbd2119a981a9"],"receiving":["02106878f6aefd9a81e1ca4a5f30ea0e1851aa36404fb62d19bd2325e180112b58","039e95f369e8d65aa7a7bf6a5d7d3259b827c1549c77c9b502b75a18f7708a9aa9","0273197861097be131542f8b7e03bc912934da51bc957d425be5bc7c1b69fb44ec","02b4c829b6a20815c5e1eef7ffd5d55c99505a7afeac5135ec2c97cfaae3483604","0312b1285272f1005c5834de2eec830ce9f9163c842d728c3921ae790716d8503f","0354059948c709c777a49a37e150271a3377f7aaee17798253d5240e4119f2a1c6","03800d87cc3878912d22a42a79db7ddbff3efec727d29ae1c0165730e5314483cd","03cafa35ad9adb41cff39e3bc2e0592d88c8b91981e73f068397e6c863c42c7b00","028668f734a4927e03621e319ab385919e891d248c86aea07ab922492d3d414ad3","02e42d46823893978ae7be9e032be21ce3e613cecb5ffe687b534795f90dc8ef85","03b86914af797e7b68940bc4ee2dec134036781a8e23ffaf4189ca7637e0afe898","021221ae9be51a9747aa7ebc2213a42a2364ce790ee86255277dc5f9beeb0bf6b4","03c8d58183f5d8102f8eb5f6db0f60add0a51ec6737097c46fc8a6b7c840d7571f","0304de0806b299cef4be3a162bac78f811d4adacc6a229ffdaeb7333bce72d88ff","03e08262e18616a3a9b9aecbfb8a860ccee147820a3c60050695ef72ff2cedc4a7","02caf4d61bb5deec29a39e5a1cc6d5987ec71d61d57c57bb5c2a47dd9266130bec","0252d429002d9c06f0befbef6c389bdd021969b416dd83d220394e414bd5d83c0a","024e23ce58533163df3e1d5766295144beb8f9729b1ac41e80ba485f39c483dfe6","026de9e7e6b11fbecd88b7b49915b5df64d672ef900aa043a8cac3bc79eb414089","02aaac08fc100014ec692efa0f3b408bf741e1dc68ebe28ce41837662810f40986","03e0d2b426705dcc5cb62c6113b10153f10624c926a3fe86142fd9020e7d6a2129"],"xpub":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH"}},"accounts_expanded":{},"addr_history":{"LLp8eip42b8b7Dqx4afsg8EYVBrb3XoDhJ":[],"LM9TfCciLzZUpYUhg2VkBgoC81bQwrav4C":[["a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837",490002]],"LMM2K24t4JKfPknUBUekKvGGSzdHCEmtER":[],"LMQDkz2pMnuoJe4vBjhfqyELckRCXv6Joe":[],"LMgt5EXAUv4YDjJGV69WKUbRNgtCm3u6cc":[],"LPTMsfapiZWahP7ssTxJXZCuScmtxuRRmB":[],"LQ3XVACE7hyN27PtyKJ16Xc2WRcUcbzv5t":[],"LRk5aKPw4qnPiY8Y6RASyBACidkddJuXmS":[],"LSDQ4Gtkj2pHL2Qcx5MsAyv4yeTFzwuQ9P":[],"LTQNkxn5kWQgDJqyyiAjWVDoC8Uizu2sAX":[],"LTuLiF5RDueFyX5nLuLTrcicevMeaMTyUA":[],"LUGt537JhWkqN7HsM8FrrdxBCLestA2JqB":[],"LXEZ3EcphcJGH5Dm98qbHJ19Grk7AzFrW3":[],"LY9wA2j6Qy9neh8VibQTU1tjF4TyXiqHyg":[],"LKTDwEtSc2wMvihkeBiG8cvXuAdAEo5pWQ":[],"LZ8zhMrM36MNmFpv9UkYBLYr5sKeTwBMuz":[],"LZtmh1Db3FuF3cbnh4vT9eqNLJusZXGJG1":[],"LaQudSRrazvgHvu9yPSY31AAeMcDX3Wkoo":[],"LcUAuMRpK2cXy8LtAkEmZtvmG8oJGfEbV5":[],"LcVc1FUxfhcwJcjK8A6hb6YYU6k4e4MLdT":[],"LcdnnGHWB9o1aubx5ZA9VRdwmmAKzT3F6W":[],"LchZ84NWvtM4pVCY1u9HRaM3WRyV7Wtpaq":[],"Ld8EjhuNjqaGjW9T8Dt3VF2yoR9dyUCK8Q":[],"LdnrP2Kt8thosyn45zQgLwm2Ecg9tRyzZ8":[],"LeT4zw74CdG81r3WjixibqzPRBPWBvuKeg":[],"LeioJ2mJBzdU9wVHPysFtHvhA7T8ejJbav":[],"Lezrwzoh4P9QrVKdM42eBdrBZZJ7jP6Amz":[],"LfcKM98iJDSarohpjsooHqyvtgvMW6sc61":[]},"labels":{"0":"Main account"},"master_public_keys":{"x/0'":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y","x/1'":"xpub6BycoSLDNcWjFs4B6T82q4zCbJBJdzQLwburAtBAwTLPyDPtkotGUWbef1t8D6XuCs6Yz5FUgFaL2hNzCTGe8F1bf9vNyXFMgLyKV65C9BH","x/2'":"xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa"},"next_account2":["2","xpub6BycoSLDNcWjHWrJyJJYmq9dDwBxSkFbWeaFFcrB6zBH9JTvyRVbAoWcmbPRmxicUkiutGQWqfsom9CbKSVG8Zh5HqHyR25xHE1xxmHeNYa","031b68cff8114df7677c4fe80619b701ea966428ecbeba55c9224cd8149cc5f05e","LcVc1FUxfhcwJcjK8A6hb6YYU6k4e4MLdT"],"pruned_txo":{},"stored_height":490009,"transactions":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":"01000000018394dfaba83ca6f510f622ecf95b445e856eab3193cb0dad53e1262841149d5f00000000da0047304402207761cdbf009c0bd3864c6a457288cadfa565601f782cc09f0046926d54a1b68b022060b73a7babb5dfd5188c4697cfcab6c15c4dd3de8507d39722e3a6b728f697dc01483045022100a540921229b02c4cfbf2d57222a455cbb4a5bd09bff063749fb71292f720850a02204dd18369213ec4cb033cbf222e8439eb8a9dd0a1b864bfeefa44cfe0c0066ee401475221025966a0193194a071e71501f9f8987111f7364bd8105a006f908b1f743da8d353210397c83f4963bdf333f129ab8000d89536bfea0971fc7578fdff5c2104b296c4d252aefdffffff0288130000000000001976a9141516b5e9653ab1fb09180186077fc2d7dfa07e5788aca0ba09000000000017a9148132c19d6b9abba9ec978ca5269d577ae104541e8700000000"},"txi":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":{}},"txo":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":{"LM9TfCciLzZUpYUhg2VkBgoC81bQwrav4C":[[0,5000,false]]}},"verified_tx3":{"a242aeff746aa481c5d8a496111039262f2a3fbde6038124301522539fa06837":[490002,1508090436,607]},"wallet_type":"trezor","winpos-qt":[757,469,840,400]}''' self._upgrade_storage(wallet_str, accounts=2) def test_upgrade_from_client_2_5_4_multisig(self): - wallet_str = '{"accounts":{"0":{"change":[["02a63209b49df0bb98d8a262e9891fe266ffdce4be09d5e1ffaf269a10d7e7a17c","02a074035006ed8ee8f200859c004c073b687140f7d40bd333cdbbe43bad1e50bc"],["0280e2367142669e08e27fb9fd476076a7f34f596e130af761aef54ec54954a64d","02719a66c59f76c36921cf7b330fca7aaa4d863ee367828e7d89cd2f1aad98c3ac"],["0332083e80df509d3bd8a06538ca20030086c9ed3313300f7313ed98421482020f","032f336744f53843d8a007990fa909e35e42e1e32460fae2e0fc1aef7c2cff2180"],["03fe014e5816497f9e27d26ce3ae8d374edadec410227b2351e9e65eb4c5d32ab7","0226edd8c3af9e339631145fd8a9f6d321fdc52fe0dc8e30503541c348399dd52a"],["03e6717b18d7cbe264c6f5d0ad80f915163f6f6c08c121ac144a7664b95aedfdf3","03d69a074eba3bc2c1c7b1f6f85822be39aee20341923e406c2b445c255545394a"],["023112f87a5b9b2eadc73b8d5657c137b50609cd83f128d130172a0ed9e3fea9bc","029a81fd5ba57a2c2c6cfbcb34f369d87af8759b66364d5411eddd28e8a65f67fa"]],"m":2,"receiving":[["03c35c3da2c864ee3192a847ffd3f67fa59c095d8c2c0f182ed9556308ec37231e","03cfcb6d1774bfd916bd261232645f6c765da3401bf794ab74e84a6931d8318786"],["03973c83f84a4cf5d7b21d1e8b29d6cbd4cb40d7460166835cd1e1fd2418cfcf2e","03596801e66976959ac1bdb4025d65a412d95d320ed9d1280ac3e89b041e663cf4"],["02b78ac89bfdf90559f24313d7393af272092827efc33ba3a0d716ee8b75fd08ff","038e21fae8a033459e15a700551c1980131eb555bbb8b23774f8851aa10dcac6b8"],["0288e9695bb24f336421d5dcf16efb799e7d1f8284413fe08e9569588bc116567e","027123ba3314f77a8eb8bb57ba1015dd6d61b709420f6a3320ba4571b728ef2d91"],["0312e1483f7f558aef1a14728cc125bb4ee5cff0e7fa916ba8edd25e3ebceb05e9","02dad92a9893ad95d3be5ebc40828cef080e4317e3a47af732127c3fee41451356"],["03a694e428a74d37194edc9e231e68399767fdb38a20eca7b72caf81b7414916a8","03129a0cef4ed428031972050f00682974b3d9f30a571dc3917377595923ac41d8"],["026ed41491a6d0fb3507f3ca7de7fb2fbfdfb28463ae2b91f2ab782830d8d5b32c","03211b3c30c41d54734b3f13b8c9354dac238d82d012839ee0199b2493d7e7b6fc"],["03480e87ffa55a96596be0af1d97bca86987741eb5809675952a854d59f5e8adc2","0215f04df467d411e2a9ed8883a21860071ab721314503019a10ed30e225e522e7"],["0389fce63841e9231d5890b1a0c19479f8f40f4f463ef8e54ef306641abe545ac8","02396961d498c2dcb3c7081b50c5a4df15fda31300285a4c779a59c9abc98ea20d"],["03d4a3053e9e08dc21a334106b5f7d9ac93e42c9251ceb136b83f1a614925eb1fb","025533963c22b4f5fbfe75e6ee5ad7ee1c7bff113155a7695a408049e0b16f1c52"],["038a07c8d2024b9118651474bd881527e8b9eb85fc90fdcb04c1e38688d498de4b","03164b188eb06a3ea96039047d0db1c8f9be34bfd454e35471b1c2f429acd40afb"],["0214070cd393f39c062ce1e982a8225e5548dbbbd654aeba6d36bfcc7a685c7b12","029c6a9fb61705cc39bef34b09c684a362d4862b16a3b0b39ca4f94d75cd72290c"],["027b3497f72f581fea0a678bc20482b6fc7b4b507f7263d588001d73fdf5fe314e","021b80b159d19b6978a41c2a6bf7d3448bc73001885f933f7854f450b5873091f3"],["0303e9d76e4fe7336397c760f6fdfd5fb7500f83e491efb604fa2442db6e1da417","03a8d1b22a73d4c181aecd8cfe8bb2ee30c5dd386249d2a5a3b071b7a25b9da73a"],["0298e472b74832af856fb68eed02ff00a235fd0424d833bc305613e9f44087d0ee","03bb9bc2e4aaa9b022b35c8d122dfccb6c28ae8f0996a8fb4a021af8ec96a7beaf"],["02e933a4afb354500da03373514247e1be12e67cc4683e0cb82f508878cc3cc048","02c07a57b071bc449a95dd80308e53b26e4ebf4d523f620eecb17f96ae3aa814e9"],["03f73476951078b3ccc549bc7e6362797aaaacb1ea0edc81404b4d16cb321255a3","03b3a825fb9fc497e568fba69f70e2c3dcdc793637e242fce578546fcbd33cb312"],["03bbdf99fddeea64a96bbb9d1e6d7ced571c9c7757045dcbd8c40137125b017dc5","03aedf4452afefb1c3da25e698f621cb3a3a0130aa299488e018b93a45b5e6c21d"],["03b85891edb147d43c0a5935a20d6bbf8d32c542bfecccf3ae0158b65bd639b34e","03b34713c636a1c103b82d6cec917d442c59522ddc5a60bf7412266dd9790e7760"],["028ddf53b85f6c01122a96bd6c181ee17ca222ee9eca85bdeeb25c4b5315005e3b","02f4821995bfd5d0adb7a78d6e3a967ac72ace9d9a4f9392aff2711533893e017b"]],"xpubs":["xpub661MyMwAqRbcGHtCYBSGGVgMSihroMkuyE25GPyzfQvS2vSFG7SgJYf7rtXJjMh7srBJj8WddLtjapHnUQLwJ7kxsy5HiNZnGvF9pm2du7b","xpub661MyMwAqRbcEdd7bzA86LbhMoTv8NeyqcNP5z1Tiz9ajCRQDzdeXHw3h5ucDNGWr6mPFCZBcBE31VNKyR3vWM7WEeisu5m4VsCyuA6H8fp"]}},"accounts_expanded":{},"addr_history":{"32JvbwfEGJwZHGm3nwYiXyfsnGCb3L8hMX":[],"32pWy5sKkQsjyDz45tog47cA8vQyzC3UUZ":[],"334yqX1WtS6mY2vize7znTaL64HspwVkGF":[],"33GY9w6a4XmLAWxNgNFFRXTTRxbu3Nz8ip":[],"33geBcyW8Bw53EgAv3qwMVkVnvxZWj5J1X":[],"35BneogkCNxSiSN1YLmhKLP8giDbGkZiTX":[],"37U4J5b9B7rQnQXYstMoQnb6i9aWpptnLi":[],"37gqbHdbrCcGyrNF21AiDkofVCie5LpFmQ":[],"37t1Q5R92co4by2aagtLcqdWTDEzFuAuwZ":[],"37z3ruAHCxnzeJeLz96ZpkbwS3CLbtXtPc":[],"39qePsKaeviFEMC6CWX37DqaQda4jA2E6A":[],"3A5eratrDWu4SqsoHpuqswNsQmp9k8TXR2":[],"3B1N3PG5dNPYsTAuHFbVfkwXeZqqNS1CuP":[],"3BABbvd3eAuwiqJwppm54dJauKnRUieQU8":[],"3CAsH7BJnNT4kmwrbG8XZMMwW6ue8w4auJ":[],"3CX2GLCTfpFHSgAmbGRmuDKGHMbWY8tCp7":[],"3CrLUTVHuG1Y3swny9YDmkfJ89iHHU93NB":[],"3CxRa6yAQ2N2rpDHyUTaViGG4XVASAqwAN":[],"3DLTrsdYabso7QpxoLSW5ZFjLxBwrLEqqW":[],"3GG3APgrdDCTmC9tTwWu3sNV9aAnpFcddA":[],"3JDWpTxnsKoKut9WdG4k933qmPE5iJ8hRR":[],"3LdHoahj7rHRrQVe38D4iN43ySBpW5HQRZ":[],"3Lt56BqiJwZ1um1FtXJXzbY5uk32GVBa8K":[],"3MM9417myjN7ubMDkaK1wQ9RbjEc1zHCRH":[],"3NTivFVXva4DCjPmsf5p5Gt1dmuV39qD2v":[],"3QCwtjMywMtT3Vg6BwS146LcQjJnZPAPHZ":[]},"master_private_keys":{"x1/":"xprv9s21ZrQH143K29YeVxd7jCexomdRiuw8UPSnHbbrAecbrQ6FgTKPyVcZqp2256L5DSTdb8UepPVaDwJecswTrEhdyZiaNGERJpfzWV5FcN5"},"master_public_keys":{"x1/":"xpub661MyMwAqRbcEdd7bzA86LbhMoTv8NeyqcNP5z1Tiz9ajCRQDzdeXHw3h5ucDNGWr6mPFCZBcBE31VNKyR3vWM7WEeisu5m4VsCyuA6H8fp","x2/":"xpub661MyMwAqRbcGHtCYBSGGVgMSihroMkuyE25GPyzfQvS2vSFG7SgJYf7rtXJjMh7srBJj8WddLtjapHnUQLwJ7kxsy5HiNZnGvF9pm2du7b"},"pruned_txo":{},"seed":"park dash merit trend life field acid wrap dinosaur kit bar hotel abuse","seed_version":11,"stored_height":490034,"transactions":{},"txi":{},"txo":{},"use_encryption":false,"wallet_type":"2of2","winpos-qt":[564,329,840,400]}' + wallet_str = '{"accounts":{"0":{"change":[["02a63209b49df0bb98d8a262e9891fe266ffdce4be09d5e1ffaf269a10d7e7a17c","02a074035006ed8ee8f200859c004c073b687140f7d40bd333cdbbe43bad1e50bc"],["0280e2367142669e08e27fb9fd476076a7f34f596e130af761aef54ec54954a64d","02719a66c59f76c36921cf7b330fca7aaa4d863ee367828e7d89cd2f1aad98c3ac"],["0332083e80df509d3bd8a06538ca20030086c9ed3313300f7313ed98421482020f","032f336744f53843d8a007990fa909e35e42e1e32460fae2e0fc1aef7c2cff2180"],["03fe014e5816497f9e27d26ce3ae8d374edadec410227b2351e9e65eb4c5d32ab7","0226edd8c3af9e339631145fd8a9f6d321fdc52fe0dc8e30503541c348399dd52a"],["03e6717b18d7cbe264c6f5d0ad80f915163f6f6c08c121ac144a7664b95aedfdf3","03d69a074eba3bc2c1c7b1f6f85822be39aee20341923e406c2b445c255545394a"],["023112f87a5b9b2eadc73b8d5657c137b50609cd83f128d130172a0ed9e3fea9bc","029a81fd5ba57a2c2c6cfbcb34f369d87af8759b66364d5411eddd28e8a65f67fa"]],"m":2,"receiving":[["03c35c3da2c864ee3192a847ffd3f67fa59c095d8c2c0f182ed9556308ec37231e","03cfcb6d1774bfd916bd261232645f6c765da3401bf794ab74e84a6931d8318786"],["03973c83f84a4cf5d7b21d1e8b29d6cbd4cb40d7460166835cd1e1fd2418cfcf2e","03596801e66976959ac1bdb4025d65a412d95d320ed9d1280ac3e89b041e663cf4"],["02b78ac89bfdf90559f24313d7393af272092827efc33ba3a0d716ee8b75fd08ff","038e21fae8a033459e15a700551c1980131eb555bbb8b23774f8851aa10dcac6b8"],["0288e9695bb24f336421d5dcf16efb799e7d1f8284413fe08e9569588bc116567e","027123ba3314f77a8eb8bb57ba1015dd6d61b709420f6a3320ba4571b728ef2d91"],["0312e1483f7f558aef1a14728cc125bb4ee5cff0e7fa916ba8edd25e3ebceb05e9","02dad92a9893ad95d3be5ebc40828cef080e4317e3a47af732127c3fee41451356"],["03a694e428a74d37194edc9e231e68399767fdb38a20eca7b72caf81b7414916a8","03129a0cef4ed428031972050f00682974b3d9f30a571dc3917377595923ac41d8"],["026ed41491a6d0fb3507f3ca7de7fb2fbfdfb28463ae2b91f2ab782830d8d5b32c","03211b3c30c41d54734b3f13b8c9354dac238d82d012839ee0199b2493d7e7b6fc"],["03480e87ffa55a96596be0af1d97bca86987741eb5809675952a854d59f5e8adc2","0215f04df467d411e2a9ed8883a21860071ab721314503019a10ed30e225e522e7"],["0389fce63841e9231d5890b1a0c19479f8f40f4f463ef8e54ef306641abe545ac8","02396961d498c2dcb3c7081b50c5a4df15fda31300285a4c779a59c9abc98ea20d"],["03d4a3053e9e08dc21a334106b5f7d9ac93e42c9251ceb136b83f1a614925eb1fb","025533963c22b4f5fbfe75e6ee5ad7ee1c7bff113155a7695a408049e0b16f1c52"],["038a07c8d2024b9118651474bd881527e8b9eb85fc90fdcb04c1e38688d498de4b","03164b188eb06a3ea96039047d0db1c8f9be34bfd454e35471b1c2f429acd40afb"],["0214070cd393f39c062ce1e982a8225e5548dbbbd654aeba6d36bfcc7a685c7b12","029c6a9fb61705cc39bef34b09c684a362d4862b16a3b0b39ca4f94d75cd72290c"],["027b3497f72f581fea0a678bc20482b6fc7b4b507f7263d588001d73fdf5fe314e","021b80b159d19b6978a41c2a6bf7d3448bc73001885f933f7854f450b5873091f3"],["0303e9d76e4fe7336397c760f6fdfd5fb7500f83e491efb604fa2442db6e1da417","03a8d1b22a73d4c181aecd8cfe8bb2ee30c5dd386249d2a5a3b071b7a25b9da73a"],["0298e472b74832af856fb68eed02ff00a235fd0424d833bc305613e9f44087d0ee","03bb9bc2e4aaa9b022b35c8d122dfccb6c28ae8f0996a8fb4a021af8ec96a7beaf"],["02e933a4afb354500da03373514247e1be12e67cc4683e0cb82f508878cc3cc048","02c07a57b071bc449a95dd80308e53b26e4ebf4d523f620eecb17f96ae3aa814e9"],["03f73476951078b3ccc549bc7e6362797aaaacb1ea0edc81404b4d16cb321255a3","03b3a825fb9fc497e568fba69f70e2c3dcdc793637e242fce578546fcbd33cb312"],["03bbdf99fddeea64a96bbb9d1e6d7ced571c9c7757045dcbd8c40137125b017dc5","03aedf4452afefb1c3da25e698f621cb3a3a0130aa299488e018b93a45b5e6c21d"],["03b85891edb147d43c0a5935a20d6bbf8d32c542bfecccf3ae0158b65bd639b34e","03b34713c636a1c103b82d6cec917d442c59522ddc5a60bf7412266dd9790e7760"],["028ddf53b85f6c01122a96bd6c181ee17ca222ee9eca85bdeeb25c4b5315005e3b","02f4821995bfd5d0adb7a78d6e3a967ac72ace9d9a4f9392aff2711533893e017b"]],"xpubs":["xpub661MyMwAqRbcGHtCYBSGGVgMSihroMkuyE25GPyzfQvS2vSFG7SgJYf7rtXJjMh7srBJj8WddLtjapHnUQLwJ7kxsy5HiNZnGvF9pm2du7b","xpub661MyMwAqRbcEdd7bzA86LbhMoTv8NeyqcNP5z1Tiz9ajCRQDzdeXHw3h5ucDNGWr6mPFCZBcBE31VNKyR3vWM7WEeisu5m4VsCyuA6H8fp"]}},"accounts_expanded":{},"addr_history":{"M8X4uq5CDRnz5n2wtpY4McvH6xo33JVsfg":[],"M92fGyHHhXjAmjFxBmo1skrZTd1RztaTtf":[],"M9H89QRUqYxCLYCd6X7Lc6pjQktKmgrz8M":[],"M9UgTpWY1ecky2EGnFEbFAhrkfCM2sDC9t":[],"M9tnVWPU5JnVqjx51vqHB8zu7dZ1REXSe3":[],"MBPvxh6i9VosWwdueDm38ydY1Qp3K6vm5S":[],"MDgCby178EhqauoSymM9ERqW2rAxomV5Jr":[],"MDtyuB3ZoKThnMe97tA43Q44ouK66iw3L1":[],"ME69hxq6yjeVQUJUgZsgSUsumuqSJuoEny":[],"MECCAnaFA5eRSovF625uePrLkjnna9fnsn":[],"MG3nhkjYc3Zg2rTzJPWNvs5yjLAWjcrX7N":[],"MGHoAUJpAdkVFM9hPhuBhadGjUQbfFH2wF":[],"MHDWMGg3aVEyfxSoP8aqVQBvyGSHL8zghQ":[],"MHNKup31bHmNXLaqvhkQtGYzE2NsXxbVws":[],"MJP1azbGjVJVZHDkh97sNzcLpoW67isa8n":[],"MJjAaDcRcw6iFBSfh9R7irZfc4BxXrW1CT":[],"MK4UnLuFrNrxrPDh52XZbPuhSrJjE7Ypg5":[],"MKAZszP8M9DTfKVC5MSvKMWfPE5cTnbWpB":[],"MKYcAm3WXijDuv6ruDRquCW8fenPmHUuwy":[],"MNUBUH6paL3tZhRnZpWEsWctUGmEnrF7de":[],"MQRf8MNkpSekiPRQj945xgJF65pXggXx9e":[],"MSqS7U7h4y8reumY91CQY1JTJ8nGTFc6dr":[],"MT6DQ5FgG4QSiGH9zQHspEnVESdUKZhNci":[],"MTZHMtXjvrDYi6d7rTJMm3PpvRq427MwLM":[],"MUfsE8uVsgue1EffyY59tv8QxUVvwcdybA":[],"MWR6CcmwtUjsqzwzHpRLsjb1jRuEYktCTQ":[]},"master_private_keys":{"x1/":"xprv9s21ZrQH143K29YeVxd7jCexomdRiuw8UPSnHbbrAecbrQ6FgTKPyVcZqp2256L5DSTdb8UepPVaDwJecswTrEhdyZiaNGERJpfzWV5FcN5"},"master_public_keys":{"x1/":"xpub661MyMwAqRbcEdd7bzA86LbhMoTv8NeyqcNP5z1Tiz9ajCRQDzdeXHw3h5ucDNGWr6mPFCZBcBE31VNKyR3vWM7WEeisu5m4VsCyuA6H8fp","x2/":"xpub661MyMwAqRbcGHtCYBSGGVgMSihroMkuyE25GPyzfQvS2vSFG7SgJYf7rtXJjMh7srBJj8WddLtjapHnUQLwJ7kxsy5HiNZnGvF9pm2du7b"},"pruned_txo":{},"seed":"park dash merit trend life field acid wrap dinosaur kit bar hotel abuse","seed_version":11,"stored_height":490034,"transactions":{},"txi":{},"txo":{},"use_encryption":false,"wallet_type":"2of2","winpos-qt":[564,329,840,400]}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_6_4_seeded(self): - wallet_str = '{"accounts":{"0":{"change":["03236a8ce6fd3d343358f92d3686b33fd6e7301bf9f635e94c21825780ab79c93d","0393e39f6b4a3651013fca3352b89f1ae31751d4268603f1423c71ff79cbb453a1","033d9722ecf50846527037295736708b20857b4dd7032fc02317f9780d6715e8ff","03f1d56d2ade1daae5706ea945cab2af719060a955c8ad78153693d8d08ed6b456","029260d935322dd3188c3c6b03a7b82e174f11ca7b4d332521740c842c34649137","0266e8431b49f129b892273ab4c8834a19c6432d5ed0a72f6e88be8c629c731ede"],"receiving":["0350f41cfac3fa92310bb4f36e4c9d45ec39f227a0c6e7555748dff17e7a127f67","02f997d3ed0e460961cdfa91dec4fa09f6a7217b2b14c91ed71d208375914782ba","029a498e2457744c02f4786ac5f0887619505c1dae99de24cf500407089d523414","03b15b06044de7935a0c1486566f0459f5e66c627b57d2cda14b418e8b9017aca1","026e9c73bdf2160630720baa3da2611b6e34044ad52519614d264fbf4adc5c229a","0205184703b5a8df9ae622ea0e8326134cbeb92e1f252698bc617c9598aff395a1","02af55f9af0e46631cb7fde6d1df6715dc6018df51c2370932507e3d6d41c19eec","0374e0c89aa4ecf1816f374f6de8750b9c6648d67fe0316a887a132c608af5e7c0","0321bb62f5b5c393aa82750c5512703e39f4824f4c487d1dc130f690360c0e5847","0338ea6ebb2ed80445f64b2094b290c81d0e085e6000367eb64b1dc5049f11c2e9","020c3371a9fd283977699c44a205621dea8abfc8ebc52692a590c60e22202fa49b","0395555e4646f94b10af7d9bc57e1816895ad2deddef9d93242d6d342cea3d753b","02ffa4495d020d17b54da83eaf8fbe489d81995577021ade3a340a39f5a0e2d45c","030f0e16b2d55c3b40b64835f87ab923d58bcdbb1195fadc2f05b6714d9331e837","02f70041fc4b1155785784a7c23f35d5d6490e300a7dd5b7053f88135fc1f14dfd","03b39508c6f9c7b8c3fb8a1b91e61a0850c3ac76ccd1a53fbc5b853a94979cffa8","03b02aa869aa14b0ec03c4935cc12f221c3f204f44d64146d468e07370c040bfe7","02b7d246a721e150aaf0e0e60a30ad562a32ef76a450101f3f772fef4d92b212d9","037cd5271b31466a75321d7c9e16f995fd0a2b320989c14bee82e161c83c714321","03d4ad77e15be312b29987630734d27ca6e9ee418faa6a8d6a50581eca40662829"],"xpub":"xpub661MyMwAqRbcGwHDovebbFy19vHfW2Cqtyf2TaJkAwhFWsLYfHHYcCnM7smpvntxJP1YMVT5triFbWiCGXPRPhqdCxFumA77MuQB1CeWHpE"}},"accounts_expanded":{},"addr_history":{"12qKnKuhCZ1Q9XBi1N6SnxYEUtb5XZXuY5":[],"1321ddunxShHmF4cjh3v5yqR7uatvSNndK":[],"13Ji3kGWn9qxLcWGhd46xjV6hg8SRw8x2P":[],"145q5ZDXuFi6v9dA2t8HyD8ysorfb81NRt":[],"14gB2wLy2DMkBVtuU6HHP3kQYNFYPzAguU":[],"16VGRwtZwp4yapQN5fS8CprK6mmnEicCEj":[],"16ahKVzCviRi24rwkoKgiSVSkvRNiQudE1":[],"16wjKZ1CWAMEzSR4UxQTWqXRm9jcJ9Dbuf":[],"18ReWGJBq1XkJaPAirVdT6RqDskcFeD5Ho":[],"1A1ECMMJU4NicWNwfMBn3XJriB4WHAcPUC":[],"1Bvxbfc2wXB8z8kyz2uyKw2Ps8JeGQM9FP":[],"1EDWUz4kPq8ZbCdQq8rLhFc3qSZ6Fpt1TD":[],"1EsvTarawMm5BfF44hpRtE4GfZFfZZ1JG3":[],"1JgaekD2ETMJm6oRNnwTWRK9ZxXeUcbi18":[],"1KHdLodsSWj1LrrD9d1RbApfqzpxRs5sxu":[],"1KgGwpKhruHWpMNtrpRExDWLLk5qHCHBdg":[],"1LFf8d3XD9atZvMVMAiq9ygaeZbphbKzSo":[],"1N3XncDQsWE2qff1EVyQEmR6JLLzD3mEL7":[],"1NUtLcVQNmY5TJCieM1cUmBmv18AafY1vq":[],"1NYFsm7PpneT65byRtm8niyvtzKsbEeuXA":[],"1NvEcSvfCe8LPvPkK4ZxhjzaUncTPqe9jX":[],"1PV8xdkYKxeMpnzeeA4eYEpL24j1G9ApV2":[],"1PdiGtznaW1mok6ETffeRvPP5f4ekBRAfq":[],"1QApNe4DtK7HAbJrn5kYkYxZMt86U5ChSb":[],"1QnH7F6RBXFe7LtszQ6KTRUPkQKRtXTnm":[],"1ekukhMNSWCfnRsmpkuTRuLMbz6cstkrq":[]},"master_private_keys":{"x/":"xprv9s21ZrQH143K4TCkhu7bE82GbtTB6ZUzXkjRfBu8ccAGe51Q7jyJ4QTsGbWxpHxnatKeYV7Ad83m7KC81THBm2xmyxA1q8BuuRXSGnmhhR8"},"master_public_keys":{"x/":"xpub661MyMwAqRbcGwHDovebbFy19vHfW2Cqtyf2TaJkAwhFWsLYfHHYcCnM7smpvntxJP1YMVT5triFbWiCGXPRPhqdCxFumA77MuQB1CeWHpE"},"pruned_txo":{},"seed":"heart cabbage scout rely square census satoshi home purpose legal replace move able","seed_version":11,"stored_height":489716,"transactions":{},"txi":{},"txo":{},"use_encryption":false,"wallet_type":"standard","winpos-qt":[582,394,840,400]}' + wallet_str = '{"accounts":{"0":{"change":["03236a8ce6fd3d343358f92d3686b33fd6e7301bf9f635e94c21825780ab79c93d","0393e39f6b4a3651013fca3352b89f1ae31751d4268603f1423c71ff79cbb453a1","033d9722ecf50846527037295736708b20857b4dd7032fc02317f9780d6715e8ff","03f1d56d2ade1daae5706ea945cab2af719060a955c8ad78153693d8d08ed6b456","029260d935322dd3188c3c6b03a7b82e174f11ca7b4d332521740c842c34649137","0266e8431b49f129b892273ab4c8834a19c6432d5ed0a72f6e88be8c629c731ede"],"receiving":["0350f41cfac3fa92310bb4f36e4c9d45ec39f227a0c6e7555748dff17e7a127f67","02f997d3ed0e460961cdfa91dec4fa09f6a7217b2b14c91ed71d208375914782ba","029a498e2457744c02f4786ac5f0887619505c1dae99de24cf500407089d523414","03b15b06044de7935a0c1486566f0459f5e66c627b57d2cda14b418e8b9017aca1","026e9c73bdf2160630720baa3da2611b6e34044ad52519614d264fbf4adc5c229a","0205184703b5a8df9ae622ea0e8326134cbeb92e1f252698bc617c9598aff395a1","02af55f9af0e46631cb7fde6d1df6715dc6018df51c2370932507e3d6d41c19eec","0374e0c89aa4ecf1816f374f6de8750b9c6648d67fe0316a887a132c608af5e7c0","0321bb62f5b5c393aa82750c5512703e39f4824f4c487d1dc130f690360c0e5847","0338ea6ebb2ed80445f64b2094b290c81d0e085e6000367eb64b1dc5049f11c2e9","020c3371a9fd283977699c44a205621dea8abfc8ebc52692a590c60e22202fa49b","0395555e4646f94b10af7d9bc57e1816895ad2deddef9d93242d6d342cea3d753b","02ffa4495d020d17b54da83eaf8fbe489d81995577021ade3a340a39f5a0e2d45c","030f0e16b2d55c3b40b64835f87ab923d58bcdbb1195fadc2f05b6714d9331e837","02f70041fc4b1155785784a7c23f35d5d6490e300a7dd5b7053f88135fc1f14dfd","03b39508c6f9c7b8c3fb8a1b91e61a0850c3ac76ccd1a53fbc5b853a94979cffa8","03b02aa869aa14b0ec03c4935cc12f221c3f204f44d64146d468e07370c040bfe7","02b7d246a721e150aaf0e0e60a30ad562a32ef76a450101f3f772fef4d92b212d9","037cd5271b31466a75321d7c9e16f995fd0a2b320989c14bee82e161c83c714321","03d4ad77e15be312b29987630734d27ca6e9ee418faa6a8d6a50581eca40662829"],"xpub":"xpub661MyMwAqRbcGwHDovebbFy19vHfW2Cqtyf2TaJkAwhFWsLYfHHYcCnM7smpvntxJP1YMVT5triFbWiCGXPRPhqdCxFumA77MuQB1CeWHpE"}},"accounts_expanded":{},"addr_history":{"LM4H3YDXHDFTQKssBW5k4ybzh6xMdNcL7D":[],"LMExtrDd36wM23kmuq3DMzuBL7xB3oaNwi":[],"LMXfJxaLrp61bRCRsm3QEkYrutVibsZPfS":[],"LNJnLmXMyuxAAxKKD27bFECk62DwcADxLY":[],"LNu8J9eo6sboSJb4eEGaf4pAkacpXQAdgw":[],"LQiDhACQ2UK2qd6XFoRRUqv5Jz94JWukNM":[],"LQoeaiJ31NfmGsZ6vwJyzTZCy8nerq6KbZ":[],"LRAgamK2apbJFF7Df6PknrbByN6tVWycjm":[],"LSebmUc1ufmoZP5KtzUvj7VbS67tQVhZSa":[],"LUEBTZf8YicmsK56qVB5KYNcvPRnLNKu4n":[],"LW9ursus2BRCEwT9AAuGbx6A5LfvJxZZer":[],"LYSTkCNaUVNcr1Ka1GqdyGfp3evNMBKcQQ":[],"LZ6sioAR2218STwDEqojAF82smcwg7LqhK":[],"LcuXuxWrK7bN1uVaYvvknSNunAtvdzG6pd":[],"LdWac1whXAy4bfYNKkzisBtS4DCEZ5J7CA":[],"LduED2dXwZXa5A542xQYEEa6YxT7TnV2ww":[],"LeUcPqMMHopwpj3eXJi8RzkLrmy6kxYyPj":[],"LgGV3pXExAU66UMAQdxhWnUrWYiGL6LZRp":[],"LghqbpoETRn8i6tspUzuknFY8DVSirGrAw":[],"LgmD8yRDuStWLtJ8c2kS4k3h7Ch9iBseQ8":[],"Lh9BsfEVHJNPej5uVCZFym4LgzyjXgFV7H":[],"Lhi6Dr4NQctR5bgopJ3wpFt6EH6HJc9uiu":[],"LhrfY7JcfAFq4YnPdoewhwT9HsRvr6pYRB":[],"LiPmdrN3xyMLRQ11xDjr2a2Ka6VNaKMuZ3":[],"LKdjYKYvVqmJtv3448PPbUVEbxmbWFYre1":[],"LKsiAy1BT6kFvb82wxkCjSy6ZpMNhJn2Gy":[]},"master_private_keys":{"x/":"xprv9s21ZrQH143K4TCkhu7bE82GbtTB6ZUzXkjRfBu8ccAGe51Q7jyJ4QTsGbWxpHxnatKeYV7Ad83m7KC81THBm2xmyxA1q8BuuRXSGnmhhR8"},"master_public_keys":{"x/":"xpub661MyMwAqRbcGwHDovebbFy19vHfW2Cqtyf2TaJkAwhFWsLYfHHYcCnM7smpvntxJP1YMVT5triFbWiCGXPRPhqdCxFumA77MuQB1CeWHpE"},"pruned_txo":{},"seed":"heart cabbage scout rely square census satoshi home purpose legal replace move able","seed_version":11,"stored_height":489716,"transactions":{},"txi":{},"txo":{},"use_encryption":false,"wallet_type":"standard","winpos-qt":[582,394,840,400]}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_6_4_importedkeys(self): - wallet_str = '{"accounts":{"/x":{"imported":{"1364Js2VG66BwRdkaoxAaFtdPb1eQgn8Dr":["0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5","L2sED74axVXC4H8szBJ4rQJrkfem7UMc6usLCPUoEWxDCFGUaGUM"],"15CyDgLffJsJgQrhcyooFH4gnVDG82pUrA":["04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2","5JyVyXU1LiRXATvRTQvR9Kp8Rx1X84j2x49iGkjSsXipydtByUq"],"1Exet2BhHsFxKTwhnfdsBMkPYLGvobxuW6":["0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f","L3Gi6EQLvYw8gEEUckmqawkevfj9s8hxoQDFveQJGZHTfyWnbk1U"]}}},"accounts_expanded":{},"addr_history":{},"pruned_txo":{},"stored_height":489716,"transactions":{},"txi":{},"txo":{},"use_encryption":false,"wallet_type":"imported","winpos-qt":[510,338,840,400]}' + wallet_str = '{"accounts":{"/x":{"imported":{"LMK1a5LKLkLFCEKukwwTrGxPboNvZjDbcY":["0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5","T8hVerMmMsVnq7mkXpEw4krEhXJ5BZNVv7mb4C7LoV8Ni8iywME1"],"LPRvUteVjy7MwDYro7o6XJ8SzhaYBJQhoM":["04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2","6vHESf1YF8tPdqpGyEiNvibJPRZzKsB4ijYsywkUaz3SfUAnidY"],"LZBc9EVXNXW1aGdrxodATNp9kYeCxufeWb":["0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f","T96yXyhXKvujT4sMAPihoJJ2sXNTwDircc7WnT2qqXTdBs433uZ5"]}}},"accounts_expanded":{},"addr_history":{},"pruned_txo":{},"stored_height":489716,"transactions":{},"txi":{},"txo":{},"use_encryption":false,"wallet_type":"imported","winpos-qt":[510,338,840,400]}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_6_4_watchaddresses(self): - wallet_str = '{"accounts":{"/x":{"imported":{"1DgrwN2JCDZ6uPMSvSz8dPeUtaxLxWM2kf":[null,null],"1H3mPXHFzA8UbvhQVabcDjYw3CPb3djvxs":[null,null],"1HocPduHmQUJerpdaLG8DnmxvnDCVQwWsa":[null,null]}}},"accounts_expanded":{},"addr_history":{},"pruned_txo":{},"stored_height":490038,"transactions":{},"txi":{},"txo":{},"wallet_type":"imported","winpos-qt":[582,425,840,400]}' + wallet_str = '{"accounts":{"/x":{"imported":{"LXupCaL8GsoAAC3c6ayRuQiF6oKd6jzvF2":[null,null],"LbGiejb64pNXrjPZfiauVkchFQksBnFjrz":[null,null],"Lc2ZerD7r4iMufWnkUFRVoqj8zaUdra9gy":[null,null]}}},"accounts_expanded":{},"addr_history":{},"pruned_txo":{},"stored_height":490038,"transactions":{},"txi":{},"txo":{},"wallet_type":"imported","winpos-qt":[582,425,840,400]}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_6_4_multisig(self): - wallet_str = '{"accounts":{"0":{"change":[["03d0bcdc86a64cc2024c84853e88985f6f30d3dc3f219b432680c338a3996a89ed","024f326d48aa0a62310590b10522b69d250a2439544aa4dc496f7ba6351e6ebbfe"],["03c0416928528a9aaaee558590447ee63fd33fa497deebefcf363b1af90d867762","03db7de16cd6f3dcd0329a088382652bc3e6b21ee1a732dd9655e192c887ed88a7"],["0291790656844c9d9c24daa344c0b426089eadd3952935c58ce6efe00ef1369828","02c2a5493893643102f77f91cba709f11aaab3e247863311d6fc3d3fc82624c3cc"],["023dc976bd1410a7e9f34c230051db58a3f487763f00df1f529b10f55ee85b931c","036c318a7530eedf3584fd8b24c4024656508e35057a0e7654f21e89e121d0bd30"],["02c8820711b39272e9730a1c5c5c78fe39a642b8097f8724b2592cc987017680ce","0380e3ebe0ea075e33acb3f796ad6548fde86d37c62fe8e4f6ab5d2073c1bb1d43"],["0369a32ddd213677a0509c85af514537d5ee04c68114da3bc720faeb3adb45e6f8","0370e85ac01af5e3fd5a5c3969c8bca3e4fc24efb9f82d34d5790e718a507cecb6"]],"m":2,"receiving":[["0207739a9ff4a643e1d4adb03736ec43d13ec897bdff76b40a25d3a16e19e464aa","02372ea4a291aeb1fadb26f36976348fc169fc70514797e53b789a87c9b27cc568"],["0248ae7671882ec87dd6bacf7eb2ff078558456cf5753952cddb5dde08f471f3d6","035bac54828b383545d7b70824a8be2f2d9584f656bfdc680298a38e9383ed9e51"],["02cb99ba41dfbd510cd25491c12bd0875fe8155b5a6694ab781b42bd949252ff26","03b520feba42149947f8b2bbc7e8c03f9376521f20ac7b7f122dd44ab27309d7c6"],["0395902d5ebb4905edd7c4aedecf17be0675a2ffeb27d85af25451659c05cc5198","02b4a01d4bd25cadcbf49900005e8d5060ed9cdc35eb33f2cd65cc45cc7ebc00c5"],["02f9d06c136f05acc94e4572399f17238bb56fa15271e3cb816ae7bb9be24b00b6","035516437612574b2b563929c49308911651205e7cebb621940742e570518f1c50"],["0376a7de3abaee6631bd4441658987c27e0c7eee2190a86d44841ae718a014ee43","03cb702364ffd59cb92b2e2128c18d8a5a255be2b95eb950641c5f17a5a900eecb"],["03240c5e868ecb02c4879ae5f5bad809439fdbd2825769d75be188e34f6e533a67","026b0d05784e4b4c8193443ce60bea162eee4d99f9dfa94a53ae3bc046a8574eeb"],["02d087cccb7dc457074aa9decc04de5a080757493c6aa12fa5d7d3d389cfdb5b8e","0293ab7d0d8bbb2d433e7521a1100a08d75a32a02be941f731d5809b22d86edb33"],["03d1b83ab13c5b35701129bed42c1f1fbe86dd503181ad66af3f4fb729f46a277e","0382ec5e920bc5c60afa6775952760668af42b67d36d369cd0e9acc17e6d0a930d"],["03f1737db45f3a42aebd813776f179d5724fce9985e715feb54d836020b8517bfe","0287a9dfb8ee2adab81ef98d52acd27c25f558d2a888539f7d583ef8c00c34d6dc"],["038eb8804e433023324c1d439cd5fbbd641ca85eadcfc5a8b038cb833a755dac21","0361a7c80f0d9483c416bc63d62506c3c8d34f6233b6d100bb43b6fe8ec39388b9"],["0336437ada4cd35bec65469afce298fe49e846085949d93ef59bf77e1a1d804e4a","0321898ed89df11fcfb1be44bb326e4bb3272464f000a9e51fb21d25548619d377"],["0260f0e59d6a80c49314d5b5b857d1df64d474aba48a37c95322292786397f3dc6","03acd6c9aeac54c9510304c2c97b7e206bbf5320c1e268a2757d400356a30c627b"],["0373dc423d6ee57fac3b9de5e2b87cf36c21f2469f17f32f5496e9e7454598ba8e","031ddc1f40c8b8bf68117e790e2d18675b57166e9521dff1da44ba368be76555b3"],["031878b39bc6e35b33ceac396b429babd02d15632e4a926be0220ccbd710c7d7b9","025a71cc5009ae07e3e991f78212e99dd5be7adf941766d011197f331ce8c1bed0"],["032d3b42ed4913a134145f004cf105b66ae97a9914c35fb73d37170d37271acfcd","0322adeb83151937ddcd32d5bf2d3ed07c245811d0f7152716f82120f21fb25426"],["0312759ff0441c59cb477b5ec1b22e76a794cd821c13b8900d72e34e9848f088c2","02d868626604046887d128388e86c595483085f86a395d68920e244013b544ef3b"],["038c4d5f49ab08be619d4fed7161c339ea37317f92d36d4b3487f7934794b79df4","03f4afb40ae7f4a886f9b469a81168ad549ad341390ff91ebf043c4e4bfa05ecc1"],["02378b36e9f84ba387f0605a738288c159a5c277bbea2ea70191ade359bc597dbb","029fd6f0ee075a08308c0ccda7ace4ad9107573d2def988c2e207ac1d69df13355"],["02cfecde7f415b0931fc1ec06055ff127e9c3bec82af5e3affb15191bf995ffc1a","02abb7481504173a7aa1b9860915ef62d09a323425f680d71746be6516f0bb4acf"]],"xpubs":["xpub661MyMwAqRbcF4mZnFnBRYGBaiD9aQRp9w2jaPUrDg3Eery5gywV7eFMzQKmNyY1W4m4fUwsinMw1tFhMNEZ9KjNtkUSBHPXdcXBwCg5ctV","xpub661MyMwAqRbcGHU5H41miJ2wXBLYYk4psK7pB5pWyxK6m5EARwLrKtmpnMzP52qGsKZEtjJCyohVEaZTFXbohjVdfpDFifgMBT82EvkFpsW"]}},"accounts_expanded":{},"addr_history":{"329Ju5tiAr4vHZExAT4KydYEkfKiHraY2N":[],"32HJ13iTVh3sCWyXzipcGb1e78ZxcHrQ7v":[],"32cAdiAapUzNVRYXmDud5J5vEDcGsPHjD8":[],"33fKLmoCo8oFfeV987P6KrNTghSHjJM251":[],"34cE6ZcgXvHEyKbEP2Jpz5C3aEWhvPoPG2":[],"36xsnTKKBojYRHEApVR6bCFbDLp9oqNAxU":[],"372PG6D3chr8tWF3J811dKSpPS84MPU6SE":[],"378nVF8daT4r3jfX1ebKRheUVZX5zaa9wd":[],"392ZtXKp2THrk5VtbandXxFLB8yr2g14aA":[],"39cCrU3Zz3SsHiQUDiyPS1Qd5ZL3Rh1GhQ":[],"3A2cRoBdem5tdRjq514Pp7ZvaxydgZiaNG":[],"3Ceoi3MKdh2xiziHDAzmriwjDx4dvxxLzm":[],"3FcXdG8mh1YeQCYVib8Aw7zwnKpComimLH":[],"3J4b31yAbQkKhejSW7Qz54qNJDEy3t9uSe":[],"3JpJrSxE1GP1X5h82zvLA2TbMZ8nUsGW6z":[],"3K1dzpbcop1MotuqyFQyEuXbvQehaKnGVM":[],"3L8Us8SN22Hj6GnZPRCLaowA1ZtbptXxxL":[],"3LANyoJyShQ8w55tvopoGiZ2BTVjLfChiP":[],"3LoJGQdXTzVaDYudUguP4jNJYy4gNDaRpN":[],"3MD8jVH7Crp5ucFomDnWqB6kQrEQ9VF5xv":[],"3ME8DemkFJSn2tHS23yuk2WfaMP86rd3s7":[],"3MFNr17oSZpFtH16hGPgXz2em2hJkd3SZn":[],"3QHRTYnW2HWCWoeisVcy3xsAFC5xb6UYAK":[],"3QKwygVezHFBthudRUh8V7wwtWjZk3whpB":[],"3QNPY3dznFwRv6VMcKgmn8FGJdsuSRRjco":[],"3QNwwD8dp6kvS8Fys4ZxVJYZAwCXdXQBKo":[]},"master_private_keys":{"x1/":"xprv9s21ZrQH143K3oPcB2UmMA6Cy9W49HLyW6CDNhQuRcn7tGu1tQ2bn6TLw8HFWbu5oP38Z2fFCo5Q4n3fog4DTqywYqfSDWhYbDgVD1TGZoP"},"master_public_keys":{"x1/":"xpub661MyMwAqRbcGHU5H41miJ2wXBLYYk4psK7pB5pWyxK6m5EARwLrKtmpnMzP52qGsKZEtjJCyohVEaZTFXbohjVdfpDFifgMBT82EvkFpsW","x2/":"xpub661MyMwAqRbcF4mZnFnBRYGBaiD9aQRp9w2jaPUrDg3Eery5gywV7eFMzQKmNyY1W4m4fUwsinMw1tFhMNEZ9KjNtkUSBHPXdcXBwCg5ctV"},"pruned_txo":{},"seed":"turkey weapon legend tower style multiply tomorrow wet like frame leave cash achieve","seed_version":11,"stored_height":490035,"transactions":{},"txi":{},"txo":{},"use_encryption":false,"wallet_type":"2of2","winpos-qt":[610,418,840,400]}' + wallet_str = '{"accounts":{"0":{"change":[["03d0bcdc86a64cc2024c84853e88985f6f30d3dc3f219b432680c338a3996a89ed","024f326d48aa0a62310590b10522b69d250a2439544aa4dc496f7ba6351e6ebbfe"],["03c0416928528a9aaaee558590447ee63fd33fa497deebefcf363b1af90d867762","03db7de16cd6f3dcd0329a088382652bc3e6b21ee1a732dd9655e192c887ed88a7"],["0291790656844c9d9c24daa344c0b426089eadd3952935c58ce6efe00ef1369828","02c2a5493893643102f77f91cba709f11aaab3e247863311d6fc3d3fc82624c3cc"],["023dc976bd1410a7e9f34c230051db58a3f487763f00df1f529b10f55ee85b931c","036c318a7530eedf3584fd8b24c4024656508e35057a0e7654f21e89e121d0bd30"],["02c8820711b39272e9730a1c5c5c78fe39a642b8097f8724b2592cc987017680ce","0380e3ebe0ea075e33acb3f796ad6548fde86d37c62fe8e4f6ab5d2073c1bb1d43"],["0369a32ddd213677a0509c85af514537d5ee04c68114da3bc720faeb3adb45e6f8","0370e85ac01af5e3fd5a5c3969c8bca3e4fc24efb9f82d34d5790e718a507cecb6"]],"m":2,"receiving":[["0207739a9ff4a643e1d4adb03736ec43d13ec897bdff76b40a25d3a16e19e464aa","02372ea4a291aeb1fadb26f36976348fc169fc70514797e53b789a87c9b27cc568"],["0248ae7671882ec87dd6bacf7eb2ff078558456cf5753952cddb5dde08f471f3d6","035bac54828b383545d7b70824a8be2f2d9584f656bfdc680298a38e9383ed9e51"],["02cb99ba41dfbd510cd25491c12bd0875fe8155b5a6694ab781b42bd949252ff26","03b520feba42149947f8b2bbc7e8c03f9376521f20ac7b7f122dd44ab27309d7c6"],["0395902d5ebb4905edd7c4aedecf17be0675a2ffeb27d85af25451659c05cc5198","02b4a01d4bd25cadcbf49900005e8d5060ed9cdc35eb33f2cd65cc45cc7ebc00c5"],["02f9d06c136f05acc94e4572399f17238bb56fa15271e3cb816ae7bb9be24b00b6","035516437612574b2b563929c49308911651205e7cebb621940742e570518f1c50"],["0376a7de3abaee6631bd4441658987c27e0c7eee2190a86d44841ae718a014ee43","03cb702364ffd59cb92b2e2128c18d8a5a255be2b95eb950641c5f17a5a900eecb"],["03240c5e868ecb02c4879ae5f5bad809439fdbd2825769d75be188e34f6e533a67","026b0d05784e4b4c8193443ce60bea162eee4d99f9dfa94a53ae3bc046a8574eeb"],["02d087cccb7dc457074aa9decc04de5a080757493c6aa12fa5d7d3d389cfdb5b8e","0293ab7d0d8bbb2d433e7521a1100a08d75a32a02be941f731d5809b22d86edb33"],["03d1b83ab13c5b35701129bed42c1f1fbe86dd503181ad66af3f4fb729f46a277e","0382ec5e920bc5c60afa6775952760668af42b67d36d369cd0e9acc17e6d0a930d"],["03f1737db45f3a42aebd813776f179d5724fce9985e715feb54d836020b8517bfe","0287a9dfb8ee2adab81ef98d52acd27c25f558d2a888539f7d583ef8c00c34d6dc"],["038eb8804e433023324c1d439cd5fbbd641ca85eadcfc5a8b038cb833a755dac21","0361a7c80f0d9483c416bc63d62506c3c8d34f6233b6d100bb43b6fe8ec39388b9"],["0336437ada4cd35bec65469afce298fe49e846085949d93ef59bf77e1a1d804e4a","0321898ed89df11fcfb1be44bb326e4bb3272464f000a9e51fb21d25548619d377"],["0260f0e59d6a80c49314d5b5b857d1df64d474aba48a37c95322292786397f3dc6","03acd6c9aeac54c9510304c2c97b7e206bbf5320c1e268a2757d400356a30c627b"],["0373dc423d6ee57fac3b9de5e2b87cf36c21f2469f17f32f5496e9e7454598ba8e","031ddc1f40c8b8bf68117e790e2d18675b57166e9521dff1da44ba368be76555b3"],["031878b39bc6e35b33ceac396b429babd02d15632e4a926be0220ccbd710c7d7b9","025a71cc5009ae07e3e991f78212e99dd5be7adf941766d011197f331ce8c1bed0"],["032d3b42ed4913a134145f004cf105b66ae97a9914c35fb73d37170d37271acfcd","0322adeb83151937ddcd32d5bf2d3ed07c245811d0f7152716f82120f21fb25426"],["0312759ff0441c59cb477b5ec1b22e76a794cd821c13b8900d72e34e9848f088c2","02d868626604046887d128388e86c595483085f86a395d68920e244013b544ef3b"],["038c4d5f49ab08be619d4fed7161c339ea37317f92d36d4b3487f7934794b79df4","03f4afb40ae7f4a886f9b469a81168ad549ad341390ff91ebf043c4e4bfa05ecc1"],["02378b36e9f84ba387f0605a738288c159a5c277bbea2ea70191ade359bc597dbb","029fd6f0ee075a08308c0ccda7ace4ad9107573d2def988c2e207ac1d69df13355"],["02cfecde7f415b0931fc1ec06055ff127e9c3bec82af5e3affb15191bf995ffc1a","02abb7481504173a7aa1b9860915ef62d09a323425f680d71746be6516f0bb4acf"]],"xpubs":["xpub661MyMwAqRbcF4mZnFnBRYGBaiD9aQRp9w2jaPUrDg3Eery5gywV7eFMzQKmNyY1W4m4fUwsinMw1tFhMNEZ9KjNtkUSBHPXdcXBwCg5ctV","xpub661MyMwAqRbcGHU5H41miJ2wXBLYYk4psK7pB5pWyxK6m5EARwLrKtmpnMzP52qGsKZEtjJCyohVEaZTFXbohjVdfpDFifgMBT82EvkFpsW"]}},"accounts_expanded":{},"addr_history":{"M8MTCyJg7xvM64WrGL3foGne5MvAF75N27":[],"M8VSJw8RSouJ12FS6box6EG3RqAQZS9jqj":[],"M8pJwbaYmbqoHvpRs6txtwLKYvCisBKHLx":[],"M9sTefDAkFegU9m3DzNS9Vcs1Q2jgh5HWZ":[],"MApNQT2eV38fmps8UuJAoiSStw79zS33PS":[],"MDB26LjH8vayDnW4vNQSQqVzY3QbkxT8yH":[],"MDEXZyd1ZphZh1WwPzzMSxhDi8iWMui1Uy":[],"MDLvo8YbXZvGrEwR7XafFLtspG7Xx3w18t":[],"MFEiCQjmya9HYamnhTmyMbVjVqaJ2AndJA":[],"MFpMAMTXwAJJ6DgNKbxjFef2QFvVXSdTQQ":[],"MGEkjgbbbswKRw1jAt3jdkpKufa5iREArH":[],"MJrx1vmHaotPXVzBK3z7gNC8Yef61QKkdA":[],"MMpfw9Yje8Q5ChpPpU7WkmFM72Qertt3HS":[],"MQGjLuP8YXbkWA1LbzQKti5mcuqQzGNfH4":[],"MR2TALNBxPESKay28sufyfhzgFjEWLiRqi":[],"MRDnJi1akvrncQBk58QK4Yn1F7F9Xajs3e":[],"MSLdB1rKy999tn4TVJBgQTBZLGV3puZJ9N":[],"MSNXHgiwPpFZjaMo2gp96MoRWA6BJx3XCz":[],"MT1SaJ3VR7M124BXaZtitNchsff8Na2LpH":[],"MTRH3Nh59yfWi7Xhs6mrepM9jYpr8bUVVA":[],"MTSGXYBiCRJCqPZL7vyFZfm4u3ya6E5hyy":[],"MTTX9tXmPgfggnGzo9P2MdH45jHknLnsDu":[],"MWVZmSCTyQMdKJvcyNcJsc7ZZtgQf7FokC":[],"MWY6HZucwQ6chDBXXMgUJmCMDDL1kRkUvG":[],"MWaXqw3xjNnribmFiCg7bmVfdLUMPqjY48":[],"MWb6F6YbmDcMEdXsxwZJJwnxVdnye8V4Rv":[]},"master_private_keys":{"x1/":"xprv9s21ZrQH143K3oPcB2UmMA6Cy9W49HLyW6CDNhQuRcn7tGu1tQ2bn6TLw8HFWbu5oP38Z2fFCo5Q4n3fog4DTqywYqfSDWhYbDgVD1TGZoP"},"master_public_keys":{"x1/":"xpub661MyMwAqRbcGHU5H41miJ2wXBLYYk4psK7pB5pWyxK6m5EARwLrKtmpnMzP52qGsKZEtjJCyohVEaZTFXbohjVdfpDFifgMBT82EvkFpsW","x2/":"xpub661MyMwAqRbcF4mZnFnBRYGBaiD9aQRp9w2jaPUrDg3Eery5gywV7eFMzQKmNyY1W4m4fUwsinMw1tFhMNEZ9KjNtkUSBHPXdcXBwCg5ctV"},"pruned_txo":{},"seed":"turkey weapon legend tower style multiply tomorrow wet like frame leave cash achieve","seed_version":11,"stored_height":490035,"transactions":{},"txi":{},"txo":{},"use_encryption":false,"wallet_type":"2of2","winpos-qt":[610,418,840,400]}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_7_18_seeded(self): - wallet_str = '{"addr_history":{"12nzqpb4vxiFmcvypswSWK1f4cvGwhYAE8":[],"13sapXcP5Wq25PiXh5Zr9mLhyjdfrppWyi":[],"14EzC5y5eFCXg4T7cH4hXoivzysEpGXBTM":[],"15PUQBi2eEzprCZrS8dkfXuoNv8TuqwoBm":[],"16NvXzjxHbiNAULoRRTBjSmecMgF87FAtb":[],"16oyPjLM4R96aZCnSHqBBkDMgbE2ehDWFe":[],"1BfhL8ZPcaZkXTZKASQYcFJsPfXNwCwVMV":[],"1Bn3vun14mDWBDkx4PvK2SyWK1nqB9MSmM":[],"1BrCEnhf763JhVNcZsjGcNmmisBfRkrdcn":[],"1BvXCwXAdaSTES4ENALv3Tw6TJcZbMzu5o":[],"1C2vzgDyPqtvzFRYUgavoLvk3KGujkUUjg":[],"1CN22zUHuX5SxGTmGvPTa2X6qiCJZjDUAW":[],"1CUT9Su42c4MFxrfbrouoniuhVuvRjsKYS":[],"1DLaXDPng4wWXW7AdDG3cLkuKXgEUpjFHq":[],"1DTLcXN6xPUVXP1ZQmt2heXe2KHDSdvRNv":[],"1F1zYJag8yXVnDgGGy7waQT3Sdyp7wLZm3":[],"1Fim67c46NHTcSUu329uF8brTmkoiz6Ej8":[],"1Go6JcgkfZuA7fyQFKuLddee9hzpo31uvL":[],"1J6mhetXo9Eokq7NGjwbKnHryxUCpgbCDn":[],"1K9sFmS7qM2P5JpVGQhHMqQgAnNiujS5jZ":[],"1KBdFn9tGPYEqXnHyJAHxBfCQFF9v3mq95":[],"1LRWRLWHE2pdMviVeTeJBa8nFbUTWSCvrg":[],"1LpXAktoSKbRx7QFkyb2KkSNJXSGLtTg9T":[],"1LtxCQLTqD1q5Q5BReP932t5D7pKx5wiap":[],"1MX5AS3pA5jBhmg4DDuDQEuNhPGS4cGU4F":[],"1Pz9bYFMeqZkXahx9yPjXtJwL69zB3xCp2":[]},"keystore":{"seed":"giraffe tuition frog desk airport rural since dizzy regular victory mind coconut","type":"bip32","xprv":"xprv9s21ZrQH143K28Jvnpm7hU3xPt18neaDpcpoMKTyi9ewNRg6puJ2RAE5gZNPQ73bbmU9WsagxLQ3a6i2t1M9W289HY9Q5sEzFsLaYq3ZQf3","xpub":"xpub661MyMwAqRbcEcPPtrJ84bzgwuqdC7J5BqkQ9hsbGVBvFE1FNScGxxYZXpC9ncowEe7EZVbAerSypw3wCjrmLmsHeG3RzySw5iEJhAfZaZT"},"pruned_txo":{},"pubkeys":{"change":["033e860b0823ed2bf143594b07031d9d95d35f6e4ad6093ddc3071b8d2760f133f","03f51e8798a1a46266dee899bada3e1517a7a57a8402deeef30300a8918c81889a","0308168b05810f62e3d08c61e3c545ccbdce9af603adbdf23dcc366c47f1c5634c","03d7eddff48be72310347efa93f6022ac261cc33ee0704cdad7b6e376e9f90f574","0287e34a1d3fd51efdc83f946f2060f13065e39e587c347b65a579b95ef2307d45","02df34e258a320a11590eca5f0cb0246110399de28186011e8398ce99dd806854a"],"receiving":["031082ff400cbe517cc2ae37492a6811d129b8fb0a8c6bd083313f234e221527ae","03fac4d7402c0d8b290423a05e09a323b51afebd4b5917964ba115f48ab280ef07","03c0a8c4ab604634256d3cfa350c4b6ca294a4374193055195a46626a6adea920f","03b0bc3112231a9bea6f5382f4324f23b4e2deb5f01a90b0fe006b816367e43958","03a59c08c8e2d66523c888416e89fa1aaec679f7043aa5a9145925c7a80568e752","0346fefc07ab2f38b16c8d979a8ffe05bc9f31dd33291b4130797fa7d78f6e4a35","025eb34724546b3c6db2ee8b59fbc4731bafadac5df51bd9bbb20b456d550ef56e","02b79c26e2eac48401d8a278c63eec84dc5bef7a71fa7ce01a6e333902495272e2","03a3a212462a2b12dc33a89a3e85684f3a02a647db3d7eaae18c029a6277c4f8ac","02d13fc5b57c4d057accf42cc918912221c528907a1474b2c6e1b9ca24c9655c1a","023c87c3ca86f25c282d9e6b8583b0856a4888f46666b413622d72baad90a25221","030710e320e9911ebfc89a6b377a5c2e5ae0ab16b9a3df54baa9dbd3eb710bf03c","03406b5199d34be50725db2fcd440e487d13d1f7611e604db81bb06cdd9077ffa5","0378139461735db84ff4d838eb408b9c124e556cfb6bac571ed6b2d0ec671abd0c","030538379532c476f664d8795c0d8e5d29aea924d964c685ea5c2343087f055a82","02d1b93fa37b824b4842c46ef36e5c50aadbac024a6f066b482be382bec6b41e5a","02d64e92d12666cde831eb21e00079ecfc3c4f64728415cc38f899aca32f1a5558","0347480bf4d321f5dce2fcd496598fbdce19825de6ed5b06f602d66de7155ac1c0","03242e3dfd8c4b6947b0fbb0b314620c0c3758600bb842f0848f991e9a2520a81c","021acadf6300cb7f2cca11c6e1c7e59e3cf923a786f6371c3b85dd6f8b65c68470"]},"seed_version":13,"stored_height":0,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"standard","winpos-qt":[709,314,840,405]}' + wallet_str = '{"addr_history":{"LM1x72tu1cxK2Rd911vjnL5RGqHZ4SxXm2":[],"LN6Y5jvDAB55LCQgsDZ9RnQUBwzwxLa1wz":[],"LNTwTJGuiuSavs9GnR3zopnhDCEWrmAAEM":[],"LPcRfQ1riuEt71G1cGd3wYyZb8Vk1EgZSk":[],"LQbsoD3nNFxRRH2xbZSV1TqQpa3XAtaF7u":[],"LR2veweB95P9qMtwcRpUTmH7tobJnSJMV6":[],"LVtebLsDhEoonGFULaPqtGNdbstf2g3w6U":[],"LW11C85q9RTZS2T7EXucJU3GXEA7McE6ca":[],"LW59W11VBkHMxJ4mk1iZtPqXw5YwYoLhp4":[],"LW9UU9pziEgWVEkPYJLDKUzrfWyqhZgpud":[],"LWFtFtXoUW8zF47hepaE5MzWFXeBwyRsNu":[],"LWayJCn7zBKWD59vT4Nkr3as3vZad9y6qu":[],"LWhQQfCt7GJQWmYpmzoD5onfuiHCZmMBf1":[],"LXZXnRhckjBZnJoKoMFLtMpfXk3WgXnAvY":[],"LXgHsjfw33iYnBhiausKyfbQEXeVdJUTsD":[],"LZEwoWtWDdmZ32NRT77ErRWoerM6EvCTAZ":[],"LZwiMKutB2XWsFB4DA9CX9fcfz85mfh39T":[],"Lb23ZpzakE9DNUfZRTtdueiQMvN711HvJq":[],"LcKixsCMsoUs1doXSsvtboMdCAqUwKJwsC":[],"LdNpWyjwv1GSL7WeSYgadrUSNzjzxxeh7g":[],"LdQaWzTiM3nJ6LUT9S9bECixcTcRyhFTPX":[],"LeeTgYp7Jh4gcjQepbdbTbCYToqjbtvEgA":[],"Lf3URyCdWyqVCv6Qw7aKbmW8WjoYRnFjAG":[],"Lf7uTceHusFtLCmLbnNSK3wqRLBc7U6gar":[],"Lfk2ReMeEjyExaNDPMtWgFy8ubdiEURyAV":[],"LiD6rkZBjVoonPQ7L7P2ouNhYJXGJ726Nb":[]},"keystore":{"seed":"giraffe tuition frog desk airport rural since dizzy regular victory mind coconut","type":"bip32","xprv":"xprv9s21ZrQH143K28Jvnpm7hU3xPt18neaDpcpoMKTyi9ewNRg6puJ2RAE5gZNPQ73bbmU9WsagxLQ3a6i2t1M9W289HY9Q5sEzFsLaYq3ZQf3","xpub":"xpub661MyMwAqRbcEcPPtrJ84bzgwuqdC7J5BqkQ9hsbGVBvFE1FNScGxxYZXpC9ncowEe7EZVbAerSypw3wCjrmLmsHeG3RzySw5iEJhAfZaZT"},"pruned_txo":{},"pubkeys":{"change":["033e860b0823ed2bf143594b07031d9d95d35f6e4ad6093ddc3071b8d2760f133f","03f51e8798a1a46266dee899bada3e1517a7a57a8402deeef30300a8918c81889a","0308168b05810f62e3d08c61e3c545ccbdce9af603adbdf23dcc366c47f1c5634c","03d7eddff48be72310347efa93f6022ac261cc33ee0704cdad7b6e376e9f90f574","0287e34a1d3fd51efdc83f946f2060f13065e39e587c347b65a579b95ef2307d45","02df34e258a320a11590eca5f0cb0246110399de28186011e8398ce99dd806854a"],"receiving":["031082ff400cbe517cc2ae37492a6811d129b8fb0a8c6bd083313f234e221527ae","03fac4d7402c0d8b290423a05e09a323b51afebd4b5917964ba115f48ab280ef07","03c0a8c4ab604634256d3cfa350c4b6ca294a4374193055195a46626a6adea920f","03b0bc3112231a9bea6f5382f4324f23b4e2deb5f01a90b0fe006b816367e43958","03a59c08c8e2d66523c888416e89fa1aaec679f7043aa5a9145925c7a80568e752","0346fefc07ab2f38b16c8d979a8ffe05bc9f31dd33291b4130797fa7d78f6e4a35","025eb34724546b3c6db2ee8b59fbc4731bafadac5df51bd9bbb20b456d550ef56e","02b79c26e2eac48401d8a278c63eec84dc5bef7a71fa7ce01a6e333902495272e2","03a3a212462a2b12dc33a89a3e85684f3a02a647db3d7eaae18c029a6277c4f8ac","02d13fc5b57c4d057accf42cc918912221c528907a1474b2c6e1b9ca24c9655c1a","023c87c3ca86f25c282d9e6b8583b0856a4888f46666b413622d72baad90a25221","030710e320e9911ebfc89a6b377a5c2e5ae0ab16b9a3df54baa9dbd3eb710bf03c","03406b5199d34be50725db2fcd440e487d13d1f7611e604db81bb06cdd9077ffa5","0378139461735db84ff4d838eb408b9c124e556cfb6bac571ed6b2d0ec671abd0c","030538379532c476f664d8795c0d8e5d29aea924d964c685ea5c2343087f055a82","02d1b93fa37b824b4842c46ef36e5c50aadbac024a6f066b482be382bec6b41e5a","02d64e92d12666cde831eb21e00079ecfc3c4f64728415cc38f899aca32f1a5558","0347480bf4d321f5dce2fcd496598fbdce19825de6ed5b06f602d66de7155ac1c0","03242e3dfd8c4b6947b0fbb0b314620c0c3758600bb842f0848f991e9a2520a81c","021acadf6300cb7f2cca11c6e1c7e59e3cf923a786f6371c3b85dd6f8b65c68470"]},"seed_version":13,"stored_height":0,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"standard","winpos-qt":[709,314,840,405]}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_7_18_importedkeys(self): - wallet_str = '{"addr_history":{"1364Js2VG66BwRdkaoxAaFtdPb1eQgn8Dr":[],"15CyDgLffJsJgQrhcyooFH4gnVDG82pUrA":[],"1Exet2BhHsFxKTwhnfdsBMkPYLGvobxuW6":[]},"keystore":{"keypairs":{"0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5":"L2sED74axVXC4H8szBJ4rQJrkfem7UMc6usLCPUoEWxDCFGUaGUM","0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f":"L3Gi6EQLvYw8gEEUckmqawkevfj9s8hxoQDFveQJGZHTfyWnbk1U","04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2":"5JyVyXU1LiRXATvRTQvR9Kp8Rx1X84j2x49iGkjSsXipydtByUq"},"type":"imported"},"pruned_txo":{},"pubkeys":{"change":[],"receiving":["0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5","0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f","04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2"]},"seed_version":13,"stored_height":0,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"standard","winpos-qt":[420,312,840,405]}' + wallet_str = '{"addr_history":{"LMK1a5LKLkLFCEKukwwTrGxPboNvZjDbcY":[],"LPRvUteVjy7MwDYro7o6XJ8SzhaYBJQhoM":[],"LZBc9EVXNXW1aGdrxodATNp9kYeCxufeWb":[]},"keystore":{"keypairs":{"0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5":"T8hVerMmMsVnq7mkXpEw4krEhXJ5BZNVv7mb4C7LoV8Ni8iywME1","0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f":"T96yXyhXKvujT4sMAPihoJJ2sXNTwDircc7WnT2qqXTdBs433uZ5","04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2":"6vHESf1YF8tPdqpGyEiNvibJPRZzKsB4ijYsywkUaz3SfUAnidY"},"type":"imported"},"pruned_txo":{},"pubkeys":{"change":[],"receiving":["0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5","0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f","04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2"]},"seed_version":13,"stored_height":0,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"standard","winpos-qt":[420,312,840,405]}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_7_18_watchaddresses(self): - wallet_str = '{"addr_history":{"1DgrwN2JCDZ6uPMSvSz8dPeUtaxLxWM2kf":[],"1H3mPXHFzA8UbvhQVabcDjYw3CPb3djvxs":[],"1HocPduHmQUJerpdaLG8DnmxvnDCVQwWsa":[]},"addresses":["1H3mPXHFzA8UbvhQVabcDjYw3CPb3djvxs","1HocPduHmQUJerpdaLG8DnmxvnDCVQwWsa","1DgrwN2JCDZ6uPMSvSz8dPeUtaxLxWM2kf"],"pruned_txo":{},"seed_version":13,"stored_height":0,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"verified_tx3":{},"wallet_type":"imported","winpos-qt":[553,402,840,405]}' + wallet_str = '{"addr_history":{"LXupCaL8GsoAAC3c6ayRuQiF6oKd6jzvF2":[],"LbGiejb64pNXrjPZfiauVkchFQksBnFjrz":[],"Lc2ZerD7r4iMufWnkUFRVoqj8zaUdra9gy":[]},"addresses":["LbGiejb64pNXrjPZfiauVkchFQksBnFjrz","Lc2ZerD7r4iMufWnkUFRVoqj8zaUdra9gy","LXupCaL8GsoAAC3c6ayRuQiF6oKd6jzvF2"],"pruned_txo":{},"seed_version":13,"stored_height":0,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"verified_tx3":{},"wallet_type":"imported","winpos-qt":[553,402,840,405]}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_7_18_trezor_singleacc(self): - wallet_str = '''{"addr_history":{"12sQvVXgdoy2QDorLgr2t6J8JVzygBGueC":[],"146j6RMbWpKYEaGTdWVza3if3bnCD9Maiz":[],"14Co2CRVu67XLCGrD4RVVpadtoXcodUUWM":[],"15KDqFhdXP6Zn4XtJVVVgahJ7chw9jGhvQ":[],"15sFkiVrGad5QiKgtYjfgi8SSeEfRzxed6":[],"15zoPN5rVKDCsKnZUkTYJWFv4gLdYTat8S":[],"17YQXYHoDqcpd7GvWN9BYK8FnDryhYbKyH":[],"18TKpsznSha4VHLzpVatnrEBdtWkoQSyGw":[],"1BngGArwhpzWjCREXYRS1uhUGszCTe7vqb":[],"1E9wSjSWkFJp3HUaUzUF9eWpCkUZnsNCuX":[],"1ES8hmtgXFLRex71CZHu85cLFRYDczeTZ":[],"1FdV7zK6RdRAKqg3ccGHGK51nJLUwpuBFp":[],"1GjFaGxzqK12N2F7Ao49k7ZvMApCmK7Enk":[],"1HkHDREiY3m9UCxaSAZEn1troa3eHWaiQD":[],"1J2NdSfFiQLhkHs2DVyBmB47Mk65rfrGPp":[],"1KnQX5D5Tv2u5CyWpuXaeM8CvuuVAmfwRz":[],"1KotB3FVFcYuHAVdRNAe2ZN1MREpVWnBgs":[],"1Le4rXQD4kMGsoet4EH8VGzt5VZjdHBpid":[],"1LpV3F25jiNWV8N2RPP1cnKGgpjZh2r8xu":[],"1Mdq8bVFSBfaeH5vjaXGjiPiy6qPVtdfUo":[],"1MrA1WS4iWcTjLrnSqNNpXzSq5W92Bttbj":[],"1NFhYYBh1zDGdnqD1Avo9gaVV8LvnAH6iv":[],"1NMkEhuUYsxTCkfq9zxxCTozKNNqjHeKeC":[],"1NTRF8Y7Mu57dQ9TFwUA98EdmzbAamtLYe":[],"1NZs4y3cJhukVdKSYDhaiMHhP4ZU2qVpAL":[],"1rDkHFozR7kC7MxRiakx3mBeU1Fu6BRbG":[]},"keystore":{"derivation":"m/44'/0'/0'","hw_type":"trezor","label":"trezor1","type":"hardware","xpub":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y"},"pruned_txo":{},"pubkeys":{"change":["03143bc04f007c454e03caf9d59b61e27f527b5e6723e167b50197ce45e2071902","03157710459a8213a79060e2f2003fe0eb7a7ed173ac3f846309de52269dd44740","028ec4bbbf4ac9edfabb704bd82acb0840f2166312929ce01af2b2e99059b16dee","021a9f1201968bd835029daf09ae98745a75bcb8c6143b80610cfc2eb2eee94dd8","031fe8323703fee4a1f6c59f27ceed4e227f5643b1cb387b39619b6b5499a971b4","033199fc62b72ce98e3780684e993f31d520f1da0bf2880ed26153b2efcc86ac1d"],"receiving":["03d27c0f5594d8df0616d64a735c909098eb867d01c6f1588f04ca2cf353837ec0","024d299f21e9ee9cc3eb425d04f45110eff46e45abcab24a3e594645860518fb97","03f6bc650e5f118ab4a63359a9cde4ab8382fe16e7d1b36b0a459145a79bef674b","028bed00a2fbd03f1ff43e0150ec1018458f7b39f3e4e602e089b1f47f8f607136","02108b15014d53f2e4e1b5b2d8f5eaf82006bbc4f273dbfbaef91eff08f9d10ea5","02a9a59a529818f3ba7a37ebe34454eac2bcbe4da0e8566b13f369e03bb020c4c4","023fde4ecf7fbdffb679d92f58381066cf2d840d34cb2d8bef63f7c5182d278d53","02ad8bf6dc0ff3c39bd20297d77fbd62073d7bf2fa44bf716cdd026db0819bb2b4","029c8352118800beaef1f3fa9c12afe30d329e7544bea9b136b717b88c24d95d92","02c42c251392674e2c2768ccd6224e04298bd5479436f02e9867ecc288dd2eb066","0316f3c82d9fce97e267b82147d56a4b170d39e6cf01bfaff6c2ae6bcc79a14447","0398554ee8e333061391b3e866505bbc5e130304ae09b198444bcd31c4ba7846ea","02e69d21aadb502e9bd93c5536866eff8ca6b19664545ccc4e77f3508e0cbe2027","0270fb334407a53a23ad449389e2cb055fae5017ca4d79ec8e082038db2d749c50","03d91a8f47453f9da51e0194e3aacff88bf79a625df82ceee73c71f3a7099a5459","0306b2d3fd06c4673cc90374b7db0c152ba7960be382440cecc4cdad7642e0537c","028020dd6062f080e1e2b49ca629faa1407978adab13b74875a9de93b16accf804","03907061c5f6fde367aafe27e1d53b39ff9c2babffe8ab7cf8c3023acba5c39736","029749462dba9af034455f5e0f170aac67fe9365ce7126092b4d24ced979b5381f","02f001d35308833881b3440670d25072256474c6c4061daf729055bf9563134105"]},"seed_version":13,"stored_height":490013,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"standard","winpos-qt":[631,410,840,405]}''' + wallet_str = '''{"addr_history":{"LM6NBhqWiUD5f2W1WpqLA7MtWiNFjW5Gpf":[],"LNKgMdfRbUZbVNxcoeVHr4nRFp9ULZX4bT":[],"LNRkHQjKykMaazy1PCQnmqeQ71ttwUuuQK":[],"LPYB6U1Tc3Ld2sE3UdUnxbm4Kq5DDkPCEX":[],"LQ6D1vogMEs8fX1r4gixxjCCerbwTX3srN":[],"LQDkeaPgZyTG88UietSqaXKgGthudu92c8":[],"LRmMnkbdJVrssuy5gW8UpLC1zSEFp7omPC":[],"LSgH66JcXMp7k639zdaC4sHwr6t2yTKAwQ":[],"LW1dXPAmnVEZz17PhgQjHvmEV6MUcd6Zhi":[],"LYNthwkLpuYsJ6Ajf8TYRfaaQxqqtYWC1P":[],"LKTPPv5imBVPgTeGBLYbB99NYTnpPpF5wV":[],"LZrSPCcvWHfDaeNCnkFaYL8mzWhm89qZxo":[],"LaxCqVGpuyF5cpwGLw3T28dgZPBUoRcMSZ":[],"LbyEUdYYci1Cj1ejcJYY42xd1nQvM6eiXw":[],"LcFKtey5o4am16ZBPdxV3C7sZxTMyRqyoN":[],"Le1MnHWuYaGxL1fg13WsvNBy98GmHpurMG":[],"Le2qSFZKLGnxXyBnbW9wJaRmZdc6bfBmDG":[],"Les27ji39QbL8cM3ENGRmJ4eHhw1nkrHLf":[],"Lf3SJTKupNcZjw4BbXNJtoP2u36qoUPFJ4":[],"LfrnPoo5Wqudu5n5uiWa1jTVBKCfbNbeG4":[],"Lg57GijtoArWz9YwcyMg6Z4D3HsR6N1tGr":[],"LgUeokVX6eTKtbXNBJv6RheFhLiCzwSPaE":[],"LgahVvDJdYCWTZMzL8xFUUskXak7rKY76R":[],"LggNWLqwSZKAtCqcS5TTR9JPzCxSgoznXZ":[],"LgnpLBMSPN9okS1biMgszNMTbGvkCxAxom":[],"LL5B1VZe55MoSv47bra4E4pwrgNY1zHv1o":[]},"keystore":{"derivation":"m/44'/0'/0'","hw_type":"trezor","label":"trezor1","type":"hardware","xpub":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y"},"pruned_txo":{},"pubkeys":{"change":["03143bc04f007c454e03caf9d59b61e27f527b5e6723e167b50197ce45e2071902","03157710459a8213a79060e2f2003fe0eb7a7ed173ac3f846309de52269dd44740","028ec4bbbf4ac9edfabb704bd82acb0840f2166312929ce01af2b2e99059b16dee","021a9f1201968bd835029daf09ae98745a75bcb8c6143b80610cfc2eb2eee94dd8","031fe8323703fee4a1f6c59f27ceed4e227f5643b1cb387b39619b6b5499a971b4","033199fc62b72ce98e3780684e993f31d520f1da0bf2880ed26153b2efcc86ac1d"],"receiving":["03d27c0f5594d8df0616d64a735c909098eb867d01c6f1588f04ca2cf353837ec0","024d299f21e9ee9cc3eb425d04f45110eff46e45abcab24a3e594645860518fb97","03f6bc650e5f118ab4a63359a9cde4ab8382fe16e7d1b36b0a459145a79bef674b","028bed00a2fbd03f1ff43e0150ec1018458f7b39f3e4e602e089b1f47f8f607136","02108b15014d53f2e4e1b5b2d8f5eaf82006bbc4f273dbfbaef91eff08f9d10ea5","02a9a59a529818f3ba7a37ebe34454eac2bcbe4da0e8566b13f369e03bb020c4c4","023fde4ecf7fbdffb679d92f58381066cf2d840d34cb2d8bef63f7c5182d278d53","02ad8bf6dc0ff3c39bd20297d77fbd62073d7bf2fa44bf716cdd026db0819bb2b4","029c8352118800beaef1f3fa9c12afe30d329e7544bea9b136b717b88c24d95d92","02c42c251392674e2c2768ccd6224e04298bd5479436f02e9867ecc288dd2eb066","0316f3c82d9fce97e267b82147d56a4b170d39e6cf01bfaff6c2ae6bcc79a14447","0398554ee8e333061391b3e866505bbc5e130304ae09b198444bcd31c4ba7846ea","02e69d21aadb502e9bd93c5536866eff8ca6b19664545ccc4e77f3508e0cbe2027","0270fb334407a53a23ad449389e2cb055fae5017ca4d79ec8e082038db2d749c50","03d91a8f47453f9da51e0194e3aacff88bf79a625df82ceee73c71f3a7099a5459","0306b2d3fd06c4673cc90374b7db0c152ba7960be382440cecc4cdad7642e0537c","028020dd6062f080e1e2b49ca629faa1407978adab13b74875a9de93b16accf804","03907061c5f6fde367aafe27e1d53b39ff9c2babffe8ab7cf8c3023acba5c39736","029749462dba9af034455f5e0f170aac67fe9365ce7126092b4d24ced979b5381f","02f001d35308833881b3440670d25072256474c6c4061daf729055bf9563134105"]},"seed_version":13,"stored_height":490013,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"standard","winpos-qt":[631,410,840,405]}''' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_7_18_multisig(self): - wallet_str = '{"addr_history":{"32WKXQ6BWtGJDVTpdcUMhtRZWzgk5eKnhD":[],"33rvo2pxaccCV7jLwvth36sdLkdEqhM8B8":[],"347kG9dzt2M1ZPTa2zzcmVrAE75LuZs9A2":[],"34BBeAVEe5AM6xkRebddFG8JH6Vx1M5hHH":[],"34MAGbxxCHPX8ASfKsyNkzpqPEUTZ5i1Kx":[],"36uNpoPSgUhN5Cc1wRQyL77aD1RL3a9X6f":[],"384xygkfYsSuXN478zhN4jmNcky1bPo7Cq":[],"39GBGaGpp1ePBsjjaw8NmbZNZkMzhfmZ3W":[],"3BRhw13g9ShGcuHbHExxtFfvhjrxiSiA7J":[],"3BboKZc2VgjKVxoC5gndLGpwEkPJuQrZah":[],"3C3gKJ2UQNNHY2SG4h43zRS1faSLhnqQEr":[],"3CEY1V5WvCTxjHEPG5BY4eXpcYhakTvULJ":[],"3DJyQ94H9g18PR6hfzZNxwwdU6773JaYHd":[],"3Djb7sWog5ANggPWHm4xT5JiTrTSCmVQ8N":[],"3EfgjpUeJBhp3DcgP9wz3EhHNdkCbiJe2L":[],"3FWgjvaL8xN6ne19WCEeD5xxryyKAQ5tn1":[],"3H4ZtDFovXxwWXCpRo8mrCczjTrtbT6eYL":[],"3HvnjPzpaE3VGWwGTALZBguT8p9fyAcfHS":[],"3JGuY9EpzuZkDLR7vVGhqK7zmX9jhYEfmD":[],"3JvrP4gpCUeQzqgPyDt2XePXn3kpqFTo9i":[],"3K3TVvsfo52gdwz7gk84hfP77gRmpc3hkf":[],"3K5uh5viV4Dac267Q3eNurQQBnpEbYck5G":[],"3KaoWE1m3QrtvxTQLFfvNs8gwQH8kQDpFM":[],"3Koo71MC4wBfiDKTsck7qCrRjtGx2SwZqT":[],"3L8XBt8KxwqNX1vJprp6C9YfNW4hkYrC6d":[],"3QmZjxPwcsHZgVUR2gQ6wdbGJBbFro8KLJ":[]},"pruned_txo":{},"pubkeys":{"change":[["031bfbbfb36b5e526bf4d94bfc59f170177b2c821f7d4d4c0e1ee945467fe031a0","03c4664d68e3948e2017c5c55f7c1aec72c1c15686b07875b0f20d5f856ebeb703"],["03c515314e4b695a809d3ba08c20bef00397a0e2df729eaf17b8e082825395e06b","032391d8ab8cad902e503492f1051129cee42dc389231d3cdba60541d70e163244"],["035934f55c09ecec3e8f2aa72407ee7ba3c2f077be08b92a27bc4e81b5e27643fe","0332b121ed13753a1f573feaf4d0a94bf5dd1839b94018844a30490dd501f5f5fb"],["02b1367f7f07cbe1ef2c75ac83845c173770e42518da20efde3239bf988dbff5ac","03f3a8b9033b3545fbe47cab10a6f42c51393ed6e525371e864109f0865a0af43c"],["02e7c25f25ecc17969a664d5225c37ec76184a8843f7a94655f5ed34b97c52445d","030ae4304923e6d8d6cd67324fa4c8bc44827918da24a05f9240df7c91c8e8db8f"],["02deb653a1d54372dbc8656fe0a461d91bcaec18add290ccaa742bdaefdb9ec69b","023c1384f90273e3fc8bc551e71ace8f34831d4a364e56a6e778cd802b7f7965a6"]],"receiving":[["02d978f23dc1493db4daf066201f25092d91d60c4b749ca438186764e6d80e6aa1","02912a8c05d16800589579f08263734957797d8e4bc32ad7411472d3625fd51f10"],["024a4b4f2553d7f4cc2229922387aad70e5944a5266b2feb15f453cedbb5859b13","03f8c6751ee93a0f4afb7b2263982b849b3d4d13c2e30b3f8318908ad148274b4b"],["03cd88a88aabc4b833b4631f4ffb4b9dc4a0845bb7bc3309fab0764d6aa08c4f25","03568901b1f3fb8db05dd5c2092afc90671c3eb8a34b03f08bcfb6b20adf98f1cd"],["030530ffe2e4a41312a41f708febab4408ca8e431ce382c1eedb837901839b550d","024d53412197fc609a6ca6997c6634771862f2808c155723fac03ea89a5379fdcc"],["02de503d2081b523087ca195dbae55bafb27031a918a1cfedbd2c4c0da7d519902","03f4a27a98e41bddb7543bf81a9c53313bf9cfb2c2ebdb6bf96551221d8aecb01a"],["03504bc595ac0d947299759871bfdcf46bcdd8a0590c44a78b8b69f1b152019418","0291f188301773dbc7c1d12e88e3aa86e6d4a88185a896f02852141e10e7e986ab"],["0389c3ab262b7994d2202e163632a264f49dd5f78517e01c9210b6d0a29f524cd4","034bdfa9cc0c6896cb9488329d14903cfe60a2879771c5568adfc452f8dba1b2cb"],["02c55a517c162aae2cb5b36eef78b51aa15040e7293033a5b55ba299e375da297d","027273faf29e922d95987a09c2554229becb857a68112bd139409eb111e7cdb45e"],["02401e62d645dc64d43f77ba1f360b529a4c644ed3fc15b35932edafbaf741e844","02c44cbffc13cb53134354acd18c54c59fa78ec61307e147fa0f6f536fb030a675"],["02194a538f37b388b2b138f73a37d7fbb9a3e62f6b5a00bad2420650adc4fb44d9","03e5cc15d47fcdcf815baa0e15227bc5e6bd8af6cae6add71f724e95bc29714ce5"],["037ebf7b2029c8ea0c1861f98e0952c544a38b9e7caebbf514ff58683063cd0e78","022850577856c810dead8d3d44f28a3b71aaf21cdc682db1beb8056408b1d57d52"],["02aea7537611754fdafd98f341c5a6827f8301eaf98f5710c02f17a07a8938a30e","032fa37659a8365fdae3b293a855c5a692faca687b0875e9720219f9adf4bdb6c2"],["0224b0b8d200238495c58e1bc83afd2b57f9dbb79f9a1fdb40747bebb51542c8d3","03b88cd2502e62b69185b989abb786a57de27431ece4eabb26c934848d8426cbd6"],["032802b0be2a00a1e28e1e29cfd2ad79d36ef936a0ef1c834b0bbe55c1b2673bff","032669b2d80f9110e49d49480acf696b74ecca28c21e7d9c1dd2743104c54a0b13"],["03fcfa90eac92950dd66058bbef0feb153e05a114af94b6843d15200ef7cf9ea4a","023246268fbe8b9a023d9a3fa413f666853bbf92c4c0af47731fdded51751e0c3a"],["020cf5fffe70b174e242f6193930d352c54109578024677c1a13ffce5e1f9e6a29","03cb996663b9c895c3e04689f0cf1473974023fa0d59416be2a0b01ccdaa3cc484"],["03467e4fff9b33c73b0140393bde3b35a3f804bce79eccf9c53a1f76c59b7452bd","03251c2a041e953c8007d9ee838569d6be9eacfbf65857e875d87c32a8123036d8"],["02192e19803bfa6f55748aada33f778f0ebb22a1c573e5e49cba14b6a431ef1c37","02224ce74f1ee47ba6eaaf75618ce2d4768a041a553ee5eb60b38895f3f6de11dc"],["032679be8a73fa5f72d438d6963857bd9e49aef6134041ca950c70b017c0c7d44f","025a8463f1c68e85753bd2d37a640ab586d8259f21024f6173aeed15a23ad4287b"],["03ab0355c95480f0157ae48126f893a6d434aa1341ad04c71517b104f3eda08d3d","02ba4aadba99ae8dc60515b15a087e8763496fcf4026f5a637d684d0d0f8a5f76c"]]},"seed_version":13,"stored_height":0,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"2of2","winpos-qt":[523,230,840,405],"x1/":{"seed":"pudding sell evoke crystal try order supply chase fine drive nurse double","type":"bip32","xprv":"xprv9s21ZrQH143K2MK5erSSgeaPA1H7gENYS6grakohkaK2M4tzqo6XAjLoRPcBRW9NbGNpaZN3pdoSKLeiQJwmqdSi3GJWZLnK1Txpbn3zinV","xpub":"xpub661MyMwAqRbcEqPYksyT3nX7i37c5h6PoKcTP9DKJur1DsE9PLQmiXfHGe8RmN538Pj8t3qUQcZXCMrkS5z1uWJ6jf9EptAFbC4Z2nKaEQE"},"x2/":{"type":"bip32","xprv":null,"xpub":"xpub661MyMwAqRbcGYXvLgWjW91feK49GajmPdEarB3Ny8JDduUhzTcEThc8Xs1GyqMR4S7xPHvSq4sbDEFzQh3hjJJFEksUzvnjYnap5RX9o4j"}}' + wallet_str = '{"addr_history":{"M8iTqHW9U17j1zjijVThXXfxqhHBz7TQ4y":[],"MA556vEvXjTdHd1F3ot2rk82fTDgr8Rojg":[],"MAKta33xq9CSMtjU8syxb96ZYofnuELHoC":[],"MAPKx3uCbC1muU2KkUcy4uNhbo6Py5i8E2":[],"MAZJaVNv9QEwvfiZRkxiae5Ehw4uYAc6mY":[],"MD7X8goQdbYnshsv3JQK9kMyXi1n3PjF9m":[],"MEH7HaAdVzJLKsL1EsghtP1mwTZTYycTC9":[],"MFUKaTgnm8VozP1dgp7ibEomtSxSkZjj7h":[],"MHdrEtTe6ZYhRQZVP7xJhtvL2STQgSj9E4":[],"MHowdT1zSoakJU56BZmy9v5LZSykw8QTvW":[],"MJFpdBSSMVDiLXiAAa3Pp4gQzH2nkwAV9F":[],"MJSgKNVUsKKPXnWHMxAstHnDwFJ2iayuMr":[],"MKX7i2UF6nrZBvNbmsYinbC2nnhYxXcqkQ":[],"MKwjRkvmdC1oVBfQPe4JGiZ7nZ3tCeknKP":[],"MLsq3htcFJZEqitaV2wKrswghLLeeFXhyu":[],"MMiq3ozJ65DXb9H3c5Dz2jDNBgZm6NJsoQ":[],"MPGiC6fmsepNK2UiXg87fqsQ4ATLdwP9XA":[],"MQ8w3HQnXLtv52DAZ3Ku1L9rTWk7wyhL57":[],"MQV3r2enx2RB1qh22NG3exNQ6DkBfWTWi6":[],"MR8zgx6n9bVqoLxJ56sNMHdw6kMGngptYr":[],"MRFbopHdkBt7STG1nd7QXJdWSP2Dqv3LZa":[],"MRJ3zyLgSB51QXN1VvdijVeoWVQgXUEVEu":[],"MRnwp7RizXiKjTjJS8fGCWP6G6saigQKVZ":[],"MS1wQtmA2436WibMyVjTer6q4asQ3aST6e":[],"MSLfVmYHv4goKXCCvjoS1no4hCf9ghyXXT":[],"MWyi3qouZz8zUzkK8ZPSmGqfctBhoSW7ww":[]},"pruned_txo":{},"pubkeys":{"change":[["031bfbbfb36b5e526bf4d94bfc59f170177b2c821f7d4d4c0e1ee945467fe031a0","03c4664d68e3948e2017c5c55f7c1aec72c1c15686b07875b0f20d5f856ebeb703"],["03c515314e4b695a809d3ba08c20bef00397a0e2df729eaf17b8e082825395e06b","032391d8ab8cad902e503492f1051129cee42dc389231d3cdba60541d70e163244"],["035934f55c09ecec3e8f2aa72407ee7ba3c2f077be08b92a27bc4e81b5e27643fe","0332b121ed13753a1f573feaf4d0a94bf5dd1839b94018844a30490dd501f5f5fb"],["02b1367f7f07cbe1ef2c75ac83845c173770e42518da20efde3239bf988dbff5ac","03f3a8b9033b3545fbe47cab10a6f42c51393ed6e525371e864109f0865a0af43c"],["02e7c25f25ecc17969a664d5225c37ec76184a8843f7a94655f5ed34b97c52445d","030ae4304923e6d8d6cd67324fa4c8bc44827918da24a05f9240df7c91c8e8db8f"],["02deb653a1d54372dbc8656fe0a461d91bcaec18add290ccaa742bdaefdb9ec69b","023c1384f90273e3fc8bc551e71ace8f34831d4a364e56a6e778cd802b7f7965a6"]],"receiving":[["02d978f23dc1493db4daf066201f25092d91d60c4b749ca438186764e6d80e6aa1","02912a8c05d16800589579f08263734957797d8e4bc32ad7411472d3625fd51f10"],["024a4b4f2553d7f4cc2229922387aad70e5944a5266b2feb15f453cedbb5859b13","03f8c6751ee93a0f4afb7b2263982b849b3d4d13c2e30b3f8318908ad148274b4b"],["03cd88a88aabc4b833b4631f4ffb4b9dc4a0845bb7bc3309fab0764d6aa08c4f25","03568901b1f3fb8db05dd5c2092afc90671c3eb8a34b03f08bcfb6b20adf98f1cd"],["030530ffe2e4a41312a41f708febab4408ca8e431ce382c1eedb837901839b550d","024d53412197fc609a6ca6997c6634771862f2808c155723fac03ea89a5379fdcc"],["02de503d2081b523087ca195dbae55bafb27031a918a1cfedbd2c4c0da7d519902","03f4a27a98e41bddb7543bf81a9c53313bf9cfb2c2ebdb6bf96551221d8aecb01a"],["03504bc595ac0d947299759871bfdcf46bcdd8a0590c44a78b8b69f1b152019418","0291f188301773dbc7c1d12e88e3aa86e6d4a88185a896f02852141e10e7e986ab"],["0389c3ab262b7994d2202e163632a264f49dd5f78517e01c9210b6d0a29f524cd4","034bdfa9cc0c6896cb9488329d14903cfe60a2879771c5568adfc452f8dba1b2cb"],["02c55a517c162aae2cb5b36eef78b51aa15040e7293033a5b55ba299e375da297d","027273faf29e922d95987a09c2554229becb857a68112bd139409eb111e7cdb45e"],["02401e62d645dc64d43f77ba1f360b529a4c644ed3fc15b35932edafbaf741e844","02c44cbffc13cb53134354acd18c54c59fa78ec61307e147fa0f6f536fb030a675"],["02194a538f37b388b2b138f73a37d7fbb9a3e62f6b5a00bad2420650adc4fb44d9","03e5cc15d47fcdcf815baa0e15227bc5e6bd8af6cae6add71f724e95bc29714ce5"],["037ebf7b2029c8ea0c1861f98e0952c544a38b9e7caebbf514ff58683063cd0e78","022850577856c810dead8d3d44f28a3b71aaf21cdc682db1beb8056408b1d57d52"],["02aea7537611754fdafd98f341c5a6827f8301eaf98f5710c02f17a07a8938a30e","032fa37659a8365fdae3b293a855c5a692faca687b0875e9720219f9adf4bdb6c2"],["0224b0b8d200238495c58e1bc83afd2b57f9dbb79f9a1fdb40747bebb51542c8d3","03b88cd2502e62b69185b989abb786a57de27431ece4eabb26c934848d8426cbd6"],["032802b0be2a00a1e28e1e29cfd2ad79d36ef936a0ef1c834b0bbe55c1b2673bff","032669b2d80f9110e49d49480acf696b74ecca28c21e7d9c1dd2743104c54a0b13"],["03fcfa90eac92950dd66058bbef0feb153e05a114af94b6843d15200ef7cf9ea4a","023246268fbe8b9a023d9a3fa413f666853bbf92c4c0af47731fdded51751e0c3a"],["020cf5fffe70b174e242f6193930d352c54109578024677c1a13ffce5e1f9e6a29","03cb996663b9c895c3e04689f0cf1473974023fa0d59416be2a0b01ccdaa3cc484"],["03467e4fff9b33c73b0140393bde3b35a3f804bce79eccf9c53a1f76c59b7452bd","03251c2a041e953c8007d9ee838569d6be9eacfbf65857e875d87c32a8123036d8"],["02192e19803bfa6f55748aada33f778f0ebb22a1c573e5e49cba14b6a431ef1c37","02224ce74f1ee47ba6eaaf75618ce2d4768a041a553ee5eb60b38895f3f6de11dc"],["032679be8a73fa5f72d438d6963857bd9e49aef6134041ca950c70b017c0c7d44f","025a8463f1c68e85753bd2d37a640ab586d8259f21024f6173aeed15a23ad4287b"],["03ab0355c95480f0157ae48126f893a6d434aa1341ad04c71517b104f3eda08d3d","02ba4aadba99ae8dc60515b15a087e8763496fcf4026f5a637d684d0d0f8a5f76c"]]},"seed_version":13,"stored_height":0,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"2of2","winpos-qt":[523,230,840,405],"x1/":{"seed":"pudding sell evoke crystal try order supply chase fine drive nurse double","type":"bip32","xprv":"xprv9s21ZrQH143K2MK5erSSgeaPA1H7gENYS6grakohkaK2M4tzqo6XAjLoRPcBRW9NbGNpaZN3pdoSKLeiQJwmqdSi3GJWZLnK1Txpbn3zinV","xpub":"xpub661MyMwAqRbcEqPYksyT3nX7i37c5h6PoKcTP9DKJur1DsE9PLQmiXfHGe8RmN538Pj8t3qUQcZXCMrkS5z1uWJ6jf9EptAFbC4Z2nKaEQE"},"x2/":{"type":"bip32","xprv":null,"xpub":"xpub661MyMwAqRbcGYXvLgWjW91feK49GajmPdEarB3Ny8JDduUhzTcEThc8Xs1GyqMR4S7xPHvSq4sbDEFzQh3hjJJFEksUzvnjYnap5RX9o4j"}}' self._upgrade_storage(wallet_str) # seed_version 13 is ambiguous @@ -208,47 +208,47 @@ def test_upgrade_from_client_2_7_18_multisig(self): # then opened in 2.8.3, after which a few other new privkeys were imported # it's in some sense in an "inconsistent" state def test_upgrade_from_client_2_8_3_importedkeys_flawed_previous_upgrade_from_2_7_18(self): - wallet_str = '{"addr_history":{"15VBrfYwoXvDWyXHq1myxDv4h36qUmCHcE":[],"179vRrzjT9k7k5oCNCx6eodYCaLKPy9UQn":[],"18o6WCBWdAaM5kjKnyEL4HysoT324rvJu7":[],"1A9F6ZEqmfKeuLeEq5eWFxajgiJfGCc7ar":[],"1BTjGNUmeMSPBTuXTdwD3DLyCugAZaFb7w":[],"1CjW4KM38acCRw3spiFKiZsj7xmmQqqwd8":[],"1EaDNLPwHRraX1N3ecPWJ2mm7NRgdtvpCj":[],"1PYtQBkjXHQX6YtMzEgehN638o784pK3ce":[],"1yT2T4ha3i1GZoK2iP8EpcgSNG34R2ufM":[]},"addresses":{"change":[],"receiving":["1PYtQBkjXHQX6YtMzEgehN638o784pK3ce","1yT2T4ha3i1GZoK2iP8EpcgSNG34R2ufM","1CjW4KM38acCRw3spiFKiZsj7xmmQqqwd8","1A9F6ZEqmfKeuLeEq5eWFxajgiJfGCc7ar","18o6WCBWdAaM5kjKnyEL4HysoT324rvJu7","1EaDNLPwHRraX1N3ecPWJ2mm7NRgdtvpCj","179vRrzjT9k7k5oCNCx6eodYCaLKPy9UQn","1BTjGNUmeMSPBTuXTdwD3DLyCugAZaFb7w","15VBrfYwoXvDWyXHq1myxDv4h36qUmCHcE"]},"keystore":{"keypairs":{"0206b77fd06f212ad7d85f4a054c231ba4e7894b1773dcbb449671ee54618ff5e9":"L52LWS2hB5ev9JYiisFewJH9Q16U7yYcSNt3M8UKLmL5p1q3v2H2","028cda4a0f03cbcbc695d9cac0858081fd5458acfd29564127d329553245afca42":"KzRhkN9Psm9BobcPx3X3VykVA8yhCBrVvE4tTyq6NE283sL6uvYG","02ba4117a24d7e38ae14c429fce0d521aa1fb6bb97558a13f1ef2bc0a476a1741f":"KySXfvidmMBf8iw6m3R9WtdfKcQPWXenwMZtpno5XpfLMNHH8PMn","031bb44462038b97010624a8f8cb15a10fd0d277f12aba3ccf5ce0d36fc6df3112":"KxmcmCvNrZFgy2jyz9W353XbMwCYWHzYTQVzbaDfZM4FLxemgmKh","0339081c4a0ce22c01aa78a5d025e7a109100d1a35ef0f8f06a0d4c5f9ffefc042":"L53Ks569m3H1dRzua3nGzBE3AaEV8dMvBoHDeSJGnWEDeL775mJ5","0339ea71aba2805238e636c2f1b3e5a8308b1dbdbb335787c51f2f6bf3f6218643":"KwHDUpfvnSC58bs3nGy7YpducXkbmo6UUHrydBHy6sT1mRJcVvBo","04e7dc460c87267cf0958d6904d9cd99a4af0d64d61858636aec7a02e5f9a578d27c1329d5ddc45a937130ed4a59e4147cb4907724321baa6a976f9972a17f79ba":"5JECca5E7r1eNgME7NsPdE29XiVCVwXSzEihnhAQXuMdsJ4VL8S","04e9ad0bf70c51c06c2459961175c47cfec59d58ebef4ffcd9836904ef11230afce03ab5eaac5958b538382195b5aea9bf057c0486079869bb72ef9c958f33f1ed":"5Jt9rGLWgxoJUo4eoYEECskLmRA4BkZqHPHg7DdghKBaWarKuxW","04f8cbd67830ab37138c92898a64a4edf836a60aa5b36956547788bd205c635d6a3056fa6a079961384ae336e737d4c45835821c8915dbc5e18a7def88df83946b":"5KRjCNThRDP8aQTJ3Hq9HUSVNRNUB2e69xwLfMUsrXYLXT7U8b9"},"type":"imported"},"pruned_txo":{},"pubkeys":{"change":[],"receiving":["04e9ad0bf70c51c06c2459961175c47cfec59d58ebef4ffcd9836904ef11230afce03ab5eaac5958b538382195b5aea9bf057c0486079869bb72ef9c958f33f1ed","0339081c4a0ce22c01aa78a5d025e7a109100d1a35ef0f8f06a0d4c5f9ffefc042","0339ea71aba2805238e636c2f1b3e5a8308b1dbdbb335787c51f2f6bf3f6218643","02ba4117a24d7e38ae14c429fce0d521aa1fb6bb97558a13f1ef2bc0a476a1741f","028cda4a0f03cbcbc695d9cac0858081fd5458acfd29564127d329553245afca42","04e7dc460c87267cf0958d6904d9cd99a4af0d64d61858636aec7a02e5f9a578d27c1329d5ddc45a937130ed4a59e4147cb4907724321baa6a976f9972a17f79ba","04f8cbd67830ab37138c92898a64a4edf836a60aa5b36956547788bd205c635d6a3056fa6a079961384ae336e737d4c45835821c8915dbc5e18a7def88df83946b"]},"seed_version":13,"stored_height":492756,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"standard","winpos-qt":[100,100,840,405]}' + wallet_str = '{"addr_history":{"LPi97srmtCAGmnDT19mHEEypuFU7ZPmHCt":[],"LRNsh5JZXozAztVMYLwPvphJQnhbVzYfgG":[],"LT23mQVLhppQLZRUy7DdLK3e1fQJFz4Vbt":[],"LUNCMmYfrKZiA9LQ1DdoXyeVtvfwJYQa8Y":[],"LVggXanbj1gSSGbgdmvWKEQjR83Si2W5e1":[],"LWxTKXesDErFgjk2zrEczawVLB93XBN17Z":[],"LYoAdYhmN66dmp4CpkNoa3qXKanxmSoSP4":[],"LhmqfQ4ZbweaMMaXANfwyP9oM1UQBhojhc":[],"LLCQHfNXehx4XNVUCrNRWqgSeadK8mKQWj":[]},"addresses":{"change":[],"receiving":["LhmqfQ4ZbweaMMaXANfwyP9oM1UQBhojhc","LLCQHfNXehx4XNVUCrNRWqgSeadK8mKQWj","LWxTKXesDErFgjk2zrEczawVLB93XBN17Z","LUNCMmYfrKZiA9LQ1DdoXyeVtvfwJYQa8Y","LT23mQVLhppQLZRUy7DdLK3e1fQJFz4Vbt","LYoAdYhmN66dmp4CpkNoa3qXKanxmSoSP4","LRNsh5JZXozAztVMYLwPvphJQnhbVzYfgG","LVggXanbj1gSSGbgdmvWKEQjR83Si2W5e1","LPi97srmtCAGmnDT19mHEEypuFU7ZPmHCt"]},"keystore":{"keypairs":{"0206b77fd06f212ad7d85f4a054c231ba4e7894b1773dcbb449671ee54618ff5e9":"TArbxBKsaTdWv9BbGWCX9epXLrjnC4ZWFanJCw6rujWFKuUey6VQ","028cda4a0f03cbcbc695d9cac0858081fd5458acfd29564127d329553245afca42":"T6FyC7SaH97naSFGVgTuiLHs6zd1GGsPjRy9KnTdwCCHZku7rQJr","02ba4117a24d7e38ae14c429fce0d521aa1fb6bb97558a13f1ef2bc0a476a1741f":"T5Go7g1pAjAFuZZyJgN1jFB3GU3hacfgkZU9gbRd6nqVsFmtPMio","031bb44462038b97010624a8f8cb15a10fd0d277f12aba3ccf5ce0d36fc6df3112":"T4btCxDZFwEHjsNrXnSuHQ4yJnqraP1SGcQFTNrD8KEQrrAersDu","0339081c4a0ce22c01aa78a5d025e7a109100d1a35ef0f8f06a0d4c5f9ffefc042":"TAsbJpPLARFcQGdn7gj9CXmR7RsoCiNp11BUWEvpMUQPADjCH2E4","0339ea71aba2805238e636c2f1b3e5a8308b1dbdbb335787c51f2f6bf3f6218643":"T37UvZy7BpAfuSVvKuuymBBHZPPuqt7NHVmEUyvWfqdBHJoxiKkw","04e7dc460c87267cf0958d6904d9cd99a4af0d64d61858636aec7a02e5f9a578d27c1329d5ddc45a937130ed4a59e4147cb4907724321baa6a976f9972a17f79ba":"6uXw5hcm2GUWr4F5dCfMQcoKVC3fhjyUkv7sVtBSFMgFZB63bNt","04e9ad0bf70c51c06c2459961175c47cfec59d58ebef4ffcd9836904ef11230afce03ab5eaac5958b538382195b5aea9bf057c0486079869bb72ef9c958f33f1ed":"6vBtKPt3bPGAxAxWKN2BzGXWitiXPZ1s44gqpQeiQmWCCQYsJeB","04f8cbd67830ab37138c92898a64a4edf836a60aa5b36956547788bd205c635d6a3056fa6a079961384ae336e737d4c45835821c8915dbc5e18a7def88df83946b":"6vjTfW1EKdr13nM9Z7d74sDfKtvwNq67veLWNYVuZyrxDHmTv51"},"type":"imported"},"pruned_txo":{},"pubkeys":{"change":[],"receiving":["04e9ad0bf70c51c06c2459961175c47cfec59d58ebef4ffcd9836904ef11230afce03ab5eaac5958b538382195b5aea9bf057c0486079869bb72ef9c958f33f1ed","0339081c4a0ce22c01aa78a5d025e7a109100d1a35ef0f8f06a0d4c5f9ffefc042","0339ea71aba2805238e636c2f1b3e5a8308b1dbdbb335787c51f2f6bf3f6218643","02ba4117a24d7e38ae14c429fce0d521aa1fb6bb97558a13f1ef2bc0a476a1741f","028cda4a0f03cbcbc695d9cac0858081fd5458acfd29564127d329553245afca42","04e7dc460c87267cf0958d6904d9cd99a4af0d64d61858636aec7a02e5f9a578d27c1329d5ddc45a937130ed4a59e4147cb4907724321baa6a976f9972a17f79ba","04f8cbd67830ab37138c92898a64a4edf836a60aa5b36956547788bd205c635d6a3056fa6a079961384ae336e737d4c45835821c8915dbc5e18a7def88df83946b"]},"seed_version":13,"stored_height":492756,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"standard","winpos-qt":[100,100,840,405]}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_8_3_seeded(self): - wallet_str = '{"addr_history":{"13sNgoAhqDUTB3YSzWYcKKvP2EczG5JGmt":[],"14C6nXs2GRaK3o5U5e8dJSpVRCoqTsyAkJ":[],"14fH7oRM4bqJtJkgJEynTShcUXQwdxH6mw":[],"16FECc7nP2wor1ijXKihGofUoCkoJnq6XR":[],"16cMJC5ZAtPnvLQBzfHm9YR9GoDxUseMEk":[],"17CbQhK3gutqgWt2iLX69ZeSCvw8yFxPLz":[],"17jEaAyekE8BHPvPmkJqFUh1v1GSi6ywoV":[],"19F5SjaWYVCKMPWR8q1Freo4RGChSmFztL":[],"19snysSPZEbgjmeMtuT7qDMTLH2fa7zrWW":[],"1AFgvLGNHP3nZDNrZ4R2BZKnbwDVAEUP4q":[],"1AwWgUbjQfRhKVLKm1o7qfpXnqeN3cu7Ms":[],"1B4FU2WEd2NQzd2MkWBLHw87uJhBxoVghh":[],"1BEBouVJFihDmEQMTAv4bNV2Q7dZh5iJzv":[],"1BdB7ahc8TSR9RJDmWgGSgsWji2BgzcVvC":[],"1DGhQ1up6dMieEwFdsQQFHRriyyR59rYVq":[],"1HBAAqFVndXBcWdWQNYVYSDK9kdUu8ZRU3":[],"1HMrRJkTayNRBZdXZKVb7oLZKj24Pq65T6":[],"1HiB2QCfNem8b4cJaZ2Rt9T4BbUCPXvTpT":[],"1HkbtbyocwHWjKBmzKmq8szv3cFgSGy7dL":[],"1K5CWjgZEYcKTsJWeQrH6NcMPzFUAikD8z":[],"1KMDUXdqpthH1XZU4q5kdSoMZmCW9yDMcN":[],"1KmHNiNmeS7tWRLYTFDMrTbKR6TERYicst":[],"1NQwmHYdxU1pFTTWyptn8vPW1hsSWJBRTn":[],"1NuPofeK8yNEjtVAu9Rc2pKS9kw8YWUatL":[],"1Q3eTNJWTnfxPkUJXQkeCqPh1cBQjjEXFn":[],"1QEuVTdenchPn9naMhakYx8QwGUXE6JYp":[]},"addresses":{"change":["1K5CWjgZEYcKTsJWeQrH6NcMPzFUAikD8z","19snysSPZEbgjmeMtuT7qDMTLH2fa7zrWW","1DGhQ1up6dMieEwFdsQQFHRriyyR59rYVq","17CbQhK3gutqgWt2iLX69ZeSCvw8yFxPLz","1Q3eTNJWTnfxPkUJXQkeCqPh1cBQjjEXFn","17jEaAyekE8BHPvPmkJqFUh1v1GSi6ywoV"],"receiving":["1KMDUXdqpthH1XZU4q5kdSoMZmCW9yDMcN","1HkbtbyocwHWjKBmzKmq8szv3cFgSGy7dL","1HiB2QCfNem8b4cJaZ2Rt9T4BbUCPXvTpT","14fH7oRM4bqJtJkgJEynTShcUXQwdxH6mw","1NuPofeK8yNEjtVAu9Rc2pKS9kw8YWUatL","16FECc7nP2wor1ijXKihGofUoCkoJnq6XR","19F5SjaWYVCKMPWR8q1Freo4RGChSmFztL","1NQwmHYdxU1pFTTWyptn8vPW1hsSWJBRTn","1HBAAqFVndXBcWdWQNYVYSDK9kdUu8ZRU3","1B4FU2WEd2NQzd2MkWBLHw87uJhBxoVghh","1HMrRJkTayNRBZdXZKVb7oLZKj24Pq65T6","1KmHNiNmeS7tWRLYTFDMrTbKR6TERYicst","1BdB7ahc8TSR9RJDmWgGSgsWji2BgzcVvC","14C6nXs2GRaK3o5U5e8dJSpVRCoqTsyAkJ","1AFgvLGNHP3nZDNrZ4R2BZKnbwDVAEUP4q","13sNgoAhqDUTB3YSzWYcKKvP2EczG5JGmt","1AwWgUbjQfRhKVLKm1o7qfpXnqeN3cu7Ms","1QEuVTdenchPn9naMhakYx8QwGUXE6JYp","1BEBouVJFihDmEQMTAv4bNV2Q7dZh5iJzv","16cMJC5ZAtPnvLQBzfHm9YR9GoDxUseMEk"]},"keystore":{"seed":"novel clay width echo swing blanket absorb salute asset under ginger final","type":"bip32","xprv":"xprv9s21ZrQH143K2jfFF6ektPj6zCCsDGGjQxhD2FQ21j6yrA1piWWEjch2kf1smzB2rzm8rPkdJuHf3vsKqMX9ogtE2A7JF49qVUHrgtjRymM","xpub":"xpub661MyMwAqRbcFDjiM8BmFXfqYE3McizanBcopdoda4dxixLyG3pVHR1WbwgjLo9RL882KRfpfpxh7a7zXPogDdR4xj9TpJWJGsbwaodLSKe"},"pruned_txo":{},"seed_type":"standard","seed_version":13,"stored_height":0,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"standard","winpos-qt":[100,100,840,405]}' + wallet_str = '{"addr_history":{"LN6Kx1UXusiWRrEcAeXubLz9ESzGRQwKcu":[],"LNR43kArM5pNJbmdFn7vaTtFdRB7a94V8x":[],"LNtEP1jB9G5N97SqUNy5jTmNgjnDofR2DW":[],"LQUBTpRcThBs6pQthThzYpjF1R85RnLRad":[],"LQqJZQPPFYdrB96MAoH4RZUuV1bEYGQzgB":[],"LRRYfucsma8twKaBtUWPRaiCR9JR5mtDJo":[],"LRxBqPHUptNEYCcYwtJ8XVkn8DdirU1M4J":[],"LTU2hwtLd9SNcCCaJxzZ8frpdUZyVGohou":[],"LU6kF5kDdtqjzaLX53SR7ERDYVPwd9iKfr":[],"LUUeBYaCN3Hqp251jCQKTaPYp9amJpSHML":[],"LVATwguZVKfkaJ2Uw9nR7gtJ141e6pxHCG":[],"LVHCjEp4hgcUFRiWveAdZxBt7X4U8r93F2":[],"LVT957o8LNwH236WdJuMsPYncKzqmrWyJM":[],"LVr8No1SD7gUQDzNwefZihwGwvPTnWxmg2":[],"LXVefEDeBHbmu3dQp1PhXJVcwCLh99DUVe":[],"LbQ7S3ZKsHmEsKKfaWXnpTH5Mxzm3EUigP":[],"LbaogX4HfdcUSNKgjTUtPpQKXwPLVrf6q2":[],"Lbw8HcWVTK1BqsJTkh1jAAWpPoqUSM7h1K":[],"LbyZ9pHdhbXZz7swATm8Qu4gFpcxZCBsFa":[],"LdJ9mwzPKCrNifzfpYqaNPg7cCckHRhfPU":[],"LdaAjjwfuYwLGLFdEy53uTs7myZnG3pQr4":[],"LdzEdvgbj6MwmE2hdPCf8Uf5dJpWVcSqVt":[],"Lgdu2VrU38FsWG9g9xt5QwTGDvEie2hWou":[],"Lh8M4sx9DdcHzhBL5HQuJqPCMyJQdXBFXY":[],"LiGbiacLYSv1eZAThYjwUrTTDpYgvBVvXm":[],"LKdCAhmTjSrkeaqwkVgt2a1td9dkeCBwDX":[]},"addresses":{"change":["LdJ9mwzPKCrNifzfpYqaNPg7cCckHRhfPU","LU6kF5kDdtqjzaLX53SR7ERDYVPwd9iKfr","LXVefEDeBHbmu3dQp1PhXJVcwCLh99DUVe","LRRYfucsma8twKaBtUWPRaiCR9JR5mtDJo","LiGbiacLYSv1eZAThYjwUrTTDpYgvBVvXm","LRxBqPHUptNEYCcYwtJ8XVkn8DdirU1M4J"],"receiving":["LdaAjjwfuYwLGLFdEy53uTs7myZnG3pQr4","LbyZ9pHdhbXZz7swATm8Qu4gFpcxZCBsFa","Lbw8HcWVTK1BqsJTkh1jAAWpPoqUSM7h1K","LNtEP1jB9G5N97SqUNy5jTmNgjnDofR2DW","Lh8M4sx9DdcHzhBL5HQuJqPCMyJQdXBFXY","LQUBTpRcThBs6pQthThzYpjF1R85RnLRad","LTU2hwtLd9SNcCCaJxzZ8frpdUZyVGohou","Lgdu2VrU38FsWG9g9xt5QwTGDvEie2hWou","LbQ7S3ZKsHmEsKKfaWXnpTH5Mxzm3EUigP","LVHCjEp4hgcUFRiWveAdZxBt7X4U8r93F2","LbaogX4HfdcUSNKgjTUtPpQKXwPLVrf6q2","LdzEdvgbj6MwmE2hdPCf8Uf5dJpWVcSqVt","LVr8No1SD7gUQDzNwefZihwGwvPTnWxmg2","LNR43kArM5pNJbmdFn7vaTtFdRB7a94V8x","LUUeBYaCN3Hqp251jCQKTaPYp9amJpSHML","LN6Kx1UXusiWRrEcAeXubLz9ESzGRQwKcu","LVATwguZVKfkaJ2Uw9nR7gtJ141e6pxHCG","LKdCAhmTjSrkeaqwkVgt2a1td9dkeCBwDX","LVT957o8LNwH236WdJuMsPYncKzqmrWyJM","LQqJZQPPFYdrB96MAoH4RZUuV1bEYGQzgB"]},"keystore":{"seed":"novel clay width echo swing blanket absorb salute asset under ginger final","type":"bip32","xprv":"xprv9s21ZrQH143K2jfFF6ektPj6zCCsDGGjQxhD2FQ21j6yrA1piWWEjch2kf1smzB2rzm8rPkdJuHf3vsKqMX9ogtE2A7JF49qVUHrgtjRymM","xpub":"xpub661MyMwAqRbcFDjiM8BmFXfqYE3McizanBcopdoda4dxixLyG3pVHR1WbwgjLo9RL882KRfpfpxh7a7zXPogDdR4xj9TpJWJGsbwaodLSKe"},"pruned_txo":{},"seed_type":"standard","seed_version":13,"stored_height":0,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"standard","winpos-qt":[100,100,840,405]}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_8_3_importedkeys(self): - wallet_str = '{"addr_history":{"1364Js2VG66BwRdkaoxAaFtdPb1eQgn8Dr":[],"15CyDgLffJsJgQrhcyooFH4gnVDG82pUrA":[],"1Exet2BhHsFxKTwhnfdsBMkPYLGvobxuW6":[]},"addresses":{"change":[],"receiving":["1364Js2VG66BwRdkaoxAaFtdPb1eQgn8Dr","1Exet2BhHsFxKTwhnfdsBMkPYLGvobxuW6","15CyDgLffJsJgQrhcyooFH4gnVDG82pUrA"]},"keystore":{"keypairs":{"0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5":"L2sED74axVXC4H8szBJ4rQJrkfem7UMc6usLCPUoEWxDCFGUaGUM","0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f":"L3Gi6EQLvYw8gEEUckmqawkevfj9s8hxoQDFveQJGZHTfyWnbk1U","04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2":"5JyVyXU1LiRXATvRTQvR9Kp8Rx1X84j2x49iGkjSsXipydtByUq"},"type":"imported"},"pruned_txo":{},"seed_version":13,"stored_height":0,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"standard","winpos-qt":[100,100,840,405]}' + wallet_str = '{"addr_history":{"LMK1a5LKLkLFCEKukwwTrGxPboNvZjDbcY":[],"LPRvUteVjy7MwDYro7o6XJ8SzhaYBJQhoM":[],"LZBc9EVXNXW1aGdrxodATNp9kYeCxufeWb":[]},"addresses":{"change":[],"receiving":["LMK1a5LKLkLFCEKukwwTrGxPboNvZjDbcY","LZBc9EVXNXW1aGdrxodATNp9kYeCxufeWb","LPRvUteVjy7MwDYro7o6XJ8SzhaYBJQhoM"]},"keystore":{"keypairs":{"0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5":"T8hVerMmMsVnq7mkXpEw4krEhXJ5BZNVv7mb4C7LoV8Ni8iywME1","0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f":"T96yXyhXKvujT4sMAPihoJJ2sXNTwDircc7WnT2qqXTdBs433uZ5","04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2":"6vHESf1YF8tPdqpGyEiNvibJPRZzKsB4ijYsywkUaz3SfUAnidY"},"type":"imported"},"pruned_txo":{},"seed_version":13,"stored_height":0,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"standard","winpos-qt":[100,100,840,405]}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_8_3_watchaddresses(self): - wallet_str = '{"addr_history":{"1DgrwN2JCDZ6uPMSvSz8dPeUtaxLxWM2kf":[],"1H3mPXHFzA8UbvhQVabcDjYw3CPb3djvxs":[],"1HocPduHmQUJerpdaLG8DnmxvnDCVQwWsa":[]},"addresses":["1H3mPXHFzA8UbvhQVabcDjYw3CPb3djvxs","1HocPduHmQUJerpdaLG8DnmxvnDCVQwWsa","1DgrwN2JCDZ6uPMSvSz8dPeUtaxLxWM2kf"],"pruned_txo":{},"seed_version":13,"stored_height":0,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"verified_tx3":{},"wallet_type":"imported","winpos-qt":[535,380,840,405]}' + wallet_str = '{"addr_history":{"LXupCaL8GsoAAC3c6ayRuQiF6oKd6jzvF2":[],"LbGiejb64pNXrjPZfiauVkchFQksBnFjrz":[],"Lc2ZerD7r4iMufWnkUFRVoqj8zaUdra9gy":[]},"addresses":["LbGiejb64pNXrjPZfiauVkchFQksBnFjrz","Lc2ZerD7r4iMufWnkUFRVoqj8zaUdra9gy","LXupCaL8GsoAAC3c6ayRuQiF6oKd6jzvF2"],"pruned_txo":{},"seed_version":13,"stored_height":0,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"verified_tx3":{},"wallet_type":"imported","winpos-qt":[535,380,840,405]}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_8_3_trezor_singleacc(self): - wallet_str = '''{"addr_history":{"12sQvVXgdoy2QDorLgr2t6J8JVzygBGueC":[],"146j6RMbWpKYEaGTdWVza3if3bnCD9Maiz":[],"14Co2CRVu67XLCGrD4RVVpadtoXcodUUWM":[],"15KDqFhdXP6Zn4XtJVVVgahJ7chw9jGhvQ":[],"15sFkiVrGad5QiKgtYjfgi8SSeEfRzxed6":[],"15zoPN5rVKDCsKnZUkTYJWFv4gLdYTat8S":[],"17YQXYHoDqcpd7GvWN9BYK8FnDryhYbKyH":[],"18TKpsznSha4VHLzpVatnrEBdtWkoQSyGw":[],"1BngGArwhpzWjCREXYRS1uhUGszCTe7vqb":[],"1E9wSjSWkFJp3HUaUzUF9eWpCkUZnsNCuX":[],"1ES8hmtgXFLRex71CZHu85cLFRYDczeTZ":[],"1FdV7zK6RdRAKqg3ccGHGK51nJLUwpuBFp":[],"1GjFaGxzqK12N2F7Ao49k7ZvMApCmK7Enk":[],"1HkHDREiY3m9UCxaSAZEn1troa3eHWaiQD":[],"1J2NdSfFiQLhkHs2DVyBmB47Mk65rfrGPp":[],"1KnQX5D5Tv2u5CyWpuXaeM8CvuuVAmfwRz":[],"1KotB3FVFcYuHAVdRNAe2ZN1MREpVWnBgs":[],"1Le4rXQD4kMGsoet4EH8VGzt5VZjdHBpid":[],"1LpV3F25jiNWV8N2RPP1cnKGgpjZh2r8xu":[],"1Mdq8bVFSBfaeH5vjaXGjiPiy6qPVtdfUo":[],"1MrA1WS4iWcTjLrnSqNNpXzSq5W92Bttbj":[],"1NFhYYBh1zDGdnqD1Avo9gaVV8LvnAH6iv":[],"1NMkEhuUYsxTCkfq9zxxCTozKNNqjHeKeC":[],"1NTRF8Y7Mu57dQ9TFwUA98EdmzbAamtLYe":[],"1NZs4y3cJhukVdKSYDhaiMHhP4ZU2qVpAL":[],"1rDkHFozR7kC7MxRiakx3mBeU1Fu6BRbG":[]},"addresses":{"change":["1ES8hmtgXFLRex71CZHu85cLFRYDczeTZ","14Co2CRVu67XLCGrD4RVVpadtoXcodUUWM","1rDkHFozR7kC7MxRiakx3mBeU1Fu6BRbG","15sFkiVrGad5QiKgtYjfgi8SSeEfRzxed6","1NZs4y3cJhukVdKSYDhaiMHhP4ZU2qVpAL","1KotB3FVFcYuHAVdRNAe2ZN1MREpVWnBgs"],"receiving":["1LpV3F25jiNWV8N2RPP1cnKGgpjZh2r8xu","18TKpsznSha4VHLzpVatnrEBdtWkoQSyGw","17YQXYHoDqcpd7GvWN9BYK8FnDryhYbKyH","12sQvVXgdoy2QDorLgr2t6J8JVzygBGueC","15KDqFhdXP6Zn4XtJVVVgahJ7chw9jGhvQ","1Le4rXQD4kMGsoet4EH8VGzt5VZjdHBpid","1KnQX5D5Tv2u5CyWpuXaeM8CvuuVAmfwRz","1MrA1WS4iWcTjLrnSqNNpXzSq5W92Bttbj","146j6RMbWpKYEaGTdWVza3if3bnCD9Maiz","1NMkEhuUYsxTCkfq9zxxCTozKNNqjHeKeC","1Mdq8bVFSBfaeH5vjaXGjiPiy6qPVtdfUo","1BngGArwhpzWjCREXYRS1uhUGszCTe7vqb","1NTRF8Y7Mu57dQ9TFwUA98EdmzbAamtLYe","1NFhYYBh1zDGdnqD1Avo9gaVV8LvnAH6iv","1J2NdSfFiQLhkHs2DVyBmB47Mk65rfrGPp","15zoPN5rVKDCsKnZUkTYJWFv4gLdYTat8S","1E9wSjSWkFJp3HUaUzUF9eWpCkUZnsNCuX","1FdV7zK6RdRAKqg3ccGHGK51nJLUwpuBFp","1GjFaGxzqK12N2F7Ao49k7ZvMApCmK7Enk","1HkHDREiY3m9UCxaSAZEn1troa3eHWaiQD"]},"keystore":{"derivation":"m/44'/0'/0'","hw_type":"trezor","label":"trezor1","type":"hardware","xpub":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y"},"pruned_txo":{},"seed_version":13,"stored_height":0,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"standard","winpos-qt":[744,390,840,405]}''' + wallet_str = '''{"addr_history":{"LM6NBhqWiUD5f2W1WpqLA7MtWiNFjW5Gpf":[],"LNKgMdfRbUZbVNxcoeVHr4nRFp9ULZX4bT":[],"LNRkHQjKykMaazy1PCQnmqeQ71ttwUuuQK":[],"LPYB6U1Tc3Ld2sE3UdUnxbm4Kq5DDkPCEX":[],"LQ6D1vogMEs8fX1r4gixxjCCerbwTX3srN":[],"LQDkeaPgZyTG88UietSqaXKgGthudu92c8":[],"LRmMnkbdJVrssuy5gW8UpLC1zSEFp7omPC":[],"LSgH66JcXMp7k639zdaC4sHwr6t2yTKAwQ":[],"LW1dXPAmnVEZz17PhgQjHvmEV6MUcd6Zhi":[],"LYNthwkLpuYsJ6Ajf8TYRfaaQxqqtYWC1P":[],"LKTPPv5imBVPgTeGBLYbB99NYTnpPpF5wV":[],"LZrSPCcvWHfDaeNCnkFaYL8mzWhm89qZxo":[],"LaxCqVGpuyF5cpwGLw3T28dgZPBUoRcMSZ":[],"LbyEUdYYci1Cj1ejcJYY42xd1nQvM6eiXw":[],"LcFKtey5o4am16ZBPdxV3C7sZxTMyRqyoN":[],"Le1MnHWuYaGxL1fg13WsvNBy98GmHpurMG":[],"Le2qSFZKLGnxXyBnbW9wJaRmZdc6bfBmDG":[],"Les27ji39QbL8cM3ENGRmJ4eHhw1nkrHLf":[],"Lf3SJTKupNcZjw4BbXNJtoP2u36qoUPFJ4":[],"LfrnPoo5Wqudu5n5uiWa1jTVBKCfbNbeG4":[],"Lg57GijtoArWz9YwcyMg6Z4D3HsR6N1tGr":[],"LgUeokVX6eTKtbXNBJv6RheFhLiCzwSPaE":[],"LgahVvDJdYCWTZMzL8xFUUskXak7rKY76R":[],"LggNWLqwSZKAtCqcS5TTR9JPzCxSgoznXZ":[],"LgnpLBMSPN9okS1biMgszNMTbGvkCxAxom":[],"LL5B1VZe55MoSv47bra4E4pwrgNY1zHv1o":[]},"addresses":{"change":["LKTPPv5imBVPgTeGBLYbB99NYTnpPpF5wV","LNRkHQjKykMaazy1PCQnmqeQ71ttwUuuQK","LL5B1VZe55MoSv47bra4E4pwrgNY1zHv1o","LQ6D1vogMEs8fX1r4gixxjCCerbwTX3srN","LgnpLBMSPN9okS1biMgszNMTbGvkCxAxom","Le2qSFZKLGnxXyBnbW9wJaRmZdc6bfBmDG"],"receiving":["Lf3SJTKupNcZjw4BbXNJtoP2u36qoUPFJ4","LSgH66JcXMp7k639zdaC4sHwr6t2yTKAwQ","LRmMnkbdJVrssuy5gW8UpLC1zSEFp7omPC","LM6NBhqWiUD5f2W1WpqLA7MtWiNFjW5Gpf","LPYB6U1Tc3Ld2sE3UdUnxbm4Kq5DDkPCEX","Les27ji39QbL8cM3ENGRmJ4eHhw1nkrHLf","Le1MnHWuYaGxL1fg13WsvNBy98GmHpurMG","Lg57GijtoArWz9YwcyMg6Z4D3HsR6N1tGr","LNKgMdfRbUZbVNxcoeVHr4nRFp9ULZX4bT","LgahVvDJdYCWTZMzL8xFUUskXak7rKY76R","LfrnPoo5Wqudu5n5uiWa1jTVBKCfbNbeG4","LW1dXPAmnVEZz17PhgQjHvmEV6MUcd6Zhi","LggNWLqwSZKAtCqcS5TTR9JPzCxSgoznXZ","LgUeokVX6eTKtbXNBJv6RheFhLiCzwSPaE","LcFKtey5o4am16ZBPdxV3C7sZxTMyRqyoN","LQDkeaPgZyTG88UietSqaXKgGthudu92c8","LYNthwkLpuYsJ6Ajf8TYRfaaQxqqtYWC1P","LZrSPCcvWHfDaeNCnkFaYL8mzWhm89qZxo","LaxCqVGpuyF5cpwGLw3T28dgZPBUoRcMSZ","LbyEUdYYci1Cj1ejcJYY42xd1nQvM6eiXw"]},"keystore":{"derivation":"m/44'/0'/0'","hw_type":"trezor","label":"trezor1","type":"hardware","xpub":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y"},"pruned_txo":{},"seed_version":13,"stored_height":0,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"standard","winpos-qt":[744,390,840,405]}''' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_8_3_multisig(self): - wallet_str = '{"addr_history":{"32Qk6Q7XYD2v3et9g5fA97ky8XRAJNDZCS":[],"339axnadPaQg3ngChNBKap2dndUWrSwjk6":[],"34FG8qzA6UYLxrnkpVkM9mrGYix3ZyePJZ":[],"35CR3h2dFF3EkRX5yK47NGuF2FcLtJvpUM":[],"35zrocLBQbHfEqysgv2v5z3RH7BRGQzSMJ":[],"36uBJPkgiQwav23ybewbgkQ2zEzJDY2EX1":[],"37nSiBvGXm1PNYseymaJn5ERcU4mSMueYc":[],"39r4XCmfU4J3N98YQ8Fwvm8VN1Fukfj7QW":[],"3BDqFoYMxyy7nWCpRChYV6YCGh9qnWDmav":[],"3CGCLSHU8ZjeXv6oukJ3eAQN4fqEQ7wuyX":[],"3DCNnfh7oWLsnS3p5QdWfW3hvcFF8qAPFq":[],"3DPheE9uany9ET2qBnWF1wh3zDtptGP6Ts":[],"3EeNJHgSYVJPxYR2NaYv2M2ZnXkPRWSHQh":[],"3FWZ7pJPxZhGr8p6HNr9LLsHA8sABcP7cF":[],"3FZbzEF9HdRqzif2cKUFnwW9AFTJcibjVK":[],"3GEhQHTrWykC6Jfu923qtpxJECsEGVdhUc":[],"3HJ95uxwW6rMoEhYgUfcgpd3ExU3fjkfNb":[],"3HbdMVgKRqadNiHRNGizUCyTQYpJ1aXFav":[],"3J6xRF9d16QNsvoXkYkeTwTU8L5N3Y8f7c":[],"3JBbS3GvhvoLgtLcuMvHCtqjE7dnbpTMkz":[],"3KNWZasWDBuVzzp5Y5cbEgjeYn3NKHZKso":[],"3KQ5tTEbkQSkKiccKFDPrhLnBjSMey6CQM":[],"3KrFHcAzNJYjukGDDZm2HeV5Mok4NGQaD6":[],"3LNZbX9wenL3bLxJTQnPidSvVt3EtDrnUg":[],"3LzjAqqfiN8w4TSiW8Up7bKLD5CicBUC3a":[],"3Nro51wauHugv72NMtY9pmLnwX3FXWU1eE":[]},"addresses":{"change":["34FG8qzA6UYLxrnkpVkM9mrGYix3ZyePJZ","3LzjAqqfiN8w4TSiW8Up7bKLD5CicBUC3a","3GEhQHTrWykC6Jfu923qtpxJECsEGVdhUc","3Nro51wauHugv72NMtY9pmLnwX3FXWU1eE","3JBbS3GvhvoLgtLcuMvHCtqjE7dnbpTMkz","3CGCLSHU8ZjeXv6oukJ3eAQN4fqEQ7wuyX"],"receiving":["35zrocLBQbHfEqysgv2v5z3RH7BRGQzSMJ","3FWZ7pJPxZhGr8p6HNr9LLsHA8sABcP7cF","3DPheE9uany9ET2qBnWF1wh3zDtptGP6Ts","3HbdMVgKRqadNiHRNGizUCyTQYpJ1aXFav","3KQ5tTEbkQSkKiccKFDPrhLnBjSMey6CQM","35CR3h2dFF3EkRX5yK47NGuF2FcLtJvpUM","3HJ95uxwW6rMoEhYgUfcgpd3ExU3fjkfNb","3FZbzEF9HdRqzif2cKUFnwW9AFTJcibjVK","39r4XCmfU4J3N98YQ8Fwvm8VN1Fukfj7QW","3LNZbX9wenL3bLxJTQnPidSvVt3EtDrnUg","32Qk6Q7XYD2v3et9g5fA97ky8XRAJNDZCS","339axnadPaQg3ngChNBKap2dndUWrSwjk6","3EeNJHgSYVJPxYR2NaYv2M2ZnXkPRWSHQh","3BDqFoYMxyy7nWCpRChYV6YCGh9qnWDmav","3DCNnfh7oWLsnS3p5QdWfW3hvcFF8qAPFq","3KNWZasWDBuVzzp5Y5cbEgjeYn3NKHZKso","37nSiBvGXm1PNYseymaJn5ERcU4mSMueYc","3KrFHcAzNJYjukGDDZm2HeV5Mok4NGQaD6","36uBJPkgiQwav23ybewbgkQ2zEzJDY2EX1","3J6xRF9d16QNsvoXkYkeTwTU8L5N3Y8f7c"]},"pruned_txo":{},"seed_version":13,"stored_height":0,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"2of2","winpos-qt":[671,238,840,405],"x1/":{"seed":"property play install hill hunt follow trash comic pulse consider canyon limit","type":"bip32","xprv":"xprv9s21ZrQH143K46tCjDh5i4H9eSJpnMrYyLUbVZheTbNjiamdxPiffMEYLgxuYsMFokFrNEZ6S6z5wSXXszXaCVQWf6jzZvn14uYZhsnM9Sb","xpub":"xpub661MyMwAqRbcGaxfqFE65CDtCU9KBpaQLZQCHx7G1vuibP6nVw2vD9Z2Bz2DsH43bDZGXjmcvx2TD9wq3CmmFcoT96RCiDd1wMSUB2UH7Gu"},"x2/":{"type":"bip32","xprv":null,"xpub":"xpub661MyMwAqRbcEncvVc1zrPFZSKe7iAP1LTRhzxuXpmztu1kTtnfj8XNFzzmGH1X1gcGxczBZ3MmYKkxXgZKJCsNXXdasNaQJKJE4KcUjn1L"}}' + wallet_str = '{"addr_history":{"M8ctQHXVVKtLrAA3mxeVxm1NTE1cLB59XX":[],"M9MjGfzbLhG6rHx6oFAfQTH37L4xroiVcz":[],"MATQSjQ83bPmmN4evNjgyR6fsRYVXUEi91":[],"MBQZMaSbCMtfYvnz5C3TBv9eLxCnuAwdtH":[],"MCD17Vk9Mi963MFmno2FudHpbomsE8n6tg":[],"MD7KcHAefXo1iXKshXvwWPeSJwakELozTJ":[],"MDzb25LEUsrpB49Z5eZebiUpwAfDTdhHtS":[],"MG4Cq6BdRB9UAeQSW1FHkQNtghrMnk1uBk":[],"MHRyZgxKv6pYb1UiX5gtJjnbbPkHpKKpva":[],"MJULeKhS5gb5LRNi1dHPToemPNRgMxbtnj":[],"MKQX6Z75kdCJawKiBHcrV9J7FJqh7uwJPD":[],"MKbqx7ZsXupa2xJjHfVaqawTJvVGsBwAtX":[],"MLrWcB6QVc9pm3gvUTYFqzGy7ELqNssXpx":[],"MMihRhiMugYhee5zPFqV9z7gUqTc7xNtbj":[],"MMmkJ7f7EkHGoDvviCTbcakYUx3kaW27wz":[],"MNSqiAspU6bctowoEu3BiUChYuTgFZcjn1":[],"MPWHPoNuTDhnbjySnMexWTsSZf4VZvHbPj":[],"MPomfP6HNxS4BDZKU9iLHrDrjFQjyCUA8q":[],"MQK6j8ZaxDFogS5RrRjzHahsT2fozuLaWx":[],"MQPjjvgtf3emVPcX1Eud2Y68YpEEbFDHw5":[],"MRaesUHUAJkvoW5ydxbw4Kz3sUdpGiN3pS":[],"MRcECLeZhXJB8DtWR8CjgLbBWS2odKRiga":[],"MS4PbVaxKRQAiFY7KSkN7HjUgWLWHxMjFd":[],"MSahuQZubuBUPrECZHmjYGhKpadgx4KiVK":[],"MTCsUjFdfUzMrxicc1U9wEZjXmoAbFyUZa":[],"MV4wNuMYrQm7icJGTmXVeQbCGDdhZeabe9":[]},"addresses":{"change":["MATQSjQ83bPmmN4evNjgyR6fsRYVXUEi91","MTCsUjFdfUzMrxicc1U9wEZjXmoAbFyUZa","MNSqiAspU6bctowoEu3BiUChYuTgFZcjn1","MV4wNuMYrQm7icJGTmXVeQbCGDdhZeabe9","MQPjjvgtf3emVPcX1Eud2Y68YpEEbFDHw5","MJULeKhS5gb5LRNi1dHPToemPNRgMxbtnj"],"receiving":["MCD17Vk9Mi963MFmno2FudHpbomsE8n6tg","MMihRhiMugYhee5zPFqV9z7gUqTc7xNtbj","MKbqx7ZsXupa2xJjHfVaqawTJvVGsBwAtX","MPomfP6HNxS4BDZKU9iLHrDrjFQjyCUA8q","MRcECLeZhXJB8DtWR8CjgLbBWS2odKRiga","MBQZMaSbCMtfYvnz5C3TBv9eLxCnuAwdtH","MPWHPoNuTDhnbjySnMexWTsSZf4VZvHbPj","MMmkJ7f7EkHGoDvviCTbcakYUx3kaW27wz","MG4Cq6BdRB9UAeQSW1FHkQNtghrMnk1uBk","MSahuQZubuBUPrECZHmjYGhKpadgx4KiVK","M8ctQHXVVKtLrAA3mxeVxm1NTE1cLB59XX","M9MjGfzbLhG6rHx6oFAfQTH37L4xroiVcz","MLrWcB6QVc9pm3gvUTYFqzGy7ELqNssXpx","MHRyZgxKv6pYb1UiX5gtJjnbbPkHpKKpva","MKQX6Z75kdCJawKiBHcrV9J7FJqh7uwJPD","MRaesUHUAJkvoW5ydxbw4Kz3sUdpGiN3pS","MDzb25LEUsrpB49Z5eZebiUpwAfDTdhHtS","MS4PbVaxKRQAiFY7KSkN7HjUgWLWHxMjFd","MD7KcHAefXo1iXKshXvwWPeSJwakELozTJ","MQK6j8ZaxDFogS5RrRjzHahsT2fozuLaWx"]},"pruned_txo":{},"seed_version":13,"stored_height":0,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"2of2","winpos-qt":[671,238,840,405],"x1/":{"seed":"property play install hill hunt follow trash comic pulse consider canyon limit","type":"bip32","xprv":"xprv9s21ZrQH143K46tCjDh5i4H9eSJpnMrYyLUbVZheTbNjiamdxPiffMEYLgxuYsMFokFrNEZ6S6z5wSXXszXaCVQWf6jzZvn14uYZhsnM9Sb","xpub":"xpub661MyMwAqRbcGaxfqFE65CDtCU9KBpaQLZQCHx7G1vuibP6nVw2vD9Z2Bz2DsH43bDZGXjmcvx2TD9wq3CmmFcoT96RCiDd1wMSUB2UH7Gu"},"x2/":{"type":"bip32","xprv":null,"xpub":"xpub661MyMwAqRbcEncvVc1zrPFZSKe7iAP1LTRhzxuXpmztu1kTtnfj8XNFzzmGH1X1gcGxczBZ3MmYKkxXgZKJCsNXXdasNaQJKJE4KcUjn1L"}}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_9_3_seeded(self): - wallet_str = '{"addr_history":{"12ECgkzK6gHouKAZ7QiooYBuk1CgJLJxes":[],"12iR43FPb5M7sw4Mcrr5y1nHKepg9EtZP1":[],"13HT1pfWctsSXVFzF76uYuVdQvcAQ2MAgB":[],"13kG9WH9JqS7hyCcVL1ssLdNv4aXocQY9c":[],"14Tf3qiiHJXStSU4KmienAhHfHq7FHpBpz":[],"14gmBxYV97mzYwWdJSJ3MTLbTHVegaKrcA":[],"15FGuHvRssu1r8fCw98vrbpfc3M4xs5FAV":[],"17oJzweA2gn6SDjsKgA9vUD5ocT1sSnr2Z":[],"18hNcSjZzRcRP6J2bfFRxp9UfpMoC4hGTv":[],"18n9PFxBjmKCGhd4PCDEEqYsi2CsnEfn2B":[],"19a98ZfEezDNbCwidVigV5PAJwrR2kw4Jz":[],"19z3j2ELqbg2pR87byCCt3BCyKR7rc3q8G":[],"1A3XSmvLQvePmvm7yctsGkBMX9ZKKXLrVq":[],"1CmhFe2BN1h9jheFpJf4v39XNPj8F9U6d":[],"1DuphhHUayKzbkdvjVjf5dtjn2ACkz4zEs":[],"1E4ygSNJpWL2uPXZHBptmU2LqwZTqb1Ado":[],"1GTDSjkVc9vaaBBBGNVqTANHJBcoT5VW9z":[],"1GWqgpThAuSq3tDg6uCoLQxPXQNnU8jZ52":[],"1GhmpwqSF5cqNgdr9oJMZx8dKxPRo4pYPP":[],"1J5TTUQKhwehEACw6Jjte1E22FVrbeDmpv":[],"1JWySzjzJhsETUUcqVZHuvQLA7pfFfmesb":[],"1KQHxcy3QUHAWMHKUtJjqD9cMKXcY2RTwZ":[],"1KoxZfc2KsgovjGDxwqanbFEA76uxgYH4G":[],"1KqVEPXdpbYvEbwsZcEKkrA4A2jsgj9hYN":[],"1N16yDSYe76c5A3CoVoWAKxHeAUc8Jhf9J":[],"1Pm8JBhzUJDqeQQKrmnop1Frr4phe1jbTt":[]},"addresses":{"change":["1GhmpwqSF5cqNgdr9oJMZx8dKxPRo4pYPP","1GTDSjkVc9vaaBBBGNVqTANHJBcoT5VW9z","15FGuHvRssu1r8fCw98vrbpfc3M4xs5FAV","1A3XSmvLQvePmvm7yctsGkBMX9ZKKXLrVq","19z3j2ELqbg2pR87byCCt3BCyKR7rc3q8G","1JWySzjzJhsETUUcqVZHuvQLA7pfFfmesb"],"receiving":["14gmBxYV97mzYwWdJSJ3MTLbTHVegaKrcA","13HT1pfWctsSXVFzF76uYuVdQvcAQ2MAgB","19a98ZfEezDNbCwidVigV5PAJwrR2kw4Jz","1J5TTUQKhwehEACw6Jjte1E22FVrbeDmpv","1Pm8JBhzUJDqeQQKrmnop1Frr4phe1jbTt","13kG9WH9JqS7hyCcVL1ssLdNv4aXocQY9c","1KQHxcy3QUHAWMHKUtJjqD9cMKXcY2RTwZ","12ECgkzK6gHouKAZ7QiooYBuk1CgJLJxes","12iR43FPb5M7sw4Mcrr5y1nHKepg9EtZP1","14Tf3qiiHJXStSU4KmienAhHfHq7FHpBpz","1KqVEPXdpbYvEbwsZcEKkrA4A2jsgj9hYN","17oJzweA2gn6SDjsKgA9vUD5ocT1sSnr2Z","1E4ygSNJpWL2uPXZHBptmU2LqwZTqb1Ado","18hNcSjZzRcRP6J2bfFRxp9UfpMoC4hGTv","1KoxZfc2KsgovjGDxwqanbFEA76uxgYH4G","18n9PFxBjmKCGhd4PCDEEqYsi2CsnEfn2B","1CmhFe2BN1h9jheFpJf4v39XNPj8F9U6d","1DuphhHUayKzbkdvjVjf5dtjn2ACkz4zEs","1GWqgpThAuSq3tDg6uCoLQxPXQNnU8jZ52","1N16yDSYe76c5A3CoVoWAKxHeAUc8Jhf9J"]},"keystore":{"seed":"cereal wise two govern top pet frog nut rule sketch bundle logic","type":"bip32","xprv":"xprv9s21ZrQH143K29XjRjUs6MnDB9wXjXbJP2kG1fnRk8zjdDYWqVkQYUqaDtgZp5zPSrH5PZQJs8sU25HrUgT1WdgsPU8GbifKurtMYg37d4v","xpub":"xpub661MyMwAqRbcEdcCXm1sTViwjBn28zK9kFfrp4C3JUXiW1sfP34f6HA45B9yr7EH5XGzWuTfMTdqpt9XPrVQVUdgiYb5NW9m8ij1FSZgGBF"},"pruned_txo":{},"seed_type":"standard","seed_version":13,"stored_height":-1,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"standard","winpos-qt":[619,310,840,405]}' + wallet_str = '{"addr_history":{"LLT9wyJ9BLXsA7riHYi75ZFfxDZxS32oAG":[],"LLwNKFZDfjbB8jkWnzqPF2r3XsBxHu3mHF":[],"LMWQH2yLhZ7VnHx9RF6CpvZPd8ySV5Lanh":[],"LMyDQiayPVgAxmtmfU1B9Mh98GwozAPdCj":[],"LNgcK42YMxmW9FADVuhx4Bm3sWCPTPydxX":[],"LNuiTArKDn23okCnUaHLdUQMfVrvjvjMnU":[],"LPUEAWEFxY956wMN7H8E8ctRpFiM528kSn":[],"LS2GG9wz7M29h2S2Vp9TCVGr1ppHuMvQeL":[],"LSvKsf3Q55rUdtzBmoEjEqDEt2j5NEo9CF":[],"LT16eUG1pRZFXWKDZLCXWrcdvEa9vWyQz8":[],"LTo6Pmy4jeTRr1dsodhym6SvXADh7b69Av":[],"LUCzzEYAvFv65DpGn7BWA4EyBXnQ5evfQJ":[],"LUGUhzEAVatT2jTH9ktAYmF7jMvbPaECbC":[],"LKRixTwrG2FkQYPoRxHxLw6ujam1EHbQAf":[],"LY8mxubJfda3rZL5udixMexVzEXUsqGaNP":[],"LYHvweg8uAa6ACDiTKpC3V6749vk1g26k1":[],"LagAhx4KgpAdpysLSWV8jBS3WPz5YsDTXU":[],"Lajnx2mXFZgtJguqH3C6cS29jck4ago9vq":[],"Lavj6A9GKjrtdVL1KwHeqyCPYAkhyZoFVE":[],"LcJQigi9nbtkUxu6GSjBv2HnETs8jtLNPR":[],"LcjviD3pPN7HiHAn1dYbBwU6NLBwJJrSXZ":[],"LddFDqGsV8XDm9yUf2J37EDNZXtth3N4UF":[],"Le2upsurQXvsBXxP95pt4cJzNKUC6NQTuK":[],"Le4SVbqTuFnyVQe2jkDd2sDpNF79ngHorT":[],"LgE4ERkNimLfKxjMydnoSM23rNqtG5pPYc":[],"Lhz5ZQ1pYxTtuD6V2un762Kd4HByp4QwXB":[]},"addresses":{"change":["Lavj6A9GKjrtdVL1KwHeqyCPYAkhyZoFVE","LagAhx4KgpAdpysLSWV8jBS3WPz5YsDTXU","LPUEAWEFxY956wMN7H8E8ctRpFiM528kSn","LUGUhzEAVatT2jTH9ktAYmF7jMvbPaECbC","LUCzzEYAvFv65DpGn7BWA4EyBXnQ5evfQJ","LcjviD3pPN7HiHAn1dYbBwU6NLBwJJrSXZ"],"receiving":["LNuiTArKDn23okCnUaHLdUQMfVrvjvjMnU","LMWQH2yLhZ7VnHx9RF6CpvZPd8ySV5Lanh","LTo6Pmy4jeTRr1dsodhym6SvXADh7b69Av","LcJQigi9nbtkUxu6GSjBv2HnETs8jtLNPR","Lhz5ZQ1pYxTtuD6V2un762Kd4HByp4QwXB","LMyDQiayPVgAxmtmfU1B9Mh98GwozAPdCj","LddFDqGsV8XDm9yUf2J37EDNZXtth3N4UF","LLT9wyJ9BLXsA7riHYi75ZFfxDZxS32oAG","LLwNKFZDfjbB8jkWnzqPF2r3XsBxHu3mHF","LNgcK42YMxmW9FADVuhx4Bm3sWCPTPydxX","Le4SVbqTuFnyVQe2jkDd2sDpNF79ngHorT","LS2GG9wz7M29h2S2Vp9TCVGr1ppHuMvQeL","LYHvweg8uAa6ACDiTKpC3V6749vk1g26k1","LSvKsf3Q55rUdtzBmoEjEqDEt2j5NEo9CF","Le2upsurQXvsBXxP95pt4cJzNKUC6NQTuK","LT16eUG1pRZFXWKDZLCXWrcdvEa9vWyQz8","LKRixTwrG2FkQYPoRxHxLw6ujam1EHbQAf","LY8mxubJfda3rZL5udixMexVzEXUsqGaNP","Lajnx2mXFZgtJguqH3C6cS29jck4ago9vq","LgE4ERkNimLfKxjMydnoSM23rNqtG5pPYc"]},"keystore":{"seed":"cereal wise two govern top pet frog nut rule sketch bundle logic","type":"bip32","xprv":"xprv9s21ZrQH143K29XjRjUs6MnDB9wXjXbJP2kG1fnRk8zjdDYWqVkQYUqaDtgZp5zPSrH5PZQJs8sU25HrUgT1WdgsPU8GbifKurtMYg37d4v","xpub":"xpub661MyMwAqRbcEdcCXm1sTViwjBn28zK9kFfrp4C3JUXiW1sfP34f6HA45B9yr7EH5XGzWuTfMTdqpt9XPrVQVUdgiYb5NW9m8ij1FSZgGBF"},"pruned_txo":{},"seed_type":"standard","seed_version":13,"stored_height":-1,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"standard","winpos-qt":[619,310,840,405]}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_9_3_importedkeys(self): - wallet_str = '{"addr_history":{"1364Js2VG66BwRdkaoxAaFtdPb1eQgn8Dr":[],"15CyDgLffJsJgQrhcyooFH4gnVDG82pUrA":[],"1Exet2BhHsFxKTwhnfdsBMkPYLGvobxuW6":[]},"addresses":{"change":[],"receiving":["1364Js2VG66BwRdkaoxAaFtdPb1eQgn8Dr","1Exet2BhHsFxKTwhnfdsBMkPYLGvobxuW6","15CyDgLffJsJgQrhcyooFH4gnVDG82pUrA"]},"keystore":{"keypairs":{"0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5":"L2sED74axVXC4H8szBJ4rQJrkfem7UMc6usLCPUoEWxDCFGUaGUM","0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f":"L3Gi6EQLvYw8gEEUckmqawkevfj9s8hxoQDFveQJGZHTfyWnbk1U","04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2":"5JyVyXU1LiRXATvRTQvR9Kp8Rx1X84j2x49iGkjSsXipydtByUq"},"type":"imported"},"pruned_txo":{},"seed_version":13,"stored_height":-1,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"standard","winpos-qt":[100,100,840,405]}' + wallet_str = '{"addr_history":{"LMK1a5LKLkLFCEKukwwTrGxPboNvZjDbcY":[],"LPRvUteVjy7MwDYro7o6XJ8SzhaYBJQhoM":[],"LZBc9EVXNXW1aGdrxodATNp9kYeCxufeWb":[]},"addresses":{"change":[],"receiving":["LMK1a5LKLkLFCEKukwwTrGxPboNvZjDbcY","LZBc9EVXNXW1aGdrxodATNp9kYeCxufeWb","LPRvUteVjy7MwDYro7o6XJ8SzhaYBJQhoM"]},"keystore":{"keypairs":{"0344b1588589958b0bcab03435061539e9bcf54677c104904044e4f8901f4ebdf5":"T8hVerMmMsVnq7mkXpEw4krEhXJ5BZNVv7mb4C7LoV8Ni8iywME1","0389508c13999d08ffae0f434a085f4185922d64765c0bff2f66e36ad7f745cc5f":"T96yXyhXKvujT4sMAPihoJJ2sXNTwDircc7WnT2qqXTdBs433uZ5","04575f52b82f159fa649d2a4c353eb7435f30206f0a6cb9674fbd659f45082c37d559ffd19bea9c0d3b7dcc07a7b79f4cffb76026d5d4dff35341efe99056e22d2":"6vHESf1YF8tPdqpGyEiNvibJPRZzKsB4ijYsywkUaz3SfUAnidY"},"type":"imported"},"pruned_txo":{},"seed_version":13,"stored_height":-1,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"standard","winpos-qt":[100,100,840,405]}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_9_3_watchaddresses(self): - wallet_str = '{"addr_history":{"1DgrwN2JCDZ6uPMSvSz8dPeUtaxLxWM2kf":[],"1H3mPXHFzA8UbvhQVabcDjYw3CPb3djvxs":[],"1HocPduHmQUJerpdaLG8DnmxvnDCVQwWsa":[]},"addresses":["1H3mPXHFzA8UbvhQVabcDjYw3CPb3djvxs","1HocPduHmQUJerpdaLG8DnmxvnDCVQwWsa","1DgrwN2JCDZ6uPMSvSz8dPeUtaxLxWM2kf"],"pruned_txo":{},"seed_version":13,"stored_height":490039,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"verified_tx3":{},"wallet_type":"imported","winpos-qt":[499,386,840,405]}' + wallet_str = '{"addr_history":{"LXupCaL8GsoAAC3c6ayRuQiF6oKd6jzvF2":[],"LbGiejb64pNXrjPZfiauVkchFQksBnFjrz":[],"Lc2ZerD7r4iMufWnkUFRVoqj8zaUdra9gy":[]},"addresses":["LbGiejb64pNXrjPZfiauVkchFQksBnFjrz","Lc2ZerD7r4iMufWnkUFRVoqj8zaUdra9gy","LXupCaL8GsoAAC3c6ayRuQiF6oKd6jzvF2"],"pruned_txo":{},"seed_version":13,"stored_height":490039,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"verified_tx3":{},"wallet_type":"imported","winpos-qt":[499,386,840,405]}' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_9_3_trezor_singleacc(self): - wallet_str = '''{"addr_history":{"12sQvVXgdoy2QDorLgr2t6J8JVzygBGueC":[],"146j6RMbWpKYEaGTdWVza3if3bnCD9Maiz":[],"14Co2CRVu67XLCGrD4RVVpadtoXcodUUWM":[],"15KDqFhdXP6Zn4XtJVVVgahJ7chw9jGhvQ":[],"15sFkiVrGad5QiKgtYjfgi8SSeEfRzxed6":[],"15zoPN5rVKDCsKnZUkTYJWFv4gLdYTat8S":[],"17YQXYHoDqcpd7GvWN9BYK8FnDryhYbKyH":[],"18TKpsznSha4VHLzpVatnrEBdtWkoQSyGw":[],"1BngGArwhpzWjCREXYRS1uhUGszCTe7vqb":[],"1E9wSjSWkFJp3HUaUzUF9eWpCkUZnsNCuX":[],"1ES8hmtgXFLRex71CZHu85cLFRYDczeTZ":[],"1FdV7zK6RdRAKqg3ccGHGK51nJLUwpuBFp":[],"1GjFaGxzqK12N2F7Ao49k7ZvMApCmK7Enk":[],"1HkHDREiY3m9UCxaSAZEn1troa3eHWaiQD":[],"1J2NdSfFiQLhkHs2DVyBmB47Mk65rfrGPp":[],"1KnQX5D5Tv2u5CyWpuXaeM8CvuuVAmfwRz":[],"1KotB3FVFcYuHAVdRNAe2ZN1MREpVWnBgs":[],"1Le4rXQD4kMGsoet4EH8VGzt5VZjdHBpid":[],"1LpV3F25jiNWV8N2RPP1cnKGgpjZh2r8xu":[],"1Mdq8bVFSBfaeH5vjaXGjiPiy6qPVtdfUo":[],"1MrA1WS4iWcTjLrnSqNNpXzSq5W92Bttbj":[],"1NFhYYBh1zDGdnqD1Avo9gaVV8LvnAH6iv":[],"1NMkEhuUYsxTCkfq9zxxCTozKNNqjHeKeC":[],"1NTRF8Y7Mu57dQ9TFwUA98EdmzbAamtLYe":[],"1NZs4y3cJhukVdKSYDhaiMHhP4ZU2qVpAL":[],"1rDkHFozR7kC7MxRiakx3mBeU1Fu6BRbG":[]},"addresses":{"change":["1ES8hmtgXFLRex71CZHu85cLFRYDczeTZ","14Co2CRVu67XLCGrD4RVVpadtoXcodUUWM","1rDkHFozR7kC7MxRiakx3mBeU1Fu6BRbG","15sFkiVrGad5QiKgtYjfgi8SSeEfRzxed6","1NZs4y3cJhukVdKSYDhaiMHhP4ZU2qVpAL","1KotB3FVFcYuHAVdRNAe2ZN1MREpVWnBgs"],"receiving":["1LpV3F25jiNWV8N2RPP1cnKGgpjZh2r8xu","18TKpsznSha4VHLzpVatnrEBdtWkoQSyGw","17YQXYHoDqcpd7GvWN9BYK8FnDryhYbKyH","12sQvVXgdoy2QDorLgr2t6J8JVzygBGueC","15KDqFhdXP6Zn4XtJVVVgahJ7chw9jGhvQ","1Le4rXQD4kMGsoet4EH8VGzt5VZjdHBpid","1KnQX5D5Tv2u5CyWpuXaeM8CvuuVAmfwRz","1MrA1WS4iWcTjLrnSqNNpXzSq5W92Bttbj","146j6RMbWpKYEaGTdWVza3if3bnCD9Maiz","1NMkEhuUYsxTCkfq9zxxCTozKNNqjHeKeC","1Mdq8bVFSBfaeH5vjaXGjiPiy6qPVtdfUo","1BngGArwhpzWjCREXYRS1uhUGszCTe7vqb","1NTRF8Y7Mu57dQ9TFwUA98EdmzbAamtLYe","1NFhYYBh1zDGdnqD1Avo9gaVV8LvnAH6iv","1J2NdSfFiQLhkHs2DVyBmB47Mk65rfrGPp","15zoPN5rVKDCsKnZUkTYJWFv4gLdYTat8S","1E9wSjSWkFJp3HUaUzUF9eWpCkUZnsNCuX","1FdV7zK6RdRAKqg3ccGHGK51nJLUwpuBFp","1GjFaGxzqK12N2F7Ao49k7ZvMApCmK7Enk","1HkHDREiY3m9UCxaSAZEn1troa3eHWaiQD"]},"keystore":{"derivation":"m/44'/0'/0'","hw_type":"trezor","label":"trezor1","type":"hardware","xpub":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y"},"pruned_txo":{},"seed_version":13,"stored_height":490014,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"standard","winpos-qt":[753,486,840,405]}''' + wallet_str = '''{"addr_history":{"LM6NBhqWiUD5f2W1WpqLA7MtWiNFjW5Gpf":[],"LNKgMdfRbUZbVNxcoeVHr4nRFp9ULZX4bT":[],"LNRkHQjKykMaazy1PCQnmqeQ71ttwUuuQK":[],"LPYB6U1Tc3Ld2sE3UdUnxbm4Kq5DDkPCEX":[],"LQ6D1vogMEs8fX1r4gixxjCCerbwTX3srN":[],"LQDkeaPgZyTG88UietSqaXKgGthudu92c8":[],"LRmMnkbdJVrssuy5gW8UpLC1zSEFp7omPC":[],"LSgH66JcXMp7k639zdaC4sHwr6t2yTKAwQ":[],"LW1dXPAmnVEZz17PhgQjHvmEV6MUcd6Zhi":[],"LYNthwkLpuYsJ6Ajf8TYRfaaQxqqtYWC1P":[],"LKTPPv5imBVPgTeGBLYbB99NYTnpPpF5wV":[],"LZrSPCcvWHfDaeNCnkFaYL8mzWhm89qZxo":[],"LaxCqVGpuyF5cpwGLw3T28dgZPBUoRcMSZ":[],"LbyEUdYYci1Cj1ejcJYY42xd1nQvM6eiXw":[],"LcFKtey5o4am16ZBPdxV3C7sZxTMyRqyoN":[],"Le1MnHWuYaGxL1fg13WsvNBy98GmHpurMG":[],"Le2qSFZKLGnxXyBnbW9wJaRmZdc6bfBmDG":[],"Les27ji39QbL8cM3ENGRmJ4eHhw1nkrHLf":[],"Lf3SJTKupNcZjw4BbXNJtoP2u36qoUPFJ4":[],"LfrnPoo5Wqudu5n5uiWa1jTVBKCfbNbeG4":[],"Lg57GijtoArWz9YwcyMg6Z4D3HsR6N1tGr":[],"LgUeokVX6eTKtbXNBJv6RheFhLiCzwSPaE":[],"LgahVvDJdYCWTZMzL8xFUUskXak7rKY76R":[],"LggNWLqwSZKAtCqcS5TTR9JPzCxSgoznXZ":[],"LgnpLBMSPN9okS1biMgszNMTbGvkCxAxom":[],"LL5B1VZe55MoSv47bra4E4pwrgNY1zHv1o":[]},"addresses":{"change":["LKTPPv5imBVPgTeGBLYbB99NYTnpPpF5wV","LNRkHQjKykMaazy1PCQnmqeQ71ttwUuuQK","LL5B1VZe55MoSv47bra4E4pwrgNY1zHv1o","LQ6D1vogMEs8fX1r4gixxjCCerbwTX3srN","LgnpLBMSPN9okS1biMgszNMTbGvkCxAxom","Le2qSFZKLGnxXyBnbW9wJaRmZdc6bfBmDG"],"receiving":["Lf3SJTKupNcZjw4BbXNJtoP2u36qoUPFJ4","LSgH66JcXMp7k639zdaC4sHwr6t2yTKAwQ","LRmMnkbdJVrssuy5gW8UpLC1zSEFp7omPC","LM6NBhqWiUD5f2W1WpqLA7MtWiNFjW5Gpf","LPYB6U1Tc3Ld2sE3UdUnxbm4Kq5DDkPCEX","Les27ji39QbL8cM3ENGRmJ4eHhw1nkrHLf","Le1MnHWuYaGxL1fg13WsvNBy98GmHpurMG","Lg57GijtoArWz9YwcyMg6Z4D3HsR6N1tGr","LNKgMdfRbUZbVNxcoeVHr4nRFp9ULZX4bT","LgahVvDJdYCWTZMzL8xFUUskXak7rKY76R","LfrnPoo5Wqudu5n5uiWa1jTVBKCfbNbeG4","LW1dXPAmnVEZz17PhgQjHvmEV6MUcd6Zhi","LggNWLqwSZKAtCqcS5TTR9JPzCxSgoznXZ","LgUeokVX6eTKtbXNBJv6RheFhLiCzwSPaE","LcFKtey5o4am16ZBPdxV3C7sZxTMyRqyoN","LQDkeaPgZyTG88UietSqaXKgGthudu92c8","LYNthwkLpuYsJ6Ajf8TYRfaaQxqqtYWC1P","LZrSPCcvWHfDaeNCnkFaYL8mzWhm89qZxo","LaxCqVGpuyF5cpwGLw3T28dgZPBUoRcMSZ","LbyEUdYYci1Cj1ejcJYY42xd1nQvM6eiXw"]},"keystore":{"derivation":"m/44'/0'/0'","hw_type":"trezor","label":"trezor1","type":"hardware","xpub":"xpub6BycoSLDNcWjBQMuYgSaEoinupMjma8Cu2uj4XiRCZkecLHXXmzcxbyR1gdfrZpiZDVSs92MEGGNhF78BEbbYi2b5U2oPnaUPRhjriWz85y"},"pruned_txo":{},"seed_version":13,"stored_height":490014,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"standard","winpos-qt":[753,486,840,405]}''' self._upgrade_storage(wallet_str) def test_upgrade_from_client_2_9_3_multisig(self): - wallet_str = '{"addr_history":{"31uiqKhw4PQSmZWnCkqpeh6moB8B1jXEt3":[],"32PBjkXmwRoEQt8HBZcAEUbNwaHw5dR5fe":[],"33FQMD675LMRLZDLYLK7QV6TMYA1uYW1sw":[],"33MQEs6TCgxmAJhZvUEXYr6gCkEoEYzUfm":[],"33vuhs2Wor9Xkax66ucDkscPcU6nQHw8LA":[],"35tbMt1qBGmy5RNcsdGZJgs7XVbf5gEgPs":[],"36zhHEtGA33NjHJdxCMjY6DLeU2qxhiLUE":[],"37rZuTsieKVpRXshwrY8qvFBn6me42mYr5":[],"38A2KDXYRmRKZRRCGgazrj19i22kDr8d4V":[],"38GZH5GhxLKi5so9Aka6orY2EDZkvaXdxm":[],"3AEtxrCwiYv5Y5CRmHn1c5nZnV3Hpfh5BM":[],"3AaHWprY1MytygvQVDLp6i63e9o5CwMSN5":[],"3DAD19hHXNxAfZjCtUbWjZVxw1fxQqCbY7":[],"3GK4CBbgwumoeR9wxJjr1QnfnYhGUEzHhN":[],"3H18xmkyX3XAb5MwucqKpEhTnh3qz8V4Mn":[],"3JhkakvHAyFvukJ3cyaVgiyaqjYNo2gmsS":[],"3JtA4x1AKW4BR5YAEeLR5D157Nd92NHArC":[],"3KQosfGFGsUniyqsidE2Y4Bz1y4iZUkGW6":[],"3KXe1z2Lfk22zL6ggQJLpHZfc9dKxYV95p":[],"3KZiENj4VHdUycv9UDts4ojVRsaMk8LC5c":[],"3KeTKHJbkZN1QVkvKnHRqYDYP7UXsUu6va":[],"3L5aZKtDKSd65wPLMRooNtWHkKd5Mz6E3i":[],"3LAPqjqW4C2Se9HNziUhNaJQS46X1r9p3M":[],"3P3JJPoyNFussuyxkDbnYevYim5XnPGmwZ":[],"3PgNdMYSaPRymskby885DgKoTeA1uZr6Gi":[],"3Pm7DaUzaDMxy2mW5WzHp1sE9hVWEpdf7J":[]},"addresses":{"change":["31uiqKhw4PQSmZWnCkqpeh6moB8B1jXEt3","3JhkakvHAyFvukJ3cyaVgiyaqjYNo2gmsS","3GK4CBbgwumoeR9wxJjr1QnfnYhGUEzHhN","3LAPqjqW4C2Se9HNziUhNaJQS46X1r9p3M","33MQEs6TCgxmAJhZvUEXYr6gCkEoEYzUfm","3AEtxrCwiYv5Y5CRmHn1c5nZnV3Hpfh5BM"],"receiving":["3P3JJPoyNFussuyxkDbnYevYim5XnPGmwZ","33FQMD675LMRLZDLYLK7QV6TMYA1uYW1sw","3DAD19hHXNxAfZjCtUbWjZVxw1fxQqCbY7","3AaHWprY1MytygvQVDLp6i63e9o5CwMSN5","3H18xmkyX3XAb5MwucqKpEhTnh3qz8V4Mn","36zhHEtGA33NjHJdxCMjY6DLeU2qxhiLUE","37rZuTsieKVpRXshwrY8qvFBn6me42mYr5","38A2KDXYRmRKZRRCGgazrj19i22kDr8d4V","38GZH5GhxLKi5so9Aka6orY2EDZkvaXdxm","33vuhs2Wor9Xkax66ucDkscPcU6nQHw8LA","3L5aZKtDKSd65wPLMRooNtWHkKd5Mz6E3i","3KXe1z2Lfk22zL6ggQJLpHZfc9dKxYV95p","3KQosfGFGsUniyqsidE2Y4Bz1y4iZUkGW6","3KZiENj4VHdUycv9UDts4ojVRsaMk8LC5c","32PBjkXmwRoEQt8HBZcAEUbNwaHw5dR5fe","3KeTKHJbkZN1QVkvKnHRqYDYP7UXsUu6va","3JtA4x1AKW4BR5YAEeLR5D157Nd92NHArC","3PgNdMYSaPRymskby885DgKoTeA1uZr6Gi","3Pm7DaUzaDMxy2mW5WzHp1sE9hVWEpdf7J","35tbMt1qBGmy5RNcsdGZJgs7XVbf5gEgPs"]},"pruned_txo":{},"seed_version":13,"stored_height":485855,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"2of2","winpos-qt":[617,227,840,405],"x1/":{"seed":"speed cruise market wasp ability alarm hold essay grass coconut tissue recipe","type":"bip32","xprv":"xprv9s21ZrQH143K48ig2wcAuZoEKaYdNRaShKFR3hLrgwsNW13QYRhXH6gAG1khxim6dw2RtAzF8RWbQxr1vvWUJFfEu2SJZhYbv6pfreMpuLB","xpub":"xpub661MyMwAqRbcGco98y9BGhjxscP7mtJJ4YB1r5kUFHQMNoNZ5y1mptze7J37JypkbrmBdnqTvSNzxL7cE1FrHg16qoj9S12MUpiYxVbTKQV"},"x2/":{"type":"bip32","xprv":null,"xpub":"xpub661MyMwAqRbcGrCDZaVs9VC7Z6579tsGvpqyDYZEHKg2MXoDkxhrWoukqvwDPXKdxVkYA6Hv9XHLETptfZfNpcJZmsUThdXXkTNGoBjQv1o"}}' + wallet_str = '{"addr_history":{"M87s9D7u1WFsa4ngJdqAULMB7siczAwtwt":[],"M8bL3dwjtYefDPQBHSbW47qnGGtP5WWniV":[],"M9TYf6W52TCr94VEeDJTE8LrgEkTvsookV":[],"M9ZYYkWR9opBxoyU2MDsNVM5XSqFAGCXQF":[],"MA941kSUkxzxZ6DzCnbZaWrnwAhERS4KY3":[],"MC6jfmRo8PdPsveWyWFu8L7WrCC75u7dvM":[],"MDCqb8JE79toXnaY45M5MjTjyAdHzLrGgQ":[],"ME4iDMHgbSMFE39c3jXUfZVb6oN5zsbSsf":[],"MENAd6wWNtGkMvh6NZaLgNFZ2idCGJMSH1":[],"MEUhaxgfuTB8tP53GdZSdVnRYvACvy8HoN":[],"MGT3GjcuffmWLaUKsAmMRj2y7BdjrqcB4f":[],"MGnRpiGVxUqKnCCJb6L9vMLSxrPXDTqz4C":[],"MKNMK37FUVobU516zMarZCkNFiGQNAr5p9":[],"MNXCW51eu2dESvRr4BjBq4357FHiTECShe":[],"MPDHGfAwUANbPadr1Vpfdsws7PeHvbie9r":[],"MQutteLF867MiFZwirZqWNDzAS8ppWXSSC":[],"MR6JNqR8GcucDap4LXKktrFUS5DayikmLX":[],"MRcxBYgDDzLDXV7mpWDNMhSPLffAYWSep2":[],"MRjnKsSJcrsTnqNanHHgdvp4vrDmzPsUtV":[],"MRmrYG92SQUun8C3a6tCtSytkaAohBRyz7":[],"MRrbdAiZhgDSD12pRfGmfBTwhp4yt4dkyy":[],"MSHisDJBGZUWtSfETJo9CXkh52DXLd8DDP":[],"MSNY9dFU1JssSeZH6bU3CDYokkgy1bMyre":[],"MVFScHDwKNmJgRFrr6b8NJAx3Tfyj1N5Ya":[],"MVtWwExQXWHQaP2W517R3KaCnLkTzUuKfs":[],"MVyFXTtxXLDPmY3QBPyddf7dUQ5xC5AiCh":[]},"addresses":{"change":["M87s9D7u1WFsa4ngJdqAULMB7siczAwtwt","MQutteLF867MiFZwirZqWNDzAS8ppWXSSC","MNXCW51eu2dESvRr4BjBq4357FHiTECShe","MSNY9dFU1JssSeZH6bU3CDYokkgy1bMyre","M9ZYYkWR9opBxoyU2MDsNVM5XSqFAGCXQF","MGT3GjcuffmWLaUKsAmMRj2y7BdjrqcB4f"],"receiving":["MVFScHDwKNmJgRFrr6b8NJAx3Tfyj1N5Ya","M9TYf6W52TCr94VEeDJTE8LrgEkTvsookV","MKNMK37FUVobU516zMarZCkNFiGQNAr5p9","MGnRpiGVxUqKnCCJb6L9vMLSxrPXDTqz4C","MPDHGfAwUANbPadr1Vpfdsws7PeHvbie9r","MDCqb8JE79toXnaY45M5MjTjyAdHzLrGgQ","ME4iDMHgbSMFE39c3jXUfZVb6oN5zsbSsf","MENAd6wWNtGkMvh6NZaLgNFZ2idCGJMSH1","MEUhaxgfuTB8tP53GdZSdVnRYvACvy8HoN","MA941kSUkxzxZ6DzCnbZaWrnwAhERS4KY3","MSHisDJBGZUWtSfETJo9CXkh52DXLd8DDP","MRjnKsSJcrsTnqNanHHgdvp4vrDmzPsUtV","MRcxBYgDDzLDXV7mpWDNMhSPLffAYWSep2","MRmrYG92SQUun8C3a6tCtSytkaAohBRyz7","M8bL3dwjtYefDPQBHSbW47qnGGtP5WWniV","MRrbdAiZhgDSD12pRfGmfBTwhp4yt4dkyy","MR6JNqR8GcucDap4LXKktrFUS5DayikmLX","MVtWwExQXWHQaP2W517R3KaCnLkTzUuKfs","MVyFXTtxXLDPmY3QBPyddf7dUQ5xC5AiCh","MC6jfmRo8PdPsveWyWFu8L7WrCC75u7dvM"]},"pruned_txo":{},"seed_version":13,"stored_height":485855,"transactions":{},"tx_fees":{},"txi":{},"txo":{},"use_encryption":false,"verified_tx3":{},"wallet_type":"2of2","winpos-qt":[617,227,840,405],"x1/":{"seed":"speed cruise market wasp ability alarm hold essay grass coconut tissue recipe","type":"bip32","xprv":"xprv9s21ZrQH143K48ig2wcAuZoEKaYdNRaShKFR3hLrgwsNW13QYRhXH6gAG1khxim6dw2RtAzF8RWbQxr1vvWUJFfEu2SJZhYbv6pfreMpuLB","xpub":"xpub661MyMwAqRbcGco98y9BGhjxscP7mtJJ4YB1r5kUFHQMNoNZ5y1mptze7J37JypkbrmBdnqTvSNzxL7cE1FrHg16qoj9S12MUpiYxVbTKQV"},"x2/":{"type":"bip32","xprv":null,"xpub":"xpub661MyMwAqRbcGrCDZaVs9VC7Z6579tsGvpqyDYZEHKg2MXoDkxhrWoukqvwDPXKdxVkYA6Hv9XHLETptfZfNpcJZmsUThdXXkTNGoBjQv1o"}}' self._upgrade_storage(wallet_str) ########## diff --git a/lib/tests/test_transaction.py b/lib/tests/test_transaction.py index cc800454c8c5..99d1818e9ff9 100644 --- a/lib/tests/test_transaction.py +++ b/lib/tests/test_transaction.py @@ -58,7 +58,7 @@ def test_tx_unsigned(self): expected = { 'inputs': [{ 'type': 'p2pkh', - 'address': '1446oU3z268EeFgfcwJv6X2VBXHfoYxfuD', + 'address': 'LNH44gMp6kNHu4Npo5JDNY6FPjewvMKDnz', 'num_sig': 1, 'prevout_hash': '3140eb24b43386f35ba69e3875eb6c93130ac66201d01c58f598defc949a5c2a', 'prevout_n': 0, @@ -69,7 +69,7 @@ def test_tx_unsigned(self): 'x_pubkeys': ['ff0488b21e03ef2afea18000000089689bff23e1e7fb2f161daa37270a97a3d8c2e537584b2d304ecb47b86d21fc021b010d3bd425f8cf2e04824bfdf1f1f5ff1d51fadd9a41f9e3fb8dd3403b1bfe00000000']}], 'lockTime': 0, 'outputs': [{ - 'address': '14CHYaaByjJZpx4oHBpfDMdqhTyXnZ3kVs', + 'address': 'LNREont24PYd5kkxTKoxVNhbugLowNb7H8', 'prevout_n': 0, 'scriptPubKey': '76a914230ac37834073a42146f11ef8414ae929feaafc388ac', 'type': TYPE_ADDRESS, @@ -81,12 +81,12 @@ def test_tx_unsigned(self): self.assertEqual(tx.deserialize(), None) self.assertEqual(tx.as_dict(), {'hex': unsigned_blob, 'complete': False, 'final': True}) - self.assertEqual(tx.get_outputs(), [('14CHYaaByjJZpx4oHBpfDMdqhTyXnZ3kVs', 1000000)]) - self.assertEqual(tx.get_output_addresses(), ['14CHYaaByjJZpx4oHBpfDMdqhTyXnZ3kVs']) + self.assertEqual(tx.get_outputs(), [('LNREont24PYd5kkxTKoxVNhbugLowNb7H8', 1000000)]) + self.assertEqual(tx.get_output_addresses(), ['LNREont24PYd5kkxTKoxVNhbugLowNb7H8']) - self.assertTrue(tx.has_address('14CHYaaByjJZpx4oHBpfDMdqhTyXnZ3kVs')) - self.assertTrue(tx.has_address('1446oU3z268EeFgfcwJv6X2VBXHfoYxfuD')) - self.assertFalse(tx.has_address('1CQj15y1N7LDHp7wTt28eoD1QhHgFgxECH')) + self.assertTrue(tx.has_address('LNREont24PYd5kkxTKoxVNhbugLowNb7H8')) + self.assertTrue(tx.has_address('LNH44gMp6kNHu4Npo5JDNY6FPjewvMKDnz')) + self.assertFalse(tx.has_address('LWdgGJGqSmaGYcp6e21RvpGmcuexJorNEH')) self.assertEqual(tx.serialize(), unsigned_blob) @@ -102,7 +102,7 @@ def test_tx_signed(self): expected = { 'inputs': [{ 'type': 'p2pkh', - 'address': '1446oU3z268EeFgfcwJv6X2VBXHfoYxfuD', + 'address': 'LNH44gMp6kNHu4Npo5JDNY6FPjewvMKDnz', 'num_sig': 1, 'prevout_hash': '3140eb24b43386f35ba69e3875eb6c93130ac66201d01c58f598defc949a5c2a', 'prevout_n': 0, @@ -113,7 +113,7 @@ def test_tx_signed(self): 'x_pubkeys': ['02e61d176da16edd1d258a200ad9759ef63adf8e14cd97f53227bae35cdb84d2f6']}], 'lockTime': 0, 'outputs': [{ - 'address': '14CHYaaByjJZpx4oHBpfDMdqhTyXnZ3kVs', + 'address': 'LNREont24PYd5kkxTKoxVNhbugLowNb7H8', 'prevout_n': 0, 'scriptPubKey': '76a914230ac37834073a42146f11ef8414ae929feaafc388ac', 'type': TYPE_ADDRESS, @@ -137,10 +137,10 @@ def test_tx_signed(self): def test_estimated_output_size(self): estimated_output_size = transaction.Transaction.estimated_output_size - self.assertEqual(estimated_output_size('14gcRovpkCoGkCNBivQBvw7eso7eiNAbxG'), 34) - self.assertEqual(estimated_output_size('35ZqQJcBQMZ1rsv8aSuJ2wkC7ohUCQMJbT'), 32) - self.assertEqual(estimated_output_size('bc1q3g5tmkmlvxryhh843v4dz026avatc0zzr6h3af'), 31) - self.assertEqual(estimated_output_size('bc1qnvks7gfdu72de8qv6q6rhkkzu70fqz4wpjzuxjf6aydsx7wxfwcqnlxuv3'), 43) + self.assertEqual(estimated_output_size('LNuZh2Eeps3L114Lu4PVCxBR61UvrUKgze'), 34) + self.assertEqual(estimated_output_size('MBmyiC29MUQSfPC2gKtdrazbSWHvGqJCnU'), 32) + self.assertEqual(estimated_output_size('xzc1q3g5tmkmlvxryhh843v4dz026avatc0zz8xd49e'), 31) + self.assertEqual(estimated_output_size('xzc1qnvks7gfdu72de8qv6q6rhkkzu70fqz4wpjzuxjf6aydsx7wxfwcqsmgvk5'), 43) # TODO other tests for segwit tx def test_tx_signed_segwit(self): @@ -161,7 +161,7 @@ def test_errors(self): def test_parse_xpub(self): res = xpubkey_to_address('fe4e13b0f311a55b8a5db9a32e959da9f011b131019d4cebe6141b9e2c93edcbfc0954c358b062a9f94111548e50bde5847a3096b8b7872dcffadb0e9579b9017b01000200') - self.assertEqual(res, ('04ee98d63800824486a1cf5b4376f2f574d86e0a3009a6448105703453f3368e8e1d8d090aaecdd626a45cc49876709a3bbb6dc96a4311b3cac03e225df5f63dfc', '19h943e4diLc68GXW7G75QNe2KWuMu7BaJ')) + self.assertEqual(res, ('04ee98d63800824486a1cf5b4376f2f574d86e0a3009a6448105703453f3368e8e1d8d090aaecdd626a45cc49876709a3bbb6dc96a4311b3cac03e225df5f63dfc', 'LTv6KFwtiNafLvxggFFQMRSQEXtBUru9eG')) def test_version_field(self): tx = transaction.Transaction(v2_blob) @@ -235,385 +235,6 @@ def test_txid_input_p2wsh_p2sh_not_multisig(self): tx = transaction.Transaction('0100000000010160f84fdcda039c3ca1b20038adea2d49a53db92f7c467e8def13734232bb610804000000232200202814720f16329ab81cb8867c4d447bd13255931f23e6655944c9ada1797fcf88ffffffff0ba3dcfc04000000001976a91488124a57c548c9e7b1dd687455af803bd5765dea88acc9f44900000000001976a914da55045a0ccd40a56ce861946d13eb861eb5f2d788ac49825e000000000017a914ca34d4b190e36479aa6e0023cfe0a8537c6aa8dd87680c0d00000000001976a914651102524c424b2e7c44787c4f21e4c54dffafc088acf02fa9000000000017a914ee6c596e6f7066466d778d4f9ba633a564a6e95d874d250900000000001976a9146ca7976b48c04fd23867748382ee8401b1d27c2988acf5119600000000001976a914cf47d5dcdba02fd547c600697097252d38c3214a88ace08a12000000000017a914017bef79d92d5ec08c051786bad317e5dd3befcf87e3d76201000000001976a9148ec1b88b66d142bcbdb42797a0fd402c23e0eec288ac718f6900000000001976a914e66344472a224ce6f843f2989accf435ae6a808988ac65e51300000000001976a914cad6717c13a2079066f876933834210ebbe68c3f88ac0347304402201a4907c4706104320313e182ecbb1b265b2d023a79586671386de86bb47461590220472c3db9fc99a728ebb9b555a72e3481d20b181bd059a9c1acadfb853d90c96c01210338a46f2a54112fef8803c8478bc17e5f8fc6a5ec276903a946c1fafb2e3a8b181976a914eda8660085bf607b82bd18560ca8f3a9ec49178588ac00000000') self.assertEqual('e9933221a150f78f9f224899f8568ff6422ffcc28ca3d53d87936368ff7c4b1d', tx.txid()) - # input: p2sh, not multisig - def test_txid_regression_issue_3899(self): - tx = transaction.Transaction('0100000004328685b0352c981d3d451b471ae3bfc78b82565dc2a54049a81af273f0a9fd9c010000000b0009630330472d5fae685bffffffff328685b0352c981d3d451b471ae3bfc78b82565dc2a54049a81af273f0a9fd9c020000000b0009630359646d5fae6858ffffffff328685b0352c981d3d451b471ae3bfc78b82565dc2a54049a81af273f0a9fd9c030000000b000963034bd4715fae6854ffffffff328685b0352c981d3d451b471ae3bfc78b82565dc2a54049a81af273f0a9fd9c040000000b000963036de8705fae6860ffffffff0130750000000000001976a914b5abca61d20f9062fb1fdbb880d9d93bac36675188ac00000000') - self.assertEqual('f570d5d1e965ee61bcc7005f8fefb1d3abbed9d7ddbe035e2a68fa07e5fc4a0d', tx.txid()) - - -# these transactions are from Bitcoin Core unit tests ---> -# https://github.com/bitcoin/bitcoin/blob/11376b5583a283772c82f6d32d0007cdbf5b8ef0/src/test/data/tx_valid.json - - def test_txid_bitcoin_core_0001(self): - tx = transaction.Transaction('0100000001b14bdcbc3e01bdaad36cc08e81e69c82e1060bc14e518db2b49aa43ad90ba26000000000490047304402203f16c6f40162ab686621ef3000b04e75418a0c0cb2d8aebeac894ae360ac1e780220ddc15ecdfc3507ac48e1681a33eb60996631bf6bf5bc0a0682c4db743ce7ca2b01ffffffff0140420f00000000001976a914660d4ef3a743e3e696ad990364e555c271ad504b88ac00000000') - self.assertEqual('23b397edccd3740a74adb603c9756370fafcde9bcc4483eb271ecad09a94dd63', tx.txid()) - - def test_txid_bitcoin_core_0002(self): - tx = transaction.Transaction('0100000001b14bdcbc3e01bdaad36cc08e81e69c82e1060bc14e518db2b49aa43ad90ba260000000004a0048304402203f16c6f40162ab686621ef3000b04e75418a0c0cb2d8aebeac894ae360ac1e780220ddc15ecdfc3507ac48e1681a33eb60996631bf6bf5bc0a0682c4db743ce7ca2bab01ffffffff0140420f00000000001976a914660d4ef3a743e3e696ad990364e555c271ad504b88ac00000000') - self.assertEqual('fcabc409d8e685da28536e1e5ccc91264d755cd4c57ed4cae3dbaa4d3b93e8ed', tx.txid()) - - def test_txid_bitcoin_core_0003(self): - tx = transaction.Transaction('0100000001b14bdcbc3e01bdaad36cc08e81e69c82e1060bc14e518db2b49aa43ad90ba260000000004a01ff47304402203f16c6f40162ab686621ef3000b04e75418a0c0cb2d8aebeac894ae360ac1e780220ddc15ecdfc3507ac48e1681a33eb60996631bf6bf5bc0a0682c4db743ce7ca2b01ffffffff0140420f00000000001976a914660d4ef3a743e3e696ad990364e555c271ad504b88ac00000000') - self.assertEqual('c9aa95f2c48175fdb70b34c23f1c3fc44f869b073a6f79b1343fbce30c3cb575', tx.txid()) - - def test_txid_bitcoin_core_0004(self): - tx = transaction.Transaction('0100000001b14bdcbc3e01bdaad36cc08e81e69c82e1060bc14e518db2b49aa43ad90ba26000000000495147304402203f16c6f40162ab686621ef3000b04e75418a0c0cb2d8aebeac894ae360ac1e780220ddc15ecdfc3507ac48e1681a33eb60996631bf6bf5bc0a0682c4db743ce7ca2b01ffffffff0140420f00000000001976a914660d4ef3a743e3e696ad990364e555c271ad504b88ac00000000') - self.assertEqual('da94fda32b55deb40c3ed92e135d69df7efc4ee6665e0beb07ef500f407c9fd2', tx.txid()) - - def test_txid_bitcoin_core_0005(self): - tx = transaction.Transaction('0100000001b14bdcbc3e01bdaad36cc08e81e69c82e1060bc14e518db2b49aa43ad90ba26000000000494f47304402203f16c6f40162ab686621ef3000b04e75418a0c0cb2d8aebeac894ae360ac1e780220ddc15ecdfc3507ac48e1681a33eb60996631bf6bf5bc0a0682c4db743ce7ca2b01ffffffff0140420f00000000001976a914660d4ef3a743e3e696ad990364e555c271ad504b88ac00000000') - self.assertEqual('f76f897b206e4f78d60fe40f2ccb542184cfadc34354d3bb9bdc30cc2f432b86', tx.txid()) - - def test_txid_bitcoin_core_0006(self): - tx = transaction.Transaction('01000000010276b76b07f4935c70acf54fbf1f438a4c397a9fb7e633873c4dd3bc062b6b40000000008c493046022100d23459d03ed7e9511a47d13292d3430a04627de6235b6e51a40f9cd386f2abe3022100e7d25b080f0bb8d8d5f878bba7d54ad2fda650ea8d158a33ee3cbd11768191fd004104b0e2c879e4daf7b9ab68350228c159766676a14f5815084ba166432aab46198d4cca98fa3e9981d0a90b2effc514b76279476550ba3663fdcaff94c38420e9d5000000000100093d00000000001976a9149a7b0f3b80c6baaeedce0a0842553800f832ba1f88ac00000000') - self.assertEqual('c99c49da4c38af669dea436d3e73780dfdb6c1ecf9958baa52960e8baee30e73', tx.txid()) - - def test_txid_bitcoin_core_0007(self): - tx = transaction.Transaction('01000000010001000000000000000000000000000000000000000000000000000000000000000000006a473044022067288ea50aa799543a536ff9306f8e1cba05b9c6b10951175b924f96732555ed022026d7b5265f38d21541519e4a1e55044d5b9e17e15cdbaf29ae3792e99e883e7a012103ba8c8b86dea131c22ab967e6dd99bdae8eff7a1f75a2c35f1f944109e3fe5e22ffffffff010000000000000000015100000000') - self.assertEqual('e41ffe19dff3cbedb413a2ca3fbbcd05cb7fd7397ffa65052f8928aa9c700092', tx.txid()) - - def test_txid_bitcoin_core_0008(self): - tx = transaction.Transaction('01000000023d6cf972d4dff9c519eff407ea800361dd0a121de1da8b6f4138a2f25de864b4000000008a4730440220ffda47bfc776bcd269da4832626ac332adfca6dd835e8ecd83cd1ebe7d709b0e022049cffa1cdc102a0b56e0e04913606c70af702a1149dc3b305ab9439288fee090014104266abb36d66eb4218a6dd31f09bb92cf3cfa803c7ea72c1fc80a50f919273e613f895b855fb7465ccbc8919ad1bd4a306c783f22cd3227327694c4fa4c1c439affffffff21ebc9ba20594737864352e95b727f1a565756f9d365083eb1a8596ec98c97b7010000008a4730440220503ff10e9f1e0de731407a4a245531c9ff17676eda461f8ceeb8c06049fa2c810220c008ac34694510298fa60b3f000df01caa244f165b727d4896eb84f81e46bcc4014104266abb36d66eb4218a6dd31f09bb92cf3cfa803c7ea72c1fc80a50f919273e613f895b855fb7465ccbc8919ad1bd4a306c783f22cd3227327694c4fa4c1c439affffffff01f0da5200000000001976a914857ccd42dded6df32949d4646dfa10a92458cfaa88ac00000000') - self.assertEqual('f7fdd091fa6d8f5e7a8c2458f5c38faffff2d3f1406b6e4fe2c99dcc0d2d1cbb', tx.txid()) - - def test_txid_bitcoin_core_0009(self): - tx = transaction.Transaction('01000000020002000000000000000000000000000000000000000000000000000000000000000000000151ffffffff0001000000000000000000000000000000000000000000000000000000000000000000006b483045022100c9cdd08798a28af9d1baf44a6c77bcc7e279f47dc487c8c899911bc48feaffcc0220503c5c50ae3998a733263c5c0f7061b483e2b56c4c41b456e7d2f5a78a74c077032102d5c25adb51b61339d2b05315791e21bbe80ea470a49db0135720983c905aace0ffffffff010000000000000000015100000000') - self.assertEqual('b56471690c3ff4f7946174e51df68b47455a0d29344c351377d712e6d00eabe5', tx.txid()) - - def test_txid_bitcoin_core_0010(self): - tx = transaction.Transaction('010000000100010000000000000000000000000000000000000000000000000000000000000000000009085768617420697320ffffffff010000000000000000015100000000') - self.assertEqual('99517e5b47533453cc7daa332180f578be68b80370ecfe84dbfff7f19d791da4', tx.txid()) - - def test_txid_bitcoin_core_0011(self): - tx = transaction.Transaction('01000000010001000000000000000000000000000000000000000000000000000000000000000000006e493046022100c66c9cdf4c43609586d15424c54707156e316d88b0a1534c9e6b0d4f311406310221009c0fe51dbc9c4ab7cc25d3fdbeccf6679fe6827f08edf2b4a9f16ee3eb0e438a0123210338e8034509af564c62644c07691942e0c056752008a173c89f60ab2a88ac2ebfacffffffff010000000000000000015100000000') - self.assertEqual('ab097537b528871b9b64cb79a769ae13c3c3cd477cc9dddeebe657eabd7fdcea', tx.txid()) - - def test_txid_bitcoin_core_0012(self): - tx = transaction.Transaction('01000000010001000000000000000000000000000000000000000000000000000000000000000000006e493046022100e1eadba00d9296c743cb6ecc703fd9ddc9b3cd12906176a226ae4c18d6b00796022100a71aef7d2874deff681ba6080f1b278bac7bb99c61b08a85f4311970ffe7f63f012321030c0588dc44d92bdcbf8e72093466766fdc265ead8db64517b0c542275b70fffbacffffffff010040075af0750700015100000000') - self.assertEqual('4d163e00f1966e9a1eab8f9374c3e37f4deb4857c247270e25f7d79a999d2dc9', tx.txid()) - - def test_txid_bitcoin_core_0013(self): - tx = transaction.Transaction('01000000010001000000000000000000000000000000000000000000000000000000000000000000006d483045022027deccc14aa6668e78a8c9da3484fbcd4f9dcc9bb7d1b85146314b21b9ae4d86022100d0b43dece8cfb07348de0ca8bc5b86276fa88f7f2138381128b7c36ab2e42264012321029bb13463ddd5d2cc05da6e84e37536cb9525703cfd8f43afdb414988987a92f6acffffffff020040075af075070001510000000000000000015100000000') - self.assertEqual('9fe2ef9dde70e15d78894a4800b7df3bbfb1addb9a6f7d7c204492fdb6ee6cc4', tx.txid()) - - def test_txid_bitcoin_core_0014(self): - tx = transaction.Transaction('01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff025151ffffffff010000000000000000015100000000') - self.assertEqual('99d3825137602e577aeaf6a2e3c9620fd0e605323dc5265da4a570593be791d4', tx.txid()) - - def test_txid_bitcoin_core_0015(self): - tx = transaction.Transaction('01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff6451515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151ffffffff010000000000000000015100000000') - self.assertEqual('c0d67409923040cc766bbea12e4c9154393abef706db065ac2e07d91a9ba4f84', tx.txid()) - - def test_txid_bitcoin_core_0016(self): - tx = transaction.Transaction('010000000200010000000000000000000000000000000000000000000000000000000000000000000049483045022100d180fd2eb9140aeb4210c9204d3f358766eb53842b2a9473db687fa24b12a3cc022079781799cd4f038b85135bbe49ec2b57f306b2bb17101b17f71f000fcab2b6fb01ffffffff0002000000000000000000000000000000000000000000000000000000000000000000004847304402205f7530653eea9b38699e476320ab135b74771e1c48b81a5d041e2ca84b9be7a802200ac8d1f40fb026674fe5a5edd3dea715c27baa9baca51ed45ea750ac9dc0a55e81ffffffff010100000000000000015100000000') - self.assertEqual('c610d85d3d5fdf5046be7f123db8a0890cee846ee58de8a44667cfd1ab6b8666', tx.txid()) - - def test_txid_bitcoin_core_0017(self): - tx = transaction.Transaction('01000000020001000000000000000000000000000000000000000000000000000000000000000000004948304502203a0f5f0e1f2bdbcd04db3061d18f3af70e07f4f467cbc1b8116f267025f5360b022100c792b6e215afc5afc721a351ec413e714305cb749aae3d7fee76621313418df101010000000002000000000000000000000000000000000000000000000000000000000000000000004847304402205f7530653eea9b38699e476320ab135b74771e1c48b81a5d041e2ca84b9be7a802200ac8d1f40fb026674fe5a5edd3dea715c27baa9baca51ed45ea750ac9dc0a55e81ffffffff010100000000000000015100000000') - self.assertEqual('a647a7b3328d2c698bfa1ee2dd4e5e05a6cea972e764ccb9bd29ea43817ca64f', tx.txid()) - - def test_txid_bitcoin_core_0018(self): - tx = transaction.Transaction('010000000370ac0a1ae588aaf284c308d67ca92c69a39e2db81337e563bf40c59da0a5cf63000000006a4730440220360d20baff382059040ba9be98947fd678fb08aab2bb0c172efa996fd8ece9b702201b4fb0de67f015c90e7ac8a193aeab486a1f587e0f54d0fb9552ef7f5ce6caec032103579ca2e6d107522f012cd00b52b9a65fb46f0c57b9b8b6e377c48f526a44741affffffff7d815b6447e35fbea097e00e028fb7dfbad4f3f0987b4734676c84f3fcd0e804010000006b483045022100c714310be1e3a9ff1c5f7cacc65c2d8e781fc3a88ceb063c6153bf950650802102200b2d0979c76e12bb480da635f192cc8dc6f905380dd4ac1ff35a4f68f462fffd032103579ca2e6d107522f012cd00b52b9a65fb46f0c57b9b8b6e377c48f526a44741affffffff3f1f097333e4d46d51f5e77b53264db8f7f5d2e18217e1099957d0f5af7713ee010000006c493046022100b663499ef73273a3788dea342717c2640ac43c5a1cf862c9e09b206fcb3f6bb8022100b09972e75972d9148f2bdd462e5cb69b57c1214b88fc55ca638676c07cfc10d8032103579ca2e6d107522f012cd00b52b9a65fb46f0c57b9b8b6e377c48f526a44741affffffff0380841e00000000001976a914bfb282c70c4191f45b5a6665cad1682f2c9cfdfb88ac80841e00000000001976a9149857cc07bed33a5cf12b9c5e0500b675d500c81188ace0fd1c00000000001976a91443c52850606c872403c0601e69fa34b26f62db4a88ac00000000') - self.assertEqual('afd9c17f8913577ec3509520bd6e5d63e9c0fd2a5f70c787993b097ba6ca9fae', tx.txid()) - - def test_txid_bitcoin_core_0019(self): - tx = transaction.Transaction('01000000012312503f2491a2a97fcd775f11e108a540a5528b5d4dee7a3c68ae4add01dab300000000fdfe0000483045022100f6649b0eddfdfd4ad55426663385090d51ee86c3481bdc6b0c18ea6c0ece2c0b0220561c315b07cffa6f7dd9df96dbae9200c2dee09bf93cc35ca05e6cdf613340aa0148304502207aacee820e08b0b174e248abd8d7a34ed63b5da3abedb99934df9fddd65c05c4022100dfe87896ab5ee3df476c2655f9fbe5bd089dccbef3e4ea05b5d121169fe7f5f4014c695221031d11db38972b712a9fe1fc023577c7ae3ddb4a3004187d41c45121eecfdbb5b7210207ec36911b6ad2382860d32989c7b8728e9489d7bbc94a6b5509ef0029be128821024ea9fac06f666a4adc3fc1357b7bec1fd0bdece2b9d08579226a8ebde53058e453aeffffffff0180380100000000001976a914c9b99cddf847d10685a4fabaa0baf505f7c3dfab88ac00000000') - self.assertEqual('f4b05f978689c89000f729cae187dcfbe64c9819af67a4f05c0b4d59e717d64d', tx.txid()) - - def test_txid_bitcoin_core_0020(self): - tx = transaction.Transaction('0100000001f709fa82596e4f908ee331cb5e0ed46ab331d7dcfaf697fe95891e73dac4ebcb000000008c20ca42095840735e89283fec298e62ac2ddea9b5f34a8cbb7097ad965b87568100201b1b01dc829177da4a14551d2fc96a9db00c6501edfa12f22cd9cefd335c227f483045022100a9df60536df5733dd0de6bc921fab0b3eee6426501b43a228afa2c90072eb5ca02201c78b74266fac7d1db5deff080d8a403743203f109fbcabf6d5a760bf87386d20100ffffffff01c075790000000000232103611f9a45c18f28f06f19076ad571c344c82ce8fcfe34464cf8085217a2d294a6ac00000000') - self.assertEqual('cc60b1f899ec0a69b7c3f25ddf32c4524096a9c5b01cbd84c6d0312a0c478984', tx.txid()) - - def test_txid_bitcoin_core_0021(self): - tx = transaction.Transaction('01000000012c651178faca83be0b81c8c1375c4b0ad38d53c8fe1b1c4255f5e795c25792220000000049483045022100d6044562284ac76c985018fc4a90127847708c9edb280996c507b28babdc4b2a02203d74eca3f1a4d1eea7ff77b528fde6d5dc324ec2dbfdb964ba885f643b9704cd01ffffffff010100000000000000232102c2410f8891ae918cab4ffc4bb4a3b0881be67c7a1e7faa8b5acf9ab8932ec30cac00000000') - self.assertEqual('1edc7f214659d52c731e2016d258701911bd62a0422f72f6c87a1bc8dd3f8667', tx.txid()) - - def test_txid_bitcoin_core_0022(self): - tx = transaction.Transaction('0100000001f725ea148d92096a79b1709611e06e94c63c4ef61cbae2d9b906388efd3ca99c000000000100ffffffff0101000000000000002321028a1d66975dbdf97897e3a4aef450ebeb5b5293e4a0b4a6d3a2daaa0b2b110e02ac00000000') - self.assertEqual('018adb7133fde63add9149a2161802a1bcf4bdf12c39334e880c073480eda2ff', tx.txid()) - - def test_txid_bitcoin_core_0023(self): - tx = transaction.Transaction('0100000001be599efaa4148474053c2fa031c7262398913f1dc1d9ec201fd44078ed004e44000000004900473044022022b29706cb2ed9ef0cb3c97b72677ca2dfd7b4160f7b4beb3ba806aa856c401502202d1e52582412eba2ed474f1f437a427640306fd3838725fab173ade7fe4eae4a01ffffffff010100000000000000232103ac4bba7e7ca3e873eea49e08132ad30c7f03640b6539e9b59903cf14fd016bbbac00000000') - self.assertEqual('1464caf48c708a6cc19a296944ded9bb7f719c9858986d2501cf35068b9ce5a2', tx.txid()) - - def test_txid_bitcoin_core_0024(self): - tx = transaction.Transaction('010000000112b66d5e8c7d224059e946749508efea9d66bf8d0c83630f080cf30be8bb6ae100000000490047304402206ffe3f14caf38ad5c1544428e99da76ffa5455675ec8d9780fac215ca17953520220779502985e194d84baa36b9bd40a0dbd981163fa191eb884ae83fc5bd1c86b1101ffffffff010100000000000000232103905380c7013e36e6e19d305311c1b81fce6581f5ee1c86ef0627c68c9362fc9fac00000000') - self.assertEqual('1fb73fbfc947d52f5d80ba23b67c06a232ad83fdd49d1c0a657602f03fbe8f7a', tx.txid()) - - def test_txid_bitcoin_core_0025(self): - tx = transaction.Transaction('0100000001b0ef70cc644e0d37407e387e73bfad598d852a5aa6d691d72b2913cebff4bceb000000004a00473044022068cd4851fc7f9a892ab910df7a24e616f293bcb5c5fbdfbc304a194b26b60fba022078e6da13d8cb881a22939b952c24f88b97afd06b4c47a47d7f804c9a352a6d6d0100ffffffff0101000000000000002321033bcaa0a602f0d44cc9d5637c6e515b0471db514c020883830b7cefd73af04194ac00000000') - self.assertEqual('24cecfce0fa880b09c9b4a66c5134499d1b09c01cc5728cd182638bea070e6ab', tx.txid()) - - def test_txid_bitcoin_core_0026(self): - tx = transaction.Transaction('0100000001c188aa82f268fcf08ba18950f263654a3ea6931dabc8bf3ed1d4d42aaed74cba000000004b0000483045022100940378576e069aca261a6b26fb38344e4497ca6751bb10905c76bb689f4222b002204833806b014c26fd801727b792b1260003c55710f87c5adbd7a9cb57446dbc9801ffffffff0101000000000000002321037c615d761e71d38903609bf4f46847266edc2fb37532047d747ba47eaae5ffe1ac00000000') - self.assertEqual('9eaa819e386d6a54256c9283da50c230f3d8cd5376d75c4dcc945afdeb157dd7', tx.txid()) - - def test_txid_bitcoin_core_0027(self): - tx = transaction.Transaction('01000000012432b60dc72cebc1a27ce0969c0989c895bdd9e62e8234839117f8fc32d17fbc000000004a493046022100a576b52051962c25e642c0fd3d77ee6c92487048e5d90818bcf5b51abaccd7900221008204f8fb121be4ec3b24483b1f92d89b1b0548513a134e345c5442e86e8617a501ffffffff010000000000000000016a00000000') - self.assertEqual('46224764c7870f95b58f155bce1e38d4da8e99d42dbb632d0dd7c07e092ee5aa', tx.txid()) - - def test_txid_bitcoin_core_0028(self): - tx = transaction.Transaction('01000000014710b0e7cf9f8930de259bdc4b84aa5dfb9437b665a3e3a21ff26e0bf994e183000000004a493046022100a166121a61b4eeb19d8f922b978ff6ab58ead8a5a5552bf9be73dc9c156873ea02210092ad9bc43ee647da4f6652c320800debcf08ec20a094a0aaf085f63ecb37a17201ffffffff010000000000000000016a00000000') - self.assertEqual('8d66836045db9f2d7b3a75212c5e6325f70603ee27c8333a3bce5bf670d9582e', tx.txid()) - - def test_txid_bitcoin_core_0029(self): - tx = transaction.Transaction('01000000015ebaa001d8e4ec7a88703a3bcf69d98c874bca6299cca0f191512bf2a7826832000000004948304502203bf754d1c6732fbf87c5dcd81258aefd30f2060d7bd8ac4a5696f7927091dad1022100f5bcb726c4cf5ed0ed34cc13dadeedf628ae1045b7cb34421bc60b89f4cecae701ffffffff010000000000000000016a00000000') - self.assertEqual('aab7ef280abbb9cc6fbaf524d2645c3daf4fcca2b3f53370e618d9cedf65f1f8', tx.txid()) - - def test_txid_bitcoin_core_0030(self): - tx = transaction.Transaction('010000000144490eda355be7480f2ec828dcc1b9903793a8008fad8cfe9b0c6b4d2f0355a900000000924830450221009c0a27f886a1d8cb87f6f595fbc3163d28f7a81ec3c4b252ee7f3ac77fd13ffa02203caa8dfa09713c8c4d7ef575c75ed97812072405d932bd11e6a1593a98b679370148304502201e3861ef39a526406bad1e20ecad06be7375ad40ddb582c9be42d26c3a0d7b240221009d0a3985e96522e59635d19cc4448547477396ce0ef17a58e7d74c3ef464292301ffffffff010000000000000000016a00000000') - self.assertEqual('6327783a064d4e350c454ad5cd90201aedf65b1fc524e73709c52f0163739190', tx.txid()) - - def test_txid_bitcoin_core_0031(self): - tx = transaction.Transaction('010000000144490eda355be7480f2ec828dcc1b9903793a8008fad8cfe9b0c6b4d2f0355a9000000004a48304502207a6974a77c591fa13dff60cabbb85a0de9e025c09c65a4b2285e47ce8e22f761022100f0efaac9ff8ac36b10721e0aae1fb975c90500b50c56e8a0cc52b0403f0425dd0100ffffffff010000000000000000016a00000000') - self.assertEqual('892464645599cc3c2d165adcc612e5f982a200dfaa3e11e9ce1d228027f46880', tx.txid()) - - def test_txid_bitcoin_core_0032(self): - tx = transaction.Transaction('010000000144490eda355be7480f2ec828dcc1b9903793a8008fad8cfe9b0c6b4d2f0355a9000000004a483045022100fa4a74ba9fd59c59f46c3960cf90cbe0d2b743c471d24a3d5d6db6002af5eebb02204d70ec490fd0f7055a7c45f86514336e3a7f03503dacecabb247fc23f15c83510151ffffffff010000000000000000016a00000000') - self.assertEqual('578db8c6c404fec22c4a8afeaf32df0e7b767c4dda3478e0471575846419e8fc', tx.txid()) - - def test_txid_bitcoin_core_0033(self): - tx = transaction.Transaction('0100000001e0be9e32f1f89c3d916c4f21e55cdcd096741b895cc76ac353e6023a05f4f7cc00000000d86149304602210086e5f736a2c3622ebb62bd9d93d8e5d76508b98be922b97160edc3dcca6d8c47022100b23c312ac232a4473f19d2aeb95ab7bdf2b65518911a0d72d50e38b5dd31dc820121038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ac4730440220508fa761865c8abd81244a168392876ee1d94e8ed83897066b5e2df2400dad24022043f5ee7538e87e9c6aef7ef55133d3e51da7cc522830a9c4d736977a76ef755c0121038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ffffffff010000000000000000016a00000000') - self.assertEqual('974f5148a0946f9985e75a240bb24c573adbbdc25d61e7b016cdbb0a5355049f', tx.txid()) - - def test_txid_bitcoin_core_0034(self): - tx = transaction.Transaction('01000000013c6f30f99a5161e75a2ce4bca488300ca0c6112bde67f0807fe983feeff0c91001000000e608646561646265656675ab61493046022100ce18d384221a731c993939015e3d1bcebafb16e8c0b5b5d14097ec8177ae6f28022100bcab227af90bab33c3fe0a9abfee03ba976ee25dc6ce542526e9b2e56e14b7f10121038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ac493046022100c3b93edcc0fd6250eb32f2dd8a0bba1754b0f6c3be8ed4100ed582f3db73eba2022100bf75b5bd2eff4d6bf2bda2e34a40fcc07d4aa3cf862ceaa77b47b81eff829f9a01ab21038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ffffffff010000000000000000016a00000000') - self.assertEqual('b0097ec81df231893a212657bf5fe5a13b2bff8b28c0042aca6fc4159f79661b', tx.txid()) - - def test_txid_bitcoin_core_0035(self): - tx = transaction.Transaction('01000000016f3dbe2ca96fa217e94b1017860be49f20820dea5c91bdcb103b0049d5eb566000000000fd1d0147304402203989ac8f9ad36b5d0919d97fa0a7f70c5272abee3b14477dc646288a8b976df5022027d19da84a066af9053ad3d1d7459d171b7e3a80bc6c4ef7a330677a6be548140147304402203989ac8f9ad36b5d0919d97fa0a7f70c5272abee3b14477dc646288a8b976df5022027d19da84a066af9053ad3d1d7459d171b7e3a80bc6c4ef7a330677a6be548140121038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ac47304402203757e937ba807e4a5da8534c17f9d121176056406a6465054bdd260457515c1a02200f02eccf1bec0f3a0d65df37889143c2e88ab7acec61a7b6f5aa264139141a2b0121038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ffffffff010000000000000000016a00000000') - self.assertEqual('feeba255656c80c14db595736c1c7955c8c0a497622ec96e3f2238fbdd43a7c9', tx.txid()) - - def test_txid_bitcoin_core_0036(self): - tx = transaction.Transaction('01000000012139c555ccb81ee5b1e87477840991ef7b386bc3ab946b6b682a04a621006b5a01000000fdb40148304502201723e692e5f409a7151db386291b63524c5eb2030df652b1f53022fd8207349f022100b90d9bbf2f3366ce176e5e780a00433da67d9e5c79312c6388312a296a5800390148304502201723e692e5f409a7151db386291b63524c5eb2030df652b1f53022fd8207349f022100b90d9bbf2f3366ce176e5e780a00433da67d9e5c79312c6388312a296a5800390121038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f2204148304502201723e692e5f409a7151db386291b63524c5eb2030df652b1f53022fd8207349f022100b90d9bbf2f3366ce176e5e780a00433da67d9e5c79312c6388312a296a5800390175ac4830450220646b72c35beeec51f4d5bc1cbae01863825750d7f490864af354e6ea4f625e9c022100f04b98432df3a9641719dbced53393022e7249fb59db993af1118539830aab870148304502201723e692e5f409a7151db386291b63524c5eb2030df652b1f53022fd8207349f022100b90d9bbf2f3366ce176e5e780a00433da67d9e5c79312c6388312a296a580039017521038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ffffffff010000000000000000016a00000000') - self.assertEqual('a0c984fc820e57ddba97f8098fa640c8a7eb3fe2f583923da886b7660f505e1e', tx.txid()) - - def test_txid_bitcoin_core_0037(self): - tx = transaction.Transaction('0100000002f9cbafc519425637ba4227f8d0a0b7160b4e65168193d5af39747891de98b5b5000000006b4830450221008dd619c563e527c47d9bd53534a770b102e40faa87f61433580e04e271ef2f960220029886434e18122b53d5decd25f1f4acb2480659fea20aabd856987ba3c3907e0121022b78b756e2258af13779c1a1f37ea6800259716ca4b7f0b87610e0bf3ab52a01ffffffff42e7988254800876b69f24676b3e0205b77be476512ca4d970707dd5c60598ab00000000fd260100483045022015bd0139bcccf990a6af6ec5c1c52ed8222e03a0d51c334df139968525d2fcd20221009f9efe325476eb64c3958e4713e9eefe49bf1d820ed58d2112721b134e2a1a53034930460221008431bdfa72bc67f9d41fe72e94c88fb8f359ffa30b33c72c121c5a877d922e1002210089ef5fc22dd8bfc6bf9ffdb01a9862d27687d424d1fefbab9e9c7176844a187a014c9052483045022015bd0139bcccf990a6af6ec5c1c52ed8222e03a0d51c334df139968525d2fcd20221009f9efe325476eb64c3958e4713e9eefe49bf1d820ed58d2112721b134e2a1a5303210378d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c71210378d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c7153aeffffffff01a08601000000000017a914d8dacdadb7462ae15cd906f1878706d0da8660e68700000000') - self.assertEqual('5df1375ffe61ac35ca178ebb0cab9ea26dedbd0e96005dfcee7e379fa513232f', tx.txid()) - - def test_txid_bitcoin_core_0038(self): - tx = transaction.Transaction('0100000002dbb33bdf185b17f758af243c5d3c6e164cc873f6bb9f40c0677d6e0f8ee5afce000000006b4830450221009627444320dc5ef8d7f68f35010b4c050a6ed0d96b67a84db99fda9c9de58b1e02203e4b4aaa019e012e65d69b487fdf8719df72f488fa91506a80c49a33929f1fd50121022b78b756e2258af13779c1a1f37ea6800259716ca4b7f0b87610e0bf3ab52a01ffffffffdbb33bdf185b17f758af243c5d3c6e164cc873f6bb9f40c0677d6e0f8ee5afce010000009300483045022015bd0139bcccf990a6af6ec5c1c52ed8222e03a0d51c334df139968525d2fcd20221009f9efe325476eb64c3958e4713e9eefe49bf1d820ed58d2112721b134e2a1a5303483045022015bd0139bcccf990a6af6ec5c1c52ed8222e03a0d51c334df139968525d2fcd20221009f9efe325476eb64c3958e4713e9eefe49bf1d820ed58d2112721b134e2a1a5303ffffffff01a0860100000000001976a9149bc0bbdd3024da4d0c38ed1aecf5c68dd1d3fa1288ac00000000') - self.assertEqual('ded7ff51d89a4e1ec48162aee5a96447214d93dfb3837946af2301a28f65dbea', tx.txid()) - - def test_txid_bitcoin_core_0039(self): - tx = transaction.Transaction('010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000') - self.assertEqual('3444be2e216abe77b46015e481d8cc21abd4c20446aabf49cd78141c9b9db87e', tx.txid()) - - def test_txid_bitcoin_core_0040(self): - tx = transaction.Transaction('0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ff64cd1d') - self.assertEqual('abd62b4627d8d9b2d95fcfd8c87e37d2790637ce47d28018e3aece63c1d62649', tx.txid()) - - def test_txid_bitcoin_core_0041(self): - tx = transaction.Transaction('01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000065cd1d') - self.assertEqual('58b6de8413603b7f556270bf48caedcf17772e7105f5419f6a80be0df0b470da', tx.txid()) - - def test_txid_bitcoin_core_0042(self): - tx = transaction.Transaction('0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ffffffff') - self.assertEqual('5f99c0abf511294d76cbe144d86b77238a03e086974bc7a8ea0bdb2c681a0324', tx.txid()) - - def test_txid_bitcoin_core_0043(self): - tx = transaction.Transaction('010000000100010000000000000000000000000000000000000000000000000000000000000000000000feffffff0100000000000000000000000000') - self.assertEqual('25d35877eaba19497710666473c50d5527d38503e3521107a3fc532b74cd7453', tx.txid()) - - def test_txid_bitcoin_core_0044(self): - tx = transaction.Transaction('0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000feffffff') - self.assertEqual('1b9aef851895b93c62c29fbd6ca4d45803f4007eff266e2f96ff11e9b6ef197b', tx.txid()) - - def test_txid_bitcoin_core_0045(self): - tx = transaction.Transaction('010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000') - self.assertEqual('3444be2e216abe77b46015e481d8cc21abd4c20446aabf49cd78141c9b9db87e', tx.txid()) - - def test_txid_bitcoin_core_0046(self): - tx = transaction.Transaction('01000000010001000000000000000000000000000000000000000000000000000000000000000000000251b1000000000100000000000000000001000000') - self.assertEqual('f53761038a728b1f17272539380d96e93f999218f8dcb04a8469b523445cd0fd', tx.txid()) - - def test_txid_bitcoin_core_0047(self): - tx = transaction.Transaction('0100000001000100000000000000000000000000000000000000000000000000000000000000000000030251b1000000000100000000000000000001000000') - self.assertEqual('d193f0f32fceaf07bb25c897c8f99ca6f69a52f6274ca64efc2a2e180cb97fc1', tx.txid()) - - def test_txid_bitcoin_core_0048(self): - tx = transaction.Transaction('010000000132211bdd0d568506804eef0d8cc3db68c3d766ab9306cdfcc0a9c89616c8dbb1000000006c493045022100c7bb0faea0522e74ff220c20c022d2cb6033f8d167fb89e75a50e237a35fd6d202203064713491b1f8ad5f79e623d0219ad32510bfaa1009ab30cbee77b59317d6e30001210237af13eb2d84e4545af287b919c2282019c9691cc509e78e196a9d8274ed1be0ffffffff0100000000000000001976a914f1b3ed2eda9a2ebe5a9374f692877cdf87c0f95b88ac00000000') - self.assertEqual('50a1e0e6a134a564efa078e3bd088e7e8777c2c0aec10a752fd8706470103b89', tx.txid()) - - def test_txid_bitcoin_core_0049(self): - tx = transaction.Transaction('020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000') - self.assertEqual('e2207d1aaf6b74e5d98c2fa326d2dc803b56b30a3f90ce779fa5edb762f38755', tx.txid()) - - def test_txid_bitcoin_core_0050(self): - tx = transaction.Transaction('020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffff00000100000000000000000000000000') - self.assertEqual('f335864f7c12ec7946d2c123deb91eb978574b647af125a414262380c7fbd55c', tx.txid()) - - def test_txid_bitcoin_core_0051(self): - tx = transaction.Transaction('020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffbf7f0100000000000000000000000000') - self.assertEqual('d1edbcde44691e98a7b7f556bd04966091302e29ad9af3c2baac38233667e0d2', tx.txid()) - - def test_txid_bitcoin_core_0052(self): - tx = transaction.Transaction('020000000100010000000000000000000000000000000000000000000000000000000000000000000000000040000100000000000000000000000000') - self.assertEqual('3a13e1b6371c545147173cc4055f0ed73686a9f73f092352fb4b39ca27d360e6', tx.txid()) - - def test_txid_bitcoin_core_0053(self): - tx = transaction.Transaction('020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffff40000100000000000000000000000000') - self.assertEqual('bffda23e40766d292b0510a1b556453c558980c70c94ab158d8286b3413e220d', tx.txid()) - - def test_txid_bitcoin_core_0054(self): - tx = transaction.Transaction('020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffff7f0100000000000000000000000000') - self.assertEqual('01a86c65460325dc6699714d26df512a62a854a669f6ed2e6f369a238e048cfd', tx.txid()) - - def test_txid_bitcoin_core_0055(self): - tx = transaction.Transaction('020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000800100000000000000000000000000') - self.assertEqual('f6d2359c5de2d904e10517d23e7c8210cca71076071bbf46de9fbd5f6233dbf1', tx.txid()) - - def test_txid_bitcoin_core_0056(self): - tx = transaction.Transaction('020000000100010000000000000000000000000000000000000000000000000000000000000000000000feffffff0100000000000000000000000000') - self.assertEqual('19c2b7377229dae7aa3e50142a32fd37cef7171a01682f536e9ffa80c186f6c9', tx.txid()) - - def test_txid_bitcoin_core_0057(self): - tx = transaction.Transaction('020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff0100000000000000000000000000') - self.assertEqual('c9dda3a24cc8a5acb153d1085ecd2fecf6f87083122f8cdecc515b1148d4c40d', tx.txid()) - - def test_txid_bitcoin_core_0058(self): - tx = transaction.Transaction('020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffbf7f0100000000000000000000000000') - self.assertEqual('d1edbcde44691e98a7b7f556bd04966091302e29ad9af3c2baac38233667e0d2', tx.txid()) - - def test_txid_bitcoin_core_0059(self): - tx = transaction.Transaction('020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffff7f0100000000000000000000000000') - self.assertEqual('01a86c65460325dc6699714d26df512a62a854a669f6ed2e6f369a238e048cfd', tx.txid()) - - def test_txid_bitcoin_core_0060(self): - tx = transaction.Transaction('02000000010001000000000000000000000000000000000000000000000000000000000000000000000251b2010000000100000000000000000000000000') - self.assertEqual('4b5e0aae1251a9dc66b4d5f483f1879bf518ea5e1765abc5a9f2084b43ed1ea7', tx.txid()) - - def test_txid_bitcoin_core_0061(self): - tx = transaction.Transaction('0200000001000100000000000000000000000000000000000000000000000000000000000000000000030251b2010000000100000000000000000000000000') - self.assertEqual('5f16eb3ca4581e2dfb46a28140a4ee15f85e4e1c032947da8b93549b53c105f5', tx.txid()) - - def test_txid_bitcoin_core_0062(self): - tx = transaction.Transaction('0100000000010100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff01e8030000000000001976a9144c9c3dfac4207d5d8cb89df5722cb3d712385e3f88ac02483045022100cfb07164b36ba64c1b1e8c7720a56ad64d96f6ef332d3d37f9cb3c96477dc44502200a464cd7a9cf94cd70f66ce4f4f0625ef650052c7afcfe29d7d7e01830ff91ed012103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc7100000000') - self.assertEqual('b2ce556154e5ab22bec0a2f990b2b843f4f4085486c0d2cd82873685c0012004', tx.txid()) - - def test_txid_bitcoin_core_0063(self): - tx = transaction.Transaction('0100000000010100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff01e8030000000000001976a9144c9c3dfac4207d5d8cb89df5722cb3d712385e3f88ac02483045022100aa5d8aa40a90f23ce2c3d11bc845ca4a12acd99cbea37de6b9f6d86edebba8cb022022dedc2aa0a255f74d04c0b76ece2d7c691f9dd11a64a8ac49f62a99c3a05f9d01232103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc71ac00000000') - self.assertEqual('b2ce556154e5ab22bec0a2f990b2b843f4f4085486c0d2cd82873685c0012004', tx.txid()) - - def test_txid_bitcoin_core_0064(self): - tx = transaction.Transaction('01000000000101000100000000000000000000000000000000000000000000000000000000000000000000171600144c9c3dfac4207d5d8cb89df5722cb3d712385e3fffffffff01e8030000000000001976a9144c9c3dfac4207d5d8cb89df5722cb3d712385e3f88ac02483045022100cfb07164b36ba64c1b1e8c7720a56ad64d96f6ef332d3d37f9cb3c96477dc44502200a464cd7a9cf94cd70f66ce4f4f0625ef650052c7afcfe29d7d7e01830ff91ed012103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc7100000000') - self.assertEqual('fee125c6cd142083fabd0187b1dd1f94c66c89ec6e6ef6da1374881c0c19aece', tx.txid()) - - def test_txid_bitcoin_core_0065(self): - tx = transaction.Transaction('0100000000010100010000000000000000000000000000000000000000000000000000000000000000000023220020ff25429251b5a84f452230a3c75fd886b7fc5a7865ce4a7bb7a9d7c5be6da3dbffffffff01e8030000000000001976a9144c9c3dfac4207d5d8cb89df5722cb3d712385e3f88ac02483045022100aa5d8aa40a90f23ce2c3d11bc845ca4a12acd99cbea37de6b9f6d86edebba8cb022022dedc2aa0a255f74d04c0b76ece2d7c691f9dd11a64a8ac49f62a99c3a05f9d01232103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc71ac00000000') - self.assertEqual('5f32557914351fee5f89ddee6c8983d476491d29e601d854e3927299e50450da', tx.txid()) - - def test_txid_bitcoin_core_0066(self): - tx = transaction.Transaction('0100000000010400010000000000000000000000000000000000000000000000000000000000000200000000ffffffff00010000000000000000000000000000000000000000000000000000000000000100000000ffffffff00010000000000000000000000000000000000000000000000000000000000000000000000ffffffff00010000000000000000000000000000000000000000000000000000000000000300000000ffffffff05540b0000000000000151d0070000000000000151840300000000000001513c0f00000000000001512c010000000000000151000248304502210092f4777a0f17bf5aeb8ae768dec5f2c14feabf9d1fe2c89c78dfed0f13fdb86902206da90a86042e252bcd1e80a168c719e4a1ddcc3cebea24b9812c5453c79107e9832103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc71000000000000') - self.assertEqual('07dfa2da3d67c8a2b9f7bd31862161f7b497829d5da90a88ba0f1a905e7a43f7', tx.txid()) - - def test_txid_bitcoin_core_0067(self): - tx = transaction.Transaction('0100000000010300010000000000000000000000000000000000000000000000000000000000000000000000ffffffff00010000000000000000000000000000000000000000000000000000000000000100000000ffffffff00010000000000000000000000000000000000000000000000000000000000000200000000ffffffff03e8030000000000000151d0070000000000000151b80b0000000000000151000248304502210092f4777a0f17bf5aeb8ae768dec5f2c14feabf9d1fe2c89c78dfed0f13fdb86902206da90a86042e252bcd1e80a168c719e4a1ddcc3cebea24b9812c5453c79107e9832103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc710000000000') - self.assertEqual('8a1bddf924d24570074b09d7967c145e54dc4cee7972a92fd975a2ad9e64b424', tx.txid()) - - def test_txid_bitcoin_core_0068(self): - tx = transaction.Transaction('0100000000010300010000000000000000000000000000000000000000000000000000000000000000000000ffffffff00010000000000000000000000000000000000000000000000000000000000000100000000ffffffff00010000000000000000000000000000000000000000000000000000000000000200000000ffffffff0484030000000000000151d0070000000000000151540b0000000000000151c800000000000000015100024730440220699e6b0cfe015b64ca3283e6551440a34f901ba62dd4c72fe1cb815afb2e6761022021cc5e84db498b1479de14efda49093219441adc6c543e5534979605e273d80b032103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc710000000000') - self.assertEqual('f92bb6e4f3ff89172f23ef647f74c13951b665848009abb5862cdf7a0412415a', tx.txid()) - - def test_txid_bitcoin_core_0069(self): - tx = transaction.Transaction('0100000000010300010000000000000000000000000000000000000000000000000000000000000000000000ffffffff00010000000000000000000000000000000000000000000000000000000000000100000000ffffffff00010000000000000000000000000000000000000000000000000000000000000200000000ffffffff03e8030000000000000151d0070000000000000151b80b000000000000015100024730440220699e6b0cfe015b64ca3283e6551440a34f901ba62dd4c72fe1cb815afb2e6761022021cc5e84db498b1479de14efda49093219441adc6c543e5534979605e273d80b032103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc710000000000') - self.assertEqual('8a1bddf924d24570074b09d7967c145e54dc4cee7972a92fd975a2ad9e64b424', tx.txid()) - - def test_txid_bitcoin_core_0070(self): - tx = transaction.Transaction('0100000000010400010000000000000000000000000000000000000000000000000000000000000200000000ffffffff00010000000000000000000000000000000000000000000000000000000000000000000000ffffffff00010000000000000000000000000000000000000000000000000000000000000100000000ffffffff00010000000000000000000000000000000000000000000000000000000000000300000000ffffffff04b60300000000000001519e070000000000000151860b00000000000001009600000000000000015100000248304502210091b32274295c2a3fa02f5bce92fb2789e3fc6ea947fbe1a76e52ea3f4ef2381a022079ad72aefa3837a2e0c033a8652a59731da05fa4a813f4fc48e87c075037256b822103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc710000000000') - self.assertEqual('e657e25fc9f2b33842681613402759222a58cf7dd504d6cdc0b69a0b8c2e7dcb', tx.txid()) - - def test_txid_bitcoin_core_0071(self): - tx = transaction.Transaction('0100000000010300010000000000000000000000000000000000000000000000000000000000000000000000ffffffff00010000000000000000000000000000000000000000000000000000000000000100000000ffffffff00010000000000000000000000000000000000000000000000000000000000000200000000ffffffff03e8030000000000000151d0070000000000000151b80b0000000000000151000248304502210091b32274295c2a3fa02f5bce92fb2789e3fc6ea947fbe1a76e52ea3f4ef2381a022079ad72aefa3837a2e0c033a8652a59731da05fa4a813f4fc48e87c075037256b822103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc710000000000') - self.assertEqual('8a1bddf924d24570074b09d7967c145e54dc4cee7972a92fd975a2ad9e64b424', tx.txid()) - - def test_txid_bitcoin_core_0072(self): - tx = transaction.Transaction('0100000000010300010000000000000000000000000000000000000000000000000000000000000000000000ffffffff00010000000000000000000000000000000000000000000000000000000000000100000000ffffffff00010000000000000000000000000000000000000000000000000000000000000200000000ffffffff04b60300000000000001519e070000000000000151860b0000000000000100960000000000000001510002473044022022fceb54f62f8feea77faac7083c3b56c4676a78f93745adc8a35800bc36adfa022026927df9abcf0a8777829bcfcce3ff0a385fa54c3f9df577405e3ef24ee56479022103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc710000000000') - self.assertEqual('4ede5e22992d43d42ccdf6553fb46e448aa1065ba36423f979605c1e5ab496b8', tx.txid()) - - def test_txid_bitcoin_core_0073(self): - tx = transaction.Transaction('0100000000010300010000000000000000000000000000000000000000000000000000000000000000000000ffffffff00010000000000000000000000000000000000000000000000000000000000000100000000ffffffff00010000000000000000000000000000000000000000000000000000000000000200000000ffffffff03e8030000000000000151d0070000000000000151b80b00000000000001510002473044022022fceb54f62f8feea77faac7083c3b56c4676a78f93745adc8a35800bc36adfa022026927df9abcf0a8777829bcfcce3ff0a385fa54c3f9df577405e3ef24ee56479022103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc710000000000') - self.assertEqual('8a1bddf924d24570074b09d7967c145e54dc4cee7972a92fd975a2ad9e64b424', tx.txid()) - - def test_txid_bitcoin_core_0074(self): - tx = transaction.Transaction('01000000000103000100000000000000000000000000000000000000000000000000000000000000000000000200000000010000000000000000000000000000000000000000000000000000000000000100000000ffffffff000100000000000000000000000000000000000000000000000000000000000002000000000200000003e8030000000000000151d0070000000000000151b80b00000000000001510002473044022022fceb54f62f8feea77faac7083c3b56c4676a78f93745adc8a35800bc36adfa022026927df9abcf0a8777829bcfcce3ff0a385fa54c3f9df577405e3ef24ee56479022103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc710000000000') - self.assertEqual('cfe9f4b19f52b8366860aec0d2b5815e329299b2e9890d477edd7f1182be7ac8', tx.txid()) - - def test_txid_bitcoin_core_0075(self): - tx = transaction.Transaction('0100000000010400010000000000000000000000000000000000000000000000000000000000000200000000ffffffff00010000000000000000000000000000000000000000000000000000000000000000000000ffffffff00010000000000000000000000000000000000000000000000000000000000000100000000ffffffff00010000000000000000000000000000000000000000000000000000000000000300000000ffffffff03e8030000000000000151d0070000000000000151b80b0000000000000151000002483045022100a3cec69b52cba2d2de623eeef89e0ba1606184ea55476c0f8189fda231bc9cbb022003181ad597f7c380a7d1c740286b1d022b8b04ded028b833282e055e03b8efef812103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc710000000000') - self.assertEqual('aee8f4865ca40fa77ff2040c0d7de683bea048b103d42ca406dc07dd29d539cb', tx.txid()) - - def test_txid_bitcoin_core_0076(self): - tx = transaction.Transaction('0100000000010300010000000000000000000000000000000000000000000000000000000000000000000000ffffffff00010000000000000000000000000000000000000000000000000000000000000100000000ffffffff00010000000000000000000000000000000000000000000000000000000000000200000000ffffffff03e8030000000000000151d0070000000000000151b80b00000000000001510002483045022100a3cec69b52cba2d2de623eeef89e0ba1606184ea55476c0f8189fda231bc9cbb022003181ad597f7c380a7d1c740286b1d022b8b04ded028b833282e055e03b8efef812103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc710000000000') - self.assertEqual('8a1bddf924d24570074b09d7967c145e54dc4cee7972a92fd975a2ad9e64b424', tx.txid()) - - def test_txid_bitcoin_core_0077(self): - tx = transaction.Transaction('0100000000010300010000000000000000000000000000000000000000000000000000000000000000000000ffffffff00010000000000000000000000000000000000000000000000000000000000000100000000ffffffff00010000000000000000000000000000000000000000000000000000000000000200000000ffffffff03e8030000000000000151d0070000000000000151b80b00000000000001510002483045022100a3cec69b52cba2d2de623ffffffffff1606184ea55476c0f8189fda231bc9cbb022003181ad597f7c380a7d1c740286b1d022b8b04ded028b833282e055e03b8efef812103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc710000000000') - self.assertEqual('8a1bddf924d24570074b09d7967c145e54dc4cee7972a92fd975a2ad9e64b424', tx.txid()) - - def test_txid_bitcoin_core_0078(self): - tx = transaction.Transaction('0100000000010100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff010000000000000000015102fd08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002755100000000') - self.assertEqual('d93ab9e12d7c29d2adc13d5cdf619d53eec1f36eb6612f55af52be7ba0448e97', tx.txid()) - - def test_txid_bitcoin_core_0079(self): - tx = transaction.Transaction('0100000000010c00010000000000000000000000000000000000000000000000000000000000000000000000ffffffff00010000000000000000000000000000000000000000000000000000000000000100000000ffffffff0001000000000000000000000000000000000000000000000000000000000000020000006a473044022026c2e65b33fcd03b2a3b0f25030f0244bd23cc45ae4dec0f48ae62255b1998a00220463aa3982b718d593a6b9e0044513fd67a5009c2fdccc59992cffc2b167889f4012103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc71ffffffff0001000000000000000000000000000000000000000000000000000000000000030000006a4730440220008bd8382911218dcb4c9f2e75bf5c5c3635f2f2df49b36994fde85b0be21a1a02205a539ef10fb4c778b522c1be852352ea06c67ab74200977c722b0bc68972575a012103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc71ffffffff0001000000000000000000000000000000000000000000000000000000000000040000006b483045022100d9436c32ff065127d71e1a20e319e4fe0a103ba0272743dbd8580be4659ab5d302203fd62571ee1fe790b182d078ecfd092a509eac112bea558d122974ef9cc012c7012103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc71ffffffff0001000000000000000000000000000000000000000000000000000000000000050000006a47304402200e2c149b114ec546015c13b2b464bbcb0cdc5872e6775787527af6cbc4830b6c02207e9396c6979fb15a9a2b96ca08a633866eaf20dc0ff3c03e512c1d5a1654f148012103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc71ffffffff0001000000000000000000000000000000000000000000000000000000000000060000006b483045022100b20e70d897dc15420bccb5e0d3e208d27bdd676af109abbd3f88dbdb7721e6d6022005836e663173fbdfe069f54cde3c2decd3d0ea84378092a5d9d85ec8642e8a41012103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc71ffffffff00010000000000000000000000000000000000000000000000000000000000000700000000ffffffff00010000000000000000000000000000000000000000000000000000000000000800000000ffffffff00010000000000000000000000000000000000000000000000000000000000000900000000ffffffff00010000000000000000000000000000000000000000000000000000000000000a00000000ffffffff00010000000000000000000000000000000000000000000000000000000000000b0000006a47304402206639c6e05e3b9d2675a7f3876286bdf7584fe2bbd15e0ce52dd4e02c0092cdc60220757d60b0a61fc95ada79d23746744c72bac1545a75ff6c2c7cdb6ae04e7e9592012103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc71ffffffff0ce8030000000000000151e9030000000000000151ea030000000000000151eb030000000000000151ec030000000000000151ed030000000000000151ee030000000000000151ef030000000000000151f0030000000000000151f1030000000000000151f2030000000000000151f30300000000000001510248304502210082219a54f61bf126bfc3fa068c6e33831222d1d7138c6faa9d33ca87fd4202d6022063f9902519624254d7c2c8ea7ba2d66ae975e4e229ae38043973ec707d5d4a83012103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc7102473044022017fb58502475848c1b09f162cb1688d0920ff7f142bed0ef904da2ccc88b168f02201798afa61850c65e77889cbcd648a5703b487895517c88f85cdd18b021ee246a012103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc7100000000000247304402202830b7926e488da75782c81a54cd281720890d1af064629ebf2e31bf9f5435f30220089afaa8b455bbeb7d9b9c3fe1ed37d07685ade8455c76472cda424d93e4074a012103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc7102473044022026326fcdae9207b596c2b05921dbac11d81040c4d40378513670f19d9f4af893022034ecd7a282c0163b89aaa62c22ec202cef4736c58cd251649bad0d8139bcbf55012103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc71024730440220214978daeb2f38cd426ee6e2f44131a33d6b191af1c216247f1dd7d74c16d84a02205fdc05529b0bc0c430b4d5987264d9d075351c4f4484c16e91662e90a72aab24012103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc710247304402204a6e9f199dc9672cf2ff8094aaa784363be1eb62b679f7ff2df361124f1dca3302205eeb11f70fab5355c9c8ad1a0700ea355d315e334822fa182227e9815308ee8f012103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc710000000000') - self.assertEqual('b83579db5246aa34255642768167132a0c3d2932b186cd8fb9f5490460a0bf91', tx.txid()) - - def test_txid_bitcoin_core_0080(self): - tx = transaction.Transaction('010000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff01e803000000000000015100000000') - self.assertEqual('2b1e44fff489d09091e5e20f9a01bbc0e8d80f0662e629fd10709cdb4922a874', tx.txid()) - - def test_txid_bitcoin_core_0081(self): - tx = transaction.Transaction('0100000000010200010000000000000000000000000000000000000000000000000000000000000000000000ffffffff00010000000000000000000000000000000000000000000000000000000000000100000000ffffffff01d00700000000000001510003483045022100e078de4e96a0e05dcdc0a414124dd8475782b5f3f0ed3f607919e9a5eeeb22bf02201de309b3a3109adb3de8074b3610d4cf454c49b61247a2779a0bcbf31c889333032103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc711976a9144c9c3dfac4207d5d8cb89df5722cb3d712385e3f88ac00000000') - self.assertEqual('60ebb1dd0b598e20dd0dd462ef6723dd49f8f803b6a2492926012360119cfdd7', tx.txid()) - - def test_txid_bitcoin_core_0082(self): - tx = transaction.Transaction('0100000000010200010000000000000000000000000000000000000000000000000000000000000000000000ffffffff00010000000000000000000000000000000000000000000000000000000000000100000000ffffffff02e8030000000000000151e90300000000000001510247304402206d59682663faab5e4cb733c562e22cdae59294895929ec38d7c016621ff90da0022063ef0af5f970afe8a45ea836e3509b8847ed39463253106ac17d19c437d3d56b832103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc710248304502210085001a820bfcbc9f9de0298af714493f8a37b3b354bfd21a7097c3e009f2018c022050a8b4dbc8155d4d04da2f5cdd575dcf8dd0108de8bec759bd897ea01ecb3af7832103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc7100000000') - self.assertEqual('ed0c7f4163e275f3f77064f471eac861d01fdf55d03aa6858ebd3781f70bf003', tx.txid()) - - def test_txid_bitcoin_core_0083(self): - tx = transaction.Transaction('0100000000010200010000000000000000000000000000000000000000000000000000000000000100000000ffffffff00010000000000000000000000000000000000000000000000000000000000000000000000ffffffff02e9030000000000000151e80300000000000001510248304502210085001a820bfcbc9f9de0298af714493f8a37b3b354bfd21a7097c3e009f2018c022050a8b4dbc8155d4d04da2f5cdd575dcf8dd0108de8bec759bd897ea01ecb3af7832103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc710247304402206d59682663faab5e4cb733c562e22cdae59294895929ec38d7c016621ff90da0022063ef0af5f970afe8a45ea836e3509b8847ed39463253106ac17d19c437d3d56b832103596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc7100000000') - self.assertEqual('f531ddf5ce141e1c8a7fdfc85cc634e5ff686f446a5cf7483e9dbe076b844862', tx.txid()) - - def test_txid_bitcoin_core_0084(self): - tx = transaction.Transaction('01000000020001000000000000000000000000000000000000000000000000000000000000000000004847304402202a0b4b1294d70540235ae033d78e64b4897ec859c7b6f1b2b1d8a02e1d46006702201445e756d2254b0f1dfda9ab8e1e1bc26df9668077403204f32d16a49a36eb6983ffffffff00010000000000000000000000000000000000000000000000000000000000000100000049483045022100acb96cfdbda6dc94b489fd06f2d720983b5f350e31ba906cdbd800773e80b21c02200d74ea5bdf114212b4bbe9ed82c36d2e369e302dff57cb60d01c428f0bd3daab83ffffffff02e8030000000000000151e903000000000000015100000000') - self.assertEqual('98229b70948f1c17851a541f1fe532bf02c408267fecf6d7e174c359ae870654', tx.txid()) - - def test_txid_bitcoin_core_0085(self): - tx = transaction.Transaction('01000000000102fe3dc9208094f3ffd12645477b3dc56f60ec4fa8e6f5d67c565d1c6b9216b36e000000004847304402200af4e47c9b9629dbecc21f73af989bdaa911f7e6f6c2e9394588a3aa68f81e9902204f3fcf6ade7e5abb1295b6774c8e0abd94ae62217367096bc02ee5e435b67da201ffffffff0815cf020f013ed6cf91d29f4202e8a58726b1ac6c79da47c23d1bee0a6925f80000000000ffffffff0100f2052a010000001976a914a30741f8145e5acadf23f751864167f32e0963f788ac000347304402200de66acf4527789bfda55fc5459e214fa6083f936b430a762c629656216805ac0220396f550692cd347171cbc1ef1f51e15282e837bb2b30860dc77c8f78bc8501e503473044022027dc95ad6b740fe5129e7e62a75dd00f291a2aeb1200b84b09d9e3789406b6c002201a9ecd315dd6a0e632ab20bbb98948bc0c6fb204f2c286963bb48517a7058e27034721026dccc749adc2a9d0d89497ac511f760f45c47dc5ed9cf352a58ac706453880aeadab210255a9626aebf5e29c0e6538428ba0d1dcf6ca98ffdf086aa8ced5e0d0215ea465ac00000000') - self.assertEqual('570e3730deeea7bd8bc92c836ccdeb4dd4556f2c33f2a1f7b889a4cb4e48d3ab', tx.txid()) - - def test_txid_bitcoin_core_0086(self): - tx = transaction.Transaction('01000000000102e9b542c5176808107ff1df906f46bb1f2583b16112b95ee5380665ba7fcfc0010000000000ffffffff80e68831516392fcd100d186b3c2c7b95c80b53c77e77c35ba03a66b429a2a1b0000000000ffffffff0280969800000000001976a914de4b231626ef508c9a74a8517e6783c0546d6b2888ac80969800000000001976a9146648a8cd4531e1ec47f35916de8e259237294d1e88ac02483045022100f6a10b8604e6dc910194b79ccfc93e1bc0ec7c03453caaa8987f7d6c3413566002206216229ede9b4d6ec2d325be245c5b508ff0339bf1794078e20bfe0babc7ffe683270063ab68210392972e2eb617b2388771abe27235fd5ac44af8e61693261550447a4c3e39da98ac024730440220032521802a76ad7bf74d0e2c218b72cf0cbc867066e2e53db905ba37f130397e02207709e2188ed7f08f4c952d9d13986da504502b8c3be59617e043552f506c46ff83275163ab68210392972e2eb617b2388771abe27235fd5ac44af8e61693261550447a4c3e39da98ac00000000') - self.assertEqual('e0b8142f587aaa322ca32abce469e90eda187f3851043cc4f2a0fff8c13fc84e', tx.txid()) - - def test_txid_bitcoin_core_0087(self): - tx = transaction.Transaction('0100000000010280e68831516392fcd100d186b3c2c7b95c80b53c77e77c35ba03a66b429a2a1b0000000000ffffffffe9b542c5176808107ff1df906f46bb1f2583b16112b95ee5380665ba7fcfc0010000000000ffffffff0280969800000000001976a9146648a8cd4531e1ec47f35916de8e259237294d1e88ac80969800000000001976a914de4b231626ef508c9a74a8517e6783c0546d6b2888ac024730440220032521802a76ad7bf74d0e2c218b72cf0cbc867066e2e53db905ba37f130397e02207709e2188ed7f08f4c952d9d13986da504502b8c3be59617e043552f506c46ff83275163ab68210392972e2eb617b2388771abe27235fd5ac44af8e61693261550447a4c3e39da98ac02483045022100f6a10b8604e6dc910194b79ccfc93e1bc0ec7c03453caaa8987f7d6c3413566002206216229ede9b4d6ec2d325be245c5b508ff0339bf1794078e20bfe0babc7ffe683270063ab68210392972e2eb617b2388771abe27235fd5ac44af8e61693261550447a4c3e39da98ac00000000') - self.assertEqual('b9ecf72df06b8f98f8b63748d1aded5ffc1a1186f8a302e63cf94f6250e29f4d', tx.txid()) - - def test_txid_bitcoin_core_0088(self): - tx = transaction.Transaction('0100000000010136641869ca081e70f394c6948e8af409e18b619df2ed74aa106c1ca29787b96e0100000023220020a16b5755f7f6f96dbd65f5f0d6ab9418b89af4b1f14a1bb8a09062c35f0dcb54ffffffff0200e9a435000000001976a914389ffce9cd9ae88dcc0631e88a821ffdbe9bfe2688acc0832f05000000001976a9147480a33f950689af511e6e84c138dbbd3c3ee41588ac080047304402206ac44d672dac41f9b00e28f4df20c52eeb087207e8d758d76d92c6fab3b73e2b0220367750dbbe19290069cba53d096f44530e4f98acaa594810388cf7409a1870ce01473044022068c7946a43232757cbdf9176f009a928e1cd9a1a8c212f15c1e11ac9f2925d9002205b75f937ff2f9f3c1246e547e54f62e027f64eefa2695578cc6432cdabce271502473044022059ebf56d98010a932cf8ecfec54c48e6139ed6adb0728c09cbe1e4fa0915302e022007cd986c8fa870ff5d2b3a89139c9fe7e499259875357e20fcbb15571c76795403483045022100fbefd94bd0a488d50b79102b5dad4ab6ced30c4069f1eaa69a4b5a763414067e02203156c6a5c9cf88f91265f5a942e96213afae16d83321c8b31bb342142a14d16381483045022100a5263ea0553ba89221984bd7f0b13613db16e7a70c549a86de0cc0444141a407022005c360ef0ae5a5d4f9f2f87a56c1546cc8268cab08c73501d6b3be2e1e1a8a08824730440220525406a1482936d5a21888260dc165497a90a15669636d8edca6b9fe490d309c022032af0c646a34a44d1f4576bf6a4a74b67940f8faa84c7df9abe12a01a11e2b4783cf56210307b8ae49ac90a048e9b53357a2354b3334e9c8bee813ecb98e99a7e07e8c3ba32103b28f0c28bfab54554ae8c658ac5c3e0ce6e79ad336331f78c428dd43eea8449b21034b8113d703413d57761b8b9781957b8c0ac1dfe69f492580ca4195f50376ba4a21033400f6afecb833092a9a21cfdf1ed1376e58c5d1f47de74683123987e967a8f42103a6d48b1131e94ba04d9737d61acdaa1322008af9602b3b14862c07a1789aac162102d8b661b0b3302ee2f162b09e07a55ad5dfbe673a9f01d9f0c19617681024306b56ae00000000') - self.assertEqual('27eae69aff1dd4388c0fa05cbbfe9a3983d1b0b5811ebcd4199b86f299370aac', tx.txid()) - - def test_txid_bitcoin_core_0089(self): - tx = transaction.Transaction('010000000169c12106097dc2e0526493ef67f21269fe888ef05c7a3a5dacab38e1ac8387f1581b0000b64830450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e0121037a3fb04bcdb09eba90f69961ba1692a3528e45e67c85b200df820212d7594d334aad4830450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e01ffffffff0101000000000000000000000000') - self.assertEqual('22d020638e3b7e1f2f9a63124ac76f5e333c74387862e3675f64b25e960d3641', tx.txid()) - - def test_txid_bitcoin_core_0090(self): - tx = transaction.Transaction('0100000000010169c12106097dc2e0526493ef67f21269fe888ef05c7a3a5dacab38e1ac8387f14c1d000000ffffffff01010000000000000000034830450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e012102a9781d66b61fb5a7ef00ac5ad5bc6ffc78be7b44a566e3c87870e1079368df4c4aad4830450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e0100000000') - self.assertEqual('2862bc0c69d2af55da7284d1b16a7cddc03971b77e5a97939cca7631add83bf5', tx.txid()) - - def test_txid_bitcoin_core_0091(self): - tx = transaction.Transaction('01000000019275cb8d4a485ce95741c013f7c0d28722160008021bb469a11982d47a662896581b0000fd6f01004830450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e0148304502205286f726690b2e9b0207f0345711e63fa7012045b9eb0f19c2458ce1db90cf43022100e89f17f86abc5b149eba4115d4f128bcf45d77fb3ecdd34f594091340c03959601522102cd74a2809ffeeed0092bc124fd79836706e41f048db3f6ae9df8708cefb83a1c2102e615999372426e46fd107b76eaf007156a507584aa2cc21de9eee3bdbd26d36c4c9552af4830450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e0148304502205286f726690b2e9b0207f0345711e63fa7012045b9eb0f19c2458ce1db90cf43022100e89f17f86abc5b149eba4115d4f128bcf45d77fb3ecdd34f594091340c0395960175ffffffff0101000000000000000000000000') - self.assertEqual('1aebf0c98f01381765a8c33d688f8903e4d01120589ac92b78f1185dc1f4119c', tx.txid()) - - def test_txid_bitcoin_core_0092(self): - tx = transaction.Transaction('010000000001019275cb8d4a485ce95741c013f7c0d28722160008021bb469a11982d47a6628964c1d000000ffffffff0101000000000000000007004830450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e0148304502205286f726690b2e9b0207f0345711e63fa7012045b9eb0f19c2458ce1db90cf43022100e89f17f86abc5b149eba4115d4f128bcf45d77fb3ecdd34f594091340c0395960101022102966f109c54e85d3aee8321301136cedeb9fc710fdef58a9de8a73942f8e567c021034ffc99dd9a79dd3cb31e2ab3e0b09e0e67db41ac068c625cd1f491576016c84e9552af4830450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e0148304502205286f726690b2e9b0207f0345711e63fa7012045b9eb0f19c2458ce1db90cf43022100e89f17f86abc5b149eba4115d4f128bcf45d77fb3ecdd34f594091340c039596017500000000') - self.assertEqual('45d17fb7db86162b2b6ca29fa4e163acf0ef0b54110e49b819bda1f948d423a3', tx.txid()) - -# txns from Bitcoin Core ends <--- - class NetworkMock(object): diff --git a/lib/tests/test_util.py b/lib/tests/test_util.py index ea4476ab029c..747374cc13aa 100644 --- a/lib/tests/test_util.py +++ b/lib/tests/test_util.py @@ -23,48 +23,48 @@ def _do_test_parse_URI(self, uri, expected): self.assertEqual(expected, result) def test_parse_URI_address(self): - self._do_test_parse_URI('bitcoin:15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma', - {'address': '15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma'}) + self._do_test_parse_URI('zcoin:LectrumELqJWMECz7W2iarBpT4VvAPqwAv', + {'address': 'LectrumELqJWMECz7W2iarBpT4VvAPqwAv'}) def test_parse_URI_only_address(self): - self._do_test_parse_URI('15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma', - {'address': '15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma'}) + self._do_test_parse_URI('LectrumELqJWMECz7W2iarBpT4VvAPqwAv', + {'address': 'LectrumELqJWMECz7W2iarBpT4VvAPqwAv'}) def test_parse_URI_address_label(self): - self._do_test_parse_URI('bitcoin:15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma?label=electrum%20test', - {'address': '15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma', 'label': 'electrum test'}) + self._do_test_parse_URI('zcoin:LectrumELqJWMECz7W2iarBpT4VvAPqwAv?label=electrum%20test', + {'address': 'LectrumELqJWMECz7W2iarBpT4VvAPqwAv', 'label': 'electrum test'}) def test_parse_URI_address_message(self): - self._do_test_parse_URI('bitcoin:15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma?message=electrum%20test', - {'address': '15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma', 'message': 'electrum test', 'memo': 'electrum test'}) + self._do_test_parse_URI('zcoin:LectrumELqJWMECz7W2iarBpT4VvAPqwAv?message=electrum%20test', + {'address': 'LectrumELqJWMECz7W2iarBpT4VvAPqwAv', 'message': 'electrum test', 'memo': 'electrum test'}) def test_parse_URI_address_amount(self): - self._do_test_parse_URI('bitcoin:15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma?amount=0.0003', - {'address': '15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma', 'amount': 30000}) + self._do_test_parse_URI('zcoin:LectrumELqJWMECz7W2iarBpT4VvAPqwAv?amount=0.0003', + {'address': 'LectrumELqJWMECz7W2iarBpT4VvAPqwAv', 'amount': 30000}) def test_parse_URI_address_request_url(self): - self._do_test_parse_URI('bitcoin:15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma?r=http://domain.tld/page?h%3D2a8628fc2fbe', - {'address': '15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma', 'r': 'http://domain.tld/page?h=2a8628fc2fbe'}) + self._do_test_parse_URI('zcoin:LectrumELqJWMECz7W2iarBpT4VvAPqwAv?r=http://domain.tld/page?h%3D2a8628fc2fbe', + {'address': 'LectrumELqJWMECz7W2iarBpT4VvAPqwAv', 'r': 'http://domain.tld/page?h=2a8628fc2fbe'}) def test_parse_URI_ignore_args(self): - self._do_test_parse_URI('bitcoin:15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma?test=test', - {'address': '15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma', 'test': 'test'}) + self._do_test_parse_URI('zcoin:LectrumELqJWMECz7W2iarBpT4VvAPqwAv?test=test', + {'address': 'LectrumELqJWMECz7W2iarBpT4VvAPqwAv', 'test': 'test'}) def test_parse_URI_multiple_args(self): - self._do_test_parse_URI('bitcoin:15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma?amount=0.00004&label=electrum-test&message=electrum%20test&test=none&r=http://domain.tld/page', - {'address': '15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma', 'amount': 4000, 'label': 'electrum-test', 'message': u'electrum test', 'memo': u'electrum test', 'r': 'http://domain.tld/page', 'test': 'none'}) + self._do_test_parse_URI('zcoin:LectrumELqJWMECz7W2iarBpT4VvAPqwAv?amount=0.00004&label=electrum-test&message=electrum%20test&test=none&r=http://domain.tld/page', + {'address': 'LectrumELqJWMECz7W2iarBpT4VvAPqwAv', 'amount': 4000, 'label': 'electrum-test', 'message': u'electrum test', 'memo': u'electrum test', 'r': 'http://domain.tld/page', 'test': 'none'}) def test_parse_URI_no_address_request_url(self): - self._do_test_parse_URI('bitcoin:?r=http://domain.tld/page?h%3D2a8628fc2fbe', + self._do_test_parse_URI('zcoin:?r=http://domain.tld/page?h%3D2a8628fc2fbe', {'r': 'http://domain.tld/page?h=2a8628fc2fbe'}) def test_parse_URI_invalid_address(self): - self.assertRaises(BaseException, parse_URI, 'bitcoin:invalidaddress') + self.assertRaises(BaseException, parse_URI, 'zcoin:invalidaddress') def test_parse_URI_invalid(self): - self.assertRaises(BaseException, parse_URI, 'notbitcoin:15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma') + self.assertRaises(BaseException, parse_URI, 'notzcoin:LectrumELqJWMECz7W2iarBpT4VvAPqwAv') def test_parse_URI_parameter_polution(self): - self.assertRaises(Exception, parse_URI, 'bitcoin:15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma?amount=0.0003&label=test&amount=30.0') + self.assertRaises(Exception, parse_URI, 'zcoin:LectrumELqJWMECz7W2iarBpT4VvAPqwAv?amount=0.0003&label=test&amount=30.0') diff --git a/lib/tests/test_wallet_vertical.py b/lib/tests/test_wallet_vertical.py index 4a95cb119937..12735fb4a728 100644 --- a/lib/tests/test_wallet_vertical.py +++ b/lib/tests/test_wallet_vertical.py @@ -6,8 +6,6 @@ import lib.storage as storage import lib.wallet as wallet -from plugins.trustedcoin import trustedcoin - # TODO passphrase/seed_extension class TestWalletKeystoreAddressIntegrity(unittest.TestCase): @@ -66,8 +64,8 @@ def test_electrum_seed_standard(self, mock_write): w = self._create_standard_wallet(ks) self.assertEqual(w.txin_type, 'p2pkh') - self.assertEqual(w.get_receiving_addresses()[0], '1NNkttn1YvVGdqBW4PR6zvc3Zx3H5owKRf') - self.assertEqual(w.get_change_addresses()[0], '1KSezYMhAJMWqFbVFB2JshYg69UpmEXR4D') + self.assertEqual(w.get_receiving_addresses()[0], 'LgbiA75qdajKtdsfEXQQGwfonAQZEEEbjS') + self.assertEqual(w.get_change_addresses()[0], 'LdfcFkfXExba64HeRK1c9icSJMr6tMKyfv') @mock.patch.object(storage.WalletStorage, '_write') def test_electrum_seed_segwit(self, mock_write): @@ -85,8 +83,8 @@ def test_electrum_seed_segwit(self, mock_write): w = self._create_standard_wallet(ks) self.assertEqual(w.txin_type, 'p2wpkh') - self.assertEqual(w.get_receiving_addresses()[0], 'bc1q3g5tmkmlvxryhh843v4dz026avatc0zzr6h3af') - self.assertEqual(w.get_change_addresses()[0], 'bc1qdy94n2q5qcp0kg7v9yzwe6wvfkhnvyzje7nx2p') + self.assertEqual(w.get_receiving_addresses()[0], 'xzc1q3g5tmkmlvxryhh843v4dz026avatc0zz8xd49e') + self.assertEqual(w.get_change_addresses()[0], 'xzc1qdy94n2q5qcp0kg7v9yzwe6wvfkhnvyzjazfzj3') @mock.patch.object(storage.WalletStorage, '_write') def test_electrum_seed_old(self, mock_write): @@ -103,41 +101,8 @@ def test_electrum_seed_old(self, mock_write): w = self._create_standard_wallet(ks) self.assertEqual(w.txin_type, 'p2pkh') - self.assertEqual(w.get_receiving_addresses()[0], '1FJEEB8ihPMbzs2SkLmr37dHyRFzakqUmo') - self.assertEqual(w.get_change_addresses()[0], '1KRW8pH6HFHZh889VDq6fEKvmrsmApwNfe') - - @mock.patch.object(storage.WalletStorage, '_write') - def test_electrum_seed_2fa(self, mock_write): - seed_words = 'kiss live scene rude gate step hip quarter bunker oxygen motor glove' - self.assertEqual(bitcoin.seed_type(seed_words), '2fa') - - xprv1, xpub1, xprv2, xpub2 = trustedcoin.TrustedCoinPlugin.xkeys_from_seed(seed_words, '') - - ks1 = keystore.from_xprv(xprv1) - self.assertTrue(isinstance(ks1, keystore.BIP32_KeyStore)) - self.assertEqual(ks1.xprv, 'xprv9uraXy9F3HP7i8QDqwNTBiD8Jf4bPD4Epif8cS8qbUbgeidUesyZpKmzfcSeHutsGfFnjgih7kzwTB5UQVRNB5LoXaNc8pFusKYx3KVVvYR') - self.assertEqual(ks1.xpub, 'xpub68qvwUg8sewQvcUgwxuTYr9rrgu5nfn6BwajQpYT9p8fXWxdCRHpN86UWruWJAD1ede8Sv8ERrTa22Gyc4SBfm7zFpcyoVWVBKCVwnw6s1J') - self.assertEqual(ks1.xpub, xpub1) - - ks2 = keystore.from_xprv(xprv2) - self.assertTrue(isinstance(ks2, keystore.BIP32_KeyStore)) - self.assertEqual(ks2.xprv, 'xprv9uraXy9F3HP7kKSiRAvLV7Nrjj7YzspDys7dvGLLu4tLZT49CEBxPWp88dHhVxvZ69SHrPQMUCWjj4Ka2z9kNvs1HAeEf3extGGeSWqEVqf') - self.assertEqual(ks2.xpub, 'xpub68qvwUg8sewQxoXBXCTLrFKbHkx3QLY5M63EiejxTQRKSFPHjmWCwK8byvZMM2wZNYA3SmxXoma3M1zxhGESHZwtB7SwrxRgKXAG8dCD2eS') - self.assertEqual(ks2.xpub, xpub2) - - long_user_id, short_id = trustedcoin.get_user_id( - {'x1/': {'xpub': xpub1}, - 'x2/': {'xpub': xpub2}}) - xpub3 = trustedcoin.make_xpub(trustedcoin.signing_xpub, long_user_id) - ks3 = keystore.from_xpub(xpub3) - self._check_xpub_keystore_sanity(ks3) - self.assertTrue(isinstance(ks3, keystore.BIP32_KeyStore)) - - w = self._create_multisig_wallet(ks1, ks2, ks3) - self.assertEqual(w.txin_type, 'p2sh') - - self.assertEqual(w.get_receiving_addresses()[0], '35L8XmCDoEBKeaWRjvmZvoZvhp8BXMMMPV') - self.assertEqual(w.get_change_addresses()[0], '3PeZEcumRqHSPNN43hd4yskGEBdzXgY8Cy') + self.assertEqual(w.get_receiving_addresses()[0], 'LZXBVPSYn3bfFfibvUm9K8h4BddGhUE4Fe') + self.assertEqual(w.get_change_addresses()[0], 'LdeTQ2avMuXcwvpJfMpPwFPgz5F3Fnbsdu') @mock.patch.object(storage.WalletStorage, '_write') def test_bip39_seed_bip44_standard(self, mock_write): @@ -154,8 +119,8 @@ def test_bip39_seed_bip44_standard(self, mock_write): w = self._create_standard_wallet(ks) self.assertEqual(w.txin_type, 'p2pkh') - self.assertEqual(w.get_receiving_addresses()[0], '16j7Dqk3Z9DdTdBtHcCVLaNQy9MTgywUUo') - self.assertEqual(w.get_change_addresses()[0], '1GG5bVeWgAp5XW7JLCphse14QaC4qiHyWn') + self.assertEqual(w.get_receiving_addresses()[0], 'LQx4V43sdoTgiRt3TkBncbSBBMijtP3jg3') + self.assertEqual(w.get_change_addresses()[0], 'LaV2rhxLkq48nJoTWLp19f4pcnZLtJeLoB') @mock.patch.object(storage.WalletStorage, '_write') def test_bip39_seed_bip49_p2sh_segwit(self, mock_write): @@ -172,8 +137,8 @@ def test_bip39_seed_bip49_p2sh_segwit(self, mock_write): w = self._create_standard_wallet(ks) self.assertEqual(w.txin_type, 'p2wpkh-p2sh') - self.assertEqual(w.get_receiving_addresses()[0], '35ohQTdNykjkF1Mn9nAVEFjupyAtsPAK1W') - self.assertEqual(w.get_change_addresses()[0], '3KaBTcviBLEJajTEMstsA2GWjYoPzPK7Y7') + self.assertEqual(w.get_receiving_addresses()[0], 'MC1qiM3LvsbB3WdgFf9q3tzK9fmLrX1SQs') + self.assertEqual(w.get_change_addresses()[0], 'MRnKmWLg8T5jPEj8TktCyfWv4FPqyFBS3V') @mock.patch.object(storage.WalletStorage, '_write') def test_bip39_seed_bip84_native_segwit(self, mock_write): @@ -191,8 +156,8 @@ def test_bip39_seed_bip84_native_segwit(self, mock_write): w = self._create_standard_wallet(ks) self.assertEqual(w.txin_type, 'p2wpkh') - self.assertEqual(w.get_receiving_addresses()[0], 'bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu') - self.assertEqual(w.get_change_addresses()[0], 'bc1q8c6fshw2dlwun7ekn9qwf37cu2rn755upcp6el') + self.assertEqual(w.get_receiving_addresses()[0], 'xzc1qcr8te4kr609gcawutmrza0j4xv80jy8z4nqduv') + self.assertEqual(w.get_change_addresses()[0], 'xzc1q8c6fshw2dlwun7ekn9qwf37cu2rn755u9ym7p0') @mock.patch.object(storage.WalletStorage, '_write') def test_electrum_multisig_seed_standard(self, mock_write): @@ -213,8 +178,8 @@ def test_electrum_multisig_seed_standard(self, mock_write): w = self._create_multisig_wallet(ks1, ks2) self.assertEqual(w.txin_type, 'p2sh') - self.assertEqual(w.get_receiving_addresses()[0], '32ji3QkAgXNz6oFoRfakyD3ys1XXiERQYN') - self.assertEqual(w.get_change_addresses()[0], '36XWwEHrrVCLnhjK5MrVVGmUHghr9oWTN1') + self.assertEqual(w.get_receiving_addresses()[0], 'M8wrMJA8deEQuJXhXYa6nrJPBi7yiLnCN5') + self.assertEqual(w.get_change_addresses()[0], 'MCjfF7hpoc3mbD1DBEqqJv1scPJJDhtoMG') @mock.patch.object(storage.WalletStorage, '_write') def test_electrum_multisig_seed_segwit(self, mock_write): @@ -235,8 +200,8 @@ def test_electrum_multisig_seed_segwit(self, mock_write): w = self._create_multisig_wallet(ks1, ks2) self.assertEqual(w.txin_type, 'p2wsh') - self.assertEqual(w.get_receiving_addresses()[0], 'bc1qvzezdcv6vs5h45ugkavp896e0nde5c5lg5h0fwe2xyfhnpkxq6gq7pnwlc') - self.assertEqual(w.get_change_addresses()[0], 'bc1qxqf840dqswcmu7a8v82fj6ej0msx08flvuy6kngr7axstjcaq6us9hrehd') + self.assertEqual(w.get_receiving_addresses()[0], 'xzc1qvzezdcv6vs5h45ugkavp896e0nde5c5lg5h0fwe2xyfhnpkxq6gqa9a79a') + self.assertEqual(w.get_change_addresses()[0], 'xzc1qxqf840dqswcmu7a8v82fj6ej0msx08flvuy6kngr7axstjcaq6usxndfdg') @mock.patch.object(storage.WalletStorage, '_write') def test_bip39_multisig_seed_bip45_standard(self, mock_write): @@ -257,8 +222,8 @@ def test_bip39_multisig_seed_bip45_standard(self, mock_write): w = self._create_multisig_wallet(ks1, ks2) self.assertEqual(w.txin_type, 'p2sh') - self.assertEqual(w.get_receiving_addresses()[0], '3JPTQ2nitVxXBJ1yhMeDwH6q417UifE3bN') - self.assertEqual(w.get_change_addresses()[0], '3FGyDuxgUDn2pSZe5xAJH1yUwSdhzDMyEE') + self.assertEqual(w.get_receiving_addresses()[0], 'MQbbhvCgqcowyoHsoEdZkvMENhhvktToCi') + self.assertEqual(w.get_change_addresses()[0], 'MMV7XoNeRLdTcwqYBq9e6fDtG9E9uHciwz') @mock.patch.object(storage.WalletStorage, '_write') def test_bip39_multisig_seed_p2sh_segwit(self, mock_write): @@ -278,5 +243,5 @@ def test_bip39_multisig_seed_p2sh_segwit(self, mock_write): w = self._create_multisig_wallet(ks1, ks2) self.assertEqual(w.txin_type, 'p2wsh-p2sh') - self.assertEqual(w.get_receiving_addresses()[0], '35LeC45QgCVeRor1tJD6LiDgPbybBXisns') - self.assertEqual(w.get_change_addresses()[0], '39RhtDchc6igmx5tyoimhojFL1ZbQBrXa6') + self.assertEqual(w.get_receiving_addresses()[0], 'MBYnVwVNdKM5EK7uzBCSAMU5iJa3ATHxCK') + self.assertEqual(w.get_change_addresses()[0], 'MFdrC72fZDa7aTMo5gi7XSyeeiA3P9VtUM') diff --git a/lib/transaction.py b/lib/transaction.py index 4ee57d4e1d2a..5688dd911367 100644 --- a/lib/transaction.py +++ b/lib/transaction.py @@ -32,8 +32,6 @@ from . import bitcoin from .bitcoin import * import struct -import traceback -import sys # # Workalike python implementation of Bitcoin's CDataStream class. @@ -305,8 +303,7 @@ def parse_scriptSig(d, _bytes): decoded = [ x for x in script_GetOp(_bytes) ] except Exception as e: # coinbase transactions raise an exception - print_error("parse_scriptSig: cannot find address in input script (coinbase?)", - bh2u(_bytes)) + print_error("cannot find address in input script", bh2u(_bytes)) return match = [ opcodes.OP_PUSHDATA4 ] @@ -337,9 +334,9 @@ def parse_scriptSig(d, _bytes): d['pubkeys'] = ["(pubkey)"] return - # p2pkh TxIn transactions push a signature - # (71-73 bytes) and then their public key - # (33 or 65 bytes) onto the stack: + # non-generated TxIn transactions push a signature + # (seventy-something bytes) and then their public key + # (65 bytes) onto the stack: match = [ opcodes.OP_PUSHDATA4, opcodes.OP_PUSHDATA4 ] if match_decoded(decoded, match): sig = bh2u(decoded[0][1]) @@ -348,8 +345,7 @@ def parse_scriptSig(d, _bytes): signatures = parse_sig([sig]) pubkey, address = xpubkey_to_address(x_pubkey) except: - print_error("parse_scriptSig: cannot find address in input script (p2pkh?)", - bh2u(_bytes)) + print_error("cannot find address in input script", bh2u(_bytes)) return d['type'] = 'p2pkh' d['signatures'] = signatures @@ -361,41 +357,30 @@ def parse_scriptSig(d, _bytes): # p2sh transaction, m of n match = [ opcodes.OP_0 ] + [ opcodes.OP_PUSHDATA4 ] * (len(decoded) - 1) - if match_decoded(decoded, match): - x_sig = [bh2u(x[1]) for x in decoded[1:-1]] - try: - m, n, x_pubkeys, pubkeys, redeemScript = parse_redeemScript(decoded[-1][1]) - except NotRecognizedRedeemScript: - print_error("parse_scriptSig: cannot find address in input script (p2sh?)", - bh2u(_bytes)) - # we could still guess: - # d['address'] = hash160_to_p2sh(hash_160(decoded[-1][1])) - return - # write result in d - d['type'] = 'p2sh' - d['num_sig'] = m - d['signatures'] = parse_sig(x_sig) - d['x_pubkeys'] = x_pubkeys - d['pubkeys'] = pubkeys - d['redeemScript'] = redeemScript - d['address'] = hash160_to_p2sh(hash_160(bfh(redeemScript))) + if not match_decoded(decoded, match): + print_error("cannot find address in input script", bh2u(_bytes)) return - - print_error("parse_scriptSig: cannot find address in input script (unknown)", - bh2u(_bytes)) + x_sig = [bh2u(x[1]) for x in decoded[1:-1]] + m, n, x_pubkeys, pubkeys, redeemScript = parse_redeemScript(decoded[-1][1]) + # write result in d + d['type'] = 'p2sh' + d['num_sig'] = m + d['signatures'] = parse_sig(x_sig) + d['x_pubkeys'] = x_pubkeys + d['pubkeys'] = pubkeys + d['redeemScript'] = redeemScript + d['address'] = hash160_to_p2sh(hash_160(bfh(redeemScript))) def parse_redeemScript(s): dec2 = [ x for x in script_GetOp(s) ] - try: - m = dec2[0][0] - opcodes.OP_1 + 1 - n = dec2[-2][0] - opcodes.OP_1 + 1 - except IndexError: - raise NotRecognizedRedeemScript() + m = dec2[0][0] - opcodes.OP_1 + 1 + n = dec2[-2][0] - opcodes.OP_1 + 1 op_m = opcodes.OP_1 + m - 1 op_n = opcodes.OP_1 + n - 1 match_multisig = [ op_m ] + [opcodes.OP_PUSHDATA4]*n + [ op_n, opcodes.OP_CHECKMULTISIG ] if not match_decoded(dec2, match_multisig): + print_error("cannot find address in input script", bh2u(s)) raise NotRecognizedRedeemScript() x_pubkeys = [bh2u(x[1]) for x in dec2[1:-2]] pubkeys = [safe_parse_pubkey(x) for x in x_pubkeys] @@ -451,11 +436,7 @@ def parse_input(vds): d['num_sig'] = 0 if scriptSig: d['scriptSig'] = bh2u(scriptSig) - try: - parse_scriptSig(d, scriptSig) - except BaseException: - traceback.print_exc(file=sys.stderr) - print_error('failed to parse scriptSig', bh2u(scriptSig)) + parse_scriptSig(d, scriptSig) else: d['scriptSig'] = '' @@ -484,40 +465,25 @@ def parse_witness(vds, txin): # between p2wpkh and p2wsh; we do this based on number of witness items, # hence (FIXME) p2wsh with n==2 (maybe n==1 ?) will probably fail. # If v==0 and n==2, we need parent scriptPubKey to distinguish between p2wpkh and p2wsh. - try: - if txin['type'] == 'coinbase': - pass - elif txin['type'] == 'p2wsh-p2sh' or n > 2: - try: - m, n, x_pubkeys, pubkeys, witnessScript = parse_redeemScript(bfh(w[-1])) - except NotRecognizedRedeemScript: - raise UnknownTxinType() - txin['signatures'] = parse_sig(w[1:-1]) - txin['num_sig'] = m - txin['x_pubkeys'] = x_pubkeys - txin['pubkeys'] = pubkeys - txin['witnessScript'] = witnessScript - if not txin.get('scriptSig'): # native segwit script - txin['type'] = 'p2wsh' - txin['address'] = bitcoin.script_to_p2wsh(txin['witnessScript']) - elif txin['type'] == 'p2wpkh-p2sh' or n == 2: - txin['num_sig'] = 1 - txin['x_pubkeys'] = [w[1]] - txin['pubkeys'] = [safe_parse_pubkey(w[1])] - txin['signatures'] = parse_sig([w[0]]) - if not txin.get('scriptSig'): # native segwit script - txin['type'] = 'p2wpkh' - txin['address'] = bitcoin.public_key_to_p2wpkh(bfh(txin['pubkeys'][0])) - else: + if txin['type'] == 'coinbase': + pass + elif txin['type'] == 'p2wsh-p2sh' or n > 2: + try: + m, n, x_pubkeys, pubkeys, witnessScript = parse_redeemScript(bfh(w[-1])) + except NotRecognizedRedeemScript: raise UnknownTxinType() - except UnknownTxinType: - txin['type'] = 'unknown' - # FIXME: GUI might show 'unknown' address (e.g. for a non-multisig p2wsh) - except BaseException: - txin['type'] = 'unknown' - traceback.print_exc(file=sys.stderr) - print_error('failed to parse witness', txin.get('witness')) - + txin['signatures'] = parse_sig(w[1:-1]) + txin['num_sig'] = m + txin['x_pubkeys'] = x_pubkeys + txin['pubkeys'] = pubkeys + txin['witnessScript'] = witnessScript + elif txin['type'] == 'p2wpkh-p2sh' or n == 2: + txin['num_sig'] = 1 + txin['x_pubkeys'] = [w[1]] + txin['pubkeys'] = [safe_parse_pubkey(w[1])] + txin['signatures'] = parse_sig([w[0]]) + else: + raise UnknownTxinType() def parse_output(vds, i): d = {} @@ -547,7 +513,20 @@ def deserialize(raw): if is_segwit: for i in range(n_vin): txin = d['inputs'][i] - parse_witness(vds, txin) + try: + parse_witness(vds, txin) + except UnknownTxinType: + txin['type'] = 'unknown' + # FIXME: GUI might show 'unknown' address (e.g. for a non-multisig p2wsh) + continue + # segwit-native script + if not txin.get('scriptSig'): + if txin['num_sig'] == 1: + txin['type'] = 'p2wpkh' + txin['address'] = bitcoin.public_key_to_p2wpkh(bfh(txin['pubkeys'][0])) + else: + txin['type'] = 'p2wsh' + txin['address'] = bitcoin.script_to_p2wsh(txin['witnessScript']) d['lockTime'] = vds.read_uint32() return d @@ -818,14 +797,6 @@ def get_preimage_script(self, txin): def serialize_outpoint(self, txin): return bh2u(bfh(txin['prevout_hash'])[::-1]) + int_to_hex(txin['prevout_n'], 4) - @classmethod - def get_outpoint_from_txin(cls, txin): - if txin['type'] == 'coinbase': - return None - prevout_hash = txin['prevout_hash'] - prevout_n = txin['prevout_n'] - return prevout_hash + ':%d' % prevout_n - @classmethod def serialize_input(self, txin, script): # Prev hash and index diff --git a/lib/util.py b/lib/util.py index 60723810ac0c..dc305eca91fb 100644 --- a/lib/util.py +++ b/lib/util.py @@ -40,7 +40,7 @@ def inv_dict(d): return {v: k for k, v in d.items()} -base_units = {'BTC':8, 'mBTC':5, 'uBTC':2} +base_units = {'XZC':8, 'mXZC':5, 'uXZC':2} fee_levels = [_('Within 25 blocks'), _('Within 10 blocks'), _('Within 5 blocks'), _('Within 2 blocks'), _('In the next block')] def normalize_version(v): @@ -58,19 +58,6 @@ class InvalidPassword(Exception): def __str__(self): return _("Incorrect password") - -class FileImportFailed(Exception): - def __str__(self): - return _("Failed to import file.") - - -class FileImportFailedEncrypted(FileImportFailed): - def __str__(self): - return (_('Failed to import file.') + ' ' + - _('Perhaps it is encrypted...') + '\n' + - _('Importing encrypted files is not supported.')) - - # Throw this exception to unwind the stack like when an error occurs. # However unlike other exceptions the user won't be informed. class UserCancelled(Exception): @@ -250,7 +237,7 @@ def android_data_dir(): return PythonActivity.mActivity.getFilesDir().getPath() + '/data' def android_headers_dir(): - d = android_ext_dir() + '/org.electrum.electrum' + d = android_ext_dir() + '/org.electrum_xzc.electrum_xzc' if not os.path.exists(d): os.mkdir(d) return d @@ -259,7 +246,7 @@ def android_check_data_dir(): """ if needed, move old directory to sandbox """ ext_dir = android_ext_dir() data_dir = android_data_dir() - old_electrum_dir = ext_dir + '/electrum' + old_electrum_dir = ext_dir + '/electrum-xzc' if not os.path.exists(data_dir) and os.path.exists(old_electrum_dir): import shutil new_headers_path = android_headers_dir() + '/blockchain_headers' @@ -340,11 +327,11 @@ def user_dir(): if 'ANDROID_DATA' in os.environ: return android_check_data_dir() elif os.name == 'posix': - return os.path.join(os.environ["HOME"], ".electrum") + return os.path.join(os.environ["HOME"], ".electrum-xzc") elif "APPDATA" in os.environ: - return os.path.join(os.environ["APPDATA"], "Electrum") + return os.path.join(os.environ["APPDATA"], "Electrum-XZC") elif "LOCALAPPDATA" in os.environ: - return os.path.join(os.environ["LOCALAPPDATA"], "Electrum") + return os.path.join(os.environ["LOCALAPPDATA"], "Electrum-XZC") else: #raise Exception("No home directory found in environment variables.") return @@ -444,41 +431,23 @@ def time_difference(distance_in_time, include_seconds): return "over %d years" % (round(distance_in_minutes / 525600)) mainnet_block_explorers = { - 'Biteasy.com': ('https://www.biteasy.com/blockchain/', - {'tx': 'transactions/', 'addr': 'addresses/'}), - 'Bitflyer.jp': ('https://chainflyer.bitflyer.jp/', - {'tx': 'Transaction/', 'addr': 'Address/'}), - 'Blockchain.info': ('https://blockchain.info/', - {'tx': 'tx/', 'addr': 'address/'}), - 'blockchainbdgpzk.onion': ('https://blockchainbdgpzk.onion/', - {'tx': 'tx/', 'addr': 'address/'}), - 'Blockr.io': ('https://btc.blockr.io/', - {'tx': 'tx/info/', 'addr': 'address/info/'}), - 'Blocktrail.com': ('https://www.blocktrail.com/BTC/', - {'tx': 'tx/', 'addr': 'address/'}), - 'BTC.com': ('https://chain.btc.com/', - {'tx': 'tx/', 'addr': 'address/'}), - 'Chain.so': ('https://www.chain.so/', - {'tx': 'tx/BTC/', 'addr': 'address/BTC/'}), - 'Insight.is': ('https://insight.bitpay.com/', - {'tx': 'tx/', 'addr': 'address/'}), - 'TradeBlock.com': ('https://tradeblock.com/blockchain/', - {'tx': 'tx/', 'addr': 'address/'}), - 'BlockCypher.com': ('https://live.blockcypher.com/btc/', - {'tx': 'tx/', 'addr': 'address/'}), - 'Blockchair.com': ('https://blockchair.com/bitcoin/', - {'tx': 'transaction/', 'addr': 'address/'}), - 'blockonomics.co': ('https://www.blockonomics.co/', - {'tx': 'api/tx?txid=', 'addr': '#/search?q='}), - 'system default': ('blockchain:/', - {'tx': 'tx/', 'addr': 'address/'}), + 'explorer.zcoin.net': ('http://explorer.zcoin.net', + {'tx': 'tx', 'addr': 'address'}), + 'Blockr.io': ('https://xzc.blockr.io', + {'tx': 'tx/info', 'addr': 'address/info'}), + 'BlockCypher.com': ('https://live.blockcypher.com/xzc', + {'tx': 'tx', 'addr': 'address'}), + 'SoChain': ('https://chain.so', + {'tx': 'tx/XZC', 'addr': 'address/XZC'}), + 'system default': ('blockchain:', + {'tx': 'tx', 'addr': 'address'}), } testnet_block_explorers = { - 'Blocktrail.com': ('https://www.blocktrail.com/tBTC/', - {'tx': 'tx/', 'addr': 'address/'}), - 'system default': ('blockchain://000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943/', - {'tx': 'tx/', 'addr': 'address/'}), + 'SoChain': ('https://chain.so', + {'tx': 'tx/XZCTEST', 'addr': 'address/XZCTEST'}), + 'system default': ('blockchain:', + {'tx': 'tx', 'addr': 'address'}), } def block_explorer_info(): @@ -486,7 +455,7 @@ def block_explorer_info(): return testnet_block_explorers if bitcoin.NetworkConstants.TESTNET else mainnet_block_explorers def block_explorer(config): - return config.get('block_explorer', 'Blocktrail.com') + return config.get('block_explorer', 'SoChain') def block_explorer_tuple(config): return block_explorer_info().get(block_explorer(config)) @@ -499,7 +468,7 @@ def block_explorer_URL(config, kind, item): if not kind_str: return url_parts = [be_tuple[0], kind_str, item] - return ''.join(url_parts) + return "/".join(url_parts) # URL decode #_ud = re.compile('%([0-9a-hA-H]{2})', re.MULTILINE) @@ -511,12 +480,12 @@ def parse_URI(uri, on_pr=None): if ':' not in uri: if not bitcoin.is_address(uri): - raise BaseException("Not a bitcoin address") + raise BaseException("Not a zcoin address") return {'address': uri} u = urllib.parse.urlparse(uri) - if u.scheme != 'bitcoin': - raise BaseException("Not a bitcoin URI") + if u.scheme != 'zcoin': + raise BaseException("Not a zcoin URI") address = u.path # python for android fails to parse query @@ -533,7 +502,7 @@ def parse_URI(uri, on_pr=None): out = {k: v[0] for k, v in pq.items()} if address: if not bitcoin.is_address(address): - raise BaseException("Invalid bitcoin address:" + address) + raise BaseException("Invalid zcoin address:" + address) out['address'] = address if 'amount' in out: am = out['amount'] @@ -583,7 +552,7 @@ def create_URI(addr, amount, message): query.append('amount=%s'%format_satoshis_plain(amount)) if message: query.append('message=%s'%urllib.parse.quote(message)) - p = urllib.parse.ParseResult(scheme='bitcoin', netloc='', path=addr, params='', query='&'.join(query), fragment='') + p = urllib.parse.ParseResult(scheme='zcoin', netloc='', path=addr, params='', query='&'.join(query), fragment='') return urllib.parse.urlunparse(p) @@ -747,8 +716,4 @@ def run_with_except_hook(*args2, **kwargs2): self.run = run_with_except_hook - threading.Thread.__init__ = init - - -def versiontuple(v): - return tuple(map(int, (v.split(".")))) + threading.Thread.__init__ = init \ No newline at end of file diff --git a/lib/version.py b/lib/version.py index 1d653e591a3c..2f71ac17b536 100644 --- a/lib/version.py +++ b/lib/version.py @@ -1,5 +1,5 @@ -ELECTRUM_VERSION = '3.1' # version of the client package -PROTOCOL_VERSION = '1.2' # protocol version requested +ELECTRUM_VERSION = '3.0.5' # version of the client package +PROTOCOL_VERSION = '1.1' # protocol version requested # The hash of the mnemonic seed must begin with this SEED_PREFIX = '01' # Standard wallet diff --git a/lib/wallet.py b/lib/wallet.py index 921a1bb844e8..3972b255bf31 100644 --- a/lib/wallet.py +++ b/lib/wallet.py @@ -38,7 +38,6 @@ from functools import partial from collections import defaultdict from numbers import Number -from decimal import Decimal import sys @@ -49,7 +48,7 @@ from .bitcoin import * from .version import * from .keystore import load_keystore, Hardware_KeyStore -from .storage import multisig_type, STO_EV_PLAINTEXT, STO_EV_USER_PW, STO_EV_XPUB_PW +from .storage import multisig_type from . import transaction from .transaction import Transaction @@ -67,6 +66,7 @@ TX_STATUS = [ _('Replaceable'), _('Unconfirmed parent'), + _('Low fee'), _('Unconfirmed'), _('Not Verified'), _('Local only'), @@ -78,8 +78,8 @@ def relayfee(network): - RELAY_FEE = 1000 - MAX_RELAY_FEE = 50000 + RELAY_FEE = 100000 + MAX_RELAY_FEE = 10 * RELAY_FEE f = network.relay_fee if network and network.relay_fee else RELAY_FEE return min(f, MAX_RELAY_FEE) @@ -185,12 +185,11 @@ def __init__(self, storage): self.labels = storage.get('labels', {}) self.frozen_addresses = set(storage.get('frozen_addresses',[])) self.history = storage.get('addr_history',{}) # address -> list(txid, height) - self.fiat_value = storage.get('fiat_value', {}) self.load_keystore() self.load_addresses() self.load_transactions() - self.build_spent_outpoints() + self.build_reverse_history() # load requests self.receive_requests = self.storage.get('payment_requests', {}) @@ -206,10 +205,8 @@ def __init__(self, storage): # interface.is_up_to_date() returns true when all requests have been answered and processed # wallet.up_to_date is true when the wallet is synchronized (stronger requirement) self.up_to_date = False - - # locks: if you need to take multiple ones, acquire them in the order they are defined here! - self.lock = threading.RLock() - self.transaction_lock = threading.RLock() + self.lock = threading.Lock() + self.transaction_lock = threading.Lock() self.check_history() @@ -242,8 +239,7 @@ def load_transactions(self): for tx_hash, raw in tx_list.items(): tx = Transaction(raw) self.transactions[tx_hash] = tx - if self.txi.get(tx_hash) is None and self.txo.get(tx_hash) is None \ - and (tx_hash not in self.pruned_txo.values()): + if self.txi.get(tx_hash) is None and self.txo.get(tx_hash) is None and (tx_hash not in self.pruned_txo.values()): self.print_error("removing unreferenced tx", tx_hash) self.transactions.pop(tx_hash) @@ -263,25 +259,24 @@ def save_transactions(self, write=False): self.storage.write() def clear_history(self): + with self.transaction_lock: + self.txi = {} + self.txo = {} + self.tx_fees = {} + self.pruned_txo = {} + self.save_transactions() with self.lock: - with self.transaction_lock: - self.txi = {} - self.txo = {} - self.tx_fees = {} - self.pruned_txo = {} - self.spent_outpoints = {} - self.history = {} - self.verified_tx = {} - self.transactions = {} - self.save_transactions() + self.history = {} + self.tx_addr_hist = {} @profiler - def build_spent_outpoints(self): - self.spent_outpoints = {} - for txid, items in self.txi.items(): - for addr, l in items.items(): - for ser, v in l: - self.spent_outpoints[ser] = txid + def build_reverse_history(self): + self.tx_addr_hist = {} + for addr, hist in self.history.items(): + for tx_hash, h in hist: + s = self.tx_addr_hist.get(tx_hash, set()) + s.add(addr) + self.tx_addr_hist[tx_hash] = s @profiler def check_history(self): @@ -322,9 +317,6 @@ def load_addresses(self): def synchronize(self): pass - def is_deterministic(self): - return self.keystore.is_deterministic() - def set_up_to_date(self, up_to_date): with self.lock: self.up_to_date = up_to_date @@ -346,36 +338,12 @@ def set_label(self, name, text = None): if old_text: self.labels.pop(name) changed = True + if changed: run_hook('set_label', self, name, text) self.storage.put('labels', self.labels) - return changed - def set_fiat_value(self, txid, ccy, text): - if txid not in self.transactions: - return - if not text: - d = self.fiat_value.get(ccy, {}) - if d and txid in d: - d.pop(txid) - else: - return - else: - try: - Decimal(text) - except: - return - if ccy not in self.fiat_value: - self.fiat_value[ccy] = {} - self.fiat_value[ccy][txid] = text - self.storage.put('fiat_value', self.fiat_value) - - def get_fiat_value(self, txid, ccy): - fiat_value = self.fiat_value.get(ccy, {}).get(txid) - try: - return Decimal(fiat_value) - except: - return + return changed def is_mine(self, address): return address in self.get_addresses() @@ -448,7 +416,7 @@ def get_local_height(self): return self.network.get_local_height() if self.network else self.storage.get('stored_height', 0) def get_tx_height(self, tx_hash): - """ Given a transaction, returns (height, conf, timestamp) """ + """ return the height and timestamp of a transaction. """ with self.lock: if tx_hash in self.verified_tx: height, timestamp, pos = self.verified_tx[tx_hash] @@ -563,17 +531,17 @@ def get_tx_info(self, tx): height, conf, timestamp = self.get_tx_height(tx_hash) if height > 0: if conf: - status = _("{} confirmations").format(conf) + status = _("%d confirmations") % conf else: status = _('Not verified') elif height in (TX_HEIGHT_UNCONF_PARENT, TX_HEIGHT_UNCONFIRMED): status = _('Unconfirmed') if fee is None: fee = self.tx_fees.get(tx_hash) - if fee and self.network.config.has_fee_etas(): + if fee and self.network.config.has_fee_estimates(): size = tx.estimated_size() fee_per_kb = fee * 1000 / size - exp_n = self.network.config.fee_to_eta(fee_per_kb) + exp_n = self.network.config.reverse_dynfee(fee_per_kb) can_bump = is_mine and not tx.is_final() else: status = _('Local') @@ -707,12 +675,7 @@ def get_address_history(self, addr): h.append((tx_hash, tx_height)) return h - def get_txin_address(self, txi): - addr = txi.get('address') - if addr != "(pubkey)": - return addr - prevout_hash = txi.get('prevout_hash') - prevout_n = txi.get('prevout_n') + def find_pay_to_pubkey_address(self, prevout_hash, prevout_n): dd = self.txo.get(prevout_hash, {}) for addr, l in dd.items(): for n, v, is_cb in l: @@ -720,89 +683,23 @@ def get_txin_address(self, txi): self.print_error("found pay-to-pubkey address:", addr) return addr - def get_txout_address(self, txo): - _type, x, v = txo - if _type == TYPE_ADDRESS: - addr = x - elif _type == TYPE_PUBKEY: - addr = bitcoin.public_key_to_p2pkh(bfh(x)) - else: - addr = None - return addr - - def get_conflicting_transactions(self, tx): - """Returns a set of transaction hashes from the wallet history that are - directly conflicting with tx, i.e. they have common outpoints being - spent with tx. - """ - conflicting_txns = set() - with self.transaction_lock: - for txi in tx.inputs(): - ser = Transaction.get_outpoint_from_txin(txi) - if ser is None: - continue - spending_tx_hash = self.spent_outpoints.get(ser, None) - if spending_tx_hash is None: - continue - # this outpoint (ser) has already been spent, by spending_tx - assert spending_tx_hash in self.transactions - conflicting_txns |= {spending_tx_hash} - return conflicting_txns - def add_transaction(self, tx_hash, tx): + is_coinbase = tx.inputs()[0]['type'] == 'coinbase' + related = False with self.transaction_lock: - if tx in self.transactions: - return True - is_coinbase = tx.inputs()[0]['type'] == 'coinbase' - tx_height = self.get_tx_height(tx_hash)[0] - is_mine = any([self.is_mine(txin['address']) for txin in tx.inputs()]) - # do not save if tx is local and not mine - if tx_height == TX_HEIGHT_LOCAL and not is_mine: - # FIXME the test here should be for "not all is_mine"; cannot detect conflict in some cases - return False - # raise exception if unrelated to wallet - is_for_me = any([self.is_mine(self.get_txout_address(txo)) for txo in tx.outputs()]) - if not is_mine and not is_for_me: - raise UnrelatedTransactionException() - # Find all conflicting transactions. - # In case of a conflict, - # 1. confirmed > mempool > local - # 2. this new txn has priority over existing ones - # When this method exits, there must NOT be any conflict, so - # either keep this txn and remove all conflicting (along with dependencies) - # or drop this txn - conflicting_txns = self.get_conflicting_transactions(tx) - if conflicting_txns: - existing_mempool_txn = any( - self.get_tx_height(tx_hash2)[0] in (TX_HEIGHT_UNCONFIRMED, TX_HEIGHT_UNCONF_PARENT) - for tx_hash2 in conflicting_txns) - existing_confirmed_txn = any( - self.get_tx_height(tx_hash2)[0] > 0 - for tx_hash2 in conflicting_txns) - if existing_confirmed_txn and tx_height <= 0: - # this is a non-confirmed tx that conflicts with confirmed txns; drop. - return False - if existing_mempool_txn and tx_height == TX_HEIGHT_LOCAL: - # this is a local tx that conflicts with non-local txns; drop. - return False - # keep this txn and remove all conflicting - to_remove = set() - to_remove |= conflicting_txns - for conflicting_tx_hash in conflicting_txns: - to_remove |= self.get_depending_transactions(conflicting_tx_hash) - for tx_hash2 in to_remove: - self.remove_transaction(tx_hash2) # add inputs self.txi[tx_hash] = d = {} for txi in tx.inputs(): - addr = self.get_txin_address(txi) + addr = txi.get('address') if txi['type'] != 'coinbase': prevout_hash = txi['prevout_hash'] prevout_n = txi['prevout_n'] ser = prevout_hash + ':%d'%prevout_n - self.spent_outpoints[ser] = tx_hash + if addr == "(pubkey)": + addr = self.find_pay_to_pubkey_address(prevout_hash, prevout_n) # find value from prev output if addr and self.is_mine(addr): + related = True dd = self.txo.get(prevout_hash, {}) for n, v, is_cb in dd.get(addr, []): if n == prevout_n: @@ -812,13 +709,20 @@ def add_transaction(self, tx_hash, tx): break else: self.pruned_txo[ser] = tx_hash + # add outputs self.txo[tx_hash] = d = {} for n, txo in enumerate(tx.outputs()): - v = txo[2] ser = tx_hash + ':%d'%n - addr = self.get_txout_address(txo) + _type, x, v = txo + if _type == TYPE_ADDRESS: + addr = x + elif _type == TYPE_PUBKEY: + addr = bitcoin.public_key_to_p2pkh(bfh(x)) + else: + addr = None if addr and self.is_mine(addr): + related = True if d.get(addr) is None: d[addr] = [] d[addr].append((n, v, is_coinbase)) @@ -830,22 +734,20 @@ def add_transaction(self, tx_hash, tx): if dd.get(addr) is None: dd[addr] = [] dd[addr].append((ser, v)) + + if not related: + raise UnrelatedTransactionException() + # save self.transactions[tx_hash] = tx - return True def remove_transaction(self, tx_hash): - def undo_spend(outpoint_to_txid_map): - for addr, l in self.txi[tx_hash].items(): - for ser, v in l: - outpoint_to_txid_map.pop(ser, None) - with self.transaction_lock: self.print_error("removing tx from history", tx_hash) - self.transactions.pop(tx_hash, None) - undo_spend(self.pruned_txo) - undo_spend(self.spent_outpoints) - + #tx = self.transactions.pop(tx_hash) + for ser, hh in list(self.pruned_txo.items()): + if hh == tx_hash: + self.pruned_txo.pop(ser) # add tx to pruned_txo, and undo the txi addition for next_tx, dd in self.txi.items(): for addr, l in list(dd.items()): @@ -867,27 +769,26 @@ def undo_spend(outpoint_to_txid_map): self.print_error("tx was not in history", tx_hash) def receive_tx_callback(self, tx_hash, tx, tx_height): - self.add_unverified_tx(tx_hash, tx_height) self.add_transaction(tx_hash, tx) + self.add_unverified_tx(tx_hash, tx_height) def receive_history_callback(self, addr, hist, tx_fees): with self.lock: - old_hist = self.get_address_history(addr) + old_hist = self.history.get(addr, []) for tx_hash, height in old_hist: if (tx_hash, height) not in hist: # make tx local self.unverified_tx.pop(tx_hash, None) self.verified_tx.pop(tx_hash, None) - self.verifier.merkle_roots.pop(tx_hash, None) - # but remove completely if not is_mine - if self.txi[tx_hash] == {}: - # FIXME the test here should be for "not all is_mine"; cannot detect conflict in some cases - self.remove_transaction(tx_hash) self.history[addr] = hist for tx_hash, tx_height in hist: # add it in case it was previously unconfirmed self.add_unverified_tx(tx_hash, tx_height) + # add reference in tx_addr_hist + s = self.tx_addr_hist.get(tx_hash, set()) + s.add(addr) + self.tx_addr_hist[tx_hash] = s # if addr is new, we have to recompute txi and txo tx = self.transactions.get(tx_hash) if tx is not None and self.txi.get(tx_hash, {}).get(addr) is None and self.txo.get(tx_hash, {}).get(addr) is None: @@ -940,94 +841,6 @@ def get_history(self, domain=None): return h2 - def balance_at_timestamp(self, domain, target_timestamp): - h = self.get_history(domain) - for tx_hash, height, conf, timestamp, value, balance in h: - if timestamp > target_timestamp: - return balance - value - # return last balance - return balance - - def export_history(self, domain=None, from_timestamp=None, to_timestamp=None, fx=None, show_addresses=False): - from .util import format_time, format_satoshis, timestamp_to_datetime - h = self.get_history(domain) - out = [] - init_balance = None - capital_gains = 0 - fiat_income = 0 - for tx_hash, height, conf, timestamp, value, balance in h: - if from_timestamp and timestamp < from_timestamp: - continue - if to_timestamp and timestamp >= to_timestamp: - continue - item = { - 'txid':tx_hash, - 'height':height, - 'confirmations':conf, - 'timestamp':timestamp, - 'value': format_satoshis(value, True) if value is not None else '--', - 'balance': format_satoshis(balance) - } - if init_balance is None: - init_balance = balance - value - end_balance = balance - if item['height']>0: - date_str = format_time(timestamp) if timestamp is not None else _("unverified") - else: - date_str = _("unconfirmed") - item['date'] = date_str - item['label'] = self.get_label(tx_hash) - if show_addresses: - tx = self.transactions.get(tx_hash) - tx.deserialize() - input_addresses = [] - output_addresses = [] - for x in tx.inputs(): - if x['type'] == 'coinbase': continue - addr = self.get_txin_address(x) - if addr is None: - continue - input_addresses.append(addr) - for addr, v in tx.get_outputs(): - output_addresses.append(addr) - item['input_addresses'] = input_addresses - item['output_addresses'] = output_addresses - if fx is not None: - date = timestamp_to_datetime(time.time() if conf <= 0 else timestamp) - fiat_value = self.get_fiat_value(tx_hash, fx.ccy) - if fiat_value is None: - fiat_value = fx.historical_value(value, date) - item['fiat_value'] = fx.format_fiat(fiat_value) - if value < 0: - ap, lp = self.capital_gain(tx_hash, fx.timestamp_rate, fx.ccy) - cg = None if lp is None or ap is None else lp - ap - item['acquisition_price'] = fx.format_fiat(ap) - item['capital_gain'] = fx.format_fiat(cg) - if cg is not None: - capital_gains += cg - else: - if fiat_value is not None: - fiat_income += fiat_value - out.append(item) - - if from_timestamp and to_timestamp: - summary = { - 'start_date': format_time(from_timestamp), - 'end_date': format_time(to_timestamp), - 'start_balance': format_satoshis(init_balance), - 'end_balance': format_satoshis(end_balance), - 'capital_gains': fx.format_fiat(capital_gains), - 'fiat_income': fx.format_fiat(fiat_income) - } - if fx: - start_date = timestamp_to_datetime(from_timestamp) - end_date = timestamp_to_datetime(to_timestamp) - summary['start_fiat_balance'] = fx.format_fiat(fx.historical_value(init_balance, start_date)) - summary['end_fiat_balance'] = fx.format_fiat(fx.historical_value(end_balance, end_date)) - out.append(summary) - - return out - def get_label(self, tx_hash): label = self.labels.get(tx_hash, '') if label is '': @@ -1047,33 +860,34 @@ def get_default_label(self, tx_hash): def get_tx_status(self, tx_hash, height, conf, timestamp): from .util import format_time - exp_n = False if conf == 0: tx = self.transactions.get(tx_hash) if not tx: - return 2, 'unknown' + return 3, 'unknown' is_final = tx and tx.is_final() fee = self.tx_fees.get(tx_hash) - if fee and self.network and self.network.config.has_fee_mempool(): - size = tx.estimated_size() - fee_per_kb = fee * 1000 / size - exp_n = self.network.config.fee_to_depth(fee_per_kb//1000) + if fee and self.network and self.network.config.has_fee_estimates(): + size = len(tx.raw)/2 + low_fee = int(self.network.config.dynfee(0)*size/1000) + is_lowfee = fee < low_fee * 0.5 + else: + is_lowfee = False if height == TX_HEIGHT_LOCAL: - status = 4 + status = 5 elif height == TX_HEIGHT_UNCONF_PARENT: status = 1 elif height == TX_HEIGHT_UNCONFIRMED and not is_final: status = 0 - elif height == TX_HEIGHT_UNCONFIRMED: + elif height == TX_HEIGHT_UNCONFIRMED and is_lowfee: status = 2 - else: + elif height == TX_HEIGHT_UNCONFIRMED: status = 3 + else: + status = 4 else: - status = 4 + min(conf, 6) + status = 5 + min(conf, 6) time_str = format_time(timestamp) if timestamp else _("unknown") - status_str = TX_STATUS[status] if status < 5 else time_str - if exp_n: - status_str += ' [%d sat/b, %.2f MB]'%(fee_per_kb//1000, exp_n/1000000) + status_str = TX_STATUS[status] if status < 6 else time_str return status, status_str def relayfee(self): @@ -1090,7 +904,7 @@ def make_unsigned_transaction(self, inputs, outputs, config, fixed_fee=None, _type, data, value = o if _type == TYPE_ADDRESS: if not is_address(data): - raise BaseException("Invalid bitcoin address:" + data) + raise BaseException("Invalid zcoin address:" + data) if value == '!': if i_max is not None: raise BaseException("More than one output set to spend max") @@ -1103,9 +917,8 @@ def make_unsigned_transaction(self, inputs, outputs, config, fixed_fee=None, if fixed_fee is None and config.fee_per_kb() is None: raise NoDynamicFeeEstimates() - if not is_sweep: - for item in inputs: - self.add_input_info(item) + for item in inputs: + self.add_input_info(item) # change address if change_addr: @@ -1430,7 +1243,7 @@ def get_payment_request(self, addr, config): if not r: return out = copy.copy(r) - out['URI'] = 'bitcoin:' + addr + '?amount=' + format_satoshis(out.get('amount')) + out['URI'] = 'zcoin:' + addr + '?amount=' + format_satoshis(out.get('amount')) status, conf = self.get_request_status(addr) out['status'] = status if conf is not None: @@ -1570,65 +1383,10 @@ def add_address(self, address): self.synchronizer.add(address) def has_password(self): - return self.has_keystore_encryption() or self.has_storage_encryption() - - def can_have_keystore_encryption(self): - return self.keystore and self.keystore.may_have_password() - - def get_available_storage_encryption_version(self): - """Returns the type of storage encryption offered to the user. - - A wallet file (storage) is either encrypted with this version - or is stored in plaintext. - """ - if isinstance(self.keystore, Hardware_KeyStore): - return STO_EV_XPUB_PW - else: - return STO_EV_USER_PW - - def has_keystore_encryption(self): - """Returns whether encryption is enabled for the keystore. - - If True, e.g. signing a transaction will require a password. - """ - if self.can_have_keystore_encryption(): - return self.storage.get('use_encryption', False) - return False - - def has_storage_encryption(self): - """Returns whether encryption is enabled for the wallet file on disk.""" - return self.storage.is_encrypted() - - @classmethod - def may_have_password(cls): - return True + return self.storage.get('use_encryption', False) def check_password(self, password): - if self.has_keystore_encryption(): - self.keystore.check_password(password) - self.storage.check_password(password) - - def update_password(self, old_pw, new_pw, encrypt_storage=False): - if old_pw is None and self.has_password(): - raise InvalidPassword() - self.check_password(old_pw) - - if encrypt_storage: - enc_version = self.get_available_storage_encryption_version() - else: - enc_version = STO_EV_PLAINTEXT - self.storage.set_password(new_pw, enc_version) - - # note: Encrypting storage with a hw device is currently only - # allowed for non-multisig wallets. Further, - # Hardware_KeyStore.may_have_password() == False. - # If these were not the case, - # extra care would need to be taken when encrypting keystores. - self._update_password_for_keystore(old_pw, new_pw) - encrypt_keystore = self.can_have_keystore_encryption() - self.storage.set_keystore_encryption(bool(new_pw) and encrypt_keystore) - - self.storage.write() + self.keystore.check_password(password) def sign_message(self, address, message, password): index = self.get_address_index(address) @@ -1649,63 +1407,6 @@ def get_depending_transactions(self, tx_hash): children |= self.get_depending_transactions(other_hash) return children - def txin_value(self, txin): - txid = txin['prevout_hash'] - prev_n = txin['prevout_n'] - for address, d in self.txo[txid].items(): - for n, v, cb in d: - if n == prev_n: - return v - raise BaseException('unknown txin value') - - def price_at_timestamp(self, txid, price_func): - height, conf, timestamp = self.get_tx_height(txid) - return price_func(timestamp) - - def capital_gain(self, txid, price_func, ccy): - """ - Difference between the fiat price of coins leaving the wallet because of transaction txid, - and the price of these coins when they entered the wallet. - price_func: function that returns the fiat price given a timestamp - """ - tx = self.transactions[txid] - ir, im, v, fee = self.get_wallet_delta(tx) - out_value = -v - fiat_value = self.get_fiat_value(txid, ccy) - if fiat_value is None: - p = self.price_at_timestamp(txid, price_func) - liquidation_price = None if p is None else out_value/Decimal(COIN) * p - else: - liquidation_price = - fiat_value - try: - acquisition_price = out_value/Decimal(COIN) * self.average_price(tx, price_func, ccy) - except: - acquisition_price = None - return acquisition_price, liquidation_price - - - def average_price(self, tx, price_func, ccy): - """ average price of the inputs of a transaction """ - input_value = sum(self.txin_value(txin) for txin in tx.inputs()) / Decimal(COIN) - total_price = sum(self.coin_price(txin, price_func, ccy, self.txin_value(txin)) for txin in tx.inputs()) - return total_price / input_value - - def coin_price(self, coin, price_func, ccy, txin_value): - """ fiat price of acquisition of coin """ - txid = coin['prevout_hash'] - tx = self.transactions[txid] - if all([self.is_mine(txin['address']) for txin in tx.inputs()]): - return self.average_price(tx, price_func, ccy) * txin_value/Decimal(COIN) - elif all([ not self.is_mine(txin['address']) for txin in tx.inputs()]): - fiat_value = self.get_fiat_value(txid, ccy) - if fiat_value is not None: - return fiat_value - else: - return self.price_at_timestamp(txid, price_func) * txin_value/Decimal(COIN) - else: - # could be some coinjoin transaction.. - return None - class Simple_Wallet(Abstract_Wallet): # wallet with a single keystore @@ -1719,10 +1420,16 @@ def get_keystores(self): def is_watching_only(self): return self.keystore.is_watching_only() - def _update_password_for_keystore(self, old_pw, new_pw): - if self.keystore and self.keystore.may_have_password(): - self.keystore.update_password(old_pw, new_pw) - self.save_keystore() + def can_change_password(self): + return self.keystore.can_change_password() + + def update_password(self, old_pw, new_pw, encrypt=False): + if old_pw is None and self.has_password(): + raise InvalidPassword() + self.keystore.update_password(old_pw, new_pw) + self.save_keystore() + self.storage.set_password(new_pw, encrypt) + self.storage.write() def save_keystore(self): self.storage.put('keystore', self.keystore.dump()) @@ -1761,6 +1468,9 @@ def load_addresses(self): def save_addresses(self): self.storage.put('addresses', self.addresses) + def can_change_password(self): + return not self.is_watching_only() + def can_import_address(self): return self.is_watching_only() @@ -1779,7 +1489,7 @@ def is_change(self, address): def get_master_public_keys(self): return [] - def is_beyond_limit(self, address): + def is_beyond_limit(self, address, is_change): return False def is_mine(self, address): @@ -1920,6 +1630,9 @@ def __init__(self, storage): def has_seed(self): return self.keystore.has_seed() + def is_deterministic(self): + return self.keystore.is_deterministic() + def get_receiving_addresses(self): return self.receiving_addresses @@ -1981,16 +1694,15 @@ def load_addresses(self): def create_new_address(self, for_change=False): assert type(for_change) is bool - with self.lock: - addr_list = self.change_addresses if for_change else self.receiving_addresses - n = len(addr_list) - x = self.derive_pubkeys(for_change, n) - address = self.pubkeys_to_address(x) - addr_list.append(address) - self._addr_to_addr_index[address] = (for_change, n) - self.save_addresses() - self.add_address(address) - return address + addr_list = self.change_addresses if for_change else self.receiving_addresses + n = len(addr_list) + x = self.derive_pubkeys(for_change, n) + address = self.pubkeys_to_address(x) + addr_list.append(address) + self._addr_to_addr_index[address] = (for_change, n) + self.save_addresses() + self.add_address(address) + return address def synchronize_sequence(self, for_change): limit = self.gap_limit_for_change if for_change else self.gap_limit @@ -2006,12 +1718,20 @@ def synchronize_sequence(self, for_change): def synchronize(self): with self.lock: - self.synchronize_sequence(False) - self.synchronize_sequence(True) - - def is_beyond_limit(self, address): - is_change, i = self.get_address_index(address) + if self.is_deterministic(): + self.synchronize_sequence(False) + self.synchronize_sequence(True) + else: + if len(self.receiving_addresses) != len(self.keystore.keypairs): + pubkeys = self.keystore.keypairs.keys() + self.receiving_addresses = [self.pubkeys_to_address(i) for i in pubkeys] + self.save_addresses() + for addr in self.receiving_addresses: + self.add_address(addr) + + def is_beyond_limit(self, address, is_change): addr_list = self.get_change_addresses() if is_change else self.get_receiving_addresses() + i = self.get_address_index(address)[1] limit = self.gap_limit_for_change if is_change else self.gap_limit if i < limit: return False @@ -2129,28 +1849,22 @@ def get_keystore(self): def get_keystores(self): return [self.keystores[i] for i in sorted(self.keystores.keys())] - def can_have_keystore_encryption(self): - return any([k.may_have_password() for k in self.get_keystores()]) - - def _update_password_for_keystore(self, old_pw, new_pw): + def update_password(self, old_pw, new_pw, encrypt=False): + if old_pw is None and self.has_password(): + raise InvalidPassword() for name, keystore in self.keystores.items(): - if keystore.may_have_password(): + if keystore.can_change_password(): keystore.update_password(old_pw, new_pw) self.storage.put(name, keystore.dump()) - - def check_password(self, password): - for name, keystore in self.keystores.items(): - if keystore.may_have_password(): - keystore.check_password(password) - self.storage.check_password(password) - - def get_available_storage_encryption_version(self): - # multisig wallets are not offered hw device encryption - return STO_EV_USER_PW + self.storage.set_password(new_pw, encrypt) + self.storage.write() def has_seed(self): return self.keystore.has_seed() + def can_change_password(self): + return self.keystore.can_change_password() + def is_watching_only(self): return not any([not k.is_watching_only() for k in self.get_keystores()]) diff --git a/plugins/audio_modem/__init__.py b/plugins/audio_modem/__init__.py index 46c2d2091e00..75610e3762a5 100644 --- a/plugins/audio_modem/__init__.py +++ b/plugins/audio_modem/__init__.py @@ -1,4 +1,4 @@ -from electrum.i18n import _ +from electrum_xzc.i18n import _ fullname = _('Audio MODEM') description = _('Provides support for air-gapped transaction signing.') diff --git a/plugins/audio_modem/qt.py b/plugins/audio_modem/qt.py index 254988b9a870..83ccabe5d84a 100644 --- a/plugins/audio_modem/qt.py +++ b/plugins/audio_modem/qt.py @@ -5,10 +5,10 @@ import sys import platform -from electrum.plugins import BasePlugin, hook -from electrum_gui.qt.util import WaitingDialog, EnterButton, WindowModalDialog -from electrum.util import print_msg, print_error -from electrum.i18n import _ +from electrum_xzc.plugins import BasePlugin, hook +from electrum_xzc_gui.qt.util import WaitingDialog, EnterButton, WindowModalDialog +from electrum_xzc.util import print_msg, print_error +from electrum_xzc.i18n import _ from PyQt5.QtGui import * from PyQt5.QtCore import * diff --git a/plugins/cosigner_pool/__init__.py b/plugins/cosigner_pool/__init__.py index 085b5095bfb6..64cb1055b8af 100644 --- a/plugins/cosigner_pool/__init__.py +++ b/plugins/cosigner_pool/__init__.py @@ -1,4 +1,4 @@ -from electrum.i18n import _ +from electrum_xzc.i18n import _ fullname = _('Cosigner Pool') description = ' '.join([ _("This plugin facilitates the use of multi-signatures wallets."), diff --git a/plugins/cosigner_pool/qt.py b/plugins/cosigner_pool/qt.py index 52d6a8f3451b..4cd62454336d 100644 --- a/plugins/cosigner_pool/qt.py +++ b/plugins/cosigner_pool/qt.py @@ -30,14 +30,14 @@ from PyQt5.QtCore import * from PyQt5.QtWidgets import QPushButton -from electrum import bitcoin, util -from electrum import transaction -from electrum.plugins import BasePlugin, hook -from electrum.i18n import _ -from electrum.wallet import Multisig_Wallet -from electrum.util import bh2u, bfh +from electrum_xzc import bitcoin, util +from electrum_xzc import transaction +from electrum_xzc.plugins import BasePlugin, hook +from electrum_xzc.i18n import _ +from electrum_xzc.wallet import Multisig_Wallet +from electrum_xzc.util import bh2u, bfh -from electrum_gui.qt.transaction_dialog import show_transaction +from electrum_xzc_gui.qt.transaction_dialog import show_transaction import sys import traceback @@ -162,7 +162,7 @@ def transaction_dialog_update(self, d): d.cosigner_send_button.hide() def cosigner_can_sign(self, tx, cosigner_xpub): - from electrum.keystore import is_xpubkey, parse_xpubkey + from electrum_xzc.keystore import is_xpubkey, parse_xpubkey xpub_set = set([]) for txin in tx.inputs(): for x_pubkey in txin['x_pubkeys']: @@ -194,7 +194,7 @@ def on_receive(self, keyhash, message): return wallet = window.wallet - if wallet.has_keystore_encryption(): + if wallet.has_password(): password = window.password_dialog('An encrypted transaction was retrieved from cosigning pool.\nPlease enter your password to decrypt it.') if not password: return diff --git a/plugins/digitalbitbox/__init__.py b/plugins/digitalbitbox/__init__.py index 5653d6161282..338abae25e9d 100644 --- a/plugins/digitalbitbox/__init__.py +++ b/plugins/digitalbitbox/__init__.py @@ -1,4 +1,4 @@ -from electrum.i18n import _ +from electrum_xzc.i18n import _ fullname = 'Digital Bitbox' description = _('Provides support for Digital Bitbox hardware wallet') diff --git a/plugins/digitalbitbox/cmdline.py b/plugins/digitalbitbox/cmdline.py index 7902c98a93d7..48cd3b32b50a 100644 --- a/plugins/digitalbitbox/cmdline.py +++ b/plugins/digitalbitbox/cmdline.py @@ -1,4 +1,4 @@ -from electrum.plugins import hook +from electrum_xzc.plugins import hook from .digitalbitbox import DigitalBitboxPlugin from ..hw_wallet import CmdLineHandler diff --git a/plugins/digitalbitbox/digitalbitbox.py b/plugins/digitalbitbox/digitalbitbox.py index c57e395dd4e2..2260ac750a54 100644 --- a/plugins/digitalbitbox/digitalbitbox.py +++ b/plugins/digitalbitbox/digitalbitbox.py @@ -4,15 +4,15 @@ # try: - import electrum - from electrum.bitcoin import TYPE_ADDRESS, push_script, var_int, msg_magic, Hash, verify_message, pubkey_from_signature, point_to_ser, public_key_to_p2pkh, EncodeAES, DecodeAES, MyVerifyingKey - from electrum.bitcoin import serialize_xpub, deserialize_xpub - from electrum.transaction import Transaction - from electrum.i18n import _ - from electrum.keystore import Hardware_KeyStore + import electrum_xzc as electrum + from electrum_xzc.bitcoin import TYPE_ADDRESS, push_script, var_int, msg_magic, Hash, verify_message, pubkey_from_signature, point_to_ser, public_key_to_p2pkh, EncodeAES, DecodeAES, MyVerifyingKey + from electrum_xzc.bitcoin import serialize_xpub, deserialize_xpub + from electrum_xzc.transaction import Transaction + from electrum_xzc.i18n import _ + from electrum_xzc.keystore import Hardware_KeyStore from ..hw_wallet import HW_PluginBase - from electrum.util import print_error, to_string, UserCancelled - from electrum.base_wizard import ScriptTypeNotSupported, HWD_SETUP_NEW_WALLET + from electrum_xzc.util import print_error, to_string, UserCancelled + from electrum_xzc.base_wizard import ScriptTypeNotSupported import time import hid @@ -271,7 +271,7 @@ def mobile_pairing_dialog(self): def dbb_generate_wallet(self): key = self.stretch_key(self.password) - filename = ("Electrum-" + time.strftime("%Y-%m-%d-%H-%M-%S") + ".pdf").encode('utf8') + filename = ("Electrum-XZC-" + time.strftime("%Y-%m-%d-%H-%M-%S") + ".pdf").encode('utf8') msg = b'{"seed":{"source": "create", "key": "%s", "filename": "%s", "entropy": "%s"}}' % (key, filename, b'Digital Bitbox Electrum Plugin') reply = self.hid_send_encrypt(msg) if 'error' in reply: @@ -421,7 +421,7 @@ def give_error(self, message, clear_client = False): def decrypt_message(self, pubkey, message, password): - raise RuntimeError(_('Encryption and decryption are currently not supported for {}').format(self.device)) + raise RuntimeError(_('Encryption and decryption are currently not supported for %s') % self.device) def sign_message(self, sequence, message, password): @@ -670,13 +670,12 @@ def create_client(self, device, handler): return None - def setup_device(self, device_info, wizard, purpose): + def setup_device(self, device_info, wizard): devmgr = self.device_manager() device_id = device_info.device.id_ client = devmgr.client_by_id(device_id) client.handler = self.create_handler(wizard) - if purpose == HWD_SETUP_NEW_WALLET: - client.setupRunning = True + client.setupRunning = True client.get_xpub("m/44'/0'", 'standard') diff --git a/plugins/digitalbitbox/qt.py b/plugins/digitalbitbox/qt.py index 8930d6244852..95b6480d038f 100644 --- a/plugins/digitalbitbox/qt.py +++ b/plugins/digitalbitbox/qt.py @@ -1,9 +1,9 @@ from ..hw_wallet.qt import QtHandlerBase, QtPluginBase from .digitalbitbox import DigitalBitboxPlugin -from electrum.i18n import _ -from electrum.plugins import hook -from electrum.wallet import Standard_Wallet +from electrum_xzc.i18n import _ +from electrum_xzc.plugins import hook +from electrum_xzc.wallet import Standard_Wallet class Plugin(DigitalBitboxPlugin, QtPluginBase): @@ -39,7 +39,7 @@ def show_address(): } self.comserver_post_notification(verify_request_payload) - menu.addAction(_("Show on {}").format(self.device), show_address) + menu.addAction(_("Show on %s") % self.device, show_address) class DigitalBitbox_Handler(QtHandlerBase): diff --git a/plugins/email_requests/__init__.py b/plugins/email_requests/__init__.py index 8c9e824725eb..ebfcbbd27ba1 100644 --- a/plugins/email_requests/__init__.py +++ b/plugins/email_requests/__init__.py @@ -1,4 +1,4 @@ -from electrum.i18n import _ +from electrum_xzc.i18n import _ fullname = _('Email') description = _("Send and receive payment request with an email account") diff --git a/plugins/email_requests/qt.py b/plugins/email_requests/qt.py index 64061841a614..439f1afdc635 100644 --- a/plugins/email_requests/qt.py +++ b/plugins/email_requests/qt.py @@ -40,11 +40,11 @@ import PyQt5.QtGui as QtGui from PyQt5.QtWidgets import (QVBoxLayout, QLabel, QGridLayout, QLineEdit) -from electrum.plugins import BasePlugin, hook -from electrum.paymentrequest import PaymentRequest -from electrum.i18n import _ -from electrum_gui.qt.util import EnterButton, Buttons, CloseButton -from electrum_gui.qt.util import OkButton, WindowModalDialog +from electrum_xzc.plugins import BasePlugin, hook +from electrum_xzc.paymentrequest import PaymentRequest +from electrum_xzc.i18n import _ +from electrum_xzc_gui.qt.util import EnterButton, Buttons, CloseButton +from electrum_xzc_gui.qt.util import OkButton, WindowModalDialog class Processor(threading.Thread): @@ -72,7 +72,7 @@ def poll(self): p = [p] continue for item in p: - if item.get_content_type() == "application/bitcoin-paymentrequest": + if item.get_content_type() == "application/zcoin-paymentrequest": pr_str = item.get_payload() pr_str = base64.b64decode(pr_str) self.on_receive(pr_str) @@ -91,10 +91,10 @@ def send(self, recipient, message, payment_request): msg['Subject'] = message msg['To'] = recipient msg['From'] = self.username - part = MIMEBase('application', "bitcoin-paymentrequest") + part = MIMEBase('application', "zcoin-paymentrequest") part.set_payload(payment_request) encode_base64(part) - part.add_header('Content-Disposition', 'attachment; filename="payreq.btc"') + part.add_header('Content-Disposition', 'attachment; filename="payreq.xzc"') msg.attach(part) s = smtplib.SMTP_SSL(self.imap_server, timeout=2) s.login(self.username, self.password) @@ -143,7 +143,7 @@ def receive_list_menu(self, menu, addr): menu.addAction(_("Send via e-mail"), lambda: self.send(window, addr)) def send(self, window, addr): - from electrum import paymentrequest + from electrum_xzc import paymentrequest r = window.wallet.receive_requests.get(addr) message = r.get('memo', '') if r.get('signature'): diff --git a/plugins/hw_wallet/cmdline.py b/plugins/hw_wallet/cmdline.py index 999f82994cfd..e3b493b54145 100644 --- a/plugins/hw_wallet/cmdline.py +++ b/plugins/hw_wallet/cmdline.py @@ -1,4 +1,4 @@ -from electrum.util import print_msg, print_error, raw_input +from electrum_xzc.util import print_msg, print_error, raw_input class CmdLineHandler: diff --git a/plugins/hw_wallet/plugin.py b/plugins/hw_wallet/plugin.py index 34573cf99f08..fc887ed018b9 100644 --- a/plugins/hw_wallet/plugin.py +++ b/plugins/hw_wallet/plugin.py @@ -24,8 +24,8 @@ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -from electrum.plugins import BasePlugin, hook -from electrum.i18n import _ +from electrum_xzc.plugins import BasePlugin, hook +from electrum_xzc.i18n import _ class HW_PluginBase(BasePlugin): @@ -51,10 +51,3 @@ def close_wallet(self, wallet): for keystore in wallet.get_keystores(): if isinstance(keystore, self.keystore_class): self.device_manager().unpair_xpub(keystore.xpub) - - def setup_device(self, device_info, wizard, purpose): - """Called when creating a new wallet or when using the device to decrypt - an existing wallet. Select the device to use. If the device is - uninitialized, go through the initialization process. - """ - raise NotImplementedError() diff --git a/plugins/hw_wallet/qt.py b/plugins/hw_wallet/qt.py index d2a3bb5f3664..96a5cc740a37 100644 --- a/plugins/hw_wallet/qt.py +++ b/plugins/hw_wallet/qt.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python3 +#!/usr/bin/env python2 # -*- mode: python -*- # # Electrum - lightweight Bitcoin client @@ -27,11 +27,11 @@ import threading from PyQt5.Qt import QVBoxLayout, QLabel -from electrum_gui.qt.password_dialog import PasswordDialog, PW_PASSPHRASE -from electrum_gui.qt.util import * +from electrum_xzc_gui.qt.password_dialog import PasswordDialog, PW_PASSPHRASE +from electrum_xzc_gui.qt.util import * -from electrum.i18n import _ -from electrum.util import PrintError +from electrum_xzc.i18n import _ +from electrum_xzc.util import PrintError # The trickiest thing about this handler was getting windows properly # parented on MacOSX. @@ -70,10 +70,9 @@ def update_status(self, paired): self.status_signal.emit(paired) def _update_status(self, paired): - if hasattr(self, 'button'): - button = self.button - icon = button.icon_paired if paired else button.icon_unpaired - button.setIcon(QIcon(icon)) + button = self.button + icon = button.icon_paired if paired else button.icon_unpaired + button.setIcon(QIcon(icon)) def query_choice(self, msg, labels): self.done.clear() @@ -144,7 +143,7 @@ def word_dialog(self, msg): def message_dialog(self, msg, on_cancel): # Called more than once during signing, to confirm output and fee self.clear_dialog() - title = _('Please check your {} device').format(self.device) + title = _('Please check your %s device') % self.device self.dialog = dialog = WindowModalDialog(self.top_level_window(), title) l = QLabel(msg) vbox = QVBoxLayout(dialog) @@ -172,9 +171,9 @@ def win_yes_no_question(self, msg): -from electrum.plugins import hook -from electrum.util import UserCancelled -from electrum_gui.qt.main_window import StatusBarButton +from electrum_xzc.plugins import hook +from electrum_xzc.util import UserCancelled +from electrum_xzc_gui.qt.main_window import StatusBarButton class QtPluginBase(object): @@ -184,12 +183,10 @@ def load_wallet(self, wallet, window): if not isinstance(keystore, self.keystore_class): continue if not self.libraries_available: - if hasattr(self, 'libraries_available_message'): - message = self.libraries_available_message + '\n' - else: - message = _("Cannot find python library for") + " '%s'.\n" % self.name - message += _("Make sure you install it with python3") - window.show_error(message) + window.show_error( + _("Cannot find python library for") + " '%s'.\n" % self.name \ + + _("Make sure you install it with python3") + ) return tooltip = self.device + '\n' + (keystore.label or 'unnamed') cb = partial(self.show_settings_dialog, window, keystore) diff --git a/plugins/keepkey/__init__.py b/plugins/keepkey/__init__.py index 0b54bc4a0db5..d14a6096679b 100644 --- a/plugins/keepkey/__init__.py +++ b/plugins/keepkey/__init__.py @@ -1,4 +1,4 @@ -from electrum.i18n import _ +from electrum_xzc.i18n import _ fullname = 'KeepKey' description = _('Provides support for KeepKey hardware wallet') diff --git a/plugins/keepkey/clientbase.py b/plugins/keepkey/clientbase.py index 4d5cf7c85f25..c8a4f183aa3b 100644 --- a/plugins/keepkey/clientbase.py +++ b/plugins/keepkey/clientbase.py @@ -1,25 +1,25 @@ import time from struct import pack -from electrum.i18n import _ -from electrum.util import PrintError, UserCancelled -from electrum.keystore import bip39_normalize_passphrase -from electrum.bitcoin import serialize_xpub +from electrum_xzc.i18n import _ +from electrum_xzc.util import PrintError, UserCancelled +from electrum_xzc.keystore import bip39_normalize_passphrase +from electrum_xzc.bitcoin import serialize_xpub class GuiMixin(object): # Requires: self.proto, self.device messages = { - 3: _("Confirm the transaction output on your {} device"), - 4: _("Confirm internal entropy on your {} device to begin"), - 5: _("Write down the seed word shown on your {}"), - 6: _("Confirm on your {} that you want to wipe it clean"), - 7: _("Confirm on your {} device the message to sign"), + 3: _("Confirm the transaction output on your %s device"), + 4: _("Confirm internal entropy on your %s device to begin"), + 5: _("Write down the seed word shown on your %s"), + 6: _("Confirm on your %s that you want to wipe it clean"), + 7: _("Confirm on your %s device the message to sign"), 8: _("Confirm the total amount spent and the transaction fee on your " - "{} device"), - 10: _("Confirm wallet address on your {} device"), - 'default': _("Check your {} device to continue"), + "%s device"), + 10: _("Confirm wallet address on your %s device"), + 'default': _("Check your %s device to continue"), } def callback_Failure(self, msg): @@ -38,18 +38,18 @@ def callback_ButtonRequest(self, msg): message = self.msg if not message: message = self.messages.get(msg.code, self.messages['default']) - self.handler.show_message(message.format(self.device), self.cancel) + self.handler.show_message(message % self.device, self.cancel) return self.proto.ButtonAck() def callback_PinMatrixRequest(self, msg): if msg.type == 2: - msg = _("Enter a new PIN for your {}:") + msg = _("Enter a new PIN for your %s:") elif msg.type == 3: - msg = (_("Re-enter the new PIN for your {}.\n\n" + msg = (_("Re-enter the new PIN for your %s.\n\n" "NOTE: the positions of the numbers have changed!")) else: - msg = _("Enter your current {} PIN:") - pin = self.handler.get_pin(msg.format(self.device)) + msg = _("Enter your current %s PIN:") + pin = self.handler.get_pin(msg % self.device) if not pin: return self.proto.Cancel() return self.proto.PinMatrixAck(pin=pin) @@ -57,9 +57,9 @@ def callback_PinMatrixRequest(self, msg): def callback_PassphraseRequest(self, req): if self.creating_wallet: msg = _("Enter a passphrase to generate this wallet. Each time " - "you use this wallet your {} will prompt you for the " + "you use this wallet your %s will prompt you for the " "passphrase. If you forget the passphrase you cannot " - "access the bitcoins in the wallet.").format(self.device) + "access the zcoins in the wallet.") % self.device else: msg = _("Enter the passphrase to unlock this wallet:") passphrase = self.handler.get_passphrase(msg, self.creating_wallet) @@ -70,8 +70,8 @@ def callback_PassphraseRequest(self, req): def callback_WordRequest(self, msg): self.step += 1 - msg = _("Step {}/24. Enter seed word as explained on " - "your {}:").format(self.step, self.device) + msg = _("Step %d/24. Enter seed word as explained on " + "your %s:") % (self.step, self.device) word = self.handler.get_word(msg) # Unfortunately the device can't handle self.proto.Cancel() return self.proto.WordAck(word=word) @@ -155,27 +155,27 @@ def get_xpub(self, bip32_path, xtype): def toggle_passphrase(self): if self.features.passphrase_protection: - self.msg = _("Confirm on your {} device to disable passphrases") + self.msg = _("Confirm on your %s device to disable passphrases") else: - self.msg = _("Confirm on your {} device to enable passphrases") + self.msg = _("Confirm on your %s device to enable passphrases") enabled = not self.features.passphrase_protection self.apply_settings(use_passphrase=enabled) def change_label(self, label): - self.msg = _("Confirm the new label on your {} device") + self.msg = _("Confirm the new label on your %s device") self.apply_settings(label=label) def change_homescreen(self, homescreen): - self.msg = _("Confirm on your {} device to change your home screen") + self.msg = _("Confirm on your %s device to change your home screen") self.apply_settings(homescreen=homescreen) def set_pin(self, remove): if remove: - self.msg = _("Confirm on your {} device to disable PIN protection") + self.msg = _("Confirm on your %s device to disable PIN protection") elif self.features.pin_protection: - self.msg = _("Confirm on your {} device to change your PIN") + self.msg = _("Confirm on your %s device to change your PIN") else: - self.msg = _("Confirm on your {} device to set a PIN") + self.msg = _("Confirm on your %s device to set a PIN") self.change_pin(remove) def clear_session(self): diff --git a/plugins/keepkey/cmdline.py b/plugins/keepkey/cmdline.py index cd30bc0ccc03..afefd4eb288d 100644 --- a/plugins/keepkey/cmdline.py +++ b/plugins/keepkey/cmdline.py @@ -1,4 +1,4 @@ -from electrum.plugins import hook +from electrum_xzc.plugins import hook from .keepkey import KeepKeyPlugin from ..hw_wallet import CmdLineHandler diff --git a/plugins/keepkey/plugin.py b/plugins/keepkey/plugin.py index acbad49c092b..cd3cedc5221a 100644 --- a/plugins/keepkey/plugin.py +++ b/plugins/keepkey/plugin.py @@ -2,15 +2,15 @@ from binascii import hexlify, unhexlify -from electrum.util import bfh, bh2u -from electrum.bitcoin import (b58_address_to_hash160, xpub_from_pubkey, - TYPE_ADDRESS, TYPE_SCRIPT, NetworkConstants, - is_segwit_address) -from electrum.i18n import _ -from electrum.plugins import BasePlugin -from electrum.transaction import deserialize -from electrum.keystore import Hardware_KeyStore, is_xpubkey, parse_xpubkey -from electrum.base_wizard import ScriptTypeNotSupported +from electrum_xzc.util import bfh, bh2u +from electrum_xzc.bitcoin import (b58_address_to_hash160, xpub_from_pubkey, + TYPE_ADDRESS, TYPE_SCRIPT, NetworkConstants, + is_segwit_address) +from electrum_xzc.i18n import _ +from electrum_xzc.plugins import BasePlugin +from electrum_xzc.transaction import deserialize +from electrum_xzc.keystore import Hardware_KeyStore, is_xpubkey, parse_xpubkey +from electrum_xzc.base_wizard import ScriptTypeNotSupported from ..hw_wallet import HW_PluginBase @@ -30,7 +30,7 @@ def get_client(self, force_pair=True): return self.plugin.get_client(self, force_pair) def decrypt_message(self, sequence, message, password): - raise RuntimeError(_('Encryption and decryption are not implemented by {}').format(self.device)) + raise RuntimeError(_('Encryption and decryption are not implemented by %s') % self.device) def sign_message(self, sequence, message, password): client = self.get_client() @@ -119,9 +119,9 @@ def create_client(self, device, handler): return None if not client.atleast_version(*self.minimum_firmware): - msg = (_('Outdated {} firmware for device labelled {}. Please ' - 'download the updated firmware from {}') - .format(self.device, client.label(), self.firmware_URL)) + msg = (_('Outdated %s firmware for device labelled %s. Please ' + 'download the updated firmware from %s') % + (self.device, client.label(), self.firmware_URL)) self.print_error(msg) handler.show_error(msg) return None @@ -139,18 +139,18 @@ def get_client(self, keystore, force_pair=True): return client def get_coin_name(self): - return "Testnet" if NetworkConstants.TESTNET else "Bitcoin" + return "Testnet" if NetworkConstants.TESTNET else "Zcoin" def initialize_device(self, device_id, wizard, handler): # Initialization method - msg = _("Choose how you want to initialize your {}.\n\n" + msg = _("Choose how you want to initialize your %s.\n\n" "The first two methods are secure as no secret information " "is entered into your computer.\n\n" "For the last two methods you input secrets on your keyboard " - "and upload them to your {}, and so you should " + "and upload them to your %s, and so you should " "only do those on a computer you know to be trustworthy " "and free of malware." - ).format(self.device, self.device) + ) % (self.device, self.device) choices = [ # Must be short as QT doesn't word-wrap radio button text (TIM_NEW, _("Let the device generate a completely new seed randomly")), @@ -194,7 +194,10 @@ def _initialize_device(self, settings, method, device_id, wizard, handler): label, language) wizard.loop.exit(0) - def setup_device(self, device_info, wizard, purpose): + def setup_device(self, device_info, wizard): + '''Called when creating a new wallet. Select the device to use. If + the device is uninitialized, go through the intialization + process.''' devmgr = self.device_manager() device_id = device_info.device.id_ client = devmgr.client_by_id(device_id) diff --git a/plugins/keepkey/qt_generic.py b/plugins/keepkey/qt_generic.py index a66e8f3d23f6..443c87ed7204 100644 --- a/plugins/keepkey/qt_generic.py +++ b/plugins/keepkey/qt_generic.py @@ -4,14 +4,14 @@ from PyQt5.Qt import Qt from PyQt5.Qt import QGridLayout, QInputDialog, QPushButton from PyQt5.Qt import QVBoxLayout, QLabel -from electrum_gui.qt.util import * +from electrum_xzc_gui.qt.util import * from .plugin import TIM_NEW, TIM_RECOVER, TIM_MNEMONIC from ..hw_wallet.qt import QtHandlerBase, QtPluginBase -from electrum.i18n import _ -from electrum.plugins import hook, DeviceMgr -from electrum.util import PrintError, UserCancelled, bh2u -from electrum.wallet import Wallet, Standard_Wallet +from electrum_xzc.i18n import _ +from electrum_xzc.plugins import hook, DeviceMgr +from electrum_xzc.util import PrintError, UserCancelled, bh2u +from electrum_xzc.wallet import Wallet, Standard_Wallet PASSPHRASE_HELP_SHORT =_( "Passphrases allow you to access new wallets, each " @@ -23,10 +23,10 @@ "accessible behind its own passphrase.") RECOMMEND_PIN = _( "You should enable PIN protection. Your PIN is the only protection " - "for your bitcoins if your device is lost or stolen.") + "for your zcoins if your device is lost or stolen.") PASSPHRASE_NOT_PIN = _( "If you forget a passphrase you will be unable to access any " - "bitcoins in the wallet behind it. A passphrase is not a PIN. " + "zcoins in the wallet behind it. A passphrase is not a PIN. " "Only change this if you are sure you understand it.") CHARACTER_RECOVERY = ( "Use the recovery cipher shown on your device to input your seed words. " @@ -194,7 +194,7 @@ def receive_menu(self, menu, addrs, wallet): if type(keystore) == self.keystore_class and len(addrs) == 1: def show_address(): keystore.thread.add(partial(self.show_address, wallet, addrs[0])) - menu.addAction(_("Show on {}").format(self.device), show_address) + menu.addAction(_("Show on %s") % self.device, show_address) def show_settings_dialog(self, window, keystore): device_id = self.choose_device(window, keystore) @@ -227,7 +227,7 @@ def clean_text(widget): bg = QButtonGroup() for i, count in enumerate([12, 18, 24]): rb = QRadioButton(gb) - rb.setText(_("{} words").format(count)) + rb.setText(_("%d words") % count) bg.addButton(rb) bg.setId(rb, i) hbox1.addWidget(rb) @@ -242,7 +242,7 @@ def clean_text(widget): else: msg = _("Enter the master private key beginning with xprv:") def set_enabled(): - from electrum.keystore import is_xprv + from electrum_xzc.keystore import is_xprv wizard.next_button.setEnabled(is_xprv(clean_text(text))) text.textChanged.connect(set_enabled) next_enabled = False @@ -292,7 +292,7 @@ class SettingsDialog(WindowModalDialog): their PIN.''' def __init__(self, window, plugin, keystore, device_id): - title = _("{} Settings").format(plugin.device) + title = _("%s Settings") % plugin.device super(SettingsDialog, self).__init__(window, title) self.setMaximumWidth(540) @@ -406,7 +406,7 @@ def wipe_device(): if wallet and sum(wallet.get_balance()): title = _("Confirm Device Wipe") msg = _("Are you SURE you want to wipe the device?\n" - "Your wallet still has bitcoins in it!") + "Your wallet still has zcoins in it!") if not self.question(msg, title=title, icon=QMessageBox.Critical): return @@ -457,9 +457,9 @@ def slider_released(): settings_glayout = QGridLayout() # Settings tab - Label - label_msg = QLabel(_("Name this {}. If you have mutiple devices " + label_msg = QLabel(_("Name this %s. If you have mutiple devices " "their labels help distinguish them.") - .format(plugin.device)) + % plugin.device) label_msg.setWordWrap(True) label_label = QLabel(_("Device Label")) label_edit = QLineEdit() @@ -481,8 +481,8 @@ def slider_released(): settings_glayout.addWidget(pin_button, 2, 1) pin_msg = QLabel(_("PIN protection is strongly recommended. " "A PIN is your only protection against someone " - "stealing your bitcoins if they obtain physical " - "access to your {}.").format(plugin.device)) + "stealing your zcoins if they obtain physical " + "access to your %s.") % plugin.device) pin_msg.setWordWrap(True) pin_msg.setStyleSheet("color: red") settings_glayout.addWidget(pin_msg, 3, 1, 1, -1) @@ -497,8 +497,8 @@ def slider_released(): homescreen_clear_button.clicked.connect(clear_homescreen) homescreen_msg = QLabel(_("You can set the homescreen on your " "device to personalize it. You must " - "choose a {} x {} monochrome black and " - "white image.").format(hs_rows, hs_cols)) + "choose a %d x %d monochrome black and " + "white image.") % (hs_rows, hs_cols)) homescreen_msg.setWordWrap(True) settings_glayout.addWidget(homescreen_label, 4, 0) settings_glayout.addWidget(homescreen_change_button, 4, 1) @@ -541,7 +541,7 @@ def slider_released(): clear_pin_button.clicked.connect(clear_pin) clear_pin_warning = QLabel( _("If you disable your PIN, anyone with physical access to your " - "{} device can spend your bitcoins.").format(plugin.device)) + "%s device can spend your zcoins.") % plugin.device) clear_pin_warning.setWordWrap(True) clear_pin_warning.setStyleSheet("color: red") advanced_glayout.addWidget(clear_pin_button, 0, 2) @@ -566,7 +566,7 @@ def slider_released(): wipe_device_msg.setWordWrap(True) wipe_device_warning = QLabel( _("Only wipe a device if you have the recovery seed written down " - "and the device wallet(s) are empty, otherwise the bitcoins " + "and the device wallet(s) are empty, otherwise the zcoins " "will be lost forever.")) wipe_device_warning.setWordWrap(True) wipe_device_warning.setStyleSheet("color: red") diff --git a/plugins/labels/__init__.py b/plugins/labels/__init__.py index 759637355b09..a0e95ecd4888 100644 --- a/plugins/labels/__init__.py +++ b/plugins/labels/__init__.py @@ -1,4 +1,4 @@ -from electrum.i18n import _ +from electrum_xzc.i18n import _ fullname = _('LabelSync') description = ' '.join([ diff --git a/plugins/labels/kivy.py b/plugins/labels/kivy.py index 508a049aeb99..42da713fc078 100644 --- a/plugins/labels/kivy.py +++ b/plugins/labels/kivy.py @@ -1,5 +1,5 @@ from .labels import LabelsPlugin -from electrum.plugins import hook +from electrum_xzc.plugins import hook class Plugin(LabelsPlugin): diff --git a/plugins/labels/labels.py b/plugins/labels/labels.py index 3e778d544f96..8439306bf646 100644 --- a/plugins/labels/labels.py +++ b/plugins/labels/labels.py @@ -7,9 +7,9 @@ import base64 -import electrum -from electrum.plugins import BasePlugin, hook -from electrum.i18n import _ +import electrum_xzc as electrum +from electrum_xzc.plugins import BasePlugin, hook +from electrum_xzc.i18n import _ class LabelsPlugin(BasePlugin): diff --git a/plugins/labels/qt.py b/plugins/labels/qt.py index 5fa9ee3a0a87..51aa598b2f74 100644 --- a/plugins/labels/qt.py +++ b/plugins/labels/qt.py @@ -4,11 +4,11 @@ from PyQt5.QtCore import * from PyQt5.QtWidgets import (QHBoxLayout, QLabel, QVBoxLayout) -from electrum.plugins import hook -from electrum.i18n import _ -from electrum_gui.qt import EnterButton -from electrum_gui.qt.util import ThreadedButton, Buttons -from electrum_gui.qt.util import WindowModalDialog, OkButton +from electrum_xzc.plugins import hook +from electrum_xzc.i18n import _ +from electrum_xzc_gui.qt import EnterButton +from electrum_xzc_gui.qt.util import ThreadedButton, Buttons +from electrum_xzc_gui.qt.util import WindowModalDialog, OkButton from .labels import LabelsPlugin diff --git a/plugins/ledger/__init__.py b/plugins/ledger/__init__.py index b97f02335ca6..ab01d55958bd 100644 --- a/plugins/ledger/__init__.py +++ b/plugins/ledger/__init__.py @@ -1,4 +1,4 @@ -from electrum.i18n import _ +from electrum_xzc.i18n import _ fullname = 'Ledger Wallet' description = 'Provides support for Ledger hardware wallet' diff --git a/plugins/ledger/auth2fa.py b/plugins/ledger/auth2fa.py index add619a82fdf..843fe6952cb4 100644 --- a/plugins/ledger/auth2fa.py +++ b/plugins/ledger/auth2fa.py @@ -4,12 +4,12 @@ import PyQt5.QtCore as QtCore from PyQt5.QtWidgets import * -from electrum.i18n import _ -from electrum_gui.qt.util import * -from electrum.util import print_msg +from electrum_xzc.i18n import _ +from electrum_xzc.qt.util import * +from electrum_xzc.util import print_msg import os, hashlib, websocket, logging, json, copy -from electrum_gui.qt.qrcodewidget import QRCodeWidget +from electrum_xzc_gui.qt.qrcodewidget import QRCodeWidget from btchip.btchip import * DEBUG = False @@ -164,7 +164,7 @@ def populate_modes(self): if not self.cfg['pair']: self.modes.addItem(_("Mobile - Not paired")) else: - self.modes.addItem(_("Mobile - {}").format(self.cfg['pair'][1])) + self.modes.addItem(_("Mobile - %s") % self.cfg['pair'][1]) self.modes.blockSignals(False) def update_dlg(self): diff --git a/plugins/ledger/cmdline.py b/plugins/ledger/cmdline.py index b0b252ac8d62..bc6f701822df 100644 --- a/plugins/ledger/cmdline.py +++ b/plugins/ledger/cmdline.py @@ -1,4 +1,4 @@ -from electrum.plugins import hook +from electrum_xzc.plugins import hook from .ledger import LedgerPlugin from ..hw_wallet import CmdLineHandler diff --git a/plugins/ledger/ledger.py b/plugins/ledger/ledger.py index 9bab60347544..f61b066b3cad 100644 --- a/plugins/ledger/ledger.py +++ b/plugins/ledger/ledger.py @@ -3,14 +3,14 @@ import sys import traceback -from electrum import bitcoin -from electrum.bitcoin import TYPE_ADDRESS, int_to_hex, var_int -from electrum.i18n import _ -from electrum.plugins import BasePlugin -from electrum.keystore import Hardware_KeyStore -from electrum.transaction import Transaction +from electrum_xzc import bitcoin +from electrum_xzc.bitcoin import TYPE_ADDRESS, int_to_hex, var_int +from electrum_xzc.i18n import _ +from electrum_xzc.plugins import BasePlugin +from electrum_xzc.keystore import Hardware_KeyStore +from electrum_xzc.transaction import Transaction from ..hw_wallet import HW_PluginBase -from electrum.util import print_error, is_verbose, bfh, bh2u, versiontuple +from electrum_xzc.util import print_error, is_verbose, bfh, bh2u try: import hid @@ -27,10 +27,10 @@ MSG_NEEDS_FW_UPDATE_GENERIC = _('Firmware version too old. Please update at') + \ ' https://www.ledgerwallet.com' -MSG_NEEDS_FW_UPDATE_SEGWIT = _('Firmware version (or "Bitcoin" app) too old for Segwit support. Please update at') + \ +MSG_NEEDS_FW_UPDATE_SEGWIT = _('Firmware version (or "Zcoin" app) too old for Segwit support. Please update at') + \ ' https://www.ledgerwallet.com' MULTI_OUTPUT_SUPPORT = '1.1.4' -SEGWIT_SUPPORT = '1.1.10' +SEGWIT_SUPPORT = '1.1.9' SEGWIT_SUPPORT_SPECIAL = '1.0.4' @@ -57,6 +57,9 @@ def label(self): def i4b(self, x): return pack('>I', x) + def versiontuple(self, v): + return tuple(map(int, (v.split(".")))) + def test_pin_unlocked(func): """Function decorator to test the Ledger for being unlocked, and if not, raise a human-readable exception. @@ -137,9 +140,9 @@ def perform_hw1_preflight(self): try: firmwareInfo = self.dongleObject.getFirmwareVersion() firmware = firmwareInfo['version'] - self.multiOutputSupported = versiontuple(firmware) >= versiontuple(MULTI_OUTPUT_SUPPORT) - self.nativeSegwitSupported = versiontuple(firmware) >= versiontuple(SEGWIT_SUPPORT) - self.segwitSupported = self.nativeSegwitSupported or (firmwareInfo['specialVersion'] == 0x20 and versiontuple(firmware) >= versiontuple(SEGWIT_SUPPORT_SPECIAL)) + self.multiOutputSupported = self.versiontuple(firmware) >= self.versiontuple(MULTI_OUTPUT_SUPPORT) + self.nativeSegwitSupported = self.versiontuple(firmware) >= self.versiontuple(SEGWIT_SUPPORT) + self.segwitSupported = self.nativeSegwitSupported or (firmwareInfo['specialVersion'] == 0x20 and self.versiontuple(firmware) >= self.versiontuple(SEGWIT_SUPPORT_SPECIAL)) if not checkFirmware(firmwareInfo): self.dongleObject.dongle.close() @@ -164,15 +167,12 @@ def perform_hw1_preflight(self): raise Exception('Aborted by user - please unplug the dongle and plug it again before retrying') pin = pin.encode() self.dongleObject.verifyPin(pin) + self.dongleObject.setAlternateCoinVersions(ADDRTYPE_P2PKH, ADDRTYPE_P2SH) except BTChipException as e: if (e.sw == 0x6faa): raise Exception("Dongle is temporarily locked - please unplug it and replug it again") if ((e.sw & 0xFFF0) == 0x63c0): raise Exception("Invalid PIN - please unplug the dongle and plug it again before retrying") - if e.sw == 0x6f00 and e.message == 'Invalid channel': - # based on docs 0x6f00 might be a more general error, hence we also compare message to be sure - raise Exception("Invalid channel.\n" - "Please make sure that 'Browser support' is disabled on your device.") raise e def checkDevice(self): @@ -237,7 +237,7 @@ def address_id_stripped(self, address): return address_path[2:] def decrypt_message(self, pubkey, message, password): - raise RuntimeError(_('Encryption and decryption are currently not supported for {}').format(self.device)) + raise RuntimeError(_('Encryption and decryption are currently not supported for %s') % self.device) def sign_message(self, sequence, message, password): self.signing = True @@ -523,12 +523,12 @@ def create_client(self, device, handler): client = Ledger_Client(client) return client - def setup_device(self, device_info, wizard, purpose): + def setup_device(self, device_info, wizard): devmgr = self.device_manager() device_id = device_info.device.id_ client = devmgr.client_by_id(device_id) client.handler = self.create_handler(wizard) - client.get_xpub("m/44'/0'", 'standard') # TODO replace by direct derivation once Nano S > 1.1 + client.get_xpub("m/44'/2'", 'standard') # TODO replace by direct derivation once Nano S > 1.1 def get_xpub(self, device_id, derivation, xtype, wizard): devmgr = self.device_manager() diff --git a/plugins/ledger/qt.py b/plugins/ledger/qt.py index cfdd7c383a05..69c18c462d9e 100644 --- a/plugins/ledger/qt.py +++ b/plugins/ledger/qt.py @@ -2,12 +2,12 @@ from PyQt5.Qt import QInputDialog, QLineEdit, QVBoxLayout, QLabel -from electrum.i18n import _ -from electrum.plugins import hook -from electrum.wallet import Standard_Wallet +from electrum_xzc.i18n import _ +from electrum_xzc.plugins import hook +from electrum_xzc.wallet import Standard_Wallet from .ledger import LedgerPlugin from ..hw_wallet.qt import QtHandlerBase, QtPluginBase -from electrum_gui.qt.util import * +from electrum_xzc_gui.qt.util import * #from btchip.btchipPersoWizard import StartBTChipPersoDialog diff --git a/plugins/trezor/__init__.py b/plugins/trezor/__init__.py index e3b08ed65b85..0118d8615321 100644 --- a/plugins/trezor/__init__.py +++ b/plugins/trezor/__init__.py @@ -1,4 +1,4 @@ -from electrum.i18n import _ +from electrum_xzc.i18n import _ fullname = 'TREZOR Wallet' description = _('Provides support for TREZOR hardware wallet') diff --git a/plugins/trezor/clientbase.py b/plugins/trezor/clientbase.py index f890c59b0840..297435b6bbb4 100644 --- a/plugins/trezor/clientbase.py +++ b/plugins/trezor/clientbase.py @@ -1,25 +1,25 @@ import time from struct import pack -from electrum.i18n import _ -from electrum.util import PrintError, UserCancelled -from electrum.keystore import bip39_normalize_passphrase -from electrum.bitcoin import serialize_xpub +from electrum_xzc.i18n import _ +from electrum_xzc.util import PrintError, UserCancelled +from electrum_xzc.keystore import bip39_normalize_passphrase +from electrum_xzc.bitcoin import serialize_xpub class GuiMixin(object): # Requires: self.proto, self.device messages = { - 3: _("Confirm the transaction output on your {} device"), - 4: _("Confirm internal entropy on your {} device to begin"), - 5: _("Write down the seed word shown on your {}"), - 6: _("Confirm on your {} that you want to wipe it clean"), - 7: _("Confirm on your {} device the message to sign"), + 3: _("Confirm the transaction output on your %s device"), + 4: _("Confirm internal entropy on your %s device to begin"), + 5: _("Write down the seed word shown on your %s"), + 6: _("Confirm on your %s that you want to wipe it clean"), + 7: _("Confirm on your %s device the message to sign"), 8: _("Confirm the total amount spent and the transaction fee on your " - "{} device"), - 10: _("Confirm wallet address on your {} device"), - 'default': _("Check your {} device to continue"), + "%s device"), + 10: _("Confirm wallet address on your %s device"), + 'default': _("Check your %s device to continue"), } def callback_Failure(self, msg): @@ -38,18 +38,18 @@ def callback_ButtonRequest(self, msg): message = self.msg if not message: message = self.messages.get(msg.code, self.messages['default']) - self.handler.show_message(message.format(self.device), self.cancel) + self.handler.show_message(message % self.device, self.cancel) return self.proto.ButtonAck() def callback_PinMatrixRequest(self, msg): if msg.type == 2: - msg = _("Enter a new PIN for your {}:") + msg = _("Enter a new PIN for your %s:") elif msg.type == 3: - msg = (_("Re-enter the new PIN for your {}.\n\n" + msg = (_("Re-enter the new PIN for your %s.\n\n" "NOTE: the positions of the numbers have changed!")) else: - msg = _("Enter your current {} PIN:") - pin = self.handler.get_pin(msg.format(self.device)) + msg = _("Enter your current %s PIN:") + pin = self.handler.get_pin(msg % self.device) if not pin: return self.proto.Cancel() return self.proto.PinMatrixAck(pin=pin) @@ -57,9 +57,9 @@ def callback_PinMatrixRequest(self, msg): def callback_PassphraseRequest(self, req): if self.creating_wallet: msg = _("Enter a passphrase to generate this wallet. Each time " - "you use this wallet your {} will prompt you for the " + "you use this wallet your %s will prompt you for the " "passphrase. If you forget the passphrase you cannot " - "access the bitcoins in the wallet.").format(self.device) + "access the zcoins in the wallet.") % self.device else: msg = _("Enter the passphrase to unlock this wallet:") passphrase = self.handler.get_passphrase(msg, self.creating_wallet) @@ -70,8 +70,8 @@ def callback_PassphraseRequest(self, req): def callback_WordRequest(self, msg): self.step += 1 - msg = _("Step {}/24. Enter seed word as explained on " - "your {}:").format(self.step, self.device) + msg = _("Step %d/24. Enter seed word as explained on " + "your %s:") % (self.step, self.device) word = self.handler.get_word(msg) # Unfortunately the device can't handle self.proto.Cancel() return self.proto.WordAck(word=word) @@ -155,27 +155,27 @@ def get_xpub(self, bip32_path, xtype): def toggle_passphrase(self): if self.features.passphrase_protection: - self.msg = _("Confirm on your {} device to disable passphrases") + self.msg = _("Confirm on your %s device to disable passphrases") else: - self.msg = _("Confirm on your {} device to enable passphrases") + self.msg = _("Confirm on your %s device to enable passphrases") enabled = not self.features.passphrase_protection self.apply_settings(use_passphrase=enabled) def change_label(self, label): - self.msg = _("Confirm the new label on your {} device") + self.msg = _("Confirm the new label on your %s device") self.apply_settings(label=label) def change_homescreen(self, homescreen): - self.msg = _("Confirm on your {} device to change your home screen") + self.msg = _("Confirm on your %s device to change your home screen") self.apply_settings(homescreen=homescreen) def set_pin(self, remove): if remove: - self.msg = _("Confirm on your {} device to disable PIN protection") + self.msg = _("Confirm on your %s device to disable PIN protection") elif self.features.pin_protection: - self.msg = _("Confirm on your {} device to change your PIN") + self.msg = _("Confirm on your %s device to change your PIN") else: - self.msg = _("Confirm on your {} device to set a PIN") + self.msg = _("Confirm on your %s device to set a PIN") self.change_pin(remove) def clear_session(self): diff --git a/plugins/trezor/cmdline.py b/plugins/trezor/cmdline.py index 9149eeee444f..7161afb2810c 100644 --- a/plugins/trezor/cmdline.py +++ b/plugins/trezor/cmdline.py @@ -1,4 +1,4 @@ -from electrum.plugins import hook +from electrum_xzc.plugins import hook from .trezor import TrezorPlugin from ..hw_wallet import CmdLineHandler diff --git a/plugins/trezor/plugin.py b/plugins/trezor/plugin.py new file mode 100644 index 000000000000..bd9e1afcd08e --- /dev/null +++ b/plugins/trezor/plugin.py @@ -0,0 +1,411 @@ +import threading + +from binascii import hexlify, unhexlify + +from electrum_xzc.util import bfh, bh2u +from electrum_xzc.bitcoin import (b58_address_to_hash160, xpub_from_pubkey, + TYPE_ADDRESS, TYPE_SCRIPT, NetworkConstants) +from electrum_xzc.i18n import _ +from electrum_xzc.plugins import BasePlugin +from electrum_xzc.transaction import deserialize +from electrum_xzc.keystore import Hardware_KeyStore, is_xpubkey, parse_xpubkey + +from ..hw_wallet import HW_PluginBase + + +# TREZOR initialization methods +TIM_NEW, TIM_RECOVER, TIM_MNEMONIC, TIM_PRIVKEY = range(0, 4) + +# script "generation" +SCRIPT_GEN_LEGACY, SCRIPT_GEN_P2SH_SEGWIT, SCRIPT_GEN_NATIVE_SEGWIT = range(0, 3) + +class TrezorCompatibleKeyStore(Hardware_KeyStore): + + def get_derivation(self): + return self.derivation + + def get_script_gen(self): + def is_p2sh_segwit(): + return self.derivation.startswith("m/49'/") + + def is_native_segwit(): + return self.derivation.startswith("m/84'/") + + if is_native_segwit(): + return SCRIPT_GEN_NATIVE_SEGWIT + elif is_p2sh_segwit(): + return SCRIPT_GEN_P2SH_SEGWIT + else: + return SCRIPT_GEN_LEGACY + + def get_client(self, force_pair=True): + return self.plugin.get_client(self, force_pair) + + def decrypt_message(self, sequence, message, password): + raise RuntimeError(_('Encryption and decryption are not implemented by %s') % self.device) + + def sign_message(self, sequence, message, password): + client = self.get_client() + address_path = self.get_derivation() + "/%d/%d"%sequence + address_n = client.expand_path(address_path) + msg_sig = client.sign_message(self.plugin.get_coin_name(), address_n, message) + return msg_sig.signature + + def sign_transaction(self, tx, password): + if tx.is_complete(): + return + # previous transactions used as inputs + prev_tx = {} + # path of the xpubs that are involved + xpub_path = {} + for txin in tx.inputs(): + pubkeys, x_pubkeys = tx.get_sorted_pubkeys(txin) + tx_hash = txin['prevout_hash'] + prev_tx[tx_hash] = txin['prev_tx'] + for x_pubkey in x_pubkeys: + if not is_xpubkey(x_pubkey): + continue + xpub, s = parse_xpubkey(x_pubkey) + if xpub == self.get_master_public_key(): + xpub_path[xpub] = self.get_derivation() + + self.plugin.sign_transaction(self, tx, prev_tx, xpub_path) + + +class TrezorCompatiblePlugin(HW_PluginBase): + # Derived classes provide: + # + # class-static variables: client_class, firmware_URL, handler_class, + # libraries_available, libraries_URL, minimum_firmware, + # wallet_class, ckd_public, types, HidTransport + + MAX_LABEL_LEN = 32 + + def __init__(self, parent, config, name): + HW_PluginBase.__init__(self, parent, config, name) + self.main_thread = threading.current_thread() + # FIXME: move to base class when Ledger is fixed + if self.libraries_available: + self.device_manager().register_devices(self.DEVICE_IDS) + + def _try_hid(self, device): + self.print_error("Trying to connect over USB...") + try: + return self.hid_transport(device) + except BaseException as e: + # see fdb810ba622dc7dbe1259cbafb5b28e19d2ab114 + # raise + self.print_error("cannot connect at", device.path, str(e)) + return None + + def _try_bridge(self, device): + self.print_error("Trying to connect over Trezor Bridge...") + try: + return self.bridge_transport({'path': hexlify(device.path)}) + except BaseException as e: + self.print_error("cannot connect to bridge", str(e)) + return None + + def create_client(self, device, handler): + # disable bridge because it seems to never returns if keepkey is plugged + #transport = self._try_bridge(device) or self._try_hid(device) + transport = self._try_hid(device) + if not transport: + self.print_error("cannot connect to device") + return + + self.print_error("connected to device at", device.path) + + client = self.client_class(transport, handler, self) + + # Try a ping for device sanity + try: + client.ping('t') + except BaseException as e: + self.print_error("ping failed", str(e)) + return None + + if not client.atleast_version(*self.minimum_firmware): + msg = (_('Outdated %s firmware for device labelled %s. Please ' + 'download the updated firmware from %s') % + (self.device, client.label(), self.firmware_URL)) + self.print_error(msg) + handler.show_error(msg) + return None + + return client + + def get_client(self, keystore, force_pair=True): + devmgr = self.device_manager() + handler = keystore.handler + with devmgr.hid_lock: + client = devmgr.client_for_keystore(self, handler, keystore, force_pair) + # returns the client for a given keystore. can use xpub + if client: + client.used() + return client + + def get_coin_name(self): + return "Testnet" if NetworkConstants.TESTNET else "Zcoin" + + def initialize_device(self, device_id, wizard, handler): + # Initialization method + msg = _("Choose how you want to initialize your %s.\n\n" + "The first two methods are secure as no secret information " + "is entered into your computer.\n\n" + "For the last two methods you input secrets on your keyboard " + "and upload them to your %s, and so you should " + "only do those on a computer you know to be trustworthy " + "and free of malware." + ) % (self.device, self.device) + choices = [ + # Must be short as QT doesn't word-wrap radio button text + (TIM_NEW, _("Let the device generate a completely new seed randomly")), + (TIM_RECOVER, _("Recover from a seed you have previously written down")), + (TIM_MNEMONIC, _("Upload a BIP39 mnemonic to generate the seed")), + (TIM_PRIVKEY, _("Upload a master private key")) + ] + def f(method): + import threading + settings = self.request_trezor_init_settings(wizard, method, self.device) + t = threading.Thread(target = self._initialize_device, args=(settings, method, device_id, wizard, handler)) + t.setDaemon(True) + t.start() + wizard.loop.exec_() + wizard.choice_dialog(title=_('Initialize Device'), message=msg, choices=choices, run_next=f) + + def _initialize_device(self, settings, method, device_id, wizard, handler): + item, label, pin_protection, passphrase_protection = settings + + if method == TIM_RECOVER: + # FIXME the PIN prompt will appear over this message + # which makes this unreadable + handler.show_error(_( + "You will be asked to enter 24 words regardless of your " + "seed's actual length. If you enter a word incorrectly or " + "misspell it, you cannot change it or go back - you will need " + "to start again from the beginning.\n\nSo please enter " + "the words carefully!")) + + language = 'english' + devmgr = self.device_manager() + client = devmgr.client_by_id(device_id) + + if method == TIM_NEW: + strength = 64 * (item + 2) # 128, 192 or 256 + u2f_counter = 0 + skip_backup = False + client.reset_device(True, strength, passphrase_protection, + pin_protection, label, language, + u2f_counter, skip_backup) + elif method == TIM_RECOVER: + word_count = 6 * (item + 2) # 12, 18 or 24 + client.step = 0 + client.recovery_device(word_count, passphrase_protection, + pin_protection, label, language) + elif method == TIM_MNEMONIC: + pin = pin_protection # It's the pin, not a boolean + client.load_device_by_mnemonic(str(item), pin, + passphrase_protection, + label, language) + else: + pin = pin_protection # It's the pin, not a boolean + client.load_device_by_xprv(item, pin, passphrase_protection, + label, language) + wizard.loop.exit(0) + + def setup_device(self, device_info, wizard): + '''Called when creating a new wallet. Select the device to use. If + the device is uninitialized, go through the intialization + process.''' + devmgr = self.device_manager() + device_id = device_info.device.id_ + client = devmgr.client_by_id(device_id) + # fixme: we should use: client.handler = wizard + client.handler = self.create_handler(wizard) + if not device_info.initialized: + self.initialize_device(device_id, wizard, client.handler) + client.get_xpub('m', 'standard') + client.used() + + def get_xpub(self, device_id, derivation, xtype, wizard): + devmgr = self.device_manager() + client = devmgr.client_by_id(device_id) + client.handler = wizard + xpub = client.get_xpub(derivation, xtype) + client.used() + return xpub + + def sign_transaction(self, keystore, tx, prev_tx, xpub_path): + self.prev_tx = prev_tx + self.xpub_path = xpub_path + client = self.get_client(keystore) + inputs = self.tx_inputs(tx, True, keystore.get_script_gen()) + outputs = self.tx_outputs(keystore.get_derivation(), tx, keystore.get_script_gen()) + signed_tx = client.sign_tx(self.get_coin_name(), inputs, outputs, lock_time=tx.locktime)[1] + raw = bh2u(signed_tx) + tx.update_signatures(raw) + + def show_address(self, wallet, address): + client = self.get_client(wallet.keystore) + if not client.atleast_version(1, 3): + wallet.keystore.handler.show_error(_("Your device firmware is too old")) + return + change, index = wallet.get_address_index(address) + derivation = wallet.keystore.derivation + address_path = "%s/%d/%d"%(derivation, change, index) + address_n = client.expand_path(address_path) + script_gen = wallet.keystore.get_script_gen() + if script_gen == SCRIPT_GEN_NATIVE_SEGWIT: + script_type = self.types.InputScriptType.SPENDWITNESS + elif script_gen == SCRIPT_GEN_P2SH_SEGWIT: + script_type = self.types.InputScriptType.SPENDP2SHWITNESS + else: + script_type = self.types.InputScriptType.SPENDADDRESS + client.get_address(self.get_coin_name(), address_n, True, script_type=script_type) + + def tx_inputs(self, tx, for_sig=False, script_gen=SCRIPT_GEN_LEGACY): + inputs = [] + for txin in tx.inputs(): + txinputtype = self.types.TxInputType() + if txin['type'] == 'coinbase': + prev_hash = "\0"*32 + prev_index = 0xffffffff # signed int -1 + else: + if for_sig: + x_pubkeys = txin['x_pubkeys'] + if len(x_pubkeys) == 1: + x_pubkey = x_pubkeys[0] + xpub, s = parse_xpubkey(x_pubkey) + xpub_n = self.client_class.expand_path(self.xpub_path[xpub]) + txinputtype._extend_address_n(xpub_n + s) + if script_gen == SCRIPT_GEN_NATIVE_SEGWIT: + txinputtype.script_type = self.types.InputScriptType.SPENDWITNESS + elif script_gen == SCRIPT_GEN_P2SH_SEGWIT: + txinputtype.script_type = self.types.InputScriptType.SPENDP2SHWITNESS + else: + txinputtype.script_type = self.types.InputScriptType.SPENDADDRESS + else: + def f(x_pubkey): + if is_xpubkey(x_pubkey): + xpub, s = parse_xpubkey(x_pubkey) + else: + xpub = xpub_from_pubkey(0, bfh(x_pubkey)) + s = [] + node = self.ckd_public.deserialize(xpub) + return self.types.HDNodePathType(node=node, address_n=s) + pubkeys = list(map(f, x_pubkeys)) + multisig = self.types.MultisigRedeemScriptType( + pubkeys=pubkeys, + signatures=list(map(lambda x: bfh(x)[:-1] if x else b'', txin.get('signatures'))), + m=txin.get('num_sig'), + ) + if script_gen == SCRIPT_GEN_NATIVE_SEGWIT: + script_type = self.types.InputScriptType.SPENDWITNESS + elif script_gen == SCRIPT_GEN_P2SH_SEGWIT: + script_type = self.types.InputScriptType.SPENDP2SHWITNESS + else: + script_type = self.types.InputScriptType.SPENDMULTISIG + txinputtype = self.types.TxInputType( + script_type=script_type, + multisig=multisig + ) + # find which key is mine + for x_pubkey in x_pubkeys: + if is_xpubkey(x_pubkey): + xpub, s = parse_xpubkey(x_pubkey) + if xpub in self.xpub_path: + xpub_n = self.client_class.expand_path(self.xpub_path[xpub]) + txinputtype._extend_address_n(xpub_n + s) + break + + prev_hash = unhexlify(txin['prevout_hash']) + prev_index = txin['prevout_n'] + + if 'value' in txin: + txinputtype.amount = txin['value'] + txinputtype.prev_hash = prev_hash + txinputtype.prev_index = prev_index + + if 'scriptSig' in txin: + script_sig = bfh(txin['scriptSig']) + txinputtype.script_sig = script_sig + + txinputtype.sequence = txin.get('sequence', 0xffffffff - 1) + + inputs.append(txinputtype) + + return inputs + + def tx_outputs(self, derivation, tx, script_gen=SCRIPT_GEN_LEGACY): + outputs = [] + has_change = False + + for _type, address, amount in tx.outputs(): + info = tx.output_info.get(address) + if info is not None and not has_change: + has_change = True # no more than one change address + index, xpubs, m = info + if len(xpubs) == 1: + if script_gen == SCRIPT_GEN_NATIVE_SEGWIT: + script_type = self.types.OutputScriptType.PAYTOWITNESS + elif script_gen == SCRIPT_GEN_P2SH_SEGWIT: + script_type = self.types.OutputScriptType.PAYTOP2SHWITNESS + else: + script_type = self.types.OutputScriptType.PAYTOADDRESS + address_n = self.client_class.expand_path(derivation + "/%d/%d"%index) + txoutputtype = self.types.TxOutputType( + amount = amount, + script_type = script_type, + address_n = address_n, + ) + else: + if script_gen == SCRIPT_GEN_NATIVE_SEGWIT: + script_type = self.types.OutputScriptType.PAYTOWITNESS + elif script_gen == SCRIPT_GEN_P2SH_SEGWIT: + script_type = self.types.OutputScriptType.PAYTOP2SHWITNESS + else: + script_type = self.types.OutputScriptType.PAYTOMULTISIG + address_n = self.client_class.expand_path("/%d/%d"%index) + nodes = map(self.ckd_public.deserialize, xpubs) + pubkeys = [ self.types.HDNodePathType(node=node, address_n=address_n) for node in nodes] + multisig = self.types.MultisigRedeemScriptType( + pubkeys = pubkeys, + signatures = [b''] * len(pubkeys), + m = m) + txoutputtype = self.types.TxOutputType( + multisig = multisig, + amount = amount, + address_n = self.client_class.expand_path(derivation + "/%d/%d"%index), + script_type = script_type) + else: + txoutputtype = self.types.TxOutputType() + txoutputtype.amount = amount + if _type == TYPE_SCRIPT: + txoutputtype.script_type = self.types.OutputScriptType.PAYTOOPRETURN + txoutputtype.op_return_data = address[2:] + elif _type == TYPE_ADDRESS: + txoutputtype.script_type = self.types.OutputScriptType.PAYTOADDRESS + txoutputtype.address = address + + outputs.append(txoutputtype) + + return outputs + + def electrum_tx_to_txtype(self, tx): + t = self.types.TransactionType() + d = deserialize(tx.raw) + t.version = d['version'] + t.lock_time = d['lockTime'] + inputs = self.tx_inputs(tx) + t._extend_inputs(inputs) + for vout in d['outputs']: + o = t._add_bin_outputs() + o.amount = vout['value'] + o.script_pubkey = bfh(vout['scriptPubKey']) + return t + + # This function is called from the trezor libraries (via tx_api) + def get_tx(self, tx_hash): + tx = self.prev_tx[tx_hash] + return self.electrum_tx_to_txtype(tx) diff --git a/plugins/trezor/qt_generic.py b/plugins/trezor/qt_generic.py index 2440daee7672..8a3a036efbb1 100644 --- a/plugins/trezor/qt_generic.py +++ b/plugins/trezor/qt_generic.py @@ -4,14 +4,14 @@ from PyQt5.Qt import Qt from PyQt5.Qt import QGridLayout, QInputDialog, QPushButton from PyQt5.Qt import QVBoxLayout, QLabel -from electrum_gui.qt.util import * -from .trezor import TIM_NEW, TIM_RECOVER, TIM_MNEMONIC +from electrum_xzc_gui.qt.util import * +from .plugin import TIM_NEW, TIM_RECOVER, TIM_MNEMONIC from ..hw_wallet.qt import QtHandlerBase, QtPluginBase -from electrum.i18n import _ -from electrum.plugins import hook, DeviceMgr -from electrum.util import PrintError, UserCancelled, bh2u -from electrum.wallet import Wallet, Standard_Wallet +from electrum_xzc.i18n import _ +from electrum_xzc.plugins import hook, DeviceMgr +from electrum_xzc.util import PrintError, UserCancelled, bh2u +from electrum_xzc.wallet import Wallet, Standard_Wallet PASSPHRASE_HELP_SHORT =_( "Passphrases allow you to access new wallets, each " @@ -23,10 +23,10 @@ "accessible behind its own passphrase.") RECOMMEND_PIN = _( "You should enable PIN protection. Your PIN is the only protection " - "for your bitcoins if your device is lost or stolen.") + "for your zcoins if your device is lost or stolen.") PASSPHRASE_NOT_PIN = _( "If you forget a passphrase you will be unable to access any " - "bitcoins in the wallet behind it. A passphrase is not a PIN. " + "zcoins in the wallet behind it. A passphrase is not a PIN. " "Only change this if you are sure you understand it.") CHARACTER_RECOVERY = ( "Use the recovery cipher shown on your device to input your seed words. " @@ -188,14 +188,13 @@ def create_handler(self, window): @hook def receive_menu(self, menu, addrs, wallet): - if len(addrs) != 1: + if type(wallet) is not Standard_Wallet: return - for keystore in wallet.get_keystores(): - if type(keystore) == self.keystore_class: - def show_address(): - keystore.thread.add(partial(self.show_address, wallet, keystore, addrs[0])) - menu.addAction(_("Show on {}").format(self.device), show_address) - break + keystore = wallet.get_keystore() + if type(keystore) == self.keystore_class and len(addrs) == 1: + def show_address(): + keystore.thread.add(partial(self.show_address, wallet, addrs[0])) + menu.addAction(_("Show on %s") % self.device, show_address) def show_settings_dialog(self, window, keystore): device_id = self.choose_device(window, keystore) @@ -243,7 +242,7 @@ def clean_text(widget): else: msg = _("Enter the master private key beginning with xprv:") def set_enabled(): - from electrum.keystore import is_xprv + from electrum_xzc.keystore import is_xprv wizard.next_button.setEnabled(is_xprv(clean_text(text))) text.textChanged.connect(set_enabled) next_enabled = False @@ -293,7 +292,7 @@ class SettingsDialog(WindowModalDialog): their PIN.''' def __init__(self, window, plugin, keystore, device_id): - title = _("{} Settings").format(plugin.device) + title = _("%s Settings") % plugin.device super(SettingsDialog, self).__init__(window, title) self.setMaximumWidth(540) @@ -413,7 +412,7 @@ def wipe_device(): if wallet and sum(wallet.get_balance()): title = _("Confirm Device Wipe") msg = _("Are you SURE you want to wipe the device?\n" - "Your wallet still has bitcoins in it!") + "Your wallet still has zcoins in it!") if not self.question(msg, title=title, icon=QMessageBox.Critical): return @@ -464,9 +463,9 @@ def slider_released(): settings_glayout = QGridLayout() # Settings tab - Label - label_msg = QLabel(_("Name this {}. If you have mutiple devices " + label_msg = QLabel(_("Name this %s. If you have mutiple devices " "their labels help distinguish them.") - .format(plugin.device)) + % plugin.device) label_msg.setWordWrap(True) label_label = QLabel(_("Device Label")) label_edit = QLineEdit() @@ -488,8 +487,8 @@ def slider_released(): settings_glayout.addWidget(pin_button, 2, 1) pin_msg = QLabel(_("PIN protection is strongly recommended. " "A PIN is your only protection against someone " - "stealing your bitcoins if they obtain physical " - "access to your {}.").format(plugin.device)) + "stealing your zcoins if they obtain physical " + "access to your %s.") % plugin.device) pin_msg.setWordWrap(True) pin_msg.setStyleSheet("color: red") settings_glayout.addWidget(pin_msg, 3, 1, 1, -1) @@ -504,8 +503,8 @@ def slider_released(): homescreen_clear_button.clicked.connect(clear_homescreen) homescreen_msg = QLabel(_("You can set the homescreen on your " "device to personalize it. You must " - "choose a {} x {} monochrome black and " - "white image.").format(hs_rows, hs_cols)) + "choose a %d x %d monochrome black and " + "white image.") % (hs_rows, hs_cols)) homescreen_msg.setWordWrap(True) settings_glayout.addWidget(homescreen_label, 4, 0) settings_glayout.addWidget(homescreen_change_button, 4, 1) @@ -548,7 +547,7 @@ def slider_released(): clear_pin_button.clicked.connect(clear_pin) clear_pin_warning = QLabel( _("If you disable your PIN, anyone with physical access to your " - "{} device can spend your bitcoins.").format(plugin.device)) + "%s device can spend your zcoins.") % plugin.device) clear_pin_warning.setWordWrap(True) clear_pin_warning.setStyleSheet("color: red") advanced_glayout.addWidget(clear_pin_button, 0, 2) @@ -573,7 +572,7 @@ def slider_released(): wipe_device_msg.setWordWrap(True) wipe_device_warning = QLabel( _("Only wipe a device if you have the recovery seed written down " - "and the device wallet(s) are empty, otherwise the bitcoins " + "and the device wallet(s) are empty, otherwise the zcoins " "will be lost forever.")) wipe_device_warning.setWordWrap(True) wipe_device_warning.setStyleSheet("color: red") diff --git a/plugins/trezor/trezor.py b/plugins/trezor/trezor.py index f80346c71ac3..5ee31d390e96 100644 --- a/plugins/trezor/trezor.py +++ b/plugins/trezor/trezor.py @@ -1,451 +1,36 @@ -import threading +from .plugin import TrezorCompatiblePlugin, TrezorCompatibleKeyStore -from binascii import hexlify, unhexlify -from electrum.util import bfh, bh2u, versiontuple -from electrum.bitcoin import (b58_address_to_hash160, xpub_from_pubkey, - TYPE_ADDRESS, TYPE_SCRIPT, NetworkConstants) -from electrum.i18n import _ -from electrum.plugins import BasePlugin, Device -from electrum.transaction import deserialize -from electrum.keystore import Hardware_KeyStore, is_xpubkey, parse_xpubkey - -from ..hw_wallet import HW_PluginBase - - -# TREZOR initialization methods -TIM_NEW, TIM_RECOVER, TIM_MNEMONIC, TIM_PRIVKEY = range(0, 4) - -# script "generation" -SCRIPT_GEN_LEGACY, SCRIPT_GEN_P2SH_SEGWIT, SCRIPT_GEN_NATIVE_SEGWIT = range(0, 3) - - -class TrezorKeyStore(Hardware_KeyStore): +class TrezorKeyStore(TrezorCompatibleKeyStore): hw_type = 'trezor' device = 'TREZOR' - def get_derivation(self): - return self.derivation - - def get_script_gen(self): - def is_p2sh_segwit(): - return self.derivation.startswith("m/49'/") - - def is_native_segwit(): - return self.derivation.startswith("m/84'/") - - if is_native_segwit(): - return SCRIPT_GEN_NATIVE_SEGWIT - elif is_p2sh_segwit(): - return SCRIPT_GEN_P2SH_SEGWIT - else: - return SCRIPT_GEN_LEGACY - - def get_client(self, force_pair=True): - return self.plugin.get_client(self, force_pair) - - def decrypt_message(self, sequence, message, password): - raise RuntimeError(_('Encryption and decryption are not implemented by {}').format(self.device)) - - def sign_message(self, sequence, message, password): - client = self.get_client() - address_path = self.get_derivation() + "/%d/%d"%sequence - address_n = client.expand_path(address_path) - msg_sig = client.sign_message(self.plugin.get_coin_name(), address_n, message) - return msg_sig.signature - - def sign_transaction(self, tx, password): - if tx.is_complete(): - return - # previous transactions used as inputs - prev_tx = {} - # path of the xpubs that are involved - xpub_path = {} - for txin in tx.inputs(): - pubkeys, x_pubkeys = tx.get_sorted_pubkeys(txin) - tx_hash = txin['prevout_hash'] - prev_tx[tx_hash] = txin['prev_tx'] - for x_pubkey in x_pubkeys: - if not is_xpubkey(x_pubkey): - continue - xpub, s = parse_xpubkey(x_pubkey) - if xpub == self.get_master_public_key(): - xpub_path[xpub] = self.get_derivation() - - self.plugin.sign_transaction(self, tx, prev_tx, xpub_path) - - -class TrezorPlugin(HW_PluginBase): - # Derived classes provide: - # - # class-static variables: client_class, firmware_URL, handler_class, - # libraries_available, libraries_URL, minimum_firmware, - # wallet_class, ckd_public, types - +class TrezorPlugin(TrezorCompatiblePlugin): firmware_URL = 'https://wallet.trezor.io' libraries_URL = 'https://github.com/trezor/python-trezor' minimum_firmware = (1, 5, 2) keystore_class = TrezorKeyStore - minimum_library = (0, 9, 0) - - MAX_LABEL_LEN = 32 - - def __init__(self, parent, config, name): - HW_PluginBase.__init__(self, parent, config, name) - self.main_thread = threading.current_thread() + def __init__(self, *args): try: - # Minimal test if python-trezor is installed + from . import client import trezorlib - try: - library_version = trezorlib.__version__ - except AttributeError: - # python-trezor only introduced __version__ in 0.9.0 - library_version = 'unknown' - if library_version == 'unknown' or \ - versiontuple(library_version) < self.minimum_library: - self.libraries_available_message = ( - _("Library version for '{}' is too old.").format(name) - + '\nInstalled: {}, Needed: {}' - .format(library_version, self.minimum_library)) - self.print_stderr(self.libraries_available_message) - raise ImportError() + import trezorlib.ckd_public + import trezorlib.transport_hid + import trezorlib.messages + self.client_class = client.TrezorClient + self.ckd_public = trezorlib.ckd_public + self.types = trezorlib.messages + self.DEVICE_IDS = (trezorlib.transport_hid.DEV_TREZOR1, trezorlib.transport_hid.DEV_TREZOR2) self.libraries_available = True except ImportError: self.libraries_available = False - return - - from . import client - import trezorlib.ckd_public - import trezorlib.messages - self.client_class = client.TrezorClient - self.ckd_public = trezorlib.ckd_public - self.types = trezorlib.messages - self.DEVICE_IDS = ('TREZOR',) - - self.device_manager().register_enumerate_func(self.enumerate) - - def enumerate(self): - from trezorlib.device import TrezorDevice - return [Device(d.get_path(), -1, d.get_path(), 'TREZOR', 0) for d in TrezorDevice.enumerate()] - - def create_client(self, device, handler): - from trezorlib.device import TrezorDevice - try: - self.print_error("connecting to device at", device.path) - transport = TrezorDevice.find_by_path(device.path) - except BaseException as e: - self.print_error("cannot connect at", device.path, str(e)) - return None - - if not transport: - self.print_error("cannot connect at", device.path) - return - - self.print_error("connected to device at", device.path) - client = self.client_class(transport, handler, self) - - # Try a ping for device sanity - try: - client.ping('t') - except BaseException as e: - self.print_error("ping failed", str(e)) - return None - - if not client.atleast_version(*self.minimum_firmware): - msg = (_('Outdated {} firmware for device labelled {}. Please ' - 'download the updated firmware from {}') - .format(self.device, client.label(), self.firmware_URL)) - self.print_error(msg) - handler.show_error(msg) - return None - - return client - - def get_client(self, keystore, force_pair=True): - devmgr = self.device_manager() - handler = keystore.handler - with devmgr.hid_lock: - client = devmgr.client_for_keystore(self, handler, keystore, force_pair) - # returns the client for a given keystore. can use xpub - if client: - client.used() - return client - - def get_coin_name(self): - return "Testnet" if NetworkConstants.TESTNET else "Bitcoin" - - def initialize_device(self, device_id, wizard, handler): - # Initialization method - msg = _("Choose how you want to initialize your {}.\n\n" - "The first two methods are secure as no secret information " - "is entered into your computer.\n\n" - "For the last two methods you input secrets on your keyboard " - "and upload them to your {}, and so you should " - "only do those on a computer you know to be trustworthy " - "and free of malware." - ).format(self.device, self.device) - choices = [ - # Must be short as QT doesn't word-wrap radio button text - (TIM_NEW, _("Let the device generate a completely new seed randomly")), - (TIM_RECOVER, _("Recover from a seed you have previously written down")), - (TIM_MNEMONIC, _("Upload a BIP39 mnemonic to generate the seed")), - (TIM_PRIVKEY, _("Upload a master private key")) - ] - def f(method): - import threading - settings = self.request_trezor_init_settings(wizard, method, self.device) - t = threading.Thread(target = self._initialize_device, args=(settings, method, device_id, wizard, handler)) - t.setDaemon(True) - t.start() - wizard.loop.exec_() - wizard.choice_dialog(title=_('Initialize Device'), message=msg, choices=choices, run_next=f) - - def _initialize_device(self, settings, method, device_id, wizard, handler): - item, label, pin_protection, passphrase_protection = settings - - if method == TIM_RECOVER: - # FIXME the PIN prompt will appear over this message - # which makes this unreadable - handler.show_error(_( - "You will be asked to enter 24 words regardless of your " - "seed's actual length. If you enter a word incorrectly or " - "misspell it, you cannot change it or go back - you will need " - "to start again from the beginning.\n\nSo please enter " - "the words carefully!")) - - language = 'english' - devmgr = self.device_manager() - client = devmgr.client_by_id(device_id) - - if method == TIM_NEW: - strength = 64 * (item + 2) # 128, 192 or 256 - u2f_counter = 0 - skip_backup = False - client.reset_device(True, strength, passphrase_protection, - pin_protection, label, language, - u2f_counter, skip_backup) - elif method == TIM_RECOVER: - word_count = 6 * (item + 2) # 12, 18 or 24 - client.step = 0 - client.recovery_device(word_count, passphrase_protection, - pin_protection, label, language) - elif method == TIM_MNEMONIC: - pin = pin_protection # It's the pin, not a boolean - client.load_device_by_mnemonic(str(item), pin, - passphrase_protection, - label, language) - else: - pin = pin_protection # It's the pin, not a boolean - client.load_device_by_xprv(item, pin, passphrase_protection, - label, language) - wizard.loop.exit(0) - - def setup_device(self, device_info, wizard, purpose): - devmgr = self.device_manager() - device_id = device_info.device.id_ - client = devmgr.client_by_id(device_id) - # fixme: we should use: client.handler = wizard - client.handler = self.create_handler(wizard) - if not device_info.initialized: - self.initialize_device(device_id, wizard, client.handler) - client.get_xpub('m', 'standard') - client.used() - - def get_xpub(self, device_id, derivation, xtype, wizard): - devmgr = self.device_manager() - client = devmgr.client_by_id(device_id) - client.handler = wizard - xpub = client.get_xpub(derivation, xtype) - client.used() - return xpub - - def sign_transaction(self, keystore, tx, prev_tx, xpub_path): - self.prev_tx = prev_tx - self.xpub_path = xpub_path - client = self.get_client(keystore) - inputs = self.tx_inputs(tx, True, keystore.get_script_gen()) - outputs = self.tx_outputs(keystore.get_derivation(), tx, keystore.get_script_gen()) - signed_tx = client.sign_tx(self.get_coin_name(), inputs, outputs, lock_time=tx.locktime)[1] - raw = bh2u(signed_tx) - tx.update_signatures(raw) - - def show_address(self, wallet, keystore, address): - client = self.get_client(keystore) - if not client.atleast_version(1, 3): - keystore.handler.show_error(_("Your device firmware is too old")) - return - change, index = wallet.get_address_index(address) - derivation = keystore.derivation - address_path = "%s/%d/%d"%(derivation, change, index) - address_n = client.expand_path(address_path) - xpubs = wallet.get_master_public_keys() - if len(xpubs) == 1: - script_gen = keystore.get_script_gen() - if script_gen == SCRIPT_GEN_NATIVE_SEGWIT: - script_type = self.types.InputScriptType.SPENDWITNESS - elif script_gen == SCRIPT_GEN_P2SH_SEGWIT: - script_type = self.types.InputScriptType.SPENDP2SHWITNESS - else: - script_type = self.types.InputScriptType.SPENDADDRESS - client.get_address(self.get_coin_name(), address_n, True, script_type=script_type) - else: - def f(xpub): - node = self.ckd_public.deserialize(xpub) - return self.types.HDNodePathType(node=node, address_n=[change, index]) - pubkeys = wallet.get_public_keys(address) - # sort xpubs using the order of pubkeys - sorted_pubkeys, sorted_xpubs = zip(*sorted(zip(pubkeys, xpubs))) - pubkeys = list(map(f, sorted_xpubs)) - multisig = self.types.MultisigRedeemScriptType( - pubkeys=pubkeys, - signatures=[b''] * wallet.n, - m=wallet.m, - ) - client.get_address(self.get_coin_name(), address_n, True, multisig=multisig) - - def tx_inputs(self, tx, for_sig=False, script_gen=SCRIPT_GEN_LEGACY): - inputs = [] - for txin in tx.inputs(): - txinputtype = self.types.TxInputType() - if txin['type'] == 'coinbase': - prev_hash = "\0"*32 - prev_index = 0xffffffff # signed int -1 - else: - if for_sig: - x_pubkeys = txin['x_pubkeys'] - if len(x_pubkeys) == 1: - x_pubkey = x_pubkeys[0] - xpub, s = parse_xpubkey(x_pubkey) - xpub_n = self.client_class.expand_path(self.xpub_path[xpub]) - txinputtype._extend_address_n(xpub_n + s) - if script_gen == SCRIPT_GEN_NATIVE_SEGWIT: - txinputtype.script_type = self.types.InputScriptType.SPENDWITNESS - elif script_gen == SCRIPT_GEN_P2SH_SEGWIT: - txinputtype.script_type = self.types.InputScriptType.SPENDP2SHWITNESS - else: - txinputtype.script_type = self.types.InputScriptType.SPENDADDRESS - else: - def f(x_pubkey): - if is_xpubkey(x_pubkey): - xpub, s = parse_xpubkey(x_pubkey) - else: - xpub = xpub_from_pubkey(0, bfh(x_pubkey)) - s = [] - node = self.ckd_public.deserialize(xpub) - return self.types.HDNodePathType(node=node, address_n=s) - pubkeys = list(map(f, x_pubkeys)) - multisig = self.types.MultisigRedeemScriptType( - pubkeys=pubkeys, - signatures=list(map(lambda x: bfh(x)[:-1] if x else b'', txin.get('signatures'))), - m=txin.get('num_sig'), - ) - if script_gen == SCRIPT_GEN_NATIVE_SEGWIT: - script_type = self.types.InputScriptType.SPENDWITNESS - elif script_gen == SCRIPT_GEN_P2SH_SEGWIT: - script_type = self.types.InputScriptType.SPENDP2SHWITNESS - else: - script_type = self.types.InputScriptType.SPENDMULTISIG - txinputtype = self.types.TxInputType( - script_type=script_type, - multisig=multisig - ) - # find which key is mine - for x_pubkey in x_pubkeys: - if is_xpubkey(x_pubkey): - xpub, s = parse_xpubkey(x_pubkey) - if xpub in self.xpub_path: - xpub_n = self.client_class.expand_path(self.xpub_path[xpub]) - txinputtype._extend_address_n(xpub_n + s) - break - - prev_hash = unhexlify(txin['prevout_hash']) - prev_index = txin['prevout_n'] - - if 'value' in txin: - txinputtype.amount = txin['value'] - txinputtype.prev_hash = prev_hash - txinputtype.prev_index = prev_index - - if 'scriptSig' in txin: - script_sig = bfh(txin['scriptSig']) - txinputtype.script_sig = script_sig - - txinputtype.sequence = txin.get('sequence', 0xffffffff - 1) - - inputs.append(txinputtype) - - return inputs - - def tx_outputs(self, derivation, tx, script_gen=SCRIPT_GEN_LEGACY): - outputs = [] - has_change = False - - for _type, address, amount in tx.outputs(): - info = tx.output_info.get(address) - if info is not None and not has_change: - has_change = True # no more than one change address - index, xpubs, m = info - if len(xpubs) == 1: - if script_gen == SCRIPT_GEN_NATIVE_SEGWIT: - script_type = self.types.OutputScriptType.PAYTOWITNESS - elif script_gen == SCRIPT_GEN_P2SH_SEGWIT: - script_type = self.types.OutputScriptType.PAYTOP2SHWITNESS - else: - script_type = self.types.OutputScriptType.PAYTOADDRESS - address_n = self.client_class.expand_path(derivation + "/%d/%d"%index) - txoutputtype = self.types.TxOutputType( - amount = amount, - script_type = script_type, - address_n = address_n, - ) - else: - if script_gen == SCRIPT_GEN_NATIVE_SEGWIT: - script_type = self.types.OutputScriptType.PAYTOWITNESS - elif script_gen == SCRIPT_GEN_P2SH_SEGWIT: - script_type = self.types.OutputScriptType.PAYTOP2SHWITNESS - else: - script_type = self.types.OutputScriptType.PAYTOMULTISIG - address_n = self.client_class.expand_path("/%d/%d"%index) - nodes = map(self.ckd_public.deserialize, xpubs) - pubkeys = [ self.types.HDNodePathType(node=node, address_n=address_n) for node in nodes] - multisig = self.types.MultisigRedeemScriptType( - pubkeys = pubkeys, - signatures = [b''] * len(pubkeys), - m = m) - txoutputtype = self.types.TxOutputType( - multisig = multisig, - amount = amount, - address_n = self.client_class.expand_path(derivation + "/%d/%d"%index), - script_type = script_type) - else: - txoutputtype = self.types.TxOutputType() - txoutputtype.amount = amount - if _type == TYPE_SCRIPT: - txoutputtype.script_type = self.types.OutputScriptType.PAYTOOPRETURN - txoutputtype.op_return_data = address[2:] - elif _type == TYPE_ADDRESS: - txoutputtype.script_type = self.types.OutputScriptType.PAYTOADDRESS - txoutputtype.address = address - - outputs.append(txoutputtype) - - return outputs + TrezorCompatiblePlugin.__init__(self, *args) - def electrum_tx_to_txtype(self, tx): - t = self.types.TransactionType() - d = deserialize(tx.raw) - t.version = d['version'] - t.lock_time = d['lockTime'] - inputs = self.tx_inputs(tx) - t._extend_inputs(inputs) - for vout in d['outputs']: - o = t._add_bin_outputs() - o.amount = vout['value'] - o.script_pubkey = bfh(vout['scriptPubKey']) - return t + def hid_transport(self, device): + from trezorlib.transport_hid import HidTransport + return HidTransport.find_by_path(device.path) - # This function is called from the trezor libraries (via tx_api) - def get_tx(self, tx_hash): - tx = self.prev_tx[tx_hash] - return self.electrum_tx_to_txtype(tx) + def bridge_transport(self, d): + from trezorlib.transport_bridge import BridgeTransport + return BridgeTransport(d) diff --git a/plugins/virtualkeyboard/__init__.py b/plugins/virtualkeyboard/__init__.py index c24f19b1a3cf..53c05f17c9f1 100644 --- a/plugins/virtualkeyboard/__init__.py +++ b/plugins/virtualkeyboard/__init__.py @@ -1,4 +1,4 @@ -from electrum.i18n import _ +from electrum_xzc.i18n import _ fullname = 'Virtual Keyboard' description = '%s\n%s' % (_("Add an optional virtual keyboard to the password dialog."), _("Warning: do not use this if it makes you pick a weaker password.")) diff --git a/plugins/virtualkeyboard/qt.py b/plugins/virtualkeyboard/qt.py index 6918aa6e1a8b..ba28bb94abcc 100644 --- a/plugins/virtualkeyboard/qt.py +++ b/plugins/virtualkeyboard/qt.py @@ -1,7 +1,7 @@ from PyQt5.QtGui import * from PyQt5.QtWidgets import (QVBoxLayout, QGridLayout, QPushButton) -from electrum.plugins import BasePlugin, hook -from electrum.i18n import _ +from electrum_xzc.plugins import BasePlugin, hook +from electrum_xzc.i18n import _ import random diff --git a/pubkeys/pooler.asc b/pubkeys/pooler.asc new file mode 100644 index 000000000000..ba5df48110b7 --- /dev/null +++ b/pubkeys/pooler.asc @@ -0,0 +1,44 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: SKS 1.1.5 +Comment: Hostname: pgp.mit.edu + +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 +BwcU0VFUcdtQwcB4KXxZ +=Vz9L +-----END PGP PUBLIC KEY BLOCK----- diff --git a/requirements_travis.txt b/requirements_travis.txt new file mode 100644 index 000000000000..b0aaeff51c85 --- /dev/null +++ b/requirements_travis.txt @@ -0,0 +1,3 @@ +tox +python-coveralls +tox-travis diff --git a/scripts/bip70 b/scripts/bip70 index 2e04bfe76f03..789edcd8f9ec 100755 --- a/scripts/bip70 +++ b/scripts/bip70 @@ -3,14 +3,14 @@ import tlslite -from electrum.transaction import Transaction -from electrum import paymentrequest -from electrum import paymentrequest_pb2 as pb2 +from electrum_xzc.transaction import Transaction +from electrum_xzc import paymentrequest +from electrum_xzc import paymentrequest_pb2 as pb2 chain_file = 'mychain.pem' cert_file = 'mycert.pem' amount = 1000000 -address = "18U5kpCAU4s8weFF8Ps5n8HAfpdUjDVF64" +address = "LSh322VzYj7CCSwQJXrP49Lvt2zktLjQbz" memo = "blah" out_file = "payreq" diff --git a/scripts/block_headers b/scripts/block_headers index 82f6b100f42c..25d65c1795be 100755 --- a/scripts/block_headers +++ b/scripts/block_headers @@ -3,8 +3,8 @@ # A simple script that connects to a server and displays block headers import time -from electrum import SimpleConfig, Network -from electrum.util import print_msg, json_encode +from electrum_xzc import SimpleConfig, Network +from electrum_xzc.util import print_msg, json_encode # start network c = SimpleConfig() diff --git a/scripts/get_history b/scripts/get_history index b78fcc58af69..90af86b9d198 100755 --- a/scripts/get_history +++ b/scripts/get_history @@ -1,14 +1,14 @@ #!/usr/bin/env python3 import sys -from electrum import Network -from electrum.util import json_encode, print_msg -from electrum import bitcoin +from electrum_xzc import Network +from electrum_xzc.util import json_encode, print_msg +from electrum_xzc import bitcoin try: addr = sys.argv[1] except Exception: - print("usage: get_history ") + print("usage: get_history ") sys.exit(1) n = Network() diff --git a/scripts/peers b/scripts/peers index 773926915fa3..b7e13e4cb2c4 100755 --- a/scripts/peers +++ b/scripts/peers @@ -2,8 +2,8 @@ import util -from electrum.network import filter_protocol -from electrum.blockchain import hash_header +from electrum_xzc.network import filter_protocol +from electrum_xzc.blockchain import hash_header peers = util.get_peers() peers = filter_protocol(peers, 's') diff --git a/scripts/servers b/scripts/servers index 1f8cc6826fdc..e3f4dc8f66d5 100755 --- a/scripts/servers +++ b/scripts/servers @@ -1,7 +1,7 @@ #!/usr/bin/env python3 -from electrum import set_verbosity -from electrum.network import filter_version +from electrum_xzc import set_verbosity +from electrum_xzc.network import filter_version import util, json set_verbosity(False) diff --git a/scripts/util.py b/scripts/util.py index db14a384dd9a..3b4b83ce36a9 100644 --- a/scripts/util.py +++ b/scripts/util.py @@ -1,8 +1,8 @@ import select, time, queue -# import electrum -from electrum import Connection, Interface, SimpleConfig +# import electrum_xzc as electrum +from electrum_xzc import Connection, Interface, SimpleConfig -from electrum.network import parse_servers +from electrum_xzc.network import parse_servers from collections import defaultdict # electrum.util.set_verbosity(1) diff --git a/scripts/watch_address b/scripts/watch_address index 461e41863017..4df8d8e390fb 100755 --- a/scripts/watch_address +++ b/scripts/watch_address @@ -2,13 +2,13 @@ import sys import time -from electrum import SimpleConfig, Network -from electrum.util import print_msg, json_encode +from electrum_xzc import SimpleConfig, Network +from electrum_xzc.util import print_msg, json_encode try: addr = sys.argv[1] except Exception: - print("usage: watch_address ") + print("usage: watch_address ") sys.exit(1) # start network diff --git a/setup.py b/setup.py index 63581a614106..20a903906284 100755 --- a/setup.py +++ b/setup.py @@ -9,18 +9,12 @@ import imp import argparse -with open('contrib/requirements/requirements.txt') as f: - requirements = f.read().splitlines() - -with open('contrib/requirements/requirements-hw.txt') as f: - requirements_hw = f.read().splitlines() - version = imp.load_source('version', 'lib/version.py') if sys.version_info[:3] < (3, 4, 0): sys.exit("Error: Electrum requires Python version >= 3.4.0...") -data_files = ['contrib/requirements/' + r for r in ['requirements.txt', 'requirements-hw.txt']] +data_files = [] if platform.system() in ['Linux', 'FreeBSD', 'DragonFly']: parser = argparse.ArgumentParser() @@ -34,42 +28,48 @@ else: usr_share = os.path.expanduser('~/.local/share') data_files += [ - (os.path.join(usr_share, 'applications/'), ['electrum.desktop']), - (os.path.join(usr_share, 'pixmaps/'), ['icons/electrum.png']) + (os.path.join(usr_share, 'applications/'), ['electrum-xzc.desktop']), + (os.path.join(usr_share, 'pixmaps/'), ['icons/electrum-xzc.png']) ] setup( - name="Electrum", + name="Electrum-XZC", version=version.ELECTRUM_VERSION, - install_requires=requirements, - extras_require={ - 'hardware': requirements_hw, - }, + install_requires=[ + 'pyaes>=0.1a1', + 'ecdsa>=0.9', + 'pbkdf2', + 'requests', + 'qrcode', + 'scrypt>=0.6.0', + 'protobuf', + 'dnspython', + 'jsonrpclib-pelix', + 'PySocks>=1.6.6', + ], packages=[ - 'electrum', - 'electrum_gui', - 'electrum_gui.qt', - 'electrum_plugins', - 'electrum_plugins.audio_modem', - 'electrum_plugins.cosigner_pool', - 'electrum_plugins.email_requests', - 'electrum_plugins.greenaddress_instant', - 'electrum_plugins.hw_wallet', - 'electrum_plugins.keepkey', - 'electrum_plugins.labels', - 'electrum_plugins.ledger', - 'electrum_plugins.trezor', - 'electrum_plugins.digitalbitbox', - 'electrum_plugins.trustedcoin', - 'electrum_plugins.virtualkeyboard', + 'electrum_xzc', + 'electrum_xzc_gui', + 'electrum_xzc_gui.qt', + 'electrum_xzc_plugins', + 'electrum_xzc_plugins.audio_modem', + 'electrum_xzc_plugins.cosigner_pool', + 'electrum_xzc_plugins.email_requests', + 'electrum_xzc_plugins.hw_wallet', + 'electrum_xzc_plugins.keepkey', + 'electrum_xzc_plugins.labels', + 'electrum_xzc_plugins.ledger', + 'electrum_xzc_plugins.trezor', + 'electrum_xzc_plugins.digitalbitbox', + 'electrum_xzc_plugins.virtualkeyboard', ], package_dir={ - 'electrum': 'lib', - 'electrum_gui': 'gui', - 'electrum_plugins': 'plugins', + 'electrum_xzc': 'lib', + 'electrum_xzc_gui': 'gui', + 'electrum_xzc_plugins': 'plugins', }, package_data={ - 'electrum': [ + 'electrum_xzc': [ 'servers.json', 'servers_testnet.json', 'currencies.json', @@ -80,12 +80,12 @@ 'locale/*/LC_MESSAGES/electrum.mo', ] }, - scripts=['electrum'], + scripts=['electrum-xzc'], data_files=data_files, - description="Lightweight Bitcoin Wallet", + description="Lightweight Zcoin Wallet", author="Thomas Voegtlin", author_email="thomasv@electrum.org", license="MIT Licence", - url="https://electrum.org", - long_description="""Lightweight Bitcoin Wallet""" + url="http://electrum-xzc.org", + long_description="""Lightweight Zcoin Wallet""" ) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 5c3fcf18f0b1..c437dfb89bdd 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -1,23 +1,23 @@ -name: electrum +name: electrum-xzc version: master -summary: Bitcoin thin client +summary: Zcoin thin client description: | - Lightweight Bitcoin client + Lightweight Zcoin client grade: devel # must be 'stable' to release into candidate/stable channels confinement: strict apps: - electrum: - command: desktop-launch electrum + electrum-xzc: + command: desktop-launch electrum-xzc plugs: [network, network-bind, x11, unity7] parts: - electrum: + electrum-xzc: source: . plugin: python python-version: python3 stage-packages: [python3-pyqt5] build-packages: [pyqt5-dev-tools] - install: pyrcc5 icons.qrc -o $SNAPCRAFT_PART_INSTALL/lib/python3.5/site-packages/electrum_gui/qt/icons_rc.py + install: pyrcc5 icons.qrc -o $SNAPCRAFT_PART_INSTALL/lib/python3.5/site-packages/electrum_xzc_gui/qt/icons_rc.py after: [desktop-qt5]

    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�C6Y48i8Un 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�K)6^>@2CQ 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