@rabbitio/ui-kit 1.0.0-beta.65 → 1.0.0-beta.68
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/clover.xml +6311 -4236
- package/coverage/coverage-final.json +160 -99
- package/coverage/index.html +442 -187
- package/coverage/{rabbit-ui-kit → ui-kit}/index.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/index.js.html +3 -3
- package/coverage/{rabbit-ui-kit/src/assets/wrappedImages/arrowTosca.jsx.html → ui-kit/src/assets/wrappedImages/arrowIcon.jsx.html} +8 -29
- package/coverage/{rabbit-ui-kit/src/assets/wrappedImages/arrowIcon.jsx.html → ui-kit/src/assets/wrappedImages/arrowTosca.jsx.html} +9 -24
- package/coverage/{rabbit-ui-kit → ui-kit}/src/assets/wrappedImages/arrowWhite.jsx.html +7 -25
- package/coverage/ui-kit/src/assets/wrappedImages/darkRectangle.jsx.html +106 -0
- package/coverage/{rabbit-ui-kit → ui-kit}/src/assets/wrappedImages/determinedError.jsx.html +9 -42
- package/coverage/{rabbit-ui-kit/src/assets/wrappedImages/successfulValidationIcon.jsx.html → ui-kit/src/assets/wrappedImages/failedValidationIcon.jsx.html} +28 -31
- package/coverage/{rabbit-ui-kit → ui-kit}/src/assets/wrappedImages/index.html +25 -25
- package/coverage/{rabbit-ui-kit/src/assets/wrappedImages/darkRectangle.jsx.html → ui-kit/src/assets/wrappedImages/infoIcon.jsx.html} +13 -19
- package/coverage/{rabbit-ui-kit → ui-kit}/src/assets/wrappedImages/noticeQuestionIcon.jsx.html +7 -25
- package/coverage/{rabbit-ui-kit/src/assets/wrappedImages/walletIcon.jsx.html → ui-kit/src/assets/wrappedImages/successfulValidationIcon.jsx.html} +23 -59
- package/coverage/{rabbit-ui-kit/src/assets/wrappedImages/infoIcon.jsx.html → ui-kit/src/assets/wrappedImages/walletIcon.jsx.html} +16 -16
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/adapters/axiosAdapter.js.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/adapters/index.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/adapters/qrUtils.js.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/amountUtils.js.html +44 -308
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/errorUtils.js.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/external-apis/apiGroups.js.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/external-apis/index.html +14 -14
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/external-apis/ipAddressProviders.js.html +31 -178
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/fiatCurrenciesService.js.html +12 -36
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/index.html +20 -20
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/models/blockchain.js.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/models/coin.js.html +10 -22
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/models/index.html +13 -13
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/models/protocol.js.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/utils/cache.js.html +23 -101
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/utils/emailAPI.js.html +9 -15
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/utils/index.html +19 -19
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/utils/logging/index.html +9 -9
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/utils/logging/logger.js.html +14 -35
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/utils/logging/logsStorage.js.html +5 -5
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/utils/postponeExecution.js.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/common/utils/safeStringify.js.html +29 -29
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/AssetIcon/AssetIcon.jsx.html +11 -41
- package/coverage/ui-kit/src/components/atoms/AssetIcon/index.html +116 -0
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/AssetSelection/AssetSelection.jsx.html +9 -33
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/AssetSelection/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/BackgroundTitle/BackgroundTitle.jsx.html +8 -38
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/BackgroundTitle/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/InformationMessage/InformationMessage.jsx.html +8 -38
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/InformationMessage/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/Input/Input.jsx.html +15 -63
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/Input/index.html +7 -7
- package/coverage/ui-kit/src/components/atoms/LoadingDots/LoadingDots.jsx.html +196 -0
- package/coverage/{rabbit-ui-kit/src/components/atoms/RateSelector → ui-kit/src/components/atoms/LoadingDots}/index.html +4 -4
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/NoticeIcon/NoticeIcon.jsx.html +10 -40
- package/coverage/{rabbit-ui-kit/src/components/atoms/AssetIcon → ui-kit/src/components/atoms/NoticeIcon}/index.html +4 -4
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/QrCode/QrCode.jsx.html +8 -26
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/QrCode/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/RateSelector/RateSelector.jsx.html +10 -34
- package/coverage/ui-kit/src/components/atoms/RateSelector/index.html +116 -0
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/SupportChat/SupportChat.jsx.html +7 -22
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/SupportChat/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/Textarea/Textarea.jsx.html +17 -53
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/Textarea/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/TitleBox/TitleBox.jsx.html +13 -82
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/TitleBox/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/Tooltip/Tooltip.jsx.html +12 -18
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/Tooltip/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/TwoLinesOfText/LinesOfText.jsx.html +12 -30
- package/coverage/{rabbit-ui-kit/src/components/atoms/NoticeIcon → ui-kit/src/components/atoms/TwoLinesOfText}/index.html +4 -4
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/Validation/Validation.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/Validation/index.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/buttons/Button/Button.jsx.html +23 -113
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/buttons/Button/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/buttons/Close/Close.jsx.html +9 -27
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/buttons/Close/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/buttons/LinkButton/LinkButton.jsx.html +11 -38
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/buttons/LinkButton/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx.html +13 -67
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/buttons/RadioButtonWithText/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/hooks/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/hooks/useCallHandlingErrors.js.html +7 -19
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/hooks/useReferredState.js.html +4 -4
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/molecules/AmountInput/AmountInput.jsx.html +56 -407
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/molecules/AmountInput/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/molecules/CoinPicker/CoinPicker.jsx.html +67 -466
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/molecules/CoinPicker/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/molecules/LineWithIconLink/LineWithIconLink.jsx.html +7 -22
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/molecules/LineWithIconLink/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/molecules/TitledLineWithIconLink/TitledLineWithIconLink.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/molecules/TitledLineWithIconLink/index.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx.html +9 -15
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/organisms/CoinPickerDialogStep/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/organisms/Dialog/Dialog.jsx.html +44 -194
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/organisms/Dialog/DialogButtons/DialogButtons.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/organisms/Dialog/DialogButtons/index.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/organisms/Dialog/DialogStep/DialogStep.jsx.html +61 -523
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/organisms/Dialog/DialogStep/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/organisms/Dialog/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/organisms/SwapForm/SwapForm.jsx.html +96 -762
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/organisms/SwapForm/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/templates/DeterminedErrorDialogStep/DeterminedErrorDialogStep.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/templates/DeterminedErrorDialogStep/index.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/utils/index.html +20 -20
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/utils/inputValueProviders.js.html +11 -35
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/utils/textUtils.js.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/utils/uiUtils.js.html +7 -13
- package/coverage/{rabbit-ui-kit → ui-kit}/src/components/utils/urlQueryUtils.js.html +18 -93
- package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/atoms/Close/close.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/atoms/Close/index.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/atoms/LinkButton/index.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/atoms/LinkButton/linkButton.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/atoms/Tooltip/index.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/atoms/Tooltip/tooltip.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/globalConstants.jsx.html +7 -10
- package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/organisms/dialog/DialogStep/dialogStep.js.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/organisms/dialog/DialogStep/index.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/organisms/dialog/dialog.js.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/organisms/dialog/index.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/index.js.html +8 -26
- package/coverage/{rabbit-ui-kit → ui-kit}/src/robustExteranlApiCallerService/cacheAndConcurrentRequestsResolver.js.html +30 -222
- package/coverage/{rabbit-ui-kit → ui-kit}/src/robustExteranlApiCallerService/cachedRobustExternalApiCallerService.js.html +24 -147
- package/coverage/{rabbit-ui-kit → ui-kit}/src/robustExteranlApiCallerService/cancelProcessing.js.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/robustExteranlApiCallerService/concurrentCalculationsMetadataHolder.js.html +19 -103
- package/coverage/{rabbit-ui-kit → ui-kit}/src/robustExteranlApiCallerService/externalApiProvider.js.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/robustExteranlApiCallerService/externalServicesStatsCollector.js.html +11 -23
- package/coverage/{rabbit-ui-kit → ui-kit}/src/robustExteranlApiCallerService/index.html +38 -38
- package/coverage/{rabbit-ui-kit → ui-kit}/src/robustExteranlApiCallerService/robustExternalAPICallerService.js.html +53 -305
- package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/external-apis/index.html +24 -24
- package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/external-apis/swapProvider.js.html +10 -28
- package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/external-apis/swapspaceSwapProvider.js.html +277 -1009
- package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/models/baseSwapCreationInfo.js.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/models/existingSwap.js.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/models/existingSwapWithFiatData.js.html +9 -27
- package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/models/index.html +13 -13
- package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/services/index.html +7 -7
- package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/services/publicSwapService.js.html +53 -374
- package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/utils/index.html +13 -13
- package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/utils/swapUtils.js.html +32 -179
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/BackgroundTitle.stories.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/LinesOfText.stories.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/LoadingDots.stories.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/QrCode.stories.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/RateSelector.stories.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/Validation.stories.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/buttons/Button.stories.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/buttons/Close.stories.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/buttons/LinkButton.stories.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/buttons/index.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/index.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/molecules/LineWithIconLink.stories.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/molecules/TitledLineWithIconLink.stories.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/molecules/index.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/organisms/Dialog/Dialog.stories.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/organisms/Dialog/DialogButtons/DialogButtons.stories.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/organisms/Dialog/DialogButtons/index.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/organisms/Dialog/DialogStep/DialogStep.stories.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/organisms/Dialog/DialogStep/index.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/organisms/Dialog/index.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/stubs/exampleContent.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/stubs/index.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/templates/DeterminedErrorDialogStep.stories.jsx.html +3 -3
- package/coverage/{rabbit-ui-kit → ui-kit}/stories/templates/index.html +3 -3
- package/dist/index.cjs +12 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +5 -2
- package/dist/index.css.map +1 -1
- package/dist/index.modern.js +12 -13
- package/dist/index.modern.js.map +1 -1
- package/dist/index.module.js +12 -14
- package/dist/index.module.js.map +1 -1
- package/dist/index.umd.js +12 -14
- package/dist/index.umd.js.map +1 -1
- package/package.json +5 -3
- package/src/assets/wrappedImages/arrowIcon.jsx +1 -7
- package/src/assets/wrappedImages/arrowTosca.jsx +1 -7
- package/src/assets/wrappedImages/arrowWhite.jsx +1 -7
- package/src/assets/wrappedImages/darkRectangle.jsx +2 -13
- package/src/assets/wrappedImages/determinedError.jsx +2 -13
- package/src/assets/wrappedImages/failedValidationIcon.jsx +2 -16
- package/src/assets/wrappedImages/infoIcon.jsx +1 -7
- package/src/assets/wrappedImages/noticeQuestionIcon.jsx +1 -7
- package/src/assets/wrappedImages/successfulValidationIcon.jsx +2 -16
- package/src/assets/wrappedImages/walletIcon.jsx +3 -19
- package/src/common/amountUtils.js +36 -124
- package/src/common/external-apis/ipAddressProviders.js +22 -71
- package/src/common/fiatCurrenciesService.js +4 -12
- package/src/common/models/coin.js +2 -6
- package/src/common/tests/amountUtils/composeRateText.test.js +12 -69
- package/src/common/tests/integration/external-apis/ipAddressProviders/getClientIpAddress.test.js +1 -3
- package/src/common/utils/cache.js +10 -36
- package/src/common/utils/emailAPI.js +1 -3
- package/src/common/utils/logging/logger.js +5 -12
- package/src/components/atoms/AssetIcon/AssetIcon.jsx +4 -14
- package/src/components/atoms/AssetSelection/AssetSelection.jsx +3 -11
- package/src/components/atoms/BackgroundTitle/BackgroundTitle.jsx +2 -12
- package/src/components/atoms/InformationMessage/InformationMessage.jsx +2 -12
- package/src/components/atoms/InformationMessage/information-message.module.scss +4 -2
- package/src/components/atoms/Input/Input.jsx +9 -25
- package/src/components/atoms/LoadingDots/LoadingDots.jsx +8 -28
- package/src/components/atoms/NoticeIcon/NoticeIcon.jsx +4 -14
- package/src/components/atoms/QrCode/QrCode.jsx +2 -8
- package/src/components/atoms/RateSelector/RateSelector.jsx +4 -12
- package/src/components/atoms/SupportChat/SupportChat.jsx +1 -6
- package/src/components/atoms/Textarea/Textarea.jsx +11 -23
- package/src/components/atoms/TitleBox/TitleBox.jsx +7 -30
- package/src/components/atoms/TitleBox/title-box.module.scss +2 -0
- package/src/components/atoms/Tooltip/Tooltip.jsx +6 -8
- package/src/components/atoms/TwoLinesOfText/LinesOfText.jsx +5 -11
- package/src/components/atoms/buttons/Button/Button.jsx +17 -47
- package/src/components/atoms/buttons/Close/Close.jsx +3 -9
- package/src/components/atoms/buttons/LinkButton/LinkButton.jsx +5 -14
- package/src/components/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx +7 -25
- package/src/components/hooks/useCallHandlingErrors.js +1 -5
- package/src/components/hooks/useReferredState.js +1 -1
- package/src/components/molecules/AmountInput/AmountInput.jsx +50 -167
- package/src/components/molecules/CoinPicker/CoinPicker.jsx +61 -194
- package/src/components/molecules/CoinPicker/coin-picker.module.scss +1 -4
- package/src/components/molecules/LineWithIconLink/LineWithIconLink.jsx +1 -6
- package/src/components/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx +3 -5
- package/src/components/organisms/Dialog/Dialog.jsx +38 -88
- package/src/components/organisms/Dialog/DialogStep/DialogStep.jsx +55 -209
- package/src/components/organisms/Dialog/DialogStep/dialog-step.module.scss +2 -4
- package/src/components/organisms/SwapForm/SwapForm.jsx +90 -312
- package/src/components/tests/utils/inputValueProviders/provideFormatOfFloatValueByInputString.test.js +5 -12
- package/src/components/tests/utils/urlQueryUtils/getQueryParameterValues.test.js +3 -9
- package/src/components/tests/utils/urlQueryUtils/saveQueryParameterAndValues.test.js +11 -51
- package/src/components/utils/inputValueProviders.js +3 -11
- package/src/components/utils/uiUtils.js +1 -3
- package/src/components/utils/urlQueryUtils.js +10 -35
- package/src/constants/globalConstants.jsx +1 -2
- package/src/index.js +2 -8
- package/src/robustExteranlApiCallerService/cacheAndConcurrentRequestsResolver.js +22 -86
- package/src/robustExteranlApiCallerService/cachedRobustExternalApiCallerService.js +15 -56
- package/src/robustExteranlApiCallerService/concurrentCalculationsMetadataHolder.js +11 -39
- package/src/robustExteranlApiCallerService/externalServicesStatsCollector.js +3 -7
- package/src/robustExteranlApiCallerService/robustExternalAPICallerService.js +45 -129
- package/src/robustExteranlApiCallerService/tests/robustExternalAPICallerService/robustExternalAPICallerService/callExternalAPI/_performCallAttempt.test.js +76 -330
- package/src/robustExteranlApiCallerService/tests/robustExternalAPICallerService/robustExternalAPICallerService/callExternalAPI/callExternalAPI.test.js +57 -270
- package/src/robustExteranlApiCallerService/tests/robustExternalAPICallerService/robustExternalAPICallerService/constructor.test.js +3 -15
- package/src/swaps-lib/external-apis/swapProvider.js +1 -7
- package/src/swaps-lib/external-apis/swapspaceSwapProvider.js +117 -361
- package/src/swaps-lib/models/existingSwapWithFiatData.js +1 -7
- package/src/swaps-lib/services/publicSwapService.js +47 -154
- package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/_fetchSupportedCurrenciesIfNeeded.test.js +33 -118
- package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/createSwap.test.js +23 -85
- package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getAllSupportedCurrencies.test.js +4 -14
- package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getDepositCurrencies.test.js +3 -9
- package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getSwapInfo.test.js +148 -460
- package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getWithdrawalCurrencies.test.js +5 -11
- package/src/swaps-lib/test/utils/swapUtils/safeHandleRequestsLimitExceeding.test.js +2 -10
- package/src/swaps-lib/utils/swapUtils.js +24 -73
- package/coverage/rabbit-ui-kit/src/assets/wrappedImages/failedValidationIcon.jsx.html +0 -244
- package/coverage/rabbit-ui-kit/src/components/atoms/LoadingDots/LoadingDots.jsx.html +0 -256
- package/coverage/rabbit-ui-kit/src/components/atoms/LoadingDots/index.html +0 -116
- package/coverage/rabbit-ui-kit/src/components/atoms/TwoLinesOfText/index.html +0 -116
package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/external-apis/swapspaceSwapProvider.js.html
RENAMED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<html lang="en">
|
|
4
4
|
|
|
5
5
|
<head>
|
|
6
|
-
<title>Code coverage report for
|
|
6
|
+
<title>Code coverage report for ui-kit/src/swaps-lib/external-apis/swapspaceSwapProvider.js</title>
|
|
7
7
|
<meta charset="utf-8" />
|
|
8
8
|
<link rel="stylesheet" href="../../../../prettify.css" />
|
|
9
9
|
<link rel="stylesheet" href="../../../../base.css" />
|
|
@@ -19,20 +19,20 @@
|
|
|
19
19
|
<body>
|
|
20
20
|
<div class='wrapper'>
|
|
21
21
|
<div class='pad1'>
|
|
22
|
-
<h1><a href="../../../../index.html">All files</a> / <a href="index.html">
|
|
22
|
+
<h1><a href="../../../../index.html">All files</a> / <a href="index.html">ui-kit/src/swaps-lib/external-apis</a> swapspaceSwapProvider.js</h1>
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">70.96% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>501/706</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">96.63% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>201/208</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">70.96% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>501/706</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -769,280 +769,31 @@
|
|
|
769
769
|
<a name='L704'></a><a href='#L704'>704</a>
|
|
770
770
|
<a name='L705'></a><a href='#L705'>705</a>
|
|
771
771
|
<a name='L706'></a><a href='#L706'>706</a>
|
|
772
|
-
<a name='L707'></a><a href='#L707'>707</a>
|
|
773
|
-
<
|
|
774
|
-
<
|
|
775
|
-
<
|
|
776
|
-
<
|
|
777
|
-
<
|
|
778
|
-
<
|
|
779
|
-
<
|
|
780
|
-
<
|
|
781
|
-
<
|
|
782
|
-
<
|
|
783
|
-
<
|
|
784
|
-
<
|
|
785
|
-
<
|
|
786
|
-
<
|
|
787
|
-
<
|
|
788
|
-
<
|
|
789
|
-
<
|
|
790
|
-
<
|
|
791
|
-
<
|
|
792
|
-
<
|
|
793
|
-
<
|
|
794
|
-
<
|
|
795
|
-
<
|
|
796
|
-
<
|
|
797
|
-
<a name='L732'></a><a href='#L732'>732</a>
|
|
798
|
-
<a name='L733'></a><a href='#L733'>733</a>
|
|
799
|
-
<a name='L734'></a><a href='#L734'>734</a>
|
|
800
|
-
<a name='L735'></a><a href='#L735'>735</a>
|
|
801
|
-
<a name='L736'></a><a href='#L736'>736</a>
|
|
802
|
-
<a name='L737'></a><a href='#L737'>737</a>
|
|
803
|
-
<a name='L738'></a><a href='#L738'>738</a>
|
|
804
|
-
<a name='L739'></a><a href='#L739'>739</a>
|
|
805
|
-
<a name='L740'></a><a href='#L740'>740</a>
|
|
806
|
-
<a name='L741'></a><a href='#L741'>741</a>
|
|
807
|
-
<a name='L742'></a><a href='#L742'>742</a>
|
|
808
|
-
<a name='L743'></a><a href='#L743'>743</a>
|
|
809
|
-
<a name='L744'></a><a href='#L744'>744</a>
|
|
810
|
-
<a name='L745'></a><a href='#L745'>745</a>
|
|
811
|
-
<a name='L746'></a><a href='#L746'>746</a>
|
|
812
|
-
<a name='L747'></a><a href='#L747'>747</a>
|
|
813
|
-
<a name='L748'></a><a href='#L748'>748</a>
|
|
814
|
-
<a name='L749'></a><a href='#L749'>749</a>
|
|
815
|
-
<a name='L750'></a><a href='#L750'>750</a>
|
|
816
|
-
<a name='L751'></a><a href='#L751'>751</a>
|
|
817
|
-
<a name='L752'></a><a href='#L752'>752</a>
|
|
818
|
-
<a name='L753'></a><a href='#L753'>753</a>
|
|
819
|
-
<a name='L754'></a><a href='#L754'>754</a>
|
|
820
|
-
<a name='L755'></a><a href='#L755'>755</a>
|
|
821
|
-
<a name='L756'></a><a href='#L756'>756</a>
|
|
822
|
-
<a name='L757'></a><a href='#L757'>757</a>
|
|
823
|
-
<a name='L758'></a><a href='#L758'>758</a>
|
|
824
|
-
<a name='L759'></a><a href='#L759'>759</a>
|
|
825
|
-
<a name='L760'></a><a href='#L760'>760</a>
|
|
826
|
-
<a name='L761'></a><a href='#L761'>761</a>
|
|
827
|
-
<a name='L762'></a><a href='#L762'>762</a>
|
|
828
|
-
<a name='L763'></a><a href='#L763'>763</a>
|
|
829
|
-
<a name='L764'></a><a href='#L764'>764</a>
|
|
830
|
-
<a name='L765'></a><a href='#L765'>765</a>
|
|
831
|
-
<a name='L766'></a><a href='#L766'>766</a>
|
|
832
|
-
<a name='L767'></a><a href='#L767'>767</a>
|
|
833
|
-
<a name='L768'></a><a href='#L768'>768</a>
|
|
834
|
-
<a name='L769'></a><a href='#L769'>769</a>
|
|
835
|
-
<a name='L770'></a><a href='#L770'>770</a>
|
|
836
|
-
<a name='L771'></a><a href='#L771'>771</a>
|
|
837
|
-
<a name='L772'></a><a href='#L772'>772</a>
|
|
838
|
-
<a name='L773'></a><a href='#L773'>773</a>
|
|
839
|
-
<a name='L774'></a><a href='#L774'>774</a>
|
|
840
|
-
<a name='L775'></a><a href='#L775'>775</a>
|
|
841
|
-
<a name='L776'></a><a href='#L776'>776</a>
|
|
842
|
-
<a name='L777'></a><a href='#L777'>777</a>
|
|
843
|
-
<a name='L778'></a><a href='#L778'>778</a>
|
|
844
|
-
<a name='L779'></a><a href='#L779'>779</a>
|
|
845
|
-
<a name='L780'></a><a href='#L780'>780</a>
|
|
846
|
-
<a name='L781'></a><a href='#L781'>781</a>
|
|
847
|
-
<a name='L782'></a><a href='#L782'>782</a>
|
|
848
|
-
<a name='L783'></a><a href='#L783'>783</a>
|
|
849
|
-
<a name='L784'></a><a href='#L784'>784</a>
|
|
850
|
-
<a name='L785'></a><a href='#L785'>785</a>
|
|
851
|
-
<a name='L786'></a><a href='#L786'>786</a>
|
|
852
|
-
<a name='L787'></a><a href='#L787'>787</a>
|
|
853
|
-
<a name='L788'></a><a href='#L788'>788</a>
|
|
854
|
-
<a name='L789'></a><a href='#L789'>789</a>
|
|
855
|
-
<a name='L790'></a><a href='#L790'>790</a>
|
|
856
|
-
<a name='L791'></a><a href='#L791'>791</a>
|
|
857
|
-
<a name='L792'></a><a href='#L792'>792</a>
|
|
858
|
-
<a name='L793'></a><a href='#L793'>793</a>
|
|
859
|
-
<a name='L794'></a><a href='#L794'>794</a>
|
|
860
|
-
<a name='L795'></a><a href='#L795'>795</a>
|
|
861
|
-
<a name='L796'></a><a href='#L796'>796</a>
|
|
862
|
-
<a name='L797'></a><a href='#L797'>797</a>
|
|
863
|
-
<a name='L798'></a><a href='#L798'>798</a>
|
|
864
|
-
<a name='L799'></a><a href='#L799'>799</a>
|
|
865
|
-
<a name='L800'></a><a href='#L800'>800</a>
|
|
866
|
-
<a name='L801'></a><a href='#L801'>801</a>
|
|
867
|
-
<a name='L802'></a><a href='#L802'>802</a>
|
|
868
|
-
<a name='L803'></a><a href='#L803'>803</a>
|
|
869
|
-
<a name='L804'></a><a href='#L804'>804</a>
|
|
870
|
-
<a name='L805'></a><a href='#L805'>805</a>
|
|
871
|
-
<a name='L806'></a><a href='#L806'>806</a>
|
|
872
|
-
<a name='L807'></a><a href='#L807'>807</a>
|
|
873
|
-
<a name='L808'></a><a href='#L808'>808</a>
|
|
874
|
-
<a name='L809'></a><a href='#L809'>809</a>
|
|
875
|
-
<a name='L810'></a><a href='#L810'>810</a>
|
|
876
|
-
<a name='L811'></a><a href='#L811'>811</a>
|
|
877
|
-
<a name='L812'></a><a href='#L812'>812</a>
|
|
878
|
-
<a name='L813'></a><a href='#L813'>813</a>
|
|
879
|
-
<a name='L814'></a><a href='#L814'>814</a>
|
|
880
|
-
<a name='L815'></a><a href='#L815'>815</a>
|
|
881
|
-
<a name='L816'></a><a href='#L816'>816</a>
|
|
882
|
-
<a name='L817'></a><a href='#L817'>817</a>
|
|
883
|
-
<a name='L818'></a><a href='#L818'>818</a>
|
|
884
|
-
<a name='L819'></a><a href='#L819'>819</a>
|
|
885
|
-
<a name='L820'></a><a href='#L820'>820</a>
|
|
886
|
-
<a name='L821'></a><a href='#L821'>821</a>
|
|
887
|
-
<a name='L822'></a><a href='#L822'>822</a>
|
|
888
|
-
<a name='L823'></a><a href='#L823'>823</a>
|
|
889
|
-
<a name='L824'></a><a href='#L824'>824</a>
|
|
890
|
-
<a name='L825'></a><a href='#L825'>825</a>
|
|
891
|
-
<a name='L826'></a><a href='#L826'>826</a>
|
|
892
|
-
<a name='L827'></a><a href='#L827'>827</a>
|
|
893
|
-
<a name='L828'></a><a href='#L828'>828</a>
|
|
894
|
-
<a name='L829'></a><a href='#L829'>829</a>
|
|
895
|
-
<a name='L830'></a><a href='#L830'>830</a>
|
|
896
|
-
<a name='L831'></a><a href='#L831'>831</a>
|
|
897
|
-
<a name='L832'></a><a href='#L832'>832</a>
|
|
898
|
-
<a name='L833'></a><a href='#L833'>833</a>
|
|
899
|
-
<a name='L834'></a><a href='#L834'>834</a>
|
|
900
|
-
<a name='L835'></a><a href='#L835'>835</a>
|
|
901
|
-
<a name='L836'></a><a href='#L836'>836</a>
|
|
902
|
-
<a name='L837'></a><a href='#L837'>837</a>
|
|
903
|
-
<a name='L838'></a><a href='#L838'>838</a>
|
|
904
|
-
<a name='L839'></a><a href='#L839'>839</a>
|
|
905
|
-
<a name='L840'></a><a href='#L840'>840</a>
|
|
906
|
-
<a name='L841'></a><a href='#L841'>841</a>
|
|
907
|
-
<a name='L842'></a><a href='#L842'>842</a>
|
|
908
|
-
<a name='L843'></a><a href='#L843'>843</a>
|
|
909
|
-
<a name='L844'></a><a href='#L844'>844</a>
|
|
910
|
-
<a name='L845'></a><a href='#L845'>845</a>
|
|
911
|
-
<a name='L846'></a><a href='#L846'>846</a>
|
|
912
|
-
<a name='L847'></a><a href='#L847'>847</a>
|
|
913
|
-
<a name='L848'></a><a href='#L848'>848</a>
|
|
914
|
-
<a name='L849'></a><a href='#L849'>849</a>
|
|
915
|
-
<a name='L850'></a><a href='#L850'>850</a>
|
|
916
|
-
<a name='L851'></a><a href='#L851'>851</a>
|
|
917
|
-
<a name='L852'></a><a href='#L852'>852</a>
|
|
918
|
-
<a name='L853'></a><a href='#L853'>853</a>
|
|
919
|
-
<a name='L854'></a><a href='#L854'>854</a>
|
|
920
|
-
<a name='L855'></a><a href='#L855'>855</a>
|
|
921
|
-
<a name='L856'></a><a href='#L856'>856</a>
|
|
922
|
-
<a name='L857'></a><a href='#L857'>857</a>
|
|
923
|
-
<a name='L858'></a><a href='#L858'>858</a>
|
|
924
|
-
<a name='L859'></a><a href='#L859'>859</a>
|
|
925
|
-
<a name='L860'></a><a href='#L860'>860</a>
|
|
926
|
-
<a name='L861'></a><a href='#L861'>861</a>
|
|
927
|
-
<a name='L862'></a><a href='#L862'>862</a>
|
|
928
|
-
<a name='L863'></a><a href='#L863'>863</a>
|
|
929
|
-
<a name='L864'></a><a href='#L864'>864</a>
|
|
930
|
-
<a name='L865'></a><a href='#L865'>865</a>
|
|
931
|
-
<a name='L866'></a><a href='#L866'>866</a>
|
|
932
|
-
<a name='L867'></a><a href='#L867'>867</a>
|
|
933
|
-
<a name='L868'></a><a href='#L868'>868</a>
|
|
934
|
-
<a name='L869'></a><a href='#L869'>869</a>
|
|
935
|
-
<a name='L870'></a><a href='#L870'>870</a>
|
|
936
|
-
<a name='L871'></a><a href='#L871'>871</a>
|
|
937
|
-
<a name='L872'></a><a href='#L872'>872</a>
|
|
938
|
-
<a name='L873'></a><a href='#L873'>873</a>
|
|
939
|
-
<a name='L874'></a><a href='#L874'>874</a>
|
|
940
|
-
<a name='L875'></a><a href='#L875'>875</a>
|
|
941
|
-
<a name='L876'></a><a href='#L876'>876</a>
|
|
942
|
-
<a name='L877'></a><a href='#L877'>877</a>
|
|
943
|
-
<a name='L878'></a><a href='#L878'>878</a>
|
|
944
|
-
<a name='L879'></a><a href='#L879'>879</a>
|
|
945
|
-
<a name='L880'></a><a href='#L880'>880</a>
|
|
946
|
-
<a name='L881'></a><a href='#L881'>881</a>
|
|
947
|
-
<a name='L882'></a><a href='#L882'>882</a>
|
|
948
|
-
<a name='L883'></a><a href='#L883'>883</a>
|
|
949
|
-
<a name='L884'></a><a href='#L884'>884</a>
|
|
950
|
-
<a name='L885'></a><a href='#L885'>885</a>
|
|
951
|
-
<a name='L886'></a><a href='#L886'>886</a>
|
|
952
|
-
<a name='L887'></a><a href='#L887'>887</a>
|
|
953
|
-
<a name='L888'></a><a href='#L888'>888</a>
|
|
954
|
-
<a name='L889'></a><a href='#L889'>889</a>
|
|
955
|
-
<a name='L890'></a><a href='#L890'>890</a>
|
|
956
|
-
<a name='L891'></a><a href='#L891'>891</a>
|
|
957
|
-
<a name='L892'></a><a href='#L892'>892</a>
|
|
958
|
-
<a name='L893'></a><a href='#L893'>893</a>
|
|
959
|
-
<a name='L894'></a><a href='#L894'>894</a>
|
|
960
|
-
<a name='L895'></a><a href='#L895'>895</a>
|
|
961
|
-
<a name='L896'></a><a href='#L896'>896</a>
|
|
962
|
-
<a name='L897'></a><a href='#L897'>897</a>
|
|
963
|
-
<a name='L898'></a><a href='#L898'>898</a>
|
|
964
|
-
<a name='L899'></a><a href='#L899'>899</a>
|
|
965
|
-
<a name='L900'></a><a href='#L900'>900</a>
|
|
966
|
-
<a name='L901'></a><a href='#L901'>901</a>
|
|
967
|
-
<a name='L902'></a><a href='#L902'>902</a>
|
|
968
|
-
<a name='L903'></a><a href='#L903'>903</a>
|
|
969
|
-
<a name='L904'></a><a href='#L904'>904</a>
|
|
970
|
-
<a name='L905'></a><a href='#L905'>905</a>
|
|
971
|
-
<a name='L906'></a><a href='#L906'>906</a>
|
|
972
|
-
<a name='L907'></a><a href='#L907'>907</a>
|
|
973
|
-
<a name='L908'></a><a href='#L908'>908</a>
|
|
974
|
-
<a name='L909'></a><a href='#L909'>909</a>
|
|
975
|
-
<a name='L910'></a><a href='#L910'>910</a>
|
|
976
|
-
<a name='L911'></a><a href='#L911'>911</a>
|
|
977
|
-
<a name='L912'></a><a href='#L912'>912</a>
|
|
978
|
-
<a name='L913'></a><a href='#L913'>913</a>
|
|
979
|
-
<a name='L914'></a><a href='#L914'>914</a>
|
|
980
|
-
<a name='L915'></a><a href='#L915'>915</a>
|
|
981
|
-
<a name='L916'></a><a href='#L916'>916</a>
|
|
982
|
-
<a name='L917'></a><a href='#L917'>917</a>
|
|
983
|
-
<a name='L918'></a><a href='#L918'>918</a>
|
|
984
|
-
<a name='L919'></a><a href='#L919'>919</a>
|
|
985
|
-
<a name='L920'></a><a href='#L920'>920</a>
|
|
986
|
-
<a name='L921'></a><a href='#L921'>921</a>
|
|
987
|
-
<a name='L922'></a><a href='#L922'>922</a>
|
|
988
|
-
<a name='L923'></a><a href='#L923'>923</a>
|
|
989
|
-
<a name='L924'></a><a href='#L924'>924</a>
|
|
990
|
-
<a name='L925'></a><a href='#L925'>925</a>
|
|
991
|
-
<a name='L926'></a><a href='#L926'>926</a>
|
|
992
|
-
<a name='L927'></a><a href='#L927'>927</a>
|
|
993
|
-
<a name='L928'></a><a href='#L928'>928</a>
|
|
994
|
-
<a name='L929'></a><a href='#L929'>929</a>
|
|
995
|
-
<a name='L930'></a><a href='#L930'>930</a>
|
|
996
|
-
<a name='L931'></a><a href='#L931'>931</a>
|
|
997
|
-
<a name='L932'></a><a href='#L932'>932</a>
|
|
998
|
-
<a name='L933'></a><a href='#L933'>933</a>
|
|
999
|
-
<a name='L934'></a><a href='#L934'>934</a>
|
|
1000
|
-
<a name='L935'></a><a href='#L935'>935</a>
|
|
1001
|
-
<a name='L936'></a><a href='#L936'>936</a>
|
|
1002
|
-
<a name='L937'></a><a href='#L937'>937</a>
|
|
1003
|
-
<a name='L938'></a><a href='#L938'>938</a>
|
|
1004
|
-
<a name='L939'></a><a href='#L939'>939</a>
|
|
1005
|
-
<a name='L940'></a><a href='#L940'>940</a>
|
|
1006
|
-
<a name='L941'></a><a href='#L941'>941</a>
|
|
1007
|
-
<a name='L942'></a><a href='#L942'>942</a>
|
|
1008
|
-
<a name='L943'></a><a href='#L943'>943</a>
|
|
1009
|
-
<a name='L944'></a><a href='#L944'>944</a>
|
|
1010
|
-
<a name='L945'></a><a href='#L945'>945</a>
|
|
1011
|
-
<a name='L946'></a><a href='#L946'>946</a>
|
|
1012
|
-
<a name='L947'></a><a href='#L947'>947</a>
|
|
1013
|
-
<a name='L948'></a><a href='#L948'>948</a>
|
|
1014
|
-
<a name='L949'></a><a href='#L949'>949</a>
|
|
1015
|
-
<a name='L950'></a><a href='#L950'>950</a>
|
|
1016
|
-
<a name='L951'></a><a href='#L951'>951</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
1017
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1018
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1019
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1020
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1021
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1022
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1023
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1024
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1025
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1026
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1027
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1028
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1029
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1030
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1031
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1032
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1033
|
-
<span class="cline-any cline-yes">167x</span>
|
|
1034
|
-
<span class="cline-any cline-yes">167x</span>
|
|
1035
|
-
<span class="cline-any cline-yes">167x</span>
|
|
1036
|
-
<span class="cline-any cline-yes">167x</span>
|
|
1037
|
-
<span class="cline-any cline-yes">167x</span>
|
|
1038
|
-
<span class="cline-any cline-yes">167x</span>
|
|
1039
|
-
<span class="cline-any cline-yes">167x</span>
|
|
1040
|
-
<span class="cline-any cline-yes">167x</span>
|
|
1041
|
-
<span class="cline-any cline-yes">167x</span>
|
|
1042
|
-
<span class="cline-any cline-yes">167x</span>
|
|
1043
|
-
<span class="cline-any cline-yes">167x</span>
|
|
1044
|
-
<span class="cline-any cline-yes">167x</span>
|
|
1045
|
-
<span class="cline-any cline-yes">167x</span>
|
|
772
|
+
<a name='L707'></a><a href='#L707'>707</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
773
|
+
<span class="cline-any cline-yes">1x</span>
|
|
774
|
+
<span class="cline-any cline-yes">1x</span>
|
|
775
|
+
<span class="cline-any cline-yes">1x</span>
|
|
776
|
+
<span class="cline-any cline-yes">1x</span>
|
|
777
|
+
<span class="cline-any cline-yes">1x</span>
|
|
778
|
+
<span class="cline-any cline-yes">1x</span>
|
|
779
|
+
<span class="cline-any cline-yes">1x</span>
|
|
780
|
+
<span class="cline-any cline-yes">1x</span>
|
|
781
|
+
<span class="cline-any cline-yes">1x</span>
|
|
782
|
+
<span class="cline-any cline-yes">1x</span>
|
|
783
|
+
<span class="cline-any cline-yes">1x</span>
|
|
784
|
+
<span class="cline-any cline-yes">1x</span>
|
|
785
|
+
<span class="cline-any cline-yes">1x</span>
|
|
786
|
+
<span class="cline-any cline-yes">1x</span>
|
|
787
|
+
<span class="cline-any cline-yes">1x</span>
|
|
788
|
+
<span class="cline-any cline-yes">1x</span>
|
|
789
|
+
<span class="cline-any cline-yes">164x</span>
|
|
790
|
+
<span class="cline-any cline-yes">164x</span>
|
|
791
|
+
<span class="cline-any cline-yes">164x</span>
|
|
792
|
+
<span class="cline-any cline-yes">164x</span>
|
|
793
|
+
<span class="cline-any cline-yes">164x</span>
|
|
794
|
+
<span class="cline-any cline-yes">164x</span>
|
|
795
|
+
<span class="cline-any cline-yes">164x</span>
|
|
796
|
+
<span class="cline-any cline-yes">164x</span>
|
|
1046
797
|
<span class="cline-any cline-yes">1x</span>
|
|
1047
798
|
<span class="cline-any cline-yes">1x</span>
|
|
1048
799
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1054,11 +805,6 @@
|
|
|
1054
805
|
<span class="cline-any cline-yes">4x</span>
|
|
1055
806
|
<span class="cline-any cline-yes">4x</span>
|
|
1056
807
|
<span class="cline-any cline-yes">4x</span>
|
|
1057
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1058
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1059
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1060
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1061
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1062
808
|
<span class="cline-any cline-yes">4x</span>
|
|
1063
809
|
<span class="cline-any cline-yes">4x</span>
|
|
1064
810
|
<span class="cline-any cline-yes">4x</span>
|
|
@@ -1079,9 +825,6 @@
|
|
|
1079
825
|
<span class="cline-any cline-yes">4x</span>
|
|
1080
826
|
<span class="cline-any cline-yes">4x</span>
|
|
1081
827
|
<span class="cline-any cline-yes">4x</span>
|
|
1082
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1083
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1084
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1085
828
|
<span class="cline-any cline-yes">4x</span>
|
|
1086
829
|
<span class="cline-any cline-yes">4x</span>
|
|
1087
830
|
<span class="cline-any cline-yes">4x</span>
|
|
@@ -1102,18 +845,12 @@
|
|
|
1102
845
|
<span class="cline-any cline-yes">5x</span>
|
|
1103
846
|
<span class="cline-any cline-yes">5x</span>
|
|
1104
847
|
<span class="cline-any cline-yes">5x</span>
|
|
1105
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1106
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1107
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1108
848
|
<span class="cline-any cline-yes">5x</span>
|
|
1109
849
|
<span class="cline-any cline-yes">5x</span>
|
|
1110
850
|
<span class="cline-any cline-yes">5x</span>
|
|
1111
851
|
<span class="cline-any cline-yes">5x</span>
|
|
1112
852
|
<span class="cline-any cline-yes">5x</span>
|
|
1113
853
|
<span class="cline-any cline-yes">5x</span>
|
|
1114
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1115
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1116
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1117
854
|
<span class="cline-any cline-yes">5x</span>
|
|
1118
855
|
<span class="cline-any cline-yes">5x</span>
|
|
1119
856
|
<span class="cline-any cline-yes">5x</span>
|
|
@@ -1147,9 +884,6 @@
|
|
|
1147
884
|
<span class="cline-any cline-no"> </span>
|
|
1148
885
|
<span class="cline-any cline-no"> </span>
|
|
1149
886
|
<span class="cline-any cline-no"> </span>
|
|
1150
|
-
<span class="cline-any cline-no"> </span>
|
|
1151
|
-
<span class="cline-any cline-no"> </span>
|
|
1152
|
-
<span class="cline-any cline-no"> </span>
|
|
1153
887
|
<span class="cline-any cline-yes">1x</span>
|
|
1154
888
|
<span class="cline-any cline-yes">1x</span>
|
|
1155
889
|
<span class="cline-any cline-yes">51x</span>
|
|
@@ -1158,18 +892,10 @@
|
|
|
1158
892
|
<span class="cline-any cline-yes">46x</span>
|
|
1159
893
|
<span class="cline-any cline-yes">46x</span>
|
|
1160
894
|
<span class="cline-any cline-yes">46x</span>
|
|
1161
|
-
<span class="cline-any cline-yes">39x</span>
|
|
1162
|
-
<span class="cline-any cline-yes">46x</span>
|
|
1163
|
-
<span class="cline-any cline-yes">46x</span>
|
|
1164
895
|
<span class="cline-any cline-yes">46x</span>
|
|
1165
896
|
<span class="cline-any cline-yes">46x</span>
|
|
1166
897
|
<span class="cline-any cline-yes">46x</span>
|
|
1167
898
|
<span class="cline-any cline-yes">46x</span>
|
|
1168
|
-
<span class="cline-any cline-yes">46x</span>
|
|
1169
|
-
<span class="cline-any cline-yes">46x</span>
|
|
1170
|
-
<span class="cline-any cline-yes">77x</span>
|
|
1171
|
-
<span class="cline-any cline-yes">77x</span>
|
|
1172
|
-
<span class="cline-any cline-yes">77x</span>
|
|
1173
899
|
<span class="cline-any cline-yes">77x</span>
|
|
1174
900
|
<span class="cline-any cline-yes">77x</span>
|
|
1175
901
|
<span class="cline-any cline-yes">64x</span>
|
|
@@ -1216,8 +942,6 @@
|
|
|
1216
942
|
<span class="cline-any cline-yes">64x</span>
|
|
1217
943
|
<span class="cline-any cline-yes">64x</span>
|
|
1218
944
|
<span class="cline-any cline-yes">64x</span>
|
|
1219
|
-
<span class="cline-any cline-yes">64x</span>
|
|
1220
|
-
<span class="cline-any cline-yes">64x</span>
|
|
1221
945
|
<span class="cline-any cline-yes">77x</span>
|
|
1222
946
|
<span class="cline-any cline-yes">68x</span>
|
|
1223
947
|
<span class="cline-any cline-yes">68x</span>
|
|
@@ -1254,10 +978,6 @@
|
|
|
1254
978
|
<span class="cline-any cline-yes">39x</span>
|
|
1255
979
|
<span class="cline-any cline-yes">41x</span>
|
|
1256
980
|
<span class="cline-any cline-yes">41x</span>
|
|
1257
|
-
<span class="cline-any cline-yes">37x</span>
|
|
1258
|
-
<span class="cline-any cline-yes">41x</span>
|
|
1259
|
-
<span class="cline-any cline-yes">41x</span>
|
|
1260
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1261
981
|
<span class="cline-any cline-yes">41x</span>
|
|
1262
982
|
<span class="cline-any cline-yes">39x</span>
|
|
1263
983
|
<span class="cline-any cline-yes">39x</span>
|
|
@@ -1304,22 +1024,6 @@
|
|
|
1304
1024
|
<span class="cline-any cline-no"> </span>
|
|
1305
1025
|
<span class="cline-any cline-no"> </span>
|
|
1306
1026
|
<span class="cline-any cline-no"> </span>
|
|
1307
|
-
<span class="cline-any cline-no"> </span>
|
|
1308
|
-
<span class="cline-any cline-no"> </span>
|
|
1309
|
-
<span class="cline-any cline-no"> </span>
|
|
1310
|
-
<span class="cline-any cline-no"> </span>
|
|
1311
|
-
<span class="cline-any cline-no"> </span>
|
|
1312
|
-
<span class="cline-any cline-no"> </span>
|
|
1313
|
-
<span class="cline-any cline-no"> </span>
|
|
1314
|
-
<span class="cline-any cline-no"> </span>
|
|
1315
|
-
<span class="cline-any cline-no"> </span>
|
|
1316
|
-
<span class="cline-any cline-no"> </span>
|
|
1317
|
-
<span class="cline-any cline-no"> </span>
|
|
1318
|
-
<span class="cline-any cline-no"> </span>
|
|
1319
|
-
<span class="cline-any cline-no"> </span>
|
|
1320
|
-
<span class="cline-any cline-no"> </span>
|
|
1321
|
-
<span class="cline-any cline-no"> </span>
|
|
1322
|
-
<span class="cline-any cline-no"> </span>
|
|
1323
1027
|
<span class="cline-any cline-yes">1x</span>
|
|
1324
1028
|
<span class="cline-any cline-yes">1x</span>
|
|
1325
1029
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1329,254 +1033,159 @@
|
|
|
1329
1033
|
<span class="cline-any cline-no"> </span>
|
|
1330
1034
|
<span class="cline-any cline-no"> </span>
|
|
1331
1035
|
<span class="cline-any cline-no"> </span>
|
|
1332
|
-
<span class="cline-any cline-no"> </span>
|
|
1333
|
-
<span class="cline-any cline-no"> </span>
|
|
1334
1036
|
<span class="cline-any cline-yes">1x</span>
|
|
1335
1037
|
<span class="cline-any cline-yes">1x</span>
|
|
1336
|
-
<span class="cline-any cline-yes">
|
|
1337
|
-
<span class="cline-any cline-yes">
|
|
1338
|
-
<span class="cline-any cline-yes">
|
|
1339
|
-
<span class="cline-any cline-yes">
|
|
1340
|
-
<span class="cline-any cline-yes">
|
|
1341
|
-
<span class="cline-any cline-yes">
|
|
1342
|
-
<span class="cline-any cline-yes">
|
|
1343
|
-
<span class="cline-any cline-yes">
|
|
1344
|
-
<span class="cline-any cline-yes">
|
|
1345
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1346
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1347
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1348
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1349
|
-
<span class="cline-any cline-yes">63x</span>
|
|
1350
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1351
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1352
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1038
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1039
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1040
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1041
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1042
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1043
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1044
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1045
|
+
<span class="cline-any cline-yes">60x</span>
|
|
1046
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1353
1047
|
<span class="cline-any cline-yes">2x</span>
|
|
1354
1048
|
<span class="cline-any cline-yes">2x</span>
|
|
1355
1049
|
<span class="cline-any cline-yes">2x</span>
|
|
1356
1050
|
<span class="cline-any cline-yes">2x</span>
|
|
1357
1051
|
<span class="cline-any cline-yes">2x</span>
|
|
1358
1052
|
<span class="cline-any cline-yes">2x</span>
|
|
1359
|
-
<span class="cline-any cline-yes">
|
|
1360
|
-
<span class="cline-any cline-yes">
|
|
1361
|
-
<span class="cline-any cline-yes">
|
|
1362
|
-
<span class="cline-any cline-yes">63x</span>
|
|
1363
|
-
<span class="cline-any cline-yes">63x</span>
|
|
1364
|
-
<span class="cline-any cline-yes">63x</span>
|
|
1365
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1366
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1367
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1368
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1053
|
+
<span class="cline-any cline-yes">60x</span>
|
|
1054
|
+
<span class="cline-any cline-yes">60x</span>
|
|
1055
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1369
1056
|
<span class="cline-any cline-yes">1x</span>
|
|
1370
1057
|
<span class="cline-any cline-yes">1x</span>
|
|
1371
1058
|
<span class="cline-any cline-yes">1x</span>
|
|
1372
1059
|
<span class="cline-any cline-yes">1x</span>
|
|
1373
1060
|
<span class="cline-any cline-yes">62x</span>
|
|
1374
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1375
|
-
<span class="cline-any cline-yes">55x</span>
|
|
1376
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1377
1061
|
<span class="cline-any cline-yes">8x</span>
|
|
1378
1062
|
<span class="cline-any cline-yes">8x</span>
|
|
1379
1063
|
<span class="cline-any cline-yes">8x</span>
|
|
1380
1064
|
<span class="cline-any cline-yes">8x</span>
|
|
1381
1065
|
<span class="cline-any cline-yes">8x</span>
|
|
1382
|
-
<span class="cline-any cline-yes">54x</span>
|
|
1383
|
-
<span class="cline-any cline-yes">54x</span>
|
|
1384
|
-
<span class="cline-any cline-yes">54x</span>
|
|
1385
|
-
<span class="cline-any cline-yes">54x</span>
|
|
1386
|
-
<span class="cline-any cline-yes">54x</span>
|
|
1387
|
-
<span class="cline-any cline-yes">54x</span>
|
|
1388
|
-
<span class="cline-any cline-yes">54x</span>
|
|
1389
|
-
<span class="cline-any cline-yes">52x</span>
|
|
1390
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1391
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1392
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1393
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1394
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1395
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1396
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1397
|
-
<span class="cline-any cline-yes">60x</span>
|
|
1398
|
-
<span class="cline-any cline-yes">56x</span>
|
|
1399
|
-
<span class="cline-any cline-yes">56x</span>
|
|
1400
|
-
<span class="cline-any cline-yes">166x</span>
|
|
1401
|
-
<span class="cline-any cline-yes">60x</span>
|
|
1402
|
-
<span class="cline-any cline-yes">55x</span>
|
|
1403
|
-
<span class="cline-any cline-yes">60x</span>
|
|
1404
|
-
<span class="cline-any cline-yes">54x</span>
|
|
1405
|
-
<span class="cline-any cline-yes">54x</span>
|
|
1406
|
-
<span class="cline-any cline-yes">54x</span>
|
|
1407
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1408
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1409
|
-
<span class="cline-any cline-yes">54x</span>
|
|
1410
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1411
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1412
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1413
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1414
1066
|
<span class="cline-any cline-yes">51x</span>
|
|
1415
1067
|
<span class="cline-any cline-yes">51x</span>
|
|
1416
1068
|
<span class="cline-any cline-yes">51x</span>
|
|
1417
1069
|
<span class="cline-any cline-yes">51x</span>
|
|
1418
1070
|
<span class="cline-any cline-yes">51x</span>
|
|
1419
|
-
<span class="cline-any cline-yes">
|
|
1420
|
-
<span class="cline-any cline-yes">
|
|
1421
|
-
<span class="cline-any cline-yes">
|
|
1422
|
-
<span class="cline-any cline-yes">
|
|
1423
|
-
<span class="cline-any cline-yes">
|
|
1424
|
-
<span class="cline-any cline-yes">
|
|
1425
|
-
<span class="cline-any cline-yes">
|
|
1426
|
-
<span class="cline-any cline-yes">
|
|
1427
|
-
<span class="cline-any cline-yes">
|
|
1428
|
-
<span class="cline-any cline-yes">
|
|
1429
|
-
<span class="cline-any cline-yes">
|
|
1071
|
+
<span class="cline-any cline-yes">51x</span>
|
|
1072
|
+
<span class="cline-any cline-yes">51x</span>
|
|
1073
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1074
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1075
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1076
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1077
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1078
|
+
<span class="cline-any cline-yes">55x</span>
|
|
1079
|
+
<span class="cline-any cline-yes">55x</span>
|
|
1080
|
+
<span class="cline-any cline-yes">55x</span>
|
|
1081
|
+
<span class="cline-any cline-yes">55x</span>
|
|
1082
|
+
<span class="cline-any cline-yes">55x</span>
|
|
1083
|
+
<span class="cline-any cline-yes">55x</span>
|
|
1084
|
+
<span class="cline-any cline-yes">55x</span>
|
|
1085
|
+
<span class="cline-any cline-yes">39x</span>
|
|
1086
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1087
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1088
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1089
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1090
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1091
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1092
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1093
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1094
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1095
|
+
<span class="cline-any cline-yes">22x</span>
|
|
1430
1096
|
<span class="cline-any cline-yes">2x</span>
|
|
1431
1097
|
<span class="cline-any cline-yes">2x</span>
|
|
1432
1098
|
<span class="cline-any cline-yes">2x</span>
|
|
1433
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1434
1099
|
<span class="cline-any cline-yes">2x</span>
|
|
1435
1100
|
<span class="cline-any cline-yes">2x</span>
|
|
1436
1101
|
<span class="cline-any cline-yes">2x</span>
|
|
1437
1102
|
<span class="cline-any cline-yes">2x</span>
|
|
1438
|
-
<span class="cline-any cline-yes">
|
|
1439
|
-
<span class="cline-any cline-yes">
|
|
1440
|
-
<span class="cline-any cline-yes">
|
|
1441
|
-
<span class="cline-any cline-yes">
|
|
1442
|
-
<span class="cline-any cline-yes">
|
|
1443
|
-
<span class="cline-any cline-yes">
|
|
1444
|
-
<span class="cline-any cline-yes">
|
|
1445
|
-
<span class="cline-any cline-yes">
|
|
1446
|
-
<span class="cline-any cline-yes">
|
|
1447
|
-
<span class="cline-any cline-yes">
|
|
1448
|
-
<span class="cline-any cline-yes">
|
|
1449
|
-
<span class="cline-any cline-yes">
|
|
1450
|
-
<span class="cline-any cline-yes">
|
|
1451
|
-
<span class="cline-any cline-yes">
|
|
1452
|
-
<span class="cline-any cline-yes">
|
|
1453
|
-
<span class="cline-any cline-yes">
|
|
1454
|
-
<span class="cline-any cline-yes">
|
|
1455
|
-
<span class="cline-any cline-yes">
|
|
1456
|
-
<span class="cline-any cline-yes">
|
|
1457
|
-
<span class="cline-any cline-yes">
|
|
1458
|
-
<span class="cline-any cline-yes">
|
|
1459
|
-
<span class="cline-any cline-yes">
|
|
1460
|
-
<span class="cline-any cline-yes">
|
|
1461
|
-
<span class="cline-any cline-yes">
|
|
1462
|
-
<span class="cline-any cline-yes">
|
|
1463
|
-
<span class="cline-any cline-yes">
|
|
1464
|
-
<span class="cline-any cline-yes">
|
|
1465
|
-
<span class="cline-any cline-yes">
|
|
1466
|
-
<span class="cline-any cline-yes">49x</span>
|
|
1467
|
-
<span class="cline-any cline-yes">14x</span>
|
|
1468
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1469
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1470
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1471
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1472
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1473
|
-
<span class="cline-any cline-yes">51x</span>
|
|
1474
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1475
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1476
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1477
|
-
<span class="cline-any cline-yes">49x</span>
|
|
1478
|
-
<span class="cline-any cline-yes">49x</span>
|
|
1479
|
-
<span class="cline-any cline-yes">48x</span>
|
|
1480
|
-
<span class="cline-any cline-yes">49x</span>
|
|
1481
|
-
<span class="cline-any cline-yes">49x</span>
|
|
1482
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1483
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1484
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1485
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1486
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1487
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1488
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1489
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1490
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1491
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1492
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1103
|
+
<span class="cline-any cline-yes">20x</span>
|
|
1104
|
+
<span class="cline-any cline-yes">20x</span>
|
|
1105
|
+
<span class="cline-any cline-yes">20x</span>
|
|
1106
|
+
<span class="cline-any cline-yes">20x</span>
|
|
1107
|
+
<span class="cline-any cline-yes">20x</span>
|
|
1108
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1109
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1110
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1111
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1112
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1113
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1114
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1115
|
+
<span class="cline-any cline-yes">25x</span>
|
|
1116
|
+
<span class="cline-any cline-yes">34x</span>
|
|
1117
|
+
<span class="cline-any cline-yes">34x</span>
|
|
1118
|
+
<span class="cline-any cline-yes">9x</span>
|
|
1119
|
+
<span class="cline-any cline-yes">25x</span>
|
|
1120
|
+
<span class="cline-any cline-yes">25x</span>
|
|
1121
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1122
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1123
|
+
<span class="cline-any cline-yes">25x</span>
|
|
1124
|
+
<span class="cline-any cline-yes">34x</span>
|
|
1125
|
+
<span class="cline-any cline-yes">34x</span>
|
|
1126
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1127
|
+
<span class="cline-any cline-yes">25x</span>
|
|
1128
|
+
<span class="cline-any cline-yes">25x</span>
|
|
1129
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1130
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1493
1131
|
<span class="cline-any cline-yes">11x</span>
|
|
1494
1132
|
<span class="cline-any cline-yes">11x</span>
|
|
1495
1133
|
<span class="cline-any cline-yes">11x</span>
|
|
1496
|
-
<span class="cline-any cline-yes">
|
|
1497
|
-
<span class="cline-any cline-yes">
|
|
1498
|
-
<span class="cline-any cline-yes">
|
|
1499
|
-
<span class="cline-any cline-yes">
|
|
1500
|
-
<span class="cline-any cline-yes">
|
|
1501
|
-
<span class="cline-any cline-yes">
|
|
1502
|
-
<span class="cline-any cline-yes">
|
|
1503
|
-
<span class="cline-any cline-yes">35x</span>
|
|
1504
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1505
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1506
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1507
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1508
|
-
<span class="cline-any cline-yes">35x</span>
|
|
1134
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1135
|
+
<span class="cline-any cline-yes">25x</span>
|
|
1136
|
+
<span class="cline-any cline-yes">25x</span>
|
|
1137
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1138
|
+
<span class="cline-any cline-yes">25x</span>
|
|
1139
|
+
<span class="cline-any cline-yes">23x</span>
|
|
1140
|
+
<span class="cline-any cline-yes">25x</span>
|
|
1509
1141
|
<span class="cline-any cline-yes">2x</span>
|
|
1510
1142
|
<span class="cline-any cline-yes">2x</span>
|
|
1511
|
-
<span class="cline-any cline-yes">
|
|
1512
|
-
<span class="cline-any cline-yes">
|
|
1513
|
-
<span class="cline-any cline-yes">
|
|
1514
|
-
<span class="cline-any cline-yes">
|
|
1515
|
-
<span class="cline-any cline-yes">
|
|
1516
|
-
<span class="cline-any cline-yes">
|
|
1517
|
-
<span class="cline-any cline-yes">
|
|
1518
|
-
<span class="cline-any cline-yes">
|
|
1519
|
-
<span class="cline-any cline-yes">
|
|
1520
|
-
<span class="cline-any cline-yes">
|
|
1521
|
-
<span class="cline-any cline-yes">
|
|
1522
|
-
<span class="cline-any cline-yes">
|
|
1523
|
-
<span class="cline-any cline-yes">
|
|
1524
|
-
<span class="cline-any cline-yes">
|
|
1525
|
-
<span class="cline-any cline-yes">
|
|
1526
|
-
<span class="cline-any cline-yes">
|
|
1527
|
-
<span class="cline-any cline-yes">
|
|
1528
|
-
<span class="cline-any cline-yes">
|
|
1529
|
-
<span class="cline-any cline-yes">
|
|
1530
|
-
<span class="cline-any cline-yes">
|
|
1531
|
-
<span class="cline-any cline-yes">
|
|
1532
|
-
<span class="cline-any cline-yes">
|
|
1533
|
-
<span class="cline-any cline-yes">
|
|
1534
|
-
<span class="cline-any cline-yes">
|
|
1535
|
-
<span class="cline-any cline-yes">
|
|
1536
|
-
<span class="cline-any cline-yes">
|
|
1537
|
-
<span class="cline-any cline-yes">
|
|
1538
|
-
<span class="cline-any cline-yes">
|
|
1539
|
-
<span class="cline-any cline-yes">
|
|
1540
|
-
<span class="cline-any cline-yes">
|
|
1541
|
-
<span class="cline-any cline-yes">
|
|
1542
|
-
<span class="cline-any cline-yes">
|
|
1543
|
-
<span class="cline-any cline-
|
|
1544
|
-
<span class="cline-any cline-
|
|
1545
|
-
<span class="cline-any cline-
|
|
1546
|
-
<span class="cline-any cline-
|
|
1547
|
-
<span class="cline-any cline-yes">
|
|
1548
|
-
<span class="cline-any cline-yes">
|
|
1549
|
-
<span class="cline-any cline-
|
|
1550
|
-
<span class="cline-any cline-yes">
|
|
1551
|
-
<span class="cline-any cline-yes">
|
|
1552
|
-
<span class="cline-any cline-yes">
|
|
1553
|
-
<span class="cline-any cline-yes">
|
|
1554
|
-
<span class="cline-any cline-yes">
|
|
1555
|
-
<span class="cline-any cline-yes">
|
|
1556
|
-
<span class="cline-any cline-yes">
|
|
1557
|
-
<span class="cline-any cline-yes">29x</span>
|
|
1558
|
-
<span class="cline-any cline-yes">29x</span>
|
|
1559
|
-
<span class="cline-any cline-yes">29x</span>
|
|
1560
|
-
<span class="cline-any cline-yes">29x</span>
|
|
1561
|
-
<span class="cline-any cline-yes">29x</span>
|
|
1562
|
-
<span class="cline-any cline-yes">29x</span>
|
|
1563
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1564
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1565
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1566
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1567
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1568
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1569
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1570
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1571
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1572
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1573
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1574
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1575
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1576
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1577
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1578
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1579
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1143
|
+
<span class="cline-any cline-yes">25x</span>
|
|
1144
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1145
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1146
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1147
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1148
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1149
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1150
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1151
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1152
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1153
|
+
<span class="cline-any cline-yes">25x</span>
|
|
1154
|
+
<span class="cline-any cline-yes">25x</span>
|
|
1155
|
+
<span class="cline-any cline-yes">25x</span>
|
|
1156
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1157
|
+
<span class="cline-any cline-yes">25x</span>
|
|
1158
|
+
<span class="cline-any cline-yes">25x</span>
|
|
1159
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1160
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1161
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1162
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1163
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1164
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1165
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1166
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1167
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1168
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1169
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1170
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1171
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1172
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1173
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1174
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1175
|
+
<span class="cline-any cline-no"> </span>
|
|
1176
|
+
<span class="cline-any cline-no"> </span>
|
|
1177
|
+
<span class="cline-any cline-no"> </span>
|
|
1178
|
+
<span class="cline-any cline-no"> </span>
|
|
1179
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1180
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1181
|
+
<span class="cline-any cline-no"> </span>
|
|
1182
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1183
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1184
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1185
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1186
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1187
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1188
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1580
1189
|
<span class="cline-any cline-yes">5x</span>
|
|
1581
1190
|
<span class="cline-any cline-yes">1x</span>
|
|
1582
1191
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -1586,12 +1195,7 @@
|
|
|
1586
1195
|
<span class="cline-any cline-yes">4x</span>
|
|
1587
1196
|
<span class="cline-any cline-yes">4x</span>
|
|
1588
1197
|
<span class="cline-any cline-yes">4x</span>
|
|
1589
|
-
<span class="cline-any cline-yes">
|
|
1590
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1591
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1592
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1593
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1594
|
-
<span class="cline-any cline-yes">65x</span>
|
|
1198
|
+
<span class="cline-any cline-yes">62x</span>
|
|
1595
1199
|
<span class="cline-any cline-yes">1x</span>
|
|
1596
1200
|
<span class="cline-any cline-yes">1x</span>
|
|
1597
1201
|
<span class="cline-any cline-yes">61x</span>
|
|
@@ -1632,16 +1236,9 @@
|
|
|
1632
1236
|
<span class="cline-any cline-yes">61x</span>
|
|
1633
1237
|
<span class="cline-any cline-yes">11x</span>
|
|
1634
1238
|
<span class="cline-any cline-yes">11x</span>
|
|
1635
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1636
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1637
1239
|
<span class="cline-any cline-yes">42x</span>
|
|
1638
1240
|
<span class="cline-any cline-yes">42x</span>
|
|
1639
1241
|
<span class="cline-any cline-yes">42x</span>
|
|
1640
|
-
<span class="cline-any cline-yes">42x</span>
|
|
1641
|
-
<span class="cline-any cline-yes">84x</span>
|
|
1642
|
-
<span class="cline-any cline-yes">84x</span>
|
|
1643
|
-
<span class="cline-any cline-yes">84x</span>
|
|
1644
|
-
<span class="cline-any cline-yes">84x</span>
|
|
1645
1242
|
<span class="cline-any cline-yes">84x</span>
|
|
1646
1243
|
<span class="cline-any cline-yes">84x</span>
|
|
1647
1244
|
<span class="cline-any cline-yes">42x</span>
|
|
@@ -1667,17 +1264,6 @@
|
|
|
1667
1264
|
<span class="cline-any cline-yes">61x</span>
|
|
1668
1265
|
<span class="cline-any cline-yes">61x</span>
|
|
1669
1266
|
<span class="cline-any cline-yes">61x</span>
|
|
1670
|
-
<span class="cline-any cline-yes">61x</span>
|
|
1671
|
-
<span class="cline-any cline-yes">61x</span>
|
|
1672
|
-
<span class="cline-any cline-yes">61x</span>
|
|
1673
|
-
<span class="cline-any cline-yes">61x</span>
|
|
1674
|
-
<span class="cline-any cline-yes">61x</span>
|
|
1675
|
-
<span class="cline-any cline-yes">61x</span>
|
|
1676
|
-
<span class="cline-any cline-yes">61x</span>
|
|
1677
|
-
<span class="cline-any cline-yes">61x</span>
|
|
1678
|
-
<span class="cline-any cline-yes">32x</span>
|
|
1679
|
-
<span class="cline-any cline-yes">32x</span>
|
|
1680
|
-
<span class="cline-any cline-yes">32x</span>
|
|
1681
1267
|
<span class="cline-any cline-yes">32x</span>
|
|
1682
1268
|
<span class="cline-any cline-yes">32x</span>
|
|
1683
1269
|
<span class="cline-any cline-yes">32x</span>
|
|
@@ -1695,8 +1281,6 @@
|
|
|
1695
1281
|
<span class="cline-any cline-yes">24x</span>
|
|
1696
1282
|
<span class="cline-any cline-yes">30x</span>
|
|
1697
1283
|
<span class="cline-any cline-yes">3x</span>
|
|
1698
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1699
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1700
1284
|
<span class="cline-any cline-yes">30x</span>
|
|
1701
1285
|
<span class="cline-any cline-yes">21x</span>
|
|
1702
1286
|
<span class="cline-any cline-yes">21x</span>
|
|
@@ -1715,24 +1299,12 @@
|
|
|
1715
1299
|
<span class="cline-any cline-yes">30x</span>
|
|
1716
1300
|
<span class="cline-any cline-yes">30x</span>
|
|
1717
1301
|
<span class="cline-any cline-yes">30x</span>
|
|
1718
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1719
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1720
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1721
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1722
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1723
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1724
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1725
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1726
1302
|
<span class="cline-any cline-yes">2x</span>
|
|
1727
1303
|
<span class="cline-any cline-yes">2x</span>
|
|
1728
1304
|
<span class="cline-any cline-yes">2x</span>
|
|
1729
1305
|
<span class="cline-any cline-yes">61x</span>
|
|
1730
1306
|
<span class="cline-any cline-yes">37x</span>
|
|
1731
1307
|
<span class="cline-any cline-yes">37x</span>
|
|
1732
|
-
<span class="cline-any cline-yes">37x</span>
|
|
1733
|
-
<span class="cline-any cline-yes">37x</span>
|
|
1734
|
-
<span class="cline-any cline-yes">37x</span>
|
|
1735
|
-
<span class="cline-any cline-yes">37x</span>
|
|
1736
1308
|
<span class="cline-any cline-yes">6x</span>
|
|
1737
1309
|
<span class="cline-any cline-yes">6x</span>
|
|
1738
1310
|
<span class="cline-any cline-yes">6x</span>
|
|
@@ -1743,11 +1315,6 @@
|
|
|
1743
1315
|
<span class="cline-any cline-yes">1x</span>
|
|
1744
1316
|
<span class="cline-any cline-yes">1x</span>
|
|
1745
1317
|
<span class="cline-any cline-yes">1x</span>
|
|
1746
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1747
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1748
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1749
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1750
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1751
1318
|
<span class="cline-any cline-yes">36x</span>
|
|
1752
1319
|
<span class="cline-any cline-yes">36x</span>
|
|
1753
1320
|
<span class="cline-any cline-yes">36x</span>
|
|
@@ -1758,22 +1325,11 @@
|
|
|
1758
1325
|
<span class="cline-any cline-yes">36x</span>
|
|
1759
1326
|
<span class="cline-any cline-yes">37x</span>
|
|
1760
1327
|
<span class="cline-any cline-yes">6x</span>
|
|
1761
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1762
1328
|
<span class="cline-any cline-yes">6x</span>
|
|
1763
1329
|
<span class="cline-any cline-yes">37x</span>
|
|
1764
1330
|
<span class="cline-any cline-yes">5x</span>
|
|
1765
1331
|
<span class="cline-any cline-yes">5x</span>
|
|
1766
1332
|
<span class="cline-any cline-yes">5x</span>
|
|
1767
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1768
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1769
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1770
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1771
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1772
|
-
<span class="cline-any cline-yes">31x</span>
|
|
1773
|
-
<span class="cline-any cline-yes">31x</span>
|
|
1774
|
-
<span class="cline-any cline-yes">31x</span>
|
|
1775
|
-
<span class="cline-any cline-yes">31x</span>
|
|
1776
|
-
<span class="cline-any cline-yes">31x</span>
|
|
1777
1333
|
<span class="cline-any cline-yes">31x</span>
|
|
1778
1334
|
<span class="cline-any cline-yes">31x</span>
|
|
1779
1335
|
<span class="cline-any cline-yes">31x</span>
|
|
@@ -1886,40 +1442,6 @@
|
|
|
1886
1442
|
<span class="cline-any cline-no"> </span>
|
|
1887
1443
|
<span class="cline-any cline-no"> </span>
|
|
1888
1444
|
<span class="cline-any cline-no"> </span>
|
|
1889
|
-
<span class="cline-any cline-no"> </span>
|
|
1890
|
-
<span class="cline-any cline-no"> </span>
|
|
1891
|
-
<span class="cline-any cline-no"> </span>
|
|
1892
|
-
<span class="cline-any cline-no"> </span>
|
|
1893
|
-
<span class="cline-any cline-no"> </span>
|
|
1894
|
-
<span class="cline-any cline-no"> </span>
|
|
1895
|
-
<span class="cline-any cline-no"> </span>
|
|
1896
|
-
<span class="cline-any cline-no"> </span>
|
|
1897
|
-
<span class="cline-any cline-no"> </span>
|
|
1898
|
-
<span class="cline-any cline-no"> </span>
|
|
1899
|
-
<span class="cline-any cline-no"> </span>
|
|
1900
|
-
<span class="cline-any cline-no"> </span>
|
|
1901
|
-
<span class="cline-any cline-no"> </span>
|
|
1902
|
-
<span class="cline-any cline-no"> </span>
|
|
1903
|
-
<span class="cline-any cline-no"> </span>
|
|
1904
|
-
<span class="cline-any cline-no"> </span>
|
|
1905
|
-
<span class="cline-any cline-no"> </span>
|
|
1906
|
-
<span class="cline-any cline-no"> </span>
|
|
1907
|
-
<span class="cline-any cline-no"> </span>
|
|
1908
|
-
<span class="cline-any cline-no"> </span>
|
|
1909
|
-
<span class="cline-any cline-no"> </span>
|
|
1910
|
-
<span class="cline-any cline-no"> </span>
|
|
1911
|
-
<span class="cline-any cline-no"> </span>
|
|
1912
|
-
<span class="cline-any cline-no"> </span>
|
|
1913
|
-
<span class="cline-any cline-no"> </span>
|
|
1914
|
-
<span class="cline-any cline-no"> </span>
|
|
1915
|
-
<span class="cline-any cline-no"> </span>
|
|
1916
|
-
<span class="cline-any cline-no"> </span>
|
|
1917
|
-
<span class="cline-any cline-no"> </span>
|
|
1918
|
-
<span class="cline-any cline-no"> </span>
|
|
1919
|
-
<span class="cline-any cline-no"> </span>
|
|
1920
|
-
<span class="cline-any cline-no"> </span>
|
|
1921
|
-
<span class="cline-any cline-no"> </span>
|
|
1922
|
-
<span class="cline-any cline-no"> </span>
|
|
1923
1445
|
<span class="cline-any cline-yes">1x</span>
|
|
1924
1446
|
<span class="cline-any cline-yes">1x</span>
|
|
1925
1447
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1936,11 +1458,6 @@
|
|
|
1936
1458
|
<span class="cline-any cline-no"> </span>
|
|
1937
1459
|
<span class="cline-any cline-no"> </span>
|
|
1938
1460
|
<span class="cline-any cline-no"> </span>
|
|
1939
|
-
<span class="cline-any cline-no"> </span>
|
|
1940
|
-
<span class="cline-any cline-no"> </span>
|
|
1941
|
-
<span class="cline-any cline-no"> </span>
|
|
1942
|
-
<span class="cline-any cline-no"> </span>
|
|
1943
|
-
<span class="cline-any cline-no"> </span>
|
|
1944
1461
|
<span class="cline-any cline-yes">1x</span>
|
|
1945
1462
|
<span class="cline-any cline-yes">1x</span>
|
|
1946
1463
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1957,11 +1474,6 @@
|
|
|
1957
1474
|
<span class="cline-any cline-no"> </span>
|
|
1958
1475
|
<span class="cline-any cline-no"> </span>
|
|
1959
1476
|
<span class="cline-any cline-no"> </span>
|
|
1960
|
-
<span class="cline-any cline-no"> </span>
|
|
1961
|
-
<span class="cline-any cline-no"> </span>
|
|
1962
|
-
<span class="cline-any cline-no"> </span>
|
|
1963
|
-
<span class="cline-any cline-no"> </span>
|
|
1964
|
-
<span class="cline-any cline-no"> </span>
|
|
1965
1477
|
<span class="cline-any cline-yes">1x</span>
|
|
1966
1478
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import axios from "axios";
|
|
1967
1479
|
import { BigNumber } from "bignumber.js";
|
|
@@ -1979,12 +1491,7 @@ import { FALLBACK_ASSET_ICON_URL } from "../../constants/globalConstants.jsx";
|
|
|
1979
1491
|
export const BANNED_PARTNERS = ["stealthex", "changee", "coincraddle"];
|
|
1980
1492
|
|
|
1981
1493
|
export class SwapspaceSwapProvider extends SwapProvider {
|
|
1982
|
-
constructor(
|
|
1983
|
-
apiKeysProxyUrl,
|
|
1984
|
-
cache,
|
|
1985
|
-
customCoinBuilder = <span class="fstat-no" title="function not covered" >(coin, network) => null,</span>
|
|
1986
|
-
useRestrictedCoinsSet = true
|
|
1987
|
-
) {
|
|
1494
|
+
constructor(apiKeysProxyUrl, cache, customCoinBuilder = <span class="fstat-no" title="function not covered" >(coin, network) => null,</span> useRestrictedCoinsSet = true) {
|
|
1988
1495
|
super();
|
|
1989
1496
|
this._supportedCoins = [];
|
|
1990
1497
|
this._URL = `${apiKeysProxyUrl}`;
|
|
@@ -2004,15 +1511,10 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2004
1511
|
const loggerSource = "getDepositCurrencies";
|
|
2005
1512
|
try {
|
|
2006
1513
|
await this._fetchSupportedCurrenciesIfNeeded();
|
|
2007
|
-
Logger.log(
|
|
2008
|
-
`We have ${this._supportedCoins?.length} supported coins, getting depositable`,
|
|
2009
|
-
loggerSource
|
|
2010
|
-
);
|
|
1514
|
+
Logger.log(`We have ${this._supportedCoins?.length} supported coins, getting depositable`, loggerSource);
|
|
2011
1515
|
return {
|
|
2012
1516
|
result: true,
|
|
2013
|
-
coins: this._supportedCoins
|
|
2014
|
-
.filter((item) => item.deposit)
|
|
2015
|
-
.map((item) => item.coin),
|
|
1517
|
+
coins: this._supportedCoins.filter(item => item.deposit).map(item => item.coin),
|
|
2016
1518
|
};
|
|
2017
1519
|
} catch (e) {
|
|
2018
1520
|
if (e?.response?.status === 429) {
|
|
@@ -2029,13 +1531,10 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2029
1531
|
const loggerSource = "getAllSupportedCurrencies";
|
|
2030
1532
|
try {
|
|
2031
1533
|
await this._fetchSupportedCurrenciesIfNeeded();
|
|
2032
|
-
Logger.log(
|
|
2033
|
-
`We have ${this._supportedCoins?.length} supported coins returning`,
|
|
2034
|
-
loggerSource
|
|
2035
|
-
);
|
|
1534
|
+
Logger.log(`We have ${this._supportedCoins?.length} supported coins returning`, loggerSource);
|
|
2036
1535
|
return {
|
|
2037
1536
|
result: true,
|
|
2038
|
-
coins: this._supportedCoins.map(
|
|
1537
|
+
coins: this._supportedCoins.map(item => item.coin),
|
|
2039
1538
|
};
|
|
2040
1539
|
} catch (e) {
|
|
2041
1540
|
if (e?.response?.status === 429) {
|
|
@@ -2052,20 +1551,14 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2052
1551
|
const loggerSource = "getWithdrawalCurrencies";
|
|
2053
1552
|
try {
|
|
2054
1553
|
await this._fetchSupportedCurrenciesIfNeeded();
|
|
2055
|
-
Logger.log(
|
|
2056
|
-
`We have ${this._supportedCoins?.length} supported coins, getting withdrawable`,
|
|
2057
|
-
loggerSource
|
|
2058
|
-
);
|
|
1554
|
+
Logger.log(`We have ${this._supportedCoins?.length} supported coins, getting withdrawable`, loggerSource);
|
|
2059
1555
|
return {
|
|
2060
1556
|
result: true,
|
|
2061
1557
|
coins: this._supportedCoins
|
|
2062
1558
|
.filter(
|
|
2063
|
-
|
|
2064
|
-
item.withdrawal &&
|
|
2065
|
-
(!exceptCurrency ||
|
|
2066
|
-
item.coin?.ticker !== exceptCurrency?.ticker)
|
|
1559
|
+
item => item.withdrawal && (!exceptCurrency || item.coin?.ticker !== exceptCurrency?.ticker)
|
|
2067
1560
|
)
|
|
2068
|
-
.map(
|
|
1561
|
+
.map(item => item.coin),
|
|
2069
1562
|
};
|
|
2070
1563
|
} catch (e) {
|
|
2071
1564
|
if (e?.response?.status === 429) {
|
|
@@ -2087,14 +1580,11 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2087
1580
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
2088
1581
|
<span class="cstat-no" title="statement not covered" > let coin = coinOrTicker;</span>
|
|
2089
1582
|
<span class="cstat-no" title="statement not covered" > if (!(coinOrTicker instanceof Coin)) {</span>
|
|
2090
|
-
<span class="cstat-no" title="statement not covered" > coin = this._supportedCoins.find(
|
|
2091
|
-
<span class="cstat-no" title="statement not covered" > (i) => i.coin.ticker === coinOrTicker</span>
|
|
2092
|
-
<span class="cstat-no" title="statement not covered" > )?.coin;</span>
|
|
1583
|
+
<span class="cstat-no" title="statement not covered" > coin = this._supportedCoins.find(i => i.coin.ticker === coinOrTicker)?.coin;</span>
|
|
2093
1584
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2094
1585
|
<span class="cstat-no" title="statement not covered" > return (</span>
|
|
2095
|
-
<span class="cstat-no" title="statement not covered" > this._supportedCoins.find(
|
|
2096
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2097
|
-
<span class="cstat-no" title="statement not covered" > )?.iconURL ?? FALLBACK_ASSET_ICON_URL</span>
|
|
1586
|
+
<span class="cstat-no" title="statement not covered" > this._supportedCoins.find(item => item.coin?.ticker === coin?.ticker)?.iconURL ??</span>
|
|
1587
|
+
<span class="cstat-no" title="statement not covered" > FALLBACK_ASSET_ICON_URL</span>
|
|
2098
1588
|
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2099
1589
|
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
2100
1590
|
<span class="cstat-no" title="statement not covered" > improveAndRethrow(e, loggerSource);</span>
|
|
@@ -2105,22 +1595,14 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2105
1595
|
const loggerSource = "_fetchSupportedCurrenciesIfNeeded";
|
|
2106
1596
|
try {
|
|
2107
1597
|
if (!this._supportedCoins?.length) {
|
|
2108
|
-
const rawResponse = await axios.get(
|
|
2109
|
-
|
|
2110
|
-
);
|
|
2111
|
-
Logger.log(
|
|
2112
|
-
`Retrieved ${rawResponse?.data?.length}`,
|
|
2113
|
-
loggerSource
|
|
2114
|
-
);
|
|
1598
|
+
const rawResponse = await axios.get(`${this._URL}/api/v2/currencies`);
|
|
1599
|
+
Logger.log(`Retrieved ${rawResponse?.data?.length}`, loggerSource);
|
|
2115
1600
|
let allowedCoins = rawResponse?.data ?? [];
|
|
2116
1601
|
Logger.log(`Allowed cnt ${allowedCoins.length}`, loggerSource);
|
|
2117
1602
|
|
|
2118
1603
|
this._supportedCoins = allowedCoins
|
|
2119
|
-
.map(
|
|
2120
|
-
let coin = this._customCoinBuilder(
|
|
2121
|
-
item.code,
|
|
2122
|
-
item.network
|
|
2123
|
-
);
|
|
1604
|
+
.map(item => {
|
|
1605
|
+
let coin = this._customCoinBuilder(item.code, item.network);
|
|
2124
1606
|
if (!coin && !this.useRestrictedCoinsSet) {
|
|
2125
1607
|
/** Building coin object for coin that isn't supported OOB in Rabbit.
|
|
2126
1608
|
* We are doing this way to be able to use extended coins set for swaps.
|
|
@@ -2144,9 +1626,7 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2144
1626
|
// Rolling back to original name if our processing leads in empty name
|
|
2145
1627
|
name = item.name;
|
|
2146
1628
|
}
|
|
2147
|
-
const ticker = `${code}${
|
|
2148
|
-
code === network ? "" : network
|
|
2149
|
-
}`;
|
|
1629
|
+
const ticker = `${code}${code === network ? "" : network}`;
|
|
2150
1630
|
const defaultDecimalPlacesForCoinNotSupportedOOB = 8;
|
|
2151
1631
|
const defaultMinConfirmationsForCoinNotSupportedOOB = 1;
|
|
2152
1632
|
coin = new Coin(
|
|
@@ -2204,11 +1684,7 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2204
1684
|
this._supportedCoins.sort((i1, i2) => {
|
|
2205
1685
|
if (i1.isPopular && !i2.isPopular) return -1;
|
|
2206
1686
|
if (i2.isPopular && !i1.isPopular) return 1;
|
|
2207
|
-
return i1.coin.ticker > i2.coin.ticker
|
|
2208
|
-
? 1
|
|
2209
|
-
: i1.coin.ticker < i2.coin.ticker
|
|
2210
|
-
? -1
|
|
2211
|
-
<span class="branch-0 cbranch-no" title="branch not covered" > : 0;</span>
|
|
1687
|
+
return i1.coin.ticker > i2.coin.ticker ? 1 : i1.coin.ticker < i2.coin.ticker ? -1 <span class="branch-0 cbranch-no" title="branch not covered" >: 0;</span>
|
|
2212
1688
|
});
|
|
2213
1689
|
}
|
|
2214
1690
|
|
|
@@ -2220,15 +1696,11 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2220
1696
|
<span class="cstat-no" title="statement not covered" > await this._fetchSupportedCurrenciesIfNeeded();</span>
|
|
2221
1697
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
2222
1698
|
<span class="cstat-no" title="statement not covered" > // Using USDT TRC20 as usually fee in this network is smaller than ERC20 and this network is widely used for USDT</span>
|
|
2223
|
-
<span class="cstat-no" title="statement not covered" > const usdtTrc20 = this._supportedCoins.find(
|
|
2224
|
-
<span class="cstat-no" title="statement not covered" > (i) => i.coin.ticker === "USDTTRC20"</span>
|
|
2225
|
-
<span class="cstat-no" title="statement not covered" > )?.coin;</span>
|
|
1699
|
+
<span class="cstat-no" title="statement not covered" > const usdtTrc20 = this._supportedCoins.find(i => i.coin.ticker === "USDTTRC20")?.coin;</span>
|
|
2226
1700
|
<span class="cstat-no" title="statement not covered" > if (!usdtTrc20) {</span>
|
|
2227
1701
|
<span class="cstat-no" title="statement not covered" > return { result: false };</span>
|
|
2228
1702
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2229
|
-
<span class="cstat-no" title="statement not covered" > const cached = this._cache.get(
|
|
2230
|
-
<span class="cstat-no" title="statement not covered" > "swapspace_usdt_rate_" + coin.ticker</span>
|
|
2231
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1703
|
+
<span class="cstat-no" title="statement not covered" > const cached = this._cache.get("swapspace_usdt_rate_" + coin.ticker);</span>
|
|
2232
1704
|
<span class="cstat-no" title="statement not covered" > if (cached != null) {</span>
|
|
2233
1705
|
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
2234
1706
|
<span class="cstat-no" title="statement not covered" > result: true,</span>
|
|
@@ -2236,27 +1708,15 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2236
1708
|
<span class="cstat-no" title="statement not covered" > };</span>
|
|
2237
1709
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2238
1710
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
2239
|
-
<span class="cstat-no" title="statement not covered" > Logger.log(
|
|
2240
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2241
|
-
<span class="cstat-no" title="statement not covered" > coin?.ticker</span>
|
|
2242
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2243
|
-
<span class="cstat-no" title="statement not covered" > const result = await this.getSwapInfo(</span>
|
|
2244
|
-
<span class="cstat-no" title="statement not covered" > usdtTrc20,</span>
|
|
2245
|
-
<span class="cstat-no" title="statement not covered" > coin,</span>
|
|
2246
|
-
<span class="cstat-no" title="statement not covered" > "5000",</span>
|
|
2247
|
-
<span class="cstat-no" title="statement not covered" > false</span>
|
|
2248
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1711
|
+
<span class="cstat-no" title="statement not covered" > Logger.log("Loading USDT->coin rate as not found in cache:", coin?.ticker);</span>
|
|
1712
|
+
<span class="cstat-no" title="statement not covered" > const result = await this.getSwapInfo(usdtTrc20, coin, "5000", false);</span>
|
|
2249
1713
|
<span class="cstat-no" title="statement not covered" > if (!result.result) {</span>
|
|
2250
1714
|
<span class="cstat-no" title="statement not covered" > return { result: false };</span>
|
|
2251
1715
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2252
1716
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
2253
1717
|
<span class="cstat-no" title="statement not covered" > // This calculation is not precise as we cannot recognize the actual fee and network fee. Just approximate.</span>
|
|
2254
1718
|
<span class="cstat-no" title="statement not covered" > const standardSwapspaceFeeMultiplier = 1.004; // fee is usually 0.4%</span>
|
|
2255
|
-
<span class="cstat-no" title="statement not covered" > const rate = BigNumber(1)
|
|
2256
|
-
<span class="cstat-no" title="statement not covered" > .div(</span>
|
|
2257
|
-
<span class="cstat-no" title="statement not covered" > BigNumber(result.rate).times(standardSwapspaceFeeMultiplier)</span>
|
|
2258
|
-
<span class="cstat-no" title="statement not covered" > )</span>
|
|
2259
|
-
<span class="cstat-no" title="statement not covered" > .toString();</span>
|
|
1719
|
+
<span class="cstat-no" title="statement not covered" > const rate = BigNumber(1).div(BigNumber(result.rate).times(standardSwapspaceFeeMultiplier)).toString();</span>
|
|
2260
1720
|
<span class="cstat-no" title="statement not covered" > this._cache.put(</span>
|
|
2261
1721
|
<span class="cstat-no" title="statement not covered" > "swapspace_usdt_rate_" + coin.ticker,</span>
|
|
2262
1722
|
<span class="cstat-no" title="statement not covered" > rate,</span>
|
|
@@ -2273,22 +1733,14 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2273
1733
|
|
|
2274
1734
|
<span class="fstat-no" title="function not covered" > getCoinByTickerIfPresent(ticker) {</span>
|
|
2275
1735
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
2276
|
-
<span class="cstat-no" title="statement not covered" > const item = this._supportedCoins.find(
|
|
2277
|
-
<span class="cstat-no" title="statement not covered" > (i) => i.coin.ticker === ticker</span>
|
|
2278
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1736
|
+
<span class="cstat-no" title="statement not covered" > const item = this._supportedCoins.find(i => i.coin.ticker === ticker);</span>
|
|
2279
1737
|
<span class="cstat-no" title="statement not covered" > return item?.coin ?? null;</span>
|
|
2280
1738
|
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
2281
1739
|
<span class="cstat-no" title="statement not covered" > improveAndRethrow(e, "getCoinByTickerIfPresent");</span>
|
|
2282
1740
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2283
1741
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2284
1742
|
|
|
2285
|
-
async getSwapInfo(
|
|
2286
|
-
fromCoin,
|
|
2287
|
-
toCoin,
|
|
2288
|
-
amountCoins,
|
|
2289
|
-
fixed = false,
|
|
2290
|
-
fromCoinToUsdRate = null
|
|
2291
|
-
) {
|
|
1743
|
+
async getSwapInfo(fromCoin, toCoin, amountCoins, fixed = false, fromCoinToUsdRate = null) {
|
|
2292
1744
|
const loggerSource = "getSwapInfo";
|
|
2293
1745
|
try {
|
|
2294
1746
|
if (
|
|
@@ -2299,31 +1751,19 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2299
1751
|
(fixed !== null && typeof fixed !== "boolean")
|
|
2300
1752
|
) {
|
|
2301
1753
|
throw new Error(
|
|
2302
|
-
`Wrong input params: ${amountCoins} ${fromCoin.ticker} -> ${
|
|
2303
|
-
|
|
2304
|
-
}, ${
|
|
2305
|
-
toCoin instanceof Coin
|
|
2306
|
-
}, ${typeof fixed} ${fixed}`
|
|
1754
|
+
`Wrong input params: ${amountCoins} ${fromCoin.ticker} -> ${toCoin.ticker}, ${
|
|
1755
|
+
fromCoin instanceof Coin
|
|
1756
|
+
}, ${toCoin instanceof Coin}, ${typeof fixed} ${fixed}`
|
|
2307
1757
|
);
|
|
2308
1758
|
}
|
|
2309
|
-
const fromCoinSwapspaceDetails = this._supportedCoins.find(
|
|
2310
|
-
|
|
2311
|
-
);
|
|
2312
|
-
const toCoinSwapspaceDetails = this._supportedCoins.find(
|
|
2313
|
-
(i) => i.coin?.ticker === toCoin?.ticker
|
|
2314
|
-
);
|
|
1759
|
+
const fromCoinSwapspaceDetails = this._supportedCoins.find(i => i.coin?.ticker === fromCoin?.ticker);
|
|
1760
|
+
const toCoinSwapspaceDetails = this._supportedCoins.find(i => i.coin?.ticker === toCoin?.ticker);
|
|
2315
1761
|
if (!fromCoinSwapspaceDetails || !toCoinSwapspaceDetails) {
|
|
2316
1762
|
throw new Error(
|
|
2317
|
-
"Failed to find swapspace coin details for: " +
|
|
2318
|
-
fromCoin.ticker +
|
|
2319
|
-
" -> " +
|
|
2320
|
-
toCoin.ticker
|
|
1763
|
+
"Failed to find swapspace coin details for: " + fromCoin.ticker + " -> " + toCoin.ticker
|
|
2321
1764
|
);
|
|
2322
1765
|
}
|
|
2323
|
-
if (
|
|
2324
|
-
!fromCoinSwapspaceDetails.deposit ||
|
|
2325
|
-
!toCoinSwapspaceDetails.withdrawal
|
|
2326
|
-
) {
|
|
1766
|
+
if (!fromCoinSwapspaceDetails.deposit || !toCoinSwapspaceDetails.withdrawal) {
|
|
2327
1767
|
return {
|
|
2328
1768
|
result: false,
|
|
2329
1769
|
reason: SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED,
|
|
@@ -2336,53 +1776,34 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2336
1776
|
const response = await axios.get(
|
|
2337
1777
|
`${this._URL}/api/v2/amounts?fromCurrency=${fromCoinSwapspaceDetails.code}&fromNetwork=${fromCoinSwapspaceDetails.network}&toNetwork=${toCoinSwapspaceDetails.network}&toCurrency=${toCoinSwapspaceDetails.code}&amount=${amountCoins}&estimated=false`
|
|
2338
1778
|
);
|
|
2339
|
-
Logger.log(
|
|
2340
|
-
`Retrieved ${response?.data?.length} options`,
|
|
2341
|
-
loggerSource
|
|
2342
|
-
);
|
|
1779
|
+
Logger.log(`Retrieved ${response?.data?.length} options`, loggerSource);
|
|
2343
1780
|
const options = Array.isArray(response.data) ? response.data : [];
|
|
2344
|
-
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
|
|
2355
|
-
|
|
2356
|
-
|
|
2357
|
-
((typeof exchange.min !== "number" ||
|
|
2358
|
-
typeof exchange.max !== "number") &&
|
|
2359
|
-
exchange.toAmount > 0))
|
|
2360
|
-
);
|
|
2361
|
-
let exchangesSupportingThePair =
|
|
2362
|
-
exchangesSupportingThePairDespiteFixedOrFloating;
|
|
1781
|
+
// TODO: [feature, high] remove if possible over-engineering about toAmount = 0 options treating as supported but not available. task_id=404ae30d9a7743238af3cc0d3bae9239
|
|
1782
|
+
let exchangesSupportingThePairDespiteFixedOrFloating = options.filter(
|
|
1783
|
+
exchange =>
|
|
1784
|
+
exchange?.exists &&
|
|
1785
|
+
!BANNED_PARTNERS.find(bannedPartner => bannedPartner === exchange?.partner) &&
|
|
1786
|
+
(exchange?.fixed === false || exchange?.fixed === true) &&
|
|
1787
|
+
typeof exchange.min === "number" &&
|
|
1788
|
+
typeof exchange.max === "number" &&
|
|
1789
|
+
typeof exchange.toAmount === "number" &&
|
|
1790
|
+
exchange.toAmount > 0 &&
|
|
1791
|
+
(exchange.min === 0 || exchange.max === 0 || exchange.max > exchange.min)
|
|
1792
|
+
);
|
|
1793
|
+
let exchangesSupportingThePair = exchangesSupportingThePairDespiteFixedOrFloating;
|
|
2363
1794
|
if (fixed != null) {
|
|
2364
|
-
exchangesSupportingThePair =
|
|
2365
|
-
|
|
2366
|
-
|
|
2367
|
-
);
|
|
1795
|
+
exchangesSupportingThePair = exchangesSupportingThePairDespiteFixedOrFloating.filter(
|
|
1796
|
+
option => option.fixed === fixed
|
|
1797
|
+
);
|
|
2368
1798
|
}
|
|
2369
|
-
Logger.log(
|
|
2370
|
-
`${exchangesSupportingThePair?.length} of them have exist=true`,
|
|
2371
|
-
loggerSource
|
|
2372
|
-
);
|
|
1799
|
+
Logger.log(`${exchangesSupportingThePair?.length} of them have exist=true`, loggerSource);
|
|
2373
1800
|
if (exchangesSupportingThePair.length === 0) {
|
|
2374
|
-
if (
|
|
2375
|
-
exchangesSupportingThePairDespiteFixedOrFloating.length >
|
|
2376
|
-
0 &&
|
|
2377
|
-
fixed !== null
|
|
2378
|
-
) {
|
|
1801
|
+
if (exchangesSupportingThePairDespiteFixedOrFloating.length > 0 && fixed !== null) {
|
|
2379
1802
|
return {
|
|
2380
1803
|
result: false,
|
|
2381
1804
|
reason: fixed
|
|
2382
|
-
? SwapProvider.NO_SWAPS_REASONS
|
|
2383
|
-
|
|
2384
|
-
: SwapProvider.NO_SWAPS_REASONS
|
|
2385
|
-
.NO_FLOATING_BUT_HAVE_FIXED,
|
|
1805
|
+
? SwapProvider.NO_SWAPS_REASONS.NO_FIXED_BUT_HAVE_FLOATING
|
|
1806
|
+
: SwapProvider.NO_SWAPS_REASONS.NO_FLOATING_BUT_HAVE_FIXED,
|
|
2386
1807
|
};
|
|
2387
1808
|
}
|
|
2388
1809
|
return {
|
|
@@ -2391,140 +1812,84 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2391
1812
|
};
|
|
2392
1813
|
}
|
|
2393
1814
|
const availableExchanges = exchangesSupportingThePair.filter(
|
|
2394
|
-
|
|
2395
|
-
typeof exchange?.toAmount === "number" &&
|
|
2396
|
-
exchange.toAmount > 0
|
|
2397
|
-
);
|
|
2398
|
-
Logger.log(
|
|
2399
|
-
`Available (having amountTo): ${safeStringify(
|
|
2400
|
-
availableExchanges
|
|
2401
|
-
)}`,
|
|
2402
|
-
loggerSource
|
|
1815
|
+
exchange => typeof exchange?.toAmount === "number" && exchange.toAmount > 0
|
|
2403
1816
|
);
|
|
1817
|
+
Logger.log(`Available (having amountTo): ${safeStringify(availableExchanges)}`, loggerSource);
|
|
2404
1818
|
// min=0 or max=0 means there is no limit for the partner
|
|
2405
1819
|
let smallestMin = null;
|
|
2406
|
-
if (
|
|
2407
|
-
exchangesSupportingThePair.find((ex) =>
|
|
2408
|
-
BigNumber(ex.min).isZero()
|
|
2409
|
-
) == null
|
|
2410
|
-
) {
|
|
1820
|
+
if (exchangesSupportingThePair.find(ex => BigNumber(ex.min).isZero()) == null) {
|
|
2411
1821
|
smallestMin = exchangesSupportingThePair.reduce((prev, cur) => {
|
|
2412
|
-
if (
|
|
2413
|
-
typeof cur.min === "number" &&
|
|
2414
|
-
(prev === null || BigNumber(cur.min).lt(prev))
|
|
2415
|
-
)
|
|
1822
|
+
if (typeof cur.min === "number" && (prev === null || BigNumber(cur.min).lt(prev)))
|
|
2416
1823
|
return BigNumber(cur.min);
|
|
2417
1824
|
return prev;
|
|
2418
1825
|
}, null);
|
|
2419
1826
|
}
|
|
2420
1827
|
let greatestMax = null;
|
|
2421
|
-
if (
|
|
2422
|
-
exchangesSupportingThePair.find((ex) =>
|
|
2423
|
-
BigNumber(ex.max).isZero()
|
|
2424
|
-
) == null
|
|
2425
|
-
) {
|
|
1828
|
+
if (exchangesSupportingThePair.find(ex => BigNumber(ex.max).isZero()) == null) {
|
|
2426
1829
|
greatestMax = exchangesSupportingThePair.reduce((prev, cur) => {
|
|
2427
|
-
if (
|
|
2428
|
-
typeof cur.max === "number" &&
|
|
2429
|
-
(prev === null || BigNumber(cur.max).gt(prev))
|
|
2430
|
-
)
|
|
1830
|
+
if (typeof cur.max === "number" && (prev === null || BigNumber(cur.max).gt(prev)))
|
|
2431
1831
|
return BigNumber(cur.max);
|
|
2432
1832
|
return prev;
|
|
2433
1833
|
}, null);
|
|
2434
1834
|
}
|
|
2435
1835
|
let extraCoinsToFitMinMax = "0";
|
|
2436
|
-
if (
|
|
2437
|
-
typeof fromCoinToUsdRate === "string" &&
|
|
2438
|
-
BigNumber(fromCoinToUsdRate).gt("0")
|
|
2439
|
-
) {
|
|
1836
|
+
if (typeof fromCoinToUsdRate === "string" && BigNumber(fromCoinToUsdRate).gt("0")) {
|
|
2440
1837
|
const extraUsdToFitMinMax = BigNumber("1"); // We correct the limits as the exact limit can fluctuate and cause failed swap creation
|
|
2441
|
-
extraCoinsToFitMinMax = AmountUtils.trim(
|
|
2442
|
-
extraUsdToFitMinMax.div(fromCoinToUsdRate),
|
|
2443
|
-
fromCoin.digits
|
|
2444
|
-
);
|
|
1838
|
+
extraCoinsToFitMinMax = AmountUtils.trim(extraUsdToFitMinMax.div(fromCoinToUsdRate), fromCoin.digits);
|
|
2445
1839
|
}
|
|
2446
1840
|
if (smallestMin instanceof BigNumber) {
|
|
2447
|
-
smallestMin = AmountUtils.trim(
|
|
2448
|
-
smallestMin.plus(extraCoinsToFitMinMax),
|
|
2449
|
-
fromCoin.digits
|
|
2450
|
-
);
|
|
1841
|
+
smallestMin = AmountUtils.trim(smallestMin.plus(extraCoinsToFitMinMax), fromCoin.digits);
|
|
2451
1842
|
}
|
|
2452
1843
|
if (greatestMax instanceof BigNumber) {
|
|
2453
1844
|
if (greatestMax > extraCoinsToFitMinMax) {
|
|
2454
|
-
greatestMax = AmountUtils.trim(
|
|
2455
|
-
greatestMax.minus(extraCoinsToFitMinMax),
|
|
2456
|
-
fromCoin.digits
|
|
2457
|
-
);
|
|
1845
|
+
greatestMax = AmountUtils.trim(greatestMax.minus(extraCoinsToFitMinMax), fromCoin.digits);
|
|
2458
1846
|
} else {
|
|
2459
1847
|
greatestMax = "0";
|
|
2460
1848
|
}
|
|
2461
1849
|
}
|
|
2462
1850
|
|
|
2463
1851
|
if (availableExchanges.length) {
|
|
2464
|
-
const sorted = availableExchanges.sort(
|
|
2465
|
-
(op1, op2) => op2.toAmount - op1.toAmount
|
|
2466
|
-
);
|
|
1852
|
+
const sorted = availableExchanges.sort((op1, op2) => op2.toAmount - op1.toAmount);
|
|
2467
1853
|
const bestOpt = sorted[0];
|
|
2468
|
-
Logger.log(
|
|
2469
|
-
`Returning first option after sorting: ${safeStringify(
|
|
2470
|
-
bestOpt
|
|
2471
|
-
)}`,
|
|
2472
|
-
loggerSource
|
|
2473
|
-
);
|
|
1854
|
+
Logger.log(`Returning first option after sorting: ${safeStringify(bestOpt)}`, loggerSource);
|
|
2474
1855
|
let max = null;
|
|
2475
1856
|
let min = null;
|
|
2476
1857
|
if (extraCoinsToFitMinMax != null) {
|
|
2477
1858
|
if (typeof bestOpt.max === "number" && bestOpt.max !== 0) {
|
|
2478
|
-
max = BigNumber(bestOpt.max).minus(
|
|
2479
|
-
|
|
2480
|
-
);
|
|
2481
|
-
max = AmountUtils.trim(
|
|
2482
|
-
max.lt(0) ? "0" : max,
|
|
2483
|
-
fromCoin.digits
|
|
2484
|
-
);
|
|
1859
|
+
max = BigNumber(bestOpt.max).minus(extraCoinsToFitMinMax);
|
|
1860
|
+
max = AmountUtils.trim(max.lt(0) ? "0" : max, fromCoin.digits);
|
|
2485
1861
|
}
|
|
2486
1862
|
if (typeof bestOpt.min === "number" && bestOpt.min !== 0) {
|
|
2487
|
-
min = AmountUtils.trim(
|
|
2488
|
-
BigNumber(bestOpt.min).plus(extraCoinsToFitMinMax),
|
|
2489
|
-
fromCoin.digits
|
|
2490
|
-
);
|
|
1863
|
+
min = AmountUtils.trim(BigNumber(bestOpt.min).plus(extraCoinsToFitMinMax), fromCoin.digits);
|
|
2491
1864
|
}
|
|
2492
1865
|
}
|
|
2493
1866
|
|
|
2494
1867
|
const rate =
|
|
2495
|
-
bestOpt.toAmount && bestOpt.fromAmount
|
|
2496
|
-
? BigNumber(bestOpt.toAmount).div(bestOpt.fromAmount)
|
|
2497
|
-
: null;
|
|
1868
|
+
bestOpt.toAmount && bestOpt.fromAmount ? BigNumber(bestOpt.toAmount).div(bestOpt.fromAmount) : null;
|
|
2498
1869
|
return {
|
|
2499
1870
|
result: true,
|
|
2500
1871
|
min: min,
|
|
2501
1872
|
max: max,
|
|
2502
1873
|
smallestMin: smallestMin,
|
|
2503
1874
|
greatestMax: greatestMax,
|
|
2504
|
-
rate:
|
|
2505
|
-
rate != null
|
|
2506
|
-
? AmountUtils.trim(rate, this._maxRateDigits)
|
|
2507
|
-
: null,
|
|
1875
|
+
rate: rate != null ? AmountUtils.trim(rate, this._maxRateDigits) : null,
|
|
2508
1876
|
durationMinutesRange: bestOpt.duration ?? null,
|
|
2509
1877
|
fixed: bestOpt.fixed,
|
|
2510
1878
|
rawSwapData: bestOpt,
|
|
2511
1879
|
};
|
|
2512
1880
|
}
|
|
2513
|
-
const result = {
|
|
2514
|
-
result: false
|
|
2515
|
-
reason
|
|
2516
|
-
smallestMin && BigNumber(amountCoins).lt(smallestMin)
|
|
2517
|
-
? SwapProvider.NO_SWAPS_REASONS.TOO_LOW
|
|
2518
|
-
: greatestMax && BigNumber(amountCoins).gt(greatestMax)
|
|
2519
|
-
? SwapProvider.NO_SWAPS_REASONS.TOO_HIGH
|
|
1881
|
+
<span class="cstat-no" title="statement not covered" ><span class="branch-0 cbranch-no" title="branch not covered" > const result = {</span></span>
|
|
1882
|
+
<span class="cstat-no" title="statement not covered" > result: false,</span>
|
|
1883
|
+
<span class="cstat-no" title="statement not covered" > reason:</span>
|
|
1884
|
+
<span class="cstat-no" title="statement not covered" > smallestMin && BigNumber(amountCoins).lt(smallestMin)</span>
|
|
1885
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > ? SwapProvider.NO_SWAPS_REASONS.TOO_LOW</span>
|
|
1886
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > : greatestMax && BigNumber(amountCoins).gt(greatestMax)</span>
|
|
1887
|
+
<span class="cstat-no" title="statement not covered" > ? SwapProvider.NO_SWAPS_REASONS.TOO_HIGH</span>
|
|
2520
1888
|
: SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED,
|
|
2521
1889
|
smallestMin: smallestMin,
|
|
2522
1890
|
greatestMax: greatestMax,
|
|
2523
1891
|
};
|
|
2524
|
-
Logger.log(
|
|
2525
|
-
`Returning result ${safeStringify(result)}`,
|
|
2526
|
-
loggerSource
|
|
2527
|
-
);
|
|
1892
|
+
Logger.log(`Returning result ${safeStringify(result)}`, loggerSource);
|
|
2528
1893
|
return result;
|
|
2529
1894
|
} catch (e) {
|
|
2530
1895
|
if (e?.response?.status === 429) {
|
|
@@ -2533,12 +1898,7 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2533
1898
|
reason: SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED,
|
|
2534
1899
|
};
|
|
2535
1900
|
}
|
|
2536
|
-
Logger.log(
|
|
2537
|
-
`Internal swapspace/rabbit error when getting swap options ${safeStringify(
|
|
2538
|
-
e
|
|
2539
|
-
)}`,
|
|
2540
|
-
loggerSource
|
|
2541
|
-
);
|
|
1901
|
+
Logger.log(`Internal swapspace/rabbit error when getting swap options ${safeStringify(e)}`, loggerSource);
|
|
2542
1902
|
improveAndRethrow(e, loggerSource);
|
|
2543
1903
|
}
|
|
2544
1904
|
}
|
|
@@ -2580,23 +1940,16 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2580
1940
|
typeof rawSwapData?.toNetwork !== "string" ||
|
|
2581
1941
|
typeof rawSwapData?.id !== "string" // can be just empty
|
|
2582
1942
|
) {
|
|
2583
|
-
throw new Error(
|
|
2584
|
-
`Invalid raw swap data: ${safeStringify(rawSwapData)}`
|
|
2585
|
-
);
|
|
1943
|
+
throw new Error(`Invalid raw swap data: ${safeStringify(rawSwapData)}`);
|
|
2586
1944
|
}
|
|
2587
1945
|
|
|
2588
|
-
const [fromCurrencyHasExtraId, toCurrencyHasExtraId] =
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
|
|
2594
|
-
|
|
2595
|
-
? coinData.hasExtraId
|
|
2596
|
-
: prev[1],
|
|
2597
|
-
],
|
|
2598
|
-
[false, false]
|
|
2599
|
-
);
|
|
1946
|
+
const [fromCurrencyHasExtraId, toCurrencyHasExtraId] = this._supportedCoins.reduce(
|
|
1947
|
+
(prev, coinData) => [
|
|
1948
|
+
coinData.coin.ticker === fromCoin.ticker ? coinData.hasExtraId : prev[0],
|
|
1949
|
+
coinData.coin.ticker === toCoin.ticker ? coinData.hasExtraId : prev[1],
|
|
1950
|
+
],
|
|
1951
|
+
[false, false]
|
|
1952
|
+
);
|
|
2600
1953
|
await this._fetchSupportedCurrenciesIfNeeded();
|
|
2601
1954
|
const requestData = {
|
|
2602
1955
|
partner: partner,
|
|
@@ -2609,27 +1962,16 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2609
1962
|
fixed: fixed,
|
|
2610
1963
|
extraId: toCurrencyHasExtraId ? toCurrencyExtraId <span class="branch-0 cbranch-no" title="branch not covered" >?? "" </span>: "",
|
|
2611
1964
|
// This param is not documented. But the refund is usually manual so this is not critical.
|
|
2612
|
-
refundExtraId: fromCurrencyHasExtraId
|
|
2613
|
-
? refundExtraId <span class="branch-0 cbranch-no" title="branch not covered" >?? ""</span>
|
|
2614
|
-
: "",
|
|
1965
|
+
refundExtraId: fromCurrencyHasExtraId ? refundExtraId <span class="branch-0 cbranch-no" title="branch not covered" >?? "" </span>: "",
|
|
2615
1966
|
rateId: rawSwapData?.id,
|
|
2616
1967
|
userIp: clientIpAddress,
|
|
2617
1968
|
refund: refundAddress,
|
|
2618
1969
|
};
|
|
2619
1970
|
|
|
2620
|
-
Logger.log(
|
|
2621
|
-
|
|
2622
|
-
loggerSource
|
|
2623
|
-
);
|
|
2624
|
-
const response = await axios.post(
|
|
2625
|
-
`${this._URL}/api/v2/exchange`,
|
|
2626
|
-
requestData
|
|
2627
|
-
);
|
|
1971
|
+
Logger.log(`Sending create request: ${safeStringify(requestData)}`, loggerSource);
|
|
1972
|
+
const response = await axios.post(`${this._URL}/api/v2/exchange`, requestData);
|
|
2628
1973
|
const result = response.data;
|
|
2629
|
-
Logger.log(
|
|
2630
|
-
`Creation result ${safeStringify(result)}`,
|
|
2631
|
-
loggerSource
|
|
2632
|
-
);
|
|
1974
|
+
Logger.log(`Creation result ${safeStringify(result)}`, loggerSource);
|
|
2633
1975
|
|
|
2634
1976
|
if (result?.id) {
|
|
2635
1977
|
if (
|
|
@@ -2644,9 +1986,7 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2644
1986
|
* rate 0/null/undefined we calculate it manually */
|
|
2645
1987
|
let rate = result.rate;
|
|
2646
1988
|
if (typeof rate !== "number" || BigNumber(rate).isZero()) {
|
|
2647
|
-
rate = BigNumber(result?.to?.amount).div(
|
|
2648
|
-
result?.from?.amount
|
|
2649
|
-
);
|
|
1989
|
+
rate = BigNumber(result?.to?.amount).div(result?.from?.amount);
|
|
2650
1990
|
} else {
|
|
2651
1991
|
rate = BigNumber(rate);
|
|
2652
1992
|
}
|
|
@@ -2655,34 +1995,22 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2655
1995
|
result: true,
|
|
2656
1996
|
swapId: result?.id,
|
|
2657
1997
|
fromCoin: fromCoin,
|
|
2658
|
-
fromAmount: AmountUtils.trim(
|
|
2659
|
-
result?.from?.amount,
|
|
2660
|
-
fromCoin.digits
|
|
2661
|
-
),
|
|
1998
|
+
fromAmount: AmountUtils.trim(result?.from?.amount, fromCoin.digits),
|
|
2662
1999
|
fromAddress: result?.from?.address,
|
|
2663
2000
|
toCoin: toCoin,
|
|
2664
|
-
toAmount: AmountUtils.trim(
|
|
2665
|
-
result?.to?.amount,
|
|
2666
|
-
toCoin.digits
|
|
2667
|
-
),
|
|
2001
|
+
toAmount: AmountUtils.trim(result?.to?.amount, toCoin.digits),
|
|
2668
2002
|
toAddress: result?.to?.address,
|
|
2669
2003
|
fromCurrencyExtraId: result?.from?.extraId ?? "",
|
|
2670
2004
|
rate: AmountUtils.trim(rate, this._maxRateDigits),
|
|
2671
2005
|
fixed: result.fixed,
|
|
2672
2006
|
};
|
|
2673
2007
|
}
|
|
2674
|
-
const errorMessage = `Swap creation succeeded but the response is wrong: ${safeStringify(
|
|
2675
|
-
response
|
|
2676
|
-
)}`;
|
|
2008
|
+
const errorMessage = `Swap creation succeeded but the response is wrong: ${safeStringify(response)}`;
|
|
2677
2009
|
Logger.log(errorMessage, loggerSource);
|
|
2678
2010
|
throw new Error(errorMessage);
|
|
2679
2011
|
} catch (e) {
|
|
2680
|
-
Logger.logError(
|
|
2681
|
-
|
|
2682
|
-
loggerSource,
|
|
2683
|
-
`Failed to create swap. Error is: ${safeStringify(e)}`
|
|
2684
|
-
);
|
|
2685
|
-
const composeFailResult = (reason) => ({
|
|
2012
|
+
Logger.logError(e, loggerSource, `Failed to create swap. Error is: ${safeStringify(e)}`);
|
|
2013
|
+
const composeFailResult = reason => ({
|
|
2686
2014
|
result: false,
|
|
2687
2015
|
reason: reason,
|
|
2688
2016
|
partner: partner,
|
|
@@ -2690,13 +2018,8 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2690
2018
|
const status = e?.response?.status;
|
|
2691
2019
|
const data = e?.response?.data;
|
|
2692
2020
|
if (status === 429) {
|
|
2693
|
-
Logger.log(
|
|
2694
|
-
|
|
2695
|
-
loggerSource
|
|
2696
|
-
);
|
|
2697
|
-
return composeFailResult(
|
|
2698
|
-
SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED
|
|
2699
|
-
);
|
|
2021
|
+
Logger.log(`Returning fail - RPS limit exceeded ${data}`, loggerSource);
|
|
2022
|
+
return composeFailResult(SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED);
|
|
2700
2023
|
}
|
|
2701
2024
|
const texts422 = [
|
|
2702
2025
|
"Pair cannot be processed by",
|
|
@@ -2708,23 +2031,12 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2708
2031
|
if (
|
|
2709
2032
|
typeof data === "string" &&
|
|
2710
2033
|
((status === 403 && data.includes(text403)) ||
|
|
2711
|
-
(status === 422 &&
|
|
2712
|
-
texts422.find((text) => data.includes(text))))
|
|
2034
|
+
(status === 422 && texts422.find(text => data.includes(text))))
|
|
2713
2035
|
) {
|
|
2714
|
-
Logger.log(
|
|
2715
|
-
|
|
2716
|
-
loggerSource
|
|
2717
|
-
);
|
|
2718
|
-
return composeFailResult(
|
|
2719
|
-
SwapProvider.CREATION_FAIL_REASONS.RETRIABLE_FAIL
|
|
2720
|
-
);
|
|
2036
|
+
Logger.log(`Returning retriable fail: ${status} - ${data}, ${partner}`, loggerSource);
|
|
2037
|
+
return composeFailResult(SwapProvider.CREATION_FAIL_REASONS.RETRIABLE_FAIL);
|
|
2721
2038
|
}
|
|
2722
|
-
Logger.log(
|
|
2723
|
-
`Internal swapspace/rabbit error for ${partner}: ${safeStringify(
|
|
2724
|
-
e
|
|
2725
|
-
)}`,
|
|
2726
|
-
loggerSource
|
|
2727
|
-
);
|
|
2039
|
+
Logger.log(`Internal swapspace/rabbit error for ${partner}: ${safeStringify(e)}`, loggerSource);
|
|
2728
2040
|
improveAndRethrow(e, loggerSource);
|
|
2729
2041
|
}
|
|
2730
2042
|
}
|
|
@@ -2760,60 +2072,38 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2760
2072
|
<span class="fstat-no" title="function not covered" > async getExistingSwapsDetailsAndStatus(swapIds) {</span>
|
|
2761
2073
|
<span class="cstat-no" title="statement not covered" > const loggerSource = "getExistingSwapsDetailsAndStatus";</span>
|
|
2762
2074
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
2763
|
-
<span class="cstat-no" title="statement not covered" > if (swapIds.find(
|
|
2764
|
-
<span class="cstat-no" title="statement not covered" > throw new Error(
|
|
2765
|
-
<span class="cstat-no" title="statement not covered" > "Swap id is not string: " + safeStringify(swapIds)</span>
|
|
2766
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2075
|
+
<span class="cstat-no" title="statement not covered" > if (swapIds.find(id => typeof id !== "string")) {</span>
|
|
2076
|
+
<span class="cstat-no" title="statement not covered" > throw new Error("Swap id is not string: " + safeStringify(swapIds));</span>
|
|
2767
2077
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2768
|
-
<span class="cstat-no" title="statement not covered" > const getNotFailingOn404 = async
|
|
2078
|
+
<span class="cstat-no" title="statement not covered" > const getNotFailingOn404 = async swapId => {</span>
|
|
2769
2079
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
2770
|
-
<span class="cstat-no" title="statement not covered" > return await axios.get(
|
|
2771
|
-
<span class="cstat-no" title="statement not covered" > `${this._URL}/api/v2/exchange/${swapId}`</span>
|
|
2772
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2080
|
+
<span class="cstat-no" title="statement not covered" > return await axios.get(`${this._URL}/api/v2/exchange/${swapId}`);</span>
|
|
2773
2081
|
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
2774
2082
|
<span class="cstat-no" title="statement not covered" > if (error?.response?.status === 404) return [];</span>
|
|
2775
2083
|
<span class="cstat-no" title="statement not covered" > throw error;</span>
|
|
2776
2084
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2777
2085
|
<span class="cstat-no" title="statement not covered" > };</span>
|
|
2778
|
-
<span class="cstat-no" title="statement not covered" > const responses = await Promise.all(
|
|
2779
|
-
<span class="cstat-no" title="statement not covered" > swapIds.map((swapId) => getNotFailingOn404(swapId))</span>
|
|
2780
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2086
|
+
<span class="cstat-no" title="statement not covered" > const responses = await Promise.all(swapIds.map(swapId => getNotFailingOn404(swapId)));</span>
|
|
2781
2087
|
<span class="cstat-no" title="statement not covered" > const wo404 = responses.flat();</span>
|
|
2782
|
-
<span class="cstat-no" title="statement not covered" > Logger.log(
|
|
2783
|
-
<span class="cstat-no" title="statement not covered" > "All swaps RAW: " + JSON.stringify(wo404.map((r) => r.data)),</span>
|
|
2784
|
-
<span class="cstat-no" title="statement not covered" > loggerSource</span>
|
|
2785
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2088
|
+
<span class="cstat-no" title="statement not covered" > Logger.log("All swaps RAW: " + JSON.stringify(wo404.map(r => r.data)), loggerSource);</span>
|
|
2786
2089
|
<span class="cstat-no" title="statement not covered" > const swaps = wo404</span>
|
|
2787
|
-
<span class="cstat-no" title="statement not covered" > .map(
|
|
2090
|
+
<span class="cstat-no" title="statement not covered" > .map(r => r.data)</span>
|
|
2788
2091
|
<span class="cstat-no" title="statement not covered" > .map((swap, index) => {</span>
|
|
2789
2092
|
<span class="cstat-no" title="statement not covered" > const fromCoin = this._supportedCoins.find(</span>
|
|
2790
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2791
|
-
<span class="cstat-no" title="statement not covered" > i.code === swap.from.code &&</span>
|
|
2792
|
-
<span class="cstat-no" title="statement not covered" > i.network === swap.from.network</span>
|
|
2093
|
+
<span class="cstat-no" title="statement not covered" > i => i.code === swap.from.code && i.network === swap.from.network</span>
|
|
2793
2094
|
<span class="cstat-no" title="statement not covered" > )?.coin;</span>
|
|
2794
2095
|
<span class="cstat-no" title="statement not covered" > const toCoin = this._supportedCoins.find(</span>
|
|
2795
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2796
|
-
<span class="cstat-no" title="statement not covered" > i.code === swap.to.code &&</span>
|
|
2797
|
-
<span class="cstat-no" title="statement not covered" > i.network === swap.to.network</span>
|
|
2096
|
+
<span class="cstat-no" title="statement not covered" > i => i.code === swap.to.code && i.network === swap.to.network</span>
|
|
2798
2097
|
<span class="cstat-no" title="statement not covered" > )?.coin;</span>
|
|
2799
2098
|
<span class="cstat-no" title="statement not covered" > if (!fromCoin || !toCoin) {</span>
|
|
2800
2099
|
<span class="cstat-no" title="statement not covered" > return []; // We skip swaps with not supported coins for now</span>
|
|
2801
2100
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2802
2101
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
2803
|
-
<span class="cstat-no" title="statement not covered" > const toUtcTimestamp = (timeStr)
|
|
2804
|
-
<span class="cstat-no" title="statement not covered" > Date.parse(</span>
|
|
2805
|
-
<span class="cstat-no" title="statement not covered" > timeStr.match(/.+[Zz]$/) ? timeStr : `${timeStr}Z`</span>
|
|
2806
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2102
|
+
<span class="cstat-no" title="statement not covered" > const toUtcTimestamp = timeStr => Date.parse(timeStr.match(/.+[Zz]$/) ? timeStr : `${timeStr}Z`);</span>
|
|
2807
2103
|
<span class="cstat-no" title="statement not covered" > const expiresAt = toUtcTimestamp(swap.timestamps.expiresAt);</span>
|
|
2808
2104
|
<span class="cstat-no" title="statement not covered" > const isExpiredByTime = expiresAt < Date.now();</span>
|
|
2809
|
-
<span class="cstat-no" title="statement not covered" > const status = this._mapSwapspaceStatusToRabbitStatus(
|
|
2810
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2811
|
-
<span class="cstat-no" title="statement not covered" > isExpiredByTime</span>
|
|
2812
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2813
|
-
<span class="cstat-no" title="statement not covered" > const toDigits =</span>
|
|
2814
|
-
<span class="cstat-no" title="statement not covered" > status === SwapProvider.SWAP_STATUSES.REFUNDED</span>
|
|
2815
|
-
<span class="cstat-no" title="statement not covered" > ? fromCoin.digits</span>
|
|
2816
|
-
<span class="cstat-no" title="statement not covered" > : toCoin.digits;</span>
|
|
2105
|
+
<span class="cstat-no" title="statement not covered" > const status = this._mapSwapspaceStatusToRabbitStatus(swap.status, isExpiredByTime);</span>
|
|
2106
|
+
<span class="cstat-no" title="statement not covered" > const toDigits = status === SwapProvider.SWAP_STATUSES.REFUNDED ? fromCoin.digits : toCoin.digits;</span>
|
|
2817
2107
|
<span class="cstat-no" title="statement not covered" > const addressToSendCoinsToSwapspace = swap.from.address;</span>
|
|
2818
2108
|
<span class="cstat-no" title="statement not covered" > return new ExistingSwap(</span>
|
|
2819
2109
|
<span class="cstat-no" title="statement not covered" > swapIds[index],</span>
|
|
@@ -2841,31 +2131,19 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2841
2131
|
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2842
2132
|
<span class="cstat-no" title="statement not covered" > })</span>
|
|
2843
2133
|
<span class="cstat-no" title="statement not covered" > .flat();</span>
|
|
2844
|
-
<span class="cstat-no" title="statement not covered" > Logger.log(
|
|
2845
|
-
<span class="cstat-no" title="statement not covered" > `Swap details result ${safeStringify(swaps)}`,</span>
|
|
2846
|
-
<span class="cstat-no" title="statement not covered" > loggerSource</span>
|
|
2847
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2134
|
+
<span class="cstat-no" title="statement not covered" > Logger.log(`Swap details result ${safeStringify(swaps)}`, loggerSource);</span>
|
|
2848
2135
|
<span class="cstat-no" title="statement not covered" > return { result: true, swaps: swaps };</span>
|
|
2849
2136
|
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
2850
|
-
<span class="cstat-no" title="statement not covered" > Logger.logError(
|
|
2851
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2852
|
-
<span class="cstat-no" title="statement not covered" > loggerSource,</span>
|
|
2853
|
-
<span class="cstat-no" title="statement not covered" > `Failed to get swap details. Error is: ${safeStringify(e)}`</span>
|
|
2854
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2855
|
-
<span class="cstat-no" title="statement not covered" > const composeFailResult = (reason) => ({</span>
|
|
2137
|
+
<span class="cstat-no" title="statement not covered" > Logger.logError(e, loggerSource, `Failed to get swap details. Error is: ${safeStringify(e)}`);</span>
|
|
2138
|
+
<span class="cstat-no" title="statement not covered" > const composeFailResult = reason => ({</span>
|
|
2856
2139
|
<span class="cstat-no" title="statement not covered" > result: false,</span>
|
|
2857
2140
|
<span class="cstat-no" title="statement not covered" > reason: reason,</span>
|
|
2858
2141
|
<span class="cstat-no" title="statement not covered" > });</span>
|
|
2859
2142
|
<span class="cstat-no" title="statement not covered" > const status = e?.response?.status;</span>
|
|
2860
2143
|
<span class="cstat-no" title="statement not covered" > const data = e?.response?.data;</span>
|
|
2861
2144
|
<span class="cstat-no" title="statement not covered" > if (status === 429) {</span>
|
|
2862
|
-
<span class="cstat-no" title="statement not covered" > Logger.log(
|
|
2863
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2864
|
-
<span class="cstat-no" title="statement not covered" > loggerSource</span>
|
|
2865
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2866
|
-
<span class="cstat-no" title="statement not covered" > return composeFailResult(</span>
|
|
2867
|
-
<span class="cstat-no" title="statement not covered" > SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED</span>
|
|
2868
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2145
|
+
<span class="cstat-no" title="statement not covered" > Logger.log(`Returning fail - RPS limit exceeded ${data}`, loggerSource);</span>
|
|
2146
|
+
<span class="cstat-no" title="statement not covered" > return composeFailResult(SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED);</span>
|
|
2869
2147
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2870
2148
|
<span class="cstat-no" title="statement not covered" > improveAndRethrow(e, loggerSource);</span>
|
|
2871
2149
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
@@ -2873,17 +2151,12 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2873
2151
|
|
|
2874
2152
|
<span class="fstat-no" title="function not covered" > isAddressValidForAsset(asset, address) {</span>
|
|
2875
2153
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
2876
|
-
<span class="cstat-no" title="statement not covered" > const assetData = this._supportedCoins.find(
|
|
2877
|
-
<span class="cstat-no" title="statement not covered" > (i) => i.coin?.ticker === asset?.ticker</span>
|
|
2878
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2154
|
+
<span class="cstat-no" title="statement not covered" > const assetData = this._supportedCoins.find(i => i.coin?.ticker === asset?.ticker);</span>
|
|
2879
2155
|
<span class="cstat-no" title="statement not covered" > if (assetData) {</span>
|
|
2880
2156
|
<span class="cstat-no" title="statement not covered" > let corrected = assetData.validationRegexp.trim();</span>
|
|
2157
|
+
<span class="cstat-no" title="statement not covered" > corrected = corrected[0] === "/" ? corrected.slice(1) : corrected;</span>
|
|
2881
2158
|
<span class="cstat-no" title="statement not covered" > corrected =</span>
|
|
2882
|
-
<span class="cstat-no" title="statement not covered" > corrected[
|
|
2883
|
-
<span class="cstat-no" title="statement not covered" > corrected =</span>
|
|
2884
|
-
<span class="cstat-no" title="statement not covered" > corrected[corrected.length - 1] === "/"</span>
|
|
2885
|
-
<span class="cstat-no" title="statement not covered" > ? corrected.slice(0, corrected.length - 1)</span>
|
|
2886
|
-
<span class="cstat-no" title="statement not covered" > : corrected;</span>
|
|
2159
|
+
<span class="cstat-no" title="statement not covered" > corrected[corrected.length - 1] === "/" ? corrected.slice(0, corrected.length - 1) : corrected;</span>
|
|
2887
2160
|
<span class="cstat-no" title="statement not covered" > return address.match(corrected) != null;</span>
|
|
2888
2161
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2889
2162
|
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
@@ -2894,14 +2167,9 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2894
2167
|
|
|
2895
2168
|
<span class="fstat-no" title="function not covered" > getExtraIdNameIfPresent(asset) {</span>
|
|
2896
2169
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
2897
|
-
<span class="cstat-no" title="statement not covered" > const assetData = this._supportedCoins.find(
|
|
2898
|
-
<span class="cstat-no" title="statement not covered" > (i) => i.coin?.ticker === asset?.ticker</span>
|
|
2899
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2170
|
+
<span class="cstat-no" title="statement not covered" > const assetData = this._supportedCoins.find(i => i.coin?.ticker === asset?.ticker);</span>
|
|
2900
2171
|
<span class="cstat-no" title="statement not covered" > if (assetData?.hasExtraId) {</span>
|
|
2901
|
-
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
2902
|
-
<span class="cstat-no" title="statement not covered" > assetData?.extraIdName == null ||</span>
|
|
2903
|
-
<span class="cstat-no" title="statement not covered" > assetData?.extraIdName === ""</span>
|
|
2904
|
-
<span class="cstat-no" title="statement not covered" > ) {</span>
|
|
2172
|
+
<span class="cstat-no" title="statement not covered" > if (assetData?.extraIdName == null || assetData?.extraIdName === "") {</span>
|
|
2905
2173
|
<span class="cstat-no" title="statement not covered" > // We return some default name if the extraIdName is empty</span>
|
|
2906
2174
|
<span class="cstat-no" title="statement not covered" > return "ID";</span>
|
|
2907
2175
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
@@ -2920,7 +2188,7 @@ export class SwapspaceSwapProvider extends SwapProvider {
|
|
|
2920
2188
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
2921
2189
|
Code coverage generated by
|
|
2922
2190
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2923
|
-
at 2024-05-
|
|
2191
|
+
at 2024-05-26T06:51:59.642Z
|
|
2924
2192
|
</div>
|
|
2925
2193
|
<script src="../../../../prettify.js"></script>
|
|
2926
2194
|
<script>
|