Skip to content

Commit

Permalink
Merge pull request #2 from Zondax/main
Browse files Browse the repository at this point in the history
Blind Sign UI Fixes
  • Loading branch information
fbeutin-ledger authored Feb 12, 2025
2 parents d810701 + 35ee0a1 commit 2ade591
Show file tree
Hide file tree
Showing 749 changed files with 105 additions and 56 deletions.
24 changes: 15 additions & 9 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@ jobs:
- id: get-user
run: echo "uid_gid=$(id -u):$(id -g)" >> $GITHUB_OUTPUT

build_application:
name: Build application using the reusable workflow
uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_build.yml@v1
with:
upload_app_binaries_artifact: "compiled_app_binaries"

build:
runs-on: ${{ github.repository_owner == 'zondax' && 'zondax-runners' || 'ubuntu-latest' }}
steps:
Expand Down Expand Up @@ -48,7 +54,7 @@ jobs:
run: mkdir -p build && cd build && cmake -DCMAKE_BUILD_TYPE=Debug .. && make
- run: make cpp_test

build_ledger:
build_nanoS:
needs: configure
runs-on: ${{ github.repository_owner == 'zondax' && 'zondax-runners' || 'ubuntu-latest' }}
container:
Expand All @@ -71,14 +77,14 @@ jobs:
echo "size=$(python3 deps/ledger-zxlib/scripts/getSize.py s)" >> $GITHUB_OUTPUT
size_nano_s:
needs: build_ledger
needs: build_nanoS
runs-on: ${{ github.repository_owner == 'zondax' && 'zondax-runners' || 'ubuntu-latest' }}
env:
NANOS_LIMIT_SIZE: 136
steps:
- run: |
echo "LNS app size: ${{needs.build_ledger.outputs.size}} KiB"
[ ${{needs.build_ledger.outputs.size}} -le $NANOS_LIMIT_SIZE ]
echo "LNS app size: ${{needs.build_nanoS.outputs.size}} KiB"
[ ${{needs.build_nanoS.outputs.size}} -le $NANOS_LIMIT_SIZE ]
test_zemu:
runs-on: ${{ github.repository_owner == 'zondax' && 'zondax-runners' || 'ubuntu-latest' }}
Expand Down Expand Up @@ -119,13 +125,13 @@ jobs:
make zemu_test
- name: Upload Snapshots (only failure)
if: ${{ failure() }}
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: snapshots-tmp
path: tests_zemu/snapshots-tmp/

build_package_nanos:
needs: [configure, build, build_ledger, test_zemu]
needs: [configure, build, test_zemu]
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ${{ github.repository_owner == 'zondax' && 'zondax-runners' || 'ubuntu-latest' }}
container:
Expand Down Expand Up @@ -161,7 +167,7 @@ jobs:
prerelease: false

build_package_nanosp:
needs: [configure, build, build_ledger, test_zemu]
needs: [configure, build, test_zemu]
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ${{ github.repository_owner == 'zondax' && 'zondax-runners' || 'ubuntu-latest' }}
container:
Expand Down Expand Up @@ -197,7 +203,7 @@ jobs:
prerelease: false

build_package_stax:
needs: [configure, build, build_ledger, test_zemu]
needs: [configure, build, test_zemu]
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: zondax-runners
container:
Expand Down Expand Up @@ -233,7 +239,7 @@ jobs:
prerelease: false

build_package_flex:
needs: [configure, build, build_ledger, test_zemu]
needs: [configure, build, test_zemu]
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ubuntu-latest
container:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -76,3 +76,4 @@ tests_zemu/yarn.lock
tests_tools/target
fuzz-*.log
/scan-build
.venv
51 changes: 19 additions & 32 deletions app/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,9 @@ endif

MY_DIR := $(dir $(lastword $(MAKEFILE_LIST)))

include $(CURDIR)/../deps/ledger-zxlib/makefiles/Makefile.installer_script

include $(BOLOS_SDK)/Makefile.defines

# Set the default value for PRODUCTION_BUILD to 0 if not already defined
PRODUCTION_BUILD ?= 1

$(info ************ KADENA_NAME = [$(TARGET_NAME)])

# Display whether this is a production build or for internal use
ifeq ($(PRODUCTION_BUILD), 1)
$(info ************ PRODUCTION_BUILD = [PRODUCTION BUILD])
Expand All @@ -39,9 +33,8 @@ else
endif

# Display whether swap functionality is enabled or not
ifdef HAVE_SWAP
ifeq ($(ENABLE_SWAP), 1)
$(info ************ HAVE_SWAP = [ENABLED])
DEFINES += HAVE_SWAP=$(HAVE_SWAP)
else
$(info ************ HAVE_SWAP = [DISABLED])
endif
Expand All @@ -56,6 +49,9 @@ ifndef COIN
COIN=kadena
endif

VARIANT_PARAM=COIN
VARIANT_VALUES=$(COIN)

include $(CURDIR)/Makefile.version

$(info COIN = [$(COIN)])
Expand All @@ -78,32 +74,32 @@ $(info PATHS LIST = $(APPPATH))

APP_LOAD_PARAMS = --curve ed25519 --delete $(COMMON_LOAD_PARAMS) --path $(APPPATH)

ifeq ($(TARGET_NAME),TARGET_NANOS)
APP_STACK_MIN_SIZE := 1600
else
APP_STACK_MIN_SIZE := 1752
endif

include $(CURDIR)/../deps/ledger-zxlib/makefiles/Makefile.devices

$(info TARGET_NAME = [$(TARGET_NAME)])
$(info ICONNAME = [$(ICONNAME)])

ifndef ICONNAME
$(error ICONNAME is not set)
endif

# DEFINES += BLAKE3_NO_SSE2 BLAKE3_NO_SSE41 BLAKE3_NO_AVX2 BLAKE3_NO_AVX512 BLAKE3_USE_NEON=0
# BLAKE3_DIR := $(CURDIR)/../deps/BLAKE3-c
# INCLUDES_PATH += $(BLAKE3_DIR)
# APP_SOURCE_FILES += $(BLAKE3_DIR)/blake3.c $(BLAKE3_DIR)/blake3_dispatch.c $(BLAKE3_DIR)/blake3_portable.c

include $(BOLOS_SDK)/Makefile.target

include $(CURDIR)/../deps/ledger-zxlib/makefiles/Makefile.devices

include $(CURDIR)/../deps/ledger-zxlib/makefiles/Makefile.platform

CFLAGS += -Wvla
# LDFLAGS += -z muldefs
# LDLIBS += -Lrust/target/thumbv6m-none-eabi/release -lrslib
# APP_SOURCE_PATH += $(CURDIR)/rust/include

include $(CURDIR)/../deps/ledger-zxlib/makefiles/Makefile.installer_script

$(info TARGET_NAME = [$(TARGET_NAME)])
$(info ICONNAME = [$(ICONNAME)])

ifndef ICONNAME
$(error ICONNAME is not set)
endif


.PHONY: rust
rust:
@echo "No rust code"
Expand All @@ -130,18 +126,9 @@ clean: rust_clean

# clean: rust_clean

include $(CURDIR)/../deps/ledger-zxlib/makefiles/Makefile.side_loading

# Import generic rules from the SDK
include $(BOLOS_SDK)/Makefile.rules

#add dependency on custom makefile filename
dep/%.d: %.c Makefile

.PHONY: listvariants
listvariants:
@echo VARIANTS COIN kadena

.PHONY: version
version:
@echo "v$(APPVERSION)" > app.version
2 changes: 1 addition & 1 deletion app/Makefile.version
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ APPVERSION_M=1
# This is the minor version
APPVERSION_N=0
# This is the patch version
APPVERSION_P=3
APPVERSION_P=7
16 changes: 10 additions & 6 deletions app/src/apdu_handler.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include "addr.h"
#include "apdu_handler_legacy.h"
#include "app_main.h"
#include "app_mode.h"
#include "coin.h"
#include "crypto.h"
#include "parser_txdef.h"
Expand Down Expand Up @@ -126,6 +127,9 @@ __Z_INLINE void handleSign(volatile uint32_t *flags, volatile uint32_t *tx, uint
THROW(APDU_CODE_OK);
}

// Reset BLS UI for next transaction
app_mode_skip_blindsign_ui();

uint8_t error_code;
const char *error_msg = tx_parse(tx_get_buffer_length(), get_tx_type(), &error_code);
CHECK_APP_CANARY()
Expand All @@ -152,14 +156,14 @@ __Z_INLINE void handle_getversion(__Z_UNUSED volatile uint32_t *flags, volatile
G_io_apdu_buffer[0] = 0x01;
#endif

G_io_apdu_buffer[1] = (LEDGER_MAJOR_VERSION >> 8) & 0xFF;
G_io_apdu_buffer[2] = (LEDGER_MAJOR_VERSION >> 0) & 0xFF;
G_io_apdu_buffer[1] = (MAJOR_VERSION >> 8) & 0xFF;
G_io_apdu_buffer[2] = (MAJOR_VERSION >> 0) & 0xFF;

G_io_apdu_buffer[3] = (LEDGER_MINOR_VERSION >> 8) & 0xFF;
G_io_apdu_buffer[4] = (LEDGER_MINOR_VERSION >> 0) & 0xFF;
G_io_apdu_buffer[3] = (MINOR_VERSION >> 8) & 0xFF;
G_io_apdu_buffer[4] = (MINOR_VERSION >> 0) & 0xFF;

G_io_apdu_buffer[5] = (LEDGER_PATCH_VERSION >> 8) & 0xFF;
G_io_apdu_buffer[6] = (LEDGER_PATCH_VERSION >> 0) & 0xFF;
G_io_apdu_buffer[5] = (PATCH_VERSION >> 8) & 0xFF;
G_io_apdu_buffer[6] = (PATCH_VERSION >> 0) & 0xFF;

G_io_apdu_buffer[7] = !IS_UX_ALLOWED;

Expand Down
6 changes: 3 additions & 3 deletions app/src/apdu_handler_legacy.c
Original file line number Diff line number Diff line change
Expand Up @@ -299,9 +299,9 @@ bool legacy_process_transfer_chunk(uint32_t rx) {
}

void legacy_handleGetVersion(volatile uint32_t *tx) {
G_io_apdu_buffer[0] = (LEDGER_MAJOR_VERSION >> 0) & 0xFF;
G_io_apdu_buffer[1] = (LEDGER_MINOR_VERSION >> 0) & 0xFF;
G_io_apdu_buffer[2] = (LEDGER_PATCH_VERSION >> 0) & 0xFF;
G_io_apdu_buffer[0] = (MAJOR_VERSION >> 0) & 0xFF;
G_io_apdu_buffer[1] = (MINOR_VERSION >> 0) & 0xFF;
G_io_apdu_buffer[2] = (PATCH_VERSION >> 0) & 0xFF;

*tx += 3;
THROW(APDU_CODE_OK);
Expand Down
2 changes: 2 additions & 0 deletions app/src/items.c
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ items_error_t items_storeItems(tx_type_t tx_type) {
CHECK_ITEMS_ERROR(items_checkTxLengths());
} else {
CHECK_ITEMS_ERROR(items_storeHashWarning());

CHECK_ITEMS_ERROR(items_storeHash());
}

CHECK_ITEMS_ERROR(items_computeHash(tx_type));
Expand Down
6 changes: 5 additions & 1 deletion app/src/items_defs.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,11 @@

#include "zxtypes.h"

#define MAX_NUMBER_OF_ITEMS 65
#if defined(TARGET_NANOS)
#define MAX_NUMBER_OF_ITEMS 57
#else
#define MAX_NUMBER_OF_ITEMS 100
#endif

#define CHECK_ITEMS_ERROR(__CALL) \
{ \
Expand Down
2 changes: 1 addition & 1 deletion app/src/items_format.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@

#include <zxformat.h>

#include "common/parser.h"
#include "crypto.h"
#include "parser.h"

extern char base64_hash[45];

Expand Down
2 changes: 1 addition & 1 deletion app/src/parser.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* limitations under the License.
********************************************************************************/

#include "parser.h"
#include "common/parser.h"

#include <stdio.h>
#include <zxformat.h>
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified tests_zemu/snapshots/fl-mainmenu/00001.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests_zemu/snapshots/fl-mainmenu/00002.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests_zemu/snapshots/fl-mainmenu/00003.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests_zemu/snapshots/fl-mainmenu/00004.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests_zemu/snapshots/fl-show_address-legacy/00001.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests_zemu/snapshots/fl-show_address/00001.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests_zemu/snapshots/fl-sign_hash_1/00002.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests_zemu/snapshots/fl-sign_hash_1_legacy/00002.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests_zemu/snapshots/fl-sign_hash_2/00002.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed tests_zemu/snapshots/fl-sign_hash_2/00005.png
Binary file not shown.
Binary file modified tests_zemu/snapshots/fl-sign_hash_2_legacy/00002.png
Binary file removed tests_zemu/snapshots/fl-sign_hash_2_legacy/00005.png
Diff not rendered.
Diff not rendered.
Diff not rendered.
Binary file removed tests_zemu/snapshots/fl-sign_transfer_1/00007.png
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-handler_legacy_len_284/00018.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-handler_legacy_len_284/00019.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-handler_legacy_len_284/00020.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-handler_legacy_len_284/00021.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-handler_legacy_len_284/00022.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-handler_legacy_len_285/00018.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-handler_legacy_len_285/00019.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-handler_legacy_len_285/00020.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-handler_legacy_len_285/00021.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-handler_legacy_len_285/00022.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-handler_legacy_len_287/00018.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-handler_legacy_len_287/00019.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-handler_legacy_len_287/00020.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-handler_legacy_len_287/00021.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-handler_legacy_len_287/00022.png
Diff not rendered.
Binary file modified tests_zemu/snapshots/s-mainmenu/00005.png
Binary file modified tests_zemu/snapshots/s-mainmenu/00009.png
Binary file modified tests_zemu/snapshots/s-sign_hash_1/00007.png
Binary file modified tests_zemu/snapshots/s-sign_hash_1/00008.png
Binary file modified tests_zemu/snapshots/s-sign_hash_1/00009.png
Binary file modified tests_zemu/snapshots/s-sign_hash_1/00010.png
Binary file removed tests_zemu/snapshots/s-sign_hash_1/00011.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_hash_1/00012.png
Diff not rendered.
Binary file modified tests_zemu/snapshots/s-sign_hash_1_legacy/00007.png
Binary file modified tests_zemu/snapshots/s-sign_hash_1_legacy/00008.png
Binary file modified tests_zemu/snapshots/s-sign_hash_1_legacy/00009.png
Binary file modified tests_zemu/snapshots/s-sign_hash_1_legacy/00010.png
Binary file removed tests_zemu/snapshots/s-sign_hash_1_legacy/00011.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_hash_1_legacy/00012.png
Diff not rendered.
Binary file modified tests_zemu/snapshots/s-sign_hash_2/00007.png
Binary file modified tests_zemu/snapshots/s-sign_hash_2/00008.png
Binary file modified tests_zemu/snapshots/s-sign_hash_2/00009.png
Binary file modified tests_zemu/snapshots/s-sign_hash_2/00010.png
Binary file removed tests_zemu/snapshots/s-sign_hash_2/00011.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_hash_2/00012.png
Diff not rendered.
Binary file modified tests_zemu/snapshots/s-sign_hash_2_legacy/00007.png
Binary file modified tests_zemu/snapshots/s-sign_hash_2_legacy/00008.png
Binary file modified tests_zemu/snapshots/s-sign_hash_2_legacy/00009.png
Binary file modified tests_zemu/snapshots/s-sign_hash_2_legacy/00010.png
Binary file removed tests_zemu/snapshots/s-sign_hash_2_legacy/00011.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_hash_2_legacy/00012.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_simple_transfer/00015.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_simple_transfer/00016.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_simple_transfer/00017.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_simple_transfer/00018.png
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_transfer_1/00015.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_transfer_1/00016.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_transfer_1/00017.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_transfer_1/00018.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_transfer_1_legacy/00015.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_transfer_1_legacy/00016.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_transfer_1_legacy/00017.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_transfer_1_legacy/00018.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_transfer_create_1/00015.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_transfer_create_1/00016.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_transfer_create_1/00017.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_transfer_create_1/00018.png
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Loading

0 comments on commit 2ade591

Please sign in to comment.