detox 20.43.0-alpha.0 → 20.44.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/Detox-android/com/wix/detox/{20.43.0-alpha.0/detox-20.43.0-alpha.0-sources.jar → 20.44.0-alpha.0/detox-20.44.0-alpha.0-sources.jar} +0 -0
  2. package/Detox-android/com/wix/detox/20.44.0-alpha.0/detox-20.44.0-alpha.0-sources.jar.md5 +1 -0
  3. package/Detox-android/com/wix/detox/20.44.0-alpha.0/detox-20.44.0-alpha.0-sources.jar.sha1 +1 -0
  4. package/Detox-android/com/wix/detox/20.44.0-alpha.0/detox-20.44.0-alpha.0-sources.jar.sha256 +1 -0
  5. package/Detox-android/com/wix/detox/20.44.0-alpha.0/detox-20.44.0-alpha.0-sources.jar.sha512 +1 -0
  6. package/Detox-android/com/wix/detox/20.44.0-alpha.0/detox-20.44.0-alpha.0.aar +0 -0
  7. package/Detox-android/com/wix/detox/20.44.0-alpha.0/detox-20.44.0-alpha.0.aar.md5 +1 -0
  8. package/Detox-android/com/wix/detox/20.44.0-alpha.0/detox-20.44.0-alpha.0.aar.sha1 +1 -0
  9. package/Detox-android/com/wix/detox/20.44.0-alpha.0/detox-20.44.0-alpha.0.aar.sha256 +1 -0
  10. package/Detox-android/com/wix/detox/20.44.0-alpha.0/detox-20.44.0-alpha.0.aar.sha512 +1 -0
  11. package/Detox-android/com/wix/detox/{20.43.0-alpha.0/detox-20.43.0-alpha.0.pom → 20.44.0-alpha.0/detox-20.44.0-alpha.0.pom} +1 -1
  12. package/Detox-android/com/wix/detox/20.44.0-alpha.0/detox-20.44.0-alpha.0.pom.md5 +1 -0
  13. package/Detox-android/com/wix/detox/20.44.0-alpha.0/detox-20.44.0-alpha.0.pom.sha1 +1 -0
  14. package/Detox-android/com/wix/detox/20.44.0-alpha.0/detox-20.44.0-alpha.0.pom.sha256 +1 -0
  15. package/Detox-android/com/wix/detox/20.44.0-alpha.0/detox-20.44.0-alpha.0.pom.sha512 +1 -0
  16. package/Detox-android/com/wix/detox/maven-metadata.xml +4 -4
  17. package/Detox-android/com/wix/detox/maven-metadata.xml.md5 +1 -1
  18. package/Detox-android/com/wix/detox/maven-metadata.xml.sha1 +1 -1
  19. package/Detox-android/com/wix/detox/maven-metadata.xml.sha256 +1 -1
  20. package/Detox-android/com/wix/detox/maven-metadata.xml.sha512 +1 -1
  21. package/Detox-ios-framework.tbz +0 -0
  22. package/Detox-ios-src.tbz +0 -0
  23. package/Detox-ios-xcuitest.tbz +0 -0
  24. package/android/detox/proguard-rules-app.pro +1 -0
  25. package/android/detox/src/full/java/com/wix/detox/common/KotlinReflectUtils.kt +33 -0
  26. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/animations/AnimatedModuleIdlingResource.kt +4 -14
  27. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/network/NetworkingModuleReflected.kt +4 -4
  28. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/timers/JavaTimersReflected.kt +12 -6
  29. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/uimodule/fabric/FabricUIManagerIdlingResources.kt +14 -3
  30. package/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  31. package/android/rninfo.gradle +1 -0
  32. package/package.json +11 -11
  33. package/scripts/updateGradle.js +1 -1
  34. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0-sources.jar.md5 +0 -1
  35. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0-sources.jar.sha1 +0 -1
  36. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0-sources.jar.sha256 +0 -1
  37. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0-sources.jar.sha512 +0 -1
  38. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0.aar +0 -0
  39. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0.aar.md5 +0 -1
  40. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0.aar.sha1 +0 -1
  41. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0.aar.sha256 +0 -1
  42. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0.aar.sha512 +0 -1
  43. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0.pom.md5 +0 -1
  44. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0.pom.sha1 +0 -1
  45. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0.pom.sha256 +0 -1
  46. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0.pom.sha512 +0 -1
@@ -0,0 +1 @@
1
+ 2710ee1c6af0cdbcb08dd15f052ae9b5
@@ -0,0 +1 @@
1
+ b045f5d4e199c00cdc1acdd66293626801fa48ba
@@ -0,0 +1 @@
1
+ 98c5385cc1c7dccbbb76d3b5b29e2dc4d8eeee395af4373c2f54001ad7a2d08a
@@ -0,0 +1 @@
1
+ 281a97b320fa338548b21c2a87e8fc9b66414657c96080f8bca1851dd39cdb2cf9940bdf27aea9e46b4149a1a535e7aa81a1244d7a484154d4e3e4c826f56148
@@ -0,0 +1 @@
1
+ 9a16dcba48780f187c9785c2564716cb
@@ -0,0 +1 @@
1
+ 10882cbbdfe23a8e7876c2db5b99e2ef1fb52406
@@ -0,0 +1 @@
1
+ 21946c3497b3ea0e280b536cd049f0a783fc4e17917e0e87be6b390fcfe51bba
@@ -0,0 +1 @@
1
+ 23ace9332ed0cabf480c80eb9447ae75d3b72c1301b86be743317565f1e8abecce07ff1fcd6f276837fbba9224874bf0a053fd47fba159c6987cc82033b42874
@@ -3,7 +3,7 @@
3
3
  <modelVersion>4.0.0</modelVersion>
4
4
  <groupId>com.wix</groupId>
5
5
  <artifactId>detox</artifactId>
6
- <version>20.43.0-alpha.0</version>
6
+ <version>20.44.0-alpha.0</version>
7
7
  <packaging>aar</packaging>
8
8
  <name>Detox</name>
9
9
  <description>Gray box end-to-end testing and automation library for mobile apps</description>
@@ -0,0 +1 @@
1
+ a00905bfbdab03170655c582355ff314
@@ -0,0 +1 @@
1
+ afbba272045fb16f109ba83cd267fb7c86b00f0f
@@ -0,0 +1 @@
1
+ 3c7b1fe3ea47ffaed8fb3183c031763d14e5e2969391334ddb292b99a0afc252
@@ -0,0 +1 @@
1
+ 472b62b3c993d6446ae02f7892a6a83075af3ac9ea46f44871f76df0ddea613170b509beb3146087bc048b86ad507f45fae6eb51051b2e4301d71fcc22a0fe0b
@@ -3,11 +3,11 @@
3
3
  <groupId>com.wix</groupId>
4
4
  <artifactId>detox</artifactId>
5
5
  <versioning>
6
- <latest>20.43.0-alpha.0</latest>
7
- <release>20.43.0-alpha.0</release>
6
+ <latest>20.44.0-alpha.0</latest>
7
+ <release>20.44.0-alpha.0</release>
8
8
  <versions>
9
- <version>20.43.0-alpha.0</version>
9
+ <version>20.44.0-alpha.0</version>
10
10
  </versions>
11
- <lastUpdated>20250930221159</lastUpdated>
11
+ <lastUpdated>20251015060300</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- 12c4b723cd5d9608e020fdc70c366fed
1
+ bf022e612ef784f7661e2a9f9bee34c4
@@ -1 +1 @@
1
- 6dbaf00aa421e38bb3c590da262763ef7b4b00c0
1
+ 9b3dc4f62af638ca0fe8baa867f4829854b9ac48
@@ -1 +1 @@
1
- b69af31d15bc2fa243024937c8336091f0efbd3622cddb163764c1e10b503c5b
1
+ 4af3a7ad01fc5c35e89551340f5d56b970bc3376be0d21635ee86600fb2f679b
@@ -1 +1 @@
1
- 227d31b3252ef18d07f89baee17eec925668e555796e6e2aec484d34be8af38c4a23962a2b2bbc1d2be99b1a19beccabd71d94f2cdddceb26175b26cf519bcd6
1
+ 21bc261b3c80491c1f5b54653301de715617d044d9189b9f30b8e0d4f8c71ad8ba41e3e30b6a59225d3057b16e51ca703aa7d87db51de9a93c9d192375b191f8
Binary file
package/Detox-ios-src.tbz CHANGED
Binary file
Binary file
@@ -43,6 +43,7 @@
43
43
  -keep class kotlin.LazyKt { *; }
44
44
 
45
45
  -keep class androidx.concurrent.futures.** { *; }
46
+ -keep class androidx.tracing.** { *; }
46
47
 
47
48
  -dontwarn androidx.appcompat.**
48
49
  -dontwarn javax.lang.model.element.**
@@ -0,0 +1,33 @@
1
+ @file:Suppress("UNCHECKED_CAST")
2
+
3
+ package com.wix.detox.common
4
+
5
+ import kotlin.reflect.full.memberFunctions
6
+ import kotlin.reflect.full.memberProperties
7
+ import kotlin.reflect.jvm.isAccessible
8
+
9
+ object KotlinReflectUtils {
10
+
11
+ /**
12
+ * Uses Kotlin reflection to get the value of a property from an instance.
13
+ * Works in both debug and release builds.
14
+ *
15
+ * @param instance The object instance from which to retrieve the property value.
16
+ * @param propertyName The name of the property whose value is to be retrieved.
17
+ * @return The value of the property, or null if not found or inaccessible.
18
+ */
19
+ fun <T> getPropertyValue(instance: Any, propertyName: String): T? {
20
+ // In Release builds, properties are compiled away into getter methods.
21
+ val method = instance::class.memberFunctions.find { it.name == propertyName }
22
+ if (method != null) {
23
+ method.isAccessible = true
24
+ return method.call(instance) as T?
25
+ }
26
+
27
+ // In debug builds, properties exist as fields.
28
+ val property = instance::class.memberProperties.first { it.name == propertyName }
29
+ property.isAccessible = true
30
+ return (property as? kotlin.reflect.KProperty1<Any, *>)?.get(instance) as T?
31
+ }
32
+
33
+ }
@@ -9,6 +9,7 @@ import com.facebook.react.animated.NativeAnimatedNodesManager
9
9
  import com.facebook.react.bridge.ReactContext
10
10
  import com.wix.detox.common.DetoxErrors
11
11
  import com.wix.detox.common.DetoxLog.Companion.LOG_TAG
12
+ import com.wix.detox.common.KotlinReflectUtils
12
13
  import com.wix.detox.reactnative.ReactNativeInfo
13
14
  import com.wix.detox.reactnative.idlingresources.DetoxIdlingResource
14
15
  import kotlin.reflect.KProperty1
@@ -109,21 +110,10 @@ private class AnimatedModuleFacade(private val animatedModule: NativeAnimatedMod
109
110
 
110
111
  class OperationsQueueReflected(private val operationsQueue: Any) {
111
112
  fun isEmpty(): Boolean {
112
- // Try method first (works in release builds)
113
- val isEmptyMethod = operationsQueue::class.memberFunctions.find { it.name == "isEmpty" }
114
- if (isEmptyMethod != null) {
115
- isEmptyMethod.isAccessible = true
116
- return isEmptyMethod.call(operationsQueue) as Boolean
113
+ KotlinReflectUtils.getPropertyValue<Boolean>(operationsQueue, "isEmpty")?.let {
114
+ return it
117
115
  }
118
-
119
- // Fallback to property (works in debug builds for RN 0.80+)
120
- val isEmptyProperty = operationsQueue::class.memberProperties.find { it.name == "isEmpty" }
121
- if (isEmptyProperty != null) {
122
- isEmptyProperty.isAccessible = true
123
- @Suppress("UNCHECKED_CAST")
124
- return (isEmptyProperty as KProperty1<Any, *>).get(operationsQueue) as Boolean
125
- }
126
-
116
+
127
117
  throw DetoxErrors.DetoxIllegalStateException("isEmpty method/property cannot be reached")
128
118
  }
129
119
  }
@@ -11,20 +11,20 @@ import org.joor.ReflectException
11
11
 
12
12
  private const val LOG_TAG = "RNNetworkingModuleRefl"
13
13
 
14
- private const val FIELD_OKHTTP_CLIENT_RN79 = "mClient"
14
+ private const val FIELD_OKHTTP_CLIENT_PRE80 = "mClient"
15
15
  private const val FIELD_OKHTTP_CLIENT = "client"
16
16
 
17
17
  internal class NetworkingModuleReflected(private val reactContext: ReactContext) {
18
18
  fun getHttpClient(): OkHttpClient? {
19
19
  val networkNativeModule = reactContext.getNativeModule(NetworkingModule::class.java)
20
20
  try {
21
- val filedName = if ( ReactNativeInfo.rnVersion().minor > 79) {
21
+ val fieldName = if ( ReactNativeInfo.rnVersion().minor > 79) {
22
22
  FIELD_OKHTTP_CLIENT
23
23
  } else {
24
- FIELD_OKHTTP_CLIENT_RN79
24
+ FIELD_OKHTTP_CLIENT_PRE80
25
25
  }
26
26
 
27
- return Reflect.on(networkNativeModule).field(filedName).get()
27
+ return Reflect.on(networkNativeModule).field(fieldName).get()
28
28
  } catch (e: ReflectException) {
29
29
  Log.e(LOG_TAG, "Can't set up Networking Module listener", e)
30
30
  return null
@@ -1,6 +1,5 @@
1
1
  package com.wix.detox.reactnative.idlingresources.timers
2
2
 
3
- import android.os.Debug
4
3
  import com.facebook.react.bridge.ReactContext
5
4
  import com.facebook.react.modules.core.JavaTimerManager
6
5
  import com.wix.detox.reactnative.ReactNativeInfo
@@ -21,19 +20,26 @@ object JavaTimersReflected {
21
20
  }
22
21
 
23
22
  private fun getTimersManager(reactContext: ReactContext): JavaTimerManager {
24
- val reactHostFiledName = if (ReactNativeInfo.rnVersion().minor > 79) {
23
+ val reactHostFieldName = if (ReactNativeInfo.rnVersion().minor > 79) {
25
24
  "reactHost"
26
25
  } else {
27
26
  "mReactHost"
28
27
  }
29
- val javaTimerManagerFiledName = if (ReactNativeInfo.rnVersion().minor > 79) {
28
+
29
+ val reactInstanceFieldName = if (ReactNativeInfo.rnVersion().minor > 80) {
30
+ "reactInstance"
31
+ } else {
32
+ "mReactInstance"
33
+ }
34
+
35
+ val javaTimerManagerFieldName = if (ReactNativeInfo.rnVersion().minor > 79) {
30
36
  "javaTimerManager"
31
37
  } else {
32
38
  "mJavaTimerManager"
33
39
  }
34
40
 
35
- val reactHost = Reflect.on(reactContext).field(reactHostFiledName).get<Any>()
36
- val reactInstance = Reflect.on(reactHost).field("mReactInstance").get<Any>()
37
- return Reflect.on(reactInstance).field(javaTimerManagerFiledName).get() as JavaTimerManager
41
+ val reactHost = Reflect.on(reactContext).field(reactHostFieldName).get<Any>()
42
+ val reactInstance = Reflect.on(reactHost).field(reactInstanceFieldName).get<Any>()
43
+ return Reflect.on(reactInstance).field(javaTimerManagerFieldName).get() as JavaTimerManager
38
44
  }
39
45
  }
@@ -5,6 +5,7 @@ import androidx.test.espresso.IdlingResource
5
5
  import com.facebook.react.bridge.ReactContext
6
6
  import com.facebook.react.uimanager.UIManagerHelper
7
7
  import com.facebook.react.uimanager.common.UIManagerType
8
+ import com.wix.detox.reactnative.ReactNativeInfo
8
9
  import com.wix.detox.reactnative.idlingresources.DetoxIdlingResource
9
10
  import org.joor.Reflect
10
11
  import java.util.concurrent.ConcurrentLinkedQueue
@@ -12,7 +13,7 @@ import java.util.concurrent.ConcurrentLinkedQueue
12
13
 
13
14
  class FabricUIManagerIdlingResources(
14
15
  private val reactContext: ReactContext
15
- ) : DetoxIdlingResource(), Choreographer.FrameCallback {
16
+ ) : DetoxIdlingResource(), Choreographer.FrameCallback {
16
17
 
17
18
  override fun checkIdle(): Boolean {
18
19
  return if (getViewCommandMountItemsSize() == 0 && getMountItemsSize() == 0) {
@@ -50,7 +51,12 @@ class FabricUIManagerIdlingResources(
50
51
 
51
52
  private fun getMountItemsSize(): Int {
52
53
  val mountItemDispatcher = getMountItemDispatcher()
53
- val mountItems = Reflect.on(mountItemDispatcher).field("mMountItems").get<ConcurrentLinkedQueue<*>>()
54
+ val filedName = if (ReactNativeInfo.rnVersion().minor >= 81) {
55
+ "mountItems"
56
+ } else {
57
+ "mMountItems"
58
+ }
59
+ val mountItems = Reflect.on(mountItemDispatcher).field(filedName).get<ConcurrentLinkedQueue<*>>()
54
60
  return mountItems.size
55
61
  }
56
62
 
@@ -62,8 +68,13 @@ class FabricUIManagerIdlingResources(
62
68
 
63
69
  private fun getViewCommandMountItemsSize(): Int {
64
70
  val mountItemDispatcher = getMountItemDispatcher()
71
+ val filedName = if (ReactNativeInfo.rnVersion().minor >= 81) {
72
+ "viewCommandMountItems"
73
+ } else {
74
+ "mViewCommandMountItems"
75
+ }
65
76
  val viewCommandMountItems =
66
- Reflect.on(mountItemDispatcher).field("mViewCommandMountItems").get<ConcurrentLinkedQueue<*>>()
77
+ Reflect.on(mountItemDispatcher).field(filedName).get<ConcurrentLinkedQueue<*>>()
67
78
  return viewCommandMountItems.size
68
79
  }
69
80
 
@@ -1,6 +1,6 @@
1
1
  distributionBase=GRADLE_USER_HOME
2
2
  distributionPath=wrapper/dists
3
- distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-bin.zip
3
+ distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
4
4
  networkTimeout=10000
5
5
  validateDistributionUrl=true
6
6
  zipStoreBase=GRADLE_USER_HOME
@@ -47,4 +47,5 @@ ext.rnInfo = [
47
47
  isRN78OrHigher: rnMajorVer >= 78,
48
48
  isRN79OrHigher: rnMajorVer >= 79,
49
49
  isRN80OrHigher: rnMajorVer >= 80,
50
+ isRN81OrHigher: rnMajorVer >= 81,
50
51
  ]
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "detox",
3
3
  "description": "E2E tests and automation for mobile",
4
- "version": "20.43.0-alpha.0",
4
+ "version": "20.44.0-alpha.0",
5
5
  "bin": {
6
6
  "detox": "local-cli/cli.js"
7
7
  },
@@ -34,13 +34,13 @@
34
34
  "postinstall": "node scripts/postinstall.js"
35
35
  },
36
36
  "devDependencies": {
37
- "@react-native-community/cli": "19.1.1",
38
- "@react-native-community/cli-platform-android": "19.1.1",
39
- "@react-native-community/cli-platform-ios": "19.1.1",
40
- "@react-native/babel-preset": "0.80.2",
41
- "@react-native/eslint-config": "0.80.2",
42
- "@react-native/metro-config": "0.80.2",
43
- "@react-native/typescript-config": "0.80.2",
37
+ "@react-native-community/cli": "20.0.0",
38
+ "@react-native-community/cli-platform-android": "20.0.0",
39
+ "@react-native-community/cli-platform-ios": "20.0.0",
40
+ "@react-native/babel-preset": "0.81.4",
41
+ "@react-native/eslint-config": "0.81.4",
42
+ "@react-native/metro-config": "0.81.4",
43
+ "@react-native/typescript-config": "0.81.4",
44
44
  "@tsconfig/react-native": "^3.0.0",
45
45
  "@types/bunyan": "^1.8.8",
46
46
  "@types/child-process-promise": "^2.2.1",
@@ -62,9 +62,9 @@
62
62
  "jest-allure2-reporter": "^2.2.6",
63
63
  "metro-react-native-babel-preset": "0.76.8",
64
64
  "prettier": "^3.1.1",
65
- "react-native": "0.80.2",
65
+ "react-native": "0.81.4",
66
66
  "react-native-codegen": "^0.0.8",
67
- "typescript": "~5.3.3",
67
+ "typescript": "~5.8.3",
68
68
  "wtfnode": "^0.9.1"
69
69
  },
70
70
  "dependencies": {
@@ -120,5 +120,5 @@
120
120
  "browserslist": [
121
121
  "node 14"
122
122
  ],
123
- "gitHead": "35529102f5a90db7a56f1ecdd7d834cceac9061d"
123
+ "gitHead": "f44a71b8a1f8b6a0c12cc9ad5da42eec9448f539"
124
124
  }
@@ -6,7 +6,7 @@ const rnMinor = require('../src/utils/rn-consts/rn-consts').rnVersion.minor;
6
6
  function getGradleVersionByRNVersion() {
7
7
  switch (rnMinor) {
8
8
  default:
9
- return '8.14.1';
9
+ return '8.14.3';
10
10
  case '79':
11
11
  case '78':
12
12
  case '77':
@@ -1 +0,0 @@
1
- b02764fe99571d429f7c190b87219c69
@@ -1 +0,0 @@
1
- e4bdc6e9ec26c6520abd05a73d758c4c48eaef18
@@ -1 +0,0 @@
1
- 17766f2604820bb14066ffda5b5a56eca73bf5e05d8eabb784a6af17dc34468f
@@ -1 +0,0 @@
1
- 18da540136022798c270cfc57324a967f14f1d76c1188cc9ebbf84190e2c68af04b2dc0c13642ef8846a0ac2da38c9ec4d6ee8a99e77499b4c8b821abd7567aa
@@ -1 +0,0 @@
1
- 95f859e3353c02c1bdfae62eecdb7064
@@ -1 +0,0 @@
1
- e849c7c098b6fc1349725b02130c0940ff2671d6
@@ -1 +0,0 @@
1
- 28933f70ef1c9e5312509ff18562b792c8e4d620f877953851b071e2cdc38c2c
@@ -1 +0,0 @@
1
- 76c60df97a57e87f1e3722927c66e5e698c4f42699392ca74cec18f8c97a2330b30ab335c70df3557ae98a8efbddd2865591430744294de7842eb3012dc936c0
@@ -1 +0,0 @@
1
- 45a3353f06c37299757d2b897327ff46
@@ -1 +0,0 @@
1
- a16120462fe2e18597a680d505b2f207b86a59f4
@@ -1 +0,0 @@
1
- 7139e0634426ad1772df186bf9589f59412b869132d48358807c808d7612e2e1
@@ -1 +0,0 @@
1
- f6ee060d3e172960674cf8cb65bd213a853ea93703b9d231d992feead0f24d03c49bd8c49abbb41decc0f50c81aa7c746ac2101d93bd0f96f2750cae79dc3cc3