@hsuite/native-connect-angular 2.1.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/coverage/coverage-summary.json +25 -21
- package/coverage/index.html +108 -108
- package/coverage/lcov-report/index.html +108 -108
- package/coverage/lcov-report/lib/components/account-selector/account-actions/account-actions.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-actions/index.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-filter/account-filter.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-filter/index.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-formatting.service.ts.html +13 -19
- package/coverage/lcov-report/lib/components/account-selector/account-grouping.service.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-list/account-list.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-list/index.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-selector.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-selector.service.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/index.html +5 -5
- package/coverage/lcov-report/lib/components/wallet-account-display/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-account-display/wallet-account-display.component.ts.html +10 -10
- package/coverage/lcov-report/lib/components/wallet-connect-button/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connect-prompt/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connected-guard/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connection-modal/index.html +15 -15
- package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +84 -36
- package/coverage/lcov-report/lib/components/wallet-session-display/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-session-display/wallet-session-display.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-transaction-status/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +1 -1
- package/coverage/lcov-report/lib/directives/index.html +1 -1
- package/coverage/lcov-report/lib/directives/wallet-connected.directive.ts.html +1 -1
- package/coverage/lcov-report/lib/directives/wallet-context.directive.ts.html +1 -1
- package/coverage/lcov-report/lib/directives/wallet-events.directive.ts.html +1 -1
- package/coverage/lcov-report/lib/hsuite-wallet.module.ts.html +1 -1
- package/coverage/lcov-report/lib/index.html +1 -1
- package/coverage/lcov-report/lib/models/connection-config.model.ts.html +1 -1
- package/coverage/lcov-report/lib/models/index.html +7 -7
- package/coverage/lcov-report/lib/models/provider-types.ts.html +11 -5
- package/coverage/lcov-report/lib/providers/base-wallet-provider.ts.html +20 -20
- package/coverage/lcov-report/lib/providers/hsuite-native/channel-client.service.ts.html +639 -636
- package/coverage/lcov-report/lib/providers/hsuite-native/index.html +19 -19
- package/coverage/lcov-report/lib/providers/hsuite-native-provider.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/index.html +18 -18
- package/coverage/lcov-report/lib/providers/p2p-native/index.html +22 -22
- package/coverage/lcov-report/lib/providers/p2p-native/p2p-native.provider.ts.html +993 -993
- package/coverage/lcov-report/lib/providers/p2p-native/p2p-session-manager.ts.html +7 -4
- package/coverage/lcov-report/lib/providers/wallet-error-handler.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/walletconnect/core/index.html +65 -65
- package/coverage/lcov-report/lib/providers/walletconnect/core/session-health.ts.html +240 -240
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +559 -559
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-provider.ts.html +1108 -1105
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +493 -493
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +366 -366
- package/coverage/lcov-report/lib/providers/walletconnect/signers/hedera-signer.ts.html +730 -730
- package/coverage/lcov-report/lib/providers/walletconnect/signers/index.html +43 -43
- package/coverage/lcov-report/lib/providers/walletconnect/signers/signer-factory.ts.html +234 -234
- package/coverage/lcov-report/lib/providers/walletconnect/signers/xrpl-signer.ts.html +650 -650
- package/coverage/lcov-report/lib/services/hsuite-auth.interceptor.ts.html +568 -0
- package/coverage/lcov-report/lib/services/index.html +50 -20
- package/coverage/lcov-report/lib/services/logger.service.ts.html +1 -1
- package/coverage/lcov-report/lib/services/smart-session.service.ts.html +1264 -0
- package/coverage/lcov-report/lib/services/transaction-builders/active-account-source.ts.html +250 -0
- package/coverage/lcov-report/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1 -1
- package/coverage/lcov-report/lib/services/transaction-builders/hedera-amount-utils.ts.html +155 -155
- package/coverage/lcov-report/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +2156 -2156
- package/coverage/lcov-report/lib/services/transaction-builders/index.html +58 -43
- package/coverage/lcov-report/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +1674 -1674
- package/coverage/lcov-report/lib/services/transaction.service.ts.html +4 -4
- package/coverage/lcov-report/lib/services/unified-wallet.service.ts.html +3 -3
- package/coverage/lcov-report/lib/services/wallet-context.service.ts.html +1 -1
- package/coverage/lcov-report/lib/services/wallet-event-bus.service.ts.html +249 -249
- package/coverage/lcov-report/lib/services/wallet-providers.service.ts.html +1 -1
- package/coverage/lcov-report/lib/transports/chrome-extension-transport.ts.html +1 -1
- package/coverage/lcov-report/lib/transports/index.html +1 -1
- package/coverage/lcov-report/lib/utils/index.html +36 -21
- package/coverage/lcov-report/lib/utils/ledger-icons.util.ts.html +254 -161
- package/coverage/lcov-report/lib/utils/ledger-ui-registry.ts.html +676 -0
- package/coverage/lcov.info +8567 -6896
- package/coverage/lib/components/account-selector/account-actions/account-actions.component.ts.html +1 -1
- package/coverage/lib/components/account-selector/account-actions/index.html +1 -1
- package/coverage/lib/components/account-selector/account-filter/account-filter.component.ts.html +1 -1
- package/coverage/lib/components/account-selector/account-filter/index.html +1 -1
- package/coverage/lib/components/account-selector/account-formatting.service.ts.html +13 -19
- package/coverage/lib/components/account-selector/account-grouping.service.ts.html +1 -1
- package/coverage/lib/components/account-selector/account-list/account-list.component.ts.html +1 -1
- package/coverage/lib/components/account-selector/account-list/index.html +1 -1
- package/coverage/lib/components/account-selector/account-selector.component.ts.html +1 -1
- package/coverage/lib/components/account-selector/account-selector.service.ts.html +1 -1
- package/coverage/lib/components/account-selector/index.html +5 -5
- package/coverage/lib/components/wallet-account-display/index.html +1 -1
- package/coverage/lib/components/wallet-account-display/wallet-account-display.component.ts.html +10 -10
- package/coverage/lib/components/wallet-connect-button/index.html +1 -1
- package/coverage/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +1 -1
- package/coverage/lib/components/wallet-connect-prompt/index.html +1 -1
- package/coverage/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +1 -1
- package/coverage/lib/components/wallet-connected-guard/index.html +1 -1
- package/coverage/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +1 -1
- package/coverage/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +1 -1
- package/coverage/lib/components/wallet-connection-modal/connection-method-step/index.html +1 -1
- package/coverage/lib/components/wallet-connection-modal/index.html +15 -15
- package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/index.html +1 -1
- package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +1 -1
- package/coverage/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +84 -36
- package/coverage/lib/components/wallet-session-display/index.html +1 -1
- package/coverage/lib/components/wallet-session-display/wallet-session-display.component.ts.html +1 -1
- package/coverage/lib/components/wallet-transaction-status/index.html +1 -1
- package/coverage/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +1 -1
- package/coverage/lib/directives/index.html +1 -1
- package/coverage/lib/directives/wallet-connected.directive.ts.html +1 -1
- package/coverage/lib/directives/wallet-context.directive.ts.html +1 -1
- package/coverage/lib/directives/wallet-events.directive.ts.html +1 -1
- package/coverage/lib/hsuite-wallet.module.ts.html +1 -1
- package/coverage/lib/index.html +1 -1
- package/coverage/lib/models/connection-config.model.ts.html +1 -1
- package/coverage/lib/models/index.html +7 -7
- package/coverage/lib/models/provider-types.ts.html +11 -5
- package/coverage/lib/providers/base-wallet-provider.ts.html +20 -20
- package/coverage/lib/providers/hsuite-native/channel-client.service.ts.html +639 -636
- package/coverage/lib/providers/hsuite-native/index.html +19 -19
- package/coverage/lib/providers/hsuite-native-provider.ts.html +1 -1
- package/coverage/lib/providers/index.html +18 -18
- package/coverage/lib/providers/p2p-native/index.html +22 -22
- package/coverage/lib/providers/p2p-native/p2p-native.provider.ts.html +993 -993
- package/coverage/lib/providers/p2p-native/p2p-session-manager.ts.html +7 -4
- package/coverage/lib/providers/wallet-error-handler.ts.html +1 -1
- package/coverage/lib/providers/walletconnect/core/index.html +65 -65
- package/coverage/lib/providers/walletconnect/core/session-health.ts.html +240 -240
- package/coverage/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +559 -559
- package/coverage/lib/providers/walletconnect/core/walletconnect-provider.ts.html +1108 -1105
- package/coverage/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +493 -493
- package/coverage/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +366 -366
- package/coverage/lib/providers/walletconnect/signers/hedera-signer.ts.html +730 -730
- package/coverage/lib/providers/walletconnect/signers/index.html +43 -43
- package/coverage/lib/providers/walletconnect/signers/signer-factory.ts.html +234 -234
- package/coverage/lib/providers/walletconnect/signers/xrpl-signer.ts.html +650 -650
- package/coverage/lib/services/hsuite-auth.interceptor.ts.html +568 -0
- package/coverage/lib/services/index.html +50 -20
- package/coverage/lib/services/logger.service.ts.html +1 -1
- package/coverage/lib/services/smart-session.service.ts.html +1264 -0
- package/coverage/lib/services/transaction-builders/active-account-source.ts.html +250 -0
- package/coverage/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1 -1
- package/coverage/lib/services/transaction-builders/hedera-amount-utils.ts.html +155 -155
- package/coverage/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +2156 -2156
- package/coverage/lib/services/transaction-builders/index.html +58 -43
- package/coverage/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +1674 -1674
- package/coverage/lib/services/transaction.service.ts.html +4 -4
- package/coverage/lib/services/unified-wallet.service.ts.html +3 -3
- package/coverage/lib/services/wallet-context.service.ts.html +1 -1
- package/coverage/lib/services/wallet-event-bus.service.ts.html +249 -249
- package/coverage/lib/services/wallet-providers.service.ts.html +1 -1
- package/coverage/lib/transports/chrome-extension-transport.ts.html +1 -1
- package/coverage/lib/transports/index.html +1 -1
- package/coverage/lib/utils/index.html +36 -21
- package/coverage/lib/utils/ledger-icons.util.ts.html +254 -161
- package/coverage/lib/utils/ledger-ui-registry.ts.html +676 -0
- package/dist/fesm2022/hsuite-native-connect-angular.mjs +854 -308
- package/dist/fesm2022/hsuite-native-connect-angular.mjs.map +1 -1
- package/dist/index.d.ts +456 -30
- package/package.json +4 -4
- package/src/index.ts +26 -0
- package/src/lib/components/account-selector/account-formatting.service.ts +8 -10
- package/src/lib/components/wallet-account-display/wallet-account-display.component.ts +9 -9
- package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts +34 -18
- package/src/lib/models/provider-types.ts +3 -1
- package/src/lib/models/unified-account.model.ts +4 -1
- package/src/lib/providers/hsuite-native/channel-client.service.ts +1 -0
- package/src/lib/providers/p2p-native/p2p-session-manager.ts +1 -0
- package/src/lib/providers/walletconnect/core/walletconnect-provider.ts +2 -1
- package/src/lib/services/hsuite-auth.interceptor.ts +159 -0
- package/src/lib/services/smart-session.service.ts +378 -0
- package/src/lib/services/transaction-builders/active-account-source.spec.ts +75 -0
- package/src/lib/services/transaction-builders/active-account-source.ts +55 -0
- package/src/lib/services/transaction-builders/hedera-transaction-builder.service.ts +4 -4
- package/src/lib/services/transaction-builders/index.ts +1 -0
- package/src/lib/services/transaction.service.ts +7 -3
- package/src/lib/services/unified-wallet.service.spec.ts +1 -1
- package/src/lib/services/unified-wallet.service.ts +2 -2
- package/src/lib/utils/index.ts +1 -0
- package/src/lib/utils/ledger-icons.util.ts +61 -30
- package/src/lib/utils/ledger-ui-registry.ts +197 -0
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">65.89% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>315/478</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">60.52% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>23/38</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">75% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>6/8</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">65.89% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>315/478</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line medium'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -541,9 +541,65 @@
|
|
|
541
541
|
<a name='L476'></a><a href='#L476'>476</a>
|
|
542
542
|
<a name='L477'></a><a href='#L477'>477</a>
|
|
543
543
|
<a name='L478'></a><a href='#L478'>478</a>
|
|
544
|
-
<a name='L479'></a><a href='#L479'>479</a></td><td class="line-coverage quiet"><span class="cline-any cline-
|
|
544
|
+
<a name='L479'></a><a href='#L479'>479</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
545
|
+
<span class="cline-any cline-yes">1x</span>
|
|
546
|
+
<span class="cline-any cline-yes">1x</span>
|
|
547
|
+
<span class="cline-any cline-yes">1x</span>
|
|
548
|
+
<span class="cline-any cline-yes">1x</span>
|
|
549
|
+
<span class="cline-any cline-yes">1x</span>
|
|
550
|
+
<span class="cline-any cline-yes">1x</span>
|
|
551
|
+
<span class="cline-any cline-yes">1x</span>
|
|
552
|
+
<span class="cline-any cline-yes">1x</span>
|
|
553
|
+
<span class="cline-any cline-yes">1x</span>
|
|
554
|
+
<span class="cline-any cline-yes">1x</span>
|
|
555
|
+
<span class="cline-any cline-yes">1x</span>
|
|
556
|
+
<span class="cline-any cline-yes">1x</span>
|
|
557
|
+
<span class="cline-any cline-yes">1x</span>
|
|
558
|
+
<span class="cline-any cline-yes">1x</span>
|
|
559
|
+
<span class="cline-any cline-yes">1x</span>
|
|
560
|
+
<span class="cline-any cline-yes">1x</span>
|
|
561
|
+
<span class="cline-any cline-yes">1x</span>
|
|
562
|
+
<span class="cline-any cline-yes">1x</span>
|
|
563
|
+
<span class="cline-any cline-yes">1x</span>
|
|
564
|
+
<span class="cline-any cline-yes">1x</span>
|
|
565
|
+
<span class="cline-any cline-yes">1x</span>
|
|
566
|
+
<span class="cline-any cline-yes">1x</span>
|
|
567
|
+
<span class="cline-any cline-yes">1x</span>
|
|
568
|
+
<span class="cline-any cline-yes">1x</span>
|
|
569
|
+
<span class="cline-any cline-yes">1x</span>
|
|
570
|
+
<span class="cline-any cline-yes">1x</span>
|
|
571
|
+
<span class="cline-any cline-yes">1x</span>
|
|
572
|
+
<span class="cline-any cline-yes">1x</span>
|
|
573
|
+
<span class="cline-any cline-yes">1x</span>
|
|
574
|
+
<span class="cline-any cline-yes">1x</span>
|
|
575
|
+
<span class="cline-any cline-yes">1x</span>
|
|
576
|
+
<span class="cline-any cline-yes">1x</span>
|
|
577
|
+
<span class="cline-any cline-yes">1x</span>
|
|
578
|
+
<span class="cline-any cline-yes">1x</span>
|
|
579
|
+
<span class="cline-any cline-yes">1x</span>
|
|
580
|
+
<span class="cline-any cline-yes">1x</span>
|
|
581
|
+
<span class="cline-any cline-yes">1x</span>
|
|
582
|
+
<span class="cline-any cline-yes">1x</span>
|
|
583
|
+
<span class="cline-any cline-yes">1x</span>
|
|
584
|
+
<span class="cline-any cline-yes">1x</span>
|
|
585
|
+
<span class="cline-any cline-yes">2x</span>
|
|
586
|
+
<span class="cline-any cline-yes">2x</span>
|
|
587
|
+
<span class="cline-any cline-yes">2x</span>
|
|
588
|
+
<span class="cline-any cline-yes">2x</span>
|
|
589
|
+
<span class="cline-any cline-yes">2x</span>
|
|
590
|
+
<span class="cline-any cline-yes">2x</span>
|
|
591
|
+
<span class="cline-any cline-yes">2x</span>
|
|
592
|
+
<span class="cline-any cline-yes">2x</span>
|
|
593
|
+
<span class="cline-any cline-yes">2x</span>
|
|
545
594
|
<span class="cline-any cline-no"> </span>
|
|
595
|
+
<span class="cline-any cline-yes">2x</span>
|
|
596
|
+
<span class="cline-any cline-yes">2x</span>
|
|
597
|
+
<span class="cline-any cline-yes">2x</span>
|
|
598
|
+
<span class="cline-any cline-yes">2x</span>
|
|
599
|
+
<span class="cline-any cline-yes">2x</span>
|
|
600
|
+
<span class="cline-any cline-yes">2x</span>
|
|
546
601
|
<span class="cline-any cline-no"> </span>
|
|
602
|
+
<span class="cline-any cline-yes">2x</span>
|
|
547
603
|
<span class="cline-any cline-no"> </span>
|
|
548
604
|
<span class="cline-any cline-no"> </span>
|
|
549
605
|
<span class="cline-any cline-no"> </span>
|
|
@@ -639,7 +695,181 @@
|
|
|
639
695
|
<span class="cline-any cline-no"> </span>
|
|
640
696
|
<span class="cline-any cline-no"> </span>
|
|
641
697
|
<span class="cline-any cline-no"> </span>
|
|
698
|
+
<span class="cline-any cline-yes">1x</span>
|
|
699
|
+
<span class="cline-any cline-yes">1x</span>
|
|
700
|
+
<span class="cline-any cline-yes">1x</span>
|
|
701
|
+
<span class="cline-any cline-yes">1x</span>
|
|
702
|
+
<span class="cline-any cline-yes">1x</span>
|
|
703
|
+
<span class="cline-any cline-yes">1x</span>
|
|
704
|
+
<span class="cline-any cline-yes">1x</span>
|
|
705
|
+
<span class="cline-any cline-yes">1x</span>
|
|
706
|
+
<span class="cline-any cline-yes">1x</span>
|
|
707
|
+
<span class="cline-any cline-yes">1x</span>
|
|
708
|
+
<span class="cline-any cline-yes">1x</span>
|
|
709
|
+
<span class="cline-any cline-yes">1x</span>
|
|
710
|
+
<span class="cline-any cline-yes">1x</span>
|
|
711
|
+
<span class="cline-any cline-yes">21x</span>
|
|
712
|
+
<span class="cline-any cline-yes">21x</span>
|
|
713
|
+
<span class="cline-any cline-yes">21x</span>
|
|
714
|
+
<span class="cline-any cline-yes">21x</span>
|
|
715
|
+
<span class="cline-any cline-yes">21x</span>
|
|
716
|
+
<span class="cline-any cline-yes">21x</span>
|
|
717
|
+
<span class="cline-any cline-yes">21x</span>
|
|
718
|
+
<span class="cline-any cline-yes">21x</span>
|
|
719
|
+
<span class="cline-any cline-yes">21x</span>
|
|
720
|
+
<span class="cline-any cline-yes">21x</span>
|
|
721
|
+
<span class="cline-any cline-yes">3x</span>
|
|
722
|
+
<span class="cline-any cline-yes">3x</span>
|
|
723
|
+
<span class="cline-any cline-yes">3x</span>
|
|
724
|
+
<span class="cline-any cline-yes">3x</span>
|
|
725
|
+
<span class="cline-any cline-yes">3x</span>
|
|
726
|
+
<span class="cline-any cline-yes">3x</span>
|
|
727
|
+
<span class="cline-any cline-yes">1x</span>
|
|
728
|
+
<span class="cline-any cline-yes">2x</span>
|
|
642
729
|
<span class="cline-any cline-no"> </span>
|
|
730
|
+
<span class="cline-any cline-yes">2x</span>
|
|
731
|
+
<span class="cline-any cline-yes">3x</span>
|
|
732
|
+
<span class="cline-any cline-yes">3x</span>
|
|
733
|
+
<span class="cline-any cline-yes">3x</span>
|
|
734
|
+
<span class="cline-any cline-yes">3x</span>
|
|
735
|
+
<span class="cline-any cline-yes">3x</span>
|
|
736
|
+
<span class="cline-any cline-yes">3x</span>
|
|
737
|
+
<span class="cline-any cline-yes">3x</span>
|
|
738
|
+
<span class="cline-any cline-yes">21x</span>
|
|
739
|
+
<span class="cline-any cline-yes">21x</span>
|
|
740
|
+
<span class="cline-any cline-yes">21x</span>
|
|
741
|
+
<span class="cline-any cline-yes">21x</span>
|
|
742
|
+
<span class="cline-any cline-yes">21x</span>
|
|
743
|
+
<span class="cline-any cline-yes">21x</span>
|
|
744
|
+
<span class="cline-any cline-yes">21x</span>
|
|
745
|
+
<span class="cline-any cline-yes">21x</span>
|
|
746
|
+
<span class="cline-any cline-yes">21x</span>
|
|
747
|
+
<span class="cline-any cline-yes">4x</span>
|
|
748
|
+
<span class="cline-any cline-yes">4x</span>
|
|
749
|
+
<span class="cline-any cline-yes">4x</span>
|
|
750
|
+
<span class="cline-any cline-yes">4x</span>
|
|
751
|
+
<span class="cline-any cline-yes">4x</span>
|
|
752
|
+
<span class="cline-any cline-yes">4x</span>
|
|
753
|
+
<span class="cline-any cline-yes">4x</span>
|
|
754
|
+
<span class="cline-any cline-yes">4x</span>
|
|
755
|
+
<span class="cline-any cline-yes">4x</span>
|
|
756
|
+
<span class="cline-any cline-yes">4x</span>
|
|
757
|
+
<span class="cline-any cline-yes">4x</span>
|
|
758
|
+
<span class="cline-any cline-yes">4x</span>
|
|
759
|
+
<span class="cline-any cline-yes">4x</span>
|
|
760
|
+
<span class="cline-any cline-yes">4x</span>
|
|
761
|
+
<span class="cline-any cline-yes">4x</span>
|
|
762
|
+
<span class="cline-any cline-no"> </span>
|
|
763
|
+
<span class="cline-any cline-no"> </span>
|
|
764
|
+
<span class="cline-any cline-no"> </span>
|
|
765
|
+
<span class="cline-any cline-no"> </span>
|
|
766
|
+
<span class="cline-any cline-no"> </span>
|
|
767
|
+
<span class="cline-any cline-yes">4x</span>
|
|
768
|
+
<span class="cline-any cline-yes">4x</span>
|
|
769
|
+
<span class="cline-any cline-yes">4x</span>
|
|
770
|
+
<span class="cline-any cline-yes">4x</span>
|
|
771
|
+
<span class="cline-any cline-yes">4x</span>
|
|
772
|
+
<span class="cline-any cline-yes">4x</span>
|
|
773
|
+
<span class="cline-any cline-yes">4x</span>
|
|
774
|
+
<span class="cline-any cline-yes">4x</span>
|
|
775
|
+
<span class="cline-any cline-yes">4x</span>
|
|
776
|
+
<span class="cline-any cline-yes">4x</span>
|
|
777
|
+
<span class="cline-any cline-yes">4x</span>
|
|
778
|
+
<span class="cline-any cline-yes">4x</span>
|
|
779
|
+
<span class="cline-any cline-yes">4x</span>
|
|
780
|
+
<span class="cline-any cline-yes">4x</span>
|
|
781
|
+
<span class="cline-any cline-yes">4x</span>
|
|
782
|
+
<span class="cline-any cline-yes">4x</span>
|
|
783
|
+
<span class="cline-any cline-yes">4x</span>
|
|
784
|
+
<span class="cline-any cline-yes">4x</span>
|
|
785
|
+
<span class="cline-any cline-yes">4x</span>
|
|
786
|
+
<span class="cline-any cline-yes">4x</span>
|
|
787
|
+
<span class="cline-any cline-yes">3x</span>
|
|
788
|
+
<span class="cline-any cline-yes">3x</span>
|
|
789
|
+
<span class="cline-any cline-yes">3x</span>
|
|
790
|
+
<span class="cline-any cline-yes">4x</span>
|
|
791
|
+
<span class="cline-any cline-yes">4x</span>
|
|
792
|
+
<span class="cline-any cline-yes">4x</span>
|
|
793
|
+
<span class="cline-any cline-yes">4x</span>
|
|
794
|
+
<span class="cline-any cline-yes">4x</span>
|
|
795
|
+
<span class="cline-any cline-yes">4x</span>
|
|
796
|
+
<span class="cline-any cline-yes">4x</span>
|
|
797
|
+
<span class="cline-any cline-yes">4x</span>
|
|
798
|
+
<span class="cline-any cline-yes">4x</span>
|
|
799
|
+
<span class="cline-any cline-yes">1x</span>
|
|
800
|
+
<span class="cline-any cline-yes">1x</span>
|
|
801
|
+
<span class="cline-any cline-yes">1x</span>
|
|
802
|
+
<span class="cline-any cline-yes">1x</span>
|
|
803
|
+
<span class="cline-any cline-yes">1x</span>
|
|
804
|
+
<span class="cline-any cline-yes">1x</span>
|
|
805
|
+
<span class="cline-any cline-yes">1x</span>
|
|
806
|
+
<span class="cline-any cline-yes">1x</span>
|
|
807
|
+
<span class="cline-any cline-no"> </span>
|
|
808
|
+
<span class="cline-any cline-no"> </span>
|
|
809
|
+
<span class="cline-any cline-no"> </span>
|
|
810
|
+
<span class="cline-any cline-no"> </span>
|
|
811
|
+
<span class="cline-any cline-no"> </span>
|
|
812
|
+
<span class="cline-any cline-yes">1x</span>
|
|
813
|
+
<span class="cline-any cline-yes">1x</span>
|
|
814
|
+
<span class="cline-any cline-yes">1x</span>
|
|
815
|
+
<span class="cline-any cline-yes">1x</span>
|
|
816
|
+
<span class="cline-any cline-yes">1x</span>
|
|
817
|
+
<span class="cline-any cline-yes">4x</span>
|
|
818
|
+
<span class="cline-any cline-yes">21x</span>
|
|
819
|
+
<span class="cline-any cline-yes">21x</span>
|
|
820
|
+
<span class="cline-any cline-yes">21x</span>
|
|
821
|
+
<span class="cline-any cline-yes">21x</span>
|
|
822
|
+
<span class="cline-any cline-yes">21x</span>
|
|
823
|
+
<span class="cline-any cline-yes">21x</span>
|
|
824
|
+
<span class="cline-any cline-yes">21x</span>
|
|
825
|
+
<span class="cline-any cline-yes">21x</span>
|
|
826
|
+
<span class="cline-any cline-yes">21x</span>
|
|
827
|
+
<span class="cline-any cline-yes">4x</span>
|
|
828
|
+
<span class="cline-any cline-yes">4x</span>
|
|
829
|
+
<span class="cline-any cline-yes">4x</span>
|
|
830
|
+
<span class="cline-any cline-yes">4x</span>
|
|
831
|
+
<span class="cline-any cline-yes">4x</span>
|
|
832
|
+
<span class="cline-any cline-yes">4x</span>
|
|
833
|
+
<span class="cline-any cline-yes">4x</span>
|
|
834
|
+
<span class="cline-any cline-yes">4x</span>
|
|
835
|
+
<span class="cline-any cline-yes">4x</span>
|
|
836
|
+
<span class="cline-any cline-yes">4x</span>
|
|
837
|
+
<span class="cline-any cline-yes">4x</span>
|
|
838
|
+
<span class="cline-any cline-yes">4x</span>
|
|
839
|
+
<span class="cline-any cline-yes">4x</span>
|
|
840
|
+
<span class="cline-any cline-yes">4x</span>
|
|
841
|
+
<span class="cline-any cline-yes">4x</span>
|
|
842
|
+
<span class="cline-any cline-yes">4x</span>
|
|
843
|
+
<span class="cline-any cline-yes">4x</span>
|
|
844
|
+
<span class="cline-any cline-yes">4x</span>
|
|
845
|
+
<span class="cline-any cline-yes">4x</span>
|
|
846
|
+
<span class="cline-any cline-yes">4x</span>
|
|
847
|
+
<span class="cline-any cline-yes">4x</span>
|
|
848
|
+
<span class="cline-any cline-yes">4x</span>
|
|
849
|
+
<span class="cline-any cline-yes">3x</span>
|
|
850
|
+
<span class="cline-any cline-yes">3x</span>
|
|
851
|
+
<span class="cline-any cline-yes">3x</span>
|
|
852
|
+
<span class="cline-any cline-yes">4x</span>
|
|
853
|
+
<span class="cline-any cline-yes">4x</span>
|
|
854
|
+
<span class="cline-any cline-yes">4x</span>
|
|
855
|
+
<span class="cline-any cline-yes">4x</span>
|
|
856
|
+
<span class="cline-any cline-yes">4x</span>
|
|
857
|
+
<span class="cline-any cline-yes">4x</span>
|
|
858
|
+
<span class="cline-any cline-yes">1x</span>
|
|
859
|
+
<span class="cline-any cline-yes">1x</span>
|
|
860
|
+
<span class="cline-any cline-yes">4x</span>
|
|
861
|
+
<span class="cline-any cline-yes">4x</span>
|
|
862
|
+
<span class="cline-any cline-yes">4x</span>
|
|
863
|
+
<span class="cline-any cline-yes">4x</span>
|
|
864
|
+
<span class="cline-any cline-yes">1x</span>
|
|
865
|
+
<span class="cline-any cline-yes">1x</span>
|
|
866
|
+
<span class="cline-any cline-yes">1x</span>
|
|
867
|
+
<span class="cline-any cline-yes">1x</span>
|
|
868
|
+
<span class="cline-any cline-yes">1x</span>
|
|
869
|
+
<span class="cline-any cline-yes">1x</span>
|
|
870
|
+
<span class="cline-any cline-yes">1x</span>
|
|
871
|
+
<span class="cline-any cline-yes">1x</span>
|
|
872
|
+
<span class="cline-any cline-yes">1x</span>
|
|
643
873
|
<span class="cline-any cline-no"> </span>
|
|
644
874
|
<span class="cline-any cline-no"> </span>
|
|
645
875
|
<span class="cline-any cline-no"> </span>
|
|
@@ -648,10 +878,34 @@
|
|
|
648
878
|
<span class="cline-any cline-no"> </span>
|
|
649
879
|
<span class="cline-any cline-no"> </span>
|
|
650
880
|
<span class="cline-any cline-no"> </span>
|
|
881
|
+
<span class="cline-any cline-yes">1x</span>
|
|
882
|
+
<span class="cline-any cline-yes">1x</span>
|
|
883
|
+
<span class="cline-any cline-yes">1x</span>
|
|
884
|
+
<span class="cline-any cline-yes">1x</span>
|
|
885
|
+
<span class="cline-any cline-yes">1x</span>
|
|
886
|
+
<span class="cline-any cline-yes">4x</span>
|
|
887
|
+
<span class="cline-any cline-yes">21x</span>
|
|
888
|
+
<span class="cline-any cline-yes">21x</span>
|
|
889
|
+
<span class="cline-any cline-yes">21x</span>
|
|
890
|
+
<span class="cline-any cline-yes">21x</span>
|
|
891
|
+
<span class="cline-any cline-yes">21x</span>
|
|
892
|
+
<span class="cline-any cline-yes">21x</span>
|
|
893
|
+
<span class="cline-any cline-yes">21x</span>
|
|
894
|
+
<span class="cline-any cline-yes">21x</span>
|
|
895
|
+
<span class="cline-any cline-yes">21x</span>
|
|
651
896
|
<span class="cline-any cline-no"> </span>
|
|
652
897
|
<span class="cline-any cline-no"> </span>
|
|
653
898
|
<span class="cline-any cline-no"> </span>
|
|
654
899
|
<span class="cline-any cline-no"> </span>
|
|
900
|
+
<span class="cline-any cline-yes">21x</span>
|
|
901
|
+
<span class="cline-any cline-yes">21x</span>
|
|
902
|
+
<span class="cline-any cline-yes">21x</span>
|
|
903
|
+
<span class="cline-any cline-yes">21x</span>
|
|
904
|
+
<span class="cline-any cline-yes">21x</span>
|
|
905
|
+
<span class="cline-any cline-yes">21x</span>
|
|
906
|
+
<span class="cline-any cline-yes">21x</span>
|
|
907
|
+
<span class="cline-any cline-yes">21x</span>
|
|
908
|
+
<span class="cline-any cline-yes">21x</span>
|
|
655
909
|
<span class="cline-any cline-no"> </span>
|
|
656
910
|
<span class="cline-any cline-no"> </span>
|
|
657
911
|
<span class="cline-any cline-no"> </span>
|
|
@@ -693,391 +947,137 @@
|
|
|
693
947
|
<span class="cline-any cline-no"> </span>
|
|
694
948
|
<span class="cline-any cline-no"> </span>
|
|
695
949
|
<span class="cline-any cline-no"> </span>
|
|
950
|
+
<span class="cline-any cline-yes">21x</span>
|
|
951
|
+
<span class="cline-any cline-yes">21x</span>
|
|
952
|
+
<span class="cline-any cline-yes">21x</span>
|
|
953
|
+
<span class="cline-any cline-yes">21x</span>
|
|
954
|
+
<span class="cline-any cline-yes">21x</span>
|
|
955
|
+
<span class="cline-any cline-yes">21x</span>
|
|
956
|
+
<span class="cline-any cline-yes">21x</span>
|
|
957
|
+
<span class="cline-any cline-yes">21x</span>
|
|
958
|
+
<span class="cline-any cline-yes">21x</span>
|
|
959
|
+
<span class="cline-any cline-yes">21x</span>
|
|
960
|
+
<span class="cline-any cline-yes">21x</span>
|
|
961
|
+
<span class="cline-any cline-yes">21x</span>
|
|
962
|
+
<span class="cline-any cline-yes">21x</span>
|
|
963
|
+
<span class="cline-any cline-yes">9x</span>
|
|
964
|
+
<span class="cline-any cline-yes">9x</span>
|
|
965
|
+
<span class="cline-any cline-yes">9x</span>
|
|
966
|
+
<span class="cline-any cline-yes">9x</span>
|
|
967
|
+
<span class="cline-any cline-yes">9x</span>
|
|
968
|
+
<span class="cline-any cline-yes">9x</span>
|
|
969
|
+
<span class="cline-any cline-yes">9x</span>
|
|
696
970
|
<span class="cline-any cline-no"> </span>
|
|
697
971
|
<span class="cline-any cline-no"> </span>
|
|
698
|
-
<span class="cline-any cline-
|
|
699
|
-
<span class="cline-any cline-
|
|
700
|
-
<span class="cline-any cline-
|
|
701
|
-
<span class="cline-any cline-
|
|
702
|
-
<span class="cline-any cline-
|
|
703
|
-
<span class="cline-any cline-
|
|
704
|
-
<span class="cline-any cline-
|
|
705
|
-
<span class="cline-any cline-
|
|
706
|
-
<span class="cline-any cline-
|
|
707
|
-
<span class="cline-any cline-
|
|
708
|
-
<span class="cline-any cline-
|
|
709
|
-
<span class="cline-any cline-
|
|
710
|
-
<span class="cline-any cline-
|
|
711
|
-
<span class="cline-any cline-
|
|
712
|
-
<span class="cline-any cline-
|
|
713
|
-
<span class="cline-any cline-
|
|
714
|
-
<span class="cline-any cline-
|
|
715
|
-
<span class="cline-any cline-
|
|
716
|
-
<span class="cline-any cline-
|
|
717
|
-
<span class="cline-any cline-
|
|
718
|
-
<span class="cline-any cline-
|
|
719
|
-
<span class="cline-any cline-
|
|
720
|
-
<span class="cline-any cline-
|
|
721
|
-
<span class="cline-any cline-
|
|
722
|
-
<span class="cline-any cline-
|
|
723
|
-
<span class="cline-any cline-
|
|
724
|
-
<span class="cline-any cline-
|
|
725
|
-
<span class="cline-any cline-
|
|
726
|
-
<span class="cline-any cline-
|
|
727
|
-
<span class="cline-any cline-
|
|
728
|
-
<span class="cline-any cline-
|
|
729
|
-
<span class="cline-any cline-
|
|
730
|
-
<span class="cline-any cline-
|
|
731
|
-
<span class="cline-any cline-
|
|
732
|
-
<span class="cline-any cline-
|
|
733
|
-
<span class="cline-any cline-
|
|
734
|
-
<span class="cline-any cline-
|
|
735
|
-
<span class="cline-any cline-
|
|
736
|
-
<span class="cline-any cline-
|
|
737
|
-
<span class="cline-any cline-
|
|
738
|
-
<span class="cline-any cline-
|
|
739
|
-
<span class="cline-any cline-
|
|
740
|
-
<span class="cline-any cline-
|
|
741
|
-
<span class="cline-any cline-
|
|
742
|
-
<span class="cline-any cline-
|
|
743
|
-
<span class="cline-any cline-
|
|
744
|
-
<span class="cline-any cline-
|
|
745
|
-
<span class="cline-any cline-
|
|
746
|
-
<span class="cline-any cline-
|
|
747
|
-
<span class="cline-any cline-
|
|
748
|
-
<span class="cline-any cline-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
<span class="
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
<span class="
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
<span class="cline-any cline-no"> </span>
|
|
799
|
-
<span class="cline-any cline-no"> </span>
|
|
800
|
-
<span class="cline-any cline-no"> </span>
|
|
801
|
-
<span class="cline-any cline-no"> </span>
|
|
802
|
-
<span class="cline-any cline-no"> </span>
|
|
803
|
-
<span class="cline-any cline-no"> </span>
|
|
804
|
-
<span class="cline-any cline-no"> </span>
|
|
805
|
-
<span class="cline-any cline-no"> </span>
|
|
806
|
-
<span class="cline-any cline-no"> </span>
|
|
807
|
-
<span class="cline-any cline-no"> </span>
|
|
808
|
-
<span class="cline-any cline-no"> </span>
|
|
809
|
-
<span class="cline-any cline-no"> </span>
|
|
810
|
-
<span class="cline-any cline-no"> </span>
|
|
811
|
-
<span class="cline-any cline-no"> </span>
|
|
812
|
-
<span class="cline-any cline-no"> </span>
|
|
813
|
-
<span class="cline-any cline-no"> </span>
|
|
814
|
-
<span class="cline-any cline-no"> </span>
|
|
815
|
-
<span class="cline-any cline-no"> </span>
|
|
816
|
-
<span class="cline-any cline-no"> </span>
|
|
817
|
-
<span class="cline-any cline-no"> </span>
|
|
818
|
-
<span class="cline-any cline-no"> </span>
|
|
819
|
-
<span class="cline-any cline-no"> </span>
|
|
820
|
-
<span class="cline-any cline-no"> </span>
|
|
821
|
-
<span class="cline-any cline-no"> </span>
|
|
822
|
-
<span class="cline-any cline-no"> </span>
|
|
823
|
-
<span class="cline-any cline-no"> </span>
|
|
824
|
-
<span class="cline-any cline-no"> </span>
|
|
825
|
-
<span class="cline-any cline-no"> </span>
|
|
826
|
-
<span class="cline-any cline-no"> </span>
|
|
827
|
-
<span class="cline-any cline-no"> </span>
|
|
828
|
-
<span class="cline-any cline-no"> </span>
|
|
829
|
-
<span class="cline-any cline-no"> </span>
|
|
830
|
-
<span class="cline-any cline-no"> </span>
|
|
831
|
-
<span class="cline-any cline-no"> </span>
|
|
832
|
-
<span class="cline-any cline-no"> </span>
|
|
833
|
-
<span class="cline-any cline-no"> </span>
|
|
834
|
-
<span class="cline-any cline-no"> </span>
|
|
835
|
-
<span class="cline-any cline-no"> </span>
|
|
836
|
-
<span class="cline-any cline-no"> </span>
|
|
837
|
-
<span class="cline-any cline-no"> </span>
|
|
838
|
-
<span class="cline-any cline-no"> </span>
|
|
839
|
-
<span class="cline-any cline-no"> </span>
|
|
840
|
-
<span class="cline-any cline-no"> </span>
|
|
841
|
-
<span class="cline-any cline-no"> </span>
|
|
842
|
-
<span class="cline-any cline-no"> </span>
|
|
843
|
-
<span class="cline-any cline-no"> </span>
|
|
844
|
-
<span class="cline-any cline-no"> </span>
|
|
845
|
-
<span class="cline-any cline-no"> </span>
|
|
846
|
-
<span class="cline-any cline-no"> </span>
|
|
847
|
-
<span class="cline-any cline-no"> </span>
|
|
848
|
-
<span class="cline-any cline-no"> </span>
|
|
849
|
-
<span class="cline-any cline-no"> </span>
|
|
850
|
-
<span class="cline-any cline-no"> </span>
|
|
851
|
-
<span class="cline-any cline-no"> </span>
|
|
852
|
-
<span class="cline-any cline-no"> </span>
|
|
853
|
-
<span class="cline-any cline-no"> </span>
|
|
854
|
-
<span class="cline-any cline-no"> </span>
|
|
855
|
-
<span class="cline-any cline-no"> </span>
|
|
856
|
-
<span class="cline-any cline-no"> </span>
|
|
857
|
-
<span class="cline-any cline-no"> </span>
|
|
858
|
-
<span class="cline-any cline-no"> </span>
|
|
859
|
-
<span class="cline-any cline-no"> </span>
|
|
860
|
-
<span class="cline-any cline-no"> </span>
|
|
861
|
-
<span class="cline-any cline-no"> </span>
|
|
862
|
-
<span class="cline-any cline-no"> </span>
|
|
863
|
-
<span class="cline-any cline-no"> </span>
|
|
864
|
-
<span class="cline-any cline-no"> </span>
|
|
865
|
-
<span class="cline-any cline-no"> </span>
|
|
866
|
-
<span class="cline-any cline-no"> </span>
|
|
867
|
-
<span class="cline-any cline-no"> </span>
|
|
868
|
-
<span class="cline-any cline-no"> </span>
|
|
869
|
-
<span class="cline-any cline-no"> </span>
|
|
870
|
-
<span class="cline-any cline-no"> </span>
|
|
871
|
-
<span class="cline-any cline-no"> </span>
|
|
872
|
-
<span class="cline-any cline-no"> </span>
|
|
873
|
-
<span class="cline-any cline-no"> </span>
|
|
874
|
-
<span class="cline-any cline-no"> </span>
|
|
875
|
-
<span class="cline-any cline-no"> </span>
|
|
876
|
-
<span class="cline-any cline-no"> </span>
|
|
877
|
-
<span class="cline-any cline-no"> </span>
|
|
878
|
-
<span class="cline-any cline-no"> </span>
|
|
879
|
-
<span class="cline-any cline-no"> </span>
|
|
880
|
-
<span class="cline-any cline-no"> </span>
|
|
881
|
-
<span class="cline-any cline-no"> </span>
|
|
882
|
-
<span class="cline-any cline-no"> </span>
|
|
883
|
-
<span class="cline-any cline-no"> </span>
|
|
884
|
-
<span class="cline-any cline-no"> </span>
|
|
885
|
-
<span class="cline-any cline-no"> </span>
|
|
886
|
-
<span class="cline-any cline-no"> </span>
|
|
887
|
-
<span class="cline-any cline-no"> </span>
|
|
888
|
-
<span class="cline-any cline-no"> </span>
|
|
889
|
-
<span class="cline-any cline-no"> </span>
|
|
890
|
-
<span class="cline-any cline-no"> </span>
|
|
891
|
-
<span class="cline-any cline-no"> </span>
|
|
892
|
-
<span class="cline-any cline-no"> </span>
|
|
893
|
-
<span class="cline-any cline-no"> </span>
|
|
894
|
-
<span class="cline-any cline-no"> </span>
|
|
895
|
-
<span class="cline-any cline-no"> </span>
|
|
896
|
-
<span class="cline-any cline-no"> </span>
|
|
897
|
-
<span class="cline-any cline-no"> </span>
|
|
898
|
-
<span class="cline-any cline-no"> </span>
|
|
899
|
-
<span class="cline-any cline-no"> </span>
|
|
900
|
-
<span class="cline-any cline-no"> </span>
|
|
901
|
-
<span class="cline-any cline-no"> </span>
|
|
902
|
-
<span class="cline-any cline-no"> </span>
|
|
903
|
-
<span class="cline-any cline-no"> </span>
|
|
904
|
-
<span class="cline-any cline-no"> </span>
|
|
905
|
-
<span class="cline-any cline-no"> </span>
|
|
906
|
-
<span class="cline-any cline-no"> </span>
|
|
907
|
-
<span class="cline-any cline-no"> </span>
|
|
908
|
-
<span class="cline-any cline-no"> </span>
|
|
909
|
-
<span class="cline-any cline-no"> </span>
|
|
910
|
-
<span class="cline-any cline-no"> </span>
|
|
911
|
-
<span class="cline-any cline-no"> </span>
|
|
912
|
-
<span class="cline-any cline-no"> </span>
|
|
913
|
-
<span class="cline-any cline-no"> </span>
|
|
914
|
-
<span class="cline-any cline-no"> </span>
|
|
915
|
-
<span class="cline-any cline-no"> </span>
|
|
916
|
-
<span class="cline-any cline-no"> </span>
|
|
917
|
-
<span class="cline-any cline-no"> </span>
|
|
918
|
-
<span class="cline-any cline-no"> </span>
|
|
919
|
-
<span class="cline-any cline-no"> </span>
|
|
920
|
-
<span class="cline-any cline-no"> </span>
|
|
921
|
-
<span class="cline-any cline-no"> </span>
|
|
922
|
-
<span class="cline-any cline-no"> </span>
|
|
923
|
-
<span class="cline-any cline-no"> </span>
|
|
924
|
-
<span class="cline-any cline-no"> </span>
|
|
925
|
-
<span class="cline-any cline-no"> </span>
|
|
926
|
-
<span class="cline-any cline-no"> </span>
|
|
927
|
-
<span class="cline-any cline-no"> </span>
|
|
928
|
-
<span class="cline-any cline-no"> </span>
|
|
929
|
-
<span class="cline-any cline-no"> </span>
|
|
930
|
-
<span class="cline-any cline-no"> </span>
|
|
931
|
-
<span class="cline-any cline-no"> </span>
|
|
932
|
-
<span class="cline-any cline-no"> </span>
|
|
933
|
-
<span class="cline-any cline-no"> </span>
|
|
934
|
-
<span class="cline-any cline-no"> </span>
|
|
935
|
-
<span class="cline-any cline-no"> </span>
|
|
936
|
-
<span class="cline-any cline-no"> </span>
|
|
937
|
-
<span class="cline-any cline-no"> </span>
|
|
938
|
-
<span class="cline-any cline-no"> </span>
|
|
939
|
-
<span class="cline-any cline-no"> </span>
|
|
940
|
-
<span class="cline-any cline-no"> </span>
|
|
941
|
-
<span class="cline-any cline-no"> </span>
|
|
942
|
-
<span class="cline-any cline-no"> </span>
|
|
943
|
-
<span class="cline-any cline-no"> </span>
|
|
944
|
-
<span class="cline-any cline-no"> </span>
|
|
945
|
-
<span class="cline-any cline-no"> </span>
|
|
946
|
-
<span class="cline-any cline-no"> </span>
|
|
947
|
-
<span class="cline-any cline-no"> </span>
|
|
948
|
-
<span class="cline-any cline-no"> </span>
|
|
949
|
-
<span class="cline-any cline-no"> </span>
|
|
950
|
-
<span class="cline-any cline-no"> </span>
|
|
951
|
-
<span class="cline-any cline-no"> </span>
|
|
952
|
-
<span class="cline-any cline-no"> </span>
|
|
953
|
-
<span class="cline-any cline-no"> </span>
|
|
954
|
-
<span class="cline-any cline-no"> </span>
|
|
955
|
-
<span class="cline-any cline-no"> </span>
|
|
956
|
-
<span class="cline-any cline-no"> </span>
|
|
957
|
-
<span class="cline-any cline-no"> </span>
|
|
958
|
-
<span class="cline-any cline-no"> </span>
|
|
959
|
-
<span class="cline-any cline-no"> </span>
|
|
960
|
-
<span class="cline-any cline-no"> </span>
|
|
961
|
-
<span class="cline-any cline-no"> </span>
|
|
962
|
-
<span class="cline-any cline-no"> </span>
|
|
963
|
-
<span class="cline-any cline-no"> </span>
|
|
964
|
-
<span class="cline-any cline-no"> </span>
|
|
965
|
-
<span class="cline-any cline-no"> </span>
|
|
966
|
-
<span class="cline-any cline-no"> </span>
|
|
967
|
-
<span class="cline-any cline-no"> </span>
|
|
968
|
-
<span class="cline-any cline-no"> </span>
|
|
969
|
-
<span class="cline-any cline-no"> </span>
|
|
970
|
-
<span class="cline-any cline-no"> </span>
|
|
971
|
-
<span class="cline-any cline-no"> </span>
|
|
972
|
-
<span class="cline-any cline-no"> </span>
|
|
973
|
-
<span class="cline-any cline-no"> </span>
|
|
974
|
-
<span class="cline-any cline-no"> </span>
|
|
975
|
-
<span class="cline-any cline-no"> </span>
|
|
976
|
-
<span class="cline-any cline-no"> </span>
|
|
977
|
-
<span class="cline-any cline-no"> </span>
|
|
978
|
-
<span class="cline-any cline-no"> </span>
|
|
979
|
-
<span class="cline-any cline-no"> </span>
|
|
980
|
-
<span class="cline-any cline-no"> </span>
|
|
981
|
-
<span class="cline-any cline-no"> </span>
|
|
982
|
-
<span class="cline-any cline-no"> </span>
|
|
983
|
-
<span class="cline-any cline-no"> </span>
|
|
984
|
-
<span class="cline-any cline-no"> </span>
|
|
985
|
-
<span class="cline-any cline-no"> </span>
|
|
986
|
-
<span class="cline-any cline-no"> </span>
|
|
987
|
-
<span class="cline-any cline-no"> </span>
|
|
988
|
-
<span class="cline-any cline-no"> </span>
|
|
989
|
-
<span class="cline-any cline-no"> </span>
|
|
990
|
-
<span class="cline-any cline-no"> </span>
|
|
991
|
-
<span class="cline-any cline-no"> </span>
|
|
992
|
-
<span class="cline-any cline-no"> </span>
|
|
993
|
-
<span class="cline-any cline-no"> </span>
|
|
994
|
-
<span class="cline-any cline-no"> </span>
|
|
995
|
-
<span class="cline-any cline-no"> </span>
|
|
996
|
-
<span class="cline-any cline-no"> </span>
|
|
997
|
-
<span class="cline-any cline-no"> </span>
|
|
998
|
-
<span class="cline-any cline-no"> </span>
|
|
999
|
-
<span class="cline-any cline-no"> </span>
|
|
1000
|
-
<span class="cline-any cline-no"> </span>
|
|
1001
|
-
<span class="cline-any cline-no"> </span>
|
|
1002
|
-
<span class="cline-any cline-no"> </span>
|
|
1003
|
-
<span class="cline-any cline-no"> </span>
|
|
1004
|
-
<span class="cline-any cline-no"> </span>
|
|
1005
|
-
<span class="cline-any cline-no"> </span>
|
|
1006
|
-
<span class="cline-any cline-no"> </span>
|
|
1007
|
-
<span class="cline-any cline-no"> </span>
|
|
1008
|
-
<span class="cline-any cline-no"> </span>
|
|
1009
|
-
<span class="cline-any cline-no"> </span>
|
|
1010
|
-
<span class="cline-any cline-no"> </span>
|
|
1011
|
-
<span class="cline-any cline-no"> </span>
|
|
1012
|
-
<span class="cline-any cline-no"> </span>
|
|
1013
|
-
<span class="cline-any cline-no"> </span>
|
|
1014
|
-
<span class="cline-any cline-no"> </span>
|
|
1015
|
-
<span class="cline-any cline-no"> </span>
|
|
1016
|
-
<span class="cline-any cline-no"> </span>
|
|
1017
|
-
<span class="cline-any cline-no"> </span>
|
|
1018
|
-
<span class="cline-any cline-no"> </span>
|
|
1019
|
-
<span class="cline-any cline-no"> </span>
|
|
1020
|
-
<span class="cline-any cline-no"> </span>
|
|
1021
|
-
<span class="cline-any cline-no"> </span>
|
|
1022
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" >/**<span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" ></span></span></span>
|
|
1023
|
-
<span class="cstat-no" title="statement not covered" > * HSuite Native Connect</span>
|
|
1024
|
-
<span class="cstat-no" title="statement not covered" > * Copyright 2024-2025 HSuite (https://hsuite.finance)</span>
|
|
1025
|
-
<span class="cstat-no" title="statement not covered" > *</span>
|
|
1026
|
-
<span class="cstat-no" title="statement not covered" > * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0</span>
|
|
1027
|
-
<span class="cstat-no" title="statement not covered" > *</span>
|
|
1028
|
-
<span class="cstat-no" title="statement not covered" > * This file is part of HSuite Native Connect. For commercial licensing,</span>
|
|
1029
|
-
<span class="cstat-no" title="statement not covered" > * visit https://hsuite.finance/licensing</span>
|
|
1030
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1031
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1032
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1033
|
-
<span class="cstat-no" title="statement not covered" > * @file xrpl-signer.ts</span>
|
|
1034
|
-
<span class="cstat-no" title="statement not covered" > * @description XRPL-specific WalletConnect signer implementation</span>
|
|
1035
|
-
<span class="cstat-no" title="statement not covered" > *</span>
|
|
1036
|
-
<span class="cstat-no" title="statement not covered" > * Implements the IWalletConnectSigner interface for XRPL ledger.</span>
|
|
1037
|
-
<span class="cstat-no" title="statement not covered" > * Handles XRPL-specific JSON-RPC methods and transaction formats.</span>
|
|
1038
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1039
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1040
|
-
<span class="cstat-no" title="statement not covered" >import { XrplTransactionEncoder } from '@hsuite/native-connect-sdk';</span>
|
|
1041
|
-
<span class="cstat-no" title="statement not covered" >import { getLogger } from '@hsuite/native-connect-sdk';</span>
|
|
1042
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1043
|
-
<span class="cstat-no" title="statement not covered" >import type { SignResult, SubmitResult } from '../../base-wallet-provider';</span>
|
|
1044
|
-
<span class="cstat-no" title="statement not covered" >import type { IWalletConnectSigner, SignerOperationParams } from '../core/base-signer.interface';</span>
|
|
1045
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1046
|
-
<span class="cstat-no" title="statement not covered" >const logger = getLogger().scoped?.('XrplSigner') ?? getLogger();</span>
|
|
1047
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1048
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1049
|
-
<span class="cstat-no" title="statement not covered" > * Extract a meaningful error message from various error shapes.</span>
|
|
1050
|
-
<span class="cstat-no" title="statement not covered" > * WalletConnect SDK throws errors that are not standard Error instances.</span>
|
|
1051
|
-
<span class="cstat-no" title="statement not covered" > *</span>
|
|
1052
|
-
<span class="cstat-no" title="statement not covered" > * Handles:</span>
|
|
1053
|
-
<span class="cstat-no" title="statement not covered" > * - Standard Error objects</span>
|
|
1054
|
-
<span class="cstat-no" title="statement not covered" > * - WalletConnect SDK errors: { code, message }</span>
|
|
1055
|
-
<span class="cstat-no" title="statement not covered" > * - Nested errors: { error: { message } }</span>
|
|
1056
|
-
<span class="cstat-no" title="statement not covered" > * - PIN_REQUIRED errors from wallet</span>
|
|
1057
|
-
<span class="cstat-no" title="statement not covered" > * - DOMException objects</span>
|
|
1058
|
-
<span class="cstat-no" title="statement not covered" > * - Objects that stringify to {} (enumerable property check)</span>
|
|
1059
|
-
<span class="cstat-no" title="statement not covered" > *</span>
|
|
1060
|
-
<span class="cstat-no" title="statement not covered" > * @param error - Error from WalletConnect SDK (can be Error, object, or string)</span>
|
|
1061
|
-
<span class="cstat-no" title="statement not covered" > * @returns Human-readable error message</span>
|
|
1062
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1063
|
-
<span class="cstat-no" title="statement not covered" >function extractErrorMessage(error: unknown): string {</span>
|
|
1064
|
-
<span class="cstat-no" title="statement not covered" > // Log raw error for debugging</span>
|
|
1065
|
-
<span class="cstat-no" title="statement not covered" > logger.debug('Raw error object', {</span>
|
|
1066
|
-
<span class="cstat-no" title="statement not covered" > errorType: typeof error,</span>
|
|
1067
|
-
<span class="cstat-no" title="statement not covered" > isError: error instanceof Error,</span>
|
|
1068
|
-
<span class="cstat-no" title="statement not covered" > errorKeys: typeof error === 'object' && error !== null ? Object.keys(error) : [],</span>
|
|
1069
|
-
<span class="cstat-no" title="statement not covered" > errorProto:</span>
|
|
1070
|
-
<span class="cstat-no" title="statement not covered" > typeof error === 'object' && error !== null</span>
|
|
1071
|
-
<span class="cstat-no" title="statement not covered" > ? Object.getPrototypeOf(error)?.constructor?.name</span>
|
|
972
|
+
<span class="cline-any cline-yes">9x</span>
|
|
973
|
+
<span class="cline-any cline-yes">9x</span>
|
|
974
|
+
<span class="cline-any cline-yes">9x</span>
|
|
975
|
+
<span class="cline-any cline-yes">9x</span>
|
|
976
|
+
<span class="cline-any cline-yes">26x</span>
|
|
977
|
+
<span class="cline-any cline-yes">26x</span>
|
|
978
|
+
<span class="cline-any cline-yes">26x</span>
|
|
979
|
+
<span class="cline-any cline-yes">26x</span>
|
|
980
|
+
<span class="cline-any cline-yes">1x</span>
|
|
981
|
+
<span class="cline-any cline-yes">1x</span>
|
|
982
|
+
<span class="cline-any cline-yes">1x</span>
|
|
983
|
+
<span class="cline-any cline-yes">25x</span>
|
|
984
|
+
<span class="cline-any cline-yes">25x</span>
|
|
985
|
+
<span class="cline-any cline-yes">25x</span>
|
|
986
|
+
<span class="cline-any cline-yes">25x</span>
|
|
987
|
+
<span class="cline-any cline-yes">25x</span>
|
|
988
|
+
<span class="cline-any cline-yes">26x</span>
|
|
989
|
+
<span class="cline-any cline-yes">9x</span>
|
|
990
|
+
<span class="cline-any cline-yes">9x</span>
|
|
991
|
+
<span class="cline-any cline-yes">9x</span>
|
|
992
|
+
<span class="cline-any cline-yes">9x</span>
|
|
993
|
+
<span class="cline-any cline-yes">5x</span>
|
|
994
|
+
<span class="cline-any cline-yes">5x</span>
|
|
995
|
+
<span class="cline-any cline-yes">5x</span>
|
|
996
|
+
<span class="cline-any cline-yes">5x</span>
|
|
997
|
+
<span class="cline-any cline-yes">17x</span>
|
|
998
|
+
<span class="cline-any cline-yes">5x</span>
|
|
999
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1000
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1001
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1002
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1003
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1004
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1005
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1006
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1007
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1008
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1009
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1010
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1011
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1012
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1013
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1014
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1015
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1016
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1017
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1018
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1019
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1020
|
+
<span class="cline-any cline-yes">9x</span>
|
|
1021
|
+
<span class="cline-any cline-yes">21x</span>
|
|
1022
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/**
|
|
1023
|
+
* HSuite Native Connect
|
|
1024
|
+
* Copyright 2024-2025 HSuite (https://hsuite.finance)
|
|
1025
|
+
*
|
|
1026
|
+
* SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
|
|
1027
|
+
*
|
|
1028
|
+
* This file is part of HSuite Native Connect. For commercial licensing,
|
|
1029
|
+
* visit https://hsuite.finance/licensing
|
|
1030
|
+
*/
|
|
1031
|
+
|
|
1032
|
+
/**
|
|
1033
|
+
* @file xrpl-signer.ts
|
|
1034
|
+
* @description XRPL-specific WalletConnect signer implementation
|
|
1035
|
+
*
|
|
1036
|
+
* Implements the IWalletConnectSigner interface for XRPL ledger.
|
|
1037
|
+
* Handles XRPL-specific JSON-RPC methods and transaction formats.
|
|
1038
|
+
*/
|
|
1039
|
+
|
|
1040
|
+
import { XrplTransactionEncoder } from '@hsuite/native-connect-sdk';
|
|
1041
|
+
import { getLogger } from '@hsuite/native-connect-sdk';
|
|
1042
|
+
|
|
1043
|
+
import type { SignResult, SubmitResult } from '../../base-wallet-provider';
|
|
1044
|
+
import type { IWalletConnectSigner, SignerOperationParams } from '../core/base-signer.interface';
|
|
1045
|
+
|
|
1046
|
+
const logger = getLogger().scoped?.('XrplSigner'<span class="branch-0 cbranch-no" title="branch not covered" >) ?? getLogger();</span>
|
|
1047
|
+
|
|
1048
|
+
/**
|
|
1049
|
+
* Extract a meaningful error message from various error shapes.
|
|
1050
|
+
* WalletConnect SDK throws errors that are not standard Error instances.
|
|
1051
|
+
*
|
|
1052
|
+
* Handles:
|
|
1053
|
+
* - Standard Error objects
|
|
1054
|
+
* - WalletConnect SDK errors: { code, message }
|
|
1055
|
+
* - Nested errors: { error: { message } }
|
|
1056
|
+
* - PIN_REQUIRED errors from wallet
|
|
1057
|
+
* - DOMException objects
|
|
1058
|
+
* - Objects that stringify to {} (enumerable property check)
|
|
1059
|
+
*
|
|
1060
|
+
* @param error - Error from WalletConnect SDK (can be Error, object, or string)
|
|
1061
|
+
* @returns Human-readable error message
|
|
1062
|
+
*/
|
|
1063
|
+
function extractErrorMessage(error: unknown): string {
|
|
1064
|
+
// Log raw error for debugging
|
|
1065
|
+
logger.debug('Raw error object', {
|
|
1066
|
+
errorType: typeof error,
|
|
1067
|
+
isError: error instanceof Error,
|
|
1068
|
+
errorKeys: typeof error === 'object' && error !== null ? Object.keys(error<span class="branch-0 cbranch-no" title="branch not covered" >) : [],</span>
|
|
1069
|
+
errorProto:
|
|
1070
|
+
typeof error === 'object' && error !== null
|
|
1071
|
+
? Object.getPrototypeOf(error)?.constructor?.<span class="branch-0 cbranch-no" title="branch not covered" >name</span>
|
|
1072
1072
|
<span class="cstat-no" title="statement not covered" > : 'N/A',</span>
|
|
1073
|
-
|
|
1074
|
-
|
|
1073
|
+
rawError: error,
|
|
1074
|
+
});
|
|
1075
|
+
|
|
1076
|
+
if (error instanceof Error) {
|
|
1077
|
+
return error.message;
|
|
1078
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > }</span>
|
|
1075
1079
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
1076
|
-
<span class="
|
|
1077
|
-
<span class="cstat-no" title="statement not covered" > return error.message;</span>
|
|
1078
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1079
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1080
|
-
<span class="cstat-no" title="statement not covered" > if (typeof error === 'object' && error !== null) {</span>
|
|
1080
|
+
if (typeof error === 'object' && error !== null) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1081
1081
|
<span class="cstat-no" title="statement not covered" > const errorObj = error as Record<string, unknown>;</span>
|
|
1082
1082
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
1083
1083
|
<span class="cstat-no" title="statement not covered" > // Check for code property first (common in SDK errors like PIN_REQUIRED)</span>
|
|
@@ -1173,181 +1173,181 @@
|
|
|
1173
1173
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
1174
1174
|
<span class="cstat-no" title="statement not covered" > return 'Unknown error';</span>
|
|
1175
1175
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
<span class="
|
|
1176
|
+
|
|
1177
|
+
/**
|
|
1178
|
+
* Signer implementation for XRPL ledger.
|
|
1179
|
+
*
|
|
1180
|
+
* Supports XRPL-specific WalletConnect methods:
|
|
1181
|
+
* - xrpl_signTransaction (sign-only, returns signed blob)
|
|
1182
|
+
* - xrpl_signAndSubmit (sign + submit, returns transaction hash)
|
|
1183
|
+
* - xrpl_submit (submit pre-signed transaction)
|
|
1184
|
+
* - xrpl_signMessage (arbitrary message signing)
|
|
1185
|
+
*
|
|
1186
|
+
* Uses XRPL address format: xrpl:<network>:rAddress...
|
|
1187
|
+
*/
|
|
1188
|
+
export class XrplSigner implements IWalletConnectSigner {
|
|
1189
|
+
readonly ledgerId = 'xrpl';
|
|
1190
|
+
|
|
1191
|
+
/**
|
|
1192
|
+
* Build XRPL namespace configuration for WalletConnect.
|
|
1193
|
+
* Defines the JSON-RPC methods and chains this signer supports.
|
|
1194
|
+
*
|
|
1195
|
+
* @param networkId - Network identifier (e.g., 'xrpl:testnet', 'xrpl:mainnet')
|
|
1196
|
+
* @returns Namespace configuration object
|
|
1197
|
+
*/
|
|
1198
|
+
buildNamespace(networkId: string): {
|
|
1199
|
+
methods: string[];
|
|
1200
|
+
chains: string[];
|
|
1201
|
+
events: string[];
|
|
1202
|
+
} {
|
|
1203
|
+
// Extract network name (testnet, mainnet, devnet)
|
|
1204
|
+
const network = networkId.includes('mainnet')
|
|
1205
|
+
? 'mainnet'
|
|
1206
|
+
: networkId.includes('devnet'<span class="branch-0 cbranch-no" title="branch not covered" >)</span>
|
|
1207
1207
|
<span class="cstat-no" title="statement not covered" > ? 'devnet'</span>
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
<span class="
|
|
1208
|
+
: 'testnet';
|
|
1209
|
+
|
|
1210
|
+
return {
|
|
1211
|
+
methods: ['xrpl_signTransaction', 'xrpl_submit', 'xrpl_signAndSubmit', 'xrpl_signMessage'],
|
|
1212
|
+
chains: [`xrpl:${network}`],
|
|
1213
|
+
events: ['chainChanged', 'accountsChanged'],
|
|
1214
|
+
};
|
|
1215
|
+
}
|
|
1216
|
+
|
|
1217
|
+
/**
|
|
1218
|
+
* Sign an XRPL transaction without submitting to network.
|
|
1219
|
+
* Uses xrpl_signTransaction method with JSON transaction object.
|
|
1220
|
+
*
|
|
1221
|
+
* @param params - Signing parameters
|
|
1222
|
+
* @returns Promise resolving to signed transaction blob (hex-encoded)
|
|
1223
|
+
*/
|
|
1224
|
+
async signTransaction(params: SignerOperationParams): Promise<SignResult> {
|
|
1225
|
+
// Decode base64 payload to JSON transaction
|
|
1226
|
+
logger.debug('Decoding XRPL transaction payload', {
|
|
1227
|
+
payloadLength: params.payload?.length,
|
|
1228
|
+
networkId: params.networkId,
|
|
1229
|
+
topic: params.topic?.substring(0, 16) + '...',
|
|
1230
|
+
});
|
|
1231
|
+
|
|
1232
|
+
let transaction: any;
|
|
1233
|
+
try {
|
|
1234
|
+
transaction = XrplTransactionEncoder.decodeTransaction(params.payload);
|
|
1235
|
+
logger.debug('Transaction decoded successfully', {
|
|
1236
|
+
transactionType: transaction?.TransactionType,
|
|
1237
|
+
account: transaction?.Account,
|
|
1238
|
+
});
|
|
1239
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > } catch (decodeError) {</span>
|
|
1240
1240
|
<span class="cstat-no" title="statement not covered" > logger.error('Failed to decode transaction payload', {</span>
|
|
1241
1241
|
<span class="cstat-no" title="statement not covered" > error: decodeError instanceof Error ? decodeError.message : String(decodeError),</span>
|
|
1242
1242
|
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1243
1243
|
<span class="cstat-no" title="statement not covered" > throw decodeError;</span>
|
|
1244
1244
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
<span class="
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
<span class="
|
|
1245
|
+
|
|
1246
|
+
try {
|
|
1247
|
+
logger.debug('Sending xrpl_signTransaction request to wallet', {
|
|
1248
|
+
method: 'xrpl_signTransaction',
|
|
1249
|
+
chainId: params.networkId,
|
|
1250
|
+
topic: params.topic?.substring(0, 16) + '...',
|
|
1251
|
+
});
|
|
1252
|
+
|
|
1253
|
+
// Use 5-minute expiry to give users time to review and approve
|
|
1254
|
+
const result = await params.client.request({
|
|
1255
|
+
topic: params.topic,
|
|
1256
|
+
chainId: params.networkId,
|
|
1257
|
+
request: {
|
|
1258
|
+
method: 'xrpl_signTransaction',
|
|
1259
|
+
params: {
|
|
1260
|
+
transaction, // Native JSON object
|
|
1261
|
+
},
|
|
1262
|
+
},
|
|
1263
|
+
expiry: 300, // 5 minutes in seconds
|
|
1264
|
+
});
|
|
1265
|
+
|
|
1266
|
+
logger.debug('Received response from wallet', {
|
|
1267
|
+
hasResult: !!result,
|
|
1268
|
+
resultKeys: result ? Object.keys(result as object<span class="branch-0 cbranch-no" title="branch not covered" >) : [],</span>
|
|
1269
|
+
});
|
|
1270
|
+
|
|
1271
|
+
return {
|
|
1272
|
+
signedPayload:
|
|
1273
|
+
(result as { tx_blob?: string; tx_json?: any }).<span class="branch-0 cbranch-no" title="branch not covered" >tx_blob || JSON.stringify(result),</span>
|
|
1274
|
+
metadata: { result },
|
|
1275
|
+
};
|
|
1276
|
+
} catch (error) {
|
|
1277
|
+
// Check if this is an empty error object (WalletConnect SDK bug)
|
|
1278
|
+
const isEmptyError =
|
|
1279
|
+
typeof error === 'object' &&
|
|
1280
|
+
error !== null &&
|
|
1281
|
+
Object.keys(error).length === 0 &&
|
|
1282
|
+
!(error instanceof Error);
|
|
1283
|
+
|
|
1284
|
+
if (isEmptyError) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1285
1285
|
<span class="cstat-no" title="statement not covered" > logger.warn('WalletConnect SDK empty error - relay subscription may have been stale', {</span>
|
|
1286
1286
|
<span class="cstat-no" title="statement not covered" > topic: params.topic?.substring(0, 16) + '...',</span>
|
|
1287
1287
|
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1288
1288
|
<span class="cstat-no" title="statement not covered" > throw new Error('WalletConnect connection issue - please try again');</span>
|
|
1289
1289
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
<span class="
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
<span class="
|
|
1290
|
+
|
|
1291
|
+
const errorMsg = extractErrorMessage(error);
|
|
1292
|
+
logger.error('Sign failed', { error: errorMsg });
|
|
1293
|
+
throw new Error(`XRPL sign failed: ${errorMsg}`);
|
|
1294
|
+
}
|
|
1295
|
+
}
|
|
1296
|
+
|
|
1297
|
+
/**
|
|
1298
|
+
* Sign and submit an XRPL transaction to the network.
|
|
1299
|
+
* Uses xrpl_signAndSubmit method with JSON transaction object.
|
|
1300
|
+
*
|
|
1301
|
+
* @param params - Submission parameters
|
|
1302
|
+
* @returns Promise resolving to transaction hash and metadata
|
|
1303
|
+
*/
|
|
1304
|
+
async submitTransaction(params: SignerOperationParams): Promise<SubmitResult> {
|
|
1305
|
+
// Decode base64 payload to JSON transaction
|
|
1306
|
+
const transaction = XrplTransactionEncoder.decodeTransaction(params.payload);
|
|
1307
|
+
|
|
1308
|
+
try {
|
|
1309
|
+
logger.debug('Sending xrpl_signAndSubmit request to wallet', {
|
|
1310
|
+
method: 'xrpl_signAndSubmit',
|
|
1311
|
+
chainId: params.networkId,
|
|
1312
|
+
topic: params.topic?.substring(0, 16) + '...',
|
|
1313
|
+
});
|
|
1314
|
+
|
|
1315
|
+
// Use 5-minute expiry to give users time to review and approve
|
|
1316
|
+
const result = await params.client.request({
|
|
1317
|
+
topic: params.topic,
|
|
1318
|
+
chainId: params.networkId,
|
|
1319
|
+
request: {
|
|
1320
|
+
method: 'xrpl_signAndSubmit',
|
|
1321
|
+
params: {
|
|
1322
|
+
transaction, // Native JSON object
|
|
1323
|
+
},
|
|
1324
|
+
},
|
|
1325
|
+
expiry: 300, // 5 minutes in seconds
|
|
1326
|
+
});
|
|
1327
|
+
|
|
1328
|
+
logger.debug('Received xrpl_signAndSubmit response', {
|
|
1329
|
+
hasResult: !!result,
|
|
1330
|
+
resultKeys: result ? Object.keys(result as object<span class="branch-0 cbranch-no" title="branch not covered" >) : [],</span>
|
|
1331
|
+
});
|
|
1332
|
+
|
|
1333
|
+
return {
|
|
1334
|
+
transactionId:
|
|
1335
|
+
(result as { hash?: string }).hash ||
|
|
1336
|
+
(result as { tx_json?: { hash?: string } }).<span class="branch-0 cbranch-no" title="branch not covered" >tx_json?.hash ||</span>
|
|
1337
|
+
'',
|
|
1338
|
+
transactionHash: (result as { hash?: string }).hash,
|
|
1339
|
+
metadata: { result },
|
|
1340
|
+
};
|
|
1341
|
+
} catch (error) {
|
|
1342
|
+
// Check if this is an empty error object (WalletConnect SDK bug)
|
|
1343
|
+
// This typically happens when relay subscription is stale
|
|
1344
|
+
const isEmptyError =
|
|
1345
|
+
typeof error === 'object' &&
|
|
1346
|
+
error !== null &&
|
|
1347
|
+
Object.keys(error).length === 0 &&
|
|
1348
|
+
!(error instanceof Error);
|
|
1349
|
+
|
|
1350
|
+
if (isEmptyError) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1351
1351
|
<span class="cstat-no" title="statement not covered" > // Empty error object is a known WalletConnect SDK issue</span>
|
|
1352
1352
|
<span class="cstat-no" title="statement not covered" > // It usually means the relay subscription was stale</span>
|
|
1353
1353
|
<span class="cstat-no" title="statement not covered" > logger.warn('WalletConnect SDK empty error - relay subscription may have been stale', {</span>
|
|
@@ -1356,34 +1356,34 @@
|
|
|
1356
1356
|
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1357
1357
|
<span class="cstat-no" title="statement not covered" > throw new Error('WalletConnect connection issue - please try again');</span>
|
|
1358
1358
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
<span class="
|
|
1359
|
+
|
|
1360
|
+
const errorMsg = extractErrorMessage(error);
|
|
1361
|
+
logger.error('Submit failed', { error: errorMsg });
|
|
1362
|
+
throw new Error(`XRPL submit failed: ${errorMsg}`);
|
|
1363
|
+
}
|
|
1364
|
+
}
|
|
1365
|
+
|
|
1366
|
+
/**
|
|
1367
|
+
* Sign and execute a transaction in one call (preferred method to avoid double prompts).
|
|
1368
|
+
* Uses xrpl_signAndSubmit method directly instead of sign-then-submit.
|
|
1369
|
+
*
|
|
1370
|
+
* @param params - Transaction parameters
|
|
1371
|
+
* @returns Promise resolving to transaction hash and metadata
|
|
1372
|
+
*/
|
|
1373
|
+
<span class="fstat-no" title="function not covered" > async signAndExecuteTransaction(params: SignerOperationParams): Promise<SubmitResult> {</span>
|
|
1374
1374
|
<span class="cstat-no" title="statement not covered" > // XRPL's xrpl_signAndSubmit method handles both signing and submission</span>
|
|
1375
1375
|
<span class="cstat-no" title="statement not covered" > // This is the preferred method for XRPL transactions</span>
|
|
1376
1376
|
<span class="cstat-no" title="statement not covered" > return this.submitTransaction(params);</span>
|
|
1377
1377
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
<span class="
|
|
1378
|
+
|
|
1379
|
+
/**
|
|
1380
|
+
* Sign an arbitrary message using xrpl_signMessage method.
|
|
1381
|
+
* Used for DAO votes, authentication proofs, and other non-transaction signing.
|
|
1382
|
+
*
|
|
1383
|
+
* @param params - Signing parameters with message string
|
|
1384
|
+
* @returns Promise resolving to signature and metadata
|
|
1385
|
+
*/
|
|
1386
|
+
<span class="fstat-no" title="function not covered" > async signMessage(</span>
|
|
1387
1387
|
<span class="cstat-no" title="statement not covered" > params: SignerOperationParams & { message: string; encoding?: 'utf-8' | 'base64' },</span>
|
|
1388
1388
|
<span class="cstat-no" title="statement not covered" > ): Promise<import('../../base-wallet-provider').SignMessageResult> {</span>
|
|
1389
1389
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
@@ -1425,78 +1425,78 @@
|
|
|
1425
1425
|
<span class="cstat-no" title="statement not covered" > throw new Error(`XRPL sign message failed: ${errorMsg}`);</span>
|
|
1426
1426
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1427
1427
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
<span class="
|
|
1428
|
+
|
|
1429
|
+
/**
|
|
1430
|
+
* Parse accounts from XRPL namespace in WalletConnect session.
|
|
1431
|
+
* Extracts addresses from XRPL format: xrpl:<network>:rAddress...
|
|
1432
|
+
*
|
|
1433
|
+
* Optionally filters accounts to only include those matching a target network.
|
|
1434
|
+
* This is important for respecting the user's network selection in the dApp.
|
|
1435
|
+
*
|
|
1436
|
+
* @param namespace - XRPL namespace object from session
|
|
1437
|
+
* @param targetNetworkId - Optional network ID to filter accounts (e.g., 'xrpl:mainnet')
|
|
1438
|
+
* @returns Array of parsed account objects, filtered by target network if specified
|
|
1439
|
+
*/
|
|
1440
|
+
parseAccounts(
|
|
1441
|
+
namespace: any,
|
|
1442
|
+
targetNetworkId?: string,
|
|
1443
|
+
): Array<{ address: string; chainId: string }> {
|
|
1444
|
+
if (
|
|
1445
|
+
!(namespace as { accounts?: string[] })?.accounts ||
|
|
1446
|
+
!Array.isArray((namespace as { accounts?: string[] }).accounts)
|
|
1447
|
+
) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1448
1448
|
<span class="cstat-no" title="statement not covered" > return [];</span>
|
|
1449
1449
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1450
|
+
|
|
1451
|
+
// Parse all accounts from namespace
|
|
1452
|
+
const allAccounts = ((namespace as { accounts?: string[] }).<span class="branch-0 cbranch-no" title="branch not covered" >accounts || []).m</span>ap(
|
|
1453
|
+
(account: string) => {
|
|
1454
|
+
// XRPL format: xrpl:testnet:rN7n7otQDd6FczFgLdlqtyMVrn3WnFBrDB
|
|
1455
|
+
const parts = account.split(':');
|
|
1456
|
+
|
|
1457
|
+
if (parts.length < 3) {
|
|
1458
|
+
logger.warn('Invalid account format', { account });
|
|
1459
|
+
return { address: account, chainId: 'xrpl:testnet' };
|
|
1460
|
+
}
|
|
1461
|
+
|
|
1462
|
+
return {
|
|
1463
|
+
address: parts[parts.length - 1], // rAddress
|
|
1464
|
+
chainId: `${parts[0]}:${parts[1]}`, // xrpl:testnet
|
|
1465
|
+
};
|
|
1466
|
+
},
|
|
1467
|
+
);
|
|
1468
|
+
|
|
1469
|
+
// If target network specified, filter accounts to only that network
|
|
1470
|
+
if (targetNetworkId) {
|
|
1471
|
+
const targetNetwork = targetNetworkId.split(':')[1]?.toLowerCase(); // e.g., 'mainnet'
|
|
1472
|
+
|
|
1473
|
+
if (targetNetwork) {
|
|
1474
|
+
const filteredAccounts = allAccounts.filter((acc) =>
|
|
1475
|
+
acc.chainId.toLowerCase().includes(targetNetwork),
|
|
1476
|
+
);
|
|
1477
|
+
|
|
1478
|
+
logger.debug('Filtered accounts by target network', {
|
|
1479
|
+
targetNetworkId,
|
|
1480
|
+
targetNetwork,
|
|
1481
|
+
totalAccounts: allAccounts.length,
|
|
1482
|
+
filteredCount: filteredAccounts.length,
|
|
1483
|
+
});
|
|
1484
|
+
|
|
1485
|
+
// If no accounts match the target network, log a warning
|
|
1486
|
+
if (filteredAccounts.length === 0 && allAccounts.length > 0) {
|
|
1487
|
+
logger.warn('No accounts found for target network', {
|
|
1488
|
+
targetNetwork,
|
|
1489
|
+
availableNetworks: [...new Set(allAccounts.map((a) => a.chainId))],
|
|
1490
|
+
});
|
|
1491
|
+
}
|
|
1492
|
+
|
|
1493
|
+
return filteredAccounts;
|
|
1494
|
+
}
|
|
1495
|
+
}
|
|
1496
|
+
|
|
1497
|
+
return allAccounts;
|
|
1498
|
+
}
|
|
1499
|
+
}
|
|
1500
1500
|
</pre></td></tr></table></pre>
|
|
1501
1501
|
|
|
1502
1502
|
<div class='push'></div><!-- for sticky footer -->
|
|
@@ -1504,7 +1504,7 @@
|
|
|
1504
1504
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1505
1505
|
Code coverage generated by
|
|
1506
1506
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1507
|
-
at 2026-06-
|
|
1507
|
+
at 2026-06-27T21:00:37.209Z
|
|
1508
1508
|
</div>
|
|
1509
1509
|
<script src="../../../../prettify.js"></script>
|
|
1510
1510
|
<script>
|