Commit graph

58884 commits

Author SHA1 Message Date
Bart Van Assche
a0234940b3 audio: VtsHalAudioCoreModuleTargetTest: Convert a SIGSEGV into an assertion failure
Convert the following segmentation fault into an assertion failure:

 signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0000000000000000
 Cause: null pointer dereference
 9 total frames
 backtrace:
       #00 pc 000000000020e532  /data/local/tmp/VtsHalAudioCoreTargetTest/x86_64/VtsHalAudioCoreTargetTest (AudioCoreModuleBase::TearDownImpl()+114) (BuildId: f1bb3c414cf012ccd7d268b4e0c7fefe)
       #01 pc 00000000001c890a  /data/local/tmp/VtsHalAudioCoreTargetTest/x86_64/VtsHalAudioCoreTargetTest (AudioCoreModule::TearDown()+106) (BuildId: f1bb3c414cf012ccd7d268b4e0c7fefe)
       #02 pc 00000000002b62a8  /data/local/tmp/VtsHalAudioCoreTargetTest/x86_64/VtsHalAudioCoreTargetTest (testing::TestInfo::Run()+424) (BuildId: f1bb3c414cf012ccd7d268b4e0c7fefe)
       #03 pc 00000000002b6de4  /data/local/tmp/VtsHalAudioCoreTargetTest/x86_64/VtsHalAudioCoreTargetTest (testing::TestSuite::Run()+804) (BuildId: f1bb3c414cf012ccd7d268b4e0c7fefe)
       #04 pc 00000000002c5c7e  /data/local/tmp/VtsHalAudioCoreTargetTest/x86_64/VtsHalAudioCoreTargetTest (testing::internal::UnitTestImpl::RunAllTests()+2622) (BuildId: f1bb3c414cf012ccd7d268b4e0c7fefe)
       #05 pc 00000000002c50cc  /data/local/tmp/VtsHalAudioCoreTargetTest/x86_64/VtsHalAudioCoreTargetTest (testing::UnitTest::Run()+140) (BuildId: f1bb3c414cf012ccd7d268b4e0c7fefe)
       #06 pc 00000000001c86f0  /data/local/tmp/VtsHalAudioCoreTargetTest/x86_64/VtsHalAudioCoreTargetTest (RUN_ALL_TESTS()+16) (BuildId: f1bb3c414cf012ccd7d268b4e0c7fefe)
       #07 pc 00000000001c8669  /data/local/tmp/VtsHalAudioCoreTargetTest/x86_64/VtsHalAudioCoreTargetTest (main+137) (BuildId: f1bb3c414cf012ccd7d268b4e0c7fefe)
       #08 pc 00000000000547e9  /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+89) (BuildId: e5ef3cc48c1e014ffb7dbbcfc7f9d475)

Bug: 308687042
Change-Id: I2d528dd9cf0f59bcd6b0e485b4f6141320d89a81
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-11-07 13:12:35 -08:00
Kenn Frankel
51f4d2506d Merge "Convert Nlinterceptor HAL to Vendor Apex (CF)" into main am: cf4cbd0b9b
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2798153

Change-Id: I5ade17306ca8aca2d6720f06fa45f8402d288e9b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-07 19:41:22 +00:00
Kenn Frankel
cf4cbd0b9b Merge "Convert Nlinterceptor HAL to Vendor Apex (CF)" into main 2023-11-07 19:17:17 +00:00
Shunkai Yao
95732c6cb9 Add defaults for audio AIDL interfaces
- with defaults user don't have to change their Android.bp when there is
  a update
- update AIDL audio interfaces with android.media.audio.common.types
- update Spatialization and HeadTracking AIDL usage

Bug: 273373363
Bug: 293370815
Test: m
Test: lunch panther-trunk_staging-userdebug; m; test Bluetooth Audio
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:1977a4a664cc71e1d9841a01573b63793f88ae59)
Merged-In: Ic9d8afc1d4e19e4243c66065b0a5d29156632851
Change-Id: Ic9d8afc1d4e19e4243c66065b0a5d29156632851
2023-11-07 18:18:24 +00:00
Venkatarama Avadhani
a6710298c8 CAS AIDL: Start thread pool for default service
Add missing call to start the thread pool for the default CAS AIDL
service.

Bug: 301369982
Test: atest android.media.misc.cts.MediaCasTest#testClearKeyApis
Change-Id: I6c0572f8573627a817ac5a429bd6800a95687380
2023-11-07 20:51:37 +05:30
Bart Van Assche
4dc2b1f728 audio: AudioHalBinderServiceUtil: Make a log message more informative am: 0fde783476
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2819044

Change-Id: I33d04b18bca9dd2066b9c14268eedfe1f734590f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-07 01:46:42 +00:00
Bart Van Assche
6fcb2f8d81 audio: Change mDeathHandler from a member into a local variable am: 17b3201259
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2819040

Change-Id: Ief673d71a1e9202af7d3c387b1a7a2a054f7e626
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-07 01:46:37 +00:00
Bart Van Assche
fcf3a1b36b audio: Simplify AudioHalBinderServiceUtil::waitForFired() am: a76d4d8899
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2819039

Change-Id: I5cbe1fe61b1b36b9e49337bc0070f0c00dbbd5eb
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-07 01:45:38 +00:00
Bart Van Assche
0fde783476 audio: AudioHalBinderServiceUtil: Make a log message more informative
If a timeout happens, report the name of the service for which the
timeout happens.

Change-Id: Iad0076071f06f0ca5e53e07b1ef97e25e7bae887
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-11-06 16:14:15 -08:00
Bart Van Assche
17b3201259 audio: Change mDeathHandler from a member into a local variable
Since no data is retained in mDeathHandler across member function calls,
it should be a local variable instead of a member variable.

Change-Id: I58d6cc511a21e0e7f430b3cf528faba072e02ec7
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-11-06 16:01:16 -08:00
Bart Van Assche
a76d4d8899 audio: Simplify AudioHalBinderServiceUtil::waitForFired()
Return the std::condition::wait_for() return value instead of reading
the variable 'fired' again. See also
https://en.cppreference.com/w/cpp/thread/condition_variable/wait_for.

Change-Id: I48c270f5446f61b2ad828b19a1fc294737a123dd
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-11-06 16:01:16 -08:00
Shunkai Yao
195d3d6915 Add defaults for audio AIDL interfaces
- with defaults user don't have to change their Android.bp when there is
  a update
- update AIDL audio interfaces with android.media.audio.common.types
- update Spatialization and HeadTracking AIDL usage

Bug: 273373363
Bug: 293370815
Test: m
Test: lunch panther-trunk_staging-userdebug; m; test Bluetooth Audio
Change-Id: Ic9d8afc1d4e19e4243c66065b0a5d29156632851
Merged-In: Ic9d8afc1d4e19e4243c66065b0a5d29156632851
2023-11-06 19:14:32 +00:00
Mikhail Naganov
1afd920ac6 Merge changes Ic51d603d,Ia50def0d,I22f65b8b,I8ce9f230,Id8455eb1, ... into main am: 3143e6930b
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2811595

Change-Id: I549bd64023733524f24bb78f0b6b114135f4a934
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-06 17:37:24 +00:00
Mikhail Naganov
c72d9bd433 CSD: Add default AIDL HAL implementation am: 3c8b6ce171
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2813173

Change-Id: I82cff6b87ed3f06cd9234c3c249a47a64e2f1028
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-06 17:37:20 +00:00
Mikhail Naganov
3143e6930b Merge changes Ic51d603d,Ia50def0d,I22f65b8b,I8ce9f230,Id8455eb1, ... into main
* changes:
  audio: Query minimum buffer size before opening streams
  audio: Implement getters for hardware mixer controls
  audio: Clean up and fix the bluetooth HAL module
  audio: Provide a way for Module to specify nominal latency
  audio: Fix default remote submix HAL implementation and VTS
  CSD: Add default AIDL HAL implementation
2023-11-06 17:01:00 +00:00
David Drysdale
6fb22dc9ef AuthGraph: add fuzzer
Test: m android.hardware.authgraph-service.nonsecure_fuzzer
Bug: 284470121
Change-Id: Ib702b5b0cf69a4a839326297c2d71355562b46c3
2023-11-06 13:26:25 +00:00
David Drysdale
6c09af215d AuthGraph: move code into library
Use the core library's new service implementation, which wraps a
channel to the TA.

In this nonsecure case, the TA is local in-process, so use the core
library's AuthGraphTa, and implement the SerializedChannel as just
a direct invocation of the TA.

Move this code into a _nonsecure library, so the main.rs just has
the code needed to start the executable and register the service.

Test: VtsAidlAuthGraphSessionTest
Bug: 284470121
Change-Id: I738d3876872a8cd248f0ebec708676d1173b6e37
2023-11-06 13:08:45 +00:00
Treehugger Robot
fb5f35b7ad Merge "Add gnss HAL APEX" into main am: 6a4d763060
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2749884

Change-Id: I6341e6181dc9377a7f53c2301311b8bdb7706e09
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-06 04:16:56 +00:00
Treehugger Robot
6a4d763060 Merge "Add gnss HAL APEX" into main 2023-11-06 03:41:38 +00:00
Atsushi Iriboshi
1b56451c26 [automerger skipped] [RESTRICT AUTOMERGE] Add ISDBT and ISDBS support in the VTS am: 288de6d6fb -s ours am: 44f83f8ab7 -s ours am: e3e212e7cc -s ours am: 3a79df5008 -s ours am: a8ca6207a6 -s ours
am skip reason: subject contains skip directive

Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2787732

Change-Id: I92548883906669341f750b18f921d8dbfcdc322c
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-04 04:20:28 +00:00
Atsushi Iriboshi
a8ca6207a6 [automerger skipped] [RESTRICT AUTOMERGE] Add ISDBT and ISDBS support in the VTS am: 288de6d6fb -s ours am: 44f83f8ab7 -s ours am: e3e212e7cc -s ours am: 3a79df5008 -s ours
am skip reason: subject contains skip directive

Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2787732

Change-Id: Ib0d5cf2931937a7417bc4f52b9265ea2034aec66
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-04 03:42:06 +00:00
Atsushi Iriboshi
3a79df5008 [automerger skipped] [RESTRICT AUTOMERGE] Add ISDBT and ISDBS support in the VTS am: 288de6d6fb -s ours am: 44f83f8ab7 -s ours am: e3e212e7cc -s ours
am skip reason: subject contains skip directive

Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2787732

Change-Id: I3274c8553d7cd295135716caf159b535d63b0898
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-04 03:07:05 +00:00
Atsushi Iriboshi
e3e212e7cc [automerger skipped] [RESTRICT AUTOMERGE] Add ISDBT and ISDBS support in the VTS am: 288de6d6fb -s ours am: 44f83f8ab7 -s ours
am skip reason: subject contains skip directive

Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2787732

Change-Id: I8d00f85d40b943c1c5e62333f427e5e27edff19f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-04 02:26:32 +00:00
Treehugger Robot
d02e6c348d Merge "CSD: remove unused library" into main am: f1ff2ca05a
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2813174

Change-Id: I796c0f31dabea2beab73dc15275c692135005e65
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-04 01:57:51 +00:00
Atsushi Iriboshi
44f83f8ab7 [automerger skipped] [RESTRICT AUTOMERGE] Add ISDBT and ISDBS support in the VTS am: 288de6d6fb -s ours
am skip reason: subject contains skip directive

Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2787732

Change-Id: I80df56d3571e2bfbf5c84c396bd143cdb1a854c1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-04 01:50:11 +00:00
Treehugger Robot
f1ff2ca05a Merge "CSD: remove unused library" into main 2023-11-04 01:22:55 +00:00
Jooyung Han
78c24f8854 Add gnss HAL APEX
Bug: 297467836
Test: VtsHalGnssTargetTest
Change-Id: I193ad310cfeabd21fc6beefeaef460487754c7c2
2023-11-03 23:52:37 +00:00
Avichal Rakesh
1fa4142e1a ExternalCameraHAL: Fix memory leak when copying buffer fence
Pointer to native_handle_t created using native_handle_create should
be cleaned up using native_handle_delete even if the fds in the
native_handle is no longer managed by it. ExternalCameraDeviceSession
creates native_handle_t as an intermediate to convert to AIDL
NativeHandle but doesn't call native_handle_delete on the
intermediate object which led to memory leaks.

This CL removes the intermediate object and copies the fence fd
directly.

Bug: 305638723
Test: No functional change. Compilation successful.
Change-Id: Ie3c558ee1ae6d2e84053b65eed7db179118395bb
2023-11-03 16:16:57 -07:00
Mikhail Naganov
95f2277730 audio: Query minimum buffer size before opening streams
The proper way to obtain the minimum buffer size when
opening a stream is to retrieve it from the patch. Thus,
a patch must be established prior to opening a stream.
This step was often skipped by VTS tests, they were
providing a fixed stream buffer size which might not
work for all HAL module implementations.

Created a helper class `StreamFixture` which handles
all necessary steps for opening a stream. Overhauled
tests to use this class.

Also, remove special treatment of remote submix devices
by ModuleConfig.

Bug: 300735639
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Ic51d603d2bb8ff0fd62434bd16fc02c51326fc42
2023-11-03 14:11:09 -07:00
Treehugger Robot
23390a0e80 Merge "lnitialize payload of additionallnfo for VTS InjectSensorEventData test" into android14-tests-dev am: 01d47260a1 am: 253353540d
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2795667

Change-Id: I823dd7d4477be0ee2a9e94f3cf3d66cac5ffc1c9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-03 21:09:24 +00:00
Mikhail Naganov
49bcb92670 audio: Implement getters for hardware mixer controls
The VTS test for volume accessors first determines whether
the accessor is supported by calling the getter. The getter
must return `UNSUPPORTED_OPERATION` if the control is not
supported. For this reason, wire the getter to the hardware
mixer implementation.

Bug: 302132812
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Ia50def0d076b6d3c46db55123186eab34bbbb954
2023-11-03 13:57:36 -07:00
Mikhail Naganov
55045b5fce audio: Clean up and fix the bluetooth HAL module
Fix the issue with retrieving BluetoothA2dp and BluetoothLe
instances access.

In 'Module::connectExternalDevice', always call
'populateConnectedDevicePort' to allow the module implementation
to cancel device connection.

Move frame count calculation into Utils.
Clean up includes and 'using' directives.

Bug: 302132812
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I22f65b8bcdcdd9bcd67a8290520eb4a465d4c720
2023-11-03 13:57:20 -07:00
Mikhail Naganov
1350187c6b audio: Provide a way for Module to specify nominal latency
The latency figure depends on the module implementation.
Instead of using a hardcoded value, each module should be
able to specify its own value. This value is then used
for calculating the minimum buffer size.

Set the nominal latency of the primary (CF) module to a high
value since the virtual device implementation fails CTS tests
if it attempts to pretend that it provides low latency.

Bug: 302132812
Test: atest CtsMediaAudioTestCases --test-filter=".*AudioTrackTest.*"
Test: atest CtsMediaAudioTestCases --test-filter=".*AudioRecordTest.*"
Change-Id: I8ce9f230378eea787c9b3c7ce3660c1e4e7bc895
2023-11-03 13:50:07 -07:00
Mikhail Naganov
2aab766d05 audio: Fix default remote submix HAL implementation and VTS
The implementation had duplicated code in 'transfer', which already
present in 'outWrite'.

Cleaned up delay calculations and logging.

Fixed the VTS to send 'prepareToClose' before attempting to join
the worker. Otherwise, the worker could be stuck on a blocking
operation due to inactivity of the other party and join would never
happen.

Bug: 302132812
Test: atest VtsHalAudioCoreTargetTest --test-filter="*AudioModuleRemoteSubmix*"
Change-Id: Id8455eb12d1d2999dc0bc7b64f0d70a61a177598
2023-11-03 13:49:59 -07:00
Treehugger Robot
253353540d Merge "lnitialize payload of additionallnfo for VTS InjectSensorEventData test" into android14-tests-dev am: 01d47260a1
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2795667

Change-Id: I2e6f7921aeea6e3e0d5a2d5c9ceacdd1a60b5403
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-03 20:32:27 +00:00
Treehugger Robot
01d47260a1 Merge "lnitialize payload of additionallnfo for VTS InjectSensorEventData test" into android14-tests-dev 2023-11-03 20:14:41 +00:00
David Drysdale
f2117ff77c AuthGraph: reduce dependency on authgraph_core
The authgraph_hal library should only depend on libauthgraph_wire, not
on libauthgraph_core, so adjust error processing accordingly.

Test: VtsAidlAuthGraphSessionTest
Bug: 284470121
Change-Id: I48056db6ceeab409d0f165f8e051809129643c6f
2023-11-03 12:22:42 +00:00
Treehugger Robot
b6452b7ad8 Merge "ExternalCameraHAL: Check for empty native handle instead of null." into main am: 7e4037cf01
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2787022

Change-Id: Icdf62933b7b2e3fd283679a23f85841c53700a4f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-03 01:40:27 +00:00
Treehugger Robot
7e4037cf01 Merge "ExternalCameraHAL: Check for empty native handle instead of null." into main 2023-11-03 01:10:16 +00:00
Avichal Rakesh
e6a88a8119 ExternalCameraHAL: Check for empty native handle instead of null.
AIDL cannot send nullptr when parceling NativeHandles. Instead, it
sends an empty  handle. Logic which previously relied on null
checks should now rely on checking if the native_handle is
empty or not.

This CL updates ExternalCameraUtils to check for empty handles
instead.

Bug: 299170474
Test: CameraAidlTest#processCaptureRequestInvalidBuffer passes
Change-Id: Id4ba928defaa061708a3c1cd68aa510b376f6cb3
2023-11-02 17:27:43 -07:00
Eran Messeri
bcd81f14b8 Merge "Document the allowed challenge size" into main am: 4f73689e26
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2813217

Change-Id: Ifd5b1ef1e80649d43119fe0f8edd5cb51efaebaf
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-02 14:26:30 +00:00
Eran Messeri
4f73689e26 Merge "Document the allowed challenge size" into main 2023-11-02 13:59:09 +00:00
Kenn Frankel
ae3f1fb976 Convert Nlinterceptor HAL to Vendor Apex (CF)
Bug: 300011249
Test: atest VtsHalNetlinkInterceptorV1_0Test

Change-Id: I521877b24354ff95eb941daf314ca1f14d37bd70
2023-11-01 22:58:04 +00:00
Eran Messeri
79cb992033 Document the allowed challenge size
KeyMint should be able to handle challenges up to 128 bytes.
Document this (and the expected error code) in Tag.aidl.

Bug: 307714384
Test: m
Change-Id: Id099dd055c81b10d777effdf364395f84d8b35c6
2023-11-01 19:22:30 +00:00
Hasini Gunasinghe
ab608a60ec Merge changes from topic "authgraph-hal" into main am: 93439a212b
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2786800

Change-Id: I1dd6ab8030654352f455838bb12b7a99b2336b5e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-01 17:10:56 +00:00
David Drysdale
f8acaf60db authgraph: add parallel session VTS tests am: d42cb6fa69
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2786799

Change-Id: I6f6fad4898255b2bc8bfb16f3ffa44ff6104a9ef
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-01 17:10:51 +00:00
David Drysdale
ad80c36b3c authgraph: add placeholder VTS test am: c8625a8963
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2750487

Change-Id: I17987d6a9371622b1b7b7c38118959f4105f74ae
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-01 17:10:48 +00:00
Hasini Gunasinghe
5c44262ee7 Define the AIDL interface for AuthGraph key exchange. am: 0e2495f107
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2606133

Change-Id: I5f4c2a1bd1a021d77e891285587b50308d35021f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-01 17:10:38 +00:00
Hasini Gunasinghe
93439a212b Merge changes from topic "authgraph-hal" into main
* changes:
  Add (nonsecure) default AuthGraph impl
  authgraph: add parallel session VTS tests
  authgraph: add placeholder VTS test
  Define the AIDL interface for AuthGraph key exchange.
2023-11-01 16:27:51 +00:00
Vlad Popa
7c6c214049 CSD: remove unused library
Test: manual build
Bug: 209491695

Change-Id: I4eabeb92c0882db61bb530b438e59fb990d3c351
Merged-In: I4eabeb92c0882db61bb530b438e59fb990d3c351
2023-11-01 02:40:25 +00:00