diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000000..c5f3f6b9c7
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "java.configuration.updateBuildConfiguration": "interactive"
+}
\ No newline at end of file
diff --git a/android/app/build.gradle b/android/app/build.gradle
index a299894e4c..3217b5fed1 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -71,5 +71,7 @@ dependencies {
implementation 'androidx.core:core-ktx:1.10.1'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.activity:activity-ktx:1.7.2'
-
+ implementation 'org.greenrobot:eventbus:3.2.0'
+ implementation 'com.jakewharton.timber:timber:4.7.1'
+ implementation 'pub.devrel:easypermissions:3.0.0'
}
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index c3c463a8b4..c7f1ea9248 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -1,6 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
@@ -66,7 +79,6 @@
-
@@ -78,7 +90,6 @@
-
@@ -89,12 +100,30 @@
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
diff --git a/android/app/src/main/kotlin/com/apps/blt/MainActivity.kt b/android/app/src/main/kotlin/com/apps/blt/MainActivity.kt
index ebb9a12f8a..2a9b8b6691 100644
--- a/android/app/src/main/kotlin/com/apps/blt/MainActivity.kt
+++ b/android/app/src/main/kotlin/com/apps/blt/MainActivity.kt
@@ -1,48 +1,111 @@
package com.apps.blt
+import android.util.Log
+import android.Manifest
+import android.content.Context
+import android.content.Intent
+import android.content.pm.PackageManager
+import android.os.Bundle
+import androidx.activity.result.ActivityResultLauncher
+import androidx.activity.result.contract.ActivityResultContracts
+import androidx.core.app.ActivityCompat
+import androidx.core.content.ContextCompat
+import io.flutter.embedding.android.FlutterActivity
+import io.flutter.embedding.engine.FlutterEngine
+import io.flutter.plugin.common.MethodCall
+import io.flutter.plugin.common.MethodChannel
import android.content.ClipData
import android.content.ClipboardManager
import android.graphics.Bitmap
-import android.graphics.drawable.BitmapDrawable
-import android.os.Build
import android.provider.MediaStore
import android.util.Base64
import androidx.annotation.NonNull
-import androidx.annotation.RequiresApi
-import io.flutter.embedding.android.FlutterActivity
-import io.flutter.embedding.engine.FlutterEngine
-import io.flutter.plugin.common.MethodChannel
import java.io.ByteArrayOutputStream
class MainActivity : FlutterActivity() {
- private val CHANNEL = "clipboard_image_channel"
+ private val CHANNEL = "com.apps.blt/channel"
+ private val REQUEST_CODE_PERMISSIONS = 1001
+ private val REQUIRED_PERMISSIONS = arrayOf(
+ Manifest.permission.READ_CALL_LOG,
+ Manifest.permission.ANSWER_PHONE_CALLS,
+ Manifest.permission.READ_PHONE_STATE,
+ "android.permission.CALL_SCREENING"
+ )
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ startSpamCallBlockerService()
+
+ }
+ override fun onRequestPermissionsResult(
+ requestCode: Int,
+ permissions: Array,
+ grantResults: IntArray
+ ) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults)
+ if (requestCode == REQUEST_CODE_PERMISSIONS) {
+ if (allPermissionsGranted()) {
+ startSpamCallBlockerService()
+ } else {
+ Log.d("PermissionCheck", "Permissions not granted: ${permissions.zip(grantResults.toTypedArray()).joinToString { "${it.first}: ${it.second}" }}")
+ // Handle the case where permissions are not granted
+ }
+ }
+ }
+ private fun allPermissionsGranted(): Boolean {
+ val result = REQUIRED_PERMISSIONS.all {
+ ContextCompat.checkSelfPermission(this, it) == PackageManager.PERMISSION_GRANTED
+ }
+ Log.d("PermissionCheck", "All permissions granted: $result")
+ return result
+ }
+
+ private fun startSpamCallBlockerService() {
+ val intent = Intent(this, SpamCallBlockerService::class.java)
+ startService(intent)
+
+ }
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
- MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
- if (call.method == "getClipboardImage") {
- val clipboard = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
- val clipData = clipboard.primaryClip
-
- if (clipData != null && clipData.itemCount > 0) {
- val item = clipData.getItemAt(0)
-
- if (item.uri != null) {
- val bitmap = MediaStore.Images.Media.getBitmap(contentResolver, item.uri)
- val stream = ByteArrayOutputStream()
- bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream)
- val byteArray = stream.toByteArray()
- val base64String = Base64.encodeToString(byteArray, Base64.DEFAULT)
- result.success(base64String)
- } else {
- result.error("NO_IMAGE", "Clipboard does not contain an image", null)
- }
- } else {
- result.error("EMPTY_CLIPBOARD", "Clipboard is empty", null)
- }
+ MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call: MethodCall, result: MethodChannel.Result ->
+ when (call.method) {
+ "getClipboardImage" -> handleClipboardImage(result)
+ "updateSpamList" -> handleSpamList(call, result)
+ else -> result.notImplemented()
+ }
+ }
+ }
+ private fun handleSpamList(call: MethodCall, result: MethodChannel.Result) {
+ val numbers = call.argument>("numbers")
+
+ if (numbers != null) {
+ SpamNumberManager.updateSpamList(numbers)
+ result.success("Spam list updated successfully!")
+ } else {
+ result.error("INVALID_ARGUMENT", "Numbers list is null", null)
+ }
+ }
+
+ private fun handleClipboardImage(result: MethodChannel.Result) {
+ val clipboard = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
+ val clipData = clipboard.primaryClip
+
+ if (clipData != null && clipData.itemCount > 0) {
+ val item = clipData.getItemAt(0)
+
+ if (item.uri != null) {
+ val bitmap = MediaStore.Images.Media.getBitmap(contentResolver, item.uri)
+ val stream = ByteArrayOutputStream()
+ bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream)
+ val byteArray = stream.toByteArray()
+ val base64String = Base64.encodeToString(byteArray, Base64.DEFAULT)
+ result.success(base64String)
} else {
- result.notImplemented()
+ result.error("NO_IMAGE", "Clipboard does not contain an image", null)
}
+ } else {
+ result.error("EMPTY_CLIPBOARD", "Clipboard is empty", null)
}
}
}
diff --git a/android/app/src/main/kotlin/com/apps/blt/NotificationManagerImpl.kt b/android/app/src/main/kotlin/com/apps/blt/NotificationManagerImpl.kt
new file mode 100644
index 0000000000..0eeaa6d301
--- /dev/null
+++ b/android/app/src/main/kotlin/com/apps/blt/NotificationManagerImpl.kt
@@ -0,0 +1,23 @@
+package com.apps.blt
+
+import android.content.Context
+import android.os.Looper
+import android.widget.Toast
+interface NotificationManager {
+ fun showToastNotification(context: Context, message: String)
+}
+
+class NotificationManagerImpl : NotificationManager {
+ override fun showToastNotification(context: Context, message: String) {
+ val t = Thread {
+ try {
+ Looper.prepare()
+ Toast.makeText(context.applicationContext, message, Toast.LENGTH_LONG).show()
+ Looper.loop()
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ }
+ t.start()
+ }
+}
diff --git a/android/app/src/main/kotlin/com/apps/blt/SpamCallBlockerService.kt b/android/app/src/main/kotlin/com/apps/blt/SpamCallBlockerService.kt
new file mode 100644
index 0000000000..0ace07a94e
--- /dev/null
+++ b/android/app/src/main/kotlin/com/apps/blt/SpamCallBlockerService.kt
@@ -0,0 +1,68 @@
+package com.apps.blt
+
+import android.telecom.CallScreeningService
+import android.telecom.Call
+import android.util.Log
+import org.greenrobot.eventbus.EventBus
+import java.text.SimpleDateFormat
+import java.util.Date
+import java.util.Locale
+import android.net.Uri
+
+class MessageEvent(val message: String) {}
+
+class SpamCallBlockerService : CallScreeningService() {
+ private val notificationManager = NotificationManagerImpl()
+
+ override fun onCreate() {
+ super.onCreate()
+ Log.d("SpamCallBlockerService", "Service started")
+ }
+
+ override fun onScreenCall(callDetails: Call.Details) {
+ Log.d("SpamCallBlockerService", "onScreenCall triggered")
+ val phoneNumber = getPhoneNumber(callDetails)
+ Log.d("SpamCallBlockerService", "Intercepted call from: $phoneNumber")
+ var response = CallResponse.Builder()
+ response = handlePhoneCall(response, phoneNumber)
+
+ respondToCall(callDetails, response.build())
+ logCallInterception(phoneNumber, response.build())
+ }
+
+ private fun handlePhoneCall(
+ response: CallResponse.Builder,
+ phoneNumber: String
+ ): CallResponse.Builder {
+ if (SpamNumberManager.isSpamNumber(phoneNumber)) {
+ response.apply {
+ setRejectCall(true)
+ setDisallowCall(true)
+ setSkipCallLog(false)
+ displayToast(String.format("Rejected call from %s", phoneNumber))
+ }
+ } else {
+ displayToast(String.format("Incoming call from %s", phoneNumber))
+ }
+ return response
+ }
+
+ private fun getPhoneNumber(callDetails: Call.Details): String {
+ return callDetails.handle.toString().removeTelPrefix().parseCountryCode()
+ }
+
+ private fun displayToast(message: String) {
+ notificationManager.showToastNotification(applicationContext, message)
+ EventBus.getDefault().post(MessageEvent(message))
+ }
+
+ private fun logCallInterception(phoneNumber: String, response: CallResponse) {
+ val currentTime = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()).format(Date())
+ val action = "action"
+ val logMessage = "[$currentTime] $action call from $phoneNumber"
+ Log.d("SpamCallBlockerService", logMessage)
+ }
+
+ fun String.removeTelPrefix() = this.replace("tel:", "")
+ fun String.parseCountryCode(): String = Uri.decode(this)
+}
diff --git a/android/app/src/main/kotlin/com/apps/blt/SpamNumberManager.kt b/android/app/src/main/kotlin/com/apps/blt/SpamNumberManager.kt
new file mode 100644
index 0000000000..b125bda352
--- /dev/null
+++ b/android/app/src/main/kotlin/com/apps/blt/SpamNumberManager.kt
@@ -0,0 +1,14 @@
+package com.apps.blt
+
+object SpamNumberManager {
+ private val spamNumbers = mutableSetOf()
+
+ fun updateSpamList(numbers: List) {
+ spamNumbers.clear()
+ spamNumbers.addAll(numbers)
+ }
+
+ fun isSpamNumber(number: String): Boolean {
+ return spamNumbers.contains(number)
+ }
+}
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 6d74e4553b..7922741277 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -3,42 +3,66 @@
archiveVersion = 1;
classes = {
};
- objectVersion = 54;
+ objectVersion = 70;
objects = {
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
- 20EC9BE154DEDB498A36519C /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69386D8BCD78E4ED3020DBBC /* Pods_Runner.framework */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
+ 473E904B2CF0C69C00966B01 /* SpamCallBlockerExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 477FC50B2CEE6380007E2575 /* SpamCallBlockerExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
+ 477FC56E2CEF461A007E2575 /* Shared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 477FC5642CEF461A007E2575 /* Shared.framework */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
+ 9EAC075CF47D853B4DA0C8A8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DEC38620145A88B06113C31B /* Pods_Runner.framework */; };
/* End PBXBuildFile section */
+/* Begin PBXContainerItemProxy section */
+ 473E8F852CF07D6B00966B01 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 97C146E61CF9000F007C117D /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 477FC50A2CEE6380007E2575;
+ remoteInfo = SpamCallBlockerExtension;
+ };
+ 477FC56F2CEF461A007E2575 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 97C146E61CF9000F007C117D /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 477FC5632CEF461A007E2575;
+ remoteInfo = Shared;
+ };
+/* End PBXContainerItemProxy section */
+
/* Begin PBXCopyFilesBuildPhase section */
- 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
+ 473E904E2CF0C69C00966B01 /* Embed Foundation Extensions */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
- dstSubfolderSpec = 10;
+ dstSubfolderSpec = 13;
files = (
+ 473E904B2CF0C69C00966B01 /* SpamCallBlockerExtension.appex in Embed Foundation Extensions */,
);
- name = "Embed Frameworks";
+ name = "Embed Foundation Extensions";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
+ 038AD7A5A651BA634C824127 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
- 36E76BFE275A6911F63ACB18 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
- 69386D8BCD78E4ED3020DBBC /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 477FC50B2CEE6380007E2575 /* SpamCallBlockerExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = SpamCallBlockerExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
+ 477FC51D2CEE69C8007E2575 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; };
+ 477FC55A2CEF3D7D007E2575 /* Shared.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Shared.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 477FC5642CEF461A007E2575 /* Shared.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Shared.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 477FC56D2CEF461A007E2575 /* SharedTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SharedTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 514487CC0E0091E5F1095BAA /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
- 8BB5CF5F17EE9CF832A7ECF9 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -46,15 +70,52 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- DEF4B9CC3AF135CAFE1D434B /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
+ DEC38620145A88B06113C31B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ ED7DD9F280D0028ED7FC0459 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
/* End PBXFileReference section */
+/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
+ 477FC5172CEE6380007E2575 /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = {
+ isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
+ membershipExceptions = (
+ Info.plist,
+ );
+ target = 477FC50A2CEE6380007E2575 /* SpamCallBlockerExtension */;
+ };
+/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */
+
+/* Begin PBXFileSystemSynchronizedRootGroup section */
+ 477FC50C2CEE6380007E2575 /* SpamCallBlockerExtension */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (477FC5172CEE6380007E2575 /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = SpamCallBlockerExtension; sourceTree = ""; };
+/* End PBXFileSystemSynchronizedRootGroup section */
+
/* Begin PBXFrameworksBuildPhase section */
+ 477FC5082CEE6380007E2575 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 477FC5612CEF461A007E2575 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 477FC56A2CEF461A007E2575 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 477FC56E2CEF461A007E2575 /* Shared.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
97C146EB1CF9000F007C117D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 20EC9BE154DEDB498A36519C /* Pods_Runner.framework in Frameworks */,
+ 9EAC075CF47D853B4DA0C8A8 /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -64,7 +125,8 @@
5B139BB782CCCA8E2868617A /* Frameworks */ = {
isa = PBXGroup;
children = (
- 69386D8BCD78E4ED3020DBBC /* Pods_Runner.framework */,
+ 477FC55A2CEF3D7D007E2575 /* Shared.framework */,
+ DEC38620145A88B06113C31B /* Pods_Runner.framework */,
);
name = Frameworks;
sourceTree = "";
@@ -85,6 +147,7 @@
children = (
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
+ 477FC50C2CEE6380007E2575 /* SpamCallBlockerExtension */,
97C146EF1CF9000F007C117D /* Products */,
B49CE60E49654E24FDE96295 /* Pods */,
5B139BB782CCCA8E2868617A /* Frameworks */,
@@ -95,6 +158,9 @@
isa = PBXGroup;
children = (
97C146EE1CF9000F007C117D /* Runner.app */,
+ 477FC50B2CEE6380007E2575 /* SpamCallBlockerExtension.appex */,
+ 477FC5642CEF461A007E2575 /* Shared.framework */,
+ 477FC56D2CEF461A007E2575 /* SharedTests.xctest */,
);
name = Products;
sourceTree = "";
@@ -102,6 +168,7 @@
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
+ 477FC51D2CEE69C8007E2575 /* Runner.entitlements */,
97C146FA1CF9000F007C117D /* Main.storyboard */,
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
@@ -117,34 +184,100 @@
B49CE60E49654E24FDE96295 /* Pods */ = {
isa = PBXGroup;
children = (
- DEF4B9CC3AF135CAFE1D434B /* Pods-Runner.debug.xcconfig */,
- 8BB5CF5F17EE9CF832A7ECF9 /* Pods-Runner.release.xcconfig */,
- 36E76BFE275A6911F63ACB18 /* Pods-Runner.profile.xcconfig */,
+ 514487CC0E0091E5F1095BAA /* Pods-Runner.debug.xcconfig */,
+ 038AD7A5A651BA634C824127 /* Pods-Runner.release.xcconfig */,
+ ED7DD9F280D0028ED7FC0459 /* Pods-Runner.profile.xcconfig */,
);
- name = Pods;
path = Pods;
sourceTree = "";
};
/* End PBXGroup section */
+/* Begin PBXHeadersBuildPhase section */
+ 477FC55F2CEF461A007E2575 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
/* Begin PBXNativeTarget section */
+ 477FC50A2CEE6380007E2575 /* SpamCallBlockerExtension */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 477FC5182CEE6380007E2575 /* Build configuration list for PBXNativeTarget "SpamCallBlockerExtension" */;
+ buildPhases = (
+ 477FC5072CEE6380007E2575 /* Sources */,
+ 477FC5082CEE6380007E2575 /* Frameworks */,
+ 477FC5092CEE6380007E2575 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ fileSystemSynchronizedGroups = (
+ 477FC50C2CEE6380007E2575 /* SpamCallBlockerExtension */,
+ );
+ name = SpamCallBlockerExtension;
+ productName = SpamCallBlockerExtension;
+ productReference = 477FC50B2CEE6380007E2575 /* SpamCallBlockerExtension.appex */;
+ productType = "com.apple.product-type.app-extension";
+ };
+ 477FC5632CEF461A007E2575 /* Shared */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 477FC57C2CEF461A007E2575 /* Build configuration list for PBXNativeTarget "Shared" */;
+ buildPhases = (
+ 477FC55F2CEF461A007E2575 /* Headers */,
+ 477FC5602CEF461A007E2575 /* Sources */,
+ 477FC5612CEF461A007E2575 /* Frameworks */,
+ 477FC5622CEF461A007E2575 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = Shared;
+ productName = Shared;
+ productReference = 477FC5642CEF461A007E2575 /* Shared.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+ 477FC56C2CEF461A007E2575 /* SharedTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 477FC5802CEF461A007E2575 /* Build configuration list for PBXNativeTarget "SharedTests" */;
+ buildPhases = (
+ 477FC5692CEF461A007E2575 /* Sources */,
+ 477FC56A2CEF461A007E2575 /* Frameworks */,
+ 477FC56B2CEF461A007E2575 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 477FC5702CEF461A007E2575 /* PBXTargetDependency */,
+ );
+ name = SharedTests;
+ productName = SharedTests;
+ productReference = 477FC56D2CEF461A007E2575 /* SharedTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
97C146ED1CF9000F007C117D /* Runner */ = {
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
- 769F2DF4327B9A5B0592592B /* [CP] Check Pods Manifest.lock */,
+ 6A6B03F42A70AC1ABD7C147A /* [CP] Check Pods Manifest.lock */,
+ 88C26C7447BA6778768A0E08 /* [CP] Embed Pods Frameworks */,
+ 473E904E2CF0C69C00966B01 /* Embed Foundation Extensions */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
- 9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
- BD4815CBF2E43FB6B6E05F7E /* [CP] Embed Pods Frameworks */,
- 3D0D20C01154FDD8C26CF626 /* [CP] Copy Pods Resources */,
+ 9E14261915747F18CD589FAC /* [CP] Copy Pods Resources */,
);
buildRules = (
);
dependencies = (
+ 473E8F862CF07D6B00966B01 /* PBXTargetDependency */,
);
name = Runner;
productName = Runner;
@@ -157,9 +290,20 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
+ LastSwiftUpdateCheck = 1610;
LastUpgradeCheck = 1510;
ORGANIZATIONNAME = "";
TargetAttributes = {
+ 477FC50A2CEE6380007E2575 = {
+ CreatedOnToolsVersion = 16.1;
+ };
+ 477FC5632CEF461A007E2575 = {
+ CreatedOnToolsVersion = 16.1;
+ };
+ 477FC56C2CEF461A007E2575 = {
+ CreatedOnToolsVersion = 16.1;
+ TestTargetID = 97C146ED1CF9000F007C117D;
+ };
97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1;
LastSwiftMigration = 1100;
@@ -180,11 +324,35 @@
projectRoot = "";
targets = (
97C146ED1CF9000F007C117D /* Runner */,
+ 477FC50A2CEE6380007E2575 /* SpamCallBlockerExtension */,
+ 477FC5632CEF461A007E2575 /* Shared */,
+ 477FC56C2CEF461A007E2575 /* SharedTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
+ 477FC5092CEE6380007E2575 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 477FC5622CEF461A007E2575 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 477FC56B2CEF461A007E2575 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
97C146EC1CF9000F007C117D /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@@ -213,45 +381,45 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin\n";
};
- 3D0D20C01154FDD8C26CF626 /* [CP] Copy Pods Resources */ = {
+ 6A6B03F42A70AC1ABD7C147A /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
);
- name = "[CP] Copy Pods Resources";
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
- 769F2DF4327B9A5B0592592B /* [CP] Check Pods Manifest.lock */ = {
+ 88C26C7447BA6778768A0E08 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
- inputPaths = (
- "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
- "${PODS_ROOT}/Manifest.lock",
- );
- name = "[CP] Check Pods Manifest.lock";
+ name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
- );
- outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
9740EEB61CF901F6004384FC /* Run Script */ = {
@@ -267,28 +435,49 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n";
};
- BD4815CBF2E43FB6B6E05F7E /* [CP] Embed Pods Frameworks */ = {
+ 9E14261915747F18CD589FAC /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
);
- name = "[CP] Embed Pods Frameworks";
+ name = "[CP] Copy Pods Resources";
outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
+ 477FC5072CEE6380007E2575 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 477FC5602CEF461A007E2575 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 477FC5692CEF461A007E2575 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
97C146EA1CF9000F007C117D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -300,6 +489,19 @@
};
/* End PBXSourcesBuildPhase section */
+/* Begin PBXTargetDependency section */
+ 473E8F862CF07D6B00966B01 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 477FC50A2CEE6380007E2575 /* SpamCallBlockerExtension */;
+ targetProxy = 473E8F852CF07D6B00966B01 /* PBXContainerItemProxy */;
+ };
+ 477FC5702CEF461A007E2575 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 477FC5632CEF461A007E2575 /* Shared */;
+ targetProxy = 477FC56F2CEF461A007E2575 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
/* Begin PBXVariantGroup section */
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
isa = PBXVariantGroup;
@@ -378,14 +580,16 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
BUILD_LIBRARY_FOR_DISTRIBUTION = NO;
CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = N7G23CX6JJ;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
- PRODUCT_BUNDLE_IDENTIFIER = com.apps.blt;
+ PRODUCT_BUNDLE_IDENTIFIER = com.krrishsehgal.blt;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
@@ -393,6 +597,360 @@
};
name = Profile;
};
+ 477FC5142CEE6380007E2575 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_ENTITLEMENTS = SpamCallBlockerExtension/SpamCallBlockerExtension.entitlements;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = N7G23CX6JJ;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = SpamCallBlockerExtension/Info.plist;
+ INFOPLIST_KEY_CFBundleDisplayName = SpamCallBlockerExtension;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "";
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@executable_path/../../Frameworks",
+ );
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.krrishsehgal.blt.SpamCallBlockerExtension;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 477FC5152CEE6380007E2575 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_ENTITLEMENTS = SpamCallBlockerExtension/SpamCallBlockerExtension.entitlements;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = N7G23CX6JJ;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = SpamCallBlockerExtension/Info.plist;
+ INFOPLIST_KEY_CFBundleDisplayName = SpamCallBlockerExtension;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "";
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@executable_path/../../Frameworks",
+ );
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.krrishsehgal.blt.SpamCallBlockerExtension;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+ 477FC5162CEE6380007E2575 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_ENTITLEMENTS = SpamCallBlockerExtension/SpamCallBlockerExtension.entitlements;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = N7G23CX6JJ;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = SpamCallBlockerExtension/Info.plist;
+ INFOPLIST_KEY_CFBundleDisplayName = SpamCallBlockerExtension;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "";
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@executable_path/../../Frameworks",
+ );
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.krrishsehgal.blt.SpamCallBlockerExtension;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Profile;
+ };
+ 477FC57D2CEF461A007E2575 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = N7G23CX6JJ;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20";
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.krrishsehgal.blt.Shared;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_INSTALL_OBJC_HEADER = NO;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Debug;
+ };
+ 477FC57E2CEF461A007E2575 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = N7G23CX6JJ;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20";
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.krrishsehgal.blt.Shared;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ SKIP_INSTALL = YES;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_INSTALL_OBJC_HEADER = NO;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Release;
+ };
+ 477FC57F2CEF461A007E2575 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = N7G23CX6JJ;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20";
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.krrishsehgal.blt.Shared;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ SKIP_INSTALL = YES;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_INSTALL_OBJC_HEADER = NO;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Profile;
+ };
+ 477FC5812CEF461A007E2575 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = N7G23CX6JJ;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GENERATE_INFOPLIST_FILE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.krrishsehgal.blt.SharedTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
+ SWIFT_EMIT_LOC_STRINGS = NO;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = Debug;
+ };
+ 477FC5822CEF461A007E2575 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = N7G23CX6JJ;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GENERATE_INFOPLIST_FILE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.krrishsehgal.blt.SharedTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_EMIT_LOC_STRINGS = NO;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = Release;
+ };
+ 477FC5832CEF461A007E2575 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = N7G23CX6JJ;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GENERATE_INFOPLIST_FILE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.krrishsehgal.blt.SharedTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_EMIT_LOC_STRINGS = NO;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = Profile;
+ };
97C147031CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -508,14 +1066,16 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
BUILD_LIBRARY_FOR_DISTRIBUTION = NO;
CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = N7G23CX6JJ;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
- PRODUCT_BUNDLE_IDENTIFIER = com.apps.blt;
+ PRODUCT_BUNDLE_IDENTIFIER = com.krrishsehgal.blt;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -532,14 +1092,16 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
BUILD_LIBRARY_FOR_DISTRIBUTION = NO;
CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = N7G23CX6JJ;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
- PRODUCT_BUNDLE_IDENTIFIER = com.apps.blt;
+ PRODUCT_BUNDLE_IDENTIFIER = com.krrishsehgal.blt;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
@@ -550,6 +1112,36 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
+ 477FC5182CEE6380007E2575 /* Build configuration list for PBXNativeTarget "SpamCallBlockerExtension" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 477FC5142CEE6380007E2575 /* Debug */,
+ 477FC5152CEE6380007E2575 /* Release */,
+ 477FC5162CEE6380007E2575 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 477FC57C2CEF461A007E2575 /* Build configuration list for PBXNativeTarget "Shared" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 477FC57D2CEF461A007E2575 /* Debug */,
+ 477FC57E2CEF461A007E2575 /* Release */,
+ 477FC57F2CEF461A007E2575 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 477FC5802CEF461A007E2575 /* Build configuration list for PBXNativeTarget "SharedTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 477FC5812CEF461A007E2575 /* Debug */,
+ 477FC5822CEF461A007E2575 /* Release */,
+ 477FC5832CEF461A007E2575 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
index 5e31d3d342..aab66a24c7 100644
--- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -37,6 +37,17 @@
+
+
+
+
Bool {
- // Register the method channel
- let controller = window?.rootViewController as! FlutterViewController
- let clipboardImageChannel = FlutterMethodChannel(name: "clipboard_image_channel",
- binaryMessenger: controller.binaryMessenger)
+ override func application(
+ _ application: UIApplication,
+ didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
+ ) -> Bool {
+ let controller = window?.rootViewController as! FlutterViewController
+ let spamChannel = FlutterMethodChannel(name: "com.apps.blt/channel", binaryMessenger: controller.binaryMessenger)
- clipboardImageChannel.setMethodCallHandler { (call: FlutterMethodCall, result: @escaping FlutterResult) in
- if call.method == "getClipboardImage" {
- self.getClipboardImage(result: result)
- } else {
- result(FlutterMethodNotImplemented)
- }
- }
-
- GeneratedPluginRegistrant.register(with: self)
- return super.application(application, didFinishLaunchingWithOptions: launchOptions)
- }
+ spamChannel.setMethodCallHandler { (call: FlutterMethodCall, result: @escaping FlutterResult) in
+ switch call.method {
+ case "updateSpamList":
+ if let args = call.arguments as? [String: Any],
+ let numbers = args["numbers"] as? [String] {
+ // Update the spam list in shared user preferences
+ let userDefaults = UserDefaults(suiteName: "group.com.apps.blt.shared")
+ userDefaults?.set(numbers, forKey: "spamNumbers")
+ print("Spam list updated: \(numbers)")
+
+ // Reload the Call Directory extension
+ self.reloadCallDirectoryExtension(result: result)
+ } else {
+ result(FlutterError(code: "INVALID_ARGUMENT", message: "Invalid numbers list", details: nil))
+ }
+
+ case "getClipboardImage":
+ if let clipboardImage = UIPasteboard.general.image {
+ if let imageData = clipboardImage.pngData() {
+ let base64String = imageData.base64EncodedString()
+ result(base64String)
+ } else {
+ result(FlutterError(code: "NO_IMAGE", message: "Could not encode image", details: nil))
+ }
+ } else {
+ result(FlutterError(code: "EMPTY_CLIPBOARD", message: "Clipboard is empty or does not contain an image", details: nil))
+ }
+
+ default:
+ result(FlutterMethodNotImplemented)
+ }
+ }
- private func getClipboardImage(result: FlutterResult) {
- // Check if the clipboard contains an image
- if let image = UIPasteboard.general.image {
- // Convert the image to PNG data
- if let imageData = image.pngData() {
- // Encode the image data to a Base64 string
- let base64String = imageData.base64EncodedString()
- result(base64String) // Send the Base64 string back to Flutter
- } else {
- result(FlutterError(code: "NO_IMAGE", message: "Could not convert image to data", details: nil))
- }
- } else {
- result(FlutterError(code: "NO_IMAGE", message: "Clipboard does not contain an image", details: nil))
+ GeneratedPluginRegistrant.register(with: self)
+
+ // Check the CallKit extension status
+ checkExtensionStatus()
+
+ return super.application(application, didFinishLaunchingWithOptions: launchOptions)
+ }
+
+ // Function to check the CallKit extension status
+ func checkExtensionStatus() {
+ let extensionIdentifier = "com.krrishsehgal.blt.SpamCallBlockerExtension"
+ CXCallDirectoryManager.sharedInstance.getEnabledStatusForExtension(withIdentifier: extensionIdentifier) { (status, error) in
+ if let error = error {
+ print("Error checking extension status: \(error.localizedDescription)")
+ } else {
+ switch status {
+ case .enabled:
+ print("Extension is enabled.")
+ case .disabled:
+ print("Extension is disabled.")
+ self.openExtensionSettings()
+ default:
+ print("Unknown extension status.")
+ }
+ }
+ }
+ }
+
+ // Function to open the Settings page for the CallKit extension
+ func openExtensionSettings() {
+ if #available(iOS 13.4, *) {
+ CXCallDirectoryManager.sharedInstance.openSettings { error in
+ if let error = error {
+ print("Error opening settings: \(error.localizedDescription)")
+ } else {
+ print("Opened Settings for extension.")
+ }
+ }
+ } else {
+ print("Settings cannot be opened on iOS versions earlier than 13.4.")
+ }
+ }
+
+ // Reload Call Directory Extension
+ func reloadCallDirectoryExtension(result: @escaping FlutterResult) {
+ let extensionIdentifier = "com.krrishsehgal.blt.SpamCallBlockerExtension"
+ CXCallDirectoryManager.sharedInstance.reloadExtension(withIdentifier: extensionIdentifier) { error in
+ if let error = error {
+ print("Failed to reload Call Directory Extension: \(error.localizedDescription)")
+ result(FlutterError(code: "RELOAD_FAILED", message: error.localizedDescription, details: nil))
+ } else {
+ print("Successfully reloaded Call Directory Extension!")
+ result("Call Directory Extension reloaded successfully!")
+ }
+ }
}
- }
-}
\ No newline at end of file
+}
diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard
index f3c28516fb..ff3ee21788 100644
--- a/ios/Runner/Base.lproj/Main.storyboard
+++ b/ios/Runner/Base.lproj/Main.storyboard
@@ -1,8 +1,10 @@
-
-
+
+
+
-
+
+
@@ -14,13 +16,14 @@
-
+
-
+
+
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index ecc2e284fc..f24a8177b5 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -2,6 +2,8 @@
+ CADisableMinimumFrameDurationOnPhone
+
CFBundleDevelopmentRegion
$(DEVELOPMENT_LANGUAGE)
CFBundleDisplayName
@@ -14,24 +16,46 @@
6.0
CFBundleName
blt
- NSPhotoLibraryUsageDescription
- This app needs access to your photo library to upload images.
CFBundlePackageType
APPL
CFBundleShortVersionString
$(FLUTTER_BUILD_NAME)
CFBundleSignature
????
+ CFBundleURLTypes
+
+
+ CFBundleTypeRole
+ Editor
+ CFBundleURLSchemes
+
+ ShareMedia
+
+
+
+
CFBundleVersion
$(FLUTTER_BUILD_NUMBER)
+ ITSAppUsesNonExemptEncryption
+
LSRequiresIPhoneOS
+ NSCameraUsageDescription
+ To upload photos, please allow permission to access your photo library.
+ NSMicrophoneUsageDescription
+ To upload photos, please allow permission to access your photo library.
+ NSPhotoLibraryUsageDescription
+ To upload photos, please allow permission to access your photo library.
+ UIApplicationSupportsIndirectInputEvents
+
+ UIBackgroundModes
+
+ voip
+
UILaunchStoryboardName
LaunchScreen
UIMainStoryboardFile
Main
- ITSAppUsesNonExemptEncryption
-
UISupportedInterfaceOrientations
UIInterfaceOrientationPortrait
@@ -47,29 +71,5 @@
UIViewControllerBasedStatusBarAppearance
- CFBundleURLTypes
-
-
- CFBundleTypeRole
- Editor
- CFBundleURLSchemes
-
- ShareMedia
-
-
-
-
- NSPhotoLibraryUsageDescription
- To upload photos, please allow permission to access your photo library.
- NSCameraUsageDescription
- To upload photos, please allow permission to access your photo library.
- NSMicrophoneUsageDescription
- To upload photos, please allow permission to access your photo library.
-
-
- CADisableMinimumFrameDurationOnPhone
-
- UIApplicationSupportsIndirectInputEvents
-
diff --git a/ios/Runner/Runner.entitlements b/ios/Runner/Runner.entitlements
new file mode 100644
index 0000000000..b7e8b3638a
--- /dev/null
+++ b/ios/Runner/Runner.entitlements
@@ -0,0 +1,10 @@
+
+
+
+
+ com.apple.security.application-groups
+
+ group.com.apps.blt.shared
+
+
+
diff --git a/ios/Shared/Shared.docc/Shared.md b/ios/Shared/Shared.docc/Shared.md
new file mode 100644
index 0000000000..9405c4d209
--- /dev/null
+++ b/ios/Shared/Shared.docc/Shared.md
@@ -0,0 +1,13 @@
+# ``Shared``
+
+Summary
+
+## Overview
+
+Text
+
+## Topics
+
+### Group
+
+- ``Symbol``
\ No newline at end of file
diff --git a/ios/Shared/Shared.h b/ios/Shared/Shared.h
new file mode 100644
index 0000000000..8bbed156b5
--- /dev/null
+++ b/ios/Shared/Shared.h
@@ -0,0 +1,18 @@
+//
+// Shared.h
+// Shared
+//
+// Created by Krrish Sehgal on 21/11/24.
+//
+
+#import
+
+//! Project version number for Shared.
+FOUNDATION_EXPORT double SharedVersionNumber;
+
+//! Project version string for Shared.
+FOUNDATION_EXPORT const unsigned char SharedVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/ios/Shared/SpamNumberManager.swift b/ios/Shared/SpamNumberManager.swift
new file mode 100644
index 0000000000..13180b1bc1
--- /dev/null
+++ b/ios/Shared/SpamNumberManager.swift
@@ -0,0 +1,67 @@
+//
+// SpamManager.swift
+// Shared
+//
+// Created by Krrish Sehgal on 21/11/24.
+//
+
+import Foundation
+
+public class SpamNumberManager {
+ // Public initializer to allow usage outside the module
+ public init() {}
+
+ // Public shared instance
+ public static let shared = SpamNumberManager()
+
+ // Use Set for unique phone numbers
+ public var spamNumbers: Set = []
+
+ // Update spam list and save it to shared container
+ public func updateSpamList(_ numbers: [String]) {
+ spamNumbers.removeAll()
+ spamNumbers.formUnion(numbers)
+ print("Spam list updated: \(spamNumbers)")
+
+ saveSpamList()
+ }
+
+ // Save the updated spam list to the shared container
+ private func saveSpamList() {
+ guard let fileURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.apps.blt.shared")?.appendingPathComponent("spamNumbers.json") else {
+ print("Failed to get file URL for shared container.")
+ return
+ }
+
+ do {
+ let data = try JSONEncoder().encode(Array(spamNumbers)) // Convert Set to Array for encoding
+ try data.write(to: fileURL)
+ print("Spam list saved successfully.")
+ } catch {
+ print("Error saving spam list: \(error)")
+ }
+ }
+
+ // Load the spam list from the shared container
+ public func loadSpamList() {
+ print("in load spam list");
+ guard let fileURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.apps.blt.shared")?.appendingPathComponent("spamNumbers.json") else {
+ print("Failed to get file URL for shared container.")
+ return
+ }
+
+ do {
+ let data = try Data(contentsOf: fileURL)
+ let savedNumbers = try JSONDecoder().decode([String].self, from: data)
+ spamNumbers = Set(savedNumbers) // Convert back to Set
+ print("Spam list loaded successfully.")
+ } catch {
+ print("Error loading spam list: \(error)")
+ }
+ }
+
+ // Check if a number is in the spam list
+ public func isSpamNumber(_ number: String) -> Bool {
+ return spamNumbers.contains(number)
+ }
+}
diff --git a/ios/SharedTests/SharedTests.swift b/ios/SharedTests/SharedTests.swift
new file mode 100644
index 0000000000..45643ed133
--- /dev/null
+++ b/ios/SharedTests/SharedTests.swift
@@ -0,0 +1,17 @@
+//
+// SharedTests.swift
+// SharedTests
+//
+// Created by Krrish Sehgal on 21/11/24.
+//
+
+import Testing
+@testable import Shared
+
+struct SharedTests {
+
+ @Test func example() async throws {
+ // Write your test here and use APIs like `#expect(...)` to check expected conditions.
+ }
+
+}
diff --git a/ios/SpamCallBlockerExtension/CallDirectoryHandler.swift b/ios/SpamCallBlockerExtension/CallDirectoryHandler.swift
new file mode 100644
index 0000000000..c033102a96
--- /dev/null
+++ b/ios/SpamCallBlockerExtension/CallDirectoryHandler.swift
@@ -0,0 +1,22 @@
+import CallKit
+
+class CallDirectoryHandler: CXCallDirectoryProvider {
+ override func beginRequest(with context: CXCallDirectoryExtensionContext) {
+ // Access UserDefaults with App Group
+ let userDefaults = UserDefaults(suiteName: "group.com.apps.blt.shared")
+
+ // Retrieve the spam numbers
+ if let spamNumbers = userDefaults?.array(forKey: "spamNumbers") as? [String] {
+ // Convert the spam numbers to CXCallDirectoryPhoneNumber and sort them
+ let blockedPhoneNumbers: [CXCallDirectoryPhoneNumber] = spamNumbers.compactMap { Int64($0) }.sorted(by: <)
+
+ // Add sorted phone numbers to the blocking list
+ for phoneNumber in blockedPhoneNumbers {
+ context.addBlockingEntry(withNextSequentialPhoneNumber: phoneNumber)
+ }
+ }
+
+ // Complete the request
+ context.completeRequest()
+ }
+}
diff --git a/ios/SpamCallBlockerExtension/Info.plist b/ios/SpamCallBlockerExtension/Info.plist
new file mode 100644
index 0000000000..d51afa6f32
--- /dev/null
+++ b/ios/SpamCallBlockerExtension/Info.plist
@@ -0,0 +1,24 @@
+
+
+
+
+ NSExtension
+
+ NSExtensionAttributes
+
+ CXCallDirectoryEnabled
+
+ CallDirectoryManager
+
+
+ NSExtensionPointIdentifier
+ com.apple.callkit.call-directory
+ NSExtensionPrincipalClass
+ $(PRODUCT_MODULE_NAME).CallDirectoryHandler
+
+ UIBackgroundModes
+
+ voip
+
+
+
diff --git a/ios/SpamCallBlockerExtension/SpamCallBlockerExtension.entitlements b/ios/SpamCallBlockerExtension/SpamCallBlockerExtension.entitlements
new file mode 100644
index 0000000000..b7e8b3638a
--- /dev/null
+++ b/ios/SpamCallBlockerExtension/SpamCallBlockerExtension.entitlements
@@ -0,0 +1,10 @@
+
+
+
+
+ com.apple.security.application-groups
+
+ group.com.apps.blt.shared
+
+
+
diff --git a/ios/build/.last_build_id b/ios/build/.last_build_id
new file mode 100644
index 0000000000..ddd19d1fb1
--- /dev/null
+++ b/ios/build/.last_build_id
@@ -0,0 +1 @@
+63075f3921b1df645993e992917c21d5
\ No newline at end of file
diff --git a/ios/build/ios/XCBuildData/PIFCache/project/PROJECT@v11_mod=3aa33423efeafd0f09c17710cc9b18c6_hash=bfdfe7dc352907fc980b868725387e98plugins=1OJSG6M1FOV3XYQCBH7Z29RZ0FPR9XDE1-json b/ios/build/ios/XCBuildData/PIFCache/project/PROJECT@v11_mod=3aa33423efeafd0f09c17710cc9b18c6_hash=bfdfe7dc352907fc980b868725387e98plugins=1OJSG6M1FOV3XYQCBH7Z29RZ0FPR9XDE1-json
new file mode 100644
index 0000000000..77eaec3162
--- /dev/null
+++ b/ios/build/ios/XCBuildData/PIFCache/project/PROJECT@v11_mod=3aa33423efeafd0f09c17710cc9b18c6_hash=bfdfe7dc352907fc980b868725387e98plugins=1OJSG6M1FOV3XYQCBH7Z29RZ0FPR9XDE1-json
@@ -0,0 +1 @@
+{"appPreferencesBuildSettings":{},"buildConfigurations":[{"buildSettings":{"ALWAYS_SEARCH_USER_PATHS":"NO","CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED":"YES","CLANG_ANALYZER_NONNULL":"YES","CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION":"YES_AGGRESSIVE","CLANG_CXX_LANGUAGE_STANDARD":"gnu++14","CLANG_CXX_LIBRARY":"libc++","CLANG_ENABLE_MODULES":"YES","CLANG_ENABLE_OBJC_ARC":"YES","CLANG_ENABLE_OBJC_WEAK":"YES","CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING":"YES","CLANG_WARN_BOOL_CONVERSION":"YES","CLANG_WARN_COMMA":"YES","CLANG_WARN_CONSTANT_CONVERSION":"YES","CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS":"YES","CLANG_WARN_DIRECT_OBJC_ISA_USAGE":"YES_ERROR","CLANG_WARN_DOCUMENTATION_COMMENTS":"YES","CLANG_WARN_EMPTY_BODY":"YES","CLANG_WARN_ENUM_CONVERSION":"YES","CLANG_WARN_INFINITE_RECURSION":"YES","CLANG_WARN_INT_CONVERSION":"YES","CLANG_WARN_NON_LITERAL_NULL_CONVERSION":"YES","CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF":"YES","CLANG_WARN_OBJC_LITERAL_CONVERSION":"YES","CLANG_WARN_OBJC_ROOT_CLASS":"YES_ERROR","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"YES","CLANG_WARN_RANGE_LOOP_ANALYSIS":"YES","CLANG_WARN_STRICT_PROTOTYPES":"YES","CLANG_WARN_SUSPICIOUS_MOVE":"YES","CLANG_WARN_UNGUARDED_AVAILABILITY":"YES_AGGRESSIVE","CLANG_WARN_UNREACHABLE_CODE":"YES","CLANG_WARN__DUPLICATE_METHOD_MATCH":"YES","COPY_PHASE_STRIP":"NO","DEBUG_INFORMATION_FORMAT":"dwarf","ENABLE_STRICT_OBJC_MSGSEND":"YES","ENABLE_TESTABILITY":"YES","GCC_C_LANGUAGE_STANDARD":"gnu11","GCC_DYNAMIC_NO_PIC":"NO","GCC_NO_COMMON_BLOCKS":"YES","GCC_OPTIMIZATION_LEVEL":"0","GCC_PREPROCESSOR_DEFINITIONS":"POD_CONFIGURATION_DEBUG=1 DEBUG=1 $(inherited)","GCC_WARN_64_TO_32_BIT_CONVERSION":"YES","GCC_WARN_ABOUT_RETURN_TYPE":"YES_ERROR","GCC_WARN_UNDECLARED_SELECTOR":"YES","GCC_WARN_UNINITIALIZED_AUTOS":"YES_AGGRESSIVE","GCC_WARN_UNUSED_FUNCTION":"YES","GCC_WARN_UNUSED_VARIABLE":"YES","IPHONEOS_DEPLOYMENT_TARGET":"12.0","MTL_ENABLE_DEBUG_INFO":"INCLUDE_SOURCE","MTL_FAST_MATH":"YES","ONLY_ACTIVE_ARCH":"YES","PRODUCT_NAME":"$(TARGET_NAME)","STRIP_INSTALLED_PRODUCT":"NO","SWIFT_ACTIVE_COMPILATION_CONDITIONS":"DEBUG","SWIFT_OPTIMIZATION_LEVEL":"-Onone","SWIFT_VERSION":"5.0","SYMROOT":"${SRCROOT}/../build"},"guid":"bfdfe7dc352907fc980b868725387e98814b7e2c3bac55ee99d78eaa8d1ec61e","name":"Debug"},{"buildSettings":{"ALWAYS_SEARCH_USER_PATHS":"NO","CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED":"YES","CLANG_ANALYZER_NONNULL":"YES","CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION":"YES_AGGRESSIVE","CLANG_CXX_LANGUAGE_STANDARD":"gnu++14","CLANG_CXX_LIBRARY":"libc++","CLANG_ENABLE_MODULES":"YES","CLANG_ENABLE_OBJC_ARC":"YES","CLANG_ENABLE_OBJC_WEAK":"YES","CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING":"YES","CLANG_WARN_BOOL_CONVERSION":"YES","CLANG_WARN_COMMA":"YES","CLANG_WARN_CONSTANT_CONVERSION":"YES","CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS":"YES","CLANG_WARN_DIRECT_OBJC_ISA_USAGE":"YES_ERROR","CLANG_WARN_DOCUMENTATION_COMMENTS":"YES","CLANG_WARN_EMPTY_BODY":"YES","CLANG_WARN_ENUM_CONVERSION":"YES","CLANG_WARN_INFINITE_RECURSION":"YES","CLANG_WARN_INT_CONVERSION":"YES","CLANG_WARN_NON_LITERAL_NULL_CONVERSION":"YES","CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF":"YES","CLANG_WARN_OBJC_LITERAL_CONVERSION":"YES","CLANG_WARN_OBJC_ROOT_CLASS":"YES_ERROR","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"YES","CLANG_WARN_RANGE_LOOP_ANALYSIS":"YES","CLANG_WARN_STRICT_PROTOTYPES":"YES","CLANG_WARN_SUSPICIOUS_MOVE":"YES","CLANG_WARN_UNGUARDED_AVAILABILITY":"YES_AGGRESSIVE","CLANG_WARN_UNREACHABLE_CODE":"YES","CLANG_WARN__DUPLICATE_METHOD_MATCH":"YES","COPY_PHASE_STRIP":"NO","DEBUG_INFORMATION_FORMAT":"dwarf-with-dsym","ENABLE_NS_ASSERTIONS":"NO","ENABLE_STRICT_OBJC_MSGSEND":"YES","GCC_C_LANGUAGE_STANDARD":"gnu11","GCC_NO_COMMON_BLOCKS":"YES","GCC_PREPROCESSOR_DEFINITIONS":"POD_CONFIGURATION_PROFILE=1 $(inherited)","GCC_WARN_64_TO_32_BIT_CONVERSION":"YES","GCC_WARN_ABOUT_RETURN_TYPE":"YES_ERROR","GCC_WARN_UNDECLARED_SELECTOR":"YES","GCC_WARN_UNINITIALIZED_AUTOS":"YES_AGGRESSIVE","GCC_WARN_UNUSED_FUNCTION":"YES","GCC_WARN_UNUSED_VARIABLE":"YES","IPHONEOS_DEPLOYMENT_TARGET":"12.0","MTL_ENABLE_DEBUG_INFO":"NO","MTL_FAST_MATH":"YES","PRODUCT_NAME":"$(TARGET_NAME)","STRIP_INSTALLED_PRODUCT":"NO","SWIFT_COMPILATION_MODE":"wholemodule","SWIFT_OPTIMIZATION_LEVEL":"-O","SWIFT_VERSION":"5.0","SYMROOT":"${SRCROOT}/../build"},"guid":"bfdfe7dc352907fc980b868725387e98c22f26ca3341c3062f2313dc737070d4","name":"Profile"},{"buildSettings":{"ALWAYS_SEARCH_USER_PATHS":"NO","CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED":"YES","CLANG_ANALYZER_NONNULL":"YES","CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION":"YES_AGGRESSIVE","CLANG_CXX_LANGUAGE_STANDARD":"gnu++14","CLANG_CXX_LIBRARY":"libc++","CLANG_ENABLE_MODULES":"YES","CLANG_ENABLE_OBJC_ARC":"YES","CLANG_ENABLE_OBJC_WEAK":"YES","CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING":"YES","CLANG_WARN_BOOL_CONVERSION":"YES","CLANG_WARN_COMMA":"YES","CLANG_WARN_CONSTANT_CONVERSION":"YES","CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS":"YES","CLANG_WARN_DIRECT_OBJC_ISA_USAGE":"YES_ERROR","CLANG_WARN_DOCUMENTATION_COMMENTS":"YES","CLANG_WARN_EMPTY_BODY":"YES","CLANG_WARN_ENUM_CONVERSION":"YES","CLANG_WARN_INFINITE_RECURSION":"YES","CLANG_WARN_INT_CONVERSION":"YES","CLANG_WARN_NON_LITERAL_NULL_CONVERSION":"YES","CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF":"YES","CLANG_WARN_OBJC_LITERAL_CONVERSION":"YES","CLANG_WARN_OBJC_ROOT_CLASS":"YES_ERROR","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"YES","CLANG_WARN_RANGE_LOOP_ANALYSIS":"YES","CLANG_WARN_STRICT_PROTOTYPES":"YES","CLANG_WARN_SUSPICIOUS_MOVE":"YES","CLANG_WARN_UNGUARDED_AVAILABILITY":"YES_AGGRESSIVE","CLANG_WARN_UNREACHABLE_CODE":"YES","CLANG_WARN__DUPLICATE_METHOD_MATCH":"YES","COPY_PHASE_STRIP":"NO","DEBUG_INFORMATION_FORMAT":"dwarf-with-dsym","ENABLE_NS_ASSERTIONS":"NO","ENABLE_STRICT_OBJC_MSGSEND":"YES","GCC_C_LANGUAGE_STANDARD":"gnu11","GCC_NO_COMMON_BLOCKS":"YES","GCC_PREPROCESSOR_DEFINITIONS":"POD_CONFIGURATION_RELEASE=1 $(inherited)","GCC_WARN_64_TO_32_BIT_CONVERSION":"YES","GCC_WARN_ABOUT_RETURN_TYPE":"YES_ERROR","GCC_WARN_UNDECLARED_SELECTOR":"YES","GCC_WARN_UNINITIALIZED_AUTOS":"YES_AGGRESSIVE","GCC_WARN_UNUSED_FUNCTION":"YES","GCC_WARN_UNUSED_VARIABLE":"YES","IPHONEOS_DEPLOYMENT_TARGET":"12.0","MTL_ENABLE_DEBUG_INFO":"NO","MTL_FAST_MATH":"YES","PRODUCT_NAME":"$(TARGET_NAME)","STRIP_INSTALLED_PRODUCT":"NO","SWIFT_COMPILATION_MODE":"wholemodule","SWIFT_OPTIMIZATION_LEVEL":"-O","SWIFT_VERSION":"5.0","SYMROOT":"${SRCROOT}/../build"},"guid":"bfdfe7dc352907fc980b868725387e9828903703a9fe9e3707306e58aab67b51","name":"Release"}],"classPrefix":"","defaultConfigurationName":"Release","developmentRegion":"en","groupTree":{"children":[{"fileType":"text.script.ruby","guid":"bfdfe7dc352907fc980b868725387e98d0b25d39b515a574839e998df229c3cb","path":"../Podfile","sourceTree":"SOURCE_ROOT","type":"file"},{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e982254b4d92670ee61e1baec1ccbd2a03a","path":"../../../../../../../../../../.pub-cache/hosted/pub.dev/awesome_notifications-0.9.3+1/ios/Classes/AwesomeNotificationsPlugin.h","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.objc","guid":"bfdfe7dc352907fc980b868725387e983faec894516491199e76d7c4e846aff4","path":"../../../../../../../../../../.pub-cache/hosted/pub.dev/awesome_notifications-0.9.3+1/ios/Classes/AwesomeNotificationsPlugin.m","sourceTree":"","type":"file"},{"children":[{"fileType":"sourcecode.swift","guid":"bfdfe7dc352907fc980b868725387e98182f5fdcbb0d15ab26605034a9bdeb1d","path":"../../../../../../../../../../../.pub-cache/hosted/pub.dev/awesome_notifications-0.9.3+1/ios/Classes/lib/DartAwesomeNotificationsExtension.swift","sourceTree":"","type":"file"},{"fileType":"sourcecode.swift","guid":"bfdfe7dc352907fc980b868725387e9833bd8627609517f1457611a529597d2c","path":"../../../../../../../../../../../.pub-cache/hosted/pub.dev/awesome_notifications-0.9.3+1/ios/Classes/lib/DartBackgroundExecutor.swift","sourceTree":"","type":"file"},{"fileType":"sourcecode.swift","guid":"bfdfe7dc352907fc980b868725387e98d6e3d0f387c450b190a6281f04095460","path":"../../../../../../../../../../../.pub-cache/hosted/pub.dev/awesome_notifications-0.9.3+1/ios/Classes/lib/FlutterAudioUtils.swift","sourceTree":"","type":"file"},{"fileType":"sourcecode.swift","guid":"bfdfe7dc352907fc980b868725387e9855304095c8a15255f325df7bd12882fc","path":"../../../../../../../../../../../.pub-cache/hosted/pub.dev/awesome_notifications-0.9.3+1/ios/Classes/lib/FlutterBitmapUtils.swift","sourceTree":"","type":"file"},{"fileType":"sourcecode.swift","guid":"bfdfe7dc352907fc980b868725387e986f92e757c37f66727449a114168968e0","path":"../../../../../../../../../../../.pub-cache/hosted/pub.dev/awesome_notifications-0.9.3+1/ios/Classes/lib/SwiftAwesomeNotificationsPlugin.swift","sourceTree":"","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e980dd7819bec0f13ee14476932e5b4272f","name":"lib","path":"lib","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e988bfee3f66c41c7fcf96395c6d2ac2fa0","name":"Classes","path":"Classes","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98d0ea151785f98bba640bae5660309ae4","name":"ios","path":"ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e980fb6a6f14d8b3566d990b81a62c8ee8a","name":"awesome_notifications","path":"awesome_notifications","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9860ae3f0951d3afb09d4b8d841e1e400a","name":"plugins","path":"plugins","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e985e6842f712bfd126adc2a027570ec163","name":".symlinks","path":".symlinks","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98c5b3ff4b0268959f492af771adf5ae2e","name":"ios","path":"ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9893527ba68fafcc88b4a340b60634d475","name":"BLT-Flutter","path":"BLT-Flutter","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98af338d3bdc82762e33564eec29c065f8","name":"Owasp","path":"Owasp","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98bea9105a70bbbb67f165712bb198b54c","name":"Gsoc-Orgs","path":"Gsoc-Orgs","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98e81bda4029f3d186cf5ab324904250d9","name":"Desktop","path":"Desktop","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e985ace925063b79842928b50c9a41bebf7","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e984ead7120d6fb756691c5f56392b3edbe","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e986d7239424c24a3d5ba5c621093dc8591","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e986e091c12ac2dd92fc8196aa4c633da41","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e987023745595e8cdbd716bcdeb5134a283","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e984725667f4a0796a99ec5e024f0f0adb4","name":"..","path":"../../../../../../../../../.pub-cache/hosted/pub.dev/awesome_notifications-0.9.3+1/ios","sourceTree":"","type":"group"},{"children":[{"fileType":"text.script.ruby","guid":"bfdfe7dc352907fc980b868725387e98bab42ea039a4a946b11ad24581b2fbae","path":"../../../../../../../../../.pub-cache/hosted/pub.dev/awesome_notifications-0.9.3+1/ios/awesome_notifications.podspec","sourceTree":"","type":"file"},{"fileType":"text","guid":"bfdfe7dc352907fc980b868725387e986da4a21a1cc6e473fde7360e3527a0be","path":"../../../../../../../../../.pub-cache/hosted/pub.dev/awesome_notifications-0.9.3+1/LICENSE","sourceTree":"","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e98594c5347e8442094faf9286dc8d6c4ea","name":"Pod","path":"","sourceTree":"","type":"group"},{"children":[{"fileType":"sourcecode.module-map","guid":"bfdfe7dc352907fc980b868725387e988c094a58f64829b283c274f88307e093","path":"awesome_notifications.modulemap","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.objc","guid":"bfdfe7dc352907fc980b868725387e9868a2df5e880f04e9ff528622b92ba22a","path":"awesome_notifications-dummy.m","sourceTree":"","type":"file"},{"fileType":"text.plist.xml","guid":"bfdfe7dc352907fc980b868725387e98801a40a1eb88a25cbdbbe496148e92df","path":"awesome_notifications-Info.plist","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e981632c3cb97193fe6f60108fe0e1cc53a","path":"awesome_notifications-prefix.pch","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e9832924c0fa460c59424ef07d758c0c95a","path":"awesome_notifications-umbrella.h","sourceTree":"","type":"file"},{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e988e3e4c9e508ec10eed426f9fb9239e17","path":"awesome_notifications.debug.xcconfig","sourceTree":"","type":"file"},{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e98fa2a13011c032e8172bc6e1fcef469be","path":"awesome_notifications.release.xcconfig","sourceTree":"","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e985e1f4d9701ab14b016dc4c5baf134871","name":"Support Files","path":"../../../../Pods/Target Support Files/awesome_notifications","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e980d4199133dbb60d46d4cde483d4cdff9","name":"awesome_notifications","path":"../.symlinks/plugins/awesome_notifications/ios","sourceTree":"","type":"group"},{"children":[{"children":[{"fileType":"text.script.ruby","guid":"bfdfe7dc352907fc980b868725387e9869805b8b62e63a405272717a727cd85b","path":"Flutter.podspec","sourceTree":"","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e983aca2fb4933c5f14b7a0eba449ba6c07","name":"Pod","path":"","sourceTree":"","type":"group"},{"children":[{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e9803a83313aa1a35f1e33b8e4df25ea6e4","path":"Flutter.debug.xcconfig","sourceTree":"","type":"file"},{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e98ca0db135251d5a4fee5251b05819d0fd","path":"Flutter.release.xcconfig","sourceTree":"","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e9817df4bf044d1860f91cb31ba44dbba8c","name":"Support Files","path":"../Pods/Target Support Files/Flutter","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e983ed35b05f91f9ef206be7306e1f17a3d","name":"Flutter","path":"../Flutter","sourceTree":"","type":"group"},{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"fileType":"sourcecode.swift","guid":"bfdfe7dc352907fc980b868725387e980c519cefcef5064a565e40d8a110031a","path":"../../../../../../../../../../.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.2/ios/Classes/FlutterSecureStorage.swift","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e985e3ed34a03de3e1b7468bf50a12983d7","path":"../../../../../../../../../../.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.2/ios/Classes/FlutterSecureStoragePlugin.h","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.objc","guid":"bfdfe7dc352907fc980b868725387e98a2199d5a2826fa5ab320850d59d949b7","path":"../../../../../../../../../../.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.2/ios/Classes/FlutterSecureStoragePlugin.m","sourceTree":"","type":"file"},{"fileType":"sourcecode.swift","guid":"bfdfe7dc352907fc980b868725387e98460d59a9887d47e4009ffbc47d36d2ba","path":"../../../../../../../../../../.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.2/ios/Classes/SwiftFlutterSecureStoragePlugin.swift","sourceTree":"","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e98e8391f5a667f1763b7c608530baec40a","name":"Classes","path":"Classes","sourceTree":"","type":"group"},{"children":[{"fileType":"text.xml","guid":"bfdfe7dc352907fc980b868725387e988e38bfe0931c14ecb1988028cff7a483","path":"../../../../../../../../../../.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.2/ios/Resources/PrivacyInfo.xcprivacy","sourceTree":"","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e98dfa67b76881ce92cf11518790e6d2390","name":"Resources","path":"Resources","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e982cea439e97f92cb60d8c962dacbfe5d9","name":"ios","path":"ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e987689f9279966d40d19881b1b74bab6a0","name":"flutter_secure_storage","path":"flutter_secure_storage","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98461ccf29ba19eecfea1d2ac83f55f370","name":"plugins","path":"plugins","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98f9b00fb5f20d6b9860bcd925e8b981a9","name":".symlinks","path":".symlinks","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98930bf783b60b3dc5a35b3d3d5c58ecc7","name":"ios","path":"ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98821f88af5b01dbebe891c283f9b61485","name":"BLT-Flutter","path":"BLT-Flutter","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98184294d9cbc3e7083bd3ece1287c942b","name":"Owasp","path":"Owasp","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9894514a5f3b650832a5d0facda38b72f1","name":"Gsoc-Orgs","path":"Gsoc-Orgs","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e986a9830058eca45f862617f8682417ff6","name":"Desktop","path":"Desktop","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98a143b3598339240d0b477f2e6d832353","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98909f1a8449cbc0322153288ab093a2ff","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e989191f4f2643e36adcd3f8e18f337818a","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e989d016f26612ea000df86fb88c3f49002","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9847e37890f882201977307eb2767d236a","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e980af27cba8493047f9d0fa2855237c455","name":"..","path":"../../../../../../../../../.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.2/ios","sourceTree":"","type":"group"},{"children":[{"fileType":"text.script.ruby","guid":"bfdfe7dc352907fc980b868725387e98b0589d2c2e54ca7e45c10f130de11b6e","path":"../../../../../../../../../.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.2/ios/flutter_secure_storage.podspec","sourceTree":"","type":"file"},{"fileType":"text","guid":"bfdfe7dc352907fc980b868725387e989f18c6921d22cd7d6ebbf95302d7d244","path":"../../../../../../../../../.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.2/LICENSE","sourceTree":"","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e98b51c62be3887db75834dd5d249f63a6a","name":"Pod","path":"","sourceTree":"","type":"group"},{"children":[{"fileType":"sourcecode.module-map","guid":"bfdfe7dc352907fc980b868725387e98eacc7de88944cc1a0a63249a5a459aef","path":"flutter_secure_storage.modulemap","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.objc","guid":"bfdfe7dc352907fc980b868725387e986a495c995f5d51dca56b8c052593d498","path":"flutter_secure_storage-dummy.m","sourceTree":"","type":"file"},{"fileType":"text.plist.xml","guid":"bfdfe7dc352907fc980b868725387e98f795f5f8be0b5c13ce0ad8e6a7660073","path":"flutter_secure_storage-Info.plist","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e985fd5b079dcb48cd89a927ae023332fac","path":"flutter_secure_storage-prefix.pch","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e9829a7d7ba4d9286d1f5dcd2aa6ea76246","path":"flutter_secure_storage-umbrella.h","sourceTree":"","type":"file"},{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e98ec566dec0d3bcb1a8c8e80fcbed88472","path":"flutter_secure_storage.debug.xcconfig","sourceTree":"","type":"file"},{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e9846ae5e967531308cb31bb3cdfee8c6e6","path":"flutter_secure_storage.release.xcconfig","sourceTree":"","type":"file"},{"fileType":"text.plist.xml","guid":"bfdfe7dc352907fc980b868725387e9859c57f514ddb1f0186bbdcdd2f48216c","path":"ResourceBundle-flutter_secure_storage-flutter_secure_storage-Info.plist","sourceTree":"","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e989f7d4485d2ed9affff1123538bc09524","name":"Support Files","path":"../../../../Pods/Target Support Files/flutter_secure_storage","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e987cb9332005133ddb537d4155710a0b69","name":"flutter_secure_storage","path":"../.symlinks/plugins/flutter_secure_storage/ios","sourceTree":"","type":"group"},{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"fileType":"text.xml","guid":"bfdfe7dc352907fc980b868725387e9806f505eb5aeebbaddf7384d64f4177a8","path":"../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/Resources/PrivacyInfo.xcprivacy","sourceTree":"","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e98e9da8e5586c4072fd6b959f76b6278ae","name":"Resources","path":"Resources","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98422c35cf7e69c9c97bb9770897fc80ec","name":"image_picker_ios","path":"image_picker_ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98470101ce04e633f6eca20c4c613f97d5","name":"Sources","path":"Sources","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98591bf4dd42ec0ce284d9f3d4c860d8ad","name":"image_picker_ios","path":"image_picker_ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98a3758f584037b9ea3b7d1f395ca81421","name":"ios","path":"ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9810642602052945ac387dc95ef50a1287","name":"image_picker_ios","path":"image_picker_ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98d29a33d68652cd0299d816e6c1cdbdea","name":"plugins","path":"plugins","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e981b984d2d2d8e1d660d22dd98ddc01da6","name":".symlinks","path":".symlinks","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98492d1638df05ecf9cf971db8e46779fc","name":"ios","path":"ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98a7f07f27a1a2f9832128b24cea13b409","name":"BLT-Flutter","path":"BLT-Flutter","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98031b19962215fef245e4031a26c1ade7","name":"Owasp","path":"Owasp","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98d19a712bbef5a6065ccf0b31097196a7","name":"Gsoc-Orgs","path":"Gsoc-Orgs","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98f06737d679441c36b21d43f55f490f13","name":"Desktop","path":"Desktop","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9843321df187ee937904e44426923cb76d","name":"..","path":".","sourceTree":"","type":"group"},{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"fileType":"sourcecode.c.objc","guid":"bfdfe7dc352907fc980b868725387e986f001c6fa2aed2f62c45c3c70e844d3d","path":"../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/FLTImagePickerImageUtil.m","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.objc","guid":"bfdfe7dc352907fc980b868725387e98a64befaecc51b03474e4d7c3bd9f9a0d","path":"../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/FLTImagePickerMetaDataUtil.m","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.objc","guid":"bfdfe7dc352907fc980b868725387e98d1a2e68edf99761bad027821e65510aa","path":"../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/FLTImagePickerPhotoAssetUtil.m","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.objc","guid":"bfdfe7dc352907fc980b868725387e98f0c7a9665ffdb5d0289820717829e42f","path":"../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/FLTImagePickerPlugin.m","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.objc","guid":"bfdfe7dc352907fc980b868725387e98f4faa4a9757bea0e0861bb2339f6e7c2","path":"../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/FLTPHPickerSaveImageToPathOperation.m","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.objc","guid":"bfdfe7dc352907fc980b868725387e98e9a1b4ff957d0a0dbce49ed22602c50a","path":"../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/messages.g.m","sourceTree":"","type":"file"},{"children":[{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e988fed2ec51b07951569fa79b0d7a0df57","path":"../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios-umbrella.h","sourceTree":"","type":"file"},{"children":[{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e9820cabde8ccbe69d35da1cf0214a55697","path":"../../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTImagePickerImageUtil.h","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e98329700b659ab95b3fe70a18a1c7b4d58","path":"../../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTImagePickerMetaDataUtil.h","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e989f38476bd137f67587f3afae3692aea4","path":"../../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTImagePickerPhotoAssetUtil.h","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e987f35a814703c168c2d3b181c32b12d48","path":"../../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTImagePickerPlugin.h","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e98ad41a1dc66e7e467e044cad0684b22d6","path":"../../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTImagePickerPlugin_Test.h","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e984702f1aaa998ad72d6bf23985c2aa243","path":"../../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTPHPickerSaveImageToPathOperation.h","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e98710a52a58567b3736e04d4617f0ccedb","path":"../../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/messages.g.h","sourceTree":"","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e98490c4b166b215bc3546a11bd52c9b1e8","name":"image_picker_ios","path":"image_picker_ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9821be24524b5920a784a254b88edc335a","name":"include","path":"include","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e981cc46017b2cc45bece53b8ae380a54cd","name":"image_picker_ios","path":"image_picker_ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e981bf053fca4caf637d4a6a7dfea373777","name":"Sources","path":"Sources","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98992bdd4950c3b63a2d25a2147388d325","name":"image_picker_ios","path":"image_picker_ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98275199d3accc71fbd48c94e9c6bac716","name":"ios","path":"ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9869ba8bdeae03408a18ccc800e32217a2","name":"image_picker_ios","path":"image_picker_ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9819c344fd0ace29926b16fdc3b8f0aa54","name":"plugins","path":"plugins","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98231307d9d1e107b53e8cf2e040f2f7c5","name":".symlinks","path":".symlinks","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e987656bb3f8f07020f042724f105a2e4d2","name":"ios","path":"ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9801b0e3f1a383bdb9c5647a699acc3dae","name":"BLT-Flutter","path":"BLT-Flutter","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9858ef4aebfacad61bcdffededeaeef979","name":"Owasp","path":"Owasp","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98389764790eebe106bd8c5123a13a6859","name":"Gsoc-Orgs","path":"Gsoc-Orgs","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e980d3a6ed8a8fabe5e2dad30dfd863d7bb","name":"Desktop","path":"Desktop","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98e1a068c1bd8854900d9ca0603a46794a","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98db4d53f78b322140b147f0cd0638b4bd","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98ba998519b518f104a0b2cf03efc6366e","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98d9d507643324597d2e3a62d413a0b549","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98c2eba674493598127ccfcc5b0a484cd6","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98ea67258d7e106655e312fd272c2699f6","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e982e2aef4d65ace4faea300568fc5e84d7","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9877a632b64174cb9357eabfc76044f29a","name":"..","path":"../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources","sourceTree":"","type":"group"},{"children":[{"fileType":"text.script.ruby","guid":"bfdfe7dc352907fc980b868725387e98c4285bf8e565276b80b4fb857b3f22fd","path":"../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios.podspec","sourceTree":"","type":"file"},{"fileType":"sourcecode.module-map","guid":"bfdfe7dc352907fc980b868725387e988d8b78d5607774794fc170dda5008c7d","path":"../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/include/ImagePickerPlugin.modulemap","sourceTree":"","type":"file"},{"fileType":"text","guid":"bfdfe7dc352907fc980b868725387e98c4e416058dab78729594ec2d0001a5fc","path":"../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/LICENSE","sourceTree":"","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e98c93d422e4e7b67626a70afb1295ac768","name":"Pod","path":"","sourceTree":"","type":"group"},{"children":[{"fileType":"sourcecode.module-map","guid":"bfdfe7dc352907fc980b868725387e982072b07e2991328a3774d02fc2499ce2","path":"image_picker_ios.modulemap","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.objc","guid":"bfdfe7dc352907fc980b868725387e984f8ccb9e50bdcb15b46e056edab1bd0f","path":"image_picker_ios-dummy.m","sourceTree":"","type":"file"},{"fileType":"text.plist.xml","guid":"bfdfe7dc352907fc980b868725387e98eb96ca5cd38d6b45c5899d36bf94d9cb","path":"image_picker_ios-Info.plist","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e98426d69882e7bcb06512ba125b60b4476","path":"image_picker_ios-prefix.pch","sourceTree":"","type":"file"},{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e98aeacf04980c0d10c7801ccf134d5358e","path":"image_picker_ios.debug.xcconfig","sourceTree":"","type":"file"},{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e986a0fbb7ebea509572f9ade7ca304aebf","path":"image_picker_ios.release.xcconfig","sourceTree":"","type":"file"},{"fileType":"text.plist.xml","guid":"bfdfe7dc352907fc980b868725387e985254d53daec5c6ec6124a3cbe6e40757","path":"ResourceBundle-image_picker_ios_privacy-image_picker_ios-Info.plist","sourceTree":"","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e98da2ba70df441d53d2d4ec8eac2967f65","name":"Support Files","path":"../../../../Pods/Target Support Files/image_picker_ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9875f1609f1893a0cf8d40f71da98542d8","name":"image_picker_ios","path":"../.symlinks/plugins/image_picker_ios/ios","sourceTree":"","type":"group"},{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"fileType":"sourcecode.c.objc","guid":"bfdfe7dc352907fc980b868725387e9842f732e0478858df41d8276f847002f8","path":"../../../../../../../../../../../../.pub-cache/hosted/pub.dev/package_info_plus-8.1.0/ios/package_info_plus/Sources/package_info_plus/FPPPackageInfoPlusPlugin.m","sourceTree":"","type":"file"},{"fileType":"text.xml","guid":"bfdfe7dc352907fc980b868725387e981bba22f27c0360d9cb662bfdb5911ee3","path":"../../../../../../../../../../../../.pub-cache/hosted/pub.dev/package_info_plus-8.1.0/ios/package_info_plus/Sources/package_info_plus/PrivacyInfo.xcprivacy","sourceTree":"","type":"file"},{"children":[{"children":[{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e9853fd1a5f0cfb0c74648d7786eeb77d84","path":"../../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/package_info_plus-8.1.0/ios/package_info_plus/Sources/package_info_plus/include/package_info_plus/FPPPackageInfoPlusPlugin.h","sourceTree":"","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e98732031c9c0fde664e261f64053bc5b32","name":"package_info_plus","path":"package_info_plus","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e980a71ab10a1e633335653ecd86979887a","name":"include","path":"include","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e980e4260f0ee6897bd24a553093fe4ca0b","name":"package_info_plus","path":"package_info_plus","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9812df4b54a2237659712b719ff6185c97","name":"Sources","path":"Sources","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98934e870022e235196dedea7c46e9dbca","name":"package_info_plus","path":"package_info_plus","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98a828153699563b42a5e26c6949832642","name":"ios","path":"ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98d96ed561e55076bf960987bddf2f191e","name":"package_info_plus","path":"package_info_plus","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98787d8f5e1d2d7d6ce9604a94e4122d57","name":"plugins","path":"plugins","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e981c48dffcb4df8dd1ea2886e3ac29b709","name":".symlinks","path":".symlinks","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98a3da76590fc02bc50e40866b8e721831","name":"ios","path":"ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98c3f9b24f394d0b29a6c8f346030ded34","name":"BLT-Flutter","path":"BLT-Flutter","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9848d919adab8ecb9943861e59c836df4e","name":"Owasp","path":"Owasp","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98b8251f1db6f2546682054aab4e2bd83c","name":"Gsoc-Orgs","path":"Gsoc-Orgs","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98ddfccb80d564e4033edc4a290282a7f8","name":"Desktop","path":"Desktop","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9862863316804e9ac10671fe27e2849046","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98fac750cc3a1868f064e8c5e4314e4728","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98b03d17401a429a274605e106352ff657","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e982fa07b03bb72a219287403ce13b68dbb","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e989aced9df9c1ed949062189941a239155","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e984e05cb51b850469d224f49b768eb6e8a","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98404fb846592c9216ba2d70a866e81888","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98b0cc501c161729b9e1f7faa1655f0504","name":"..","path":"../../../../../../../../../.pub-cache/hosted/pub.dev/package_info_plus-8.1.0/ios/package_info_plus/Sources","sourceTree":"","type":"group"},{"children":[{"fileType":"text","guid":"bfdfe7dc352907fc980b868725387e987422d89e765a1c17448081c20b834007","path":"../../../../../../../../../.pub-cache/hosted/pub.dev/package_info_plus-8.1.0/LICENSE","sourceTree":"","type":"file"},{"fileType":"text.script.ruby","guid":"bfdfe7dc352907fc980b868725387e98f9bbd30f40b6d4b8e0731848158a3a04","path":"../../../../../../../../../.pub-cache/hosted/pub.dev/package_info_plus-8.1.0/ios/package_info_plus.podspec","sourceTree":"","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e9822cf3d122b0ede0bc2efc0b181484d4f","name":"Pod","path":"","sourceTree":"","type":"group"},{"children":[{"fileType":"sourcecode.module-map","guid":"bfdfe7dc352907fc980b868725387e984839ddfe511ab90d099579e80cba1f1e","path":"package_info_plus.modulemap","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.objc","guid":"bfdfe7dc352907fc980b868725387e98f5a5aec76b5ff69c50a0e7180d243776","path":"package_info_plus-dummy.m","sourceTree":"","type":"file"},{"fileType":"text.plist.xml","guid":"bfdfe7dc352907fc980b868725387e986e4f325d77841ba210fdf2effcb4555b","path":"package_info_plus-Info.plist","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e989ee8619e95fa3e58a716f4e541243c1f","path":"package_info_plus-prefix.pch","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e98ece7405aa6136bbe0727c293d4710d23","path":"package_info_plus-umbrella.h","sourceTree":"","type":"file"},{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e9877271da6fbfde452ae25ca6b9d763cbe","path":"package_info_plus.debug.xcconfig","sourceTree":"","type":"file"},{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e98400c1ca73043f67e2ad6e92608c085a1","path":"package_info_plus.release.xcconfig","sourceTree":"","type":"file"},{"fileType":"text.plist.xml","guid":"bfdfe7dc352907fc980b868725387e984485257bd1622ff736e830e787c1ede3","path":"ResourceBundle-package_info_plus_privacy-package_info_plus-Info.plist","sourceTree":"","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e98781e431b865902d86b3621a30f79c8e5","name":"Support Files","path":"../../../../Pods/Target Support Files/package_info_plus","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9802baa8d0961b3cd2fc85c81c39e7d6b9","name":"package_info_plus","path":"../.symlinks/plugins/package_info_plus/ios","sourceTree":"","type":"group"},{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e98d398ad1df1c24be6f5aee295ee8bf75d","path":"../../../../../../../../../../.pub-cache/hosted/pub.dev/pasteboard-0.2.0/ios/Classes/PasteboardPlugin.h","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.objc","guid":"bfdfe7dc352907fc980b868725387e9828e124a62c646d4a105e17e5be19eec9","path":"../../../../../../../../../../.pub-cache/hosted/pub.dev/pasteboard-0.2.0/ios/Classes/PasteboardPlugin.m","sourceTree":"","type":"file"},{"fileType":"sourcecode.swift","guid":"bfdfe7dc352907fc980b868725387e9821f9f0f1a3e1700ed74b913156538616","path":"../../../../../../../../../../.pub-cache/hosted/pub.dev/pasteboard-0.2.0/ios/Classes/SwiftPasteboardPlugin.swift","sourceTree":"","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e98eceb5fad7677cf256a95f75be2d832f9","name":"Classes","path":"Classes","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98a3c1dda15b47ff8d0960e7cb69bdc313","name":"ios","path":"ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98fcde399e662d80bafb6863b0608a20d8","name":"pasteboard","path":"pasteboard","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9858c204cda49ac6e4e5acdc62b54f90b1","name":"plugins","path":"plugins","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98bc95173120f730136c84bd348cf14432","name":".symlinks","path":".symlinks","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e983f581cf8b33d07f1862c6ce794bfe805","name":"ios","path":"ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98c91deea5de479cbe6d5424f84a25802a","name":"BLT-Flutter","path":"BLT-Flutter","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98700fdb79c57abc0924fde66f530e1488","name":"Owasp","path":"Owasp","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98be9057dc0ba656295b8a891038a7f717","name":"Gsoc-Orgs","path":"Gsoc-Orgs","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e980a15711c9bb2811fb5f981ad56f087df","name":"Desktop","path":"Desktop","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9800a407fcc0096dd35e9a893fd52b71d0","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98ce9a6c0800ce70986cc27f64f76e5205","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98558d961409c6c5e918eeac79c24bea7d","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98087d03c33ec9a02c3996193cc427076d","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98fb7e28748a364d0aac519dd4e1034429","name":"..","path":"..","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98ee3786a6e0fbd8d8732b4a2ba7f02716","name":"..","path":"../../../../../../../../../.pub-cache/hosted/pub.dev/pasteboard-0.2.0/ios","sourceTree":"","type":"group"},{"children":[{"fileType":"text","guid":"bfdfe7dc352907fc980b868725387e98d55a3d6fe08ceeb56163301790499705","path":"../../../../../../../../../.pub-cache/hosted/pub.dev/pasteboard-0.2.0/LICENSE","sourceTree":"","type":"file"},{"fileType":"text.script.ruby","guid":"bfdfe7dc352907fc980b868725387e9852a1fd6ed072b5400b82082886a53609","path":"../../../../../../../../../.pub-cache/hosted/pub.dev/pasteboard-0.2.0/ios/pasteboard.podspec","sourceTree":"","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e98b297e69cad1e63ab3395d99a99f9c430","name":"Pod","path":"","sourceTree":"","type":"group"},{"children":[{"fileType":"sourcecode.module-map","guid":"bfdfe7dc352907fc980b868725387e98a9ba284bfb8ecca43ad4349517d85186","path":"pasteboard.modulemap","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.objc","guid":"bfdfe7dc352907fc980b868725387e988fd10d94a83626c37d3334555f85d237","path":"pasteboard-dummy.m","sourceTree":"","type":"file"},{"fileType":"text.plist.xml","guid":"bfdfe7dc352907fc980b868725387e987422f3f678debe6413f5ebd4f9024ff0","path":"pasteboard-Info.plist","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e98345a2683732c63937992a7436a15dcdd","path":"pasteboard-prefix.pch","sourceTree":"","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e9857555e1a1999820650f08bf517cf8b60","path":"pasteboard-umbrella.h","sourceTree":"","type":"file"},{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e988726e599b30bac5cad7f9ad0d1d6dce1","path":"pasteboard.debug.xcconfig","sourceTree":"","type":"file"},{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e98a81045b664b11760f486ced3c5b512d0","path":"pasteboard.release.xcconfig","sourceTree":"","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e98171425e7165f44fdc4c60400bc9ef2b0","name":"Support Files","path":"../../../../Pods/Target Support Files/pasteboard","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98eb9cafdb8e07739e217d02ec62333b53","name":"pasteboard","path":"../.symlinks/plugins/pasteboard/ios","sourceTree":"","type":"group"},{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"fileType":"text.xml","guid":"bfdfe7dc352907fc980b868725387e98a94820a3eff0ba8d175da1e7cd7cbae8","path":"../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.0/darwin/path_provider_foundation/Sources/path_provider_foundation/Resources/PrivacyInfo.xcprivacy","sourceTree":"","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e98b81ba71019e7e5579bf85d691438460b","name":"Resources","path":"Resources","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9864a383d56ff14808a589df7934c922ee","name":"path_provider_foundation","path":"path_provider_foundation","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e982eda6b350207499e03c8466dafd17eea","name":"Sources","path":"Sources","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e985ee89b4a2b2eadf459dad8742abd5cea","name":"path_provider_foundation","path":"path_provider_foundation","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e986a021a739d04a87df8aecc9b3d2749de","name":"darwin","path":"darwin","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9817ff3cf3470e0e763a7bd849c9534684","name":"path_provider_foundation","path":"path_provider_foundation","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e986e7637d738123fd23ab9bfc54e7c851b","name":"plugins","path":"plugins","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98ae2505204c5b6b3b990a7a164b33bfa7","name":".symlinks","path":".symlinks","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e989ab8f19601f22c0e62f5e6096213ce9f","name":"ios","path":"ios","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98384b76c19ccd815e719a44e860e955c8","name":"BLT-Flutter","path":"BLT-Flutter","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98d634717929e62e78d7ec02e781dd64b3","name":"Owasp","path":"Owasp","sourceTree":"","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98d627e25470822bceaac9ac32a7541136","name":"Gsoc-Orgs","path":"Gsoc-Orgs","sourceTree":"