diff --git a/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..919434a
--- /dev/null
+++ b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/.swiftpm/xcode/package.xcworkspace/xcuserdata/eugene.xcuserdatad/UserInterfaceState.xcuserstate b/.swiftpm/xcode/package.xcworkspace/xcuserdata/eugene.xcuserdatad/UserInterfaceState.xcuserstate
new file mode 100644
index 0000000..c730b0a
Binary files /dev/null and b/.swiftpm/xcode/package.xcworkspace/xcuserdata/eugene.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/.swiftpm/xcode/xcuserdata/eugene.xcuserdatad/xcschemes/xcschememanagement.plist b/.swiftpm/xcode/xcuserdata/eugene.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..9cc5e45
--- /dev/null
+++ b/.swiftpm/xcode/xcuserdata/eugene.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,32 @@
+
+
+
+
+ SchemeUserState
+
+ CardIO.xcscheme_^#shared#^_
+
+ orderHint
+ 1
+
+ CardIOSDK.xcscheme_^#shared#^_
+
+ orderHint
+ 0
+
+
+ SuppressBuildableAutocreation
+
+ CardIO
+
+ primary
+
+
+ CardIOSDK
+
+ primary
+
+
+
+
+
diff --git a/CardIOSDK.xcodeproj/project.pbxproj b/CardIOSDK.xcodeproj/project.pbxproj
index 6638418..40cc04f 100644
--- a/CardIOSDK.xcodeproj/project.pbxproj
+++ b/CardIOSDK.xcodeproj/project.pbxproj
@@ -3,13 +3,14 @@
archiveVersion = 1;
classes = {
};
- objectVersion = 50;
+ objectVersion = 52;
objects = {
/* Begin PBXBuildFile section */
32886C3923ED7FDC001CCF33 /* CardIOSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 32886C2F23ED7FDC001CCF33 /* CardIOSDK.framework */; };
32886C3E23ED7FDC001CCF33 /* CardIOSDKTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 32886C3D23ED7FDC001CCF33 /* CardIOSDKTests.m */; };
- 32886C4023ED7FDC001CCF33 /* CardIOSDK.h in Headers */ = {isa = PBXBuildFile; fileRef = 32886C3223ED7FDC001CCF33 /* CardIOSDK.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 446DA62F2643F55600DDBD5E /* CardIO.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 446DA62C2643F55600DDBD5E /* CardIO.xcframework */; };
+ 446DA6302643F55600DDBD5E /* CardIOSDK.h in Headers */ = {isa = PBXBuildFile; fileRef = 446DA62D2643F55600DDBD5E /* CardIOSDK.h */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -24,11 +25,12 @@
/* Begin PBXFileReference section */
32886C2F23ED7FDC001CCF33 /* CardIOSDK.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CardIOSDK.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 32886C3223ED7FDC001CCF33 /* CardIOSDK.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CardIOSDK.h; sourceTree = ""; };
- 32886C3323ED7FDC001CCF33 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
32886C3823ED7FDC001CCF33 /* CardIOSDKTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CardIOSDKTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
32886C3D23ED7FDC001CCF33 /* CardIOSDKTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CardIOSDKTests.m; sourceTree = ""; };
32886C3F23ED7FDC001CCF33 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 446DA62C2643F55600DDBD5E /* CardIO.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = CardIO.xcframework; sourceTree = ""; };
+ 446DA62D2643F55600DDBD5E /* CardIOSDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CardIOSDK.h; sourceTree = ""; };
+ 446DA62E2643F55600DDBD5E /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -36,6 +38,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 446DA62F2643F55600DDBD5E /* CardIO.xcframework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -53,7 +56,7 @@
32886C2523ED7FDC001CCF33 = {
isa = PBXGroup;
children = (
- 32886C3123ED7FDC001CCF33 /* CardIOSDK */,
+ 446DA62A2643F55600DDBD5E /* Sources */,
32886C3C23ED7FDC001CCF33 /* CardIOSDKTests */,
32886C3023ED7FDC001CCF33 /* Products */,
);
@@ -68,22 +71,31 @@
name = Products;
sourceTree = "";
};
- 32886C3123ED7FDC001CCF33 /* CardIOSDK */ = {
+ 32886C3C23ED7FDC001CCF33 /* CardIOSDKTests */ = {
isa = PBXGroup;
children = (
- 32886C3223ED7FDC001CCF33 /* CardIOSDK.h */,
- 32886C3323ED7FDC001CCF33 /* Info.plist */,
+ 32886C3D23ED7FDC001CCF33 /* CardIOSDKTests.m */,
+ 32886C3F23ED7FDC001CCF33 /* Info.plist */,
);
- path = CardIOSDK;
+ path = CardIOSDKTests;
sourceTree = "";
};
- 32886C3C23ED7FDC001CCF33 /* CardIOSDKTests */ = {
+ 446DA62A2643F55600DDBD5E /* Sources */ = {
isa = PBXGroup;
children = (
- 32886C3D23ED7FDC001CCF33 /* CardIOSDKTests.m */,
- 32886C3F23ED7FDC001CCF33 /* Info.plist */,
+ 446DA62B2643F55600DDBD5E /* CardIOSDK */,
);
- path = CardIOSDKTests;
+ path = Sources;
+ sourceTree = "";
+ };
+ 446DA62B2643F55600DDBD5E /* CardIOSDK */ = {
+ isa = PBXGroup;
+ children = (
+ 446DA62C2643F55600DDBD5E /* CardIO.xcframework */,
+ 446DA62D2643F55600DDBD5E /* CardIOSDK.h */,
+ 446DA62E2643F55600DDBD5E /* Info.plist */,
+ );
+ path = CardIOSDK;
sourceTree = "";
};
/* End PBXGroup section */
@@ -93,7 +105,7 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
- 32886C4023ED7FDC001CCF33 /* CardIOSDK.h in Headers */,
+ 446DA6302643F55600DDBD5E /* CardIOSDK.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -343,7 +355,7 @@
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
- INFOPLIST_FILE = CardIOSDK/Info.plist;
+ INFOPLIST_FILE = "$(SRCROOT)/Sources/CardIOSDK/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -351,7 +363,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
- MARKETING_VERSION = 5.5.4;
+ MARKETING_VERSION = 5.5.5;
PRODUCT_BUNDLE_IDENTIFIER = com.dkh.io.CardIOSDK;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
@@ -369,7 +381,7 @@
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
- INFOPLIST_FILE = CardIOSDK/Info.plist;
+ INFOPLIST_FILE = "$(SRCROOT)/Sources/CardIOSDK/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -377,7 +389,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
- MARKETING_VERSION = 5.5.4;
+ MARKETING_VERSION = 5.5.5;
PRODUCT_BUNDLE_IDENTIFIER = com.dkh.io.CardIOSDK;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
diff --git a/CardIOSDK.xcodeproj/project.xcworkspace/xcuserdata/eugene.xcuserdatad/UserInterfaceState.xcuserstate b/CardIOSDK.xcodeproj/project.xcworkspace/xcuserdata/eugene.xcuserdatad/UserInterfaceState.xcuserstate
new file mode 100644
index 0000000..3ceb8c1
Binary files /dev/null and b/CardIOSDK.xcodeproj/project.xcworkspace/xcuserdata/eugene.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/CardIOSDK.xcodeproj/xcuserdata/eugene.xcuserdatad/xcschemes/xcschememanagement.plist b/CardIOSDK.xcodeproj/xcuserdata/eugene.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..14851f1
--- /dev/null
+++ b/CardIOSDK.xcodeproj/xcuserdata/eugene.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,14 @@
+
+
+
+
+ SchemeUserState
+
+ CardIOSDK.xcscheme_^#shared#^_
+
+ orderHint
+ 0
+
+
+
+
diff --git a/Package.swift b/Package.swift
new file mode 100644
index 0000000..4284c5d
--- /dev/null
+++ b/Package.swift
@@ -0,0 +1,20 @@
+// swift-tools-version:5.3
+// The swift-tools-version declares the minimum version of Swift required to build this package.
+
+import PackageDescription
+
+let package = Package(
+ name: "CardIOSDK",
+ products: [
+ // Products define the executables and libraries a package produces, and make them visible to other packages.
+ .library(
+ name: "CardIOSDK",
+ targets: ["CardIO"]),
+ ],
+ dependencies: [
+
+ ],
+ targets: [
+ .binaryTarget(name: "CardIO", path: "./Sources/CardIOSDK/CardIO.xcframework")
+ ]
+)
diff --git a/Sources/CardIOSDK/CardIO.xcframework/Info.plist b/Sources/CardIOSDK/CardIO.xcframework/Info.plist
new file mode 100644
index 0000000..3c02389
--- /dev/null
+++ b/Sources/CardIOSDK/CardIO.xcframework/Info.plist
@@ -0,0 +1,42 @@
+
+
+
+
+ AvailableLibraries
+
+
+ LibraryIdentifier
+ ios-arm64_armv7
+ LibraryPath
+ CardIO.framework
+ SupportedArchitectures
+
+ arm64
+ armv7
+
+ SupportedPlatform
+ ios
+
+
+ LibraryIdentifier
+ ios-arm64_i386_x86_64-simulator
+ LibraryPath
+ CardIO.framework
+ SupportedArchitectures
+
+ arm64
+ i386
+ x86_64
+
+ SupportedPlatform
+ ios
+ SupportedPlatformVariant
+ simulator
+
+
+ CFBundlePackageType
+ XFWK
+ XCFrameworkFormatVersion
+ 1.0
+
+
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/CardIO b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/CardIO
new file mode 100755
index 0000000..d71c536
Binary files /dev/null and b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/CardIO differ
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIO.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIO.h
new file mode 100644
index 0000000..db1acec
--- /dev/null
+++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIO.h
@@ -0,0 +1,14 @@
+//
+// CardIO.h
+// See the file "LICENSE.md" for the full license governing this code.
+//
+
+// All-in-one header file for card.io sdk.
+#import "CardIOCreditCardInfo.h"
+#import "CardIODetectionMode.h"
+#import "CardIOView.h"
+#import "CardIOViewDelegate.h"
+#import "CardIOPaymentViewController.h"
+#import "CardIOPaymentViewControllerDelegate.h"
+#import "CardIOUtilities.h"
+
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOCreditCardInfo.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOCreditCardInfo.h
new file mode 100644
index 0000000..3defaba
--- /dev/null
+++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOCreditCardInfo.h
@@ -0,0 +1,83 @@
+//
+// CardIOCreditCardInfo.h
+// See the file "LICENSE.md" for the full license governing this code.
+//
+
+#import
+#import
+
+/// CardIOCreditCardType Identifies type of card.
+typedef NS_ENUM(NSInteger, CardIOCreditCardType) {
+ /// The card number does not correspond to any recognizable card type.
+ CardIOCreditCardTypeUnrecognized = 0,
+ /// The card number corresponds to multiple card types (e.g., when only a few digits have been entered).
+ CardIOCreditCardTypeAmbiguous = 1,
+ /// American Express
+ CardIOCreditCardTypeAmex = '3',
+ /// Japan Credit Bureau
+ CardIOCreditCardTypeJCB = 'J',
+ /// VISA
+ CardIOCreditCardTypeVisa = '4',
+ /// MasterCard
+ CardIOCreditCardTypeMastercard = '5',
+ /// Discover Card
+ CardIOCreditCardTypeDiscover = '6'
+};
+
+
+/// Container for the information about a card.
+@interface CardIOCreditCardInfo : NSObject
+
+/// Card number.
+@property(nonatomic, copy, readwrite) NSString *cardNumber;
+
+/// Card number with all but the last four digits obfuscated.
+@property(nonatomic, copy, readonly) NSString *redactedCardNumber;
+
+/// January == 1
+/// @note expiryMonth & expiryYear may be 0, if expiry information was not requested.
+@property(nonatomic, assign, readwrite) NSUInteger expiryMonth;
+
+/// The full four digit year.
+/// @note expiryMonth & expiryYear may be 0, if expiry information was not requested.
+@property(nonatomic, assign, readwrite) NSUInteger expiryYear;
+
+/// Security code (aka CSC, CVV, CVV2, etc.)
+/// @note May be nil, if security code was not requested.
+@property(nonatomic, copy, readwrite) NSString *cvv;
+
+/// Postal code. Format is country dependent.
+/// @note May be nil, if postal code information was not requested.
+@property(nonatomic, copy, readwrite) NSString *postalCode;
+
+/// Cardholder Name.
+/// @note May be nil, if cardholder name was not requested.
+@property(nonatomic, copy, readwrite) NSString *cardholderName;
+
+/// Was the card number scanned (as opposed to entered manually)?
+@property(nonatomic, assign, readwrite) BOOL scanned;
+
+/// The rectified card image; usually 428x270.
+@property(nonatomic, strong, readwrite) UIImage *cardImage;
+
+/// Derived from cardNumber.
+/// @note CardIOCreditInfo objects returned by either of the delegate methods
+/// userDidProvideCreditCardInfo:inPaymentViewController:
+/// or cardIOView:didScanCard:
+/// will never return a cardType of CardIOCreditCardTypeAmbiguous.
+@property(nonatomic, assign, readonly) CardIOCreditCardType cardType;
+
+/// Convenience method which returns a card type string suitable for display (e.g. "Visa", "American Express", "JCB", "MasterCard", or "Discover").
+/// Where appropriate, this string will be translated into the language specified.
+/// @param cardType The card type.
+/// @param languageOrLocale See CardIOPaymentViewController.h for a detailed explanation of languageOrLocale.
+/// @return Card type string suitable for display.
++ (NSString *)displayStringForCardType:(CardIOCreditCardType)cardType usingLanguageOrLocale:(NSString *)languageOrLocale;
+
+/// Returns a 36x25 credit card logo, at a resolution appropriate for the device.
+/// @param cardType The card type.
+/// @return 36x25 credit card logo.
++ (UIImage *)logoForCardType:(CardIOCreditCardType)cardType;
+
+@end
+
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIODetectionMode.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIODetectionMode.h
new file mode 100644
index 0000000..9c2f34b
--- /dev/null
+++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIODetectionMode.h
@@ -0,0 +1,17 @@
+//
+// CardIODetectionMode.h
+// See the file "LICENSE.md" for the full license governing this code.
+//
+//
+
+#ifndef icc_CardIODetectionMode_h
+#define icc_CardIODetectionMode_h
+
+typedef NS_ENUM(NSInteger, CardIODetectionMode) {
+ CardIODetectionModeCardImageAndNumber = 0,
+ CardIODetectionModeCardImageOnly,
+ CardIODetectionModeAutomatic
+};
+
+#endif
+
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOPaymentViewController.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOPaymentViewController.h
new file mode 100644
index 0000000..0509c95
--- /dev/null
+++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOPaymentViewController.h
@@ -0,0 +1,202 @@
+//
+// CardIOPaymentViewController.h
+// See the file "LICENSE.md" for the full license governing this code.
+//
+
+#import
+#import "CardIOPaymentViewControllerDelegate.h"
+#import "CardIODetectionMode.h"
+#import
+
+/// CardIOPaymentViewController is one of two main entry points into the card.io SDK.
+/// @see CardIOView
+@interface CardIOPaymentViewController : UINavigationController
+
+- (id)initWithPaymentDelegate:(id)aDelegate scanningEnabled:(BOOL)scanningEnabled preferredDevicePosition:(AVCaptureDevicePosition)preferredDevicePosition;
+
+/// Initializer for scanning.
+/// If scanning is not supported by the user's device, card.io will offer manual entry.
+/// @param aDelegate Your CardIOPaymentViewControllerDelegate (typically a UIViewController).
+/// @return Properly initialized CardIOPaymentViewController.
+- (id)initWithPaymentDelegate:(id)aDelegate;
+
+/// Initializer for scanning, with extra hooks for controlling whether the camera will
+/// be displayed (useful for testing).
+/// @param aDelegate Your CardIOPaymentViewControllerDelegate (typically a UIViewController).
+/// @param scanningEnabled If scanningEnabled is NO, card.io will offer manual entry,
+/// regardless of whether scanning is supported by the user's device.
+/// @return Properly initialized CardIOPaymentViewController.
+- (id)initWithPaymentDelegate:(id)aDelegate scanningEnabled:(BOOL)scanningEnabled;
+
+/// The preferred language for all strings appearing in the user interface.
+/// If not set, or if set to nil, defaults to the device's current language setting.
+///
+/// Can be specified as a language code ("en", "fr", "zh-Hans", etc.) or as a locale ("en_AU", "fr_FR", "zh-Hant_HK", etc.).
+/// If card.io does not contain localized strings for a specified locale, then it will fall back to the language. E.g., "es_CO" -> "es".
+/// If card.io does not contain localized strings for a specified language, then it will fall back to American English.
+///
+/// If you specify only a language code, and that code matches the device's currently preferred language,
+/// then card.io will attempt to use the device's current region as well.
+/// E.g., specifying "en" on a device set to "English" and "United Kingdom" will result in "en_GB".
+///
+/// These localizations are currently included:
+/// ar,da,de,en,en_AU,en_GB,es,es_MX,fi,fr,he,is,it,ja,ko,ms,nb,nl,pl,pt,pt_BR,ru,sv,th,tr,zh-Hans,zh-Hant,zh-Hant_TW.
+@property(nonatomic, copy, readwrite) NSString *languageOrLocale;
+
+/// @see keepStatusBarStyleForCardIO
+@property(nonatomic, assign, readwrite) BOOL keepStatusBarStyle;
+/// @see navigationBarStyleForCardIO
+@property(nonatomic, assign, readwrite) UIBarStyle navigationBarStyle;
+/// @see navigationBarTintColorForCardIO
+@property(nonatomic, retain, readwrite) UIColor *navigationBarTintColor;
+
+/// Normally, card.io blurs the screen when the app is backgrounded,
+/// to obscure card details in the iOS-saved screenshot.
+/// If your app already does its own blurring upon backgrounding,
+/// you might choose to disable this behavior.
+/// Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL disableBlurWhenBackgrounding;
+
+/// Alter the card guide (bracket) color. Opaque colors recommended.
+/// Defaults to nil; if nil, will use card.io green.
+@property(nonatomic, retain, readwrite) UIColor *guideColor;
+
+/// If YES, don't have the user confirm the scanned card, just return the results immediately.
+/// Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL suppressScanConfirmation;
+
+/// If YES, instead of displaying the image of the scanned card,
+/// present the manual entry screen with the scanned card number prefilled.
+/// Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL suppressScannedCardImage;
+
+/// After a successful scan, card.io will display an image of the card with
+/// the computed card number superimposed. This property controls how long (in seconds)
+/// that image will be displayed.
+/// Set this to 0.0 to suppress the display entirely.
+/// Defaults to 0.1.
+@property(nonatomic, assign, readwrite) CGFloat scannedImageDuration;
+
+/// Mask the card number digits as they are manually entered by the user. Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL maskManualEntryDigits;
+
+/// Set the scan instruction text. If nil, use the default text. Defaults to nil.
+/// Use newlines as desired to control the wrapping of text onto multiple lines.
+@property(nonatomic, copy, readwrite) NSString *scanInstructions;
+
+/// Hide the PayPal or card.io logo in the scan view. Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL hideCardIOLogo;
+
+/// A custom view that will be overlaid atop the entire scan view. Defaults to nil.
+/// If you set a scanOverlayView, be sure to:
+///
+/// * Consider rotation. Be sure to test on the iPad with rotation both enabled and disabled.
+/// To make rotation synchronization easier, whenever a scanOverlayView is set, and card.io does an
+/// in-place rotation (rotates its UI elements relative to their containers), card.io will generate
+/// rotation notifications; see CardIOScanningOrientationDidChangeNotification
+/// and associated userInfo key documentation below.
+/// As with UIKit, the initial rotation is always UIInterfaceOrientationPortrait.
+///
+/// * Be sure to pass touches through to the superview as appropriate. Note that the entire camera
+/// preview responds to touches (triggers refocusing). Test the light button and the toolbar buttons.
+///
+/// * Minimize animations, redrawing, or any other CPU/GPU/memory intensive activities
+@property(nonatomic, retain, readwrite) UIView *scanOverlayView;
+
+/// CardIODetectionModeCardImageAndNumber: the scanner must successfully identify the card number.
+/// CardIODetectionModeCardImageOnly: don't scan the card, just detect a credit-card-shaped card.
+/// CardIODetectionModeAutomatic: start as CardIODetectionModeCardImageAndNumber, but fall back to
+/// CardIODetectionModeCardImageOnly if scanning has not succeeded within a reasonable time.
+/// Defaults to CardIODetectionModeCardImageAndNumber.
+///
+/// @note Images returned in CardIODetectionModeCardImageOnly mode may be less focused, to accomodate scanning
+/// cards that are dominantly white (e.g., the backs of drivers licenses), and thus
+/// hard to calculate accurate focus scores for.
+@property(nonatomic, assign, readwrite) CardIODetectionMode detectionMode;
+
+/// Set to NO if you don't need to collect the card expiration. Defaults to YES.
+@property(nonatomic, assign, readwrite) BOOL collectExpiry;
+
+/// Set to NO if you don't need to collect the CVV from the user. Defaults to YES.
+@property(nonatomic, assign, readwrite) BOOL collectCVV;
+
+/// Set to YES if you need to collect the billing postal code. Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL collectPostalCode;
+
+/// Set to YES if the postal code should only collect numeric input. Defaults to NO. Set this if you know the
+/// expected country's postal code has only numeric postal
+/// codes.
+@property(nonatomic, assign, readwrite) BOOL restrictPostalCodeToNumericOnly;
+
+/// Set to YES if you need to collect the cardholder name. Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL collectCardholderName;
+
+/// Set to NO if you don't want the camera to try to scan the card expiration.
+/// Applies only if collectExpiry is also YES.
+/// Defaults to YES.
+@property(nonatomic, assign, readwrite) BOOL scanExpiry;
+
+/// Set to YES to show the card.io logo over the camera view instead of the PayPal logo. Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL useCardIOLogo;
+
+/// By default, in camera view the card guide and the buttons always rotate to match the device's orientation.
+/// All four orientations are permitted, regardless of any app or viewcontroller constraints.
+/// If you wish, the card guide and buttons can instead obey standard iOS constraints, including
+/// the UISupportedInterfaceOrientations settings in your app's plist.
+/// Set to NO to follow standard iOS constraints. Defaults to YES. (Does not affect the manual entry screen.)
+@property(nonatomic, assign, readwrite) BOOL allowFreelyRotatingCardGuide;
+
+/// Set to YES to prevent card.io from showing its "Enter Manually" button. Defaults to NO.
+///
+/// @note If [CardIOUtilities canReadCardWithCamera] returns false, then if card.io is presented it will
+/// automatically display its manual entry screen.
+/// Therefore, if you want to prevent users from *ever* seeing card.io's manual entry screen,
+/// you should first check [CardIOUtilities canReadCardWithCamera] before initing the view controller.
+@property(nonatomic, assign, readwrite) BOOL disableManualEntryButtons;
+
+/// Access to the delegate.
+@property(nonatomic, weak, readwrite) id paymentDelegate;
+
+/// Name for orientation change notification.
+extern NSString * const CardIOScanningOrientationDidChangeNotification;
+
+/// userInfo key for orientation change notification, to get the current scanning orientation.
+///
+/// Returned as an NSValue wrapping a UIDeviceOrientation. Sample extraction code:
+/// @code
+/// NSValue *wrappedOrientation = notification.userInfo[CardIOCurrentScanningOrientation];
+/// UIDeviceOrientation scanningOrientation = UIDeviceOrientationPortrait; // set a default value just to be safe
+/// [wrappedOrientation getValue:&scanningOrientation];
+/// // use scanningOrientation...
+/// @endcode
+extern NSString * const CardIOCurrentScanningOrientation;
+
+/// userInfo key for orientation change notification, to get the duration of the card.io rotation animations.
+///
+/// Returned as an NSNumber wrapping an NSTimeInterval (i.e. a double).
+extern NSString * const CardIOScanningOrientationAnimationDuration;
+
+@end
+
+/// Methods with names that do not conflict with Apple's private APIs.
+@interface CardIOPaymentViewController (NonConflictingAPINames)
+
+/// If YES, the status bar's style will be kept as whatever your app has set it to.
+/// If NO, the status bar style will be set to the default style.
+/// Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL keepStatusBarStyleForCardIO;
+
+/// The default appearance of the navigation bar is navigationBarStyleForCardIO == UIBarStyleDefault;
+/// tintColor == nil (pre-iOS 7), barTintColor == nil (iOS 7).
+/// Set either or both of these properties if you want to override these defaults.
+/// @see navigationBarTintColorForCardIO
+@property(nonatomic, assign, readwrite) UIBarStyle navigationBarStyleForCardIO;
+
+/// The default appearance of the navigation bar is navigationBarStyleForCardIO == UIBarStyleDefault;
+/// tintColor == nil (pre-iOS 7), barTintColor == nil (iOS 7).
+/// Set either or both of these properties if you want to override these defaults.
+/// @see navigationBarStyleForCardIO
+@property(nonatomic, retain, readwrite) UIColor *navigationBarTintColorForCardIO;
+
+@end
+
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOPaymentViewControllerDelegate.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOPaymentViewControllerDelegate.h
new file mode 100644
index 0000000..277d63f
--- /dev/null
+++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOPaymentViewControllerDelegate.h
@@ -0,0 +1,30 @@
+//
+// CardIOPaymentViewControllerDelegate.h
+// See the file "LICENSE.md" for the full license governing this code.
+//
+
+#import
+
+@class CardIOPaymentViewController;
+@class CardIOCreditCardInfo;
+
+/// The receiver will be notified when the CardIOPaymentViewController flow completes, due to either success or user-cancellation.
+///
+/// Exactly one of these delegate methods will be called.
+///
+/// Each of them MUST dismiss the CardIOPaymentViewController.
+@protocol CardIOPaymentViewControllerDelegate
+
+@required
+
+/// This method will be called if the user cancels the scan. You MUST dismiss paymentViewController.
+/// @param paymentViewController The active CardIOPaymentViewController.
+- (void)userDidCancelPaymentViewController:(CardIOPaymentViewController *)paymentViewController;
+
+/// This method will be called when there is a successful scan (or manual entry). You MUST dismiss paymentViewController.
+/// @param cardInfo The results of the scan.
+/// @param paymentViewController The active CardIOPaymentViewController.
+- (void)userDidProvideCreditCardInfo:(CardIOCreditCardInfo *)cardInfo inPaymentViewController:(CardIOPaymentViewController *)paymentViewController;
+
+@end
+
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOUtilities.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOUtilities.h
new file mode 100644
index 0000000..996f65d
--- /dev/null
+++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOUtilities.h
@@ -0,0 +1,52 @@
+//
+// CardIOUtilities.h
+// See the file "LICENSE.md" for the full license governing this code.
+//
+
+#import
+#import
+
+@interface CardIOUtilities : NSObject
+
+/// Please send the output of this method with any technical support requests.
+/// @return Human-readable version of this library.
++ (NSString *)libraryVersion;
+
+/// Determine whether this device supports camera-based card scanning, considering
+/// factors such as hardware support and OS version.
+///
+/// card.io automatically provides manual entry of cards as a fallback,
+/// so it is not typically necessary for your app to check this.
+///
+/// @return YES iff the user's device supports camera-based card scanning.
++ (BOOL)canReadCardWithCamera;
+
+/// The preload method prepares card.io to launch faster. Calling preload is optional but suggested.
+/// On an iPhone 5S, for example, preloading makes card.io launch ~400ms faster.
+/// The best time to call preload is when displaying a view from which card.io might be launched;
+/// e.g., inside your view controller's viewWillAppear: method.
+/// preload works in the background; the call to preload returns immediately.
++ (void)preload;
+
+/// Returns a doubly Gaussian-blurred screenshot, intended for screenshots when backgrounding.
+/// @return Blurred screenshot.
++ (UIImageView *)blurredScreenImageView;
+
+@end
+
+/// Methods with names that do not conflict with Apple's private APIs.
+@interface CardIOUtilities (NonConflictingAPINames)
+
+/// Please send the output of this method with any technical support requests.
+/// @return Human-readable version of this library.
++ (NSString *)cardIOLibraryVersion;
+
+/// The preload method prepares card.io to launch faster. Calling preload is optional but suggested.
+/// On an iPhone 5S, for example, preloading makes card.io launch ~400ms faster.
+/// The best time to call preload is when displaying a view from which card.io might be launched;
+/// e.g., inside your view controller's viewWillAppear: method.
+/// preload works in the background; the call to preload returns immediately.
++ (void)preloadCardIO;
+
+@end
+
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOView.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOView.h
new file mode 100644
index 0000000..b55ab35
--- /dev/null
+++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOView.h
@@ -0,0 +1,127 @@
+//
+// CardIOView.h
+// See the file "LICENSE.md" for the full license governing this code.
+//
+
+#import
+#import "CardIOViewDelegate.h"
+#import "CardIODetectionMode.h"
+#import
+
+/// CardIOView is one of two main entry points into the card.io SDK.
+/// @see CardIOPaymentViewController
+@interface CardIOView : UIView
+
+
+#pragma mark - Properties you MUST set
+
+/// Typically, your view controller will set itself as this delegate.
+@property(nonatomic, weak, readwrite) id delegate;
+
+
+#pragma mark - Properties you MAY set
+
+@property(nonatomic, assign, readwrite) AVCaptureDevicePosition preferredDevicePosition;
+
+/// The preferred language for all strings appearing in the user interface.
+/// If not set, or if set to nil, defaults to the device's current language setting.
+///
+/// Can be specified as a language code ("en", "fr", "zh-Hans", etc.) or as a locale ("en_AU", "fr_FR", "zh-Hant_HK", etc.).
+/// If card.io does not contain localized strings for a specified locale, then it will fall back to the language. E.g., "es_CO" -> "es".
+/// If card.io does not contain localized strings for a specified language, then it will fall back to American English.
+///
+/// If you specify only a language code, and that code matches the device's currently preferred language,
+/// then card.io will attempt to use the device's current region as well.
+/// E.g., specifying "en" on a device set to "English" and "United Kingdom" will result in "en_GB".
+///
+/// These localizations are currently included:
+/// ar,da,de,en,en_AU,en_GB,es,es_MX,fi,fr,he,is,it,ja,ko,ms,nb,nl,pl,pt,pt_BR,ru,sv,th,tr,zh-Hans,zh-Hant,zh-Hant_TW.
+@property(nonatomic, copy, readwrite) NSString *languageOrLocale;
+
+/// Alter the card guide (bracket) color. Opaque colors recommended.
+/// Defaults to nil; if nil, will use card.io green.
+@property(nonatomic, retain, readwrite) UIColor *guideColor;
+
+/// Set to YES to show the card.io logo over the camera instead of the PayPal logo. Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL useCardIOLogo;
+
+/// Hide the PayPal or card.io logo in the scan view. Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL hideCardIOLogo;
+
+/// By default, in camera view the card guide and the buttons always rotate to match the device's orientation.
+/// All four orientations are permitted, regardless of any app or viewcontroller constraints.
+/// If you wish, the card guide and buttons can instead obey standard iOS constraints, including
+/// the UISupportedInterfaceOrientations settings in your app's plist.
+/// Set to NO to follow standard iOS constraints. Defaults to YES. (Does not affect the manual entry screen.)
+@property(nonatomic, assign, readwrite) BOOL allowFreelyRotatingCardGuide;
+
+/// Set the scan instruction text. If nil, use the default text. Defaults to nil.
+/// Use newlines as desired to control the wrapping of text onto multiple lines.
+@property(nonatomic, copy, readwrite) NSString *scanInstructions;
+
+/// A custom view that will be overlaid atop the entire scan view. Defaults to nil.
+/// If you set a scanOverlayView, be sure to:
+///
+/// * Consider rotation. Be sure to test on the iPad with rotation both enabled and disabled.
+/// To make rotation synchronization easier, whenever a scanOverlayView is set, and card.io does an
+/// in-place rotation (rotates its UI elements relative to their containers), card.io will generate
+/// rotation notifications; see CardIOScanningOrientationDidChangeNotification
+/// and associated userInfo key documentation below.
+/// As with UIKit, the initial rotation is always UIInterfaceOrientationPortrait.
+///
+/// * Be sure to pass touches through to the superview as appropriate. Note that the entire camera
+/// preview responds to touches (triggers refocusing). Test the light button and the toolbar buttons.
+///
+/// * Minimize animations, redrawing, or any other CPU/GPU/memory intensive activities
+@property(nonatomic, retain, readwrite) UIView *scanOverlayView;
+
+/// Set to NO if you don't want the camera to try to scan the card expiration.
+/// Defaults to YES.
+@property(nonatomic, assign, readwrite) BOOL scanExpiry;
+
+/// CardIODetectionModeCardImageAndNumber: the scanner must successfully identify the card number.
+/// CardIODetectionModeCardImageOnly: don't scan the card, just detect a credit-card-shaped card.
+/// CardIODetectionModeAutomatic: start as CardIODetectionModeCardImageAndNumber, but fall back to
+/// CardIODetectionModeCardImageOnly if scanning has not succeeded within a reasonable time.
+/// Defaults to CardIODetectionModeCardImageAndNumber.
+///
+/// @note Images returned in CardIODetectionModeCardImageOnly mode may be less focused, to accomodate scanning
+/// cards that are dominantly white (e.g., the backs of drivers licenses), and thus
+/// hard to calculate accurate focus scores for.
+@property(nonatomic, assign, readwrite) CardIODetectionMode detectionMode;
+
+/// After a successful scan, the CardIOView will briefly display an image of the card with
+/// the computed card number superimposed. This property controls how long (in seconds)
+/// that image will be displayed.
+/// Set this to 0.0 to suppress the display entirely.
+/// Defaults to 1.0.
+@property(nonatomic, assign, readwrite) CGFloat scannedImageDuration;
+
+/// Name for orientation change notification.
+extern NSString * const CardIOScanningOrientationDidChangeNotification;
+
+/// userInfo key for orientation change notification, to get the current scanning orientation.
+///
+/// Returned as an NSValue wrapping a UIDeviceOrientation. Sample extraction code:
+/// @code
+/// NSValue *wrappedOrientation = notification.userInfo[CardIOCurrentScanningOrientation];
+/// UIDeviceOrientation scanningOrientation = UIDeviceOrientationPortrait; // set a default value just to be safe
+/// [wrappedOrientation getValue:&scanningOrientation];
+/// // use scanningOrientation...
+/// @endcode
+extern NSString * const CardIOCurrentScanningOrientation;
+
+/// userInfo key for orientation change notification, to get the duration of the card.io rotation animations.
+///
+/// Returned as an NSNumber wrapping an NSTimeInterval (i.e. a double).
+extern NSString * const CardIOScanningOrientationAnimationDuration;
+
+
+#pragma mark - Property you MAY get
+
+/// The actual camera preview area within the CardIOView. Location is relative to the CardIOView's origin.
+/// You might want to use this, for example, when adjusting your view controller's view layout.
+@property(nonatomic, assign, readonly) CGRect cameraPreviewFrame;
+
+@end
+
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOViewDelegate.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOViewDelegate.h
new file mode 100644
index 0000000..c2fbe34
--- /dev/null
+++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOViewDelegate.h
@@ -0,0 +1,25 @@
+//
+// CardIOViewDelegate.h
+// See the file "LICENSE.md" for the full license governing this code.
+//
+
+#import
+
+@class CardIOCreditCardInfo;
+@class CardIOView;
+
+/// The receiver will be notified when the CardIOView completes it work.
+@protocol CardIOViewDelegate
+
+@required
+
+/// This method will be called when the CardIOView completes its work.
+/// It is up to you to hide or remove the CardIOView.
+/// At a minimum, you should give the user an opportunity to confirm that the card information was captured correctly.
+/// @param cardIOView The active CardIOView.
+/// @param cardInfo The results of the scan.
+/// @note cardInfo will be nil if exiting due to a problem (e.g., no available camera).
+- (void)cardIOView:(CardIOView *)cardIOView didScanCard:(CardIOCreditCardInfo *)cardInfo;
+
+@end
+
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Info.plist b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Info.plist
new file mode 100644
index 0000000..7f1dc6c
Binary files /dev/null and b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Info.plist differ
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Modules/module.modulemap b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Modules/module.modulemap
new file mode 100644
index 0000000..eda5a50
--- /dev/null
+++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Modules/module.modulemap
@@ -0,0 +1,6 @@
+framework module CardIO {
+ umbrella header "CardIO.h"
+
+ export *
+ module * { export * }
+}
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/CardIO b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/CardIO
new file mode 100755
index 0000000..9bc40d4
Binary files /dev/null and b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/CardIO differ
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIO.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIO.h
new file mode 100644
index 0000000..db1acec
--- /dev/null
+++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIO.h
@@ -0,0 +1,14 @@
+//
+// CardIO.h
+// See the file "LICENSE.md" for the full license governing this code.
+//
+
+// All-in-one header file for card.io sdk.
+#import "CardIOCreditCardInfo.h"
+#import "CardIODetectionMode.h"
+#import "CardIOView.h"
+#import "CardIOViewDelegate.h"
+#import "CardIOPaymentViewController.h"
+#import "CardIOPaymentViewControllerDelegate.h"
+#import "CardIOUtilities.h"
+
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOCreditCardInfo.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOCreditCardInfo.h
new file mode 100644
index 0000000..3defaba
--- /dev/null
+++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOCreditCardInfo.h
@@ -0,0 +1,83 @@
+//
+// CardIOCreditCardInfo.h
+// See the file "LICENSE.md" for the full license governing this code.
+//
+
+#import
+#import
+
+/// CardIOCreditCardType Identifies type of card.
+typedef NS_ENUM(NSInteger, CardIOCreditCardType) {
+ /// The card number does not correspond to any recognizable card type.
+ CardIOCreditCardTypeUnrecognized = 0,
+ /// The card number corresponds to multiple card types (e.g., when only a few digits have been entered).
+ CardIOCreditCardTypeAmbiguous = 1,
+ /// American Express
+ CardIOCreditCardTypeAmex = '3',
+ /// Japan Credit Bureau
+ CardIOCreditCardTypeJCB = 'J',
+ /// VISA
+ CardIOCreditCardTypeVisa = '4',
+ /// MasterCard
+ CardIOCreditCardTypeMastercard = '5',
+ /// Discover Card
+ CardIOCreditCardTypeDiscover = '6'
+};
+
+
+/// Container for the information about a card.
+@interface CardIOCreditCardInfo : NSObject
+
+/// Card number.
+@property(nonatomic, copy, readwrite) NSString *cardNumber;
+
+/// Card number with all but the last four digits obfuscated.
+@property(nonatomic, copy, readonly) NSString *redactedCardNumber;
+
+/// January == 1
+/// @note expiryMonth & expiryYear may be 0, if expiry information was not requested.
+@property(nonatomic, assign, readwrite) NSUInteger expiryMonth;
+
+/// The full four digit year.
+/// @note expiryMonth & expiryYear may be 0, if expiry information was not requested.
+@property(nonatomic, assign, readwrite) NSUInteger expiryYear;
+
+/// Security code (aka CSC, CVV, CVV2, etc.)
+/// @note May be nil, if security code was not requested.
+@property(nonatomic, copy, readwrite) NSString *cvv;
+
+/// Postal code. Format is country dependent.
+/// @note May be nil, if postal code information was not requested.
+@property(nonatomic, copy, readwrite) NSString *postalCode;
+
+/// Cardholder Name.
+/// @note May be nil, if cardholder name was not requested.
+@property(nonatomic, copy, readwrite) NSString *cardholderName;
+
+/// Was the card number scanned (as opposed to entered manually)?
+@property(nonatomic, assign, readwrite) BOOL scanned;
+
+/// The rectified card image; usually 428x270.
+@property(nonatomic, strong, readwrite) UIImage *cardImage;
+
+/// Derived from cardNumber.
+/// @note CardIOCreditInfo objects returned by either of the delegate methods
+/// userDidProvideCreditCardInfo:inPaymentViewController:
+/// or cardIOView:didScanCard:
+/// will never return a cardType of CardIOCreditCardTypeAmbiguous.
+@property(nonatomic, assign, readonly) CardIOCreditCardType cardType;
+
+/// Convenience method which returns a card type string suitable for display (e.g. "Visa", "American Express", "JCB", "MasterCard", or "Discover").
+/// Where appropriate, this string will be translated into the language specified.
+/// @param cardType The card type.
+/// @param languageOrLocale See CardIOPaymentViewController.h for a detailed explanation of languageOrLocale.
+/// @return Card type string suitable for display.
++ (NSString *)displayStringForCardType:(CardIOCreditCardType)cardType usingLanguageOrLocale:(NSString *)languageOrLocale;
+
+/// Returns a 36x25 credit card logo, at a resolution appropriate for the device.
+/// @param cardType The card type.
+/// @return 36x25 credit card logo.
++ (UIImage *)logoForCardType:(CardIOCreditCardType)cardType;
+
+@end
+
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIODetectionMode.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIODetectionMode.h
new file mode 100644
index 0000000..9c2f34b
--- /dev/null
+++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIODetectionMode.h
@@ -0,0 +1,17 @@
+//
+// CardIODetectionMode.h
+// See the file "LICENSE.md" for the full license governing this code.
+//
+//
+
+#ifndef icc_CardIODetectionMode_h
+#define icc_CardIODetectionMode_h
+
+typedef NS_ENUM(NSInteger, CardIODetectionMode) {
+ CardIODetectionModeCardImageAndNumber = 0,
+ CardIODetectionModeCardImageOnly,
+ CardIODetectionModeAutomatic
+};
+
+#endif
+
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOPaymentViewController.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOPaymentViewController.h
new file mode 100644
index 0000000..0509c95
--- /dev/null
+++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOPaymentViewController.h
@@ -0,0 +1,202 @@
+//
+// CardIOPaymentViewController.h
+// See the file "LICENSE.md" for the full license governing this code.
+//
+
+#import
+#import "CardIOPaymentViewControllerDelegate.h"
+#import "CardIODetectionMode.h"
+#import
+
+/// CardIOPaymentViewController is one of two main entry points into the card.io SDK.
+/// @see CardIOView
+@interface CardIOPaymentViewController : UINavigationController
+
+- (id)initWithPaymentDelegate:(id)aDelegate scanningEnabled:(BOOL)scanningEnabled preferredDevicePosition:(AVCaptureDevicePosition)preferredDevicePosition;
+
+/// Initializer for scanning.
+/// If scanning is not supported by the user's device, card.io will offer manual entry.
+/// @param aDelegate Your CardIOPaymentViewControllerDelegate (typically a UIViewController).
+/// @return Properly initialized CardIOPaymentViewController.
+- (id)initWithPaymentDelegate:(id)aDelegate;
+
+/// Initializer for scanning, with extra hooks for controlling whether the camera will
+/// be displayed (useful for testing).
+/// @param aDelegate Your CardIOPaymentViewControllerDelegate (typically a UIViewController).
+/// @param scanningEnabled If scanningEnabled is NO, card.io will offer manual entry,
+/// regardless of whether scanning is supported by the user's device.
+/// @return Properly initialized CardIOPaymentViewController.
+- (id)initWithPaymentDelegate:(id)aDelegate scanningEnabled:(BOOL)scanningEnabled;
+
+/// The preferred language for all strings appearing in the user interface.
+/// If not set, or if set to nil, defaults to the device's current language setting.
+///
+/// Can be specified as a language code ("en", "fr", "zh-Hans", etc.) or as a locale ("en_AU", "fr_FR", "zh-Hant_HK", etc.).
+/// If card.io does not contain localized strings for a specified locale, then it will fall back to the language. E.g., "es_CO" -> "es".
+/// If card.io does not contain localized strings for a specified language, then it will fall back to American English.
+///
+/// If you specify only a language code, and that code matches the device's currently preferred language,
+/// then card.io will attempt to use the device's current region as well.
+/// E.g., specifying "en" on a device set to "English" and "United Kingdom" will result in "en_GB".
+///
+/// These localizations are currently included:
+/// ar,da,de,en,en_AU,en_GB,es,es_MX,fi,fr,he,is,it,ja,ko,ms,nb,nl,pl,pt,pt_BR,ru,sv,th,tr,zh-Hans,zh-Hant,zh-Hant_TW.
+@property(nonatomic, copy, readwrite) NSString *languageOrLocale;
+
+/// @see keepStatusBarStyleForCardIO
+@property(nonatomic, assign, readwrite) BOOL keepStatusBarStyle;
+/// @see navigationBarStyleForCardIO
+@property(nonatomic, assign, readwrite) UIBarStyle navigationBarStyle;
+/// @see navigationBarTintColorForCardIO
+@property(nonatomic, retain, readwrite) UIColor *navigationBarTintColor;
+
+/// Normally, card.io blurs the screen when the app is backgrounded,
+/// to obscure card details in the iOS-saved screenshot.
+/// If your app already does its own blurring upon backgrounding,
+/// you might choose to disable this behavior.
+/// Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL disableBlurWhenBackgrounding;
+
+/// Alter the card guide (bracket) color. Opaque colors recommended.
+/// Defaults to nil; if nil, will use card.io green.
+@property(nonatomic, retain, readwrite) UIColor *guideColor;
+
+/// If YES, don't have the user confirm the scanned card, just return the results immediately.
+/// Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL suppressScanConfirmation;
+
+/// If YES, instead of displaying the image of the scanned card,
+/// present the manual entry screen with the scanned card number prefilled.
+/// Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL suppressScannedCardImage;
+
+/// After a successful scan, card.io will display an image of the card with
+/// the computed card number superimposed. This property controls how long (in seconds)
+/// that image will be displayed.
+/// Set this to 0.0 to suppress the display entirely.
+/// Defaults to 0.1.
+@property(nonatomic, assign, readwrite) CGFloat scannedImageDuration;
+
+/// Mask the card number digits as they are manually entered by the user. Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL maskManualEntryDigits;
+
+/// Set the scan instruction text. If nil, use the default text. Defaults to nil.
+/// Use newlines as desired to control the wrapping of text onto multiple lines.
+@property(nonatomic, copy, readwrite) NSString *scanInstructions;
+
+/// Hide the PayPal or card.io logo in the scan view. Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL hideCardIOLogo;
+
+/// A custom view that will be overlaid atop the entire scan view. Defaults to nil.
+/// If you set a scanOverlayView, be sure to:
+///
+/// * Consider rotation. Be sure to test on the iPad with rotation both enabled and disabled.
+/// To make rotation synchronization easier, whenever a scanOverlayView is set, and card.io does an
+/// in-place rotation (rotates its UI elements relative to their containers), card.io will generate
+/// rotation notifications; see CardIOScanningOrientationDidChangeNotification
+/// and associated userInfo key documentation below.
+/// As with UIKit, the initial rotation is always UIInterfaceOrientationPortrait.
+///
+/// * Be sure to pass touches through to the superview as appropriate. Note that the entire camera
+/// preview responds to touches (triggers refocusing). Test the light button and the toolbar buttons.
+///
+/// * Minimize animations, redrawing, or any other CPU/GPU/memory intensive activities
+@property(nonatomic, retain, readwrite) UIView *scanOverlayView;
+
+/// CardIODetectionModeCardImageAndNumber: the scanner must successfully identify the card number.
+/// CardIODetectionModeCardImageOnly: don't scan the card, just detect a credit-card-shaped card.
+/// CardIODetectionModeAutomatic: start as CardIODetectionModeCardImageAndNumber, but fall back to
+/// CardIODetectionModeCardImageOnly if scanning has not succeeded within a reasonable time.
+/// Defaults to CardIODetectionModeCardImageAndNumber.
+///
+/// @note Images returned in CardIODetectionModeCardImageOnly mode may be less focused, to accomodate scanning
+/// cards that are dominantly white (e.g., the backs of drivers licenses), and thus
+/// hard to calculate accurate focus scores for.
+@property(nonatomic, assign, readwrite) CardIODetectionMode detectionMode;
+
+/// Set to NO if you don't need to collect the card expiration. Defaults to YES.
+@property(nonatomic, assign, readwrite) BOOL collectExpiry;
+
+/// Set to NO if you don't need to collect the CVV from the user. Defaults to YES.
+@property(nonatomic, assign, readwrite) BOOL collectCVV;
+
+/// Set to YES if you need to collect the billing postal code. Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL collectPostalCode;
+
+/// Set to YES if the postal code should only collect numeric input. Defaults to NO. Set this if you know the
+/// expected country's postal code has only numeric postal
+/// codes.
+@property(nonatomic, assign, readwrite) BOOL restrictPostalCodeToNumericOnly;
+
+/// Set to YES if you need to collect the cardholder name. Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL collectCardholderName;
+
+/// Set to NO if you don't want the camera to try to scan the card expiration.
+/// Applies only if collectExpiry is also YES.
+/// Defaults to YES.
+@property(nonatomic, assign, readwrite) BOOL scanExpiry;
+
+/// Set to YES to show the card.io logo over the camera view instead of the PayPal logo. Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL useCardIOLogo;
+
+/// By default, in camera view the card guide and the buttons always rotate to match the device's orientation.
+/// All four orientations are permitted, regardless of any app or viewcontroller constraints.
+/// If you wish, the card guide and buttons can instead obey standard iOS constraints, including
+/// the UISupportedInterfaceOrientations settings in your app's plist.
+/// Set to NO to follow standard iOS constraints. Defaults to YES. (Does not affect the manual entry screen.)
+@property(nonatomic, assign, readwrite) BOOL allowFreelyRotatingCardGuide;
+
+/// Set to YES to prevent card.io from showing its "Enter Manually" button. Defaults to NO.
+///
+/// @note If [CardIOUtilities canReadCardWithCamera] returns false, then if card.io is presented it will
+/// automatically display its manual entry screen.
+/// Therefore, if you want to prevent users from *ever* seeing card.io's manual entry screen,
+/// you should first check [CardIOUtilities canReadCardWithCamera] before initing the view controller.
+@property(nonatomic, assign, readwrite) BOOL disableManualEntryButtons;
+
+/// Access to the delegate.
+@property(nonatomic, weak, readwrite) id paymentDelegate;
+
+/// Name for orientation change notification.
+extern NSString * const CardIOScanningOrientationDidChangeNotification;
+
+/// userInfo key for orientation change notification, to get the current scanning orientation.
+///
+/// Returned as an NSValue wrapping a UIDeviceOrientation. Sample extraction code:
+/// @code
+/// NSValue *wrappedOrientation = notification.userInfo[CardIOCurrentScanningOrientation];
+/// UIDeviceOrientation scanningOrientation = UIDeviceOrientationPortrait; // set a default value just to be safe
+/// [wrappedOrientation getValue:&scanningOrientation];
+/// // use scanningOrientation...
+/// @endcode
+extern NSString * const CardIOCurrentScanningOrientation;
+
+/// userInfo key for orientation change notification, to get the duration of the card.io rotation animations.
+///
+/// Returned as an NSNumber wrapping an NSTimeInterval (i.e. a double).
+extern NSString * const CardIOScanningOrientationAnimationDuration;
+
+@end
+
+/// Methods with names that do not conflict with Apple's private APIs.
+@interface CardIOPaymentViewController (NonConflictingAPINames)
+
+/// If YES, the status bar's style will be kept as whatever your app has set it to.
+/// If NO, the status bar style will be set to the default style.
+/// Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL keepStatusBarStyleForCardIO;
+
+/// The default appearance of the navigation bar is navigationBarStyleForCardIO == UIBarStyleDefault;
+/// tintColor == nil (pre-iOS 7), barTintColor == nil (iOS 7).
+/// Set either or both of these properties if you want to override these defaults.
+/// @see navigationBarTintColorForCardIO
+@property(nonatomic, assign, readwrite) UIBarStyle navigationBarStyleForCardIO;
+
+/// The default appearance of the navigation bar is navigationBarStyleForCardIO == UIBarStyleDefault;
+/// tintColor == nil (pre-iOS 7), barTintColor == nil (iOS 7).
+/// Set either or both of these properties if you want to override these defaults.
+/// @see navigationBarStyleForCardIO
+@property(nonatomic, retain, readwrite) UIColor *navigationBarTintColorForCardIO;
+
+@end
+
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOPaymentViewControllerDelegate.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOPaymentViewControllerDelegate.h
new file mode 100644
index 0000000..277d63f
--- /dev/null
+++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOPaymentViewControllerDelegate.h
@@ -0,0 +1,30 @@
+//
+// CardIOPaymentViewControllerDelegate.h
+// See the file "LICENSE.md" for the full license governing this code.
+//
+
+#import
+
+@class CardIOPaymentViewController;
+@class CardIOCreditCardInfo;
+
+/// The receiver will be notified when the CardIOPaymentViewController flow completes, due to either success or user-cancellation.
+///
+/// Exactly one of these delegate methods will be called.
+///
+/// Each of them MUST dismiss the CardIOPaymentViewController.
+@protocol CardIOPaymentViewControllerDelegate
+
+@required
+
+/// This method will be called if the user cancels the scan. You MUST dismiss paymentViewController.
+/// @param paymentViewController The active CardIOPaymentViewController.
+- (void)userDidCancelPaymentViewController:(CardIOPaymentViewController *)paymentViewController;
+
+/// This method will be called when there is a successful scan (or manual entry). You MUST dismiss paymentViewController.
+/// @param cardInfo The results of the scan.
+/// @param paymentViewController The active CardIOPaymentViewController.
+- (void)userDidProvideCreditCardInfo:(CardIOCreditCardInfo *)cardInfo inPaymentViewController:(CardIOPaymentViewController *)paymentViewController;
+
+@end
+
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOUtilities.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOUtilities.h
new file mode 100644
index 0000000..996f65d
--- /dev/null
+++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOUtilities.h
@@ -0,0 +1,52 @@
+//
+// CardIOUtilities.h
+// See the file "LICENSE.md" for the full license governing this code.
+//
+
+#import
+#import
+
+@interface CardIOUtilities : NSObject
+
+/// Please send the output of this method with any technical support requests.
+/// @return Human-readable version of this library.
++ (NSString *)libraryVersion;
+
+/// Determine whether this device supports camera-based card scanning, considering
+/// factors such as hardware support and OS version.
+///
+/// card.io automatically provides manual entry of cards as a fallback,
+/// so it is not typically necessary for your app to check this.
+///
+/// @return YES iff the user's device supports camera-based card scanning.
++ (BOOL)canReadCardWithCamera;
+
+/// The preload method prepares card.io to launch faster. Calling preload is optional but suggested.
+/// On an iPhone 5S, for example, preloading makes card.io launch ~400ms faster.
+/// The best time to call preload is when displaying a view from which card.io might be launched;
+/// e.g., inside your view controller's viewWillAppear: method.
+/// preload works in the background; the call to preload returns immediately.
++ (void)preload;
+
+/// Returns a doubly Gaussian-blurred screenshot, intended for screenshots when backgrounding.
+/// @return Blurred screenshot.
++ (UIImageView *)blurredScreenImageView;
+
+@end
+
+/// Methods with names that do not conflict with Apple's private APIs.
+@interface CardIOUtilities (NonConflictingAPINames)
+
+/// Please send the output of this method with any technical support requests.
+/// @return Human-readable version of this library.
++ (NSString *)cardIOLibraryVersion;
+
+/// The preload method prepares card.io to launch faster. Calling preload is optional but suggested.
+/// On an iPhone 5S, for example, preloading makes card.io launch ~400ms faster.
+/// The best time to call preload is when displaying a view from which card.io might be launched;
+/// e.g., inside your view controller's viewWillAppear: method.
+/// preload works in the background; the call to preload returns immediately.
++ (void)preloadCardIO;
+
+@end
+
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOView.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOView.h
new file mode 100644
index 0000000..b55ab35
--- /dev/null
+++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOView.h
@@ -0,0 +1,127 @@
+//
+// CardIOView.h
+// See the file "LICENSE.md" for the full license governing this code.
+//
+
+#import
+#import "CardIOViewDelegate.h"
+#import "CardIODetectionMode.h"
+#import
+
+/// CardIOView is one of two main entry points into the card.io SDK.
+/// @see CardIOPaymentViewController
+@interface CardIOView : UIView
+
+
+#pragma mark - Properties you MUST set
+
+/// Typically, your view controller will set itself as this delegate.
+@property(nonatomic, weak, readwrite) id delegate;
+
+
+#pragma mark - Properties you MAY set
+
+@property(nonatomic, assign, readwrite) AVCaptureDevicePosition preferredDevicePosition;
+
+/// The preferred language for all strings appearing in the user interface.
+/// If not set, or if set to nil, defaults to the device's current language setting.
+///
+/// Can be specified as a language code ("en", "fr", "zh-Hans", etc.) or as a locale ("en_AU", "fr_FR", "zh-Hant_HK", etc.).
+/// If card.io does not contain localized strings for a specified locale, then it will fall back to the language. E.g., "es_CO" -> "es".
+/// If card.io does not contain localized strings for a specified language, then it will fall back to American English.
+///
+/// If you specify only a language code, and that code matches the device's currently preferred language,
+/// then card.io will attempt to use the device's current region as well.
+/// E.g., specifying "en" on a device set to "English" and "United Kingdom" will result in "en_GB".
+///
+/// These localizations are currently included:
+/// ar,da,de,en,en_AU,en_GB,es,es_MX,fi,fr,he,is,it,ja,ko,ms,nb,nl,pl,pt,pt_BR,ru,sv,th,tr,zh-Hans,zh-Hant,zh-Hant_TW.
+@property(nonatomic, copy, readwrite) NSString *languageOrLocale;
+
+/// Alter the card guide (bracket) color. Opaque colors recommended.
+/// Defaults to nil; if nil, will use card.io green.
+@property(nonatomic, retain, readwrite) UIColor *guideColor;
+
+/// Set to YES to show the card.io logo over the camera instead of the PayPal logo. Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL useCardIOLogo;
+
+/// Hide the PayPal or card.io logo in the scan view. Defaults to NO.
+@property(nonatomic, assign, readwrite) BOOL hideCardIOLogo;
+
+/// By default, in camera view the card guide and the buttons always rotate to match the device's orientation.
+/// All four orientations are permitted, regardless of any app or viewcontroller constraints.
+/// If you wish, the card guide and buttons can instead obey standard iOS constraints, including
+/// the UISupportedInterfaceOrientations settings in your app's plist.
+/// Set to NO to follow standard iOS constraints. Defaults to YES. (Does not affect the manual entry screen.)
+@property(nonatomic, assign, readwrite) BOOL allowFreelyRotatingCardGuide;
+
+/// Set the scan instruction text. If nil, use the default text. Defaults to nil.
+/// Use newlines as desired to control the wrapping of text onto multiple lines.
+@property(nonatomic, copy, readwrite) NSString *scanInstructions;
+
+/// A custom view that will be overlaid atop the entire scan view. Defaults to nil.
+/// If you set a scanOverlayView, be sure to:
+///
+/// * Consider rotation. Be sure to test on the iPad with rotation both enabled and disabled.
+/// To make rotation synchronization easier, whenever a scanOverlayView is set, and card.io does an
+/// in-place rotation (rotates its UI elements relative to their containers), card.io will generate
+/// rotation notifications; see CardIOScanningOrientationDidChangeNotification
+/// and associated userInfo key documentation below.
+/// As with UIKit, the initial rotation is always UIInterfaceOrientationPortrait.
+///
+/// * Be sure to pass touches through to the superview as appropriate. Note that the entire camera
+/// preview responds to touches (triggers refocusing). Test the light button and the toolbar buttons.
+///
+/// * Minimize animations, redrawing, or any other CPU/GPU/memory intensive activities
+@property(nonatomic, retain, readwrite) UIView *scanOverlayView;
+
+/// Set to NO if you don't want the camera to try to scan the card expiration.
+/// Defaults to YES.
+@property(nonatomic, assign, readwrite) BOOL scanExpiry;
+
+/// CardIODetectionModeCardImageAndNumber: the scanner must successfully identify the card number.
+/// CardIODetectionModeCardImageOnly: don't scan the card, just detect a credit-card-shaped card.
+/// CardIODetectionModeAutomatic: start as CardIODetectionModeCardImageAndNumber, but fall back to
+/// CardIODetectionModeCardImageOnly if scanning has not succeeded within a reasonable time.
+/// Defaults to CardIODetectionModeCardImageAndNumber.
+///
+/// @note Images returned in CardIODetectionModeCardImageOnly mode may be less focused, to accomodate scanning
+/// cards that are dominantly white (e.g., the backs of drivers licenses), and thus
+/// hard to calculate accurate focus scores for.
+@property(nonatomic, assign, readwrite) CardIODetectionMode detectionMode;
+
+/// After a successful scan, the CardIOView will briefly display an image of the card with
+/// the computed card number superimposed. This property controls how long (in seconds)
+/// that image will be displayed.
+/// Set this to 0.0 to suppress the display entirely.
+/// Defaults to 1.0.
+@property(nonatomic, assign, readwrite) CGFloat scannedImageDuration;
+
+/// Name for orientation change notification.
+extern NSString * const CardIOScanningOrientationDidChangeNotification;
+
+/// userInfo key for orientation change notification, to get the current scanning orientation.
+///
+/// Returned as an NSValue wrapping a UIDeviceOrientation. Sample extraction code:
+/// @code
+/// NSValue *wrappedOrientation = notification.userInfo[CardIOCurrentScanningOrientation];
+/// UIDeviceOrientation scanningOrientation = UIDeviceOrientationPortrait; // set a default value just to be safe
+/// [wrappedOrientation getValue:&scanningOrientation];
+/// // use scanningOrientation...
+/// @endcode
+extern NSString * const CardIOCurrentScanningOrientation;
+
+/// userInfo key for orientation change notification, to get the duration of the card.io rotation animations.
+///
+/// Returned as an NSNumber wrapping an NSTimeInterval (i.e. a double).
+extern NSString * const CardIOScanningOrientationAnimationDuration;
+
+
+#pragma mark - Property you MAY get
+
+/// The actual camera preview area within the CardIOView. Location is relative to the CardIOView's origin.
+/// You might want to use this, for example, when adjusting your view controller's view layout.
+@property(nonatomic, assign, readonly) CGRect cameraPreviewFrame;
+
+@end
+
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOViewDelegate.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOViewDelegate.h
new file mode 100644
index 0000000..c2fbe34
--- /dev/null
+++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOViewDelegate.h
@@ -0,0 +1,25 @@
+//
+// CardIOViewDelegate.h
+// See the file "LICENSE.md" for the full license governing this code.
+//
+
+#import
+
+@class CardIOCreditCardInfo;
+@class CardIOView;
+
+/// The receiver will be notified when the CardIOView completes it work.
+@protocol CardIOViewDelegate
+
+@required
+
+/// This method will be called when the CardIOView completes its work.
+/// It is up to you to hide or remove the CardIOView.
+/// At a minimum, you should give the user an opportunity to confirm that the card information was captured correctly.
+/// @param cardIOView The active CardIOView.
+/// @param cardInfo The results of the scan.
+/// @note cardInfo will be nil if exiting due to a problem (e.g., no available camera).
+- (void)cardIOView:(CardIOView *)cardIOView didScanCard:(CardIOCreditCardInfo *)cardInfo;
+
+@end
+
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Info.plist b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Info.plist
new file mode 100644
index 0000000..4a1f52a
Binary files /dev/null and b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Info.plist differ
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Modules/module.modulemap b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Modules/module.modulemap
new file mode 100644
index 0000000..eda5a50
--- /dev/null
+++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Modules/module.modulemap
@@ -0,0 +1,6 @@
+framework module CardIO {
+ umbrella header "CardIO.h"
+
+ export *
+ module * { export * }
+}
diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/_CodeSignature/CodeResources b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/_CodeSignature/CodeResources
new file mode 100644
index 0000000..1e7c199
--- /dev/null
+++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/_CodeSignature/CodeResources
@@ -0,0 +1,237 @@
+
+
+
+
+ files
+
+ Headers/CardIO.h
+
+ 3eXTstrH/h5t7E7ppxgwWawJ6LM=
+
+ Headers/CardIOCreditCardInfo.h
+
+ DwDiKnrazFcHS26uUuJNTYpQgN0=
+
+ Headers/CardIODetectionMode.h
+
+ O3frO/ZjVgR0galAxcVpT4zhMU4=
+
+ Headers/CardIOPaymentViewController.h
+
+ Ji+vJhnbPD541kWmVy47KQf3qDM=
+
+ Headers/CardIOPaymentViewControllerDelegate.h
+
+ Vaq56qgP65LDTA2w8enzxns0+78=
+
+ Headers/CardIOUtilities.h
+
+ Vb8NrAsSYWXhadG/n1HDbvAQOBc=
+
+ Headers/CardIOView.h
+
+ j6m4gGQKluRwwNanM1sbrxIbSdM=
+
+ Headers/CardIOViewDelegate.h
+
+ zyFHnyWpTU9g3Q3WW1zedKckBco=
+
+ Info.plist
+
+ Fhjo13gaLOf9REEAUs9+Xvox7YE=
+
+ Modules/module.modulemap
+
+ 8g+o/1F6ghz1BUdrphSv3LRj/sc=
+
+
+ files2
+
+ Headers/CardIO.h
+
+ hash
+
+ 3eXTstrH/h5t7E7ppxgwWawJ6LM=
+
+ hash2
+
+ 1zOZdClNPqdRCU8yMuBDDCM3ME+tGciHe/AFTkI+ALo=
+
+
+ Headers/CardIOCreditCardInfo.h
+
+ hash
+
+ DwDiKnrazFcHS26uUuJNTYpQgN0=
+
+ hash2
+
+ 4eTlQ7lFddRzDvPcyr1JNX5l5guWbvBzhtGL7B1sK4k=
+
+
+ Headers/CardIODetectionMode.h
+
+ hash
+
+ O3frO/ZjVgR0galAxcVpT4zhMU4=
+
+ hash2
+
+ VAjUh/OfCC1yD0nsPe4PhvK/U779O3kiAQTr/q/0y4U=
+
+
+ Headers/CardIOPaymentViewController.h
+
+ hash
+
+ Ji+vJhnbPD541kWmVy47KQf3qDM=
+
+ hash2
+
+ b3ud4gj2Ats6oZwPDctIK9J75QdbX9RRCRZ1pdSbNX8=
+
+
+ Headers/CardIOPaymentViewControllerDelegate.h
+
+ hash
+
+ Vaq56qgP65LDTA2w8enzxns0+78=
+
+ hash2
+
+ n4rEvmqiNzjlrhMhu7M6tbxUAB6pzlB4Q4nS6zhGeAc=
+
+
+ Headers/CardIOUtilities.h
+
+ hash
+
+ Vb8NrAsSYWXhadG/n1HDbvAQOBc=
+
+ hash2
+
+ O6nHdv9fFoKjIqUsuJW/x4iPI+vyfXbRUQqgHQmnUQI=
+
+
+ Headers/CardIOView.h
+
+ hash
+
+ j6m4gGQKluRwwNanM1sbrxIbSdM=
+
+ hash2
+
+ mOQuC56OoO6BFf+guO6Y6T2LO/H45r4tXsm4G/lmDVg=
+
+
+ Headers/CardIOViewDelegate.h
+
+ hash
+
+ zyFHnyWpTU9g3Q3WW1zedKckBco=
+
+ hash2
+
+ 7YQxH961OtpLmLwqIA9ohq5t+glPn0bK6m02W7/YmJA=
+
+
+ Modules/module.modulemap
+
+ hash
+
+ 8g+o/1F6ghz1BUdrphSv3LRj/sc=
+
+ hash2
+
+ RlcK4Xe7/x3QF7iH4YwlpvDBNb0tvxX43aprkD+OyHY=
+
+
+
+ rules
+
+ ^.*
+
+ ^.*\.lproj/
+
+ optional
+
+ weight
+ 1000
+
+ ^.*\.lproj/locversion.plist$
+
+ omit
+
+ weight
+ 1100
+
+ ^Base\.lproj/
+
+ weight
+ 1010
+
+ ^version.plist$
+
+
+ rules2
+
+ .*\.dSYM($|/)
+
+ weight
+ 11
+
+ ^(.*/)?\.DS_Store$
+
+ omit
+
+ weight
+ 2000
+
+ ^.*
+
+ ^.*\.lproj/
+
+ optional
+
+ weight
+ 1000
+
+ ^.*\.lproj/locversion.plist$
+
+ omit
+
+ weight
+ 1100
+
+ ^Base\.lproj/
+
+ weight
+ 1010
+
+ ^Info\.plist$
+
+ omit
+
+ weight
+ 20
+
+ ^PkgInfo$
+
+ omit
+
+ weight
+ 20
+
+ ^embedded\.provisionprofile$
+
+ weight
+ 20
+
+ ^version\.plist$
+
+ weight
+ 20
+
+
+
+
diff --git a/CardIOSDK/CardIOSDK.h b/Sources/CardIOSDK/CardIOSDK.h
similarity index 100%
rename from CardIOSDK/CardIOSDK.h
rename to Sources/CardIOSDK/CardIOSDK.h
diff --git a/CardIOSDK/Info.plist b/Sources/CardIOSDK/Info.plist
similarity index 100%
rename from CardIOSDK/Info.plist
rename to Sources/CardIOSDK/Info.plist