Mercurial > public > simoleon
changeset 171:70f0625bfcf1
Merge pull request #17 from denniscm190/development
open source project
committer: GitHub <noreply@github.com>
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Tue, 12 Oct 2021 16:17:35 +0200 |
parents | f10b0e188905 (current diff) f4e0c414cf6d (diff) |
children | 9b0486301fbf |
files | Simoleon.xcodeproj/xcshareddata/xcschemes/AppPreview.xcscheme Simoleon/Helpers/Persistence.swift Simoleon/Helpers/SnapshotHelper.swift Simoleon/UI/SearchBar.swift Simoleon/UI/Sidebar.swift |
diffstat | 154 files changed, 6089 insertions(+), 17780 deletions(-) [+] |
line wrap: on
line diff
--- a/Simoleon.xcodeproj/project.pbxproj Tue Aug 17 22:14:58 2021 +0100 +++ b/Simoleon.xcodeproj/project.pbxproj Tue Oct 12 16:17:35 2021 +0200 @@ -7,66 +7,72 @@ objects = { /* Begin PBXBuildFile section */ - 950A377726A820F800CAB175 /* DefaultCurrency+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 950A377626A820F400CAB175 /* DefaultCurrency+CoreDataProperties.swift */; }; - 950A377826A820F800CAB175 /* DefaultCurrency+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 950A377526A820F400CAB175 /* DefaultCurrency+CoreDataClass.swift */; }; - 9522BEA926B5A4D20076B098 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9522BEA826B5A4D20076B098 /* AppDelegate.swift */; }; + 950093CA26CBC7A200FEBF67 /* SimoleonAppPreview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 950093C926CBC7A200FEBF67 /* SimoleonAppPreview.swift */; }; + 9501E13826D3A52000D14DE5 /* Currencies.json in Resources */ = {isa = PBXBuildFile; fileRef = 9501E13726D3A52000D14DE5 /* Currencies.json */; }; + 9501E13A26D3A55200D14DE5 /* CurrencyPairsSupported.json in Resources */ = {isa = PBXBuildFile; fileRef = 9501E13926D3A55200D14DE5 /* CurrencyPairsSupported.json */; }; 9522BEAB26B5AACB0076B098 /* ListModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9522BEAA26B5AACB0076B098 /* ListModifier.swift */; }; - 9555933A269B0AB8000FD726 /* ParseJson.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95559339269B0AB8000FD726 /* ParseJson.swift */; }; - 95561E3F26AF25EF00CCB543 /* SubscriptionFeature.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95561E3E26AF25EF00CCB543 /* SubscriptionFeature.swift */; }; - 95562D4D26A8962A0047E778 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95562D4C26A8962A0047E778 /* StoreKit.framework */; }; - 95562D5226A8AEF60047E778 /* Purchases in Frameworks */ = {isa = PBXBuildFile; productRef = 95562D5126A8AEF60047E778 /* Purchases */; }; - 957065E226A5FE0400523E68 /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 957065E126A5FE0400523E68 /* Settings.swift */; }; - 958526C326B41D60001FC826 /* CurrencyPairModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 958526C226B41D60001FC826 /* CurrencyPairModel.swift */; }; - 9585BB1226A6B71B00E3193E /* ReadConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9585BB1126A6B71B00E3193E /* ReadConfig.swift */; }; - 9585BB1426A6B7F400E3193E /* NetworkRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9585BB1326A6B7F400E3193E /* NetworkRequest.swift */; }; - 9585BB1A26A6E8FD00E3193E /* SimpleSuccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9585BB1926A6E8FD00E3193E /* SimpleSuccess.swift */; }; - 9587598D26B2A68B004086F0 /* CurrencyMetadata.json in Resources */ = {isa = PBXBuildFile; fileRef = 9587598F26B2A68B004086F0 /* CurrencyMetadata.json */; }; + 9522CD9D26CED2E100DD9D03 /* ErrorHandling.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9522CD9C26CED2E100DD9D03 /* ErrorHandling.swift */; }; + 9531D44226D8E4CF00665D2A /* SimoleonTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9531D44126D8E4CF00665D2A /* SimoleonTests.swift */; }; + 953B8B1726D3A970003CF530 /* CurrencyModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 953B8B1626D3A970003CF530 /* CurrencyModel.swift */; }; + 9547423526DBE56600415B3F /* ConversionTextfield.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9547423426DBE56600415B3F /* ConversionTextfield.swift */; }; + 954D95CE26E4F16D005BE568 /* FavoritePairRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954D95CD26E4F16D005BE568 /* FavoritePairRow.swift */; }; + 954D95D026E4FE28005BE568 /* FavoritesPlaceholder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954D95CF26E4FE28005BE568 /* FavoritesPlaceholder.swift */; }; + 957065E226A5FE0400523E68 /* AboutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 957065E126A5FE0400523E68 /* AboutView.swift */; }; + 957DCF3326D7ADEA00BCAB1E /* CurrencyConversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 957DCF3226D7ADEA00BCAB1E /* CurrencyConversion.swift */; }; + 95851CE326D4DAAE004ADA79 /* CurrencyButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95851CE226D4DAAE004ADA79 /* CurrencyButton.swift */; }; + 95851CE526D4DB4C004ADA79 /* Flag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95851CE426D4DB4C004ADA79 /* Flag.swift */; }; + 9585BB1426A6B7F400E3193E /* NetworkHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9585BB1326A6B7F400E3193E /* NetworkHelper.swift */; }; + 9585BB1A26A6E8FD00E3193E /* HapticsHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9585BB1926A6E8FD00E3193E /* HapticsHelper.swift */; }; 95909CB326B07BFC00D051AB /* SearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95909CB226B07BFC00D051AB /* SearchBar.swift */; }; 959F6DEB26BBD53500101E53 /* SimoleonScreenshots.swift in Sources */ = {isa = PBXBuildFile; fileRef = 959F6DEA26BBD53500101E53 /* SimoleonScreenshots.swift */; }; - 959F6DF326BBD54400101E53 /* SnapshotHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 956088B526B9307600A4FD6C /* SnapshotHelper.swift */; }; + 95AA42ED26D78A4A0085570D /* FileHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95AA42EC26D78A4A0085570D /* FileHelper.swift */; }; + 95AC820726DAA3ED00CD5C3F /* FavoritePair+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95AC820526DAA3ED00CD5C3F /* FavoritePair+CoreDataClass.swift */; }; + 95AC820826DAA3ED00CD5C3F /* FavoritePair+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95AC820626DAA3ED00CD5C3F /* FavoritePair+CoreDataProperties.swift */; }; + 95AC820A26DAAC6B00CD5C3F /* ButtonAnimation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95AC820926DAAC6B00CD5C3F /* ButtonAnimation.swift */; }; 95AEBC9526A03ECB00613729 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95AEBC9426A03ECB00613729 /* ContentView.swift */; }; - 95AEBC9B26A04A4200613729 /* CurrencyMetadataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95AEBC9A26A04A4200613729 /* CurrencyMetadataModel.swift */; }; 95AEBC9D26A04D4600613729 /* CurrencyRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95AEBC9C26A04D4600613729 /* CurrencyRow.swift */; }; 95AEBCA326A0900E00613729 /* CurrencyQuoteModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95AEBCA226A0900E00613729 /* CurrencyQuoteModel.swift */; }; - 95B54F4426A4842C001DC0D8 /* Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95B54F4326A4842C001DC0D8 /* Conversion.swift */; }; - 95B54F4626A48852001DC0D8 /* CurrencySelector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95B54F4526A48852001DC0D8 /* CurrencySelector.swift */; }; + 95B54F4426A4842C001DC0D8 /* ConversionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95B54F4326A4842C001DC0D8 /* ConversionView.swift */; }; 95B54F4A26A4A450001DC0D8 /* ConversionBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95B54F4926A4A450001DC0D8 /* ConversionBox.swift */; }; 95B54F5126A4ACAC001DC0D8 /* Sidebar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95B54F5026A4ACAC001DC0D8 /* Sidebar.swift */; }; 95B5F53126AADE4B00BDCE89 /* en.xliff in Resources */ = {isa = PBXBuildFile; fileRef = 95B5F52826AADE4B00BDCE89 /* en.xliff */; }; 95B5F53226AADE4B00BDCE89 /* contents.json in Resources */ = {isa = PBXBuildFile; fileRef = 95B5F52A26AADE4B00BDCE89 /* contents.json */; }; 95B5F53326AADE4B00BDCE89 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 95B5F52D26AADE4B00BDCE89 /* Localizable.strings */; }; 95B5F53426AADE4B00BDCE89 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 95B5F52F26AADE4B00BDCE89 /* InfoPlist.strings */; }; + 95C1DD6A26D8DF9400315C3F /* CurrencySelector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C1DD6926D8DF9400315C3F /* CurrencySelector.swift */; }; 95C5179126A5DC8E00BC2B24 /* ConditionalWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C5179026A5DC8E00BC2B24 /* ConditionalWrapper.swift */; }; 95C5179926A5EC9F00BC2B24 /* FavoriteButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C5179826A5EC9F00BC2B24 /* FavoriteButton.swift */; }; - 95C5179C26A5EFBE00BC2B24 /* Favorite+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C5179A26A5EFBE00BC2B24 /* Favorite+CoreDataClass.swift */; }; - 95C5179D26A5EFBE00BC2B24 /* Favorite+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C5179B26A5EFBE00BC2B24 /* Favorite+CoreDataProperties.swift */; }; - 95C5179F26A5F34200BC2B24 /* Favorites.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C5179E26A5F34200BC2B24 /* Favorites.swift */; }; + 95C5179F26A5F34200BC2B24 /* FavoritesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C5179E26A5F34200BC2B24 /* FavoritesView.swift */; }; 95C517A126A5F6C000BC2B24 /* ResignKeyboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C517A026A5F6C000BC2B24 /* ResignKeyboard.swift */; }; 95C5B2282697752600941585 /* SimoleonApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C5B2272697752600941585 /* SimoleonApp.swift */; }; 95C5B22C2697752700941585 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 95C5B22B2697752700941585 /* Assets.xcassets */; }; 95C5B22F2697752700941585 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 95C5B22E2697752700941585 /* Preview Assets.xcassets */; }; 95C5B2312697752700941585 /* Persistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C5B2302697752700941585 /* Persistence.swift */; }; 95C5B2342697752700941585 /* Simoleon.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 95C5B2322697752700941585 /* Simoleon.xcdatamodeld */; }; - 95C5B23F2697752700941585 /* SimoleonTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C5B23E2697752700941585 /* SimoleonTests.swift */; }; 95C5B24A2697752700941585 /* SimoleonUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C5B2492697752700941585 /* SimoleonUITests.swift */; }; - 95D8C8C726A95D2900BCC188 /* SubscriptionPaywall.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95D8C8C626A95D2900BCC188 /* SubscriptionPaywall.swift */; }; - 95D8C8CD26A9784500BCC188 /* SubscribeButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95D8C8CC26A9784500BCC188 /* SubscribeButton.swift */; }; - 95D8C8CF26A98A7900BCC188 /* RestoreButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95D8C8CE26A98A7900BCC188 /* RestoreButton.swift */; }; - 95D8C8D126A9BC6200BCC188 /* LockedCurrencyPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95D8C8D026A9BC6200BCC188 /* LockedCurrencyPicker.swift */; }; - 95DD4ABB269B33810027CA1F /* CurrencyPairs.json in Resources */ = {isa = PBXBuildFile; fileRef = 95DD4ABA269B33810027CA1F /* CurrencyPairs.json */; }; + 95CE6A3626D50B7700D9DCBD /* CurrencyList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95CE6A3526D50B7700D9DCBD /* CurrencyList.swift */; }; + 95DA4B5626D7D10100566C5E /* SnapshotHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 956088B526B9307600A4FD6C /* SnapshotHelper.swift */; }; + 95DA4B5926D7E2DE00566C5E /* ChildListResets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95DA4B5826D7E2DE00566C5E /* ChildListResets.swift */; }; 95E76436269DFC1A008E9F31 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 95E76435269DFC1A008E9F31 /* LaunchScreen.storyboard */; }; 95E7643A269E0037008E9F31 /* CloudKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95E76439269E0037008E9F31 /* CloudKit.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 959F6DED26BBD53500101E53 /* PBXContainerItemProxy */ = { + 950093CC26CBC7A200FEBF67 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 95C5B21C2697752600941585 /* Project object */; proxyType = 1; remoteGlobalIDString = 95C5B2232697752600941585; remoteInfo = Simoleon; }; - 95C5B23B2697752700941585 /* PBXContainerItemProxy */ = { + 9531D44426D8E4CF00665D2A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 95C5B21C2697752600941585 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 95C5B2232697752600941585; + remoteInfo = Simoleon; + }; + 959F6DED26BBD53500101E53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 95C5B21C2697752600941585 /* Project object */; proxyType = 1; @@ -96,20 +102,29 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 950A377526A820F400CAB175 /* DefaultCurrency+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DefaultCurrency+CoreDataClass.swift"; sourceTree = "<group>"; }; - 950A377626A820F400CAB175 /* DefaultCurrency+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DefaultCurrency+CoreDataProperties.swift"; sourceTree = "<group>"; }; - 9522BEA826B5A4D20076B098 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; + 950093C726CBC7A200FEBF67 /* SimoleonAppPreview.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SimoleonAppPreview.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 950093C926CBC7A200FEBF67 /* SimoleonAppPreview.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimoleonAppPreview.swift; sourceTree = "<group>"; }; + 950093CB26CBC7A200FEBF67 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; + 9501E13726D3A52000D14DE5 /* Currencies.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = Currencies.json; sourceTree = "<group>"; }; + 9501E13926D3A55200D14DE5 /* CurrencyPairsSupported.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = CurrencyPairsSupported.json; sourceTree = "<group>"; }; 9522BEAA26B5AACB0076B098 /* ListModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListModifier.swift; sourceTree = "<group>"; }; - 95559339269B0AB8000FD726 /* ParseJson.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseJson.swift; sourceTree = "<group>"; }; - 95561E3E26AF25EF00CCB543 /* SubscriptionFeature.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubscriptionFeature.swift; sourceTree = "<group>"; }; + 9522CD9C26CED2E100DD9D03 /* ErrorHandling.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorHandling.swift; sourceTree = "<group>"; }; + 9531D43F26D8E4CF00665D2A /* SimoleonTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SimoleonTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9531D44126D8E4CF00665D2A /* SimoleonTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimoleonTests.swift; sourceTree = "<group>"; }; + 9531D44326D8E4CF00665D2A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; + 953B8B1626D3A970003CF530 /* CurrencyModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencyModel.swift; sourceTree = "<group>"; }; + 9547423426DBE56600415B3F /* ConversionTextfield.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversionTextfield.swift; sourceTree = "<group>"; }; + 954D95CD26E4F16D005BE568 /* FavoritePairRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoritePairRow.swift; sourceTree = "<group>"; }; + 954D95CF26E4FE28005BE568 /* FavoritesPlaceholder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoritesPlaceholder.swift; sourceTree = "<group>"; }; 95562D4C26A8962A0047E778 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; }; - 956088B526B9307600A4FD6C /* SnapshotHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SnapshotHelper.swift; path = fastlane/SnapshotHelper.swift; sourceTree = "<group>"; }; - 957065E126A5FE0400523E68 /* Settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Settings.swift; sourceTree = "<group>"; }; - 958526C226B41D60001FC826 /* CurrencyPairModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencyPairModel.swift; sourceTree = "<group>"; }; + 956088B526B9307600A4FD6C /* SnapshotHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SnapshotHelper.swift; sourceTree = "<group>"; }; + 957065E126A5FE0400523E68 /* AboutView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutView.swift; sourceTree = "<group>"; }; + 957DCF3226D7ADEA00BCAB1E /* CurrencyConversion.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencyConversion.swift; sourceTree = "<group>"; }; + 95851CE226D4DAAE004ADA79 /* CurrencyButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencyButton.swift; sourceTree = "<group>"; }; + 95851CE426D4DB4C004ADA79 /* Flag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Flag.swift; sourceTree = "<group>"; }; 9585BB0F26A6B58500E3193E /* Config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = "<group>"; }; - 9585BB1126A6B71B00E3193E /* ReadConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReadConfig.swift; sourceTree = "<group>"; }; - 9585BB1326A6B7F400E3193E /* NetworkRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkRequest.swift; sourceTree = "<group>"; }; - 9585BB1926A6E8FD00E3193E /* SimpleSuccess.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimpleSuccess.swift; sourceTree = "<group>"; }; + 9585BB1326A6B7F400E3193E /* NetworkHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkHelper.swift; sourceTree = "<group>"; }; + 9585BB1926A6E8FD00E3193E /* HapticsHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HapticsHelper.swift; sourceTree = "<group>"; }; 9587597726B2A59D004086F0 /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "en-GB.lproj/Localizable.strings"; sourceTree = "<group>"; }; 9587597826B2A59D004086F0 /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "en-GB.lproj/InfoPlist.strings"; sourceTree = "<group>"; }; 9587597926B2A5B6004086F0 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; }; @@ -124,27 +139,19 @@ 9587598226B2A5EB004086F0 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = "<group>"; }; 9587598726B2A60C004086F0 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = "<group>"; }; 9587598826B2A60C004086F0 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = "<group>"; }; - 9587598E26B2A68B004086F0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = Base; path = Base.lproj/CurrencyMetadata.json; sourceTree = "<group>"; }; - 9587599026B2A69A004086F0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = en; path = en.lproj/CurrencyMetadata.json; sourceTree = "<group>"; }; - 9587599326B2A6A2004086F0 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = nl; path = nl.lproj/CurrencyMetadata.json; sourceTree = "<group>"; }; - 9587599426B2A6A3004086F0 /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = "en-GB"; path = "en-GB.lproj/CurrencyMetadata.json"; sourceTree = "<group>"; }; - 9587599526B2A6A4004086F0 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = fr; path = fr.lproj/CurrencyMetadata.json; sourceTree = "<group>"; }; - 9587599626B2A6A5004086F0 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = de; path = de.lproj/CurrencyMetadata.json; sourceTree = "<group>"; }; - 9587599726B2A6A5004086F0 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = it; path = it.lproj/CurrencyMetadata.json; sourceTree = "<group>"; }; - 9587599A26B2A6A8004086F0 /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = "pt-PT"; path = "pt-PT.lproj/CurrencyMetadata.json"; sourceTree = "<group>"; }; - 9587599B26B2A6A8004086F0 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = ru; path = ru.lproj/CurrencyMetadata.json; sourceTree = "<group>"; }; - 9587599C26B2A6AA004086F0 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = es; path = es.lproj/CurrencyMetadata.json; sourceTree = "<group>"; }; 95909CB226B07BFC00D051AB /* SearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchBar.swift; sourceTree = "<group>"; }; 959F6DE826BBD53500101E53 /* SimoleonScreenshots.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SimoleonScreenshots.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 959F6DEA26BBD53500101E53 /* SimoleonScreenshots.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimoleonScreenshots.swift; sourceTree = "<group>"; }; 959F6DEC26BBD53500101E53 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 95A70BE926B0550000CC0273 /* CloudKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CloudKit.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS7.4.sdk/System/Library/Frameworks/CloudKit.framework; sourceTree = DEVELOPER_DIR; }; + 95AA42EC26D78A4A0085570D /* FileHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileHelper.swift; sourceTree = "<group>"; }; + 95AC820526DAA3ED00CD5C3F /* FavoritePair+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FavoritePair+CoreDataClass.swift"; sourceTree = "<group>"; }; + 95AC820626DAA3ED00CD5C3F /* FavoritePair+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FavoritePair+CoreDataProperties.swift"; sourceTree = "<group>"; }; + 95AC820926DAAC6B00CD5C3F /* ButtonAnimation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonAnimation.swift; sourceTree = "<group>"; }; 95AEBC9426A03ECB00613729 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; }; - 95AEBC9A26A04A4200613729 /* CurrencyMetadataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencyMetadataModel.swift; sourceTree = "<group>"; }; 95AEBC9C26A04D4600613729 /* CurrencyRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencyRow.swift; sourceTree = "<group>"; }; 95AEBCA226A0900E00613729 /* CurrencyQuoteModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencyQuoteModel.swift; sourceTree = "<group>"; }; - 95B54F4326A4842C001DC0D8 /* Conversion.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Conversion.swift; sourceTree = "<group>"; }; - 95B54F4526A48852001DC0D8 /* CurrencySelector.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencySelector.swift; sourceTree = "<group>"; }; + 95B54F4326A4842C001DC0D8 /* ConversionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversionView.swift; sourceTree = "<group>"; }; 95B54F4926A4A450001DC0D8 /* ConversionBox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversionBox.swift; sourceTree = "<group>"; }; 95B54F5026A4ACAC001DC0D8 /* Sidebar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Sidebar.swift; sourceTree = "<group>"; }; 95B5F52826AADE4B00BDCE89 /* en.xliff */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = en.xliff; sourceTree = "<group>"; }; @@ -153,11 +160,10 @@ 95B5F53026AADE4B00BDCE89 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; }; 95B5F53526AADE5200BDCE89 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = "<group>"; }; 95B5F53626AADE5500BDCE89 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = "<group>"; }; + 95C1DD6926D8DF9400315C3F /* CurrencySelector.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencySelector.swift; sourceTree = "<group>"; }; 95C5179026A5DC8E00BC2B24 /* ConditionalWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConditionalWrapper.swift; sourceTree = "<group>"; }; 95C5179826A5EC9F00BC2B24 /* FavoriteButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoriteButton.swift; sourceTree = "<group>"; }; - 95C5179A26A5EFBE00BC2B24 /* Favorite+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Favorite+CoreDataClass.swift"; sourceTree = "<group>"; }; - 95C5179B26A5EFBE00BC2B24 /* Favorite+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Favorite+CoreDataProperties.swift"; sourceTree = "<group>"; }; - 95C5179E26A5F34200BC2B24 /* Favorites.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Favorites.swift; sourceTree = "<group>"; }; + 95C5179E26A5F34200BC2B24 /* FavoritesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoritesView.swift; sourceTree = "<group>"; }; 95C517A026A5F6C000BC2B24 /* ResignKeyboard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResignKeyboard.swift; sourceTree = "<group>"; }; 95C5B2242697752600941585 /* Simoleon.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Simoleon.app; sourceTree = BUILT_PRODUCTS_DIR; }; 95C5B2272697752600941585 /* SimoleonApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimoleonApp.swift; sourceTree = "<group>"; }; @@ -166,23 +172,31 @@ 95C5B2302697752700941585 /* Persistence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Persistence.swift; sourceTree = "<group>"; }; 95C5B2332697752700941585 /* Simoleon.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Simoleon.xcdatamodel; sourceTree = "<group>"; }; 95C5B2352697752700941585 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; - 95C5B23A2697752700941585 /* SimoleonTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SimoleonTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 95C5B23E2697752700941585 /* SimoleonTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimoleonTests.swift; sourceTree = "<group>"; }; - 95C5B2402697752700941585 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 95C5B2452697752700941585 /* SimoleonUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SimoleonUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 95C5B2492697752700941585 /* SimoleonUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimoleonUITests.swift; sourceTree = "<group>"; }; 95C5B24B2697752700941585 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; - 95D8C8C626A95D2900BCC188 /* SubscriptionPaywall.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubscriptionPaywall.swift; sourceTree = "<group>"; }; - 95D8C8CC26A9784500BCC188 /* SubscribeButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubscribeButton.swift; sourceTree = "<group>"; }; - 95D8C8CE26A98A7900BCC188 /* RestoreButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestoreButton.swift; sourceTree = "<group>"; }; - 95D8C8D026A9BC6200BCC188 /* LockedCurrencyPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LockedCurrencyPicker.swift; sourceTree = "<group>"; }; - 95DD4ABA269B33810027CA1F /* CurrencyPairs.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = CurrencyPairs.json; sourceTree = "<group>"; }; + 95CE6A3526D50B7700D9DCBD /* CurrencyList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencyList.swift; sourceTree = "<group>"; }; + 95DA4B5826D7E2DE00566C5E /* ChildListResets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChildListResets.swift; sourceTree = "<group>"; }; 95E76435269DFC1A008E9F31 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; }; 95E76437269E0033008E9F31 /* Simoleon.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Simoleon.entitlements; sourceTree = "<group>"; }; 95E76439269E0037008E9F31 /* CloudKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CloudKit.framework; path = System/Library/Frameworks/CloudKit.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 950093C426CBC7A200FEBF67 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9531D43C26D8E4CF00665D2A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 959F6DE526BBD53500101E53 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -195,15 +209,6 @@ buildActionMask = 2147483647; files = ( 95E7643A269E0037008E9F31 /* CloudKit.framework in Frameworks */, - 95562D4D26A8962A0047E778 /* StoreKit.framework in Frameworks */, - 95562D5226A8AEF60047E778 /* Purchases in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 95C5B2372697752700941585 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( ); runOnlyForDeploymentPostprocessing = 0; }; @@ -217,36 +222,41 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 950093C826CBC7A200FEBF67 /* SimoleonAppPreview */ = { + isa = PBXGroup; + children = ( + 950093C926CBC7A200FEBF67 /* SimoleonAppPreview.swift */, + 950093CB26CBC7A200FEBF67 /* Info.plist */, + ); + path = SimoleonAppPreview; + sourceTree = "<group>"; + }; + 9531D44026D8E4CF00665D2A /* SimoleonTests */ = { + isa = PBXGroup; + children = ( + 9531D44126D8E4CF00665D2A /* SimoleonTests.swift */, + 9531D44326D8E4CF00665D2A /* Info.plist */, + ); + path = SimoleonTests; + sourceTree = "<group>"; + }; 95559331269B094A000FD726 /* Models */ = { isa = PBXGroup; children = ( - 950A377526A820F400CAB175 /* DefaultCurrency+CoreDataClass.swift */, - 950A377626A820F400CAB175 /* DefaultCurrency+CoreDataProperties.swift */, - 95C5179A26A5EFBE00BC2B24 /* Favorite+CoreDataClass.swift */, - 95C5179B26A5EFBE00BC2B24 /* Favorite+CoreDataProperties.swift */, - 95AEBC9A26A04A4200613729 /* CurrencyMetadataModel.swift */, + 95AC820526DAA3ED00CD5C3F /* FavoritePair+CoreDataClass.swift */, + 95AC820626DAA3ED00CD5C3F /* FavoritePair+CoreDataProperties.swift */, 95AEBCA226A0900E00613729 /* CurrencyQuoteModel.swift */, - 958526C226B41D60001FC826 /* CurrencyPairModel.swift */, + 953B8B1626D3A970003CF530 /* CurrencyModel.swift */, + 957DCF3226D7ADEA00BCAB1E /* CurrencyConversion.swift */, ); path = Models; sourceTree = "<group>"; }; - 95559338269B0AAA000FD726 /* Functions */ = { - isa = PBXGroup; - children = ( - 95559339269B0AB8000FD726 /* ParseJson.swift */, - 9585BB1126A6B71B00E3193E /* ReadConfig.swift */, - 9585BB1326A6B7F400E3193E /* NetworkRequest.swift */, - 9585BB1926A6E8FD00E3193E /* SimpleSuccess.swift */, - ); - path = Functions; - sourceTree = "<group>"; - }; 9555933B269B0DF9000FD726 /* Resources */ = { isa = PBXGroup; children = ( - 9587598F26B2A68B004086F0 /* CurrencyMetadata.json */, - 95DD4ABA269B33810027CA1F /* CurrencyPairs.json */, + 9501E13726D3A52000D14DE5 /* Currencies.json */, + 9501E13926D3A55200D14DE5 /* CurrencyPairsSupported.json */, ); path = Resources; sourceTree = "<group>"; @@ -306,11 +316,11 @@ 95C5B21B2697752600941585 = { isa = PBXGroup; children = ( - 956088B526B9307600A4FD6C /* SnapshotHelper.swift */, 95C5B2262697752600941585 /* Simoleon */, - 95C5B23D2697752700941585 /* SimoleonTests */, + 9531D44026D8E4CF00665D2A /* SimoleonTests */, 95C5B2482697752700941585 /* SimoleonUITests */, 959F6DE926BBD53500101E53 /* SimoleonScreenshots */, + 950093C826CBC7A200FEBF67 /* SimoleonAppPreview */, 95C5B2252697752600941585 /* Products */, 95E76438269E0037008E9F31 /* Frameworks */, ); @@ -320,9 +330,10 @@ isa = PBXGroup; children = ( 95C5B2242697752600941585 /* Simoleon.app */, - 95C5B23A2697752700941585 /* SimoleonTests.xctest */, 95C5B2452697752700941585 /* SimoleonUITests.xctest */, 959F6DE826BBD53500101E53 /* SimoleonScreenshots.xctest */, + 950093C726CBC7A200FEBF67 /* SimoleonAppPreview.xctest */, + 9531D43F26D8E4CF00665D2A /* SimoleonTests.xctest */, ); name = Products; sourceTree = "<group>"; @@ -332,24 +343,22 @@ children = ( 95E76437269E0033008E9F31 /* Simoleon.entitlements */, 9585BB0F26A6B58500E3193E /* Config.xcconfig */, - 9522BEA826B5A4D20076B098 /* AppDelegate.swift */, - 95C5B2272697752600941585 /* SimoleonApp.swift */, - 95AEBC9426A03ECB00613729 /* ContentView.swift */, - 95B54F4326A4842C001DC0D8 /* Conversion.swift */, - 95C5179E26A5F34200BC2B24 /* Favorites.swift */, - 957065E126A5FE0400523E68 /* Settings.swift */, - 95D8C8C626A95D2900BCC188 /* SubscriptionPaywall.swift */, 95C5B22B2697752700941585 /* Assets.xcassets */, - 95C5B2302697752700941585 /* Persistence.swift */, 95C5B2352697752700941585 /* Info.plist */, 95C5B2322697752700941585 /* Simoleon.xcdatamodeld */, 95E76435269DFC1A008E9F31 /* LaunchScreen.storyboard */, + 95C5B2272697752600941585 /* SimoleonApp.swift */, + 95AEBC9426A03ECB00613729 /* ContentView.swift */, + 95B54F4326A4842C001DC0D8 /* ConversionView.swift */, + 95C5179E26A5F34200BC2B24 /* FavoritesView.swift */, + 957065E126A5FE0400523E68 /* AboutView.swift */, + 95DA4B5226D7D09A00566C5E /* UI */, 95FE659A269AFB44008745DE /* Helpers */, 95559331269B094A000FD726 /* Models */, - 95559338269B0AAA000FD726 /* Functions */, 9555933B269B0DF9000FD726 /* Resources */, 95B5F52526AADE4B00BDCE89 /* Localization */, 95C5B22D2697752700941585 /* Preview Content */, + 95DA4B5726D7E2B400566C5E /* Tests */, ); path = Simoleon; sourceTree = "<group>"; @@ -362,15 +371,6 @@ path = "Preview Content"; sourceTree = "<group>"; }; - 95C5B23D2697752700941585 /* SimoleonTests */ = { - isa = PBXGroup; - children = ( - 95C5B23E2697752700941585 /* SimoleonTests.swift */, - 95C5B2402697752700941585 /* Info.plist */, - ); - path = SimoleonTests; - sourceTree = "<group>"; - }; 95C5B2482697752700941585 /* SimoleonUITests */ = { isa = PBXGroup; children = ( @@ -380,6 +380,34 @@ path = SimoleonUITests; sourceTree = "<group>"; }; + 95DA4B5226D7D09A00566C5E /* UI */ = { + isa = PBXGroup; + children = ( + 95C1DD6926D8DF9400315C3F /* CurrencySelector.swift */, + 95851CE226D4DAAE004ADA79 /* CurrencyButton.swift */, + 95CE6A3526D50B7700D9DCBD /* CurrencyList.swift */, + 95C5179826A5EC9F00BC2B24 /* FavoriteButton.swift */, + 95B54F4926A4A450001DC0D8 /* ConversionBox.swift */, + 9547423426DBE56600415B3F /* ConversionTextfield.swift */, + 95AEBC9C26A04D4600613729 /* CurrencyRow.swift */, + 95851CE426D4DB4C004ADA79 /* Flag.swift */, + 95B54F5026A4ACAC001DC0D8 /* Sidebar.swift */, + 95909CB226B07BFC00D051AB /* SearchBar.swift */, + 954D95CD26E4F16D005BE568 /* FavoritePairRow.swift */, + 954D95CF26E4FE28005BE568 /* FavoritesPlaceholder.swift */, + ); + path = UI; + sourceTree = "<group>"; + }; + 95DA4B5726D7E2B400566C5E /* Tests */ = { + isa = PBXGroup; + children = ( + 95DA4B5826D7E2DE00566C5E /* ChildListResets.swift */, + 95AC820926DAAC6B00CD5C3F /* ButtonAnimation.swift */, + ); + path = Tests; + sourceTree = "<group>"; + }; 95E76438269E0037008E9F31 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -393,19 +421,15 @@ 95FE659A269AFB44008745DE /* Helpers */ = { isa = PBXGroup; children = ( - 95B54F4526A48852001DC0D8 /* CurrencySelector.swift */, - 95AEBC9C26A04D4600613729 /* CurrencyRow.swift */, - 95B54F4926A4A450001DC0D8 /* ConversionBox.swift */, - 95B54F5026A4ACAC001DC0D8 /* Sidebar.swift */, + 95C5B2302697752700941585 /* Persistence.swift */, + 9522CD9C26CED2E100DD9D03 /* ErrorHandling.swift */, + 9585BB1326A6B7F400E3193E /* NetworkHelper.swift */, + 9585BB1926A6E8FD00E3193E /* HapticsHelper.swift */, + 95AA42EC26D78A4A0085570D /* FileHelper.swift */, + 956088B526B9307600A4FD6C /* SnapshotHelper.swift */, 95C5179026A5DC8E00BC2B24 /* ConditionalWrapper.swift */, - 95C5179826A5EC9F00BC2B24 /* FavoriteButton.swift */, + 9522BEAA26B5AACB0076B098 /* ListModifier.swift */, 95C517A026A5F6C000BC2B24 /* ResignKeyboard.swift */, - 95D8C8CC26A9784500BCC188 /* SubscribeButton.swift */, - 95D8C8CE26A98A7900BCC188 /* RestoreButton.swift */, - 95D8C8D026A9BC6200BCC188 /* LockedCurrencyPicker.swift */, - 95561E3E26AF25EF00CCB543 /* SubscriptionFeature.swift */, - 95909CB226B07BFC00D051AB /* SearchBar.swift */, - 9522BEAA26B5AACB0076B098 /* ListModifier.swift */, ); path = Helpers; sourceTree = "<group>"; @@ -413,6 +437,42 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 950093C626CBC7A200FEBF67 /* SimoleonAppPreview */ = { + isa = PBXNativeTarget; + buildConfigurationList = 950093D126CBC7A200FEBF67 /* Build configuration list for PBXNativeTarget "SimoleonAppPreview" */; + buildPhases = ( + 950093C326CBC7A200FEBF67 /* Sources */, + 950093C426CBC7A200FEBF67 /* Frameworks */, + 950093C526CBC7A200FEBF67 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 950093CD26CBC7A200FEBF67 /* PBXTargetDependency */, + ); + name = SimoleonAppPreview; + productName = SimoleonAppPreview; + productReference = 950093C726CBC7A200FEBF67 /* SimoleonAppPreview.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; + 9531D43E26D8E4CF00665D2A /* SimoleonTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9531D44626D8E4CF00665D2A /* Build configuration list for PBXNativeTarget "SimoleonTests" */; + buildPhases = ( + 9531D43B26D8E4CF00665D2A /* Sources */, + 9531D43C26D8E4CF00665D2A /* Frameworks */, + 9531D43D26D8E4CF00665D2A /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9531D44526D8E4CF00665D2A /* PBXTargetDependency */, + ); + name = SimoleonTests; + productName = SimoleonTests; + productReference = 9531D43F26D8E4CF00665D2A /* SimoleonTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; 959F6DE726BBD53500101E53 /* SimoleonScreenshots */ = { isa = PBXNativeTarget; buildConfigurationList = 959F6DF126BBD53500101E53 /* Build configuration list for PBXNativeTarget "SimoleonScreenshots" */; @@ -446,32 +506,11 @@ ); name = Simoleon; packageProductDependencies = ( - 95562D5126A8AEF60047E778 /* Purchases */, ); productName = Simoleon; productReference = 95C5B2242697752600941585 /* Simoleon.app */; productType = "com.apple.product-type.application"; }; - 95C5B2392697752700941585 /* SimoleonTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 95C5B2512697752700941585 /* Build configuration list for PBXNativeTarget "SimoleonTests" */; - buildPhases = ( - 95C5B2362697752700941585 /* Sources */, - 95C5B2372697752700941585 /* Frameworks */, - 95C5B2382697752700941585 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 95C5B23C2697752700941585 /* PBXTargetDependency */, - ); - name = SimoleonTests; - packageProductDependencies = ( - ); - productName = SimoleonTests; - productReference = 95C5B23A2697752700941585 /* SimoleonTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; 95C5B2442697752700941585 /* SimoleonUITests */ = { isa = PBXNativeTarget; buildConfigurationList = 95C5B2542697752700941585 /* Build configuration list for PBXNativeTarget "SimoleonUITests" */; @@ -499,6 +538,14 @@ LastSwiftUpdateCheck = 1250; LastUpgradeCheck = 1250; TargetAttributes = { + 950093C626CBC7A200FEBF67 = { + CreatedOnToolsVersion = 12.5.1; + TestTargetID = 95C5B2232697752600941585; + }; + 9531D43E26D8E4CF00665D2A = { + CreatedOnToolsVersion = 12.5.1; + TestTargetID = 95C5B2232697752600941585; + }; 959F6DE726BBD53500101E53 = { CreatedOnToolsVersion = 12.5.1; TestTargetID = 95C5B2232697752600941585; @@ -506,10 +553,6 @@ 95C5B2232697752600941585 = { CreatedOnToolsVersion = 12.5.1; }; - 95C5B2392697752700941585 = { - CreatedOnToolsVersion = 12.5.1; - TestTargetID = 95C5B2232697752600941585; - }; 95C5B2442697752700941585 = { CreatedOnToolsVersion = 12.5.1; TestTargetID = 95C5B2232697752600941585; @@ -541,14 +584,29 @@ projectRoot = ""; targets = ( 95C5B2232697752600941585 /* Simoleon */, - 95C5B2392697752700941585 /* SimoleonTests */, + 9531D43E26D8E4CF00665D2A /* SimoleonTests */, 95C5B2442697752700941585 /* SimoleonUITests */, 959F6DE726BBD53500101E53 /* SimoleonScreenshots */, + 950093C626CBC7A200FEBF67 /* SimoleonAppPreview */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 950093C526CBC7A200FEBF67 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9531D43D26D8E4CF00665D2A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 959F6DE626BBD53500101E53 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -560,25 +618,18 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 95DD4ABB269B33810027CA1F /* CurrencyPairs.json in Resources */, 95C5B22F2697752700941585 /* Preview Assets.xcassets in Resources */, 95E76436269DFC1A008E9F31 /* LaunchScreen.storyboard in Resources */, - 9587598D26B2A68B004086F0 /* CurrencyMetadata.json in Resources */, 95B5F53126AADE4B00BDCE89 /* en.xliff in Resources */, + 9501E13A26D3A55200D14DE5 /* CurrencyPairsSupported.json in Resources */, 95B5F53326AADE4B00BDCE89 /* Localizable.strings in Resources */, 95B5F53226AADE4B00BDCE89 /* contents.json in Resources */, + 9501E13826D3A52000D14DE5 /* Currencies.json in Resources */, 95B5F53426AADE4B00BDCE89 /* InfoPlist.strings in Resources */, 95C5B22C2697752700941585 /* Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 95C5B2382697752700941585 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 95C5B2432697752700941585 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -589,12 +640,28 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 950093C326CBC7A200FEBF67 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 950093CA26CBC7A200FEBF67 /* SimoleonAppPreview.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9531D43B26D8E4CF00665D2A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9531D44226D8E4CF00665D2A /* SimoleonTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 959F6DE426BBD53500101E53 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 959F6DEB26BBD53500101E53 /* SimoleonScreenshots.swift in Sources */, - 959F6DF326BBD54400101E53 /* SnapshotHelper.swift in Sources */, + 95DA4B5626D7D10100566C5E /* SnapshotHelper.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -603,46 +670,38 @@ buildActionMask = 2147483647; files = ( 95C5179926A5EC9F00BC2B24 /* FavoriteButton.swift in Sources */, - 95C5179C26A5EFBE00BC2B24 /* Favorite+CoreDataClass.swift in Sources */, - 950A377826A820F800CAB175 /* DefaultCurrency+CoreDataClass.swift in Sources */, + 95AC820726DAA3ED00CD5C3F /* FavoritePair+CoreDataClass.swift in Sources */, + 9522CD9D26CED2E100DD9D03 /* ErrorHandling.swift in Sources */, + 95AA42ED26D78A4A0085570D /* FileHelper.swift in Sources */, + 95851CE326D4DAAE004ADA79 /* CurrencyButton.swift in Sources */, 95C5B2312697752700941585 /* Persistence.swift in Sources */, - 9585BB1226A6B71B00E3193E /* ReadConfig.swift in Sources */, + 95DA4B5926D7E2DE00566C5E /* ChildListResets.swift in Sources */, 95AEBC9526A03ECB00613729 /* ContentView.swift in Sources */, 9522BEAB26B5AACB0076B098 /* ListModifier.swift in Sources */, 95909CB326B07BFC00D051AB /* SearchBar.swift in Sources */, - 95AEBC9B26A04A4200613729 /* CurrencyMetadataModel.swift in Sources */, - 9522BEA926B5A4D20076B098 /* AppDelegate.swift in Sources */, - 95D8C8CD26A9784500BCC188 /* SubscribeButton.swift in Sources */, - 950A377726A820F800CAB175 /* DefaultCurrency+CoreDataProperties.swift in Sources */, - 9585BB1A26A6E8FD00E3193E /* SimpleSuccess.swift in Sources */, - 9555933A269B0AB8000FD726 /* ParseJson.swift in Sources */, - 95D8C8CF26A98A7900BCC188 /* RestoreButton.swift in Sources */, - 95C5179D26A5EFBE00BC2B24 /* Favorite+CoreDataProperties.swift in Sources */, - 95C5179F26A5F34200BC2B24 /* Favorites.swift in Sources */, + 95C1DD6A26D8DF9400315C3F /* CurrencySelector.swift in Sources */, + 95851CE526D4DB4C004ADA79 /* Flag.swift in Sources */, + 9585BB1A26A6E8FD00E3193E /* HapticsHelper.swift in Sources */, + 95C5179F26A5F34200BC2B24 /* FavoritesView.swift in Sources */, 95C5B2282697752600941585 /* SimoleonApp.swift in Sources */, + 954D95D026E4FE28005BE568 /* FavoritesPlaceholder.swift in Sources */, 95B54F4A26A4A450001DC0D8 /* ConversionBox.swift in Sources */, - 95D8C8C726A95D2900BCC188 /* SubscriptionPaywall.swift in Sources */, - 95D8C8D126A9BC6200BCC188 /* LockedCurrencyPicker.swift in Sources */, + 954D95CE26E4F16D005BE568 /* FavoritePairRow.swift in Sources */, + 95AC820A26DAAC6B00CD5C3F /* ButtonAnimation.swift in Sources */, + 95AC820826DAA3ED00CD5C3F /* FavoritePair+CoreDataProperties.swift in Sources */, 95C517A126A5F6C000BC2B24 /* ResignKeyboard.swift in Sources */, + 95CE6A3626D50B7700D9DCBD /* CurrencyList.swift in Sources */, + 957DCF3326D7ADEA00BCAB1E /* CurrencyConversion.swift in Sources */, 95AEBC9D26A04D4600613729 /* CurrencyRow.swift in Sources */, 95AEBCA326A0900E00613729 /* CurrencyQuoteModel.swift in Sources */, - 9585BB1426A6B7F400E3193E /* NetworkRequest.swift in Sources */, - 957065E226A5FE0400523E68 /* Settings.swift in Sources */, - 95B54F4426A4842C001DC0D8 /* Conversion.swift in Sources */, - 958526C326B41D60001FC826 /* CurrencyPairModel.swift in Sources */, + 9585BB1426A6B7F400E3193E /* NetworkHelper.swift in Sources */, + 957065E226A5FE0400523E68 /* AboutView.swift in Sources */, + 95B54F4426A4842C001DC0D8 /* ConversionView.swift in Sources */, 95C5B2342697752700941585 /* Simoleon.xcdatamodeld in Sources */, + 953B8B1726D3A970003CF530 /* CurrencyModel.swift in Sources */, 95C5179126A5DC8E00BC2B24 /* ConditionalWrapper.swift in Sources */, 95B54F5126A4ACAC001DC0D8 /* Sidebar.swift in Sources */, - 95B54F4626A48852001DC0D8 /* CurrencySelector.swift in Sources */, - 95561E3F26AF25EF00CCB543 /* SubscriptionFeature.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 95C5B2362697752700941585 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 95C5B23F2697752700941585 /* SimoleonTests.swift in Sources */, + 9547423526DBE56600415B3F /* ConversionTextfield.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -657,16 +716,21 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + 950093CD26CBC7A200FEBF67 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 95C5B2232697752600941585 /* Simoleon */; + targetProxy = 950093CC26CBC7A200FEBF67 /* PBXContainerItemProxy */; + }; + 9531D44526D8E4CF00665D2A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 95C5B2232697752600941585 /* Simoleon */; + targetProxy = 9531D44426D8E4CF00665D2A /* PBXContainerItemProxy */; + }; 959F6DEE26BBD53500101E53 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 95C5B2232697752600941585 /* Simoleon */; targetProxy = 959F6DED26BBD53500101E53 /* PBXContainerItemProxy */; }; - 95C5B23C2697752700941585 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 95C5B2232697752600941585 /* Simoleon */; - targetProxy = 95C5B23B2697752700941585 /* PBXContainerItemProxy */; - }; 95C5B2472697752700941585 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 95C5B2232697752600941585 /* Simoleon */; @@ -675,23 +739,6 @@ /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ - 9587598F26B2A68B004086F0 /* CurrencyMetadata.json */ = { - isa = PBXVariantGroup; - children = ( - 9587598E26B2A68B004086F0 /* Base */, - 9587599026B2A69A004086F0 /* en */, - 9587599326B2A6A2004086F0 /* nl */, - 9587599426B2A6A3004086F0 /* en-GB */, - 9587599526B2A6A4004086F0 /* fr */, - 9587599626B2A6A5004086F0 /* de */, - 9587599726B2A6A5004086F0 /* it */, - 9587599A26B2A6A8004086F0 /* pt-PT */, - 9587599B26B2A6A8004086F0 /* ru */, - 9587599C26B2A6AA004086F0 /* es */, - ); - name = CurrencyMetadata.json; - sourceTree = "<group>"; - }; 95B5F52D26AADE4B00BDCE89 /* Localizable.strings */ = { isa = PBXVariantGroup; children = ( @@ -727,6 +774,129 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ + 950093CE26CBC7A200FEBF67 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = MTX83R5H8X; + INFOPLIST_FILE = SimoleonAppPreview/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.5; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.dennistech.SimoleonAppPreview; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Simoleon; + }; + name = Debug; + }; + 950093CF26CBC7A200FEBF67 /* Screenshots */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = MTX83R5H8X; + INFOPLIST_FILE = SimoleonAppPreview/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.5; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.dennistech.SimoleonAppPreview; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Simoleon; + }; + name = Screenshots; + }; + 950093D026CBC7A200FEBF67 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = MTX83R5H8X; + INFOPLIST_FILE = SimoleonAppPreview/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.5; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.dennistech.SimoleonAppPreview; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Simoleon; + }; + name = Release; + }; + 9531D44726D8E4CF00665D2A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = MTX83R5H8X; + INFOPLIST_FILE = SimoleonTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.5; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.dennistech.SimoleonTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Simoleon.app/Simoleon"; + }; + name = Debug; + }; + 9531D44826D8E4CF00665D2A /* Screenshots */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = MTX83R5H8X; + INFOPLIST_FILE = SimoleonTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.5; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.dennistech.SimoleonTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Simoleon.app/Simoleon"; + }; + name = Screenshots; + }; + 9531D44926D8E4CF00665D2A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = MTX83R5H8X; + INFOPLIST_FILE = SimoleonTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.5; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.dennistech.SimoleonTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Simoleon.app/Simoleon"; + }; + name = Release; + }; 959F6DEF26BBD53500101E53 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -851,7 +1021,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.3.1; + MARKETING_VERSION = 1.3.2; PRODUCT_BUNDLE_IDENTIFIER = io.dennistech.Simoleon; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = SCREENSHOTS; @@ -860,28 +1030,6 @@ }; name = Screenshots; }; - 95B9EECF26CAC9EF00D94D60 /* Screenshots */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = MTX83R5H8X; - INFOPLIST_FILE = SimoleonTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = io.dennistech.SimoleonTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Simoleon.app/Simoleon"; - }; - name = Screenshots; - }; 95B9EED026CAC9EF00D94D60 /* Screenshots */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1061,7 +1209,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.3.1; + MARKETING_VERSION = 1.3.2; PRODUCT_BUNDLE_IDENTIFIER = io.dennistech.Simoleon; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -1086,7 +1234,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.3.1; + MARKETING_VERSION = 1.3.2; PRODUCT_BUNDLE_IDENTIFIER = io.dennistech.Simoleon; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -1094,50 +1242,6 @@ }; name = Release; }; - 95C5B2522697752700941585 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = MTX83R5H8X; - INFOPLIST_FILE = SimoleonTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = io.dennistech.SimoleonTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Simoleon.app/Simoleon"; - }; - name = Debug; - }; - 95C5B2532697752700941585 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = MTX83R5H8X; - INFOPLIST_FILE = SimoleonTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = io.dennistech.SimoleonTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Simoleon.app/Simoleon"; - }; - name = Release; - }; 95C5B2552697752700941585 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1181,6 +1285,26 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 950093D126CBC7A200FEBF67 /* Build configuration list for PBXNativeTarget "SimoleonAppPreview" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 950093CE26CBC7A200FEBF67 /* Debug */, + 950093CF26CBC7A200FEBF67 /* Screenshots */, + 950093D026CBC7A200FEBF67 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9531D44626D8E4CF00665D2A /* Build configuration list for PBXNativeTarget "SimoleonTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9531D44726D8E4CF00665D2A /* Debug */, + 9531D44826D8E4CF00665D2A /* Screenshots */, + 9531D44926D8E4CF00665D2A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 959F6DF126BBD53500101E53 /* Build configuration list for PBXNativeTarget "SimoleonScreenshots" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1211,16 +1335,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 95C5B2512697752700941585 /* Build configuration list for PBXNativeTarget "SimoleonTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 95C5B2522697752700941585 /* Debug */, - 95B9EECF26CAC9EF00D94D60 /* Screenshots */, - 95C5B2532697752700941585 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 95C5B2542697752700941585 /* Build configuration list for PBXNativeTarget "SimoleonUITests" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1244,14 +1358,6 @@ }; /* End XCRemoteSwiftPackageReference section */ -/* Begin XCSwiftPackageProductDependency section */ - 95562D5126A8AEF60047E778 /* Purchases */ = { - isa = XCSwiftPackageProductDependency; - package = 95562D5026A8AEF60047E778 /* XCRemoteSwiftPackageReference "purchases-ios" */; - productName = Purchases; - }; -/* End XCSwiftPackageProductDependency section */ - /* Begin XCVersionGroup section */ 95C5B2322697752700941585 /* Simoleon.xcdatamodeld */ = { isa = XCVersionGroup;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon.xcodeproj/xcshareddata/xcschemes/AppPreview.xcscheme Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,139 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Scheme + LastUpgradeVersion = "1250" + version = "1.3"> + <BuildAction + parallelizeBuildables = "YES" + buildImplicitDependencies = "YES"> + <BuildActionEntries> + <BuildActionEntry + buildForTesting = "YES" + buildForRunning = "YES" + buildForProfiling = "NO" + buildForArchiving = "NO" + buildForAnalyzing = "NO"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "95C5B2232697752600941585" + BuildableName = "Simoleon.app" + BlueprintName = "Simoleon" + ReferencedContainer = "container:Simoleon.xcodeproj"> + </BuildableReference> + </BuildActionEntry> + <BuildActionEntry + buildForTesting = "NO" + buildForRunning = "NO" + buildForProfiling = "NO" + buildForArchiving = "NO" + buildForAnalyzing = "NO"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "95C5B2442697752700941585" + BuildableName = "SimoleonUITests.xctest" + BlueprintName = "SimoleonUITests" + ReferencedContainer = "container:Simoleon.xcodeproj"> + </BuildableReference> + </BuildActionEntry> + <BuildActionEntry + buildForTesting = "NO" + buildForRunning = "NO" + buildForProfiling = "NO" + buildForArchiving = "NO" + buildForAnalyzing = "NO"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "95C5B2392697752700941585" + BuildableName = "SimoleonTests.xctest" + BlueprintName = "SimoleonTests" + ReferencedContainer = "container:Simoleon.xcodeproj"> + </BuildableReference> + </BuildActionEntry> + <BuildActionEntry + buildForTesting = "NO" + buildForRunning = "NO" + buildForProfiling = "NO" + buildForArchiving = "NO" + buildForAnalyzing = "NO"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "959F6DE726BBD53500101E53" + BuildableName = "SimoleonScreenshots.xctest" + BlueprintName = "SimoleonScreenshots" + ReferencedContainer = "container:Simoleon.xcodeproj"> + </BuildableReference> + </BuildActionEntry> + </BuildActionEntries> + </BuildAction> + <TestAction + buildConfiguration = "Screenshots" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + shouldUseLaunchSchemeArgsEnv = "NO"> + <MacroExpansion> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "95C5B2232697752600941585" + BuildableName = "Simoleon.app" + BlueprintName = "Simoleon" + ReferencedContainer = "container:Simoleon.xcodeproj"> + </BuildableReference> + </MacroExpansion> + <Testables> + <TestableReference + skipped = "NO"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "950093C626CBC7A200FEBF67" + BuildableName = "SimoleonAppPreview.xctest" + BlueprintName = "SimoleonAppPreview" + ReferencedContainer = "container:Simoleon.xcodeproj"> + </BuildableReference> + </TestableReference> + </Testables> + </TestAction> + <LaunchAction + buildConfiguration = "Screenshots" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + disableMainThreadChecker = "YES" + launchStyle = "0" + useCustomWorkingDirectory = "NO" + ignoresPersistentStateOnLaunch = "NO" + debugDocumentVersioning = "YES" + debugServiceExtension = "internal" + allowLocationSimulation = "YES"> + <BuildableProductRunnable + runnableDebuggingMode = "0"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "95C5B2232697752600941585" + BuildableName = "Simoleon.app" + BlueprintName = "Simoleon" + ReferencedContainer = "container:Simoleon.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + </LaunchAction> + <ProfileAction + buildConfiguration = "Release" + shouldUseLaunchSchemeArgsEnv = "YES" + savedToolIdentifier = "" + useCustomWorkingDirectory = "NO" + debugDocumentVersioning = "YES"> + <MacroExpansion> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "95C5B2232697752600941585" + BuildableName = "Simoleon.app" + BlueprintName = "Simoleon" + ReferencedContainer = "container:Simoleon.xcodeproj"> + </BuildableReference> + </MacroExpansion> + </ProfileAction> + <AnalyzeAction + buildConfiguration = "Debug"> + </AnalyzeAction> + <ArchiveAction + buildConfiguration = "Release" + revealArchiveInOrganizer = "YES"> + </ArchiveAction> +</Scheme>
--- a/Simoleon.xcodeproj/xcshareddata/xcschemes/Screenshots.xcscheme Tue Aug 17 22:14:58 2021 +0100 +++ b/Simoleon.xcodeproj/xcshareddata/xcschemes/Screenshots.xcscheme Tue Oct 12 16:17:35 2021 +0200 @@ -42,7 +42,7 @@ buildForAnalyzing = "YES"> <BuildableReference BuildableIdentifier = "primary" - BlueprintIdentifier = "95C5B2392697752700941585" + BlueprintIdentifier = "9531D43E26D8E4CF00665D2A" BuildableName = "SimoleonTests.xctest" BlueprintName = "SimoleonTests" ReferencedContainer = "container:Simoleon.xcodeproj"> @@ -81,6 +81,16 @@ ReferencedContainer = "container:Simoleon.xcodeproj"> </BuildableReference> </TestableReference> + <TestableReference + skipped = "NO"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "950093C626CBC7A200FEBF67" + BuildableName = "SimoleonAppPreview.xctest" + BlueprintName = "SimoleonAppPreview" + ReferencedContainer = "container:Simoleon.xcodeproj"> + </BuildableReference> + </TestableReference> </Testables> </TestAction> <LaunchAction
--- a/Simoleon.xcodeproj/xcshareddata/xcschemes/Simoleon.xcscheme Tue Aug 17 22:14:58 2021 +0100 +++ b/Simoleon.xcodeproj/xcshareddata/xcschemes/Simoleon.xcscheme Tue Oct 12 16:17:35 2021 +0200 @@ -42,7 +42,7 @@ buildForAnalyzing = "YES"> <BuildableReference BuildableIdentifier = "primary" - BlueprintIdentifier = "95C5B2392697752700941585" + BlueprintIdentifier = "9531D43E26D8E4CF00665D2A" BuildableName = "SimoleonTests.xctest" BlueprintName = "SimoleonTests" ReferencedContainer = "container:Simoleon.xcodeproj"> @@ -69,13 +69,14 @@ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES" - language = "en"> + language = "en" + codeCoverageEnabled = "YES"> <Testables> <TestableReference skipped = "NO"> <BuildableReference BuildableIdentifier = "primary" - BlueprintIdentifier = "95C5B2392697752700941585" + BlueprintIdentifier = "9531D43E26D8E4CF00665D2A" BuildableName = "SimoleonTests.xctest" BlueprintName = "SimoleonTests" ReferencedContainer = "container:Simoleon.xcodeproj">
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/AboutView.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,72 @@ +// +// AboutView.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 19/07/2021. +// + +import SwiftUI + +struct AboutView: View { + var body: some View { + Form { + Section(header: Text("Feedback")) { + Link(destination: URL(string: "https://itunes.apple.com/app/id1576390953?action=write-review")!) { + HStack { + Image(systemName: "heart.fill") + .foregroundColor(Color(.systemRed)) + .imageScale(.large) + + Text("Rate Simoleon") + } + } + } + + Section(header: Text("Stay in touch")) { + Link(destination: URL(string: "https://twitter.com/dennisconcep")!) { + HStack { + Image("TwitterLogo") + .resizable() + .frame(width: 30, height: 30) + + Text("Developer's Twitter") + } + } + + Link(destination: URL(string: "https://dennistech.io/contact")!) { + HStack { + Image(systemName: "envelope.fill") + .foregroundColor(Color(.systemIndigo)) + .imageScale(.large) + + Text("Contact") + } + } + } + + Section(header: Text("Information")) { + Link(destination: URL(string: "https://dennistech.io")!) { + Text("Website") + } + + Link(destination: URL(string: "https://dennistech.io/simoleon-privacy-policy")!) { + Text("Privacy Policy") + } + + Link(destination: URL(string: "https://dennistech.io/simoleon-terms-of-use")!) { + Text("Terms of Use") + } + } + } + .navigationTitle("About") + .if(UIDevice.current.userInterfaceIdiom == .phone) { content in + NavigationView { content } + } + } +} + +struct AboutView_Previews: PreviewProvider { + static var previews: some View { + AboutView() + } +}
--- a/Simoleon/AppDelegate.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -// -// AppDelegate.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 31/7/21. -// - -import SwiftUI -import Purchases - -// Add an AppDelegate to a SwiftUI app -class AppDelegate: NSObject, UIApplicationDelegate, PurchasesDelegate { - - // Set delegate to Purchases - func application( - _ application: UIApplication, - didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil - ) -> Bool { - Purchases.shared.delegate = self - return true - } - - // Handle purchases started on the App Store - func purchases( - _ purchases: Purchases, - shouldPurchasePromoProduct product: SKProduct, - defermentBlock makeDeferredPurchase: @escaping RCDeferredPromotionalPurchaseBlock - ) { - makeDeferredPurchase { (transaction, purchaserInfo, error, userCancelled) in - if purchaserInfo?.entitlements["all"]?.isActive == true { - print("Subscription purchased from App Store") - } - } - } -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Assets.xcassets/Flags/AAVE.imageset/Contents.json Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "AAVE.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Assets.xcassets/Flags/ADA.imageset/Contents.json Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ADA.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Assets.xcassets/Flags/BNB.imageset/Contents.json Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "BNB.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Assets.xcassets/Flags/DOGE.imageset/Contents.json Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "DOGE.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Assets.xcassets/Flags/DOT.imageset/Contents.json Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "DOT.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Assets.xcassets/Flags/FIL.imageset/Contents.json Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "FIL.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Assets.xcassets/Flags/LINK.imageset/Contents.json Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "LINK.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Assets.xcassets/Flags/LUNA.imageset/Contents.json Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "LUNA.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Assets.xcassets/Flags/MATIC.imageset/Contents.json Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "MATIC.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Assets.xcassets/Flags/SOL.imageset/Contents.json Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "SOL.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Assets.xcassets/Flags/THETA.imageset/Contents.json Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "THETA.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Assets.xcassets/Flags/UKO.imageset/Contents.json Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "UKO.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Assets.xcassets/Flags/UNI.imageset/Contents.json Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "UNI.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Assets.xcassets/Flags/USDC.imageset/Contents.json Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "USDC.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Assets.xcassets/Flags/VET.imageset/Contents.json Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "VET.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Assets.xcassets/Flags/XDR.imageset/Contents.json Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "XDR.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Assets.xcassets/Flags/XLM.imageset/Contents.json Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "XLM.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Assets.xcassets/Flags/XMR.imageset/Contents.json Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "XMR.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- a/Simoleon/ContentView.swift Tue Aug 17 22:14:58 2021 +0100 +++ b/Simoleon/ContentView.swift Tue Oct 12 16:17:35 2021 +0200 @@ -8,9 +8,6 @@ import SwiftUI struct ContentView: View { - @Environment(\.managedObjectContext) private var viewContext - @FetchRequest(sortDescriptors: []) private var defaultCurrency: FetchedResults<DefaultCurrency> - @State private var tab: Tab = .convert private enum Tab { @@ -18,30 +15,31 @@ } @ViewBuilder var adjustedView: some View { + // MARK: - iPad if UIDevice.current.userInterfaceIdiom == .pad { NavigationView { Sidebar() - Conversion(currencyPair: defaultCurrency.first?.pair ?? "USD/GBP") + ConversionView() } } else { // MARK: - iPhone TabView(selection: $tab) { - Conversion(currencyPair: defaultCurrency.first?.pair ?? "USD/GBP") + ConversionView() .tabItem { Label("Convert", systemImage: "arrow.counterclockwise.circle") } .tag(Tab.convert) - Favorites() + FavoritesView() .tabItem { Label("Favorites", systemImage: "star") } .tag(Tab.favorites) - - Settings() + + AboutView() .tabItem { - Label("Settings", systemImage: "gear") + Label("About", systemImage: "info.circle") } .tag(Tab.settings) }
--- a/Simoleon/Conversion.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ -// -// Conversion.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 18/07/2021. -// - -import SwiftUI -import Purchases - -struct Conversion: View { - var showNavigationView: Bool? - - @State var currencyPair: String - @State private var amountToConvert = "" - @State private var price: Double = 1.00 - @State private var showingConversion = false - @State private var showingCurrencySelector = false - @State private var amountIsEditing = false - - let currencyMetadata: [String: CurrencyMetadataModel] = parseJson("CurrencyMetadata.json") - - var body: some View { - ScrollView(showsIndicators: false) { - VStack(alignment: .leading) { - HStack { - Button(action: { showingCurrencySelector = true }) { - RoundedRectangle(cornerRadius: 15) - .foregroundColor(Color(.secondarySystemBackground)) - .frame(height: 60) - .overlay( - CurrencyRow(currencyPairName: currencyPair) - .padding(.horizontal) - ) - } - .accessibilityIdentifier("OpenCurrencySelector") - - FavoriteButton(currencyPair: currencyPair) - } - - ConversionBox( - currencyPair: $currencyPair, - amountToConvert: $amountToConvert, - price: $price, - showingConversion: $showingConversion, - amountIsEditing: $amountIsEditing - ) - } - .padding() - .sheet(isPresented: $showingCurrencySelector, onDismiss: request) { - CurrencySelector(currencyPair: $currencyPair, showingCurrencySelector: $showingCurrencySelector) - } - } - .onAppear(perform: request) - .navigationTitle("Convert") - .toolbar { - ToolbarItem(placement: .navigationBarTrailing) { - if amountIsEditing { - Button(action: { - UIApplication.shared.dismissKeyboard() - amountIsEditing = false - }) { - Text("Done") - } - } - } - } - .if(UIDevice.current.userInterfaceIdiom == .phone && showNavigationView ?? true) { content in - NavigationView { content } - } - } - - private func request() { - showingConversion = false - let url = "\(readConfig("API_URL")!)quotes?pairs=\(currencyPair)&api_key=\(readConfig("API_KEY")!)" - networkRequest(url: url, model: [CurrencyQuoteModel].self) { response in - if let price = response.first?.price { - self.price = price - showingConversion = true - } else { - // Handle error - } - } - } -} - - -struct Conversion_Previews: PreviewProvider { - static var previews: some View { - Conversion(currencyPair: "USD/GBP") - } -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/ConversionView.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,39 @@ +// +// ConversionView.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 18/07/2021. +// + +import SwiftUI + +struct ConversionView: View { + var showNavigationView: Bool? + @StateObject var currencyConversion = CurrencyConversion() + + var body: some View { + ScrollView(showsIndicators: false) { + VStack(alignment: .leading, spacing: 20) { + HStack { + CurrencySelector(currencyConversion: currencyConversion) + FavoriteButton(currencyConversion: currencyConversion) + } + + ConversionBox(currencyConversion: currencyConversion) + .padding(.top) + } + .padding() + } + .navigationTitle("Convert") + .if(UIDevice.current.userInterfaceIdiom == .phone && showNavigationView ?? true) { content in + NavigationView { content } + } + } +} + + +struct ConversionView_Previews: PreviewProvider { + static var previews: some View { + ConversionView(showNavigationView: true) + } +}
--- a/Simoleon/Favorites.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -// -// Favorites.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 19/07/2021. -// - -import SwiftUI - -struct Favorites: View { - @Environment(\.managedObjectContext) private var viewContext - @FetchRequest( - sortDescriptors: [NSSortDescriptor(keyPath: \Favorite.currencyPair, ascending: true)], - animation: .default) private var favorites: FetchedResults<Favorite> - - var body: some View { - VStack { - if favorites.isEmpty { - Group { - Image(systemName: "star") - .font(.title) - - Text("Search a currency pair and add it to favourites.") - .padding(.top, 5) - } - .multilineTextAlignment(.center) - .foregroundColor(.secondary) - .padding(.horizontal, 50) - } else { - List { - ForEach(favorites) { favorite in - NavigationLink(destination: Conversion(showNavigationView: false, currencyPair: favorite.currencyPair)) { - CurrencyRow(currencyPairName: favorite.currencyPair) - } - } - .onDelete(perform: removeFromFavorites) - } - .listStyle(PlainListStyle()) - } - } - .navigationTitle("Favorites") - .toolbar { - #if os(iOS) - EditButton() - #endif - } - .if(UIDevice.current.userInterfaceIdiom == .phone) { content in - NavigationView { content } - } - .onAppear { - #if SCREENSHOTS - generateFavoritesForScreenshots() - #endif - } - } - - private func removeFromFavorites(offsets: IndexSet) { - withAnimation { - offsets.map { favorites[$0] }.forEach(viewContext.delete) - - do { - try viewContext.save() - } catch { - let nsError = error as NSError - fatalError("Unresolved error \(nsError), \(nsError.userInfo)") - } - } - } - - #if SCREENSHOTS - /* - Save currencies to favourites to take screenshots for the App Store - */ - private func generateFavoritesForScreenshots() { - let favoriteCurrencies = [ - "EUR/USD", "BTC/USD", "USD/HKD", "USD/JPY", "AUD/USD", - "XAU/GBP", "DASH/ETH", "EUR/USD", "XAG/CAD" - ] - - let coreDataCurrencyPairs = favorites.map { $0.currencyPair } - - for favoriteCurrency in favoriteCurrencies { - if !coreDataCurrencyPairs.contains(favoriteCurrency) { - let favorites = Favorite(context: viewContext) - favorites.currencyPair = favoriteCurrency - - do { - try viewContext.save() - } catch { - let nsError = error as NSError - fatalError("Unresolved error \(nsError), \(nsError.userInfo)") - } - } - } - } - #endif -} - -struct Favorites_Previews: PreviewProvider { - static var previews: some View { - Favorites() - .environment(\.managedObjectContext, PersistenceController.preview.container.viewContext) - } -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/FavoritesView.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,100 @@ +// +// FavoritesView.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 19/07/2021. +// + +import SwiftUI + +struct FavoritesView: View { + @Environment(\.managedObjectContext) private var viewContext + @FetchRequest( + sortDescriptors: [NSSortDescriptor(keyPath: \FavoritePair.baseSymbol, ascending: true)], + animation: .default) + private var favoritePairs: FetchedResults<FavoritePair> + + var body: some View { + VStack { + if favoritePairs.isEmpty { + FavoritesPlaceholder() + } else { + List { + ForEach(favoritePairs, id:\.self) { favoritePair in + FavoritePairRow(favoritePair: favoritePair) + .padding(.vertical, 4) + } + .onDelete(perform: removeFromFavorites) + } + .listStyle(InsetGroupedListStyle()) + } + } + .navigationTitle("Favorites") + .toolbar { + #if os(iOS) + EditButton() + #endif + } + .if(UIDevice.current.userInterfaceIdiom == .phone) { content in + NavigationView { content } + } + .onAppear { + #if SCREENSHOTS + generateFavoritesForScreenshots() + #endif + } + } + + private func removeFromFavorites(offsets: IndexSet) { + withAnimation { + offsets.map { favoritePairs[$0] }.forEach(viewContext.delete) + + do { + try viewContext.save() + } catch { + let nsError = error as NSError + fatalError("Unresolved error \(nsError), \(nsError.userInfo)") + } + } + } + + #if SCREENSHOTS + /* + Save currencies to favourites to take screenshots for the App Store + */ + private func generateFavoritesForScreenshots() { + let pairs = ["EUR/USD", "BTC/USD", "USD/HKD", "USD/JPY", "AUD/USD", + "XAU/GBP", "DASH/ETH", "EUR/USD", "XAG/CAD"] + + for pair in pairs { + let symbols = pair.components(separatedBy: "/") + let favoritePair = favoritePairs.first( + where: { + $0.baseSymbol == symbols[0] && $0.quoteSymbol == symbols[1] + }) + + if let _ = favoritePair { + // Do not save to core data again + } else { + let favoritePair = FavoritePair(context: viewContext) + favoritePair.baseSymbol = symbols[0] + favoritePair.quoteSymbol = symbols[1] + } + + do { + try viewContext.save() + } catch { + let nsError = error as NSError + fatalError("Unresolved error \(nsError), \(nsError.userInfo)") + } + } + } + #endif +} + +struct FavoritesView_Previews: PreviewProvider { + static var previews: some View { + FavoritesView() + .environment(\.managedObjectContext, PersistenceController.preview.container.viewContext) + } +}
--- a/Simoleon/Functions/NetworkRequest.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -// -// Request.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 20/07/2021. -// - -import SwiftUI - -func networkRequest<T: Decodable>(url: String, model: T.Type, completion: @escaping (_ result: T) -> Void) { - - // We take some model data T.Type - guard let url = URL(string: url) else { - print("Invalid URL") - return - } - - let request = URLRequest(url: url) - URLSession.shared.dataTask(with: request) { data, response, error in - if let data = data { - do { - // Decode response with the model passed - let decodedResponse = try JSONDecoder().decode(model, from: data) - DispatchQueue.main.async { - completion(decodedResponse) - } - return - } catch { - // Return error regarding the escaping code - print(error) - } - } - // Error with the request - print("Fetch failed: \(error?.localizedDescription ?? "Unknown error")") - } - .resume() -}
--- a/Simoleon/Functions/ParseJson.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -// -// ParseJson.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 11/07/2021. -// - -import Foundation - - -// Read JSON File -func parseJson<T: Decodable>(_ filename: String) -> T { - let data: Data - - guard let file = Bundle.main.url(forResource: filename, withExtension: nil) - else { - fatalError("Couldn't find \(filename) in main bundle.") - } - - do { - data = try Data(contentsOf: file) - } catch { - fatalError("Couldn't load \(filename) from main bundle:\n\(error)") - } - - do { - let decoder = JSONDecoder() - return try decoder.decode(T.self, from: data) - } catch { - fatalError("Couldn't parse \(filename) as \(T.self):\n\(error)") - } -}
--- a/Simoleon/Functions/ReadConfig.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -// -// ReadConfig.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 20/07/2021. -// - -import SwiftUI - -func readConfig(_ key: String) -> String? { - return (Bundle.main.infoDictionary?[key] as? String)? - .replacingOccurrences(of: "\\", with: "") -}
--- a/Simoleon/Functions/SimpleSuccess.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -// -// SimpleSuccess.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 20/07/2021. -// - -import SwiftUI - -// Haptics -func simpleSuccess() { - let generator = UINotificationFeedbackGenerator() - generator.notificationOccurred(.success) -}
--- a/Simoleon/Helpers/ConversionBox.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,91 +0,0 @@ -// -// ConversionBox.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 18/07/2021. -// - -import SwiftUI - -struct ConversionBox: View { - @Binding var currencyPair: String - @Binding var amountToConvert: String - @Binding var price: Double - @Binding var showingConversion: Bool - @Binding var amountIsEditing: Bool - - let currencyMetadata: [String: CurrencyMetadataModel] = parseJson("CurrencyMetadata.json") - - var body: some View { - VStack(alignment: .leading) { - let currencies = currencyPair.split(separator: "/") - Text("\(currencyMetadata[String(currencies[0])]!.name) (\(String(currencies[0])))") - .font(.callout) - .fontWeight(.semibold) - .padding(.top, 40) - - ZStack(alignment: .trailing) { - TextField("Enter amount", text: $amountToConvert) { startedEditing in - if startedEditing { - withAnimation { - amountIsEditing = true - } - } - } - onCommit: { - withAnimation { - amountIsEditing = false - } - } - .keyboardType(.decimalPad) - .font(Font.title.weight(.semibold)) - .lineLimit(1) - .accessibilityIdentifier("ConversionTextField") - } - - Divider() - - Text("\(currencyMetadata[String(currencies[1])]!.name) (\(String(currencies[1])))") - .font(.callout) - .fontWeight(.semibold) - .padding(.top, 10) - - if showingConversion { - Text("\(makeConversion(), specifier: "%.2f")") - .font(Font.title.weight(.semibold)) - .lineLimit(1) - .padding(.top, 5) - } else { - ProgressView() - .padding(.top, 5) - } - } - } - - /* - if the amount can be converted to Double: - * Return amount - else: - * Return zero - */ - func makeConversion() -> Double { - if let amountToConvert = Double(amountToConvert) { - return amountToConvert * price // Conversion - } else { - return 0 - } - } -} - - -struct ConversionBox_Previews: PreviewProvider { - static var previews: some View { - ConversionBox( - currencyPair: .constant("USD/GBP"), - amountToConvert: .constant("1000"), - price: .constant(1), - showingConversion: .constant(false), - amountIsEditing: .constant(false) - ) - } -}
--- a/Simoleon/Helpers/CurrencyRow.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -// -// CurrencyRow.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 15/07/2021. -// - -import SwiftUI - -struct CurrencyRow: View { - var currencyPairName: String - var isLocked: Bool? - let currencyMetadata: [String: CurrencyMetadataModel] = parseJson("CurrencyMetadata.json") - - var body: some View { - HStack { - let currencies = currencyPairName.split(separator: "/") - Image(currencyMetadata[String(currencies[0])]!.flag) - .resizable() - .aspectRatio(contentMode: .fill) - .frame(width: 30, height: 30) - .clipShape(Circle()) - .overlay(Circle().stroke(Color(.secondaryLabel), lineWidth: 1)) - - Image(currencyMetadata[String(currencies[1])]!.flag) - .resizable() - .aspectRatio(contentMode: .fill) - .frame(width: 30, height: 30) - .clipShape(Circle()) - .overlay(Circle().stroke(Color(.secondaryLabel), lineWidth: 1)) - .offset(x: -20) - .padding(.trailing, -20) - - Text("From \(String(currencies[0])) to \(String(currencies[1]))") - .fontWeight(.semibold) - .foregroundColor(Color("PlainButton")) - .padding(.leading) - - Spacer() - - if isLocked ?? false { - Image(systemName: "lock") - .foregroundColor(.secondary) - } - } - } -} - -struct CurrencyRow_Previews: PreviewProvider { - static var previews: some View { - CurrencyRow(currencyPairName: "USD/GBP", isLocked: true) - } -}
--- a/Simoleon/Helpers/CurrencySelector.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,132 +0,0 @@ -// -// CurrencySelector.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 18/07/2021. -// - -import SwiftUI -import Purchases - -struct CurrencySelector: View { - @Binding var currencyPair: String - @Binding var showingCurrencySelector: Bool - - @State private var entitlementIsActive = false - @State private var searchCurrency = "" - @State private var showingSubscriptionPaywall = false - @State private var alertTitle = "" - @State private var alertMessage = "" - @State private var showingAlert = false - - var currencyPairs: [CurrencyPairModel] = parseJson("CurrencyPairs.json") - - /* - If searched currency string is empty: - * Show all currencies - else: - * Show filtered list of currencies containing searched currency string - */ - var searchResults: [CurrencyPairModel] { - if searchCurrency.isEmpty { - return currencyPairs.sorted { !$0.isLocked && $1.isLocked } - } else { - return currencyPairs.filter { $0.name.contains(searchCurrency.uppercased()) } - } - } - - var body: some View { - NavigationView { - VStack { - SearchBar(placeholder: "Search...", text: $searchCurrency) - .padding() - .accessibilityIdentifier("CurrencySearchBar") - - List { - if entitlementIsActive { - ForEach(searchResults, id: \.self) { currencyPair in - Button(action: { - self.currencyPair = currencyPair.name - showingCurrencySelector = false - }) { - CurrencyRow(currencyPairName: currencyPair.name) - } - } - } else { - ForEach(searchResults, id: \.self) { currencyPair in - Button(action: { select(currencyPair) }) { - CurrencyRow(currencyPairName: currencyPair.name, isLocked: currencyPair.isLocked) - } - } - } - } - .id(UUID()) - } - .navigationTitle("Currencies") - .navigationBarTitleDisplayMode(.inline) - .toolbar { - ToolbarItem(placement: .cancellationAction) { - Button(action: { showingCurrencySelector = false }) { - Text("Cancel") - } - } - } - } - .onAppear(perform: checkEntitlement) - .alert(isPresented: $showingAlert) { - Alert(title: Text(alertTitle), message: Text(alertMessage), dismissButton: .default(Text("Ok"))) - } - .sheet(isPresented: $showingSubscriptionPaywall, onDismiss: checkEntitlement) { - SubscriptionPaywall(showingSubscriptionPaywall: $showingSubscriptionPaywall) - } - } - - /* - If user is subscribed: - * Select currency and dismiss currency selector - else: - * Show subscription paywall - */ - private func select(_ currencyPair: CurrencyPairModel) { - if currencyPair.isLocked { - showingSubscriptionPaywall = true - } else { - self.currencyPair = currencyPair.name - showingCurrencySelector = false - } - } - - // Check if user subscription is active - private func checkEntitlement() { - #if SCREENSHOTS - entitlementIsActive = true - #else - Purchases.shared.purchaserInfo { (purchaserInfo, error) in - if purchaserInfo?.entitlements["all"]?.isActive == true { - entitlementIsActive = true - } - - if let error = error as NSError? { - alertTitle = error.localizedDescription - alertMessage = error.localizedFailureReason ?? "" - showingAlert = true - } - } - #endif - } -} -extension View { - func listStyle() -> some View { - self.modifier(ListModifier()) - } -} - - -struct CurrencySelector_Previews: PreviewProvider { - static var previews: some View { - CurrencySelector( - currencyPair: .constant("USD/GBP"), - showingCurrencySelector: .constant(false) - ) - } -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Helpers/ErrorHandling.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,20 @@ +// +// ErrorHandling.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 19/8/21. +// + +import Foundation + +class ErrorHandling { + enum Json: Error { + case fileMissing + case loadFailed(cause: String) + case parseFailed(cause: String) + } + + enum Networking: Error { + case invalidURL + } +}
--- a/Simoleon/Helpers/FavoriteButton.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -// -// FavoriteButton.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 19/07/2021. -// - -import SwiftUI - -struct FavoriteButton: View { - var currencyPair: String - - @Environment(\.managedObjectContext) private var viewContext - @FetchRequest(sortDescriptors: []) private var favorites: FetchedResults<Favorite> - - @State private var starSymbol = "star" - - var body: some View { - let favoriteCurrencyPairs = favorites.map { $0.currencyPair } - Button(action: { favoriteAction(favoriteCurrencyPairs) }) { - RoundedRectangle(cornerRadius: 15) - .foregroundColor(Color(.secondarySystemBackground)) - .frame(width: 60, height: 60) - .overlay( - Image(systemName: generateStar(favoriteCurrencyPairs)) - .font(.system(size: 28)) - .foregroundColor(Color(.systemYellow)) - ) - } - .accessibilityIdentifier("AddToFavorites") - } - - /* - If currency pair is favorite: - * Button action is to remove from favorites - else: - * Button action is to add to favorites - */ - private func favoriteAction(_ favoriteCurrencyPairs: [String]) { - if favoriteCurrencyPairs.contains(currencyPair) { - removeFromFavorites() - } else { - addToFavorites() - } - - simpleSuccess() - } - - /* - if currency pair is favorite: - * Return "star.fill" symbol - else: - * Return "star" - */ - private func generateStar(_ favoriteCurrencyPairs: [String]) -> String { - if favoriteCurrencyPairs.contains(currencyPair) { - return "star.fill" - } else { - return "star" - } - } - - /* - * Get first favorite core data object that matches the specified currency pair - * Delete it - */ - private func removeFromFavorites() { - withAnimation { - let favoriteObject = favorites.first(where: { $0.currencyPair == currencyPair }) - viewContext.delete(favoriteObject ?? Favorite()) - - do { - try viewContext.save() - } catch { - let nsError = error as NSError - fatalError("Unresolved error \(nsError), \(nsError.userInfo)") - } - } - } - - /* - * Create a favorite core data object - * Save it - */ - private func addToFavorites() { - withAnimation { - let favorite = Favorite(context: viewContext) - favorite.currencyPair = currencyPair - - do { - try viewContext.save() - } catch { - let nsError = error as NSError - fatalError("Unresolved error \(nsError), \(nsError.userInfo)") - } - } - } -} - -struct FavoriteButton_Previews: PreviewProvider { - static var previews: some View { - FavoriteButton(currencyPair: "USD/GBP") - } -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Helpers/FileHelper.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,36 @@ +// +// File.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 26/8/21. +// + +import Foundation + + +func readJson<T: Decodable>(from filename: String) throws -> T { + let data: Data + + guard let file = Bundle.main.url(forResource: filename, withExtension: nil) + else { + throw ErrorHandling.Json.fileMissing + } + + do { + data = try Data(contentsOf: file) + } catch { + throw ErrorHandling.Json.loadFailed(cause: error.localizedDescription) + } + + do { + let decoder = JSONDecoder() + return try decoder.decode(T.self, from: data) + } catch { + throw ErrorHandling.Json.parseFailed(cause: error.localizedDescription) + } +} + +func readConfig(withKey: String) -> String? { + return (Bundle.main.infoDictionary?[withKey] as? String)? + .replacingOccurrences(of: "\\", with: "") +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Helpers/HapticsHelper.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,17 @@ +// +// SimpleSuccess.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 20/07/2021. +// + +import SwiftUI + +class HapticsHelper { + + // MARK: - Simple success + func simpleSuccess() { + let generator = UINotificationFeedbackGenerator() + generator.notificationOccurred(.success) + } +}
--- a/Simoleon/Helpers/ListModifier.swift Tue Aug 17 22:14:58 2021 +0100 +++ b/Simoleon/Helpers/ListModifier.swift Tue Oct 12 16:17:35 2021 +0200 @@ -11,11 +11,12 @@ func body(content: Content) -> some View { content .id(UUID()) - .listStyle(PlainListStyle()) - .gesture(DragGesture() + .listStyle(InsetGroupedListStyle()) + .gesture( + DragGesture() .onChanged({ _ in UIApplication.shared.dismissKeyboard() - }) + }) ) } }
--- a/Simoleon/Helpers/LockedCurrencyPicker.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -// -// LockedCurrencyPicker.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 22/07/2021. -// - -import SwiftUI - -struct LockedCurrencyPicker: View { - @Environment(\.managedObjectContext) private var viewContext - @FetchRequest(sortDescriptors: []) private var defaultCurrency: FetchedResults<DefaultCurrency> - - var body: some View { - HStack { - Text("Default currency") - Spacer() - Text(defaultCurrency.first?.pair ?? "USD/GBP") - .foregroundColor(.secondary) - - Image(systemName: "lock") - .foregroundColor(.secondary) - } - } -} - -struct LockedCurrencyPicker_Previews: PreviewProvider { - static var previews: some View { - LockedCurrencyPicker() - } -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Helpers/NetworkHelper.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,35 @@ +// +// Request.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 20/07/2021. +// + +import Foundation + +class NetworkHelper { + func httpRequest<T: Decodable>(url: String, model: T.Type, completion: @escaping (_ result: T) -> Void) throws { + // We take some model data T.Type + guard let url = URL(string: url) else { throw ErrorHandling.Networking.invalidURL } + + let request = URLRequest(url: url) + URLSession.shared.dataTask(with: request) { data, response, error in + if let data = data { + do { + // Decode response with the model passed + let decodedResponse = try JSONDecoder().decode(model, from: data) + DispatchQueue.main.async { + completion(decodedResponse) + } + return + } catch { + // Return error regarding the escaping code + print(error) + } + } + // Error with the request + print("Fetch failed: \(error?.localizedDescription ?? "Unknown error")") + } + .resume() + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Helpers/Persistence.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,66 @@ +// +// Persistence.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 08/07/2021. +// + +import CoreData + +struct PersistenceController { + static let shared = PersistenceController() + + static var preview: PersistenceController = { + let result = PersistenceController(inMemory: true) + let viewContext = result.container.viewContext + + for _ in 0..<10 { + let favoritePair = FavoritePair(context: viewContext) + favoritePair.baseSymbol = "USD" + favoritePair.quoteSymbol = "EUR" + } + + do { + try viewContext.save() + } catch { + /* + Replace this implementation with code to handle the error appropriately. + fatalError() causes the application to generate a crash log and terminate. + You should not use this function in a shipping application, although it may be useful during development. + */ + let nsError = error as NSError + fatalError("Unresolved error \(nsError), \(nsError.userInfo)") + } + return result + }() + + let container: NSPersistentCloudKitContainer + + init(inMemory: Bool = false) { + container = NSPersistentCloudKitContainer(name: "Simoleon") + container.viewContext.automaticallyMergesChangesFromParent = true + container.viewContext.mergePolicy = NSMergeByPropertyStoreTrumpMergePolicy + if inMemory { + container.persistentStoreDescriptions.first!.url = URL(fileURLWithPath: "/dev/null") + } + container.loadPersistentStores(completionHandler: { (storeDescription, error) in + if let error = error as NSError? { + /* + Replace this implementation with code to handle the error appropriately. + fatalError() causes the application to generate a crash log and terminate. + You should not use this function in a shipping application, although it may be useful during development. + */ + + /* + Typical reasons for an error here include: + * The parent directory does not exist, cannot be created, or disallows writing. + * The persistent store is not accessible, due to permissions or data protection when the device is locked. + * The device is out of space. + * The store could not be migrated to the current model version. + Check the error message to determine what the actual problem was. + */ + fatalError("Unresolved error \(error), \(error.userInfo)") + } + }) + } +}
--- a/Simoleon/Helpers/RestoreButton.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -// -// RestoreButton.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 22/07/2021. -// - -import SwiftUI -import Purchases - -struct RestoreButton: View { - @Binding var showingSubscriptionPaywall: Bool - - @State private var alertTitle: LocalizedStringKey = "" - @State private var alertMessage: LocalizedStringKey = "" - @State private var restoringPurchases = false - @State private var showingAlert = false - - var body: some View { - Button(action: restorePurchases) { - if restoringPurchases { - ProgressView() - } else { - Text("Restore purchases") - } - } - .alert(isPresented: $showingAlert) { - Alert(title: Text(alertTitle), message: Text(alertMessage), dismissButton: .default(Text("Ok"))) - } - } - - private func restorePurchases() { - restoringPurchases = true - - Purchases.shared.restoreTransactions { purchaserInfo, error in - if purchaserInfo?.entitlements["all"]?.isActive == true { - showingSubscriptionPaywall = false - } else { - alertTitle = LocalizedStringKey("No subscriptions found") - alertMessage = LocalizedStringKey("You are not subscripted to Simoleon yet.") - restoringPurchases = false - showingAlert = true - } - - if let error = error as NSError? { - alertTitle = LocalizedStringKey(error.localizedDescription) - alertMessage = LocalizedStringKey(error.localizedFailureReason ?? "") - showingAlert = true - } - } - } -} - -struct RestoreButton_Previews: PreviewProvider { - static var previews: some View { - RestoreButton(showingSubscriptionPaywall: .constant(true)) - } -}
--- a/Simoleon/Helpers/SearchBar.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -// -// SearchBar.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 27/07/2021. -// - -import SwiftUI - -struct SearchBar: View { - var placeholder: LocalizedStringKey - - @Binding var text: String - - var body: some View { - TextField(placeholder, text: $text) - .disableAutocorrection(true) - .padding(10) - .background( - RoundedRectangle(cornerRadius: 15) - .foregroundColor(Color(.tertiarySystemFill)) - ) - } -} - -struct SearchBar_Previews: PreviewProvider { - static var previews: some View { - SearchBar(placeholder: "Search ...", text: .constant("")) - } -}
--- a/Simoleon/Helpers/Sidebar.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -// -// Sidebar.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 18/07/2021. -// - -import SwiftUI - -struct Sidebar: View { - @Environment(\.managedObjectContext) private var viewContext - @FetchRequest(sortDescriptors: []) private var defaultCurrency: FetchedResults<DefaultCurrency> - - var body: some View { - List { - NavigationLink(destination: Conversion(currencyPair: defaultCurrency.first?.pair ?? "USD/GBP")) { - Label("Convert", systemImage: "arrow.counterclockwise.circle") - } - .accessibilityIdentifier("NavigateToConversion") - - NavigationLink(destination: Favorites()) { - Label("Favorites", systemImage: "star") - } - .accessibilityIdentifier("NavigateToFavorites") - - NavigationLink(destination: Settings()) { - Label("Settings", systemImage: "gear") - } - .accessibilityIdentifier("NavigateToSettings") - } - .listStyle(SidebarListStyle()) - .navigationTitle("Categories") - .accessibilityIdentifier("Sidebar") - } -} - -struct Sidebar_Previews: PreviewProvider { - static var previews: some View { - NavigationView { - Sidebar() - } - } -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Helpers/SnapshotHelper.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,309 @@ +// +// SnapshotHelper.swift +// Example +// +// Created by Felix Krause on 10/8/15. +// + +// ----------------------------------------------------- +// IMPORTANT: When modifying this file, make sure to +// increment the version number at the very +// bottom of the file to notify users about +// the new SnapshotHelper.swift +// ----------------------------------------------------- + +import Foundation +import XCTest + +var deviceLanguage = "" +var locale = "" + +func setupSnapshot(_ app: XCUIApplication, waitForAnimations: Bool = true) { + Snapshot.setupSnapshot(app, waitForAnimations: waitForAnimations) +} + +func snapshot(_ name: String, waitForLoadingIndicator: Bool) { + if waitForLoadingIndicator { + Snapshot.snapshot(name) + } else { + Snapshot.snapshot(name, timeWaitingForIdle: 0) + } +} + +/// - Parameters: +/// - name: The name of the snapshot +/// - timeout: Amount of seconds to wait until the network loading indicator disappears. Pass `0` if you don't want to wait. +func snapshot(_ name: String, timeWaitingForIdle timeout: TimeInterval = 20) { + Snapshot.snapshot(name, timeWaitingForIdle: timeout) +} + +enum SnapshotError: Error, CustomDebugStringConvertible { + case cannotFindSimulatorHomeDirectory + case cannotRunOnPhysicalDevice + + var debugDescription: String { + switch self { + case .cannotFindSimulatorHomeDirectory: + return "Couldn't find simulator home location. Please, check SIMULATOR_HOST_HOME env variable." + case .cannotRunOnPhysicalDevice: + return "Can't use Snapshot on a physical device." + } + } +} + +@objcMembers +open class Snapshot: NSObject { + static var app: XCUIApplication? + static var waitForAnimations = true + static var cacheDirectory: URL? + static var screenshotsDirectory: URL? { + return cacheDirectory?.appendingPathComponent("screenshots", isDirectory: true) + } + + open class func setupSnapshot(_ app: XCUIApplication, waitForAnimations: Bool = true) { + + Snapshot.app = app + Snapshot.waitForAnimations = waitForAnimations + + do { + let cacheDir = try getCacheDirectory() + Snapshot.cacheDirectory = cacheDir + setLanguage(app) + setLocale(app) + setLaunchArguments(app) + } catch let error { + NSLog(error.localizedDescription) + } + } + + class func setLanguage(_ app: XCUIApplication) { + guard let cacheDirectory = self.cacheDirectory else { + NSLog("CacheDirectory is not set - probably running on a physical device?") + return + } + + let path = cacheDirectory.appendingPathComponent("language.txt") + + do { + let trimCharacterSet = CharacterSet.whitespacesAndNewlines + deviceLanguage = try String(contentsOf: path, encoding: .utf8).trimmingCharacters(in: trimCharacterSet) + app.launchArguments += ["-AppleLanguages", "(\(deviceLanguage))"] + } catch { + NSLog("Couldn't detect/set language...") + } + } + + class func setLocale(_ app: XCUIApplication) { + guard let cacheDirectory = self.cacheDirectory else { + NSLog("CacheDirectory is not set - probably running on a physical device?") + return + } + + let path = cacheDirectory.appendingPathComponent("locale.txt") + + do { + let trimCharacterSet = CharacterSet.whitespacesAndNewlines + locale = try String(contentsOf: path, encoding: .utf8).trimmingCharacters(in: trimCharacterSet) + } catch { + NSLog("Couldn't detect/set locale...") + } + + if locale.isEmpty && !deviceLanguage.isEmpty { + locale = Locale(identifier: deviceLanguage).identifier + } + + if !locale.isEmpty { + app.launchArguments += ["-AppleLocale", "\"\(locale)\""] + } + } + + class func setLaunchArguments(_ app: XCUIApplication) { + guard let cacheDirectory = self.cacheDirectory else { + NSLog("CacheDirectory is not set - probably running on a physical device?") + return + } + + let path = cacheDirectory.appendingPathComponent("snapshot-launch_arguments.txt") + app.launchArguments += ["-FASTLANE_SNAPSHOT", "YES", "-ui_testing"] + + do { + let launchArguments = try String(contentsOf: path, encoding: String.Encoding.utf8) + let regex = try NSRegularExpression(pattern: "(\\\".+?\\\"|\\S+)", options: []) + let matches = regex.matches(in: launchArguments, options: [], range: NSRange(location: 0, length: launchArguments.count)) + let results = matches.map { result -> String in + (launchArguments as NSString).substring(with: result.range) + } + app.launchArguments += results + } catch { + NSLog("Couldn't detect/set launch_arguments...") + } + } + + open class func snapshot(_ name: String, timeWaitingForIdle timeout: TimeInterval = 20) { + if timeout > 0 { + waitForLoadingIndicatorToDisappear(within: timeout) + } + + NSLog("snapshot: \(name)") // more information about this, check out https://docs.fastlane.tools/actions/snapshot/#how-does-it-work + + if Snapshot.waitForAnimations { + sleep(1) // Waiting for the animation to be finished (kind of) + } + + #if os(OSX) + guard let app = self.app else { + NSLog("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().") + return + } + + app.typeKey(XCUIKeyboardKeySecondaryFn, modifierFlags: []) + #else + + guard self.app != nil else { + NSLog("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().") + return + } + + let screenshot = XCUIScreen.main.screenshot() + #if os(iOS) + let image = XCUIDevice.shared.orientation.isLandscape ? fixLandscapeOrientation(image: screenshot.image) : screenshot.image + #else + let image = screenshot.image + #endif + + guard var simulator = ProcessInfo().environment["SIMULATOR_DEVICE_NAME"], let screenshotsDir = screenshotsDirectory else { return } + + do { + // The simulator name contains "Clone X of " inside the screenshot file when running parallelized UI Tests on concurrent devices + let regex = try NSRegularExpression(pattern: "Clone [0-9]+ of ") + let range = NSRange(location: 0, length: simulator.count) + simulator = regex.stringByReplacingMatches(in: simulator, range: range, withTemplate: "") + + let path = screenshotsDir.appendingPathComponent("\(simulator)-\(name).png") + #if swift(<5.0) + UIImagePNGRepresentation(image)?.write(to: path, options: .atomic) + #else + try image.pngData()?.write(to: path, options: .atomic) + #endif + } catch let error { + NSLog("Problem writing screenshot: \(name) to \(screenshotsDir)/\(simulator)-\(name).png") + NSLog(error.localizedDescription) + } + #endif + } + + class func fixLandscapeOrientation(image: UIImage) -> UIImage { + #if os(watchOS) + return image + #else + if #available(iOS 10.0, *) { + let format = UIGraphicsImageRendererFormat() + format.scale = image.scale + let renderer = UIGraphicsImageRenderer(size: image.size, format: format) + return renderer.image { context in + image.draw(in: CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height)) + } + } else { + return image + } + #endif + } + + class func waitForLoadingIndicatorToDisappear(within timeout: TimeInterval) { + #if os(tvOS) + return + #endif + + guard let app = self.app else { + NSLog("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().") + return + } + + let networkLoadingIndicator = app.otherElements.deviceStatusBars.networkLoadingIndicators.element + let networkLoadingIndicatorDisappeared = XCTNSPredicateExpectation(predicate: NSPredicate(format: "exists == false"), object: networkLoadingIndicator) + _ = XCTWaiter.wait(for: [networkLoadingIndicatorDisappeared], timeout: timeout) + } + + class func getCacheDirectory() throws -> URL { + let cachePath = "Library/Caches/tools.fastlane" + // on OSX config is stored in /Users/<username>/Library + // and on iOS/tvOS/WatchOS it's in simulator's home dir + #if os(OSX) + let homeDir = URL(fileURLWithPath: NSHomeDirectory()) + return homeDir.appendingPathComponent(cachePath) + #elseif arch(i386) || arch(x86_64) || arch(arm64) + guard let simulatorHostHome = ProcessInfo().environment["SIMULATOR_HOST_HOME"] else { + throw SnapshotError.cannotFindSimulatorHomeDirectory + } + let homeDir = URL(fileURLWithPath: simulatorHostHome) + return homeDir.appendingPathComponent(cachePath) + #else + throw SnapshotError.cannotRunOnPhysicalDevice + #endif + } +} + +private extension XCUIElementAttributes { + var isNetworkLoadingIndicator: Bool { + if hasAllowListedIdentifier { return false } + + let hasOldLoadingIndicatorSize = frame.size == CGSize(width: 10, height: 20) + let hasNewLoadingIndicatorSize = frame.size.width.isBetween(46, and: 47) && frame.size.height.isBetween(2, and: 3) + + return hasOldLoadingIndicatorSize || hasNewLoadingIndicatorSize + } + + var hasAllowListedIdentifier: Bool { + let allowListedIdentifiers = ["GeofenceLocationTrackingOn", "StandardLocationTrackingOn"] + + return allowListedIdentifiers.contains(identifier) + } + + func isStatusBar(_ deviceWidth: CGFloat) -> Bool { + if elementType == .statusBar { return true } + guard frame.origin == .zero else { return false } + + let oldStatusBarSize = CGSize(width: deviceWidth, height: 20) + let newStatusBarSize = CGSize(width: deviceWidth, height: 44) + + return [oldStatusBarSize, newStatusBarSize].contains(frame.size) + } +} + +private extension XCUIElementQuery { + var networkLoadingIndicators: XCUIElementQuery { + let isNetworkLoadingIndicator = NSPredicate { (evaluatedObject, _) in + guard let element = evaluatedObject as? XCUIElementAttributes else { return false } + + return element.isNetworkLoadingIndicator + } + + return self.containing(isNetworkLoadingIndicator) + } + + var deviceStatusBars: XCUIElementQuery { + guard let app = Snapshot.app else { + fatalError("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().") + } + + let deviceWidth = app.windows.firstMatch.frame.width + + let isStatusBar = NSPredicate { (evaluatedObject, _) in + guard let element = evaluatedObject as? XCUIElementAttributes else { return false } + + return element.isStatusBar(deviceWidth) + } + + return self.containing(isStatusBar) + } +} + +private extension CGFloat { + func isBetween(_ numberA: CGFloat, and numberB: CGFloat) -> Bool { + return numberA...numberB ~= self + } +} + +// Please don't remove the lines below +// They are used to detect outdated configuration files +// SnapshotHelperVersion [1.27]
--- a/Simoleon/Helpers/SubscribeButton.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,105 +0,0 @@ -// -// SubscribeButton.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 22/07/2021. -// - -import SwiftUI -import Purchases - -struct SubscribeButton: View { - @Binding var showingSubscriptionPaywall: Bool - - @State private var price = "" - @State private var alertTitle = "" - @State private var alertMessage = "" - @State private var showingAlert = false - @State private var showingPrice = false - - var body: some View { - Button(action: purchaseMonthlySubscription) { - RoundedRectangle(cornerRadius: 15) - .frame(height: 60) - .overlay( - VStack { - if showingPrice { - Text("Subscribe for \(price) / month") - .foregroundColor(.white) - .fontWeight(.semibold) - } else { - ProgressView() - } - } - ) - } - .onAppear(perform: fetchMonthlySubscription) - .alert(isPresented: $showingAlert) { - Alert(title: Text(alertTitle), message: Text(alertMessage), dismissButton: .default(Text("Ok"))) - } - } - - private func fetchMonthlySubscription() { - Purchases.shared.offerings { (offerings, error) in - if let product = offerings?.current?.monthly?.product { - price = formatCurrency(product.priceLocale, product.price) - showingPrice = true - } - - if let error = error as NSError? { - alertTitle = error.localizedDescription - alertMessage = error.localizedFailureReason ?? "" - price = "-" - showingPrice = true - showingAlert = true - } - } - } - - private func purchaseMonthlySubscription() { - showingPrice = false - - Purchases.shared.offerings { (offerings, error) in - if let package = offerings?.current?.monthly { - - Purchases.shared.purchasePackage(package) { (transaction, purchaserInfo, error, userCancelled) in - if purchaserInfo?.entitlements["all"]?.isActive == true { - showingPrice = true - showingSubscriptionPaywall = false - } - - if let error = error as NSError? { - alertTitle = error.localizedDescription - alertMessage = error.localizedFailureReason ?? "" - showingPrice = true - showingAlert = true - } - } - - if let error = error as NSError? { - alertTitle = error.localizedDescription - alertMessage = error.localizedFailureReason ?? "" - showingPrice = true - showingAlert = true - } - } - } - } - - private func formatCurrency(_ locale: Locale, _ amount: NSDecimalNumber) -> String { - let formatter = NumberFormatter() - formatter.locale = locale - formatter.numberStyle = .currency - - // It won't fail. Check unit test - let formattedAmount = formatter.string(from: amount as NSNumber)! - - return formattedAmount - } -} - -struct SubscribeButton_Previews: PreviewProvider { - static var previews: some View { - SubscribeButton(showingSubscriptionPaywall: .constant(true)) - } -}
--- a/Simoleon/Helpers/SubscriptionFeature.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -// -// SubscriptionFeature.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 26/07/2021. -// - -import SwiftUI - -struct SubscriptionFeature: View { - var symbol: String - var colour: Color - var title: LocalizedStringKey - var description: LocalizedStringKey - - var body: some View { - HStack(alignment:.top) { - Image(systemName: symbol) - .foregroundColor(colour) - .font(.title) - - VStack(alignment: .leading) { - Text(title) - .font(.headline) - - Text(description) - } - } - } -} - -struct SubscriptionFeature_Previews: PreviewProvider { - static var previews: some View { - SubscriptionFeature( - symbol: "star.circle.fill", - colour: Color(.systemYellow), - title: "Favorite Currencies", - description: "Save your favorite currencies to access them quickly." - ) - } -}
--- a/Simoleon/Info.plist Tue Aug 17 22:14:58 2021 +0100 +++ b/Simoleon/Info.plist Tue Oct 12 16:17:35 2021 +0200 @@ -4,8 +4,6 @@ <dict> <key>API_KEY</key> <string>$(API_KEY)</string> - <key>API_URL</key> - <string>$(API_URL)</string> <key>CFBundleDevelopmentRegion</key> <string>$(DEVELOPMENT_LANGUAGE)</string> <key>CFBundleDisplayName</key> @@ -26,8 +24,6 @@ <string>1</string> <key>LSRequiresIPhoneOS</key> <true/> - <key>PURCHASES_KEY</key> - <string>$(PURCHASES_KEY)</string> <key>UIApplicationSceneManifest</key> <dict> <key>UIApplicationSupportsMultipleScenes</key>
Binary file Simoleon/Localization/en.xcloc/Source Contents/Simoleon/de.lproj/Localizable.strings has changed
Binary file Simoleon/Localization/en.xcloc/Source Contents/Simoleon/en-GB.lproj/Localizable.strings has changed
Binary file Simoleon/Localization/en.xcloc/Source Contents/Simoleon/en.lproj/Localizable.strings has changed
Binary file Simoleon/Localization/en.xcloc/Source Contents/Simoleon/es.lproj/Localizable.strings has changed
Binary file Simoleon/Localization/en.xcloc/Source Contents/Simoleon/fr.lproj/Localizable.strings has changed
Binary file Simoleon/Localization/en.xcloc/Source Contents/Simoleon/it.lproj/Localizable.strings has changed
Binary file Simoleon/Localization/en.xcloc/Source Contents/Simoleon/nl.lproj/Localizable.strings has changed
Binary file Simoleon/Localization/en.xcloc/Source Contents/Simoleon/pt-PT.lproj/Localizable.strings has changed
Binary file Simoleon/Localization/en.xcloc/Source Contents/Simoleon/ru.lproj/Localizable.strings has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Models/CurrencyConversion.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,47 @@ +// +// CurrencyConversion.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 26/8/21. +// + +import Foundation + +class CurrencyConversion: ObservableObject { + // Forex pair -> XXX/YYY where XXX = base symbol, YYY = quote symbol + + @Published var baseSymbol = "USD" { + didSet { + getQuote() + } + } + @Published var quoteSymbol = "EUR" { + didSet { + getQuote() + } + } + @Published var quote = CurrencyQuoteModel() + @Published var isShowing = false + @Published var showingAlert = false + + let networkHelper = NetworkHelper() + + init() { + getQuote() + } + + func getQuote() { + self.isShowing = false + let pair = "\(baseSymbol)/\(quoteSymbol)" + let apiKey = readConfig(withKey: "API_KEY")! + let url = "https://api.1forge.com/quotes?pairs=\(pair)&api_key=\(apiKey)" + + try? networkHelper.httpRequest(url: url, model: [CurrencyQuoteModel].self) { response in + if let quote = response.first { + self.quote = quote + } + + self.isShowing = true + } + } +}
--- a/Simoleon/Models/CurrencyMetadataModel.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -// -// CurrencyMetadataModel.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 15/07/2021. -// - -import SwiftUI - -struct CurrencyMetadataModel: Codable { - var name: String - var flag: String -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Models/CurrencyModel.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,15 @@ +// +// CurrencyDetailsModel.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 23/8/21. +// + +import Foundation + +struct CurrencyModel: Codable { + var symbol: String + var name: String + var flag: String + var isCrypto: Bool +}
--- a/Simoleon/Models/CurrencyPairModel.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -// -// CurrencyPairModel.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 30/7/21. -// - -import SwiftUI - -struct CurrencyPairModel: Codable, Hashable { - var name: String - var isLocked: Bool -}
--- a/Simoleon/Models/CurrencyQuoteModel.swift Tue Aug 17 22:14:58 2021 +0100 +++ b/Simoleon/Models/CurrencyQuoteModel.swift Tue Oct 12 16:17:35 2021 +0200 @@ -5,17 +5,17 @@ // Created by Dennis Concepción Martín on 15/07/2021. // -import SwiftUI +import Foundation struct CurrencyQuoteModel: Codable, Hashable { - var symbol: String? + var pair: String? var price: Double? var bid: Double? var ask: Double? var timeStamp: Int? private enum CodingKeys: String, CodingKey { - case symbol = "s" + case pair = "s" case price = "p" case bid = "b" case ask = "a"
--- a/Simoleon/Models/DefaultCurrency+CoreDataClass.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -// -// DefaultCurrency+CoreDataClass.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 21/07/2021. -// -// - -import Foundation -import CoreData - -@objc(DefaultCurrency) -public class DefaultCurrency: NSManagedObject { - -}
--- a/Simoleon/Models/DefaultCurrency+CoreDataProperties.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -// -// DefaultCurrency+CoreDataProperties.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 21/07/2021. -// -// - -import Foundation -import CoreData - - -extension DefaultCurrency { - - @nonobjc public class func fetchRequest() -> NSFetchRequest<DefaultCurrency> { - return NSFetchRequest<DefaultCurrency>(entityName: "DefaultCurrency") - } - - @NSManaged public var pair: String? - -}
--- a/Simoleon/Models/Favorite+CoreDataClass.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -// -// Favorite+CoreDataClass.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 19/07/2021. -// -// - -import Foundation -import CoreData - -@objc(Favorite) -public class Favorite: NSManagedObject { - -}
--- a/Simoleon/Models/Favorite+CoreDataProperties.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -// -// Favorite+CoreDataProperties.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 19/07/2021. -// -// - -import Foundation -import CoreData - - -extension Favorite { - - @nonobjc public class func fetchRequest() -> NSFetchRequest<Favorite> { - return NSFetchRequest<Favorite>(entityName: "Favorite") - } - - @NSManaged public var currencyPair: String - -} - -extension Favorite : Identifiable { - -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Models/FavoritePair+CoreDataClass.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,15 @@ +// +// FavoritePair+CoreDataClass.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 28/8/21. +// +// + +import Foundation +import CoreData + +@objc(FavoritePair) +public class FavoritePair: NSManagedObject { + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Models/FavoritePair+CoreDataProperties.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,26 @@ +// +// FavoritePair+CoreDataProperties.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 28/8/21. +// +// + +import Foundation +import CoreData + + +extension FavoritePair { + + @nonobjc public class func fetchRequest() -> NSFetchRequest<FavoritePair> { + return NSFetchRequest<FavoritePair>(entityName: "FavoritePair") + } + + @NSManaged public var baseSymbol: String + @NSManaged public var quoteSymbol: String + +} + +extension FavoritePair : Identifiable { + +}
--- a/Simoleon/Persistence.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ -// -// Persistence.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 08/07/2021. -// - -import CoreData - -struct PersistenceController { - static let shared = PersistenceController() - - static var preview: PersistenceController = { - let result = PersistenceController(inMemory: true) - let viewContext = result.container.viewContext - - for _ in 0..<10 { - let favorite = Favorite(context: viewContext) - favorite.currencyPair = "USD/GBP" - } - do { - try viewContext.save() - } catch { - /* - Replace this implementation with code to handle the error appropriately. - fatalError() causes the application to generate a crash log and terminate. - You should not use this function in a shipping application, although it may be useful during development. - */ - let nsError = error as NSError - fatalError("Unresolved error \(nsError), \(nsError.userInfo)") - } - return result - }() - - let container: NSPersistentCloudKitContainer - - init(inMemory: Bool = false) { - container = NSPersistentCloudKitContainer(name: "Simoleon") - container.viewContext.automaticallyMergesChangesFromParent = true - container.viewContext.mergePolicy = NSMergeByPropertyStoreTrumpMergePolicy - if inMemory { - container.persistentStoreDescriptions.first!.url = URL(fileURLWithPath: "/dev/null") - } - container.loadPersistentStores(completionHandler: { (storeDescription, error) in - if let error = error as NSError? { - /* - Replace this implementation with code to handle the error appropriately. - fatalError() causes the application to generate a crash log and terminate. - You should not use this function in a shipping application, although it may be useful during development. - */ - - /* - Typical reasons for an error here include: - * The parent directory does not exist, cannot be created, or disallows writing. - * The persistent store is not accessible, due to permissions or data protection when the device is locked. - * The device is out of space. - * The store could not be migrated to the current model version. - Check the error message to determine what the actual problem was. - */ - fatalError("Unresolved error \(error), \(error.userInfo)") - } - }) - } -}
--- a/Simoleon/Resources/Base.lproj/CurrencyMetadata.json Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,714 +0,0 @@ -{ - "AED": { - "name": "United Arab Emirates Dirham", - "flag": "AE" - }, - "AFN": { - "name": "Afghan Afghani", - "flag": "AF" - }, - "ALL": { - "name": "Albanian Lek", - "flag": "AL" - }, - "AMD": { - "name": "Armenian Dram", - "flag": "AM" - }, - "ANG": { - "name": "Netherlands Antillean Guilder", - "flag": "CW" - }, - "AOA": { - "name": "Angolan Kwanza", - "flag": "AO" - }, - "ARE": { - "name": "Areg", - "flag": "AR" - }, - "ARS": { - "name": "Argentine Peso", - "flag": "AR" - }, - "AUD": { - "name": "Australian Dollar", - "flag": "AU" - }, - "AUN": { - "name": "Australian Nugget", - "flag": "AU" - }, - "AWG": { - "name": "Aruban Florin", - "flag": "AW" - }, - "BAM": { - "name": "Bosnia And Herzegovina Convertible Mark", - "flag": "BA" - }, - "BBD": { - "name": "Barbados Dollar", - "flag": "BB" - }, - "BDT": { - "name": "Bangladeshi Taka", - "flag": "BD" - }, - "BGN": { - "name": "Bulgarian Lev", - "flag": "BG" - }, - "BHD": { - "name": "Bahraini Dinar", - "flag": "BH" - }, - "BIF": { - "name": "Burundian Franc", - "flag": "BI" - }, - "BMD": { - "name": "Bermudian Dollar", - "flag": "BM" - }, - "BND": { - "name": "Brunei Dollar", - "flag": "BN" - }, - "BOB": { - "name": "Boliviano", - "flag": "BO" - }, - "BRI": { - "name": "Britannia", - "flag": "BR" - }, - "BRL": { - "name": "Brazilian Real", - "flag": "BR" - }, - "BSD": { - "name": "Bahamian Dollar", - "flag": "BS" - }, - "BTN": { - "name": "Bhutanese Ngultrum", - "flag": "BT" - }, - "BWP": { - "name": "Botswana Pula", - "flag": "BW" - }, - "BYN": { - "name": "Belarusian Ruble", - "flag": "BY" - }, - "BZD": { - "name": "Belize Dollar", - "flag": "BZ" - }, - "CAD": { - "name": "Canadian Dollar", - "flag": "CA" - }, - "CDF": { - "name": "Congolese Franc", - "flag": "CD" - }, - "CHF": { - "name": "Swiss Franc", - "flag": "CH" - }, - "CLF": { - "name": "Chilean Unit Of Account", - "flag": "CL" - }, - "CLP": { - "name": "Chilean Peso", - "flag": "CL" - }, - "CNH": { - "name": "Chinese Yuan", - "flag": "CN" - }, - "CNY": { - "name": "Chinese Yuan", - "flag": "CN" - }, - "COP": { - "name": "Colombian Peso", - "flag": "CO" - }, - "CRC": { - "name": "Costa Rican Colon", - "flag": "CR" - }, - "CUP": { - "name": "Cuban Peso", - "flag": "CU" - }, - "CVE": { - "name": "Cape Verde Escudo", - "flag": "CV" - }, - "CYP": { - "name": "Cypriot Pound", - "flag": "CY" - }, - "CZK": { - "name": "Czech Koruna", - "flag": "CZ" - }, - "DJF": { - "name": "Djiboutian Franc", - "flag": "DJ" - }, - "DKK": { - "name": "Danish Krone", - "flag": "DK" - }, - "DOE": { - "name": "Double Eagle", - "flag": "DO" - }, - "DOP": { - "name": "Dominican Peso", - "flag": "DO" - }, - "DZD": { - "name": "Algerian Dinar", - "flag": "DZ" - }, - "EGP": { - "name": "Egyptian Pound", - "flag": "EG" - }, - "ETB": { - "name": "Ethiopian Birr", - "flag": "ET" - }, - "EUR": { - "name": "Euro", - "flag": "EU" - }, - "FJD": { - "name": "Fiji Dollar", - "flag": "FJ" - }, - "FRN": { - "name": "French Napoleon", - "flag": "FR" - }, - "GBP": { - "name": "Pound Sterling", - "flag": "GB" - }, - "GEL": { - "name": "Georgian Lari", - "flag": "GE" - }, - "GHS": { - "name": "Ghanaian Cedi", - "flag": "GH" - }, - "GMD": { - "name": "Gambian Dalasi", - "flag": "GM" - }, - "GNF": { - "name": "Guinean Franc", - "flag": "GN" - }, - "GTQ": { - "name": "Guatemalan Quetzal", - "flag": "GT" - }, - "GYD": { - "name": "Guyanese Dollar", - "flag": "GY" - }, - "HKD": { - "name": "Hong Kong Dollar", - "flag": "HK" - }, - "HNL": { - "name": "Honduran Lempira", - "flag": "HN" - }, - "HRK": { - "name": "Croatian Kuna", - "flag": "HR" - }, - "HTG": { - "name": "Haitian Gourde", - "flag": "HT" - }, - "HUF": { - "name": "Hungarian Forint", - "flag": "HU" - }, - "IDR": { - "name": "Indonesian Rupiah", - "flag": "ID" - }, - "ILS": { - "name": "Israeli New Shekel", - "flag": "IL" - }, - "INR": { - "name": "Indian Rupee", - "flag": "IN" - }, - "IQD": { - "name": "Iraqi Dinar", - "flag": "IQ" - }, - "IRR": { - "name": "Iranian Rial", - "flag": "IR" - }, - "ISK": { - "name": "Icelandic Kr\u00f3na", - "flag": "IS" - }, - "JMD": { - "name": "Jamaican Dollar", - "flag": "JM" - }, - "JOD": { - "name": "Jordanian Dinar", - "flag": "JO" - }, - "JPY": { - "name": "Japanese Yen", - "flag": "JP" - }, - "KES": { - "name": "Kenyan Shilling", - "flag": "KE" - }, - "KHR": { - "name": "Cambodian Riel", - "flag": "KH" - }, - "KMF": { - "name": "Comoro Franc", - "flag": "KM" - }, - "KRU": { - "name": "South African Krugerrand", - "flag": "KR" - }, - "KRW": { - "name": "South Korean Won", - "flag": "KR" - }, - "KWD": { - "name": "Kuwaiti Dinar", - "flag": "KW" - }, - "KYD": { - "name": "Cayman Islands Dollar", - "flag": "KY" - }, - "KZT": { - "name": "Kazakhstani Tenge", - "flag": "KZ" - }, - "LAK": { - "name": "Lao Kip", - "flag": "LA" - }, - "LBP": { - "name": "Lebanese Pound", - "flag": "LB" - }, - "LFX": { - "name": "Khazanah Sukuk", - "flag": "MY" - }, - "LKR": { - "name": "Sri Lankan Rupee", - "flag": "LK" - }, - "LRD": { - "name": "Liberian Dollar", - "flag": "LR" - }, - "LSL": { - "name": "Lesotho Loti", - "flag": "LS" - }, - "LTL": { - "name": "Lithuanian Litas", - "flag": "LT" - }, - "LYD": { - "name": "Libyan Dinar", - "flag": "LY" - }, - "M5P": { - "name": "Mexican 50 Peso", - "flag": "MX" - }, - "MAD": { - "name": "Moroccan Dirham", - "flag": "MA" - }, - "MAL": { - "name": "Maple Leaf", - "flag": "MA" - }, - "MDL": { - "name": "Moldovan Leu", - "flag": "MD" - }, - "MGA": { - "name": "Malagasy Ariary", - "flag": "MG" - }, - "MKD": { - "name": "Macedonian Denar", - "flag": "MK" - }, - "MMK": { - "name": "Myanma Kyat", - "flag": "MM" - }, - "MOP": { - "name": "Macanese Pataca", - "flag": "MO" - }, - "MRU": { - "name": "Mauritanian Ouguiya", - "flag": "MR" - }, - "MTL": { - "name": "Maltese Lira", - "flag": "MT" - }, - "MUR": { - "name": "Mauritian Rupee", - "flag": "MU" - }, - "MVR": { - "name": "Maldivian Rufiyaa", - "flag": "MV" - }, - "MWK": { - "name": "Malawian Kwacha", - "flag": "MW" - }, - "MXN": { - "name": "Mexican Peso", - "flag": "MX" - }, - "MYR": { - "name": "Malaysian Ringgit", - "flag": "MY" - }, - "MZN": { - "name": "Mozambican Metical", - "flag": "MZ" - }, - "NAD": { - "name": "Namibian Dollar", - "flag": "NA" - }, - "NBL": { - "name": "Isle Of Man Noble", - "flag": "IM" - }, - "NGN": { - "name": "Nigerian Naira", - "flag": "NG" - }, - "NIO": { - "name": "Nicaraguan C\u00f3rdoba", - "flag": "NI" - }, - "NOK": { - "name": "Norwegian Krone", - "flag": "NO" - }, - "NPR": { - "name": "Nepalese Rupee", - "flag": "NP" - }, - "NSO": { - "name": "New Sovereign", - "flag": "GB" - }, - "NZD": { - "name": "New Zealand Dollar", - "flag": "NZ" - }, - "OMR": { - "name": "Omani Rial", - "flag": "OM" - }, - "OSO": { - "name": "Old Sovereign", - "flag": "GB" - }, - "PAB": { - "name": "Panamanian Balboa", - "flag": "PA" - }, - "PEN": { - "name": "Peruvian Nuevo Sol", - "flag": "PE" - }, - "PGK": { - "name": "Papua New Guinean Kina", - "flag": "PG" - }, - "PHP": { - "name": "Philippine Peso", - "flag": "PH" - }, - "PKR": { - "name": "Pakistani Rupee", - "flag": "PK" - }, - "PLN": { - "name": "Polish Z\u0142oty", - "flag": "PL" - }, - "PYG": { - "name": "Paraguayan Guaran\u00ed", - "flag": "PY" - }, - "QAR": { - "name": "Qatari Riyal", - "flag": "QA" - }, - "RON": { - "name": "Romanian New Leu", - "flag": "RO" - }, - "RSD": { - "name": "Serbian Dinar", - "flag": "RS" - }, - "RUB": { - "name": "Russian Rouble", - "flag": "RU" - }, - "RWF": { - "name": "Rwandan Franc", - "flag": "RW" - }, - "SAR": { - "name": "Saudi Riyal", - "flag": "SA" - }, - "SBD": { - "name": "Solomon Islands Dollar", - "flag": "SB" - }, - "SCR": { - "name": "Seychelles Rupee", - "flag": "SC" - }, - "SDG": { - "name": "Sudanese Pound", - "flag": "SD" - }, - "SEK": { - "name": "Swedish Krona", - "flag": "SE" - }, - "SGD": { - "name": "Singapore Dollar", - "flag": "SG" - }, - "SHP": { - "name": "Saint Helena Pound", - "flag": "SH" - }, - "SLL": { - "name": "Sierra Leonean Leone", - "flag": "SL" - }, - "SOS": { - "name": "Somali Shilling", - "flag": "SO" - }, - "SRD": { - "name": "Surinamese Dollar", - "flag": "SR" - }, - "STN": { - "name": "Sao Tomean Dobra", - "flag": "ST" - }, - "SVC": { - "name": "Salvadoran Col\u00f3n", - "flag": "SV" - }, - "SZL": { - "name": "Swazi Lilangeni", - "flag": "SZ" - }, - "THB": { - "name": "Thai Baht", - "flag": "TH" - }, - "TJS": { - "name": "Tajikistani Somoni", - "flag": "TJ" - }, - "TMT": { - "name": "Turkmenistani Manat", - "flag": "TM" - }, - "TND": { - "name": "Tunisian Dinar", - "flag": "TN" - }, - "TOP": { - "name": "Tongan Pa\u02bbAnga", - "flag": "TO" - }, - "TRY": { - "name": "Turkish Lira", - "flag": "TR" - }, - "TTD": { - "name": "Trinidad And Tobago Dollar", - "flag": "TT" - }, - "TWD": { - "name": "New Taiwan Dollar", - "flag": "TW" - }, - "TZS": { - "name": "Tanzanian Shilling", - "flag": "TZ" - }, - "UAH": { - "name": "Ukrainian Hryvnia", - "flag": "UA" - }, - "UGX": { - "name": "Ugandan Shilling", - "flag": "UG" - }, - "USD": { - "name": "United States Dollar", - "flag": "US" - }, - "UYU": { - "name": "Uruguayan Peso", - "flag": "UY" - }, - "UZS": { - "name": "Uzbekistan Som", - "flag": "UZ" - }, - "VES": { - "name": "Venezuelan Bolivar Soberano", - "flag": "VE" - }, - "VND": { - "name": "Vietnamese Dong", - "flag": "VN" - }, - "VRL": { - "name": "Vreneli 10F.", - "flag": "CH" - }, - "VRN": { - "name": "Vreneli 20F", - "flag": "CH" - }, - "XAG": { - "name": "Silver (One Troy Ounce)", - "flag": "XAG" - }, - "XAGK": { - "name": "Silver (Kg)", - "flag": "XAG" - }, - "XAU": { - "name": "Gold (One Troy Ounce)", - "flag": "XAU" - }, - "XAUK": { - "name": "Gold (Kg)", - "flag": "XAU" - }, - "XCD": { - "name": "East Caribbean Dollar", - "flag": "AI" - }, - "XOF": { - "name": "Cfa Franc Bceao", - "flag": "SN" - }, - "XPD": { - "name": "Palladium (One Troy Ounce)", - "flag": "XPD" - }, - "XPDK": { - "name": "Palladium (Kg)", - "flag": "XPD" - }, - "XPF": { - "name": "Cfp Franc", - "flag": "PF" - }, - "XPT": { - "name": "Platinum (One Troy Ounce)", - "flag": "XPT" - }, - "XPTK": { - "name": "Platinum (Kg)", - "flag": "XPT" - }, - "YER": { - "name": "Yemeni Rial", - "flag": "YE" - }, - "ZAR": { - "name": "South African Rand", - "flag": "ZA" - }, - "ZMW": { - "name": "Zambian Kwacha", - "flag": "ZM" - }, - "ZWD": { - "name": "Zimbabwe Dollar", - "flag": "ZW" - }, - "DASH": { - "name": "Dash Cryptocurrency", - "flag": "DASH" - }, - "BTC": { - "name": "Bitcoin", - "flag": "BTC" - }, - "DSH": { - "name": "Dash Cryptocurrency", - "flag": "DASH" - }, - "LTC": { - "name": "Litecoin", - "flag": "LTC" - }, - "ETH": { - "name": "Ethereum", - "flag": "ETH" - }, - "BCH": { - "name": "Bitcoin Cash", - "flag": "BTC" - }, - "XRP": { - "name": "Xrp Cryptocurrency", - "flag": "XRP" - } -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Resources/Currencies.json Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,1374 @@ +{ + "AED": + { + "symbol": "AED", + "name": "United Arab Emirates Dirham", + "flag": "AE", + "isCrypto": false + }, + "AFN": + { + "symbol": "AFN", + "name": "Afghan Afghani", + "flag": "AF", + "isCrypto": false + }, + "ALL": + { + "symbol": "ALL", + "name": "Albanian Lek", + "flag": "AL", + "isCrypto": false + }, + "AMD": + { + "symbol": "AMD", + "name": "Armenian Dram", + "flag": "AM", + "isCrypto": false + }, + "ANG": + { + "symbol": "ANG", + "name": "Netherlands Antillean Guilder", + "flag": "CW", + "isCrypto": false + }, + "AOA": + { + "symbol": "AOA", + "name": "Angolan Kwanza", + "flag": "AO", + "isCrypto": false + }, + "ARE": + { + "symbol": "ARE", + "name": "Areg", + "flag": "AR", + "isCrypto": false + }, + "ARS": + { + "symbol": "ARS", + "name": "Argentine Peso", + "flag": "AR", + "isCrypto": false + }, + "AUD": + { + "symbol": "AUD", + "name": "Australian Dollar", + "flag": "AU", + "isCrypto": false + }, + "AUN": + { + "symbol": "AUN", + "name": "Australian Nugget", + "flag": "AU", + "isCrypto": false + }, + "AWG": + { + "symbol": "AWG", + "name": "Aruban Florin", + "flag": "AW", + "isCrypto": false + }, + "BAM": + { + "symbol": "BAM", + "name": "Bosnia And Herzegovina Convertible Mark", + "flag": "BA", + "isCrypto": false + }, + "BBD": + { + "symbol": "BBD", + "name": "Barbados Dollar", + "flag": "BB", + "isCrypto": false + }, + "BDT": + { + "symbol": "BDT", + "name": "Bangladeshi Taka", + "flag": "BD", + "isCrypto": false + }, + "BGN": + { + "symbol": "BGN", + "name": "Bulgarian Lev", + "flag": "BG", + "isCrypto": false + }, + "BHD": + { + "symbol": "BHD", + "name": "Bahraini Dinar", + "flag": "BH", + "isCrypto": false + }, + "BIF": + { + "symbol": "BIF", + "name": "Burundian Franc", + "flag": "BI", + "isCrypto": false + }, + "BMD": + { + "symbol": "BMD", + "name": "Bermudian Dollar", + "flag": "BM", + "isCrypto": false + }, + "BND": + { + "symbol": "BND", + "name": "Brunei Dollar", + "flag": "BN", + "isCrypto": false + }, + "BOB": + { + "symbol": "BOB", + "name": "Boliviano", + "flag": "BO", + "isCrypto": false + }, + "BRI": + { + "symbol": "BRI", + "name": "Britannia", + "flag": "BR", + "isCrypto": false + }, + "BRL": + { + "symbol": "BRL", + "name": "Brazilian Real", + "flag": "BR", + "isCrypto": false + }, + "BSD": + { + "symbol": "BSD", + "name": "Bahamian Dollar", + "flag": "BS", + "isCrypto": false + }, + "BTN": + { + "symbol": "BTN", + "name": "Bhutanese Ngultrum", + "flag": "BT", + "isCrypto": false + }, + "BWP": + { + "symbol": "BWP", + "name": "Botswana Pula", + "flag": "BW", + "isCrypto": false + }, + "BYN": + { + "symbol": "BYN", + "name": "Belarusian Ruble", + "flag": "BY", + "isCrypto": false + }, + "BZD": + { + "symbol": "BZD", + "name": "Belize Dollar", + "flag": "BZ", + "isCrypto": false + }, + "CAD": + { + "symbol": "CAD", + "name": "Canadian Dollar", + "flag": "CA", + "isCrypto": false + }, + "CDF": + { + "symbol": "CDF", + "name": "Congolese Franc", + "flag": "CD", + "isCrypto": false + }, + "CHF": + { + "symbol": "CHF", + "name": "Swiss Franc", + "flag": "CH", + "isCrypto": false + }, + "CLF": + { + "symbol": "CLF", + "name": "Chilean Unit Of Account", + "flag": "CL", + "isCrypto": false + }, + "CLP": + { + "symbol": "CLP", + "name": "Chilean Peso", + "flag": "CL", + "isCrypto": false + }, + "CNH": + { + "symbol": "CNH", + "name": "Chinese Yuan", + "flag": "CN", + "isCrypto": false + }, + "CNY": + { + "symbol": "CNY", + "name": "Chinese Yuan", + "flag": "CN", + "isCrypto": false + }, + "COP": + { + "symbol": "COP", + "name": "Colombian Peso", + "flag": "CO", + "isCrypto": false + }, + "CRC": + { + "symbol": "CRC", + "name": "Costa Rican Colon", + "flag": "CR", + "isCrypto": false + }, + "CUP": + { + "symbol": "CUP", + "name": "Cuban Peso", + "flag": "CU", + "isCrypto": false + }, + "CVE": + { + "symbol": "CVE", + "name": "Cape Verde Escudo", + "flag": "CV", + "isCrypto": false + }, + "CYP": + { + "symbol": "CYP", + "name": "Cypriot Pound", + "flag": "CY", + "isCrypto": false + }, + "CZK": + { + "symbol": "CZK", + "name": "Czech Koruna", + "flag": "CZ", + "isCrypto": false + }, + "DJF": + { + "symbol": "DJF", + "name": "Djiboutian Franc", + "flag": "DJ", + "isCrypto": false + }, + "DKK": + { + "symbol": "DKK", + "name": "Danish Krone", + "flag": "DK", + "isCrypto": false + }, + "DOE": + { + "symbol": "DOE", + "name": "Double Eagle", + "flag": "DO", + "isCrypto": false + }, + "DOP": + { + "symbol": "DOP", + "name": "Dominican Peso", + "flag": "DO", + "isCrypto": false + }, + "DZD": + { + "symbol": "DZD", + "name": "Algerian Dinar", + "flag": "DZ", + "isCrypto": false + }, + "EGP": + { + "symbol": "EGP", + "name": "Egyptian Pound", + "flag": "EG", + "isCrypto": false + }, + "ETB": + { + "symbol": "ETB", + "name": "Ethiopian Birr", + "flag": "ET", + "isCrypto": false + }, + "EUR": + { + "symbol": "EUR", + "name": "Euro", + "flag": "EU", + "isCrypto": false + }, + "FJD": + { + "symbol": "FJD", + "name": "Fiji Dollar", + "flag": "FJ", + "isCrypto": false + }, + "FRN": + { + "symbol": "FRN", + "name": "French Napoleon", + "flag": "FR", + "isCrypto": false + }, + "GBP": + { + "symbol": "GBP", + "name": "Pound Sterling", + "flag": "GB", + "isCrypto": false + }, + "GEL": + { + "symbol": "GEL", + "name": "Georgian Lari", + "flag": "GE", + "isCrypto": false + }, + "GHS": + { + "symbol": "GHS", + "name": "Ghanaian Cedi", + "flag": "GH", + "isCrypto": false + }, + "GMD": + { + "symbol": "GMD", + "name": "Gambian Dalasi", + "flag": "GM", + "isCrypto": false + }, + "GNF": + { + "symbol": "GNF", + "name": "Guinean Franc", + "flag": "GN", + "isCrypto": false + }, + "GTQ": + { + "symbol": "GTQ", + "name": "Guatemalan Quetzal", + "flag": "GT", + "isCrypto": false + }, + "GYD": + { + "symbol": "GYD", + "name": "Guyanese Dollar", + "flag": "GY", + "isCrypto": false + }, + "HKD": + { + "symbol": "HKD", + "name": "Hong Kong Dollar", + "flag": "HK", + "isCrypto": false + }, + "HNL": + { + "symbol": "HNL", + "name": "Honduran Lempira", + "flag": "HN", + "isCrypto": false + }, + "HRK": + { + "symbol": "HRK", + "name": "Croatian Kuna", + "flag": "HR", + "isCrypto": false + }, + "HTG": + { + "symbol": "HTG", + "name": "Haitian Gourde", + "flag": "HT", + "isCrypto": false + }, + "HUF": + { + "symbol": "HUF", + "name": "Hungarian Forint", + "flag": "HU", + "isCrypto": false + }, + "IDR": + { + "symbol": "IDR", + "name": "Indonesian Rupiah", + "flag": "ID", + "isCrypto": false + }, + "ILS": + { + "symbol": "ILS", + "name": "Israeli New Shekel", + "flag": "IL", + "isCrypto": false + }, + "INR": + { + "symbol": "INR", + "name": "Indian Rupee", + "flag": "IN", + "isCrypto": false + }, + "IQD": + { + "symbol": "IQD", + "name": "Iraqi Dinar", + "flag": "IQ", + "isCrypto": false + }, + "IRR": + { + "symbol": "IRR", + "name": "Iranian Rial", + "flag": "IR", + "isCrypto": false + }, + "ISK": + { + "symbol": "ISK", + "name": "Icelandic Króna", + "flag": "IS", + "isCrypto": false + }, + "JMD": + { + "symbol": "JMD", + "name": "Jamaican Dollar", + "flag": "JM", + "isCrypto": false + }, + "JOD": + { + "symbol": "JOD", + "name": "Jordanian Dinar", + "flag": "JO", + "isCrypto": false + }, + "JPY": + { + "symbol": "JPY", + "name": "Japanese Yen", + "flag": "JP", + "isCrypto": false + }, + "KES": + { + "symbol": "KES", + "name": "Kenyan Shilling", + "flag": "KE", + "isCrypto": false + }, + "KHR": + { + "symbol": "KHR", + "name": "Cambodian Riel", + "flag": "KH", + "isCrypto": false + }, + "KMF": + { + "symbol": "KMF", + "name": "Comoro Franc", + "flag": "KM", + "isCrypto": false + }, + "KRU": + { + "symbol": "KRU", + "name": "South African Krugerrand", + "flag": "KR", + "isCrypto": false + }, + "KRW": + { + "symbol": "KRW", + "name": "South Korean Won", + "flag": "KR", + "isCrypto": false + }, + "KWD": + { + "symbol": "KWD", + "name": "Kuwaiti Dinar", + "flag": "KW", + "isCrypto": false + }, + "KYD": + { + "symbol": "KYD", + "name": "Cayman Islands Dollar", + "flag": "KY", + "isCrypto": false + }, + "KZT": + { + "symbol": "KZT", + "name": "Kazakhstani Tenge", + "flag": "KZ", + "isCrypto": false + }, + "LAK": + { + "symbol": "LAK", + "name": "Lao Kip", + "flag": "LA", + "isCrypto": false + }, + "LBP": + { + "symbol": "LBP", + "name": "Lebanese Pound", + "flag": "LB", + "isCrypto": false + }, + "LFX": + { + "symbol": "LFX", + "name": "Khazanah Sukuk", + "flag": "MY", + "isCrypto": false + }, + "LKR": + { + "symbol": "LKR", + "name": "Sri Lankan Rupee", + "flag": "LK", + "isCrypto": false + }, + "LRD": + { + "symbol": "LRD", + "name": "Liberian Dollar", + "flag": "LR", + "isCrypto": false + }, + "LSL": + { + "symbol": "LSL", + "name": "Lesotho Loti", + "flag": "LS", + "isCrypto": false + }, + "LTL": + { + "symbol": "LTL", + "name": "Lithuanian Litas", + "flag": "LT", + "isCrypto": false + }, + "LYD": + { + "symbol": "LYD", + "name": "Libyan Dinar", + "flag": "LY", + "isCrypto": false + }, + "M5P": + { + "symbol": "M5P", + "name": "Mexican 50 Peso", + "flag": "MX", + "isCrypto": false + }, + "MAD": + { + "symbol": "MAD", + "name": "Moroccan Dirham", + "flag": "MA", + "isCrypto": false + }, + "MAL": + { + "symbol": "MAL", + "name": "Maple Leaf", + "flag": "MA", + "isCrypto": false + }, + "MDL": + { + "symbol": "MDL", + "name": "Moldovan Leu", + "flag": "MD", + "isCrypto": false + }, + "MGA": + { + "symbol": "MGA", + "name": "Malagasy Ariary", + "flag": "MG", + "isCrypto": false + }, + "MKD": + { + "symbol": "MKD", + "name": "Macedonian Denar", + "flag": "MK", + "isCrypto": false + }, + "MMK": + { + "symbol": "MMK", + "name": "Myanma Kyat", + "flag": "MM", + "isCrypto": false + }, + "MOP": + { + "symbol": "MOP", + "name": "Macanese Pataca", + "flag": "MO", + "isCrypto": false + }, + "MRU": + { + "symbol": "MRU", + "name": "Mauritanian Ouguiya", + "flag": "MR", + "isCrypto": false + }, + "MTL": + { + "symbol": "MTL", + "name": "Maltese Lira", + "flag": "MT", + "isCrypto": false + }, + "MUR": + { + "symbol": "MUR", + "name": "Mauritian Rupee", + "flag": "MU", + "isCrypto": false + }, + "MVR": + { + "symbol": "MVR", + "name": "Maldivian Rufiyaa", + "flag": "MV", + "isCrypto": false + }, + "MWK": + { + "symbol": "MWK", + "name": "Malawian Kwacha", + "flag": "MW", + "isCrypto": false + }, + "MXN": + { + "symbol": "MXN", + "name": "Mexican Peso", + "flag": "MX", + "isCrypto": false + }, + "MYR": + { + "symbol": "MYR", + "name": "Malaysian Ringgit", + "flag": "MY", + "isCrypto": false + }, + "MZN": + { + "symbol": "MZN", + "name": "Mozambican Metical", + "flag": "MZ", + "isCrypto": false + }, + "NAD": + { + "symbol": "NAD", + "name": "Namibian Dollar", + "flag": "NA", + "isCrypto": false + }, + "NBL": + { + "symbol": "NBL", + "name": "Isle Of Man Noble", + "flag": "IM", + "isCrypto": false + }, + "NGN": + { + "symbol": "NGN", + "name": "Nigerian Naira", + "flag": "NG", + "isCrypto": false + }, + "NIO": + { + "symbol": "NIO", + "name": "Nicaraguan Córdoba", + "flag": "NI", + "isCrypto": false + }, + "NOK": + { + "symbol": "NOK", + "name": "Norwegian Krone", + "flag": "NO", + "isCrypto": false + }, + "NPR": + { + "symbol": "NPR", + "name": "Nepalese Rupee", + "flag": "NP", + "isCrypto": false + }, + "NSO": + { + "symbol": "NSO", + "name": "New Sovereign", + "flag": "GB", + "isCrypto": false + }, + "NZD": + { + "symbol": "NZD", + "name": "New Zealand Dollar", + "flag": "NZ", + "isCrypto": false + }, + "OMR": + { + "symbol": "OMR", + "name": "Omani Rial", + "flag": "OM", + "isCrypto": false + }, + "OSO": + { + "symbol": "OSO", + "name": "Old Sovereign", + "flag": "GB", + "isCrypto": false + }, + "PAB": + { + "symbol": "PAB", + "name": "Panamanian Balboa", + "flag": "PA", + "isCrypto": false + }, + "PEN": + { + "symbol": "PEN", + "name": "Peruvian Nuevo Sol", + "flag": "PE", + "isCrypto": false + }, + "PGK": + { + "symbol": "PGK", + "name": "Papua New Guinean Kina", + "flag": "PG", + "isCrypto": false + }, + "PHP": + { + "symbol": "PHP", + "name": "Philippine Peso", + "flag": "PH", + "isCrypto": false + }, + "PKR": + { + "symbol": "PKR", + "name": "Pakistani Rupee", + "flag": "PK", + "isCrypto": false + }, + "PLN": + { + "symbol": "PLN", + "name": "Polish Zloty", + "flag": "PL", + "isCrypto": false + }, + "PYG": + { + "symbol": "PYG", + "name": "Paraguayan Guaraní", + "flag": "PY", + "isCrypto": false + }, + "QAR": + { + "symbol": "QAR", + "name": "Qatari Riyal", + "flag": "QA", + "isCrypto": false + }, + "RON": + { + "symbol": "RON", + "name": "Romanian New Leu", + "flag": "RO", + "isCrypto": false + }, + "RSD": + { + "symbol": "RSD", + "name": "Serbian Dinar", + "flag": "RS", + "isCrypto": false + }, + "RUB": + { + "symbol": "RUB", + "name": "Russian Rouble", + "flag": "RU", + "isCrypto": false + }, + "RWF": + { + "symbol": "RWF", + "name": "Rwandan Franc", + "flag": "RW", + "isCrypto": false + }, + "SAR": + { + "symbol": "SAR", + "name": "Saudi Riyal", + "flag": "SA", + "isCrypto": false + }, + "SBD": + { + "symbol": "SBD", + "name": "Solomon Islands Dollar", + "flag": "SB", + "isCrypto": false + }, + "SCR": + { + "symbol": "SCR", + "name": "Seychelles Rupee", + "flag": "SC", + "isCrypto": false + }, + "SDG": + { + "symbol": "SDG", + "name": "Sudanese Pound", + "flag": "SD", + "isCrypto": false + }, + "SEK": + { + "symbol": "SEK", + "name": "Swedish Krona", + "flag": "SE", + "isCrypto": false + }, + "SGD": + { + "symbol": "SGD", + "name": "Singapore Dollar", + "flag": "SG", + "isCrypto": false + }, + "SHP": + { + "symbol": "SHP", + "name": "Saint Helena Pound", + "flag": "SH", + "isCrypto": false + }, + "SLL": + { + "symbol": "SLL", + "name": "Sierra Leonean Leone", + "flag": "SL", + "isCrypto": false + }, + "SOS": + { + "symbol": "SOS", + "name": "Somali Shilling", + "flag": "SO", + "isCrypto": false + }, + "SRD": + { + "symbol": "SRD", + "name": "Surinamese Dollar", + "flag": "SR", + "isCrypto": false + }, + "STN": + { + "symbol": "STN", + "name": "Sao Tomean Dobra", + "flag": "ST", + "isCrypto": false + }, + "SVC": + { + "symbol": "SVC", + "name": "Salvadoran Colón", + "flag": "SV", + "isCrypto": false + }, + "SZL": + { + "symbol": "SZL", + "name": "Swazi Lilangeni", + "flag": "SZ", + "isCrypto": false + }, + "THB": + { + "symbol": "THB", + "name": "Thai Baht", + "flag": "TH", + "isCrypto": false + }, + "TJS": + { + "symbol": "TJS", + "name": "Tajikistani Somoni", + "flag": "TJ", + "isCrypto": false + }, + "TMT": + { + "symbol": "TMT", + "name": "Turkmenistani Manat", + "flag": "TM", + "isCrypto": false + }, + "TND": + { + "symbol": "TND", + "name": "Tunisian Dinar", + "flag": "TN", + "isCrypto": false + }, + "TOP": + { + "symbol": "TOP", + "name": "Tongan PaʻAnga", + "flag": "TO", + "isCrypto": false + }, + "TRY": + { + "symbol": "TRY", + "name": "Turkish Lira", + "flag": "TR", + "isCrypto": false + }, + "TTD": + { + "symbol": "TTD", + "name": "Trinidad And Tobago Dollar", + "flag": "TT", + "isCrypto": false + }, + "TWD": + { + "symbol": "TWD", + "name": "New Taiwan Dollar", + "flag": "TW", + "isCrypto": false + }, + "TZS": + { + "symbol": "TZS", + "name": "Tanzanian Shilling", + "flag": "TZ", + "isCrypto": false + }, + "UAH": + { + "symbol": "UAH", + "name": "Ukrainian Hryvnia", + "flag": "UA", + "isCrypto": false + }, + "UGX": + { + "symbol": "UGX", + "name": "Ugandan Shilling", + "flag": "UG", + "isCrypto": false + }, + "USD": + { + "symbol": "USD", + "name": "United States Dollar", + "flag": "US", + "isCrypto": false + }, + "UYU": + { + "symbol": "UYU", + "name": "Uruguayan Peso", + "flag": "UY", + "isCrypto": false + }, + "UZS": + { + "symbol": "UZS", + "name": "Uzbekistan Som", + "flag": "UZ", + "isCrypto": false + }, + "VES": + { + "symbol": "VES", + "name": "Venezuelan Bolivar Soberano", + "flag": "VE", + "isCrypto": false + }, + "VND": + { + "symbol": "VND", + "name": "Vietnamese Dong", + "flag": "VN", + "isCrypto": false + }, + "VRL": + { + "symbol": "VRL", + "name": "Vreneli 10F.", + "flag": "CH", + "isCrypto": false + }, + "VRN": + { + "symbol": "VRN", + "name": "Vreneli 20F", + "flag": "CH", + "isCrypto": false + }, + "XAG": + { + "symbol": "XAG", + "name": "Silver (One Troy Ounce)", + "flag": "XAG", + "isCrypto": false + }, + "XAGK": + { + "symbol": "XAGK", + "name": "Silver (Kg)", + "flag": "XAG", + "isCrypto": false + }, + "XAU": + { + "symbol": "XAU", + "name": "Gold (One Troy Ounce)", + "flag": "XAU", + "isCrypto": false + }, + "XAUK": + { + "symbol": "XAUK", + "name": "Gold (Kg)", + "flag": "XAU", + "isCrypto": false + }, + "XCD": + { + "symbol": "XCD", + "name": "East Caribbean Dollar", + "flag": "AI", + "isCrypto": false + }, + "XOF": + { + "symbol": "XOF", + "name": "Cfa Franc Bceao", + "flag": "SN", + "isCrypto": false + }, + "XPD": + { + "symbol": "XPD", + "name": "Palladium (One Troy Ounce)", + "flag": "XPD", + "isCrypto": false + }, + "XPDK": + { + "symbol": "XPDK", + "name": "Palladium (Kg)", + "flag": "XPD", + "isCrypto": false + }, + "XPF": + { + "symbol": "XPF", + "name": "Cfp Franc", + "flag": "PF", + "isCrypto": false + }, + "XPT": + { + "symbol": "XPT", + "name": "Platinum (One Troy Ounce)", + "flag": "XPT", + "isCrypto": false + }, + "XPTK": + { + "symbol": "XPTK", + "name": "Platinum (Kg)", + "flag": "XPT", + "isCrypto": false + }, + "YER": + { + "symbol": "YER", + "name": "Yemeni Rial", + "flag": "YE", + "isCrypto": false + }, + "ZAR": + { + "symbol": "ZAR", + "name": "South African Rand", + "flag": "ZA", + "isCrypto": false + }, + "ZMW": + { + "symbol": "ZMW", + "name": "Zambian Kwacha", + "flag": "ZM", + "isCrypto": false + }, + "ZWD": + { + "symbol": "ZWD", + "name": "Zimbabwe Dollar", + "flag": "ZW", + "isCrypto": false + }, + "DASH": + { + "symbol": "DASH", + "name": "Dash", + "flag": "DASH", + "isCrypto": true + }, + "BTC": + { + "symbol": "BTC", + "name": "Bitcoin", + "flag": "BTC", + "isCrypto": true + }, + "DSH": + { + "symbol": "DSH", + "name": "Dash Coin", + "flag": "DASH", + "isCrypto": true + }, + "LTC": + { + "symbol": "LTC", + "name": "Litecoin", + "flag": "LTC", + "isCrypto": true + }, + "ETH": + { + "symbol": "ETH", + "name": "Ethereum", + "flag": "ETH", + "isCrypto": true + }, + "BCH": + { + "symbol": "BCH", + "name": "Bitcoin Cash", + "flag": "BTC", + "isCrypto": true + }, + "XRP": + { + "symbol": "XRP", + "name": "Xrp Cryptocurrency", + "flag": "XRP", + "isCrypto": true + }, + "XLM": + { + "symbol": "XLM", + "name": "Stellar", + "flag": "XLM", + "isCrypto": true + }, + "ADA": + { + "symbol": "ADA", + "name": "Cardano", + "flag": "ADA", + "isCrypto": true + }, + "UKO": + { + "symbol": "UKO", + "name": "Brent Crude Oil", + "flag": "UKO", + "isCrypto": false + }, + "AAVE": + { + "symbol": "AAVE", + "name": "Aave Token", + "flag": "AAVE", + "isCrypto": true + }, + "UNI": + { + "symbol": "UNI", + "name": "Uniswap", + "flag": "UNI", + "isCrypto": true + }, + "LUNA": + { + "symbol": "LUNA", + "name": "Terra", + "flag": "LUNA", + "isCrypto": true + }, + "XMR": + { + "symbol": "XMR", + "name": "Monero", + "flag": "XMR", + "isCrypto": true + }, + "XDR": + { + "symbol": "XDR", + "name": "Special Drawing Rights", + "flag": "XDR", + "isCrypto": false + }, + "SOL": + { + "symbol": "SOL", + "name": "Solana", + "flag": "SOL", + "isCrypto": true + }, + "DOGE": + { + "symbol": "DOGE", + "name": "Dogecoin", + "flag": "DOGE", + "isCrypto": true + }, + "VET": + { + "symbol": "VET", + "name": "VeChain", + "flag": "VET", + "isCrypto": true + }, + "DOT": + { + "symbol": "DOT", + "name": "Polkadot", + "flag": "DOT", + "isCrypto": true + }, + "USDC": + { + "symbol": "USDC", + "name": "USD Coin", + "flag": "USDC", + "isCrypto": true + }, + "FIL": + { + "symbol": "FIL", + "name": "File Coin", + "flag": "FIL", + "isCrypto": true + }, + "LINK": + { + "symbol": "LINK", + "name": "Chainlink", + "flag": "LINK", + "isCrypto": true + }, + "MATIC": + { + "symbol": "MATIC", + "name": "Polygon", + "flag": "MATIC", + "isCrypto": true + }, + "THETA": + { + "symbol": "THETA", + "name": "Theta", + "flag": "THETA", + "isCrypto": true + }, + "BNB": + { + "symbol": "BNB", + "name": "Binance Coin", + "flag": "BNB", + "isCrypto": true + } +}
--- a/Simoleon/Resources/CurrencyPairs.json Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8494 +0,0 @@ -[ - { - "name": "EUR/USD", - "isLocked": false - }, - { - "name": "HUF/CHF", - "isLocked": true - }, - { - "name": "TWD/SEK", - "isLocked": true - }, - { - "name": "GNF/USD", - "isLocked": true - }, - { - "name": "DKK/EUR", - "isLocked": true - }, - { - "name": "GBP/SGD", - "isLocked": true - }, - { - "name": "NPR/USD", - "isLocked": true - }, - { - "name": "USD/GTQ", - "isLocked": true - }, - { - "name": "PEN/COP", - "isLocked": true - }, - { - "name": "AUD/PHP", - "isLocked": true - }, - { - "name": "CHF/ISK", - "isLocked": true - }, - { - "name": "USD/CLF", - "isLocked": true - }, - { - "name": "GBP/SOS", - "isLocked": true - }, - { - "name": "ARS/CHF", - "isLocked": true - }, - { - "name": "GTQ/GBP", - "isLocked": true - }, - { - "name": "CNH/USD", - "isLocked": true - }, - { - "name": "EUR/HKD", - "isLocked": true - }, - { - "name": "CZK/MXN", - "isLocked": true - }, - { - "name": "ILS/NOK", - "isLocked": true - }, - { - "name": "TWD/DKK", - "isLocked": true - }, - { - "name": "EUR/AOA", - "isLocked": true - }, - { - "name": "AUD/SEK", - "isLocked": true - }, - { - "name": "DKK/USD", - "isLocked": true - }, - { - "name": "SBD/USD", - "isLocked": true - }, - { - "name": "ISK/EUR", - "isLocked": true - }, - { - "name": "ZAR/PGK", - "isLocked": true - }, - { - "name": "EUR/KHR", - "isLocked": true - }, - { - "name": "TWD/MYR", - "isLocked": true - }, - { - "name": "EUR/HTG", - "isLocked": true - }, - { - "name": "VES/GBP", - "isLocked": true - }, - { - "name": "COP/DKK", - "isLocked": true - }, - { - "name": "ZAR/CDF", - "isLocked": true - }, - { - "name": "GBP/BWP", - "isLocked": true - }, - { - "name": "VND/JPY", - "isLocked": true - }, - { - "name": "GBP/EUR", - "isLocked": true - }, - { - "name": "BWP/GBP", - "isLocked": true - }, - { - "name": "EUR/CLP", - "isLocked": true - }, - { - "name": "NZD/ZAR", - "isLocked": true - }, - { - "name": "ANG/USD", - "isLocked": true - }, - { - "name": "USD/TRY", - "isLocked": true - }, - { - "name": "EUR/SAR", - "isLocked": true - }, - { - "name": "SEK/NZD", - "isLocked": true - }, - { - "name": "AUD/DKK", - "isLocked": true - }, - { - "name": "EUR/IQD", - "isLocked": true - }, - { - "name": "ISK/USD", - "isLocked": true - }, - { - "name": "CAD/BMD", - "isLocked": true - }, - { - "name": "CLP/ZAR", - "isLocked": true - }, - { - "name": "ZAR/FJD", - "isLocked": true - }, - { - "name": "TRY/CAD", - "isLocked": true - }, - { - "name": "AUD/MYR", - "isLocked": true - }, - { - "name": "USD/HNL", - "isLocked": true - }, - { - "name": "JPY/TRY", - "isLocked": true - }, - { - "name": "GBP/RUB", - "isLocked": true - }, - { - "name": "ZAR/CAD", - "isLocked": true - }, - { - "name": "GBP/BTN", - "isLocked": true - }, - { - "name": "INR/PKR", - "isLocked": true - }, - { - "name": "XAU/CAD", - "isLocked": true - }, - { - "name": "GBP/USD", - "isLocked": false - }, - { - "name": "DKK/COP", - "isLocked": true - }, - { - "name": "MYR/CNY", - "isLocked": true - }, - { - "name": "CAD/HRK", - "isLocked": true - }, - { - "name": "GBP/MMK", - "isLocked": true - }, - { - "name": "NZD/NOK", - "isLocked": true - }, - { - "name": "KRW/SGD", - "isLocked": true - }, - { - "name": "EUR/PAB", - "isLocked": true - }, - { - "name": "CZK/SEK", - "isLocked": true - }, - { - "name": "EUR/YER", - "isLocked": true - }, - { - "name": "CHF/ILS", - "isLocked": true - }, - { - "name": "SEK/AUD", - "isLocked": true - }, - { - "name": "USD/BZD", - "isLocked": true - }, - { - "name": "MYR/KRW", - "isLocked": true - }, - { - "name": "EUR/NAD", - "isLocked": true - }, - { - "name": "GBP/KWD", - "isLocked": true - }, - { - "name": "PHP/JPY", - "isLocked": true - }, - { - "name": "HKD/TRY", - "isLocked": true - }, - { - "name": "EUR/ARS", - "isLocked": true - }, - { - "name": "ARE/CHF", - "isLocked": true - }, - { - "name": "USD/NGN", - "isLocked": true - }, - { - "name": "USD/SDG", - "isLocked": true - }, - { - "name": "DOE/CHF", - "isLocked": true - }, - { - "name": "CNY/SRD", - "isLocked": true - }, - { - "name": "CAD/CHF", - "isLocked": true - }, - { - "name": "SGD/EUR", - "isLocked": true - }, - { - "name": "TWD/HKD", - "isLocked": true - }, - { - "name": "CZK/DKK", - "isLocked": true - }, - { - "name": "THB/TWD", - "isLocked": true - }, - { - "name": "GBP/COP", - "isLocked": true - }, - { - "name": "EUR/AFN", - "isLocked": true - }, - { - "name": "INR/SEK", - "isLocked": true - }, - { - "name": "ZAR/LAK", - "isLocked": true - }, - { - "name": "KRW/EUR", - "isLocked": true - }, - { - "name": "PEN/GBP", - "isLocked": true - }, - { - "name": "EUR/LSL", - "isLocked": true - }, - { - "name": "ETB/GBP", - "isLocked": true - }, - { - "name": "EUR/CNH", - "isLocked": true - }, - { - "name": "ZMW/ZAR", - "isLocked": true - }, - { - "name": "UAH/EUR", - "isLocked": true - }, - { - "name": "THB/JPY", - "isLocked": true - }, - { - "name": "COP/CLP", - "isLocked": true - }, - { - "name": "CAD/VND", - "isLocked": true - }, - { - "name": "SGD/USD", - "isLocked": true - }, - { - "name": "TOP/USD", - "isLocked": true - }, - { - "name": "AUD/HKD", - "isLocked": true - }, - { - "name": "USD/MXN", - "isLocked": true - }, - { - "name": "RUB/EUR", - "isLocked": true - }, - { - "name": "GHS/GBP", - "isLocked": true - }, - { - "name": "QAR/USD", - "isLocked": true - }, - { - "name": "USD/KYD", - "isLocked": true - }, - { - "name": "KRW/RUB", - "isLocked": true - }, - { - "name": "GNF/GBP", - "isLocked": true - }, - { - "name": "KRW/USD", - "isLocked": true - }, - { - "name": "USD/PKR", - "isLocked": true - }, - { - "name": "NOK/SGD", - "isLocked": true - }, - { - "name": "XAG/CAD", - "isLocked": true - }, - { - "name": "PHP/ZAR", - "isLocked": true - }, - { - "name": "EUR/BBD", - "isLocked": true - }, - { - "name": "INR/MYR", - "isLocked": true - }, - { - "name": "JPY/MXN", - "isLocked": true - }, - { - "name": "EUR/CUP", - "isLocked": true - }, - { - "name": "AUD/CLP", - "isLocked": true - }, - { - "name": "TRY/NZD", - "isLocked": true - }, - { - "name": "NPR/GBP", - "isLocked": true - }, - { - "name": "EUR/GHS", - "isLocked": true - }, - { - "name": "CHF/TRY", - "isLocked": true - }, - { - "name": "KRU/USD", - "isLocked": true - }, - { - "name": "CNY/DKK", - "isLocked": true - }, - { - "name": "ZAR/NZD", - "isLocked": true - }, - { - "name": "UAH/USD", - "isLocked": true - }, - { - "name": "JPY/PKR", - "isLocked": true - }, - { - "name": "TZS/USD", - "isLocked": true - }, - { - "name": "USD/SRD", - "isLocked": true - }, - { - "name": "CNY/MYR", - "isLocked": true - }, - { - "name": "DKK/CZK", - "isLocked": true - }, - { - "name": "AED/CAD", - "isLocked": true - }, - { - "name": "RUB/USD", - "isLocked": true - }, - { - "name": "GBP/QAR", - "isLocked": true - }, - { - "name": "IDR/INR", - "isLocked": true - }, - { - "name": "MXN/TRY", - "isLocked": true - }, - { - "name": "DKK/GBP", - "isLocked": true - }, - { - "name": "USD/PHP", - "isLocked": true - }, - { - "name": "HKD/MXN", - "isLocked": true - }, - { - "name": "TRY/AUD", - "isLocked": true - }, - { - "name": "DKK/CNY", - "isLocked": true - }, - { - "name": "GBP/BSD", - "isLocked": true - }, - { - "name": "ZAR/AUD", - "isLocked": true - }, - { - "name": "COP/ARS", - "isLocked": true - }, - { - "name": "XAU/AUD", - "isLocked": true - }, - { - "name": "EUR/INR", - "isLocked": true - }, - { - "name": "OMR/PKR", - "isLocked": true - }, - { - "name": "NOK/EUR", - "isLocked": true - }, - { - "name": "CNH/KRW", - "isLocked": true - }, - { - "name": "HKD/PKR", - "isLocked": true - }, - { - "name": "CZK/HKD", - "isLocked": true - }, - { - "name": "THB/ZAR", - "isLocked": true - }, - { - "name": "USD/SEK", - "isLocked": true - }, - { - "name": "ANG/GBP", - "isLocked": true - }, - { - "name": "SLL/USD", - "isLocked": true - }, - { - "name": "GBP/VES", - "isLocked": true - }, - { - "name": "SEK/CHF", - "isLocked": true - }, - { - "name": "AUD/ARS", - "isLocked": true - }, - { - "name": "JPY/SEK", - "isLocked": true - }, - { - "name": "MGA/USD", - "isLocked": true - }, - { - "name": "CAD/THB", - "isLocked": true - }, - { - "name": "GBP/CZK", - "isLocked": true - }, - { - "name": "GBP/UYU", - "isLocked": true - }, - { - "name": "ISK/GBP", - "isLocked": true - }, - { - "name": "USD/PEN", - "isLocked": true - }, - { - "name": "MAL/USD", - "isLocked": true - }, - { - "name": "ZAR/LKR", - "isLocked": true - }, - { - "name": "NOK/RUB", - "isLocked": true - }, - { - "name": "NOK/USD", - "isLocked": true - }, - { - "name": "ILS/EUR", - "isLocked": true - }, - { - "name": "USD/DKK", - "isLocked": true - }, - { - "name": "GBP/CNY", - "isLocked": true - }, - { - "name": "INR/HKD", - "isLocked": true - }, - { - "name": "PLN/CAD", - "isLocked": true - }, - { - "name": "GYD/SRD", - "isLocked": true - }, - { - "name": "GBP/RON", - "isLocked": true - }, - { - "name": "EUR/TND", - "isLocked": true - }, - { - "name": "DKK/PLN", - "isLocked": true - }, - { - "name": "EUR/AED", - "isLocked": true - }, - { - "name": "USD/MYR", - "isLocked": true - }, - { - "name": "KES/CHF", - "isLocked": true - }, - { - "name": "NZD/SGD", - "isLocked": true - }, - { - "name": "HKD/SEK", - "isLocked": true - }, - { - "name": "BDT/USD", - "isLocked": true - }, - { - "name": "BMD/CAD", - "isLocked": true - }, - { - "name": "AMD/USD", - "isLocked": true - }, - { - "name": "NSO/CHF", - "isLocked": true - }, - { - "name": "JPY/DKK", - "isLocked": true - }, - { - "name": "GBP/KRW", - "isLocked": true - }, - { - "name": "USD/KES", - "isLocked": true - }, - { - "name": "AUD/CNH", - "isLocked": true - }, - { - "name": "CNY/HKD", - "isLocked": true - }, - { - "name": "JPY/MYR", - "isLocked": true - }, - { - "name": "GBP/PYG", - "isLocked": true - }, - { - "name": "CHF/MXN", - "isLocked": true - }, - { - "name": "HRK/CAD", - "isLocked": true - }, - { - "name": "ILS/USD", - "isLocked": true - }, - { - "name": "CHF/PKR", - "isLocked": true - }, - { - "name": "MAD/USD", - "isLocked": true - }, - { - "name": "CNY/CLP", - "isLocked": true - }, - { - "name": "EUR/ALL", - "isLocked": true - }, - { - "name": "AED/NZD", - "isLocked": true - }, - { - "name": "EUR/BAM", - "isLocked": true - }, - { - "name": "CAD/ISK", - "isLocked": true - }, - { - "name": "USD/LBP", - "isLocked": true - }, - { - "name": "HKD/DKK", - "isLocked": true - }, - { - "name": "XAG/AUD", - "isLocked": true - }, - { - "name": "GBP/PLN", - "isLocked": true - }, - { - "name": "HKD/MYR", - "isLocked": true - }, - { - "name": "TWD/INR", - "isLocked": true - }, - { - "name": "NZD/EUR", - "isLocked": true - }, - { - "name": "SGD/CZK", - "isLocked": true - }, - { - "name": "JOD/ILS", - "isLocked": true - }, - { - "name": "SAR/PKR", - "isLocked": true - }, - { - "name": "DOP/USD", - "isLocked": true - }, - { - "name": "AED/AUD", - "isLocked": true - }, - { - "name": "SGD/GBP", - "isLocked": true - }, - { - "name": "TOP/GBP", - "isLocked": true - }, - { - "name": "SGD/CNY", - "isLocked": true - }, - { - "name": "DKK/HUF", - "isLocked": true - }, - { - "name": "QAR/GBP", - "isLocked": true - }, - { - "name": "CLP/EUR", - "isLocked": true - }, - { - "name": "NGN/JPY", - "isLocked": true - }, - { - "name": "EUR/BRL", - "isLocked": true - }, - { - "name": "BRL/CAD", - "isLocked": true - }, - { - "name": "TRY/CHF", - "isLocked": true - }, - { - "name": "KRW/CNY", - "isLocked": true - }, - { - "name": "ZAR/EGP", - "isLocked": true - }, - { - "name": "CHF/SEK", - "isLocked": true - }, - { - "name": "EUR/BGN", - "isLocked": true - }, - { - "name": "AUD/INR", - "isLocked": true - }, - { - "name": "NZD/USD", - "isLocked": true - }, - { - "name": "USD/HKD", - "isLocked": false - }, - { - "name": "SGD/KRW", - "isLocked": true - }, - { - "name": "ZAR/CHF", - "isLocked": true - }, - { - "name": "USD/AOA", - "isLocked": true - }, - { - "name": "EUR/MTL", - "isLocked": true - }, - { - "name": "USD/KHR", - "isLocked": true - }, - { - "name": "DKK/UAH", - "isLocked": true - }, - { - "name": "TTD/USD", - "isLocked": true - }, - { - "name": "USD/HTG", - "isLocked": true - }, - { - "name": "TZS/GBP", - "isLocked": true - }, - { - "name": "ZAR/MAD", - "isLocked": true - }, - { - "name": "PLN/NZD", - "isLocked": true - }, - { - "name": "MXN/SEK", - "isLocked": true - }, - { - "name": "JPY/HKD", - "isLocked": true - }, - { - "name": "M5P/USD", - "isLocked": true - }, - { - "name": "RUB/GBP", - "isLocked": true - }, - { - "name": "USD/CLP", - "isLocked": true - }, - { - "name": "CLP/USD", - "isLocked": true - }, - { - "name": "VND/EUR", - "isLocked": true - }, - { - "name": "CHF/DKK", - "isLocked": true - }, - { - "name": "CAD/ILS", - "isLocked": true - }, - { - "name": "CRC/USD", - "isLocked": true - }, - { - "name": "ZAR/SZL", - "isLocked": true - }, - { - "name": "GBP/HUF", - "isLocked": true - }, - { - "name": "USD/SAR", - "isLocked": true - }, - { - "name": "JPY/CLP", - "isLocked": true - }, - { - "name": "MXN/PEN", - "isLocked": true - }, - { - "name": "ZAR/VND", - "isLocked": true - }, - { - "name": "RUB/KRW", - "isLocked": true - }, - { - "name": "CHF/MYR", - "isLocked": true - }, - { - "name": "SGD/PLN", - "isLocked": true - }, - { - "name": "GBP/BND", - "isLocked": true - }, - { - "name": "USD/IQD", - "isLocked": true - }, - { - "name": "EUR/TWD", - "isLocked": true - }, - { - "name": "VRN/CHF", - "isLocked": true - }, - { - "name": "PLN/AUD", - "isLocked": true - }, - { - "name": "AUD/AED", - "isLocked": true - }, - { - "name": "GBP/MGA", - "isLocked": true - }, - { - "name": "MXN/DKK", - "isLocked": true - }, - { - "name": "JPY/SAR", - "isLocked": true - }, - { - "name": "MUR/ZAR", - "isLocked": true - }, - { - "name": "NGN/ZAR", - "isLocked": true - }, - { - "name": "SLL/GBP", - "isLocked": true - }, - { - "name": "GBP/UAH", - "isLocked": true - }, - { - "name": "EUR/RWF", - "isLocked": true - }, - { - "name": "VRL/CHF", - "isLocked": true - }, - { - "name": "EGP/PKR", - "isLocked": true - }, - { - "name": "USD/PAB", - "isLocked": true - }, - { - "name": "NOK/CZK", - "isLocked": true - }, - { - "name": "MGA/GBP", - "isLocked": true - }, - { - "name": "USD/YER", - "isLocked": true - }, - { - "name": "VND/USD", - "isLocked": true - }, - { - "name": "GBP/MOP", - "isLocked": true - }, - { - "name": "SEK/ISK", - "isLocked": true - }, - { - "name": "GBP/ETB", - "isLocked": true - }, - { - "name": "EUR/JPY", - "isLocked": true - }, - { - "name": "CLP/COP", - "isLocked": true - }, - { - "name": "EUR/OMR", - "isLocked": true - }, - { - "name": "HRK/AUD", - "isLocked": true - }, - { - "name": "USD/NAD", - "isLocked": true - }, - { - "name": "RUB/PLN", - "isLocked": true - }, - { - "name": "NOK/GBP", - "isLocked": true - }, - { - "name": "USD/ARS", - "isLocked": true - }, - { - "name": "DJF/GBP", - "isLocked": true - }, - { - "name": "THB/SGD", - "isLocked": true - }, - { - "name": "EUR/MWK", - "isLocked": true - }, - { - "name": "BDT/GBP", - "isLocked": true - }, - { - "name": "HUF/MXN", - "isLocked": true - }, - { - "name": "JPY/ARS", - "isLocked": true - }, - { - "name": "EUR/BIF", - "isLocked": true - }, - { - "name": "COP/BRL", - "isLocked": true - }, - { - "name": "BRL/NZD", - "isLocked": true - }, - { - "name": "ZMW/USD", - "isLocked": true - }, - { - "name": "USD/AFN", - "isLocked": true - }, - { - "name": "CZK/AED", - "isLocked": true - }, - { - "name": "GBP/GEL", - "isLocked": true - }, - { - "name": "ZAR/JOD", - "isLocked": true - }, - { - "name": "SGD/HUF", - "isLocked": true - }, - { - "name": "USD/LSL", - "isLocked": true - }, - { - "name": "EUR/ZMW", - "isLocked": true - }, - { - "name": "EUR/JMD", - "isLocked": true - }, - { - "name": "USD/CNH", - "isLocked": true - }, - { - "name": "AED/CHF", - "isLocked": true - }, - { - "name": "CNY/INR", - "isLocked": true - }, - { - "name": "MAD/GBP", - "isLocked": true - }, - { - "name": "CAD/TRY", - "isLocked": true - }, - { - "name": "AUD/BRL", - "isLocked": true - }, - { - "name": "ARS/MXN", - "isLocked": true - }, - { - "name": "ZAR/THB", - "isLocked": true - }, - { - "name": "GBP/DZD", - "isLocked": true - }, - { - "name": "XAU/THB", - "isLocked": true - }, - { - "name": "CHF/HKD", - "isLocked": true - }, - { - "name": "PHP/USD", - "isLocked": true - }, - { - "name": "BZD/USD", - "isLocked": true - }, - { - "name": "HKD/ARS", - "isLocked": true - }, - { - "name": "ZAR/BHD", - "isLocked": true - }, - { - "name": "ZAR/XOF", - "isLocked": true - }, - { - "name": "MYR/CAD", - "isLocked": true - }, - { - "name": "AUD/BGN", - "isLocked": true - }, - { - "name": "BRL/AUD", - "isLocked": true - }, - { - "name": "AFN/USD", - "isLocked": true - }, - { - "name": "NOK/PLN", - "isLocked": true - }, - { - "name": "BIF/USD", - "isLocked": true - }, - { - "name": "EUR/ZAR", - "isLocked": true - }, - { - "name": "THB/EUR", - "isLocked": true - }, - { - "name": "CHF/CLP", - "isLocked": true - }, - { - "name": "MXN/HKD", - "isLocked": true - }, - { - "name": "LFX/JPY", - "isLocked": true - }, - { - "name": "SEK/ILS", - "isLocked": true - }, - { - "name": "USD/BBD", - "isLocked": true - }, - { - "name": "DOP/GBP", - "isLocked": true - }, - { - "name": "USD/CUP", - "isLocked": true - }, - { - "name": "USD/GHS", - "isLocked": true - }, - { - "name": "HUF/SEK", - "isLocked": true - }, - { - "name": "NZD/CZK", - "isLocked": true - }, - { - "name": "MXN/CLP", - "isLocked": true - }, - { - "name": "EUR/NPR", - "isLocked": true - }, - { - "name": "XCD/GBP", - "isLocked": true - }, - { - "name": "TWD/JPY", - "isLocked": true - }, - { - "name": "NZD/GBP", - "isLocked": true - }, - { - "name": "ILS/PLN", - "isLocked": true - }, - { - "name": "THB/USD", - "isLocked": true - }, - { - "name": "NZD/CNY", - "isLocked": true - }, - { - "name": "AUD/TWD", - "isLocked": true - }, - { - "name": "EUR/NOK", - "isLocked": true - }, - { - "name": "SZL/CHF", - "isLocked": true - }, - { - "name": "TMT/USD", - "isLocked": true - }, - { - "name": "PLN/CHF", - "isLocked": true - }, - { - "name": "TTD/GBP", - "isLocked": true - }, - { - "name": "PEN/CAD", - "isLocked": true - }, - { - "name": "USD/INR", - "isLocked": true - }, - { - "name": "NZD/KRW", - "isLocked": true - }, - { - "name": "HUF/DKK", - "isLocked": true - }, - { - "name": "EUR/LYD", - "isLocked": true - }, - { - "name": "MKD/USD", - "isLocked": true - }, - { - "name": "RSD/EUR", - "isLocked": true - }, - { - "name": "CLP/GBP", - "isLocked": true - }, - { - "name": "CLP/CNY", - "isLocked": true - }, - { - "name": "AUD/JPY", - "isLocked": true - }, - { - "name": "CHF/ARS", - "isLocked": true - }, - { - "name": "MZN/ZAR", - "isLocked": true - }, - { - "name": "ARS/PEN", - "isLocked": true - }, - { - "name": "CRC/GBP", - "isLocked": true - }, - { - "name": "JPY/INR", - "isLocked": true - }, - { - "name": "NOK/HUF", - "isLocked": true - }, - { - "name": "FRN/CHF", - "isLocked": true - }, - { - "name": "EUR/UGX", - "isLocked": true - }, - { - "name": "GBP/XPF", - "isLocked": true - }, - { - "name": "LYD/USD", - "isLocked": true - }, - { - "name": "EUR/IDR", - "isLocked": true - }, - { - "name": "CAD/MXN", - "isLocked": true - }, - { - "name": "MXN/ARS", - "isLocked": true - }, - { - "name": "CAD/KYD", - "isLocked": true - }, - { - "name": "NZD/PLN", - "isLocked": true - }, - { - "name": "CAD/PKR", - "isLocked": true - }, - { - "name": "TWD/ZAR", - "isLocked": true - }, - { - "name": "SEK/TRY", - "isLocked": true - }, - { - "name": "MYR/NZD", - "isLocked": true - }, - { - "name": "GBP/MKD", - "isLocked": true - }, - { - "name": "USD/TND", - "isLocked": true - }, - { - "name": "USD/AED", - "isLocked": true - }, - { - "name": "HKD/INR", - "isLocked": true - }, - { - "name": "VND/GBP", - "isLocked": true - }, - { - "name": "CHF/CNH", - "isLocked": true - }, - { - "name": "EUR/TZS", - "isLocked": true - }, - { - "name": "AED/BHD", - "isLocked": true - }, - { - "name": "COP/ZAR", - "isLocked": true - }, - { - "name": "NBL/USD", - "isLocked": true - }, - { - "name": "CNY/BGN", - "isLocked": true - }, - { - "name": "USD/ANG", - "isLocked": true - }, - { - "name": "ZAR/MUR", - "isLocked": true - }, - { - "name": "KWD/PKR", - "isLocked": true - }, - { - "name": "JPY/AED", - "isLocked": true - }, - { - "name": "DKK/CAD", - "isLocked": true - }, - { - "name": "GBP/PGK", - "isLocked": true - }, - { - "name": "CZK/JPY", - "isLocked": true - }, - { - "name": "EUR/BYN", - "isLocked": true - }, - { - "name": "ZAR/ILS", - "isLocked": true - }, - { - "name": "MYR/AUD", - "isLocked": true - }, - { - "name": "PKR/JPY", - "isLocked": true - }, - { - "name": "GBP/CDF", - "isLocked": true - }, - { - "name": "BRL/CHF", - "isLocked": true - }, - { - "name": "AUD/ZAR", - "isLocked": true - }, - { - "name": "USD/ALL", - "isLocked": true - }, - { - "name": "USD/BAM", - "isLocked": true - }, - { - "name": "BND/USD", - "isLocked": true - }, - { - "name": "INR/TWD", - "isLocked": true - }, - { - "name": "GBP/SCR", - "isLocked": true - }, - { - "name": "OMR/AED", - "isLocked": true - }, - { - "name": "CAD/SEK", - "isLocked": true - }, - { - "name": "HKD/AED", - "isLocked": true - }, - { - "name": "HUF/HKD", - "isLocked": true - }, - { - "name": "ISK/CAD", - "isLocked": true - }, - { - "name": "CNY/TWD", - "isLocked": true - }, - { - "name": "GBP/FJD", - "isLocked": true - }, - { - "name": "PHP/GBP", - "isLocked": true - }, - { - "name": "NZD/HUF", - "isLocked": true - }, - { - "name": "INR/JPY", - "isLocked": true - }, - { - "name": "GBP/CAD", - "isLocked": true - }, - { - "name": "CAD/PEN", - "isLocked": true - }, - { - "name": "AFN/GBP", - "isLocked": true - }, - { - "name": "GBP/DJF", - "isLocked": true - }, - { - "name": "USD/KMF", - "isLocked": true - }, - { - "name": "AUD/NOK", - "isLocked": true - }, - { - "name": "USD/BRL", - "isLocked": true - }, - { - "name": "ARS/HKD", - "isLocked": true - }, - { - "name": "CHF/INR", - "isLocked": true - }, - { - "name": "GBP/MDL", - "isLocked": true - }, - { - "name": "CAD/DKK", - "isLocked": true - }, - { - "name": "CNY/JPY", - "isLocked": true - }, - { - "name": "MUR/EUR", - "isLocked": true - }, - { - "name": "USD/BGN", - "isLocked": true - }, - { - "name": "CAD/MYR", - "isLocked": true - }, - { - "name": "CZK/ZAR", - "isLocked": true - }, - { - "name": "JPY/BRL", - "isLocked": true - }, - { - "name": "ARS/CLP", - "isLocked": true - }, - { - "name": "PKR/ZAR", - "isLocked": true - }, - { - "name": "SEK/MXN", - "isLocked": true - }, - { - "name": "GBP/MVR", - "isLocked": true - }, - { - "name": "GBP/CRC", - "isLocked": true - }, - { - "name": "THB/CNY", - "isLocked": true - }, - { - "name": "ZAR/TRY", - "isLocked": true - }, - { - "name": "AUD/IDR", - "isLocked": true - }, - { - "name": "XAU/TRY", - "isLocked": true - }, - { - "name": "AWG/SRD", - "isLocked": true - }, - { - "name": "MUR/USD", - "isLocked": true - }, - { - "name": "GBP/LAK", - "isLocked": true - }, - { - "name": "PGK/USD", - "isLocked": true - }, - { - "name": "EUR/SGD", - "isLocked": true - }, - { - "name": "NGN/USD", - "isLocked": true - }, - { - "name": "HKD/BRL", - "isLocked": true - }, - { - "name": "DKK/NZD", - "isLocked": true - }, - { - "name": "CHF/AED", - "isLocked": true - }, - { - "name": "THB/KRW", - "isLocked": true - }, - { - "name": "BWP/CHF", - "isLocked": true - }, - { - "name": "USD/TWD", - "isLocked": true - }, - { - "name": "CZK/NOK", - "isLocked": true - }, - { - "name": "MKD/GBP", - "isLocked": true - }, - { - "name": "INR/ZAR", - "isLocked": true - }, - { - "name": "TOP/FJD", - "isLocked": true - }, - { - "name": "LKR/ZAR", - "isLocked": true - }, - { - "name": "EUR/SOS", - "isLocked": true - }, - { - "name": "SGD/CAD", - "isLocked": true - }, - { - "name": "USD/AWG", - "isLocked": true - }, - { - "name": "USD/RWF", - "isLocked": true - }, - { - "name": "MXN/AED", - "isLocked": true - }, - { - "name": "MDL/EUR", - "isLocked": true - }, - { - "name": "GBP/BOB", - "isLocked": true - }, - { - "name": "JPY/TWD", - "isLocked": true - }, - { - "name": "CNY/ZAR", - "isLocked": true - }, - { - "name": "BBD/EUR", - "isLocked": true - }, - { - "name": "DKK/AUD", - "isLocked": true - }, - { - "name": "KRW/CAD", - "isLocked": true - }, - { - "name": "USD/JPY", - "isLocked": false - }, - { - "name": "LYD/GBP", - "isLocked": true - }, - { - "name": "USD/OMR", - "isLocked": true - }, - { - "name": "BSD/USD", - "isLocked": true - }, - { - "name": "MYR/CHF", - "isLocked": true - }, - { - "name": "EUR/BWP", - "isLocked": true - }, - { - "name": "ZAR/NGN", - "isLocked": true - }, - { - "name": "GBP/NZD", - "isLocked": true - }, - { - "name": "GBP/LFX", - "isLocked": true - }, - { - "name": "CAD/HKD", - "isLocked": true - }, - { - "name": "USD/MWK", - "isLocked": true - }, - { - "name": "HKD/TWD", - "isLocked": true - }, - { - "name": "RUB/CAD", - "isLocked": true - }, - { - "name": "MDL/USD", - "isLocked": true - }, - { - "name": "USD/BIF", - "isLocked": true - }, - { - "name": "BBD/USD", - "isLocked": true - }, - { - "name": "CAD/CLP", - "isLocked": true - }, - { - "name": "SEK/DKK", - "isLocked": true - }, - { - "name": "USD/ZMW", - "isLocked": true - }, - { - "name": "USD/JMD", - "isLocked": true - }, - { - "name": "CHF/BRL", - "isLocked": true - }, - { - "name": "XPTK/CHF", - "isLocked": true - }, - { - "name": "EUR/RUB", - "isLocked": true - }, - { - "name": "EUR/BTN", - "isLocked": true - }, - { - "name": "GBP/AUD", - "isLocked": true - }, - { - "name": "HKD/JPY", - "isLocked": true - }, - { - "name": "XAG/TRY", - "isLocked": true - }, - { - "name": "PLN/ILS", - "isLocked": true - }, - { - "name": "EUR/MMK", - "isLocked": true - }, - { - "name": "TRY/MXN", - "isLocked": true - }, - { - "name": "CAD/SAR", - "isLocked": true - }, - { - "name": "BND/GBP", - "isLocked": true - }, - { - "name": "ZAR/MXN", - "isLocked": true - }, - { - "name": "TWD/SGD", - "isLocked": true - }, - { - "name": "XAU/MXN", - "isLocked": true - }, - { - "name": "MXN/BRL", - "isLocked": true - }, - { - "name": "USD/ZAR", - "isLocked": true - }, - { - "name": "EUR/KWD", - "isLocked": true - }, - { - "name": "ZAR/PKR", - "isLocked": true - }, - { - "name": "AED/TRY", - "isLocked": true - }, - { - "name": "GBP/GYD", - "isLocked": true - }, - { - "name": "GBP/LKR", - "isLocked": true - }, - { - "name": "NOK/CAD", - "isLocked": true - }, - { - "name": "JPY/ZAR", - "isLocked": true - }, - { - "name": "GBP/GNF", - "isLocked": true - }, - { - "name": "UGX/ZAR", - "isLocked": true - }, - { - "name": "GBP/DOP", - "isLocked": true - }, - { - "name": "BGN/USD", - "isLocked": true - }, - { - "name": "SGD/NZD", - "isLocked": true - }, - { - "name": "TOP/NZD", - "isLocked": true - }, - { - "name": "USD/NPR", - "isLocked": true - }, - { - "name": "EUR/COP", - "isLocked": true - }, - { - "name": "PAB/USD", - "isLocked": true - }, - { - "name": "AUD/SGD", - "isLocked": true - }, - { - "name": "GBP/TOP", - "isLocked": true - }, - { - "name": "CAD/ARS", - "isLocked": true - }, - { - "name": "CHF/TWD", - "isLocked": true - }, - { - "name": "LRD/USD", - "isLocked": true - }, - { - "name": "CYP/ZAR", - "isLocked": true - }, - { - "name": "KRW/NZD", - "isLocked": true - }, - { - "name": "USD/IRR", - "isLocked": true - }, - { - "name": "ZAR/PHP", - "isLocked": true - }, - { - "name": "USD/NOK", - "isLocked": true - }, - { - "name": "TWD/EUR", - "isLocked": true - }, - { - "name": "GBP/BDT", - "isLocked": true - }, - { - "name": "OMR/ZAR", - "isLocked": true - }, - { - "name": "HKD/ZAR", - "isLocked": true - }, - { - "name": "MZN/USD", - "isLocked": true - }, - { - "name": "AUN/USD", - "isLocked": true - }, - { - "name": "TRY/SEK", - "isLocked": true - }, - { - "name": "ILS/CAD", - "isLocked": true - }, - { - "name": "ZAR/SEK", - "isLocked": true - }, - { - "name": "SGD/AUD", - "isLocked": true - }, - { - "name": "TOP/AUD", - "isLocked": true - }, - { - "name": "JPY/NOK", - "isLocked": true - }, - { - "name": "SCR/USD", - "isLocked": true - }, - { - "name": "CHF/JPY", - "isLocked": true - }, - { - "name": "USD/LYD", - "isLocked": true - }, - { - "name": "MYR/THB", - "isLocked": true - }, - { - "name": "HUF/AED", - "isLocked": true - }, - { - "name": "SEK/HKD", - "isLocked": true - }, - { - "name": "GBP/BMD", - "isLocked": true - }, - { - "name": "DKK/CHF", - "isLocked": true - }, - { - "name": "KRW/AUD", - "isLocked": true - }, - { - "name": "CAD/CNH", - "isLocked": true - }, - { - "name": "BRL/ILS", - "isLocked": true - }, - { - "name": "MUR/GBP", - "isLocked": true - }, - { - "name": "PGK/GBP", - "isLocked": true - }, - { - "name": "BHD/PKR", - "isLocked": true - }, - { - "name": "EUR/AMD", - "isLocked": true - }, - { - "name": "NGN/GBP", - "isLocked": true - }, - { - "name": "PLN/TRY", - "isLocked": true - }, - { - "name": "TWD/USD", - "isLocked": true - }, - { - "name": "AUD/EUR", - "isLocked": true - }, - { - "name": "MXN/JPY", - "isLocked": true - }, - { - "name": "USD/UGX", - "isLocked": true - }, - { - "name": "GBP/HRK", - "isLocked": true - }, - { - "name": "USD/IDR", - "isLocked": true - }, - { - "name": "UYU/EUR", - "isLocked": true - }, - { - "name": "TRY/DKK", - "isLocked": true - }, - { - "name": "XAG/MXN", - "isLocked": true - }, - { - "name": "SAR/JPY", - "isLocked": true - }, - { - "name": "HKD/NOK", - "isLocked": true - }, - { - "name": "COP/USD", - "isLocked": true - }, - { - "name": "CZK/SGD", - "isLocked": true - }, - { - "name": "ZAR/DKK", - "isLocked": true - }, - { - "name": "RUB/AUD", - "isLocked": true - }, - { - "name": "EUR/QAR", - "isLocked": true - }, - { - "name": "ZAR/MYR", - "isLocked": true - }, - { - "name": "ISK/CHF", - "isLocked": true - }, - { - "name": "USD/TZS", - "isLocked": true - }, - { - "name": "BAM/USD", - "isLocked": true - }, - { - "name": "BRI/USD", - "isLocked": true - }, - { - "name": "AED/MXN", - "isLocked": true - }, - { - "name": "ZAR/KES", - "isLocked": true - }, - { - "name": "GBP/EGP", - "isLocked": true - }, - { - "name": "AUD/RUB", - "isLocked": true - }, - { - "name": "NZD/CAD", - "isLocked": true - }, - { - "name": "AUD/USD", - "isLocked": false - }, - { - "name": "BSD/GBP", - "isLocked": true - }, - { - "name": "EUR/BSD", - "isLocked": true - }, - { - "name": "USD/GMD", - "isLocked": true - }, - { - "name": "GBP/CHF", - "isLocked": true - }, - { - "name": "AED/PKR", - "isLocked": true - }, - { - "name": "UYU/USD", - "isLocked": true - }, - { - "name": "EUR/RSD", - "isLocked": true - }, - { - "name": "NOK/NZD", - "isLocked": true - }, - { - "name": "CHF/ZAR", - "isLocked": true - }, - { - "name": "USD/BYN", - "isLocked": true - }, - { - "name": "GBP/MAD", - "isLocked": true - }, - { - "name": "JOD/AED", - "isLocked": true - }, - { - "name": "INR/SGD", - "isLocked": true - }, - { - "name": "MDL/GBP", - "isLocked": true - }, - { - "name": "CZK/EUR", - "isLocked": true - }, - { - "name": "CLP/CAD", - "isLocked": true - }, - { - "name": "BBD/GBP", - "isLocked": true - }, - { - "name": "ZAR/LBP", - "isLocked": true - }, - { - "name": "EUR/CZK", - "isLocked": true - }, - { - "name": "EUR/UYU", - "isLocked": true - }, - { - "name": "CAD/INR", - "isLocked": true - }, - { - "name": "PKR/EUR", - "isLocked": true - }, - { - "name": "MXN/ZAR", - "isLocked": true - }, - { - "name": "GBP/SZL", - "isLocked": true - }, - { - "name": "GBP/XCD", - "isLocked": true - }, - { - "name": "CNY/SGD", - "isLocked": true - }, - { - "name": "GBP/VND", - "isLocked": true - }, - { - "name": "NOK/AUD", - "isLocked": true - }, - { - "name": "EUR/GBP", - "isLocked": false - }, - { - "name": "IDR/KRW", - "isLocked": true - }, - { - "name": "EUR/CNY", - "isLocked": true - }, - { - "name": "EUR/MRU", - "isLocked": true - }, - { - "name": "EUR/RON", - "isLocked": true - }, - { - "name": "ARS/BRL", - "isLocked": true - }, - { - "name": "CHF/NOK", - "isLocked": true - }, - { - "name": "XPT/EUR", - "isLocked": true - }, - { - "name": "AED/SEK", - "isLocked": true - }, - { - "name": "CZK/USD", - "isLocked": true - }, - { - "name": "EGP/JPY", - "isLocked": true - }, - { - "name": "EUR/KRW", - "isLocked": true - }, - { - "name": "PLN/MXN", - "isLocked": true - }, - { - "name": "GBP/LRD", - "isLocked": true - }, - { - "name": "PKR/USD", - "isLocked": true - }, - { - "name": "TRY/HKD", - "isLocked": true - }, - { - "name": "VND/CAD", - "isLocked": true - }, - { - "name": "INR/EUR", - "isLocked": true - }, - { - "name": "CNH/THB", - "isLocked": true - }, - { - "name": "EUR/PYG", - "isLocked": true - }, - { - "name": "SEK/CNH", - "isLocked": true - }, - { - "name": "ZAR/HKD", - "isLocked": true - }, - { - "name": "XAU/HKD", - "isLocked": true - }, - { - "name": "MXN/NOK", - "isLocked": true - }, - { - "name": "DKK/THB", - "isLocked": true - }, - { - "name": "CAD/AED", - "isLocked": true - }, - { - "name": "ILS/AUD", - "isLocked": true - }, - { - "name": "BMD/KYD", - "isLocked": true - }, - { - "name": "ZAR/KHR", - "isLocked": true - }, - { - "name": "GBP/SLL", - "isLocked": true - }, - { - "name": "SGD/CHF", - "isLocked": true - }, - { - "name": "MAD/AUD", - "isLocked": true - }, - { - "name": "CNY/EUR", - "isLocked": true - }, - { - "name": "SHP/USD", - "isLocked": true - }, - { - "name": "GBP/SVC", - "isLocked": true - }, - { - "name": "BGN/CNY", - "isLocked": true - }, - { - "name": "GBP/KZT", - "isLocked": true - }, - { - "name": "ZAR/CLP", - "isLocked": true - }, - { - "name": "RON/ZAR", - "isLocked": true - }, - { - "name": "AED/DKK", - "isLocked": true - }, - { - "name": "KRW/CHF", - "isLocked": true - }, - { - "name": "XPT/USD", - "isLocked": true - }, - { - "name": "KWD/AED", - "isLocked": true - }, - { - "name": "LRD/GBP", - "isLocked": true - }, - { - "name": "EUR/PLN", - "isLocked": true - }, - { - "name": "INR/USD", - "isLocked": true - }, - { - "name": "KRU/CHF", - "isLocked": true - }, - { - "name": "ZAR/SAR", - "isLocked": true - }, - { - "name": "LKR/USD", - "isLocked": true - }, - { - "name": "HUF/JPY", - "isLocked": true - }, - { - "name": "XAU/SAR", - "isLocked": true - }, - { - "name": "NZD/LFX", - "isLocked": true - }, - { - "name": "USD/SGD", - "isLocked": true - }, - { - "name": "GBP/JOD", - "isLocked": true - }, - { - "name": "RUB/CHF", - "isLocked": true - }, - { - "name": "CNY/USD", - "isLocked": true - }, - { - "name": "SCR/GBP", - "isLocked": true - }, - { - "name": "GBP/THB", - "isLocked": true - }, - { - "name": "PLN/SEK", - "isLocked": true - }, - { - "name": "JPY/SGD", - "isLocked": true - }, - { - "name": "EGP/ZAR", - "isLocked": true - }, - { - "name": "USD/SOS", - "isLocked": true - }, - { - "name": "GBP/BHD", - "isLocked": true - }, - { - "name": "ARS/JPY", - "isLocked": true - }, - { - "name": "NZD/AUD", - "isLocked": true - }, - { - "name": "DKK/ISK", - "isLocked": true - }, - { - "name": "TWD/CNY", - "isLocked": true - }, - { - "name": "SEK/INR", - "isLocked": true - }, - { - "name": "ZAR/NAD", - "isLocked": true - }, - { - "name": "BRL/MXN", - "isLocked": true - }, - { - "name": "GBP/NIO", - "isLocked": true - }, - { - "name": "ZAR/ARS", - "isLocked": true - }, - { - "name": "CAD/BRL", - "isLocked": true - }, - { - "name": "XAU/ARS", - "isLocked": true - }, - { - "name": "USD/BWP", - "isLocked": true - }, - { - "name": "KHR/USD", - "isLocked": true - }, - { - "name": "USD/EUR", - "isLocked": true - }, - { - "name": "HKD/SGD", - "isLocked": true - }, - { - "name": "TWD/KRW", - "isLocked": true - }, - { - "name": "PLN/DKK", - "isLocked": true - }, - { - "name": "CLP/AUD", - "isLocked": true - }, - { - "name": "AUD/CZK", - "isLocked": true - }, - { - "name": "XPD/EUR", - "isLocked": true - }, - { - "name": "CAD/BGN", - "isLocked": true - }, - { - "name": "XAG/HKD", - "isLocked": true - }, - { - "name": "BAM/GBP", - "isLocked": true - }, - { - "name": "MAL/CHF", - "isLocked": true - }, - { - "name": "EUR/HUF", - "isLocked": true - }, - { - "name": "JPY/EUR", - "isLocked": true - }, - { - "name": "HUF/ZAR", - "isLocked": true - }, - { - "name": "AUD/GBP", - "isLocked": true - }, - { - "name": "THB/CAD", - "isLocked": true - }, - { - "name": "AUD/CNY", - "isLocked": true - }, - { - "name": "NOK/CHF", - "isLocked": true - }, - { - "name": "EUR/BND", - "isLocked": true - }, - { - "name": "BRL/SRD", - "isLocked": true - }, - { - "name": "LTL/AUD", - "isLocked": true - }, - { - "name": "UYU/GBP", - "isLocked": true - }, - { - "name": "AUD/RON", - "isLocked": true - }, - { - "name": "OSO/USD", - "isLocked": true - }, - { - "name": "EUR/MGA", - "isLocked": true - }, - { - "name": "ZAR/LSL", - "isLocked": true - }, - { - "name": "XPF/USD", - "isLocked": true - }, - { - "name": "KYD/EUR", - "isLocked": true - }, - { - "name": "AED/HKD", - "isLocked": true - }, - { - "name": "NZD/TOP", - "isLocked": true - }, - { - "name": "GBP/ISK", - "isLocked": true - }, - { - "name": "ZAR/CNH", - "isLocked": true - }, - { - "name": "USD/RUB", - "isLocked": true - }, - { - "name": "USD/BTN", - "isLocked": true - }, - { - "name": "SEK/AED", - "isLocked": true - }, - { - "name": "AUD/KRW", - "isLocked": true - }, - { - "name": "EUR/MZN", - "isLocked": true - }, - { - "name": "EUR/UAH", - "isLocked": true - }, - { - "name": "USD/MMK", - "isLocked": true - }, - { - "name": "XPD/USD", - "isLocked": true - }, - { - "name": "XAG/SAR", - "isLocked": true - }, - { - "name": "ARS/ZAR", - "isLocked": true - }, - { - "name": "SGD/THB", - "isLocked": true - }, - { - "name": "EUR/MOP", - "isLocked": true - }, - { - "name": "HKD/EUR", - "isLocked": true - }, - { - "name": "EUR/ETB", - "isLocked": true - }, - { - "name": "JPY/RUB", - "isLocked": true - }, - { - "name": "JPY/USD", - "isLocked": true - }, - { - "name": "CAD/TWD", - "isLocked": true - }, - { - "name": "BRL/SEK", - "isLocked": true - }, - { - "name": "UGX/USD", - "isLocked": true - }, - { - "name": "KRW/THB", - "isLocked": true - }, - { - "name": "USD/KWD", - "isLocked": true - }, - { - "name": "ILS/CHF", - "isLocked": true - }, - { - "name": "TJS/USD", - "isLocked": true - }, - { - "name": "GBP/TTD", - "isLocked": true - }, - { - "name": "AED/SAR", - "isLocked": true - }, - { - "name": "KYD/USD", - "isLocked": true - }, - { - "name": "ZAR/GHS", - "isLocked": true - }, - { - "name": "BRL/PEN", - "isLocked": true - }, - { - "name": "PHP/NZD", - "isLocked": true - }, - { - "name": "AUD/PLN", - "isLocked": true - }, - { - "name": "CZK/GBP", - "isLocked": true - }, - { - "name": "CHF/SGD", - "isLocked": true - }, - { - "name": "CAD/JPY", - "isLocked": true - }, - { - "name": "OMR/USD", - "isLocked": true - }, - { - "name": "PKR/GBP", - "isLocked": true - }, - { - "name": "HKD/USD", - "isLocked": true - }, - { - "name": "USD/COP", - "isLocked": true - }, - { - "name": "XAG/ARS", - "isLocked": true - }, - { - "name": "EUR/GEL", - "isLocked": true - }, - { - "name": "MWK/ZAR", - "isLocked": true - }, - { - "name": "GBP/MUR", - "isLocked": true - }, - { - "name": "PLN/HKD", - "isLocked": true - }, - { - "name": "MXN/SGD", - "isLocked": true - }, - { - "name": "EUR/DZD", - "isLocked": true - }, - { - "name": "PHP/AUD", - "isLocked": true - }, - { - "name": "ZAR/INR", - "isLocked": true - }, - { - "name": "USD/TMT", - "isLocked": true - }, - { - "name": "XAU/INR", - "isLocked": true - }, - { - "name": "GYD/USD", - "isLocked": true - }, - { - "name": "GBP/ILS", - "isLocked": true - }, - { - "name": "XPT/GBP", - "isLocked": true - }, - { - "name": "NZD/CHF", - "isLocked": true - }, - { - "name": "INR/GBP", - "isLocked": true - }, - { - "name": "INR/CNY", - "isLocked": true - }, - { - "name": "CHF/BWP", - "isLocked": true - }, - { - "name": "THB/NZD", - "isLocked": true - }, - { - "name": "LKR/GBP", - "isLocked": true - }, - { - "name": "CHF/EUR", - "isLocked": true - }, - { - "name": "USD/CVE", - "isLocked": true - }, - { - "name": "USD/AMD", - "isLocked": true - }, - { - "name": "USD/SBD", - "isLocked": true - }, - { - "name": "M5P/CHF", - "isLocked": true - }, - { - "name": "CZK/PLN", - "isLocked": true - }, - { - "name": "CNY/GBP", - "isLocked": true - }, - { - "name": "MYR/PKR", - "isLocked": true - }, - { - "name": "INR/KRW", - "isLocked": true - }, - { - "name": "CLP/CHF", - "isLocked": true - }, - { - "name": "CAD/ZAR", - "isLocked": true - }, - { - "name": "MXN/EUR", - "isLocked": true - }, - { - "name": "AUD/HUF", - "isLocked": true - }, - { - "name": "MMK/USD", - "isLocked": true - }, - { - "name": "USD/QAR", - "isLocked": true - }, - { - "name": "DKK/TRY", - "isLocked": true - }, - { - "name": "GBP/GTQ", - "isLocked": true - }, - { - "name": "ZAR/TND", - "isLocked": true - }, - { - "name": "ZAR/AED", - "isLocked": true - }, - { - "name": "THB/AUD", - "isLocked": true - }, - { - "name": "SAR/EUR", - "isLocked": true - }, - { - "name": "CNY/KRW", - "isLocked": true - }, - { - "name": "CHF/RUB", - "isLocked": true - }, - { - "name": "CHF/USD", - "isLocked": true - }, - { - "name": "ILS/JOD", - "isLocked": true - }, - { - "name": "USD/BSD", - "isLocked": true - }, - { - "name": "KHR/GBP", - "isLocked": true - }, - { - "name": "USD/RSD", - "isLocked": true - }, - { - "name": "MXN/RUB", - "isLocked": true - }, - { - "name": "TND/ZAR", - "isLocked": true - }, - { - "name": "MXN/USD", - "isLocked": true - }, - { - "name": "PEN/MXN", - "isLocked": true - }, - { - "name": "BRL/HKD", - "isLocked": true - }, - { - "name": "CAD/NOK", - "isLocked": true - }, - { - "name": "USD/VES", - "isLocked": true - }, - { - "name": "SAR/USD", - "isLocked": true - }, - { - "name": "SEK/JPY", - "isLocked": true - }, - { - "name": "USD/CZK", - "isLocked": true - }, - { - "name": "USD/UYU", - "isLocked": true - }, - { - "name": "XAG/INR", - "isLocked": true - }, - { - "name": "GBP/TRY", - "isLocked": true - }, - { - "name": "BRL/CLP", - "isLocked": true - }, - { - "name": "XPF/GBP", - "isLocked": true - }, - { - "name": "KMF/USD", - "isLocked": true - }, - { - "name": "NOK/ISK", - "isLocked": true - }, - { - "name": "CZK/HUF", - "isLocked": true - }, - { - "name": "USD/GBP", - "isLocked": true - }, - { - "name": "USD/CNY", - "isLocked": false - }, - { - "name": "JPY/CZK", - "isLocked": true - }, - { - "name": "SAR/KWD", - "isLocked": true - }, - { - "name": "XPD/GBP", - "isLocked": true - }, - { - "name": "USD/MRU", - "isLocked": true - }, - { - "name": "GBP/HNL", - "isLocked": true - }, - { - "name": "EUR/MKD", - "isLocked": true - }, - { - "name": "EUR/UZS", - "isLocked": true - }, - { - "name": "USD/RON", - "isLocked": true - }, - { - "name": "AED/INR", - "isLocked": true - }, - { - "name": "TRY/BRL", - "isLocked": true - }, - { - "name": "MYR/DKK", - "isLocked": true - }, - { - "name": "JPY/GBP", - "isLocked": true - }, - { - "name": "USD/KRW", - "isLocked": false - }, - { - "name": "ZAR/BRL", - "isLocked": true - }, - { - "name": "JPY/CNY", - "isLocked": true - }, - { - "name": "XAUK/CHF", - "isLocked": true - }, - { - "name": "UGX/GBP", - "isLocked": true - }, - { - "name": "MXN/COP", - "isLocked": true - }, - { - "name": "XAU/BRL", - "isLocked": true - }, - { - "name": "JPY/RON", - "isLocked": true - }, - { - "name": "USD/PYG", - "isLocked": true - }, - { - "name": "NZD/THB", - "isLocked": true - }, - { - "name": "GBP/BZD", - "isLocked": true - }, - { - "name": "HUF/SGD", - "isLocked": true - }, - { - "name": "KYD/GBP", - "isLocked": true - }, - { - "name": "EGP/EUR", - "isLocked": true - }, - { - "name": "RON/USD", - "isLocked": true - }, - { - "name": "EUR/PGK", - "isLocked": true - }, - { - "name": "HKD/CZK", - "isLocked": true - }, - { - "name": "JPY/KRW", - "isLocked": true - }, - { - "name": "EUR/CDF", - "isLocked": true - }, - { - "name": "DKK/MXN", - "isLocked": true - }, - { - "name": "PYG/ZAR", - "isLocked": true - }, - { - "name": "GBP/NGN", - "isLocked": true - }, - { - "name": "BMD/BBD", - "isLocked": true - }, - { - "name": "OMR/GBP", - "isLocked": true - }, - { - "name": "HKD/GBP", - "isLocked": true - }, - { - "name": "SEK/ZAR", - "isLocked": true - }, - { - "name": "HKD/CNY", - "isLocked": true - }, - { - "name": "BRL/ARS", - "isLocked": true - }, - { - "name": "DKK/PKR", - "isLocked": true - }, - { - "name": "EUR/SCR", - "isLocked": true - }, - { - "name": "ARS/SGD", - "isLocked": true - }, - { - "name": "USD/PLN", - "isLocked": true - }, - { - "name": "EGP/USD", - "isLocked": true - }, - { - "name": "SGD/TRY", - "isLocked": true - }, - { - "name": "HKD/KRW", - "isLocked": true - }, - { - "name": "EUR/FJD", - "isLocked": true - }, - { - "name": "GYD/GBP", - "isLocked": true - }, - { - "name": "NOK/ILS", - "isLocked": true - }, - { - "name": "JPY/PLN", - "isLocked": true - }, - { - "name": "ZAR/TWD", - "isLocked": true - }, - { - "name": "EUR/CAD", - "isLocked": true - }, - { - "name": "HUF/EUR", - "isLocked": true - }, - { - "name": "KES/ZAR", - "isLocked": true - }, - { - "name": "CNH/PHP", - "isLocked": true - }, - { - "name": "EUR/DJF", - "isLocked": true - }, - { - "name": "THB/CHF", - "isLocked": true - }, - { - "name": "EUR/MDL", - "isLocked": true - }, - { - "name": "ZAR/RWF", - "isLocked": true - }, - { - "name": "SEK/NOK", - "isLocked": true - }, - { - "name": "DKK/PHP", - "isLocked": true - }, - { - "name": "GBP/MXN", - "isLocked": true - }, - { - "name": "TRY/JPY", - "isLocked": true - }, - { - "name": "ANG/SRD", - "isLocked": true - }, - { - "name": "FJD/USD", - "isLocked": true - }, - { - "name": "GBP/KYD", - "isLocked": true - }, - { - "name": "ZAR/JPY", - "isLocked": true - }, - { - "name": "GBP/PKR", - "isLocked": true - }, - { - "name": "XAU/JPY", - "isLocked": true - }, - { - "name": "ZAR/OMR", - "isLocked": true - }, - { - "name": "ARS/EUR", - "isLocked": true - }, - { - "name": "DKK/SEK", - "isLocked": true - }, - { - "name": "HKD/PLN", - "isLocked": true - }, - { - "name": "MYR/HKD", - "isLocked": true - }, - { - "name": "CHF/CZK", - "isLocked": true - }, - { - "name": "XAG/BRL", - "isLocked": true - }, - { - "name": "EUR/MVR", - "isLocked": true - }, - { - "name": "HUF/USD", - "isLocked": true - }, - { - "name": "MMK/GBP", - "isLocked": true - }, - { - "name": "EUR/CRC", - "isLocked": true - }, - { - "name": "BGN/CAD", - "isLocked": true - }, - { - "name": "ZAR/MWK", - "isLocked": true - }, - { - "name": "GBP/SRD", - "isLocked": true - }, - { - "name": "CHF/GBP", - "isLocked": true - }, - { - "name": "PLN/AED", - "isLocked": true - }, - { - "name": "CHF/CNY", - "isLocked": true - }, - { - "name": "PGK/AUD", - "isLocked": true - }, - { - "name": "EUR/LAK", - "isLocked": true - }, - { - "name": "USD/HUF", - "isLocked": true - }, - { - "name": "MXN/CZK", - "isLocked": true - }, - { - "name": "CHF/RON", - "isLocked": true - }, - { - "name": "USD/BND", - "isLocked": true - }, - { - "name": "GBP/PHP", - "isLocked": true - }, - { - "name": "ARS/USD", - "isLocked": true - }, - { - "name": "NIO/USD", - "isLocked": true - }, - { - "name": "ISK/SEK", - "isLocked": true - }, - { - "name": "USD/MGA", - "isLocked": true - }, - { - "name": "ZAR/ZMW", - "isLocked": true - }, - { - "name": "CHF/KRW", - "isLocked": true - }, - { - "name": "MXN/GBP", - "isLocked": true - }, - { - "name": "JPY/HUF", - "isLocked": true - }, - { - "name": "DKK/MYR", - "isLocked": true - }, - { - "name": "USD/MZN", - "isLocked": true - }, - { - "name": "GBP/SEK", - "isLocked": true - }, - { - "name": "USD/UAH", - "isLocked": true - }, - { - "name": "NBL/CHF", - "isLocked": true - }, - { - "name": "CAD/SGD", - "isLocked": true - }, - { - "name": "EUR/BOB", - "isLocked": true - }, - { - "name": "TRY/ZAR", - "isLocked": true - }, - { - "name": "USD/MOP", - "isLocked": true - }, - { - "name": "NOK/TRY", - "isLocked": true - }, - { - "name": "AUD/PGK", - "isLocked": true - }, - { - "name": "USD/ETB", - "isLocked": true - }, - { - "name": "ZAR/CYP", - "isLocked": true - }, - { - "name": "KMF/GBP", - "isLocked": true - }, - { - "name": "SGD/MXN", - "isLocked": true - }, - { - "name": "XAU/ZAR", - "isLocked": true - }, - { - "name": "TWD/CAD", - "isLocked": true - }, - { - "name": "GBP/PEN", - "isLocked": true - }, - { - "name": "ISK/DKK", - "isLocked": true - }, - { - "name": "HKD/HUF", - "isLocked": true - }, - { - "name": "JOD/USD", - "isLocked": true - }, - { - "name": "SGD/PKR", - "isLocked": true - }, - { - "name": "PEN/CLP", - "isLocked": true - }, - { - "name": "EUR/NZD", - "isLocked": true - }, - { - "name": "CHF/PLN", - "isLocked": true - }, - { - "name": "QAR/PKR", - "isLocked": true - }, - { - "name": "EUR/LFX", - "isLocked": true - }, - { - "name": "COP/CAD", - "isLocked": true - }, - { - "name": "GBP/DKK", - "isLocked": true - }, - { - "name": "ARS/COP", - "isLocked": true - }, - { - "name": "MWK/USD", - "isLocked": true - }, - { - "name": "XAG/JPY", - "isLocked": true - }, - { - "name": "ZAR/NPR", - "isLocked": true - }, - { - "name": "GBP/MYR", - "isLocked": true - }, - { - "name": "AUD/FJD", - "isLocked": true - }, - { - "name": "TRY/NOK", - "isLocked": true - }, - { - "name": "MXN/PLN", - "isLocked": true - }, - { - "name": "USD/GEL", - "isLocked": true - }, - { - "name": "CAD/EUR", - "isLocked": true - }, - { - "name": "RON/GBP", - "isLocked": true - }, - { - "name": "RUB/MXN", - "isLocked": true - }, - { - "name": "GBP/KES", - "isLocked": true - }, - { - "name": "ZAR/NOK", - "isLocked": true - }, - { - "name": "AUD/CAD", - "isLocked": true - }, - { - "name": "EUR/AUD", - "isLocked": true - }, - { - "name": "AED/JPY", - "isLocked": true - }, - { - "name": "USD/DZD", - "isLocked": true - }, - { - "name": "KWD/EUR", - "isLocked": true - }, - { - "name": "ALL/EUR", - "isLocked": true - }, - { - "name": "MYR/CNH", - "isLocked": true - }, - { - "name": "CNH/HKD", - "isLocked": true - }, - { - "name": "ARE/USD", - "isLocked": true - }, - { - "name": "SGD/SEK", - "isLocked": true - }, - { - "name": "DKK/HKD", - "isLocked": true - }, - { - "name": "DOE/USD", - "isLocked": true - }, - { - "name": "GBP/LBP", - "isLocked": true - }, - { - "name": "CAD/RUB", - "isLocked": true - }, - { - "name": "CAD/USD", - "isLocked": true - }, - { - "name": "EUR/GYD", - "isLocked": true - }, - { - "name": "PEN/ARS", - "isLocked": true - }, - { - "name": "KRW/SEK", - "isLocked": true - }, - { - "name": "YER/USD", - "isLocked": true - }, - { - "name": "EUR/LKR", - "isLocked": true - }, - { - "name": "ZAR/UGX", - "isLocked": true - }, - { - "name": "EUR/GNF", - "isLocked": true - }, - { - "name": "CHF/HUF", - "isLocked": true - }, - { - "name": "BGN/AUD", - "isLocked": true - }, - { - "name": "KWD/USD", - "isLocked": true - }, - { - "name": "EUR/DOP", - "isLocked": true - }, - { - "name": "DZD/EUR", - "isLocked": true - }, - { - "name": "NZD/TRY", - "isLocked": true - }, - { - "name": "XAG/ZAR", - "isLocked": true - }, - { - "name": "ALL/USD", - "isLocked": true - }, - { - "name": "CAD/KWD", - "isLocked": true - }, - { - "name": "NOK/MXN", - "isLocked": true - }, - { - "name": "SGD/DKK", - "isLocked": true - }, - { - "name": "RUB/SEK", - "isLocked": true - }, - { - "name": "CZK/CAD", - "isLocked": true - }, - { - "name": "FJD/GBP", - "isLocked": true - }, - { - "name": "SEK/SGD", - "isLocked": true - }, - { - "name": "ZAR/TZS", - "isLocked": true - }, - { - "name": "HUF/CZK", - "isLocked": true - }, - { - "name": "SGD/MYR", - "isLocked": true - }, - { - "name": "TND/USD", - "isLocked": true - }, - { - "name": "MXN/HUF", - "isLocked": true - }, - { - "name": "BOB/USD", - "isLocked": true - }, - { - "name": "TWD/NZD", - "isLocked": true - }, - { - "name": "EUR/BDT", - "isLocked": true - }, - { - "name": "GBP/HKD", - "isLocked": true - }, - { - "name": "AED/ZAR", - "isLocked": true - }, - { - "name": "PLN/JPY", - "isLocked": true - }, - { - "name": "KRW/MYR", - "isLocked": true - }, - { - "name": "HUF/GBP", - "isLocked": true - }, - { - "name": "CAD/COP", - "isLocked": true - }, - { - "name": "GBP/KHR", - "isLocked": true - }, - { - "name": "DZD/USD", - "isLocked": true - }, - { - "name": "UAH/DKK", - "isLocked": true - }, - { - "name": "GBP/HTG", - "isLocked": true - }, - { - "name": "MYR/INR", - "isLocked": true - }, - { - "name": "EUR/BMD", - "isLocked": true - }, - { - "name": "GBP/CLP", - "isLocked": true - }, - { - "name": "RUB/DKK", - "isLocked": true - }, - { - "name": "HTG/USD", - "isLocked": true - }, - { - "name": "TWD/AUD", - "isLocked": true - }, - { - "name": "INR/CAD", - "isLocked": true - }, - { - "name": "ARS/GBP", - "isLocked": true - }, - { - "name": "AUD/NZD", - "isLocked": true - }, - { - "name": "USD/XPF", - "isLocked": true - }, - { - "name": "NIO/GBP", - "isLocked": true - }, - { - "name": "EUR/HRK", - "isLocked": true - }, - { - "name": "SEK/EUR", - "isLocked": true - }, - { - "name": "GBP/SAR", - "isLocked": true - }, - { - "name": "AUD/LFX", - "isLocked": true - }, - { - "name": "EUR/TJS", - "isLocked": true - }, - { - "name": "AED/NOK", - "isLocked": true - }, - { - "name": "GBP/IQD", - "isLocked": true - }, - { - "name": "BTN/USD", - "isLocked": true - }, - { - "name": "NOK/SEK", - "isLocked": true - }, - { - "name": "CNY/CAD", - "isLocked": true - }, - { - "name": "USD/MKD", - "isLocked": true - }, - { - "name": "USD/UZS", - "isLocked": true - }, - { - "name": "AWG/USD", - "isLocked": true - }, - { - "name": "SZL/ZAR", - "isLocked": true - }, - { - "name": "GBP/PAB", - "isLocked": true - }, - { - "name": "EUR/EGP", - "isLocked": true - }, - { - "name": "HUF/PLN", - "isLocked": true - }, - { - "name": "MVR/USD", - "isLocked": true - }, - { - "name": "GBP/YER", - "isLocked": true - }, - { - "name": "PYG/USD", - "isLocked": true - }, - { - "name": "PLN/ZAR", - "isLocked": true - }, - { - "name": "KES/EUR", - "isLocked": true - }, - { - "name": "HNL/USD", - "isLocked": true - }, - { - "name": "EUR/CHF", - "isLocked": true - }, - { - "name": "SEK/RUB", - "isLocked": true - }, - { - "name": "SEK/USD", - "isLocked": true - }, - { - "name": "IQD/USD", - "isLocked": true - }, - { - "name": "USD/PGK", - "isLocked": true - }, - { - "name": "SGD/HKD", - "isLocked": true - }, - { - "name": "NZD/MXN", - "isLocked": true - }, - { - "name": "NOK/DKK", - "isLocked": true - }, - { - "name": "GBP/ARS", - "isLocked": true - }, - { - "name": "EUR/MAD", - "isLocked": true - }, - { - "name": "USD/CDF", - "isLocked": true - }, - { - "name": "MWK/GBP", - "isLocked": true - }, - { - "name": "ILS/SEK", - "isLocked": true - }, - { - "name": "BRL/JPY", - "isLocked": true - }, - { - "name": "NZD/PKR", - "isLocked": true - }, - { - "name": "KRW/HKD", - "isLocked": true - }, - { - "name": "CZK/NZD", - "isLocked": true - }, - { - "name": "USD/SCR", - "isLocked": true - }, - { - "name": "SVC/USD", - "isLocked": true - }, - { - "name": "EUR/SZL", - "isLocked": true - }, - { - "name": "TRY/SGD", - "isLocked": true - }, - { - "name": "CLP/MXN", - "isLocked": true - }, - { - "name": "KES/USD", - "isLocked": true - }, - { - "name": "EUR/VND", - "isLocked": true - }, - { - "name": "GBP/AFN", - "isLocked": true - }, - { - "name": "XCD/SRD", - "isLocked": true - }, - { - "name": "ZAR/SGD", - "isLocked": true - }, - { - "name": "PLN/NOK", - "isLocked": true - }, - { - "name": "NSO/USD", - "isLocked": true - }, - { - "name": "USD/FJD", - "isLocked": true - }, - { - "name": "GBP/LSL", - "isLocked": true - }, - { - "name": "AUD/TOP", - "isLocked": true - }, - { - "name": "GBP/CNH", - "isLocked": true - }, - { - "name": "CAD/CZK", - "isLocked": true - }, - { - "name": "USD/CAD", - "isLocked": false - }, - { - "name": "TTD/SRD", - "isLocked": true - }, - { - "name": "CZK/AUD", - "isLocked": true - }, - { - "name": "NZD/PHP", - "isLocked": true - }, - { - "name": "EUR/LRD", - "isLocked": true - }, - { - "name": "USD/MDL", - "isLocked": true - }, - { - "name": "CAD/GBP", - "isLocked": true - }, - { - "name": "INR/NZD", - "isLocked": true - }, - { - "name": "CAD/CNY", - "isLocked": true - }, - { - "name": "CNH/INR", - "isLocked": true - }, - { - "name": "JPY/CAD", - "isLocked": true - }, - { - "name": "YER/GBP", - "isLocked": true - }, - { - "name": "AUN/CHF", - "isLocked": true - }, - { - "name": "CAD/RON", - "isLocked": true - }, - { - "name": "NZD/SEK", - "isLocked": true - }, - { - "name": "DKK/INR", - "isLocked": true - }, - { - "name": "EUR/SLL", - "isLocked": true - }, - { - "name": "GBP/BBD", - "isLocked": true - }, - { - "name": "TRY/EUR", - "isLocked": true - }, - { - "name": "KYD/CAD", - "isLocked": true - }, - { - "name": "RWF/ZAR", - "isLocked": true - }, - { - "name": "LBP/USD", - "isLocked": true - }, - { - "name": "KWD/GBP", - "isLocked": true - }, - { - "name": "EUR/SVC", - "isLocked": true - }, - { - "name": "CAD/KRW", - "isLocked": true - }, - { - "name": "GBP/CUP", - "isLocked": true - }, - { - "name": "LSL/USD", - "isLocked": true - }, - { - "name": "CNY/NZD", - "isLocked": true - }, - { - "name": "ALL/GBP", - "isLocked": true - }, - { - "name": "BRL/ZAR", - "isLocked": true - }, - { - "name": "ZAR/BWP", - "isLocked": true - }, - { - "name": "EUR/KZT", - "isLocked": true - }, - { - "name": "USD/MVR", - "isLocked": true - }, - { - "name": "ZAR/EUR", - "isLocked": true - }, - { - "name": "GBP/GHS", - "isLocked": true - }, - { - "name": "XAU/EUR", - "isLocked": true - }, - { - "name": "USD/CRC", - "isLocked": true - }, - { - "name": "SGD/ARS", - "isLocked": true - }, - { - "name": "INR/AUD", - "isLocked": true - }, - { - "name": "TWD/CHF", - "isLocked": true - }, - { - "name": "AUD/HRK", - "isLocked": true - }, - { - "name": "HKD/CAD", - "isLocked": true - }, - { - "name": "TND/GBP", - "isLocked": true - }, - { - "name": "BYN/USD", - "isLocked": true - }, - { - "name": "BOB/GBP", - "isLocked": true - }, - { - "name": "XPDK/CHF", - "isLocked": true - }, - { - "name": "USD/LAK", - "isLocked": true - }, - { - "name": "NOK/HKD", - "isLocked": true - }, - { - "name": "EUR/JOD", - "isLocked": true - }, - { - "name": "NZD/DKK", - "isLocked": true - }, - { - "name": "CNY/AUD", - "isLocked": true - }, - { - "name": "TRY/USD", - "isLocked": true - }, - { - "name": "NZD/MYR", - "isLocked": true - }, - { - "name": "CLP/PEN", - "isLocked": true - }, - { - "name": "ZAR/RUB", - "isLocked": true - }, - { - "name": "ZAR/BTN", - "isLocked": true - }, - { - "name": "EUR/THB", - "isLocked": true - }, - { - "name": "CAD/PLN", - "isLocked": true - }, - { - "name": "XAU/RUB", - "isLocked": true - }, - { - "name": "DKK/AED", - "isLocked": true - }, - { - "name": "ZAR/USD", - "isLocked": true - }, - { - "name": "GBP/INR", - "isLocked": true - }, - { - "name": "XAU/USD", - "isLocked": true - }, - { - "name": "PEN/BRL", - "isLocked": true - }, - { - "name": "ZAR/MMK", - "isLocked": true - }, - { - "name": "SGD/CNH", - "isLocked": true - }, - { - "name": "EUR/BHD", - "isLocked": true - }, - { - "name": "MYR/TWD", - "isLocked": true - }, - { - "name": "BRI/CHF", - "isLocked": true - }, - { - "name": "HTG/GBP", - "isLocked": true - }, - { - "name": "USD/BOB", - "isLocked": true - }, - { - "name": "AUD/CHF", - "isLocked": true - }, - { - "name": "ZAR/KWD", - "isLocked": true - }, - { - "name": "AUD/MAD", - "isLocked": true - }, - { - "name": "EUR/NIO", - "isLocked": true - }, - { - "name": "BTN/GBP", - "isLocked": true - }, - { - "name": "MYR/JPY", - "isLocked": true - }, - { - "name": "BHD/EUR", - "isLocked": true - }, - { - "name": "AED/SGD", - "isLocked": true - }, - { - "name": "USD/NZD", - "isLocked": true - }, - { - "name": "SEK/CZK", - "isLocked": true - }, - { - "name": "AWG/GBP", - "isLocked": true - }, - { - "name": "GBP/TND", - "isLocked": true - }, - { - "name": "GBP/AED", - "isLocked": true - }, - { - "name": "ZAR/COP", - "isLocked": true - }, - { - "name": "JPY/NZD", - "isLocked": true - }, - { - "name": "HNL/GBP", - "isLocked": true - }, - { - "name": "CHF/CAD", - "isLocked": true - }, - { - "name": "SEK/GBP", - "isLocked": true - }, - { - "name": "IQD/GBP", - "isLocked": true - }, - { - "name": "XAG/EUR", - "isLocked": true - }, - { - "name": "GBP/ANG", - "isLocked": true - }, - { - "name": "EUR/ISK", - "isLocked": true - }, - { - "name": "BWP/ZAR", - "isLocked": true - }, - { - "name": "USD/AUD", - "isLocked": true - }, - { - "name": "USD/STN", - "isLocked": true - }, - { - "name": "BHD/USD", - "isLocked": true - }, - { - "name": "CZK/CHF", - "isLocked": true - }, - { - "name": "CAD/HUF", - "isLocked": true - }, - { - "name": "JMD/EUR", - "isLocked": true - }, - { - "name": "MXN/CAD", - "isLocked": true - }, - { - "name": "THB/PKR", - "isLocked": true - }, - { - "name": "SGD/INR", - "isLocked": true - }, - { - "name": "AED/EUR", - "isLocked": true - }, - { - "name": "NZD/HKD", - "isLocked": true - }, - { - "name": "SOS/USD", - "isLocked": true - }, - { - "name": "JPY/AUD", - "isLocked": true - }, - { - "name": "HKD/NZD", - "isLocked": true - }, - { - "name": "GBP/ALL", - "isLocked": true - }, - { - "name": "SVC/GBP", - "isLocked": true - }, - { - "name": "DKK/BGN", - "isLocked": true - }, - { - "name": "GBP/BAM", - "isLocked": true - }, - { - "name": "KRW/INR", - "isLocked": true - }, - { - "name": "XAG/RUB", - "isLocked": true - }, - { - "name": "XAG/USD", - "isLocked": true - }, - { - "name": "USD/GYD", - "isLocked": true - }, - { - "name": "EUR/TTD", - "isLocked": true - }, - { - "name": "TWD/THB", - "isLocked": true - }, - { - "name": "MYR/ZAR", - "isLocked": true - }, - { - "name": "PLN/SGD", - "isLocked": true - }, - { - "name": "XAGK/CHF", - "isLocked": true - }, - { - "name": "USD/LKR", - "isLocked": true - }, - { - "name": "NOK/CNH", - "isLocked": true - }, - { - "name": "USD/GNF", - "isLocked": true - }, - { - "name": "JMD/USD", - "isLocked": true - }, - { - "name": "USD/DOP", - "isLocked": true - }, - { - "name": "UZS/USD", - "isLocked": true - }, - { - "name": "PHP/DKK", - "isLocked": true - }, - { - "name": "INR/CHF", - "isLocked": true - }, - { - "name": "HKD/AUD", - "isLocked": true - }, - { - "name": "SEK/PLN", - "isLocked": true - }, - { - "name": "ZAR/QAR", - "isLocked": true - }, - { - "name": "AED/USD", - "isLocked": true - }, - { - "name": "USD/TOP", - "isLocked": true - }, - { - "name": "GBP/KMF", - "isLocked": true - }, - { - "name": "GBP/BRL", - "isLocked": true - }, - { - "name": "CNH/TWD", - "isLocked": true - }, - { - "name": "SGD/AED", - "isLocked": true - }, - { - "name": "EUR/MUR", - "isLocked": true - }, - { - "name": "CNY/CHF", - "isLocked": true - }, - { - "name": "QAR/AED", - "isLocked": true - }, - { - "name": "AUD/THB", - "isLocked": true - }, - { - "name": "DKK/TWD", - "isLocked": true - }, - { - "name": "USD/BDT", - "isLocked": true - }, - { - "name": "GBP/BGN", - "isLocked": true - }, - { - "name": "LSL/GBP", - "isLocked": true - }, - { - "name": "SZL/EUR", - "isLocked": true - }, - { - "name": "EUR/ILS", - "isLocked": true - }, - { - "name": "GBP/MTL", - "isLocked": true - }, - { - "name": "PLN/EUR", - "isLocked": true - }, - { - "name": "CNH/JPY", - "isLocked": true - }, - { - "name": "BYN/GBP", - "isLocked": true - }, - { - "name": "TRY/CZK", - "isLocked": true - }, - { - "name": "DKK/JPY", - "isLocked": true - }, - { - "name": "BMD/EUR", - "isLocked": true - }, - { - "name": "ETB/ZAR", - "isLocked": true - }, - { - "name": "CHF/NZD", - "isLocked": true - }, - { - "name": "ZAR/CZK", - "isLocked": true - }, - { - "name": "ZAR/UYU", - "isLocked": true - }, - { - "name": "CHF/LFX", - "isLocked": true - }, - { - "name": "MOP/USD", - "isLocked": true - }, - { - "name": "USD/HRK", - "isLocked": true - }, - { - "name": "TRY/GBP", - "isLocked": true - }, - { - "name": "THB/MYR", - "isLocked": true - }, - { - "name": "NOK/INR", - "isLocked": true - }, - { - "name": "ZAR/GBP", - "isLocked": true - }, - { - "name": "USD/TJS", - "isLocked": true - }, - { - "name": "HRK/EUR", - "isLocked": true - }, - { - "name": "XAU/GBP", - "isLocked": true - }, - { - "name": "ZAR/CNY", - "isLocked": true - }, - { - "name": "SZL/USD", - "isLocked": true - }, - { - "name": "GHS/ZAR", - "isLocked": true - }, - { - "name": "XAU/CNY", - "isLocked": true - }, - { - "name": "MXN/NZD", - "isLocked": true - }, - { - "name": "GBP/TWD", - "isLocked": true - }, - { - "name": "EUR/GTQ", - "isLocked": true - }, - { - "name": "KYD/BMD", - "isLocked": true - }, - { - "name": "PLN/USD", - "isLocked": true - }, - { - "name": "ZAR/RON", - "isLocked": true - }, - { - "name": "CLP/ARS", - "isLocked": true - }, - { - "name": "BRL/SGD", - "isLocked": true - }, - { - "name": "SEK/HUF", - "isLocked": true - }, - { - "name": "CHF/AUD", - "isLocked": true - }, - { - "name": "LAK/USD", - "isLocked": true - }, - { - "name": "ISK/JPY", - "isLocked": true - }, - { - "name": "GBP/AWG", - "isLocked": true - }, - { - "name": "CUP/USD", - "isLocked": true - }, - { - "name": "GBP/RWF", - "isLocked": true - }, - { - "name": "ZAR/KRW", - "isLocked": true - }, - { - "name": "OSO/CHF", - "isLocked": true - }, - { - "name": "XAU/KRW", - "isLocked": true - }, - { - "name": "USD/EGP", - "isLocked": true - }, - { - "name": "NZD/CNH", - "isLocked": true - }, - { - "name": "SGD/BRL", - "isLocked": true - }, - { - "name": "ZAR/PYG", - "isLocked": true - }, - { - "name": "USD/CHF", - "isLocked": false - }, - { - "name": "GBP/JPY", - "isLocked": true - }, - { - "name": "GBP/OMR", - "isLocked": true - }, - { - "name": "KZT/USD", - "isLocked": true - }, - { - "name": "MXN/AUD", - "isLocked": true - }, - { - "name": "HRK/USD", - "isLocked": true - }, - { - "name": "KRW/BRL", - "isLocked": true - }, - { - "name": "USD/MAD", - "isLocked": true - }, - { - "name": "HUF/CAD", - "isLocked": true - }, - { - "name": "JPY/CHF", - "isLocked": true - }, - { - "name": "NOK/AED", - "isLocked": true - }, - { - "name": "DKK/ZAR", - "isLocked": true - }, - { - "name": "TRY/PLN", - "isLocked": true - }, - { - "name": "GBP/MWK", - "isLocked": true - }, - { - "name": "EUR/TRY", - "isLocked": true - }, - { - "name": "BRL/EUR", - "isLocked": true - }, - { - "name": "GBP/BIF", - "isLocked": true - }, - { - "name": "ZAR/PLN", - "isLocked": true - }, - { - "name": "INR/THB", - "isLocked": true - }, - { - "name": "USD/SZL", - "isLocked": true - }, - { - "name": "USD/XCD", - "isLocked": true - }, - { - "name": "USD/VND", - "isLocked": true - }, - { - "name": "ARS/CAD", - "isLocked": true - }, - { - "name": "EUR/HNL", - "isLocked": true - }, - { - "name": "GBP/ZMW", - "isLocked": true - }, - { - "name": "GBP/JMD", - "isLocked": true - }, - { - "name": "CNY/THB", - "isLocked": true - }, - { - "name": "HKD/CHF", - "isLocked": true - }, - { - "name": "THB/HKD", - "isLocked": true - }, - { - "name": "SOS/GBP", - "isLocked": true - }, - { - "name": "SGD/TWD", - "isLocked": true - }, - { - "name": "ILS/AED", - "isLocked": true - }, - { - "name": "USD/LRD", - "isLocked": true - }, - { - "name": "RWF/USD", - "isLocked": true - }, - { - "name": "DKK/NOK", - "isLocked": true - }, - { - "name": "BRL/RUB", - "isLocked": true - }, - { - "name": "XAG/GBP", - "isLocked": true - }, - { - "name": "BRL/USD", - "isLocked": true - }, - { - "name": "XAG/CNY", - "isLocked": true - }, - { - "name": "KRW/TWD", - "isLocked": true - }, - { - "name": "EUR/BZD", - "isLocked": true - }, - { - "name": "NZD/INR", - "isLocked": true - }, - { - "name": "GBP/ZAR", - "isLocked": true - }, - { - "name": "AUD/ILS", - "isLocked": true - }, - { - "name": "AED/CZK", - "isLocked": true - }, - { - "name": "USD/SLL", - "isLocked": true - }, - { - "name": "AUD/LTL", - "isLocked": true - }, - { - "name": "CDF/USD", - "isLocked": true - }, - { - "name": "SGD/JPY", - "isLocked": true - }, - { - "name": "JMD/GBP", - "isLocked": true - }, - { - "name": "USD/SVC", - "isLocked": true - }, - { - "name": "XAG/KRW", - "isLocked": true - }, - { - "name": "EUR/NGN", - "isLocked": true - }, - { - "name": "USD/KZT", - "isLocked": true - }, - { - "name": "AED/GBP", - "isLocked": true - }, - { - "name": "KRW/JPY", - "isLocked": true - }, - { - "name": "TRY/HUF", - "isLocked": true - }, - { - "name": "GBP/NPR", - "isLocked": true - }, - { - "name": "CNH/IDR", - "isLocked": true - }, - { - "name": "ISK/NOK", - "isLocked": true - }, - { - "name": "ZAR/HUF", - "isLocked": true - }, - { - "name": "USD/JOD", - "isLocked": true - }, - { - "name": "GBP/NOK", - "isLocked": true - }, - { - "name": "BRL/COP", - "isLocked": true - }, - { - "name": "ZAR/MGA", - "isLocked": true - }, - { - "name": "NZD/AED", - "isLocked": true - }, - { - "name": "RUB/JPY", - "isLocked": true - }, - { - "name": "HUF/NZD", - "isLocked": true - }, - { - "name": "USD/THB", - "isLocked": true - }, - { - "name": "VES/EUR", - "isLocked": true - }, - { - "name": "ZAR/MZN", - "isLocked": true - }, - { - "name": "USD/BHD", - "isLocked": true - }, - { - "name": "USD/XOF", - "isLocked": true - }, - { - "name": "EUR/MXN", - "isLocked": true - }, - { - "name": "BWP/EUR", - "isLocked": true - }, - { - "name": "GBP/LYD", - "isLocked": true - }, - { - "name": "EUR/KYD", - "isLocked": true - }, - { - "name": "ZAR/ETB", - "isLocked": true - }, - { - "name": "JPY/THB", - "isLocked": true - }, - { - "name": "PLN/CZK", - "isLocked": true - }, - { - "name": "EUR/PKR", - "isLocked": true - }, - { - "name": "GTQ/USD", - "isLocked": true - }, - { - "name": "BBD/SRD", - "isLocked": true - }, - { - "name": "AED/PLN", - "isLocked": true - }, - { - "name": "MXN/CHF", - "isLocked": true - }, - { - "name": "USD/NIO", - "isLocked": true - }, - { - "name": "SGD/ZAR", - "isLocked": true - }, - { - "name": "SZL/GBP", - "isLocked": true - }, - { - "name": "HUF/AUD", - "isLocked": true - }, - { - "name": "GBP/UGX", - "isLocked": true - }, - { - "name": "QAR/ZAR", - "isLocked": true - }, - { - "name": "PLN/GBP", - "isLocked": true - }, - { - "name": "CHF/SZL", - "isLocked": true - }, - { - "name": "KRW/ZAR", - "isLocked": true - }, - { - "name": "AUD/TRY", - "isLocked": true - }, - { - "name": "VES/USD", - "isLocked": true - }, - { - "name": "EUR/SRD", - "isLocked": true - }, - { - "name": "MYR/EUR", - "isLocked": true - }, - { - "name": "LAK/GBP", - "isLocked": true - }, - { - "name": "ZWD/GBP", - "isLocked": true - }, - { - "name": "BWP/USD", - "isLocked": true - }, - { - "name": "BMD/GBP", - "isLocked": true - }, - { - "name": "HKD/THB", - "isLocked": true - }, - { - "name": "XOF/ZAR", - "isLocked": true - }, - { - "name": "GBP/TZS", - "isLocked": true - }, - { - "name": "EUR/PHP", - "isLocked": true - }, - { - "name": "NOK/JPY", - "isLocked": true - }, - { - "name": "ARS/AUD", - "isLocked": true - }, - { - "name": "TZS/ZAR", - "isLocked": true - }, - { - "name": "KZT/GBP", - "isLocked": true - }, - { - "name": "USD/ISK", - "isLocked": true - }, - { - "name": "RUB/ZAR", - "isLocked": true - }, - { - "name": "FJD/TOP", - "isLocked": true - }, - { - "name": "SGD/NOK", - "isLocked": true - }, - { - "name": "NZD/BRL", - "isLocked": true - }, - { - "name": "EUR/SEK", - "isLocked": true - }, - { - "name": "BDT/JPY", - "isLocked": true - }, - { - "name": "GBP/BYN", - "isLocked": true - }, - { - "name": "MYR/USD", - "isLocked": true - }, - { - "name": "JPY/ISK", - "isLocked": true - }, - { - "name": "RON/CHF", - "isLocked": true - }, - { - "name": "EUR/PEN", - "isLocked": true - }, - { - "name": "ILS/JPY", - "isLocked": true - }, - { - "name": "CLP/BRL", - "isLocked": true - }, - { - "name": "BRL/VES", - "isLocked": true - }, - { - "name": "IDR/MYR", - "isLocked": true - }, - { - "name": "USD/TTD", - "isLocked": true - }, - { - "name": "AED/HUF", - "isLocked": true - }, - { - "name": "CZK/TRY", - "isLocked": true - }, - { - "name": "PEN/EUR", - "isLocked": true - }, - { - "name": "EUR/DKK", - "isLocked": true - }, - { - "name": "MGA/ZAR", - "isLocked": true - }, - { - "name": "SGD/IDR", - "isLocked": true - }, - { - "name": "EUR/MYR", - "isLocked": true - }, - { - "name": "RWF/GBP", - "isLocked": true - }, - { - "name": "TWD/PKR", - "isLocked": true - }, - { - "name": "COP/MXN", - "isLocked": true - }, - { - "name": "BRL/GBP", - "isLocked": true - }, - { - "name": "THB/INR", - "isLocked": true - }, - { - "name": "NOK/ZAR", - "isLocked": true - }, - { - "name": "DKK/SGD", - "isLocked": true - }, - { - "name": "GHS/EUR", - "isLocked": true - }, - { - "name": "EUR/KES", - "isLocked": true - }, - { - "name": "CAD/NZD", - "isLocked": true - }, - { - "name": "CHF/THB", - "isLocked": true - }, - { - "name": "NZD/TWD", - "isLocked": true - }, - { - "name": "USD/MUR", - "isLocked": true - }, - { - "name": "CAD/LFX", - "isLocked": true - }, - { - "name": "SEK/CAD", - "isLocked": true - }, - { - "name": "CDF/GBP", - "isLocked": true - }, - { - "name": "PEN/USD", - "isLocked": true - }, - { - "name": "BRL/KRW", - "isLocked": true - }, - { - "name": "ETB/USD", - "isLocked": true - }, - { - "name": "AUD/MXN", - "isLocked": true - }, - { - "name": "USD/ILS", - "isLocked": true - }, - { - "name": "BGN/DKK", - "isLocked": true - }, - { - "name": "NZD/JPY", - "isLocked": true - }, - { - "name": "AUD/PKR", - "isLocked": true - }, - { - "name": "EUR/LBP", - "isLocked": true - }, - { - "name": "CAD/AUD", - "isLocked": true - }, - { - "name": "GHS/USD", - "isLocked": true - }, - { - "name": "JPY/ILS", - "isLocked": true - }, - { - "name": "ILS/ZAR", - "isLocked": true - }, - { - "name": "PLN/HUF", - "isLocked": true - }, - { - "name": "MAD/ZAR", - "isLocked": true - }, - { - "name": "MTL/GBP", - "isLocked": true - }, - { - "name": "USD/BTC", - "isLocked": true - }, - { - "name": "BTC/USD", - "isLocked": true - }, - { - "name": "BTC/ETH", - "isLocked": true - }, - { - "name": "ETH/BTC", - "isLocked": true - }, - { - "name": "ETH/USD", - "isLocked": true - }, - { - "name": "USD/ETH", - "isLocked": true - }, - { - "name": "BTC/LTC", - "isLocked": true - }, - { - "name": "LTC/BTC", - "isLocked": true - }, - { - "name": "LTC/USD", - "isLocked": true - }, - { - "name": "USD/LTC", - "isLocked": true - }, - { - "name": "XRP/USD", - "isLocked": true - }, - { - "name": "USD/XRP", - "isLocked": true - }, - { - "name": "XRP/BTC", - "isLocked": true - }, - { - "name": "BTC/XRP", - "isLocked": true - }, - { - "name": "DSH/USD", - "isLocked": true - }, - { - "name": "USD/DSH", - "isLocked": true - }, - { - "name": "DSH/BTC", - "isLocked": true - }, - { - "name": "BTC/DASH", - "isLocked": true - }, - { - "name": "BCH/USD", - "isLocked": true - }, - { - "name": "USD/BCH", - "isLocked": true - }, - { - "name": "BCH/BTC", - "isLocked": true - }, - { - "name": "BTC/BCH", - "isLocked": true - }, - { - "name": "DASH/BTC", - "isLocked": true - }, - { - "name": "EUR/BTC", - "isLocked": true - }, - { - "name": "EUR/ETH", - "isLocked": true - }, - { - "name": "EUR/BCH", - "isLocked": true - }, - { - "name": "USD/DASH", - "isLocked": true - }, - { - "name": "TRY/RUB", - "isLocked": true - }, - { - "name": "TRY/BTC", - "isLocked": true - }, - { - "name": "BTC/EUR", - "isLocked": true - }, - { - "name": "BTC/JPY", - "isLocked": true - }, - { - "name": "BTC/GBP", - "isLocked": true - }, - { - "name": "BTC/SGD", - "isLocked": true - }, - { - "name": "BTC/RUB", - "isLocked": true - }, - { - "name": "BTC/TRY", - "isLocked": true - }, - { - "name": "BTC/ZAR", - "isLocked": true - }, - { - "name": "BTC/PLN", - "isLocked": true - }, - { - "name": "ETH/EUR", - "isLocked": true - }, - { - "name": "ETH/JPY", - "isLocked": true - }, - { - "name": "ETH/GBP", - "isLocked": true - }, - { - "name": "ETH/CAD", - "isLocked": true - }, - { - "name": "ETH/CHF", - "isLocked": true - }, - { - "name": "ETH/SGD", - "isLocked": true - }, - { - "name": "ETH/RUB", - "isLocked": true - }, - { - "name": "ETH/TRY", - "isLocked": true - }, - { - "name": "ETH/ZAR", - "isLocked": true - }, - { - "name": "ETH/PLN", - "isLocked": true - }, - { - "name": "ETH/LTC", - "isLocked": true - }, - { - "name": "ETH/XRP", - "isLocked": true - }, - { - "name": "ETH/DASH", - "isLocked": true - }, - { - "name": "ETH/BCH", - "isLocked": true - }, - { - "name": "LTC/EUR", - "isLocked": true - }, - { - "name": "LTC/GBP", - "isLocked": true - }, - { - "name": "LTC/RUB", - "isLocked": true - }, - { - "name": "LTC/ETH", - "isLocked": true - }, - { - "name": "LTC/BCH", - "isLocked": true - }, - { - "name": "XRP/EUR", - "isLocked": true - }, - { - "name": "XRP/JPY", - "isLocked": true - }, - { - "name": "XRP/GBP", - "isLocked": true - }, - { - "name": "XRP/CAD", - "isLocked": true - }, - { - "name": "XRP/RUB", - "isLocked": true - }, - { - "name": "XRP/TRY", - "isLocked": true - }, - { - "name": "XRP/ETH", - "isLocked": true - }, - { - "name": "XRP/BCH", - "isLocked": true - }, - { - "name": "DASH/EUR", - "isLocked": true - }, - { - "name": "DASH/RUB", - "isLocked": true - }, - { - "name": "DASH/ETH", - "isLocked": true - }, - { - "name": "DASH/BCH", - "isLocked": true - }, - { - "name": "BCH/EUR", - "isLocked": true - }, - { - "name": "BCH/GBP", - "isLocked": true - }, - { - "name": "BCH/RUB", - "isLocked": true - }, - { - "name": "BCH/ETH", - "isLocked": true - }, - { - "name": "XAU/CHF", - "isLocked": true - }, - { - "name": "CNH/TRY", - "isLocked": true - }, - { - "name": "BTC/AUD", - "isLocked": true - }, - { - "name": "HKD/XRP", - "isLocked": true - }, - { - "name": "SGD/XAG", - "isLocked": true - }, - { - "name": "XAU/XRP", - "isLocked": true - }, - { - "name": "DSH/ZAR", - "isLocked": true - }, - { - "name": "XRP/NOK", - "isLocked": true - }, - { - "name": "EUR/DSH", - "isLocked": true - }, - { - "name": "JPY/BCH", - "isLocked": true - }, - { - "name": "CNH/BTC", - "isLocked": true - }, - { - "name": "ETH/MXN", - "isLocked": true - }, - { - "name": "XRP/ZAR", - "isLocked": true - }, - { - "name": "HKD/LTC", - "isLocked": true - }, - { - "name": "ETH/XAG", - "isLocked": true - }, - { - "name": "XAG/DKK", - "isLocked": true - }, - { - "name": "JPY/ZWD", - "isLocked": true - }, - { - "name": "ETH/CNH", - "isLocked": true - }, - { - "name": "XAU/BCH", - "isLocked": true - }, - { - "name": "DSH/GBP", - "isLocked": true - }, - { - "name": "MXN/XRP", - "isLocked": true - }, - { - "name": "MXN/BCH", - "isLocked": true - }, - { - "name": "BTC/NOK", - "isLocked": true - }, - { - "name": "DSH/RUB", - "isLocked": true - }, - { - "name": "DSH/AUD", - "isLocked": true - }, - { - "name": "LTC/ZAR", - "isLocked": true - }, - { - "name": "PLN/DSH", - "isLocked": true - }, - { - "name": "USD/ZWD", - "isLocked": true - }, - { - "name": "SGD/LTC", - "isLocked": true - }, - { - "name": "XRP/SGD", - "isLocked": true - }, - { - "name": "BTC/DKK", - "isLocked": true - }, - { - "name": "XAU/SEK", - "isLocked": true - }, - { - "name": "NZD/BCH", - "isLocked": true - }, - { - "name": "CAD/BCH", - "isLocked": true - }, - { - "name": "SEK/LTC", - "isLocked": true - }, - { - "name": "XRP/HKD", - "isLocked": true - }, - { - "name": "DKK/BTC", - "isLocked": true - }, - { - "name": "JPY/DSH", - "isLocked": true - }, - { - "name": "BTC/CNH", - "isLocked": true - }, - { - "name": "ETH/DKK", - "isLocked": true - }, - { - "name": "PLN/XAG", - "isLocked": true - }, - { - "name": "BCH/HKD", - "isLocked": true - }, - { - "name": "DSH/XRP", - "isLocked": true - }, - { - "name": "XAU/XAG", - "isLocked": true - }, - { - "name": "NOK/XAU", - "isLocked": true - }, - { - "name": "XPT/NZD", - "isLocked": true - }, - { - "name": "TRY/BCH", - "isLocked": true - }, - { - "name": "XRP/DKK", - "isLocked": true - }, - { - "name": "CNH/DKK", - "isLocked": true - }, - { - "name": "XAG/BTC", - "isLocked": true - }, - { - "name": "LTC/CNH", - "isLocked": true - }, - { - "name": "ETH/NZD", - "isLocked": true - }, - { - "name": "NZD/ETH", - "isLocked": true - }, - { - "name": "DSH/CAD", - "isLocked": true - }, - { - "name": "CAD/DSH", - "isLocked": true - }, - { - "name": "PLN/BCH", - "isLocked": true - }, - { - "name": "XAG/XAU", - "isLocked": true - }, - { - "name": "SEK/XAG", - "isLocked": true - }, - { - "name": "AUD/DSH", - "isLocked": true - }, - { - "name": "CNH/DSH", - "isLocked": true - }, - { - "name": "SEK/ETH", - "isLocked": true - }, - { - "name": "CNH/PLN", - "isLocked": true - }, - { - "name": "CHF/BTC", - "isLocked": true - }, - { - "name": "XAU/DKK", - "isLocked": true - }, - { - "name": "SGD/BCH", - "isLocked": true - }, - { - "name": "DSH/SEK", - "isLocked": true - }, - { - "name": "CNH/BCH", - "isLocked": true - }, - { - "name": "RUB/NZD", - "isLocked": true - }, - { - "name": "LTC/SGD", - "isLocked": true - }, - { - "name": "DSH/CHF", - "isLocked": true - }, - { - "name": "DKK/ETH", - "isLocked": true - }, - { - "name": "RUB/CNH", - "isLocked": true - }, - { - "name": "NZD/XAG", - "isLocked": true - }, - { - "name": "BCH/NZD", - "isLocked": true - }, - { - "name": "NZD/XRP", - "isLocked": true - }, - { - "name": "DSH/DKK", - "isLocked": true - }, - { - "name": "SEK/XAU", - "isLocked": true - }, - { - "name": "XPD/AUD", - "isLocked": true - }, - { - "name": "LTC/NOK", - "isLocked": true - }, - { - "name": "XRP/LTC", - "isLocked": true - }, - { - "name": "LTC/NZD", - "isLocked": true - }, - { - "name": "RUB/DSH", - "isLocked": true - }, - { - "name": "XAU/PLN", - "isLocked": true - }, - { - "name": "HKD/BTC", - "isLocked": true - }, - { - "name": "XAG/SEK", - "isLocked": true - }, - { - "name": "TRY/DSH", - "isLocked": true - }, - { - "name": "DKK/CNH", - "isLocked": true - }, - { - "name": "BCH/TRY", - "isLocked": true - }, - { - "name": "LTC/MXN", - "isLocked": true - }, - { - "name": "ZAR/DSH", - "isLocked": true - }, - { - "name": "BTC/HKD", - "isLocked": true - }, - { - "name": "JPY/LTC", - "isLocked": true - }, - { - "name": "XRP/XAG", - "isLocked": true - }, - { - "name": "XPD/NZD", - "isLocked": true - }, - { - "name": "NZD/DSH", - "isLocked": true - }, - { - "name": "SEK/BTC", - "isLocked": true - }, - { - "name": "ZAR/BCH", - "isLocked": true - }, - { - "name": "BCH/ZAR", - "isLocked": true - }, - { - "name": "NZD/LTC", - "isLocked": true - }, - { - "name": "ETH/XAU", - "isLocked": true - }, - { - "name": "CNH/XAG", - "isLocked": true - }, - { - "name": "LTC/XRP", - "isLocked": true - }, - { - "name": "LTC/DKK", - "isLocked": true - }, - { - "name": "HKD/ETH", - "isLocked": true - }, - { - "name": "DSH/TRY", - "isLocked": true - }, - { - "name": "BTC/NZD", - "isLocked": true - }, - { - "name": "BTC/XAG", - "isLocked": true - }, - { - "name": "DSH/NOK", - "isLocked": true - }, - { - "name": "NZD/XPT", - "isLocked": true - }, - { - "name": "ZAR/XRP", - "isLocked": true - }, - { - "name": "GBP/DSH", - "isLocked": true - }, - { - "name": "HKD/RUB", - "isLocked": true - }, - { - "name": "ILS/PLN", - "isLocked": true - }, - { - "name": "LTC/XAU", - "isLocked": true - }, - { - "name": "CHF/XAG", - "isLocked": true - }, - { - "name": "XPT/AUD", - "isLocked": true - }, - { - "name": "SEK/DSH", - "isLocked": true - }, - { - "name": "XAU/LTC", - "isLocked": true - }, - { - "name": "SEK/BCH", - "isLocked": true - }, - { - "name": "NOK/LTC", - "isLocked": true - }, - { - "name": "ETH/SEK", - "isLocked": true - }, - { - "name": "ETH/NOK", - "isLocked": true - }, - { - "name": "XAG/XRP", - "isLocked": true - }, - { - "name": "SEK/XRP", - "isLocked": true - }, - { - "name": "CHF/LTC", - "isLocked": true - }, - { - "name": "SGD/RUB", - "isLocked": true - }, - { - "name": "ETH/DSH", - "isLocked": true - }, - { - "name": "NOK/XAG", - "isLocked": true - }, - { - "name": "SGD/XRP", - "isLocked": true - }, - { - "name": "XRP/XAU", - "isLocked": true - }, - { - "name": "HKD/DSH", - "isLocked": true - }, - { - "name": "BCH/CAD", - "isLocked": true - }, - { - "name": "LTC/TRY", - "isLocked": true - }, - { - "name": "CNH/LTC", - "isLocked": true - }, - { - "name": "LTC/JPY", - "isLocked": true - }, - { - "name": "TRY/LTC", - "isLocked": true - }, - { - "name": "SGD/XAU", - "isLocked": true - }, - { - "name": "BCH/NOK", - "isLocked": true - }, - { - "name": "XAU/SGD", - "isLocked": true - }, - { - "name": "CAD/BTC", - "isLocked": true - }, - { - "name": "SGD/DSH", - "isLocked": true - }, - { - "name": "MXN/BTC", - "isLocked": true - }, - { - "name": "DSH/EUR", - "isLocked": true - }, - { - "name": "CNH/XRP", - "isLocked": true - }, - { - "name": "DSH/HKD", - "isLocked": true - }, - { - "name": "XAG/DSH", - "isLocked": true - }, - { - "name": "XAG/CNH", - "isLocked": true - }, - { - "name": "XAG/PLN", - "isLocked": true - }, - { - "name": "BCH/XAU", - "isLocked": true - }, - { - "name": "CHF/DSH", - "isLocked": true - }, - { - "name": "CNH/MXN", - "isLocked": true - }, - { - "name": "XAG/NOK", - "isLocked": true - }, - { - "name": "DKK/LTC", - "isLocked": true - }, - { - "name": "CHF/BCH", - "isLocked": true - }, - { - "name": "CNH/RUB", - "isLocked": true - }, - { - "name": "RUB/SGD", - "isLocked": true - }, - { - "name": "XAG/BCH", - "isLocked": true - }, - { - "name": "PLN/XRP", - "isLocked": true - }, - { - "name": "XAG/CHF", - "isLocked": true - }, - { - "name": "XAU/CNH", - "isLocked": true - }, - { - "name": "DSH/LTC", - "isLocked": true - }, - { - "name": "BTC/MXN", - "isLocked": true - }, - { - "name": "CAD/LTC", - "isLocked": true - }, - { - "name": "BCH/DSH", - "isLocked": true - }, - { - "name": "XRP/DSH", - "isLocked": true - }, - { - "name": "LTC/CHF", - "isLocked": true - }, - { - "name": "DKK/XAU", - "isLocked": true - }, - { - "name": "NZD/RUB", - "isLocked": true - }, - { - "name": "XAU/NZD", - "isLocked": true - }, - { - "name": "AUD/XPD", - "isLocked": true - }, - { - "name": "NZD/BTC", - "isLocked": true - }, - { - "name": "ETH/HKD", - "isLocked": true - }, - { - "name": "HKD/BCH", - "isLocked": true - }, - { - "name": "BTC/SEK", - "isLocked": true - }, - { - "name": "XAG/NZD", - "isLocked": true - }, - { - "name": "XRP/CNH", - "isLocked": true - }, - { - "name": "XRP/SEK", - "isLocked": true - }, - { - "name": "DSH/CNH", - "isLocked": true - }, - { - "name": "NOK/BTC", - "isLocked": true - }, - { - "name": "XRP/NZD", - "isLocked": true - }, - { - "name": "RUB/HKD", - "isLocked": true - }, - { - "name": "PLN/XAU", - "isLocked": true - }, - { - "name": "CHF/XRP", - "isLocked": true - }, - { - "name": "LTC/XAG", - "isLocked": true - }, - { - "name": "DKK/XAG", - "isLocked": true - }, - { - "name": "CNH/ETH", - "isLocked": true - }, - { - "name": "BCH/XAG", - "isLocked": true - }, - { - "name": "XAU/ETH", - "isLocked": true - }, - { - "name": "ZAR/LTC", - "isLocked": true - }, - { - "name": "BCH/CHF", - "isLocked": true - }, - { - "name": "PLN/LTC", - "isLocked": true - }, - { - "name": "BTC/XAU", - "isLocked": true - }, - { - "name": "DSH/NZD", - "isLocked": true - }, - { - "name": "LTC/DSH", - "isLocked": true - }, - { - "name": "DSH/SGD", - "isLocked": true - }, - { - "name": "DSH/ETH", - "isLocked": true - }, - { - "name": "XAU/BTC", - "isLocked": true - }, - { - "name": "DSH/PLN", - "isLocked": true - }, - { - "name": "XRP/PLN", - "isLocked": true - }, - { - "name": "CNH/XAU", - "isLocked": true - }, - { - "name": "LTC/PLN", - "isLocked": true - }, - { - "name": "LTC/SEK", - "isLocked": true - }, - { - "name": "DSH/JPY", - "isLocked": true - }, - { - "name": "NOK/DSH", - "isLocked": true - }, - { - "name": "DSH/BCH", - "isLocked": true - }, - { - "name": "BCH/MXN", - "isLocked": true - }, - { - "name": "XAU/NOK", - "isLocked": true - }, - { - "name": "DKK/XRP", - "isLocked": true - }, - { - "name": "BCH/DKK", - "isLocked": true - }, - { - "name": "XAG/LTC", - "isLocked": true - }, - { - "name": "BCH/JPY", - "isLocked": true - }, - { - "name": "MXN/LTC", - "isLocked": true - }, - { - "name": "DSH/MXN", - "isLocked": true - }, - { - "name": "DSH/XAG", - "isLocked": true - }, - { - "name": "NZD/XAU", - "isLocked": true - }, - { - "name": "NZD/XPD", - "isLocked": true - }, - { - "name": "NOK/ETH", - "isLocked": true - }, - { - "name": "XAU/DSH", - "isLocked": true - }, - { - "name": "DKK/DSH", - "isLocked": true - }, - { - "name": "DKK/BCH", - "isLocked": true - }, - { - "name": "PLN/CNH", - "isLocked": true - }, - { - "name": "XRP/CHF", - "isLocked": true - }, - { - "name": "BCH/CNH", - "isLocked": true - }, - { - "name": "AUD/XPT", - "isLocked": true - }, - { - "name": "LTC/HKD", - "isLocked": true - }, - { - "name": "XRP/MXN", - "isLocked": true - }, - { - "name": "DSH/XAU", - "isLocked": true - }, - { - "name": "MXN/CNH", - "isLocked": true - }, - { - "name": "NOK/BCH", - "isLocked": true - }, - { - "name": "BCH/SEK", - "isLocked": true - }, - { - "name": "MXN/ETH", - "isLocked": true - }, - { - "name": "MXN/DSH", - "isLocked": true - }, - { - "name": "BCH/SGD", - "isLocked": true - }, - { - "name": "NOK/XRP", - "isLocked": true - }, - { - "name": "XAG/ETH", - "isLocked": true - }, - { - "name": "BCH/PLN", - "isLocked": true - }, - { - "name": "XAG/SGD", - "isLocked": true - }, - { - "name": "LTC/CAD", - "isLocked": true - }, - { - "name": "SEK/TWD", - "isLocked": true - }, - { - "name": "COP/PEN", - "isLocked": true - }, - { - "name": "CLF/USD", - "isLocked": true - }, - { - "name": "AOA/EUR", - "isLocked": true - }, - { - "name": "PGK/ZAR", - "isLocked": true - }, - { - "name": "KHR/EUR", - "isLocked": true - }, - { - "name": "HTG/EUR", - "isLocked": true - }, - { - "name": "CDF/ZAR", - "isLocked": true - }, - { - "name": "JPY/VND", - "isLocked": true - }, - { - "name": "IQD/EUR", - "isLocked": true - }, - { - "name": "FJD/ZAR", - "isLocked": true - }, - { - "name": "PKR/INR", - "isLocked": true - }, - { - "name": "CAD/XAU", - "isLocked": true - }, - { - "name": "PAB/EUR", - "isLocked": true - }, - { - "name": "YER/EUR", - "isLocked": true - }, - { - "name": "NAD/EUR", - "isLocked": true - }, - { - "name": "JPY/PHP", - "isLocked": true - }, - { - "name": "CHF/ARE", - "isLocked": true - }, - { - "name": "SDG/USD", - "isLocked": true - }, - { - "name": "CHF/DOE", - "isLocked": true - }, - { - "name": "SRD/CNY", - "isLocked": true - }, - { - "name": "COP/GBP", - "isLocked": true - }, - { - "name": "AFN/EUR", - "isLocked": true - }, - { - "name": "LAK/ZAR", - "isLocked": true - }, - { - "name": "LSL/EUR", - "isLocked": true - }, - { - "name": "CNH/EUR", - "isLocked": true - }, - { - "name": "CAD/XAG", - "isLocked": true - }, - { - "name": "CUP/EUR", - "isLocked": true - }, - { - "name": "USD/KRU", - "isLocked": true - }, - { - "name": "SRD/USD", - "isLocked": true - }, - { - "name": "INR/IDR", - "isLocked": true - }, - { - "name": "AUD/XAU", - "isLocked": true - }, - { - "name": "PKR/OMR", - "isLocked": true - }, - { - "name": "KRW/CNH", - "isLocked": true - }, - { - "name": "PKR/HKD", - "isLocked": true - }, - { - "name": "USD/MAL", - "isLocked": true - }, - { - "name": "RUB/NOK", - "isLocked": true - }, - { - "name": "SRD/GYD", - "isLocked": true - }, - { - "name": "TND/EUR", - "isLocked": true - }, - { - "name": "CHF/KES", - "isLocked": true - }, - { - "name": "CHF/NSO", - "isLocked": true - }, - { - "name": "KRW/GBP", - "isLocked": true - }, - { - "name": "CNH/AUD", - "isLocked": true - }, - { - "name": "PYG/GBP", - "isLocked": true - }, - { - "name": "PKR/CHF", - "isLocked": true - }, - { - "name": "BAM/EUR", - "isLocked": true - }, - { - "name": "AUD/XAG", - "isLocked": true - }, - { - "name": "PKR/SAR", - "isLocked": true - }, - { - "name": "JPY/NGN", - "isLocked": true - }, - { - "name": "BGN/EUR", - "isLocked": true - }, - { - "name": "AOA/USD", - "isLocked": true - }, - { - "name": "MTL/EUR", - "isLocked": true - }, - { - "name": "USD/M5P", - "isLocked": true - }, - { - "name": "CLP/JPY", - "isLocked": true - }, - { - "name": "VND/ZAR", - "isLocked": true - }, - { - "name": "CHF/VRN", - "isLocked": true - }, - { - "name": "UAH/GBP", - "isLocked": true - }, - { - "name": "RWF/EUR", - "isLocked": true - }, - { - "name": "CHF/VRL", - "isLocked": true - }, - { - "name": "PKR/EGP", - "isLocked": true - }, - { - "name": "MOP/GBP", - "isLocked": true - }, - { - "name": "OMR/EUR", - "isLocked": true - }, - { - "name": "NAD/USD", - "isLocked": true - }, - { - "name": "PLN/RUB", - "isLocked": true - }, - { - "name": "MWK/EUR", - "isLocked": true - }, - { - "name": "BIF/EUR", - "isLocked": true - }, - { - "name": "GEL/GBP", - "isLocked": true - }, - { - "name": "JOD/ZAR", - "isLocked": true - }, - { - "name": "ZMW/EUR", - "isLocked": true - }, - { - "name": "DZD/GBP", - "isLocked": true - }, - { - "name": "THB/XAU", - "isLocked": true - }, - { - "name": "BHD/ZAR", - "isLocked": true - }, - { - "name": "JPY/LFX", - "isLocked": true - }, - { - "name": "NPR/EUR", - "isLocked": true - }, - { - "name": "LYD/EUR", - "isLocked": true - }, - { - "name": "HUF/NOK", - "isLocked": true - }, - { - "name": "CHF/FRN", - "isLocked": true - }, - { - "name": "UGX/EUR", - "isLocked": true - }, - { - "name": "IDR/EUR", - "isLocked": true - }, - { - "name": "PKR/CAD", - "isLocked": true - }, - { - "name": "CNH/CHF", - "isLocked": true - }, - { - "name": "TZS/EUR", - "isLocked": true - }, - { - "name": "BHD/AED", - "isLocked": true - }, - { - "name": "USD/NBL", - "isLocked": true - }, - { - "name": "PKR/KWD", - "isLocked": true - }, - { - "name": "BYN/EUR", - "isLocked": true - }, - { - "name": "AED/OMR", - "isLocked": true - }, - { - "name": "MVR/GBP", - "isLocked": true - }, - { - "name": "IDR/AUD", - "isLocked": true - }, - { - "name": "TRY/XAU", - "isLocked": true - }, - { - "name": "SRD/AWG", - "isLocked": true - }, - { - "name": "SOS/EUR", - "isLocked": true - }, - { - "name": "LFX/GBP", - "isLocked": true - }, - { - "name": "CHF/XPTK", - "isLocked": true - }, - { - "name": "BTN/EUR", - "isLocked": true - }, - { - "name": "TRY/XAG", - "isLocked": true - }, - { - "name": "MMK/EUR", - "isLocked": true - }, - { - "name": "SAR/CAD", - "isLocked": true - }, - { - "name": "MXN/XAU", - "isLocked": true - }, - { - "name": "TRY/AED", - "isLocked": true - }, - { - "name": "COP/EUR", - "isLocked": true - }, - { - "name": "IRR/USD", - "isLocked": true - }, - { - "name": "USD/AUN", - "isLocked": true - }, - { - "name": "CNH/CAD", - "isLocked": true - }, - { - "name": "ILS/BRL", - "isLocked": true - }, - { - "name": "PKR/BHD", - "isLocked": true - }, - { - "name": "AMD/EUR", - "isLocked": true - }, - { - "name": "HRK/GBP", - "isLocked": true - }, - { - "name": "IDR/USD", - "isLocked": true - }, - { - "name": "MXN/XAG", - "isLocked": true - }, - { - "name": "QAR/EUR", - "isLocked": true - }, - { - "name": "USD/BRI", - "isLocked": true - }, - { - "name": "EGP/GBP", - "isLocked": true - }, - { - "name": "BSD/EUR", - "isLocked": true - }, - { - "name": "GMD/USD", - "isLocked": true - }, - { - "name": "PKR/AED", - "isLocked": true - }, - { - "name": "AED/JOD", - "isLocked": true - }, - { - "name": "LBP/ZAR", - "isLocked": true - }, - { - "name": "KRW/IDR", - "isLocked": true - }, - { - "name": "MRU/EUR", - "isLocked": true - }, - { - "name": "RON/EUR", - "isLocked": true - }, - { - "name": "EUR/XPT", - "isLocked": true - }, - { - "name": "JPY/EGP", - "isLocked": true - }, - { - "name": "THB/CNH", - "isLocked": true - }, - { - "name": "PYG/EUR", - "isLocked": true - }, - { - "name": "CNH/SEK", - "isLocked": true - }, - { - "name": "HKD/XAU", - "isLocked": true - }, - { - "name": "THB/DKK", - "isLocked": true - }, - { - "name": "KHR/ZAR", - "isLocked": true - }, - { - "name": "USD/SHP", - "isLocked": true - }, - { - "name": "USD/XPT", - "isLocked": true - }, - { - "name": "AED/KWD", - "isLocked": true - }, - { - "name": "CHF/KRU", - "isLocked": true - }, - { - "name": "SAR/ZAR", - "isLocked": true - }, - { - "name": "SAR/XAU", - "isLocked": true - }, - { - "name": "LFX/NZD", - "isLocked": true - }, - { - "name": "JOD/GBP", - "isLocked": true - }, - { - "name": "THB/GBP", - "isLocked": true - }, - { - "name": "BHD/GBP", - "isLocked": true - }, - { - "name": "NAD/ZAR", - "isLocked": true - }, - { - "name": "ARS/XAU", - "isLocked": true - }, - { - "name": "EUR/XPD", - "isLocked": true - }, - { - "name": "HKD/XAG", - "isLocked": true - }, - { - "name": "CHF/MAL", - "isLocked": true - }, - { - "name": "BND/EUR", - "isLocked": true - }, - { - "name": "SRD/BRL", - "isLocked": true - }, - { - "name": "RON/AUD", - "isLocked": true - }, - { - "name": "USD/OSO", - "isLocked": true - }, - { - "name": "MGA/EUR", - "isLocked": true - }, - { - "name": "LSL/ZAR", - "isLocked": true - }, - { - "name": "CNH/ZAR", - "isLocked": true - }, - { - "name": "MZN/EUR", - "isLocked": true - }, - { - "name": "USD/XPD", - "isLocked": true - }, - { - "name": "SAR/XAG", - "isLocked": true - }, - { - "name": "MOP/EUR", - "isLocked": true - }, - { - "name": "ETB/EUR", - "isLocked": true - }, - { - "name": "SEK/BRL", - "isLocked": true - }, - { - "name": "SAR/AED", - "isLocked": true - }, - { - "name": "ARS/XAG", - "isLocked": true - }, - { - "name": "GEL/EUR", - "isLocked": true - }, - { - "name": "INR/XAU", - "isLocked": true - }, - { - "name": "ILS/GBP", - "isLocked": true - }, - { - "name": "GBP/XPT", - "isLocked": true - }, - { - "name": "CVE/USD", - "isLocked": true - }, - { - "name": "CHF/M5P", - "isLocked": true - }, - { - "name": "PKR/MYR", - "isLocked": true - }, - { - "name": "RSD/USD", - "isLocked": true - }, - { - "name": "INR/XAG", - "isLocked": true - }, - { - "name": "KWD/SAR", - "isLocked": true - }, - { - "name": "GBP/XPD", - "isLocked": true - }, - { - "name": "MRU/USD", - "isLocked": true - }, - { - "name": "MKD/EUR", - "isLocked": true - }, - { - "name": "UZS/EUR", - "isLocked": true - }, - { - "name": "INR/AED", - "isLocked": true - }, - { - "name": "BRL/TRY", - "isLocked": true - }, - { - "name": "CHF/XAUK", - "isLocked": true - }, - { - "name": "BRL/XAU", - "isLocked": true - }, - { - "name": "RON/JPY", - "isLocked": true - }, - { - "name": "BZD/GBP", - "isLocked": true - }, - { - "name": "PGK/EUR", - "isLocked": true - }, - { - "name": "CDF/EUR", - "isLocked": true - }, - { - "name": "BBD/BMD", - "isLocked": true - }, - { - "name": "PKR/DKK", - "isLocked": true - }, - { - "name": "SCR/EUR", - "isLocked": true - }, - { - "name": "FJD/EUR", - "isLocked": true - }, - { - "name": "PHP/CNH", - "isLocked": true - }, - { - "name": "DJF/EUR", - "isLocked": true - }, - { - "name": "SRD/ANG", - "isLocked": true - }, - { - "name": "JPY/XAU", - "isLocked": true - }, - { - "name": "BRL/XAG", - "isLocked": true - }, - { - "name": "MVR/EUR", - "isLocked": true - }, - { - "name": "CRC/EUR", - "isLocked": true - }, - { - "name": "SRD/GBP", - "isLocked": true - }, - { - "name": "LAK/EUR", - "isLocked": true - }, - { - "name": "CHF/NBL", - "isLocked": true - }, - { - "name": "BOB/EUR", - "isLocked": true - }, - { - "name": "ZAR/XAU", - "isLocked": true - }, - { - "name": "PKR/SGD", - "isLocked": true - }, - { - "name": "PKR/QAR", - "isLocked": true - }, - { - "name": "LFX/EUR", - "isLocked": true - }, - { - "name": "JPY/XAG", - "isLocked": true - }, - { - "name": "NPR/ZAR", - "isLocked": true - }, - { - "name": "MYR/GBP", - "isLocked": true - }, - { - "name": "FJD/AUD", - "isLocked": true - }, - { - "name": "GEL/USD", - "isLocked": true - }, - { - "name": "KES/GBP", - "isLocked": true - }, - { - "name": "CNH/MYR", - "isLocked": true - }, - { - "name": "HKD/CNH", - "isLocked": true - }, - { - "name": "USD/ARE", - "isLocked": true - }, - { - "name": "USD/DOE", - "isLocked": true - }, - { - "name": "LBP/GBP", - "isLocked": true - }, - { - "name": "GYD/EUR", - "isLocked": true - }, - { - "name": "SEK/KRW", - "isLocked": true - }, - { - "name": "LKR/EUR", - "isLocked": true - }, - { - "name": "GNF/EUR", - "isLocked": true - }, - { - "name": "DOP/EUR", - "isLocked": true - }, - { - "name": "ZAR/XAG", - "isLocked": true - }, - { - "name": "KWD/CAD", - "isLocked": true - }, - { - "name": "MYR/SGD", - "isLocked": true - }, - { - "name": "BDT/EUR", - "isLocked": true - }, - { - "name": "DKK/RUB", - "isLocked": true - }, - { - "name": "SAR/GBP", - "isLocked": true - }, - { - "name": "LFX/AUD", - "isLocked": true - }, - { - "name": "TJS/EUR", - "isLocked": true - }, - { - "name": "PAB/GBP", - "isLocked": true - }, - { - "name": "MAD/EUR", - "isLocked": true - }, - { - "name": "PKR/NZD", - "isLocked": true - }, - { - "name": "SRD/XCD", - "isLocked": true - }, - { - "name": "USD/NSO", - "isLocked": true - }, - { - "name": "CNH/GBP", - "isLocked": true - }, - { - "name": "SRD/TTD", - "isLocked": true - }, - { - "name": "LRD/EUR", - "isLocked": true - }, - { - "name": "INR/CNH", - "isLocked": true - }, - { - "name": "CHF/AUN", - "isLocked": true - }, - { - "name": "RON/CAD", - "isLocked": true - }, - { - "name": "INR/DKK", - "isLocked": true - }, - { - "name": "SLL/EUR", - "isLocked": true - }, - { - "name": "SVC/EUR", - "isLocked": true - }, - { - "name": "CUP/GBP", - "isLocked": true - }, - { - "name": "KZT/EUR", - "isLocked": true - }, - { - "name": "EUR/XAU", - "isLocked": true - }, - { - "name": "CHF/XPDK", - "isLocked": true - }, - { - "name": "JOD/EUR", - "isLocked": true - }, - { - "name": "BTN/ZAR", - "isLocked": true - }, - { - "name": "RUB/XAU", - "isLocked": true - }, - { - "name": "USD/XAU", - "isLocked": true - }, - { - "name": "MMK/ZAR", - "isLocked": true - }, - { - "name": "CNH/SGD", - "isLocked": true - }, - { - "name": "CHF/BRI", - "isLocked": true - }, - { - "name": "KWD/ZAR", - "isLocked": true - }, - { - "name": "NIO/EUR", - "isLocked": true - }, - { - "name": "EUR/XAG", - "isLocked": true - }, - { - "name": "STN/USD", - "isLocked": true - }, - { - "name": "PKR/THB", - "isLocked": true - }, - { - "name": "RUB/XAG", - "isLocked": true - }, - { - "name": "USD/XAG", - "isLocked": true - }, - { - "name": "TTD/EUR", - "isLocked": true - }, - { - "name": "CHF/XAGK", - "isLocked": true - }, - { - "name": "CNH/NOK", - "isLocked": true - }, - { - "name": "TWD/CNH", - "isLocked": true - }, - { - "name": "AED/QAR", - "isLocked": true - }, - { - "name": "BGN/GBP", - "isLocked": true - }, - { - "name": "JPY/CNH", - "isLocked": true - }, - { - "name": "UYU/ZAR", - "isLocked": true - }, - { - "name": "LFX/CHF", - "isLocked": true - }, - { - "name": "INR/NOK", - "isLocked": true - }, - { - "name": "GBP/XAU", - "isLocked": true - }, - { - "name": "CNY/XAU", - "isLocked": true - }, - { - "name": "TWD/GBP", - "isLocked": true - }, - { - "name": "GTQ/EUR", - "isLocked": true - }, - { - "name": "CHF/OSO", - "isLocked": true - }, - { - "name": "KRW/XAU", - "isLocked": true - }, - { - "name": "CNH/NZD", - "isLocked": true - }, - { - "name": "BIF/GBP", - "isLocked": true - }, - { - "name": "XCD/USD", - "isLocked": true - }, - { - "name": "HNL/EUR", - "isLocked": true - }, - { - "name": "ZMW/GBP", - "isLocked": true - }, - { - "name": "AED/ILS", - "isLocked": true - }, - { - "name": "RUB/BRL", - "isLocked": true - }, - { - "name": "GBP/XAG", - "isLocked": true - }, - { - "name": "CNY/XAG", - "isLocked": true - }, - { - "name": "BZD/EUR", - "isLocked": true - }, - { - "name": "KRW/XAG", - "isLocked": true - }, - { - "name": "NGN/EUR", - "isLocked": true - }, - { - "name": "HUF/TRY", - "isLocked": true - }, - { - "name": "IDR/CNH", - "isLocked": true - }, - { - "name": "EUR/VES", - "isLocked": true - }, - { - "name": "XOF/USD", - "isLocked": true - }, - { - "name": "SRD/BBD", - "isLocked": true - }, - { - "name": "SRD/EUR", - "isLocked": true - }, - { - "name": "GBP/ZWD", - "isLocked": true - }, - { - "name": "PHP/EUR", - "isLocked": true - }, - { - "name": "JPY/BDT", - "isLocked": true - }, - { - "name": "VES/BRL", - "isLocked": true - }, - { - "name": "MYR/IDR", - "isLocked": true - }, - { - "name": "IDR/SGD", - "isLocked": true - }, - { - "name": "PKR/TWD", - "isLocked": true - }, - { - "name": "LFX/CAD", - "isLocked": true - }, - { - "name": "PKR/AUD", - "isLocked": true - }, - { - "name": "LBP/EUR", - "isLocked": true - }, - { - "name": "BTC/DSH", - "isLocked": true - }, - { - "name": "DASH/USD", - "isLocked": true - }, - { - "name": "RUB/TRY", - "isLocked": true - }, - { - "name": "JPY/BTC", - "isLocked": true - }, - { - "name": "GBP/BTC", - "isLocked": true - }, - { - "name": "SGD/BTC", - "isLocked": true - }, - { - "name": "RUB/BTC", - "isLocked": true - }, - { - "name": "ZAR/BTC", - "isLocked": true - }, - { - "name": "PLN/BTC", - "isLocked": true - }, - { - "name": "JPY/ETH", - "isLocked": true - }, - { - "name": "GBP/ETH", - "isLocked": true - }, - { - "name": "CAD/ETH", - "isLocked": true - }, - { - "name": "CHF/ETH", - "isLocked": true - }, - { - "name": "SGD/ETH", - "isLocked": true - }, - { - "name": "RUB/ETH", - "isLocked": true - }, - { - "name": "TRY/ETH", - "isLocked": true - }, - { - "name": "ZAR/ETH", - "isLocked": true - }, - { - "name": "PLN/ETH", - "isLocked": true - }, - { - "name": "EUR/LTC", - "isLocked": true - }, - { - "name": "GBP/LTC", - "isLocked": true - }, - { - "name": "RUB/LTC", - "isLocked": true - }, - { - "name": "BCH/LTC", - "isLocked": true - }, - { - "name": "EUR/XRP", - "isLocked": true - }, - { - "name": "JPY/XRP", - "isLocked": true - }, - { - "name": "GBP/XRP", - "isLocked": true - }, - { - "name": "CAD/XRP", - "isLocked": true - }, - { - "name": "RUB/XRP", - "isLocked": true - }, - { - "name": "TRY/XRP", - "isLocked": true - }, - { - "name": "BCH/XRP", - "isLocked": true - }, - { - "name": "EUR/DASH", - "isLocked": true - }, - { - "name": "RUB/DASH", - "isLocked": true - }, - { - "name": "BCH/DASH", - "isLocked": true - }, - { - "name": "GBP/BCH", - "isLocked": true - }, - { - "name": "RUB/BCH", - "isLocked": true - }, - { - "name": "CHF/XAU", - "isLocked": true - }, - { - "name": "TRY/CNH", - "isLocked": true - }, - { - "name": "AUD/BTC", - "isLocked": true - } -]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Resources/CurrencyPairsSupported.json Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,2160 @@ +[ + "UKO/USD", + "EUR/USD", + "HUF/CHF", + "TWD/SEK", + "GNF/USD", + "DKK/EUR", + "GBP/SGD", + "NPR/USD", + "USD/GTQ", + "PEN/COP", + "AUD/PHP", + "CHF/ISK", + "USD/CLF", + "GBP/SOS", + "ARS/CHF", + "GTQ/GBP", + "CNH/USD", + "EUR/HKD", + "CZK/MXN", + "ILS/NOK", + "TWD/DKK", + "EUR/AOA", + "AUD/SEK", + "DKK/USD", + "SBD/USD", + "ISK/EUR", + "ZAR/PGK", + "EUR/KHR", + "TWD/MYR", + "EUR/HTG", + "VES/GBP", + "COP/DKK", + "ZAR/CDF", + "GBP/BWP", + "VND/JPY", + "GBP/EUR", + "BWP/GBP", + "EUR/CLP", + "NZD/ZAR", + "ANG/USD", + "USD/TRY", + "EUR/SAR", + "SEK/NZD", + "AUD/DKK", + "EUR/IQD", + "ISK/USD", + "CAD/BMD", + "CLP/ZAR", + "ZAR/FJD", + "TRY/CAD", + "AUD/MYR", + "USD/HNL", + "JPY/TRY", + "GBP/RUB", + "ZAR/CAD", + "GBP/BTN", + "INR/PKR", + "XAU/CAD", + "GBP/USD", + "DKK/COP", + "MYR/CNY", + "CAD/HRK", + "GBP/MMK", + "NZD/NOK", + "KRW/SGD", + "EUR/PAB", + "CZK/SEK", + "EUR/YER", + "CHF/ILS", + "SEK/AUD", + "USD/BZD", + "MYR/KRW", + "EUR/NAD", + "GBP/KWD", + "PHP/JPY", + "HKD/TRY", + "EUR/ARS", + "ARE/CHF", + "USD/NGN", + "USD/SDG", + "DOE/CHF", + "CNY/SRD", + "CAD/CHF", + "SGD/EUR", + "TWD/HKD", + "CZK/DKK", + "THB/TWD", + "GBP/COP", + "EUR/AFN", + "INR/SEK", + "ZAR/LAK", + "KRW/EUR", + "PEN/GBP", + "EUR/LSL", + "ETB/GBP", + "EUR/CNH", + "ZMW/ZAR", + "UAH/EUR", + "THB/JPY", + "COP/CLP", + "CAD/VND", + "SGD/USD", + "TOP/USD", + "AUD/HKD", + "USD/MXN", + "RUB/EUR", + "GHS/GBP", + "QAR/USD", + "USD/KYD", + "KRW/RUB", + "GNF/GBP", + "KRW/USD", + "USD/PKR", + "NOK/SGD", + "XAG/CAD", + "PHP/ZAR", + "EUR/BBD", + "INR/MYR", + "JPY/MXN", + "EUR/CUP", + "AUD/CLP", + "TRY/NZD", + "NPR/GBP", + "EUR/GHS", + "CHF/TRY", + "KRU/USD", + "CNY/DKK", + "ZAR/NZD", + "UAH/USD", + "JPY/PKR", + "TZS/USD", + "USD/SRD", + "CNY/MYR", + "DKK/CZK", + "AED/CAD", + "RUB/USD", + "GBP/QAR", + "IDR/INR", + "MXN/TRY", + "DKK/GBP", + "USD/PHP", + "HKD/MXN", + "TRY/AUD", + "DKK/CNY", + "GBP/BSD", + "ZAR/AUD", + "COP/ARS", + "XAU/AUD", + "EUR/INR", + "OMR/PKR", + "NOK/EUR", + "CNH/KRW", + "HKD/PKR", + "CZK/HKD", + "THB/ZAR", + "USD/SEK", + "ANG/GBP", + "SLL/USD", + "GBP/VES", + "SEK/CHF", + "AUD/ARS", + "JPY/SEK", + "MGA/USD", + "CAD/THB", + "GBP/CZK", + "GBP/UYU", + "ISK/GBP", + "USD/PEN", + "MAL/USD", + "ZAR/LKR", + "NOK/RUB", + "NOK/USD", + "ILS/EUR", + "USD/DKK", + "GBP/CNY", + "INR/HKD", + "PLN/CAD", + "GYD/SRD", + "GBP/RON", + "EUR/TND", + "DKK/PLN", + "EUR/AED", + "USD/MYR", + "KES/CHF", + "NZD/SGD", + "HKD/SEK", + "BDT/USD", + "BMD/CAD", + "AMD/USD", + "NSO/CHF", + "JPY/DKK", + "GBP/KRW", + "USD/KES", + "AUD/CNH", + "CNY/HKD", + "JPY/MYR", + "GBP/PYG", + "CHF/MXN", + "HRK/CAD", + "ILS/USD", + "CHF/PKR", + "MAD/USD", + "CNY/CLP", + "EUR/ALL", + "AED/NZD", + "EUR/BAM", + "CAD/ISK", + "USD/LBP", + "HKD/DKK", + "XAG/AUD", + "GBP/PLN", + "HKD/MYR", + "TWD/INR", + "NZD/EUR", + "SGD/CZK", + "JOD/ILS", + "SAR/PKR", + "DOP/USD", + "AED/AUD", + "SGD/GBP", + "TOP/GBP", + "SGD/CNY", + "DKK/HUF", + "QAR/GBP", + "CLP/EUR", + "NGN/JPY", + "EUR/BRL", + "BRL/CAD", + "TRY/CHF", + "KRW/CNY", + "ZAR/EGP", + "CHF/SEK", + "EUR/BGN", + "AUD/INR", + "NZD/USD", + "USD/HKD", + "SGD/KRW", + "ZAR/CHF", + "USD/AOA", + "EUR/MTL", + "USD/KHR", + "DKK/UAH", + "TTD/USD", + "USD/HTG", + "TZS/GBP", + "ZAR/MAD", + "PLN/NZD", + "MXN/SEK", + "JPY/HKD", + "M5P/USD", + "RUB/GBP", + "USD/CLP", + "CLP/USD", + "VND/EUR", + "CHF/DKK", + "CAD/ILS", + "CRC/USD", + "ZAR/SZL", + "GBP/HUF", + "USD/SAR", + "JPY/CLP", + "MXN/PEN", + "ZAR/VND", + "RUB/KRW", + "CHF/MYR", + "SGD/PLN", + "GBP/BND", + "USD/IQD", + "EUR/TWD", + "VRN/CHF", + "PLN/AUD", + "AUD/AED", + "GBP/MGA", + "MXN/DKK", + "JPY/SAR", + "MUR/ZAR", + "NGN/ZAR", + "SLL/GBP", + "GBP/UAH", + "EUR/RWF", + "VRL/CHF", + "EGP/PKR", + "USD/PAB", + "NOK/CZK", + "MGA/GBP", + "USD/YER", + "VND/USD", + "GBP/MOP", + "SEK/ISK", + "GBP/ETB", + "EUR/JPY", + "CLP/COP", + "EUR/OMR", + "HRK/AUD", + "USD/NAD", + "RUB/PLN", + "NOK/GBP", + "USD/ARS", + "DJF/GBP", + "THB/SGD", + "EUR/MWK", + "BDT/GBP", + "HUF/MXN", + "JPY/ARS", + "EUR/BIF", + "COP/BRL", + "BRL/NZD", + "ZMW/USD", + "USD/AFN", + "CZK/AED", + "GBP/GEL", + "ZAR/JOD", + "SGD/HUF", + "USD/LSL", + "EUR/ZMW", + "EUR/JMD", + "USD/CNH", + "AED/CHF", + "CNY/INR", + "MAD/GBP", + "CAD/TRY", + "AUD/BRL", + "ARS/MXN", + "ZAR/THB", + "GBP/DZD", + "XAU/THB", + "CHF/HKD", + "PHP/USD", + "BZD/USD", + "HKD/ARS", + "ZAR/BHD", + "ZAR/XOF", + "MYR/CAD", + "AUD/BGN", + "BRL/AUD", + "AFN/USD", + "NOK/PLN", + "BIF/USD", + "EUR/ZAR", + "THB/EUR", + "CHF/CLP", + "MXN/HKD", + "LFX/JPY", + "SEK/ILS", + "USD/BBD", + "DOP/GBP", + "USD/CUP", + "USD/GHS", + "HUF/SEK", + "NZD/CZK", + "MXN/CLP", + "EUR/NPR", + "XCD/GBP", + "TWD/JPY", + "NZD/GBP", + "ILS/PLN", + "THB/USD", + "NZD/CNY", + "AUD/TWD", + "EUR/NOK", + "SZL/CHF", + "TMT/USD", + "PLN/CHF", + "TTD/GBP", + "PEN/CAD", + "USD/INR", + "NZD/KRW", + "HUF/DKK", + "EUR/LYD", + "MKD/USD", + "RSD/EUR", + "CLP/GBP", + "CLP/CNY", + "AUD/JPY", + "CHF/ARS", + "MZN/ZAR", + "ARS/PEN", + "CRC/GBP", + "JPY/INR", + "NOK/HUF", + "FRN/CHF", + "EUR/UGX", + "GBP/XPF", + "LYD/USD", + "EUR/IDR", + "CAD/MXN", + "MXN/ARS", + "CAD/KYD", + "NZD/PLN", + "CAD/PKR", + "TWD/ZAR", + "SEK/TRY", + "MYR/NZD", + "GBP/MKD", + "USD/TND", + "USD/AED", + "HKD/INR", + "VND/GBP", + "CHF/CNH", + "EUR/TZS", + "AED/BHD", + "COP/ZAR", + "NBL/USD", + "CNY/BGN", + "USD/ANG", + "ZAR/MUR", + "KWD/PKR", + "JPY/AED", + "DKK/CAD", + "GBP/PGK", + "CZK/JPY", + "EUR/BYN", + "ZAR/ILS", + "MYR/AUD", + "PKR/JPY", + "GBP/CDF", + "BRL/CHF", + "AUD/ZAR", + "USD/ALL", + "USD/BAM", + "BND/USD", + "INR/TWD", + "GBP/SCR", + "OMR/AED", + "CAD/SEK", + "HKD/AED", + "HUF/HKD", + "ISK/CAD", + "CNY/TWD", + "GBP/FJD", + "PHP/GBP", + "NZD/HUF", + "INR/JPY", + "GBP/CAD", + "CAD/PEN", + "AFN/GBP", + "GBP/DJF", + "USD/KMF", + "AUD/NOK", + "USD/BRL", + "ARS/HKD", + "CHF/INR", + "GBP/MDL", + "CAD/DKK", + "CNY/JPY", + "MUR/EUR", + "USD/BGN", + "CAD/MYR", + "CZK/ZAR", + "JPY/BRL", + "ARS/CLP", + "PKR/ZAR", + "SEK/MXN", + "GBP/MVR", + "GBP/CRC", + "THB/CNY", + "ZAR/TRY", + "AUD/IDR", + "XAU/TRY", + "AWG/SRD", + "MUR/USD", + "GBP/LAK", + "PGK/USD", + "EUR/SGD", + "NGN/USD", + "HKD/BRL", + "DKK/NZD", + "CHF/AED", + "THB/KRW", + "BWP/CHF", + "USD/TWD", + "CZK/NOK", + "MKD/GBP", + "INR/ZAR", + "TOP/FJD", + "LKR/ZAR", + "EUR/SOS", + "SGD/CAD", + "USD/AWG", + "USD/RWF", + "MXN/AED", + "MDL/EUR", + "GBP/BOB", + "JPY/TWD", + "CNY/ZAR", + "BBD/EUR", + "DKK/AUD", + "KRW/CAD", + "USD/JPY", + "LYD/GBP", + "USD/OMR", + "BSD/USD", + "MYR/CHF", + "EUR/BWP", + "ZAR/NGN", + "GBP/NZD", + "GBP/LFX", + "CAD/HKD", + "USD/MWK", + "HKD/TWD", + "RUB/CAD", + "MDL/USD", + "USD/BIF", + "BBD/USD", + "CAD/CLP", + "SEK/DKK", + "USD/ZMW", + "USD/JMD", + "CHF/BRL", + "XPTK/CHF", + "EUR/RUB", + "EUR/BTN", + "GBP/AUD", + "HKD/JPY", + "XAG/TRY", + "PLN/ILS", + "EUR/MMK", + "TRY/MXN", + "CAD/SAR", + "BND/GBP", + "ZAR/MXN", + "TWD/SGD", + "XAU/MXN", + "MXN/BRL", + "USD/ZAR", + "EUR/KWD", + "ZAR/PKR", + "AED/TRY", + "GBP/GYD", + "GBP/LKR", + "NOK/CAD", + "JPY/ZAR", + "GBP/GNF", + "UGX/ZAR", + "GBP/DOP", + "BGN/USD", + "SGD/NZD", + "TOP/NZD", + "USD/NPR", + "EUR/COP", + "PAB/USD", + "AUD/SGD", + "GBP/TOP", + "CAD/ARS", + "CHF/TWD", + "LRD/USD", + "CYP/ZAR", + "KRW/NZD", + "USD/IRR", + "ZAR/PHP", + "USD/NOK", + "TWD/EUR", + "GBP/BDT", + "OMR/ZAR", + "HKD/ZAR", + "MZN/USD", + "AUN/USD", + "TRY/SEK", + "ILS/CAD", + "ZAR/SEK", + "SGD/AUD", + "TOP/AUD", + "JPY/NOK", + "SCR/USD", + "CHF/JPY", + "USD/LYD", + "MYR/THB", + "HUF/AED", + "SEK/HKD", + "GBP/BMD", + "DKK/CHF", + "KRW/AUD", + "CAD/CNH", + "BRL/ILS", + "MUR/GBP", + "PGK/GBP", + "BHD/PKR", + "EUR/AMD", + "NGN/GBP", + "PLN/TRY", + "TWD/USD", + "AUD/EUR", + "MXN/JPY", + "USD/UGX", + "GBP/HRK", + "USD/IDR", + "UYU/EUR", + "TRY/DKK", + "XAG/MXN", + "SAR/JPY", + "HKD/NOK", + "COP/USD", + "CZK/SGD", + "ZAR/DKK", + "RUB/AUD", + "EUR/QAR", + "ZAR/MYR", + "ISK/CHF", + "USD/TZS", + "BAM/USD", + "BRI/USD", + "AED/MXN", + "ZAR/KES", + "GBP/EGP", + "AUD/RUB", + "NZD/CAD", + "AUD/USD", + "BSD/GBP", + "EUR/BSD", + "USD/GMD", + "GBP/CHF", + "AED/PKR", + "UYU/USD", + "EUR/RSD", + "NOK/NZD", + "CHF/ZAR", + "USD/BYN", + "GBP/MAD", + "JOD/AED", + "INR/SGD", + "MDL/GBP", + "CZK/EUR", + "CLP/CAD", + "BBD/GBP", + "ZAR/LBP", + "EUR/CZK", + "EUR/UYU", + "CAD/INR", + "PKR/EUR", + "MXN/ZAR", + "GBP/SZL", + "GBP/XCD", + "CNY/SGD", + "GBP/VND", + "NOK/AUD", + "EUR/GBP", + "IDR/KRW", + "EUR/CNY", + "EUR/MRU", + "EUR/RON", + "ARS/BRL", + "CHF/NOK", + "XPT/EUR", + "AED/SEK", + "CZK/USD", + "EGP/JPY", + "EUR/KRW", + "PLN/MXN", + "GBP/LRD", + "PKR/USD", + "TRY/HKD", + "VND/CAD", + "INR/EUR", + "CNH/THB", + "EUR/PYG", + "SEK/CNH", + "ZAR/HKD", + "XAU/HKD", + "MXN/NOK", + "DKK/THB", + "CAD/AED", + "ILS/AUD", + "BMD/KYD", + "ZAR/KHR", + "GBP/SLL", + "SGD/CHF", + "MAD/AUD", + "CNY/EUR", + "SHP/USD", + "GBP/SVC", + "BGN/CNY", + "GBP/KZT", + "ZAR/CLP", + "RON/ZAR", + "AED/DKK", + "KRW/CHF", + "XPT/USD", + "KWD/AED", + "LRD/GBP", + "EUR/PLN", + "INR/USD", + "KRU/CHF", + "ZAR/SAR", + "LKR/USD", + "HUF/JPY", + "XAU/SAR", + "NZD/LFX", + "USD/SGD", + "GBP/JOD", + "RUB/CHF", + "CNY/USD", + "SCR/GBP", + "GBP/THB", + "PLN/SEK", + "JPY/SGD", + "EGP/ZAR", + "USD/SOS", + "GBP/BHD", + "ARS/JPY", + "NZD/AUD", + "DKK/ISK", + "TWD/CNY", + "SEK/INR", + "ZAR/NAD", + "BRL/MXN", + "GBP/NIO", + "ZAR/ARS", + "CAD/BRL", + "XAU/ARS", + "USD/BWP", + "KHR/USD", + "USD/EUR", + "HKD/SGD", + "TWD/KRW", + "PLN/DKK", + "CLP/AUD", + "AUD/CZK", + "XPD/EUR", + "CAD/BGN", + "XAG/HKD", + "BAM/GBP", + "MAL/CHF", + "EUR/HUF", + "JPY/EUR", + "HUF/ZAR", + "AUD/GBP", + "THB/CAD", + "AUD/CNY", + "NOK/CHF", + "EUR/BND", + "BRL/SRD", + "LTL/AUD", + "UYU/GBP", + "AUD/RON", + "OSO/USD", + "EUR/MGA", + "ZAR/LSL", + "XPF/USD", + "KYD/EUR", + "AED/HKD", + "NZD/TOP", + "GBP/ISK", + "ZAR/CNH", + "USD/RUB", + "USD/BTN", + "SEK/AED", + "AUD/KRW", + "EUR/MZN", + "EUR/UAH", + "USD/MMK", + "XPD/USD", + "XAG/SAR", + "ARS/ZAR", + "SGD/THB", + "EUR/MOP", + "HKD/EUR", + "EUR/ETB", + "JPY/RUB", + "JPY/USD", + "CAD/TWD", + "BRL/SEK", + "UGX/USD", + "KRW/THB", + "USD/KWD", + "ILS/CHF", + "TJS/USD", + "GBP/TTD", + "AED/SAR", + "KYD/USD", + "ZAR/GHS", + "BRL/PEN", + "PHP/NZD", + "AUD/PLN", + "CZK/GBP", + "CHF/SGD", + "CAD/JPY", + "OMR/USD", + "PKR/GBP", + "HKD/USD", + "USD/COP", + "XAG/ARS", + "EUR/GEL", + "MWK/ZAR", + "GBP/MUR", + "PLN/HKD", + "MXN/SGD", + "EUR/DZD", + "PHP/AUD", + "ZAR/INR", + "USD/TMT", + "XAU/INR", + "GYD/USD", + "GBP/ILS", + "XPT/GBP", + "NZD/CHF", + "INR/GBP", + "INR/CNY", + "CHF/BWP", + "THB/NZD", + "LKR/GBP", + "CHF/EUR", + "USD/CVE", + "USD/AMD", + "USD/SBD", + "M5P/CHF", + "CZK/PLN", + "CNY/GBP", + "MYR/PKR", + "INR/KRW", + "CLP/CHF", + "CAD/ZAR", + "MXN/EUR", + "AUD/HUF", + "MMK/USD", + "USD/QAR", + "DKK/TRY", + "GBP/GTQ", + "ZAR/TND", + "ZAR/AED", + "THB/AUD", + "SAR/EUR", + "CNY/KRW", + "CHF/RUB", + "CHF/USD", + "ILS/JOD", + "USD/BSD", + "KHR/GBP", + "USD/RSD", + "MXN/RUB", + "TND/ZAR", + "MXN/USD", + "PEN/MXN", + "BRL/HKD", + "CAD/NOK", + "USD/VES", + "SAR/USD", + "SEK/JPY", + "USD/CZK", + "USD/UYU", + "XAG/INR", + "GBP/TRY", + "BRL/CLP", + "XPF/GBP", + "KMF/USD", + "NOK/ISK", + "CZK/HUF", + "USD/GBP", + "USD/CNY", + "JPY/CZK", + "SAR/KWD", + "XPD/GBP", + "USD/MRU", + "GBP/HNL", + "EUR/MKD", + "EUR/UZS", + "USD/RON", + "AED/INR", + "TRY/BRL", + "MYR/DKK", + "JPY/GBP", + "USD/KRW", + "ZAR/BRL", + "JPY/CNY", + "XAUK/CHF", + "UGX/GBP", + "MXN/COP", + "XAU/BRL", + "JPY/RON", + "USD/PYG", + "NZD/THB", + "GBP/BZD", + "HUF/SGD", + "KYD/GBP", + "EGP/EUR", + "RON/USD", + "EUR/PGK", + "HKD/CZK", + "JPY/KRW", + "EUR/CDF", + "DKK/MXN", + "PYG/ZAR", + "GBP/NGN", + "BMD/BBD", + "OMR/GBP", + "HKD/GBP", + "SEK/ZAR", + "HKD/CNY", + "BRL/ARS", + "DKK/PKR", + "EUR/SCR", + "ARS/SGD", + "USD/PLN", + "EGP/USD", + "SGD/TRY", + "HKD/KRW", + "EUR/FJD", + "GYD/GBP", + "NOK/ILS", + "JPY/PLN", + "ZAR/TWD", + "EUR/CAD", + "HUF/EUR", + "KES/ZAR", + "CNH/PHP", + "EUR/DJF", + "THB/CHF", + "EUR/MDL", + "ZAR/RWF", + "SEK/NOK", + "DKK/PHP", + "GBP/MXN", + "TRY/JPY", + "ANG/SRD", + "FJD/USD", + "GBP/KYD", + "ZAR/JPY", + "GBP/PKR", + "XAU/JPY", + "ZAR/OMR", + "ARS/EUR", + "DKK/SEK", + "HKD/PLN", + "MYR/HKD", + "CHF/CZK", + "XAG/BRL", + "EUR/MVR", + "HUF/USD", + "MMK/GBP", + "EUR/CRC", + "ISK/XDR", + "BGN/CAD", + "ZAR/MWK", + "GBP/SRD", + "CHF/GBP", + "PLN/AED", + "CHF/CNY", + "PGK/AUD", + "EUR/LAK", + "USD/HUF", + "MXN/CZK", + "CHF/RON", + "USD/BND", + "GBP/PHP", + "ARS/USD", + "NIO/USD", + "ISK/SEK", + "USD/MGA", + "ZAR/ZMW", + "CHF/KRW", + "MXN/GBP", + "JPY/HUF", + "DKK/MYR", + "USD/MZN", + "GBP/SEK", + "USD/UAH", + "NBL/CHF", + "CAD/SGD", + "EUR/BOB", + "TRY/ZAR", + "USD/MOP", + "NOK/TRY", + "AUD/PGK", + "USD/ETB", + "ZAR/CYP", + "KMF/GBP", + "SGD/MXN", + "XAU/ZAR", + "TWD/CAD", + "GBP/PEN", + "ISK/DKK", + "HKD/HUF", + "JOD/USD", + "SGD/PKR", + "PEN/CLP", + "EUR/NZD", + "CHF/PLN", + "QAR/PKR", + "EUR/LFX", + "COP/CAD", + "GBP/DKK", + "ARS/COP", + "MWK/USD", + "XAG/JPY", + "ZAR/NPR", + "GBP/MYR", + "AUD/FJD", + "TRY/NOK", + "MXN/PLN", + "USD/GEL", + "CAD/EUR", + "RON/GBP", + "RUB/MXN", + "GBP/KES", + "ZAR/NOK", + "AUD/CAD", + "EUR/AUD", + "AED/JPY", + "USD/DZD", + "KWD/EUR", + "ALL/EUR", + "MYR/CNH", + "CNH/HKD", + "ARE/USD", + "SGD/SEK", + "DKK/HKD", + "DOE/USD", + "GBP/LBP", + "CAD/RUB", + "CAD/USD", + "EUR/GYD", + "PEN/ARS", + "KRW/SEK", + "YER/USD", + "EUR/LKR", + "ZAR/UGX", + "EUR/GNF", + "CHF/HUF", + "BGN/AUD", + "KWD/USD", + "EUR/DOP", + "DZD/EUR", + "NZD/TRY", + "XAG/ZAR", + "ALL/USD", + "CAD/KWD", + "NOK/MXN", + "SGD/DKK", + "RUB/SEK", + "CZK/CAD", + "FJD/GBP", + "SEK/SGD", + "ZAR/TZS", + "HUF/CZK", + "SGD/MYR", + "TND/USD", + "MXN/HUF", + "BOB/USD", + "TWD/NZD", + "EUR/BDT", + "GBP/HKD", + "AED/ZAR", + "PLN/JPY", + "KRW/MYR", + "HUF/GBP", + "CAD/COP", + "GBP/KHR", + "DZD/USD", + "UAH/DKK", + "GBP/HTG", + "MYR/INR", + "EUR/BMD", + "GBP/CLP", + "RUB/DKK", + "HTG/USD", + "TWD/AUD", + "INR/CAD", + "ARS/GBP", + "AUD/NZD", + "USD/XPF", + "NIO/GBP", + "EUR/HRK", + "SEK/EUR", + "GBP/SAR", + "AUD/LFX", + "EUR/TJS", + "AED/NOK", + "GBP/IQD", + "BTN/USD", + "NOK/SEK", + "CNY/CAD", + "USD/MKD", + "USD/UZS", + "AWG/USD", + "SZL/ZAR", + "GBP/PAB", + "EUR/EGP", + "HUF/PLN", + "MVR/USD", + "GBP/YER", + "PYG/USD", + "PLN/ZAR", + "KES/EUR", + "HNL/USD", + "EUR/CHF", + "SEK/RUB", + "SEK/USD", + "IQD/USD", + "USD/PGK", + "SGD/HKD", + "NZD/MXN", + "NOK/DKK", + "GBP/ARS", + "EUR/MAD", + "USD/CDF", + "MWK/GBP", + "ILS/SEK", + "BRL/JPY", + "NZD/PKR", + "KRW/HKD", + "CZK/NZD", + "USD/SCR", + "SVC/USD", + "EUR/SZL", + "TRY/SGD", + "CLP/MXN", + "KES/USD", + "EUR/VND", + "GBP/AFN", + "XCD/SRD", + "ZAR/SGD", + "PLN/NOK", + "NSO/USD", + "USD/FJD", + "GBP/LSL", + "AUD/TOP", + "GBP/CNH", + "CAD/CZK", + "USD/CAD", + "TTD/SRD", + "CZK/AUD", + "NZD/PHP", + "EUR/LRD", + "USD/MDL", + "CAD/GBP", + "INR/NZD", + "CAD/CNY", + "CNH/INR", + "JPY/CAD", + "YER/GBP", + "AUN/CHF", + "CAD/RON", + "NZD/SEK", + "DKK/INR", + "EUR/SLL", + "GBP/BBD", + "TRY/EUR", + "KYD/CAD", + "RWF/ZAR", + "LBP/USD", + "KWD/GBP", + "EUR/SVC", + "CAD/KRW", + "GBP/CUP", + "LSL/USD", + "CNY/NZD", + "ALL/GBP", + "BRL/ZAR", + "ZAR/BWP", + "EUR/KZT", + "USD/MVR", + "ZAR/EUR", + "GBP/GHS", + "XAU/EUR", + "USD/CRC", + "SGD/ARS", + "INR/AUD", + "TWD/CHF", + "AUD/HRK", + "HKD/CAD", + "TND/GBP", + "BYN/USD", + "BOB/GBP", + "XPDK/CHF", + "USD/LAK", + "NOK/HKD", + "EUR/JOD", + "NZD/DKK", + "CNY/AUD", + "TRY/USD", + "NZD/MYR", + "CLP/PEN", + "ZAR/RUB", + "ZAR/BTN", + "EUR/THB", + "CAD/PLN", + "XAU/RUB", + "DKK/AED", + "ZAR/USD", + "GBP/INR", + "XAU/USD", + "PEN/BRL", + "ZAR/MMK", + "SGD/CNH", + "EUR/BHD", + "MYR/TWD", + "BRI/CHF", + "HTG/GBP", + "USD/BOB", + "AUD/CHF", + "ZAR/KWD", + "AUD/MAD", + "EUR/NIO", + "BTN/GBP", + "MYR/JPY", + "BHD/EUR", + "AED/SGD", + "USD/NZD", + "SEK/CZK", + "AWG/GBP", + "GBP/TND", + "GBP/AED", + "ZAR/COP", + "JPY/NZD", + "HNL/GBP", + "CHF/CAD", + "SEK/GBP", + "IQD/GBP", + "XAG/EUR", + "GBP/ANG", + "EUR/ISK", + "BWP/ZAR", + "USD/AUD", + "USD/STN", + "BHD/USD", + "CZK/CHF", + "CAD/HUF", + "JMD/EUR", + "MXN/CAD", + "THB/PKR", + "SGD/INR", + "AED/EUR", + "NZD/HKD", + "SOS/USD", + "JPY/AUD", + "HKD/NZD", + "GBP/ALL", + "SVC/GBP", + "DKK/BGN", + "GBP/BAM", + "KRW/INR", + "XAG/RUB", + "XAG/USD", + "USD/GYD", + "EUR/TTD", + "TWD/THB", + "MYR/ZAR", + "PLN/SGD", + "XAGK/CHF", + "USD/LKR", + "NOK/CNH", + "USD/GNF", + "JMD/USD", + "USD/DOP", + "UZS/USD", + "PHP/DKK", + "INR/CHF", + "HKD/AUD", + "SEK/PLN", + "ZAR/QAR", + "AED/USD", + "USD/TOP", + "GBP/KMF", + "GBP/BRL", + "CNH/TWD", + "SGD/AED", + "EUR/MUR", + "CNY/CHF", + "QAR/AED", + "AUD/THB", + "DKK/TWD", + "USD/BDT", + "GBP/BGN", + "LSL/GBP", + "SZL/EUR", + "EUR/ILS", + "GBP/MTL", + "PLN/EUR", + "CNH/JPY", + "BYN/GBP", + "TRY/CZK", + "DKK/JPY", + "BMD/EUR", + "ETB/ZAR", + "CHF/NZD", + "ZAR/CZK", + "ZAR/UYU", + "CHF/LFX", + "MOP/USD", + "USD/HRK", + "TRY/GBP", + "THB/MYR", + "NOK/INR", + "ZAR/GBP", + "USD/TJS", + "HRK/EUR", + "XAU/GBP", + "ZAR/CNY", + "SZL/USD", + "GHS/ZAR", + "XAU/CNY", + "MXN/NZD", + "GBP/TWD", + "EUR/GTQ", + "KYD/BMD", + "PLN/USD", + "ZAR/RON", + "CLP/ARS", + "BRL/SGD", + "SEK/HUF", + "CHF/AUD", + "LAK/USD", + "ISK/JPY", + "GBP/AWG", + "CUP/USD", + "GBP/RWF", + "ZAR/KRW", + "OSO/CHF", + "XAU/KRW", + "USD/EGP", + "NZD/CNH", + "SGD/BRL", + "ZAR/PYG", + "USD/CHF", + "GBP/JPY", + "GBP/OMR", + "KZT/USD", + "MXN/AUD", + "HRK/USD", + "KRW/BRL", + "USD/MAD", + "HUF/CAD", + "JPY/CHF", + "NOK/AED", + "DKK/ZAR", + "TRY/PLN", + "GBP/MWK", + "EUR/TRY", + "BRL/EUR", + "GBP/BIF", + "ZAR/PLN", + "INR/THB", + "USD/SZL", + "USD/XCD", + "USD/VND", + "ARS/CAD", + "EUR/HNL", + "GBP/ZMW", + "GBP/JMD", + "CNY/THB", + "HKD/CHF", + "THB/HKD", + "SOS/GBP", + "SGD/TWD", + "ILS/AED", + "USD/LRD", + "RWF/USD", + "DKK/NOK", + "BRL/RUB", + "XAG/GBP", + "BRL/USD", + "XAG/CNY", + "KRW/TWD", + "EUR/BZD", + "NZD/INR", + "GBP/ZAR", + "AUD/ILS", + "AED/CZK", + "USD/SLL", + "AUD/LTL", + "CDF/USD", + "SGD/JPY", + "JMD/GBP", + "USD/SVC", + "XAG/KRW", + "EUR/NGN", + "USD/KZT", + "AED/GBP", + "KRW/JPY", + "TRY/HUF", + "GBP/NPR", + "CNH/IDR", + "ISK/NOK", + "ZAR/HUF", + "USD/JOD", + "GBP/NOK", + "BRL/COP", + "ZAR/MGA", + "NZD/AED", + "RUB/JPY", + "HUF/NZD", + "USD/THB", + "VES/EUR", + "ZAR/MZN", + "USD/BHD", + "USD/XOF", + "EUR/MXN", + "BWP/EUR", + "GBP/LYD", + "EUR/KYD", + "ZAR/ETB", + "JPY/THB", + "PLN/CZK", + "EUR/PKR", + "GTQ/USD", + "BBD/SRD", + "AED/PLN", + "MXN/CHF", + "USD/NIO", + "SGD/ZAR", + "SZL/GBP", + "HUF/AUD", + "GBP/UGX", + "QAR/ZAR", + "PLN/GBP", + "CHF/SZL", + "KRW/ZAR", + "AUD/TRY", + "VES/USD", + "EUR/SRD", + "MYR/EUR", + "LAK/GBP", + "ZWD/GBP", + "BWP/USD", + "BMD/GBP", + "HKD/THB", + "XOF/ZAR", + "GBP/TZS", + "EUR/PHP", + "NOK/JPY", + "ARS/AUD", + "TZS/ZAR", + "KZT/GBP", + "USD/ISK", + "RUB/ZAR", + "FJD/TOP", + "SGD/NOK", + "NZD/BRL", + "EUR/SEK", + "BDT/JPY", + "GBP/BYN", + "MYR/USD", + "JPY/ISK", + "RON/CHF", + "EUR/PEN", + "ILS/JPY", + "CLP/BRL", + "BRL/VES", + "IDR/MYR", + "USD/TTD", + "AED/HUF", + "CZK/TRY", + "PEN/EUR", + "EUR/DKK", + "MGA/ZAR", + "SGD/IDR", + "EUR/MYR", + "RWF/GBP", + "TWD/PKR", + "COP/MXN", + "BRL/GBP", + "THB/INR", + "NOK/ZAR", + "DKK/SGD", + "GHS/EUR", + "EUR/KES", + "CAD/NZD", + "CHF/THB", + "NZD/TWD", + "USD/MUR", + "CAD/LFX", + "XDR/ISK", + "SEK/CAD", + "CDF/GBP", + "PEN/USD", + "BRL/KRW", + "ETB/USD", + "AUD/MXN", + "USD/ILS", + "BGN/DKK", + "NZD/JPY", + "AUD/PKR", + "EUR/LBP", + "CAD/AUD", + "GHS/USD", + "JPY/ILS", + "ILS/ZAR", + "PLN/HUF", + "MAD/ZAR", + "MTL/GBP", + "USD/BTC", + "BTC/USD", + "BTC/ETH", + "ETH/BTC", + "ETH/USD", + "USD/ETH", + "BTC/LTC", + "LTC/BTC", + "LTC/USD", + "USD/LTC", + "XRP/USD", + "USD/XRP", + "XRP/BTC", + "BTC/XRP", + "DSH/USD", + "USD/DSH", + "DSH/BTC", + "BTC/DASH", + "BCH/USD", + "USD/BCH", + "BCH/BTC", + "BTC/BCH", + "DASH/BTC", + "EUR/BTC", + "EUR/ETH", + "EUR/BCH", + "USD/DASH", + "TRY/RUB", + "TRY/BTC", + "BTC/EUR", + "BTC/JPY", + "BTC/GBP", + "BTC/SGD", + "BTC/RUB", + "BTC/TRY", + "BTC/ZAR", + "BTC/PLN", + "ETH/EUR", + "ETH/JPY", + "ETH/GBP", + "ETH/CAD", + "ETH/CHF", + "ETH/SGD", + "ETH/RUB", + "ETH/TRY", + "ETH/ZAR", + "ETH/PLN", + "ETH/LTC", + "ETH/XRP", + "ETH/DASH", + "ETH/BCH", + "LTC/EUR", + "LTC/GBP", + "LTC/RUB", + "LTC/ETH", + "LTC/BCH", + "XRP/EUR", + "XRP/JPY", + "XRP/GBP", + "XRP/CAD", + "XRP/RUB", + "XRP/TRY", + "XRP/ETH", + "XRP/BCH", + "DASH/EUR", + "DASH/RUB", + "DASH/ETH", + "DASH/BCH", + "BCH/EUR", + "BCH/GBP", + "BCH/RUB", + "BCH/ETH", + "XAU/CHF", + "CNH/TRY", + "BTC/AUD", + "MXN/XRP", + "BNB/XAG", + "MXN/BCH", + "BTC/NOK", + "DSH/RUB", + "DSH/AUD", + "LTC/ZAR", + "PLN/DSH", + "USD/ZWD", + "SGD/LTC", + "DOT/XAU", + "XRP/SGD", + "BTC/DKK", + "XAU/SEK", + "XMR/XAU", + "NZD/BCH", + "CAD/BCH", + "SEK/LTC", + "XRP/HKD", + "DKK/BTC", + "JPY/DSH", + "BTC/CNH", + "ETH/DKK", + "PLN/XAG", + "BCH/HKD", + "DSH/XRP", + "XAU/XAG", + "NOK/XAU", + "XPT/NZD", + "TRY/BCH", + "XRP/DKK", + "CNH/DKK", + "XAG/BTC", + "LTC/CNH", + "ETH/NZD", + "NZD/ETH", + "DSH/CAD", + "CAD/DSH", + "PLN/BCH", + "XAG/XAU", + "SEK/XAG", + "AUD/DSH", + "CNH/DSH", + "SEK/ETH", + "SOL/XAU", + "CNH/PLN", + "CHF/BTC", + "XAU/DKK", + "SGD/BCH", + "DSH/SEK", + "CNH/BCH", + "RUB/NZD", + "LTC/SGD", + "DSH/CHF", + "DKK/ETH", + "RUB/CNH", + "VET/XAU", + "NZD/XAG", + "BCH/NZD", + "NZD/XRP", + "DSH/DKK", + "SEK/XAU", + "XPD/AUD", + "LTC/NOK", + "XRP/LTC", + "LTC/NZD", + "RUB/DSH", + "XAU/PLN", + "HKD/BTC", + "XAG/SEK", + "TRY/DSH", + "DKK/CNH", + "BCH/TRY", + "LTC/MXN", + "ZAR/DSH", + "BTC/HKD", + "JPY/LTC", + "XRP/XAG", + "XPD/NZD", + "NZD/DSH", + "SEK/BTC", + "ZAR/BCH", + "BCH/ZAR", + "AAVE/XAU", + "NZD/LTC", + "ETH/XAU", + "CNH/XAG", + "LTC/XRP", + "LTC/DKK", + "UNI/XAU", + "XMR/XAG", + "HKD/ETH", + "DSH/TRY", + "BTC/NZD", + "BTC/XAG", + "DSH/NOK", + "NZD/XPT", + "ZAR/XRP", + "GBP/DSH", + "HKD/RUB", + "ILS/PLN", + "LTC/XAU", + "FIL/XAG", + "USDC/XAU", + "CHF/XAG", + "XPT/AUD", + "LUNA/XAG", + "FIL/XAU", + "SEK/DSH", + "XAU/LTC", + "SEK/BCH", + "NOK/LTC", + "ETH/SEK", + "ETH/NOK", + "XAG/XRP", + "LUNA/XAU", + "SEK/XRP", + "CHF/LTC", + "SGD/RUB", + "ETH/DSH", + "NOK/XAG", + "SGD/XRP", + "XRP/XAU", + "HKD/DSH", + "BCH/CAD", + "LTC/TRY", + "CNH/LTC", + "LTC/JPY", + "TRY/LTC", + "SGD/XAU", + "BCH/NOK", + "XAU/SGD", + "CAD/BTC", + "SGD/DSH", + "MXN/BTC", + "DSH/EUR", + "CNH/XRP", + "ADA/XAU", + "DSH/HKD", + "XAG/DSH", + "XAG/CNH", + "XAG/PLN", + "BCH/XAU", + "CHF/DSH", + "CNH/MXN", + "XAG/NOK", + "DKK/LTC", + "CHF/BCH", + "CNH/RUB", + "RUB/SGD", + "XAG/BCH", + "PLN/XRP", + "XAG/CHF", + "XAU/CNH", + "DSH/LTC", + "BTC/MXN", + "THETA/XAU", + "CAD/LTC", + "BCH/DSH", + "XRP/DSH", + "LTC/CHF", + "DKK/XAU", + "NZD/RUB", + "BNB/XAU", + "XAU/NZD", + "AUD/XPD", + "NZD/BTC", + "ETH/HKD", + "HKD/BCH", + "BTC/SEK", + "XAG/NZD", + "XRP/CNH", + "XRP/SEK", + "DSH/CNH", + "NOK/BTC", + "XRP/NZD", + "RUB/HKD", + "PLN/XAU", + "CHF/XRP", + "DOGE/XAU", + "LTC/XAG", + "DKK/XAG", + "CNH/ETH", + "BCH/XAG", + "XAU/ETH", + "ZAR/LTC", + "BCH/CHF", + "PLN/LTC", + "BTC/XAU", + "DSH/NZD", + "LTC/DSH", + "DSH/SGD", + "DSH/ETH", + "XAU/BTC", + "DSH/PLN", + "XRP/PLN", + "CNH/XAU", + "LTC/PLN", + "LTC/SEK", + "MATIC/XAU", + "DSH/JPY", + "NOK/DSH", + "DSH/BCH", + "BCH/MXN", + "XAU/NOK", + "DKK/XRP", + "BCH/DKK", + "XAG/LTC", + "BCH/JPY", + "MXN/LTC", + "AAVE/XAG", + "DSH/MXN", + "DSH/XAG", + "NZD/XAU", + "NZD/XPD", + "NOK/ETH", + "XAU/DSH", + "DKK/DSH", + "DKK/BCH", + "PLN/CNH", + "XRP/CHF", + "BCH/CNH", + "AUD/XPT", + "LTC/HKD", + "XRP/MXN", + "DSH/XAU", + "MXN/CNH", + "NOK/BCH", + "BCH/SEK", + "MXN/ETH", + "MXN/DSH", + "BCH/SGD", + "NOK/XRP", + "XAG/ETH", + "BCH/PLN", + "XAG/SGD", + "LTC/CAD", + "HKD/XRP", + "DSH/ZAR", + "XAU/XRP", + "XRP/NOK", + "HKD/LTC", + "XRP/ZAR", + "CNH/BTC", + "ETH/CNH", + "JPY/ZWD", + "DSH/GBP", + "DOGE/XAG", + "XLM/XAG", + "ADA/XAG", + "VET/XAG", + "SGD/XAG", + "EUR/DSH", + "JPY/BCH", + "ETH/MXN", + "XAG/DKK", + "ETH/XAG", + "LINK/XAU", + "XAU/BCH", + "MATIC/XAG", + "LINK/XAG", + "UNI/XAG", + "SOL/XAG", + "DOT/XAG", + "THETA/XAG", + "USDC/XAG", + "USD/UKO", + "SEK/TWD", + "COP/PEN", + "CLF/USD", + "AOA/EUR", + "PGK/ZAR", + "KHR/EUR", + "HTG/EUR", + "CDF/ZAR", + "JPY/VND", + "IQD/EUR", + "FJD/ZAR", + "PKR/INR", + "CAD/XAU", + "PAB/EUR", + "YER/EUR", + "NAD/EUR", + "JPY/PHP", + "CHF/ARE", + "SDG/USD", + "CHF/DOE", + "SRD/CNY", + "COP/GBP", + "AFN/EUR", + "LAK/ZAR", + "LSL/EUR", + "CNH/EUR", + "CAD/XAG", + "CUP/EUR", + "USD/KRU", + "SRD/USD", + "INR/IDR", + "AUD/XAU", + "PKR/OMR", + "KRW/CNH", + "PKR/HKD", + "USD/MAL", + "RUB/NOK", + "SRD/GYD", + "TND/EUR", + "CHF/KES", + "CHF/NSO", + "KRW/GBP", + "CNH/AUD", + "PYG/GBP", + "PKR/CHF", + "BAM/EUR", + "AUD/XAG", + "PKR/SAR", + "JPY/NGN", + "BGN/EUR", + "AOA/USD", + "MTL/EUR", + "USD/M5P", + "CLP/JPY", + "VND/ZAR", + "CHF/VRN", + "UAH/GBP", + "RWF/EUR", + "CHF/VRL", + "PKR/EGP", + "MOP/GBP", + "OMR/EUR", + "NAD/USD", + "PLN/RUB", + "MWK/EUR", + "BIF/EUR", + "GEL/GBP", + "JOD/ZAR", + "ZMW/EUR", + "DZD/GBP", + "THB/XAU", + "BHD/ZAR", + "JPY/LFX", + "NPR/EUR", + "LYD/EUR", + "HUF/NOK", + "CHF/FRN", + "UGX/EUR", + "IDR/EUR", + "PKR/CAD", + "CNH/CHF", + "TZS/EUR", + "BHD/AED", + "USD/NBL", + "PKR/KWD", + "BYN/EUR", + "AED/OMR", + "MVR/GBP", + "IDR/AUD", + "TRY/XAU", + "SRD/AWG", + "SOS/EUR", + "LFX/GBP", + "CHF/XPTK", + "BTN/EUR", + "TRY/XAG", + "MMK/EUR", + "SAR/CAD", + "MXN/XAU", + "TRY/AED", + "COP/EUR", + "IRR/USD", + "USD/AUN", + "CNH/CAD", + "ILS/BRL", + "PKR/BHD", + "AMD/EUR", + "HRK/GBP", + "IDR/USD", + "MXN/XAG", + "QAR/EUR", + "USD/BRI", + "EGP/GBP", + "BSD/EUR", + "GMD/USD", + "PKR/AED", + "AED/JOD", + "LBP/ZAR", + "KRW/IDR", + "MRU/EUR", + "RON/EUR", + "EUR/XPT", + "JPY/EGP", + "THB/CNH", + "PYG/EUR", + "CNH/SEK", + "HKD/XAU", + "THB/DKK", + "KHR/ZAR", + "USD/SHP", + "USD/XPT", + "AED/KWD", + "CHF/KRU", + "SAR/ZAR", + "SAR/XAU", + "LFX/NZD", + "JOD/GBP", + "THB/GBP", + "BHD/GBP", + "NAD/ZAR", + "ARS/XAU", + "EUR/XPD", + "HKD/XAG", + "CHF/MAL", + "BND/EUR", + "SRD/BRL", + "RON/AUD", + "USD/OSO", + "MGA/EUR", + "LSL/ZAR", + "CNH/ZAR", + "MZN/EUR", + "USD/XPD", + "SAR/XAG", + "MOP/EUR", + "ETB/EUR", + "SEK/BRL", + "SAR/AED", + "ARS/XAG", + "GEL/EUR", + "INR/XAU", + "ILS/GBP", + "GBP/XPT", + "CVE/USD", + "CHF/M5P", + "PKR/MYR", + "RSD/USD", + "INR/XAG", + "KWD/SAR", + "GBP/XPD", + "MRU/USD", + "MKD/EUR", + "UZS/EUR", + "INR/AED", + "BRL/TRY", + "CHF/XAUK", + "BRL/XAU", + "RON/JPY", + "BZD/GBP", + "PGK/EUR", + "CDF/EUR", + "BBD/BMD", + "PKR/DKK", + "SCR/EUR", + "FJD/EUR", + "PHP/CNH", + "DJF/EUR", + "SRD/ANG", + "JPY/XAU", + "BRL/XAG", + "MVR/EUR", + "CRC/EUR", + "SRD/GBP", + "LAK/EUR", + "CHF/NBL", + "BOB/EUR", + "ZAR/XAU", + "PKR/SGD", + "PKR/QAR", + "LFX/EUR", + "JPY/XAG", + "NPR/ZAR", + "MYR/GBP", + "FJD/AUD", + "GEL/USD", + "KES/GBP", + "CNH/MYR", + "HKD/CNH", + "USD/ARE", + "USD/DOE", + "LBP/GBP", + "GYD/EUR", + "SEK/KRW", + "LKR/EUR", + "GNF/EUR", + "DOP/EUR", + "ZAR/XAG", + "KWD/CAD", + "MYR/SGD", + "BDT/EUR", + "DKK/RUB", + "SAR/GBP", + "LFX/AUD", + "TJS/EUR", + "PAB/GBP", + "MAD/EUR", + "PKR/NZD", + "SRD/XCD", + "USD/NSO", + "CNH/GBP", + "SRD/TTD", + "LRD/EUR", + "INR/CNH", + "CHF/AUN", + "RON/CAD", + "INR/DKK", + "SLL/EUR", + "SVC/EUR", + "CUP/GBP", + "KZT/EUR", + "EUR/XAU", + "CHF/XPDK", + "JOD/EUR", + "BTN/ZAR", + "RUB/XAU", + "USD/XAU", + "MMK/ZAR", + "CNH/SGD", + "CHF/BRI", + "KWD/ZAR", + "NIO/EUR", + "EUR/XAG", + "STN/USD", + "PKR/THB", + "RUB/XAG", + "USD/XAG", + "TTD/EUR", + "CHF/XAGK", + "CNH/NOK", + "TWD/CNH", + "AED/QAR", + "BGN/GBP", + "JPY/CNH", + "UYU/ZAR", + "LFX/CHF", + "INR/NOK", + "GBP/XAU", + "CNY/XAU", + "TWD/GBP", + "GTQ/EUR", + "CHF/OSO", + "KRW/XAU", + "CNH/NZD", + "BIF/GBP", + "XCD/USD", + "HNL/EUR", + "ZMW/GBP", + "AED/ILS", + "RUB/BRL", + "GBP/XAG", + "CNY/XAG", + "BZD/EUR", + "KRW/XAG", + "NGN/EUR", + "HUF/TRY", + "IDR/CNH", + "EUR/VES", + "XOF/USD", + "SRD/BBD", + "SRD/EUR", + "GBP/ZWD", + "PHP/EUR", + "JPY/BDT", + "VES/BRL", + "MYR/IDR", + "IDR/SGD", + "PKR/TWD", + "LFX/CAD", + "PKR/AUD", + "LBP/EUR", + "BTC/DSH", + "DASH/USD", + "RUB/TRY", + "JPY/BTC", + "GBP/BTC", + "SGD/BTC", + "RUB/BTC", + "ZAR/BTC", + "PLN/BTC", + "JPY/ETH", + "GBP/ETH", + "CAD/ETH", + "CHF/ETH", + "SGD/ETH", + "RUB/ETH", + "TRY/ETH", + "ZAR/ETH", + "PLN/ETH", + "EUR/LTC", + "GBP/LTC", + "RUB/LTC", + "BCH/LTC", + "EUR/XRP", + "JPY/XRP", + "GBP/XRP", + "CAD/XRP", + "RUB/XRP", + "TRY/XRP", + "BCH/XRP", + "EUR/DASH", + "RUB/DASH", + "BCH/DASH", + "GBP/BCH", + "RUB/BCH", + "CHF/XAU", + "TRY/CNH", + "AUD/BTC" +]
--- a/Simoleon/Resources/de.lproj/CurrencyMetadata.json Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,714 +0,0 @@ -{ - "AED": { - "name": "Dirham Der Vereinigten Arabischen Emirate", - "flag": "AE" - }, - "AFN": { - "name": "Afghanisch Afghanisch", - "flag": "AF" - }, - "ALL": { - "name": "Albanisches Lek", - "flag": "AL" - }, - "AMD": { - "name": "Armenisches Dram", - "flag": "AM" - }, - "ANG": { - "name": "Niederl\u00e4ndischer Antillen-Gulden", - "flag": "CW" - }, - "AOA": { - "name": "Angolanisch Zuerst", - "flag": "AO" - }, - "ARE": { - "name": "Areg", - "flag": "AR" - }, - "ARS": { - "name": "Argentinien Peso", - "flag": "AR" - }, - "AUD": { - "name": "Australischer Dollar", - "flag": "AU" - }, - "AUN": { - "name": "Australisches Nugget", - "flag": "AU" - }, - "AWG": { - "name": "Aruba-Florin", - "flag": "AW" - }, - "BAM": { - "name": "Konvertible Mark F\u00fcr Bosnien Und Herzegowina", - "flag": "BA" - }, - "BBD": { - "name": "Barbados-Dollar", - "flag": "BB" - }, - "BDT": { - "name": "Bangladesch Taka", - "flag": "BD" - }, - "BGN": { - "name": "Bulgarischer Lev", - "flag": "BG" - }, - "BHD": { - "name": "Bahrain-Dinar", - "flag": "BH" - }, - "BIF": { - "name": "Burundischer Franken", - "flag": "BI" - }, - "BMD": { - "name": "Bermuda-Dollar", - "flag": "BM" - }, - "BND": { - "name": "Brunei Dollar", - "flag": "BN" - }, - "BOB": { - "name": "Bolivianisch", - "flag": "BO" - }, - "BRI": { - "name": "Gro\u00dfbritannien", - "flag": "BR" - }, - "BRL": { - "name": "Brasilianischer Real", - "flag": "BR" - }, - "BSD": { - "name": "Bahama-Dollar", - "flag": "BS" - }, - "BTN": { - "name": "Bhutanesischer Ngultrum", - "flag": "BT" - }, - "BWP": { - "name": "Botswana Pula", - "flag": "BW" - }, - "BYN": { - "name": "Wei\u00dfrussischer Rubel", - "flag": "BY" - }, - "BZD": { - "name": "Belize-Dollar", - "flag": "BZ" - }, - "CAD": { - "name": "Kanadischer Dollar", - "flag": "CA" - }, - "CDF": { - "name": "Kongolesischer Franken", - "flag": "CD" - }, - "CHF": { - "name": "Schweizerfranken", - "flag": "CH" - }, - "CLF": { - "name": "Chilenische Rechnungseinheit", - "flag": "CL" - }, - "CLP": { - "name": "Chilenischer Peso", - "flag": "CL" - }, - "CNH": { - "name": "Chinesische Yuan", - "flag": "CN" - }, - "CNY": { - "name": "Chinesische Yuan", - "flag": "CN" - }, - "COP": { - "name": "Kolumbianischer Peso", - "flag": "CO" - }, - "CRC": { - "name": "Costa-Rica-Colon", - "flag": "CR" - }, - "CUP": { - "name": "Kubanischer Peso", - "flag": "CU" - }, - "CVE": { - "name": "Kapverdischer Schild", - "flag": "CV" - }, - "CYP": { - "name": "Zypriotisches Pfund", - "flag": "CY" - }, - "CZK": { - "name": "Tschechische Krone", - "flag": "CZ" - }, - "DJF": { - "name": "Dschibutisches Franken", - "flag": "DJ" - }, - "DKK": { - "name": "D\u00e4nische Krone", - "flag": "DK" - }, - "DOE": { - "name": "Doppeladler", - "flag": "DO" - }, - "DOP": { - "name": "Dominikanische Peso", - "flag": "DO" - }, - "DZD": { - "name": "Algerischer Dinar", - "flag": "DZ" - }, - "EGP": { - "name": "\u00c4gyptisches Pfund", - "flag": "EG" - }, - "ETB": { - "name": "\u00c4thiopischer Birr", - "flag": "ET" - }, - "EUR": { - "name": "Euro", - "flag": "EU" - }, - "FJD": { - "name": "Fidschi-Dollar", - "flag": "FJ" - }, - "FRN": { - "name": "Franz\u00f6sischer Napoleon", - "flag": "FR" - }, - "GBP": { - "name": "Pfund Sterling", - "flag": "GB" - }, - "GEL": { - "name": "Georgischer Lauf", - "flag": "GE" - }, - "GHS": { - "name": "Ghanaischer Cedi", - "flag": "GH" - }, - "GMD": { - "name": "Gambischer Dalasi", - "flag": "GM" - }, - "GNF": { - "name": "Guinea-Franc", - "flag": "GN" - }, - "GTQ": { - "name": "Guatemaltekischer Quetzal", - "flag": "GT" - }, - "GYD": { - "name": "Guyana-Dollar", - "flag": "GY" - }, - "HKD": { - "name": "Hongkong Dollar", - "flag": "HK" - }, - "HNL": { - "name": "Honduranisches Lempira", - "flag": "HN" - }, - "HRK": { - "name": "Kroatische Kuna", - "flag": "HR" - }, - "HTG": { - "name": "Haitianischer K\u00fcrbis", - "flag": "HT" - }, - "HUF": { - "name": "Ungarischer Forint", - "flag": "HU" - }, - "IDR": { - "name": "Indonesische Rupiah", - "flag": "ID" - }, - "ILS": { - "name": "Israelischer Neuer Schekel", - "flag": "IL" - }, - "INR": { - "name": "Indische Rupie", - "flag": "IN" - }, - "IQD": { - "name": "Irakischer Dinar", - "flag": "IQ" - }, - "IRR": { - "name": "Iranischer Rial", - "flag": "IR" - }, - "ISK": { - "name": "Isl\u00e4ndische Krone", - "flag": "IS" - }, - "JMD": { - "name": "Jamaika-Dollar", - "flag": "JM" - }, - "JOD": { - "name": "Jordanischer Dinar", - "flag": "JO" - }, - "JPY": { - "name": "Japanische Yen", - "flag": "JP" - }, - "KES": { - "name": "Kenianischer Schilling", - "flag": "KE" - }, - "KHR": { - "name": "Kambodschanische Riel", - "flag": "KH" - }, - "KMF": { - "name": "Komoren Frankreich", - "flag": "KM" - }, - "KRU": { - "name": "S\u00fcdafrikanischer Kr\u00fcgerrand", - "flag": "KR" - }, - "KRW": { - "name": "S\u00fcdkoreanische Won", - "flag": "KR" - }, - "KWD": { - "name": "Kuwait-Dinar", - "flag": "KW" - }, - "KYD": { - "name": "Kaimaninseln-Dollar", - "flag": "KY" - }, - "KZT": { - "name": "Kasachstan Tenge", - "flag": "KZ" - }, - "LAK": { - "name": "Laotischer Kip", - "flag": "LA" - }, - "LBP": { - "name": "Libanesisches Pfund", - "flag": "LB" - }, - "LFX": { - "name": "Sukuk-Sch\u00e4tze", - "flag": "MY" - }, - "LKR": { - "name": "Sri-Lanka-Rupie", - "flag": "LK" - }, - "LRD": { - "name": "Liberianischer Dollar", - "flag": "LR" - }, - "LSL": { - "name": "Lesotho Loti", - "flag": "LS" - }, - "LTL": { - "name": "Litauische Litas", - "flag": "LT" - }, - "LYD": { - "name": "Libyscher Dinar", - "flag": "LY" - }, - "M5P": { - "name": "Mexikanische 50 Peso", - "flag": "MX" - }, - "MAD": { - "name": "Marokkanischer Dirham", - "flag": "MA" - }, - "MAL": { - "name": "Ahornblatt", - "flag": "MA" - }, - "MDL": { - "name": "Moldauischer Leu", - "flag": "MD" - }, - "MGA": { - "name": "Madagassischer Ariary", - "flag": "MG" - }, - "MKD": { - "name": "Mazedonischer Denar", - "flag": "MK" - }, - "MMK": { - "name": "Myanmar Kyat", - "flag": "MM" - }, - "MOP": { - "name": "Macanesisches Pataca", - "flag": "MO" - }, - "MRU": { - "name": "Mauretanischer Ouguiya", - "flag": "MR" - }, - "MTL": { - "name": "Maltesische Lira", - "flag": "MT" - }, - "MUR": { - "name": "Mauritius-Rupie", - "flag": "MU" - }, - "MVR": { - "name": "Maledivische Rufiyaa", - "flag": "MV" - }, - "MWK": { - "name": "Malawischer Kwacha", - "flag": "MW" - }, - "MXN": { - "name": "Mexikanischer Peso", - "flag": "MX" - }, - "MYR": { - "name": "Malaysische Ringgit", - "flag": "MY" - }, - "MZN": { - "name": "Mosambikanische Metical", - "flag": "MZ" - }, - "NAD": { - "name": "Namibischer Dollar", - "flag": "NA" - }, - "NBL": { - "name": "Insel Man Noble", - "flag": "IM" - }, - "NGN": { - "name": "Nigerianische Naira", - "flag": "NG" - }, - "NIO": { - "name": "Nicaraguanisches Cordoba", - "flag": "NI" - }, - "NOK": { - "name": "Norwegische Krone", - "flag": "NO" - }, - "NPR": { - "name": "Nepalesische Rupie", - "flag": "NP" - }, - "NSO": { - "name": "Neuer Souver\u00e4n", - "flag": "GB" - }, - "NZD": { - "name": "Neuseeland Dollar", - "flag": "NZ" - }, - "OMR": { - "name": "Omanische Rial", - "flag": "OM" - }, - "OSO": { - "name": "Alter Souver\u00e4n", - "flag": "GB" - }, - "PAB": { - "name": "Panamaischer Balboa", - "flag": "PA" - }, - "PEN": { - "name": "Peruanisches Neues Sol", - "flag": "PE" - }, - "PGK": { - "name": "Papua-Neuguinea China", - "flag": "PG" - }, - "PHP": { - "name": "Philippinischer Peso", - "flag": "PH" - }, - "PKR": { - "name": "Pakistanische Rupie", - "flag": "PK" - }, - "PLN": { - "name": "Polnischer Zloty", - "flag": "PL" - }, - "PYG": { - "name": "Paraguayischer Guaran\u00ed", - "flag": "PY" - }, - "QAR": { - "name": "Katar-Riyal", - "flag": "QA" - }, - "RON": { - "name": "Rum\u00e4nischer Neuer Leu", - "flag": "RO" - }, - "RSD": { - "name": "Serbischer Dinar", - "flag": "RS" - }, - "RUB": { - "name": "Russischer Rubel", - "flag": "RU" - }, - "RWF": { - "name": "Ruanda-Franken", - "flag": "RW" - }, - "SAR": { - "name": "Saudi-Riyal", - "flag": "SA" - }, - "SBD": { - "name": "Salomonen-Dollar", - "flag": "SB" - }, - "SCR": { - "name": "Seychellen-Rupie", - "flag": "SC" - }, - "SDG": { - "name": "Sudanesisches Pfund", - "flag": "SD" - }, - "SEK": { - "name": "Schwedische Krone", - "flag": "SE" - }, - "SGD": { - "name": "Singapur-Dollar", - "flag": "SG" - }, - "SHP": { - "name": "St. Helena Pfund", - "flag": "SH" - }, - "SLL": { - "name": "Sierra Leone Leone", - "flag": "SL" - }, - "SOS": { - "name": "Somalischer Schilling", - "flag": "SO" - }, - "SRD": { - "name": "Surinamischer Dollar", - "flag": "SR" - }, - "STN": { - "name": "Sao Tomean Dobra", - "flag": "ST" - }, - "SVC": { - "name": "Salvadorianischer Kolumbus", - "flag": "SV" - }, - "SZL": { - "name": "Swazi-Lilangeni", - "flag": "SZ" - }, - "THB": { - "name": "Thail\u00e4ndischer Baht", - "flag": "TH" - }, - "TJS": { - "name": "Tadschikischer Somoni", - "flag": "TJ" - }, - "TMT": { - "name": "Turkmenistanischer Manat", - "flag": "TM" - }, - "TND": { - "name": "Tunesischer Dinar", - "flag": "TN" - }, - "TOP": { - "name": "Tongaische Pa\u02bbAnga", - "flag": "TO" - }, - "TRY": { - "name": "T\u00fcrkische Lire", - "flag": "TR" - }, - "TTD": { - "name": "Trinidad Und Tobago-Dollar", - "flag": "TT" - }, - "TWD": { - "name": "Neuer Taiwan-Dollar", - "flag": "TW" - }, - "TZS": { - "name": "Tansania-Schilling", - "flag": "TZ" - }, - "UAH": { - "name": "Ukrainische Griwna", - "flag": "UA" - }, - "UGX": { - "name": "Uganda-Schilling", - "flag": "UG" - }, - "USD": { - "name": "Us-Dollar", - "flag": "US" - }, - "UYU": { - "name": "Uruguayischer Peso", - "flag": "UY" - }, - "UZS": { - "name": "Usbekistan Som", - "flag": "UZ" - }, - "VES": { - "name": "Venezolanischer Bolivar Soberano", - "flag": "VE" - }, - "VND": { - "name": "Vietnamesischer Dong", - "flag": "VN" - }, - "VRL": { - "name": "Vreneli 10F.", - "flag": "CH" - }, - "VRN": { - "name": "Vreneli 20F", - "flag": "CH" - }, - "XAG": { - "name": "Silber (Eine Feinunze)", - "flag": "XAG" - }, - "XAGK": { - "name": "Silber (Kg)", - "flag": "XAG" - }, - "XAU": { - "name": "Gold (Eine Feinunze)", - "flag": "XAU" - }, - "XAUK": { - "name": "Gold (Kg)", - "flag": "XAU" - }, - "XCD": { - "name": "Ostkaribischer Dollar", - "flag": "AI" - }, - "XOF": { - "name": "Cfa Franc Bceao", - "flag": "SN" - }, - "XPD": { - "name": "Palladium (Eine Feinunze)", - "flag": "XPD" - }, - "XPDK": { - "name": "Palladium (Kg)", - "flag": "XPD" - }, - "XPF": { - "name": "Cfp-Franc", - "flag": "PF" - }, - "XPT": { - "name": "Platin (Eine Feinunze)", - "flag": "XPT" - }, - "XPTK": { - "name": "Platin (Kg)", - "flag": "XPT" - }, - "YER": { - "name": "Jemenitischer Rial", - "flag": "YE" - }, - "ZAR": { - "name": "S\u00fcdafrikanischer Rand", - "flag": "ZA" - }, - "ZMW": { - "name": "Sambischer Kwacha", - "flag": "ZM" - }, - "ZWD": { - "name": "Simbabwe-Dollar", - "flag": "ZW" - }, - "DASH": { - "name": "Dash Kryptow\u00e4hrung", - "flag": "DASH" - }, - "BTC": { - "name": "Bitcoin", - "flag": "BTC" - }, - "DSH": { - "name": "Dash Kryptow\u00e4hrung", - "flag": "DASH" - }, - "LTC": { - "name": "Litecoin", - "flag": "LTC" - }, - "ETH": { - "name": "\u00c4ther", - "flag": "ETH" - }, - "BCH": { - "name": "Bitcoin-Bargeld", - "flag": "BTC" - }, - "XRP": { - "name": "Xrp Kryptow\u00e4hrung", - "flag": "XRP" - } -}
--- a/Simoleon/Resources/en-GB.lproj/CurrencyMetadata.json Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,714 +0,0 @@ -{ - "AED": { - "name": "United Arab Emirates Dirham", - "flag": "AE" - }, - "AFN": { - "name": "Afghan Afghani", - "flag": "AF" - }, - "ALL": { - "name": "Albanian Lek", - "flag": "AL" - }, - "AMD": { - "name": "Armenian Dram", - "flag": "AM" - }, - "ANG": { - "name": "Netherlands Antillean Guilder", - "flag": "CW" - }, - "AOA": { - "name": "Angolan Kwanza", - "flag": "AO" - }, - "ARE": { - "name": "Areg", - "flag": "AR" - }, - "ARS": { - "name": "Argentine Peso", - "flag": "AR" - }, - "AUD": { - "name": "Australian Dollar", - "flag": "AU" - }, - "AUN": { - "name": "Australian Nugget", - "flag": "AU" - }, - "AWG": { - "name": "Aruban Florin", - "flag": "AW" - }, - "BAM": { - "name": "Bosnia And Herzegovina Convertible Mark", - "flag": "BA" - }, - "BBD": { - "name": "Barbados Dollar", - "flag": "BB" - }, - "BDT": { - "name": "Bangladeshi Taka", - "flag": "BD" - }, - "BGN": { - "name": "Bulgarian Lev", - "flag": "BG" - }, - "BHD": { - "name": "Bahraini Dinar", - "flag": "BH" - }, - "BIF": { - "name": "Burundian Franc", - "flag": "BI" - }, - "BMD": { - "name": "Bermudian Dollar", - "flag": "BM" - }, - "BND": { - "name": "Brunei Dollar", - "flag": "BN" - }, - "BOB": { - "name": "Boliviano", - "flag": "BO" - }, - "BRI": { - "name": "Britannia", - "flag": "BR" - }, - "BRL": { - "name": "Brazilian Real", - "flag": "BR" - }, - "BSD": { - "name": "Bahamian Dollar", - "flag": "BS" - }, - "BTN": { - "name": "Bhutanese Ngultrum", - "flag": "BT" - }, - "BWP": { - "name": "Botswana Pula", - "flag": "BW" - }, - "BYN": { - "name": "Belarusian Ruble", - "flag": "BY" - }, - "BZD": { - "name": "Belize Dollar", - "flag": "BZ" - }, - "CAD": { - "name": "Canadian Dollar", - "flag": "CA" - }, - "CDF": { - "name": "Congolese Franc", - "flag": "CD" - }, - "CHF": { - "name": "Swiss Franc", - "flag": "CH" - }, - "CLF": { - "name": "Chilean Unit Of Account", - "flag": "CL" - }, - "CLP": { - "name": "Chilean Peso", - "flag": "CL" - }, - "CNH": { - "name": "Chinese Yuan", - "flag": "CN" - }, - "CNY": { - "name": "Chinese Yuan", - "flag": "CN" - }, - "COP": { - "name": "Colombian Peso", - "flag": "CO" - }, - "CRC": { - "name": "Costa Rican Colon", - "flag": "CR" - }, - "CUP": { - "name": "Cuban Peso", - "flag": "CU" - }, - "CVE": { - "name": "Cape Verde Escudo", - "flag": "CV" - }, - "CYP": { - "name": "Cypriot Pound", - "flag": "CY" - }, - "CZK": { - "name": "Czech Koruna", - "flag": "CZ" - }, - "DJF": { - "name": "Djiboutian Franc", - "flag": "DJ" - }, - "DKK": { - "name": "Danish Krone", - "flag": "DK" - }, - "DOE": { - "name": "Double Eagle", - "flag": "DO" - }, - "DOP": { - "name": "Dominican Peso", - "flag": "DO" - }, - "DZD": { - "name": "Algerian Dinar", - "flag": "DZ" - }, - "EGP": { - "name": "Egyptian Pound", - "flag": "EG" - }, - "ETB": { - "name": "Ethiopian Birr", - "flag": "ET" - }, - "EUR": { - "name": "Euro", - "flag": "EU" - }, - "FJD": { - "name": "Fiji Dollar", - "flag": "FJ" - }, - "FRN": { - "name": "French Napoleon", - "flag": "FR" - }, - "GBP": { - "name": "Pound Sterling", - "flag": "GB" - }, - "GEL": { - "name": "Georgian Lari", - "flag": "GE" - }, - "GHS": { - "name": "Ghanaian Cedi", - "flag": "GH" - }, - "GMD": { - "name": "Gambian Dalasi", - "flag": "GM" - }, - "GNF": { - "name": "Guinean Franc", - "flag": "GN" - }, - "GTQ": { - "name": "Guatemalan Quetzal", - "flag": "GT" - }, - "GYD": { - "name": "Guyanese Dollar", - "flag": "GY" - }, - "HKD": { - "name": "Hong Kong Dollar", - "flag": "HK" - }, - "HNL": { - "name": "Honduran Lempira", - "flag": "HN" - }, - "HRK": { - "name": "Croatian Kuna", - "flag": "HR" - }, - "HTG": { - "name": "Haitian Gourde", - "flag": "HT" - }, - "HUF": { - "name": "Hungarian Forint", - "flag": "HU" - }, - "IDR": { - "name": "Indonesian Rupiah", - "flag": "ID" - }, - "ILS": { - "name": "Israeli New Shekel", - "flag": "IL" - }, - "INR": { - "name": "Indian Rupee", - "flag": "IN" - }, - "IQD": { - "name": "Iraqi Dinar", - "flag": "IQ" - }, - "IRR": { - "name": "Iranian Rial", - "flag": "IR" - }, - "ISK": { - "name": "Icelandic Kr\u00f3na", - "flag": "IS" - }, - "JMD": { - "name": "Jamaican Dollar", - "flag": "JM" - }, - "JOD": { - "name": "Jordanian Dinar", - "flag": "JO" - }, - "JPY": { - "name": "Japanese Yen", - "flag": "JP" - }, - "KES": { - "name": "Kenyan Shilling", - "flag": "KE" - }, - "KHR": { - "name": "Cambodian Riel", - "flag": "KH" - }, - "KMF": { - "name": "Comoro Franc", - "flag": "KM" - }, - "KRU": { - "name": "South African Krugerrand", - "flag": "KR" - }, - "KRW": { - "name": "South Korean Won", - "flag": "KR" - }, - "KWD": { - "name": "Kuwaiti Dinar", - "flag": "KW" - }, - "KYD": { - "name": "Cayman Islands Dollar", - "flag": "KY" - }, - "KZT": { - "name": "Kazakhstani Tenge", - "flag": "KZ" - }, - "LAK": { - "name": "Lao Kip", - "flag": "LA" - }, - "LBP": { - "name": "Lebanese Pound", - "flag": "LB" - }, - "LFX": { - "name": "Khazanah Sukuk", - "flag": "MY" - }, - "LKR": { - "name": "Sri Lankan Rupee", - "flag": "LK" - }, - "LRD": { - "name": "Liberian Dollar", - "flag": "LR" - }, - "LSL": { - "name": "Lesotho Loti", - "flag": "LS" - }, - "LTL": { - "name": "Lithuanian Litas", - "flag": "LT" - }, - "LYD": { - "name": "Libyan Dinar", - "flag": "LY" - }, - "M5P": { - "name": "Mexican 50 Peso", - "flag": "MX" - }, - "MAD": { - "name": "Moroccan Dirham", - "flag": "MA" - }, - "MAL": { - "name": "Maple Leaf", - "flag": "MA" - }, - "MDL": { - "name": "Moldovan Leu", - "flag": "MD" - }, - "MGA": { - "name": "Malagasy Ariary", - "flag": "MG" - }, - "MKD": { - "name": "Macedonian Denar", - "flag": "MK" - }, - "MMK": { - "name": "Myanma Kyat", - "flag": "MM" - }, - "MOP": { - "name": "Macanese Pataca", - "flag": "MO" - }, - "MRU": { - "name": "Mauritanian Ouguiya", - "flag": "MR" - }, - "MTL": { - "name": "Maltese Lira", - "flag": "MT" - }, - "MUR": { - "name": "Mauritian Rupee", - "flag": "MU" - }, - "MVR": { - "name": "Maldivian Rufiyaa", - "flag": "MV" - }, - "MWK": { - "name": "Malawian Kwacha", - "flag": "MW" - }, - "MXN": { - "name": "Mexican Peso", - "flag": "MX" - }, - "MYR": { - "name": "Malaysian Ringgit", - "flag": "MY" - }, - "MZN": { - "name": "Mozambican Metical", - "flag": "MZ" - }, - "NAD": { - "name": "Namibian Dollar", - "flag": "NA" - }, - "NBL": { - "name": "Isle Of Man Noble", - "flag": "IM" - }, - "NGN": { - "name": "Nigerian Naira", - "flag": "NG" - }, - "NIO": { - "name": "Nicaraguan C\u00f3rdoba", - "flag": "NI" - }, - "NOK": { - "name": "Norwegian Krone", - "flag": "NO" - }, - "NPR": { - "name": "Nepalese Rupee", - "flag": "NP" - }, - "NSO": { - "name": "New Sovereign", - "flag": "GB" - }, - "NZD": { - "name": "New Zealand Dollar", - "flag": "NZ" - }, - "OMR": { - "name": "Omani Rial", - "flag": "OM" - }, - "OSO": { - "name": "Old Sovereign", - "flag": "GB" - }, - "PAB": { - "name": "Panamanian Balboa", - "flag": "PA" - }, - "PEN": { - "name": "Peruvian Nuevo Sol", - "flag": "PE" - }, - "PGK": { - "name": "Papua New Guinean Kina", - "flag": "PG" - }, - "PHP": { - "name": "Philippine Peso", - "flag": "PH" - }, - "PKR": { - "name": "Pakistani Rupee", - "flag": "PK" - }, - "PLN": { - "name": "Polish Z\u0142oty", - "flag": "PL" - }, - "PYG": { - "name": "Paraguayan Guaran\u00ed", - "flag": "PY" - }, - "QAR": { - "name": "Qatari Riyal", - "flag": "QA" - }, - "RON": { - "name": "Romanian New Leu", - "flag": "RO" - }, - "RSD": { - "name": "Serbian Dinar", - "flag": "RS" - }, - "RUB": { - "name": "Russian Rouble", - "flag": "RU" - }, - "RWF": { - "name": "Rwandan Franc", - "flag": "RW" - }, - "SAR": { - "name": "Saudi Riyal", - "flag": "SA" - }, - "SBD": { - "name": "Solomon Islands Dollar", - "flag": "SB" - }, - "SCR": { - "name": "Seychelles Rupee", - "flag": "SC" - }, - "SDG": { - "name": "Sudanese Pound", - "flag": "SD" - }, - "SEK": { - "name": "Swedish Krona", - "flag": "SE" - }, - "SGD": { - "name": "Singapore Dollar", - "flag": "SG" - }, - "SHP": { - "name": "Saint Helena Pound", - "flag": "SH" - }, - "SLL": { - "name": "Sierra Leonean Leone", - "flag": "SL" - }, - "SOS": { - "name": "Somali Shilling", - "flag": "SO" - }, - "SRD": { - "name": "Surinamese Dollar", - "flag": "SR" - }, - "STN": { - "name": "Sao Tomean Dobra", - "flag": "ST" - }, - "SVC": { - "name": "Salvadoran Col\u00f3n", - "flag": "SV" - }, - "SZL": { - "name": "Swazi Lilangeni", - "flag": "SZ" - }, - "THB": { - "name": "Thai Baht", - "flag": "TH" - }, - "TJS": { - "name": "Tajikistani Somoni", - "flag": "TJ" - }, - "TMT": { - "name": "Turkmenistani Manat", - "flag": "TM" - }, - "TND": { - "name": "Tunisian Dinar", - "flag": "TN" - }, - "TOP": { - "name": "Tongan Pa\u02bbAnga", - "flag": "TO" - }, - "TRY": { - "name": "Turkish Lira", - "flag": "TR" - }, - "TTD": { - "name": "Trinidad And Tobago Dollar", - "flag": "TT" - }, - "TWD": { - "name": "New Taiwan Dollar", - "flag": "TW" - }, - "TZS": { - "name": "Tanzanian Shilling", - "flag": "TZ" - }, - "UAH": { - "name": "Ukrainian Hryvnia", - "flag": "UA" - }, - "UGX": { - "name": "Ugandan Shilling", - "flag": "UG" - }, - "USD": { - "name": "United States Dollar", - "flag": "US" - }, - "UYU": { - "name": "Uruguayan Peso", - "flag": "UY" - }, - "UZS": { - "name": "Uzbekistan Som", - "flag": "UZ" - }, - "VES": { - "name": "Venezuelan Bolivar Soberano", - "flag": "VE" - }, - "VND": { - "name": "Vietnamese Dong", - "flag": "VN" - }, - "VRL": { - "name": "Vreneli 10F.", - "flag": "CH" - }, - "VRN": { - "name": "Vreneli 20F", - "flag": "CH" - }, - "XAG": { - "name": "Silver (One Troy Ounce)", - "flag": "XAG" - }, - "XAGK": { - "name": "Silver (Kg)", - "flag": "XAG" - }, - "XAU": { - "name": "Gold (One Troy Ounce)", - "flag": "XAU" - }, - "XAUK": { - "name": "Gold (Kg)", - "flag": "XAU" - }, - "XCD": { - "name": "East Caribbean Dollar", - "flag": "AI" - }, - "XOF": { - "name": "Cfa Franc Bceao", - "flag": "SN" - }, - "XPD": { - "name": "Palladium (One Troy Ounce)", - "flag": "XPD" - }, - "XPDK": { - "name": "Palladium (Kg)", - "flag": "XPD" - }, - "XPF": { - "name": "Cfp Franc", - "flag": "PF" - }, - "XPT": { - "name": "Platinum (One Troy Ounce)", - "flag": "XPT" - }, - "XPTK": { - "name": "Platinum (Kg)", - "flag": "XPT" - }, - "YER": { - "name": "Yemeni Rial", - "flag": "YE" - }, - "ZAR": { - "name": "South African Rand", - "flag": "ZA" - }, - "ZMW": { - "name": "Zambian Kwacha", - "flag": "ZM" - }, - "ZWD": { - "name": "Zimbabwe Dollar", - "flag": "ZW" - }, - "DASH": { - "name": "Dash Cryptocurrency", - "flag": "DASH" - }, - "BTC": { - "name": "Bitcoin", - "flag": "BTC" - }, - "DSH": { - "name": "Dash Cryptocurrency", - "flag": "DASH" - }, - "LTC": { - "name": "Litecoin", - "flag": "LTC" - }, - "ETH": { - "name": "Ethereum", - "flag": "ETH" - }, - "BCH": { - "name": "Bitcoin Cash", - "flag": "BTC" - }, - "XRP": { - "name": "Xrp Cryptocurrency", - "flag": "XRP" - } -}
--- a/Simoleon/Resources/en.lproj/CurrencyMetadata.json Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,714 +0,0 @@ -{ - "AED": { - "name": "United Arab Emirates Dirham", - "flag": "AE" - }, - "AFN": { - "name": "Afghan Afghani", - "flag": "AF" - }, - "ALL": { - "name": "Albanian Lek", - "flag": "AL" - }, - "AMD": { - "name": "Armenian Dram", - "flag": "AM" - }, - "ANG": { - "name": "Netherlands Antillean Guilder", - "flag": "CW" - }, - "AOA": { - "name": "Angolan Kwanza", - "flag": "AO" - }, - "ARE": { - "name": "Areg", - "flag": "AR" - }, - "ARS": { - "name": "Argentine Peso", - "flag": "AR" - }, - "AUD": { - "name": "Australian Dollar", - "flag": "AU" - }, - "AUN": { - "name": "Australian Nugget", - "flag": "AU" - }, - "AWG": { - "name": "Aruban Florin", - "flag": "AW" - }, - "BAM": { - "name": "Bosnia And Herzegovina Convertible Mark", - "flag": "BA" - }, - "BBD": { - "name": "Barbados Dollar", - "flag": "BB" - }, - "BDT": { - "name": "Bangladeshi Taka", - "flag": "BD" - }, - "BGN": { - "name": "Bulgarian Lev", - "flag": "BG" - }, - "BHD": { - "name": "Bahraini Dinar", - "flag": "BH" - }, - "BIF": { - "name": "Burundian Franc", - "flag": "BI" - }, - "BMD": { - "name": "Bermudian Dollar", - "flag": "BM" - }, - "BND": { - "name": "Brunei Dollar", - "flag": "BN" - }, - "BOB": { - "name": "Boliviano", - "flag": "BO" - }, - "BRI": { - "name": "Britannia", - "flag": "BR" - }, - "BRL": { - "name": "Brazilian Real", - "flag": "BR" - }, - "BSD": { - "name": "Bahamian Dollar", - "flag": "BS" - }, - "BTN": { - "name": "Bhutanese Ngultrum", - "flag": "BT" - }, - "BWP": { - "name": "Botswana Pula", - "flag": "BW" - }, - "BYN": { - "name": "Belarusian Ruble", - "flag": "BY" - }, - "BZD": { - "name": "Belize Dollar", - "flag": "BZ" - }, - "CAD": { - "name": "Canadian Dollar", - "flag": "CA" - }, - "CDF": { - "name": "Congolese Franc", - "flag": "CD" - }, - "CHF": { - "name": "Swiss Franc", - "flag": "CH" - }, - "CLF": { - "name": "Chilean Unit Of Account", - "flag": "CL" - }, - "CLP": { - "name": "Chilean Peso", - "flag": "CL" - }, - "CNH": { - "name": "Chinese Yuan", - "flag": "CN" - }, - "CNY": { - "name": "Chinese Yuan", - "flag": "CN" - }, - "COP": { - "name": "Colombian Peso", - "flag": "CO" - }, - "CRC": { - "name": "Costa Rican Colon", - "flag": "CR" - }, - "CUP": { - "name": "Cuban Peso", - "flag": "CU" - }, - "CVE": { - "name": "Cape Verde Escudo", - "flag": "CV" - }, - "CYP": { - "name": "Cypriot Pound", - "flag": "CY" - }, - "CZK": { - "name": "Czech Koruna", - "flag": "CZ" - }, - "DJF": { - "name": "Djiboutian Franc", - "flag": "DJ" - }, - "DKK": { - "name": "Danish Krone", - "flag": "DK" - }, - "DOE": { - "name": "Double Eagle", - "flag": "DO" - }, - "DOP": { - "name": "Dominican Peso", - "flag": "DO" - }, - "DZD": { - "name": "Algerian Dinar", - "flag": "DZ" - }, - "EGP": { - "name": "Egyptian Pound", - "flag": "EG" - }, - "ETB": { - "name": "Ethiopian Birr", - "flag": "ET" - }, - "EUR": { - "name": "Euro", - "flag": "EU" - }, - "FJD": { - "name": "Fiji Dollar", - "flag": "FJ" - }, - "FRN": { - "name": "French Napoleon", - "flag": "FR" - }, - "GBP": { - "name": "Pound Sterling", - "flag": "GB" - }, - "GEL": { - "name": "Georgian Lari", - "flag": "GE" - }, - "GHS": { - "name": "Ghanaian Cedi", - "flag": "GH" - }, - "GMD": { - "name": "Gambian Dalasi", - "flag": "GM" - }, - "GNF": { - "name": "Guinean Franc", - "flag": "GN" - }, - "GTQ": { - "name": "Guatemalan Quetzal", - "flag": "GT" - }, - "GYD": { - "name": "Guyanese Dollar", - "flag": "GY" - }, - "HKD": { - "name": "Hong Kong Dollar", - "flag": "HK" - }, - "HNL": { - "name": "Honduran Lempira", - "flag": "HN" - }, - "HRK": { - "name": "Croatian Kuna", - "flag": "HR" - }, - "HTG": { - "name": "Haitian Gourde", - "flag": "HT" - }, - "HUF": { - "name": "Hungarian Forint", - "flag": "HU" - }, - "IDR": { - "name": "Indonesian Rupiah", - "flag": "ID" - }, - "ILS": { - "name": "Israeli New Shekel", - "flag": "IL" - }, - "INR": { - "name": "Indian Rupee", - "flag": "IN" - }, - "IQD": { - "name": "Iraqi Dinar", - "flag": "IQ" - }, - "IRR": { - "name": "Iranian Rial", - "flag": "IR" - }, - "ISK": { - "name": "Icelandic Kr\u00f3na", - "flag": "IS" - }, - "JMD": { - "name": "Jamaican Dollar", - "flag": "JM" - }, - "JOD": { - "name": "Jordanian Dinar", - "flag": "JO" - }, - "JPY": { - "name": "Japanese Yen", - "flag": "JP" - }, - "KES": { - "name": "Kenyan Shilling", - "flag": "KE" - }, - "KHR": { - "name": "Cambodian Riel", - "flag": "KH" - }, - "KMF": { - "name": "Comoro Franc", - "flag": "KM" - }, - "KRU": { - "name": "South African Krugerrand", - "flag": "KR" - }, - "KRW": { - "name": "South Korean Won", - "flag": "KR" - }, - "KWD": { - "name": "Kuwaiti Dinar", - "flag": "KW" - }, - "KYD": { - "name": "Cayman Islands Dollar", - "flag": "KY" - }, - "KZT": { - "name": "Kazakhstani Tenge", - "flag": "KZ" - }, - "LAK": { - "name": "Lao Kip", - "flag": "LA" - }, - "LBP": { - "name": "Lebanese Pound", - "flag": "LB" - }, - "LFX": { - "name": "Khazanah Sukuk", - "flag": "MY" - }, - "LKR": { - "name": "Sri Lankan Rupee", - "flag": "LK" - }, - "LRD": { - "name": "Liberian Dollar", - "flag": "LR" - }, - "LSL": { - "name": "Lesotho Loti", - "flag": "LS" - }, - "LTL": { - "name": "Lithuanian Litas", - "flag": "LT" - }, - "LYD": { - "name": "Libyan Dinar", - "flag": "LY" - }, - "M5P": { - "name": "Mexican 50 Peso", - "flag": "MX" - }, - "MAD": { - "name": "Moroccan Dirham", - "flag": "MA" - }, - "MAL": { - "name": "Maple Leaf", - "flag": "MA" - }, - "MDL": { - "name": "Moldovan Leu", - "flag": "MD" - }, - "MGA": { - "name": "Malagasy Ariary", - "flag": "MG" - }, - "MKD": { - "name": "Macedonian Denar", - "flag": "MK" - }, - "MMK": { - "name": "Myanma Kyat", - "flag": "MM" - }, - "MOP": { - "name": "Macanese Pataca", - "flag": "MO" - }, - "MRU": { - "name": "Mauritanian Ouguiya", - "flag": "MR" - }, - "MTL": { - "name": "Maltese Lira", - "flag": "MT" - }, - "MUR": { - "name": "Mauritian Rupee", - "flag": "MU" - }, - "MVR": { - "name": "Maldivian Rufiyaa", - "flag": "MV" - }, - "MWK": { - "name": "Malawian Kwacha", - "flag": "MW" - }, - "MXN": { - "name": "Mexican Peso", - "flag": "MX" - }, - "MYR": { - "name": "Malaysian Ringgit", - "flag": "MY" - }, - "MZN": { - "name": "Mozambican Metical", - "flag": "MZ" - }, - "NAD": { - "name": "Namibian Dollar", - "flag": "NA" - }, - "NBL": { - "name": "Isle Of Man Noble", - "flag": "IM" - }, - "NGN": { - "name": "Nigerian Naira", - "flag": "NG" - }, - "NIO": { - "name": "Nicaraguan C\u00f3rdoba", - "flag": "NI" - }, - "NOK": { - "name": "Norwegian Krone", - "flag": "NO" - }, - "NPR": { - "name": "Nepalese Rupee", - "flag": "NP" - }, - "NSO": { - "name": "New Sovereign", - "flag": "GB" - }, - "NZD": { - "name": "New Zealand Dollar", - "flag": "NZ" - }, - "OMR": { - "name": "Omani Rial", - "flag": "OM" - }, - "OSO": { - "name": "Old Sovereign", - "flag": "GB" - }, - "PAB": { - "name": "Panamanian Balboa", - "flag": "PA" - }, - "PEN": { - "name": "Peruvian Nuevo Sol", - "flag": "PE" - }, - "PGK": { - "name": "Papua New Guinean Kina", - "flag": "PG" - }, - "PHP": { - "name": "Philippine Peso", - "flag": "PH" - }, - "PKR": { - "name": "Pakistani Rupee", - "flag": "PK" - }, - "PLN": { - "name": "Polish Z\u0142oty", - "flag": "PL" - }, - "PYG": { - "name": "Paraguayan Guaran\u00ed", - "flag": "PY" - }, - "QAR": { - "name": "Qatari Riyal", - "flag": "QA" - }, - "RON": { - "name": "Romanian New Leu", - "flag": "RO" - }, - "RSD": { - "name": "Serbian Dinar", - "flag": "RS" - }, - "RUB": { - "name": "Russian Rouble", - "flag": "RU" - }, - "RWF": { - "name": "Rwandan Franc", - "flag": "RW" - }, - "SAR": { - "name": "Saudi Riyal", - "flag": "SA" - }, - "SBD": { - "name": "Solomon Islands Dollar", - "flag": "SB" - }, - "SCR": { - "name": "Seychelles Rupee", - "flag": "SC" - }, - "SDG": { - "name": "Sudanese Pound", - "flag": "SD" - }, - "SEK": { - "name": "Swedish Krona", - "flag": "SE" - }, - "SGD": { - "name": "Singapore Dollar", - "flag": "SG" - }, - "SHP": { - "name": "Saint Helena Pound", - "flag": "SH" - }, - "SLL": { - "name": "Sierra Leonean Leone", - "flag": "SL" - }, - "SOS": { - "name": "Somali Shilling", - "flag": "SO" - }, - "SRD": { - "name": "Surinamese Dollar", - "flag": "SR" - }, - "STN": { - "name": "Sao Tomean Dobra", - "flag": "ST" - }, - "SVC": { - "name": "Salvadoran Col\u00f3n", - "flag": "SV" - }, - "SZL": { - "name": "Swazi Lilangeni", - "flag": "SZ" - }, - "THB": { - "name": "Thai Baht", - "flag": "TH" - }, - "TJS": { - "name": "Tajikistani Somoni", - "flag": "TJ" - }, - "TMT": { - "name": "Turkmenistani Manat", - "flag": "TM" - }, - "TND": { - "name": "Tunisian Dinar", - "flag": "TN" - }, - "TOP": { - "name": "Tongan Pa\u02bbAnga", - "flag": "TO" - }, - "TRY": { - "name": "Turkish Lira", - "flag": "TR" - }, - "TTD": { - "name": "Trinidad And Tobago Dollar", - "flag": "TT" - }, - "TWD": { - "name": "New Taiwan Dollar", - "flag": "TW" - }, - "TZS": { - "name": "Tanzanian Shilling", - "flag": "TZ" - }, - "UAH": { - "name": "Ukrainian Hryvnia", - "flag": "UA" - }, - "UGX": { - "name": "Ugandan Shilling", - "flag": "UG" - }, - "USD": { - "name": "United States Dollar", - "flag": "US" - }, - "UYU": { - "name": "Uruguayan Peso", - "flag": "UY" - }, - "UZS": { - "name": "Uzbekistan Som", - "flag": "UZ" - }, - "VES": { - "name": "Venezuelan Bolivar Soberano", - "flag": "VE" - }, - "VND": { - "name": "Vietnamese Dong", - "flag": "VN" - }, - "VRL": { - "name": "Vreneli 10F.", - "flag": "CH" - }, - "VRN": { - "name": "Vreneli 20F", - "flag": "CH" - }, - "XAG": { - "name": "Silver (One Troy Ounce)", - "flag": "XAG" - }, - "XAGK": { - "name": "Silver (Kg)", - "flag": "XAG" - }, - "XAU": { - "name": "Gold (One Troy Ounce)", - "flag": "XAU" - }, - "XAUK": { - "name": "Gold (Kg)", - "flag": "XAU" - }, - "XCD": { - "name": "East Caribbean Dollar", - "flag": "AI" - }, - "XOF": { - "name": "Cfa Franc Bceao", - "flag": "SN" - }, - "XPD": { - "name": "Palladium (One Troy Ounce)", - "flag": "XPD" - }, - "XPDK": { - "name": "Palladium (Kg)", - "flag": "XPD" - }, - "XPF": { - "name": "Cfp Franc", - "flag": "PF" - }, - "XPT": { - "name": "Platinum (One Troy Ounce)", - "flag": "XPT" - }, - "XPTK": { - "name": "Platinum (Kg)", - "flag": "XPT" - }, - "YER": { - "name": "Yemeni Rial", - "flag": "YE" - }, - "ZAR": { - "name": "South African Rand", - "flag": "ZA" - }, - "ZMW": { - "name": "Zambian Kwacha", - "flag": "ZM" - }, - "ZWD": { - "name": "Zimbabwe Dollar", - "flag": "ZW" - }, - "DASH": { - "name": "Dash Cryptocurrency", - "flag": "DASH" - }, - "BTC": { - "name": "Bitcoin", - "flag": "BTC" - }, - "DSH": { - "name": "Dash Cryptocurrency", - "flag": "DASH" - }, - "LTC": { - "name": "Litecoin", - "flag": "LTC" - }, - "ETH": { - "name": "Ethereum", - "flag": "ETH" - }, - "BCH": { - "name": "Bitcoin Cash", - "flag": "BTC" - }, - "XRP": { - "name": "Xrp Cryptocurrency", - "flag": "XRP" - } -}
--- a/Simoleon/Resources/es.lproj/CurrencyMetadata.json Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,714 +0,0 @@ -{ - "AED": { - "name": "D\u00edrham de los Emiratos \u00c1rabes Unidos", - "flag": "AE" - }, - "AFN": { - "name": "Afgani Afgano", - "flag": "AF" - }, - "ALL": { - "name": "Lek Alban\u00e9s", - "flag": "AL" - }, - "AMD": { - "name": "Dram Armenio", - "flag": "AM" - }, - "ANG": { - "name": "Flor\u00edn de las Antillas Neerlandesas", - "flag": "CW" - }, - "AOA": { - "name": "Angole\u00f1o Primero", - "flag": "AO" - }, - "ARE": { - "name": "Areg", - "flag": "AR" - }, - "ARS": { - "name": "Peso Argentino", - "flag": "AR" - }, - "AUD": { - "name": "D\u00f3lar Australiano", - "flag": "AU" - }, - "AUN": { - "name": "Pepita Australiana", - "flag": "AU" - }, - "AWG": { - "name": "Flor\u00edn de Aruba", - "flag": "AW" - }, - "BAM": { - "name": "Marco Convertible de Bosnia y Herzegovina", - "flag": "BA" - }, - "BBD": { - "name": "D\u00f3lar de Barbados", - "flag": "BB" - }, - "BDT": { - "name": "Bangladesh Taka", - "flag": "BD" - }, - "BGN": { - "name": "Lev B\u00falgaro", - "flag": "BG" - }, - "BHD": { - "name": "Dinar Bahrein\u00ed", - "flag": "BH" - }, - "BIF": { - "name": "Franco Burund\u00e9s", - "flag": "BI" - }, - "BMD": { - "name": "D\u00f3lar de las Bermudas", - "flag": "BM" - }, - "BND": { - "name": "D\u00f3lares de Brunei", - "flag": "BN" - }, - "BOB": { - "name": "Boliviano", - "flag": "BO" - }, - "BRI": { - "name": "Breta\u00f1a", - "flag": "BR" - }, - "BRL": { - "name": "Real Brasile\u00f1o", - "flag": "BR" - }, - "BSD": { - "name": "D\u00f3lar de las Bahamas", - "flag": "BS" - }, - "BTN": { - "name": "Ngultrum Butan\u00e9s", - "flag": "BT" - }, - "BWP": { - "name": "Botswana Pula", - "flag": "BW" - }, - "BYN": { - "name": "Rublo Bielorruso", - "flag": "BY" - }, - "BZD": { - "name": "D\u00f3lar Belice\u00f1o", - "flag": "BZ" - }, - "CAD": { - "name": "Dolar Canadiense", - "flag": "CA" - }, - "CDF": { - "name": "Franco Congole\u00f1o", - "flag": "CD" - }, - "CHF": { - "name": "Franco Suizo", - "flag": "CH" - }, - "CLF": { - "name": "Unidad de Cuenta Chilena", - "flag": "CL" - }, - "CLP": { - "name": "Chilean Peso", - "flag": "CL" - }, - "CNH": { - "name": "Yuan Chino", - "flag": "CN" - }, - "CNY": { - "name": "Yuan Chino", - "flag": "CN" - }, - "COP": { - "name": "Colombian Peso", - "flag": "CO" - }, - "CRC": { - "name": "Col\u00f3n Costarricense", - "flag": "CR" - }, - "CUP": { - "name": "Cuban Peso", - "flag": "CU" - }, - "CVE": { - "name": "Escudo de Cabo Verde", - "flag": "CV" - }, - "CYP": { - "name": "Libra Chipriota", - "flag": "CY" - }, - "CZK": { - "name": "Corona Checa", - "flag": "CZ" - }, - "DJF": { - "name": "Franco de Yibuti", - "flag": "DJ" - }, - "DKK": { - "name": "Corona Danesa", - "flag": "DK" - }, - "DOE": { - "name": "\u00c1guila Bic\u00e9fala", - "flag": "DO" - }, - "DOP": { - "name": "Peso Dominicano", - "flag": "DO" - }, - "DZD": { - "name": "Algerian Comida", - "flag": "DZ" - }, - "EGP": { - "name": "Libra Egipcia", - "flag": "EG" - }, - "ETB": { - "name": "Birr Et\u00edope", - "flag": "ET" - }, - "EUR": { - "name": "Euro", - "flag": "EU" - }, - "FJD": { - "name": "D\u00f3lar de Fiji", - "flag": "FJ" - }, - "FRN": { - "name": "Napole\u00f3n Franc\u00e9s", - "flag": "FR" - }, - "GBP": { - "name": "Libra Esterlina", - "flag": "GB" - }, - "GEL": { - "name": "Carrera Georgiana", - "flag": "GE" - }, - "GHS": { - "name": "Cedi de Ghana", - "flag": "GH" - }, - "GMD": { - "name": "Dalasi de Gambia", - "flag": "GM" - }, - "GNF": { - "name": "Franco Guineano", - "flag": "GN" - }, - "GTQ": { - "name": "Quetzal Guatemalteco", - "flag": "GT" - }, - "GYD": { - "name": "D\u00f3lar de Guyana", - "flag": "GY" - }, - "HKD": { - "name": "Dolar de Hong Kong", - "flag": "HK" - }, - "HNL": { - "name": "Lempira Hondure\u00f1a", - "flag": "HN" - }, - "HRK": { - "name": "Kuna Croata", - "flag": "HR" - }, - "HTG": { - "name": "Calabaza Haitiana", - "flag": "HT" - }, - "HUF": { - "name": "Flor\u00edn H\u00fangaro", - "flag": "HU" - }, - "IDR": { - "name": "Rupia Indonesia", - "flag": "ID" - }, - "ILS": { - "name": "Nuevo Shekel Israel\u00ed", - "flag": "IL" - }, - "INR": { - "name": "Rupia India", - "flag": "IN" - }, - "IQD": { - "name": "Dinar Iraqu\u00ed", - "flag": "IQ" - }, - "IRR": { - "name": "Rial Iran\u00ed", - "flag": "IR" - }, - "ISK": { - "name": "Corona Islandesa", - "flag": "IS" - }, - "JMD": { - "name": "D\u00f3lar Jamaiquino", - "flag": "JM" - }, - "JOD": { - "name": "Dinar Jordano", - "flag": "JO" - }, - "JPY": { - "name": "Yen Japon\u00e9s", - "flag": "JP" - }, - "KES": { - "name": "Chel\u00edn Keniano", - "flag": "KE" - }, - "KHR": { - "name": "Riel Camboyano", - "flag": "KH" - }, - "KMF": { - "name": "Franco de las Comoras", - "flag": "KM" - }, - "KRU": { - "name": "Krugerrand Sudafricano", - "flag": "KR" - }, - "KRW": { - "name": "Won Surcoreano", - "flag": "KR" - }, - "KWD": { - "name": "Dinar Kuwait\u00ed", - "flag": "KW" - }, - "KYD": { - "name": "D\u00f3lar de las Islas Caim\u00e1n", - "flag": "KY" - }, - "KZT": { - "name": "Tenge Kazajo", - "flag": "KZ" - }, - "LAK": { - "name": "Lao Kip", - "flag": "LA" - }, - "LBP": { - "name": "Libra Libanesa", - "flag": "LB" - }, - "LFX": { - "name": "Tesoros de Sukuk", - "flag": "MY" - }, - "LKR": { - "name": "Rupia de Sri Lanka", - "flag": "LK" - }, - "LRD": { - "name": "D\u00f3lar Liberiano", - "flag": "LR" - }, - "LSL": { - "name": "Loti de Lesoto", - "flag": "LS" - }, - "LTL": { - "name": "Litas Lituana", - "flag": "LT" - }, - "LYD": { - "name": "Dinar Libio", - "flag": "LY" - }, - "M5P": { - "name": "50 Pesos Mexicanos", - "flag": "MX" - }, - "MAD": { - "name": "Dirham Marroqu\u00ed", - "flag": "MA" - }, - "MAL": { - "name": "Hoja de Arce", - "flag": "MA" - }, - "MDL": { - "name": "Leu Moldavo", - "flag": "MD" - }, - "MGA": { - "name": "Ariary Malgache", - "flag": "MG" - }, - "MKD": { - "name": "Denar Macedonio", - "flag": "MK" - }, - "MMK": { - "name": "Kyat de Myanmar", - "flag": "MM" - }, - "MOP": { - "name": "Pataca de Macao", - "flag": "MO" - }, - "MRU": { - "name": "Ouguiya Mauritano", - "flag": "MR" - }, - "MTL": { - "name": "Lira Maltesa", - "flag": "MT" - }, - "MUR": { - "name": "Rupia de Mauricio", - "flag": "MU" - }, - "MVR": { - "name": "Rufiyaa de Maldivas", - "flag": "MV" - }, - "MWK": { - "name": "Kwacha Malau\u00ed", - "flag": "MW" - }, - "MXN": { - "name": "Peso Mexicano", - "flag": "MX" - }, - "MYR": { - "name": "Ringgit Malayo", - "flag": "MY" - }, - "MZN": { - "name": "Metical Mozambique\u00f1o", - "flag": "MZ" - }, - "NAD": { - "name": "D\u00f3lar de Namibia", - "flag": "NA" - }, - "NBL": { - "name": "Isla de Man Noble", - "flag": "IM" - }, - "NGN": { - "name": "Naira Nigeriana", - "flag": "NG" - }, - "NIO": { - "name": "Nicaraguan C\u00f3rdoba", - "flag": "NI" - }, - "NOK": { - "name": "Corona Noruega", - "flag": "NO" - }, - "NPR": { - "name": "Rupia Nepal\u00ed", - "flag": "NP" - }, - "NSO": { - "name": "Nuevo Soberano", - "flag": "GB" - }, - "NZD": { - "name": "Dolar de Nueva Zelanda", - "flag": "NZ" - }, - "OMR": { - "name": "Rial Oman\u00ed", - "flag": "OM" - }, - "OSO": { - "name": "Viejo Soberano", - "flag": "GB" - }, - "PAB": { - "name": "Balboa Paname\u00f1o", - "flag": "PA" - }, - "PEN": { - "name": "Peruvian Nuevo Sol", - "flag": "PE" - }, - "PGK": { - "name": "Papua Nueva Guinea China", - "flag": "PG" - }, - "PHP": { - "name": "Peso Filipino", - "flag": "PH" - }, - "PKR": { - "name": "Rupia Pakistan\u00ed", - "flag": "PK" - }, - "PLN": { - "name": "Zloty Polaco", - "flag": "PL" - }, - "PYG": { - "name": "Paraguayan Guaran\u00ed", - "flag": "PY" - }, - "QAR": { - "name": "Riyal de Qatar", - "flag": "QA" - }, - "RON": { - "name": "Nuevo Leu Rumano", - "flag": "RO" - }, - "RSD": { - "name": "Dinar Serbio", - "flag": "RS" - }, - "RUB": { - "name": "Rublo Ruso", - "flag": "RU" - }, - "RWF": { - "name": "Franco Ruand\u00e9s", - "flag": "RW" - }, - "SAR": { - "name": "Riyal Saud\u00ed", - "flag": "SA" - }, - "SBD": { - "name": "D\u00f3lar de las Islas Salom\u00f3n", - "flag": "SB" - }, - "SCR": { - "name": "Rupia de Seychelles", - "flag": "SC" - }, - "SDG": { - "name": "Libra Sudanesa", - "flag": "SD" - }, - "SEK": { - "name": "Corona Sueca", - "flag": "SE" - }, - "SGD": { - "name": "Dolar de Singapur", - "flag": "SG" - }, - "SHP": { - "name": "Libra de Santa Elena", - "flag": "SH" - }, - "SLL": { - "name": "Sierra Leona Leona", - "flag": "SL" - }, - "SOS": { - "name": "Chel\u00edn Somal\u00ed", - "flag": "SO" - }, - "SRD": { - "name": "D\u00f3lar Surinam\u00e9s", - "flag": "SR" - }, - "STN": { - "name": "Dobra de Santo Tom\u00e9", - "flag": "ST" - }, - "SVC": { - "name": "Salvadoran Col\u00f3n", - "flag": "SV" - }, - "SZL": { - "name": "Swazi Lilangeni", - "flag": "SZ" - }, - "THB": { - "name": "Baht Tailand\u00e9s", - "flag": "TH" - }, - "TJS": { - "name": "Tayikist\u00e1n Somoni", - "flag": "TJ" - }, - "TMT": { - "name": "Manat de Turkmenist\u00e1n", - "flag": "TM" - }, - "TND": { - "name": "Tunisian Dinar", - "flag": "TN" - }, - "TOP": { - "name": "Tonga Pa\u02bbAnga", - "flag": "TO" - }, - "TRY": { - "name": "Lira Turca", - "flag": "TR" - }, - "TTD": { - "name": "D\u00f3lar de Trinidad y Tobago", - "flag": "TT" - }, - "TWD": { - "name": "Nuevo D\u00f3lar Taiwan\u00e9s", - "flag": "TW" - }, - "TZS": { - "name": "Chel\u00edn de Tanzania", - "flag": "TZ" - }, - "UAH": { - "name": "Grivna Ucraniana", - "flag": "UA" - }, - "UGX": { - "name": "Chel\u00edn Ugand\u00e9s", - "flag": "UG" - }, - "USD": { - "name": "D\u00f3lar de los Estados Unidos", - "flag": "US" - }, - "UYU": { - "name": "Uruguayan Peso", - "flag": "UY" - }, - "UZS": { - "name": "Uzbekist\u00e1n Som", - "flag": "UZ" - }, - "VES": { - "name": "Venezuelan Bolivar Soberano", - "flag": "VE" - }, - "VND": { - "name": "Dong Vietnamita", - "flag": "VN" - }, - "VRL": { - "name": "Vreneli 10F.", - "flag": "CH" - }, - "VRN": { - "name": "Vreneli 20F", - "flag": "CH" - }, - "XAG": { - "name": "Plata (Una Onza Troy)", - "flag": "XAG" - }, - "XAGK": { - "name": "Plata (Kilogramo)", - "flag": "XAG" - }, - "XAU": { - "name": "Oro (Una Onza Troy)", - "flag": "XAU" - }, - "XAUK": { - "name": "Oro (Kilogramo)", - "flag": "XAU" - }, - "XCD": { - "name": "D\u00f3lar Del Caribe Oriental", - "flag": "AI" - }, - "XOF": { - "name": "Cfa Franc Bceao", - "flag": "SN" - }, - "XPD": { - "name": "Paladio (Una Onza Troy)", - "flag": "XPD" - }, - "XPDK": { - "name": "Paladio (Kilogramo)", - "flag": "XPD" - }, - "XPF": { - "name": "Franco Cfp", - "flag": "PF" - }, - "XPT": { - "name": "Platino (Una Onza Troy)", - "flag": "XPT" - }, - "XPTK": { - "name": "Platino (Kilogramo)", - "flag": "XPT" - }, - "YER": { - "name": "Rial Yemen\u00ed", - "flag": "YE" - }, - "ZAR": { - "name": "Rand Sudafricano", - "flag": "ZA" - }, - "ZMW": { - "name": "Kwacha de Zambia", - "flag": "ZM" - }, - "ZWD": { - "name": "D\u00f3lar de Zimbabwe", - "flag": "ZW" - }, - "DASH": { - "name": "Criptomoneda Dash", - "flag": "DASH" - }, - "BTC": { - "name": "Bitcoin", - "flag": "BTC" - }, - "DSH": { - "name": "Criptomoneda Dash", - "flag": "DASH" - }, - "LTC": { - "name": "Litecoin", - "flag": "LTC" - }, - "ETH": { - "name": "Ethereum", - "flag": "ETH" - }, - "BCH": { - "name": "Bitcoin Efectivo", - "flag": "BTC" - }, - "XRP": { - "name": "Criptomoneda Xrp", - "flag": "XRP" - } -}
--- a/Simoleon/Resources/fr.lproj/CurrencyMetadata.json Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,714 +0,0 @@ -{ - "AED": { - "name": "Dirham Des \u00c9mirats Arabes Unis", - "flag": "AE" - }, - "AFN": { - "name": "Afghan Afghan", - "flag": "AF" - }, - "ALL": { - "name": "Lek Albanais", - "flag": "AL" - }, - "AMD": { - "name": "Dram Arm\u00e9nien", - "flag": "AM" - }, - "ANG": { - "name": "Florin Des Antilles N\u00e9erlandaises", - "flag": "CW" - }, - "AOA": { - "name": "Angolais D'Abord", - "flag": "AO" - }, - "ARE": { - "name": "Areg", - "flag": "AR" - }, - "ARS": { - "name": "Argentine Peso", - "flag": "AR" - }, - "AUD": { - "name": "Dollar Australien", - "flag": "AU" - }, - "AUN": { - "name": "P\u00e9pite Australienne", - "flag": "AU" - }, - "AWG": { - "name": "Florin D'Aruba", - "flag": "AW" - }, - "BAM": { - "name": "Mark Convertible De Bosnie-Herz\u00e9govine", - "flag": "BA" - }, - "BBD": { - "name": "Dollar De La Barbade", - "flag": "BB" - }, - "BDT": { - "name": "Bangladesh Taka", - "flag": "BD" - }, - "BGN": { - "name": "Lev Bulgare", - "flag": "BG" - }, - "BHD": { - "name": "Dinar Bahre\u00efni", - "flag": "BH" - }, - "BIF": { - "name": "Franc Burundais", - "flag": "BI" - }, - "BMD": { - "name": "Dollar Bermudien", - "flag": "BM" - }, - "BND": { - "name": "Dollars Du Brun\u00e9i", - "flag": "BN" - }, - "BOB": { - "name": "Bolivien", - "flag": "BO" - }, - "BRI": { - "name": "Grande-Bretagne", - "flag": "BR" - }, - "BRL": { - "name": "Real Br\u00e9silien", - "flag": "BR" - }, - "BSD": { - "name": "Dollar Des Bahamas", - "flag": "BS" - }, - "BTN": { - "name": "Ngultrum Bhoutanais", - "flag": "BT" - }, - "BWP": { - "name": "Pula Botswanais", - "flag": "BW" - }, - "BYN": { - "name": "Rouble Bi\u00e9lorusse", - "flag": "BY" - }, - "BZD": { - "name": "Dollar B\u00e9lizien", - "flag": "BZ" - }, - "CAD": { - "name": "Dollar Canadien", - "flag": "CA" - }, - "CDF": { - "name": "Franc Congolais", - "flag": "CD" - }, - "CHF": { - "name": "Franc Suisse", - "flag": "CH" - }, - "CLF": { - "name": "Unit\u00e9 De Compte Chilienne", - "flag": "CL" - }, - "CLP": { - "name": "Peso Chilien", - "flag": "CL" - }, - "CNH": { - "name": "Le Yuan Chinois", - "flag": "CN" - }, - "CNY": { - "name": "Le Yuan Chinois", - "flag": "CN" - }, - "COP": { - "name": "Peso Colombien", - "flag": "CO" - }, - "CRC": { - "name": "Colon Costaricain", - "flag": "CR" - }, - "CUP": { - "name": "Peso Cubain", - "flag": "CU" - }, - "CVE": { - "name": "Bouclier Du Cap Vert", - "flag": "CV" - }, - "CYP": { - "name": "Livre Chypriote", - "flag": "CY" - }, - "CZK": { - "name": "Couronne Tch\u00e8que", - "flag": "CZ" - }, - "DJF": { - "name": "Franc Djiboutien", - "flag": "DJ" - }, - "DKK": { - "name": "Couronne Danoise", - "flag": "DK" - }, - "DOE": { - "name": "Double Aigle", - "flag": "DO" - }, - "DOP": { - "name": "Peso Dominicain", - "flag": "DO" - }, - "DZD": { - "name": "Dinar Alg\u00e9rien", - "flag": "DZ" - }, - "EGP": { - "name": "Livre \u00c9gyptienne", - "flag": "EG" - }, - "ETB": { - "name": "Birr \u00c9thiopien", - "flag": "ET" - }, - "EUR": { - "name": "Euro", - "flag": "EU" - }, - "FJD": { - "name": "Dollar De Fidji", - "flag": "FJ" - }, - "FRN": { - "name": "Napol\u00e9on Fran\u00e7ais", - "flag": "FR" - }, - "GBP": { - "name": "Livre Sterling", - "flag": "GB" - }, - "GEL": { - "name": "Course G\u00e9orgienne", - "flag": "GE" - }, - "GHS": { - "name": "C\u00e9di Ghan\u00e9en", - "flag": "GH" - }, - "GMD": { - "name": "Dalasi Gambien", - "flag": "GM" - }, - "GNF": { - "name": "Franc Guin\u00e9en", - "flag": "GN" - }, - "GTQ": { - "name": "Quetzal Guat\u00e9malt\u00e8que", - "flag": "GT" - }, - "GYD": { - "name": "Dollar Guyanais", - "flag": "GY" - }, - "HKD": { - "name": "Dollar De Hong Kong", - "flag": "HK" - }, - "HNL": { - "name": "Lempira Hondurien", - "flag": "HN" - }, - "HRK": { - "name": "Kuna Croate", - "flag": "HR" - }, - "HTG": { - "name": "Haitian Gourde", - "flag": "HT" - }, - "HUF": { - "name": "Forint Hongrois", - "flag": "HU" - }, - "IDR": { - "name": "Roupie Indon\u00e9sienne", - "flag": "ID" - }, - "ILS": { - "name": "Nouveau Shekel Isra\u00e9lien", - "flag": "IL" - }, - "INR": { - "name": "Roupie Indienne", - "flag": "IN" - }, - "IQD": { - "name": "Dinar Irakien", - "flag": "IQ" - }, - "IRR": { - "name": "Rial Iranien", - "flag": "IR" - }, - "ISK": { - "name": "Couronne Islandaise", - "flag": "IS" - }, - "JMD": { - "name": "Dollar Jama\u00efcain", - "flag": "JM" - }, - "JOD": { - "name": "Dinar Jordanien", - "flag": "JO" - }, - "JPY": { - "name": "Yen Japonais", - "flag": "JP" - }, - "KES": { - "name": "Shilling Kenyan", - "flag": "KE" - }, - "KHR": { - "name": "Riel Cambodgien", - "flag": "KH" - }, - "KMF": { - "name": "Franc Comorien", - "flag": "KM" - }, - "KRU": { - "name": "Krugerrand Sud-Africain", - "flag": "KR" - }, - "KRW": { - "name": "Won Sud-Cor\u00e9en", - "flag": "KR" - }, - "KWD": { - "name": "Dinar Kowe\u00eftien", - "flag": "KW" - }, - "KYD": { - "name": "Dollar Des \u00celes Ca\u00efmans", - "flag": "KY" - }, - "KZT": { - "name": "Tenge Kazakh", - "flag": "KZ" - }, - "LAK": { - "name": "Lao Kip", - "flag": "LA" - }, - "LBP": { - "name": "Livre Libanaise", - "flag": "LB" - }, - "LFX": { - "name": "Tr\u00e9sors De Sukuk", - "flag": "MY" - }, - "LKR": { - "name": "Roupie Sri Lankaise", - "flag": "LK" - }, - "LRD": { - "name": "Dollar Lib\u00e9rien", - "flag": "LR" - }, - "LSL": { - "name": "Lesotho Loti", - "flag": "LS" - }, - "LTL": { - "name": "Litas Lituanien", - "flag": "LT" - }, - "LYD": { - "name": "Dinar Libyen", - "flag": "LY" - }, - "M5P": { - "name": "50 Pesos Mexicains", - "flag": "MX" - }, - "MAD": { - "name": "Dirham Marocain", - "flag": "MA" - }, - "MAL": { - "name": "Feuille D'\u00c9rable", - "flag": "MA" - }, - "MDL": { - "name": "Leu Moldave", - "flag": "MD" - }, - "MGA": { - "name": "Ariary Malgache", - "flag": "MG" - }, - "MKD": { - "name": "Denar Mac\u00e9donien", - "flag": "MK" - }, - "MMK": { - "name": "Kyat Birman", - "flag": "MM" - }, - "MOP": { - "name": "Pataca Macanais", - "flag": "MO" - }, - "MRU": { - "name": "Ouguiya Mauritanien", - "flag": "MR" - }, - "MTL": { - "name": "Lire Maltaise", - "flag": "MT" - }, - "MUR": { - "name": "Roupie Mauricienne", - "flag": "MU" - }, - "MVR": { - "name": "Rufiyaa Maldivienne", - "flag": "MV" - }, - "MWK": { - "name": "Kwacha Malawite", - "flag": "MW" - }, - "MXN": { - "name": "Peso Mexicain", - "flag": "MX" - }, - "MYR": { - "name": "Cloche Malaisienne", - "flag": "MY" - }, - "MZN": { - "name": "Metical Mozambicain", - "flag": "MZ" - }, - "NAD": { - "name": "Dollar Namibien", - "flag": "NA" - }, - "NBL": { - "name": "\u00cele De Man Noble", - "flag": "IM" - }, - "NGN": { - "name": "Naira Nig\u00e9rian", - "flag": "NG" - }, - "NIO": { - "name": "Cordoue Nicaraguayenne", - "flag": "NI" - }, - "NOK": { - "name": "Couronne Norv\u00e9gienne", - "flag": "NO" - }, - "NPR": { - "name": "Roupie N\u00e9palaise", - "flag": "NP" - }, - "NSO": { - "name": "Nouveau Souverain", - "flag": "GB" - }, - "NZD": { - "name": "Dollar N\u00e9o-Z\u00e9landais", - "flag": "NZ" - }, - "OMR": { - "name": "Rial Omanais", - "flag": "OM" - }, - "OSO": { - "name": "Vieux Souverain", - "flag": "GB" - }, - "PAB": { - "name": "Balboa Panam\u00e9en", - "flag": "PA" - }, - "PEN": { - "name": "Nouveau Sol P\u00e9ruvien", - "flag": "PE" - }, - "PGK": { - "name": "Papouasie-Nouvelle-Guin\u00e9e Chine", - "flag": "PG" - }, - "PHP": { - "name": "Peso Philippin", - "flag": "PH" - }, - "PKR": { - "name": "Roupie Pakistanaise", - "flag": "PK" - }, - "PLN": { - "name": "Zloty Polonais", - "flag": "PL" - }, - "PYG": { - "name": "Guarani Paraguayen", - "flag": "PY" - }, - "QAR": { - "name": "Riyal Qatari", - "flag": "QA" - }, - "RON": { - "name": "Nouveau Leu Roumain", - "flag": "RO" - }, - "RSD": { - "name": "Dinar Serbe", - "flag": "RS" - }, - "RUB": { - "name": "Rouble Russe", - "flag": "RU" - }, - "RWF": { - "name": "Franc Rwandais", - "flag": "RW" - }, - "SAR": { - "name": "Riyal Saoudien", - "flag": "SA" - }, - "SBD": { - "name": "Dollar Des \u00celes Salomon", - "flag": "SB" - }, - "SCR": { - "name": "Roupie Des Seychelles", - "flag": "SC" - }, - "SDG": { - "name": "Livre Soudanaise", - "flag": "SD" - }, - "SEK": { - "name": "Couronne Su\u00e9doise", - "flag": "SE" - }, - "SGD": { - "name": "Dollar De Singapour", - "flag": "SG" - }, - "SHP": { - "name": "Livre De Sainte-H\u00e9l\u00e8ne", - "flag": "SH" - }, - "SLL": { - "name": "Leone Sierra-L\u00e9onais", - "flag": "SL" - }, - "SOS": { - "name": "Shilling Somalien", - "flag": "SO" - }, - "SRD": { - "name": "Dollar Du Suriname", - "flag": "SR" - }, - "STN": { - "name": "Dobra De S\u00e3o Tom\u00e9", - "flag": "ST" - }, - "SVC": { - "name": "Colomb Salvadorien", - "flag": "SV" - }, - "SZL": { - "name": "Lilangeni Swazi", - "flag": "SZ" - }, - "THB": { - "name": "Baht Tha\u00eflandais", - "flag": "TH" - }, - "TJS": { - "name": "Tadjikistan Somoni", - "flag": "TJ" - }, - "TMT": { - "name": "Manat Turkm\u00e8ne", - "flag": "TM" - }, - "TND": { - "name": "Dinar Tunisien", - "flag": "TN" - }, - "TOP": { - "name": "Tonga Pa'Anga", - "flag": "TO" - }, - "TRY": { - "name": "Lire Turque", - "flag": "TR" - }, - "TTD": { - "name": "Dollar De Trinit\u00e9-Et-Tobago", - "flag": "TT" - }, - "TWD": { - "name": "Nouveau Dollar De Ta\u00efwan", - "flag": "TW" - }, - "TZS": { - "name": "Shilling Tanzanien", - "flag": "TZ" - }, - "UAH": { - "name": "Hryvnia Ukrainienne", - "flag": "UA" - }, - "UGX": { - "name": "Shilling Ougandais", - "flag": "UG" - }, - "USD": { - "name": "Dollar Am\u00e9ricain", - "flag": "US" - }, - "UYU": { - "name": "Peso Uruguayen", - "flag": "UY" - }, - "UZS": { - "name": "Ouzb\u00e9kistan Som", - "flag": "UZ" - }, - "VES": { - "name": "Bolivar Soberano V\u00e9n\u00e9zu\u00e9lien", - "flag": "VE" - }, - "VND": { - "name": "Dong Vietnamien", - "flag": "VN" - }, - "VRL": { - "name": "Vreneli 10F.", - "flag": "CH" - }, - "VRN": { - "name": "Vreneli 20F", - "flag": "CH" - }, - "XAG": { - "name": "Argent (Une Once Troy)", - "flag": "XAG" - }, - "XAGK": { - "name": "Argent (Kg)", - "flag": "XAG" - }, - "XAU": { - "name": "Or (Une Once Troy)", - "flag": "XAU" - }, - "XAUK": { - "name": "Or (Kg)", - "flag": "XAU" - }, - "XCD": { - "name": "Dollar Des Cara\u00efbes Orientales", - "flag": "AI" - }, - "XOF": { - "name": "Cfa Franc Bceao", - "flag": "SN" - }, - "XPD": { - "name": "Palladium (Une Once Troy)", - "flag": "XPD" - }, - "XPDK": { - "name": "Palladium (Kg)", - "flag": "XPD" - }, - "XPF": { - "name": "Franc Cfp", - "flag": "PF" - }, - "XPT": { - "name": "Platine (Une Once Troy)", - "flag": "XPT" - }, - "XPTK": { - "name": "Platine (Kg)", - "flag": "XPT" - }, - "YER": { - "name": "Rial Y\u00e9m\u00e9nite", - "flag": "YE" - }, - "ZAR": { - "name": "Rand Sud-Africain", - "flag": "ZA" - }, - "ZMW": { - "name": "Kwacha Zambien", - "flag": "ZM" - }, - "ZWD": { - "name": "Dollar Zimbabw\u00e9en", - "flag": "ZW" - }, - "DASH": { - "name": "Dash Crypto-Monnaie", - "flag": "DASH" - }, - "BTC": { - "name": "Bitcoin", - "flag": "BTC" - }, - "DSH": { - "name": "Dash Crypto-Monnaie", - "flag": "DASH" - }, - "LTC": { - "name": "Litecoin", - "flag": "LTC" - }, - "ETH": { - "name": "Ethereum", - "flag": "ETH" - }, - "BCH": { - "name": "Bitcoin Cash", - "flag": "BTC" - }, - "XRP": { - "name": "Crypto-Monnaie Xrp", - "flag": "XRP" - } -}
--- a/Simoleon/Resources/it.lproj/CurrencyMetadata.json Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,714 +0,0 @@ -{ - "AED": { - "name": "Dirham Degli Emirati Arabi Uniti", - "flag": "AE" - }, - "AFN": { - "name": "Afgano Afghano", - "flag": "AF" - }, - "ALL": { - "name": "Lek Albanese", - "flag": "AL" - }, - "AMD": { - "name": "Dramma Armeno", - "flag": "AM" - }, - "ANG": { - "name": "Fiorino Delle Antille Olandesi", - "flag": "CW" - }, - "AOA": { - "name": "Prima Angola", - "flag": "AO" - }, - "ARE": { - "name": "Areg", - "flag": "AR" - }, - "ARS": { - "name": "Peso Argentino", - "flag": "AR" - }, - "AUD": { - "name": "Dollaro Australiano", - "flag": "AU" - }, - "AUN": { - "name": "Pepita Australiana", - "flag": "AU" - }, - "AWG": { - "name": "Fiorino Di Aruba", - "flag": "AW" - }, - "BAM": { - "name": "Marco Convertibile Della Bosnia-Erzegovina", - "flag": "BA" - }, - "BBD": { - "name": "Dollaro Delle Barbados", - "flag": "BB" - }, - "BDT": { - "name": "Bangladesh Taka", - "flag": "BD" - }, - "BGN": { - "name": "Lev Bulgaro", - "flag": "BG" - }, - "BHD": { - "name": "Dinaro Del Bahrain", - "flag": "BH" - }, - "BIF": { - "name": "Franco Del Burundi", - "flag": "BI" - }, - "BMD": { - "name": "Dollaro Delle Bermuda", - "flag": "BM" - }, - "BND": { - "name": "Dollari Del Brunei", - "flag": "BN" - }, - "BOB": { - "name": "Boliviano", - "flag": "BO" - }, - "BRI": { - "name": "Gran Bretagna", - "flag": "BR" - }, - "BRL": { - "name": "Real Brasiliano", - "flag": "BR" - }, - "BSD": { - "name": "Dollaro Delle Bahamas", - "flag": "BS" - }, - "BTN": { - "name": "Ngultrum Bhutanese", - "flag": "BT" - }, - "BWP": { - "name": "Botswana Pola", - "flag": "BW" - }, - "BYN": { - "name": "Rublo Bielorusso", - "flag": "BY" - }, - "BZD": { - "name": "Dollaro Del Belize", - "flag": "BZ" - }, - "CAD": { - "name": "Dollaro Canadese", - "flag": "CA" - }, - "CDF": { - "name": "Congolese Franc", - "flag": "CD" - }, - "CHF": { - "name": "Franco Svizzero", - "flag": "CH" - }, - "CLF": { - "name": "Unit\u00e0 Di Conto Cilena", - "flag": "CL" - }, - "CLP": { - "name": "Peso Cileno", - "flag": "CL" - }, - "CNH": { - "name": "Yuan Cinese", - "flag": "CN" - }, - "CNY": { - "name": "Yuan Cinese", - "flag": "CN" - }, - "COP": { - "name": "Peso Colombiano", - "flag": "CO" - }, - "CRC": { - "name": "Colon Costaricano", - "flag": "CR" - }, - "CUP": { - "name": "Peso Cubano", - "flag": "CU" - }, - "CVE": { - "name": "Scudo Di Capo Verde", - "flag": "CV" - }, - "CYP": { - "name": "Sterlina Cipriota", - "flag": "CY" - }, - "CZK": { - "name": "Corona Ceca", - "flag": "CZ" - }, - "DJF": { - "name": "Franco Del Gibuti", - "flag": "DJ" - }, - "DKK": { - "name": "Corona Danese", - "flag": "DK" - }, - "DOE": { - "name": "Doppia Aquila", - "flag": "DO" - }, - "DOP": { - "name": "Peso Dominicano", - "flag": "DO" - }, - "DZD": { - "name": "Dinaro Algerino", - "flag": "DZ" - }, - "EGP": { - "name": "Sterlina Egiziana", - "flag": "EG" - }, - "ETB": { - "name": "Birra Etiope", - "flag": "ET" - }, - "EUR": { - "name": "Euro", - "flag": "EU" - }, - "FJD": { - "name": "Dollaro Delle Fiji", - "flag": "FJ" - }, - "FRN": { - "name": "Napoleone Francese", - "flag": "FR" - }, - "GBP": { - "name": "Lira Sterlina", - "flag": "GB" - }, - "GEL": { - "name": "Corsa Georgiana", - "flag": "GE" - }, - "GHS": { - "name": "Cedi Ghanese", - "flag": "GH" - }, - "GMD": { - "name": "Dalasi Gambiano", - "flag": "GM" - }, - "GNF": { - "name": "Franco Guineano", - "flag": "GN" - }, - "GTQ": { - "name": "Quetzal Guatemalteco", - "flag": "GT" - }, - "GYD": { - "name": "Dollaro Della Guyana", - "flag": "GY" - }, - "HKD": { - "name": "Dollaro Di Hong Kong", - "flag": "HK" - }, - "HNL": { - "name": "Lempira Honduregna", - "flag": "HN" - }, - "HRK": { - "name": "Kuna Croata", - "flag": "HR" - }, - "HTG": { - "name": "Zucca Haitiana", - "flag": "HT" - }, - "HUF": { - "name": "Fiorino Ungherese", - "flag": "HU" - }, - "IDR": { - "name": "Rupia Indonesiana", - "flag": "ID" - }, - "ILS": { - "name": "Nuovo Siclo Israeliano", - "flag": "IL" - }, - "INR": { - "name": "Rupia Indiana", - "flag": "IN" - }, - "IQD": { - "name": "Dinaro Iracheno", - "flag": "IQ" - }, - "IRR": { - "name": "Rial Iraniano", - "flag": "IR" - }, - "ISK": { - "name": "Corona Islandese", - "flag": "IS" - }, - "JMD": { - "name": "Dollaro Giamaicano", - "flag": "JM" - }, - "JOD": { - "name": "Dinaro Giordano", - "flag": "JO" - }, - "JPY": { - "name": "Yen Giapponese", - "flag": "JP" - }, - "KES": { - "name": "Scellino Keniota", - "flag": "KE" - }, - "KHR": { - "name": "Riel Cambogiano", - "flag": "KH" - }, - "KMF": { - "name": "Comore Francia", - "flag": "KM" - }, - "KRU": { - "name": "Krugerrand Sudafricano", - "flag": "KR" - }, - "KRW": { - "name": "Vinto Sudcoreano", - "flag": "KR" - }, - "KWD": { - "name": "Dinaro Kuwaitiano", - "flag": "KW" - }, - "KYD": { - "name": "Dollaro Delle Isole Cayman", - "flag": "KY" - }, - "KZT": { - "name": "Tenge . Kazako", - "flag": "KZ" - }, - "LAK": { - "name": "Lao Kip", - "flag": "LA" - }, - "LBP": { - "name": "Sterlina Libanese", - "flag": "LB" - }, - "LFX": { - "name": "Tesori Di Sukuk", - "flag": "MY" - }, - "LKR": { - "name": "Rupia Dello Sri Lanka", - "flag": "LK" - }, - "LRD": { - "name": "Dollaro Liberiano", - "flag": "LR" - }, - "LSL": { - "name": "Lesoto Loti", - "flag": "LS" - }, - "LTL": { - "name": "Litas Lituano", - "flag": "LT" - }, - "LYD": { - "name": "Dinaro Libico", - "flag": "LY" - }, - "M5P": { - "name": "Messicano 50 Peso", - "flag": "MX" - }, - "MAD": { - "name": "Dirham Marocchino", - "flag": "MA" - }, - "MAL": { - "name": "Foglia Di Acero", - "flag": "MA" - }, - "MDL": { - "name": "Leu Mold Moldavo", - "flag": "MD" - }, - "MGA": { - "name": "Ariary Malgascio", - "flag": "MG" - }, - "MKD": { - "name": "Dinaro Macedone", - "flag": "MK" - }, - "MMK": { - "name": "Myanmar Kyat", - "flag": "MM" - }, - "MOP": { - "name": "Pataca Macanese", - "flag": "MO" - }, - "MRU": { - "name": "Ouguiya Della Mauritania", - "flag": "MR" - }, - "MTL": { - "name": "Lira Maltese", - "flag": "MT" - }, - "MUR": { - "name": "Rupia Mauriziana", - "flag": "MU" - }, - "MVR": { - "name": "Rufiyaa Mal Delle Maldive", - "flag": "MV" - }, - "MWK": { - "name": "Kwacha . Del Malawi", - "flag": "MW" - }, - "MXN": { - "name": "Peso Messicano", - "flag": "MX" - }, - "MYR": { - "name": "Ringgit Malese", - "flag": "MY" - }, - "MZN": { - "name": "Metical Mozambicano", - "flag": "MZ" - }, - "NAD": { - "name": "Dollaro Namibiano", - "flag": "NA" - }, - "NBL": { - "name": "Nobile Dell'Isola Di Man", - "flag": "IM" - }, - "NGN": { - "name": "Naira Nigeriana", - "flag": "NG" - }, - "NIO": { - "name": "Nicaragua Cordoba", - "flag": "NI" - }, - "NOK": { - "name": "Corona Norvegese", - "flag": "NO" - }, - "NPR": { - "name": "Rupia Nepalese", - "flag": "NP" - }, - "NSO": { - "name": "Nuovo Sovrano", - "flag": "GB" - }, - "NZD": { - "name": "Dollaro Neozelandese", - "flag": "NZ" - }, - "OMR": { - "name": "Rial Dell'Oman", - "flag": "OM" - }, - "OSO": { - "name": "Vecchio Sovrano", - "flag": "GB" - }, - "PAB": { - "name": "Balboa Panamense", - "flag": "PA" - }, - "PEN": { - "name": "Nuovo Sole Peruviano", - "flag": "PE" - }, - "PGK": { - "name": "Papua Nuova Guinea Cina", - "flag": "PG" - }, - "PHP": { - "name": "Peso Filippino", - "flag": "PH" - }, - "PKR": { - "name": "Rupia Pakistana", - "flag": "PK" - }, - "PLN": { - "name": "Zloty Polacco", - "flag": "PL" - }, - "PYG": { - "name": "Guaran\u00ed . Paraguaiano", - "flag": "PY" - }, - "QAR": { - "name": "Riyal Del Qatar", - "flag": "QA" - }, - "RON": { - "name": "Nuovo Leu . Rumeno", - "flag": "RO" - }, - "RSD": { - "name": "Dinaro Serbo", - "flag": "RS" - }, - "RUB": { - "name": "Rublo Russo", - "flag": "RU" - }, - "RWF": { - "name": "Franco Ruandese", - "flag": "RW" - }, - "SAR": { - "name": "Riyal Saudita", - "flag": "SA" - }, - "SBD": { - "name": "Dollaro Delle Isole Salomone", - "flag": "SB" - }, - "SCR": { - "name": "Rupia Delle Seychelles", - "flag": "SC" - }, - "SDG": { - "name": "Sterlina Sudanese", - "flag": "SD" - }, - "SEK": { - "name": "Corona Svedese", - "flag": "SE" - }, - "SGD": { - "name": "Dollaro Di Singapore", - "flag": "SG" - }, - "SHP": { - "name": "Sterlina Di Sant'Elena", - "flag": "SH" - }, - "SLL": { - "name": "Leone Della Sierra Leone", - "flag": "SL" - }, - "SOS": { - "name": "Scellino Somalo", - "flag": "SO" - }, - "SRD": { - "name": "Dollaro Del Suriname", - "flag": "SR" - }, - "STN": { - "name": "Sao Tom\u00e9an Dobra", - "flag": "ST" - }, - "SVC": { - "name": "Colombo Salvadoregno", - "flag": "SV" - }, - "SZL": { - "name": "Swazi Lilangeni", - "flag": "SZ" - }, - "THB": { - "name": "Thai Baht", - "flag": "TH" - }, - "TJS": { - "name": "Tagikistan Somoni", - "flag": "TJ" - }, - "TMT": { - "name": "Manatista Turkmeno", - "flag": "TM" - }, - "TND": { - "name": "Dinaro Tunisino", - "flag": "TN" - }, - "TOP": { - "name": "Tonga Pa'Anga", - "flag": "TO" - }, - "TRY": { - "name": "Lira Turca", - "flag": "TR" - }, - "TTD": { - "name": "Dollaro Di Trinidad E Tobago", - "flag": "TT" - }, - "TWD": { - "name": "Nuovo Dollaro Di Taiwan", - "flag": "TW" - }, - "TZS": { - "name": "Scellino Della Tanzania", - "flag": "TZ" - }, - "UAH": { - "name": "Grivnia Ucraina", - "flag": "UA" - }, - "UGX": { - "name": "Scellino Ugandese", - "flag": "UG" - }, - "USD": { - "name": "Dollaro Degli Stati Uniti", - "flag": "US" - }, - "UYU": { - "name": "Peso Uruguaiano", - "flag": "UY" - }, - "UZS": { - "name": "Soma Dell'Uzbekistan", - "flag": "UZ" - }, - "VES": { - "name": "Bolivar Soberano Venezuelano", - "flag": "VE" - }, - "VND": { - "name": "Dong Vietnamita", - "flag": "VN" - }, - "VRL": { - "name": "Vreneli 10F.", - "flag": "CH" - }, - "VRN": { - "name": "Vreneli 20F", - "flag": "CH" - }, - "XAG": { - "name": "Argento (Un'Oncia Troy)", - "flag": "XAG" - }, - "XAGK": { - "name": "Argento (Kg)", - "flag": "XAG" - }, - "XAU": { - "name": "Oro (Un'Oncia Troy)", - "flag": "XAU" - }, - "XAUK": { - "name": "Oro (Kg)", - "flag": "XAU" - }, - "XCD": { - "name": "Dollaro Dei Caraibi Orientali", - "flag": "AI" - }, - "XOF": { - "name": "Cfa Franc Bceao", - "flag": "SN" - }, - "XPD": { - "name": "Palladio (Un'Oncia Troy)", - "flag": "XPD" - }, - "XPDK": { - "name": "Palladio (Kg)", - "flag": "XPD" - }, - "XPF": { - "name": "Cfp Franco", - "flag": "PF" - }, - "XPT": { - "name": "Platino (Un'Oncia Troy)", - "flag": "XPT" - }, - "XPTK": { - "name": "Platino (Kg)", - "flag": "XPT" - }, - "YER": { - "name": "Rial Yemenita", - "flag": "YE" - }, - "ZAR": { - "name": "Rand Sudafricano", - "flag": "ZA" - }, - "ZMW": { - "name": "Kwacha . Dello Zambia", - "flag": "ZM" - }, - "ZWD": { - "name": "Dollaro Dello Zimbabwe", - "flag": "ZW" - }, - "DASH": { - "name": "Dash Criptovaluta", - "flag": "DASH" - }, - "BTC": { - "name": "Bitcoin", - "flag": "BTC" - }, - "DSH": { - "name": "Dash Criptovaluta", - "flag": "DASH" - }, - "LTC": { - "name": "Litecoin", - "flag": "LTC" - }, - "ETH": { - "name": "Ethereum", - "flag": "ETH" - }, - "BCH": { - "name": "Bitcoin Cash", - "flag": "BTC" - }, - "XRP": { - "name": "Criptovaluta Xrp", - "flag": "XRP" - } -}
--- a/Simoleon/Resources/nl.lproj/CurrencyMetadata.json Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,714 +0,0 @@ -{ - "AED": { - "name": "Verenigde Arabische Emiraten Dirham", - "flag": "AE" - }, - "AFN": { - "name": "Afghaanse Afghaan", - "flag": "AF" - }, - "ALL": { - "name": "Albanese Leki", - "flag": "AL" - }, - "AMD": { - "name": "Armeense Dram", - "flag": "AM" - }, - "ANG": { - "name": "Nederlands Antilliaanse Gulden", - "flag": "CW" - }, - "AOA": { - "name": "Angolese Eerst", - "flag": "AO" - }, - "ARE": { - "name": "Arego", - "flag": "AR" - }, - "ARS": { - "name": "Argentijnse Peso", - "flag": "AR" - }, - "AUD": { - "name": "Australische Dollar", - "flag": "AU" - }, - "AUN": { - "name": "Australische Nugget", - "flag": "AU" - }, - "AWG": { - "name": "Arubaanse Florijn", - "flag": "AW" - }, - "BAM": { - "name": "Bosni\u00eb En Herzegovina Convertible Mark", - "flag": "BA" - }, - "BBD": { - "name": "Barbados Dollar", - "flag": "BB" - }, - "BDT": { - "name": "Bangladesh Taka", - "flag": "BD" - }, - "BGN": { - "name": "Bulgaarse Lev", - "flag": "BG" - }, - "BHD": { - "name": "Bahreinse Dinar", - "flag": "BH" - }, - "BIF": { - "name": "Burundese Frank", - "flag": "BI" - }, - "BMD": { - "name": "Bermuda-Dollar", - "flag": "BM" - }, - "BND": { - "name": "Bruneise Dollars", - "flag": "BN" - }, - "BOB": { - "name": "Boliviaanse", - "flag": "BO" - }, - "BRI": { - "name": "Brittanni\u00eb", - "flag": "BR" - }, - "BRL": { - "name": "Braziliaanse Real", - "flag": "BR" - }, - "BSD": { - "name": "Bahamaanse Dollar", - "flag": "BS" - }, - "BTN": { - "name": "Bhutanese Ngultrum", - "flag": "BT" - }, - "BWP": { - "name": "Botswana Pula", - "flag": "BW" - }, - "BYN": { - "name": "Wit-Russische Roebel", - "flag": "BY" - }, - "BZD": { - "name": "Belizaanse Dollar", - "flag": "BZ" - }, - "CAD": { - "name": "Canadese Dollar", - "flag": "CA" - }, - "CDF": { - "name": "Congolese Frank", - "flag": "CD" - }, - "CHF": { - "name": "Zwitserse Frank", - "flag": "CH" - }, - "CLF": { - "name": "Chileense Rekeneenheid", - "flag": "CL" - }, - "CLP": { - "name": "Chileense Peso", - "flag": "CL" - }, - "CNH": { - "name": "Chinese Yuan", - "flag": "CN" - }, - "CNY": { - "name": "Chinese Yuan", - "flag": "CN" - }, - "COP": { - "name": "Colombiaanse Peso", - "flag": "CO" - }, - "CRC": { - "name": "Costa Ricaanse Colon", - "flag": "CR" - }, - "CUP": { - "name": "Cubaanse Peso", - "flag": "CU" - }, - "CVE": { - "name": "Kaapverdisch Schild", - "flag": "CV" - }, - "CYP": { - "name": "Cypriotisch Pond", - "flag": "CY" - }, - "CZK": { - "name": "Tsjechische Kroon", - "flag": "CZ" - }, - "DJF": { - "name": "Djiboutiaanse Frank", - "flag": "DJ" - }, - "DKK": { - "name": "Deense Kroon", - "flag": "DK" - }, - "DOE": { - "name": "Dubbele Adelaar", - "flag": "DO" - }, - "DOP": { - "name": "Dominicaanse Peso", - "flag": "DO" - }, - "DZD": { - "name": "Algerijnse Dinar", - "flag": "DZ" - }, - "EGP": { - "name": "Egyptische Pond", - "flag": "EG" - }, - "ETB": { - "name": "Ethiopische Birr", - "flag": "ET" - }, - "EUR": { - "name": "Euro", - "flag": "EU" - }, - "FJD": { - "name": "Fiji Dollar", - "flag": "FJ" - }, - "FRN": { - "name": "Franse Napoleon", - "flag": "FR" - }, - "GBP": { - "name": "Pond Sterling", - "flag": "GB" - }, - "GEL": { - "name": "Georgische Run", - "flag": "GE" - }, - "GHS": { - "name": "Ghanese Cedi", - "flag": "GH" - }, - "GMD": { - "name": "Gambiaanse Dalasi", - "flag": "GM" - }, - "GNF": { - "name": "Guinese Frank", - "flag": "GN" - }, - "GTQ": { - "name": "Guatemalteekse Quetzal", - "flag": "GT" - }, - "GYD": { - "name": "Guyanese Dollar", - "flag": "GY" - }, - "HKD": { - "name": "Hong Kong Dollar", - "flag": "HK" - }, - "HNL": { - "name": "Hondurese Lempira", - "flag": "HN" - }, - "HRK": { - "name": "Kroatisch Kuna", - "flag": "HR" - }, - "HTG": { - "name": "Ha\u00eftiaanse Kalebas", - "flag": "HT" - }, - "HUF": { - "name": "Hongaarse Forint", - "flag": "HU" - }, - "IDR": { - "name": "Indonesische Roepia", - "flag": "ID" - }, - "ILS": { - "name": "Isra\u00eblische Nieuwe Sikkel", - "flag": "IL" - }, - "INR": { - "name": "Indiase Roepie", - "flag": "IN" - }, - "IQD": { - "name": "Iraakse Dinar", - "flag": "IQ" - }, - "IRR": { - "name": "Iraanse Rial", - "flag": "IR" - }, - "ISK": { - "name": "Ijslandse Kroon", - "flag": "IS" - }, - "JMD": { - "name": "Jamaicaanse Dollar", - "flag": "JM" - }, - "JOD": { - "name": "Jordaanse Dinar", - "flag": "JO" - }, - "JPY": { - "name": "Japanse Yen", - "flag": "JP" - }, - "KES": { - "name": "Keniaanse Shilling", - "flag": "KE" - }, - "KHR": { - "name": "Cambodjaanse Riel", - "flag": "KH" - }, - "KMF": { - "name": "Comoren Frank", - "flag": "KM" - }, - "KRU": { - "name": "Zuid-Afrikaanse Krugerrand", - "flag": "KR" - }, - "KRW": { - "name": "Zuid-Koreaanse Won", - "flag": "KR" - }, - "KWD": { - "name": "Koeweitse Dinar", - "flag": "KW" - }, - "KYD": { - "name": "Kaaimaneilandse Dollar", - "flag": "KY" - }, - "KZT": { - "name": "Kazachstaanse Tenge", - "flag": "KZ" - }, - "LAK": { - "name": "Lao Kip", - "flag": "LA" - }, - "LBP": { - "name": "Libanees Pond", - "flag": "LB" - }, - "LFX": { - "name": "Sukuk-Schatten", - "flag": "MY" - }, - "LKR": { - "name": "Sri Lankaanse Roepie", - "flag": "LK" - }, - "LRD": { - "name": "Liberiaanse Dollar", - "flag": "LR" - }, - "LSL": { - "name": "Lesotho Loti", - "flag": "LS" - }, - "LTL": { - "name": "Litouwse Litas", - "flag": "LT" - }, - "LYD": { - "name": "Libische Dinar", - "flag": "LY" - }, - "M5P": { - "name": "Mexicaans 50 Peso", - "flag": "MX" - }, - "MAD": { - "name": "Marokkaanse Dirham", - "flag": "MA" - }, - "MAL": { - "name": "Esdoorn Blad", - "flag": "MA" - }, - "MDL": { - "name": "Moldavische Leu", - "flag": "MD" - }, - "MGA": { - "name": "Malagassische Ariary", - "flag": "MG" - }, - "MKD": { - "name": "Macedonische Denar", - "flag": "MK" - }, - "MMK": { - "name": "Myanmar Kyat", - "flag": "MM" - }, - "MOP": { - "name": "Macanees Pataca", - "flag": "MO" - }, - "MRU": { - "name": "Mauritaanse Ouguiya", - "flag": "MR" - }, - "MTL": { - "name": "Maltese Lira", - "flag": "MT" - }, - "MUR": { - "name": "Mauritiaanse Roepie", - "flag": "MU" - }, - "MVR": { - "name": "Maldivische Rufiyaa", - "flag": "MV" - }, - "MWK": { - "name": "Malawische Kwacha", - "flag": "MW" - }, - "MXN": { - "name": "Mexicaanse Peso", - "flag": "MX" - }, - "MYR": { - "name": "Maleisische Ringgit", - "flag": "MY" - }, - "MZN": { - "name": "Mozambikaanse Metical", - "flag": "MZ" - }, - "NAD": { - "name": "Namibische Dollar", - "flag": "NA" - }, - "NBL": { - "name": "Isle Of Man Noble", - "flag": "IM" - }, - "NGN": { - "name": "Nigeriaanse Naira", - "flag": "NG" - }, - "NIO": { - "name": "Nicaraguaanse C\u00f3rdoba", - "flag": "NI" - }, - "NOK": { - "name": "Noorse Kroon", - "flag": "NO" - }, - "NPR": { - "name": "Nepalese Roepie", - "flag": "NP" - }, - "NSO": { - "name": "Nieuwe Soeverein", - "flag": "GB" - }, - "NZD": { - "name": "Nieuw-Zeelandse Dollar", - "flag": "NZ" - }, - "OMR": { - "name": "Omaanse Rial", - "flag": "OM" - }, - "OSO": { - "name": "Oude Soeverein", - "flag": "GB" - }, - "PAB": { - "name": "Panamese Balboa", - "flag": "PA" - }, - "PEN": { - "name": "Peruaanse Nieuwe Sol", - "flag": "PE" - }, - "PGK": { - "name": "Papoea-Nieuw-Guinea China", - "flag": "PG" - }, - "PHP": { - "name": "Filippijnse Peso", - "flag": "PH" - }, - "PKR": { - "name": "Pakistaanse Roepie", - "flag": "PK" - }, - "PLN": { - "name": "Poolse Zloty", - "flag": "PL" - }, - "PYG": { - "name": "Paraguayaanse Guaran\u00ed", - "flag": "PY" - }, - "QAR": { - "name": "Qatarese Riyal", - "flag": "QA" - }, - "RON": { - "name": "Roemeens Nieuw Leu", - "flag": "RO" - }, - "RSD": { - "name": "Servische Dinar", - "flag": "RS" - }, - "RUB": { - "name": "Russische Roebel", - "flag": "RU" - }, - "RWF": { - "name": "Rwandese Frank", - "flag": "RW" - }, - "SAR": { - "name": "Saoedische Riyal", - "flag": "SA" - }, - "SBD": { - "name": "Dollar Van De Salomonseilanden", - "flag": "SB" - }, - "SCR": { - "name": "Seychelse Roepie", - "flag": "SC" - }, - "SDG": { - "name": "Soedanees Pond", - "flag": "SD" - }, - "SEK": { - "name": "Zweedse Kroon", - "flag": "SE" - }, - "SGD": { - "name": "Singapore Dollar", - "flag": "SG" - }, - "SHP": { - "name": "Sint-Helena Pond", - "flag": "SH" - }, - "SLL": { - "name": "Sierra Leone Leone", - "flag": "SL" - }, - "SOS": { - "name": "Somalische Shilling", - "flag": "SO" - }, - "SRD": { - "name": "Surinaamse Dollar", - "flag": "SR" - }, - "STN": { - "name": "Sao Tome\u00efsche Dobra", - "flag": "ST" - }, - "SVC": { - "name": "Salvadoraans Columbus", - "flag": "SV" - }, - "SZL": { - "name": "Swazi Lilangeni", - "flag": "SZ" - }, - "THB": { - "name": "Thaise Baht", - "flag": "TH" - }, - "TJS": { - "name": "Tadzjikistaanse Somoni", - "flag": "TJ" - }, - "TMT": { - "name": "Turkmenistaanse Manat", - "flag": "TM" - }, - "TND": { - "name": "Tunesische Dinar", - "flag": "TN" - }, - "TOP": { - "name": "Tongaanse Pa (Anga)", - "flag": "TO" - }, - "TRY": { - "name": "Turkse Lira", - "flag": "TR" - }, - "TTD": { - "name": "Trinidad En Tobago-Dollar", - "flag": "TT" - }, - "TWD": { - "name": "Nieuwe Taiwanese Dollar", - "flag": "TW" - }, - "TZS": { - "name": "Tanzaniaanse Shilling", - "flag": "TZ" - }, - "UAH": { - "name": "Oekra\u00efense Grivna", - "flag": "UA" - }, - "UGX": { - "name": "Oegandese Shilling", - "flag": "UG" - }, - "USD": { - "name": "Verenigde Staten Dollar", - "flag": "US" - }, - "UYU": { - "name": "Uruguayaanse Peso", - "flag": "UY" - }, - "UZS": { - "name": "Oezbekistan Som", - "flag": "UZ" - }, - "VES": { - "name": "Venezolaanse Bolivar Soberano", - "flag": "VE" - }, - "VND": { - "name": "Vietnamese Dong", - "flag": "VN" - }, - "VRL": { - "name": "Vreneli 10F.", - "flag": "CH" - }, - "VRN": { - "name": "Vreneli 20F", - "flag": "CH" - }, - "XAG": { - "name": "Zilver (One Troy Ounce)", - "flag": "XAG" - }, - "XAGK": { - "name": "Zilver (Kg)", - "flag": "XAG" - }, - "XAU": { - "name": "Goud (\u00c9\u00e9n Troy Ounce)", - "flag": "XAU" - }, - "XAUK": { - "name": "Goud (Kg)", - "flag": "XAU" - }, - "XCD": { - "name": "Oost-Caribische Dollar", - "flag": "AI" - }, - "XOF": { - "name": "Cfa Franc Bceao", - "flag": "SN" - }, - "XPD": { - "name": "Palladium (\u00c9\u00e9n Troy Ounce)", - "flag": "XPD" - }, - "XPDK": { - "name": "Palladium (Kg)", - "flag": "XPD" - }, - "XPF": { - "name": "Cfp Franc", - "flag": "PF" - }, - "XPT": { - "name": "Platina (\u00c9\u00e9n Troy Ounce)", - "flag": "XPT" - }, - "XPTK": { - "name": "Platina (Kg)", - "flag": "XPT" - }, - "YER": { - "name": "Jemenitische Rial", - "flag": "YE" - }, - "ZAR": { - "name": "Zuid-Afrikaanse Rand", - "flag": "ZA" - }, - "ZMW": { - "name": "Zambiaanse Kwacha", - "flag": "ZM" - }, - "ZWD": { - "name": "Zimbabwaanse Dollar", - "flag": "ZW" - }, - "DASH": { - "name": "Dash-Cryptovaluta", - "flag": "DASH" - }, - "BTC": { - "name": "Bitcoin", - "flag": "BTC" - }, - "DSH": { - "name": "Dash-Cryptovaluta", - "flag": "DASH" - }, - "LTC": { - "name": "Litecoin", - "flag": "LTC" - }, - "ETH": { - "name": "Ethereum", - "flag": "ETH" - }, - "BCH": { - "name": "Bitcoin Cash", - "flag": "BTC" - }, - "XRP": { - "name": "Xrp-Cryptovaluta", - "flag": "XRP" - } -}
--- a/Simoleon/Resources/pt-PT.lproj/CurrencyMetadata.json Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,714 +0,0 @@ -{ - "AED": { - "name": "Emirados \u00c1rabes Unidos Dirham", - "flag": "AE" - }, - "AFN": { - "name": "Afeg\u00e3o Afeg\u00e3o", - "flag": "AF" - }, - "ALL": { - "name": "Lek Alban\u00eas", - "flag": "AL" - }, - "AMD": { - "name": "Dram Arm\u00eanio", - "flag": "AM" - }, - "ANG": { - "name": "Florim Das Antilhas Holandesas", - "flag": "CW" - }, - "AOA": { - "name": "Angolan First", - "flag": "AO" - }, - "ARE": { - "name": "Areg", - "flag": "AR" - }, - "ARS": { - "name": "Peso Argentino", - "flag": "AR" - }, - "AUD": { - "name": "D\u00f3lar Australiano", - "flag": "AU" - }, - "AUN": { - "name": "Pepita Australiana", - "flag": "AU" - }, - "AWG": { - "name": "Aruban Florin", - "flag": "AW" - }, - "BAM": { - "name": "Marco Convers\u00edvel Da B\u00f3snia E Herzegovina", - "flag": "BA" - }, - "BBD": { - "name": "D\u00f3lar De Barbados", - "flag": "BB" - }, - "BDT": { - "name": "Bangladesh Taka", - "flag": "BD" - }, - "BGN": { - "name": "Lev B\u00falgaro", - "flag": "BG" - }, - "BHD": { - "name": "Dinar Do Bahrein", - "flag": "BH" - }, - "BIF": { - "name": "Franco Do Burundi", - "flag": "BI" - }, - "BMD": { - "name": "D\u00f3lar Bermudense", - "flag": "BM" - }, - "BND": { - "name": "D\u00f3lares Do Brunei", - "flag": "BN" - }, - "BOB": { - "name": "Boliviano", - "flag": "BO" - }, - "BRI": { - "name": "Gr\u00e3-Bretanha", - "flag": "BR" - }, - "BRL": { - "name": "Real Brasileiro", - "flag": "BR" - }, - "BSD": { - "name": "D\u00f3lar Das Bahamas", - "flag": "BS" - }, - "BTN": { - "name": "Ngultrum Do But\u00e3o", - "flag": "BT" - }, - "BWP": { - "name": "Botswana Pula", - "flag": "BW" - }, - "BYN": { - "name": "Rublo Bielorrusso", - "flag": "BY" - }, - "BZD": { - "name": "D\u00f3lar De Belize", - "flag": "BZ" - }, - "CAD": { - "name": "D\u00f3lar Canadense", - "flag": "CA" - }, - "CDF": { - "name": "Franco Congol\u00eas", - "flag": "CD" - }, - "CHF": { - "name": "Franco Su\u00ed\u00e7o", - "flag": "CH" - }, - "CLF": { - "name": "Unidade De Conta Chilena", - "flag": "CL" - }, - "CLP": { - "name": "Peso Chileno", - "flag": "CL" - }, - "CNH": { - "name": "Yuan Chin\u00eas", - "flag": "CN" - }, - "CNY": { - "name": "Yuan Chin\u00eas", - "flag": "CN" - }, - "COP": { - "name": "Peso Colombiano", - "flag": "CO" - }, - "CRC": { - "name": "C\u00f3lon Da Costa Rica", - "flag": "CR" - }, - "CUP": { - "name": "Peso Cubano", - "flag": "CU" - }, - "CVE": { - "name": "Cape Verde Escudo", - "flag": "CV" - }, - "CYP": { - "name": "Libra Cipriota", - "flag": "CY" - }, - "CZK": { - "name": "Coroa Tcheca", - "flag": "CZ" - }, - "DJF": { - "name": "Franco Do Djibuti", - "flag": "DJ" - }, - "DKK": { - "name": "Coroa Dinamarquesa", - "flag": "DK" - }, - "DOE": { - "name": "\u00c1guia Dupla", - "flag": "DO" - }, - "DOP": { - "name": "Peso Dominicano", - "flag": "DO" - }, - "DZD": { - "name": "Dinar Argelino", - "flag": "DZ" - }, - "EGP": { - "name": "Libra Eg\u00edpcia", - "flag": "EG" - }, - "ETB": { - "name": "Birr Et\u00edope", - "flag": "ET" - }, - "EUR": { - "name": "Euro", - "flag": "EU" - }, - "FJD": { - "name": "D\u00f3lar Fijiano", - "flag": "FJ" - }, - "FRN": { - "name": "Napole\u00e3o Franc\u00eas", - "flag": "FR" - }, - "GBP": { - "name": "Libra Esterlina", - "flag": "GB" - }, - "GEL": { - "name": "Georgian Run", - "flag": "GE" - }, - "GHS": { - "name": "Cedi De Gana", - "flag": "GH" - }, - "GMD": { - "name": "G\u00e2mbia Dalasi", - "flag": "GM" - }, - "GNF": { - "name": "Franco Guineense", - "flag": "GN" - }, - "GTQ": { - "name": "Quetzal Da Guatemala", - "flag": "GT" - }, - "GYD": { - "name": "D\u00f3lar Da Guiana", - "flag": "GY" - }, - "HKD": { - "name": "D\u00f3lar De Hong Kong", - "flag": "HK" - }, - "HNL": { - "name": "Lempira Hondurenha", - "flag": "HN" - }, - "HRK": { - "name": "Kuna Croata", - "flag": "HR" - }, - "HTG": { - "name": "Caba\u00e7a Haitiana", - "flag": "HT" - }, - "HUF": { - "name": "Forint H\u00fangaro", - "flag": "HU" - }, - "IDR": { - "name": "R\u00fapia Da Indon\u00e9sia", - "flag": "ID" - }, - "ILS": { - "name": "Novo Shekel Israelense", - "flag": "IL" - }, - "INR": { - "name": "Rupia Indiana", - "flag": "IN" - }, - "IQD": { - "name": "Dinar Iraquiano", - "flag": "IQ" - }, - "IRR": { - "name": "Rial Iraniano", - "flag": "IR" - }, - "ISK": { - "name": "Kr\u00f3na Island\u00eas", - "flag": "IS" - }, - "JMD": { - "name": "D\u00f3lar Jamaicano", - "flag": "JM" - }, - "JOD": { - "name": "Dinar Jordaniano", - "flag": "JO" - }, - "JPY": { - "name": "Yen Japon\u00eas", - "flag": "JP" - }, - "KES": { - "name": "Xelim Queniano", - "flag": "KE" - }, - "KHR": { - "name": "Riel Cambojano", - "flag": "KH" - }, - "KMF": { - "name": "Franco Das Comores", - "flag": "KM" - }, - "KRU": { - "name": "Krugerrand Da \u00c1frica Do Sul", - "flag": "KR" - }, - "KRW": { - "name": "Won Sul-Coreano", - "flag": "KR" - }, - "KWD": { - "name": "Dinar Do Kuwait", - "flag": "KW" - }, - "KYD": { - "name": "D\u00f3lar Das Ilhas Cayman", - "flag": "KY" - }, - "KZT": { - "name": "Tenge Do Cazaquist\u00e3o", - "flag": "KZ" - }, - "LAK": { - "name": "Lao Kip", - "flag": "LA" - }, - "LBP": { - "name": "Libra Libanesa", - "flag": "LB" - }, - "LFX": { - "name": "Tesouros Sukuk", - "flag": "MY" - }, - "LKR": { - "name": "R\u00fapia Do Sri Lanka", - "flag": "LK" - }, - "LRD": { - "name": "D\u00f3lar Da Lib\u00e9ria", - "flag": "LR" - }, - "LSL": { - "name": "Lesotho Loti", - "flag": "LS" - }, - "LTL": { - "name": "Litas Da Litu\u00e2nia", - "flag": "LT" - }, - "LYD": { - "name": "Dinar Da L\u00edbia", - "flag": "LY" - }, - "M5P": { - "name": "50 Pesos Mexicanos", - "flag": "MX" - }, - "MAD": { - "name": "Dirham Marroquino", - "flag": "MA" - }, - "MAL": { - "name": "Folha De Carvalho", - "flag": "MA" - }, - "MDL": { - "name": "Leu Da Mold\u00e1via", - "flag": "MD" - }, - "MGA": { - "name": "Ariary Malgaxe", - "flag": "MG" - }, - "MKD": { - "name": "Denar Da Maced\u00f4nia", - "flag": "MK" - }, - "MMK": { - "name": "Myanmar Kyat", - "flag": "MM" - }, - "MOP": { - "name": "Pataca Macaense", - "flag": "MO" - }, - "MRU": { - "name": "Ouguiya Da Maurit\u00e2nia", - "flag": "MR" - }, - "MTL": { - "name": "Lira Maltesa", - "flag": "MT" - }, - "MUR": { - "name": "R\u00fapia Da Maur\u00edcia", - "flag": "MU" - }, - "MVR": { - "name": "Rufiyaa Das Maldivas", - "flag": "MV" - }, - "MWK": { - "name": "Kwacha Do Malawi", - "flag": "MW" - }, - "MXN": { - "name": "Peso Mexicano", - "flag": "MX" - }, - "MYR": { - "name": "Ringgit Da Mal\u00e1sia", - "flag": "MY" - }, - "MZN": { - "name": "Metical Mo\u00e7ambicano", - "flag": "MZ" - }, - "NAD": { - "name": "D\u00f3lar Namibiano", - "flag": "NA" - }, - "NBL": { - "name": "Ilha De Man Nobre", - "flag": "IM" - }, - "NGN": { - "name": "Naira Nigeriana", - "flag": "NG" - }, - "NIO": { - "name": "C\u00f3rdoba Da Nicar\u00e1gua", - "flag": "NI" - }, - "NOK": { - "name": "Coroa Norueguesa", - "flag": "NO" - }, - "NPR": { - "name": "R\u00fapia Do Nepal", - "flag": "NP" - }, - "NSO": { - "name": "New Sovereign", - "flag": "GB" - }, - "NZD": { - "name": "D\u00f3lar Neozeland\u00eas", - "flag": "NZ" - }, - "OMR": { - "name": "Rial De Om\u00e3", - "flag": "OM" - }, - "OSO": { - "name": "Soberano Antigo", - "flag": "GB" - }, - "PAB": { - "name": "Balboa Panamenho", - "flag": "PA" - }, - "PEN": { - "name": "Novo Sol Peruano", - "flag": "PE" - }, - "PGK": { - "name": "Papua Nova Guin\u00e9 China", - "flag": "PG" - }, - "PHP": { - "name": "Peso Filipino", - "flag": "PH" - }, - "PKR": { - "name": "R\u00fapia Do Paquist\u00e3o", - "flag": "PK" - }, - "PLN": { - "name": "Zloty Polon\u00eas", - "flag": "PL" - }, - "PYG": { - "name": "Guaran\u00ed Paraguaio", - "flag": "PY" - }, - "QAR": { - "name": "Rial Do Catar", - "flag": "QA" - }, - "RON": { - "name": "Novo Leu Romeno", - "flag": "RO" - }, - "RSD": { - "name": "Dinar S\u00e9rvio", - "flag": "RS" - }, - "RUB": { - "name": "Rublo Russo", - "flag": "RU" - }, - "RWF": { - "name": "Franco Ruand\u00eas", - "flag": "RW" - }, - "SAR": { - "name": "Rial Saudita", - "flag": "SA" - }, - "SBD": { - "name": "D\u00f3lar Das Ilhas Salom\u00e3o", - "flag": "SB" - }, - "SCR": { - "name": "R\u00fapia Das Seychelles", - "flag": "SC" - }, - "SDG": { - "name": "Libra Sudanesa", - "flag": "SD" - }, - "SEK": { - "name": "Coroa Sueca", - "flag": "SE" - }, - "SGD": { - "name": "D\u00f3lar De Singapura", - "flag": "SG" - }, - "SHP": { - "name": "Libra Santa Helena", - "flag": "SH" - }, - "SLL": { - "name": "Leoa Serra Leoa", - "flag": "SL" - }, - "SOS": { - "name": "Xelim Da Som\u00e1lia", - "flag": "SO" - }, - "SRD": { - "name": "D\u00f3lar Do Suriname", - "flag": "SR" - }, - "STN": { - "name": "Dobra De S\u00e3o Tom\u00e9", - "flag": "ST" - }, - "SVC": { - "name": "Colombo Salvadorenho", - "flag": "SV" - }, - "SZL": { - "name": "Swazi Lilangeni", - "flag": "SZ" - }, - "THB": { - "name": "Baht Tailand\u00eas", - "flag": "TH" - }, - "TJS": { - "name": "Somoni Do Tajiquist\u00e3o", - "flag": "TJ" - }, - "TMT": { - "name": "Manat Do Turcomenist\u00e3o", - "flag": "TM" - }, - "TND": { - "name": "Dinar Tunisino", - "flag": "TN" - }, - "TOP": { - "name": "Pa\u02bbAnga De Tonga", - "flag": "TO" - }, - "TRY": { - "name": "Lira Turca", - "flag": "TR" - }, - "TTD": { - "name": "D\u00f3lar De Trinidad E Tobago", - "flag": "TT" - }, - "TWD": { - "name": "Novo D\u00f3lar Taiwan\u00eas", - "flag": "TW" - }, - "TZS": { - "name": "Xelim Da Tanz\u00e2nia", - "flag": "TZ" - }, - "UAH": { - "name": "Hryvnia Ucraniana", - "flag": "UA" - }, - "UGX": { - "name": "Xelim De Uganda", - "flag": "UG" - }, - "USD": { - "name": "Dolar Dos Estados Unidos", - "flag": "US" - }, - "UYU": { - "name": "Peso Uruguaio", - "flag": "UY" - }, - "UZS": { - "name": "Som Do Uzbequist\u00e3o", - "flag": "UZ" - }, - "VES": { - "name": "Bol\u00edvar Soberano Venezuelano", - "flag": "VE" - }, - "VND": { - "name": "Dong Vietnamita", - "flag": "VN" - }, - "VRL": { - "name": "Vreneli 10F.", - "flag": "CH" - }, - "VRN": { - "name": "Vreneli 20F", - "flag": "CH" - }, - "XAG": { - "name": "Prata (One Troy On\u00e7a)", - "flag": "XAG" - }, - "XAGK": { - "name": "Prata (Kg)", - "flag": "XAG" - }, - "XAU": { - "name": "Ouro (Uma On\u00e7a De Tr\u00f3ia)", - "flag": "XAU" - }, - "XAUK": { - "name": "Ouro (Kg)", - "flag": "XAU" - }, - "XCD": { - "name": "D\u00f3lar Do Caribe Oriental", - "flag": "AI" - }, - "XOF": { - "name": "Cfa Franc Bceao", - "flag": "SN" - }, - "XPD": { - "name": "Palladium (Uma On\u00e7a Tr\u00f3ia)", - "flag": "XPD" - }, - "XPDK": { - "name": "Pal\u00e1dio (Kg)", - "flag": "XPD" - }, - "XPF": { - "name": "Franco Cfp", - "flag": "PF" - }, - "XPT": { - "name": "Platina (One Troy Once)", - "flag": "XPT" - }, - "XPTK": { - "name": "Platina (Kg)", - "flag": "XPT" - }, - "YER": { - "name": "Rial Iemenita", - "flag": "YE" - }, - "ZAR": { - "name": "Rand Sul-Africano", - "flag": "ZA" - }, - "ZMW": { - "name": "Kwacha Zambiano", - "flag": "ZM" - }, - "ZWD": { - "name": "D\u00f3lar Zimbabuano", - "flag": "ZW" - }, - "DASH": { - "name": "Dash Criptomoeda", - "flag": "DASH" - }, - "BTC": { - "name": "Bitcoin", - "flag": "BTC" - }, - "DSH": { - "name": "Dash Criptomoeda", - "flag": "DASH" - }, - "LTC": { - "name": "Litecoin", - "flag": "LTC" - }, - "ETH": { - "name": "Ethereum", - "flag": "ETH" - }, - "BCH": { - "name": "Bitcoin Cash", - "flag": "BTC" - }, - "XRP": { - "name": "Xrp Criptomoeda", - "flag": "XRP" - } -}
--- a/Simoleon/Resources/ru.lproj/CurrencyMetadata.json Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,714 +0,0 @@ -{ - "AED": { - "name": "\u0414\u0438\u0440\u0445\u0430\u043c \u041e\u0430\u044d", - "flag": "AE" - }, - "AFN": { - "name": "\u0410\u0444\u0433\u0430\u043d\u0441\u043a\u0438\u0439 \u0410\u0444\u0433\u0430\u043d\u0438", - "flag": "AF" - }, - "ALL": { - "name": "\u0410\u043b\u0431\u0430\u043d\u0441\u043a\u0438\u0439 \u041b\u0435\u043a", - "flag": "AL" - }, - "AMD": { - "name": "\u0410\u0440\u043c\u044f\u043d\u0441\u043a\u0438\u0439 \u0414\u0440\u0430\u043c", - "flag": "AM" - }, - "ANG": { - "name": "\u041d\u0438\u0434\u0435\u0440\u043b\u0430\u043d\u0434\u0441\u043a\u0438\u0439 \u0410\u043d\u0442\u0438\u043b\u044c\u0441\u043a\u0438\u0439 \u0413\u0443\u043b\u044c\u0434\u0435\u043d", - "flag": "CW" - }, - "AOA": { - "name": "\u0410\u043d\u0433\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u041f\u0435\u0440\u0432\u044b\u0439", - "flag": "AO" - }, - "ARE": { - "name": "\u0410\u0440\u0435\u0433", - "flag": "AR" - }, - "ARS": { - "name": "\u0410\u0440\u0433\u0435\u043d\u0442\u0438\u043d\u0441\u043a\u043e\u0435 \u041f\u0435\u0441\u043e", - "flag": "AR" - }, - "AUD": { - "name": "\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u0414\u043e\u043b\u043b\u0430\u0440", - "flag": "AU" - }, - "AUN": { - "name": "\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u0421\u0430\u043c\u043e\u0440\u043e\u0434\u043e\u043a", - "flag": "AU" - }, - "AWG": { - "name": "\u0410\u0440\u0443\u0431\u0430\u043d\u0441\u043a\u0438\u0439 \u0424\u043b\u043e\u0440\u0438\u043d", - "flag": "AW" - }, - "BAM": { - "name": "\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u041c\u0430\u0440\u043a\u0430 \u0411\u043e\u0441\u043d\u0438\u0438 \u0418 \u0413\u0435\u0440\u0446\u0435\u0433\u043e\u0432\u0438\u043d\u044b", - "flag": "BA" - }, - "BBD": { - "name": "\u0411\u0430\u0440\u0431\u0430\u0434\u043e\u0441\u0441\u043a\u0438\u0439 \u0414\u043e\u043b\u043b\u0430\u0440", - "flag": "BB" - }, - "BDT": { - "name": "\u0411\u0430\u043d\u0433\u043b\u0430\u0434\u0435\u0448\u0441\u043a\u0430\u044f \u0422\u0430\u043a\u0430", - "flag": "BD" - }, - "BGN": { - "name": "\u0411\u043e\u043b\u0433\u0430\u0440\u0441\u043a\u0438\u0439 \u041b\u0435\u0432", - "flag": "BG" - }, - "BHD": { - "name": "\u0411\u0430\u0445\u0440\u0435\u0439\u043d\u0441\u043a\u0438\u0439 \u0414\u0438\u043d\u0430\u0440", - "flag": "BH" - }, - "BIF": { - "name": "\u0411\u0443\u0440\u0443\u043d\u0434\u0438\u0439\u0441\u043a\u0438\u0439 \u0424\u0440\u0430\u043d\u043a", - "flag": "BI" - }, - "BMD": { - "name": "\u0411\u0435\u0440\u043c\u0443\u0434\u0441\u043a\u0438\u0439 \u0414\u043e\u043b\u043b\u0430\u0440", - "flag": "BM" - }, - "BND": { - "name": "\u0411\u0440\u0443\u043d\u0435\u0439\u0441\u043a\u0438\u0439 \u0414\u043e\u043b\u043b\u0430\u0440", - "flag": "BN" - }, - "BOB": { - "name": "\u0411\u043e\u043b\u0438\u0432\u0438\u0439\u0441\u043a\u0438\u0439", - "flag": "BO" - }, - "BRI": { - "name": "\u0411\u0440\u0438\u0442\u0430\u043d\u0438\u044f", - "flag": "BR" - }, - "BRL": { - "name": "\u0411\u0440\u0430\u0437\u0438\u043b\u044c\u0441\u043a\u0438\u0439 \u0420\u0435\u0430\u043b", - "flag": "BR" - }, - "BSD": { - "name": "\u0411\u0430\u0433\u0430\u043c\u0441\u043a\u0438\u0439 \u0414\u043e\u043b\u043b\u0430\u0440", - "flag": "BS" - }, - "BTN": { - "name": "\u0411\u0443\u0442\u0430\u043d\u0441\u043a\u0438\u0439 \u041d\u0433\u0443\u043b\u0442\u0440\u0443\u043c", - "flag": "BT" - }, - "BWP": { - "name": "\u0411\u043e\u0442\u0441\u0432\u0430\u043d\u0430 \u041f\u0443\u043b\u0430", - "flag": "BW" - }, - "BYN": { - "name": "\u0411\u0435\u043b\u043e\u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u0420\u0443\u0431\u043b\u044c", - "flag": "BY" - }, - "BZD": { - "name": "\u0411\u0435\u043b\u0438\u0437\u0441\u043a\u0438\u0439 \u0414\u043e\u043b\u043b\u0430\u0440", - "flag": "BZ" - }, - "CAD": { - "name": "\u041a\u0430\u043d\u0430\u0434\u0441\u043a\u0438\u0439 \u0414\u043e\u043b\u043b\u0430\u0440", - "flag": "CA" - }, - "CDF": { - "name": "\u041a\u043e\u043d\u0433\u043e\u043b\u0435\u0437\u0441\u043a\u0438\u0439 \u0424\u0440\u0430\u043d\u043a", - "flag": "CD" - }, - "CHF": { - "name": "\u0428\u0432\u0435\u0439\u0446\u0430\u0440\u0441\u043a\u0438\u0439 \u0424\u0440\u0430\u043d\u043a", - "flag": "CH" - }, - "CLF": { - "name": "\u0427\u0438\u043b\u0438\u0439\u0441\u043a\u0430\u044f \u0420\u0430\u0441\u0447\u0435\u0442\u043d\u0430\u044f \u0415\u0434\u0438\u043d\u0438\u0446\u0430", - "flag": "CL" - }, - "CLP": { - "name": "\u0427\u0438\u043b\u0438\u0439\u0441\u043a\u043e\u0435 \u041f\u0435\u0441\u043e", - "flag": "CL" - }, - "CNH": { - "name": "\u041a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0439 \u042e\u0430\u043d\u044c", - "flag": "CN" - }, - "CNY": { - "name": "\u041a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0439 \u042e\u0430\u043d\u044c", - "flag": "CN" - }, - "COP": { - "name": "\u041a\u043e\u043b\u0443\u043c\u0431\u0438\u0439\u0441\u043a\u043e\u0435 \u041f\u0435\u0441\u043e", - "flag": "CO" - }, - "CRC": { - "name": "\u041a\u043e\u0441\u0442\u0430\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0438\u0439 \u041a\u043e\u043b\u043e\u043d", - "flag": "CR" - }, - "CUP": { - "name": "\u041a\u0443\u0431\u0438\u043d\u0441\u043a\u043e\u0435 \u041f\u0435\u0441\u043e", - "flag": "CU" - }, - "CVE": { - "name": "\u041a\u0430\u0431\u043e-\u0412\u0435\u0440\u0434\u0435 \u0429\u0438\u0442", - "flag": "CV" - }, - "CYP": { - "name": "\u041a\u0438\u043f\u0440\u0441\u043a\u0438\u0439 \u0424\u0443\u043d\u0442", - "flag": "CY" - }, - "CZK": { - "name": "\u0427\u0435\u0448\u0441\u043a\u0430\u044f \u041a\u0440\u043e\u043d\u0430", - "flag": "CZ" - }, - "DJF": { - "name": "\u0414\u0436\u0438\u0431\u0443\u0442\u0438\u0439\u0441\u043a\u0438\u0439 \u0424\u0440\u0430\u043d\u043a", - "flag": "DJ" - }, - "DKK": { - "name": "\u0414\u0430\u0442\u0441\u043a\u0430\u044f \u041a\u0440\u043e\u043d\u0430", - "flag": "DK" - }, - "DOE": { - "name": "\u0414\u0432\u0443\u0433\u043b\u0430\u0432\u044b\u0439 \u041e\u0440\u0435\u043b", - "flag": "DO" - }, - "DOP": { - "name": "\u0414\u043e\u043c\u0438\u043d\u0438\u043a\u0430\u043d\u0441\u043a\u0438\u0439 \u041f\u0435\u0441\u043e", - "flag": "DO" - }, - "DZD": { - "name": "\u0410\u043b\u0436\u0438\u0440\u0441\u043a\u0438\u0439 \u0414\u0438\u043d\u0430\u0440", - "flag": "DZ" - }, - "EGP": { - "name": "\u0415\u0433\u0438\u043f\u0435\u0442\u0441\u043a\u0438\u0439 \u0424\u0443\u043d\u0442", - "flag": "EG" - }, - "ETB": { - "name": "\u042d\u0444\u0438\u043e\u043f\u0441\u043a\u0438\u0439 \u0411\u044b\u0440", - "flag": "ET" - }, - "EUR": { - "name": "\u0415\u0432\u0440\u043e", - "flag": "EU" - }, - "FJD": { - "name": "\u0414\u043e\u043b\u043b\u0430\u0440 \u0424\u0438\u0434\u0436\u0438", - "flag": "FJ" - }, - "FRN": { - "name": "\u0424\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u0438\u0439 \u041d\u0430\u043f\u043e\u043b\u0435\u043e\u043d", - "flag": "FR" - }, - "GBP": { - "name": "\u0424\u0443\u043d\u0442 \u0421\u0442\u0435\u0440\u043b\u0438\u043d\u0433\u043e\u0432", - "flag": "GB" - }, - "GEL": { - "name": "\u0413\u0440\u0443\u0437\u0438\u043d\u0441\u043a\u0438\u0439 \u0417\u0430\u0431\u0435\u0433", - "flag": "GE" - }, - "GHS": { - "name": "\u0413\u0430\u043d\u0441\u043a\u0438\u0439 \u0421\u0435\u0434\u0438", - "flag": "GH" - }, - "GMD": { - "name": "\u0413\u0430\u043c\u0431\u0438\u0439\u0441\u043a\u0438\u0439 \u0414\u0430\u043b\u0430\u0441\u0438", - "flag": "GM" - }, - "GNF": { - "name": "\u0413\u0432\u0438\u043d\u0435\u0439\u0441\u043a\u0438\u0439 \u0424\u0440\u0430\u043d\u043a", - "flag": "GN" - }, - "GTQ": { - "name": "\u0413\u0432\u0430\u0442\u0435\u043c\u0430\u043b\u044c\u0441\u043a\u0438\u0439 \u041a\u0435\u0442\u0441\u0430\u043b\u044c", - "flag": "GT" - }, - "GYD": { - "name": "\u0413\u0430\u0439\u0430\u043d\u0441\u043a\u0438\u0439 \u0414\u043e\u043b\u043b\u0430\u0440", - "flag": "GY" - }, - "HKD": { - "name": "\u0413\u043e\u043d\u043a\u043e\u043d\u0433\u0441\u043a\u0438\u0439 \u0414\u043e\u043b\u043b\u0430\u0440", - "flag": "HK" - }, - "HNL": { - "name": "\u0413\u043e\u043d\u0434\u0443\u0440\u0430\u0441\u0441\u043a\u0430\u044f \u041b\u0435\u043c\u043f\u0438\u0440\u0430", - "flag": "HN" - }, - "HRK": { - "name": "\u0425\u043e\u0440\u0432\u0430\u0442\u0441\u043a\u0430\u044f \u041a\u0443\u043d\u0430", - "flag": "HR" - }, - "HTG": { - "name": "\u0413\u0430\u0438\u0442\u044f\u043d\u0441\u043a\u0430\u044f \u0422\u044b\u043a\u0432\u0430", - "flag": "HT" - }, - "HUF": { - "name": "\u0412\u0435\u043d\u0433\u0435\u0440\u0441\u043a\u0438\u0439 \u0424\u043e\u0440\u0438\u043d\u0442", - "flag": "HU" - }, - "IDR": { - "name": "\u0418\u043d\u0434\u043e\u043d\u0435\u0437\u0438\u0439\u0441\u043a\u0430\u044f \u0420\u0443\u043f\u0438\u044f", - "flag": "ID" - }, - "ILS": { - "name": "\u041d\u043e\u0432\u044b\u0439 \u0418\u0437\u0440\u0430\u0438\u043b\u044c\u0441\u043a\u0438\u0439 \u0428\u0435\u043a\u0435\u043b\u044c", - "flag": "IL" - }, - "INR": { - "name": "\u0418\u043d\u0434\u0438\u0439\u0441\u043a\u0430\u044f \u0420\u0443\u043f\u0438\u044f", - "flag": "IN" - }, - "IQD": { - "name": "\u0418\u0440\u0430\u043a\u0441\u043a\u0438\u0439 \u0414\u0438\u043d\u0430\u0440", - "flag": "IQ" - }, - "IRR": { - "name": "\u0418\u0440\u0430\u043d\u0441\u043a\u0438\u0439 \u0420\u0438\u0430\u043b", - "flag": "IR" - }, - "ISK": { - "name": "\u0418\u0441\u043b\u0430\u043d\u0434\u0441\u043a\u0430\u044f \u041a\u0440\u043e\u043d\u0430", - "flag": "IS" - }, - "JMD": { - "name": "\u042f\u043c\u0430\u0439\u0441\u043a\u0438\u0439 \u0414\u043e\u043b\u043b\u0430\u0440", - "flag": "JM" - }, - "JOD": { - "name": "\u0418\u043e\u0440\u0434\u0430\u043d\u0441\u043a\u0438\u0439 \u0414\u0438\u043d\u0430\u0440", - "flag": "JO" - }, - "JPY": { - "name": "\u042f\u043f\u043e\u043d\u0441\u043a\u0430\u044f \u0418\u0435\u043d\u0430", - "flag": "JP" - }, - "KES": { - "name": "\u041a\u0435\u043d\u0438\u0439\u0441\u043a\u0438\u0439 \u0428\u0438\u043b\u043b\u0438\u043d\u0433", - "flag": "KE" - }, - "KHR": { - "name": "\u041a\u0430\u043c\u0431\u043e\u0434\u0436\u0438\u0439\u0441\u043a\u0438\u0439 \u0420\u0438\u0435\u043b\u044c", - "flag": "KH" - }, - "KMF": { - "name": "\u041a\u043e\u043c\u043e\u0440\u0441\u043a\u0438\u0439 \u0424\u0440\u0430\u043d\u043a", - "flag": "KM" - }, - "KRU": { - "name": "\u042e\u0436\u043d\u043e\u0430\u0444\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0438\u0439 \u041a\u0440\u044e\u0433\u0435\u0440\u0440\u0430\u043d\u0434", - "flag": "KR" - }, - "KRW": { - "name": "\u042e\u0436\u043d\u043e\u043a\u043e\u0440\u0435\u0439\u0441\u043a\u0438\u0439 \u0412\u043e\u043d", - "flag": "KR" - }, - "KWD": { - "name": "\u041a\u0443\u0432\u0435\u0439\u0442\u0441\u043a\u0438\u0439 \u0414\u0438\u043d\u0430\u0440", - "flag": "KW" - }, - "KYD": { - "name": "\u0414\u043e\u043b\u043b\u0430\u0440 \u041a\u0430\u0439\u043c\u0430\u043d\u043e\u0432\u044b\u0445 \u041e\u0441\u0442\u0440\u043e\u0432\u043e\u0432", - "flag": "KY" - }, - "KZT": { - "name": "Kazakhstani Tenge", - "flag": "KZ" - }, - "LAK": { - "name": "\u041b\u0430\u043e \u041a\u0438\u043f", - "flag": "LA" - }, - "LBP": { - "name": "\u041b\u0438\u0432\u0430\u043d\u0441\u043a\u0438\u0439 \u0424\u0443\u043d\u0442", - "flag": "LB" - }, - "LFX": { - "name": "\u0421\u0443\u043a\u0443\u043a \u0421\u043e\u043a\u0440\u043e\u0432\u0438\u0449\u0430", - "flag": "MY" - }, - "LKR": { - "name": "\u0428\u0440\u0438-\u041b\u0430\u043d\u043a\u0438\u0439\u0441\u043a\u0430\u044f \u0420\u0443\u043f\u0438\u044f", - "flag": "LK" - }, - "LRD": { - "name": "\u041b\u0438\u0431\u0435\u0440\u0438\u0439\u0441\u043a\u0438\u0439 \u0414\u043e\u043b\u043b\u0430\u0440", - "flag": "LR" - }, - "LSL": { - "name": "\u041b\u0435\u0441\u043e\u0442\u043e \u041b\u043e\u0442\u0438", - "flag": "LS" - }, - "LTL": { - "name": "\u041b\u0438\u0442\u043e\u0432\u0441\u043a\u0438\u0435 \u041b\u0438\u0442\u044b", - "flag": "LT" - }, - "LYD": { - "name": "\u041b\u0438\u0432\u0438\u0439\u0441\u043a\u0438\u0439 \u0414\u0438\u043d\u0430\u0440", - "flag": "LY" - }, - "M5P": { - "name": "\u041c\u0435\u043a\u0441\u0438\u043a\u0430\u043d\u0441\u043a\u0438\u0439 50 \u041f\u0435\u0441\u043e", - "flag": "MX" - }, - "MAD": { - "name": "\u041c\u0430\u0440\u043e\u043a\u043a\u0430\u043d\u0441\u043a\u0438\u0439 \u0414\u0438\u0440\u0445\u0430\u043c", - "flag": "MA" - }, - "MAL": { - "name": "\u041a\u043b\u0435\u043d\u043e\u0432\u044b\u0439 \u041b\u0438\u0441\u0442", - "flag": "MA" - }, - "MDL": { - "name": "\u041c\u043e\u043b\u0434\u0430\u0432\u0441\u043a\u0438\u0439 \u041b\u0435\u0439", - "flag": "MD" - }, - "MGA": { - "name": "\u041c\u0430\u043b\u0430\u0433\u0430\u0441\u0438\u0439\u0441\u043a\u0438\u0439 \u0410\u0440\u0438\u0430\u0440\u0438", - "flag": "MG" - }, - "MKD": { - "name": "\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438\u0439 \u0414\u0438\u043d\u0430\u0440", - "flag": "MK" - }, - "MMK": { - "name": "\u041c\u044c\u044f\u043d\u043c\u0430\u043d\u0441\u043a\u0438\u0439 \u041a\u044c\u044f\u0442", - "flag": "MM" - }, - "MOP": { - "name": "\u041f\u0430\u0442\u0430\u043a\u0430 \u041c\u0430\u043a\u0430\u043d\u0435\u0437", - "flag": "MO" - }, - "MRU": { - "name": "\u041c\u0430\u0432\u0440\u0438\u0442\u0430\u043d\u0441\u043a\u0430\u044f \u0423\u0433\u0438\u044f", - "flag": "MR" - }, - "MTL": { - "name": "\u041c\u0430\u043b\u044c\u0442\u0438\u0439\u0441\u043a\u0430\u044f \u041b\u0438\u0440\u0430", - "flag": "MT" - }, - "MUR": { - "name": "\u041c\u0430\u0432\u0440\u0438\u043a\u0438\u0439\u0441\u043a\u0430\u044f \u0420\u0443\u043f\u0438\u044f", - "flag": "MU" - }, - "MVR": { - "name": "\u041c\u0430\u043b\u044c\u0434\u0438\u0432\u0441\u043a\u0430\u044f \u0420\u0443\u0444\u0438\u044f", - "flag": "MV" - }, - "MWK": { - "name": "\u041c\u0430\u043b\u0430\u0432\u0438\u0439\u0441\u043a\u0430\u044f \u041a\u0432\u0430\u0447\u0430", - "flag": "MW" - }, - "MXN": { - "name": "\u041c\u0435\u043a\u0441\u0438\u043a\u0430\u043d\u0441\u043a\u0438\u0439 \u041f\u0435\u0441\u043e", - "flag": "MX" - }, - "MYR": { - "name": "\u041c\u0430\u043b\u0430\u0439\u0437\u0438\u0439\u0441\u043a\u0438\u0439 \u0420\u0438\u043d\u0433\u0433\u0438\u0442", - "flag": "MY" - }, - "MZN": { - "name": "\u041c\u043e\u0437\u0430\u043c\u0431\u0438\u043a\u0441\u043a\u0438\u0439 \u041c\u0435\u0442\u0438\u043a\u0430\u043b", - "flag": "MZ" - }, - "NAD": { - "name": "\u041d\u0430\u043c\u0438\u0431\u0438\u0439\u0441\u043a\u0438\u0439 \u0414\u043e\u043b\u043b\u0430\u0440", - "flag": "NA" - }, - "NBL": { - "name": "\u041e\u0441\u0442\u0440\u043e\u0432 \u041c\u044d\u043d \u041d\u043e\u0431\u043b", - "flag": "IM" - }, - "NGN": { - "name": "\u041d\u0438\u0433\u0435\u0440\u0438\u0439\u0441\u043a\u0430\u044f \u041d\u0430\u0439\u0440\u0430", - "flag": "NG" - }, - "NIO": { - "name": "\u041d\u0438\u043a\u0430\u0440\u0430\u0433\u0443\u0430\u043d\u0441\u043a\u0430\u044f \u041a\u043e\u0440\u0434\u043e\u0432\u0430", - "flag": "NI" - }, - "NOK": { - "name": "\u041d\u043e\u0440\u0432\u0435\u0436\u0441\u043a\u0430\u044f \u041a\u0440\u043e\u043d\u0430", - "flag": "NO" - }, - "NPR": { - "name": "\u041d\u0435\u043f\u0430\u043b\u044c\u0441\u043a\u0430\u044f \u0420\u0443\u043f\u0438\u044f", - "flag": "NP" - }, - "NSO": { - "name": "\u041d\u043e\u0432\u044b\u0439 \u0421\u0443\u0432\u0435\u0440\u0435\u043d", - "flag": "GB" - }, - "NZD": { - "name": "\u041d\u043e\u0432\u043e\u0437\u0435\u043b\u0430\u043d\u0434\u0441\u043a\u0438\u0439 \u0414\u043e\u043b\u043b\u0430\u0440", - "flag": "NZ" - }, - "OMR": { - "name": "\u041e\u043c\u0430\u043d\u0441\u043a\u0438\u0439 \u0420\u0438\u0430\u043b", - "flag": "OM" - }, - "OSO": { - "name": "\u0421\u0442\u0430\u0440\u044b\u0439 \u041f\u043e\u0432\u0435\u043b\u0438\u0442\u0435\u043b\u044c", - "flag": "GB" - }, - "PAB": { - "name": "\u041f\u0430\u043d\u0430\u043c\u0441\u043a\u0438\u0439 \u0411\u0430\u043b\u044c\u0431\u043e\u0430", - "flag": "PA" - }, - "PEN": { - "name": "\u041f\u0435\u0440\u0443\u0430\u043d\u0441\u043a\u0438\u0439 \u041d\u043e\u0432\u044b\u0439 \u0421\u043e\u043b", - "flag": "PE" - }, - "PGK": { - "name": "\u041f\u0430\u043f\u0443\u0430-\u041d\u043e\u0432\u0430\u044f \u0413\u0432\u0438\u043d\u0435\u044f \u041a\u0438\u0442\u0430\u0439", - "flag": "PG" - }, - "PHP": { - "name": "\u0424\u0438\u043b\u0438\u043f\u043f\u0438\u043d\u0441\u043a\u043e\u0435 \u041f\u0435\u0441\u043e", - "flag": "PH" - }, - "PKR": { - "name": "\u041f\u0430\u043a\u0438\u0441\u0442\u0430\u043d\u0441\u043a\u0430\u044f \u0420\u0443\u043f\u0438\u044f", - "flag": "PK" - }, - "PLN": { - "name": "\u041f\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0417\u043b\u043e\u0442\u044b\u0439", - "flag": "PL" - }, - "PYG": { - "name": "\u041f\u0430\u0440\u0430\u0433\u0432\u0430\u0439\u0441\u043a\u0438\u0439 \u0413\u0443\u0430\u0440\u0430\u043d\u0438", - "flag": "PY" - }, - "QAR": { - "name": "\u041a\u0430\u0442\u0430\u0440\u0441\u043a\u0438\u0439 \u0420\u0438\u0430\u043b", - "flag": "QA" - }, - "RON": { - "name": "\u041d\u043e\u0432\u044b\u0439 \u0420\u0443\u043c\u044b\u043d\u0441\u043a\u0438\u0439 \u041b\u0435\u0439", - "flag": "RO" - }, - "RSD": { - "name": "\u0421\u0435\u0440\u0431\u0441\u043a\u0438\u0439 \u0414\u0438\u043d\u0430\u0440", - "flag": "RS" - }, - "RUB": { - "name": "\u0420\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0439 \u0420\u0443\u0431\u043b\u044c", - "flag": "RU" - }, - "RWF": { - "name": "\u0420\u0443\u0430\u043d\u0434\u0438\u0439\u0441\u043a\u0438\u0439 \u0424\u0440\u0430\u043d\u043a", - "flag": "RW" - }, - "SAR": { - "name": "\u0421\u0430\u0443\u0434\u043e\u0432\u0441\u043a\u0438\u0439 \u0420\u0438\u0430\u043b", - "flag": "SA" - }, - "SBD": { - "name": "\u0414\u043e\u043b\u043b\u0430\u0440 \u0421\u043e\u043b\u043e\u043c\u043e\u043d\u043e\u0432\u044b\u0445 \u041e\u0441\u0442\u0440\u043e\u0432\u043e\u0432", - "flag": "SB" - }, - "SCR": { - "name": "\u0421\u0435\u0439\u0448\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u0420\u0443\u043f\u0438\u044f", - "flag": "SC" - }, - "SDG": { - "name": "\u0421\u0443\u0434\u0430\u043d\u0441\u043a\u0438\u0439 \u0424\u0443\u043d\u0442", - "flag": "SD" - }, - "SEK": { - "name": "\u0428\u0432\u0435\u0434\u0441\u043a\u0430\u044f \u041a\u0440\u043e\u043d\u0430", - "flag": "SE" - }, - "SGD": { - "name": "\u0421\u0438\u043d\u0433\u0430\u043f\u0443\u0440\u0441\u043a\u0438\u0439 \u0414\u043e\u043b\u043b\u0430\u0440", - "flag": "SG" - }, - "SHP": { - "name": "\u0424\u0443\u043d\u0442 \u0421\u0432\u044f\u0442\u043e\u0439 \u0415\u043b\u0435\u043d\u044b", - "flag": "SH" - }, - "SLL": { - "name": "\u0421\u044c\u0435\u0440\u0440\u0430-\u041b\u0435\u043e\u043d\u0435 \u041b\u0435\u043e\u043d\u0435", - "flag": "SL" - }, - "SOS": { - "name": "\u0421\u043e\u043c\u0430\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u0428\u0438\u043b\u043b\u0438\u043d\u0433", - "flag": "SO" - }, - "SRD": { - "name": "\u0421\u0443\u0440\u0438\u043d\u0430\u043c\u0441\u043a\u0438\u0439 \u0414\u043e\u043b\u043b\u0430\u0440", - "flag": "SR" - }, - "STN": { - "name": "\u0421\u0430\u043d-\u0422\u043e\u043c\u0435\u0430\u043d-\u0414\u043e\u0431\u0440\u0430", - "flag": "ST" - }, - "SVC": { - "name": "\u0421\u0430\u043b\u044c\u0432\u0430\u0434\u043e\u0440\u0441\u043a\u0438\u0439 \u041a\u043e\u043b\u0443\u043c\u0431", - "flag": "SV" - }, - "SZL": { - "name": "\u0421\u0432\u0430\u0437\u0438\u043b\u0435\u043d\u0434\u0441\u043a\u0438\u0439 \u041b\u0438\u043b\u0430\u043d\u0433\u0435\u043d\u0438", - "flag": "SZ" - }, - "THB": { - "name": "\u0422\u0430\u0439\u0441\u043a\u0438\u0439 \u0411\u0430\u0442", - "flag": "TH" - }, - "TJS": { - "name": "\u0422\u0430\u0434\u0436\u0438\u043a\u0441\u043a\u0438\u0439 \u0421\u043e\u043c\u043e\u043d\u0438", - "flag": "TJ" - }, - "TMT": { - "name": "\u0422\u0443\u0440\u043a\u043c\u0435\u043d\u0441\u043a\u0438\u0439 \u041c\u0430\u043d\u0430\u0442", - "flag": "TM" - }, - "TND": { - "name": "\u0422\u0443\u043d\u0438\u0441\u0441\u043a\u0438\u0439 \u0414\u0438\u043d\u0430\u0440", - "flag": "TN" - }, - "TOP": { - "name": "\u0422\u043e\u043d\u0433\u0430\u043d\u0441\u043a\u0438\u0439 \u041f\u0430\u0430\u043d\u0433\u0430", - "flag": "TO" - }, - "TRY": { - "name": "\u0422\u0443\u0440\u0435\u0446\u043a\u0430\u044f \u041b\u0438\u0440\u0430", - "flag": "TR" - }, - "TTD": { - "name": "\u0414\u043e\u043b\u043b\u0430\u0440 \u0422\u0440\u0438\u043d\u0438\u0434\u0430\u0434\u0430 \u0418 \u0422\u043e\u0431\u0430\u0433\u043e", - "flag": "TT" - }, - "TWD": { - "name": "\u041d\u043e\u0432\u044b\u0439 \u0422\u0430\u0439\u0432\u0430\u043d\u044c\u0441\u043a\u0438\u0439 \u0414\u043e\u043b\u043b\u0430\u0440", - "flag": "TW" - }, - "TZS": { - "name": "\u0422\u0430\u043d\u0437\u0430\u043d\u0438\u0439\u0441\u043a\u0438\u0439 \u0428\u0438\u043b\u043b\u0438\u043d\u0433", - "flag": "TZ" - }, - "UAH": { - "name": "\u0423\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u0430\u044f \u0413\u0440\u0438\u0432\u043d\u0430", - "flag": "UA" - }, - "UGX": { - "name": "\u0423\u0433\u0430\u043d\u0434\u0438\u0439\u0441\u043a\u0438\u0439 \u0428\u0438\u043b\u043b\u0438\u043d\u0433", - "flag": "UG" - }, - "USD": { - "name": "\u0414\u043e\u043b\u043b\u0430\u0440 \u0421\u0448\u0430", - "flag": "US" - }, - "UYU": { - "name": "\u0423\u0440\u0443\u0433\u0432\u0430\u0439\u0441\u043a\u043e\u0435 \u041f\u0435\u0441\u043e", - "flag": "UY" - }, - "UZS": { - "name": "\u0423\u0437\u0431\u0435\u043a\u0441\u043a\u0438\u0439 \u0421\u043e\u043c", - "flag": "UZ" - }, - "VES": { - "name": "\u0412\u0435\u043d\u0435\u0441\u0443\u044d\u043b\u044c\u0441\u043a\u0438\u0439 \u0411\u043e\u043b\u0438\u0432\u0430\u0440 \u0421\u043e\u0431\u0435\u0440\u0430\u043d\u043e", - "flag": "VE" - }, - "VND": { - "name": "\u0412\u044c\u0435\u0442\u043d\u0430\u043c\u0441\u043a\u0438\u0439 \u0414\u043e\u043d\u0433", - "flag": "VN" - }, - "VRL": { - "name": "\u0412\u0440\u0435\u043d\u0435\u043b\u0438 10\u0424.", - "flag": "CH" - }, - "VRN": { - "name": "\u0412\u0440\u0435\u043d\u0435\u043b\u0438 20\u0424", - "flag": "CH" - }, - "XAG": { - "name": "\u0421\u0435\u0440\u0435\u0431\u0440\u043e (\u041e\u0434\u043d\u0430 \u0422\u0440\u043e\u0439\u0441\u043a\u0430\u044f \u0423\u043d\u0446\u0438\u044f)", - "flag": "XAG" - }, - "XAGK": { - "name": "\u0421\u0435\u0440\u0435\u0431\u0440\u043e (\u041a\u0433)", - "flag": "XAG" - }, - "XAU": { - "name": "\u0417\u043e\u043b\u043e\u0442\u043e (\u041e\u0434\u043d\u0430 \u0422\u0440\u043e\u0439\u0441\u043a\u0430\u044f \u0423\u043d\u0446\u0438\u044f)", - "flag": "XAU" - }, - "XAUK": { - "name": "\u0417\u043e\u043b\u043e\u0442\u043e (\u041a\u0433)", - "flag": "XAU" - }, - "XCD": { - "name": "\u0412\u043e\u0441\u0442\u043e\u0447\u043d\u043e-\u041a\u0430\u0440\u0438\u0431\u0441\u043a\u0438\u0439 \u0414\u043e\u043b\u043b\u0430\u0440", - "flag": "AI" - }, - "XOF": { - "name": "Cfa Franc Bceao", - "flag": "SN" - }, - "XPD": { - "name": "\u041f\u0430\u043b\u043b\u0430\u0434\u0438\u0439 (\u041e\u0434\u043d\u0430 \u0422\u0440\u043e\u0439\u0441\u043a\u0430\u044f \u0423\u043d\u0446\u0438\u044f)", - "flag": "XPD" - }, - "XPDK": { - "name": "\u041f\u0430\u043b\u043b\u0430\u0434\u0438\u0439 (\u041a\u0433)", - "flag": "XPD" - }, - "XPF": { - "name": "Cfp \u0424\u0440\u0430\u043d\u043a", - "flag": "PF" - }, - "XPT": { - "name": "\u041f\u043b\u0430\u0442\u0438\u043d\u0430 (\u041e\u0434\u043d\u0430 \u0422\u0440\u043e\u0439\u0441\u043a\u0430\u044f \u0423\u043d\u0446\u0438\u044f)", - "flag": "XPT" - }, - "XPTK": { - "name": "\u041f\u043b\u0430\u0442\u0438\u043d\u0430 (\u041a\u0433)", - "flag": "XPT" - }, - "YER": { - "name": "\u0419\u0435\u043c\u0435\u043d\u0441\u043a\u0438\u0439 \u0420\u0438\u0430\u043b", - "flag": "YE" - }, - "ZAR": { - "name": "\u042e\u0436\u043d\u043e\u0430\u0444\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0438\u0439 \u0420\u044d\u043d\u0434", - "flag": "ZA" - }, - "ZMW": { - "name": "\u0417\u0430\u043c\u0431\u0438\u0439\u0441\u043a\u0430\u044f \u041a\u0432\u0430\u0447\u0430", - "flag": "ZM" - }, - "ZWD": { - "name": "\u0417\u0438\u043c\u0431\u0430\u0431\u0432\u0438\u0439\u0441\u043a\u0438\u0439 \u0414\u043e\u043b\u043b\u0430\u0440", - "flag": "ZW" - }, - "DASH": { - "name": "\u041a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043b\u044e\u0442\u0430 Dash", - "flag": "DASH" - }, - "BTC": { - "name": "\u0411\u0438\u0442\u043a\u043e\u0439\u043d", - "flag": "BTC" - }, - "DSH": { - "name": "\u041a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043b\u044e\u0442\u0430 Dash", - "flag": "DASH" - }, - "LTC": { - "name": "Litecoin", - "flag": "LTC" - }, - "ETH": { - "name": "Ethereum", - "flag": "ETH" - }, - "BCH": { - "name": "\u0411\u0438\u0442\u043a\u043e\u0439\u043d \u041a\u044d\u0448", - "flag": "BTC" - }, - "XRP": { - "name": "\u041a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043b\u044e\u0442\u0430 Xrp", - "flag": "XRP" - } -}
--- a/Simoleon/Settings.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,175 +0,0 @@ -// -// Settings.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 19/07/2021. -// - -import SwiftUI -import Purchases - -struct Settings: View { - @Environment(\.managedObjectContext) private var viewContext - @FetchRequest(sortDescriptors: []) private var defaultCurrency: FetchedResults<DefaultCurrency> - - @State private var selectedDefaultCurrency = "" - @State private var showingSubscriptionPaywall = false - @State private var entitlementIsActive = false - @State private var alertTitle = "" - @State private var alertMessage = "" - @State private var showingAlert = false - @State private var searchCurrency = "" - - let currencyPairs: [CurrencyPairModel] = parseJson("CurrencyPairs.json") - - /* - If searched currency string is empty: - * Show all currencies - else: - * Show filtered list of currencies containing searched currency string - */ - var searchResults: [CurrencyPairModel] { - if searchCurrency.isEmpty { - return currencyPairs.sorted { $0.name < $1.name } - } else { - return currencyPairs.filter { $0.name.contains(searchCurrency.uppercased()) } - } - } - - var body: some View { - List { - Section(header: Text("Preferences")) { - if entitlementIsActive { - Picker("Default currency", selection: $selectedDefaultCurrency) { - SearchBar(placeholder: "Search...", text: $searchCurrency) - .padding(5) - - ForEach(searchResults, id: \.self) { currencyPair in - Text(currencyPair.name) - .tag(currencyPair.name) - } - } - } else { - LockedCurrencyPicker() - .contentShape(Rectangle()) - .onTapGesture { showingSubscriptionPaywall = true } - } - } - - Section(header: Text("Stay in touch")) { - Link(destination: URL(string: "https://itunes.apple.com/app/id1576390953?action=write-review")!) { - HStack { - Image(systemName: "heart.fill") - .foregroundColor(Color(.systemRed)) - .imageScale(.large) - - Text("Rate Simoleon") - } - } - - Link(destination: URL(string: "https://twitter.com/dennisconcep")!) { - HStack { - Image("TwitterLogo") - .resizable() - .frame(width: 30, height: 30) - - Text("Developer's Twitter") - } - } - - Link(destination: URL(string: "https://dennistech.io/contact")!) { - HStack { - Image(systemName: "envelope.fill") - .foregroundColor(Color(.systemIndigo)) - .imageScale(.large) - - Text("Contact") - } - } - } - - Section(header: Text("About")) { - Link(destination: URL(string: "https://dennistech.io")!) { - Text("Website") - } - - Link(destination: URL(string: "https://dennistech.io/simoleon-privacy-policy")!) { - Text("Privacy Policy") - } - - Link(destination: URL(string: "https://dennistech.io/simoleon-terms-of-use")!) { - Text("Terms of Use") - } - } - } - .alert(isPresented: $showingAlert) { - Alert(title: Text(alertTitle), message: Text(alertMessage), dismissButton: .default(Text("Ok"))) - } - .onAppear { - checkEntitlement() - /* - if selectedDefaultCurrency is empty: - * View is appearing for the first time - * Set initial default curency for picker - else: - * View is appearing after user selected another default currency - * Save it to core data - */ - if selectedDefaultCurrency == "" { - selectedDefaultCurrency = defaultCurrency.first?.pair ?? "USD/GBP" - } else { - setCoreData() - } - } - .listStyle(InsetGroupedListStyle()) - .navigationTitle("Settings") - .sheet(isPresented: $showingSubscriptionPaywall, onDismiss: checkEntitlement) { - SubscriptionPaywall(showingSubscriptionPaywall: $showingSubscriptionPaywall) - } - .if(UIDevice.current.userInterfaceIdiom == .phone) { content in - NavigationView { content } - } - } - - // Save default currency to core data - private func setCoreData() { - if defaultCurrency.isEmpty { // If it's empty -> add record - let defaultCurrency = DefaultCurrency(context: viewContext) - defaultCurrency.pair = selectedDefaultCurrency - - do { - try viewContext.save() - } catch { - print(error.localizedDescription) - } - } else { // If not, update record - defaultCurrency.first?.pair = selectedDefaultCurrency - try? viewContext.save() - } - } - - // Check if user subscription is active - private func checkEntitlement() { - #if SCREENSHOTS - entitlementIsActive = true - #else - Purchases.shared.purchaserInfo { (purchaserInfo, error) in - if purchaserInfo?.entitlements["all"]?.isActive == true { - entitlementIsActive = true - } - - if let error = error as NSError? { - alertTitle = error.localizedDescription - alertMessage = error.localizedFailureReason ?? "" - showingAlert = true - } - } - #endif - } -} - -struct Settings_Previews: PreviewProvider { - static var previews: some View { - Settings() - } -}
--- a/Simoleon/Simoleon.xcdatamodeld/Simoleon.xcdatamodel/contents Tue Aug 17 22:14:58 2021 +0100 +++ b/Simoleon/Simoleon.xcdatamodeld/Simoleon.xcdatamodel/contents Tue Oct 12 16:17:35 2021 +0200 @@ -1,13 +1,10 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="18154" systemVersion="20G71" minimumToolsVersion="Automatic" sourceLanguage="Swift" usedWithCloudKit="YES" userDefinedModelVersionIdentifier=""> - <entity name="DefaultCurrency" representedClassName="DefaultCurrency" syncable="YES"> - <attribute name="pair" optional="YES" attributeType="String"/> - </entity> - <entity name="Favorite" representedClassName="Favorite" syncable="YES"> - <attribute name="currencyPair" optional="YES" attributeType="String"/> +<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="18154" systemVersion="20G95" minimumToolsVersion="Automatic" sourceLanguage="Swift" usedWithCloudKit="YES" userDefinedModelVersionIdentifier=""> + <entity name="FavoritePair" representedClassName="FavoritePair" syncable="YES"> + <attribute name="baseSymbol" optional="YES" attributeType="String"/> + <attribute name="quoteSymbol" optional="YES" attributeType="String"/> </entity> <elements> - <element name="DefaultCurrency" positionX="0" positionY="0" width="128" height="44"/> - <element name="Favorite" positionX="0" positionY="0" width="128" height="44"/> + <element name="FavoritePair" positionX="-63" positionY="-18" width="128" height="59"/> </elements> </model> \ No newline at end of file
--- a/Simoleon/SimoleonApp.swift Tue Aug 17 22:14:58 2021 +0100 +++ b/Simoleon/SimoleonApp.swift Tue Oct 12 16:17:35 2021 +0200 @@ -6,17 +6,11 @@ // import SwiftUI -import Purchases @main struct SimoleonApp: App { - @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate let persistenceController = PersistenceController.shared - init() { - Purchases.configure(withAPIKey: "\(readConfig("PURCHASES_KEY")!)") - } - var body: some Scene { WindowGroup { ContentView()
--- a/Simoleon/SubscriptionPaywall.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -// -// SubscriptionPaywall.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 22/07/2021. -// - -import SwiftUI - -struct SubscriptionPaywall: View { - @Binding var showingSubscriptionPaywall: Bool - - var body: some View { - NavigationView { - ScrollView { - VStack(alignment: .leading, spacing: 20) { - HStack { - Spacer() - VStack { - Image("Subscription") - .resizable() - .aspectRatio(contentMode: .fit) - .frame(width: 100, height: 100) - .cornerRadius(25) - .padding(.top) - - Text("Unlock All Access") - .font(.title) - .fontWeight(.semibold) - .fixedSize(horizontal: false, vertical: true) - .multilineTextAlignment(.center) - .padding(.top) - } - - Spacer() - } - - Divider() - - SubscriptionFeature( - symbol: "star.circle.fill", - colour: Color(.systemYellow), - title: "Favorite Forex Pairs", - description: "Save any currency pair to access them quickly." - ) - - SubscriptionFeature( - symbol: "flag.circle.fill", - colour: Color(.systemRed), - title: "Over 170 Currencies", - description: "Access almost every currency of the world." - ) - - SubscriptionFeature( - symbol: "icloud.circle.fill", - colour: Color(.systemBlue), - title: "Everything is Up-to-date", - description: "Your settings and favorite currencies in all your devices." - ) - - SubscriptionFeature( - symbol: "bitcoinsign.circle.fill", - colour: Color(.systemOrange), - title: "Cryptos and Commodities", - description: "Convert currency between cryptos, gold, and silver." - ) - - Spacer() - SubscribeButton(showingSubscriptionPaywall: $showingSubscriptionPaywall) - HStack { - Spacer() - RestoreButton(showingSubscriptionPaywall: $showingSubscriptionPaywall) - Spacer() - } - } - .padding(.bottom) - .padding(.horizontal, 40) - } - .navigationBarTitleDisplayMode(.inline) - .toolbar { - ToolbarItem(placement: .cancellationAction) { - Button(action: { showingSubscriptionPaywall = false }) { - Text("Cancel") - } - } - } - } - } -} - -struct SubscriptionPaywall_Previews: PreviewProvider { - static var previews: some View { - SubscriptionPaywall(showingSubscriptionPaywall: .constant(true)) - } -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Tests/ButtonAnimation.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,31 @@ +// +// ButtonAnimation.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 28/8/21. +// + +import SwiftUI + +struct ButtonAnimation: View { + @State private var scale: CGFloat = 1 + + var body: some View { + Button("Press here", action: animate) + .scaleEffect(scale) + .animation(.easeIn, value: scale) + } + + private func animate() { + scale += 0.2 + DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) { + scale -= 0.2 + } + } +} + +struct ButtonAnimation_Previews: PreviewProvider { + static var previews: some View { + ButtonAnimation() + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Tests/ChildListResets.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,44 @@ +// +// ModalSheetSelection.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 26/8/21. +// + +import SwiftUI + +struct ParentView: View { + @State var selection: Int = 1 + @State private var showingList = false + + var body: some View { + VStack { + Button("Show list", action: {showingList = true}) + .sheet(isPresented: $showingList) { + ModalSheetSelection(selection: $selection) + } + + Text("My first var is: \(selection)") + } + } +} + +struct ModalSheetSelection: View { + @Binding var selection: Int + + var body: some View { + NavigationView { + List { + SearchBar(placeholder: "", text: .constant("")) + ForEach((1..<100), id: \.self) { number in + Button(action: {selection = number}) { + Text("\(number)") + } + } + } + .id(UUID()) + .navigationTitle("Currencies") + .navigationBarTitleDisplayMode(.inline) + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/UI/ConversionBox.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,69 @@ +// +// ConversionBox.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 18/07/2021. +// + +import SwiftUI + +struct ConversionBox: View { + @ObservedObject var currencyConversion: CurrencyConversion + @State private var amount = "" + @State private var isEditing = false + + let networkHelper = NetworkHelper() + let currencyDetails: [String: CurrencyModel] = try! readJson(from: "Currencies.json") + + var body: some View { + VStack(alignment: .leading) { + let baseCurrencyName = currencyDetails[currencyConversion.baseSymbol]!.name + Text("\(baseCurrencyName) (\(currencyConversion.baseSymbol))") + .font(.callout) + .fontWeight(.semibold) + + ConversionTextfield(amount: $amount, isEditing: $isEditing) + Divider() + + let quoteCurrencyName = currencyDetails[currencyConversion.quoteSymbol]!.name + Text("\(quoteCurrencyName) (\(currencyConversion.quoteSymbol))") + .font(.callout) + .fontWeight(.semibold) + + if currencyConversion.isShowing { + let conversion = convert() + Text("\(conversion, specifier: "%.2f")") + .font(Font.title.weight(.semibold)) + .lineLimit(1) + .padding(.top, 1) + } else { + ProgressView() + } + } + .toolbar { + ToolbarItem(placement: .navigationBarTrailing) { + if isEditing { + Button(action: { + UIApplication.shared.dismissKeyboard() + isEditing = false + }) { + Text("Done") + } + } + } + } + } + + private func convert() -> Double { + guard let amount = Double(amount) else { return 0 } + guard let price = currencyConversion.quote.price else { return 0 } + + return amount * price + } +} + +struct ConversionBox_Previews: PreviewProvider { + static var previews: some View { + ConversionBox(currencyConversion: CurrencyConversion()) + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/UI/ConversionTextfield.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,39 @@ +// +// ConversionTextfield.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 29/8/21. +// + +import SwiftUI + +struct ConversionTextfield: View { + @Binding var amount: String + @Binding var isEditing: Bool + + var body: some View { + ZStack { + TextField("Enter amount", text: $amount) { startedEditing in + if startedEditing { + withAnimation { + isEditing = true + } + } + } + onCommit: { + withAnimation { + isEditing = false + } + } + .keyboardType(.decimalPad) + .font(Font.title.weight(.semibold)) + .lineLimit(1) + } + } +} + +struct ConversionTextfield_Previews: PreviewProvider { + static var previews: some View { + ConversionTextfield(amount: .constant("1000"), isEditing: .constant(false)) + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/UI/CurrencyButton.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,34 @@ +// +// CurrencyButton.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 24/8/21. +// + +import SwiftUI + +struct CurrencyButton: View { + var selectedCurrency: String + let currencyDetails: [String: CurrencyModel] = try! readJson(from: "Currencies.json") + + var body: some View { + let currency = currencyDetails[selectedCurrency]! + RoundedRectangle(cornerRadius: 15) + .foregroundColor(Color(.secondarySystemBackground)) + .frame(height: 60) + .overlay( + HStack { + Flag(flag: currency.flag) + Text(currency.symbol) + .foregroundColor(.primary) + .font(.headline) + } + ) + } +} + +struct CurrencyButton_Previews: PreviewProvider { + static var previews: some View { + CurrencyButton(selectedCurrency: "USD") + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/UI/CurrencyList.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,77 @@ +// +// CurrencyList.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 24/8/21. +// + +import SwiftUI + +struct CurrencyList: View { + var currencies: [String] + var selection: Selection + @ObservedObject var currencyConversion: CurrencyConversion + @State private var searchCurrency = "" + + @Environment(\.presentationMode) private var presentation + let currencyDetails: [String: CurrencyModel] = try! readJson(from: "Currencies.json") + + var searchResults: [String] { + if searchCurrency.isEmpty { + return currencies.sorted() + } else { + return currencies.filter {$0.contains(searchCurrency.uppercased())} + } + } + + var body: some View { + NavigationView { + List { + SearchBar(placeholder: "Search...", text: $searchCurrency) + .padding(.vertical, 4) + .accessibilityIdentifier("CurrencySearchBar") + + ForEach(searchResults, id: \.self) { symbol in + Button(action: { + if selection == .baseSymbol { + currencyConversion.baseSymbol = symbol + } else { + currencyConversion.quoteSymbol = symbol + } + + presentation.wrappedValue.dismiss() + }) { + let currency = currencyDetails[symbol]! + CurrencyRow(currency: currency) + .padding(.vertical, 4) + } + } + } + .listStyle() + .navigationTitle("Currencies") + .navigationBarTitleDisplayMode(.inline) + .toolbar { + ToolbarItem(placement: .cancellationAction) { + Button(action: { presentation.wrappedValue.dismiss() }) { + Text("Cancel") + } + } + } + } + } + + enum Selection { + case baseSymbol, quoteSymbol + } +} +extension View { + func listStyle() -> some View { + self.modifier(ListModifier()) + } +} + +struct CurrencyList_Previews: PreviewProvider { + static var previews: some View { + CurrencyList(currencies: ["USD"], selection: .baseSymbol, currencyConversion: CurrencyConversion()) + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/UI/CurrencyRow.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,42 @@ +// +// CurrencyRow.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 15/07/2021. +// + +import SwiftUI + +struct CurrencyRow: View { + var currency: CurrencyModel + + var body: some View { + HStack { + Flag(flag: currency.flag) + VStack(alignment: .leading) { + Text(currency.symbol) + .font(.headline) + + Text(currency.name) + .font(.subheadline) + .lineLimit(1) + } + .foregroundColor(.primary) + .padding(.horizontal) + } + } +} + +struct CurrencyRow_Previews: PreviewProvider { + static var previews: some View { + CurrencyRow( + currency: + CurrencyModel( + symbol: "USD", + name: "United States Dollar", + flag: "US", + isCrypto: false + ) + ) + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/UI/CurrencySelector.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,90 @@ +// +// CurrencySelector.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 27/8/21. +// + +import SwiftUI + +struct CurrencySelector: View { + @ObservedObject var currencyConversion: CurrencyConversion + @State private var modalSelection: ModalType = .allCurrencies + @State private var showingList = false + + let currencyPairsSupported: [String] = try! readJson(from: "CurrencyPairsSupported.json") + + private enum ModalType { + case allCurrencies, compatibleCurrencies + } + + var body: some View { + HStack { + Button(action: { + modalSelection = .allCurrencies + showingList = true + }) { + CurrencyButton(selectedCurrency: currencyConversion.baseSymbol) + } + + Button(action: { + modalSelection = .compatibleCurrencies + showingList = true + }) { + CurrencyButton(selectedCurrency: currencyConversion.quoteSymbol) + } + } + .onChange(of: currencyConversion.baseSymbol) { _ in + // If the previous quote symbol is not compatible anymore with base symbol + // return the first symbol of the new compatible symbols list + let compatibleCurrencies = get(currencyType: .compatible(with: currencyConversion.baseSymbol), from: currencyPairsSupported) + if !compatibleCurrencies.contains(currencyConversion.quoteSymbol) { + currencyConversion.quoteSymbol = compatibleCurrencies.sorted().first! + } + } + .sheet(isPresented: $showingList) { + if modalSelection == .allCurrencies { + let currencies = get(currencyType: .all, from: currencyPairsSupported) + CurrencyList(currencies: currencies, selection: .baseSymbol, currencyConversion: currencyConversion) + } else { + let currencies = get(currencyType: .compatible(with: currencyConversion.baseSymbol), from: currencyPairsSupported) + CurrencyList(currencies: currencies, selection: .quoteSymbol, currencyConversion: currencyConversion) + } + } + } + + enum CurrencyType { + case all + case compatible(with: String) + } + + func get(currencyType: CurrencyType, from currencyPairsSupported: [String]) -> [String] { + var currencies = Set<String>() + + switch currencyType { + case .all: + for currencyPairSupported in currencyPairsSupported { + let currency = currencyPairSupported.components(separatedBy: "/")[0] + currencies.insert(currency) + } + + return Array(currencies) + + case .compatible(with: let symbol): + for currencyPairSupported in currencyPairsSupported { + if currencyPairSupported.hasPrefix(symbol) { + let compatibleCurrency = currencyPairSupported.components(separatedBy: "/")[1] + currencies.insert(compatibleCurrency) + } + } + + return Array(currencies) + } + } +} + +struct CurrencySelector_Previews: PreviewProvider { + static var previews: some View { + CurrencySelector(currencyConversion: CurrencyConversion()) + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/UI/FavoriteButton.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,100 @@ +// +// FavoriteButton.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 19/07/2021. +// + +import SwiftUI + +struct FavoriteButton: View { + @ObservedObject var currencyConversion: CurrencyConversion + @State private var scale: CGFloat = 1 + @Environment(\.managedObjectContext) private var viewContext + @FetchRequest(sortDescriptors: []) private var favoritePairs: FetchedResults<FavoritePair> + + let hapticsHelper = HapticsHelper() + + var body: some View { + Button(action: { + animate() + if isFavorite() { + remove() + } else { + add() + } + + hapticsHelper.simpleSuccess() + }) { + RoundedRectangle(cornerRadius: 15) + .foregroundColor(Color(.secondarySystemBackground)) + .frame(width: 60, height: 60) + .overlay( + VStack { + if isFavorite() { + Image(systemName: "star.fill") + } else { + Image(systemName: "star") + } + } + .font(.system(size: 28)) + .foregroundColor(Color(.systemYellow)) + ) + } + .scaleEffect(scale) + .animation(.linear(duration: 0.2), value: scale) + } + + func add() { + let favoritePair = FavoritePair(context: viewContext) + favoritePair.baseSymbol = currencyConversion.baseSymbol + favoritePair.quoteSymbol = currencyConversion.quoteSymbol + + do { + try viewContext.save() + } catch { + let nsError = error as NSError + fatalError("Unresolved error \(nsError), \(nsError.userInfo)") + } + } + + func remove() { + let favoritePair = favoritePairs.first( + where: { + $0.baseSymbol == currencyConversion.baseSymbol && $0.quoteSymbol == currencyConversion.quoteSymbol + }) + + viewContext.delete(favoritePair!) + + do { + try viewContext.save() + } catch { + let nsError = error as NSError + fatalError("Unresolved error \(nsError), \(nsError.userInfo)") + } + } + + func isFavorite() -> Bool { + let favoritePair = favoritePairs.first( + where: { + $0.baseSymbol == currencyConversion.baseSymbol && $0.quoteSymbol == currencyConversion.quoteSymbol + }) + + guard let _ = favoritePair else { return false } + + return true + } + + private func animate() { + scale += 0.2 + DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) { + scale -= 0.2 + } + } +} + +struct FavoriteButton_Previews: PreviewProvider { + static var previews: some View { + FavoriteButton(currencyConversion: CurrencyConversion()) + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/UI/FavoritePairRow.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,37 @@ +// +// FavoritePairRow.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 5/9/21. +// + +import SwiftUI + +struct FavoritePairRow: View { + var favoritePair: FavoritePair + let currencyDetails: [String: CurrencyModel] = try! readJson(from: "Currencies.json") + + var body: some View { + HStack { + let baseCurrencyDetails = currencyDetails[favoritePair.baseSymbol] + let quoteCurrencyDetails = currencyDetails[favoritePair.quoteSymbol] + + Flag(flag: baseCurrencyDetails!.flag) + Flag(flag: quoteCurrencyDetails!.flag) + .offset(x: -25) + .padding(.trailing, -25) + + Group { + Text("From \(baseCurrencyDetails!.symbol)") + Text("to \(quoteCurrencyDetails!.symbol)") + } + .font(.headline) + } + } +} + +struct FavoritePairRow_Previews: PreviewProvider { + static var previews: some View { + FavoritePairRow(favoritePair: FavoritePair()) + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/UI/FavoritesPlaceholder.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,34 @@ +// +// FavoritesPlaceholder.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 5/9/21. +// + +import SwiftUI + +struct FavoritesPlaceholder: View { + var body: some View { + VStack { + Group { + Group { + Image(systemName: "star") + .padding(.bottom) + + Text("No Favorites") + .padding(.bottom, 5) + } + .font(.system(size: 30)) + + Text("Your favorite currencies will appear here.") + } + .foregroundColor(.secondary) + } + } +} + +struct FavoritesPlaceholder_Previews: PreviewProvider { + static var previews: some View { + FavoritesPlaceholder() + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/UI/Flag.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,26 @@ +// +// Flag.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 24/8/21. +// + +import SwiftUI + +struct Flag: View { + var flag: String + + var body: some View { + Image(flag) + .resizable() + .aspectRatio(contentMode: .fill) + .frame(width: 35, height: 35) + .clipShape(Circle()) + } +} + +struct Flag_Previews: PreviewProvider { + static var previews: some View { + Flag(flag: "GB") + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/UI/SearchBar.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,29 @@ +// +// SearchBar.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 27/07/2021. +// + +import SwiftUI + +struct SearchBar: View { + var placeholder: LocalizedStringKey + @Binding var text: String + + var body: some View { + TextField(placeholder, text: $text) + .disableAutocorrection(true) + .padding(10) + .background( + RoundedRectangle(cornerRadius: 15) + .foregroundColor(Color(.tertiarySystemFill)) + ) + } +} + +struct SearchBar_Previews: PreviewProvider { + static var previews: some View { + SearchBar(placeholder: "Search ...", text: .constant("")) + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/UI/Sidebar.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,40 @@ +// +// Sidebar.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 18/07/2021. +// + +import SwiftUI + +struct Sidebar: View { + var body: some View { + List { + NavigationLink(destination: ConversionView()) { + Label("Convert", systemImage: "arrow.counterclockwise.circle") + } + .accessibilityIdentifier("NavigateToConversion") + + NavigationLink(destination: FavoritesView()) { + Label("Favorites", systemImage: "star") + } + .accessibilityIdentifier("NavigateToFavorites") + + NavigationLink(destination: AboutView()) { + Label("About", systemImage: "info.circle") + } + .accessibilityIdentifier("NavigateToSettings") + } + .listStyle(SidebarListStyle()) + .navigationTitle("Categories") + .accessibilityIdentifier("Sidebar") + } +} + +struct Sidebar_Previews: PreviewProvider { + static var previews: some View { + NavigationView { + Sidebar() + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SimoleonAppPreview/Info.plist Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>$(DEVELOPMENT_LANGUAGE)</string> + <key>CFBundleExecutable</key> + <string>$(EXECUTABLE_NAME)</string> + <key>CFBundleIdentifier</key> + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>$(PRODUCT_NAME)</string> + <key>CFBundlePackageType</key> + <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleVersion</key> + <string>1</string> +</dict> +</plist>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SimoleonAppPreview/SimoleonAppPreview.swift Tue Oct 12 16:17:35 2021 +0200 @@ -0,0 +1,150 @@ +// +// SimoleonAppPreview.swift +// SimoleonAppPreview +// +// Created by Dennis Concepción Martín on 17/8/21. +// + +import XCTest + +class SimoleonAppPreview: XCTestCase { + + override func setUpWithError() throws { + // This method is called before the invocation of each test method in the class. + if UIDevice.current.userInterfaceIdiom == .pad { + XCUIDevice.shared.orientation = .landscapeLeft + } + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + } + + override func tearDownWithError() throws { + // This method is called after the invocation of each test method in the class. + } + + func recordInteraction(of app: XCUIApplication) { + app.launch() + + /* + * Type amount to convert + * Click 'Done' to dismiss keyboard + */ + app.textFields["ConversionTextField"].tap() + app.keys["4"].tap() + app.keys["5"].tap() + app.keys["0"].tap() + app.keys["0"].tap() + app.keys["0"].tap() + + // Tap done to dismiss keyboard + app.navigationBars.buttons.element(boundBy: 0).tap() + + /* + * Open currency selector + * Select USD/BTC + */ + app.scrollViews.buttons["OpenCurrencySelector"].tap() + let currencySearchBar = app.textFields["CurrencySearchBar"] + currencySearchBar.tap() + currencySearchBar.typeText("Usd/btc\n") + sleep(1) + app.tables.buttons.firstMatch.tap() + sleep(2) + + /* + * Go to favorite view + * Open XAG/CAD + * Convert 100 ounce to CAD + * Go back to favorite + * Delete XAG to CAD + */ + app.tabBars.buttons.element(boundBy: 1).tap() + let favoritesList = app.tables["FavoritesList"].cells + sleep(1) + let xagToCad = favoritesList.element(boundBy: 7) + xagToCad.tap() + sleep(2) + + // Convert 100 ounce to CAD + app.textFields["ConversionTextField"].tap() + app.keys["1"].tap() + app.keys["0"].tap() + app.keys["0"].tap() + sleep(2) + + // Tap done to dismiss keyboard + app.navigationBars.buttons.element(boundBy: 1).tap() + + // Go back + app.navigationBars.buttons.element(boundBy: 0).tap() + sleep(1) + + // Delete row from favorites + xagToCad.swipeLeft() + xagToCad.buttons.firstMatch.tap() + } + + func testUSEnglish() throws { + let app = XCUIApplication() + app.launchArguments += ["-AppleLanguages", "(en-US)"] + app.launchArguments += ["-AppleLocale", "\"en-US\""] + recordInteraction(of: app) + } + + func testSpanish() throws { + let app = XCUIApplication() + app.launchArguments += ["-AppleLanguages", "(es-ES)"] + app.launchArguments += ["-AppleLocale", "\"es-ES\""] + recordInteraction(of: app) + } + + func testGBEnglish() throws { + let app = XCUIApplication() + app.launchArguments += ["-AppleLanguages", "(en-GB)"] + app.launchArguments += ["-AppleLocale", "\"en-GB\""] + recordInteraction(of: app) + } + + func testGerman() throws { + let app = XCUIApplication() + app.launchArguments += ["-AppleLanguages", "(de-DE)"] + app.launchArguments += ["-AppleLocale", "\"de-DE\""] + recordInteraction(of: app) + } + + func testFrench() throws { + let app = XCUIApplication() + app.launchArguments += ["-AppleLanguages", "(fr-FR)"] + app.launchArguments += ["-AppleLocale", "\"fr-FR\""] + recordInteraction(of: app) + } + + func testPortuguese() throws { + let app = XCUIApplication() + app.launchArguments += ["-AppleLanguages", "(pt-PT)"] + app.launchArguments += ["-AppleLocale", "\"pt-PT\""] + recordInteraction(of: app) + } + + func testDutch() throws { + let app = XCUIApplication() + app.launchArguments += ["-AppleLanguages", "(nl-NL)"] + app.launchArguments += ["-AppleLocale", "\"nl-NL\""] + recordInteraction(of: app) + } + + func testItalian() throws { + let app = XCUIApplication() + app.launchArguments += ["-AppleLanguages", "(it-IT)"] + app.launchArguments += ["-AppleLocale", "\"it-IT\""] + recordInteraction(of: app) + } + + func testRussian() throws { + let app = XCUIApplication() + app.launchArguments += ["-AppleLanguages", "(ru-RU)"] + app.launchArguments += ["-AppleLocale", "\"ru-RU\""] + recordInteraction(of: app) + } +}
--- a/SimoleonScreenshots/SimoleonScreenshots.swift Tue Aug 17 22:14:58 2021 +0100 +++ b/SimoleonScreenshots/SimoleonScreenshots.swift Tue Oct 12 16:17:35 2021 +0200 @@ -18,10 +18,6 @@ XCUIDevice.shared.orientation = .landscapeLeft screenshotEndingName = "-force_landscapeleft" } - - let app = XCUIApplication() - setupSnapshot(app) - app.launch() // In UI tests it is usually best to stop immediately when a failure occurs. continueAfterFailure = false @@ -32,8 +28,12 @@ } func testLaunchScreenshot() throws { + let app = XCUIApplication() + setupSnapshot(app) + app.launch() + if UIDevice.current.userInterfaceIdiom == .pad { - XCUIApplication().tables["Sidebar"].buttons["NavigateToConversion"].tap() + app.tables["Sidebar"].buttons["NavigateToConversion"].tap() } sleep(2) @@ -41,30 +41,42 @@ } func testConvertAmountScreenshot() throws { + let app = XCUIApplication() + setupSnapshot(app) + app.launch() + if UIDevice.current.userInterfaceIdiom == .pad { - XCUIApplication().tables["Sidebar"].buttons["NavigateToConversion"].tap() + app.tables["Sidebar"].buttons["NavigateToConversion"].tap() } - let conversionTextField = XCUIApplication().textFields["ConversionTextField"] + let conversionTextField = app.textFields["ConversionTextField"] conversionTextField.tap() conversionTextField.typeText("1030.15\n") snapshot("2Conversion\(screenshotEndingName)") } func testCurrencySelectorScreenshot() throws { + let app = XCUIApplication() + setupSnapshot(app) + app.launch() + if UIDevice.current.userInterfaceIdiom == .pad { - XCUIApplication().tables["Sidebar"].buttons["NavigateToConversion"].tap() + app.tables["Sidebar"].buttons["NavigateToConversion"].tap() } - XCUIApplication().scrollViews.buttons["OpenCurrencySelector"].tap() + app.scrollViews.buttons["OpenCurrencySelector"].tap() snapshot("3CurrencySelector\(screenshotEndingName)") } func testFavoriteScreenshot() throws { + let app = XCUIApplication() + setupSnapshot(app) + app.launch() + if UIDevice.current.userInterfaceIdiom == .pad { - XCUIApplication().tables["Sidebar"].buttons["NavigateToFavorites"].tap() + app.tables["Sidebar"].buttons["NavigateToFavorites"].tap() } else { - XCUIApplication().tabBars.buttons.element(boundBy: 1).tap() + app.tabBars.buttons.element(boundBy: 1).tap() } sleep(1)
--- a/SimoleonTests/SimoleonTests.swift Tue Aug 17 22:14:58 2021 +0100 +++ b/SimoleonTests/SimoleonTests.swift Tue Oct 12 16:17:35 2021 +0200 @@ -2,7 +2,7 @@ // SimoleonTests.swift // SimoleonTests // -// Created by Dennis Concepción Martín on 08/07/2021. +// Created by Dennis Concepción Martín on 27/8/21. // import XCTest @@ -17,11 +17,49 @@ override func tearDownWithError() throws { // Put teardown code here. This method is called after the invocation of each test method in the class. } + + func testGetAllCurrencies() throws { + // Create test cases + let testCases = [1: ["USD/GBP", "EUR/AED"], 2: ["USD/GBP", "USD/EUR"]] + let expectedResults = [1: ["USD", "EUR"], 2: ["USD"]] + + // Test + let currencySelector = CurrencySelector(currencyConversion: CurrencyConversion()) + for testCaseNumber in testCases.keys { + print("Testing case: \(testCaseNumber)") + let mockData = testCases[testCaseNumber]! + let allCurrencies = currencySelector.get(currencyType: .all, from: mockData) + + // Assert + XCTAssertEqual(allCurrencies, expectedResults[testCaseNumber]) + } + } + + func testGetCompatibleCurrencies() throws { + // Create test cases + let testCases = [1: ["USD/GBP", "EUR/AED"], 2: ["USD/GBP", "USD/EUR"], 3: ["EUR/AED"]] + let expectedResults = [1: ["GBP"], 2: ["GBP", "EUR"], 3: []] + + // Test + let currencySelector = CurrencySelector(currencyConversion: CurrencyConversion()) + for testCaseNumber in testCases.keys { + print("Testing case: \(testCaseNumber)") + let mockData = testCases[testCaseNumber]! + let compatibleCurrencies = + currencySelector.get( + currencyType: .compatible(with: currencySelector.currencyConversion.baseSymbol), from: mockData + ) + + // Assert + XCTAssertEqual(compatibleCurrencies, expectedResults[testCaseNumber]) + } + } func testPerformanceExample() throws { // This is an example of a performance test case. - self.measure { + measure { // Put the code you want to measure the time of here. } } + }
--- a/SimoleonUITests/SimoleonUITests.swift Tue Aug 17 22:14:58 2021 +0100 +++ b/SimoleonUITests/SimoleonUITests.swift Tue Oct 12 16:17:35 2021 +0200 @@ -14,9 +14,6 @@ if UIDevice.current.userInterfaceIdiom == .pad { XCUIDevice.shared.orientation = .landscapeLeft } - - let app = XCUIApplication() - app.launch() // In UI tests it is usually best to stop immediately when a failure occurs. continueAfterFailure = false @@ -30,6 +27,8 @@ func testTabBar() throws { let app = XCUIApplication() + app.launch() + if UIDevice.current.userInterfaceIdiom == .pad { app.tables["Sidebar"].buttons["NavigateToConversion"].tap() XCTAssertTrue(app.staticTexts["Convert"].exists) @@ -54,6 +53,7 @@ func testCurrencySelector() throws { let app = XCUIApplication() + app.launch() app.scrollViews.buttons["OpenCurrencySelector"].tap() let currencySearchBar = app.textFields["CurrencySearchBar"] @@ -64,7 +64,7 @@ func testCoreData() throws { let app = XCUIApplication() - app.scrollViews.buttons["AddToFavorites"].tap() + app.launch() if UIDevice.current.userInterfaceIdiom == .pad { app.tables["Sidebar"].buttons["NavigateToFavorites"].tap()
--- a/fastlane/SnapshotHelper.swift Tue Aug 17 22:14:58 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,309 +0,0 @@ -// -// SnapshotHelper.swift -// Example -// -// Created by Felix Krause on 10/8/15. -// - -// ----------------------------------------------------- -// IMPORTANT: When modifying this file, make sure to -// increment the version number at the very -// bottom of the file to notify users about -// the new SnapshotHelper.swift -// ----------------------------------------------------- - -import Foundation -import XCTest - -var deviceLanguage = "" -var locale = "" - -func setupSnapshot(_ app: XCUIApplication, waitForAnimations: Bool = true) { - Snapshot.setupSnapshot(app, waitForAnimations: waitForAnimations) -} - -func snapshot(_ name: String, waitForLoadingIndicator: Bool) { - if waitForLoadingIndicator { - Snapshot.snapshot(name) - } else { - Snapshot.snapshot(name, timeWaitingForIdle: 0) - } -} - -/// - Parameters: -/// - name: The name of the snapshot -/// - timeout: Amount of seconds to wait until the network loading indicator disappears. Pass `0` if you don't want to wait. -func snapshot(_ name: String, timeWaitingForIdle timeout: TimeInterval = 20) { - Snapshot.snapshot(name, timeWaitingForIdle: timeout) -} - -enum SnapshotError: Error, CustomDebugStringConvertible { - case cannotFindSimulatorHomeDirectory - case cannotRunOnPhysicalDevice - - var debugDescription: String { - switch self { - case .cannotFindSimulatorHomeDirectory: - return "Couldn't find simulator home location. Please, check SIMULATOR_HOST_HOME env variable." - case .cannotRunOnPhysicalDevice: - return "Can't use Snapshot on a physical device." - } - } -} - -@objcMembers -open class Snapshot: NSObject { - static var app: XCUIApplication? - static var waitForAnimations = true - static var cacheDirectory: URL? - static var screenshotsDirectory: URL? { - return cacheDirectory?.appendingPathComponent("screenshots", isDirectory: true) - } - - open class func setupSnapshot(_ app: XCUIApplication, waitForAnimations: Bool = true) { - - Snapshot.app = app - Snapshot.waitForAnimations = waitForAnimations - - do { - let cacheDir = try getCacheDirectory() - Snapshot.cacheDirectory = cacheDir - setLanguage(app) - setLocale(app) - setLaunchArguments(app) - } catch let error { - NSLog(error.localizedDescription) - } - } - - class func setLanguage(_ app: XCUIApplication) { - guard let cacheDirectory = self.cacheDirectory else { - NSLog("CacheDirectory is not set - probably running on a physical device?") - return - } - - let path = cacheDirectory.appendingPathComponent("language.txt") - - do { - let trimCharacterSet = CharacterSet.whitespacesAndNewlines - deviceLanguage = try String(contentsOf: path, encoding: .utf8).trimmingCharacters(in: trimCharacterSet) - app.launchArguments += ["-AppleLanguages", "(\(deviceLanguage))"] - } catch { - NSLog("Couldn't detect/set language...") - } - } - - class func setLocale(_ app: XCUIApplication) { - guard let cacheDirectory = self.cacheDirectory else { - NSLog("CacheDirectory is not set - probably running on a physical device?") - return - } - - let path = cacheDirectory.appendingPathComponent("locale.txt") - - do { - let trimCharacterSet = CharacterSet.whitespacesAndNewlines - locale = try String(contentsOf: path, encoding: .utf8).trimmingCharacters(in: trimCharacterSet) - } catch { - NSLog("Couldn't detect/set locale...") - } - - if locale.isEmpty && !deviceLanguage.isEmpty { - locale = Locale(identifier: deviceLanguage).identifier - } - - if !locale.isEmpty { - app.launchArguments += ["-AppleLocale", "\"\(locale)\""] - } - } - - class func setLaunchArguments(_ app: XCUIApplication) { - guard let cacheDirectory = self.cacheDirectory else { - NSLog("CacheDirectory is not set - probably running on a physical device?") - return - } - - let path = cacheDirectory.appendingPathComponent("snapshot-launch_arguments.txt") - app.launchArguments += ["-FASTLANE_SNAPSHOT", "YES", "-ui_testing"] - - do { - let launchArguments = try String(contentsOf: path, encoding: String.Encoding.utf8) - let regex = try NSRegularExpression(pattern: "(\\\".+?\\\"|\\S+)", options: []) - let matches = regex.matches(in: launchArguments, options: [], range: NSRange(location: 0, length: launchArguments.count)) - let results = matches.map { result -> String in - (launchArguments as NSString).substring(with: result.range) - } - app.launchArguments += results - } catch { - NSLog("Couldn't detect/set launch_arguments...") - } - } - - open class func snapshot(_ name: String, timeWaitingForIdle timeout: TimeInterval = 20) { - if timeout > 0 { - waitForLoadingIndicatorToDisappear(within: timeout) - } - - NSLog("snapshot: \(name)") // more information about this, check out https://docs.fastlane.tools/actions/snapshot/#how-does-it-work - - if Snapshot.waitForAnimations { - sleep(1) // Waiting for the animation to be finished (kind of) - } - - #if os(OSX) - guard let app = self.app else { - NSLog("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().") - return - } - - app.typeKey(XCUIKeyboardKeySecondaryFn, modifierFlags: []) - #else - - guard self.app != nil else { - NSLog("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().") - return - } - - let screenshot = XCUIScreen.main.screenshot() - #if os(iOS) - let image = XCUIDevice.shared.orientation.isLandscape ? fixLandscapeOrientation(image: screenshot.image) : screenshot.image - #else - let image = screenshot.image - #endif - - guard var simulator = ProcessInfo().environment["SIMULATOR_DEVICE_NAME"], let screenshotsDir = screenshotsDirectory else { return } - - do { - // The simulator name contains "Clone X of " inside the screenshot file when running parallelized UI Tests on concurrent devices - let regex = try NSRegularExpression(pattern: "Clone [0-9]+ of ") - let range = NSRange(location: 0, length: simulator.count) - simulator = regex.stringByReplacingMatches(in: simulator, range: range, withTemplate: "") - - let path = screenshotsDir.appendingPathComponent("\(simulator)-\(name).png") - #if swift(<5.0) - UIImagePNGRepresentation(image)?.write(to: path, options: .atomic) - #else - try image.pngData()?.write(to: path, options: .atomic) - #endif - } catch let error { - NSLog("Problem writing screenshot: \(name) to \(screenshotsDir)/\(simulator)-\(name).png") - NSLog(error.localizedDescription) - } - #endif - } - - class func fixLandscapeOrientation(image: UIImage) -> UIImage { - #if os(watchOS) - return image - #else - if #available(iOS 10.0, *) { - let format = UIGraphicsImageRendererFormat() - format.scale = image.scale - let renderer = UIGraphicsImageRenderer(size: image.size, format: format) - return renderer.image { context in - image.draw(in: CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height)) - } - } else { - return image - } - #endif - } - - class func waitForLoadingIndicatorToDisappear(within timeout: TimeInterval) { - #if os(tvOS) - return - #endif - - guard let app = self.app else { - NSLog("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().") - return - } - - let networkLoadingIndicator = app.otherElements.deviceStatusBars.networkLoadingIndicators.element - let networkLoadingIndicatorDisappeared = XCTNSPredicateExpectation(predicate: NSPredicate(format: "exists == false"), object: networkLoadingIndicator) - _ = XCTWaiter.wait(for: [networkLoadingIndicatorDisappeared], timeout: timeout) - } - - class func getCacheDirectory() throws -> URL { - let cachePath = "Library/Caches/tools.fastlane" - // on OSX config is stored in /Users/<username>/Library - // and on iOS/tvOS/WatchOS it's in simulator's home dir - #if os(OSX) - let homeDir = URL(fileURLWithPath: NSHomeDirectory()) - return homeDir.appendingPathComponent(cachePath) - #elseif arch(i386) || arch(x86_64) || arch(arm64) - guard let simulatorHostHome = ProcessInfo().environment["SIMULATOR_HOST_HOME"] else { - throw SnapshotError.cannotFindSimulatorHomeDirectory - } - let homeDir = URL(fileURLWithPath: simulatorHostHome) - return homeDir.appendingPathComponent(cachePath) - #else - throw SnapshotError.cannotRunOnPhysicalDevice - #endif - } -} - -private extension XCUIElementAttributes { - var isNetworkLoadingIndicator: Bool { - if hasAllowListedIdentifier { return false } - - let hasOldLoadingIndicatorSize = frame.size == CGSize(width: 10, height: 20) - let hasNewLoadingIndicatorSize = frame.size.width.isBetween(46, and: 47) && frame.size.height.isBetween(2, and: 3) - - return hasOldLoadingIndicatorSize || hasNewLoadingIndicatorSize - } - - var hasAllowListedIdentifier: Bool { - let allowListedIdentifiers = ["GeofenceLocationTrackingOn", "StandardLocationTrackingOn"] - - return allowListedIdentifiers.contains(identifier) - } - - func isStatusBar(_ deviceWidth: CGFloat) -> Bool { - if elementType == .statusBar { return true } - guard frame.origin == .zero else { return false } - - let oldStatusBarSize = CGSize(width: deviceWidth, height: 20) - let newStatusBarSize = CGSize(width: deviceWidth, height: 44) - - return [oldStatusBarSize, newStatusBarSize].contains(frame.size) - } -} - -private extension XCUIElementQuery { - var networkLoadingIndicators: XCUIElementQuery { - let isNetworkLoadingIndicator = NSPredicate { (evaluatedObject, _) in - guard let element = evaluatedObject as? XCUIElementAttributes else { return false } - - return element.isNetworkLoadingIndicator - } - - return self.containing(isNetworkLoadingIndicator) - } - - var deviceStatusBars: XCUIElementQuery { - guard let app = Snapshot.app else { - fatalError("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().") - } - - let deviceWidth = app.windows.firstMatch.frame.width - - let isStatusBar = NSPredicate { (evaluatedObject, _) in - guard let element = evaluatedObject as? XCUIElementAttributes else { return false } - - return element.isStatusBar(deviceWidth) - } - - return self.containing(isStatusBar) - } -} - -private extension CGFloat { - func isBetween(_ numberA: CGFloat, and numberB: CGFloat) -> Bool { - return numberA...numberB ~= self - } -} - -// Please don't remove the lines below -// They are used to detect outdated configuration files -// SnapshotHelperVersion [1.27]
--- a/fastlane/metadata/de-DE/description.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/de-DE/description.txt Tue Oct 12 16:17:35 2021 +0200 @@ -6,5 +6,5 @@ - Simoleon wird auf all Ihren Geräten synchronisiert. - Schnelle und einfache Schnittstelle. -Datenschutzbestimmungen: https://dennistech.io/simoleon-privacy-policy -Nutzungsbedingungen: https://dennistech.io/simoleon-terms-of-use \ No newline at end of file +Datenschutzbestimmungen: https://dennistech.io/apps/simoleon/privacy +Nutzungsbedingungen: https://dennistech.io/apps/simoleon/terms \ No newline at end of file
--- a/fastlane/metadata/de-DE/privacy_url.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/de-DE/privacy_url.txt Tue Oct 12 16:17:35 2021 +0200 @@ -1,1 +1,1 @@ -https://dennistech.io/simoleon-privacy-policy \ No newline at end of file +https://dennistech.io/apps/simoleon/privacy \ No newline at end of file
--- a/fastlane/metadata/de-DE/support_url.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/de-DE/support_url.txt Tue Oct 12 16:17:35 2021 +0200 @@ -1,1 +1,1 @@ -https://dennistech.io/contact \ No newline at end of file +https://dennistech.io/ \ No newline at end of file
--- a/fastlane/metadata/en-GB/description.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/en-GB/description.txt Tue Oct 12 16:17:35 2021 +0200 @@ -6,5 +6,5 @@ - Simoleon is synchronised across all your devices. - Fast and simple interface. -Privacy policy: https://dennistech.io/simoleon-privacy-policy -Terms of use: https://dennistech.io/simoleon-terms-of-use \ No newline at end of file +Privacy policy: https://dennistech.io/apps/simoleon/privacy +Terms of use: https://dennistech.io/apps/simoleon/terms \ No newline at end of file
--- a/fastlane/metadata/en-GB/privacy_url.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/en-GB/privacy_url.txt Tue Oct 12 16:17:35 2021 +0200 @@ -1,1 +1,1 @@ -https://dennistech.io/simoleon-privacy-policy \ No newline at end of file +https://dennistech.io/apps/simoleon/privacy \ No newline at end of file
--- a/fastlane/metadata/en-GB/support_url.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/en-GB/support_url.txt Tue Oct 12 16:17:35 2021 +0200 @@ -1,1 +1,1 @@ -https://dennistech.io/contact \ No newline at end of file +https://dennistech.io/ \ No newline at end of file
--- a/fastlane/metadata/en-US/description.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/en-US/description.txt Tue Oct 12 16:17:35 2021 +0200 @@ -6,5 +6,5 @@ - Simoleon is synchronised across all your devices. - Fast and simple interface. -Privacy policy: https://dennistech.io/simoleon-privacy-policy -Terms of use: https://dennistech.io/simoleon-terms-of-use \ No newline at end of file +Privacy policy: https://dennistech.io/apps/simoleon/privacy +Terms of use: https://dennistech.io/apps/simoleon/terms \ No newline at end of file
--- a/fastlane/metadata/en-US/privacy_url.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/en-US/privacy_url.txt Tue Oct 12 16:17:35 2021 +0200 @@ -1,1 +1,1 @@ -https://dennistech.io/simoleon-privacy-policy \ No newline at end of file +https://dennistech.io/apps/simoleon/privacy \ No newline at end of file
--- a/fastlane/metadata/en-US/support_url.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/en-US/support_url.txt Tue Oct 12 16:17:35 2021 +0200 @@ -1,1 +1,1 @@ -https://dennistech.io/contact \ No newline at end of file +https://dennistech.io/ \ No newline at end of file
--- a/fastlane/metadata/es-ES/description.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/es-ES/description.txt Tue Oct 12 16:17:35 2021 +0200 @@ -6,5 +6,5 @@ - Simoleon se sincroniza con todos tus dispositivos. - Interfaz rápida y sencilla. -Política de privacidad: https://dennistech.io/simoleon-privacy-policy -Términos de uso: https://dennistech.io/simoleon-terms-of-use \ No newline at end of file +Política de privacidad: https://dennistech.io/apps/simoleon/privacy +Términos de uso: https://dennistech.io/apps/simoleon/terms \ No newline at end of file
--- a/fastlane/metadata/es-ES/privacy_url.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/es-ES/privacy_url.txt Tue Oct 12 16:17:35 2021 +0200 @@ -1,1 +1,1 @@ -https://dennistech.io/simoleon-privacy-policy \ No newline at end of file +https://dennistech.io/apps/simoleon/privacy \ No newline at end of file
--- a/fastlane/metadata/es-ES/support_url.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/es-ES/support_url.txt Tue Oct 12 16:17:35 2021 +0200 @@ -1,1 +1,1 @@ -https://dennistech.io/contact \ No newline at end of file +https://dennistech.io/ \ No newline at end of file
--- a/fastlane/metadata/fr-FR/description.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/fr-FR/description.txt Tue Oct 12 16:17:35 2021 +0200 @@ -6,5 +6,5 @@ - Simoleon est synchronisé sur tous vos appareils. - Interface simple et rapide. -Politique de confidentialité : https://dennistech.io/simoleon-privacy-policy -Conditions d'utilisation : https://dennistech.io/simoleon-terms-of-use \ No newline at end of file +Politique de confidentialité: https://dennistech.io/apps/simoleon/privacy +Conditions d'utilisation: https://dennistech.io/apps/simoleon/terms \ No newline at end of file
--- a/fastlane/metadata/fr-FR/privacy_url.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/fr-FR/privacy_url.txt Tue Oct 12 16:17:35 2021 +0200 @@ -1,1 +1,1 @@ -https://dennistech.io/simoleon-privacy-policy \ No newline at end of file +https://dennistech.io/apps/simoleon/privacy \ No newline at end of file
--- a/fastlane/metadata/fr-FR/support_url.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/fr-FR/support_url.txt Tue Oct 12 16:17:35 2021 +0200 @@ -1,1 +1,1 @@ -https://dennistech.io/contact \ No newline at end of file +https://dennistech.io/ \ No newline at end of file
--- a/fastlane/metadata/it/description.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/it/description.txt Tue Oct 12 16:17:35 2021 +0200 @@ -6,5 +6,5 @@ - Simoleon è sincronizzato su tutti i tuoi dispositivi. - Interfaccia semplice e veloce. -Informativa sulla privacy: https://dennistech.io/simoleon-privacy-policy -Termini di utilizzo: https://dennistech.io/simoleon-terms-of-use \ No newline at end of file +Informativa sulla privacy: https://dennistech.io/apps/simoleon/privacy +Termini di utilizzo: https://dennistech.io/apps/simoleon/terms \ No newline at end of file
--- a/fastlane/metadata/it/privacy_url.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/it/privacy_url.txt Tue Oct 12 16:17:35 2021 +0200 @@ -1,1 +1,1 @@ -https://dennistech.io/simoleon-privacy-policy \ No newline at end of file +https://dennistech.io/apps/simoleon/privacy \ No newline at end of file
--- a/fastlane/metadata/it/support_url.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/it/support_url.txt Tue Oct 12 16:17:35 2021 +0200 @@ -1,1 +1,1 @@ -https://dennistech.io/contact \ No newline at end of file +https://dennistech.io/ \ No newline at end of file
--- a/fastlane/metadata/nl-NL/description.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/nl-NL/description.txt Tue Oct 12 16:17:35 2021 +0200 @@ -6,5 +6,5 @@ - Simoleon wordt gesynchroniseerd op al uw apparaten. - Snelle en eenvoudige interface. -Privacybeleid: https://dennistech.io/simoleon-privacy-policy -Gebruiksvoorwaarden: https://dennistech.io/simoleon-terms-of-use \ No newline at end of file +Privacybeleid: https://dennistech.io/apps/simoleon/privacy +Gebruiksvoorwaarden: https://dennistech.io/apps/simoleon/terms \ No newline at end of file
--- a/fastlane/metadata/nl-NL/privacy_url.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/nl-NL/privacy_url.txt Tue Oct 12 16:17:35 2021 +0200 @@ -1,1 +1,1 @@ -https://dennistech.io/simoleon-privacy-policy \ No newline at end of file +https://dennistech.io/apps/simoleon/privacy \ No newline at end of file
--- a/fastlane/metadata/nl-NL/support_url.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/nl-NL/support_url.txt Tue Oct 12 16:17:35 2021 +0200 @@ -1,1 +1,1 @@ -https://dennistech.io/contact \ No newline at end of file +https://dennistech.io/ \ No newline at end of file
--- a/fastlane/metadata/pt-PT/description.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/pt-PT/description.txt Tue Oct 12 16:17:35 2021 +0200 @@ -6,5 +6,5 @@ - O Simoleon está sincronizado em todos os seus dispositivos. - Interface rápida e simples. -Política de privacidade: https://dennistech.io/simoleon-privacy-policy -Termos de utilização: https://dennistech.io/simoleon-terms-of-use \ No newline at end of file +Política de privacidade: https://dennistech.io/apps/simoleon/privacy +Termos de utilização: https://dennistech.io/apps/simoleon/terms \ No newline at end of file
--- a/fastlane/metadata/pt-PT/privacy_url.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/pt-PT/privacy_url.txt Tue Oct 12 16:17:35 2021 +0200 @@ -1,1 +1,1 @@ -https://dennistech.io/simoleon-privacy-policy \ No newline at end of file +https://dennistech.io/apps/simoleon/privacy \ No newline at end of file
--- a/fastlane/metadata/pt-PT/support_url.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/pt-PT/support_url.txt Tue Oct 12 16:17:35 2021 +0200 @@ -1,1 +1,1 @@ -https://dennistech.io/contact \ No newline at end of file +https://dennistech.io/ \ No newline at end of file
--- a/fastlane/metadata/ru/description.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/ru/description.txt Tue Oct 12 16:17:35 2021 +0200 @@ -6,5 +6,5 @@ - Simoleon синхронизируется на всех ваших устройствах. - Быстрый и простой интерфейс. -Политика конфиденциальности: https://dennistech.io/simoleon-privacy-policy -Условия использования: https://dennistech.io/simoleon-terms-of-use \ No newline at end of file +Политика конфиденциальности: https://dennistech.io/apps/simoleon/privacy +Условия использования: https://dennistech.io/apps/simoleon/terms \ No newline at end of file
--- a/fastlane/metadata/ru/privacy_url.txt Tue Aug 17 22:14:58 2021 +0100 +++ b/fastlane/metadata/ru/privacy_url.txt Tue Oct 12 16:17:35 2021 +0200 @@ -1,1 +1,1 @@ -https://dennistech.io/simoleon-privacy-policy \ No newline at end of file +https://dennistech.io/apps/simoleon/privacy \ No newline at end of file