diff --git a/TrackIT-2020Nonprofit-patch-6/README.md b/TrackIT-2020Nonprofit-patch-6/README.md new file mode 100644 index 0000000..2f4bde7 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/README.md @@ -0,0 +1,12 @@ +# TrackIT +Open source mobile app to help track proximity contacts using powerful bluetooth technology + +### How does it work + +App uses bluetooth functionalities of your phone to scan as many devices in certain area as possible. When app scans the device it stores it into memory. + +App is saving scanned devices with their special id identifier. Identifier can be put as compromised by only officials who are conducting tests then notification arrives for the user who have been in close proximity of the infected identifier , saying that he needs to give all necessary contact information to officials and to stay home. + +If user is signed trough system as "isolated" and comes in proximity of other devices officials will be notified of that health breach. + + diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/Podfile b/TrackIT-2020Nonprofit-patch-6/TrackIT/Podfile new file mode 100644 index 0000000..f801485 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/Podfile @@ -0,0 +1,11 @@ +# Uncomment the next line to define a global platform for your project +# platform :ios, '9.0' + +target 'TrackIT' do + # Comment the next line if you don't want to use dynamic frameworks + use_frameworks! + + # Pods for TrackIT + pod 'lottie-ios' + +end diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/Podfile.lock b/TrackIT-2020Nonprofit-patch-6/TrackIT/Podfile.lock new file mode 100644 index 0000000..d59daa9 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/Podfile.lock @@ -0,0 +1,16 @@ +PODS: + - lottie-ios (3.1.6) + +DEPENDENCIES: + - lottie-ios + +SPEC REPOS: + trunk: + - lottie-ios + +SPEC CHECKSUMS: + lottie-ios: 85ce835dd8c53e02509f20729fc7d6a4e6645a0a + +PODFILE CHECKSUM: d765be0adb89bfd9928b5b65313cdca763b12f86 + +COCOAPODS: 1.9.1 diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcodeproj/project.pbxproj b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcodeproj/project.pbxproj new file mode 100644 index 0000000..0a95913 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcodeproj/project.pbxproj @@ -0,0 +1,425 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 51; + objects = { + +/* Begin PBXBuildFile section */ + C108DB36EF2F552A14453777 /* Pods_TrackIT.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 188D54E5AFC5D0B51D7BD933 /* Pods_TrackIT.framework */; }; + E16EA159242D36C200B0BE1F /* settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = E16EA158242D36C100B0BE1F /* settings.swift */; }; + E1E55B58242C118B00FFAA8A /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1E55B57242C118B00FFAA8A /* AppDelegate.swift */; }; + E1E55B5A242C118B00FFAA8A /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1E55B59242C118B00FFAA8A /* SceneDelegate.swift */; }; + E1E55B5C242C118B00FFAA8A /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1E55B5B242C118B00FFAA8A /* ViewController.swift */; }; + E1E55B5F242C118B00FFAA8A /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E1E55B5D242C118B00FFAA8A /* Main.storyboard */; }; + E1E55B61242C119500FFAA8A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E1E55B60242C119500FFAA8A /* Assets.xcassets */; }; + E1E55B64242C119500FFAA8A /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E1E55B62242C119500FFAA8A /* LaunchScreen.storyboard */; }; + E1E55B88242C121D00FFAA8A /* lf30_editor_SKZ870.json in Resources */ = {isa = PBXBuildFile; fileRef = E1E55B87242C121D00FFAA8A /* lf30_editor_SKZ870.json */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 188D54E5AFC5D0B51D7BD933 /* Pods_TrackIT.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TrackIT.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 29EFD4B810C83C6D90DC4A25 /* Pods-TrackIT.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TrackIT.release.xcconfig"; path = "Target Support Files/Pods-TrackIT/Pods-TrackIT.release.xcconfig"; sourceTree = ""; }; + 6F8A2AAB681311CE18D16556 /* Pods-TrackIT.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TrackIT.debug.xcconfig"; path = "Target Support Files/Pods-TrackIT/Pods-TrackIT.debug.xcconfig"; sourceTree = ""; }; + E16EA158242D36C100B0BE1F /* settings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = settings.swift; sourceTree = ""; }; + E1E55B54242C118B00FFAA8A /* TrackIT.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TrackIT.app; sourceTree = BUILT_PRODUCTS_DIR; }; + E1E55B57242C118B00FFAA8A /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + E1E55B59242C118B00FFAA8A /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + E1E55B5B242C118B00FFAA8A /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + E1E55B5E242C118B00FFAA8A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + E1E55B60242C119500FFAA8A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + E1E55B63242C119500FFAA8A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + E1E55B65242C119500FFAA8A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + E1E55B87242C121D00FFAA8A /* lf30_editor_SKZ870.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = lf30_editor_SKZ870.json; sourceTree = ""; }; + E1E55B8E242C2C5A00FFAA8A /* TrackIT.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = TrackIT.entitlements; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + E1E55B51242C118B00FFAA8A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C108DB36EF2F552A14453777 /* Pods_TrackIT.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 8929458AECDE0E30768C82C3 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 188D54E5AFC5D0B51D7BD933 /* Pods_TrackIT.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 9CD3431AD4CEA07C2192237B /* Pods */ = { + isa = PBXGroup; + children = ( + 6F8A2AAB681311CE18D16556 /* Pods-TrackIT.debug.xcconfig */, + 29EFD4B810C83C6D90DC4A25 /* Pods-TrackIT.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + E1E55B4B242C118A00FFAA8A = { + isa = PBXGroup; + children = ( + E1E55B87242C121D00FFAA8A /* lf30_editor_SKZ870.json */, + E1E55B56242C118B00FFAA8A /* TrackIT */, + E1E55B55242C118B00FFAA8A /* Products */, + 9CD3431AD4CEA07C2192237B /* Pods */, + 8929458AECDE0E30768C82C3 /* Frameworks */, + ); + sourceTree = ""; + }; + E1E55B55242C118B00FFAA8A /* Products */ = { + isa = PBXGroup; + children = ( + E1E55B54242C118B00FFAA8A /* TrackIT.app */, + ); + name = Products; + sourceTree = ""; + }; + E1E55B56242C118B00FFAA8A /* TrackIT */ = { + isa = PBXGroup; + children = ( + E1E55B8E242C2C5A00FFAA8A /* TrackIT.entitlements */, + E1E55B57242C118B00FFAA8A /* AppDelegate.swift */, + E1E55B59242C118B00FFAA8A /* SceneDelegate.swift */, + E1E55B5B242C118B00FFAA8A /* ViewController.swift */, + E16EA158242D36C100B0BE1F /* settings.swift */, + E1E55B5D242C118B00FFAA8A /* Main.storyboard */, + E1E55B60242C119500FFAA8A /* Assets.xcassets */, + E1E55B62242C119500FFAA8A /* LaunchScreen.storyboard */, + E1E55B65242C119500FFAA8A /* Info.plist */, + ); + path = TrackIT; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + E1E55B53242C118B00FFAA8A /* TrackIT */ = { + isa = PBXNativeTarget; + buildConfigurationList = E1E55B7E242C119500FFAA8A /* Build configuration list for PBXNativeTarget "TrackIT" */; + buildPhases = ( + 4835BAF832367208E8904B15 /* [CP] Check Pods Manifest.lock */, + E1E55B50242C118B00FFAA8A /* Sources */, + E1E55B51242C118B00FFAA8A /* Frameworks */, + E1E55B52242C118B00FFAA8A /* Resources */, + C47F024BA20C9E07952B0BE1 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TrackIT; + productName = TrackIT; + productReference = E1E55B54242C118B00FFAA8A /* TrackIT.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + E1E55B4C242C118A00FFAA8A /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1130; + LastUpgradeCheck = 1130; + ORGANIZATIONNAME = "Steve Ink"; + TargetAttributes = { + E1E55B53242C118B00FFAA8A = { + CreatedOnToolsVersion = 11.3; + }; + }; + }; + buildConfigurationList = E1E55B4F242C118A00FFAA8A /* Build configuration list for PBXProject "TrackIT" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = E1E55B4B242C118A00FFAA8A; + productRefGroup = E1E55B55242C118B00FFAA8A /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + E1E55B53242C118B00FFAA8A /* TrackIT */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + E1E55B52242C118B00FFAA8A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E1E55B88242C121D00FFAA8A /* lf30_editor_SKZ870.json in Resources */, + E1E55B64242C119500FFAA8A /* LaunchScreen.storyboard in Resources */, + E1E55B61242C119500FFAA8A /* Assets.xcassets in Resources */, + E1E55B5F242C118B00FFAA8A /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 4835BAF832367208E8904B15 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-TrackIT-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + C47F024BA20C9E07952B0BE1 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-TrackIT/Pods-TrackIT-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-TrackIT/Pods-TrackIT-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TrackIT/Pods-TrackIT-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + E1E55B50242C118B00FFAA8A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E1E55B5C242C118B00FFAA8A /* ViewController.swift in Sources */, + E16EA159242D36C200B0BE1F /* settings.swift in Sources */, + E1E55B58242C118B00FFAA8A /* AppDelegate.swift in Sources */, + E1E55B5A242C118B00FFAA8A /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + E1E55B5D242C118B00FFAA8A /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + E1E55B5E242C118B00FFAA8A /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + E1E55B62242C119500FFAA8A /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + E1E55B63242C119500FFAA8A /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + E1E55B7C242C119500FFAA8A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.2; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + E1E55B7D242C119500FFAA8A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + E1E55B7F242C119500FFAA8A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6F8A2AAB681311CE18D16556 /* Pods-TrackIT.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = TrackIT/TrackIT.entitlements; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = MC27HKM86M; + INFOPLIST_FILE = TrackIT/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "-020.TrackIT2"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + E1E55B80242C119500FFAA8A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 29EFD4B810C83C6D90DC4A25 /* Pods-TrackIT.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = TrackIT/TrackIT.entitlements; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = MC27HKM86M; + INFOPLIST_FILE = TrackIT/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "-020.TrackIT2"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + E1E55B4F242C118A00FFAA8A /* Build configuration list for PBXProject "TrackIT" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E1E55B7C242C119500FFAA8A /* Debug */, + E1E55B7D242C119500FFAA8A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + E1E55B7E242C119500FFAA8A /* Build configuration list for PBXNativeTarget "TrackIT" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E1E55B7F242C119500FFAA8A /* Debug */, + E1E55B80242C119500FFAA8A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = E1E55B4C242C118A00FFAA8A /* Project object */; +} diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..b0efb8c --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcodeproj/project.xcworkspace/xcuserdata/andreas.xcuserdatad/UserInterfaceState.xcuserstate b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcodeproj/project.xcworkspace/xcuserdata/andreas.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..ff01ecd Binary files /dev/null and b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcodeproj/project.xcworkspace/xcuserdata/andreas.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcodeproj/xcuserdata/andreas.xcuserdatad/xcschemes/xcschememanagement.plist b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcodeproj/xcuserdata/andreas.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..ee6451d --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcodeproj/xcuserdata/andreas.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + TrackIT.xcscheme_^#shared#^_ + + orderHint + 2 + + + + diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcworkspace/contents.xcworkspacedata b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..7af0153 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcworkspace/xcuserdata/andreas.xcuserdatad/UserInterfaceState.xcuserstate b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcworkspace/xcuserdata/andreas.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..30d9e20 Binary files /dev/null and b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcworkspace/xcuserdata/andreas.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcworkspace/xcuserdata/andreas.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcworkspace/xcuserdata/andreas.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..9eab65f --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT.xcworkspace/xcuserdata/andreas.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,6 @@ + + + diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/AppDelegate.swift b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/AppDelegate.swift new file mode 100644 index 0000000..29572a3 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/AppDelegate.swift @@ -0,0 +1,95 @@ +// +// AppDelegate.swift +// TrackIT +// +// Created by Laima Cernius-Ink on 3/25/20. +// Copyright © 2020 Steve Ink. All rights reserved. +// + + + + +import UIKit +import BackgroundTasks +import CoreBluetooth +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate,CBCentralManagerDelegate { + func centralManagerDidUpdateState(_ central: CBCentralManager) { + + } + + + private var centralManager : CBCentralManager! + func scheduleImagefetcher() { + let request = BGProcessingTaskRequest(identifier: "com.SO.imagefetcher") + request.requiresNetworkConnectivity = false // Need to true if your task need to network process. Defaults to false. + request.requiresExternalPower = false + //If we keep requiredExternalPower = true then it required device is connected to external power. + + request.earliestBeginDate = Date(timeIntervalSinceNow: 1 * 60) // fetch Image Count after 1 minute. + //Note :: EarliestBeginDate should not be set to too far into the future. + do { + try BGTaskScheduler.shared.submit(request) + } catch { + print("Could not schedule image fetch: (error)") + } + } + + func scheduleAppRefresh() { + + } + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + registerBackgroundTaks() +centralManager = CBCentralManager(delegate: self, queue: nil, options: nil) + let center = UNUserNotificationCenter.current() + + center.requestAuthorization(options: [.alert, .sound]) { (granted, error) in + } + return true + } + + //MARK: Register BackGround Tasks + private func registerBackgroundTaks() { + + BGTaskScheduler.shared.register(forTaskWithIdentifier: "com.SO.imagefetcher", using: nil) { task in + //This task is cast with processing request (BGProcessingTask) + + let center = UNUserNotificationCenter.current() + // MARK: UISceneSession Lifecycle + let content = UNMutableNotificationContent() + content.title = "Hey I'm a notification!" + content.body = "Look at me!" + + // Step 3: Create the notification trigger + let date = Date().addingTimeInterval(10) + + let dateComponents = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date) + + let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false) + + // Step 4: Create the request + + let uuidString = UUID().uuidString + + let request = UNNotificationRequest(identifier: uuidString, content: content, trigger: trigger) + + // Step 5: Register the request + center.add(request) { (error) in + // Check the error parameter and handle any errors + } + } + + + func applicationDidEnterBackground(_ application: UIApplication) { + scheduleAppRefresh() + scheduleImagefetcher() + } + + + + func cancelAllPendingBGTask() { + BGTaskScheduler.shared.cancelAllTaskRequests() + } +} +} diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/AppIcon.appiconset/Contents.json b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d8db8d6 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/Contents.json b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/Rectangle 7.imageset/Contents.json b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/Rectangle 7.imageset/Contents.json new file mode 100644 index 0000000..27f4621 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/Rectangle 7.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Rectangle 7.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/Rectangle 7.imageset/Rectangle 7.png b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/Rectangle 7.imageset/Rectangle 7.png new file mode 100644 index 0000000..557e73d Binary files /dev/null and b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/Rectangle 7.imageset/Rectangle 7.png differ diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/home.imageset/69524 1.png b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/home.imageset/69524 1.png new file mode 100644 index 0000000..42bf33b Binary files /dev/null and b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/home.imageset/69524 1.png differ diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/home.imageset/Contents.json b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/home.imageset/Contents.json new file mode 100644 index 0000000..d6b711b --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/home.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "69524 1.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/question.imageset/Contents.json b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/question.imageset/Contents.json new file mode 100644 index 0000000..e0f48d0 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/question.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "PNG image-520FB3231A8C-1 1.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/question.imageset/PNG image-520FB3231A8C-1 1.png b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/question.imageset/PNG image-520FB3231A8C-1 1.png new file mode 100644 index 0000000..d047c21 Binary files /dev/null and b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/question.imageset/PNG image-520FB3231A8C-1 1.png differ diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/settings.imageset/Contents.json b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/settings.imageset/Contents.json new file mode 100644 index 0000000..9632f73 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/settings.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "PNG image-00F48C98FD47-1 1.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/settings.imageset/PNG image-00F48C98FD47-1 1.png b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/settings.imageset/PNG image-00F48C98FD47-1 1.png new file mode 100644 index 0000000..28778b8 Binary files /dev/null and b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/settings.imageset/PNG image-00F48C98FD47-1 1.png differ diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/settings2.imageset/Contents.json b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/settings2.imageset/Contents.json new file mode 100644 index 0000000..9632f73 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/settings2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "PNG image-00F48C98FD47-1 1.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/settings2.imageset/PNG image-00F48C98FD47-1 1.png b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/settings2.imageset/PNG image-00F48C98FD47-1 1.png new file mode 100644 index 0000000..06cadaf Binary files /dev/null and b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Assets.xcassets/settings2.imageset/PNG image-00F48C98FD47-1 1.png differ diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Base.lproj/LaunchScreen.storyboard b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Base.lproj/Main.storyboard b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Base.lproj/Main.storyboard new file mode 100644 index 0000000..bd07e4a --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Base.lproj/Main.storyboard @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/GoogleService-Info.plist b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/GoogleService-Info.plist new file mode 100644 index 0000000..aa68dab --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/GoogleService-Info.plist @@ -0,0 +1,36 @@ + + + + + CLIENT_ID + 1041612323849-02nd6mvrp3q6qji398g6lvqoral4jq82.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.1041612323849-02nd6mvrp3q6qji398g6lvqoral4jq82 + API_KEY + AIzaSyBLEg-Qw-D0kl7CJO3AESD-C-u3bPDmni8 + GCM_SENDER_ID + 1041612323849 + PLIST_VERSION + 1 + BUNDLE_ID + com.2020.FirebaseTest + PROJECT_ID + sick-9b5ac + STORAGE_BUCKET + sick-9b5ac.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:1041612323849:ios:801113e4de4a1764370cd8 + DATABASE_URL + https://sick-9b5ac.firebaseio.com + + diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Info.plist b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Info.plist new file mode 100644 index 0000000..4f4e43d --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/Info.plist @@ -0,0 +1,76 @@ + + + + + NSBluetoothPeripheralUsageDescription + + NSBluetoothAlwaysUsageDescription + + BGTaskSchedulerPermittedIdentifiers + + com.SO.apprefresh + com.SO.imagefetcher + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + UIBackgroundModes + + fetch + processing + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/SceneDelegate.swift b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/SceneDelegate.swift new file mode 100644 index 0000000..f1d27e5 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/SceneDelegate.swift @@ -0,0 +1,53 @@ +// +// SceneDelegate.swift +// TrackIT +// +// Created by Laima Cernius-Ink on 3/25/20. +// Copyright © 2020 Steve Ink. All rights reserved. +// + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + guard let _ = (scene as? UIWindowScene) else { return } + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/TrackIT.entitlements b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/TrackIT.entitlements new file mode 100644 index 0000000..903def2 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/TrackIT.entitlements @@ -0,0 +1,8 @@ + + + + + aps-environment + development + + diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/ViewController.swift b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/ViewController.swift new file mode 100644 index 0000000..7114c4a --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/ViewController.swift @@ -0,0 +1,377 @@ +// +// ViewController.swift +// TrackIT +// +// Created by Laima Cernius-Ink on 3/25/20. +// Copyright © 2020 Steve Ink. All rights reserved. +// + +import UIKit +import Lottie +class ViewController: UIViewController { + + let animationView = AnimationView() + let home = UILabel() + let lbl = UILabel() + let screenSize: CGRect = UIScreen.main.bounds + let view1 = UIView() + let view2 = UIView() + let view3 = UIView() + let view4 = UIView() + let lbl1 = UITextView() + let lbl2 = UITextView() + let lbl3 = UITextView() + let lbl4 = UITextView() + + let description1 = UITextView() + let description2 = UITextView() + let description3 = UITextView() + let description4 = UITextView() + + var panGesture2 = UIPanGestureRecognizer() + func hexStringToUIColor (hex:String) -> UIColor { + var cString:String = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased() + + if (cString.hasPrefix("#")) { + cString.remove(at: cString.startIndex) + } + + if ((cString.count) != 6) { + return UIColor.gray + } + + var rgbValue:UInt64 = 0 + Scanner(string: cString).scanHexInt64(&rgbValue) + + return UIColor( + red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0, + green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0, + blue: CGFloat(rgbValue & 0x0000FF) / 255.0, + alpha: CGFloat(1.0) + ) + } + + override var prefersStatusBarHidden: Bool { + return true + } + + override func viewDidLoad() { + super.viewDidLoad() + + let screenWidth = screenSize.width + let screenHeight = screenSize.height + + let color1 = hexStringToUIColor(hex: "#2792FF") + let color2 = hexStringToUIColor(hex: "#7EBFFF") + + + home.text = "Home" + home.textColor = .black + home.frame.size.width = 200 + home.frame.size.height = 75 + home.center.x = 130 + home.center.y = 90 + // home.font = UIFont(name: "Avenir Next", size: 60) + home.font = .boldSystemFont(ofSize: 45) + + + view.addSubview(home) + let animation = Animation.named("lf30_editor_SKZ870", subdirectory: "") + + animationView.animation = animation + animationView.contentMode = .scaleAspectFit + animationView.frame.size.width = 300 + animationView.frame.size.height = 300 + animationView.center.x = view.center.x + animationView.center.y = view.center.y - 100 + + view.addSubview(animationView) + + lbl.text = "Active" + lbl.font = .boldSystemFont(ofSize: 20) + lbl.sizeToFit() + lbl.center.x = view.center.x + lbl.center.y = view.center.y - 100 + + lbl.textColor = .white + + view.addSubview(lbl) + + view1.layer.cornerRadius = 20 + view2.layer.cornerRadius = 20 + view3.layer.cornerRadius = 20 + view4.layer.cornerRadius = 20 + + view1.frame.size.width = screenWidth - 50 + view1.frame.size.height = 200 + view1.center.x = view.center.x + view1.center.y = animationView.center.y + 250 + view1.backgroundColor = color1 + view.addSubview(view1) + + + + + view2.frame.size.width = screenWidth - 50 + view2.frame.size.height = 200 + view2.center.x = view.center.x + view2.center.y = view1.center.y + 250 + view2.backgroundColor = color1 + view.addSubview(view2) + + view3.frame.size.width = screenWidth - 50 + view3.frame.size.height = 200 + view3.center.x = view.center.x + view3.center.y = view2.center.y + 250 + view3.backgroundColor = color1 + view.addSubview(view3) + + + view4.frame.size.width = screenWidth - 50 + view4.frame.size.height = 200 + view4.center.x = view.center.x + view4.center.y = view3.center.y + 250 + view4.backgroundColor = color1 + view.addSubview(view4) + + lbl1.isEditable = false + lbl2.isEditable = false + lbl3.isEditable = false + lbl4.isEditable = false + lbl1.text = "Why do we collect your data?" + lbl1.textColor = .white + lbl1.backgroundColor = .clear + lbl1.font = .boldSystemFont(ofSize: 24) + lbl1.frame.size.width = screenWidth - 70 + lbl1.frame.size.height = 170 + lbl1.center.x = view.center.x - 10 + lbl1.center.y = 90 + + + view1.addSubview(lbl1) + + lbl2.text = "What data do we collect?" + lbl2.textColor = .white + lbl2.backgroundColor = .clear + lbl2.frame.size.width = screenWidth - 70 + lbl2.frame.size.height = 170 + lbl2.center.x = view.center.x - 20 + lbl2.center.y = 90 + + lbl2.font = .boldSystemFont(ofSize: 24) + + + view2.addSubview(lbl2) + + lbl3.text = "Who recieves my data?" + lbl3.textColor = .white + lbl3.backgroundColor = .clear + lbl3.frame.size.width = screenWidth - 70 + lbl3.frame.size.height = 170 + lbl3.center.x = view.center.x - 10 + lbl3.center.y = 90 + + lbl3.font = .boldSystemFont(ofSize: 24) + + + view3.addSubview(lbl3) + + + lbl4.text = "How do you secure my data?" + lbl4.textColor = .white + lbl4.backgroundColor = .clear + lbl4.frame.size.width = screenWidth - 70 + lbl4.frame.size.height = 170 + lbl4.center.x = view.center.x - 10 + lbl4.center.y = 90 + + lbl4.font = .boldSystemFont(ofSize: 24) + + + + view4.addSubview(lbl4) + + + panGesture2 = UIPanGestureRecognizer(target: self, action: #selector(ViewController.draggedView2(_:))) + view.isUserInteractionEnabled = true + view.addGestureRecognizer(panGesture2) + + description1.text = "We strive to enable healthcare officals to save lives all with your help!" + description1.textColor = .white + description1.frame.size.width = 290 + description1.frame.size.height = 125 + description1.center.x = view.center.x - 20 + description1.center.y = 125 + + + description1.font = .systemFont(ofSize: 20) + description1.backgroundColor = .clear + description1.isEditable = false + view1.addSubview(description1) + + + description2.text = "We collect the userid’s of users you have been in contact with and..." + description2.textColor = .white + description2.frame.size.width = 290 + description2.frame.size.height = 125 + + description2.center.x = view.center.x - 20 + description2.center.y = 100 + + description2.font = .systemFont(ofSize: 20) + description2.backgroundColor = .clear + + view2.addSubview(description2) + description2.isEditable = false + description3.text = "Health officals such as WHO and the CDC among other officals recieve your data nonivasivly and securely. " + description3.textColor = .white + description3.frame.size.width = 290 + description3.frame.size.height = 125 + description3.center.x = view.center.x - 20 + description3.center.y = 105 + + + description3.font = .systemFont(ofSize: 20) + description3.backgroundColor = .clear + view3.addSubview(description3) + description3.isEditable = false + description4.text = "We secure our data with..." + description4.textColor = .white + description4.frame.size.width = 290 + description4.frame.size.height = 125 + description4.center.x = view.center.x - 20 + description4.center.y = 125 + + + description4.font = .systemFont(ofSize: 20) + description4.backgroundColor = .clear + description4.isEditable = false + view4.addSubview(description4) + } + + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + animationView.play(fromProgress: 0, + toProgress: 1, + loopMode: LottieLoopMode.loop, + completion: { (finished) in + if finished { + print("Animation Complete") + } else { + print("Animation cancelled") + } + }) + let screenWidth = screenSize.width + let screenHeight = screenSize.height + let timer = Timer.scheduledTimer(withTimeInterval: 0.01, repeats: true) { timer in + if self.home.center.y > 90 { + + + self.home.center.y = 90 + + + + } + + if self.home.center.y < -800 { + + + self.home.center.y = -700 + + + + } + } + + } + @objc func draggedView2(_ sender:UIPanGestureRecognizer){ + let screenWidth = screenSize.width + let screenHeight = screenSize.height + let timer = Timer.scheduledTimer(withTimeInterval: 0.01, repeats: true) { timer in + if self.home.center.y > 105 { + + + self.home.center.y = 105 + + + + } + + if self.home.center.y < -800 { + + + self.home.center.y = -700 + + + + } + } + //if viewDragLong == true { + //self.view.bringSubviewToFront(planet) + let translation = sender.translation(in: self.view) + // one.center = CGPoint(x: one.center.x, y: one.center.y + translation.y ) + sender.setTranslation(CGPoint.zero, in: self.view) + + UIView.animate(withDuration: 0.4, + delay: 0.0, + options: [], + animations: { [weak self] in + self!.home.center = CGPoint(x: self!.home.center.x, y: self!.home.center.y + translation.y * 1.7 ) + + + }, completion: nil) + + UIView.animate(withDuration: 0.4, + delay: 0.05, + options: [], + animations: { [weak self] in + self?.animationView.center.y = self!.home.center.y + 190 + self?.lbl.center.y = self!.home.center.y + 190 + + }, completion: nil) + + UIView.animate(withDuration: 0.3, + delay: 0.1, + options: [], + animations: { [weak self] in + self!.view1.center.y = ((self?.animationView.center.y)!) + 250 + + + }, completion: nil) + + + UIView.animate(withDuration: 0.4, + delay: 0.15, + options: [], + animations: { [weak self] in + self!.view2.center.y = self!.view1.center.y + 250 + + + }, completion: nil) + UIView.animate(withDuration: 0.4, + delay: 0.2, + options: [], + animations: { [weak self] in + self!.view3.center.y = self!.view2.center.y + 250 + + + }, completion: nil) + + UIView.animate(withDuration: 0.3, + delay: 0.25, + options: [], + animations: { [weak self] in + self!.view4.center.y = self!.view3.center.y + 250 + + + }, completion: nil) + + + + + + + // }/ + } +} + diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/settings.swift b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/settings.swift new file mode 100644 index 0000000..d128c07 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/settings.swift @@ -0,0 +1,80 @@ +// +// settings.swift +// TrackIT +// +// Created by Laima Cernius-Ink on 3/25/20. +// Copyright © 2020 Steve Ink. All rights reserved. +// + +import UIKit + +class settings: UIViewController { + + let home = UILabel() + let lbl = UILabel() + let screenSize: CGRect = UIScreen.main.bounds + let view1 = UIView() + + func hexStringToUIColor (hex:String) -> UIColor { + var cString:String = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased() + + if (cString.hasPrefix("#")) { + cString.remove(at: cString.startIndex) + } + + if ((cString.count) != 6) { + return UIColor.gray + } + + var rgbValue:UInt64 = 0 + Scanner(string: cString).scanHexInt64(&rgbValue) + + return UIColor( + red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0, + green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0, + blue: CGFloat(rgbValue & 0x0000FF) / 255.0, + alpha: CGFloat(1.0) + ) + } + + override var prefersStatusBarHidden: Bool { + return true + } + + + override func viewDidLoad() { + super.viewDidLoad() + + let screenWidth = screenSize.width + let screenHeight = screenSize.height + + let color1 = hexStringToUIColor(hex: "#2792FF") + let color2 = hexStringToUIColor(hex: "#7EBFFF") + + + + home.text = "Settings" + home.textColor = .black + home.frame.size.width = 200 + home.frame.size.height = 75 + home.center.x = 130 + home.center.y = 90 + // home.font = UIFont(name: "Avenir Next", size: 60) + home.font = .boldSystemFont(ofSize: 45) + + + view.addSubview(home) + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/syncPulse.swift b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/syncPulse.swift new file mode 100644 index 0000000..58dec95 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/syncPulse.swift @@ -0,0 +1,49 @@ +// +// syncPulse.swift +// TrackIT +// +// Created by Laima Cernius-Ink on 3/25/20. +// Copyright © 2020 Steve Ink. All rights reserved. +// + +import UIKit +import Firebase +class syncPulse: UIViewController { + + var time = 0 + override func viewDidLoad() { + super.viewDidLoad() + let timer = Timer.scheduledTimer(withTimeInterval: 5, repeats: true) { timer in + let db = Firestore.firestore() + self.time += 5 + print(self.time) + if 60 - self.time < 0 { + self.time = 0 + } + db.collection("sync").document("pulse").setData([ + "pulseTime": 60 - self.time, + + ]) { err in + if let err = err { + print("Error writing document: \(err)") + } else { + print("Document successfully written!") + } + } + } + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/workout.swift b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/workout.swift new file mode 100644 index 0000000..870eb68 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackIT/workout.swift @@ -0,0 +1,42 @@ +// +// workout.swift +// TrackIT +// +// Created by Laima Cernius-Ink on 3/26/20. +// Copyright © 2020 Steve Ink. All rights reserved. +// + +import UIKit +import HealthKit + +class WorkoutStartView: UIViewController { + + let healthStore = HKHealthStore() + + override func viewDidLoad() { + super.viewDidLoad() + title = "SpeedySloth" + navigationController?.navigationBar.prefersLargeTitles = true + + let typesToShare: Set = [ + HKQuantityType.workoutType() + ] + + let typesToRead: Set = [ + HKQuantityType.quantityType(forIdentifier: .heartRate)!, + HKQuantityType.quantityType(forIdentifier: .activeEnergyBurned)!, + HKQuantityType.quantityType(forIdentifier: .distanceWalkingRunning)! + ] + + healthStore.requestAuthorization(toShare: typesToShare, read: typesToRead) { (success, error) in + // Handle error + + } + let timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { timer in + print("hi") + } + } + +} + + diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackITTests/Info.plist b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackITTests/Info.plist new file mode 100644 index 0000000..64d65ca --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackITTests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackITTests/TrackITTests.swift b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackITTests/TrackITTests.swift new file mode 100644 index 0000000..81055ac --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackITTests/TrackITTests.swift @@ -0,0 +1,34 @@ +// +// TrackITTests.swift +// TrackITTests +// +// Created by Laima Cernius-Ink on 3/25/20. +// Copyright © 2020 Steve Ink. All rights reserved. +// + +import XCTest +@testable import TrackIT + +class TrackITTests: XCTestCase { + + override func setUp() { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testPerformanceExample() { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackITUITests/Info.plist b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackITUITests/Info.plist new file mode 100644 index 0000000..64d65ca --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackITUITests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackITUITests/TrackITUITests.swift b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackITUITests/TrackITUITests.swift new file mode 100644 index 0000000..2f162c7 --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/TrackITUITests/TrackITUITests.swift @@ -0,0 +1,43 @@ +// +// TrackITUITests.swift +// TrackITUITests +// +// Created by Laima Cernius-Ink on 3/25/20. +// Copyright © 2020 Steve Ink. All rights reserved. +// + +import XCTest + +class TrackITUITests: XCTestCase { + + override func setUp() { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTOSSignpostMetric.applicationLaunch]) { + XCUIApplication().launch() + } + } + } +} diff --git a/TrackIT-2020Nonprofit-patch-6/TrackIT/lf30_editor_SKZ870.json b/TrackIT-2020Nonprofit-patch-6/TrackIT/lf30_editor_SKZ870.json new file mode 100644 index 0000000..c19a05b --- /dev/null +++ b/TrackIT-2020Nonprofit-patch-6/TrackIT/lf30_editor_SKZ870.json @@ -0,0 +1 @@ +{"v":"5.5.0","fr":29.9700012207031,"ip":0,"op":70.0000028511585,"w":250,"h":250,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":90,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[118.549,117.468,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,2.889]},"t":0,"s":[83.62,83.62,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,-0.549]},"t":27,"s":[105.62,105.62,100]},{"t":52.0000021180034,"s":[83.62,83.62,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[106.672,106.672],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.15294117647058825,0.5725490196078431,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[7.715,9.008],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":72.0000029326201,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"w1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[100]},{"t":25.0000010182709,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[125.156,124.494,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[83.6,83.6,100]},{"t":25.0000010182709,"s":[234.048,234.048,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[69.508,69.508],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.3254901960784314,0.6549019607843137,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.187,0.605],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[139.443,139.443],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":70.0000028511585,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"w2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[100]},{"t":30.0000012219251,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[125.326,124.285,0],"ix":2},"a":{"a":0,"k":[-44.248,-66.371,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[92.661,92.661,100]},{"t":30.0000012219251,"s":[229.892,229.892,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[86.801,86.801],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.3254901960784314,0.6549019607843137,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-44.6,-65.6],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":70.0000028511585,"st":0,"bm":0}],"markers":[]} \ No newline at end of file