Full Code of urbanairship/ios-library for AI

main 60e0385d882f cached
1418 files
10.7 MB
2.9M tokens
4 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (11,525K chars total). Download the full file to get everything.
Repository: urbanairship/ios-library
Branch: main
Commit: 60e0385d882f
Files: 1418
Total size: 10.7 MB

Directory structure:
gitextract_2xh8r30o/

├── .github/
│   ├── CODEOWNERS
│   ├── CONTRIBUTING.md
│   ├── ISSUE_TEMPLATE.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows/
│       ├── check-cert.yml
│       ├── check_framework_size.yml
│       ├── ci.yml
│       ├── deploy_docC.yml
│       ├── merge.yml
│       ├── pr-review.yml
│       └── release.yml
├── .gitignore
├── .gitmodules
├── .ruby-version
├── .swift-format.json
├── .swiftpm/
│   └── xcode/
│       └── package.xcworkspace/
│           └── contents.xcworkspacedata
├── .whitesource
├── Airship/
│   ├── Airship.xcodeproj/
│   │   ├── project.pbxproj
│   │   ├── project.xcworkspace/
│   │   │   ├── contents.xcworkspacedata
│   │   │   └── xcshareddata/
│   │   │       └── IDEWorkspaceChecks.plist
│   │   └── xcshareddata/
│   │       └── xcschemes/
│   │           ├── AirshipAutomation.xcscheme
│   │           ├── AirshipBasement.xcscheme
│   │           ├── AirshipCore.xcscheme
│   │           ├── AirshipDebug.xcscheme
│   │           ├── AirshipFeatureFlags.xcscheme
│   │           ├── AirshipMessageCenter.xcscheme
│   │           ├── AirshipObjectiveC.xcscheme
│   │           └── AirshipPreferenceCenter.xcscheme
│   ├── AirshipAutomation/
│   │   ├── Info.plist
│   │   ├── Resources/
│   │   │   ├── AirshipAutomation.xcdatamodeld/
│   │   │   │   ├── .xccurrentversion
│   │   │   │   ├── AirshipAutomation 2.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── AirshipAutomation 3.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   └── AirshipAutomation.xcdatamodel/
│   │   │   │       └── contents
│   │   │   ├── UAAutomation.xcdatamodeld/
│   │   │   │   ├── .xccurrentversion
│   │   │   │   ├── UAAutomation 10.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 11.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 12.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 13.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 2.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 3.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 4.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 5.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 6.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 7.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 8.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 9.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   └── UAAutomation.xcdatamodel/
│   │   │   │       └── contents
│   │   │   └── UAFrequencyLimits.xcdatamodeld/
│   │   │       └── UAFrequencyLimits.xcdatamodel/
│   │   │           └── contents
│   │   ├── Source/
│   │   │   ├── ActionAutomation/
│   │   │   │   ├── ActionAutomationExecutor.swift
│   │   │   │   └── ActionAutomationPreparer.swift
│   │   │   ├── Actions/
│   │   │   │   ├── CancelSchedulesAction.swift
│   │   │   │   ├── LandingPageAction.swift
│   │   │   │   └── ScheduleAction.swift
│   │   │   ├── AirshipAutomationResources.swift
│   │   │   ├── AudienceCheck/
│   │   │   │   ├── AdditionalAudienceCheckerApiClient.swift
│   │   │   │   └── AdditionalAudienceCheckerResolver.swift
│   │   │   ├── Automation/
│   │   │   │   ├── ApplicationMetrics.swift
│   │   │   │   ├── AutomationAudience.swift
│   │   │   │   ├── AutomationCompoundAudience.swift
│   │   │   │   ├── AutomationDelay.swift
│   │   │   │   ├── AutomationSchedule.swift
│   │   │   │   ├── AutomationTrigger.swift
│   │   │   │   ├── DeferredAutomationData.swift
│   │   │   │   ├── Engine/
│   │   │   │   │   ├── AutomationDelayProcessor.swift
│   │   │   │   │   ├── AutomationEngine.swift
│   │   │   │   │   ├── AutomationEventFeed.swift
│   │   │   │   │   ├── AutomationEventsHistory.swift
│   │   │   │   │   ├── AutomationExecutor.swift
│   │   │   │   │   ├── AutomationPreparer.swift
│   │   │   │   │   ├── AutomationScheduleData.swift
│   │   │   │   │   ├── AutomationScheduleState.swift
│   │   │   │   │   ├── AutomationStore.swift
│   │   │   │   │   ├── ExecutionWindowProcessor.swift
│   │   │   │   │   ├── LegacyAutomationStore.swift
│   │   │   │   │   ├── PreparedSchedule.swift
│   │   │   │   │   ├── ScheduleExecuteResult.swift
│   │   │   │   │   ├── SchedulePrepareResult.swift
│   │   │   │   │   ├── ScheduleReadyResult.swift
│   │   │   │   │   ├── TriggerProcessor/
│   │   │   │   │   │   ├── AutomationTriggerProcessor.swift
│   │   │   │   │   │   ├── PreparedTrigger.swift
│   │   │   │   │   │   └── TriggerData.swift
│   │   │   │   │   └── TriggeringInfo.swift
│   │   │   │   └── ExecutionWindow.swift
│   │   │   ├── AutomationSDKModule.swift
│   │   │   ├── InAppAutomation.swift
│   │   │   ├── InAppAutomationComponent.swift
│   │   │   ├── InAppAutomationUpdateStatus.swift
│   │   │   ├── InAppMessage/
│   │   │   │   ├── Analytics/
│   │   │   │   │   ├── InAppDisplayImpressionRuleProvider.swift
│   │   │   │   │   ├── InAppMessageAnalytics.swift
│   │   │   │   │   └── InAppMessageAnalyticsFactory.swift
│   │   │   │   ├── Assets/
│   │   │   │   │   ├── AirshipCachedAssets.swift
│   │   │   │   │   ├── AssetCacheManager.swift
│   │   │   │   │   ├── DefaultAssetDownloader.swift
│   │   │   │   │   └── DefaultAssetFileManager.swift
│   │   │   │   ├── Display Adapter/
│   │   │   │   │   ├── AirshipLayoutDisplayAdapter.swift
│   │   │   │   │   ├── CustomDisplayAdapter.swift
│   │   │   │   │   ├── CustomDisplayAdapterWrapper.swift
│   │   │   │   │   ├── DisplayAdapter.swift
│   │   │   │   │   ├── DisplayAdapterFactory.swift
│   │   │   │   │   └── InAppMessageDisplayListener.swift
│   │   │   │   ├── Display Coordinators/
│   │   │   │   │   ├── DefaultDisplayCoordinator.swift
│   │   │   │   │   ├── DisplayCoordinator.swift
│   │   │   │   │   ├── DisplayCoordinatorManager.swift
│   │   │   │   │   └── ImmediateDisplayCoordinator.swift
│   │   │   │   ├── InAppActionRunner.swift
│   │   │   │   ├── InAppMessage.swift
│   │   │   │   ├── InAppMessageAutomationExecutor.swift
│   │   │   │   ├── InAppMessageAutomationPreparer.swift
│   │   │   │   ├── InAppMessageColor.swift
│   │   │   │   ├── InAppMessageDisplayContent.swift
│   │   │   │   ├── InAppMessageDisplayDelegate.swift
│   │   │   │   ├── InAppMessageEnvironment.swift
│   │   │   │   ├── InAppMessageSceneDelegate.swift
│   │   │   │   ├── InAppMessageSceneManager.swift
│   │   │   │   ├── InAppMessageValidation.swift
│   │   │   │   ├── InAppMessageViewDelegate.swift
│   │   │   │   ├── InAppMessaging.swift
│   │   │   │   ├── Info/
│   │   │   │   │   ├── InAppMessageButtonInfo.swift
│   │   │   │   │   ├── InAppMessageButtonLayoutType.swift
│   │   │   │   │   ├── InAppMessageMediaInfo.swift
│   │   │   │   │   └── InAppMessageTextInfo.swift
│   │   │   │   ├── Legacy/
│   │   │   │   │   ├── LegacyInAppAnalytics.swift
│   │   │   │   │   ├── LegacyInAppMessage.swift
│   │   │   │   │   └── LegacyInAppMessaging.swift
│   │   │   │   └── View/
│   │   │   │       ├── BeveledLoadingView.swift
│   │   │   │       ├── ButtonGroup.swift
│   │   │   │       ├── CloseButton.swift
│   │   │   │       ├── FullscreenView.swift
│   │   │   │       ├── HTMLView.swift
│   │   │   │       ├── InAppMessageBannerView.swift
│   │   │   │       ├── InAppMessageExtensions.swift
│   │   │   │       ├── InAppMessageHostingController.swift
│   │   │   │       ├── InAppMessageModalView.swift
│   │   │   │       ├── InAppMessageNativeBridgeExtension.swift
│   │   │   │       ├── InAppMessageRootView.swift
│   │   │   │       ├── InAppMessageViewUtils.swift
│   │   │   │       ├── InAppMessageWebView.swift
│   │   │   │       ├── MediaView.swift
│   │   │   │       ├── TextView.swift
│   │   │   │       └── Theme/
│   │   │   │           ├── InAppMessageTheme.swift
│   │   │   │           ├── InAppMessageThemeAdditionalPadding.swift
│   │   │   │           ├── InAppMessageThemeBanner.swift
│   │   │   │           ├── InAppMessageThemeButton.swift
│   │   │   │           ├── InAppMessageThemeFullscreen.swift
│   │   │   │           ├── InAppMessageThemeHTML.swift
│   │   │   │           ├── InAppMessageThemeManager.swift
│   │   │   │           ├── InAppMessageThemeMedia.swift
│   │   │   │           ├── InAppMessageThemeModal.swift
│   │   │   │           ├── InAppMessageThemeShadow.swift
│   │   │   │           ├── InAppMessageThemeText.swift
│   │   │   │           └── ThemeExtensions.swift
│   │   │   ├── Limits/
│   │   │   │   ├── FrequencyChecker.swift
│   │   │   │   ├── FrequencyConstraint.swift
│   │   │   │   ├── FrequencyLimitManager.swift
│   │   │   │   ├── FrequencyLimitStore.swift
│   │   │   │   └── Occurrence.swift
│   │   │   ├── RemoteData/
│   │   │   │   ├── AutomationRemoteDataAccess.swift
│   │   │   │   ├── AutomationRemoteDataSubscriber.swift
│   │   │   │   ├── AutomationSourceInfoStore.swift
│   │   │   │   └── DeferredScheduleResult.swift
│   │   │   └── Utils/
│   │   │       ├── ActiveTimer.swift
│   │   │       ├── AirshipAsyncSemaphore.swift
│   │   │       ├── AutomationActionRunner.swift
│   │   │       ├── RetryingQueue.swift
│   │   │       └── ScheduleConditionsChangedNotifier.swift
│   │   └── Tests/
│   │       ├── Action Automation/
│   │       │   ├── ActionAutomationExecutorTest.swift
│   │       │   └── ActionAutomationPreparerTest.swift
│   │       ├── Actions/
│   │       │   ├── CancelSchedulesActionTest.swift
│   │       │   ├── LandingPageActionTest.swift
│   │       │   └── ScheduleActionTest.swift
│   │       ├── Automation/
│   │       │   ├── ApplicationMetricsTest.swift
│   │       │   ├── AudienceCheck/
│   │       │   │   └── AdditionalAudienceCheckerResolverTest.swift
│   │       │   ├── AutomationScheduleDataTest.swift
│   │       │   ├── AutomationScheduleTest.swift
│   │       │   └── Engine/
│   │       │       ├── AutomationDelayProcessorTest.swift
│   │       │       ├── AutomationEngineTest.swift
│   │       │       ├── AutomationEventFeedTest.swift
│   │       │       ├── AutomationEventsHistoryTest.swift
│   │       │       ├── AutomationExecutorTest.swift
│   │       │       ├── AutomationPreparerTest.swift
│   │       │       ├── AutomationStoreTest.swift
│   │       │       ├── AutomationTriggerProcessorTest.swift
│   │       │       ├── ExecutionWindowProcessorTest.swift
│   │       │       ├── PreparedScheduleInfoTest.swift
│   │       │       └── PreparedTriggerTest.swift
│   │       ├── ExecutionWindowTest.swift
│   │       ├── InAppMessage/
│   │       │   ├── Analytics/
│   │       │   │   ├── DefaultInAppDisplayImpressionRuleProviderTest.swift
│   │       │   │   └── InAppMessageAnalyticsTest.swift
│   │       │   ├── Assets/
│   │       │   │   ├── AssetCacheManagerTest.swift
│   │       │   │   ├── DefaultAssetDownloaderTest.swift
│   │       │   │   └── DefaultAssetFileManagerTest.swift
│   │       │   ├── DefaultInAppActionRunnerTest.swift
│   │       │   ├── Display Adapter/
│   │       │   │   ├── AirshipLayoutDisplayAdapterTest.swift
│   │       │   │   ├── CustomDisplayAdapterWrapperTest.swift
│   │       │   │   ├── DisplayAdapterFactoryTest.swift
│   │       │   │   └── InAppMessageDisplayListenerTest.swift
│   │       │   ├── Display Coordinators/
│   │       │   │   ├── DefaultDisplayCoordinatorTest.swift
│   │       │   │   ├── DisplayCoordinatorManagerTest.swift
│   │       │   │   └── ImmediateDisplayCoordinatorTest.swift
│   │       │   ├── InAppMessageAutomationExecutorTest.swift
│   │       │   ├── InAppMessageAutomationPreparerTest.swift
│   │       │   ├── InAppMessageContentValidationTest.swift
│   │       │   ├── InAppMessageTest.swift
│   │       │   ├── InAppMessageThemeTest.swift
│   │       │   └── View/
│   │       │       └── InAppMessageNativeBridgeExtensionTest.swift
│   │       ├── InAppMessaging/
│   │       │   ├── Invalid-UAInAppMessageBannerStyle.plist
│   │       │   ├── Invalid-UAInAppMessageFullScreenStyle.plist
│   │       │   ├── Invalid-UAInAppMessageModalStyle.plist
│   │       │   ├── Valid-UAInAppMessageBannerStyle.plist
│   │       │   ├── Valid-UAInAppMessageFullScreenStyle.plist
│   │       │   ├── Valid-UAInAppMessageHTMLStyle.plist
│   │       │   └── Valid-UAInAppMessageModalStyle.plist
│   │       ├── Legacy/
│   │       │   ├── LegacyInAppAnalyticsTest.swift
│   │       │   ├── LegacyInAppMessageTest.swift
│   │       │   └── LegacyInAppMessagingTest.swift
│   │       ├── Limits/
│   │       │   └── FrequencyLimitManagerTest.swift
│   │       ├── RemoteData/
│   │       │   ├── AutomationRemoteDataAccessTest.swift
│   │       │   ├── AutomationRemoteDataSubscriberTest.swift
│   │       │   └── AutomationSourceInfoStoreTest.swift
│   │       ├── Test Utils/
│   │       │   ├── TestActionRunner.swift
│   │       │   ├── TestActiveTimer.swift
│   │       │   ├── TestAutomationEngine.swift
│   │       │   ├── TestCachedAssets.swift
│   │       │   ├── TestDisplayAdapter.swift
│   │       │   ├── TestDisplayCoordinator.swift
│   │       │   ├── TestFrequencyLimitsManager.swift
│   │       │   ├── TestInAppMessageAnalytics.swift
│   │       │   ├── TestInAppMessageAutomationExecutor.swift
│   │       │   └── TestRemoteDataAccess.swift
│   │       └── Utils/
│   │           ├── ActiveTimerTest.swift
│   │           ├── AirshipAsyncSemaphoreTest.swift
│   │           └── RetryingQueueTests.swift
│   ├── AirshipBasement/
│   │   ├── Info.plist
│   │   └── Source/
│   │       ├── AirshipLogHandler.swift
│   │       ├── AirshipLogPrivacyLevel.swift
│   │       ├── AirshipLogger.swift
│   │       ├── DefaultLogHandler.swift
│   │       └── LogLevel.swift
│   ├── AirshipConfig.xcconfig
│   ├── AirshipCore/
│   │   ├── Info.plist
│   │   ├── Resources/
│   │   │   ├── PrivacyInfo.xcprivacy
│   │   │   ├── UAEvents.xcdatamodeld/
│   │   │   │   └── UAEvents.xcdatamodel/
│   │   │   │       └── contents
│   │   │   ├── UAMeteredUsage.xcdatamodeld/
│   │   │   │   └── UAMeteredUsage.xcdatamodel/
│   │   │   │       └── contents
│   │   │   ├── UANativeBridge
│   │   │   ├── UANotificationCategories.plist
│   │   │   ├── UARemoteData.xcdatamodeld/
│   │   │   │   ├── .xccurrentversion
│   │   │   │   ├── UARemoteData 2.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UARemoteData 3.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UARemoteData 4.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   └── UARemoteData.xcdatamodel/
│   │   │   │       └── contents
│   │   │   ├── UARemoteDataMappingV1toV4.xcmappingmodel/
│   │   │   │   └── xcmapping.xml
│   │   │   ├── UARemoteDataMappingV2toV4.xcmappingmodel/
│   │   │   │   └── xcmapping.xml
│   │   │   ├── UARemoteDataMappingV3toV4.xcmappingmodel/
│   │   │   │   └── xcmapping.xml
│   │   │   ├── UAirshipCache.xcdatamodeld/
│   │   │   │   └── UAAirshipCache.xcdatamodel/
│   │   │   │       └── contents
│   │   │   ├── af.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── am.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── ar.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── bg.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── ca.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── cs.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── da.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── de.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── el.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── en.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── es-419.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── es.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── et.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── fa.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── fi.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── fr-CA.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── fr.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── hi.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── hr.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── hu.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── id.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── it.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── iw.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── ja.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── ko.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── lt.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── lv.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── ms.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── nl.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── no.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── pl.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── pt-PT.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── pt.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── ro.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── ru.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── sk.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── sl.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── sr.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── sv.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── sw.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── th.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── tr.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── uk.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── vi.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── zh-HK.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── zh-Hans.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── zh-Hant.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   └── zu.lproj/
│   │   │       └── UrbanAirship.strings
│   │   ├── Source/
│   │   │   ├── APNSEnvironment.swift
│   │   │   ├── APNSRegistrar.swift
│   │   │   ├── APNSRegistrationResult.swift
│   │   │   ├── AccountEventTemplate.swift
│   │   │   ├── ActionArguments.swift
│   │   │   ├── ActionRegistry.swift
│   │   │   ├── ActionResult.swift
│   │   │   ├── ActionRunner.swift
│   │   │   ├── ActivityViewController.swift
│   │   │   ├── AddCustomEventAction.swift
│   │   │   ├── AddTagsAction.swift
│   │   │   ├── Airship.swift
│   │   │   ├── AirshipAction.swift
│   │   │   ├── AirshipActorValue.swift
│   │   │   ├── AirshipAnalytics.swift
│   │   │   ├── AirshipAnalyticsFeed.swift
│   │   │   ├── AirshipAppCredentials.swift
│   │   │   ├── AirshipApptimizeIntegration.swift
│   │   │   ├── AirshipAsyncChannel.swift
│   │   │   ├── AirshipAsyncImage.swift
│   │   │   ├── AirshipAuthorizedNotificationSettings.swift
│   │   │   ├── AirshipBase64.swift
│   │   │   ├── AirshipButton.swift
│   │   │   ├── AirshipCache.swift
│   │   │   ├── AirshipCancellable.swift
│   │   │   ├── AirshipChannel.swift
│   │   │   ├── AirshipCheckboxToggleStyle.swift
│   │   │   ├── AirshipColor.swift
│   │   │   ├── AirshipComponent.swift
│   │   │   ├── AirshipConfig.swift
│   │   │   ├── AirshipContact.swift
│   │   │   ├── AirshipCoreDataPredicate.swift
│   │   │   ├── AirshipCoreResources.swift
│   │   │   ├── AirshipDate.swift
│   │   │   ├── AirshipDateFormatter.swift
│   │   │   ├── AirshipDevice.swift
│   │   │   ├── AirshipDeviceAudienceResult.swift
│   │   │   ├── AirshipDeviceID.swift
│   │   │   ├── AirshipDisplayTarget.swift
│   │   │   ├── AirshipEmbeddedInfo.swift
│   │   │   ├── AirshipEmbeddedObserver.swift
│   │   │   ├── AirshipEmbeddedSize.swift
│   │   │   ├── AirshipEmbeddedView.swift
│   │   │   ├── AirshipEmbeddedViewManager.swift
│   │   │   ├── AirshipErrors.swift
│   │   │   ├── AirshipEvent.swift
│   │   │   ├── AirshipEventData.swift
│   │   │   ├── AirshipEventType.swift
│   │   │   ├── AirshipEvents.swift
│   │   │   ├── AirshipFont.swift
│   │   │   ├── AirshipImageLoader.swift
│   │   │   ├── AirshipImageProvider.swift
│   │   │   ├── AirshipInputValidator.swift
│   │   │   ├── AirshipInstance.swift
│   │   │   ├── AirshipIvyVersionMatcher.swift
│   │   │   ├── AirshipJSON.swift
│   │   │   ├── AirshipJSONUtils.swift
│   │   │   ├── AirshipKeychainAccess.swift
│   │   │   ├── AirshipLayout.swift
│   │   │   ├── AirshipLocalizationUtils.swift
│   │   │   ├── AirshipLock.swift
│   │   │   ├── AirshipMeteredUsage.swift
│   │   │   ├── AirshipMeteredUsageEvent.swift
│   │   │   ├── AirshipNativePlatform.swift
│   │   │   ├── AirshipNetworkChecker.swift
│   │   │   ├── AirshipNotificationCenter.swift
│   │   │   ├── AirshipNotificationStatus.swift
│   │   │   ├── AirshipPasteboard.swift
│   │   │   ├── AirshipPrivacyManager.swift
│   │   │   ├── AirshipProgressView.swift
│   │   │   ├── AirshipPush.swift
│   │   │   ├── AirshipPushableComponent.swift
│   │   │   ├── AirshipRequest.swift
│   │   │   ├── AirshipRequestSession.swift
│   │   │   ├── AirshipResources.swift
│   │   │   ├── AirshipResponse.swift
│   │   │   ├── AirshipSDKExtension.swift
│   │   │   ├── AirshipSDKModule.swift
│   │   │   ├── AirshipSceneController.swift
│   │   │   ├── AirshipSceneManager.swift
│   │   │   ├── AirshipSimpleLayoutView.swift
│   │   │   ├── AirshipSimpleLayoutViewModel.swift
│   │   │   ├── AirshipStateOverrides.swift
│   │   │   ├── AirshipSwitchToggleStyle.swift
│   │   │   ├── AirshipSwizzler.swift
│   │   │   ├── AirshipTaskSleeper.swift
│   │   │   ├── AirshipTimeCriteria.swift
│   │   │   ├── AirshipTimerProtocol.swift
│   │   │   ├── AirshipToggle.swift
│   │   │   ├── AirshipUnsafeSendableWrapper.swift
│   │   │   ├── AirshipUtils.swift
│   │   │   ├── AirshipVersion.swift
│   │   │   ├── AirshipViewSizeReader.swift
│   │   │   ├── AirshipViewUtils.swift
│   │   │   ├── AirshipWeakValueHolder.swift
│   │   │   ├── AirshipWebview.swift
│   │   │   ├── AirshipWindowFactory.swift
│   │   │   ├── AirshipWorkManager.swift
│   │   │   ├── AirshipWorkManagerProtocol.swift
│   │   │   ├── AirshipWorkRequest.swift
│   │   │   ├── AirshipWorkResult.swift
│   │   │   ├── AirsihpTriggerContext.swift
│   │   │   ├── AnonContactData.swift
│   │   │   ├── AppIntegration.swift
│   │   │   ├── AppRemoteDataProviderDelegate.swift
│   │   │   ├── AppStateTracker.swift
│   │   │   ├── AppStateTrackerAdapter.swift
│   │   │   ├── ApplicationState.swift
│   │   │   ├── ArishipCustomViewManager.swift
│   │   │   ├── AssociatedIdentifiers.swift
│   │   │   ├── AsyncSerialQueue.swift
│   │   │   ├── AsyncStream.swift
│   │   │   ├── Atomic.swift
│   │   │   ├── AttributePendingMutations.swift
│   │   │   ├── AttributeUpdate.swift
│   │   │   ├── Attributes.swift
│   │   │   ├── AttributesEditor.swift
│   │   │   ├── AudienceDeviceInfoProvider.swift
│   │   │   ├── AudienceHashSelector.swift
│   │   │   ├── AudienceOverridesProvider.swift
│   │   │   ├── AudienceUtils.swift
│   │   │   ├── AuthToken.swift
│   │   │   ├── AutoIntegration.swift
│   │   │   ├── BackgroundColorViewModifier.swift
│   │   │   ├── Badger.swift
│   │   │   ├── BannerView.swift
│   │   │   ├── BaseCachingRemoteDataProvider.swift
│   │   │   ├── BasementImport.swift
│   │   │   ├── BasicToggleLayout.swift
│   │   │   ├── BlockAction.swift
│   │   │   ├── BundleExtensions.swift
│   │   │   ├── ButtonLayout.swift
│   │   │   ├── ButtonState.swift
│   │   │   ├── CachedList.swift
│   │   │   ├── CachedValue.swift
│   │   │   ├── CachingSMSValidatorAPIClient.swift
│   │   │   ├── CancellableValueHolder.swift
│   │   │   ├── ChallengeResolver.swift
│   │   │   ├── ChannelAPIClient.swift
│   │   │   ├── ChannelAudienceManager.swift
│   │   │   ├── ChannelAuthTokenAPIClient.swift
│   │   │   ├── ChannelAuthTokenProvider.swift
│   │   │   ├── ChannelBulkUpdateAPIClient.swift
│   │   │   ├── ChannelCapture.swift
│   │   │   ├── ChannelRegistrar.swift
│   │   │   ├── ChannelRegistrationPayload.swift
│   │   │   ├── ChannelScope.swift
│   │   │   ├── ChannelSubscriptionListProvider.swift
│   │   │   ├── ChannelType.swift
│   │   │   ├── Checkbox.swift
│   │   │   ├── CheckboxController.swift
│   │   │   ├── CheckboxState.swift
│   │   │   ├── CheckboxToggleLayout.swift
│   │   │   ├── CircularRegion.swift
│   │   │   ├── CloudSite.swift
│   │   │   ├── CompoundDeviceAudienceSelector.swift
│   │   │   ├── ContactAPIClient.swift
│   │   │   ├── ContactChannel.swift
│   │   │   ├── ContactChannelsAPIClient.swift
│   │   │   ├── ContactChannelsProvider.swift
│   │   │   ├── ContactConflictEvent.swift
│   │   │   ├── ContactManager.swift
│   │   │   ├── ContactManagerProtocol.swift
│   │   │   ├── ContactOperation.swift
│   │   │   ├── ContactRemoteDataProviderDelegate.swift
│   │   │   ├── ContactSubscriptionListClient.swift
│   │   │   ├── Container.swift
│   │   │   ├── CustomEvent.swift
│   │   │   ├── CustomView.swift
│   │   │   ├── DeepLinkAction.swift
│   │   │   ├── DeepLinkDelegate.swift
│   │   │   ├── DefaultAirshipAnalytics.swift
│   │   │   ├── DefaultAirshipChannel.swift
│   │   │   ├── DefaultAirshipContact.swift
│   │   │   ├── DefaultAirshipPush.swift
│   │   │   ├── DefaultAppIntegrationDelegate.swift
│   │   │   ├── DeferredAPIClient.swift
│   │   │   ├── DeferredResolver.swift
│   │   │   ├── DeviceAudienceChecker.swift
│   │   │   ├── DeviceAudienceSelector.swift
│   │   │   ├── DeviceTagSelector.swift
│   │   │   ├── Dispatcher.swift
│   │   │   ├── EmailRegistrationOptions.swift
│   │   │   ├── EmbeddedView.swift
│   │   │   ├── EmbeddedViewSelector.swift
│   │   │   ├── EmptyAction.swift
│   │   │   ├── EmptyView.swift
│   │   │   ├── EnableBehaviorModifiers.swift
│   │   │   ├── EnableFeatureAction.swift
│   │   │   ├── EnvironmentValues.swift
│   │   │   ├── EventAPIClient.swift
│   │   │   ├── EventHandlerViewModifier.swift
│   │   │   ├── EventManager.swift
│   │   │   ├── EventStore.swift
│   │   │   ├── EventUploadScheduler.swift
│   │   │   ├── EventUploadTuningInfo.swift
│   │   │   ├── EventUtils.swift
│   │   │   ├── Experiment.swift
│   │   │   ├── ExperimentDataProvider.swift
│   │   │   ├── ExperimentManager.swift
│   │   │   ├── ExternalURLProcessor.swift
│   │   │   ├── FarmHashFingerprint64.swift
│   │   │   ├── FetchDeviceInfoAction.swift
│   │   │   ├── FontViewModifier.swift
│   │   │   ├── FormController.swift
│   │   │   ├── FormInputViewModifier.swift
│   │   │   ├── HashChecker.swift
│   │   │   ├── IconView.swift
│   │   │   ├── Icons.swift
│   │   │   ├── Image.swift
│   │   │   ├── ImageButton.swift
│   │   │   ├── JSONMatcher.swift
│   │   │   ├── JSONPredicate.swift
│   │   │   ├── JSONValueMatcher.swift
│   │   │   ├── JSONValueMatcherPredicates.swift
│   │   │   ├── JSONValueTransformer.swift
│   │   │   ├── JavaScriptCommand.swift
│   │   │   ├── JavaScriptCommandDelegate.swift
│   │   │   ├── JavaScriptEnvironment.swift
│   │   │   ├── Label.swift
│   │   │   ├── LabelButton.swift
│   │   │   ├── LayoutState.swift
│   │   │   ├── LinearLayout.swift
│   │   │   ├── LiveActivity.swift
│   │   │   ├── LiveActivityRegistrationStatus.swift
│   │   │   ├── LiveActivityRegistrationStatusUpdates.swift
│   │   │   ├── LiveActivityRegistry.swift
│   │   │   ├── LiveActivityRestorer.swift
│   │   │   ├── LiveActivityUpdate.swift
│   │   │   ├── LocaleManager.swift
│   │   │   ├── Media.swift
│   │   │   ├── MediaEventTemplate.swift
│   │   │   ├── MessageCriteria.swift
│   │   │   ├── MessageDisplayHistory.swift
│   │   │   ├── MeteredUsageAPIClient.swift
│   │   │   ├── MeteredUsageStore.swift
│   │   │   ├── ModalView.swift
│   │   │   ├── ModifyAttributesAction.swift
│   │   │   ├── ModifyTagsAction.swift
│   │   │   ├── ModuleLoader.swift
│   │   │   ├── NativeBridge.swift
│   │   │   ├── NativeBridgeActionHandler.swift
│   │   │   ├── NativeBridgeActionRunner.swift
│   │   │   ├── NativeBridgeDelegate.swift
│   │   │   ├── NativeBridgeExtensionDelegate.swift
│   │   │   ├── NativeVideoPlayer.swift
│   │   │   ├── NotificationCategories.swift
│   │   │   ├── NotificationPermissionDelegate.swift
│   │   │   ├── NotificationRegistrar.swift
│   │   │   ├── NotificationRegistrationResult.swift
│   │   │   ├── OpenExternalURLAction.swift
│   │   │   ├── OpenRegistrationOptions.swift
│   │   │   ├── Pager.swift
│   │   │   ├── PagerController.swift
│   │   │   ├── PagerGestureMap.swift
│   │   │   ├── PagerIndicator.swift
│   │   │   ├── PagerState.swift
│   │   │   ├── PagerSwipeDirection.swift
│   │   │   ├── PagerUtils.swift
│   │   │   ├── PasteboardAction.swift
│   │   │   ├── Permission.swift
│   │   │   ├── PermissionDelegate.swift
│   │   │   ├── PermissionPrompter.swift
│   │   │   ├── PermissionStatus.swift
│   │   │   ├── PermissionsManager.swift
│   │   │   ├── PreferenceDataStore.swift
│   │   │   ├── PromptPermissionAction.swift
│   │   │   ├── ProximityRegion.swift
│   │   │   ├── PushNotificationDelegate.swift
│   │   │   ├── RadioInput.swift
│   │   │   ├── RadioInputController.swift
│   │   │   ├── RadioInputState.swift
│   │   │   ├── RadioInputToggleLayout.swift
│   │   │   ├── RateAppAction.swift
│   │   │   ├── RegionEvent.swift
│   │   │   ├── RegistrationDelegate.swift
│   │   │   ├── RemoteConfig.swift
│   │   │   ├── RemoteConfigCache.swift
│   │   │   ├── RemoteConfigManager.swift
│   │   │   ├── RemoteData.swift
│   │   │   ├── RemoteDataAPIClient.swift
│   │   │   ├── RemoteDataInfo.swift
│   │   │   ├── RemoteDataPayload.swift
│   │   │   ├── RemoteDataProtocol.swift
│   │   │   ├── RemoteDataProvider.swift
│   │   │   ├── RemoteDataProviderDelegate.swift
│   │   │   ├── RemoteDataProviderProtocol.swift
│   │   │   ├── RemoteDataSource.swift
│   │   │   ├── RemoteDataSourceStatus.swift
│   │   │   ├── RemoteDataStore.swift
│   │   │   ├── RemoteDataStorePayload.swift
│   │   │   ├── RemoteDataURLFactory.swift
│   │   │   ├── RemoveTagsAction.swift
│   │   │   ├── RetailEventTemplate.swift
│   │   │   ├── RootView.swift
│   │   │   ├── RuntimeConfig.swift
│   │   │   ├── SMSRegistrationOptions.swift
│   │   │   ├── SMSValidatorAPIClient.swift
│   │   │   ├── ScopedSubscriptionListEdit.swift
│   │   │   ├── ScopedSubscriptionListEditor.swift
│   │   │   ├── ScopedSubscriptionListUpdate.swift
│   │   │   ├── Score.swift
│   │   │   ├── ScoreController.swift
│   │   │   ├── ScoreState.swift
│   │   │   ├── ScoreToggleLayout.swift
│   │   │   ├── ScrollLayout.swift
│   │   │   ├── SearchEventTemplate.swift
│   │   │   ├── SerialQueue.swift
│   │   │   ├── SessionEvent.swift
│   │   │   ├── SessionEventFactory.swift
│   │   │   ├── SessionState.swift
│   │   │   ├── SessionTracker.swift
│   │   │   ├── Shapes.swift
│   │   │   ├── ShareAction.swift
│   │   │   ├── SmsLocalePicker.swift
│   │   │   ├── StackImageButton.swift
│   │   │   ├── StateController.swift
│   │   │   ├── StateSubscriptionsModifier.swift
│   │   │   ├── StoryIndicator.swift
│   │   │   ├── SubjectExtension.swift
│   │   │   ├── SubscriptionListAPIClient.swift
│   │   │   ├── SubscriptionListAction.swift
│   │   │   ├── SubscriptionListEdit.swift
│   │   │   ├── SubscriptionListEditor.swift
│   │   │   ├── SubscriptionListProvider.swift
│   │   │   ├── SubscriptionListUpdate.swift
│   │   │   ├── TagActionMutation.swift
│   │   │   ├── TagEditor.swift
│   │   │   ├── TagGroupMutations.swift
│   │   │   ├── TagGroupUpdate.swift
│   │   │   ├── TagGroupsEditor.swift
│   │   │   ├── TagsActionArgs.swift
│   │   │   ├── TextInput.swift
│   │   │   ├── Thomas.swift
│   │   │   ├── ThomasAccessibilityAction.swift
│   │   │   ├── ThomasAccessibleInfo.swift
│   │   │   ├── ThomasActionsPayload.swift
│   │   │   ├── ThomasAssociatedLabelResolver.swift
│   │   │   ├── ThomasAsyncImage.swift
│   │   │   ├── ThomasAttributeName.swift
│   │   │   ├── ThomasAttributeValue.swift
│   │   │   ├── ThomasAutomatedAccessibilityAction.swift
│   │   │   ├── ThomasAutomatedAction.swift
│   │   │   ├── ThomasBorder.swift
│   │   │   ├── ThomasButtonClickBehavior.swift
│   │   │   ├── ThomasButtonTapEffect.swift
│   │   │   ├── ThomasColor.swift
│   │   │   ├── ThomasConstants.swift
│   │   │   ├── ThomasConstrainedSize.swift
│   │   │   ├── ThomasDelegate.swift
│   │   │   ├── ThomasDirection.swift
│   │   │   ├── ThomasDisplayListener.swift
│   │   │   ├── ThomasEmailRegistrationOptions.swift
│   │   │   ├── ThomasEnableBehavior.swift
│   │   │   ├── ThomasEnvironment.swift
│   │   │   ├── ThomasEvent.swift
│   │   │   ├── ThomasEventHandler.swift
│   │   │   ├── ThomasFormDataCollector.swift
│   │   │   ├── ThomasFormField.swift
│   │   │   ├── ThomasFormFieldProcessor.swift
│   │   │   ├── ThomasFormPayloadGenerator.swift
│   │   │   ├── ThomasFormResult.swift
│   │   │   ├── ThomasFormState.swift
│   │   │   ├── ThomasFormStatus.swift
│   │   │   ├── ThomasFormSubmitBehavior.swift
│   │   │   ├── ThomasFormValidationMode.swift
│   │   │   ├── ThomasIcon.swift
│   │   │   ├── ThomasLayoutButtonTapEvent.swift
│   │   │   ├── ThomasLayoutContext.swift
│   │   │   ├── ThomasLayoutDisplayEvent.swift
│   │   │   ├── ThomasLayoutEvent.swift
│   │   │   ├── ThomasLayoutEventContext.swift
│   │   │   ├── ThomasLayoutEventMessageID.swift
│   │   │   ├── ThomasLayoutEventRecorder.swift
│   │   │   ├── ThomasLayoutEventSource.swift
│   │   │   ├── ThomasLayoutFormDisplayEvent.swift
│   │   │   ├── ThomasLayoutFormResultEvent.swift
│   │   │   ├── ThomasLayoutGestureEvent.swift
│   │   │   ├── ThomasLayoutPageActionEvent.swift
│   │   │   ├── ThomasLayoutPageSwipeEvent.swift
│   │   │   ├── ThomasLayoutPageViewEvent.swift
│   │   │   ├── ThomasLayoutPagerCompletedEvent.swift
│   │   │   ├── ThomasLayoutPagerSummaryEvent.swift
│   │   │   ├── ThomasLayoutPermissionResultEvent.swift
│   │   │   ├── ThomasLayoutResolutionEvent.swift
│   │   │   ├── ThomasMargin.swift
│   │   │   ├── ThomasMarkdownOptions.swift
│   │   │   ├── ThomasMediaFit.swift
│   │   │   ├── ThomasOrientation.swift
│   │   │   ├── ThomasPagerControllerBranching.swift
│   │   │   ├── ThomasPagerTracker.swift
│   │   │   ├── ThomasPlatform.swift
│   │   │   ├── ThomasPosition.swift
│   │   │   ├── ThomasPresentationInfo.swift
│   │   │   ├── ThomasPropertyOverride.swift
│   │   │   ├── ThomasSerializable.swift
│   │   │   ├── ThomasShadow.swift
│   │   │   ├── ThomasShapeInfo.swift
│   │   │   ├── ThomasSize.swift
│   │   │   ├── ThomasSizeConstraint.swift
│   │   │   ├── ThomasSmsLocale.swift
│   │   │   ├── ThomasState.swift
│   │   │   ├── ThomasStateAction.swift
│   │   │   ├── ThomasStateStorage.swift
│   │   │   ├── ThomasStateTrigger.swift
│   │   │   ├── ThomasTextAppearance.swift
│   │   │   ├── ThomasToggleStyleInfo.swift
│   │   │   ├── ThomasValidationInfo.swift
│   │   │   ├── ThomasViewController.swift
│   │   │   ├── ThomasViewInfo.swift
│   │   │   ├── ThomasViewedPageInfo.swift
│   │   │   ├── ThomasVisibilityInfo.swift
│   │   │   ├── ThomasWindowSize.swift
│   │   │   ├── ToggleLayout.swift
│   │   │   ├── TouchViewModifier.swift
│   │   │   ├── UAAppIntegrationDelegate.swift
│   │   │   ├── UACoreData.swift
│   │   │   ├── UARemoteDataMapping.swift
│   │   │   ├── UNNotificationRegistrar.swift
│   │   │   ├── URLAllowList.swift
│   │   │   ├── UrlInfo.swift
│   │   │   ├── ValidatableHelper.swift
│   │   │   ├── VideoController.swift
│   │   │   ├── VideoGroupState.swift
│   │   │   ├── VideoMediaNativeView.swift
│   │   │   ├── VideoMediaWebView.swift
│   │   │   ├── VideoState.swift
│   │   │   ├── ViewConstraints.swift
│   │   │   ├── ViewExtensions.swift
│   │   │   ├── ViewFactory.swift
│   │   │   ├── VisibilityViewModifier.swift
│   │   │   ├── WorkBackgroundTasks.swift
│   │   │   ├── WorkConditionsMonitor.swift
│   │   │   ├── WorkRateLimiterActor.swift
│   │   │   ├── Worker.swift
│   │   │   └── WrappingLayout.swift
│   │   └── Tests/
│   │       ├── APNSEnvironmentTest.swift
│   │       ├── AccountEventTemplateTest.swift
│   │       ├── ActionArgumentsTest.swift
│   │       ├── ActionRegistryTest.swift
│   │       ├── AddCustomEventActionTest.swift
│   │       ├── AddTagsActionTest.swift
│   │       ├── AirshipAnalyticFeedTest.swift
│   │       ├── AirshipAsyncChannelTest.swift
│   │       ├── AirshipBase64Test.swift
│   │       ├── AirshipBaseTest.swift
│   │       ├── AirshipCacheTest.swift
│   │       ├── AirshipColorTests.swift
│   │       ├── AirshipConfigTest.swift
│   │       ├── AirshipContactTest.swift
│   │       ├── AirshipDateFormatterTest.swift
│   │       ├── AirshipDeviceIDTest.swift
│   │       ├── AirshipEventsTest.swift
│   │       ├── AirshipHTTPResponseTest.swift
│   │       ├── AirshipIvyVersionMatcherTest.swift
│   │       ├── AirshipJSONTest.swift
│   │       ├── AirshipJSONUtilsTest.swift
│   │       ├── AirshipLocaleManagerTest.swift
│   │       ├── AirshipLocalizationUtilsTest.swift
│   │       ├── AirshipMeteredUsageTest.swift
│   │       ├── AirshipPrivacyManagerTest.swift
│   │       ├── AirshipPushTest.swift
│   │       ├── AirshipTest.swift
│   │       ├── AirshipURLAllowListTest.swift
│   │       ├── AirshipUtilsTest.swift
│   │       ├── AishipFontTests.swift
│   │       ├── Analytics/
│   │       │   ├── Events/
│   │       │   │   ├── ThomasLayoutButtonTapEventTest.swift
│   │       │   │   ├── ThomasLayoutDisplayEventTest.swift
│   │       │   │   ├── ThomasLayoutEventTestUtils.swift
│   │       │   │   ├── ThomasLayoutFormDisplayEventTest.swift
│   │       │   │   ├── ThomasLayoutFormResultEventTest.swift
│   │       │   │   ├── ThomasLayoutGestureEventTest.swift
│   │       │   │   ├── ThomasLayoutPageActionEventTest.swift
│   │       │   │   ├── ThomasLayoutPageSwipeEventAction.swift
│   │       │   │   ├── ThomasLayoutPageViewEventTest.swift
│   │       │   │   ├── ThomasLayoutPagerCompletedEventTest.swift
│   │       │   │   ├── ThomasLayoutPagerSummaryEventTest.swift
│   │       │   │   ├── ThomasLayoutPermissionResultEventTest.swift
│   │       │   │   └── ThomasLayoutResolutionEventTest.swift
│   │       │   ├── ThomasDisplayListenerTest.swift
│   │       │   ├── ThomasLayoutEventContextTest.swift
│   │       │   ├── ThomasLayoutEventMessageIDTest.swift
│   │       │   └── ThomasLayoutEventRecorderTest.swift
│   │       ├── AnalyticsTest.swift
│   │       ├── AppIntegrationTests.swift
│   │       ├── AppRemoteDataProviderDelegateTest.swift
│   │       ├── AppStateTrackerTest.swift
│   │       ├── AssociatedIdentifiersTest.swift
│   │       ├── AttributeEditorTest.swift
│   │       ├── AttributeUpdateTest.swift
│   │       ├── AudienceHashSelectorTest.swift
│   │       ├── AudienceUtilsTest.swift
│   │       ├── CachedListTest.swift
│   │       ├── CachedValueTest.swift
│   │       ├── ChallengeResolverTest.swift
│   │       ├── ChannelAPIClientTest.swift
│   │       ├── ChannelAudienceManagerTest.swift
│   │       ├── ChannelAuthTokenAPIClientTest.swift
│   │       ├── ChannelAuthTokenProviderTest.swift
│   │       ├── ChannelBulkUpdateAPIClientTest.swift
│   │       ├── ChannelCaptureTest.swift
│   │       ├── ChannelRegistrarTest.swift
│   │       ├── ChannelRegistrationPayloadTest.swift
│   │       ├── ChannelTest.swift
│   │       ├── CircularRegionTest.swift
│   │       ├── CompoundDeviceAudienceSelectorTest.swift
│   │       ├── ContactAPIClientTest.swift
│   │       ├── ContactChannelsProviderTest.swift
│   │       ├── ContactManagerTest.swift
│   │       ├── ContactOperationTest.swift
│   │       ├── ContactRemoteDataProviderTest.swift
│   │       ├── ContactSubscriptionListAPIClientTest.swift
│   │       ├── CustomEventTest.swift
│   │       ├── CustomNotificationCategories.plist
│   │       ├── DeepLinkActionTest.swift
│   │       ├── DeepLinkHandlerTest.swift
│   │       ├── DefaultAirshipRequestSessionTest.swift
│   │       ├── DefaultAppIntegrationDelegateTest.swift
│   │       ├── DefaultTaskSleeperTest.swift
│   │       ├── DeferredAPIClientTest.swift
│   │       ├── DeferredResolverTest.swift
│   │       ├── DeviceAudienceSelectorTest.swift
│   │       ├── DeviceTagSelectorTest.swift
│   │       ├── EnableFeatureActionTest.swift
│   │       ├── Environment/
│   │       │   ├── ThomasEnvironmentTest.swift
│   │       │   ├── ThomasFormDataCollectorTest.swift
│   │       │   ├── ThomasFormFieldProcessorTest.swift
│   │       │   ├── ThomasFormFieldTest.swift
│   │       │   ├── ThomasFormPayloadGeneratorTest.swift
│   │       │   ├── ThomasFormStateTest.swift
│   │       │   ├── ThomasPagerTrackerTest.swift
│   │       │   └── ThomasStateTest.swift
│   │       ├── EventAPIClientTest.swift
│   │       ├── EventManagerTest.swift
│   │       ├── EventSchedulerTest.swift
│   │       ├── EventStoreTest.swift
│   │       ├── EventTestUtils.swift
│   │       ├── ExperimentManagerTest.swift
│   │       ├── ExperimentTest.swift
│   │       ├── FarmHashFingerprint64Test.swift
│   │       ├── FetchDeviceInfoActionTest.swift
│   │       ├── HashCheckerTest.swift
│   │       ├── Info.plist
│   │       ├── Input Validation/
│   │       │   ├── AirshipInputValidationTest.swift
│   │       │   ├── CachingSMSValidatorAPIClientTest.swift
│   │       │   ├── SMSValidatorAPIClientTest.swift
│   │       │   └── TestSMSValidatorAPIClient.swift
│   │       ├── JSONPredicateTest.swift
│   │       ├── JavaScriptCommandTest.swift
│   │       ├── JsonMatcherTest.swift
│   │       ├── JsonValueMatcherTest.swift
│   │       ├── LayoutModelsTest.swift
│   │       ├── LiveActivityRegistryTest.swift
│   │       ├── MediaEventTemplateTest.swift
│   │       ├── MeteredUsageApiClientTest.swift
│   │       ├── ModifyAttributesActionTest.swift
│   │       ├── ModifyTagsActionTest.swift
│   │       ├── NativeBridgeActionHandlerTest.swift
│   │       ├── NotificationCategoriesTest.swift
│   │       ├── OpenExternalURLActionTest.swift
│   │       ├── PagerControllerTest.swift
│   │       ├── PasteboardActionTest.swift
│   │       ├── PermissionsManagerTests.swift
│   │       ├── PreferenceDataStoreTest.swift
│   │       ├── PromptPermissionActionTest.swift
│   │       ├── ProximityRegionTest.swift
│   │       ├── RateAppActionTest.swift
│   │       ├── RegionEventTest.swift
│   │       ├── RemoteConfigManagerTest.swift
│   │       ├── RemoteConfigTest.swift
│   │       ├── RemoteDataAPIClientTest.swift
│   │       ├── RemoteDataProviderTest.swift
│   │       ├── RemoteDataStoreTest.swift
│   │       ├── RemoteDataTest.swift
│   │       ├── RemoteDataTestUtils.swift
│   │       ├── RemoteDataURLFactoryTest.swift
│   │       ├── RemoveTagsActionTest.swift
│   │       ├── RetailEventTemplateTest.swift
│   │       ├── RuntimeConfig.swift
│   │       ├── RuntimeConfigTest.swift
│   │       ├── SearchEventTemplateTest.swift
│   │       ├── SessionTrackerTest.swift
│   │       ├── ShareActionTest.swift
│   │       ├── SubscriptionListAPIClientTest.swift
│   │       ├── SubscriptionListActionTest.swift
│   │       ├── Support/
│   │       │   ├── AirshipConfig-Valid-Legacy.plist
│   │       │   ├── AirshipConfig-Valid.plist
│   │       │   ├── TestAppStateTracker.swift
│   │       │   ├── airship.der
│   │       │   ├── development-embedded.mobileprovision
│   │       │   ├── production-embedded.mobileprovision
│   │       │   └── testMCColorsCatalog.xcassets/
│   │       │       ├── Contents.json
│   │       │       └── seapunkTestColor.colorset/
│   │       │           └── Contents.json
│   │       ├── TagEditorTest.swift
│   │       ├── TagGroupsEditorTest.swift
│   │       ├── TestAirshipInstance.swift
│   │       ├── TestAirshipRequestSession.swift
│   │       ├── TestAnalytics.swift
│   │       ├── TestAudienceChecker.swift
│   │       ├── TestCache.swift
│   │       ├── TestChannel.swift
│   │       ├── TestChannelAudienceManager.swift
│   │       ├── TestChannelAuthTokenAPIClient.swift
│   │       ├── TestChannelBulkUpdateAPIClient.swift
│   │       ├── TestChannelRegistrar.swift
│   │       ├── TestContact.swift
│   │       ├── TestContactAPIClient.swift
│   │       ├── TestContactSubscriptionListAPIClient.swift
│   │       ├── TestDate.swift
│   │       ├── TestDeferredResolver.swift
│   │       ├── TestDispatcher.swift
│   │       ├── TestExperimentDataProvider.swift
│   │       ├── TestKeychainAccess.swift
│   │       ├── TestLocaleManager.swift
│   │       ├── TestNetworkMonitor.swift
│   │       ├── TestPermissionPrompter.swift
│   │       ├── TestPrivacyManager.swift
│   │       ├── TestPush.swift
│   │       ├── TestRemoteData.swift
│   │       ├── TestRemoteDataAPIClient.swift
│   │       ├── TestSubscriptionListAPIClient.swift
│   │       ├── TestThomasLayoutEvent.swift
│   │       ├── TestURLAllowList.swift
│   │       ├── TestURLOpener.swift
│   │       ├── TestWorkManager.swift
│   │       ├── TestWorkRateLimiterActor.swift
│   │       ├── ThomasPresentationModelCodingTest.swift
│   │       ├── ThomasValidationTests.swift
│   │       ├── ThomasViewModelTest.swift
│   │       ├── Types/
│   │       │   ├── PagerDisableSwipeSelectorTest.swift
│   │       │   └── ThomasEmailRegistrationOptionsTest.swift
│   │       ├── VideoMediaWebViewTests.swift
│   │       └── WorkManager/
│   │           └── WorkRateLimiterTests.swift
│   ├── AirshipDebug/
│   │   ├── Info.plist
│   │   ├── Resources/
│   │   │   ├── AirshipDebugEventData.xcdatamodeld/
│   │   │   │   └── AirshipEventData.xcdatamodel/
│   │   │   │       └── contents
│   │   │   └── AirshipDebugPushData.xcdatamodeld/
│   │   │       └── AirshipDebugPushData.xcdatamodel/
│   │   │           └── contents
│   │   └── Source/
│   │       ├── AirshipDebugManager.swift
│   │       ├── AirshipDebugResources.swift
│   │       ├── DebugComponent.swift
│   │       ├── DebugSDKModule.swift
│   │       ├── Events/
│   │       │   ├── AirshipEvent.swift
│   │       │   ├── EventData.swift
│   │       │   └── EventDataManager.swift
│   │       ├── Push/
│   │       │   ├── PushData+CoreDataClass.swift
│   │       │   ├── PushData+CoreDataProperties.swift
│   │       │   ├── PushDataManager.swift
│   │       │   └── PushNotification.swift
│   │       ├── ShakeUtils.swift
│   │       └── View/
│   │           ├── AirshipDebugContentView.swift
│   │           ├── AirshipDebugRoute.swift
│   │           ├── AirshipDebugView.swift
│   │           ├── AirshipoDebugTriggers.swift
│   │           ├── Analytics/
│   │           │   ├── AirshipDebugAddEventView.swift
│   │           │   ├── AirshipDebugAnalyticIdentifierEditorView.swift
│   │           │   ├── AirshipDebugAnalyticsView.swift
│   │           │   ├── AirshipDebugEventDetailsView.swift
│   │           │   └── AirshipDebugEventsView.swift
│   │           ├── AppInfo/
│   │           │   └── AirshipDebugAppInfoView.swift
│   │           ├── Automations/
│   │           │   ├── AirshipDebugAutomationsView.swift
│   │           │   ├── AirshipDebugExperimentsView.swift
│   │           │   └── AirshipDebugInAppExperiencesView.swift
│   │           ├── Channel/
│   │           │   ├── AirshipDebugChannelSubscriptionsView.swift
│   │           │   ├── AirshipDebugChannelTagView.swift
│   │           │   └── AirshipDebugChannelView.swift
│   │           ├── Common/
│   │           │   ├── AirshipDebugAddPropertyView.swift
│   │           │   ├── AirshipDebugAddStringPropertyView.swift
│   │           │   ├── AirshipDebugAttributesEditorView.swift
│   │           │   ├── AirshipDebugAudienceSubject.swift
│   │           │   ├── AirshipDebugExtensions.swift
│   │           │   ├── AirshipDebugTagGroupsEditorView.swift
│   │           │   ├── AirshipJSONDetailsView.swift
│   │           │   ├── AirshipJSONView.swift
│   │           │   ├── AirshipToast.swift
│   │           │   └── Extensions.swift
│   │           ├── Contact/
│   │           │   ├── AirshipDebugAddEmailChannelView.swift
│   │           │   ├── AirshipDebugAddOpenChannelView.swift
│   │           │   ├── AirshipDebugAddSMSChannelView.swift
│   │           │   ├── AirshipDebugContactSubscriptionEditorView.swift
│   │           │   ├── AirshipDebugContactView.swift
│   │           │   └── AirshipDebugNamedUserView.swift
│   │           ├── FeatureFlags/
│   │           │   ├── AirshipDebugFeatureFlagDetailsView.swift
│   │           │   └── AirshipDebugFeatureFlagView.swift
│   │           ├── PreferenceCenter/
│   │           │   ├── AirshipDebugPreferencCenterItemView.swift
│   │           │   └── AirshipDebugPreferenceCenterView.swift
│   │           ├── PrivacyManager/
│   │           │   └── AirshipDebugPrivacyManagerView.swift
│   │           ├── Push/
│   │           │   ├── AirshipDebugPushDetailsView.swift
│   │           │   ├── AirshipDebugPushView.swift
│   │           │   └── AirshipDebugReceivedPushView.swift
│   │           └── TvOSComponents/
│   │               ├── TVDatePicker.swift
│   │               └── TVSlider.swift
│   ├── AirshipFeatureFlags/
│   │   ├── Info.plist
│   │   ├── Source/
│   │   │   ├── AirshipFeatureFlagsSDKModule.swift
│   │   │   ├── DeferredFlagResolver.swift
│   │   │   ├── FeatureFlag.swift
│   │   │   ├── FeatureFlagAnalytics.swift
│   │   │   ├── FeatureFlagComponent.swift
│   │   │   ├── FeatureFlagManager.swift
│   │   │   ├── FeatureFlagManagerProtocol.swift
│   │   │   ├── FeatureFlagPayload.swift
│   │   │   ├── FeatureFlagResultCache.swift
│   │   │   ├── FeatureFlagUpdateStatus.swift
│   │   │   └── FeatureFlagsRemoteDataAccess.swift
│   │   └── Tests/
│   │       ├── FeatureFlagAnalyticsTest.swift
│   │       ├── FeatureFlagDeferredResolverTest.swift
│   │       ├── FeatureFlagInfoTest.swift
│   │       ├── FeatureFlagManagerTest.swift
│   │       ├── FeatureFlagRemoteDataAccessTest.swift
│   │       ├── FeatureFlagResultCacheTest.swift
│   │       └── FeatureFlagVariablesTest.swift
│   ├── AirshipMessageCenter/
│   │   ├── Info.plist
│   │   ├── Resources/
│   │   │   ├── TestAssets.xcassets/
│   │   │   │   ├── Contents.json
│   │   │   │   └── testNamedColor.colorset/
│   │   │   │       └── Contents.json
│   │   │   ├── UAInbox.xcdatamodeld/
│   │   │   │   ├── .xccurrentversion
│   │   │   │   ├── UAInbox 2.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAInbox 3.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAInbox 4.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   └── UAInbox.xcdatamodel/
│   │   │   │       └── contents
│   │   │   ├── UAInboxDataMappingV1toV4.xcmappingmodel/
│   │   │   │   └── xcmapping.xml
│   │   │   ├── UAInboxDataMappingV2toV4.xcmappingmodel/
│   │   │   │   └── xcmapping.xml
│   │   │   └── UAInboxDataMappingV3toV4.xcmappingmodel/
│   │   │       └── xcmapping.xml
│   │   ├── Source/
│   │   │   ├── AirshipMessageCenterResources.swift
│   │   │   ├── MessageCenter.swift
│   │   │   ├── MessageCenterAPIClient.swift
│   │   │   ├── MessageCenterAction.swift
│   │   │   ├── MessageCenterComponent.swift
│   │   │   ├── MessageCenterList.swift
│   │   │   ├── MessageCenterNativeBridgeExtension.swift
│   │   │   ├── MessageCenterPredicate.swift
│   │   │   ├── MessageCenterSDKModule.swift
│   │   │   ├── MessageCenterStore.swift
│   │   │   ├── MessageViewAnalytics.swift
│   │   │   ├── Model/
│   │   │   │   ├── InboxMessageData.swift
│   │   │   │   ├── MessageCenterMessage.swift
│   │   │   │   ├── MessageCenterUser.swift
│   │   │   │   └── UAInboxDataMapping.swift
│   │   │   ├── StateStore/
│   │   │   │   └── NativeLayoutPersistentDataStore.swift
│   │   │   ├── Theme/
│   │   │   │   ├── MessageCenterNavigationAppearance.swift
│   │   │   │   ├── MessageCenterTheme.swift
│   │   │   │   └── MessageCenterThemeLoader.swift
│   │   │   ├── ViewModel/
│   │   │   │   └── MessageCenterListItemViewModel.swift
│   │   │   └── Views/
│   │   │       ├── MessageCenter/
│   │   │       │   ├── MessageCenterContent.swift
│   │   │       │   ├── MessageCenterController.swift
│   │   │       │   ├── MessageCenterNavigationStack.swift
│   │   │       │   ├── MessageCenterSplitNavigationView.swift
│   │   │       │   ├── MessageCenterUIKitAppearance.swift
│   │   │       │   └── MessageCenterView.swift
│   │   │       ├── MessageCenterViewController.swift
│   │   │       ├── MessageList/
│   │   │       │   ├── MessageCenterListItemView.swift
│   │   │       │   ├── MessageCenterListView.swift
│   │   │       │   ├── MessageCenterListViewModel.swift
│   │   │       │   └── MessageCenterListViewWithNavigation.swift
│   │   │       ├── MessageView/
│   │   │       │   ├── MessageCenterMessageError.swift
│   │   │       │   ├── MessageCenterMessageView.swift
│   │   │       │   ├── MessageCenterMessageViewModel.swift
│   │   │       │   ├── MessageCenterMessageViewWithNavigation.swift
│   │   │       │   ├── MessageCenterThomasView.swift
│   │   │       │   └── MessageCenterWebView.swift
│   │   │       └── Shared/
│   │   │           └── MessageCenterBackButton.swift
│   │   └── Tests/
│   │       ├── MessageCenterAPIClientTest.swift
│   │       ├── MessageCenterListTests.swift
│   │       ├── MessageCenterMessageTest.swift
│   │       ├── MessageCenterStoreTest.swift
│   │       ├── MessageCenterThemeLoaderTest.swift
│   │       └── MessageViewAnalyticsTest.swift
│   ├── AirshipObjectiveC/
│   │   └── Source/
│   │       ├── Analytics/
│   │       │   ├── Events/
│   │       │   │   ├── Templates/
│   │       │   │   │   ├── UAAccountEventTemplate.swift
│   │       │   │   │   ├── UAMediaEventTemplate.swift
│   │       │   │   │   ├── UARetailEventTemplate.swift
│   │       │   │   │   └── UASearchEventTemplate.swift
│   │       │   │   └── UACustomEvent.swift
│   │       │   ├── UAAnalytics.swift
│   │       │   └── UAAssociatedIdentifiers.swift
│   │       ├── Automation/
│   │       │   ├── UAInAppAutomation.swift
│   │       │   └── UAInAppMessaging.swift
│   │       ├── Channel/
│   │       │   ├── UAAttributesEditor.swift
│   │       │   ├── UAChannel.swift
│   │       │   ├── UATagEditor.swift
│   │       │   └── UATagGroupsEditor.swift
│   │       ├── Contact/
│   │       │   └── UAContact.swift
│   │       ├── Embedded/
│   │       │   └── UAEmbeddedViewController.swift
│   │       ├── MessageCenter/
│   │       │   ├── UAMessageCenter.swift
│   │       │   ├── UAMessageCenterList.swift
│   │       │   ├── UAMessageCenterMessage.swift
│   │       │   ├── UAMessageCenterNativeBridge.swift
│   │       │   ├── UAMessageCenterTheme.swift
│   │       │   ├── UAMessageCenterUser.swift
│   │       │   └── UAMessageCenterViewController.swift
│   │       ├── PreferenceCenter/
│   │       │   ├── UAPreferenceCenter.swift
│   │       │   └── UAPreferenceCenterViewController.swift
│   │       ├── PrivacyManager/
│   │       │   └── UAPrivacyManager.swift
│   │       ├── Push/
│   │       │   ├── UAAuthorizedNotificationSettings.swift
│   │       │   ├── UANotificationCategories.swift
│   │       │   ├── UAPush.swift
│   │       │   ├── UAPushNotificationDelegate.swift
│   │       │   ├── UAPushNotificationStatus.swift
│   │       │   └── UARegistrationDelegate.swift
│   │       ├── Subscription Lists/
│   │       │   ├── UAScopedSubscriptionListEditor.swift
│   │       │   └── UASubscriptionListEditor.swift
│   │       ├── UAAppIntegration.swift
│   │       ├── UAConfig.swift
│   │       ├── UADeepLinkDelegate.swift
│   │       ├── UAFeature.swift
│   │       ├── UAPermission.swift
│   │       ├── UAPermissionsManager.swift
│   │       └── UAirship.swift
│   └── AirshipPreferenceCenter/
│       ├── Info.plist
│       ├── Source/
│       │   ├── AirshipPreferenceCenterResources.swift
│       │   ├── PreferenceCenter.swift
│       │   ├── PreferenceCenterComponent.swift
│       │   ├── PreferenceCenterSDKModule.swift
│       │   ├── data/
│       │   │   ├── PreferenceCenterConfig+ContactManagement.swift
│       │   │   ├── PreferenceCenterConfig.swift
│       │   │   ├── PreferenceCenterDecoder.swift
│       │   │   └── PreferenceCenterResponse.swift
│       │   ├── theme/
│       │   │   ├── PreferenceCenterTheme.swift
│       │   │   └── PreferenceCenterThemeLoader.swift
│       │   └── view/
│       │       ├── ChannelSubscriptionView.swift
│       │       ├── CommonSectionView.swift
│       │       ├── ConditionsMonitor.swift
│       │       ├── ConditionsViewModifier.swift
│       │       ├── Contact management/
│       │       │   ├── AddChannelPromptView.swift
│       │       │   ├── AddChannelPromptViewModel.swift
│       │       │   ├── ChannelListView.swift
│       │       │   ├── ChannelListViewCell.swift
│       │       │   ├── Component Views/
│       │       │   │   ├── BackgroundShape.swift
│       │       │   │   ├── ChannelTextField.swift
│       │       │   │   ├── EmptySectionLabel.swift
│       │       │   │   ├── ErrorLabel.swift
│       │       │   │   └── PreferenceCloseButton.swift
│       │       │   ├── ContactManagementView.swift
│       │       │   └── FooterView.swift
│       │       ├── ContactSubscriptionGroupView.swift
│       │       ├── ContactSubscriptionView.swift
│       │       ├── LabeledSectionBreakView.swift
│       │       ├── PreferenceCenterAlertView.swift
│       │       ├── PreferenceCenterContent.swift
│       │       ├── PreferenceCenterContentLoader.swift
│       │       ├── PreferenceCenterContentStyle.swift
│       │       ├── PreferenceCenterState.swift
│       │       ├── PreferenceCenterUtils.swift
│       │       ├── PreferenceCenterView.swift
│       │       ├── PreferenceCenterViewControllerFactory.swift
│       │       └── PreferenceCenterViewExtensions.swift
│       └── Tests/
│           ├── Info.plist
│           ├── PreferenceCenterTest.swift
│           ├── data/
│           │   └── PreferenceCenterConfigTest.swift
│           ├── test data/
│           │   ├── TestLegacyTheme.plist
│           │   ├── TestTheme.plist
│           │   ├── TestThemeEmpty.plist
│           │   └── TestThemeInvalid.plist
│           ├── theme/
│           │   └── PreferenceThemeLoaderTest.swift
│           └── view/
│               └── PreferenceCenterStateTest.swift
├── Airship.podspec
├── Airship.xcworkspace/
│   ├── contents.xcworkspacedata
│   └── xcshareddata/
│       ├── IDEWorkspaceChecks.plist
│       ├── WorkspaceSettings.xcsettings
│       └── swiftpm/
│           └── Package.resolved
├── AirshipExtensions/
│   ├── AirshipExtensions.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── xcshareddata/
│   │       └── xcschemes/
│   │           └── AirshipNotificationServiceExtension.xcscheme
│   └── AirshipNotificationServiceExtension/
│       ├── Info.plist
│       ├── Source/
│       │   ├── AirshipExtensionConfig.swift
│       │   ├── AirshipExtensionLogger.swift
│       │   ├── AirshipNotificationMutationProvider.swift
│       │   ├── ChallengeResolver.swift
│       │   ├── MediaAttachmentPayload.swift
│       │   └── UANotificationServiceExtension.swift
│       └── Tests/
│           ├── Info.plist
│           ├── MediaAttachmentPayloadTest.swift
│           └── UANotificationServiceExtensionTests.swift
├── AirshipServiceExtension.podspec
├── CHANGELOG.md
├── DevApp/
│   ├── AirshipConfig.plist.sample
│   ├── Dev App/
│   │   ├── AirshipConfig.plist.sample
│   │   ├── AppRouter.swift
│   │   ├── Assets.xcassets/
│   │   │   ├── AccentColor.colorset/
│   │   │   │   └── Contents.json
│   │   │   ├── AppIcon.appiconset/
│   │   │   │   └── Contents.json
│   │   │   ├── Contents.json
│   │   │   └── HomeHeroImage.imageset/
│   │   │       └── Contents.json
│   │   ├── DevApp.entitlements
│   │   ├── MainApp.swift
│   │   ├── Setup/
│   │   │   ├── AirshipInitializer.swift
│   │   │   ├── DeepLinkHandler.swift
│   │   │   ├── LiveActivityHandler.swift
│   │   │   └── PushNotificationHandler.swift
│   │   ├── Thomas/
│   │   │   ├── CustomView/
│   │   │   │   └── Examples/
│   │   │   │       ├── AdView.swift
│   │   │   │       ├── BiometricLoginView.swift
│   │   │   │       ├── CameraView.swift
│   │   │   │       ├── MapRouteView.swift
│   │   │   │       └── Weather/
│   │   │   │           ├── WeatherView.swift
│   │   │   │           └── WeatherViewModel.swift
│   │   │   ├── Embedded Playground View/
│   │   │   │   ├── EmbeddedPlaygroundMenuView.swift
│   │   │   │   ├── EmbeddedPlaygroundPicker.swift
│   │   │   │   ├── EmbeddedPlaygroundView.swift
│   │   │   │   ├── KeyView.swift
│   │   │   │   └── PlaceholderToggleView.swift
│   │   │   ├── JurassicPark.otf
│   │   │   ├── Layouts.swift
│   │   │   ├── LayoutsList.swift
│   │   │   ├── Resources/
│   │   │   │   ├── Messages/
│   │   │   │   │   ├── Banner/
│   │   │   │   │   │   ├── media-left-jurassic-park-bottom.json
│   │   │   │   │   │   ├── media-left.json
│   │   │   │   │   │   ├── media-right-jurassic-park-bottom.json
│   │   │   │   │   │   ├── media-right-jurassic-park-text-alignment-1.json
│   │   │   │   │   │   ├── media-right-jurassic-park-text-alignment-2.json
│   │   │   │   │   │   ├── media-right-jurassic-park-top.json
│   │   │   │   │   │   ├── media-right.json
│   │   │   │   │   │   └── small-banner.json
│   │   │   │   │   ├── Fullscreen/
│   │   │   │   │   │   ├── header-body-media-joined.json
│   │   │   │   │   │   ├── header-body-separate.json
│   │   │   │   │   │   └── media-header-body-stacked.json
│   │   │   │   │   ├── HTML/
│   │   │   │   │   │   ├── fullscreen-airship.json
│   │   │   │   │   │   ├── sized-airship.json
│   │   │   │   │   │   ├── sized-too-tall-airship.json
│   │   │   │   │   │   └── sized-too-wide-airship.json
│   │   │   │   │   └── Modal/
│   │   │   │   │       ├── a11y-test.json
│   │   │   │   │       ├── accessibility-modal.json
│   │   │   │   │       ├── header-body-media-joined.json
│   │   │   │   │       ├── header-body-media-stacked.json
│   │   │   │   │       ├── header-media-body-joined.json
│   │   │   │   │       ├── header-media-body-stacked.json
│   │   │   │   │       ├── media-header-body-joined.json
│   │   │   │   │       ├── media-header-body-separate-tall-image.json
│   │   │   │   │       ├── media-header-body-separate-wide-image.json
│   │   │   │   │       ├── media-header-body-separate.json
│   │   │   │   │       ├── media-header-body-stacked.json
│   │   │   │   │       ├── swipe-gesture-test.json
│   │   │   │   │       └── youtube-video-modal.json
│   │   │   │   ├── Scenes/
│   │   │   │   │   ├── Banner/
│   │   │   │   │   │   ├── banner-bottom.yml
│   │   │   │   │   │   ├── banner-safe-area-bottom.yml
│   │   │   │   │   │   ├── banner-safe-area-top.yml
│   │   │   │   │   │   ├── banner-top-old.yml
│   │   │   │   │   │   └── banner-top.yml
│   │   │   │   │   ├── Embedded/
│   │   │   │   │   │   ├── 100pct x 100pct.yml
│   │   │   │   │   │   ├── 100pct x auto.yml
│   │   │   │   │   │   ├── 50pct x 50pct.yml
│   │   │   │   │   │   ├── 75pct x 200pt.yml
│   │   │   │   │   │   ├── auto x 200.yml
│   │   │   │   │   │   ├── gif_and_vid.yml
│   │   │   │   │   │   ├── home_image.yml
│   │   │   │   │   │   ├── home_rating.yml
│   │   │   │   │   │   └── home_special_offer.yml
│   │   │   │   │   └── Modal/
│   │   │   │   │       ├── 1-pager-different-path.yml
│   │   │   │   │       ├── 1-pager-pranching-test.yml
│   │   │   │   │       ├── 1qa.yml
│   │   │   │   │       ├── MOBILE_4621.yml
│   │   │   │   │       ├── _a11y_focus.json
│   │   │   │   │       ├── _vimeo.ml
│   │   │   │   │       ├── a-gif-and-youtube.yml
│   │   │   │   │       ├── a-landscape-video.yml
│   │   │   │   │       ├── aaa-modal-bg-image.yaml
│   │   │   │   │       ├── aaa-modal.json
│   │   │   │   │       ├── accessibility-action-story.yml
│   │   │   │   │       ├── accessibility-actions-modal-pager-fullsize.yml
│   │   │   │   │       ├── accessibility-test-modal.json
│   │   │   │   │       ├── airship-quiz-1.yml
│   │   │   │   │       ├── async_view.yaml
│   │   │   │   │       ├── auto_height_modal.yml
│   │   │   │   │       ├── button_layout.yml
│   │   │   │   │       ├── container.yml
│   │   │   │   │       ├── containerception.yml
│   │   │   │   │       ├── custom-fonts.yml
│   │   │   │   │       ├── form-input-branching-child-form.yaml
│   │   │   │   │       ├── form-input-branching-on-demand.yml
│   │   │   │   │       ├── form_immediate_phone.yaml
│   │   │   │   │       ├── form_immediate_validation_email.yaml
│   │   │   │   │       ├── form_on_demand_validation_email.yaml
│   │   │   │   │       ├── form_single_page_on_demand.yml
│   │   │   │   │       ├── forms.yml
│   │   │   │   │       ├── image-pager-test.yml
│   │   │   │   │       ├── image_cropping.yml
│   │   │   │   │       ├── image_resizing.yml
│   │   │   │   │       ├── image_scaling.yml
│   │   │   │   │       ├── is-accessibility-alert-form.yml
│   │   │   │   │       ├── linear_layout_scroll.yml
│   │   │   │   │       ├── markdown.yml
│   │   │   │   │       ├── martin.json
│   │   │   │   │       ├── mobile-4599.yml
│   │   │   │   │       ├── mobile-5409-2.json
│   │   │   │   │       ├── mobile-5409.json
│   │   │   │   │       ├── mobile-5553-shape-corners.yml
│   │   │   │   │       ├── modal-buttons.yml
│   │   │   │   │       ├── modal-checkboxes-radios.yml
│   │   │   │   │       ├── modal-constrained.yml
│   │   │   │   │       ├── modal-custom-biometric-login.yml
│   │   │   │   │       ├── modal-custom-interstitial-banner-ad.yaml
│   │   │   │   │       ├── modal-custom-weather-and-map.yaml
│   │   │   │   │       ├── modal-day-night-colors.yml
│   │   │   │   │       ├── modal-disable-back-button.yml
│   │   │   │   │       ├── modal-labels.yml
│   │   │   │   │       ├── modal-linear-layout-horizontal.yml
│   │   │   │   │       ├── modal-linear-layout-vertical.yml
│   │   │   │   │       ├── modal-linear-layout-webview-emoji.yml
│   │   │   │   │       ├── modal-linear-layout.yml
│   │   │   │   │       ├── modal-media-header-body-stacked-buttons.yml
│   │   │   │   │       ├── modal-pager-fullsize.yml
│   │   │   │   │       ├── modal-pager-with-title-and-button.yml
│   │   │   │   │       ├── modal-placement-selectors.yml
│   │   │   │   │       ├── modal-responsive.yml
│   │   │   │   │       ├── modal-score.yml
│   │   │   │   │       ├── modal-transparancy.yml
│   │   │   │   │       ├── modal-video-cropping.yml
│   │   │   │   │       ├── modal-webview-full-size.yml
│   │   │   │   │       ├── modal-webview-with-buttons.yml
│   │   │   │   │       ├── model-custom-camera-view.yml
│   │   │   │   │       ├── multi-video-players.yml
│   │   │   │   │       ├── nps.yml
│   │   │   │   │       ├── pager-behaviors.yml
│   │   │   │   │       ├── portrait-video.yml
│   │   │   │   │       ├── qa-advseg-2998.yml
│   │   │   │   │       ├── qa-advseg-2999.yml
│   │   │   │   │       ├── safe-areas-linear-layout.yml
│   │   │   │   │       ├── safe-areas-pager.yml
│   │   │   │   │       ├── scene-scroll.yml
│   │   │   │   │       ├── story-one-screen.yml
│   │   │   │   │       ├── story-video-and-gif.yml
│   │   │   │   │       ├── story.yml
│   │   │   │   │       ├── tap-handler-visibility.yml
│   │   │   │   │       ├── textInput
│   │   │   │   │       ├── toggle-branching-simple-quiz.yml
│   │   │   │   │       ├── toggle-layout-types.yml
│   │   │   │   │       ├── toggle-rating-numbers.yaml
│   │   │   │   │       ├── toggle-rating-stars-small.yaml
│   │   │   │   │       ├── toggleLayout.yml
│   │   │   │   │       ├── tour-example.yml
│   │   │   │   │       ├── tour-no-safe-areas.yml
│   │   │   │   │       ├── tour-safe-areas.yml
│   │   │   │   │       ├── unsafe_areas.yml
│   │   │   │   │       ├── video-controls.yml
│   │   │   │   │       ├── video-qa.yaml
│   │   │   │   │       ├── video-story-multipage.yml
│   │   │   │   │       ├── video-story.yml
│   │   │   │   │       ├── video-test.yml
│   │   │   │   │       ├── video-youtube.yml
│   │   │   │   │       ├── video_cropping.yml
│   │   │   │   │       ├── view_overrides.yml
│   │   │   │   │       ├── wide-image-pager-test.yml
│   │   │   │   │       ├── wrapping-modal-score.yml
│   │   │   │   │       ├── wrapping-multi-page.yml
│   │   │   │   │       ├── wrapping-nps-test-2.yml
│   │   │   │   │       ├── wrapping-nps-test-3.yml
│   │   │   │   │       ├── wrapping-nps-test-4.yml
│   │   │   │   │       ├── wrapping-nps-test-5.yml
│   │   │   │   │       └── wrapping-nps-test.yml
│   │   │   │   └── SharedAssets.xcassets/
│   │   │   │       ├── 23GrandeAccentColor.colorset/
│   │   │   │       │   └── Contents.json
│   │   │   │       ├── 23GrandeAllFashion.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       ├── 23GrandeAppIcon.appiconset/
│   │   │   │       │   └── Contents.json
│   │   │   │       ├── 23GrandeArrival1.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       ├── 23GrandeArrival2.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       ├── 23GrandeHomeBanner.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   ├── ThomasLayoutListView.swift
│   │   │   └── ThomasLayoutViewModel.swift
│   │   ├── Toast.swift
│   │   └── View/
│   │       ├── AppView.swift
│   │       ├── HomeView.swift
│   │       ├── NamedUserView.swift
│   │       └── ToastView.swift
│   ├── Dev-App-Info.plist
│   ├── DevApp App Clip/
│   │   ├── Airship_Sample_App_Clip.entitlements
│   │   └── Info.plist
│   ├── DevApp Service Extension/
│   │   ├── Info.plist
│   │   └── NotificationService.swift
│   ├── DevApp.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           ├── IDEWorkspaceChecks.plist
│   │           └── swiftpm/
│   │               └── Package.resolved
│   ├── LiveActivity/
│   │   ├── Assets.xcassets/
│   │   │   ├── 23Grande.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── AccentColor.colorset/
│   │   │   │   └── Contents.json
│   │   │   ├── AppIcon.appiconset/
│   │   │   │   └── Contents.json
│   │   │   ├── Contents.json
│   │   │   └── WidgetBackground.colorset/
│   │   │       └── Contents.json
│   │   ├── DeliveryActivityWidget.swift
│   │   ├── DeliveryAttributes.swift
│   │   ├── Info.plist
│   │   ├── LiveActivity.intentdefinition
│   │   └── Widgets.swift
│   └── Sample Plist/
│       └── AirshipConfig.plist.sample
├── DevApp watchOS/
│   ├── DevApp watchOS/
│   │   ├── AppDelegate.swift
│   │   ├── Assets.xcassets/
│   │   │   ├── AccentColor.colorset/
│   │   │   │   └── Contents.json
│   │   │   ├── AppIcon.appiconset/
│   │   │   │   └── Contents.json
│   │   │   └── Contents.json
│   │   ├── HomeView.swift
│   │   ├── MainApp.swift
│   │   ├── NamedUserView.swift
│   │   ├── Preview Content/
│   │   │   └── Preview Assets.xcassets/
│   │   │       ├── AccentColor.colorset/
│   │   │       │   └── Contents.json
│   │   │       ├── AppIcon.appiconset/
│   │   │       │   └── Contents.json
│   │   │       └── Contents.json
│   │   └── PushNotificationPayload.apns
│   └── DevApp watchOS.xcodeproj/
│       ├── project.pbxproj
│       └── project.xcworkspace/
│           └── contents.xcworkspacedata
├── Documentation/
│   ├── .jazzy.json
│   ├── Migration/
│   │   ├── README.md
│   │   ├── migration-guide-16-17.md
│   │   ├── migration-guide-17-18.md
│   │   ├── migration-guide-18-19.md
│   │   └── migration-guide-19-20.md
│   ├── abstracts/
│   │   └── Guides.md
│   └── readme-for-jazzy.md
├── Gemfile
├── LICENSE
├── Makefile
├── Package.swift
├── README.md
└── scripts/
    ├── airship_version.sh
    ├── build_docCs.sh
    ├── build_sample.sh
    ├── build_sample_watchos.sh
    ├── build_xcframeworks.sh
    ├── check_size.sh
    ├── check_version.sh
    ├── check_xcbeautify.sh
    ├── gemini-review-prompt.md
    ├── get_xcode_path.sh
    ├── package.sh
    ├── package_xcframeworks.sh
    ├── pr-review.mjs
    ├── run_xcodebuild.sh
    └── update_version.sh

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/CODEOWNERS
================================================

# https://help.github.com/en/articles/about-code-owners
*       @urbanairship/mobile


================================================
FILE: .github/CONTRIBUTING.md
================================================
## Contributing Code

We accept pull requests! If you would like to submit a pull request, please fill out and submit our
[Contributor License Agreement](https://docs.google.com/forms/d/e/1FAIpQLScErfiz-fXSPpVZ9r8Di2Tr2xDFxt5MgzUel0__9vqUgvko7Q/viewform).

One of our engineers will verify receipt of the agreement before approving your pull request.


================================================
FILE: .github/ISSUE_TEMPLATE.md
================================================


❗For how-to inquiries involving Airship functionality or use cases, please
contact (support)[https://support.airship.com/].

<!---

Please fill out this template when submitting an issue.

All lines beginning with an ℹ symbol indicate information that's
important for you to provide to ensure your issue is resolved as
quickly and efficiently as possible.

-->

# Preliminary Info

### What Airship dependencies are you using?
<!-- ℹ Please include Airship dependencies and their versions here. -->

### What are the versions of any relevant development tools you are using?
<!-- ℹ If applicable, please include any relevant information about the
version of your IDE, plugin(s), or package manager(s) here. -->

# Report

### What unexpected behavior are you seeing?
<!-- ℹ Please provide a brief description of the unexpected behavior here. -->

### What is the expected behavior?
<!-- ℹ Please provide a brief description of the expected behavior here. -->

### What are the steps to reproduce the unexpected behavior?
<!-- ℹ Please provide reproduction steps here. -->

### Do you have logging for the issue?
<!-- ℹ Please provide links to gists of any pertinent logs here. -->


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================

<!--

Please fill out this template when submitting an pull request.

All lines beginning with an ℹ symbol indicate information that's
important for you to provide to ensure your pull request is reviewed
as quickly and efficiently as possible.

-->

### What do these changes do?
<!-- ℹ Please provide a description of your changes here. -->

### Why are these changes necessary?
<!-- ℹ Please provide a concise description of why your changes are
necessary here. -->

### How did you verify these changes?
<!-- ℹ Please provide any relevant steps to verify or test your work. Make
this description clear enough so someone unfamiliar with your work could
verify for you. -->

#### Verification Screenshots:
<!-- ℹ If applicable, please provide screenshots here. -->

### Anything else a reviewer should know?
<!-- ℹ Please provide any additional notes for the reviewer here. -->


================================================
FILE: .github/workflows/check-cert.yml
================================================
name: Check Certificate Expiration

on:
  workflow_dispatch:

jobs:
  check-cert:
    runs-on: macos-latest
    steps:
      - name: Check Certificate Details
        env:
          CERT_BASE64: ${{ secrets.CERTIFICATEXC }}
          CERT_PASS: ${{ secrets.CERTIFICATEXC_PASS }}
        run: |
          # Decode the certificate from base64
          echo "$CERT_BASE64" | base64 --decode > cert.p12

          # Extract certificate info without importing to keychain
          # This will show expiration date and other details
          openssl pkcs12 -in cert.p12 -passin pass:"$CERT_PASS" -nokeys -clcerts | openssl x509 -noout -subject -issuer -dates -fingerprint

          # Also show the certificate name as it appears for codesigning
          openssl pkcs12 -in cert.p12 -passin pass:"$CERT_PASS" -nokeys -clcerts | openssl x509 -noout -subject | sed 's/subject=//'

          # Clean up
          rm cert.p12

================================================
FILE: .github/workflows/check_framework_size.yml
================================================
name: Check Framework Size

on:
  workflow_dispatch:

env:
  BUNDLE_PATH: vendor/bundle

jobs:
 
  framework-size:
    runs-on: macos-15-xlarge
    steps:
      - uses: actions/checkout@v4
      - name: Restore Size
        uses: actions/cache@v4
        with:
            path: build/previous-size.txt
            key: size-cache-${{ github.head_ref }}
            restore-keys: |
             size-cache-
      - name: Install Apple Certificate
        uses: apple-actions/import-codesign-certs@v3
        with:
          p12-file-base64: ${{ secrets.CERTIFICATEXC }}
          p12-password: ${{ secrets.CERTIFICATEXC_PASS }}
      - name: Framework size
        run: make compare-framework-size
      - name: Save Size
        uses: actions/cache@v4
        with:
           path: build/previous-size.txt
           key: size-cache-${{ github.head_ref }}-${{ github.run_id }}


================================================
FILE: .github/workflows/ci.yml
================================================
name: CI Pull Request

on: [pull_request]

env:
  BUNDLE_PATH: vendor/bundle

concurrency:
  group: ${{ github.ref }}
  cancel-in-progress: true

jobs:
  run-tests-core:
    runs-on: macos-15-xlarge
    timeout-minutes: 5
    steps:
      - uses: actions/checkout@v4
      - name: Test
        run: make test-core

  run-tests-message-center:
    runs-on: macos-15-xlarge
    timeout-minutes: 5
    steps:
      - uses: actions/checkout@v4
      - name: Test
        run: make test-message-center

  run-tests-preference-center:
    runs-on: macos-15-xlarge
    timeout-minutes: 5
    steps:
      - uses: actions/checkout@v4
      - name: Test
        run: make test-preference-center

  run-tests-feature-flags:
    runs-on: macos-15-xlarge
    timeout-minutes: 5
    steps:
      - uses: actions/checkout@v4
      - name: Test
        run: make test-feature-flags

  run-tests-automation:
    runs-on: macos-15-xlarge
    timeout-minutes: 5
    steps:
      - uses: actions/checkout@v4
      - name: Test
        run: make test-automation

  run-tests-extensions:
    runs-on: macos-15-xlarge
    timeout-minutes: 5
    steps:
      - uses: actions/checkout@v4
      - name: Test
        run: make test-service-extension

  build-airship-objectiveC:
    runs-on: macos-15-xlarge
    timeout-minutes: 15
    steps:
      - uses: actions/checkout@v4
      - name: Build AirshipObjectiveC target
        run: make build-airship-objectiveC
        
  build-samples:
    runs-on: macos-15-xlarge
    timeout-minutes: 15
    steps:
      - uses: actions/checkout@v4
      - name: Build samples
        run: make build-samples
      

  # run-tests-watchos:
  #   runs-on: macos-15-xlarge
  #   steps:
  #     - uses: actions/checkout@v4
  #     - uses: ruby/setup-ruby@v1
  #       with:
  #         bundler-cache: true
  #     - name: Install xcodegen
  #       run: brew install xcodegen
  #     - name: Install Apple Certificate
  #       uses: apple-actions/import-codesign-certs@v1
  #       with:
  #         p12-file-base64: ${{ secrets.CERTIFICATE_P12_BASE64 }}
  #         p12-password: ${{ secrets.CERTIFICATE_P12_PASSWORD }}
  #     - name: Install the provisioning profile
  #       env:
  #         PROVISIONING_APP_BASE64: ${{ secrets.PROVISIONING_PROFILE_APP_BASE64 }}
  #         PROVISIONING_EXT_BASE64: ${{ secrets.PROVISIONING_PROFILE_EXT_BASE64 }}
  #       run: |
  #         PP_APP_PATH=$RUNNER_TEMP/wkapp_prof.mobileprovision
  #         PP_EXT_PATH=$RUNNER_TEMP/wkext_prof.mobileprovision

  #         echo -n "$PROVISIONING_APP_BASE64" | base64 --decode > $PP_APP_PATH
  #         echo -n "$PROVISIONING_EXT_BASE64" | base64 --decode > $PP_EXT_PATH

  #         mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
  #         cp $PP_APP_PATH ~/Library/MobileDevice/Provisioning\ Profiles
  #         cp $PP_EXT_PATH ~/Library/MobileDevice/Provisioning\ Profiles
  #     - name: Test
  #       run: make build-sample-watchos
        
  pod-lib-lint-watchos:
    runs-on: macos-15-xlarge
    steps:
      - uses: actions/checkout@v4
      - name: Pod lint
        run: make pod-lint-watchos
        
  pod-lib-lint-tvos:
    runs-on: macos-15-xlarge
    steps:
      - uses: actions/checkout@v4
      - name: Pod lint
        run: make pod-lint-tvos

  pod-lib-lint-ios:
    runs-on: macos-15-xlarge
    steps:
      - uses: actions/checkout@v4
      - name: Pod lint
        run: make pod-lint-ios

  pod-lib-lint-extensions:
    runs-on: macos-15-xlarge
    steps:
      - uses: actions/checkout@v4
      - name: Pod lint
        run: make pod-lint-extensions


================================================
FILE: .github/workflows/deploy_docC.yml
================================================
name: Deploy docC to Pages

on:
  push:
    tags:
      - "[0-9]+.[0-9]+.[0-9]+**"
      
  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
  contents: write
  pages: write
  id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
  group: "pages"
  cancel-in-progress: false

jobs:
  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: macos-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        
      - name: Extract version
        id: extract_version
        run: |
          set -euo pipefail
          VERSION="${GITHUB_REF#refs/tags/}"
          MAJOR_VERSION=$(echo "$VERSION" | cut -d. -f1)
          echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
          echo "VERSION_DIR=v$MAJOR_VERSION" >> $GITHUB_OUTPUT
          echo "VERSION_DIR=v$MAJOR_VERSION" >> $GITHUB_ENV

      - name: Check Version
        run: |
          set -euo pipefail
          bash ./scripts/check_version.sh "${{ steps.extract_version.outputs.VERSION }}"

      - name: Build DocC
        env:
          VERSION_DIR: ${{ steps.extract_version.outputs.VERSION_DIR }}
        run: |
          set -euo pipefail
          make build-docC version="$VERSION_DIR"

      - name: Deploy to GitHub Pages
        env:
          VERSION_DIR: ${{ steps.extract_version.outputs.VERSION_DIR }}
        uses: peaceiris/actions-gh-pages@v4
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_branch: gh-pages
          publish_dir: ./docs
          destination_dir: $VERSION_DIR
          keep_files: true
          enable_jekyll: false


================================================
FILE: .github/workflows/merge.yml
================================================
name: CI Merge

on:
    push:
      branches:
        - main
        - next

env:
  BUNDLE_PATH: vendor/bundle

concurrency:
  group: ${{ github.ref }}
  cancel-in-progress: true

jobs:
  build-sdk:
    runs-on: macos-15-xlarge
    steps:
      - name: Install Apple Certificate
        uses: apple-actions/import-codesign-certs@v3
        with:
          p12-file-base64: ${{ secrets.CERTIFICATEXC }}
          p12-password: ${{ secrets.CERTIFICATEXC_PASS }}
      - uses: actions/checkout@v4
      - name: Build SDK
        run: make build-xcframeworks-no-sign

  finished:
    runs-on: ubuntu-latest
    needs: [build-sdk]
    steps:
      - name: Slack Notification
        uses: lazy-actions/slatify@master
        if: ${{ failure() }}
        with:
          type: ${{ job.status }}
          job_name: "Merge things busted!"
          url: ${{ secrets.SLACK_WEBHOOK }}

================================================
FILE: .github/workflows/pr-review.yml
================================================
name: Gemini PR Review

on:
  pull_request:
    types: [opened, edited, synchronize]

concurrency: pr-${{ github.event.pull_request.number }}

jobs:
  review:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: write
      contents: read

    steps:
    - name: ⬇️  Checkout
      uses: actions/checkout@v4

    - name: 🪄  Save PR diff
      env:
        GH_TOKEN: ${{ secrets.MOBILE_REVIEW_PAT }}
      run: gh pr diff ${{ github.event.pull_request.number }} > diff.patch

    - name: 🛠️  Set up Node 20
      uses: actions/setup-node@v4
      with:
        node-version: 20

    - name: 🤖 Run Gemini review script
      continue-on-error: true
      env:
        GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
        MODEL_ID:       gemini-2.5-pro-preview-05-06
        GITHUB_TOKEN:   ${{ secrets.MOBILE_REVIEW_PAT }}
        PR_NUMBER:      ${{ github.event.pull_request.number }}
        REPO:           ${{ github.repository }}
        DEBUG:          true
      run: node scripts/pr-review.mjs


================================================
FILE: .github/workflows/release.yml
================================================
name: Release

on:
  push:
    tags:
      - "[0-9]+.[0-9]+.[0-9]+**"
env:
  BUNDLE_PATH: vendor/bundle

jobs:
  check-version:
    if: github.repository == 'urbanairship/ios-library'
    runs-on: macos-15-xlarge
    steps:
      - uses: actions/checkout@v4
      - name: Get the version
        id: get_version
        run: |
          set -euo pipefail
          VERSION="${GITHUB_REF#refs/tags/}"
          echo "VERSION=$VERSION" >> $GITHUB_OUTPUT

      - name: Check Version
        run: |
          set -euo pipefail
          bash ./scripts/check_version.sh "${{ steps.get_version.outputs.VERSION }}"

      - name: Slack Notification
        uses: lazy-actions/slatify@master
        with:
          type: ${{ job.status }}
          job_name: "iOS SDK Release Started :apple_og:"
          url: ${{ secrets.SLACK_WEBHOOK }}

  build-package:
    needs: check-version
    runs-on: macos-15-xlarge
    steps:
      - uses: actions/checkout@v4
      - name: Install Coreutils
        run: brew install coreutils
      - name: Install Apple Certificate
        uses: apple-actions/import-codesign-certs@v3
        with:
          p12-file-base64: ${{ secrets.CERTIFICATEXC }}
          p12-password: ${{ secrets.CERTIFICATEXC_PASS }}
      - name: Build SDK
        run: make build-package
      - name: Upload zip distribution
        uses: actions/upload-artifact@v4
        with:
          name: airship
          path: ./build/Airship.zip

      - name: Upload zip distribution (Carthage)
        uses: actions/upload-artifact@v4
        with:
          name: airship-carthage
          path: ./build/Airship.xcframeworks.zip

      - name: Upload .NET xcframeworks
        uses: actions/upload-artifact@v4
        with:
          name: airship-dotnet
          path: ./build/Airship.dotnet.xcframeworks.zip


  build-samples:
    needs: check-version
    runs-on: macos-15-xlarge
    steps:
      - uses: actions/checkout@v4
      - name: Build samples
        run: make build-samples

  # Test jobs, all depend on check-version
  run-tests-core:
    needs: check-version
    runs-on: macos-15-xlarge
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v4
      - name: Install xcodegen
        run: brew install xcodegen
      - name: Test Core
        run: make test-core
        
  run-tests-preference-center:
    needs: check-version
    runs-on: macos-15-xlarge
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v4
      - name: Install xcodegen
        run: brew install xcodegen
      - name: Test Preference Center
        run: make test-preference-center
        
  run-tests-message-center:
    needs: check-version
    runs-on: macos-15-xlarge
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v4
      - name: Install xcodegen
        run: brew install xcodegen
      - name: Test Message Center
        run: make test-message-center

  run-tests-automation:
    needs: check-version
    runs-on: macos-15-xlarge
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v4
      - name: Install xcodegen
        run: brew install xcodegen
      - name: Test Automation
        run: make test-automation

  run-tests-feature-flags:
    needs: check-version
    runs-on: macos-15-xlarge
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v4
      - name: Install xcodegen
        run: brew install xcodegen
      - name: Test Feature Flags
        run: make test-feature-flags

  run-tests-service-extension:
    needs: check-version
    runs-on: macos-15-xlarge
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v4
      - name: Install xcodegen
        run: brew install xcodegen
      - name: Test Service Extension
        run: make test-service-extension

  deploy-github:
    permissions:
      contents: write
    runs-on: macos-15-xlarge
    needs:
      - run-tests-core
      - run-tests-preference-center
      - run-tests-message-center
      - run-tests-automation
      - run-tests-feature-flags
      - run-tests-service-extension
      - build-package
      - build-samples
    steps:
      - uses: actions/checkout@v4
      - name: Get the version
        id: get_version
        run: |
          set -euo pipefail
          VERSION="${GITHUB_REF#refs/tags/}"
          echo "VERSION=$VERSION" >> $GITHUB_OUTPUT

      - name: Get the release notes
        id: get_release_notes
        run: |
          set -euo pipefail
          
          VERSION="${{ steps.get_version.outputs.VERSION }}"
          
          # Match line starting with '## Version [VERSION]' 
          # but allow for the date suffix that follows.
          NOTES=$(awk -v ver="$VERSION" '
            $0 ~ "^## Version " ver "($|[ ]-)" {flag=1; next} 
            $0 ~ "^## Version " {flag=0} 
            flag
          ' CHANGELOG.md)

          # Strip potential leading/trailing whitespace/newlines
          NOTES="$(echo "$NOTES" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')"

          if [ -z "$NOTES" ]; then
            echo "::error::Could not find notes for Version $VERSION in CHANGELOG.md"
            exit 1
          fi

          DELIMITER="EOF_$(uuidgen)"
          {
            echo "NOTES<<$DELIMITER"
            echo "$NOTES"
            echo "$DELIMITER"
          } >> "$GITHUB_OUTPUT"

      - name: Download zip distribution
        uses: actions/download-artifact@v4
        with:
          name: airship
          path: ./build
      - name: Download Carthage zip distribution
        uses: actions/download-artifact@v4
        with:
          name: airship-carthage
          path: ./build

      - name: Download .NET xcframeworks
        uses: actions/download-artifact@v4
        with:
          name: airship-dotnet
          path: ./build

      - name: Create GitHub Release
        id: create_release
        uses: softprops/action-gh-release@v2
        with:
          tag_name: ${{ steps.get_version.outputs.VERSION }}
          release_name: ${{ steps.get_version.outputs.VERSION }}
          body: ${{ steps.get_release_notes.outputs.NOTES }}
          draft: false
          prerelease: false
          files: |
            ./build/Airship.zip
            ./build/Airship.xcframeworks.zip
            ./build/Airship.dotnet.xcframeworks.zip
      - name: Kickoff prebuilt repo
        env:
          GITHUB_TOKEN: ${{ secrets.IOS_DEPLOY_PREBUILT_PAT }}
        run: gh --repo urbanairship/ios-library-prebuilt workflow run release.yml

  deploy-pods:
    runs-on: macos-15-xlarge
    needs:
      - run-tests-core
      - run-tests-preference-center
      - run-tests-message-center
      - run-tests-automation
      - run-tests-feature-flags
      - run-tests-service-extension
      - build-package
      - build-samples
    steps:
      - uses: actions/checkout@v4
      
      - name: Get the version
        id: get_version
        run: |
          set -euo pipefail
          VERSION="${GITHUB_REF#refs/tags/}"
          echo "VERSION=$VERSION" >> $GITHUB_OUTPUT

      - name: Publish Pods
        env:
          COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }}
        run: make pod-publish

      - name: Slack Notification
        uses: lazy-actions/slatify@master
        if: always()
        with:
          type: ${{ job.status }}
          job_name: "Publish the Pods ${{ steps.get_version.outputs.VERSION }} :tidepod:"
          url: ${{ secrets.SLACK_WEBHOOK }}

  finished:
    runs-on: ubuntu-latest
    needs: [deploy-github, deploy-pods]
    steps:
      - name: Get the version
        id: get_version
        run: |
          set -euo pipefail
          VERSION="${GITHUB_REF#refs/tags/}"
          echo "VERSION=$VERSION" >> $GITHUB_OUTPUT

      - name: Slack Notification
        uses: lazy-actions/slatify@master
        if: always()
        with:
          type: ${{ job.status }}
          job_name: ":raised_hands: iOS SDK Released! :raised_hands:"
          url: ${{ secrets.SLACK_WEBHOOK }}


================================================
FILE: .gitignore
================================================
.DS_Store
*.orig
.hg*
*.mode1v3
*.pbxuser
*.perspective*
distribution_binaries/
distribution_package/
docs/html/
docs/docset/
Debug/
Release/
Distribution/
build/
UANativeBridge.c
xcuserdata/
AirshipConfig.plist
AirshipDevelopment.plist
fabfile.py*
*.build_output
# Undo files for MacVim
*.un~
# CoverStory tool script
cover.py
OCMockLibrary
*.swp
Deploy/output
test-output/
Pods/
Carthage/
Airship.framework.zip
DerivedData
**/.claude/settings.local.json


================================================
FILE: .gitmodules
================================================


================================================
FILE: .ruby-version
================================================
3.2.0

================================================
FILE: .swift-format.json
================================================
{
  "fileScopedDeclarationPrivacy" : {
    "accessLevel" : "private"
  },
  "indentation" : {
    "spaces" : 4
  },
  "indentConditionalCompilationBlocks" : false,
  "indentSwitchCaseLabels" : false,
  "lineBreakAroundMultilineExpressionChainComponents" : true,
  "lineBreakBeforeControlFlowKeywords" : false,
  "lineBreakBeforeEachArgument" : true,
  "lineBreakBeforeEachGenericRequirement" : true,
  "lineLength" : 80,
  "maximumBlankLines" : 1,
  "prioritizeKeepingFunctionOutputTogether" : false,
  "respectsExistingLineBreaks" : true,
  "rules" : {
    "AllPublicDeclarationsHaveDocumentation" : true,
    "AlwaysUseLowerCamelCase" : true,
    "AmbiguousTrailingClosureOverload" : true,
    "BeginDocumentationCommentWithOneLineSummary" : false,
    "DoNotUseSemicolons" : true,
    "DontRepeatTypeInStaticProperties" : true,
    "FileScopedDeclarationPrivacy" : true,
    "FullyIndirectEnum" : true,
    "GroupNumericLiterals" : true,
    "IdentifiersMustBeASCII" : true,
    "NeverForceUnwrap" : true,
    "NeverUseForceTry" : true,
    "NeverUseImplicitlyUnwrappedOptionals" : true,
    "NoAccessLevelOnExtensionDeclaration" : true,
    "NoBlockComments" : true,
    "NoCasesWithOnlyFallthrough" : true,
    "NoEmptyTrailingClosureParentheses" : true,
    "NoLabelsInCasePatterns" : true,
    "NoLeadingUnderscores" : false,
    "NoParensAroundConditions" : true,
    "NoVoidReturnOnFunctionSignature" : true,
    "OneCasePerLine" : true,
    "OneVariableDeclarationPerLine" : true,
    "OnlyOneTrailingClosureArgument" : true,
    "OrderedImports" : true,
    "ReturnVoidInsteadOfEmptyTuple" : true,
    "UseEarlyExits" : true,
    "UseLetInEveryBoundCaseVariable" : true,
    "UseShorthandTypeNames" : true,
    "UseSingleLinePropertyGetter" : true,
    "UseSynthesizedInitializer" : true,
    "UseTripleSlashForDocumentationComments" : true,
    "UseWhereClausesInForLoops" : false,
    "ValidateDocumentationComments" : false
  },
  "tabWidth" : 8,
  "version" : 1
}




================================================
FILE: .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "self:">
   </FileRef>
</Workspace>


================================================
FILE: .whitesource
================================================
{
  "scanSettings": {
    "configMode": "AUTO",
    "configExternalURL": "",
    "projectToken": "",
    "baseBranches": []
  },
  "checkRunSettings": {
    "vulnerableCheckRunConclusionLevel": "success",
    "displayMode": "diff"
  },
  "issueSettings": {
    "minSeverityLevel": "NONE"
  }
}

================================================
FILE: Airship/Airship.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 70;
	objects = {

/* Begin PBXAggregateTarget section */
		6EAAE85D28C2AD3A003CAE53 /* AirshipRelease */ = {
			isa = PBXAggregateTarget;
			buildConfigurationList = 6EAAE85E28C2AD3A003CAE53 /* Build configuration list for PBXAggregateTarget "AirshipRelease" */;
			buildPhases = (
			);
			dependencies = (
				6E128B9D2D305C4600733024 /* PBXTargetDependency */,
				6E5917892B28E93A0084BBBF /* PBXTargetDependency */,
				6E6B493E2A787D0A00AF98D8 /* PBXTargetDependency */,
				6EAAE87728C2AD80003CAE53 /* PBXTargetDependency */,
				6EAAE87928C2AD80003CAE53 /* PBXTargetDependency */,
				6EAAE87B28C2AD80003CAE53 /* PBXTargetDependency */,
				6EAAE87D28C2AD80003CAE53 /* PBXTargetDependency */,
				6EAAE87F28C2AD80003CAE53 /* PBXTargetDependency */,
			);
			name = AirshipRelease;
			productName = AirshipRelease;
		};
		6ECCAD252CF55BC700423D86 /* AirshipRelease tvOS */ = {
			isa = PBXAggregateTarget;
			buildConfigurationList = 6ECCAD342CF55BC700423D86 /* Build configuration list for PBXAggregateTarget "AirshipRelease tvOS" */;
			buildPhases = (
			);
			dependencies = (
				6ECCAD282CF55BC700423D86 /* PBXTargetDependency */,
				6ECCAD2A2CF55BC700423D86 /* PBXTargetDependency */,
				6ECCAD2C2CF55BC700423D86 /* PBXTargetDependency */,
				6ECCAD322CF55BC700423D86 /* PBXTargetDependency */,
			);
			name = "AirshipRelease tvOS";
			productName = AirshipRelease;
		};
/* End PBXAggregateTarget section */

/* Begin PBXBuildFile section */
		27051CD72EE75E3300C770D5 /* AutomationEventsHistoryTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27051CD62EE75E3300C770D5 /* AutomationEventsHistoryTest.swift */; };
		27077E4C2EE7531C0027A282 /* AutomationEventsHistory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27077E4B2EE7531C0027A282 /* AutomationEventsHistory.swift */; };
		271B38652DB2866200495D9F /* TagActionMutation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 271B38642DB2866200495D9F /* TagActionMutation.swift */; };
		27264FB32E81B064000B6FA3 /* AirshipSceneController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27264FB22E81B064000B6FA3 /* AirshipSceneController.swift */; };
		2726505B2E81B80E000B6FA3 /* PagerControllerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2726505A2E81B80E000B6FA3 /* PagerControllerTest.swift */; };
		2753F6422F6C5BB50073882C /* MessageCenterMessageError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2753F6412F6C5BB50073882C /* MessageCenterMessageError.swift */; };
		275D32AC2EF957F200B75760 /* AirshipSimpleLayoutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 275D32AA2EF955AD00B75760 /* AirshipSimpleLayoutView.swift */; };
		275D32AD2EF957F200B75761 /* AirshipSimpleLayoutViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 275D32AB2EF955AD00B75761 /* AirshipSimpleLayoutViewModel.swift */; };
		2797B4192F47687800A7F848 /* NativeLayoutPersistentDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2797B4182F47687800A7F848 /* NativeLayoutPersistentDataStore.swift */; };
		27AFE70F2E733F4400767044 /* ModifyTagsAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27AFE70E2E733F4400767044 /* ModifyTagsAction.swift */; };
		27AFE7112E73477200767044 /* ModifyTagsActionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27AFE7102E73477200767044 /* ModifyTagsActionTest.swift */; };
		27CCF77D2F1656150018058F /* MessageViewAnalytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27CCF77C2F1656150018058F /* MessageViewAnalytics.swift */; };
		27CCF77F2F16DA500018058F /* MessageViewAnalyticsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27CCF77E2F16DA500018058F /* MessageViewAnalyticsTest.swift */; };
		27CCF8D32F2382750018058F /* ThomasStateStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27CCF8D22F2382750018058F /* ThomasStateStorage.swift */; };
		27E4194A2EF59F9800D5C1A6 /* MessageCenterThomasView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27E419492EF59F9800D5C1A6 /* MessageCenterThomasView.swift */; };
		27F1E1332F0E7AA400E317DB /* ThomasLayoutEventContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AAFB2B58AA4F002FEA75 /* ThomasLayoutEventContext.swift */; };
		27F1E1342F0E7C9C00E317DB /* ThomasLayoutEventRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AABA2B58A946002FEA75 /* ThomasLayoutEventRecorder.swift */; };
		27F1E1352F0E7D2C00E317DB /* ThomasLayoutEventMessageID.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AAB62B58A945002FEA75 /* ThomasLayoutEventMessageID.swift */; };
		27F1E1362F0E7D7B00E317DB /* ThomasLayoutEventSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AAFA2B58AA4F002FEA75 /* ThomasLayoutEventSource.swift */; };
		27F1E18C2F0E828D00E317DB /* ThomasLayoutEventMessageIDTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AADD2B58A9D2002FEA75 /* ThomasLayoutEventMessageIDTest.swift */; };
		27F1E18D2F0E828D00E317DB /* ThomasLayoutEventRecorderTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AAD72B58A9D1002FEA75 /* ThomasLayoutEventRecorderTest.swift */; };
		27F1E18E2F0E828D00E317DB /* ThomasLayoutEventContextTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AADF2B58A9D2002FEA75 /* ThomasLayoutEventContextTest.swift */; };
		27F1E18F2F0E82C700E317DB /* ThomasLayoutResolutionEventTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AADB2B58A9D1002FEA75 /* ThomasLayoutResolutionEventTest.swift */; };
		27F1E1902F0E82C700E317DB /* ThomasLayoutEventTestUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AADA2B58A9D1002FEA75 /* ThomasLayoutEventTestUtils.swift */; };
		27F1E1912F0E82C700E317DB /* ThomasLayoutFormResultEventTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AAE02B58A9D2002FEA75 /* ThomasLayoutFormResultEventTest.swift */; };
		27F1E1922F0E82C700E317DB /* ThomasLayoutPageSwipeEventAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AAE72B58A9D4002FEA75 /* ThomasLayoutPageSwipeEventAction.swift */; };
		27F1E1932F0E82C700E317DB /* ThomasLayoutDisplayEventTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AAD62B58A9D1002FEA75 /* ThomasLayoutDisplayEventTest.swift */; };
		27F1E1942F0E82C700E317DB /* ThomasLayoutButtonTapEventTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AADE2B58A9D2002FEA75 /* ThomasLayoutButtonTapEventTest.swift */; };
		27F1E1952F0E82C700E317DB /* ThomasLayoutPagerSummaryEventTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AAE12B58A9D2002FEA75 /* ThomasLayoutPagerSummaryEventTest.swift */; };
		27F1E1962F0E82C700E317DB /* ThomasLayoutPageActionEventTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AADC2B58A9D2002FEA75 /* ThomasLayoutPageActionEventTest.swift */; };
		27F1E1972F0E82C700E317DB /* ThomasLayoutGestureEventTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AAE42B58A9D3002FEA75 /* ThomasLayoutGestureEventTest.swift */; };
		27F1E1992F0E82C700E317DB /* ThomasLayoutFormDisplayEventTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AAE32B58A9D3002FEA75 /* ThomasLayoutFormDisplayEventTest.swift */; };
		27F1E19A2F0E82C700E317DB /* ThomasLayoutPermissionResultEventTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AAD92B58A9D1002FEA75 /* ThomasLayoutPermissionResultEventTest.swift */; };
		27F1E19B2F0E82C700E317DB /* ThomasLayoutPageViewEventTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AAE22B58A9D2002FEA75 /* ThomasLayoutPageViewEventTest.swift */; };
		27F1E19C2F0E82C700E317DB /* ThomasLayoutPagerCompletedEventTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AAD82B58A9D1002FEA75 /* ThomasLayoutPagerCompletedEventTest.swift */; };
		27F1E19D2F0E836000E317DB /* InAppMessageAnalyticsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AAE52B58A9D3002FEA75 /* InAppMessageAnalyticsTest.swift */; };
		27F1E19E2F0E846B00E317DB /* TestThomasLayoutEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AAD42B58A977002FEA75 /* TestThomasLayoutEvent.swift */; };
		27F1E19F2F0E848B00E317DB /* TestThomasLayoutEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AAD42B58A977002FEA75 /* TestThomasLayoutEvent.swift */; };
		27F1E1A02F0E84C300E317DB /* ThomasLayoutEventTestUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AADA2B58A9D1002FEA75 /* ThomasLayoutEventTestUtils.swift */; };
		27F1E2012F0E910B00E317DB /* ThomasLayoutButtonTapEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27F1E1F32F0E910B00E317DB /* ThomasLayoutButtonTapEvent.swift */; };
		27F1E2022F0E910B00E317DB /* ThomasLayoutDisplayEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27F1E1F42F0E910B00E317DB /* ThomasLayoutDisplayEvent.swift */; };
		27F1E2032F0E910B00E317DB /* ThomasLayoutEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27F1E1F52F0E910B00E317DB /* ThomasLayoutEvent.swift */; };
		27F1E2042F0E910B00E317DB /* ThomasLayoutFormDisplayEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27F1E1F62F0E910B00E317DB /* ThomasLayoutFormDisplayEvent.swift */; };
		27F1E2052F0E910B00E317DB /* ThomasLayoutFormResultEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27F1E1F72F0E910B00E317DB /* ThomasLayoutFormResultEvent.swift */; };
		27F1E2062F0E910B00E317DB /* ThomasLayoutGestureEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27F1E1F82F0E910B00E317DB /* ThomasLayoutGestureEvent.swift */; };
		27F1E2072F0E910B00E317DB /* ThomasLayoutPageActionEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27F1E1F92F0E910B00E317DB /* ThomasLayoutPageActionEvent.swift */; };
		27F1E2082F0E910B00E317DB /* ThomasLayoutPagerCompletedEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27F1E1FA2F0E910B00E317DB /* ThomasLayoutPagerCompletedEvent.swift */; };
		27F1E2092F0E910B00E317DB /* ThomasLayoutPagerSummaryEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27F1E1FB2F0E910B00E317DB /* ThomasLayoutPagerSummaryEvent.swift */; };
		27F1E20A2F0E910B00E317DB /* ThomasLayoutPageSwipeEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27F1E1FC2F0E910B00E317DB /* ThomasLayoutPageSwipeEvent.swift */; };
		27F1E20B2F0E910B00E317DB /* ThomasLayoutPageViewEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27F1E1FD2F0E910B00E317DB /* ThomasLayoutPageViewEvent.swift */; };
		27F1E20C2F0E910B00E317DB /* ThomasLayoutPermissionResultEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27F1E1FE2F0E910B00E317DB /* ThomasLayoutPermissionResultEvent.swift */; };
		27F1E20D2F0E910B00E317DB /* ThomasLayoutResolutionEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27F1E1FF2F0E910B00E317DB /* ThomasLayoutResolutionEvent.swift */; };
		27F1E2112F0FF5FE00E317DB /* ThomasDisplayListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AB172B59E80E002FEA75 /* ThomasDisplayListener.swift */; };
		27F1E2122F0FF6EB00E317DB /* ThomasDisplayListenerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A9BBC2B5B290200A6489B /* ThomasDisplayListenerTest.swift */; };
		320AD3A629E7FA2000D66106 /* PagerGestureMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 320AD3A529E7FA2000D66106 /* PagerGestureMap.swift */; };
		3215CA9D2739349800B7D97E /* ModalView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3215CA9C2739349700B7D97E /* ModalView.swift */; };
		322AAB1E2B5AB65700652DAC /* AddChannelPromptView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DDC0562AF1055300D23EBE /* AddChannelPromptView.swift */; };
		322AAB212B5ACB2800652DAC /* ChannelListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 322AAB202B5ACB2800652DAC /* ChannelListView.swift */; };
		322AAB222B5FCB6B00652DAC /* ContactManagementView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 322AAB1C2B5A869000652DAC /* ContactManagementView.swift */; };
		3231126A29D5E4F600CF0D86 /* AirshipAutomationResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3231126929D5E4F600CF0D86 /* AirshipAutomationResources.swift */; };
		3231128229D5E67200CF0D86 /* FrequencyLimitStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3231127B29D5E67200CF0D86 /* FrequencyLimitStore.swift */; };
		3231128329D5E67200CF0D86 /* FrequencyLimitManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3231127C29D5E67200CF0D86 /* FrequencyLimitManager.swift */; };
		3231128429D5E67200CF0D86 /* Occurrence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3231127D29D5E67200CF0D86 /* Occurrence.swift */; };
		3231128729D5E67200CF0D86 /* FrequencyConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3231128029D5E67200CF0D86 /* FrequencyConstraint.swift */; };
		3231128829D5E67200CF0D86 /* FrequencyChecker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3231128129D5E67200CF0D86 /* FrequencyChecker.swift */; };
		3231128C29D5E69400CF0D86 /* UAFrequencyLimits.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 3231128A29D5E69400CF0D86 /* UAFrequencyLimits.xcdatamodeld */; };
		3231129129D5E6D900CF0D86 /* FrequencyLimitManagerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3231128F29D5E6C600CF0D86 /* FrequencyLimitManagerTest.swift */; };
		3237D5F22B865D990055932B /* JSONValueTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3237D5F12B865D990055932B /* JSONValueTransformer.swift */; };
		3243EC632D93109C00B43B25 /* AirshipSwitchToggleStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3243EC622D93109C00B43B25 /* AirshipSwitchToggleStyle.swift */; };
		3243EC642D93109C00B43B25 /* AirshipCheckboxToggleStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3243EC612D93109C00B43B25 /* AirshipCheckboxToggleStyle.swift */; };
		324D3BFF273E6B4500058EE4 /* BannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 324D3BFE273E6B4500058EE4 /* BannerView.swift */; };
		32515869272AFB2E00DF8B44 /* Media.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32515866272AFB2E00DF8B44 /* Media.swift */; };
		3251586B272AFB2E00DF8B44 /* VideoMediaWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32515868272AFB2E00DF8B44 /* VideoMediaWebView.swift */; };
		325D53DA295C7979003421B4 /* ActionRegistryTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 325D53D9295C7979003421B4 /* ActionRegistryTest.swift */; };
		325D53F629646E53003421B4 /* TestChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC7E48426A60CDF0038CFDD /* TestChannel.swift */; };
		325D53F729648150003421B4 /* TestDate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6ED1422683B8FA00A2CBD0 /* TestDate.swift */; };
		325D53FA29648818003421B4 /* TestAirshipRequestSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4A467F28EF4FAF00A25617 /* TestAirshipRequestSession.swift */; };
		325D53FB2964885B003421B4 /* AirshipBaseTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3299EF212949EC3E00251E70 /* AirshipBaseTest.swift */; };
		3261A7F6243CD7F900ADBF6B /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3261A7F4243CD73100ADBF6B /* CoreTelephony.framework */; platformFilter = maccatalyst; };
		3299EF172948CBC100251E70 /* RemoteDataAPIClientTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3299EF162948CBC100251E70 /* RemoteDataAPIClientTest.swift */; };
		3299EF222949EC3E00251E70 /* AirshipBaseTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3299EF212949EC3E00251E70 /* AirshipBaseTest.swift */; };
		3299EF26294B222F00251E70 /* RemoteDataStoreTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3299EF25294B222F00251E70 /* RemoteDataStoreTest.swift */; };
		329DFCCF2B7E4DDA0039C8C0 /* UARemoteDataMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 329DFCCE2B7E4DDA0039C8C0 /* UARemoteDataMapping.swift */; };
		329DFCD52B7E59700039C8C0 /* UAInboxDataMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 329DFCD42B7E59700039C8C0 /* UAInboxDataMapping.swift */; };
		329DFCFF2B7FB8810039C8C0 /* UARemoteDataMappingV3toV4.xcmappingmodel in Resources */ = {isa = PBXBuildFile; fileRef = 329DFCCA2B7E4DA10039C8C0 /* UARemoteDataMappingV3toV4.xcmappingmodel */; };
		32B513562B9F53A500BBE780 /* MessageCenterPredicate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32B513552B9F53A500BBE780 /* MessageCenterPredicate.swift */; };
		32B5BE3B28F8A7EB00F2254B /* MessageCenterController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32B5BE3A28F8A7EB00F2254B /* MessageCenterController.swift */; };
		32B5BE3E28F8A8C000F2254B /* MessageCenterListItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32B5BE2728F8A7D600F2254B /* MessageCenterListItemView.swift */; };
		32B5BE3F28F8A8C200F2254B /* MessageCenterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32B5BE2828F8A7D600F2254B /* MessageCenterView.swift */; };
		32B5BE4028F8A8C500F2254B /* MessageCenterMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32B5BE2928F8A7D600F2254B /* MessageCenterMessageView.swift */; };
		32B5BE4128F8A8C700F2254B /* MessageCenterListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32B5BE2A28F8A7D600F2254B /* MessageCenterListView.swift */; };
		32B5BE4228F8A8CA00F2254B /* MessageCenterListItemViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32B5BE2B28F8A7D600F2254B /* MessageCenterListItemViewModel.swift */; };
		32B5BE4928F8B66500F2254B /* MessageCenterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32B5BE4828F8B66500F2254B /* MessageCenterViewController.swift */; };
		32B632882906CA17000D3E34 /* MessageCenterThemeLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32B632862906CA17000D3E34 /* MessageCenterThemeLoader.swift */; };
		32B632892906CA17000D3E34 /* MessageCenterTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32B632872906CA17000D3E34 /* MessageCenterTheme.swift */; };
		32BBFB402B274C8600C6A998 /* ContactChannelsAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32BBFB3F2B274C8600C6A998 /* ContactChannelsAPIClient.swift */; };
		32C68D0529424449006BBB29 /* RemoteDataTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32C68D0429424449006BBB29 /* RemoteDataTest.swift */; };
		32CF81E2275627F4003009D1 /* AirshipAsyncImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32CF81E1275627F4003009D1 /* AirshipAsyncImage.swift */; };
		32D6E87B2727F7060077C784 /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32D6E87A2727F7060077C784 /* Image.swift */; };
		32E339E32A334A2000CD3BE5 /* AddCustomEventActionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32E339E22A334A2000CD3BE5 /* AddCustomEventActionTest.swift */; };
		32F293D5295AFD94004A7D9C /* ActionArgumentsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32F293D4295AFD94004A7D9C /* ActionArgumentsTest.swift */; };
		32F615A728F708980015696D /* MessageCenterListTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32F615A628F708980015696D /* MessageCenterListTests.swift */; };
		32F615A828F708AD0015696D /* TestChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC7E48426A60CDF0038CFDD /* TestChannel.swift */; };
		32F68CDC28F02A7100F7F52A /* MessageCenterStoreTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32F68CDA28F02A6B00F7F52A /* MessageCenterStoreTest.swift */; };
		32F68CEE28F07C2C00F7F52A /* AirshipMessageCenterResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32F68CE828F07C2B00F7F52A /* AirshipMessageCenterResources.swift */; };
		32F68CEF28F07C2C00F7F52A /* MessageCenterSDKModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32F68CE928F07C2C00F7F52A /* MessageCenterSDKModule.swift */; };
		32F68CF328F07C2C00F7F52A /* MessageCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32F68CED28F07C2C00F7F52A /* MessageCenter.swift */; };
		32F68CF528F07C4900F7F52A /* MessageCenterList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32F68CF428F07C4800F7F52A /* MessageCenterList.swift */; };
		32F97AC129E5986B00FED65F /* StoryIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32F97AC029E5986B00FED65F /* StoryIndicator.swift */; };
		32FD4C782D8079910056D141 /* BasicToggleLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD4C772D8079910056D141 /* BasicToggleLayout.swift */; };
		3C39D3092384C8BE003C50D4 /* AirshipMessageCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CA0E423237E4A7B00EE76CF /* AirshipMessageCenter.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
		3C63556026CDD4F8006E9916 /* AirshipPush.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C63555F26CDD4F8006E9916 /* AirshipPush.swift */; };
		3C693E4E25141CAC00EBFB88 /* AirshipDebugEventData.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 3CA0E222237CCBA600EE76CF /* AirshipDebugEventData.xcdatamodeld */; };
		3C693E4F25141CAC00EBFB88 /* AirshipDebugPushData.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 83A674F623AA7AA4005C0C8F /* AirshipDebugPushData.xcdatamodeld */; };
		3CA0E2A0237CCE2600EE76CF /* AirshipCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 494DD9571B0EB677009C134E /* AirshipCore.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
		3CA0E2BF237CD05F00EE76CF /* AirshipEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CA0E241237CCBA600EE76CF /* AirshipEvent.swift */; };
		3CA0E2CA237CD05F00EE76CF /* EventDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CA0E24D237CCBA600EE76CF /* EventDataManager.swift */; };
		3CA0E2CD237CD05F00EE76CF /* AirshipDebugManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CA0E233237CCBA600EE76CF /* AirshipDebugManager.swift */; };
		3CA0E479237E4E3000EE76CF /* UAInbox.xcdatamodeld in Resources */ = {isa = PBXBuildFile; fileRef = 3CA0E304237E396100EE76CF /* UAInbox.xcdatamodeld */; };
		3CA84AAE26DE255200A59685 /* EventStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CA84AA626DE255200A59685 /* EventStore.swift */; };
		3CA84AB826DE257200A59685 /* DefaultAirshipAnalytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CA84AB626DE257200A59685 /* DefaultAirshipAnalytics.swift */; };
		3CA84ABA26DE257200A59685 /* AirshipAnalytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CA84AB726DE257200A59685 /* AirshipAnalytics.swift */; };
		3CB37A1E251151A400E60392 /* AirshipDebugResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CB37A1D251151A400E60392 /* AirshipDebugResources.swift */; };
		3CC8AA0626BB3C7900405614 /* DefaultAirshipPush.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CC8AA0526BB3C7900405614 /* DefaultAirshipPush.swift */; };
		3CC95B1F268E785900FE2ACD /* NotificationCategories.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CC95B1E268E785900FE2ACD /* NotificationCategories.swift */; };
		3CC95B2B2696549B00FE2ACD /* AirshipPushableComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CC95B2A2696549B00FE2ACD /* AirshipPushableComponent.swift */; };
		45A8ADF023134B38004AD8CA /* testMCColorsCatalog.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 45A8ADD123133E51004AD8CA /* testMCColorsCatalog.xcassets */; };
		6014AD672C1B5F540072DCF0 /* ChallengeResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6014AD662C1B5F540072DCF0 /* ChallengeResolver.swift */; };
		6014AD6C2C2032730072DCF0 /* ChallengeResolverTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6014AD6A2C2032360072DCF0 /* ChallengeResolverTest.swift */; };
		6014AD752C20410B0072DCF0 /* airship.der in Resources */ = {isa = PBXBuildFile; fileRef = 6014AD742C20410A0072DCF0 /* airship.der */; };
		6018AF572B29C20A008E528B /* SearchEventTemplateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6018AF562B29C20A008E528B /* SearchEventTemplateTest.swift */; };
		602AD0D52D7242B300C7D566 /* ThomasSmsLocale.swift in Sources */ = {isa = PBXBuildFile; fileRef = 602AD0D42D7242B300C7D566 /* ThomasSmsLocale.swift */; };
		603269532BF4B141007F7F75 /* AdditionalAudienceCheckerApiClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 603269522BF4B141007F7F75 /* AdditionalAudienceCheckerApiClient.swift */; };
		603269552BF4B8D5007F7F75 /* AdditionalAudienceCheckerResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 603269542BF4B8D5007F7F75 /* AdditionalAudienceCheckerResolver.swift */; };
		603269582BF7550E007F7F75 /* AdditionalAudienceCheckerResolverTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 603269572BF7550E007F7F75 /* AdditionalAudienceCheckerResolverTest.swift */; };
		603269592BF75976007F7F75 /* AirshipCacheTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7EACD02AF4192400DA286B /* AirshipCacheTest.swift */; };
		6032695B2BF75D69007F7F75 /* AirshipHTTPResponseTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6032695A2BF75D69007F7F75 /* AirshipHTTPResponseTest.swift */; };
		6032695C2BF75E39007F7F75 /* AirshipHTTPResponseTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6032695A2BF75D69007F7F75 /* AirshipHTTPResponseTest.swift */; };
		605073832B2CD38200209B51 /* ActiveTimerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 605073822B2CD38200209B51 /* ActiveTimerTest.swift */; };
		605073842B2CD46D00209B51 /* TestAppStateTracker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E698E61267C03C700654DB2 /* TestAppStateTracker.swift */; };
		6050738A2B32F85100209B51 /* ThomasViewModelTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 605073892B32F85100209B51 /* ThomasViewModelTest.swift */; };
		605073902B347B6400209B51 /* ThomasPresentationModelCodingTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6050738F2B347B6400209B51 /* ThomasPresentationModelCodingTest.swift */; };
		6058771D2AC73C940021628E /* AirshipMeteredUsageTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6058771C2AC73C7E0021628E /* AirshipMeteredUsageTest.swift */; };
		605877202ACAC8700021628E /* MeteredUsageApiClientTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6058771E2ACAC86A0021628E /* MeteredUsageApiClientTest.swift */; };
		60653FC22CBD2CD4009CD9A7 /* PushData+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60653FC02CBD2CD4009CD9A7 /* PushData+CoreDataClass.swift */; };
		60653FC32CBD2CD4009CD9A7 /* PushData+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60653FC12CBD2CD4009CD9A7 /* PushData+CoreDataProperties.swift */; };
		6068E0062B2A190300349E82 /* CustomEventTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6068E0052B2A190300349E82 /* CustomEventTest.swift */; };
		6068E0082B2A2A6700349E82 /* AccountEventTemplateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6068E0072B2A2A6700349E82 /* AccountEventTemplateTest.swift */; };
		6068E0322B2B785A00349E82 /* MediaEventTemplateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6068E0312B2B785A00349E82 /* MediaEventTemplateTest.swift */; };
		6068E0342B2B7CA100349E82 /* RetailEventTemplateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6068E0332B2B7CA100349E82 /* RetailEventTemplateTest.swift */; };
		6068E03B2B2CBCF200349E82 /* ActiveTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6068E03A2B2CBCF200349E82 /* ActiveTimer.swift */; };
		607951222A1CD1A50086578F /* ExperimentManagerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6079511F2A1CD19F0086578F /* ExperimentManagerTest.swift */; };
		6087DB882B278F7600449BA8 /* JsonValueMatcherTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6087DB872B278F7600449BA8 /* JsonValueMatcherTest.swift */; };
		608B16E62C2C1138005298FA /* SubscriptionListProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 608B16E52C2C1137005298FA /* SubscriptionListProvider.swift */; };
		608B16E82C2C6DDB005298FA /* ChannelSubscriptionListProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 608B16E72C2C6DDB005298FA /* ChannelSubscriptionListProvider.swift */; };
		608B16F12C2D5F0D005298FA /* BaseCachingRemoteDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 608B16F02C2D5F0D005298FA /* BaseCachingRemoteDataProvider.swift */; };
		60956D862CBE7CFA00950172 /* AirshipLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8E1C9A26447B3800B11791 /* AirshipLock.swift */; };
		609843562D6F518900690371 /* SmsLocalePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 609843552D6F518900690371 /* SmsLocalePicker.swift */; };
		60A292112CB7C5C30096F5EB /* TestDate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6ED1422683B8FA00A2CBD0 /* TestDate.swift */; };
		60A364ED2C3479BF00B05E26 /* ExecutionWindowTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60A364EC2C3479BF00B05E26 /* ExecutionWindowTest.swift */; };
		60A5CC082B28DC500017EDB2 /* NotificationCategoriesTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60A5CC072B28DC500017EDB2 /* NotificationCategoriesTest.swift */; };
		60A5CC0C2B29AE890017EDB2 /* ProximityRegionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60A5CC0B2B29AE890017EDB2 /* ProximityRegionTest.swift */; };
		60A5CC0E2B29B1B80017EDB2 /* CircularRegionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60A5CC0D2B29B1B80017EDB2 /* CircularRegionTest.swift */; };
		60A5CC102B29B4100017EDB2 /* RegionEventTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60A5CC0F2B29B4100017EDB2 /* RegionEventTest.swift */; };
		60C1DB0F2A8B743C00A1D3DA /* AirshipEmbeddedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60C1DB0B2A8B743B00A1D3DA /* AirshipEmbeddedView.swift */; };
		60C1DB102A8B743C00A1D3DA /* AirshipEmbeddedViewManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60C1DB0C2A8B743B00A1D3DA /* AirshipEmbeddedViewManager.swift */; };
		60C1DB112A8B743C00A1D3DA /* AirshipEmbeddedObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60C1DB0D2A8B743B00A1D3DA /* AirshipEmbeddedObserver.swift */; };
		60C1DB122A8B743C00A1D3DA /* EmbeddedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60C1DB0E2A8B743C00A1D3DA /* EmbeddedView.swift */; };
		60CE9BDE2D0B6A0900A8B625 /* ThomasPagerControllerBranching.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60CE9BDD2D0B6A0900A8B625 /* ThomasPagerControllerBranching.swift */; };
		60D1D9B82B68FB6400EBE0A4 /* PreparedTrigger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60D1D9B72B68FB6400EBE0A4 /* PreparedTrigger.swift */; };
		60D1D9BB2B6A53F000EBE0A4 /* PreparedTriggerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60D1D9BA2B6A53F000EBE0A4 /* PreparedTriggerTest.swift */; };
		60D1D9BD2B6AB2D100EBE0A4 /* AutomationTriggerProcessorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60D1D9BC2B6AB2D100EBE0A4 /* AutomationTriggerProcessorTest.swift */; };
		60D2B3352D9F0FCF00B0752D /* PagerDisableSwipeSelectorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60D2B3342D9F0FCF00B0752D /* PagerDisableSwipeSelectorTest.swift */; };
		60D3BCC42A1529D800E07524 /* ExperimentDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60D3BCC32A1529D800E07524 /* ExperimentDataProvider.swift */; };
		60D3BCC62A152A0D00E07524 /* ExperimentManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60D3BCC52A152A0D00E07524 /* ExperimentManager.swift */; };
		60D3BCCC2A153C0700E07524 /* Experiment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60D3BCCB2A153C0700E07524 /* Experiment.swift */; };
		60D3BCCE2A15471C00E07524 /* AudienceHashSelector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60D3BCCD2A15471C00E07524 /* AudienceHashSelector.swift */; };
		60D3BCD02A154D9400E07524 /* MessageCriteria.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60D3BCCF2A154D9400E07524 /* MessageCriteria.swift */; };
		60E09FDB2B2780DB005A16EA /* JsonMatcherTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60E09FDA2B2780DB005A16EA /* JsonMatcherTest.swift */; };
		60EACF542B7BF2EA00CAFDBB /* AirshipApptimizeIntegration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60EACF532B7BF2EA00CAFDBB /* AirshipApptimizeIntegration.swift */; };
		60F8E75C2B8F3D4B00460EDF /* CancelSchedulesAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60F8E75B2B8F3D4B00460EDF /* CancelSchedulesAction.swift */; };
		60F8E75E2B8FA12800460EDF /* CancelSchedulesActionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60F8E75D2B8FA12800460EDF /* CancelSchedulesActionTest.swift */; };
		60F8E7602B8FAF5400460EDF /* ScheduleAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60F8E75F2B8FAF5400460EDF /* ScheduleAction.swift */; };
		60F8E7622B8FB2CC00460EDF /* ScheduleActionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60F8E7612B8FB2CC00460EDF /* ScheduleActionTest.swift */; };
		60FCA3052B4F1110005C9232 /* LegacyInAppMessaging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60FCA3042B4F1110005C9232 /* LegacyInAppMessaging.swift */; };
		60FCA3072B4F1C73005C9232 /* LegacyInAppMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60FCA3062B4F1C73005C9232 /* LegacyInAppMessage.swift */; };
		60FCA30A2B51364A005C9232 /* LegacyInAppMessageTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60FCA3092B51364A005C9232 /* LegacyInAppMessageTest.swift */; };
		60FCA30C2B51492A005C9232 /* LegacyInAppMessagingTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60FCA30B2B51492A005C9232 /* LegacyInAppMessagingTest.swift */; };
		60FCA30D2B5534DB005C9232 /* TestAirshipInstance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E87BE1526E29BC90005D20D /* TestAirshipInstance.swift */; };
		60FCA30E2B5535F4005C9232 /* TestAnalytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E87BE1726E2C5940005D20D /* TestAnalytics.swift */; };
		60FCA3252B5EF3A8005C9232 /* AutomationEventFeedTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60FCA3242B5EF3A8005C9232 /* AutomationEventFeedTest.swift */; };
		6329102E2DD8103200B13C6C /* NativeVideoPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6329102D2DD8103200B13C6C /* NativeVideoPlayer.swift */; };
		632913FA2DE547A500B13C6C /* VideoMediaNativeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 632913F92DE547A500B13C6C /* VideoMediaNativeView.swift */; };
		6E0031AB2D08CC920004F53E /* AirshipAuthorizedNotificationSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E0031AA2D08CC8A0004F53E /* AirshipAuthorizedNotificationSettings.swift */; };
		6E0104FF2DDF9B26009D651F /* IconView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E0104FE2DDF9B26009D651F /* IconView.swift */; };
		6E0105012DDFA5E9009D651F /* ScoreController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E0105002DDFA5E6009D651F /* ScoreController.swift */; };
		6E0105032DDFA719009D651F /* ScoreToggleLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E0105022DDFA719009D651F /* ScoreToggleLayout.swift */; };
		6E0105052DDFA735009D651F /* ScoreState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E0105042DDFA735009D651F /* ScoreState.swift */; };
		6E032A502B210E6000404630 /* RemoteConfigTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E032A4F2B210E6000404630 /* RemoteConfigTest.swift */; };
		6E062D03271656DE001A74A1 /* Container.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E062D02271656DE001A74A1 /* Container.swift */; };
		6E062D05271656F8001A74A1 /* LinearLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E062D04271656F8001A74A1 /* LinearLayout.swift */; };
		6E062D0727165709001A74A1 /* Label.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E062D0627165709001A74A1 /* Label.swift */; };
		6E062D092716571F001A74A1 /* LabelButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E062D082716571F001A74A1 /* LabelButton.swift */; };
		6E062D0D2718B505001A74A1 /* ViewConstraints.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E062D0C2718B505001A74A1 /* ViewConstraints.swift */; };
		6E07688829F9D28A0014E2A9 /* AirshipNotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E07688729F9D28A0014E2A9 /* AirshipNotificationCenter.swift */; };
		6E07688C29F9F0830014E2A9 /* AirshipLocaleManagerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E07688B29F9F0830014E2A9 /* AirshipLocaleManagerTest.swift */; };
		6E07689229FB39440014E2A9 /* AirshipUnsafeSendableWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E07689129FB39440014E2A9 /* AirshipUnsafeSendableWrapper.swift */; };
		6E07B5F82D925ED60087EC47 /* TestPrivacyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E07B5F72D925ED30087EC47 /* TestPrivacyManager.swift */; };
		6E07B5F92D925F2A0087EC47 /* TestPrivacyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E07B5F72D925ED30087EC47 /* TestPrivacyManager.swift */; };
		6E07B5FA2D925F2A0087EC47 /* TestPrivacyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E07B5F72D925ED30087EC47 /* TestPrivacyManager.swift */; };
		6E07B5FB2D925F2A0087EC47 /* TestPrivacyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E07B5F72D925ED30087EC47 /* TestPrivacyManager.swift */; };
		6E07B5FC2D925F2A0087EC47 /* TestPrivacyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E07B5F72D925ED30087EC47 /* TestPrivacyManager.swift */; };
		6E0B8732294A9C130064B7BD /* AirshipAutomation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E0B872A294A9C120064B7BD /* AirshipAutomation.framework */; };
		6E0B8744294A9C950064B7BD /* AirshipCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 494DD9571B0EB677009C134E /* AirshipCore.framework */; platformFilters = (ios, maccatalyst, macos, tvos, xros, ); };
		6E0B8760294CE0BF0064B7BD /* FarmHashFingerprint64Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E0B875F294CE0BF0064B7BD /* FarmHashFingerprint64Test.swift */; };
		6E0B8762294CE0DC0064B7BD /* FarmHashFingerprint64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E0B8761294CE0DC0064B7BD /* FarmHashFingerprint64.swift */; };
		6E0F4BE22B32190400673CA4 /* AutomationSchedule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E0F4BE12B32190400673CA4 /* AutomationSchedule.swift */; };
		6E0F4BE52B32645600673CA4 /* AutomationTrigger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E0F4BE42B32645600673CA4 /* AutomationTrigger.swift */; };
		6E0F4BE72B32646000673CA4 /* AutomationDelay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E0F4BE62B32646000673CA4 /* AutomationDelay.swift */; };
		6E0F4BE92B3264A400673CA4 /* DeferredAutomationData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E0F4BE82B3264A400673CA4 /* DeferredAutomationData.swift */; };
		6E0F557F2AE03BB900E7CB8C /* ThomasAsyncImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E0F557E2AE03BB900E7CB8C /* ThomasAsyncImage.swift */; };
		6E10A1482C2B825200ED9556 /* DefaultTaskSleeperTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E10A1472C2B825200ED9556 /* DefaultTaskSleeperTest.swift */; };
		6E1185C62C3328A10071334E /* ExecutionWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1185C52C3328A10071334E /* ExecutionWindow.swift */; };
		6E12539129A81ACE0009EE58 /* AirshipCoreDataPredicate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E12539029A81ACE0009EE58 /* AirshipCoreDataPredicate.swift */; };
		6E146C502F5214D900320A36 /* AirshipDevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E146C4F2F5214D900320A36 /* AirshipDevice.swift */; };
		6E146D682F523DB900320A36 /* AirshipFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E146D672F523DB700320A36 /* AirshipFont.swift */; };
		6E146D6A2F5241BC00320A36 /* AirshipColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E146D692F5241BA00320A36 /* AirshipColor.swift */; };
		6E146EDD2F52537000320A36 /* AishipFontTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E146EDC2F52536C00320A36 /* AishipFontTests.swift */; };
		6E146FF32F525E7300320A36 /* AirshipPasteboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E146FF22F525E7300320A36 /* AirshipPasteboard.swift */; };
		6E1472D52F526DCD00320A36 /* AirshipNativePlatform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1472D42F526DC600320A36 /* AirshipNativePlatform.swift */; };
		6E1473EA2F527C4D00320A36 /* TestURLOpener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ECB62812A36A45F0095C85C /* TestURLOpener.swift */; };
		6E1476CC2F5643A100320A36 /* MessageCenterNavigationAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1476CB2F56439A00320A36 /* MessageCenterNavigationAppearance.swift */; };
		6E14C9A128B5E4AF00A55E65 /* PushNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E14C9A028B5E4AF00A55E65 /* PushNotification.swift */; };
		6E1528172B4DC3C000DF1377 /* ActionAutomationExecutor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1528162B4DC3C000DF1377 /* ActionAutomationExecutor.swift */; };
		6E1528192B4DC3D000DF1377 /* InAppMessageAutomationPreparer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1528182B4DC3D000DF1377 /* InAppMessageAutomationPreparer.swift */; };
		6E15281B2B4DC3DF00DF1377 /* InAppMessageAutomationExecutor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15281A2B4DC3DF00DF1377 /* InAppMessageAutomationExecutor.swift */; };
		6E15281D2B4DC43100DF1377 /* ActionAutomationPreparer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15281C2B4DC43100DF1377 /* ActionAutomationPreparer.swift */; };
		6E1528202B4DC59C00DF1377 /* InAppMessageSceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15281F2B4DC59C00DF1377 /* InAppMessageSceneDelegate.swift */; };
		6E1528222B4DC5C000DF1377 /* InAppMessageDisplayDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1528212B4DC5C000DF1377 /* InAppMessageDisplayDelegate.swift */; };
		6E1528242B4DC60200DF1377 /* DisplayCoordinatorManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1528232B4DC60200DF1377 /* DisplayCoordinatorManager.swift */; };
		6E1528262B4DC64B00DF1377 /* DisplayAdapterFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1528252B4DC64B00DF1377 /* DisplayAdapterFactory.swift */; };
		6E1528282B4DCFCB00DF1377 /* AirshipActorValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1528272B4DCFCB00DF1377 /* AirshipActorValue.swift */; };
		6E15282C2B4DE81E00DF1377 /* AutomationSDKModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15282B2B4DE81E00DF1377 /* AutomationSDKModule.swift */; };
		6E15282F2B4DED7A00DF1377 /* InAppMessageAnalytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15282E2B4DED7A00DF1377 /* InAppMessageAnalytics.swift */; };
		6E1528312B4DED8900DF1377 /* InAppMessageAnalyticsFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1528302B4DED8900DF1377 /* InAppMessageAnalyticsFactory.swift */; };
		6E1528332B4DF2E600DF1377 /* ScheduleConditionsChangedNotifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1528322B4DF2E600DF1377 /* ScheduleConditionsChangedNotifier.swift */; };
		6E1528352B4E11DB00DF1377 /* CustomDisplayAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1528342B4E11DB00DF1377 /* CustomDisplayAdapter.swift */; };
		6E1528372B4E11E800DF1377 /* CustomDisplayAdapterWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1528362B4E11E800DF1377 /* CustomDisplayAdapterWrapper.swift */; };
		6E1528392B4E13D400DF1377 /* AirshipLayoutDisplayAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1528382B4E13D400DF1377 /* AirshipLayoutDisplayAdapter.swift */; };
		6E1528402B4F153900DF1377 /* TestDisplayAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15283F2B4F153900DF1377 /* TestDisplayAdapter.swift */; };
		6E1528422B4F156200DF1377 /* TestDisplayCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1528412B4F156200DF1377 /* TestDisplayCoordinator.swift */; };
		6E152BCA2743235800788402 /* Icons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E152BC92743235800788402 /* Icons.swift */; };
		6E1589502AFEF19F00954A04 /* SessionTracker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15894F2AFEF19F00954A04 /* SessionTracker.swift */; };
		6E1589542AFF021D00954A04 /* SessionState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1589532AFF021D00954A04 /* SessionState.swift */; };
		6E1589582AFF023400954A04 /* SessionEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1589572AFF023400954A04 /* SessionEvent.swift */; };
		6E15B6DB26CC749F0099C92D /* RemoteConfigManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15B6D826CC749F0099C92D /* RemoteConfigManager.swift */; };
		6E15B6F426CD85C40099C92D /* RuntimeConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15B6F326CD85C40099C92D /* RuntimeConfig.swift */; };
		6E15B6FA26CDCA6A0099C92D /* RuntimeConfigTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15B6F926CDCA6A0099C92D /* RuntimeConfigTest.swift */; };
		6E15B70326CDE40E0099C92D /* RemoteConfigManagerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15B70226CDE40E0099C92D /* RemoteConfigManagerTest.swift */; };
		6E15B70526CE07180099C92D /* TestRemoteData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15B70426CE07180099C92D /* TestRemoteData.swift */; };
		6E15B71426CEB4190099C92D /* RemoteDataStorePayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15B70A26CEB4190099C92D /* RemoteDataStorePayload.swift */; };
		6E15B71826CEB4190099C92D /* RemoteDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15B70C26CEB4190099C92D /* RemoteDataStore.swift */; };
		6E15B72326CEC7030099C92D /* RemoteDataPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15B72026CEC7030099C92D /* RemoteDataPayload.swift */; };
		6E15B72A26CEDBA50099C92D /* RemoteData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15B72926CEDBA50099C92D /* RemoteData.swift */; };
		6E15B72D26CF13BC0099C92D /* RemoteDataProviderDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15B72C26CF13BC0099C92D /* RemoteDataProviderDelegate.swift */; };
		6E15B73026CF4F6B0099C92D /* TestRemoteDataAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15B72F26CF4F6B0099C92D /* TestRemoteDataAPIClient.swift */; };
		6E16208A2B311219009240B2 /* DisplayCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1620892B311219009240B2 /* DisplayCoordinator.swift */; };
		6E16208D2B3116AE009240B2 /* ImmediateDisplayCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E16208C2B3116AE009240B2 /* ImmediateDisplayCoordinator.swift */; };
		6E16208F2B3116BA009240B2 /* DefaultDisplayCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E16208E2B3116BA009240B2 /* DefaultDisplayCoordinator.swift */; };
		6E1620932B3118D9009240B2 /* ImmediateDisplayCoordinatorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1620912B3118D5009240B2 /* ImmediateDisplayCoordinatorTest.swift */; };
		6E1620952B311D8A009240B2 /* DefaultDisplayCoordinatorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1620942B311D8A009240B2 /* DefaultDisplayCoordinatorTest.swift */; };
		6E1767F629B923D100D65F60 /* ChannelAuthTokenProviderTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1767F329B923D100D65F60 /* ChannelAuthTokenProviderTest.swift */; };
		6E1767F729B923D100D65F60 /* ChannelAuthTokenAPIClientTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1767F429B923D100D65F60 /* ChannelAuthTokenAPIClientTest.swift */; };
		6E1767F829B923D100D65F60 /* TestChannelAuthTokenAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1767F529B923D100D65F60 /* TestChannelAuthTokenAPIClient.swift */; };
		6E1767FA29B92F1700D65F60 /* AirshipUtilsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1767F929B92F1700D65F60 /* AirshipUtilsTest.swift */; };
		6E1802F92C5C2DEC00198D0D /* AirshipAnalyticFeedTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1802F82C5C2DEC00198D0D /* AirshipAnalyticFeedTest.swift */; };
		6E1892B1268CE8FE00417887 /* AirshipLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8E1C9A26447B3800B11791 /* AirshipLock.swift */; };
		6E1892C8268D15C300417887 /* PreferenceCenterTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1892C7268D15C300417887 /* PreferenceCenterTest.swift */; };
		6E1892D5268E3D8500417887 /* PreferenceCenterDecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1892D4268E3D8500417887 /* PreferenceCenterDecoder.swift */; };
		6E1892D7268E3F1800417887 /* PreferenceCenterConfigTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1892D6268E3F1800417887 /* PreferenceCenterConfigTest.swift */; };
		6E1892DE2694F1C100417887 /* ChannelRegistrar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1892DD2694F1C100417887 /* ChannelRegistrar.swift */; };
		6E1A15062D6EA3A50056418B /* ThomasFormState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A15052D6EA3A50056418B /* ThomasFormState.swift */; };
		6E1A19222D6F875A0056418B /* ThomasFormValidationMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A19212D6F87550056418B /* ThomasFormValidationMode.swift */; };
		6E1A19242D6F8BDD0056418B /* AirshipInputValidationTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A19232D6F8BD50056418B /* AirshipInputValidationTest.swift */; };
		6E1A1BB32D6F9D0F0056418B /* ThomasFormFieldProcessorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A1BB22D6F9D090056418B /* ThomasFormFieldProcessorTest.swift */; };
		6E1A1D852D70F3700056418B /* ThomasState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A1D842D70F36D0056418B /* ThomasState.swift */; };
		6E1A9BAB2B5AE38A00A6489B /* InAppMessageDisplayListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A9BAA2B5AE38A00A6489B /* InAppMessageDisplayListener.swift */; };
		6E1A9BB02B5B0C4C00A6489B /* AutomationActionRunner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A9BAF2B5B0C4C00A6489B /* AutomationActionRunner.swift */; };
		6E1A9BB22B5B172F00A6489B /* TestActionRunner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A9BB12B5B172F00A6489B /* TestActionRunner.swift */; };
		6E1A9BB72B5B1D9E00A6489B /* TestActiveTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A9BB62B5B1D9E00A6489B /* TestActiveTimer.swift */; };
		6E1A9BB92B5B20A500A6489B /* InAppMessageDisplayListenerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A9BB82B5B20A500A6489B /* InAppMessageDisplayListenerTest.swift */; };
		6E1A9BBB2B5B20D700A6489B /* TestInAppMessageAnalytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A9BBA2B5B20D700A6489B /* TestInAppMessageAnalytics.swift */; };
		6E1A9BBF2B5EE19000A6489B /* PreparedSchedule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A9BBE2B5EE19000A6489B /* PreparedSchedule.swift */; };
		6E1A9BC12B5EE1CF00A6489B /* SchedulePrepareResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A9BC02B5EE1CF00A6489B /* SchedulePrepareResult.swift */; };
		6E1A9BC32B5EE1DE00A6489B /* ScheduleReadyResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A9BC22B5EE1DE00A6489B /* ScheduleReadyResult.swift */; };
		6E1A9BC52B5EE1EE00A6489B /* ScheduleExecuteResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A9BC42B5EE1EE00A6489B /* ScheduleExecuteResult.swift */; };
		6E1A9BC72B5EE32E00A6489B /* AutomationTriggerProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A9BC62B5EE32E00A6489B /* AutomationTriggerProcessor.swift */; };
		6E1A9BC92B5EE34600A6489B /* AutomationEventFeed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A9BC82B5EE34600A6489B /* AutomationEventFeed.swift */; };
		6E1A9BD12B5EE84600A6489B /* AutomationScheduleData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A9BD02B5EE84600A6489B /* AutomationScheduleData.swift */; };
		6E1A9BD32B5EE8A400A6489B /* AutomationScheduleState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A9BD22B5EE8A400A6489B /* AutomationScheduleState.swift */; };
		6E1A9BD52B5EE97000A6489B /* TriggeringInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A9BD42B5EE97000A6489B /* TriggeringInfo.swift */; };
		6E1A9BF72B606CF200A6489B /* AutomationDelayProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1A9BF62B606CF200A6489B /* AutomationDelayProcessor.swift */; };
		6E1B7B132B714FFC00695561 /* LandingPageAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1B7B122B714FFC00695561 /* LandingPageAction.swift */; };
		6E1B7B162B715FFE00695561 /* LandingPageActionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1B7B152B715FFE00695561 /* LandingPageActionTest.swift */; };
		6E1BACDB2719ED7D0038399E /* ScrollLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1BACDA2719ED7D0038399E /* ScrollLayout.swift */; };
		6E1BACDD2719FC0A0038399E /* ViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1BACDC2719FC0A0038399E /* ViewFactory.swift */; };
		6E1C9C3A271E90EB009EF9EF /* LayoutModelsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1C9C39271E90EB009EF9EF /* LayoutModelsTest.swift */; };
		6E1C9C4B271F7878009EF9EF /* BackgroundColorViewModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1C9C4A271F7878009EF9EF /* BackgroundColorViewModifier.swift */; };
		6E1CBD812BA3A30300519D9C /* AirshipEmbeddedInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1CBD802BA3A30300519D9C /* AirshipEmbeddedInfo.swift */; };
		6E1CBDE32BA51ED100519D9C /* InAppDisplayImpressionRuleProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1CBDE22BA51ED100519D9C /* InAppDisplayImpressionRuleProvider.swift */; };
		6E1CBDFF2BAA1DF200519D9C /* DefaultInAppDisplayImpressionRuleProviderTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1CBDFE2BAA1DF200519D9C /* DefaultInAppDisplayImpressionRuleProviderTest.swift */; };
		6E1CBE2D2BAA2AEA00519D9C /* AirshipAutomation.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 6E1CBE2A2BAA2AEA00519D9C /* AirshipAutomation.xcdatamodeld */; };
		6E1D8AD126CC5D490049DACB /* RemoteConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1D8AB226CC5D490049DACB /* RemoteConfig.swift */; };
		6E1D8AD826CC66BE0049DACB /* RemoteConfigCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1D8AD726CC66BE0049DACB /* RemoteConfigCache.swift */; };
		6E1D90022B2D1AB4004BA130 /* RetryingQueueTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1D90012B2D1AB4004BA130 /* RetryingQueueTests.swift */; };
		6E1EEE902BD81AF300B45A87 /* ContactChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1EEE8F2BD81AF300B45A87 /* ContactChannel.swift */; };
		6E1F6E842BE6835400CFC7A7 /* UARemoteDataMappingV2toV4.xcmappingmodel in Resources */ = {isa = PBXBuildFile; fileRef = 6E1F6E832BE6835400CFC7A7 /* UARemoteDataMappingV2toV4.xcmappingmodel */; };
		6E1F6E882BE683E600CFC7A7 /* UARemoteDataMappingV1toV4.xcmappingmodel in Resources */ = {isa = PBXBuildFile; fileRef = 6E1F6E872BE683E600CFC7A7 /* UARemoteDataMappingV1toV4.xcmappingmodel */; };
		6E213B182BC60AF100BF24AE /* AirshipWeakValueHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E213B172BC60AF100BF24AE /* AirshipWeakValueHolder.swift */; };
		6E213B1E2BC7054500BF24AE /* InAppActionRunner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E213B1D2BC7054500BF24AE /* InAppActionRunner.swift */; };
		6E21852B237D32B30084933A /* EventData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E21852A237D32B30084933A /* EventData.swift */; };
		6E2486DF28945D3900657CE4 /* PreferenceCenterState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2486DE28945D3900657CE4 /* PreferenceCenterState.swift */; };
		6E2486EC2894901E00657CE4 /* ConditionsViewModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2486EB2894901E00657CE4 /* ConditionsViewModifier.swift */; };
		6E2486F22898341400657CE4 /* ConditionsMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2486F02898341400657CE4 /* ConditionsMonitor.swift */; };
		6E2486F728984D0D00657CE4 /* PreferenceCenterTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2486F628984D0D00657CE4 /* PreferenceCenterTheme.swift */; };
		6E2486FD2899C06100657CE4 /* PreferenceCenterContentLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2486FC2899C06100657CE4 /* PreferenceCenterContentLoader.swift */; };
		6E25DD052D515F33009CF1A4 /* ThomasEmailRegistrationOptionsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2FA28B2D515C5A005893E2 /* ThomasEmailRegistrationOptionsTest.swift */; };
		6E2811682BE406A50040D928 /* FeatureFlagDeferredResolverTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7EACD22AF4220E00DA286B /* FeatureFlagDeferredResolverTest.swift */; };
		6E28116C2BE40E860040D928 /* FeatureFlagVariablesTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E28116B2BE40E860040D928 /* FeatureFlagVariablesTest.swift */; };
		6E29474B2AD47E15009EC6DD /* AirshipPreferenceCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 847BFFF4267CD739007CD249 /* AirshipPreferenceCenter.framework */; };
		6E29474D2AD5DA3B009EC6DD /* LiveActivityRegistrationStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E29474C2AD5DA3B009EC6DD /* LiveActivityRegistrationStatus.swift */; };
		6E2947512AD5DB5A009EC6DD /* LiveActivityRegistrationStatusUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2947502AD5DB5A009EC6DD /* LiveActivityRegistrationStatusUpdates.swift */; };
		6E299FD528D13D00001305A7 /* DefaultAirshipRequestSessionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E299FD428D13D00001305A7 /* DefaultAirshipRequestSessionTest.swift */; };
		6E299FD728D13E54001305A7 /* AirshipRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E299FD628D13E54001305A7 /* AirshipRequest.swift */; };
		6E299FDB28D14208001305A7 /* AirshipResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E299FDA28D14208001305A7 /* AirshipResponse.swift */; };
		6E299FDF28D14258001305A7 /* AirshipRequestSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E299FDE28D14258001305A7 /* AirshipRequestSession.swift */; };
		6E2D6AEE26B083DB00B7C226 /* ChannelAudienceManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2D6AED26B083DB00B7C226 /* ChannelAudienceManager.swift */; };
		6E2D6AF226B0B64E00B7C226 /* SubscriptionListAPIClientTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2D6AF126B0B64E00B7C226 /* SubscriptionListAPIClientTest.swift */; };
		6E2D6AF426B0C3C500B7C226 /* ChannelAudienceManagerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2D6AF326B0C3C500B7C226 /* ChannelAudienceManagerTest.swift */; };
		6E2D6AF626B0C6CA00B7C226 /* TestSubscriptionListAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2D6AF526B0C6CA00B7C226 /* TestSubscriptionListAPIClient.swift */; };
		6E2E3CA22B32723C00B8515B /* InAppMessageNativeBridgeExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2E3CA12B32723C00B8515B /* InAppMessageNativeBridgeExtension.swift */; };
		6E2E3CA62B327A6C00B8515B /* InAppMessageNativeBridgeExtensionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2E3CA42B32726400B8515B /* InAppMessageNativeBridgeExtensionTest.swift */; };
		6E2F5A742A60833700CABD3D /* FeatureFlagManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2F5A732A60833700CABD3D /* FeatureFlagManager.swift */; };
		6E2F5A762A60871E00CABD3D /* FeatureFlagPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2F5A752A60871E00CABD3D /* FeatureFlagPayload.swift */; };
		6E2F5A862A65F00200CABD3D /* RemoteDataSourceStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2F5A852A65F00200CABD3D /* RemoteDataSourceStatus.swift */; };
		6E2F5A8A2A66088100CABD3D /* AudienceDeviceInfoProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2F5A892A66088100CABD3D /* AudienceDeviceInfoProvider.swift */; };
		6E2F5A8E2A66FE8900CABD3D /* AirshipTimeCriteria.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2F5A8D2A66FE8900CABD3D /* AirshipTimeCriteria.swift */; };
		6E2F5A932A67316C00CABD3D /* AirshipFeatureFlags.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A62058692A5841330041FBF9 /* AirshipFeatureFlags.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
		6E2F5AB12A67434B00CABD3D /* FeatureFlag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2F5AB02A67434B00CABD3D /* FeatureFlag.swift */; };
		6E2F5AB22A67589400CABD3D /* TestDate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6ED1422683B8FA00A2CBD0 /* TestDate.swift */; };
		6E2F5AB32A6758ED00CABD3D /* TestNetworkMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6ED171268448EC00A2CBD0 /* TestNetworkMonitor.swift */; };
		6E2F5AB52A67599400CABD3D /* TestRemoteData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15B70426CE07180099C92D /* TestRemoteData.swift */; };
		6E2F5AB72A675ADC00CABD3D /* TestAudienceChecker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2F5AB62A675ADC00CABD3D /* TestAudienceChecker.swift */; };
		6E2F5AB82A675ADC00CABD3D /* TestAudienceChecker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2F5AB62A675ADC00CABD3D /* TestAudienceChecker.swift */; };
		6E2F5ABA2A675D3600CABD3D /* FeatureFlagsRemoteDataAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2F5AB92A675D3600CABD3D /* FeatureFlagsRemoteDataAccess.swift */; };
		6E2FA2892D51519B005893E2 /* ThomasEmailRegistrationOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2FA2882D515189005893E2 /* ThomasEmailRegistrationOptions.swift */; };
		6E34C4B12C7D4B6400B00506 /* ExecutionWindowProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E34C4B02C7D4B6400B00506 /* ExecutionWindowProcessor.swift */; };
		6E34C4B32C7D4C6600B00506 /* ExecutionWindowProcessorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E34C4B22C7D4C6600B00506 /* ExecutionWindowProcessorTest.swift */; };
		6E382C21276D3E990091A351 /* ThomasValidationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E382C20276D3E990091A351 /* ThomasValidationTests.swift */; };
		6E3B230F28A318CD0005D46E /* PreferenceCenterThemeLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E3B230E28A318CD0005D46E /* PreferenceCenterThemeLoader.swift */; };
		6E3B231328A32EC30005D46E /* PreferenceCenterViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E3B231228A32EC30005D46E /* PreferenceCenterViewExtensions.swift */; };
		6E3B32CC27559D8B00B89C7B /* FormInputViewModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E3B32CB27559D8B00B89C7B /* FormInputViewModifier.swift */; };
		6E3B32CF2755D8C700B89C7B /* LayoutState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E3B32CE2755D8C700B89C7B /* LayoutState.swift */; };
		6E3CA5412ECB9B7900210C32 /* AirshipDisplayTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E3CA5402ECB9B7400210C32 /* AirshipDisplayTarget.swift */; };
		6E4007142A153AB20013C2DE /* AppRemoteDataProviderDelegateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4007132A153AB20013C2DE /* AppRemoteDataProviderDelegateTest.swift */; };
		6E4007162A153ABE0013C2DE /* ContactRemoteDataProviderTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4007152A153ABE0013C2DE /* ContactRemoteDataProviderTest.swift */; };
		6E4007182A153AFE0013C2DE /* RemoteDataURLFactoryTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4007172A153AFE0013C2DE /* RemoteDataURLFactoryTest.swift */; };
		6E40868C2B8931C900435E2C /* AirshipViewSizeReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E40868B2B8931C900435E2C /* AirshipViewSizeReader.swift */; };
		6E40868E2B8D036600435E2C /* AirshipEmbeddedSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E40868D2B8D036600435E2C /* AirshipEmbeddedSize.swift */; };
		6E411B782538C4E600FEE4E8 /* UANativeBridge in Resources */ = {isa = PBXBuildFile; fileRef = 6E411B6C2538C4E500FEE4E8 /* UANativeBridge */; };
		6E411B7C2538C4E600FEE4E8 /* UANotificationCategories.plist in Resources */ = {isa = PBXBuildFile; fileRef = 6E411B6D2538C4E600FEE4E8 /* UANotificationCategories.plist */; };
		6E411C782538C60900FEE4E8 /* UrbanAirship.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6E411C742538C60900FEE4E8 /* UrbanAirship.strings */; };
		6E411CAB2538C6A600FEE4E8 /* UARemoteData.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 6E411CA42538C6A500FEE4E8 /* UARemoteData.xcdatamodeld */; };
		6E411CAF2538C6A600FEE4E8 /* UAEvents.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 6E411CA72538C6A500FEE4E8 /* UAEvents.xcdatamodeld */; };
		6E43202226EA814F009228AB /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3261A7F4243CD73100ADBF6B /* CoreTelephony.framework */; platformFilter = maccatalyst; };
		6E43219226EA89B6009228AB /* NativeBridgeDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E43218F26EA89B6009228AB /* NativeBridgeDelegate.swift */; };
		6E4325C32B7A9D9A00A9B000 /* AirshipPrivacyManagerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4325C22B7A9D9A00A9B000 /* AirshipPrivacyManagerTest.swift */; };
		6E4325C52B7AC3F700A9B000 /* TestPush.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4325C42B7AC3F700A9B000 /* TestPush.swift */; };
		6E4325C62B7AC40D00A9B000 /* TestPush.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4325C42B7AC3F700A9B000 /* TestPush.swift */; };
		6E4325CE2B7AD5A200A9B000 /* AirshipComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4325CD2B7AD5A200A9B000 /* AirshipComponent.swift */; };
		6E4325D32B7AD96800A9B000 /* AirshipTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4325D22B7AD96800A9B000 /* AirshipTest.swift */; };
		6E4325E92B7AEB1F00A9B000 /* AirshipEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4325E82B7AEB1F00A9B000 /* AirshipEvent.swift */; };
		6E4325F22B7B1EDA00A9B000 /* SessionEventFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4325F12B7B1EDA00A9B000 /* SessionEventFactory.swift */; };
		6E4325F62B7B2F5800A9B000 /* FeatureFlagAnalytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4325F52B7B2F5800A9B000 /* FeatureFlagAnalytics.swift */; };
		6E4325F82B7C08A600A9B000 /* AirshipAnalyticsFeed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4325F72B7C08A600A9B000 /* AirshipAnalyticsFeed.swift */; };
		6E4326012B7C327C00A9B000 /* AirshipEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4326002B7C327C00A9B000 /* AirshipEvents.swift */; };
		6E4326072B7C364300A9B000 /* AssociatedIdentifiersTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4326042B7C361F00A9B000 /* AssociatedIdentifiersTest.swift */; };
		6E4326092B7C396F00A9B000 /* TestAnalytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E87BE1726E2C5940005D20D /* TestAnalytics.swift */; };
		6E4339EF2DFA03A3000A7741 /* JSONValueMatcherPredicates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4339EE2DFA039B000A7741 /* JSONValueMatcherPredicates.swift */; };
		6E4339F12DFA099F000A7741 /* AirshipIvyVersionMatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4339F02DFA099C000A7741 /* AirshipIvyVersionMatcher.swift */; };
		6E44626729E6813A00CB2B56 /* AsyncSerialQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E44626629E6813A00CB2B56 /* AsyncSerialQueue.swift */; };
		6E46A273272B19760089CDE3 /* ViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E46A272272B19760089CDE3 /* ViewExtensions.swift */; };
		6E46A27C272B63680089CDE3 /* ThomasEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E46A27B272B63680089CDE3 /* ThomasEnvironment.swift */; };
		6E46A27F272B68660089CDE3 /* ThomasDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E46A27E272B68660089CDE3 /* ThomasDelegate.swift */; };
		6E475BFE2F5A3709003D8E42 /* VideoGroupState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E475BFD2F5A3709003D8E42 /* VideoGroupState.swift */; };
		6E475CBA2F5B3E45003D8E42 /* VideoMediaWebViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E475CB92F5B3E45003D8E42 /* VideoMediaWebViewTests.swift */; };
		6E49D7B228401D2E00C7BB9D /* Permission.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E49D7A628401D2D00C7BB9D /* Permission.swift */; };
		6E49D7B428401D2E00C7BB9D /* PermissionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E49D7A728401D2D00C7BB9D /* PermissionDelegate.swift */; };
		6E49D7B628401D2E00C7BB9D /* NotificationRegistrar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E49D7A828401D2D00C7BB9D /* NotificationRegistrar.swift */; };
		6E49D7B828401D2E00C7BB9D /* Atomic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E49D7A928401D2D00C7BB9D /* Atomic.swift */; };
		6E49D7BA28401D2E00C7BB9D /* NotificationPermissionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E49D7AA28401D2D00C7BB9D /* NotificationPermissionDelegate.swift */; };
		6E49D7BC28401D2E00C7BB9D /* PermissionsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E49D7AB28401D2D00C7BB9D /* PermissionsManager.swift */; };
		6E49D7BE28401D2E00C7BB9D /* RegistrationDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E49D7AC28401D2D00C7BB9D /* RegistrationDelegate.swift */; };
		6E49D7C028401D2E00C7BB9D /* UNNotificationRegistrar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E49D7AD28401D2D00C7BB9D /* UNNotificationRegistrar.swift */; };
		6E49D7C228401D2E00C7BB9D /* PermissionStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E49D7AE28401D2D00C7BB9D /* PermissionStatus.swift */; };
		6E49D7C428401D2E00C7BB9D /* PushNotificationDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E49D7AF28401D2E00C7BB9D /* PushNotificationDelegate.swift */; };
		6E49D7C628401D2E00C7BB9D /* Badger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E49D7B028401D2E00C7BB9D /* Badger.swift */; };
		6E49D7C828401D2E00C7BB9D /* APNSRegistrar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E49D7B128401D2E00C7BB9D /* APNSRegistrar.swift */; };
		6E49D7CD284028C600C7BB9D /* PermissionsManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E49D7CC284028C600C7BB9D /* PermissionsManagerTests.swift */; };
		6E4A466128EF447C00A25617 /* MessageCenterUser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4A466028EF447C00A25617 /* MessageCenterUser.swift */; };
		6E4A466528EF448600A25617 /* MessageCenterStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4A466228EF448600A25617 /* MessageCenterStore.swift */; };
		6E4A466628EF448600A25617 /* MessageCenterAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4A466328EF448600A25617 /* MessageCenterAPIClient.swift */; };
		6E4A466728EF448600A25617 /* MessageCenterMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4A466428EF448600A25617 /* MessageCenterMessage.swift */; };
		6E4A467228EF44F600A25617 /* AirshipMessageCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CA0E423237E4A7B00EE76CF /* AirshipMessageCenter.framework */; };
		6E4A467928EF453400A25617 /* MessageCenterAPIClientTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4A467828EF453400A25617 /* MessageCenterAPIClientTest.swift */; };
		6E4A468028EF4FAF00A25617 /* TestAirshipRequestSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4A467F28EF4FAF00A25617 /* TestAirshipRequestSession.swift */; };
		6E4A468128EF4FAF00A25617 /* TestAirshipRequestSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4A467F28EF4FAF00A25617 /* TestAirshipRequestSession.swift */; };
		6E4A469F28F4A7DF00A25617 /* MessageCenterAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4A469E28F4A7DF00A25617 /* MessageCenterAction.swift */; };
		6E4A46A128F4AEDF00A25617 /* MessageCenterNativeBridgeExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4A46A028F4AEDF00A25617 /* MessageCenterNativeBridgeExtension.swift */; };
		6E4A4FDA2A30358F0049FEFC /* TagsActionArgs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4A4FD92A30358F0049FEFC /* TagsActionArgs.swift */; };
		6E4A4FDE2A3132850049FEFC /* AirshipSDKModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4A4FDD2A3132850049FEFC /* AirshipSDKModule.swift */; };
		6E4AEE0C2B6B24D7008AEAC1 /* AirshipAutomation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E0B872A294A9C120064B7BD /* AirshipAutomation.framework */; };
		6E4AEE272B6B2E0A008AEAC1 /* alternate-airship.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 6E4AEE222B6B2E09008AEAC1 /* alternate-airship.jpg */; };
		6E4AEE282B6B2E0A008AEAC1 /* DefaultAssetFileManagerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4AEE232B6B2E09008AEAC1 /* DefaultAssetFileManagerTest.swift */; };
		6E4AEE292B6B2E0A008AEAC1 /* airship.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 6E4AEE242B6B2E0A008AEAC1 /* airship.jpg */; };
		6E4AEE2A2B6B2E0A008AEAC1 /* AssetCacheManagerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4AEE252B6B2E0A008AEAC1 /* AssetCacheManagerTest.swift */; };
		6E4AEE2B2B6B2E0A008AEAC1 /* DefaultAssetDownloaderTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4AEE262B6B2E0A008AEAC1 /* DefaultAssetDownloaderTest.swift */; };
		6E4AEE2C2B6B302D008AEAC1 /* ActionAutomationPreparerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15283D2B4F0B8200DF1377 /* ActionAutomationPreparerTest.swift */; };
		6E4AEE302B6B3041008AEAC1 /* InAppMessageThemeTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8D79C2B4F9E830099B6F3 /* InAppMessageThemeTest.swift */; };
		6E4AEE312B6B3A6A008AEAC1 /* Valid-UAInAppMessageModalStyle.plist in Resources */ = {isa = PBXBuildFile; fileRef = 459D40542092474300C40E2D /* Valid-UAInAppMessageModalStyle.plist */; };
		6E4AEE322B6B3A6A008AEAC1 /* Valid-UAInAppMessageBannerStyle.plist in Resources */ = {isa = PBXBuildFile; fileRef = 459D40562092474A00C40E2D /* Valid-UAInAppMessageBannerStyle.plist */; };
		6E4AEE332B6B3A6A008AEAC1 /* Valid-UAInAppMessageFullScreenStyle.plist in Resources */ = {isa = PBXBuildFile; fileRef = 459D4049208FE64D00C40E2D /* Valid-UAInAppMessageFullScreenStyle.plist */; };
		6E4AEE342B6B3A6A008AEAC1 /* Invalid-UAInAppMessageBannerStyle.plist in Resources */ = {isa = PBXBuildFile; fileRef = 459D40582092475500C40E2D /* Invalid-UAInAppMessageBannerStyle.plist */; };
		6E4AEE352B6B3A6A008AEAC1 /* Valid-UAInAppMessageHTMLStyle.plist in Resources */ = {isa = PBXBuildFile; fileRef = 6EE6529222A7E3B800F7D54D /* Valid-UAInAppMessageHTMLStyle.plist */; };
		6E4AEE362B6B3A6A008AEAC1 /* Invalid-UAInAppMessageModalStyle.plist in Resources */ = {isa = PBXBuildFile; fileRef = 459D405A2092475C00C40E2D /* Invalid-UAInAppMessageModalStyle.plist */; };
		6E4AEE372B6B3A6A008AEAC1 /* Invalid-UAInAppMessageFullScreenStyle.plist in Resources */ = {isa = PBXBuildFile; fileRef = 459D404B208FE6BA00C40E2D /* Invalid-UAInAppMessageFullScreenStyle.plist */; };
		6E4AEE572B6B4358008AEAC1 /* UAAutomation.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 6E4AEE492B6B4358008AEAC1 /* UAAutomation.xcdatamodeld */; };
		6E4AEE642B6B44EA008AEAC1 /* LegacyAutomationStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4AEE622B6B44EA008AEAC1 /* LegacyAutomationStore.swift */; };
		6E4AEE652B6B44EA008AEAC1 /* AutomationStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4AEE632B6B44EA008AEAC1 /* AutomationStore.swift */; };
		6E4AEEBC2B6D6380008AEAC1 /* TriggerData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4AEEBB2B6D6380008AEAC1 /* TriggerData.swift */; };
		6E4D20722E6B761200A8D641 /* MessageCenterListViewWithNavigation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4D20712E6B760C00A8D641 /* MessageCenterListViewWithNavigation.swift */; };
		6E4D224A2E6F814000A8D641 /* MessageCenterMessageViewWithNavigation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4D22492E6F813700A8D641 /* MessageCenterMessageViewWithNavigation.swift */; };
		6E4D224C2E6F968A00A8D641 /* MessageCenterNavigationStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4D224B2E6F968000A8D641 /* MessageCenterNavigationStack.swift */; };
		6E4D224E2E6F96B800A8D641 /* MessageCenterSplitNavigationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4D224D2E6F96B100A8D641 /* MessageCenterSplitNavigationView.swift */; };
		6E4D22502E6F9CF200A8D641 /* MessageCenterContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4D224F2E6F9CD700A8D641 /* MessageCenterContent.swift */; };
		6E4D22522E6FA2F700A8D641 /* MessageCenterBackButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4D22512E6FA2F300A8D641 /* MessageCenterBackButton.swift */; };
		6E4D22542E6FA5ED00A8D641 /* MessageCenterWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4D22532E6FA5EA00A8D641 /* MessageCenterWebView.swift */; };
		6E4D225D2E70ADE100A8D641 /* MessageCenterMessageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4D225C2E70ADDB00A8D641 /* MessageCenterMessageViewModel.swift */; };
		6E4D225F2E70AFE800A8D641 /* MessageCenterListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4D225E2E70AFE300A8D641 /* MessageCenterListViewModel.swift */; };
		6E4E2E2829CEB222002E7682 /* ContactManagerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4E2E2729CEB222002E7682 /* ContactManagerProtocol.swift */; };
		6E4E5B3B26E7F91600198175 /* AirshipLocalizationUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4E5B3926E7F91600198175 /* AirshipLocalizationUtils.swift */; };
		6E4E5B3D26E7F91600198175 /* Attributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4E5B3A26E7F91600198175 /* Attributes.swift */; };
		6E5213E32DCA7A3B00CF64B9 /* ThomasEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5213E22DCA7A3800CF64B9 /* ThomasEvent.swift */; };
		6E5214672DCAB03900CF64B9 /* ThomasFormResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5214662DCAB03600CF64B9 /* ThomasFormResult.swift */; };
		6E5214692DCABFCE00CF64B9 /* ThomasLayoutContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5214682DCABFCA00CF64B9 /* ThomasLayoutContext.swift */; };
		6E52146B2DCBF9BD00CF64B9 /* AirshipTimerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E52146A2DCBF9BA00CF64B9 /* AirshipTimerProtocol.swift */; };
		6E52146D2DCBFABE00CF64B9 /* ThomasPagerTracker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E52146C2DCBFAB900CF64B9 /* ThomasPagerTracker.swift */; };
		6E52146F2DCC075500CF64B9 /* ThomasPagerTrackerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E52146E2DCC075100CF64B9 /* ThomasPagerTrackerTest.swift */; };
		6E5215222DCEA12A00CF64B9 /* ThomasViewedPageInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5215212DCEA10F00CF64B9 /* ThomasViewedPageInfo.swift */; };
		6E524C732C126F5F002CA094 /* AirshipEventType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E524C722C126F5F002CA094 /* AirshipEventType.swift */; };
		6E524D022C1A2CAE002CA094 /* InAppMessageThemeManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E524D012C1A2CAE002CA094 /* InAppMessageThemeManager.swift */; };
		6E524D042C1A454E002CA094 /* InAppMessageThemeShadow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E524D032C1A454E002CA094 /* InAppMessageThemeShadow.swift */; };
		6E55A4D72E1DB4F700B07DF8 /* ThomasAssociatedLabelResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E55A4D62E1DB4CB00B07DF8 /* ThomasAssociatedLabelResolver.swift */; };
		6E57CE3228DB8BDA00287601 /* LiveActivityUpdate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E57CE3128DB8BDA00287601 /* LiveActivityUpdate.swift */; };
		6E57CE3728DBBD9A00287601 /* LiveActivityRegistry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E57CE3628DBBD9A00287601 /* LiveActivityRegistry.swift */; };
		6E590E6E29A94CA90036DFAB /* AppStateTrackerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E590E6D29A94CA90036DFAB /* AppStateTrackerTest.swift */; };
		6E5A64C42AAB7D5C00574085 /* AirshipMeteredUsage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5A64C32AAB7D5C00574085 /* AirshipMeteredUsage.swift */; };
		6E5A64C82AABBE7100574085 /* MeteredUsageAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5A64C72AABBE7100574085 /* MeteredUsageAPIClient.swift */; };
		6E5A64D02AABBEAF00574085 /* AirshipMeteredUsageEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5A64CF2AABBEAF00574085 /* AirshipMeteredUsageEvent.swift */; };
		6E5A64D42AABBED600574085 /* MeteredUsageStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5A64D32AABBED600574085 /* MeteredUsageStore.swift */; };
		6E5A64D92AABC5A400574085 /* UAMeteredUsage.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 6E5A64D72AABC5A400574085 /* UAMeteredUsage.xcdatamodeld */; };
		6E5ADF822D7682A300A03799 /* StateSubscriptionsModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5ADF812D7682A200A03799 /* StateSubscriptionsModifier.swift */; };
		6E5ADF842D7682D600A03799 /* ThomasStateTrigger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5ADF832D7682D300A03799 /* ThomasStateTrigger.swift */; };
		6E5B1A052AFF090B0019CA61 /* SessionTrackerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5B1A042AFF090B0019CA61 /* SessionTrackerTest.swift */; };
		6E60EF6A29DF542B003F7A8D /* AnonContactData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E60EF6929DF542B003F7A8D /* AnonContactData.swift */; };
		6E6363E229DCD0CF009C358A /* ContactSubscriptionListClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6363E129DCD0CF009C358A /* ContactSubscriptionListClient.swift */; };
		6E6363E629DCE9A2009C358A /* ContactSubscriptionListAPIClientTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6363E529DCE9A2009C358A /* ContactSubscriptionListAPIClientTest.swift */; };
		6E6363E829DCEB84009C358A /* ContactManagerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6363E729DCEB84009C358A /* ContactManagerTest.swift */; };
		6E6363EA29DCECA1009C358A /* TestContactSubscriptionListAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6363E929DCECA1009C358A /* TestContactSubscriptionListAPIClient.swift */; };
		6E6363EC29DDF84B009C358A /* SerialQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6363EB29DDF84B009C358A /* SerialQueue.swift */; };
		6E64C88027331ABA000EB887 /* PreferenceDataStoreTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E64C87F27331ABA000EB887 /* PreferenceDataStoreTest.swift */; };
		6E65244C2A4FD4270019F353 /* DeviceTagSelectorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E65244B2A4FD4270019F353 /* DeviceTagSelectorTest.swift */; };
		6E65244E2A4FD69F0019F353 /* DeviceAudienceSelectorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E65244D2A4FD69F0019F353 /* DeviceAudienceSelectorTest.swift */; };
		6E6524502A4FD8D30019F353 /* JSONPredicateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E65244F2A4FD8D30019F353 /* JSONPredicateTest.swift */; };
		6E6541E02758976D009676CA /* AirshipProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6541DF2758976D009676CA /* AirshipProgressView.swift */; };
		6E65FB602C753CB400D9F341 /* EmbeddedViewSelector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E65FB5F2C753CB400D9F341 /* EmbeddedViewSelector.swift */; };
		6E664BA126C43F5400A2C8E5 /* ActivityViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E664BA026C43F5400A2C8E5 /* ActivityViewController.swift */; };
		6E664BA726C4417400A2C8E5 /* ShareAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E664BA426C4417400A2C8E5 /* ShareAction.swift */; };
		6E664BCA26C4852B00A2C8E5 /* AddCustomEventAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E664BC926C4852B00A2C8E5 /* AddCustomEventAction.swift */; };
		6E664BD026C4916600A2C8E5 /* AddTagsAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E664BCF26C4916600A2C8E5 /* AddTagsAction.swift */; };
		6E664BD326C4917000A2C8E5 /* RemoveTagsAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E664BD226C4917000A2C8E5 /* RemoveTagsAction.swift */; };
		6E664BD926C4CD8700A2C8E5 /* PasteboardAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E664BD526C4CD8700A2C8E5 /* PasteboardAction.swift */; };
		6E664BDB26C4CD8700A2C8E5 /* EnableFeatureAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E664BD626C4CD8700A2C8E5 /* EnableFeatureAction.swift */; };
		6E664BDD26C4CD8700A2C8E5 /* OpenExternalURLAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E664BD726C4CD8700A2C8E5 /* OpenExternalURLAction.swift */; };
		6E664BDF26C4CD8700A2C8E5 /* FetchDeviceInfoAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E664BD826C4CD8700A2C8E5 /* FetchDeviceInfoAction.swift */; };
		6E664BE526C5817B00A2C8E5 /* TestContact.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E664BE426C5817B00A2C8E5 /* TestContact.swift */; };
		6E664BE726C5B21600A2C8E5 /* ModifyAttributesAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E664BE626C5B21600A2C8E5 /* ModifyAttributesAction.swift */; };
		6E664BEA26C6DB7600A2C8E5 /* AirshipUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E664BE926C6DB7500A2C8E5 /* AirshipUtils.swift */; };
		6E66BA7F2D14B61A0083A9FD /* WrappingLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E66BA7E2D14B61A0083A9FD /* WrappingLayout.swift */; };
		6E66DDA62E95A68300D44555 /* WorkRateLimiterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E66DDA52E95A67C00D44555 /* WorkRateLimiterTests.swift */; };
		6E68028B2B850DDE00F4591F /* ApplicationMetrics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6ED1512683DBC300A2CBD0 /* ApplicationMetrics.swift */; };
		6E68028C2B85149900F4591F /* ApplicationMetricsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E60EF6529DF4BB5003F7A8D /* ApplicationMetricsTest.swift */; };
		6E68028E2B852F6A00F4591F /* AutomationScheduleDataTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E68028D2B852F6A00F4591F /* AutomationScheduleDataTest.swift */; };
		6E6802902B8671E700F4591F /* InAppAutomationComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E68028F2B8671E700F4591F /* InAppAutomationComponent.swift */; };
		6E6802922B86732200F4591F /* PreferenceCenterComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6802912B86732200F4591F /* PreferenceCenterComponent.swift */; };
		6E6802942B8673F900F4591F /* FeatureFlagComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6802932B8673F900F4591F /* FeatureFlagComponent.swift */; };
		6E6802962B86749900F4591F /* MessageCenterComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6802952B86749900F4591F /* MessageCenterComponent.swift */; };
		6E6802982B8675A200F4591F /* DebugComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6802972B8675A200F4591F /* DebugComponent.swift */; };
		6E68203228EDE3E200A4F90B /* LiveActivityRestorer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E68203128EDE3E200A4F90B /* LiveActivityRestorer.swift */; };
		6E692AFD29E0CB2F00D96CCC /* JavaScriptCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E692AFC29E0CB2F00D96CCC /* JavaScriptCommand.swift */; };
		6E692AFF29E0CB4100D96CCC /* JavaScriptCommandDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E692AFE29E0CB4100D96CCC /* JavaScriptCommandDelegate.swift */; };
		6E692B0329E0CBB500D96CCC /* NativeBridgeExtensionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E692B0229E0CBB500D96CCC /* NativeBridgeExtensionDelegate.swift */; };
		6E698DEC26790AC300654DB2 /* PreferenceDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E698DE826790AC300654DB2 /* PreferenceDataStore.swift */; };
		6E698DF226790AC300654DB2 /* AirshipPrivacyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E698DEB26790AC300654DB2 /* AirshipPrivacyManager.swift */; };
		6E698E03267A799500654DB2 /* AirshipErrors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E698E02267A799500654DB2 /* AirshipErrors.swift */; };
		6E698E09267A7DD900654DB2 /* RemoteDataAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E698E08267A7DD900654DB2 /* RemoteDataAPIClient.swift */; };
		6E698E0C267A88D600654DB2 /* EventAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E698E0B267A88D600654DB2 /* EventAPIClient.swift */; };
		6E698E3D267BEDC300654DB2 /* DefaultAirshipContact.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E698E3A267BEDC300654DB2 /* DefaultAirshipContact.swift */; };
		6E698E3F267BEDC300654DB2 /* AttributesEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E698E3B267BEDC300654DB2 /* AttributesEditor.swift */; };
		6E698E41267BEDC300654DB2 /* TagGroupsEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E698E3C267BEDC300654DB2 /* TagGroupsEditor.swift */; };
		6E698E57267BF63B00654DB2 /* AppStateTrackerAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E698E52267BF63A00654DB2 /* AppStateTrackerAdapter.swift */; };
		6E698E59267BF63B00654DB2 /* AppStateTracker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E698E53267BF63A00654DB2 /* AppStateTracker.swift */; };
		6E698E5F267BF63B00654DB2 /* ApplicationState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E698E56267BF63B00654DB2 /* ApplicationState.swift */; };
		6E698E62267C03C700654DB2 /* TestAppStateTracker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E698E61267C03C700654DB2 /* TestAppStateTracker.swift */; };
		6E6A848D2B6854FC006FFB35 /* AutomationDelayProcessorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6A848C2B6854FC006FFB35 /* AutomationDelayProcessorTest.swift */; };
		6E6A84932B68A57E006FFB35 /* AutomationStoreTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6A84912B68A571006FFB35 /* AutomationStoreTest.swift */; };
		6E6B2DBE2B33B768008BF788 /* AutomationScheduleTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6B2DBD2B33B768008BF788 /* AutomationScheduleTest.swift */; };
		6E6BD2422AE995DA00B9DFC9 /* DeferredResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6BD2412AE995DA00B9DFC9 /* DeferredResolver.swift */; };
		6E6BD2462AEAFE7E00B9DFC9 /* DeferredAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6BD2452AEAFE7E00B9DFC9 /* DeferredAPIClient.swift */; };
		6E6BD24A2AEAFEB700B9DFC9 /* AirsihpTriggerContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6BD2492AEAFEB700B9DFC9 /* AirsihpTriggerContext.swift */; };
		6E6BD24E2AEAFEC500B9DFC9 /* AirshipStateOverrides.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6BD24D2AEAFEC500B9DFC9 /* AirshipStateOverrides.swift */; };
		6E6BD2582AEC598C00B9DFC9 /* DeferredAPIClientTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6BD2572AEC598C00B9DFC9 /* DeferredAPIClientTest.swift */; };
		6E6BD25A2AEC626B00B9DFC9 /* DeferredResolverTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6BD2592AEC626B00B9DFC9 /* DeferredResolverTest.swift */; };
		6E6BD26D2AF1AC5700B9DFC9 /* AirshipCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6BD26C2AF1AC5700B9DFC9 /* AirshipCache.swift */; };
		6E6BD2722AF1B05500B9DFC9 /* UAirshipCache.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 6E6BD2702AF1B05500B9DFC9 /* UAirshipCache.xcdatamodeld */; };
		6E6BD2762AF1C1D800B9DFC9 /* DeferredFlagResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6BD2752AF1C1D800B9DFC9 /* DeferredFlagResolver.swift */; };
		6E6BD2782AF2B97300B9DFC9 /* AirshipTaskSleeper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6BD2772AF2B97300B9DFC9 /* AirshipTaskSleeper.swift */; };
		6E6C3F7F27A20C3C007F55C7 /* ChannelScope.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C3F7E27A20C3C007F55C7 /* ChannelScope.swift */; };
		6E6C3F8A27A266C0007F55C7 /* CachedValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C3F8927A266C0007F55C7 /* CachedValue.swift */; };
		6E6C3F8D27A26992007F55C7 /* CachedValueTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C3F8C27A26992007F55C7 /* CachedValueTest.swift */; };
		6E6C3F9A27A47DB4007F55C7 /* PreferenceCenterConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C3F9927A47DB4007F55C7 /* PreferenceCenterConfig.swift */; };
		6E6C3F9E27A4C3D4007F55C7 /* AirshipJSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C3F9D27A4C3D4007F55C7 /* AirshipJSON.swift */; };
		6E6C84462A5C8CFE00DD83A2 /* AirshipConfigTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C84452A5C8CFD00DD83A2 /* AirshipConfigTest.swift */; };
		6E6CC38623A3F9B4003D583C /* PushDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6CC38023A3F9B4003D583C /* PushDataManager.swift */; };
		6E6ED13B2683A58D00A2CBD0 /* Dispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6ED1352683A58D00A2CBD0 /* Dispatcher.swift */; };
		6E6ED1402683A9F200A2CBD0 /* AirshipDate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6ED13F2683A9F200A2CBD0 /* AirshipDate.swift */; };
		6E6ED1432683B8FA00A2CBD0 /* TestDate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6ED1422683B8FA00A2CBD0 /* TestDate.swift */; };
		6E6ED1452683BC7F00A2CBD0 /* TestDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6ED1442683BC7F00A2CBD0 /* TestDispatcher.swift */; };
		6E6ED1492683D8E200A2CBD0 /* LocaleManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6ED1482683D8E200A2CBD0 /* LocaleManager.swift */; };
		6E6ED15B2683DBC300A2CBD0 /* AirshipBase64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6ED14D2683DBC200A2CBD0 /* AirshipBase64.swift */; };
		6E6ED15F2683DBC300A2CBD0 /* AirshipCoreResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6ED14F2683DBC200A2CBD0 /* AirshipCoreResources.swift */; };
		6E6ED1612683DBC300A2CBD0 /* AirshipVersion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6ED1502683DBC300A2CBD0 /* AirshipVersion.swift */; };
		6E6ED1672683DBC300A2CBD0 /* UACoreData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6ED1532683DBC300A2CBD0 /* UACoreData.swift */; };
		6E6ED1692683DBC300A2CBD0 /* AirshipNetworkChecker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6ED1542683DBC300A2CBD0 /* AirshipNetworkChecker.swift */; };
		6E6ED172268448EC00A2CBD0 /* TestNetworkMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6ED171268448EC00A2CBD0 /* TestNetworkMonitor.swift */; };
		6E6EF9E7270625C400D30C35 /* AirshipEventsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6EF9E6270625C400D30C35 /* AirshipEventsTest.swift */; };
		6E71129D2880DACB004942E4 /* EventHandlerViewModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7112962880DACB004942E4 /* EventHandlerViewModifier.swift */; };
		6E7112A12880DACB004942E4 /* EnableBehaviorModifiers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7112982880DACB004942E4 /* EnableBehaviorModifiers.swift */; };
		6E7112A32880DACB004942E4 /* VisibilityViewModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7112992880DACB004942E4 /* VisibilityViewModifier.swift */; };
		6E7112A52880DACB004942E4 /* StateController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E71129A2880DACB004942E4 /* StateController.swift */; };
		6E739D6626B9BDC100BC6F6D /* ChannelBulkUpdateAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E739D6526B9BDC100BC6F6D /* ChannelBulkUpdateAPIClient.swift */; };
		6E739D6B26B9DFFB00BC6F6D /* AttributePendingMutations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E739D6A26B9DFFB00BC6F6D /* AttributePendingMutations.swift */; };
		6E739D6E26B9F58700BC6F6D /* TagGroupMutations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E739D6D26B9F58700BC6F6D /* TagGroupMutations.swift */; };
		6E739D7F26BAFCB800BC6F6D /* TestChannelBulkUpdateAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E739D7E26BAFCB800BC6F6D /* TestChannelBulkUpdateAPIClient.swift */; };
		6E739D8226BB33A200BC6F6D /* ChannelBulkUpdateAPIClientTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E739D8126BB33A200BC6F6D /* ChannelBulkUpdateAPIClientTest.swift */; };
		6E75F50529C4EAF600E3585A /* AudienceOverridesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E75F50429C4EAF600E3585A /* AudienceOverridesProvider.swift */; };
		6E77CD4A2D8A225E0057A52C /* SMSValidatorAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E77CD492D8A225E0057A52C /* SMSValidatorAPIClient.swift */; };
		6E77CD4B2D8A225E0057A52C /* AirshipInputValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E77CD472D8A225E0057A52C /* AirshipInputValidator.swift */; };
		6E77CE472D8A28B90057A52C /* CachingSMSValidatorAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E77CE462D8A28B10057A52C /* CachingSMSValidatorAPIClient.swift */; };
		6E78848F29B9643C00ACAE45 /* AirshipContact.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E78848E29B9643C00ACAE45 /* AirshipContact.swift */; };
		6E7DB38328ECDC41002725F6 /* LiveActivity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7DB38228ECDC41002725F6 /* LiveActivity.swift */; };
		6E7DB38E28ECFCED002725F6 /* AirshipJSONTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7DB38D28ECFCED002725F6 /* AirshipJSONTest.swift */; };
		6E7DB39228ED0D7C002725F6 /* LiveActivityRegistryTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7DB38A28ECDDD9002725F6 /* LiveActivityRegistryTest.swift */; };
		6E7E770D2DDFD0D80042086D /* AirshipAsyncSemaphore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7E770C2DDFD0D80042086D /* AirshipAsyncSemaphore.swift */; };
		6E7E770F2DDFD10A0042086D /* AirshipAsyncSemaphoreTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7E770E2DDFD1040042086D /* AirshipAsyncSemaphoreTest.swift */; };
		6E7EACD12AF4192400DA286B /* AirshipCacheTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7EACD02AF4192400DA286B /* AirshipCacheTest.swift */; };
		6E82482229A6D9DF00136EA0 /* CancellableValueHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E82482129A6D9DF00136EA0 /* CancellableValueHolder.swift */; };
		6E82483829A6E1BE00136EA0 /* AirshipCancellable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E82483729A6E1BE00136EA0 /* AirshipCancellable.swift */; };
		6E8746492D8A3C71002469D7 /* TestSMSValidatorAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8746482D8A3C64002469D7 /* TestSMSValidatorAPIClient.swift */; };
		6E87BD6426D594870005D20D /* ChannelRegistrationPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E87BD6326D594870005D20D /* ChannelRegistrationPayload.swift */; };
		6E87BD6726D6A39A0005D20D /* AirshipConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E87BD6626D6A39A0005D20D /* AirshipConfig.swift */; };
		6E87BD8326D757CA0005D20D /* CloudSite.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E87BD8226D757CA0005D20D /* CloudSite.swift */; };
		6E87BD8D26D815780005D20D /* AppIntegration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E87BD8C26D815780005D20D /* AppIntegration.swift */; };
		6E87BD9226D963B60005D20D /* DefaultAppIntegrationDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E87BD9126D963B60005D20D /* DefaultAppIntegrationDelegate.swift */; };
		6E87BD9D26DD78CC0005D20D /* DefaultAppIntegrationDelegateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E87BD9C26DD78CC0005D20D /* DefaultAppIntegrationDelegateTest.swift */; };
		6E87BD9F26DDDB250005D20D /* AppIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E87BD9E26DDDB250005D20D /* AppIntegrationTests.swift */; };
		6E87BDBD26E01FF40005D20D /* ModuleLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E87BDBC26E01FF40005D20D /* ModuleLoader.swift */; };
		6E87BE0126E283850005D20D /* Airship.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E87BDFD26E283840005D20D /* Airship.swift */; };
		6E87BE0726E283850005D20D /* DeepLinkDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E87BE0026E283850005D20D /* DeepLinkDelegate.swift */; };
		6E87BE1326E28F570005D20D /* AirshipInstance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E87BE1226E28F570005D20D /* AirshipInstance.swift */; };
		6E87BE1626E29BC90005D20D /* TestAirshipInstance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E87BE1526E29BC90005D20D /* TestAirshipInstance.swift */; };
		6E87BE1B26E2C59D0005D20D /* TestAnalytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E87BE1726E2C5940005D20D /* TestAnalytics.swift */; };
		6E88739A2763D8AB00AC248A /* AirshipImageProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8873992763D8AB00AC248A /* AirshipImageProvider.swift */; };
		6E887CD1272C5E8400E83363 /* CheckboxState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E887CD0272C5E8400E83363 /* CheckboxState.swift */; };
		6E887CD3272C5F5000E83363 /* Checkbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E887CD2272C5F5000E83363 /* Checkbox.swift */; };
		6E887CD5272C5F5A00E83363 /* CheckboxController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E887CD4272C5F5A00E83363 /* CheckboxController.swift */; };
		6E892F2E2E7A193E00FB0EC4 /* PreferenceCenterContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E892F2D2E7A193200FB0EC4 /* PreferenceCenterContent.swift */; };
		6E8932982E7B666000FB0EC4 /* APNSRegistrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8932972E7B665200FB0EC4 /* APNSRegistrationResult.swift */; };
		6E89329A2E7B66C300FB0EC4 /* NotificationRegistrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8932992E7B66B600FB0EC4 /* NotificationRegistrationResult.swift */; };
		6E8B4BF12888606D00AA336E /* ChannelTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8B4BEF2888606400AA336E /* ChannelTest.swift */; };
		6E8BDA172B62EC9F00711DB8 /* AutomationRemoteDataSubscriber.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8BDA162B62EC9F00711DB8 /* AutomationRemoteDataSubscriber.swift */; };
		6E8BDEFE2A67938200F816D9 /* FeatureFlagInfoTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8BDEFC2A67937E00F816D9 /* FeatureFlagInfoTest.swift */; };
		6E8BDF012A679E5000F816D9 /* FeatureFlagRemoteDataAccessTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8BDEFF2A679CD100F816D9 /* FeatureFlagRemoteDataAccessTest.swift */; };
		6E8BDF022A684FC700F816D9 /* TestRemoteData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15B70426CE07180099C92D /* TestRemoteData.swift */; };
		6E8CE762284137D600CF4B11 /* AirshipPushTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8CE761284137D600CF4B11 /* AirshipPushTest.swift */; };
		6E916C572DB30DA200C676FA /* AirshipWindowFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E916C562DB30D9E00C676FA /* AirshipWindowFactory.swift */; };
		6E91B43C26868A6300DDB1A8 /* CircularRegion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91B43B26868A6300DDB1A8 /* CircularRegion.swift */; };
		6E91B44026868C3400DDB1A8 /* RegionEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91B43E26868C3400DDB1A8 /* RegionEvent.swift */; };
		6E91B44226868C3400DDB1A8 /* ProximityRegion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91B43F26868C3400DDB1A8 /* ProximityRegion.swift */; };
		6E91B4452686911B00DDB1A8 /* EventUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91B4442686911B00DDB1A8 /* EventUtils.swift */; };
		6E91B4692689327D00DDB1A8 /* CustomEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91B4662689327D00DDB1A8 /* CustomEvent.swift */; };
		6E91E43A28EF423400B6F25E /* WorkBackgroundTasks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91E42F28EF423300B6F25E /* WorkBackgroundTasks.swift */; };
		6E91E43D28EF423400B6F25E /* WorkConditionsMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91E43028EF423300B6F25E /* WorkConditionsMonitor.swift */; };
		6E91E44028EF423400B6F25E /* Worker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91E43128EF423300B6F25E /* Worker.swift */; };
		6E91E44328EF423400B6F25E /* WorkRateLimiterActor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91E43228EF423300B6F25E /* WorkRateLimiterActor.swift */; };
		6E91E44628EF423400B6F25E /* AirshipWorkManagerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91E43328EF423300B6F25E /* AirshipWorkManagerProtocol.swift */; };
		6E91E44C28EF423400B6F25E /* AirshipWorkRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91E43528EF423300B6F25E /* AirshipWorkRequest.swift */; };
		6E91E45228EF423400B6F25E /* AirshipWorkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91E43728EF423300B6F25E /* AirshipWorkManager.swift */; };
		6E91E45828EF423400B6F25E /* AirshipWorkResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91E43928EF423400B6F25E /* AirshipWorkResult.swift */; };
		6E92EC8A284933750038802D /* PromptPermissionAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E92EC89284933750038802D /* PromptPermissionAction.swift */; };
		6E92EC8D2849378E0038802D /* PermissionPrompter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E92EC8C2849378E0038802D /* PermissionPrompter.swift */; };
		6E92EC90284954B10038802D /* ButtonState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E92EC8F284954B10038802D /* ButtonState.swift */; };
		6E92ECA1284A79AB0038802D /* PromptPermissionActionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E92ECA0284A79AB0038802D /* PromptPermissionActionTest.swift */; };
		6E92ECA5284A7A5C0038802D /* TestPermissionPrompter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E92ECA2284A7A2A0038802D /* TestPermissionPrompter.swift */; };
		6E92ECA7284AC1120038802D /* EnableFeatureActionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E92ECA6284AC1120038802D /* EnableFeatureActionTest.swift */; };
		6E92ECAC284EA7DB0038802D /* AnalyticsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E92ECAB284EA7DA0038802D /* AnalyticsTest.swift */; };
		6E92ECB1284ECE590038802D /* CachedList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E92ECB0284ECE590038802D /* CachedList.swift */; };
		6E92ECB6284ED7330038802D /* CachedListTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E92ECB3284ED6F10038802D /* CachedListTest.swift */; };
		6E938DBC2AC39A0500F691D9 /* FeatureFlagAnalyticsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E938DBB2AC39A0500F691D9 /* FeatureFlagAnalyticsTest.swift */; };
		6E94760F29BA8FA30025F364 /* ContactManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E94760E29BA8FA30025F364 /* ContactManager.swift */; };
		6E94761529BBC0240025F364 /* AirshipButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E94761429BBC0230025F364 /* AirshipButton.swift */; };
		6E952920268A6C1500398B54 /* SearchEventTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E95291F268A6C1500398B54 /* SearchEventTemplate.swift */; };
		6E952923268B812000398B54 /* AccountEventTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E952922268B812000398B54 /* AccountEventTemplate.swift */; };
		6E952926268B8F6600398B54 /* AssociatedIdentifiers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E952925268B8F6500398B54 /* AssociatedIdentifiers.swift */; };
		6E95292C268B98A200398B54 /* MediaEventTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E95292B268B98A200398B54 /* MediaEventTemplate.swift */; };
		6E95292F268BBD7D00398B54 /* RetailEventTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E95292E268BBD7D00398B54 /* RetailEventTemplate.swift */; };
		6E96ECF2293EB7900053CC91 /* AirshipEventData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E96ECF1293EB7900053CC91 /* AirshipEventData.swift */; };
		6E96ECF6293FCE080053CC91 /* EventUploadScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E96ECF5293FCE080053CC91 /* EventUploadScheduler.swift */; };
		6E96ECFA293FDDD90053CC91 /* AirshipSDKExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E96ECF9293FDDD90053CC91 /* AirshipSDKExtension.swift */; };
		6E96ED02294115210053CC91 /* AsyncStream.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E96ED01294115210053CC91 /* AsyncStream.swift */; };
		6E96ED0A294135500053CC91 /* EventManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E96ED09294135500053CC91 /* EventManager.swift */; };
		6E96ED0E29416E820053CC91 /* EventManagerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E96ED0D29416E820053CC91 /* EventManagerTest.swift */; };
		6E96ED1029416E8F0053CC91 /* EventAPIClientTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E96ED0F29416E8F0053CC91 /* EventAPIClientTest.swift */; };
		6E96ED1229416E990053CC91 /* EventSchedulerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E96ED1129416E990053CC91 /* EventSchedulerTest.swift */; };
		6E96ED1429417A600053CC91 /* EventStoreTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E96ED1329417A600053CC91 /* EventStoreTest.swift */; };
		6E96ED16294197D90053CC91 /* EventUploadTuningInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E96ED15294197D90053CC91 /* EventUploadTuningInfo.swift */; };
		6E96ED1A2941A0EC0053CC91 /* EventTestUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E96ED192941A0EC0053CC91 /* EventTestUtils.swift */; };
		6E9752562A5F79E200E67B1A /* ExperimentTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9752552A5F79E200E67B1A /* ExperimentTest.swift */; };
		6E97D6AD2D84B1660001CF7F /* ThomasFormStateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E97D6AC2D84B1610001CF7F /* ThomasFormStateTest.swift */; };
		6E97D6AF2D84B17D0001CF7F /* ThomasFormDataCollectorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E97D6AE2D84B1780001CF7F /* ThomasFormDataCollectorTest.swift */; };
		6E97D6B12D84B18E0001CF7F /* ThomasFormDataCollector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E97D6B02D84B1890001CF7F /* ThomasFormDataCollector.swift */; };
		6E97D6B42D84B1D70001CF7F /* ThomasStateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E97D6B32D84B1D10001CF7F /* ThomasStateTest.swift */; };
		6E97D6B62D84B2350001CF7F /* ThomasFormFieldTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E97D6B52D84B2330001CF7F /* ThomasFormFieldTest.swift */; };
		6E986EE42B448D3C00FBE6A0 /* AutomationEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E986EE32B448D3C00FBE6A0 /* AutomationEngine.swift */; };
		6E986EF92B44D41E00FBE6A0 /* InAppAutomation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E986EF82B44D41E00FBE6A0 /* InAppAutomation.swift */; };
		6E986EFB2B44D48C00FBE6A0 /* InAppMessaging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E986EFA2B44D48C00FBE6A0 /* InAppMessaging.swift */; };
		6E986F062B47319E00FBE6A0 /* DeferredScheduleResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E986F052B47319E00FBE6A0 /* DeferredScheduleResult.swift */; };
		6E986F0E2B473EC700FBE6A0 /* AutomationRemoteDataAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E986F0D2B473EC700FBE6A0 /* AutomationRemoteDataAccess.swift */; };
		6E9B4874288F0CE000C905B1 /* RateAppAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9B4873288F0CE000C905B1 /* RateAppAction.swift */; };
		6E9B4878288F360C00C905B1 /* RateAppActionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9B4877288F360C00C905B1 /* RateAppActionTest.swift */; };
		6E9B488B2891962000C905B1 /* PreferenceCenterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9B488A2891962000C905B1 /* PreferenceCenterView.swift */; };
		6E9B488D2891B43F00C905B1 /* LabeledSectionBreakView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9B488C2891B43F00C905B1 /* LabeledSectionBreakView.swift */; };
		6E9B488F2891B57300C905B1 /* CommonSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9B488E2891B57300C905B1 /* CommonSectionView.swift */; };
		6E9B48912891B68C00C905B1 /* PreferenceCenterAlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9B48902891B68B00C905B1 /* PreferenceCenterAlertView.swift */; };
		6E9B48932891B6A700C905B1 /* ChannelSubscriptionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9B48922891B6A700C905B1 /* ChannelSubscriptionView.swift */; };
		6E9B48952891B6B400C905B1 /* ContactSubscriptionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9B48942891B6B400C905B1 /* ContactSubscriptionView.swift */; };
		6E9B48972891B6BF00C905B1 /* ContactSubscriptionGroupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9B48962891B6BF00C905B1 /* ContactSubscriptionGroupView.swift */; };
		6E9C2B7D2D014438000089A9 /* APNSEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9C2B7C2D014426000089A9 /* APNSEnvironment.swift */; };
		6E9C2BD02D02321D000089A9 /* RuntimeConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9C2BCF2D023216000089A9 /* RuntimeConfig.swift */; };
		6E9C2BD32D02683D000089A9 /* RuntimeConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9C2BCF2D023216000089A9 /* RuntimeConfig.swift */; };
		6E9C2BD42D02683D000089A9 /* RuntimeConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9C2BCF2D023216000089A9 /* RuntimeConfig.swift */; };
		6E9C2BD52D02683D000089A9 /* RuntimeConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9C2BCF2D023216000089A9 /* RuntimeConfig.swift */; };
		6E9C2BD62D02683D000089A9 /* RuntimeConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9C2BCF2D023216000089A9 /* RuntimeConfig.swift */; };
		6E9C2BD72D0269AE000089A9 /* TestAirshipRequestSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4A467F28EF4FAF00A25617 /* TestAirshipRequestSession.swift */; };
		6E9C2BD82D0269AE000089A9 /* TestAirshipRequestSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4A467F28EF4FAF00A25617 /* TestAirshipRequestSession.swift */; };
		6E9C2BDA2D027B5F000089A9 /* AirshipAppCredentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9C2BD92D027B5A000089A9 /* AirshipAppCredentials.swift */; };
		6E9C2BDC2D028034000089A9 /* APNSEnvironmentTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9C2BDB2D028030000089A9 /* APNSEnvironmentTest.swift */; };
		6E9D529826C195F7004EA16B /* ActionRunner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9D529726C195F7004EA16B /* ActionRunner.swift */; };
		6E9D529B26C1A77C004EA16B /* ActionRegistry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9D529A26C1A77C004EA16B /* ActionRegistry.swift */; };
		6EA5202327D1364E003011CA /* AirshipDateFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA5202227D1364E003011CA /* AirshipDateFormatter.swift */; };
		6EAA61492D5297A7006602F7 /* SubjectExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EAA61482D5297A2006602F7 /* SubjectExtension.swift */; };
		6EAC295A27580063006DFA63 /* ChannelRegistrarTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EAC295927580063006DFA63 /* ChannelRegistrarTest.swift */; };
		6EAD3AF82F45305E00FF274E /* AirshipSwizzler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EAD3AF72F45305B00FF274E /* AirshipSwizzler.swift */; };
		6EAD3AFA2F4530BE00FF274E /* AutoIntegration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EAD3AF92F4530AD00FF274E /* AutoIntegration.swift */; };
		6EAD3AFC2F4530F600FF274E /* UAAppIntegrationDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EAD3AFB2F4530E400FF274E /* UAAppIntegrationDelegate.swift */; };
		6EAD7CE526B216DB00B88EA7 /* DeepLinkAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EAD7CE426B216DB00B88EA7 /* DeepLinkAction.swift */; };
		6EB11C872697ACBF00DC698F /* ContactOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB11C862697ACBF00DC698F /* ContactOperation.swift */; };
		6EB11C892697AF5600DC698F /* TagGroupUpdate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB11C882697AF5600DC698F /* TagGroupUpdate.swift */; };
		6EB11C8B2697AFC700DC698F /* AttributeUpdate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB11C8A2697AFC700DC698F /* AttributeUpdate.swift */; };
		6EB11C8D2698C50F00DC698F /* AudienceUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB11C8C2698C50F00DC698F /* AudienceUtils.swift */; };
		6EB1B3F326EAA4D6000421B9 /* ChannelAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E698E11267A98AB00654DB2 /* ChannelAPIClient.swift */; };
		6EB214D22E7DBA61001A5660 /* FeatureFlagManagerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB214D12E7DBA5E001A5660 /* FeatureFlagManagerProtocol.swift */; };
		6EB21A682E81BB6E001A5660 /* AirshipDebugAddEmailChannelView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A4C2E81BB6E001A5660 /* AirshipDebugAddEmailChannelView.swift */; };
		6EB21A692E81BB6E001A5660 /* AirshipDebugChannelTagView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A412E81BB6E001A5660 /* AirshipDebugChannelTagView.swift */; };
		6EB21A6A2E81BB6E001A5660 /* AirshipDebugAutomationsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A3E2E81BB6E001A5660 /* AirshipDebugAutomationsView.swift */; };
		6EB21A6B2E81BB6E001A5660 /* AirshipDebugFeatureFlagDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A532E81BB6E001A5660 /* AirshipDebugFeatureFlagDetailsView.swift */; };
		6EB21A6C2E81BB6E001A5660 /* AirshipDebugExperimentsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A3C2E81BB6E001A5660 /* AirshipDebugExperimentsView.swift */; };
		6EB21A6D2E81BB6E001A5660 /* AirshipDebugExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A452E81BB6E001A5660 /* AirshipDebugExtensions.swift */; };
		6EB21A6E2E81BB6E001A5660 /* AirshipDebugAddEventView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A342E81BB6E001A5660 /* AirshipDebugAddEventView.swift */; };
		6EB21A6F2E81BB6E001A5660 /* AirshipDebugPushDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A5D2E81BB6E001A5660 /* AirshipDebugPushDetailsView.swift */; };
		6EB21A702E81BB6E001A5660 /* AirshipDebugView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A662E81BB6E001A5660 /* AirshipDebugView.swift */; };
		6EB21A712E81BB6E001A5660 /* AirshipDebugAddSMSChannelView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A4E2E81BB6E001A5660 /* AirshipDebugAddSMSChannelView.swift */; };
		6EB21A722E81BB6E001A5660 /* AirshipJSONDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A472E81BB6E001A5660 /* AirshipJSONDetailsView.swift */; };
		6EB21A732E81BB6E001A5660 /* AirshipDebugAnalyticIdentifierEditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A352E81BB6E001A5660 /* AirshipDebugAnalyticIdentifierEditorView.swift */; };
		6EB21A742E81BB6E001A5660 /* AirshipDebugContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A642E81BB6E001A5660 /* AirshipDebugContentView.swift */; };
		6EB21A752E81BB6E001A5660 /* AirshipDebugRoute.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A652E81BB6E001A5660 /* AirshipDebugRoute.swift */; };
		6EB21A772E81BB6E001A5660 /* AirshipDebugPreferencCenterItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A572E81BB6E001A5660 /* AirshipDebugPreferencCenterItemView.swift */; };
		6EB21A792E81BB6E001A5660 /* AirshipDebugAttributesEditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A442E81BB6E001A5660 /* AirshipDebugAttributesEditorView.swift */; };
		6EB21A7A2E81BB6E001A5660 /* AirshipToast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A492E81BB6E001A5660 /* AirshipToast.swift */; };
		6EB21A7B2E81BB6E001A5660 /* AirshipDebugFeatureFlagView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A552E81BB6E001A5660 /* AirshipDebugFeatureFlagView.swift */; };
		6EB21A7C2E81BB6E001A5660 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A4A2E81BB6E001A5660 /* Extensions.swift */; };
		6EB21A7D2E81BB6E001A5660 /* AirshipDebugTagGroupsEditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A462E81BB6E001A5660 /* AirshipDebugTagGroupsEditorView.swift */; };
		6EB21A7E2E81BB6E001A5660 /* AirshipDebugAppInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A3A2E81BB6E001A5660 /* AirshipDebugAppInfoView.swift */; };
		6EB21A7F2E81BB6E001A5660 /* AirshipDebugEventDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A372E81BB6E001A5660 /* AirshipDebugEventDetailsView.swift */; };
		6EB21A802E81BB6E001A5660 /* AirshipDebugPrivacyManagerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A5B2E81BB6E001A5660 /* AirshipDebugPrivacyManagerView.swift */; };
		6EB21A812E81BB6E001A5660 /* AirshipDebugEventsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A382E81BB6E001A5660 /* AirshipDebugEventsView.swift */; };
		6EB21A822E81BB6E001A5660 /* AirshipDebugContactSubscriptionEditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A4F2E81BB6E001A5660 /* AirshipDebugContactSubscriptionEditorView.swift */; };
		6EB21A832E81BB6E001A5660 /* AirshipDebugPreferenceCenterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A582E81BB6E001A5660 /* AirshipDebugPreferenceCenterView.swift */; };
		6EB21A842E81BB6E001A5660 /* AirshipDebugAnalyticsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A362E81BB6E001A5660 /* AirshipDebugAnalyticsView.swift */; };
		6EB21A852E81BB6E001A5660 /* AirshipDebugReceivedPushView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A5F2E81BB6E001A5660 /* AirshipDebugReceivedPushView.swift */; };
		6EB21A862E81BB6E001A5660 /* AirshipDebugPushView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A5E2E81BB6E001A5660 /* AirshipDebugPushView.swift */; };
		6EB21A872E81BB6E001A5660 /* AirshipDebugNamedUserView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A512E81BB6E001A5660 /* AirshipDebugNamedUserView.swift */; };
		6EB21A882E81BB6E001A5660 /* AirshipJSONView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A482E81BB6E001A5660 /* AirshipJSONView.swift */; };
		6EB21A892E81BB6E001A5660 /* AirshipDebugChannelSubscriptionsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A402E81BB6E001A5660 /* AirshipDebugChannelSubscriptionsView.swift */; };
		6EB21A8A2E81BB6E001A5660 /* AirshipDebugInAppExperiencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A3D2E81BB6E001A5660 /* AirshipDebugInAppExperiencesView.swift */; };
		6EB21A8B2E81BB6E001A5660 /* TVSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A622E81BB6E001A5660 /* TVSlider.swift */; };
		6EB21A8C2E81BB6E001A5660 /* TVDatePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A612E81BB6E001A5660 /* TVDatePicker.swift */; };
		6EB21A8D2E81BB6E001A5660 /* AirshipDebugChannelView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A422E81BB6E001A5660 /* AirshipDebugChannelView.swift */; };
		6EB21A8E2E81BB6E001A5660 /* AirshipDebugContactView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A502E81BB6E001A5660 /* AirshipDebugContactView.swift */; };
		6EB21A8F2E81BB6E001A5660 /* AirshipDebugAddOpenChannelView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A4D2E81BB6E001A5660 /* AirshipDebugAddOpenChannelView.swift */; };
		6EB21A912E81BFC1001A5660 /* AirshipDebugAddPropertyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A902E81BFB9001A5660 /* AirshipDebugAddPropertyView.swift */; };
		6EB21A932E81C7AB001A5660 /* AirshipDebugAddStringPropertyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21A922E81C7A2001A5660 /* AirshipDebugAddStringPropertyView.swift */; };
		6EB21AFC2E8216A4001A5660 /* AirshipoDebugTriggers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21AFB2E82169F001A5660 /* AirshipoDebugTriggers.swift */; };
		6EB21B5F2E82FE9F001A5660 /* AirshipDebugAudienceSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB21B5E2E82FE98001A5660 /* AirshipDebugAudienceSubject.swift */; };
		6EB3FCEF2ABCFA680018594E /* RemoteDataProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB3FCEE2ABCFA680018594E /* RemoteDataProtocol.swift */; };
		6EB5156E28A42B5800870C5A /* AirshipPreferenceCenterResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB5156D28A42B5800870C5A /* AirshipPreferenceCenterResources.swift */; };
		6EB5157128A4608C00870C5A /* PreferenceCenterViewControllerFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB5157028A4608C00870C5A /* PreferenceCenterViewControllerFactory.swift */; };
		6EB5158128A47BD700870C5A /* SubscriptionListEdit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB5158028A47BD700870C5A /* SubscriptionListEdit.swift */; };
		6EB5158328A47C7100870C5A /* ScopedSubscriptionListEdit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB5158228A47C7100870C5A /* ScopedSubscriptionListEdit.swift */; };
		6EB5159228A5B1B400870C5A /* TestLegacyTheme.plist in Resources */ = {isa = PBXBuildFile; fileRef = 6EB5159128A5B1B400870C5A /* TestLegacyTheme.plist */; };
		6EB5159428A5B8E900870C5A /* TestTheme.plist in Resources */ = {isa = PBXBuildFile; fileRef = 6EB5159328A5B8E900870C5A /* TestTheme.plist */; };
		6EB5159528A5B96300870C5A /* PreferenceThemeLoaderTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB5158E28A5B15C00870C5A /* PreferenceThemeLoaderTest.swift */; };
		6EB5159728A5C54400870C5A /* TestThemeEmpty.plist in Resources */ = {isa = PBXBuildFile; fileRef = 6EB5159628A5C54400870C5A /* TestThemeEmpty.plist */; };
		6EB5159928A5C61D00870C5A /* TestThemeInvalid.plist in Resources */ = {isa = PBXBuildFile; fileRef = 6EB5159828A5C61D00870C5A /* TestThemeInvalid.plist */; };
		6EB515A328A5F1C600870C5A /* PreferenceCenterStateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB515A228A5F1C600870C5A /* PreferenceCenterStateTest.swift */; };
		6EB839472BC83B9D006611C4 /* DefaultInAppActionRunnerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB839452BC83B96006611C4 /* DefaultInAppActionRunnerTest.swift */; };
		6EB839492BC8898E006611C4 /* AirshipAsyncChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB839482BC8898E006611C4 /* AirshipAsyncChannel.swift */; };
		6EB8394C2BC8AB51006611C4 /* TestWorkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A63A567528F449D8004B8951 /* TestWorkManager.swift */; };
		6EB8394E2BC8B1F4006611C4 /* AirshipAsyncChannelTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB8394D2BC8B1F4006611C4 /* AirshipAsyncChannelTest.swift */; };
		6EBD12052DA73FDA00F678AB /* ValidatableHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBD12042DA73FD300F678AB /* ValidatableHelper.swift */; };
		6EBFA9AD2D15DA73002BA3E9 /* HashChecker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBFA9AC2D15DA70002BA3E9 /* HashChecker.swift */; };
		6EBFA9AF2D15E04D002BA3E9 /* AirshipDeviceAudienceResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBFA9AE2D15E04B002BA3E9 /* AirshipDeviceAudienceResult.swift */; };
		6EBFA9B12D15F499002BA3E9 /* HashCheckerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBFA9B02D15F491002BA3E9 /* HashCheckerTest.swift */; };
		6EC0CA4F2B48987700333A87 /* AutomationRemoteDataAccessTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC0CA4E2B48987700333A87 /* AutomationRemoteDataAccessTest.swift */; };
		6EC0CA502B4899CC00333A87 /* TestRemoteData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E15B70426CE07180099C92D /* TestRemoteData.swift */; };
		6EC0CA512B4899DB00333A87 /* TestNetworkMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6ED171268448EC00A2CBD0 /* TestNetworkMonitor.swift */; };
		6EC0CA532B48A2C300333A87 /* AutomationAudience.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC0CA522B48A2C300333A87 /* AutomationAudience.swift */; };
		6EC0CA562B48B05600333A87 /* ActionAutomationExecutorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC0CA542B48B05000333A87 /* ActionAutomationExecutorTest.swift */; };
		6EC0CA5C2B48C2F500333A87 /* AutomationPreparer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC0CA5B2B48C2F500333A87 /* AutomationPreparer.swift */; };
		6EC0CA682B49287100333A87 /* AutomationExecutor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC0CA672B49287100333A87 /* AutomationExecutor.swift */; };
		6EC0CA6B2B4B698000333A87 /* AutomationExecutorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC0CA6A2B4B698000333A87 /* AutomationExecutorTest.swift */; };
		6EC0CA6D2B4B879800333A87 /* AutomationPreparerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC0CA6C2B4B879800333A87 /* AutomationPreparerTest.swift */; };
		6EC0CA6F2B4B893500333A87 /* TestDeferredResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC0CA6E2B4B893500333A87 /* TestDeferredResolver.swift */; };
		6EC0CA702B4B895A00333A87 /* TestDeferredResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC0CA6E2B4B893500333A87 /* TestDeferredResolver.swift */; };
		6EC0CA722B4B897B00333A87 /* TestExperimentDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC0CA712B4B897B00333A87 /* TestExperimentDataProvider.swift */; };
		6EC0CA732B4B897B00333A87 /* TestExperimentDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC0CA712B4B897B00333A87 /* TestExperimentDataProvider.swift */; };
		6EC0CA762B4B8A3A00333A87 /* TestRemoteDataAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC0CA752B4B8A3A00333A87 /* TestRemoteDataAccess.swift */; };
		6EC0CA782B4B8A4700333A87 /* TestFrequencyLimitsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC0CA772B4B8A4700333A87 /* TestFrequencyLimitsManager.swift */; };
		6EC0CA792B4B8C2B00333A87 /* TestAudienceChecker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2F5AB62A675ADC00CABD3D /* TestAudienceChecker.swift */; };
		6EC0CA812B4C812A00333A87 /* DisplayAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC0CA802B4C812A00333A87 /* DisplayAdapter.swift */; };
		6EC755992A4E115400851ABB /* DeviceAudienceSelector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC755982A4E115400851ABB /* DeviceAudienceSelector.swift */; };
		6EC7559B2A4E129000851ABB /* DeviceTagSelector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC7559A2A4E129000851ABB /* DeviceTagSelector.swift */; };
		6EC7559F2A4E5AB200851ABB /* DeviceAudienceChecker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC7559E2A4E5AB200851ABB /* DeviceAudienceChecker.swift */; };
		6EC755AF2A4FCD8800851ABB /* AudienceHashSelectorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC755AE2A4FCD8800851ABB /* AudienceHashSelectorTest.swift */; };
		6EC7E46E269E2A4C0038CFDD /* AttributeEditorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC7E46D269E2A4C0038CFDD /* AttributeEditorTest.swift */; };
		6EC7E470269E33290038CFDD /* TagGroupsEditorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC7E46F269E33290038CFDD /* TagGroupsEditorTest.swift */; };
		6EC7E472269E51030038CFDD /* AttributeUpdateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC7E471269E51030038CFDD /* AttributeUpdateTest.swift */; };
		6EC7E474269E52600038CFDD /* ContactOperationTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC7E473269E52600038CFDD /* ContactOperationTest.swift */; };
		6EC7E47626A5EE910038CFDD /* AudienceUtilsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC7E47526A5EE910038CFDD /* AudienceUtilsTest.swift */; };
		6EC7E47826A604080038CFDD /* AirshipContactTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC7E47726A604080038CFDD /* AirshipContactTest.swift */; };
		6EC7E48226A60C060038CFDD /* AirshipChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC7E48126A60C060038CFDD /* AirshipChannel.swift */; };
		6EC7E48526A60CDF0038CFDD /* TestChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC7E48426A60CDF0038CFDD /* TestChannel.swift */; };
		6EC7E48726A60DD60038CFDD /* TestContactAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC7E48626A60DD60038CFDD /* TestContactAPIClient.swift */; };
		6EC7E48D26A738C80038CFDD /* ContactConflictEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC7E48C26A738C70038CFDD /* ContactConflictEvent.swift */; };
		6EC815AF2F2BBFD500E1C0C6 /* BundleExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC815AE2F2BBFD100E1C0C6 /* BundleExtensions.swift */; };
		6EC81D032F2D445500E1C0C6 /* UAInboxDataMappingV1toV4.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 6EC81D022F2D445500E1C0C6 /* UAInboxDataMappingV1toV4.xcmappingmodel */; };
		6EC81D052F2D448B00E1C0C6 /* UAInboxDataMappingV2toV4.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 6EC81D042F2D448B00E1C0C6 /* UAInboxDataMappingV2toV4.xcmappingmodel */; };
		6EC81D082F2D44D700E1C0C6 /* UAInboxDataMappingV3toV4.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 6EC81D072F2D44D700E1C0C6 /* UAInboxDataMappingV3toV4.xcmappingmodel */; };
		6EC824A02F33A4DD00E1C0C6 /* MessageDisplayHistory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC8249F2F33A4DD00E1C0C6 /* MessageDisplayHistory.swift */; };
		6EC824A22F33A5EC00E1C0C6 /* MessageCenterThemeLoaderTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC824A12F33A5EC00E1C0C6 /* MessageCenterThemeLoaderTest.swift */; };
		6EC824A42F33A5F600E1C0C6 /* MessageCenterMessageTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC824A32F33A5F600E1C0C6 /* MessageCenterMessageTest.swift */; };
		6EC9214E2D82144A000A3A59 /* ThomasFormField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC9214D2D82144A000A3A59 /* ThomasFormField.swift */; };
		6EC922E12D832BB8000A3A59 /* ThomasFormFieldProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC922E02D832BAF000A3A59 /* ThomasFormFieldProcessor.swift */; };
		6EC922E32D838DFF000A3A59 /* ThomasFormPayloadGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC922E22D838DFA000A3A59 /* ThomasFormPayloadGenerator.swift */; };
		6ECB627C2A369F5B0095C85C /* OpenExternalURLActionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ECB627B2A369F5B0095C85C /* OpenExternalURLActionTest.swift */; };
		6ECB627E2A36A0770095C85C /* ExternalURLProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ECB627D2A36A0770095C85C /* ExternalURLProcessor.swift */; };
		6ECB62822A36A45F0095C85C /* TestURLOpener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ECB62812A36A45F0095C85C /* TestURLOpener.swift */; };
		6ECB62842A36A7510095C85C /* DeepLinkActionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ECB62832A36A7510095C85C /* DeepLinkActionTest.swift */; };
		6ECB62862A36C1EE0095C85C /* NativeBridgeActionHandlerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ECB62852A36C1EE0095C85C /* NativeBridgeActionHandlerTest.swift */; };
		6ECD4F6D2DD7A7060060EE72 /* RadioInputToggleLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ECD4F6C2DD7A7060060EE72 /* RadioInputToggleLayout.swift */; };
		6ECD4F6F2DD7A7090060EE72 /* CheckboxToggleLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ECD4F6E2DD7A7090060EE72 /* CheckboxToggleLayout.swift */; };
		6ECD4F712DD7A7CD0060EE72 /* ToggleLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ECD4F702DD7A7C90060EE72 /* ToggleLayout.swift */; };
		6ECDDE6C29B7EEE9009D79DB /* AuthToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ECDDE6B29B7EEE9009D79DB /* AuthToken.swift */; };
		6ECDDE7429B80462009D79DB /* ChannelAuthTokenProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ECDDE7329B80462009D79DB /* ChannelAuthTokenProvider.swift */; };
		6ECDDE7929B804FB009D79DB /* ChannelAuthTokenAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ECDDE7829B804FB009D79DB /* ChannelAuthTokenAPIClient.swift */; };
		6ED040EB278B5D7C00FCF773 /* ThomasFormPayloadGeneratorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED040EA278B5D7C00FCF773 /* ThomasFormPayloadGeneratorTest.swift */; };
		6ED2F5252B7EE648000AFC80 /* AirshipBase64Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED2F5242B7EE648000AFC80 /* AirshipBase64Test.swift */; };
		6ED2F5272B7EE82B000AFC80 /* AirshipJSONUtilsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED2F5262B7EE82B000AFC80 /* AirshipJSONUtilsTest.swift */; };
		6ED2F5292B7FC59F000AFC80 /* AirshipColorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED2F5282B7FC59F000AFC80 /* AirshipColorTests.swift */; };
		6ED2F52B2B7FC5C8000AFC80 /* AirshipIvyVersionMatcherTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED2F52A2B7FC5C8000AFC80 /* AirshipIvyVersionMatcherTest.swift */; };
		6ED2F52D2B7FD403000AFC80 /* JavaScriptCommandTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED2F52C2B7FD403000AFC80 /* JavaScriptCommandTest.swift */; };
		6ED2F52F2B7FD49B000AFC80 /* AirshipURLAllowListTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED2F52E2B7FD49B000AFC80 /* AirshipURLAllowListTest.swift */; };
		6ED2F5312B7FF819000AFC80 /* AirshipViewUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED2F5302B7FF819000AFC80 /* AirshipViewUtils.swift */; };
		6ED2F5382B7FFCEB000AFC80 /* AirshipDateFormatterTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED2F5342B7FFCD7000AFC80 /* AirshipDateFormatterTest.swift */; };
		6ED2F5392B7FFF68000AFC80 /* AirshipSceneManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99D1B3272B44F08900447840 /* AirshipSceneManager.swift */; };
		6ED562A02EA9434B00C20B55 /* StackImageButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED5629F2EA9434900C20B55 /* StackImageButton.swift */; };
		6ED6ECA426ADCA6F00973364 /* BlockAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED6ECA326ADCA6F00973364 /* BlockAction.swift */; };
		6ED6ECA726AE05B700973364 /* EmptyAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED6ECA626AE05B700973364 /* EmptyAction.swift */; };
		6ED735DA26C73DC5003B0A7D /* DefaultAirshipChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED735D926C73DC5003B0A7D /* DefaultAirshipChannel.swift */; };
		6ED735DD26C7401D003B0A7D /* TagEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED735DC26C7401D003B0A7D /* TagEditor.swift */; };
		6ED735E026C74321003B0A7D /* TagEditorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED735DF26C74321003B0A7D /* TagEditorTest.swift */; };
		6ED735E226CAE2D7003B0A7D /* TestChannelRegistrar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED735E126CAE2D7003B0A7D /* TestChannelRegistrar.swift */; };
		6ED735E426CAE8AA003B0A7D /* TestChannelAudienceManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED735E326CAE8AA003B0A7D /* TestChannelAudienceManager.swift */; };
		6ED735E626CAEABC003B0A7D /* TestLocaleManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED735E526CAEABC003B0A7D /* TestLocaleManager.swift */; };
		6ED7BE602D13D9E300B6A124 /* TestCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED7BE5F2D13D9E300B6A124 /* TestCache.swift */; };
		6ED7BE612D13D9E300B6A124 /* TestCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED7BE5F2D13D9E300B6A124 /* TestCache.swift */; };
		6ED7BE632D13D9FE00B6A124 /* FeatureFlagResultCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED7BE622D13D9FE00B6A124 /* FeatureFlagResultCache.swift */; };
		6ED7BE652D13DA0400B6A124 /* FeatureFlagResultCacheTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED7BE642D13DA0400B6A124 /* FeatureFlagResultCacheTest.swift */; };
		6ED80793273CA0C800D1F455 /* EnvironmentValues.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED80792273CA0C800D1F455 /* EnvironmentValues.swift */; };
		6ED8079A273DA56000D1F455 /* ThomasViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED80799273DA56000D1F455 /* ThomasViewController.swift */; };
		6ED838AB2D0CE9D6009CBB0C /* CompoundDeviceAudienceSelector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED838AA2D0CE9D6009CBB0C /* CompoundDeviceAudienceSelector.swift */; };
		6ED838AD2D0CEF4A009CBB0C /* CompoundDeviceAudienceSelectorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED838AC2D0CEF4A009CBB0C /* CompoundDeviceAudienceSelectorTest.swift */; };
		6ED838D02D0D118B009CBB0C /* AutomationCompoundAudience.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED838CF2D0D118B009CBB0C /* AutomationCompoundAudience.swift */; };
		6EDAFB262CB463C5000BD4AA /* ButtonLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EDAFB252CB463C1000BD4AA /* ButtonLayout.swift */; };
		6EDE293F2A9802BF00235738 /* NativeBridgeActionRunner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EDE293E2A9802BF00235738 /* NativeBridgeActionRunner.swift */; };
		6EDE5F192B9BD7E700E33D04 /* InboxMessageData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EDE5F182B9BD7E700E33D04 /* InboxMessageData.swift */; };
		6EDE5F4F2BA248FF00E33D04 /* TouchViewModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EDE5F4E2BA248FF00E33D04 /* TouchViewModifier.swift */; };
		6EDE5FC22BADDD96003ADF55 /* PreparedScheduleInfoTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EDE5FC12BADDD96003ADF55 /* PreparedScheduleInfoTest.swift */; };
		6EDF1D932B292FB100E23BC4 /* InAppMessageTextInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EDF1D922B292FB000E23BC4 /* InAppMessageTextInfo.swift */; };
		6EDF1D962B2A25B400E23BC4 /* InAppMessageButtonInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EDF1D952B2A25B400E23BC4 /* InAppMessageButtonInfo.swift */; };
		6EDF1D982B2A25C800E23BC4 /* InAppMessageMediaInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EDF1D972B2A25C800E23BC4 /* InAppMessageMediaInfo.swift */; };
		6EDF1D9C2B2A287A00E23BC4 /* InAppMessageButtonLayoutType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EDF1D9B2B2A287A00E23BC4 /* InAppMessageButtonLayoutType.swift */; };
		6EDF1D9E2B2A2A5900E23BC4 /* InAppMessageDisplayContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EDF1D9D2B2A2A5900E23BC4 /* InAppMessageDisplayContent.swift */; };
		6EDF1DA42B2A2C6F00E23BC4 /* InAppMessageColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EDF1DA32B2A2C6F00E23BC4 /* InAppMessageColor.swift */; };
		6EDF1DA62B2A300100E23BC4 /* InAppMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EDF1DA52B2A300100E23BC4 /* InAppMessage.swift */; };
		6EDF1DAD2B2A73FC00E23BC4 /* InAppMessageTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EDF1DAA2B2A6D9900E23BC4 /* InAppMessageTest.swift */; };
		6EDF1DB82B2BB2B800E23BC4 /* RetryingQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EDF1DB72B2BB2B800E23BC4 /* RetryingQueue.swift */; };
		6EDFBBC32F5780BC0043D9EF /* BasementImport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EDFBBC22F5780BA0043D9EF /* BasementImport.swift */; };
		6EDFBBC42F5780EA0043D9EF /* AirshipLogHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF1933B2838062B005F192A /* AirshipLogHandler.swift */; };
		6EDFBBC52F5780EA0043D9EF /* AirshipLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E698DEA26790AC300654DB2 /* AirshipLogger.swift */; };
		6EDFBBC62F5780EA0043D9EF /* AirshipLogPrivacyLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E524CC22C180A39002CA094 /* AirshipLogPrivacyLevel.swift */; };
		6EDFBBC72F5780EA0043D9EF /* DefaultLogHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF1933D28380644005F192A /* DefaultLogHandler.swift */; };
		6EDFBBC82F5780EA0043D9EF /* LogLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E87BDFE26E283840005D20D /* LogLevel.swift */; };
		6EE49BDD2A09AD3600AB1CF4 /* AirshipNotificationStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE49BDC2A09AD3600AB1CF4 /* AirshipNotificationStatus.swift */; };
		6EE49BE12A0AADC900AB1CF4 /* AppRemoteDataProviderDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE49BE02A0AADC900AB1CF4 /* AppRemoteDataProviderDelegate.swift */; };
		6EE49C082A0BE9F600AB1CF4 /* RemoteDataURLFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE49C072A0BE9F600AB1CF4 /* RemoteDataURLFactory.swift */; };
		6EE49C0C2A0C141800AB1CF4 /* RemoteDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE49C0B2A0C141800AB1CF4 /* RemoteDataSource.swift */; };
		6EE49C102A0C142F00AB1CF4 /* RemoteDataInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE49C0F2A0C142F00AB1CF4 /* RemoteDataInfo.swift */; };
		6EE49C182A0C3CC600AB1CF4 /* ContactRemoteDataProviderDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE49C172A0C3CC600AB1CF4 /* ContactRemoteDataProviderDelegate.swift */; };
		6EE49C1D2A0D9D8000AB1CF4 /* RemoteDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE49C1C2A0D9D8000AB1CF4 /* RemoteDataProvider.swift */; };
		6EE49C222A13E32B00AB1CF4 /* RemoteDataProviderProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE49C212A13E32B00AB1CF4 /* RemoteDataProviderProtocol.swift */; };
		6EE49C262A1446B100AB1CF4 /* RemoteDataTestUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE49C252A1446B100AB1CF4 /* RemoteDataTestUtils.swift */; };
		6EE6AA132B4F3009002FEA75 /* InAppMessageAutomationPreparerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AA112B4F3003002FEA75 /* InAppMessageAutomationPreparerTest.swift */; };
		6EE6AA162B4F302D002FEA75 /* InAppMessageAutomationExecutorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AA142B4F302A002FEA75 /* InAppMessageAutomationExecutorTest.swift */; };
		6EE6AA1B2B4F3062002FEA75 /* DisplayCoordinatorManagerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AA1A2B4F3062002FEA75 /* DisplayCoordinatorManagerTest.swift */; };
		6EE6AA1C2B4F3066002FEA75 /* DisplayAdapterFactoryTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AA182B4F304B002FEA75 /* DisplayAdapterFactoryTest.swift */; };
		6EE6AA1E2B4F31B1002FEA75 /* TestCachedAssets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AA1D2B4F31B1002FEA75 /* TestCachedAssets.swift */; };
		6EE6AA202B4F5246002FEA75 /* InAppMessageSceneManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AA1F2B4F5246002FEA75 /* InAppMessageSceneManager.swift */; };
		6EE6AA282B50C91E002FEA75 /* AutomationRemoteDataSubscriberTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AA272B50C91E002FEA75 /* AutomationRemoteDataSubscriberTest.swift */; };
		6EE6AA2A2B50C976002FEA75 /* TestAutomationEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AA292B50C976002FEA75 /* TestAutomationEngine.swift */; };
		6EE6AA2C2B51DB1E002FEA75 /* AutomationSourceInfoStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AA2B2B51DB1E002FEA75 /* AutomationSourceInfoStore.swift */; };
		6EE6AA382B572897002FEA75 /* AutomationSourceInfoStoreTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AA372B572897002FEA75 /* AutomationSourceInfoStoreTest.swift */; };
		6EE6AAFF2B58AB66002FEA75 /* LegacyInAppAnalytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AAFE2B58AB66002FEA75 /* LegacyInAppAnalytics.swift */; };
		6EE6AB022B58B6E9002FEA75 /* LegacyInAppAnalyticsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AB002B58B5AE002FEA75 /* LegacyInAppAnalyticsTest.swift */; };
		6EE6AB062B59C231002FEA75 /* AirshipLayoutDisplayAdapterTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AB052B59C231002FEA75 /* AirshipLayoutDisplayAdapterTest.swift */; };
		6EE6AB092B59C236002FEA75 /* CustomDisplayAdapterWrapperTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE6AB032B59C21A002FEA75 /* CustomDisplayAdapterWrapperTest.swift */; };
		6EE7725B238F179300E79944 /* AirshipCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 494DD9571B0EB677009C134E /* AirshipCore.framework */; settings = {ATTRIBUTES = (Required, ); }; };
		6EED67652CDEE7900087CDCB /* ThomasViewInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67632CDEE75D0087CDCB /* ThomasViewInfo.swift */; };
		6EED676E2CDEE7EB0087CDCB /* ThomasPresentationInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED676C2CDEE7E50087CDCB /* ThomasPresentationInfo.swift */; };
		6EED67722CDEE8390087CDCB /* ThomasOrientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67702CDEE8370087CDCB /* ThomasOrientation.swift */; };
		6EED67752CDEE8460087CDCB /* ThomasWindowSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67742CDEE8460087CDCB /* ThomasWindowSize.swift */; };
		6EED677A2CDEE87D0087CDCB /* ThomasShadow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67782CDEE8790087CDCB /* ThomasShadow.swift */; };
		6EED677D2CDEE9040087CDCB /* ThomasSerializable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED677C2CDEE8FE0087CDCB /* ThomasSerializable.swift */; };
		6EED67972CDEEA2E0087CDCB /* ThomasShapeInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67952CDEEA2B0087CDCB /* ThomasShapeInfo.swift */; };
		6EED679C2CDEEA380087CDCB /* ThomasToggleStyleInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67992CDEEA380087CDCB /* ThomasToggleStyleInfo.swift */; };
		6EED67A02CDEEAAB0087CDCB /* AirshipLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED679D2CDEEAA90087CDCB /* AirshipLayout.swift */; };
		6EED67A22CE1A47C0087CDCB /* ThomasColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67A12CE1A4780087CDCB /* ThomasColor.swift */; };
		6EED67A72CE1A5000087CDCB /* ThomasBorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67A52CE1A4FC0087CDCB /* ThomasBorder.swift */; };
		6EED67AB2CE1A5D00087CDCB /* ThomasMarkdownOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67A92CE1A5CC0087CDCB /* ThomasMarkdownOptions.swift */; };
		6EED67AE2CE1A6B90087CDCB /* ThomasPosition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67AD2CE1A6B70087CDCB /* ThomasPosition.swift */; };
		6EED67B32CE1A8330087CDCB /* ThomasEventHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67B12CE1A8300087CDCB /* ThomasEventHandler.swift */; };
		6EED67B62CE1B4420087CDCB /* ThomasTextAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67B52CE1B43C0087CDCB /* ThomasTextAppearance.swift */; };
		6EED67BA2CE1B4E90087CDCB /* ThomasPlatform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67B92CE1B4E60087CDCB /* ThomasPlatform.swift */; };
		6EED67C02CE1B5160087CDCB /* ThomasActionsPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67BD2CE1B5120087CDCB /* ThomasActionsPayload.swift */; };
		6EED67C32CE1B5890087CDCB /* ThomasIcon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67C12CE1B5850087CDCB /* ThomasIcon.swift */; };
		6EED67C82CE1B6020087CDCB /* ThomasMediaFit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67C52CE1B5FF0087CDCB /* ThomasMediaFit.swift */; };
		6EED67E32CE268680087CDCB /* ThomasButtonTapEffect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67E22CE268630087CDCB /* ThomasButtonTapEffect.swift */; };
		6EED67E82CE268BF0087CDCB /* ThomasButtonClickBehavior.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67E62CE268BB0087CDCB /* ThomasButtonClickBehavior.swift */; };
		6EED67EB2CE269970087CDCB /* ThomasDirection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67EA2CE269930087CDCB /* ThomasDirection.swift */; };
		6EED67F02CE26CA40087CDCB /* ThomasSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67EF2CE26CA10087CDCB /* ThomasSize.swift */; };
		6EED67F62CE26CB80087CDCB /* ThomasConstrainedSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67F32CE26CB50087CDCB /* ThomasConstrainedSize.swift */; };
		6EED67F82CE26CE40087CDCB /* ThomasSizeConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67F72CE26CE20087CDCB /* ThomasSizeConstraint.swift */; };
		6EED67FC2CE26DB60087CDCB /* ThomasAttributeName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67FB2CE26DAF0087CDCB /* ThomasAttributeName.swift */; };
		6EED68012CE26DCD0087CDCB /* ThomasAttributeValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED67FF2CE26DCA0087CDCB /* ThomasAttributeValue.swift */; };
		6EED68042CE26E1A0087CDCB /* ThomasMargin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED68032CE26E180087CDCB /* ThomasMargin.swift */; };
		6EED680A2CE26E550087CDCB /* ThomasAutomatedAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED68072CE26E510087CDCB /* ThomasAutomatedAction.swift */; };
		6EED680D2CE2707F0087CDCB /* ThomasStateAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED680C2CE2707E0087CDCB /* ThomasStateAction.swift */; };
		6EED68122CE271E50087CDCB /* ThomasEnableBehavior.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED68102CE271E10087CDCB /* ThomasEnableBehavior.swift */; };
		6EED68162CE271F80087CDCB /* ThomasFormSubmitBehavior.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED68142CE271F30087CDCB /* ThomasFormSubmitBehavior.swift */; };
		6EED68192CE272790087CDCB /* ThomasAutomatedAccessibilityAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED68182CE272710087CDCB /* ThomasAutomatedAccessibilityAction.swift */; };
		6EED681D2CE274300087CDCB /* ThomasAccessibilityAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED681C2CE274290087CDCB /* ThomasAccessibilityAction.swift */; };
		6EED68222CE2806D0087CDCB /* ThomasAccessibleInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED68202CE2806B0087CDCB /* ThomasAccessibleInfo.swift */; };
		6EED68292CE28C9A0087CDCB /* ThomasVisibilityInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED68282CE28C960087CDCB /* ThomasVisibilityInfo.swift */; };
		6EED682D2CE28CC10087CDCB /* ThomasValidationInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED682C2CE28CBF0087CDCB /* ThomasValidationInfo.swift */; };
		6EED68332CE28FAC0087CDCB /* ThomasConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED68302CE28FA70087CDCB /* ThomasConstants.swift */; };
		6EED68E72CE3ECCB0087CDCB /* ThomasPropertyOverride.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED68E42CE3ECC50087CDCB /* ThomasPropertyOverride.swift */; };
		6EEE8BA2290B3EDE00230528 /* AirshipKeychainAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EEE8BA1290B3EDE00230528 /* AirshipKeychainAccess.swift */; };
		6EF02DF02714EB500008B6C9 /* Thomas.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF02DEF2714EB500008B6C9 /* Thomas.swift */; };
		6EF13FFD2A16F390009A125D /* AirshipBaseTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3299EF212949EC3E00251E70 /* AirshipBaseTest.swift */; };
		6EF13FFE2A16F391009A125D /* AirshipBaseTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3299EF212949EC3E00251E70 /* AirshipBaseTest.swift */; };
		6EF1401B2A2671ED009A125D /* AirshipDeviceID.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF1401A2A2671ED009A125D /* AirshipDeviceID.swift */; };
		6EF1401F2A268CE6009A125D /* TestKeychainAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF1401E2A268CE6009A125D /* TestKeychainAccess.swift */; };
		6EF140212A269074009A125D /* AirshipDeviceIDTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF140202A269074009A125D /* AirshipDeviceIDTest.swift */; };
		6EF1E9282CD005E4005EAA07 /* PagerUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF1E9252CD005E2005EAA07 /* PagerUtils.swift */; };
		6EF1E92A2CD0069B005EAA07 /* PagerSwipeDirection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF1E9292CD00698005EAA07 /* PagerSwipeDirection.swift */; };
		6EF27DD927306C9100548DA3 /* AirshipToggle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF27DD827306C9100548DA3 /* AirshipToggle.swift */; };
		6EF27DE32730E6F900548DA3 /* RadioInputController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF27DE22730E6F900548DA3 /* RadioInputController.swift */; };
		6EF27DE62730E77300548DA3 /* RadioInputState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF27DE52730E77300548DA3 /* RadioInputState.swift */; };
		6EF27DE92730E85700548DA3 /* RadioInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF27DE82730E85700548DA3 /* RadioInput.swift */; };
		6EF553E32B7EE40B00901A22 /* AirshipLocalizationUtilsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF553E22B7EE40B00901A22 /* AirshipLocalizationUtilsTest.swift */; };
		6EF66D8D276461DA00ABCB76 /* UrlInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF66D8C276461DA00ABCB76 /* UrlInfo.swift */; };
		6EF66D912769B69C00ABCB76 /* RootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF66D902769B69C00ABCB76 /* RootView.swift */; };
		6EFAFB78295525C3008AD187 /* ChannelAPIClientTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EFAFB77295525C3008AD187 /* ChannelAPIClientTest.swift */; };
		6EFAFB7A295525CD008AD187 /* ChannelCaptureTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EFAFB79295525CD008AD187 /* ChannelCaptureTest.swift */; };
		6EFAFB7C295525DF008AD187 /* ChannelRegistrationPayloadTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EFAFB7B295525DF008AD187 /* ChannelRegistrationPayloadTest.swift */; };
		6EFAFB8229555174008AD187 /* FetchDeviceInfoActionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EFAFB8129555174008AD187 /* FetchDeviceInfoActionTest.swift */; };
		6EFAFB8429561F23008AD187 /* ModifyAttributesActionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EFAFB8329561F23008AD187 /* ModifyAttributesActionTest.swift */; };
		6EFAFB8A29562474008AD187 /* AddTagsActionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EFAFB8929562474008AD187 /* AddTagsActionTest.swift */; };
		6EFAFB8C29562866008AD187 /* RemoveTagsActionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EFAFB8B29562866008AD187 /* RemoveTagsActionTest.swift */; };
		6EFB7B342A14A0F400133115 /* RemoteDataProviderTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EFB7B322A14A0EC00133115 /* RemoteDataProviderTest.swift */; };
		6EFD6D4B27272333005B26F1 /* EmptyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EFD6D4A27272333005B26F1 /* EmptyView.swift */; };
		6EFD6D5C27273257005B26F1 /* Shapes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EFD6D5B27273257005B26F1 /* Shapes.swift */; };
		6EFD6D6E27290C0B005B26F1 /* FormController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EFD6D6D27290C0B005B26F1 /* FormController.swift */; };
		6EFD6D7127290C16005B26F1 /* TextInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EFD6D7027290C16005B26F1 /* TextInput.swift */; };
		6EFD6D82272A53AE005B26F1 /* PagerState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EFD6D81272A53AE005B26F1 /* PagerState.swift */; };
		6EFD6D8B272A53FB005B26F1 /* PagerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EFD6D86272A53FB005B26F1 /* PagerController.swift */; };
		6EFE7E3F2A97ED660064AC31 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 6EFE7E3E2A97ED600064AC31 /* PrivacyInfo.xcprivacy */; };
		8401769426C5671100373AF7 /* JSONMatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8401769326C5671100373AF7 /* JSONMatcher.swift */; };
		8401769826C5722400373AF7 /* JSONPredicate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8401769726C5722400373AF7 /* JSONPredicate.swift */; };
		8401769A26C5725800373AF7 /* AirshipJSONUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8401769926C5725800373AF7 /* AirshipJSONUtils.swift */; };
		8401769C26C5729E00373AF7 /* JSONValueMatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8401769B26C5729E00373AF7 /* JSONValueMatcher.swift */; };
		841E7D12268617C800EA0317 /* PreferenceCenterResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 841E7D11268617C800EA0317 /* PreferenceCenterResponse.swift */; };
		84483A68267CF0C000D0DA7D /* PreferenceCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84483A67267CF0C000D0DA7D /* PreferenceCenter.swift */; };
		847B000B267CD85E007CD249 /* AirshipCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 494DD9571B0EB677009C134E /* AirshipCore.framework */; };
		847B0013267CE558007CD249 /* PreferenceCenterSDKModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847B0012267CE558007CD249 /* PreferenceCenterSDKModule.swift */; };
		847BFFFD267CD73A007CD249 /* AirshipPreferenceCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 847BFFF4267CD739007CD249 /* AirshipPreferenceCenter.framework */; };
		9908E60E2B000DBA00DB3E2E /* CustomView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9908E60D2B000DBA00DB3E2E /* CustomView.swift */; };
		9908E6122B0189F800DB3E2E /* ArishipCustomViewManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9908E6112B0189F800DB3E2E /* ArishipCustomViewManager.swift */; };
		990A09592B5C677C00244D90 /* InAppMessageWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 990A09582B5C677C00244D90 /* InAppMessageWebView.swift */; };
		990A09942B5CA5B700244D90 /* InAppMessageExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 990A09932B5CA5B700244D90 /* InAppMessageExtensions.swift */; };
		990A09AF2B5DBD0400244D90 /* InAppMessageViewUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 990A09AE2B5DBD0400244D90 /* InAppMessageViewUtils.swift */; };
		990EB3B12BF59A1500315EAC /* ContactChannelsProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 990EB3B02BF59A1500315EAC /* ContactChannelsProvider.swift */; };
		99104DF32BA6689A0040C0FD /* PreferenceCloseButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99104DF22BA6689A0040C0FD /* PreferenceCloseButton.swift */; };
		99303B062BD97F89002174CA /* ChannelListViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99303B052BD97F89002174CA /* ChannelListViewCell.swift */; };
		993AFDFE2C1B2D9A00AA875B /* PreferenceCenterConfig+ContactManagement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 993AFDFD2C1B2D9A00AA875B /* PreferenceCenterConfig+ContactManagement.swift */; };
		993F91FB2CA37874001B1C2E /* FooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 993F91FA2CA37874001B1C2E /* FooterView.swift */; };
		99560C1E2BAE2FFA00F28BDC /* ChannelTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99560C1D2BAE2FFA00F28BDC /* ChannelTextField.swift */; };
		99560C282BB3843600F28BDC /* PreferenceCenterUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99560C272BB3843600F28BDC /* PreferenceCenterUtils.swift */; };
		99560C2B2BB384A700F28BDC /* BackgroundShape.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99560C2A2BB384A700F28BDC /* BackgroundShape.swift */; };
		99560C2D2BB3855800F28BDC /* EmptySectionLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99560C2C2BB3855800F28BDC /* EmptySectionLabel.swift */; };
		99560C372BB38A5F00F28BDC /* ErrorLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99560C362BB38A5F00F28BDC /* ErrorLabel.swift */; };
		9971A8852C125C0200092ED1 /* ContactChannelsProviderTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9971A8842C125C0200092ED1 /* ContactChannelsProviderTest.swift */; };
		998572BF2B3CF95D0091E9C9 /* DefaultAssetDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 998572BE2B3CF95D0091E9C9 /* DefaultAssetDownloader.swift */; };
		998572C12B3CF97B0091E9C9 /* DefaultAssetFileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 998572C02B3CF97B0091E9C9 /* DefaultAssetFileManager.swift */; };
		999DC85E2B5B721D0048C6AF /* HTMLView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 999DC85D2B5B721D0048C6AF /* HTMLView.swift */; };
		99C3CC792BCF3E5B00B5BED5 /* SMSValidatorAPIClientTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99C3CC772BCF3DF700B5BED5 /* SMSValidatorAPIClientTest.swift */; };
		99C3CC7E2BCF40B200B5BED5 /* CachingSMSValidatorAPIClientTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99C3CC7C2BCF401B00B5BED5 /* CachingSMSValidatorAPIClientTest.swift */; };
		99CC0D952BC87868001D93D0 /* AddChannelPromptViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99CC0D942BC87868001D93D0 /* AddChannelPromptViewModel.swift */; };
		99CF46182B3217C300B6FD9B /* AirshipCachedAssets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99CF46172B3217C300B6FD9B /* AirshipCachedAssets.swift */; };
		99CF461A2B3217DE00B6FD9B /* AssetCacheManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99CF46192B3217DE00B6FD9B /* AssetCacheManager.swift */; };
		99E0BD0D2B4DD4AB00465B37 /* FullscreenView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E0BD0C2B4DD4AB00465B37 /* FullscreenView.swift */; };
		99E0BD0F2B4DD71A00465B37 /* InAppMessageHostingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E0BD0E2B4DD71A00465B37 /* InAppMessageHostingController.swift */; };
		99E433932C9A0362006436B9 /* PagerIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EFD6D85272A53FA005B26F1 /* PagerIndicator.swift */; };
		99E433942C9A03D9006436B9 /* Pager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EFD6D84272A53FA005B26F1 /* Pager.swift */; };
		99E433982C9A044C006436B9 /* AirshipResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E433972C9A044C006436B9 /* AirshipResources.swift */; };
		99E6EF6A2B8E36BA0006326A /* InAppMessageValidation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E6EF692B8E36BA0006326A /* InAppMessageValidation.swift */; };
		99E6EF6D2B8E3C250006326A /* InAppMessageContentValidationTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E6EF6B2B8E3AF60006326A /* InAppMessageContentValidationTest.swift */; };
		99E8D7972B4F17260099B6F3 /* CloseButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8D7962B4F17260099B6F3 /* CloseButton.swift */; };
		99E8D7992B4F19BA0099B6F3 /* TextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8D7982B4F19BA0099B6F3 /* TextView.swift */; };
		99E8D79B2B4F2FCE0099B6F3 /* InAppMessageTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8D79A2B4F2FCE0099B6F3 /* InAppMessageTheme.swift */; };
		99E8D7BB2B50A7C20099B6F3 /* InAppMessageViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8D7BA2B50A7C20099B6F3 /* InAppMessageViewDelegate.swift */; };
		99E8D7BD2B50AA060099B6F3 /* InAppMessageEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8D7BC2B50AA060099B6F3 /* InAppMessageEnvironment.swift */; };
		99E8D7BF2B50C2C10099B6F3 /* ButtonGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8D7BE2B50C2C10099B6F3 /* ButtonGroup.swift */; };
		99E8D7C12B50E5F40099B6F3 /* InAppMessageRootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8D7C02B50E5F40099B6F3 /* InAppMessageRootView.swift */; };
		99E8D7C52B5192D40099B6F3 /* MediaView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8D7C42B5192D40099B6F3 /* MediaView.swift */; };
		99E8D7C92B54A5CB0099B6F3 /* InAppMessageThemeModal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8D7C82B54A5CB0099B6F3 /* InAppMessageThemeModal.swift */; };
		99E8D7CB2B54A6340099B6F3 /* InAppMessageThemeFullscreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8D7CA2B54A6340099B6F3 /* InAppMessageThemeFullscreen.swift */; };
		99E8D7CE2B54A66E0099B6F3 /* InAppMessageThemeBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8D7CD2B54A66E0099B6F3 /* InAppMessageThemeBanner.swift */; };
		99E8D7D02B54A68F0099B6F3 /* InAppMessageThemeHTML.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8D7CF2B54A68F0099B6F3 /* InAppMessageThemeHTML.swift */; };
		99E8D7D52B55B0300099B6F3 /* InAppMessageThemeAdditionalPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8D7D42B55B0300099B6F3 /* InAppMessageThemeAdditionalPadding.swift */; };
		99E8D7D82B55B0440099B6F3 /* InAppMessageThemeButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8D7D72B55B0440099B6F3 /* InAppMessageThemeButton.swift */; };
		99E8D7DA2B55B05D0099B6F3 /* InAppMessageThemeText.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8D7D92B55B05D0099B6F3 /* InAppMessageThemeText.swift */; };
		99E8D7DC2B55C4C20099B6F3 /* InAppMessageThemeMedia.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8D7DB2B55C4C20099B6F3 /* InAppMessageThemeMedia.swift */; };
		99E8D7DE2B55C73B0099B6F3 /* ThemeExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8D7DD2B55C73B0099B6F3 /* ThemeExtensions.swift */; };
		99F4FE5B2BC36A6700754F0F /* PreferenceCenterContentStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F4FE5A2BC36A6700754F0F /* PreferenceCenterContentStyle.swift */; };
		99F662B02B5DDC2900696098 /* BeveledLoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F662AF2B5DDC2900696098 /* BeveledLoadingView.swift */; };
		99F662B22B60425E00696098 /* InAppMessageModalView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F662B12B60425E00696098 /* InAppMessageModalView.swift */; };
		99F662D22B63047300696098 /* InAppMessageBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F662D12B63047300696098 /* InAppMessageBannerView.swift */; };
		99FD20A52DEFC35900242551 /* MessageCenterUIKitAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99FD20A42DEFC35900242551 /* MessageCenterUIKitAppearance.swift */; };
		A1B2C3D4E5F60002VIDEOST /* VideoState.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1B2C3D4E5F60001VIDEOST /* VideoState.swift */; };
		A1B2C3D4E5F60004VIDEOCR /* VideoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1B2C3D4E5F60003VIDEOCR /* VideoController.swift */; };
		A61517B226A9C4C3008A41C4 /* SubscriptionListEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = A61517B126A9C4C3008A41C4 /* SubscriptionListEditor.swift */; };
		A61517B526AEEAAB008A41C4 /* SubscriptionListUpdate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A61517B426AEEAAB008A41C4 /* SubscriptionListUpdate.swift */; };
		A61517C426B009D6008A41C4 /* SubscriptionListAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = A61517C026B009D6008A41C4 /* SubscriptionListAPIClient.swift */; };
		A61F3A752A5DA58500EE94CC /* FeatureFlagManagerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A61F3A732A5D9D6800EE94CC /* FeatureFlagManagerTest.swift */; };
		A61F3A782A5DBA1800EE94CC /* AirshipCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 494DD9571B0EB677009C134E /* AirshipCore.framework */; platformFilters = (ios, maccatalyst, macos, tvos, xros, ); };
		A62058712A5841330041FBF9 /* AirshipFeatureFlags.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A62058692A5841330041FBF9 /* AirshipFeatureFlags.framework */; };
		A62058812A5842200041FBF9 /* AirshipFeatureFlagsSDKModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = A62058802A5842200041FBF9 /* AirshipFeatureFlagsSDKModule.swift */; };
		A629F7DA295B514C00671647 /* PasteboardActionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A629F7D9295B514C00671647 /* PasteboardActionTest.swift */; };
		A62C3354299FD509004DB0DA /* ShareActionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A62C3353299FD509004DB0DA /* ShareActionTest.swift */; };
		A63A567628F449D8004B8951 /* TestWorkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A63A567528F449D8004B8951 /* TestWorkManager.swift */; };
		A63A567828F457FE004B8951 /* TestWorkRateLimiterActor.swift in Sources */ = {isa = PBXBuildFile; fileRef = A63A567728F457FE004B8951 /* TestWorkRateLimiterActor.swift */; };
		A658DE0C2727020200007672 /* ImageButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = A658DE0A2727020100007672 /* ImageButton.swift */; };
		A658DE192728498900007672 /* AirshipWebview.swift in Sources */ = {isa = PBXBuildFile; fileRef = A658DE182728498900007672 /* AirshipWebview.swift */; };
		A658DE2B272AFB0400007672 /* AirshipImageLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = A658DE2A272AFB0400007672 /* AirshipImageLoader.swift */; };
		A67EC249279B1A40009089E1 /* ScopedSubscriptionListEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = A67EC248279B1A40009089E1 /* ScopedSubscriptionListEditor.swift */; };
		A67EC24B279B1C34009089E1 /* ScopedSubscriptionListUpdate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A67EC24A279B1C34009089E1 /* ScopedSubscriptionListUpdate.swift */; };
		A67F87D2268DECCE00EF5F43 /* ContactAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = A67F87D1268DECCE00EF5F43 /* ContactAPIClient.swift */; };
		A6849387273290520021675E /* Score.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6849386273290520021675E /* Score.swift */; };
		A684939D273436370021675E /* FontViewModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = A684939C273436370021675E /* FontViewModifier.swift */; };
		A69C987F27E247B20063A101 /* SubscriptionListAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = A69C987E27E247B20063A101 /* SubscriptionListAction.swift */; };
		A6A5530A26D548AF002B20F6 /* NativeBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6A5530926D548AF002B20F6 /* NativeBridge.swift */; };
		A6A5531026D548D6002B20F6 /* JavaScriptEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6A5530F26D548D6002B20F6 /* JavaScriptEnvironment.swift */; };
		A6A5531326D548FF002B20F6 /* NativeBridgeActionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6A5531226D548FF002B20F6 /* NativeBridgeActionHandler.swift */; };
		A6AC44832B923ACB00769ED2 /* TestInAppMessageAutomationExecutor.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6AC44822B923ACB00769ED2 /* TestInAppMessageAutomationExecutor.swift */; };
		A6AF8D2D27E8D4910068C7EE /* SubscriptionListActionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6AF8D2C27E8D4910068C7EE /* SubscriptionListActionTest.swift */; };
		A6CDD8D0269491BE0040A673 /* ContactAPIClientTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6CDD8CF269491BE0040A673 /* ContactAPIClientTest.swift */; };
		A6D6D48F2A0253AA0072A5CA /* ActionArguments.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6D6D48E2A0253AA0072A5CA /* ActionArguments.swift */; };
		A6D6D49D2A0260780072A5CA /* AirshipAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6D6D49C2A02607800
Download .txt
gitextract_2xh8r30o/

├── .github/
│   ├── CODEOWNERS
│   ├── CONTRIBUTING.md
│   ├── ISSUE_TEMPLATE.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows/
│       ├── check-cert.yml
│       ├── check_framework_size.yml
│       ├── ci.yml
│       ├── deploy_docC.yml
│       ├── merge.yml
│       ├── pr-review.yml
│       └── release.yml
├── .gitignore
├── .gitmodules
├── .ruby-version
├── .swift-format.json
├── .swiftpm/
│   └── xcode/
│       └── package.xcworkspace/
│           └── contents.xcworkspacedata
├── .whitesource
├── Airship/
│   ├── Airship.xcodeproj/
│   │   ├── project.pbxproj
│   │   ├── project.xcworkspace/
│   │   │   ├── contents.xcworkspacedata
│   │   │   └── xcshareddata/
│   │   │       └── IDEWorkspaceChecks.plist
│   │   └── xcshareddata/
│   │       └── xcschemes/
│   │           ├── AirshipAutomation.xcscheme
│   │           ├── AirshipBasement.xcscheme
│   │           ├── AirshipCore.xcscheme
│   │           ├── AirshipDebug.xcscheme
│   │           ├── AirshipFeatureFlags.xcscheme
│   │           ├── AirshipMessageCenter.xcscheme
│   │           ├── AirshipObjectiveC.xcscheme
│   │           └── AirshipPreferenceCenter.xcscheme
│   ├── AirshipAutomation/
│   │   ├── Info.plist
│   │   ├── Resources/
│   │   │   ├── AirshipAutomation.xcdatamodeld/
│   │   │   │   ├── .xccurrentversion
│   │   │   │   ├── AirshipAutomation 2.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── AirshipAutomation 3.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   └── AirshipAutomation.xcdatamodel/
│   │   │   │       └── contents
│   │   │   ├── UAAutomation.xcdatamodeld/
│   │   │   │   ├── .xccurrentversion
│   │   │   │   ├── UAAutomation 10.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 11.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 12.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 13.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 2.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 3.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 4.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 5.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 6.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 7.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 8.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAAutomation 9.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   └── UAAutomation.xcdatamodel/
│   │   │   │       └── contents
│   │   │   └── UAFrequencyLimits.xcdatamodeld/
│   │   │       └── UAFrequencyLimits.xcdatamodel/
│   │   │           └── contents
│   │   ├── Source/
│   │   │   ├── ActionAutomation/
│   │   │   │   ├── ActionAutomationExecutor.swift
│   │   │   │   └── ActionAutomationPreparer.swift
│   │   │   ├── Actions/
│   │   │   │   ├── CancelSchedulesAction.swift
│   │   │   │   ├── LandingPageAction.swift
│   │   │   │   └── ScheduleAction.swift
│   │   │   ├── AirshipAutomationResources.swift
│   │   │   ├── AudienceCheck/
│   │   │   │   ├── AdditionalAudienceCheckerApiClient.swift
│   │   │   │   └── AdditionalAudienceCheckerResolver.swift
│   │   │   ├── Automation/
│   │   │   │   ├── ApplicationMetrics.swift
│   │   │   │   ├── AutomationAudience.swift
│   │   │   │   ├── AutomationCompoundAudience.swift
│   │   │   │   ├── AutomationDelay.swift
│   │   │   │   ├── AutomationSchedule.swift
│   │   │   │   ├── AutomationTrigger.swift
│   │   │   │   ├── DeferredAutomationData.swift
│   │   │   │   ├── Engine/
│   │   │   │   │   ├── AutomationDelayProcessor.swift
│   │   │   │   │   ├── AutomationEngine.swift
│   │   │   │   │   ├── AutomationEventFeed.swift
│   │   │   │   │   ├── AutomationEventsHistory.swift
│   │   │   │   │   ├── AutomationExecutor.swift
│   │   │   │   │   ├── AutomationPreparer.swift
│   │   │   │   │   ├── AutomationScheduleData.swift
│   │   │   │   │   ├── AutomationScheduleState.swift
│   │   │   │   │   ├── AutomationStore.swift
│   │   │   │   │   ├── ExecutionWindowProcessor.swift
│   │   │   │   │   ├── LegacyAutomationStore.swift
│   │   │   │   │   ├── PreparedSchedule.swift
│   │   │   │   │   ├── ScheduleExecuteResult.swift
│   │   │   │   │   ├── SchedulePrepareResult.swift
│   │   │   │   │   ├── ScheduleReadyResult.swift
│   │   │   │   │   ├── TriggerProcessor/
│   │   │   │   │   │   ├── AutomationTriggerProcessor.swift
│   │   │   │   │   │   ├── PreparedTrigger.swift
│   │   │   │   │   │   └── TriggerData.swift
│   │   │   │   │   └── TriggeringInfo.swift
│   │   │   │   └── ExecutionWindow.swift
│   │   │   ├── AutomationSDKModule.swift
│   │   │   ├── InAppAutomation.swift
│   │   │   ├── InAppAutomationComponent.swift
│   │   │   ├── InAppAutomationUpdateStatus.swift
│   │   │   ├── InAppMessage/
│   │   │   │   ├── Analytics/
│   │   │   │   │   ├── InAppDisplayImpressionRuleProvider.swift
│   │   │   │   │   ├── InAppMessageAnalytics.swift
│   │   │   │   │   └── InAppMessageAnalyticsFactory.swift
│   │   │   │   ├── Assets/
│   │   │   │   │   ├── AirshipCachedAssets.swift
│   │   │   │   │   ├── AssetCacheManager.swift
│   │   │   │   │   ├── DefaultAssetDownloader.swift
│   │   │   │   │   └── DefaultAssetFileManager.swift
│   │   │   │   ├── Display Adapter/
│   │   │   │   │   ├── AirshipLayoutDisplayAdapter.swift
│   │   │   │   │   ├── CustomDisplayAdapter.swift
│   │   │   │   │   ├── CustomDisplayAdapterWrapper.swift
│   │   │   │   │   ├── DisplayAdapter.swift
│   │   │   │   │   ├── DisplayAdapterFactory.swift
│   │   │   │   │   └── InAppMessageDisplayListener.swift
│   │   │   │   ├── Display Coordinators/
│   │   │   │   │   ├── DefaultDisplayCoordinator.swift
│   │   │   │   │   ├── DisplayCoordinator.swift
│   │   │   │   │   ├── DisplayCoordinatorManager.swift
│   │   │   │   │   └── ImmediateDisplayCoordinator.swift
│   │   │   │   ├── InAppActionRunner.swift
│   │   │   │   ├── InAppMessage.swift
│   │   │   │   ├── InAppMessageAutomationExecutor.swift
│   │   │   │   ├── InAppMessageAutomationPreparer.swift
│   │   │   │   ├── InAppMessageColor.swift
│   │   │   │   ├── InAppMessageDisplayContent.swift
│   │   │   │   ├── InAppMessageDisplayDelegate.swift
│   │   │   │   ├── InAppMessageEnvironment.swift
│   │   │   │   ├── InAppMessageSceneDelegate.swift
│   │   │   │   ├── InAppMessageSceneManager.swift
│   │   │   │   ├── InAppMessageValidation.swift
│   │   │   │   ├── InAppMessageViewDelegate.swift
│   │   │   │   ├── InAppMessaging.swift
│   │   │   │   ├── Info/
│   │   │   │   │   ├── InAppMessageButtonInfo.swift
│   │   │   │   │   ├── InAppMessageButtonLayoutType.swift
│   │   │   │   │   ├── InAppMessageMediaInfo.swift
│   │   │   │   │   └── InAppMessageTextInfo.swift
│   │   │   │   ├── Legacy/
│   │   │   │   │   ├── LegacyInAppAnalytics.swift
│   │   │   │   │   ├── LegacyInAppMessage.swift
│   │   │   │   │   └── LegacyInAppMessaging.swift
│   │   │   │   └── View/
│   │   │   │       ├── BeveledLoadingView.swift
│   │   │   │       ├── ButtonGroup.swift
│   │   │   │       ├── CloseButton.swift
│   │   │   │       ├── FullscreenView.swift
│   │   │   │       ├── HTMLView.swift
│   │   │   │       ├── InAppMessageBannerView.swift
│   │   │   │       ├── InAppMessageExtensions.swift
│   │   │   │       ├── InAppMessageHostingController.swift
│   │   │   │       ├── InAppMessageModalView.swift
│   │   │   │       ├── InAppMessageNativeBridgeExtension.swift
│   │   │   │       ├── InAppMessageRootView.swift
│   │   │   │       ├── InAppMessageViewUtils.swift
│   │   │   │       ├── InAppMessageWebView.swift
│   │   │   │       ├── MediaView.swift
│   │   │   │       ├── TextView.swift
│   │   │   │       └── Theme/
│   │   │   │           ├── InAppMessageTheme.swift
│   │   │   │           ├── InAppMessageThemeAdditionalPadding.swift
│   │   │   │           ├── InAppMessageThemeBanner.swift
│   │   │   │           ├── InAppMessageThemeButton.swift
│   │   │   │           ├── InAppMessageThemeFullscreen.swift
│   │   │   │           ├── InAppMessageThemeHTML.swift
│   │   │   │           ├── InAppMessageThemeManager.swift
│   │   │   │           ├── InAppMessageThemeMedia.swift
│   │   │   │           ├── InAppMessageThemeModal.swift
│   │   │   │           ├── InAppMessageThemeShadow.swift
│   │   │   │           ├── InAppMessageThemeText.swift
│   │   │   │           └── ThemeExtensions.swift
│   │   │   ├── Limits/
│   │   │   │   ├── FrequencyChecker.swift
│   │   │   │   ├── FrequencyConstraint.swift
│   │   │   │   ├── FrequencyLimitManager.swift
│   │   │   │   ├── FrequencyLimitStore.swift
│   │   │   │   └── Occurrence.swift
│   │   │   ├── RemoteData/
│   │   │   │   ├── AutomationRemoteDataAccess.swift
│   │   │   │   ├── AutomationRemoteDataSubscriber.swift
│   │   │   │   ├── AutomationSourceInfoStore.swift
│   │   │   │   └── DeferredScheduleResult.swift
│   │   │   └── Utils/
│   │   │       ├── ActiveTimer.swift
│   │   │       ├── AirshipAsyncSemaphore.swift
│   │   │       ├── AutomationActionRunner.swift
│   │   │       ├── RetryingQueue.swift
│   │   │       └── ScheduleConditionsChangedNotifier.swift
│   │   └── Tests/
│   │       ├── Action Automation/
│   │       │   ├── ActionAutomationExecutorTest.swift
│   │       │   └── ActionAutomationPreparerTest.swift
│   │       ├── Actions/
│   │       │   ├── CancelSchedulesActionTest.swift
│   │       │   ├── LandingPageActionTest.swift
│   │       │   └── ScheduleActionTest.swift
│   │       ├── Automation/
│   │       │   ├── ApplicationMetricsTest.swift
│   │       │   ├── AudienceCheck/
│   │       │   │   └── AdditionalAudienceCheckerResolverTest.swift
│   │       │   ├── AutomationScheduleDataTest.swift
│   │       │   ├── AutomationScheduleTest.swift
│   │       │   └── Engine/
│   │       │       ├── AutomationDelayProcessorTest.swift
│   │       │       ├── AutomationEngineTest.swift
│   │       │       ├── AutomationEventFeedTest.swift
│   │       │       ├── AutomationEventsHistoryTest.swift
│   │       │       ├── AutomationExecutorTest.swift
│   │       │       ├── AutomationPreparerTest.swift
│   │       │       ├── AutomationStoreTest.swift
│   │       │       ├── AutomationTriggerProcessorTest.swift
│   │       │       ├── ExecutionWindowProcessorTest.swift
│   │       │       ├── PreparedScheduleInfoTest.swift
│   │       │       └── PreparedTriggerTest.swift
│   │       ├── ExecutionWindowTest.swift
│   │       ├── InAppMessage/
│   │       │   ├── Analytics/
│   │       │   │   ├── DefaultInAppDisplayImpressionRuleProviderTest.swift
│   │       │   │   └── InAppMessageAnalyticsTest.swift
│   │       │   ├── Assets/
│   │       │   │   ├── AssetCacheManagerTest.swift
│   │       │   │   ├── DefaultAssetDownloaderTest.swift
│   │       │   │   └── DefaultAssetFileManagerTest.swift
│   │       │   ├── DefaultInAppActionRunnerTest.swift
│   │       │   ├── Display Adapter/
│   │       │   │   ├── AirshipLayoutDisplayAdapterTest.swift
│   │       │   │   ├── CustomDisplayAdapterWrapperTest.swift
│   │       │   │   ├── DisplayAdapterFactoryTest.swift
│   │       │   │   └── InAppMessageDisplayListenerTest.swift
│   │       │   ├── Display Coordinators/
│   │       │   │   ├── DefaultDisplayCoordinatorTest.swift
│   │       │   │   ├── DisplayCoordinatorManagerTest.swift
│   │       │   │   └── ImmediateDisplayCoordinatorTest.swift
│   │       │   ├── InAppMessageAutomationExecutorTest.swift
│   │       │   ├── InAppMessageAutomationPreparerTest.swift
│   │       │   ├── InAppMessageContentValidationTest.swift
│   │       │   ├── InAppMessageTest.swift
│   │       │   ├── InAppMessageThemeTest.swift
│   │       │   └── View/
│   │       │       └── InAppMessageNativeBridgeExtensionTest.swift
│   │       ├── InAppMessaging/
│   │       │   ├── Invalid-UAInAppMessageBannerStyle.plist
│   │       │   ├── Invalid-UAInAppMessageFullScreenStyle.plist
│   │       │   ├── Invalid-UAInAppMessageModalStyle.plist
│   │       │   ├── Valid-UAInAppMessageBannerStyle.plist
│   │       │   ├── Valid-UAInAppMessageFullScreenStyle.plist
│   │       │   ├── Valid-UAInAppMessageHTMLStyle.plist
│   │       │   └── Valid-UAInAppMessageModalStyle.plist
│   │       ├── Legacy/
│   │       │   ├── LegacyInAppAnalyticsTest.swift
│   │       │   ├── LegacyInAppMessageTest.swift
│   │       │   └── LegacyInAppMessagingTest.swift
│   │       ├── Limits/
│   │       │   └── FrequencyLimitManagerTest.swift
│   │       ├── RemoteData/
│   │       │   ├── AutomationRemoteDataAccessTest.swift
│   │       │   ├── AutomationRemoteDataSubscriberTest.swift
│   │       │   └── AutomationSourceInfoStoreTest.swift
│   │       ├── Test Utils/
│   │       │   ├── TestActionRunner.swift
│   │       │   ├── TestActiveTimer.swift
│   │       │   ├── TestAutomationEngine.swift
│   │       │   ├── TestCachedAssets.swift
│   │       │   ├── TestDisplayAdapter.swift
│   │       │   ├── TestDisplayCoordinator.swift
│   │       │   ├── TestFrequencyLimitsManager.swift
│   │       │   ├── TestInAppMessageAnalytics.swift
│   │       │   ├── TestInAppMessageAutomationExecutor.swift
│   │       │   └── TestRemoteDataAccess.swift
│   │       └── Utils/
│   │           ├── ActiveTimerTest.swift
│   │           ├── AirshipAsyncSemaphoreTest.swift
│   │           └── RetryingQueueTests.swift
│   ├── AirshipBasement/
│   │   ├── Info.plist
│   │   └── Source/
│   │       ├── AirshipLogHandler.swift
│   │       ├── AirshipLogPrivacyLevel.swift
│   │       ├── AirshipLogger.swift
│   │       ├── DefaultLogHandler.swift
│   │       └── LogLevel.swift
│   ├── AirshipConfig.xcconfig
│   ├── AirshipCore/
│   │   ├── Info.plist
│   │   ├── Resources/
│   │   │   ├── PrivacyInfo.xcprivacy
│   │   │   ├── UAEvents.xcdatamodeld/
│   │   │   │   └── UAEvents.xcdatamodel/
│   │   │   │       └── contents
│   │   │   ├── UAMeteredUsage.xcdatamodeld/
│   │   │   │   └── UAMeteredUsage.xcdatamodel/
│   │   │   │       └── contents
│   │   │   ├── UANativeBridge
│   │   │   ├── UANotificationCategories.plist
│   │   │   ├── UARemoteData.xcdatamodeld/
│   │   │   │   ├── .xccurrentversion
│   │   │   │   ├── UARemoteData 2.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UARemoteData 3.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UARemoteData 4.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   └── UARemoteData.xcdatamodel/
│   │   │   │       └── contents
│   │   │   ├── UARemoteDataMappingV1toV4.xcmappingmodel/
│   │   │   │   └── xcmapping.xml
│   │   │   ├── UARemoteDataMappingV2toV4.xcmappingmodel/
│   │   │   │   └── xcmapping.xml
│   │   │   ├── UARemoteDataMappingV3toV4.xcmappingmodel/
│   │   │   │   └── xcmapping.xml
│   │   │   ├── UAirshipCache.xcdatamodeld/
│   │   │   │   └── UAAirshipCache.xcdatamodel/
│   │   │   │       └── contents
│   │   │   ├── af.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── am.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── ar.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── bg.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── ca.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── cs.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── da.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── de.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── el.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── en.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── es-419.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── es.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── et.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── fa.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── fi.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── fr-CA.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── fr.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── hi.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── hr.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── hu.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── id.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── it.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── iw.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── ja.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── ko.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── lt.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── lv.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── ms.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── nl.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── no.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── pl.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── pt-PT.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── pt.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── ro.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── ru.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── sk.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── sl.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── sr.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── sv.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── sw.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── th.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── tr.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── uk.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── vi.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── zh-HK.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── zh-Hans.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   ├── zh-Hant.lproj/
│   │   │   │   └── UrbanAirship.strings
│   │   │   └── zu.lproj/
│   │   │       └── UrbanAirship.strings
│   │   ├── Source/
│   │   │   ├── APNSEnvironment.swift
│   │   │   ├── APNSRegistrar.swift
│   │   │   ├── APNSRegistrationResult.swift
│   │   │   ├── AccountEventTemplate.swift
│   │   │   ├── ActionArguments.swift
│   │   │   ├── ActionRegistry.swift
│   │   │   ├── ActionResult.swift
│   │   │   ├── ActionRunner.swift
│   │   │   ├── ActivityViewController.swift
│   │   │   ├── AddCustomEventAction.swift
│   │   │   ├── AddTagsAction.swift
│   │   │   ├── Airship.swift
│   │   │   ├── AirshipAction.swift
│   │   │   ├── AirshipActorValue.swift
│   │   │   ├── AirshipAnalytics.swift
│   │   │   ├── AirshipAnalyticsFeed.swift
│   │   │   ├── AirshipAppCredentials.swift
│   │   │   ├── AirshipApptimizeIntegration.swift
│   │   │   ├── AirshipAsyncChannel.swift
│   │   │   ├── AirshipAsyncImage.swift
│   │   │   ├── AirshipAuthorizedNotificationSettings.swift
│   │   │   ├── AirshipBase64.swift
│   │   │   ├── AirshipButton.swift
│   │   │   ├── AirshipCache.swift
│   │   │   ├── AirshipCancellable.swift
│   │   │   ├── AirshipChannel.swift
│   │   │   ├── AirshipCheckboxToggleStyle.swift
│   │   │   ├── AirshipColor.swift
│   │   │   ├── AirshipComponent.swift
│   │   │   ├── AirshipConfig.swift
│   │   │   ├── AirshipContact.swift
│   │   │   ├── AirshipCoreDataPredicate.swift
│   │   │   ├── AirshipCoreResources.swift
│   │   │   ├── AirshipDate.swift
│   │   │   ├── AirshipDateFormatter.swift
│   │   │   ├── AirshipDevice.swift
│   │   │   ├── AirshipDeviceAudienceResult.swift
│   │   │   ├── AirshipDeviceID.swift
│   │   │   ├── AirshipDisplayTarget.swift
│   │   │   ├── AirshipEmbeddedInfo.swift
│   │   │   ├── AirshipEmbeddedObserver.swift
│   │   │   ├── AirshipEmbeddedSize.swift
│   │   │   ├── AirshipEmbeddedView.swift
│   │   │   ├── AirshipEmbeddedViewManager.swift
│   │   │   ├── AirshipErrors.swift
│   │   │   ├── AirshipEvent.swift
│   │   │   ├── AirshipEventData.swift
│   │   │   ├── AirshipEventType.swift
│   │   │   ├── AirshipEvents.swift
│   │   │   ├── AirshipFont.swift
│   │   │   ├── AirshipImageLoader.swift
│   │   │   ├── AirshipImageProvider.swift
│   │   │   ├── AirshipInputValidator.swift
│   │   │   ├── AirshipInstance.swift
│   │   │   ├── AirshipIvyVersionMatcher.swift
│   │   │   ├── AirshipJSON.swift
│   │   │   ├── AirshipJSONUtils.swift
│   │   │   ├── AirshipKeychainAccess.swift
│   │   │   ├── AirshipLayout.swift
│   │   │   ├── AirshipLocalizationUtils.swift
│   │   │   ├── AirshipLock.swift
│   │   │   ├── AirshipMeteredUsage.swift
│   │   │   ├── AirshipMeteredUsageEvent.swift
│   │   │   ├── AirshipNativePlatform.swift
│   │   │   ├── AirshipNetworkChecker.swift
│   │   │   ├── AirshipNotificationCenter.swift
│   │   │   ├── AirshipNotificationStatus.swift
│   │   │   ├── AirshipPasteboard.swift
│   │   │   ├── AirshipPrivacyManager.swift
│   │   │   ├── AirshipProgressView.swift
│   │   │   ├── AirshipPush.swift
│   │   │   ├── AirshipPushableComponent.swift
│   │   │   ├── AirshipRequest.swift
│   │   │   ├── AirshipRequestSession.swift
│   │   │   ├── AirshipResources.swift
│   │   │   ├── AirshipResponse.swift
│   │   │   ├── AirshipSDKExtension.swift
│   │   │   ├── AirshipSDKModule.swift
│   │   │   ├── AirshipSceneController.swift
│   │   │   ├── AirshipSceneManager.swift
│   │   │   ├── AirshipSimpleLayoutView.swift
│   │   │   ├── AirshipSimpleLayoutViewModel.swift
│   │   │   ├── AirshipStateOverrides.swift
│   │   │   ├── AirshipSwitchToggleStyle.swift
│   │   │   ├── AirshipSwizzler.swift
│   │   │   ├── AirshipTaskSleeper.swift
│   │   │   ├── AirshipTimeCriteria.swift
│   │   │   ├── AirshipTimerProtocol.swift
│   │   │   ├── AirshipToggle.swift
│   │   │   ├── AirshipUnsafeSendableWrapper.swift
│   │   │   ├── AirshipUtils.swift
│   │   │   ├── AirshipVersion.swift
│   │   │   ├── AirshipViewSizeReader.swift
│   │   │   ├── AirshipViewUtils.swift
│   │   │   ├── AirshipWeakValueHolder.swift
│   │   │   ├── AirshipWebview.swift
│   │   │   ├── AirshipWindowFactory.swift
│   │   │   ├── AirshipWorkManager.swift
│   │   │   ├── AirshipWorkManagerProtocol.swift
│   │   │   ├── AirshipWorkRequest.swift
│   │   │   ├── AirshipWorkResult.swift
│   │   │   ├── AirsihpTriggerContext.swift
│   │   │   ├── AnonContactData.swift
│   │   │   ├── AppIntegration.swift
│   │   │   ├── AppRemoteDataProviderDelegate.swift
│   │   │   ├── AppStateTracker.swift
│   │   │   ├── AppStateTrackerAdapter.swift
│   │   │   ├── ApplicationState.swift
│   │   │   ├── ArishipCustomViewManager.swift
│   │   │   ├── AssociatedIdentifiers.swift
│   │   │   ├── AsyncSerialQueue.swift
│   │   │   ├── AsyncStream.swift
│   │   │   ├── Atomic.swift
│   │   │   ├── AttributePendingMutations.swift
│   │   │   ├── AttributeUpdate.swift
│   │   │   ├── Attributes.swift
│   │   │   ├── AttributesEditor.swift
│   │   │   ├── AudienceDeviceInfoProvider.swift
│   │   │   ├── AudienceHashSelector.swift
│   │   │   ├── AudienceOverridesProvider.swift
│   │   │   ├── AudienceUtils.swift
│   │   │   ├── AuthToken.swift
│   │   │   ├── AutoIntegration.swift
│   │   │   ├── BackgroundColorViewModifier.swift
│   │   │   ├── Badger.swift
│   │   │   ├── BannerView.swift
│   │   │   ├── BaseCachingRemoteDataProvider.swift
│   │   │   ├── BasementImport.swift
│   │   │   ├── BasicToggleLayout.swift
│   │   │   ├── BlockAction.swift
│   │   │   ├── BundleExtensions.swift
│   │   │   ├── ButtonLayout.swift
│   │   │   ├── ButtonState.swift
│   │   │   ├── CachedList.swift
│   │   │   ├── CachedValue.swift
│   │   │   ├── CachingSMSValidatorAPIClient.swift
│   │   │   ├── CancellableValueHolder.swift
│   │   │   ├── ChallengeResolver.swift
│   │   │   ├── ChannelAPIClient.swift
│   │   │   ├── ChannelAudienceManager.swift
│   │   │   ├── ChannelAuthTokenAPIClient.swift
│   │   │   ├── ChannelAuthTokenProvider.swift
│   │   │   ├── ChannelBulkUpdateAPIClient.swift
│   │   │   ├── ChannelCapture.swift
│   │   │   ├── ChannelRegistrar.swift
│   │   │   ├── ChannelRegistrationPayload.swift
│   │   │   ├── ChannelScope.swift
│   │   │   ├── ChannelSubscriptionListProvider.swift
│   │   │   ├── ChannelType.swift
│   │   │   ├── Checkbox.swift
│   │   │   ├── CheckboxController.swift
│   │   │   ├── CheckboxState.swift
│   │   │   ├── CheckboxToggleLayout.swift
│   │   │   ├── CircularRegion.swift
│   │   │   ├── CloudSite.swift
│   │   │   ├── CompoundDeviceAudienceSelector.swift
│   │   │   ├── ContactAPIClient.swift
│   │   │   ├── ContactChannel.swift
│   │   │   ├── ContactChannelsAPIClient.swift
│   │   │   ├── ContactChannelsProvider.swift
│   │   │   ├── ContactConflictEvent.swift
│   │   │   ├── ContactManager.swift
│   │   │   ├── ContactManagerProtocol.swift
│   │   │   ├── ContactOperation.swift
│   │   │   ├── ContactRemoteDataProviderDelegate.swift
│   │   │   ├── ContactSubscriptionListClient.swift
│   │   │   ├── Container.swift
│   │   │   ├── CustomEvent.swift
│   │   │   ├── CustomView.swift
│   │   │   ├── DeepLinkAction.swift
│   │   │   ├── DeepLinkDelegate.swift
│   │   │   ├── DefaultAirshipAnalytics.swift
│   │   │   ├── DefaultAirshipChannel.swift
│   │   │   ├── DefaultAirshipContact.swift
│   │   │   ├── DefaultAirshipPush.swift
│   │   │   ├── DefaultAppIntegrationDelegate.swift
│   │   │   ├── DeferredAPIClient.swift
│   │   │   ├── DeferredResolver.swift
│   │   │   ├── DeviceAudienceChecker.swift
│   │   │   ├── DeviceAudienceSelector.swift
│   │   │   ├── DeviceTagSelector.swift
│   │   │   ├── Dispatcher.swift
│   │   │   ├── EmailRegistrationOptions.swift
│   │   │   ├── EmbeddedView.swift
│   │   │   ├── EmbeddedViewSelector.swift
│   │   │   ├── EmptyAction.swift
│   │   │   ├── EmptyView.swift
│   │   │   ├── EnableBehaviorModifiers.swift
│   │   │   ├── EnableFeatureAction.swift
│   │   │   ├── EnvironmentValues.swift
│   │   │   ├── EventAPIClient.swift
│   │   │   ├── EventHandlerViewModifier.swift
│   │   │   ├── EventManager.swift
│   │   │   ├── EventStore.swift
│   │   │   ├── EventUploadScheduler.swift
│   │   │   ├── EventUploadTuningInfo.swift
│   │   │   ├── EventUtils.swift
│   │   │   ├── Experiment.swift
│   │   │   ├── ExperimentDataProvider.swift
│   │   │   ├── ExperimentManager.swift
│   │   │   ├── ExternalURLProcessor.swift
│   │   │   ├── FarmHashFingerprint64.swift
│   │   │   ├── FetchDeviceInfoAction.swift
│   │   │   ├── FontViewModifier.swift
│   │   │   ├── FormController.swift
│   │   │   ├── FormInputViewModifier.swift
│   │   │   ├── HashChecker.swift
│   │   │   ├── IconView.swift
│   │   │   ├── Icons.swift
│   │   │   ├── Image.swift
│   │   │   ├── ImageButton.swift
│   │   │   ├── JSONMatcher.swift
│   │   │   ├── JSONPredicate.swift
│   │   │   ├── JSONValueMatcher.swift
│   │   │   ├── JSONValueMatcherPredicates.swift
│   │   │   ├── JSONValueTransformer.swift
│   │   │   ├── JavaScriptCommand.swift
│   │   │   ├── JavaScriptCommandDelegate.swift
│   │   │   ├── JavaScriptEnvironment.swift
│   │   │   ├── Label.swift
│   │   │   ├── LabelButton.swift
│   │   │   ├── LayoutState.swift
│   │   │   ├── LinearLayout.swift
│   │   │   ├── LiveActivity.swift
│   │   │   ├── LiveActivityRegistrationStatus.swift
│   │   │   ├── LiveActivityRegistrationStatusUpdates.swift
│   │   │   ├── LiveActivityRegistry.swift
│   │   │   ├── LiveActivityRestorer.swift
│   │   │   ├── LiveActivityUpdate.swift
│   │   │   ├── LocaleManager.swift
│   │   │   ├── Media.swift
│   │   │   ├── MediaEventTemplate.swift
│   │   │   ├── MessageCriteria.swift
│   │   │   ├── MessageDisplayHistory.swift
│   │   │   ├── MeteredUsageAPIClient.swift
│   │   │   ├── MeteredUsageStore.swift
│   │   │   ├── ModalView.swift
│   │   │   ├── ModifyAttributesAction.swift
│   │   │   ├── ModifyTagsAction.swift
│   │   │   ├── ModuleLoader.swift
│   │   │   ├── NativeBridge.swift
│   │   │   ├── NativeBridgeActionHandler.swift
│   │   │   ├── NativeBridgeActionRunner.swift
│   │   │   ├── NativeBridgeDelegate.swift
│   │   │   ├── NativeBridgeExtensionDelegate.swift
│   │   │   ├── NativeVideoPlayer.swift
│   │   │   ├── NotificationCategories.swift
│   │   │   ├── NotificationPermissionDelegate.swift
│   │   │   ├── NotificationRegistrar.swift
│   │   │   ├── NotificationRegistrationResult.swift
│   │   │   ├── OpenExternalURLAction.swift
│   │   │   ├── OpenRegistrationOptions.swift
│   │   │   ├── Pager.swift
│   │   │   ├── PagerController.swift
│   │   │   ├── PagerGestureMap.swift
│   │   │   ├── PagerIndicator.swift
│   │   │   ├── PagerState.swift
│   │   │   ├── PagerSwipeDirection.swift
│   │   │   ├── PagerUtils.swift
│   │   │   ├── PasteboardAction.swift
│   │   │   ├── Permission.swift
│   │   │   ├── PermissionDelegate.swift
│   │   │   ├── PermissionPrompter.swift
│   │   │   ├── PermissionStatus.swift
│   │   │   ├── PermissionsManager.swift
│   │   │   ├── PreferenceDataStore.swift
│   │   │   ├── PromptPermissionAction.swift
│   │   │   ├── ProximityRegion.swift
│   │   │   ├── PushNotificationDelegate.swift
│   │   │   ├── RadioInput.swift
│   │   │   ├── RadioInputController.swift
│   │   │   ├── RadioInputState.swift
│   │   │   ├── RadioInputToggleLayout.swift
│   │   │   ├── RateAppAction.swift
│   │   │   ├── RegionEvent.swift
│   │   │   ├── RegistrationDelegate.swift
│   │   │   ├── RemoteConfig.swift
│   │   │   ├── RemoteConfigCache.swift
│   │   │   ├── RemoteConfigManager.swift
│   │   │   ├── RemoteData.swift
│   │   │   ├── RemoteDataAPIClient.swift
│   │   │   ├── RemoteDataInfo.swift
│   │   │   ├── RemoteDataPayload.swift
│   │   │   ├── RemoteDataProtocol.swift
│   │   │   ├── RemoteDataProvider.swift
│   │   │   ├── RemoteDataProviderDelegate.swift
│   │   │   ├── RemoteDataProviderProtocol.swift
│   │   │   ├── RemoteDataSource.swift
│   │   │   ├── RemoteDataSourceStatus.swift
│   │   │   ├── RemoteDataStore.swift
│   │   │   ├── RemoteDataStorePayload.swift
│   │   │   ├── RemoteDataURLFactory.swift
│   │   │   ├── RemoveTagsAction.swift
│   │   │   ├── RetailEventTemplate.swift
│   │   │   ├── RootView.swift
│   │   │   ├── RuntimeConfig.swift
│   │   │   ├── SMSRegistrationOptions.swift
│   │   │   ├── SMSValidatorAPIClient.swift
│   │   │   ├── ScopedSubscriptionListEdit.swift
│   │   │   ├── ScopedSubscriptionListEditor.swift
│   │   │   ├── ScopedSubscriptionListUpdate.swift
│   │   │   ├── Score.swift
│   │   │   ├── ScoreController.swift
│   │   │   ├── ScoreState.swift
│   │   │   ├── ScoreToggleLayout.swift
│   │   │   ├── ScrollLayout.swift
│   │   │   ├── SearchEventTemplate.swift
│   │   │   ├── SerialQueue.swift
│   │   │   ├── SessionEvent.swift
│   │   │   ├── SessionEventFactory.swift
│   │   │   ├── SessionState.swift
│   │   │   ├── SessionTracker.swift
│   │   │   ├── Shapes.swift
│   │   │   ├── ShareAction.swift
│   │   │   ├── SmsLocalePicker.swift
│   │   │   ├── StackImageButton.swift
│   │   │   ├── StateController.swift
│   │   │   ├── StateSubscriptionsModifier.swift
│   │   │   ├── StoryIndicator.swift
│   │   │   ├── SubjectExtension.swift
│   │   │   ├── SubscriptionListAPIClient.swift
│   │   │   ├── SubscriptionListAction.swift
│   │   │   ├── SubscriptionListEdit.swift
│   │   │   ├── SubscriptionListEditor.swift
│   │   │   ├── SubscriptionListProvider.swift
│   │   │   ├── SubscriptionListUpdate.swift
│   │   │   ├── TagActionMutation.swift
│   │   │   ├── TagEditor.swift
│   │   │   ├── TagGroupMutations.swift
│   │   │   ├── TagGroupUpdate.swift
│   │   │   ├── TagGroupsEditor.swift
│   │   │   ├── TagsActionArgs.swift
│   │   │   ├── TextInput.swift
│   │   │   ├── Thomas.swift
│   │   │   ├── ThomasAccessibilityAction.swift
│   │   │   ├── ThomasAccessibleInfo.swift
│   │   │   ├── ThomasActionsPayload.swift
│   │   │   ├── ThomasAssociatedLabelResolver.swift
│   │   │   ├── ThomasAsyncImage.swift
│   │   │   ├── ThomasAttributeName.swift
│   │   │   ├── ThomasAttributeValue.swift
│   │   │   ├── ThomasAutomatedAccessibilityAction.swift
│   │   │   ├── ThomasAutomatedAction.swift
│   │   │   ├── ThomasBorder.swift
│   │   │   ├── ThomasButtonClickBehavior.swift
│   │   │   ├── ThomasButtonTapEffect.swift
│   │   │   ├── ThomasColor.swift
│   │   │   ├── ThomasConstants.swift
│   │   │   ├── ThomasConstrainedSize.swift
│   │   │   ├── ThomasDelegate.swift
│   │   │   ├── ThomasDirection.swift
│   │   │   ├── ThomasDisplayListener.swift
│   │   │   ├── ThomasEmailRegistrationOptions.swift
│   │   │   ├── ThomasEnableBehavior.swift
│   │   │   ├── ThomasEnvironment.swift
│   │   │   ├── ThomasEvent.swift
│   │   │   ├── ThomasEventHandler.swift
│   │   │   ├── ThomasFormDataCollector.swift
│   │   │   ├── ThomasFormField.swift
│   │   │   ├── ThomasFormFieldProcessor.swift
│   │   │   ├── ThomasFormPayloadGenerator.swift
│   │   │   ├── ThomasFormResult.swift
│   │   │   ├── ThomasFormState.swift
│   │   │   ├── ThomasFormStatus.swift
│   │   │   ├── ThomasFormSubmitBehavior.swift
│   │   │   ├── ThomasFormValidationMode.swift
│   │   │   ├── ThomasIcon.swift
│   │   │   ├── ThomasLayoutButtonTapEvent.swift
│   │   │   ├── ThomasLayoutContext.swift
│   │   │   ├── ThomasLayoutDisplayEvent.swift
│   │   │   ├── ThomasLayoutEvent.swift
│   │   │   ├── ThomasLayoutEventContext.swift
│   │   │   ├── ThomasLayoutEventMessageID.swift
│   │   │   ├── ThomasLayoutEventRecorder.swift
│   │   │   ├── ThomasLayoutEventSource.swift
│   │   │   ├── ThomasLayoutFormDisplayEvent.swift
│   │   │   ├── ThomasLayoutFormResultEvent.swift
│   │   │   ├── ThomasLayoutGestureEvent.swift
│   │   │   ├── ThomasLayoutPageActionEvent.swift
│   │   │   ├── ThomasLayoutPageSwipeEvent.swift
│   │   │   ├── ThomasLayoutPageViewEvent.swift
│   │   │   ├── ThomasLayoutPagerCompletedEvent.swift
│   │   │   ├── ThomasLayoutPagerSummaryEvent.swift
│   │   │   ├── ThomasLayoutPermissionResultEvent.swift
│   │   │   ├── ThomasLayoutResolutionEvent.swift
│   │   │   ├── ThomasMargin.swift
│   │   │   ├── ThomasMarkdownOptions.swift
│   │   │   ├── ThomasMediaFit.swift
│   │   │   ├── ThomasOrientation.swift
│   │   │   ├── ThomasPagerControllerBranching.swift
│   │   │   ├── ThomasPagerTracker.swift
│   │   │   ├── ThomasPlatform.swift
│   │   │   ├── ThomasPosition.swift
│   │   │   ├── ThomasPresentationInfo.swift
│   │   │   ├── ThomasPropertyOverride.swift
│   │   │   ├── ThomasSerializable.swift
│   │   │   ├── ThomasShadow.swift
│   │   │   ├── ThomasShapeInfo.swift
│   │   │   ├── ThomasSize.swift
│   │   │   ├── ThomasSizeConstraint.swift
│   │   │   ├── ThomasSmsLocale.swift
│   │   │   ├── ThomasState.swift
│   │   │   ├── ThomasStateAction.swift
│   │   │   ├── ThomasStateStorage.swift
│   │   │   ├── ThomasStateTrigger.swift
│   │   │   ├── ThomasTextAppearance.swift
│   │   │   ├── ThomasToggleStyleInfo.swift
│   │   │   ├── ThomasValidationInfo.swift
│   │   │   ├── ThomasViewController.swift
│   │   │   ├── ThomasViewInfo.swift
│   │   │   ├── ThomasViewedPageInfo.swift
│   │   │   ├── ThomasVisibilityInfo.swift
│   │   │   ├── ThomasWindowSize.swift
│   │   │   ├── ToggleLayout.swift
│   │   │   ├── TouchViewModifier.swift
│   │   │   ├── UAAppIntegrationDelegate.swift
│   │   │   ├── UACoreData.swift
│   │   │   ├── UARemoteDataMapping.swift
│   │   │   ├── UNNotificationRegistrar.swift
│   │   │   ├── URLAllowList.swift
│   │   │   ├── UrlInfo.swift
│   │   │   ├── ValidatableHelper.swift
│   │   │   ├── VideoController.swift
│   │   │   ├── VideoGroupState.swift
│   │   │   ├── VideoMediaNativeView.swift
│   │   │   ├── VideoMediaWebView.swift
│   │   │   ├── VideoState.swift
│   │   │   ├── ViewConstraints.swift
│   │   │   ├── ViewExtensions.swift
│   │   │   ├── ViewFactory.swift
│   │   │   ├── VisibilityViewModifier.swift
│   │   │   ├── WorkBackgroundTasks.swift
│   │   │   ├── WorkConditionsMonitor.swift
│   │   │   ├── WorkRateLimiterActor.swift
│   │   │   ├── Worker.swift
│   │   │   └── WrappingLayout.swift
│   │   └── Tests/
│   │       ├── APNSEnvironmentTest.swift
│   │       ├── AccountEventTemplateTest.swift
│   │       ├── ActionArgumentsTest.swift
│   │       ├── ActionRegistryTest.swift
│   │       ├── AddCustomEventActionTest.swift
│   │       ├── AddTagsActionTest.swift
│   │       ├── AirshipAnalyticFeedTest.swift
│   │       ├── AirshipAsyncChannelTest.swift
│   │       ├── AirshipBase64Test.swift
│   │       ├── AirshipBaseTest.swift
│   │       ├── AirshipCacheTest.swift
│   │       ├── AirshipColorTests.swift
│   │       ├── AirshipConfigTest.swift
│   │       ├── AirshipContactTest.swift
│   │       ├── AirshipDateFormatterTest.swift
│   │       ├── AirshipDeviceIDTest.swift
│   │       ├── AirshipEventsTest.swift
│   │       ├── AirshipHTTPResponseTest.swift
│   │       ├── AirshipIvyVersionMatcherTest.swift
│   │       ├── AirshipJSONTest.swift
│   │       ├── AirshipJSONUtilsTest.swift
│   │       ├── AirshipLocaleManagerTest.swift
│   │       ├── AirshipLocalizationUtilsTest.swift
│   │       ├── AirshipMeteredUsageTest.swift
│   │       ├── AirshipPrivacyManagerTest.swift
│   │       ├── AirshipPushTest.swift
│   │       ├── AirshipTest.swift
│   │       ├── AirshipURLAllowListTest.swift
│   │       ├── AirshipUtilsTest.swift
│   │       ├── AishipFontTests.swift
│   │       ├── Analytics/
│   │       │   ├── Events/
│   │       │   │   ├── ThomasLayoutButtonTapEventTest.swift
│   │       │   │   ├── ThomasLayoutDisplayEventTest.swift
│   │       │   │   ├── ThomasLayoutEventTestUtils.swift
│   │       │   │   ├── ThomasLayoutFormDisplayEventTest.swift
│   │       │   │   ├── ThomasLayoutFormResultEventTest.swift
│   │       │   │   ├── ThomasLayoutGestureEventTest.swift
│   │       │   │   ├── ThomasLayoutPageActionEventTest.swift
│   │       │   │   ├── ThomasLayoutPageSwipeEventAction.swift
│   │       │   │   ├── ThomasLayoutPageViewEventTest.swift
│   │       │   │   ├── ThomasLayoutPagerCompletedEventTest.swift
│   │       │   │   ├── ThomasLayoutPagerSummaryEventTest.swift
│   │       │   │   ├── ThomasLayoutPermissionResultEventTest.swift
│   │       │   │   └── ThomasLayoutResolutionEventTest.swift
│   │       │   ├── ThomasDisplayListenerTest.swift
│   │       │   ├── ThomasLayoutEventContextTest.swift
│   │       │   ├── ThomasLayoutEventMessageIDTest.swift
│   │       │   └── ThomasLayoutEventRecorderTest.swift
│   │       ├── AnalyticsTest.swift
│   │       ├── AppIntegrationTests.swift
│   │       ├── AppRemoteDataProviderDelegateTest.swift
│   │       ├── AppStateTrackerTest.swift
│   │       ├── AssociatedIdentifiersTest.swift
│   │       ├── AttributeEditorTest.swift
│   │       ├── AttributeUpdateTest.swift
│   │       ├── AudienceHashSelectorTest.swift
│   │       ├── AudienceUtilsTest.swift
│   │       ├── CachedListTest.swift
│   │       ├── CachedValueTest.swift
│   │       ├── ChallengeResolverTest.swift
│   │       ├── ChannelAPIClientTest.swift
│   │       ├── ChannelAudienceManagerTest.swift
│   │       ├── ChannelAuthTokenAPIClientTest.swift
│   │       ├── ChannelAuthTokenProviderTest.swift
│   │       ├── ChannelBulkUpdateAPIClientTest.swift
│   │       ├── ChannelCaptureTest.swift
│   │       ├── ChannelRegistrarTest.swift
│   │       ├── ChannelRegistrationPayloadTest.swift
│   │       ├── ChannelTest.swift
│   │       ├── CircularRegionTest.swift
│   │       ├── CompoundDeviceAudienceSelectorTest.swift
│   │       ├── ContactAPIClientTest.swift
│   │       ├── ContactChannelsProviderTest.swift
│   │       ├── ContactManagerTest.swift
│   │       ├── ContactOperationTest.swift
│   │       ├── ContactRemoteDataProviderTest.swift
│   │       ├── ContactSubscriptionListAPIClientTest.swift
│   │       ├── CustomEventTest.swift
│   │       ├── CustomNotificationCategories.plist
│   │       ├── DeepLinkActionTest.swift
│   │       ├── DeepLinkHandlerTest.swift
│   │       ├── DefaultAirshipRequestSessionTest.swift
│   │       ├── DefaultAppIntegrationDelegateTest.swift
│   │       ├── DefaultTaskSleeperTest.swift
│   │       ├── DeferredAPIClientTest.swift
│   │       ├── DeferredResolverTest.swift
│   │       ├── DeviceAudienceSelectorTest.swift
│   │       ├── DeviceTagSelectorTest.swift
│   │       ├── EnableFeatureActionTest.swift
│   │       ├── Environment/
│   │       │   ├── ThomasEnvironmentTest.swift
│   │       │   ├── ThomasFormDataCollectorTest.swift
│   │       │   ├── ThomasFormFieldProcessorTest.swift
│   │       │   ├── ThomasFormFieldTest.swift
│   │       │   ├── ThomasFormPayloadGeneratorTest.swift
│   │       │   ├── ThomasFormStateTest.swift
│   │       │   ├── ThomasPagerTrackerTest.swift
│   │       │   └── ThomasStateTest.swift
│   │       ├── EventAPIClientTest.swift
│   │       ├── EventManagerTest.swift
│   │       ├── EventSchedulerTest.swift
│   │       ├── EventStoreTest.swift
│   │       ├── EventTestUtils.swift
│   │       ├── ExperimentManagerTest.swift
│   │       ├── ExperimentTest.swift
│   │       ├── FarmHashFingerprint64Test.swift
│   │       ├── FetchDeviceInfoActionTest.swift
│   │       ├── HashCheckerTest.swift
│   │       ├── Info.plist
│   │       ├── Input Validation/
│   │       │   ├── AirshipInputValidationTest.swift
│   │       │   ├── CachingSMSValidatorAPIClientTest.swift
│   │       │   ├── SMSValidatorAPIClientTest.swift
│   │       │   └── TestSMSValidatorAPIClient.swift
│   │       ├── JSONPredicateTest.swift
│   │       ├── JavaScriptCommandTest.swift
│   │       ├── JsonMatcherTest.swift
│   │       ├── JsonValueMatcherTest.swift
│   │       ├── LayoutModelsTest.swift
│   │       ├── LiveActivityRegistryTest.swift
│   │       ├── MediaEventTemplateTest.swift
│   │       ├── MeteredUsageApiClientTest.swift
│   │       ├── ModifyAttributesActionTest.swift
│   │       ├── ModifyTagsActionTest.swift
│   │       ├── NativeBridgeActionHandlerTest.swift
│   │       ├── NotificationCategoriesTest.swift
│   │       ├── OpenExternalURLActionTest.swift
│   │       ├── PagerControllerTest.swift
│   │       ├── PasteboardActionTest.swift
│   │       ├── PermissionsManagerTests.swift
│   │       ├── PreferenceDataStoreTest.swift
│   │       ├── PromptPermissionActionTest.swift
│   │       ├── ProximityRegionTest.swift
│   │       ├── RateAppActionTest.swift
│   │       ├── RegionEventTest.swift
│   │       ├── RemoteConfigManagerTest.swift
│   │       ├── RemoteConfigTest.swift
│   │       ├── RemoteDataAPIClientTest.swift
│   │       ├── RemoteDataProviderTest.swift
│   │       ├── RemoteDataStoreTest.swift
│   │       ├── RemoteDataTest.swift
│   │       ├── RemoteDataTestUtils.swift
│   │       ├── RemoteDataURLFactoryTest.swift
│   │       ├── RemoveTagsActionTest.swift
│   │       ├── RetailEventTemplateTest.swift
│   │       ├── RuntimeConfig.swift
│   │       ├── RuntimeConfigTest.swift
│   │       ├── SearchEventTemplateTest.swift
│   │       ├── SessionTrackerTest.swift
│   │       ├── ShareActionTest.swift
│   │       ├── SubscriptionListAPIClientTest.swift
│   │       ├── SubscriptionListActionTest.swift
│   │       ├── Support/
│   │       │   ├── AirshipConfig-Valid-Legacy.plist
│   │       │   ├── AirshipConfig-Valid.plist
│   │       │   ├── TestAppStateTracker.swift
│   │       │   ├── airship.der
│   │       │   ├── development-embedded.mobileprovision
│   │       │   ├── production-embedded.mobileprovision
│   │       │   └── testMCColorsCatalog.xcassets/
│   │       │       ├── Contents.json
│   │       │       └── seapunkTestColor.colorset/
│   │       │           └── Contents.json
│   │       ├── TagEditorTest.swift
│   │       ├── TagGroupsEditorTest.swift
│   │       ├── TestAirshipInstance.swift
│   │       ├── TestAirshipRequestSession.swift
│   │       ├── TestAnalytics.swift
│   │       ├── TestAudienceChecker.swift
│   │       ├── TestCache.swift
│   │       ├── TestChannel.swift
│   │       ├── TestChannelAudienceManager.swift
│   │       ├── TestChannelAuthTokenAPIClient.swift
│   │       ├── TestChannelBulkUpdateAPIClient.swift
│   │       ├── TestChannelRegistrar.swift
│   │       ├── TestContact.swift
│   │       ├── TestContactAPIClient.swift
│   │       ├── TestContactSubscriptionListAPIClient.swift
│   │       ├── TestDate.swift
│   │       ├── TestDeferredResolver.swift
│   │       ├── TestDispatcher.swift
│   │       ├── TestExperimentDataProvider.swift
│   │       ├── TestKeychainAccess.swift
│   │       ├── TestLocaleManager.swift
│   │       ├── TestNetworkMonitor.swift
│   │       ├── TestPermissionPrompter.swift
│   │       ├── TestPrivacyManager.swift
│   │       ├── TestPush.swift
│   │       ├── TestRemoteData.swift
│   │       ├── TestRemoteDataAPIClient.swift
│   │       ├── TestSubscriptionListAPIClient.swift
│   │       ├── TestThomasLayoutEvent.swift
│   │       ├── TestURLAllowList.swift
│   │       ├── TestURLOpener.swift
│   │       ├── TestWorkManager.swift
│   │       ├── TestWorkRateLimiterActor.swift
│   │       ├── ThomasPresentationModelCodingTest.swift
│   │       ├── ThomasValidationTests.swift
│   │       ├── ThomasViewModelTest.swift
│   │       ├── Types/
│   │       │   ├── PagerDisableSwipeSelectorTest.swift
│   │       │   └── ThomasEmailRegistrationOptionsTest.swift
│   │       ├── VideoMediaWebViewTests.swift
│   │       └── WorkManager/
│   │           └── WorkRateLimiterTests.swift
│   ├── AirshipDebug/
│   │   ├── Info.plist
│   │   ├── Resources/
│   │   │   ├── AirshipDebugEventData.xcdatamodeld/
│   │   │   │   └── AirshipEventData.xcdatamodel/
│   │   │   │       └── contents
│   │   │   └── AirshipDebugPushData.xcdatamodeld/
│   │   │       └── AirshipDebugPushData.xcdatamodel/
│   │   │           └── contents
│   │   └── Source/
│   │       ├── AirshipDebugManager.swift
│   │       ├── AirshipDebugResources.swift
│   │       ├── DebugComponent.swift
│   │       ├── DebugSDKModule.swift
│   │       ├── Events/
│   │       │   ├── AirshipEvent.swift
│   │       │   ├── EventData.swift
│   │       │   └── EventDataManager.swift
│   │       ├── Push/
│   │       │   ├── PushData+CoreDataClass.swift
│   │       │   ├── PushData+CoreDataProperties.swift
│   │       │   ├── PushDataManager.swift
│   │       │   └── PushNotification.swift
│   │       ├── ShakeUtils.swift
│   │       └── View/
│   │           ├── AirshipDebugContentView.swift
│   │           ├── AirshipDebugRoute.swift
│   │           ├── AirshipDebugView.swift
│   │           ├── AirshipoDebugTriggers.swift
│   │           ├── Analytics/
│   │           │   ├── AirshipDebugAddEventView.swift
│   │           │   ├── AirshipDebugAnalyticIdentifierEditorView.swift
│   │           │   ├── AirshipDebugAnalyticsView.swift
│   │           │   ├── AirshipDebugEventDetailsView.swift
│   │           │   └── AirshipDebugEventsView.swift
│   │           ├── AppInfo/
│   │           │   └── AirshipDebugAppInfoView.swift
│   │           ├── Automations/
│   │           │   ├── AirshipDebugAutomationsView.swift
│   │           │   ├── AirshipDebugExperimentsView.swift
│   │           │   └── AirshipDebugInAppExperiencesView.swift
│   │           ├── Channel/
│   │           │   ├── AirshipDebugChannelSubscriptionsView.swift
│   │           │   ├── AirshipDebugChannelTagView.swift
│   │           │   └── AirshipDebugChannelView.swift
│   │           ├── Common/
│   │           │   ├── AirshipDebugAddPropertyView.swift
│   │           │   ├── AirshipDebugAddStringPropertyView.swift
│   │           │   ├── AirshipDebugAttributesEditorView.swift
│   │           │   ├── AirshipDebugAudienceSubject.swift
│   │           │   ├── AirshipDebugExtensions.swift
│   │           │   ├── AirshipDebugTagGroupsEditorView.swift
│   │           │   ├── AirshipJSONDetailsView.swift
│   │           │   ├── AirshipJSONView.swift
│   │           │   ├── AirshipToast.swift
│   │           │   └── Extensions.swift
│   │           ├── Contact/
│   │           │   ├── AirshipDebugAddEmailChannelView.swift
│   │           │   ├── AirshipDebugAddOpenChannelView.swift
│   │           │   ├── AirshipDebugAddSMSChannelView.swift
│   │           │   ├── AirshipDebugContactSubscriptionEditorView.swift
│   │           │   ├── AirshipDebugContactView.swift
│   │           │   └── AirshipDebugNamedUserView.swift
│   │           ├── FeatureFlags/
│   │           │   ├── AirshipDebugFeatureFlagDetailsView.swift
│   │           │   └── AirshipDebugFeatureFlagView.swift
│   │           ├── PreferenceCenter/
│   │           │   ├── AirshipDebugPreferencCenterItemView.swift
│   │           │   └── AirshipDebugPreferenceCenterView.swift
│   │           ├── PrivacyManager/
│   │           │   └── AirshipDebugPrivacyManagerView.swift
│   │           ├── Push/
│   │           │   ├── AirshipDebugPushDetailsView.swift
│   │           │   ├── AirshipDebugPushView.swift
│   │           │   └── AirshipDebugReceivedPushView.swift
│   │           └── TvOSComponents/
│   │               ├── TVDatePicker.swift
│   │               └── TVSlider.swift
│   ├── AirshipFeatureFlags/
│   │   ├── Info.plist
│   │   ├── Source/
│   │   │   ├── AirshipFeatureFlagsSDKModule.swift
│   │   │   ├── DeferredFlagResolver.swift
│   │   │   ├── FeatureFlag.swift
│   │   │   ├── FeatureFlagAnalytics.swift
│   │   │   ├── FeatureFlagComponent.swift
│   │   │   ├── FeatureFlagManager.swift
│   │   │   ├── FeatureFlagManagerProtocol.swift
│   │   │   ├── FeatureFlagPayload.swift
│   │   │   ├── FeatureFlagResultCache.swift
│   │   │   ├── FeatureFlagUpdateStatus.swift
│   │   │   └── FeatureFlagsRemoteDataAccess.swift
│   │   └── Tests/
│   │       ├── FeatureFlagAnalyticsTest.swift
│   │       ├── FeatureFlagDeferredResolverTest.swift
│   │       ├── FeatureFlagInfoTest.swift
│   │       ├── FeatureFlagManagerTest.swift
│   │       ├── FeatureFlagRemoteDataAccessTest.swift
│   │       ├── FeatureFlagResultCacheTest.swift
│   │       └── FeatureFlagVariablesTest.swift
│   ├── AirshipMessageCenter/
│   │   ├── Info.plist
│   │   ├── Resources/
│   │   │   ├── TestAssets.xcassets/
│   │   │   │   ├── Contents.json
│   │   │   │   └── testNamedColor.colorset/
│   │   │   │       └── Contents.json
│   │   │   ├── UAInbox.xcdatamodeld/
│   │   │   │   ├── .xccurrentversion
│   │   │   │   ├── UAInbox 2.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAInbox 3.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   ├── UAInbox 4.xcdatamodel/
│   │   │   │   │   └── contents
│   │   │   │   └── UAInbox.xcdatamodel/
│   │   │   │       └── contents
│   │   │   ├── UAInboxDataMappingV1toV4.xcmappingmodel/
│   │   │   │   └── xcmapping.xml
│   │   │   ├── UAInboxDataMappingV2toV4.xcmappingmodel/
│   │   │   │   └── xcmapping.xml
│   │   │   └── UAInboxDataMappingV3toV4.xcmappingmodel/
│   │   │       └── xcmapping.xml
│   │   ├── Source/
│   │   │   ├── AirshipMessageCenterResources.swift
│   │   │   ├── MessageCenter.swift
│   │   │   ├── MessageCenterAPIClient.swift
│   │   │   ├── MessageCenterAction.swift
│   │   │   ├── MessageCenterComponent.swift
│   │   │   ├── MessageCenterList.swift
│   │   │   ├── MessageCenterNativeBridgeExtension.swift
│   │   │   ├── MessageCenterPredicate.swift
│   │   │   ├── MessageCenterSDKModule.swift
│   │   │   ├── MessageCenterStore.swift
│   │   │   ├── MessageViewAnalytics.swift
│   │   │   ├── Model/
│   │   │   │   ├── InboxMessageData.swift
│   │   │   │   ├── MessageCenterMessage.swift
│   │   │   │   ├── MessageCenterUser.swift
│   │   │   │   └── UAInboxDataMapping.swift
│   │   │   ├── StateStore/
│   │   │   │   └── NativeLayoutPersistentDataStore.swift
│   │   │   ├── Theme/
│   │   │   │   ├── MessageCenterNavigationAppearance.swift
│   │   │   │   ├── MessageCenterTheme.swift
│   │   │   │   └── MessageCenterThemeLoader.swift
│   │   │   ├── ViewModel/
│   │   │   │   └── MessageCenterListItemViewModel.swift
│   │   │   └── Views/
│   │   │       ├── MessageCenter/
│   │   │       │   ├── MessageCenterContent.swift
│   │   │       │   ├── MessageCenterController.swift
│   │   │       │   ├── MessageCenterNavigationStack.swift
│   │   │       │   ├── MessageCenterSplitNavigationView.swift
│   │   │       │   ├── MessageCenterUIKitAppearance.swift
│   │   │       │   └── MessageCenterView.swift
│   │   │       ├── MessageCenterViewController.swift
│   │   │       ├── MessageList/
│   │   │       │   ├── MessageCenterListItemView.swift
│   │   │       │   ├── MessageCenterListView.swift
│   │   │       │   ├── MessageCenterListViewModel.swift
│   │   │       │   └── MessageCenterListViewWithNavigation.swift
│   │   │       ├── MessageView/
│   │   │       │   ├── MessageCenterMessageError.swift
│   │   │       │   ├── MessageCenterMessageView.swift
│   │   │       │   ├── MessageCenterMessageViewModel.swift
│   │   │       │   ├── MessageCenterMessageViewWithNavigation.swift
│   │   │       │   ├── MessageCenterThomasView.swift
│   │   │       │   └── MessageCenterWebView.swift
│   │   │       └── Shared/
│   │   │           └── MessageCenterBackButton.swift
│   │   └── Tests/
│   │       ├── MessageCenterAPIClientTest.swift
│   │       ├── MessageCenterListTests.swift
│   │       ├── MessageCenterMessageTest.swift
│   │       ├── MessageCenterStoreTest.swift
│   │       ├── MessageCenterThemeLoaderTest.swift
│   │       └── MessageViewAnalyticsTest.swift
│   ├── AirshipObjectiveC/
│   │   └── Source/
│   │       ├── Analytics/
│   │       │   ├── Events/
│   │       │   │   ├── Templates/
│   │       │   │   │   ├── UAAccountEventTemplate.swift
│   │       │   │   │   ├── UAMediaEventTemplate.swift
│   │       │   │   │   ├── UARetailEventTemplate.swift
│   │       │   │   │   └── UASearchEventTemplate.swift
│   │       │   │   └── UACustomEvent.swift
│   │       │   ├── UAAnalytics.swift
│   │       │   └── UAAssociatedIdentifiers.swift
│   │       ├── Automation/
│   │       │   ├── UAInAppAutomation.swift
│   │       │   └── UAInAppMessaging.swift
│   │       ├── Channel/
│   │       │   ├── UAAttributesEditor.swift
│   │       │   ├── UAChannel.swift
│   │       │   ├── UATagEditor.swift
│   │       │   └── UATagGroupsEditor.swift
│   │       ├── Contact/
│   │       │   └── UAContact.swift
│   │       ├── Embedded/
│   │       │   └── UAEmbeddedViewController.swift
│   │       ├── MessageCenter/
│   │       │   ├── UAMessageCenter.swift
│   │       │   ├── UAMessageCenterList.swift
│   │       │   ├── UAMessageCenterMessage.swift
│   │       │   ├── UAMessageCenterNativeBridge.swift
│   │       │   ├── UAMessageCenterTheme.swift
│   │       │   ├── UAMessageCenterUser.swift
│   │       │   └── UAMessageCenterViewController.swift
│   │       ├── PreferenceCenter/
│   │       │   ├── UAPreferenceCenter.swift
│   │       │   └── UAPreferenceCenterViewController.swift
│   │       ├── PrivacyManager/
│   │       │   └── UAPrivacyManager.swift
│   │       ├── Push/
│   │       │   ├── UAAuthorizedNotificationSettings.swift
│   │       │   ├── UANotificationCategories.swift
│   │       │   ├── UAPush.swift
│   │       │   ├── UAPushNotificationDelegate.swift
│   │       │   ├── UAPushNotificationStatus.swift
│   │       │   └── UARegistrationDelegate.swift
│   │       ├── Subscription Lists/
│   │       │   ├── UAScopedSubscriptionListEditor.swift
│   │       │   └── UASubscriptionListEditor.swift
│   │       ├── UAAppIntegration.swift
│   │       ├── UAConfig.swift
│   │       ├── UADeepLinkDelegate.swift
│   │       ├── UAFeature.swift
│   │       ├── UAPermission.swift
│   │       ├── UAPermissionsManager.swift
│   │       └── UAirship.swift
│   └── AirshipPreferenceCenter/
│       ├── Info.plist
│       ├── Source/
│       │   ├── AirshipPreferenceCenterResources.swift
│       │   ├── PreferenceCenter.swift
│       │   ├── PreferenceCenterComponent.swift
│       │   ├── PreferenceCenterSDKModule.swift
│       │   ├── data/
│       │   │   ├── PreferenceCenterConfig+ContactManagement.swift
│       │   │   ├── PreferenceCenterConfig.swift
│       │   │   ├── PreferenceCenterDecoder.swift
│       │   │   └── PreferenceCenterResponse.swift
│       │   ├── theme/
│       │   │   ├── PreferenceCenterTheme.swift
│       │   │   └── PreferenceCenterThemeLoader.swift
│       │   └── view/
│       │       ├── ChannelSubscriptionView.swift
│       │       ├── CommonSectionView.swift
│       │       ├── ConditionsMonitor.swift
│       │       ├── ConditionsViewModifier.swift
│       │       ├── Contact management/
│       │       │   ├── AddChannelPromptView.swift
│       │       │   ├── AddChannelPromptViewModel.swift
│       │       │   ├── ChannelListView.swift
│       │       │   ├── ChannelListViewCell.swift
│       │       │   ├── Component Views/
│       │       │   │   ├── BackgroundShape.swift
│       │       │   │   ├── ChannelTextField.swift
│       │       │   │   ├── EmptySectionLabel.swift
│       │       │   │   ├── ErrorLabel.swift
│       │       │   │   └── PreferenceCloseButton.swift
│       │       │   ├── ContactManagementView.swift
│       │       │   └── FooterView.swift
│       │       ├── ContactSubscriptionGroupView.swift
│       │       ├── ContactSubscriptionView.swift
│       │       ├── LabeledSectionBreakView.swift
│       │       ├── PreferenceCenterAlertView.swift
│       │       ├── PreferenceCenterContent.swift
│       │       ├── PreferenceCenterContentLoader.swift
│       │       ├── PreferenceCenterContentStyle.swift
│       │       ├── PreferenceCenterState.swift
│       │       ├── PreferenceCenterUtils.swift
│       │       ├── PreferenceCenterView.swift
│       │       ├── PreferenceCenterViewControllerFactory.swift
│       │       └── PreferenceCenterViewExtensions.swift
│       └── Tests/
│           ├── Info.plist
│           ├── PreferenceCenterTest.swift
│           ├── data/
│           │   └── PreferenceCenterConfigTest.swift
│           ├── test data/
│           │   ├── TestLegacyTheme.plist
│           │   ├── TestTheme.plist
│           │   ├── TestThemeEmpty.plist
│           │   └── TestThemeInvalid.plist
│           ├── theme/
│           │   └── PreferenceThemeLoaderTest.swift
│           └── view/
│               └── PreferenceCenterStateTest.swift
├── Airship.podspec
├── Airship.xcworkspace/
│   ├── contents.xcworkspacedata
│   └── xcshareddata/
│       ├── IDEWorkspaceChecks.plist
│       ├── WorkspaceSettings.xcsettings
│       └── swiftpm/
│           └── Package.resolved
├── AirshipExtensions/
│   ├── AirshipExtensions.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── xcshareddata/
│   │       └── xcschemes/
│   │           └── AirshipNotificationServiceExtension.xcscheme
│   └── AirshipNotificationServiceExtension/
│       ├── Info.plist
│       ├── Source/
│       │   ├── AirshipExtensionConfig.swift
│       │   ├── AirshipExtensionLogger.swift
│       │   ├── AirshipNotificationMutationProvider.swift
│       │   ├── ChallengeResolver.swift
│       │   ├── MediaAttachmentPayload.swift
│       │   └── UANotificationServiceExtension.swift
│       └── Tests/
│           ├── Info.plist
│           ├── MediaAttachmentPayloadTest.swift
│           └── UANotificationServiceExtensionTests.swift
├── AirshipServiceExtension.podspec
├── CHANGELOG.md
├── DevApp/
│   ├── AirshipConfig.plist.sample
│   ├── Dev App/
│   │   ├── AirshipConfig.plist.sample
│   │   ├── AppRouter.swift
│   │   ├── Assets.xcassets/
│   │   │   ├── AccentColor.colorset/
│   │   │   │   └── Contents.json
│   │   │   ├── AppIcon.appiconset/
│   │   │   │   └── Contents.json
│   │   │   ├── Contents.json
│   │   │   └── HomeHeroImage.imageset/
│   │   │       └── Contents.json
│   │   ├── DevApp.entitlements
│   │   ├── MainApp.swift
│   │   ├── Setup/
│   │   │   ├── AirshipInitializer.swift
│   │   │   ├── DeepLinkHandler.swift
│   │   │   ├── LiveActivityHandler.swift
│   │   │   └── PushNotificationHandler.swift
│   │   ├── Thomas/
│   │   │   ├── CustomView/
│   │   │   │   └── Examples/
│   │   │   │       ├── AdView.swift
│   │   │   │       ├── BiometricLoginView.swift
│   │   │   │       ├── CameraView.swift
│   │   │   │       ├── MapRouteView.swift
│   │   │   │       └── Weather/
│   │   │   │           ├── WeatherView.swift
│   │   │   │           └── WeatherViewModel.swift
│   │   │   ├── Embedded Playground View/
│   │   │   │   ├── EmbeddedPlaygroundMenuView.swift
│   │   │   │   ├── EmbeddedPlaygroundPicker.swift
│   │   │   │   ├── EmbeddedPlaygroundView.swift
│   │   │   │   ├── KeyView.swift
│   │   │   │   └── PlaceholderToggleView.swift
│   │   │   ├── JurassicPark.otf
│   │   │   ├── Layouts.swift
│   │   │   ├── LayoutsList.swift
│   │   │   ├── Resources/
│   │   │   │   ├── Messages/
│   │   │   │   │   ├── Banner/
│   │   │   │   │   │   ├── media-left-jurassic-park-bottom.json
│   │   │   │   │   │   ├── media-left.json
│   │   │   │   │   │   ├── media-right-jurassic-park-bottom.json
│   │   │   │   │   │   ├── media-right-jurassic-park-text-alignment-1.json
│   │   │   │   │   │   ├── media-right-jurassic-park-text-alignment-2.json
│   │   │   │   │   │   ├── media-right-jurassic-park-top.json
│   │   │   │   │   │   ├── media-right.json
│   │   │   │   │   │   └── small-banner.json
│   │   │   │   │   ├── Fullscreen/
│   │   │   │   │   │   ├── header-body-media-joined.json
│   │   │   │   │   │   ├── header-body-separate.json
│   │   │   │   │   │   └── media-header-body-stacked.json
│   │   │   │   │   ├── HTML/
│   │   │   │   │   │   ├── fullscreen-airship.json
│   │   │   │   │   │   ├── sized-airship.json
│   │   │   │   │   │   ├── sized-too-tall-airship.json
│   │   │   │   │   │   └── sized-too-wide-airship.json
│   │   │   │   │   └── Modal/
│   │   │   │   │       ├── a11y-test.json
│   │   │   │   │       ├── accessibility-modal.json
│   │   │   │   │       ├── header-body-media-joined.json
│   │   │   │   │       ├── header-body-media-stacked.json
│   │   │   │   │       ├── header-media-body-joined.json
│   │   │   │   │       ├── header-media-body-stacked.json
│   │   │   │   │       ├── media-header-body-joined.json
│   │   │   │   │       ├── media-header-body-separate-tall-image.json
│   │   │   │   │       ├── media-header-body-separate-wide-image.json
│   │   │   │   │       ├── media-header-body-separate.json
│   │   │   │   │       ├── media-header-body-stacked.json
│   │   │   │   │       ├── swipe-gesture-test.json
│   │   │   │   │       └── youtube-video-modal.json
│   │   │   │   ├── Scenes/
│   │   │   │   │   ├── Banner/
│   │   │   │   │   │   ├── banner-bottom.yml
│   │   │   │   │   │   ├── banner-safe-area-bottom.yml
│   │   │   │   │   │   ├── banner-safe-area-top.yml
│   │   │   │   │   │   ├── banner-top-old.yml
│   │   │   │   │   │   └── banner-top.yml
│   │   │   │   │   ├── Embedded/
│   │   │   │   │   │   ├── 100pct x 100pct.yml
│   │   │   │   │   │   ├── 100pct x auto.yml
│   │   │   │   │   │   ├── 50pct x 50pct.yml
│   │   │   │   │   │   ├── 75pct x 200pt.yml
│   │   │   │   │   │   ├── auto x 200.yml
│   │   │   │   │   │   ├── gif_and_vid.yml
│   │   │   │   │   │   ├── home_image.yml
│   │   │   │   │   │   ├── home_rating.yml
│   │   │   │   │   │   └── home_special_offer.yml
│   │   │   │   │   └── Modal/
│   │   │   │   │       ├── 1-pager-different-path.yml
│   │   │   │   │       ├── 1-pager-pranching-test.yml
│   │   │   │   │       ├── 1qa.yml
│   │   │   │   │       ├── MOBILE_4621.yml
│   │   │   │   │       ├── _a11y_focus.json
│   │   │   │   │       ├── _vimeo.ml
│   │   │   │   │       ├── a-gif-and-youtube.yml
│   │   │   │   │       ├── a-landscape-video.yml
│   │   │   │   │       ├── aaa-modal-bg-image.yaml
│   │   │   │   │       ├── aaa-modal.json
│   │   │   │   │       ├── accessibility-action-story.yml
│   │   │   │   │       ├── accessibility-actions-modal-pager-fullsize.yml
│   │   │   │   │       ├── accessibility-test-modal.json
│   │   │   │   │       ├── airship-quiz-1.yml
│   │   │   │   │       ├── async_view.yaml
│   │   │   │   │       ├── auto_height_modal.yml
│   │   │   │   │       ├── button_layout.yml
│   │   │   │   │       ├── container.yml
│   │   │   │   │       ├── containerception.yml
│   │   │   │   │       ├── custom-fonts.yml
│   │   │   │   │       ├── form-input-branching-child-form.yaml
│   │   │   │   │       ├── form-input-branching-on-demand.yml
│   │   │   │   │       ├── form_immediate_phone.yaml
│   │   │   │   │       ├── form_immediate_validation_email.yaml
│   │   │   │   │       ├── form_on_demand_validation_email.yaml
│   │   │   │   │       ├── form_single_page_on_demand.yml
│   │   │   │   │       ├── forms.yml
│   │   │   │   │       ├── image-pager-test.yml
│   │   │   │   │       ├── image_cropping.yml
│   │   │   │   │       ├── image_resizing.yml
│   │   │   │   │       ├── image_scaling.yml
│   │   │   │   │       ├── is-accessibility-alert-form.yml
│   │   │   │   │       ├── linear_layout_scroll.yml
│   │   │   │   │       ├── markdown.yml
│   │   │   │   │       ├── martin.json
│   │   │   │   │       ├── mobile-4599.yml
│   │   │   │   │       ├── mobile-5409-2.json
│   │   │   │   │       ├── mobile-5409.json
│   │   │   │   │       ├── mobile-5553-shape-corners.yml
│   │   │   │   │       ├── modal-buttons.yml
│   │   │   │   │       ├── modal-checkboxes-radios.yml
│   │   │   │   │       ├── modal-constrained.yml
│   │   │   │   │       ├── modal-custom-biometric-login.yml
│   │   │   │   │       ├── modal-custom-interstitial-banner-ad.yaml
│   │   │   │   │       ├── modal-custom-weather-and-map.yaml
│   │   │   │   │       ├── modal-day-night-colors.yml
│   │   │   │   │       ├── modal-disable-back-button.yml
│   │   │   │   │       ├── modal-labels.yml
│   │   │   │   │       ├── modal-linear-layout-horizontal.yml
│   │   │   │   │       ├── modal-linear-layout-vertical.yml
│   │   │   │   │       ├── modal-linear-layout-webview-emoji.yml
│   │   │   │   │       ├── modal-linear-layout.yml
│   │   │   │   │       ├── modal-media-header-body-stacked-buttons.yml
│   │   │   │   │       ├── modal-pager-fullsize.yml
│   │   │   │   │       ├── modal-pager-with-title-and-button.yml
│   │   │   │   │       ├── modal-placement-selectors.yml
│   │   │   │   │       ├── modal-responsive.yml
│   │   │   │   │       ├── modal-score.yml
│   │   │   │   │       ├── modal-transparancy.yml
│   │   │   │   │       ├── modal-video-cropping.yml
│   │   │   │   │       ├── modal-webview-full-size.yml
│   │   │   │   │       ├── modal-webview-with-buttons.yml
│   │   │   │   │       ├── model-custom-camera-view.yml
│   │   │   │   │       ├── multi-video-players.yml
│   │   │   │   │       ├── nps.yml
│   │   │   │   │       ├── pager-behaviors.yml
│   │   │   │   │       ├── portrait-video.yml
│   │   │   │   │       ├── qa-advseg-2998.yml
│   │   │   │   │       ├── qa-advseg-2999.yml
│   │   │   │   │       ├── safe-areas-linear-layout.yml
│   │   │   │   │       ├── safe-areas-pager.yml
│   │   │   │   │       ├── scene-scroll.yml
│   │   │   │   │       ├── story-one-screen.yml
│   │   │   │   │       ├── story-video-and-gif.yml
│   │   │   │   │       ├── story.yml
│   │   │   │   │       ├── tap-handler-visibility.yml
│   │   │   │   │       ├── textInput
│   │   │   │   │       ├── toggle-branching-simple-quiz.yml
│   │   │   │   │       ├── toggle-layout-types.yml
│   │   │   │   │       ├── toggle-rating-numbers.yaml
│   │   │   │   │       ├── toggle-rating-stars-small.yaml
│   │   │   │   │       ├── toggleLayout.yml
│   │   │   │   │       ├── tour-example.yml
│   │   │   │   │       ├── tour-no-safe-areas.yml
│   │   │   │   │       ├── tour-safe-areas.yml
│   │   │   │   │       ├── unsafe_areas.yml
│   │   │   │   │       ├── video-controls.yml
│   │   │   │   │       ├── video-qa.yaml
│   │   │   │   │       ├── video-story-multipage.yml
│   │   │   │   │       ├── video-story.yml
│   │   │   │   │       ├── video-test.yml
│   │   │   │   │       ├── video-youtube.yml
│   │   │   │   │       ├── video_cropping.yml
│   │   │   │   │       ├── view_overrides.yml
│   │   │   │   │       ├── wide-image-pager-test.yml
│   │   │   │   │       ├── wrapping-modal-score.yml
│   │   │   │   │       ├── wrapping-multi-page.yml
│   │   │   │   │       ├── wrapping-nps-test-2.yml
│   │   │   │   │       ├── wrapping-nps-test-3.yml
│   │   │   │   │       ├── wrapping-nps-test-4.yml
│   │   │   │   │       ├── wrapping-nps-test-5.yml
│   │   │   │   │       └── wrapping-nps-test.yml
│   │   │   │   └── SharedAssets.xcassets/
│   │   │   │       ├── 23GrandeAccentColor.colorset/
│   │   │   │       │   └── Contents.json
│   │   │   │       ├── 23GrandeAllFashion.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       ├── 23GrandeAppIcon.appiconset/
│   │   │   │       │   └── Contents.json
│   │   │   │       ├── 23GrandeArrival1.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       ├── 23GrandeArrival2.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       ├── 23GrandeHomeBanner.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   ├── ThomasLayoutListView.swift
│   │   │   └── ThomasLayoutViewModel.swift
│   │   ├── Toast.swift
│   │   └── View/
│   │       ├── AppView.swift
│   │       ├── HomeView.swift
│   │       ├── NamedUserView.swift
│   │       └── ToastView.swift
│   ├── Dev-App-Info.plist
│   ├── DevApp App Clip/
│   │   ├── Airship_Sample_App_Clip.entitlements
│   │   └── Info.plist
│   ├── DevApp Service Extension/
│   │   ├── Info.plist
│   │   └── NotificationService.swift
│   ├── DevApp.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           ├── IDEWorkspaceChecks.plist
│   │           └── swiftpm/
│   │               └── Package.resolved
│   ├── LiveActivity/
│   │   ├── Assets.xcassets/
│   │   │   ├── 23Grande.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── AccentColor.colorset/
│   │   │   │   └── Contents.json
│   │   │   ├── AppIcon.appiconset/
│   │   │   │   └── Contents.json
│   │   │   ├── Contents.json
│   │   │   └── WidgetBackground.colorset/
│   │   │       └── Contents.json
│   │   ├── DeliveryActivityWidget.swift
│   │   ├── DeliveryAttributes.swift
│   │   ├── Info.plist
│   │   ├── LiveActivity.intentdefinition
│   │   └── Widgets.swift
│   └── Sample Plist/
│       └── AirshipConfig.plist.sample
├── DevApp watchOS/
│   ├── DevApp watchOS/
│   │   ├── AppDelegate.swift
│   │   ├── Assets.xcassets/
│   │   │   ├── AccentColor.colorset/
│   │   │   │   └── Contents.json
│   │   │   ├── AppIcon.appiconset/
│   │   │   │   └── Contents.json
│   │   │   └── Contents.json
│   │   ├── HomeView.swift
│   │   ├── MainApp.swift
│   │   ├── NamedUserView.swift
│   │   ├── Preview Content/
│   │   │   └── Preview Assets.xcassets/
│   │   │       ├── AccentColor.colorset/
│   │   │       │   └── Contents.json
│   │   │       ├── AppIcon.appiconset/
│   │   │       │   └── Contents.json
│   │   │       └── Contents.json
│   │   └── PushNotificationPayload.apns
│   └── DevApp watchOS.xcodeproj/
│       ├── project.pbxproj
│       └── project.xcworkspace/
│           └── contents.xcworkspacedata
├── Documentation/
│   ├── .jazzy.json
│   ├── Migration/
│   │   ├── README.md
│   │   ├── migration-guide-16-17.md
│   │   ├── migration-guide-17-18.md
│   │   ├── migration-guide-18-19.md
│   │   └── migration-guide-19-20.md
│   ├── abstracts/
│   │   └── Guides.md
│   └── readme-for-jazzy.md
├── Gemfile
├── LICENSE
├── Makefile
├── Package.swift
├── README.md
└── scripts/
    ├── airship_version.sh
    ├── build_docCs.sh
    ├── build_sample.sh
    ├── build_sample_watchos.sh
    ├── build_xcframeworks.sh
    ├── check_size.sh
    ├── check_version.sh
    ├── check_xcbeautify.sh
    ├── gemini-review-prompt.md
    ├── get_xcode_path.sh
    ├── package.sh
    ├── package_xcframeworks.sh
    ├── pr-review.mjs
    ├── run_xcodebuild.sh
    └── update_version.sh
Download .txt
SYMBOL INDEX (4 symbols across 1 files)

FILE: scripts/pr-review.mjs
  constant MAX_DIFF_BYTES (line 6) | const MAX_DIFF_BYTES = 400_000;
  constant MODEL_ID_FROM_ENV (line 7) | const MODEL_ID_FROM_ENV = process.env.MODEL_ID;
  constant MODEL_ID (line 8) | const MODEL_ID = MODEL_ID_FROM_ENV || 'gemini-pro';
  constant DEBUG (line 12) | const DEBUG = process.env.DEBUG === 'true';
Copy disabled (too large) Download .json
Condensed preview — 1418 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (11,745K chars).
[
  {
    "path": ".github/CODEOWNERS",
    "chars": 86,
    "preview": "\n# https://help.github.com/en/articles/about-code-owners\n*       @urbanairship/mobile\n"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "chars": 351,
    "preview": "## Contributing Code\n\nWe accept pull requests! If you would like to submit a pull request, please fill out and submit ou"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "chars": 1183,
    "preview": "\n\n❗For how-to inquiries involving Airship functionality or use cases, please\ncontact (support)[https://support.airship.c"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 880,
    "preview": "\n<!--\n\nPlease fill out this template when submitting an pull request.\n\nAll lines beginning with an ℹ symbol indicate inf"
  },
  {
    "path": ".github/workflows/check-cert.yml",
    "chars": 919,
    "preview": "name: Check Certificate Expiration\n\non:\n  workflow_dispatch:\n\njobs:\n  check-cert:\n    runs-on: macos-latest\n    steps:\n "
  },
  {
    "path": ".github/workflows/check_framework_size.yml",
    "chars": 879,
    "preview": "name: Check Framework Size\n\non:\n  workflow_dispatch:\n\nenv:\n  BUNDLE_PATH: vendor/bundle\n\njobs:\n \n  framework-size:\n    r"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 3585,
    "preview": "name: CI Pull Request\n\non: [pull_request]\n\nenv:\n  BUNDLE_PATH: vendor/bundle\n\nconcurrency:\n  group: ${{ github.ref }}\n  "
  },
  {
    "path": ".github/workflows/deploy_docC.yml",
    "chars": 1940,
    "preview": "name: Deploy docC to Pages\n\non:\n  push:\n    tags:\n      - \"[0-9]+.[0-9]+.[0-9]+**\"\n      \n  # Allows you to run this wor"
  },
  {
    "path": ".github/workflows/merge.yml",
    "chars": 875,
    "preview": "name: CI Merge\n\non:\n    push:\n      branches:\n        - main\n        - next\n\nenv:\n  BUNDLE_PATH: vendor/bundle\n\nconcurre"
  },
  {
    "path": ".github/workflows/pr-review.yml",
    "chars": 1014,
    "preview": "name: Gemini PR Review\n\non:\n  pull_request:\n    types: [opened, edited, synchronize]\n\nconcurrency: pr-${{ github.event.p"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 7984,
    "preview": "name: Release\n\non:\n  push:\n    tags:\n      - \"[0-9]+.[0-9]+.[0-9]+**\"\nenv:\n  BUNDLE_PATH: vendor/bundle\n\njobs:\n  check-v"
  },
  {
    "path": ".gitignore",
    "chars": 456,
    "preview": ".DS_Store\n*.orig\n.hg*\n*.mode1v3\n*.pbxuser\n*.perspective*\ndistribution_binaries/\ndistribution_package/\ndocs/html/\ndocs/do"
  },
  {
    "path": ".gitmodules",
    "chars": 0,
    "preview": ""
  },
  {
    "path": ".ruby-version",
    "chars": 5,
    "preview": "3.2.0"
  },
  {
    "path": ".swift-format.json",
    "chars": 1981,
    "preview": "{\n  \"fileScopedDeclarationPrivacy\" : {\n    \"accessLevel\" : \"private\"\n  },\n  \"indentation\" : {\n    \"spaces\" : 4\n  },\n  \"i"
  },
  {
    "path": ".swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata",
    "chars": 135,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef"
  },
  {
    "path": ".whitesource",
    "chars": 293,
    "preview": "{\n  \"scanSettings\": {\n    \"configMode\": \"AUTO\",\n    \"configExternalURL\": \"\",\n    \"projectToken\": \"\",\n    \"baseBranches\":"
  },
  {
    "path": "Airship/Airship.xcodeproj/project.pbxproj",
    "chars": 662671,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 70;\n\tobjects = {\n\n/* Begin PBXAggregateTarget sec"
  },
  {
    "path": "Airship/Airship.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 135,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef"
  },
  {
    "path": "Airship/Airship.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Airship/Airship.xcodeproj/xcshareddata/xcschemes/AirshipAutomation.xcscheme",
    "chars": 2871,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1600\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "Airship/Airship.xcodeproj/xcshareddata/xcschemes/AirshipBasement.xcscheme",
    "chars": 2413,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1600\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "Airship/Airship.xcodeproj/xcshareddata/xcschemes/AirshipCore.xcscheme",
    "chars": 2827,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1600\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "Airship/Airship.xcodeproj/xcshareddata/xcschemes/AirshipDebug.xcscheme",
    "chars": 2401,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1600\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "Airship/Airship.xcodeproj/xcshareddata/xcschemes/AirshipFeatureFlags.xcscheme",
    "chars": 2883,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1600\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "Airship/Airship.xcodeproj/xcshareddata/xcschemes/AirshipMessageCenter.xcscheme",
    "chars": 2889,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1600\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "Airship/Airship.xcodeproj/xcshareddata/xcschemes/AirshipObjectiveC.xcscheme",
    "chars": 2462,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1600\"\n   version = \"1.7\">\n   <BuildAction\n      "
  },
  {
    "path": "Airship/Airship.xcodeproj/xcshareddata/xcschemes/AirshipPreferenceCenter.xcscheme",
    "chars": 3522,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1600\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "Airship/AirshipAutomation/Info.plist",
    "chars": 752,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Airship/AirshipAutomation/Resources/AirshipAutomation.xcdatamodeld/.xccurrentversion",
    "chars": 272,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Airship/AirshipAutomation/Resources/AirshipAutomation.xcdatamodeld/AirshipAutomation 2.xcdatamodel/contents",
    "chars": 1524,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<model type=\"com.apple.IDECoreDataModeler.DataModel\" documentVer"
  },
  {
    "path": "Airship/AirshipAutomation/Resources/AirshipAutomation.xcdatamodeld/AirshipAutomation 3.xcdatamodel/contents",
    "chars": 1675,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<model type=\"com.apple.IDECoreDataModeler.DataModel\" documentVer"
  },
  {
    "path": "Airship/AirshipAutomation/Resources/AirshipAutomation.xcdatamodeld/AirshipAutomation.xcdatamodel/contents",
    "chars": 1361,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<model type=\"com.apple.IDECoreDataModeler.DataModel\" documentVer"
  },
  {
    "path": "Airship/AirshipAutomation/Resources/UAAutomation.xcdatamodeld/.xccurrentversion",
    "chars": 268,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Airship/AirshipAutomation/Resources/UAAutomation.xcdatamodeld/UAAutomation 10.xcdatamodel/contents",
    "chars": 5506,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<model type=\"com.apple.IDECoreDataModeler.DataModel\" documentVer"
  },
  {
    "path": "Airship/AirshipAutomation/Resources/UAAutomation.xcdatamodeld/UAAutomation 11.xcdatamodel/contents",
    "chars": 5811,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<model type=\"com.apple.IDECoreDataModeler.DataModel\" documentVer"
  },
  {
    "path": "Airship/AirshipAutomation/Resources/UAAutomation.xcdatamodeld/UAAutomation 12.xcdatamodel/contents",
    "chars": 5911,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<model type=\"com.apple.IDECoreDataModeler.DataModel\" documentVer"
  },
  {
    "path": "Airship/AirshipAutomation/Resources/UAAutomation.xcdatamodeld/UAAutomation 13.xcdatamodel/contents",
    "chars": 5763,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<model type=\"com.apple.IDECoreDataModeler.DataModel\" documentVer"
  },
  {
    "path": "Airship/AirshipAutomation/Resources/UAAutomation.xcdatamodeld/UAAutomation 2.xcdatamodel/contents",
    "chars": 4381,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<model type=\"com.apple.IDECoreDataModeler.DataModel\" documentVer"
  },
  {
    "path": "Airship/AirshipAutomation/Resources/UAAutomation.xcdatamodeld/UAAutomation 3.xcdatamodel/contents",
    "chars": 5003,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<model type=\"com.apple.IDECoreDataModeler.DataModel\" documentVer"
  },
  {
    "path": "Airship/AirshipAutomation/Resources/UAAutomation.xcdatamodeld/UAAutomation 4.xcdatamodel/contents",
    "chars": 5151,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<model type=\"com.apple.IDECoreDataModeler.DataModel\" documentVer"
  },
  {
    "path": "Airship/AirshipAutomation/Resources/UAAutomation.xcdatamodeld/UAAutomation 5.xcdatamodel/contents",
    "chars": 4788,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<model type=\"com.apple.IDECoreDataModeler.DataModel\" documentVer"
  },
  {
    "path": "Airship/AirshipAutomation/Resources/UAAutomation.xcdatamodeld/UAAutomation 6.xcdatamodel/contents",
    "chars": 5317,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<model type=\"com.apple.IDECoreDataModeler.DataModel\" documentVer"
  },
  {
    "path": "Airship/AirshipAutomation/Resources/UAAutomation.xcdatamodeld/UAAutomation 7.xcdatamodel/contents",
    "chars": 5456,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<model type=\"com.apple.IDECoreDataModeler.DataModel\" documentVer"
  },
  {
    "path": "Airship/AirshipAutomation/Resources/UAAutomation.xcdatamodeld/UAAutomation 8.xcdatamodel/contents",
    "chars": 5599,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<model type=\"com.apple.IDECoreDataModeler.DataModel\" documentVer"
  },
  {
    "path": "Airship/AirshipAutomation/Resources/UAAutomation.xcdatamodeld/UAAutomation 9.xcdatamodel/contents",
    "chars": 5743,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<model type=\"com.apple.IDECoreDataModeler.DataModel\" documentVer"
  },
  {
    "path": "Airship/AirshipAutomation/Resources/UAAutomation.xcdatamodeld/UAAutomation.xcdatamodel/contents",
    "chars": 2592,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<model type=\"com.apple.IDECoreDataModeler.DataModel\" documentVer"
  },
  {
    "path": "Airship/AirshipAutomation/Resources/UAFrequencyLimits.xcdatamodeld/UAFrequencyLimits.xcdatamodel/contents",
    "chars": 1534,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<model type=\"com.apple.IDECoreDataModeler.DataModel\" documentVer"
  },
  {
    "path": "Airship/AirshipAutomation/Source/ActionAutomation/ActionAutomationExecutor.swift",
    "chars": 1137,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nstruc"
  },
  {
    "path": "Airship/AirshipAutomation/Source/ActionAutomation/ActionAutomationPreparer.swift",
    "chars": 472,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nstruc"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Actions/CancelSchedulesAction.swift",
    "chars": 4153,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\npublic import AirshipCore\n#endif"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Actions/LandingPageAction.swift",
    "chars": 5953,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\npublic import AirshipCore\n#endif"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Actions/ScheduleAction.swift",
    "chars": 1626,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\npublic import AirshipCore\n#endif"
  },
  {
    "path": "Airship/AirshipAutomation/Source/AirshipAutomationResources.swift",
    "chars": 900,
    "preview": "/* Copyright Airship and Contributors */\n\npublic import Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif"
  },
  {
    "path": "Airship/AirshipAutomation/Source/AudienceCheck/AdditionalAudienceCheckerApiClient.swift",
    "chars": 3292,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nprotoc"
  },
  {
    "path": "Airship/AirshipAutomation/Source/AudienceCheck/AdditionalAudienceCheckerResolver.swift",
    "chars": 4665,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nprotoc"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/ApplicationMetrics.swift",
    "chars": 3215,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nproto"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/AutomationAudience.swift",
    "chars": 2132,
    "preview": "import Foundation\n\n#if canImport(AirshipCore)\npublic import AirshipCore\n#endif\n\n/// Automation device audience\npublic st"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/AutomationCompoundAudience.swift",
    "chars": 832,
    "preview": "import Foundation\n\n#if canImport(AirshipCore)\npublic import AirshipCore\n#endif\n\n/// Automation compound audience\npublic "
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/AutomationDelay.swift",
    "chars": 1210,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n/// A"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/AutomationSchedule.swift",
    "chars": 15277,
    "preview": "/* Copyright Airship and Contributors */\n\npublic import Foundation\n\n#if canImport(AirshipCore)\npublic import AirshipCore"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/AutomationTrigger.swift",
    "chars": 9173,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\npublic import AirshipCore\n#endif"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/DeferredAutomationData.swift",
    "chars": 557,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n/// N"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/Engine/AutomationDelayProcessor.swift",
    "chars": 5612,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nproto"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/Engine/AutomationEngine.swift",
    "chars": 29218,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nactor"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/Engine/AutomationEventFeed.swift",
    "chars": 6910,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nproto"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/Engine/AutomationEventsHistory.swift",
    "chars": 1223,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nproto"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/Engine/AutomationExecutor.swift",
    "chars": 4153,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nproto"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/Engine/AutomationPreparer.swift",
    "chars": 15016,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nproto"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/Engine/AutomationScheduleData.swift",
    "chars": 6392,
    "preview": "/* Copyright Airship and Contributors */\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nimport Foundation\n\nstruc"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/Engine/AutomationScheduleState.swift",
    "chars": 297,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\nenum AutomationScheduleState: String, Equatable, Sendable {"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/Engine/AutomationStore.swift",
    "chars": 19967,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\nimport CoreData\n\n#if canImport(AirshipCore)\nimport AirshipCo"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/Engine/ExecutionWindowProcessor.swift",
    "chars": 2551,
    "preview": "/* Copyright Airship and Contributors */\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nimport Foundation\n\n\nprot"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/Engine/LegacyAutomationStore.swift",
    "chars": 15303,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\nimport CoreData\n\n#if canImport(AirshipCore)\nimport AirshipCo"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/Engine/PreparedSchedule.swift",
    "chars": 3222,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n/// A"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/Engine/ScheduleExecuteResult.swift",
    "chars": 179,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n/// Schedule execute result\nenum ScheduleExecuteResult: Sen"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/Engine/SchedulePrepareResult.swift",
    "chars": 496,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n/// Schedule prepare result\nenum SchedulePrepareResult: Sen"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/Engine/ScheduleReadyResult.swift",
    "chars": 193,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n/// Schedule ready result\nenum ScheduleReadyResult: Sendabl"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/Engine/TriggerProcessor/AutomationTriggerProcessor.swift",
    "chars": 11966,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nproto"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/Engine/TriggerProcessor/PreparedTrigger.swift",
    "chars": 13129,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n// Th"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/Engine/TriggerProcessor/TriggerData.swift",
    "chars": 755,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\nstruct TriggerData: Sendable, Equatable, Codable {\n    var "
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/Engine/TriggeringInfo.swift",
    "chars": 230,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nstruc"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Automation/ExecutionWindow.swift",
    "chars": 24096,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n/// D"
  },
  {
    "path": "Airship/AirshipAutomation/Source/AutomationSDKModule.swift",
    "chars": 6295,
    "preview": "/* Copyright Airship and Contributors */\n\n#if canImport(AirshipCore)\npublic import AirshipCore\n#endif\n\npublic import Fou"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppAutomation.swift",
    "chars": 10013,
    "preview": "/* Copyright Airship and Contributors */\n\npublic import Foundation\nimport UserNotifications\n\n#if canImport(UIKit)\nimport"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppAutomationComponent.swift",
    "chars": 1008,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n@preconcurrency\nimport UserNotifications\n\n#if canImport(UIKi"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppAutomationUpdateStatus.swift",
    "chars": 360,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n/// In-app automation remote data status.\npublic enum InApp"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Analytics/InAppDisplayImpressionRuleProvider.swift",
    "chars": 792,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nenum "
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Analytics/InAppMessageAnalytics.swift",
    "chars": 8249,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nstruc"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Analytics/InAppMessageAnalyticsFactory.swift",
    "chars": 1674,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nproto"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Assets/AirshipCachedAssets.swift",
    "chars": 2337,
    "preview": "/* Copyright Airship and Contributors */\n\npublic import Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Assets/AssetCacheManager.swift",
    "chars": 6287,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n/// W"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Assets/DefaultAssetDownloader.swift",
    "chars": 2432,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n/// D"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Assets/DefaultAssetFileManager.swift",
    "chars": 4039,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nstruct"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Display Adapter/AirshipLayoutDisplayAdapter.swift",
    "chars": 13188,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\nimport SwiftUI\n\n#if canImport(AirshipCore)\nimport AirshipCor"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Display Adapter/CustomDisplayAdapter.swift",
    "chars": 1467,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(UIKit)\npublic import UIKit\n#endif\n\n#if canImp"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Display Adapter/CustomDisplayAdapterWrapper.swift",
    "chars": 2127,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n/// W"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Display Adapter/DisplayAdapter.swift",
    "chars": 504,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n// In"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Display Adapter/DisplayAdapterFactory.swift",
    "chars": 2815,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n/// A"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Display Adapter/InAppMessageDisplayListener.swift",
    "chars": 2455,
    "preview": "import Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n@MainActor\nfinal class InAppMessageDisplayListe"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Display Coordinators/DefaultDisplayCoordinator.swift",
    "chars": 2501,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n/// D"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Display Coordinators/DisplayCoordinator.swift",
    "chars": 398,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n/// C"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Display Coordinators/DisplayCoordinatorManager.swift",
    "chars": 1909,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nproto"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Display Coordinators/ImmediateDisplayCoordinator.swift",
    "chars": 940,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n\n/// "
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/InAppActionRunner.swift",
    "chars": 4374,
    "preview": "#if canImport(AirshipCore)\npublic import AirshipCore\n#endif\n\nimport Foundation\n\n/// Action runner for in-app experiences"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/InAppMessage.swift",
    "chars": 11200,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\nimport SwiftUI\n\n#if canImport(AirshipCore)\npublic import Air"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/InAppMessageAutomationExecutor.swift",
    "chars": 7725,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nfinal"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/InAppMessageAutomationPreparer.swift",
    "chars": 4579,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n/// A"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/InAppMessageColor.swift",
    "chars": 1025,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\npublic import SwiftUI\n\n#if canImport(AirshipCore)\nimport Air"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/InAppMessageDisplayContent.swift",
    "chars": 14824,
    "preview": "/* Copyright Airship and Contributors */\n\npublic import Foundation\n\n#if canImport(AirshipCore)\npublic import AirshipCore"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/InAppMessageDisplayDelegate.swift",
    "chars": 1242,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n/// Message display delegate\npublic protocol InAppMessageDi"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/InAppMessageEnvironment.swift",
    "chars": 3178,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Combine\nimport Foundation\nimport SwiftUI\n\n#if canImport(AirshipCore)\nim"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/InAppMessageSceneDelegate.swift",
    "chars": 474,
    "preview": "/* Copyright Airship and Contributors */\n\n#if !os(macOS)\n\nimport Foundation\npublic import UIKit\n\n/// Scene delegate\npubl"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/InAppMessageSceneManager.swift",
    "chars": 1152,
    "preview": "/* Copyright Airship and Contributors */\n#if !os(macOS)\n\nimport Foundation\nimport UIKit\n\n#if canImport(AirshipCore)\nimpo"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/InAppMessageValidation.swift",
    "chars": 2664,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nexten"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/InAppMessageViewDelegate.swift",
    "chars": 849,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n\n/// Delegate for receiving callback pertaining to in-app m"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/InAppMessaging.swift",
    "chars": 3765,
    "preview": "/* Copyright Airship and Contributors */\n\npublic import Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Info/InAppMessageButtonInfo.swift",
    "chars": 2137,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\npublic import AirshipCore\n#endif"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Info/InAppMessageButtonLayoutType.swift",
    "chars": 306,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n/// Button layout type\npublic enum InAppMessageButtonLayout"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Info/InAppMessageMediaInfo.swift",
    "chars": 1145,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n/// M"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Info/InAppMessageTextInfo.swift",
    "chars": 1746,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n/// I"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Legacy/LegacyInAppAnalytics.swift",
    "chars": 2239,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n\nprot"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Legacy/LegacyInAppMessage.swift",
    "chars": 8478,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\npublic import UserNotifications\n\n#if canImport(AirshipCore)\n"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/Legacy/LegacyInAppMessaging.swift",
    "chars": 10737,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\nimport UserNotifications\n\n#if canImport(UIKit)\nimport UIKit\n"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/BeveledLoadingView.swift",
    "chars": 536,
    "preview": "/* Copyright Airship and Contributors */\n\nimport SwiftUI\n\nstruct BeveledLoadingView: View {\n    let opacity = 0.7\n\n    v"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/ButtonGroup.swift",
    "chars": 8557,
    "preview": "/* Copyright Airship and Contributors */\n\nimport SwiftUI\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nprivate "
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/CloseButton.swift",
    "chars": 1666,
    "preview": "/* Copyright Airship and Contributors */\n\nimport SwiftUI\n\nstruct CloseButton: View {\n    internal init(\n        dismissI"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/FullscreenView.swift",
    "chars": 4055,
    "preview": "/* Copyright Airship and Contributors */\n\nimport SwiftUI\nimport Combine\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/HTMLView.swift",
    "chars": 3617,
    "preview": "/* Copyright Airship and Contributors */\n\n#if !os(tvOS)\n\nimport SwiftUI\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/InAppMessageBannerView.swift",
    "chars": 11976,
    "preview": "/* Copyright Airship and Contributors */\n\nimport SwiftUI\nimport Combine\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/InAppMessageExtensions.swift",
    "chars": 426,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n/// A"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/InAppMessageHostingController.swift",
    "chars": 6390,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\nimport SwiftUI\n\n#if canImport(AirshipCore)\nimport AirshipCor"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/InAppMessageModalView.swift",
    "chars": 6181,
    "preview": "/* Copyright Airship and Contributors */\n\nimport SwiftUI\nimport Combine\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/InAppMessageNativeBridgeExtension.swift",
    "chars": 997,
    "preview": "/* Copyright Airship and Contributors */\n#if !os(tvOS)\nimport Foundation\npublic import WebKit\n\n#if canImport(AirshipCore"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/InAppMessageRootView.swift",
    "chars": 644,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\nimport SwiftUI\n\n#if canImport(AirshipCore)\nimport AirshipCor"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/InAppMessageViewUtils.swift",
    "chars": 3532,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\nimport SwiftUI\n\nextension View {\n\n    @ViewBuilder\n    func "
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/InAppMessageWebView.swift",
    "chars": 5916,
    "preview": "/* Copyright Airship and Contributors */\n\n#if !os(tvOS)\nimport Foundation\nimport SwiftUI\nimport WebKit\n#if canImport(Air"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/MediaView.swift",
    "chars": 4837,
    "preview": "/* Copyright Airship and Contributors */\n\n\nimport SwiftUI\n\n#if canImport(WebKit)\nimport WebKit\n#endif\n\n#if canImport(Air"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/TextView.swift",
    "chars": 1526,
    "preview": "/* Copyright Airship and Contributors */\n\nimport SwiftUI\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nstruct T"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/Theme/InAppMessageTheme.swift",
    "chars": 1195,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\nimport SwiftUI\n\n#if canImport(AirshipCore)\nimport AirshipCor"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/Theme/InAppMessageThemeAdditionalPadding.swift",
    "chars": 714,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\nimport SwiftUI\n\n\nextension InAppMessageTheme {\n    struct Ad"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/Theme/InAppMessageThemeBanner.swift",
    "chars": 5072,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\npublic import SwiftUI\n\n#if canImport(AirshipCore)\nimport Air"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/Theme/InAppMessageThemeButton.swift",
    "chars": 2321,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\npublic import SwiftUI\n\n#if canImport(AirshipCore)\nimport Air"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/Theme/InAppMessageThemeFullscreen.swift",
    "chars": 4961,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\npublic import SwiftUI\n\n#if canImport(AirshipCore)\nimport Air"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/Theme/InAppMessageThemeHTML.swift",
    "chars": 3427,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\npublic import SwiftUI\n\n\n#if canImport(AirshipCore)\nimport Ai"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/Theme/InAppMessageThemeManager.swift",
    "chars": 1694,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\nimport SwiftUI\n\n\n#if canImport(AirshipCore)\nimport AirshipCo"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/Theme/InAppMessageThemeMedia.swift",
    "chars": 740,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\npublic import SwiftUI\n\npublic extension InAppMessageTheme {\n"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/Theme/InAppMessageThemeModal.swift",
    "chars": 5413,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\npublic import SwiftUI\n\n#if canImport(AirshipCore)\nimport Air"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/Theme/InAppMessageThemeShadow.swift",
    "chars": 1829,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\npublic import SwiftUI\n\n/// For color utils\n#if canImport(Air"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/Theme/InAppMessageThemeText.swift",
    "chars": 1179,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\npublic import SwiftUI\n\npublic extension InAppMessageTheme {\n"
  },
  {
    "path": "Airship/AirshipAutomation/Source/InAppMessage/View/Theme/ThemeExtensions.swift",
    "chars": 338,
    "preview": "/* Copyright Airship and Contributors */\n\n\nimport Foundation\nimport SwiftUI\n\nextension View {\n    @ViewBuilder\n    func "
  },
  {
    "path": "Airship/AirshipAutomation/Source/Limits/FrequencyChecker.swift",
    "chars": 1242,
    "preview": "/* Copyright Airship and Contributors */\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n/// Protocol for checkin"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Limits/FrequencyConstraint.swift",
    "chars": 1993,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n/// Represents a constraint on occurrences within a given t"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Limits/FrequencyLimitManager.swift",
    "chars": 7417,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n/// M"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Limits/FrequencyLimitStore.swift",
    "chars": 7405,
    "preview": "/* Copyright Airship and Contributors */\n\nimport CoreData\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCo"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Limits/Occurrence.swift",
    "chars": 167,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\nstruct Occurrence: Sendable, Equatable, Hashable {\n    let "
  },
  {
    "path": "Airship/AirshipAutomation/Source/RemoteData/AutomationRemoteDataAccess.swift",
    "chars": 12207,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\nimport Combine\n\n#if canImport(AirshipCore)\nimport AirshipCor"
  },
  {
    "path": "Airship/AirshipAutomation/Source/RemoteData/AutomationRemoteDataSubscriber.swift",
    "chars": 8270,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n@preconcurrency\nimport Combine\n\n#if canImport(AirshipCore)\n"
  },
  {
    "path": "Airship/AirshipAutomation/Source/RemoteData/AutomationSourceInfoStore.swift",
    "chars": 5431,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n/// S"
  },
  {
    "path": "Airship/AirshipAutomation/Source/RemoteData/DeferredScheduleResult.swift",
    "chars": 366,
    "preview": "import Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nstruct DeferredScheduleResult: Sendable, Codabl"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Utils/ActiveTimer.swift",
    "chars": 2393,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n@MainA"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Utils/AirshipAsyncSemaphore.swift",
    "chars": 838,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\nactor AirshipAsyncSemaphore {\n    private var value: Int\n  "
  },
  {
    "path": "Airship/AirshipAutomation/Source/Utils/AutomationActionRunner.swift",
    "chars": 610,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n\n/// A"
  },
  {
    "path": "Airship/AirshipAutomation/Source/Utils/RetryingQueue.swift",
    "chars": 14971,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\n\n/// "
  },
  {
    "path": "Airship/AirshipAutomation/Source/Utils/ScheduleConditionsChangedNotifier.swift",
    "chars": 789,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore\n#endif\n\nproto"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/Action Automation/ActionAutomationExecutorTest.swift",
    "chars": 1182,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable\nimport AirshipAutomation\nimport AirshipCore\n\nclass Ac"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/Action Automation/ActionAutomationPreparerTest.swift",
    "chars": 649,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable\nimport AirshipAutomation\nimport AirshipCore\n\nfinal cl"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/Actions/CancelSchedulesActionTest.swift",
    "chars": 9715,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable\nimport AirshipAutomation\nimport AirshipCore\n\nfinal cl"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/Actions/LandingPageActionTest.swift",
    "chars": 11480,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable\nimport AirshipAutomation\nimport AirshipCore\n\nfinal cl"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/Actions/ScheduleActionTest.swift",
    "chars": 3933,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable\nimport AirshipAutomation\nimport AirshipCore\n\nfinal cl"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/Automation/ApplicationMetricsTest.swift",
    "chars": 2451,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable import AirshipAutomation\n@testable import AirshipCore"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/Automation/AudienceCheck/AdditionalAudienceCheckerResolverTest.swift",
    "chars": 9858,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable\nimport AirshipAutomation\nimport AirshipCore\n\nclass Ad"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/Automation/AutomationScheduleDataTest.swift",
    "chars": 21314,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable import AirshipAutomation\n@testable import AirshipCore"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/Automation/AutomationScheduleTest.swift",
    "chars": 10773,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable\nimport AirshipAutomation\nimport AirshipCore\n\nclass Au"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/Automation/Engine/AutomationDelayProcessorTest.swift",
    "chars": 9214,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable\nimport AirshipAutomation\nimport AirshipCore\n\n\nfinal c"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/Automation/Engine/AutomationEngineTest.swift",
    "chars": 8546,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable\nimport AirshipAutomation\nimport AirshipCore\n\n@MainAct"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/Automation/Engine/AutomationEventFeedTest.swift",
    "chars": 8307,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable\nimport AirshipAutomation\n@testable import AirshipCore"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/Automation/Engine/AutomationEventsHistoryTest.swift",
    "chars": 2096,
    "preview": "// Copyright Urban Airship and Contributors\n\n\nimport Foundation\nimport Testing\n\n@testable import AirshipAutomation\n@test"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/Automation/Engine/AutomationExecutorTest.swift",
    "chars": 12660,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable\nimport AirshipAutomation\nimport AirshipCore\n\nfinal cl"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/Automation/Engine/AutomationPreparerTest.swift",
    "chars": 41488,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable\nimport AirshipAutomation\nimport AirshipCore\n\nfinal cl"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/Automation/Engine/AutomationStoreTest.swift",
    "chars": 11825,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable\nimport AirshipAutomation\nimport AirshipCore\n\nfinal cl"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/Automation/Engine/AutomationTriggerProcessorTest.swift",
    "chars": 9857,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable\nimport AirshipAutomation\nimport AirshipCore\n\nfinal cl"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/Automation/Engine/ExecutionWindowProcessorTest.swift",
    "chars": 4090,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable\nimport AirshipAutomation\nimport AirshipCore\n\nfinal cl"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/Automation/Engine/PreparedScheduleInfoTest.swift",
    "chars": 550,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable\nimport AirshipAutomation\n\nfinal class PreparedSchedul"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/Automation/Engine/PreparedTriggerTest.swift",
    "chars": 24176,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable\nimport AirshipAutomation\nimport AirshipCore\n\nfinal cl"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/ExecutionWindowTest.swift",
    "chars": 33927,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable import AirshipAutomation\nimport AirshipCore\n\nfinal cl"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/InAppMessage/Analytics/DefaultInAppDisplayImpressionRuleProviderTest.swift",
    "chars": 3831,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable\nimport AirshipAutomation\nimport AirshipCore\n\nfinal cl"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/InAppMessage/Analytics/InAppMessageAnalyticsTest.swift",
    "chars": 18348,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Testing\n\n@testable import AirshipAutomation\n@testable import AirshipCor"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/InAppMessage/Assets/AssetCacheManagerTest.swift",
    "chars": 14405,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\nimport AirshipCore\n\n@testable\nimport AirshipAutomation\n\nfinal c"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/InAppMessage/Assets/DefaultAssetDownloaderTest.swift",
    "chars": 1967,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\nimport Foundation\n\n#if canImport(AirshipCore)\nimport AirshipCore"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/InAppMessage/Assets/DefaultAssetFileManagerTest.swift",
    "chars": 4367,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable import AirshipAutomation\nfinal class DefaultAssetFile"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/InAppMessage/DefaultInAppActionRunnerTest.swift",
    "chars": 5070,
    "preview": "/* Copyright Airship and Contributors */\n\nimport Testing\n\n@testable import AirshipCore\n@testable import AirshipAutomatio"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/InAppMessage/Display Adapter/AirshipLayoutDisplayAdapterTest.swift",
    "chars": 3811,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n@testable import AirshipAutomation\nimport AirshipCore\n\nfinal cla"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/InAppMessage/Display Adapter/CustomDisplayAdapterWrapperTest.swift",
    "chars": 1915,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n@testable import AirshipAutomation\nimport AirshipCore\n\n\nfinal cl"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/InAppMessage/Display Adapter/DisplayAdapterFactoryTest.swift",
    "chars": 5057,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n@testable import AirshipAutomation\nimport AirshipCore\n\nfinal cla"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/InAppMessage/Display Adapter/InAppMessageDisplayListenerTest.swift",
    "chars": 3889,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n@testable import AirshipAutomation\nimport AirshipCore\n\n\nclass In"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/InAppMessage/Display Coordinators/DefaultDisplayCoordinatorTest.swift",
    "chars": 1929,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable\nimport AirshipAutomation\nimport AirshipCore\n\nfinal cl"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/InAppMessage/Display Coordinators/DisplayCoordinatorManagerTest.swift",
    "chars": 2253,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n@testable import AirshipAutomation\nimport AirshipCore\n\nfinal cla"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/InAppMessage/Display Coordinators/ImmediateDisplayCoordinatorTest.swift",
    "chars": 1921,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n\n@testable\nimport AirshipAutomation\nimport AirshipCore\n\nfinal cl"
  },
  {
    "path": "Airship/AirshipAutomation/Tests/InAppMessage/InAppMessageAutomationExecutorTest.swift",
    "chars": 12206,
    "preview": "/* Copyright Airship and Contributors */\n\nimport XCTest\n@testable import AirshipAutomation\nimport AirshipCore\n\nfinal cla"
  }
]

// ... and 1218 more files (download for full content)

About this extraction

This page contains the full source code of the urbanairship/ios-library GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1418 files (10.7 MB), approximately 2.9M tokens, and a symbol index with 4 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!