Commit Graph

335 Commits

Author SHA1 Message Date
hjk
23cf42d87a Disable Axivion reports for Qt-FunctionArgsByValueRef
This is an unfortunate combination of clazy-function-args-by-ref and
clazy-function-args-by-value.

function-args-by-ref fixes are almost always safe to apply. They
actually may save an unbounded amount of cycles, and there are typically
only a few of them.

On the other hand, function-args-by-value is a mixed bag: There are a
lot of them and the expected gain is small: It's typically trading one
or two register for one register and a "hot" location on the stack.
Especially when passing down such objects to a through a sequence of
function calls this is not even necessarily a clear win on all
architecture.

In any case it should be considered that especially in the Qt context
changing signatures of public functions is not cheap, if possible
at all.

Change-Id: I281ea086fb15e0a045316591d9af620b5e730f4a
Reviewed-by: Matti Paaso <matti.paaso@qt.io>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
2025-11-06 08:12:35 +01:00
Alexey Edelev
63fd087fa0 Upgrade vcpkg to version 2025-09-03
Change-Id: I5501f28cbcf7cc9e88b32031a7fd2e1c763981bf
Reviewed-by: Simo Fält <simo.falt@qt.io>
2025-11-01 01:51:59 +02:00
Matti Paaso
9e2db25bd5 Enable CWE checks to Axivion configuration
Task-number: QTQAINFRA-7401
Pick-to: 6.8 6.5
Change-Id: I3173acc2941e3811aeb7e56752a56125f00d8f89
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
2025-10-17 11:24:19 +03:00
Tatiana Borisova
493a11caee Update Golang provisioning
- replace the linux/install-golang.sh to the unix/install-golang.sh
  for macos and linux provisioning configurations.

NOTE:
The Golang version is updated from 1.22.4 to 1.25.2.

Task-number: QTBUG-140130
Change-Id: Ic5e7a93bcad4d82210bcd5c7f4144153c938a603
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2025-10-16 09:04:27 +00:00
Assam Boudjelthia
05f46d0e54 CI: add more options for Android emulator launcher and help section
Allow the emulator launcher to take new options that are commonly
used:
 * --window: shows the emulator window instead of running headless
 * --avd: set the emulator name instead of using the env var, this
          can be more intuitive and more expected than the env var.
 * --help: to guide users how to use this script.

Also, the script now will print a list of available AVD names to
use instead of the less obvious error of no AVD name provided
which forces the user to manually find the names first.

This also, sets the COIN_CTEST_RESULTSDIR to CWD in case
it's not set, this is the case when running as a debug VM.

Pick-to: 6.5 6.8 6.10
Change-Id: Id90ca2fddda713645e9c1621e346d73f1dc85ea1
Reviewed-by: Dimitrios Apostolou <jimis@qt.io>
2025-10-11 11:25:48 +00:00
Samuli Piippo
3571545c28 Provisioning: Fix bitbake with apparmor on Ubuntu 24.04
Ubuntu 23.10 introduced new apparmor features and those prevent bitbake
to work correctly until a apparmor configuration file is installed.

Task-number: QTBUG-137321
Change-Id: Ib3f5faae07ea116012b1c66554211c53ca0e77e7
Reviewed-by: Toni Saario <toni.saario@qt.io>
2025-10-09 18:10:16 +03:00
Elias Toivola
c781ce2c92 Android: Fix cache URLs
Pick-to: 6.10 6.9 6.8 6.5
Task-number: QTQAINFRA-7264
Task-number: QTQAINFRA-7265
Change-Id: I68cf0dc47c50bb7a817860d6607db5910225996a
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
2025-09-28 16:12:05 +03:00
Rami Potinkara
1ce81f80e4 Android 16: Introduce NDK r29-beta2 as preview NDK
This patch introduces preview NDK. Environment variables related to
preview NDK's are marked with _PREVIEW. The patch introduces NDK
29.0.13599879-beta2 as first _PREVIEW NDK. This preview NDK will be
first used in insignificant platforms Android 16.

Task-number: QTQAINFRA-7290
Fixes: QTQAINFRA-7291
Change-Id: Id093b8f71970f77409bd805d6d1d153f47ade762
Reviewed-by: Rami Potinkara <rami.potinkara@qt.io>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Elias Toivola <elias.toivola@qt.io>
2025-09-15 20:59:39 +03:00
Matti Paaso
f2303b428f Update Axivion analysis configuration
Update QR rule set and add user name mapping into email to enable
erosion notification.

Task-number: QTQAINFRA-7222
Change-Id: I98fa2f278c3fea7dde61477841ef03ce10223d58
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
2025-09-12 09:03:47 +03:00
Tero Heikkinen
3745eeddb9 Linux: Fix Debian packagekit failing in provisioning
Target jammy-arm64-debian-pkg-packaging fails in
waitLoop function, which is also used by Ubuntu platforms.

Fix by extending wait loop for lock paths:
  - /var/lib/dpkg/lock
  - /var/lib/apt/lists/lock (new)

Task-number: QTQAINFRA-7361
Change-Id: If8d5eacaeb72ea6a36496093bc5c248f61997afb
Reviewed-by: Ville-Pekka Karhu <ville-pekka.karhu@qt.io>
2025-09-05 18:35:10 +03:00
Rami Potinkara
0eb085f93d Android: Fix Android 16 emulator CI start problems
This patch updates the fully booted check for Android.

Old logic used init.svc.bootanim property and it's status
"stopped", but since Android 16 forward the status is kept
empty "" if "-no-boot-anim" emulator startup parameter is used.

The new logic simplifies old and relies only to two values:
sys.boot_completed and dev.bootcomplete. These work similary
from Android 9 to 16.

Task-number: QTQAINFRA-7299
Task-number: QTQAINFRA-7298
Pick-to: 6.10 6.9 6.8
Change-Id: I62efb0b05cd9792f92040dcb98a37f4bf14022e6
Reviewed-by: Dimitrios Apostolou <jimis@qt.io>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Elias Toivola <elias.toivola@qt.io>
2025-09-05 15:34:46 +00:00
Assam Boudjelthia
a1e154912b Android: update provisioning to Gradle 8.14.2 and AGP 8.10.1
Task-number: QTBUG-137782
Change-Id: I522a7179e1a0be7c7bb876d935fd02ef7e049475
Reviewed-by: Simo Fält <simo.falt@qt.io>
Reviewed-by: Elias Toivola <elias.toivola@qt.io>
2025-08-28 00:24:58 +03:00
Marianne Yrjänä
3247258700 Enable QNX8.0 builds in CI
Added CI configs for QNX8.0. Toolchain updated to latest version.
Qemu build files updated for new toolchain.

Task-number: QTBUG-131708
Change-Id: I25f5386c85f6bc2f87c69bf820d1bacc0ebd2a47
Reviewed-by: Simo Fält <simo.falt@qt.io>
2025-07-14 11:47:21 +00:00
Alexey Edelev
efb8dc4713 Add Android bundletool provisioning
Tool allows managing modern android bundles. Provision it on RHEL
8.10 platform - the one we use for the Qt for Android x86_64 builds.

Change-Id: Ia1a7bb077e9dc0afc95ad92cbd85c96724ab0ced
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2025-07-03 11:23:53 +02:00
Alexey Edelev
fefacee86c Export path to the Ninja executable
This path will be used as CMAKE_MAKE_PROGRAM explicitly.

Change-Id: Ic15253f837b798c468f782ad4116d1ba4cc7c934
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2025-06-24 13:03:22 +02:00
Alexey Edelev
e903efbdbc Enable vcpkg caches
Change-Id: I9c2bddd7cb2d22fd57e43893875b7eef9549c69d
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2025-06-24 13:03:20 +02:00
Elias Toivola
687b73cde0 Android: set nightly targets for older NDK versions
This change makes provisioning also install older NDKs for Android,
which will be used in nightly targets.

Pick-to: 6.10
Task-number: QTQAINFRA-7069
Change-Id: Ia8695383e94df282822da9019c33f1004a879bf6
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2025-06-19 14:46:29 +03:00
Toni Saario
ecff7e6ddc Coin: VxWorks x86_64 add -enable-kvm parameter
This makes the qemu virtualize the target rather than emulating
it. Virtualization allows few times better performance in tests.

Pick-to: 6.9 6.10
Change-Id: I7a5f7e3e2b04c52034325459ef05bfc0dce5d0b7
Reviewed-by: Simo Fält <simo.falt@qt.io>
2025-06-09 16:08:07 +00:00
Alexey Edelev
f41e72adc6 Specify VCPKG_INSTALLED_DIR, VCPKG_HOST_TRIPLET, VCPGK_TARGET_TRIPLET
Set the VCPKG_INSTALLED_DIR, VCPKG_HOST_TRIPLET, VCPGK_TARGET_TRIPLET
environment variables after vcpkg ports installation. These variables
will be used when building Qt modules to setup the correct build
environment.

Change-Id: I3a625f4ef089b5da676b96a5bebaacfb09112ee4
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2025-06-05 20:20:16 +02:00
Toni Saario
4c3fe22380 Update VxWorks builds and images to 25.03
VxWorks version update to 25.03 from 24.03.
Removed xf86drm patch.

Pick-to: 6.10
Change-Id: Idd5930fae79c68bc6c14cba5245404de9e851ef8
Reviewed-by: Matti Paaso <matti.paaso@qt.io>
2025-06-04 18:01:31 +00:00
Alexey Edelev
cff147cd19 Add vcpkg build of protobuf and gRPC
Provision protobuf and gRPC packages using vcpkg.

Change-Id: I4d834236408938e228fb0721474edfad946a8dc8
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2025-06-04 20:00:48 +02:00
Alexey Edelev
c259d85b8e Relax jq dependency from provisioning
We may read the installed package information from the 'vcpkg list'
command instead of parsing the vcpkg.json. Also instead of using
the jq as a parser, use the cmake script. This allows skipping the
jq installation.

Change-Id: Id3ace62f8f40ff1bd059878da3fd13e466861830
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2025-05-15 06:19:40 +02:00
Rami Potinkara
8f51576951 Coin: Add Android 16 to CI as insignificant
This patch introduces Android 16 as insignificant to CI.

Task-number: QTBUG-132638
Pick-to: 6.9 6.8
Change-Id: I29577503c50440d6b4821b1b7d6a5135935bf365
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2025-05-14 22:18:02 +03:00
Assam Boudjelthia
1c20066c69 Android: update the sha for Gradle script for provisioning
Use the sha from last update of Gradle and update AGP version
to match qtbase's 0e4f9ffa55c2b77fbe79e96362bc68a968982b48 commit.

Task-number: QTBUG-132852
Pick-to: 6.9
Change-Id: Iab851b08bc11290ee51a22f3bdd64369928dff22
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
2025-03-27 17:31:59 +00:00
Rami Potinkara
ed0dc6ad5a Provisioning: update Gradle cache to Android SDK 35
This task updated the build.gradle of Gradle cache
to use SDK 35 for compile and target.

Task-number: QTBUG-130285
Task-number: QTBUG-129461
Pick-to: 6.9 6.8 6.5
Change-Id: I076211baf896e65aae3b616a3d6286258c3d0640
Reviewed-by: Rami Potinkara <rami.potinkara@qt.io>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2025-03-27 17:31:53 +00:00
Toni Saario
a660f59335 Add VxWorks imx8 build target
Running tests in QEMU for imx8 currently is not reasonably possible,
mostly due to lack of support from QEMU to emulate imx8 board.

Set qtmultimedia and it's dependees qtcharts and VKB as insignificant.

Change-Id: Iffc9c2e7df4bc06fd5b3c77124c650dda5696236
Reviewed-by: Simo Fält <simo.falt@qt.io>
2025-03-13 12:09:16 +02:00
Rami Potinkara
a242bb2e3e Provisioning: Update Android NDK to LTS version r27c
This patch updates Android NDK from LTS r26b to LTS r27c.
The version is 27.2.12479018

Task-number: QTQAINFRA-6479
Task-number: QTQAINFRA-6655
Pick-to: 6.9.0 6.9 6.8.3 6.8 6.5
Change-Id: Ic791cfd5d5dd2a439f96590b6f6f8ca0ac4fb5ae
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Rami Potinkara <rami.potinkara@qt.io>
2025-03-13 10:09:08 +00:00
Axel Spoerl
abbffb449e Add Linux provisioning script for network test
Implement installation script in common/linux and call it from all
distros except arm (for which currently no binary exists).

Run executable after installation.
Warn only, to enable integration.

Task-number: QTQAINFRA-6796
Change-Id: Id0ebed7ae7d43733acb53d908750174634a4e676
Reviewed-by: Dimitrios Apostolou <jimis@qt.io>
2025-03-13 11:09:05 +01:00
Tero Heikkinen
98e55af0f2 Synchronize GNOME based Linux gsettings into a common script
Pick-to: 6.9 6.8
Task-number: QTQAINFRA-6967
Change-Id: Ib2f17a49931dc546af82f1e0384814f9f359a3f3
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
2025-02-27 14:34:43 +02:00
Rami Potinkara
9e5bb886b0 Provisioning: bump Android sdkBuildToolsVersion to 35
This patch bumps the sdkBuildToolsVersion used in Coin to 35.

Task-number: QTBUG-129461
Task-number: QTBUG-130283
Pick-to: 6.9 6.8 6.5
Change-Id: I2e1fbdfd23cb854ec50625ff29331adc61abc32c
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2025-02-25 21:36:35 +02:00
Konsta Alajärvi
b0d999c087 Provisioning: bump Android sdkApiLevel to 35
This patch bumps the sdkApiLevel used in Coin to 35.

Task-number: QTBUG-129461
Task-number: QTBUG-130283
Pick-to: 6.9 6.8 6.5
Change-Id: Ia26248982a2807b2d3554d1a7a7394efcf13f834
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2025-02-25 21:36:17 +02:00
Marianne Yrjänä
4791054b10 Provisioning: Separate QNX710 and QNX800 qemu configs
QNX qemu configs separated. QNX710 and QNX800 require different set of
dependency libraries and there's an extra image creation bug on QNX800
that needs workaround too.
QNX800 toolchain updated.

Task-number: QTBUG-131708
Pick-to: 6.9 6.8
Change-Id: I3bc5c8bb63abbb729d03fcf3afb2f7881bcdd270
Reviewed-by: Simo Fält <simo.falt@qt.io>
2025-02-05 15:46:03 +02:00
Toni Saario
14ca3bbb75 Revert arm side of VxWorks VSB/VIP update
This caused tst_qplaintextedit to start flaking a lot.

Partially reverts b25251e2ba.

Task-number: QTBUG-133243
Change-Id: I348faa09831720a43aeb1f8097c42185e32c31dd
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
2025-01-27 15:48:52 +02:00
Toni Saario
fbed6e5f0c Coin: Use 16GB of memory for VxWorks x86_64 qemu
A test requires this much memory.

Change-Id: I85063fbe911317035a6de3e85354ffb243d0cd7f
Reviewed-by: Simo Fält <simo.falt@qt.io>
Reviewed-by: Aku Pietikäinen <aku.pietikainen@qt.io>
2025-01-23 19:50:23 +02:00
Toni Saario
b25251e2ba Update intel VxWorks VSB and VIP
Increases stack size for intel.

Pick-to: 6.9
Change-Id: Ic40b87582940d03abf4430e2664e55e0a7d322be
Reviewed-by: Simo Fält <simo.falt@qt.io>
2025-01-23 17:50:21 +00:00
Artem Dyomin
39ad0317d1 Decouple install-ffmpeg on linux and macos specific files
The FFmpeg building flow has become too different on linux and macos.
Decoupling the logic makes it more simple to follow.

The CR also fixes nits and shellcheck warnings in install-ffmpeg.

Pick-to: 6.8 6.9
Change-Id: I28639d28c7210809e52ff18ce612da52f8754285
Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
2025-01-17 07:15:13 +01:00
Rami Potinkara
2c85a91e07 Android: Android 15 as maximum supported version
This patch
- Replaces Android 14 with Android 15 as a maximum version
- Introduces Android 15 system image to CI cache
- Sets Android 15 as significant

Task-number: QTQAINFRA-6478
Fixes: QTQAINFRA-6652
Pick-to: 6.9 6.8 6.5
Change-Id: Icb6de43f3e2c2f7f98f3172c83d66bebf9603d24
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2025-01-11 10:31:58 +02:00
Alexandru Croitor
ffef920337 CMake: Raise CI-tested minimum CMake version to 3.22.6
Also change the upper case L to lower case l, because it's changed
upstream.

Amends 0cfa1fa561

Pick-to: 6.9
Task-number: QTBUG-131169
Change-Id: I5e501e37bb5516e15a2cbb68cb523ebc5e88d47c
Reviewed-by: Nicholas Bennett <nicholas.bennett@qt.io>
2024-12-12 16:36:48 +00:00
Elias Toivola
9078baf0a9 Android: update emulator version to 35.2.10
The newest stable version of Android emulator should bring more
stability.

Pick-to: 6.9 6.8 6.5
Fixes: QTQAINFRA-6805
Change-Id: Id67d3ec888b486e6aae862588928528788583aae
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2024-12-11 06:10:08 +00:00
Alexey Edelev
12b6c48c85 Update Integrity toolchain file
Update Integrity toolchain file to meet the updated PlatformGraphics
module requirements.

Change-Id: I6ef5dd0d2440d32e537e30a301cf4b3c88b44130
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Kimmo Ollila <kimmo.ollila@qt.io>
2024-12-10 16:30:51 +02:00
Christian Ehrlicher
2333f79e3a Coin: Fix env var for Oracle libraries and headers
While on windows the instantclient sdk also provides the relevant
(import) libs, on linux those libraries are only provided by
instantclient-basiclite package. Therfore setting the Oracle_ROOT env
var to the sdk dir will prevent the libraries to be found on linux.
The FindOracle.cmake module is already adjusted to look for the
libraries in ${Oracle_ROOT}, ${Oracle_ROOT}/lib and
${Oracle_ROOT}/sdk/lib so they should be found correctly even we don't
append 'sdk' for Oracle_ROOT on windows for consistency.

Task-number: QTBUG-128873
Change-Id: Icd211d5b503234de529c339581a4f42f0b5fc726
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2024-12-10 16:30:43 +02:00
Alexey Edelev
93a9e3ce7a Move vcpkg tool SHA1 sums to vcpkg_tool_release_tag.txt
It's easier to manage the vcpkg tool versions using this file,
but not editing script each time.

Change-Id: If6d04a8ac07731ec1fab46b1f663b86bbe640631
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2024-12-10 15:30:37 +01:00
Alexey Edelev
80eae8fe74 Bump vcpkg version
The old version doesn't support MSVC 17.10 toolchain, so we cannot
build for arm64.

Change-Id: I63df5b61d6d7e06ee49f46f77528021f3ce5be47
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2024-12-10 15:30:34 +01:00
Toni Saario
9f1cba8637 Coin: Limit avahi-daemon interfaces
Avahi-daemon often hogs 100% of CPU on the VMs. This particularly
causes issue on 2 core(thread) VMs where tests compete for CPU
with avahi.

Limiting avahi to test service related interfaces eliminates the
abnormal CPU usage.

Avahi should be only needed for tests to see the docker test services.

Pick-to: 6.8 6.5 5.15
Task-number: QTQAINFRA-6697
Change-Id: I30d75f2118501cd69d98aeea8c62722a0fb238c5
Reviewed-by: Dimitrios Apostolou <jimis@qt.io>
2024-11-23 08:40:44 +02:00
Toni Saario
60df9e2cf7 Coin: Add dev null components to VxWorks vip
Updated VIPs include following components:
INCLUDE_DEV_ARANDOM
INCLUDE_DEV_CONSOLE
INCLUDE_DEV_FULL
INCLUDE_DEV_RANDOM
INCLUDE_DEV_TTY
INCLUDE_DEV_URANDOM
INCLUDE_DEV_ZERO
INCLUDE_DEV_NULL

Task-number: QTBUG-130073
Change-Id: I7df164aa0228ab6c0760c40ab6b93f29f699025a
Reviewed-by: Simo Fält <simo.falt@qt.io>
2024-11-23 08:40:40 +02:00
Ville-Pekka Karhu
112af8cb6c Provisioning: Add registry mirror for Docker images
Task-number: QTQAINFRA-3427
Change-Id: I131b89d551a5fac4d35b8af5b37ccc573e6ad3b9
Reviewed-by: Dimitrios Apostolou <jimis@qt.io>
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
2024-11-23 06:40:37 +00:00
Matti Paaso
0ac0b15489 Provisioning: Add sourceserver_remote_url into Axivion config
When running Axivion analysis on virtual machine, analysis will
update sourceserver_gitdir and source_server_remote_url into
result database. If these are missing from configuration,
analysis will use work area values for these and those does
not work on dashboard.

Task-number: QTQAINFRA-6262
Change-Id: I00df7eade6de1a12a6bb59cbd24374dd0cedd715
Reviewed-by: Toni Saario <toni.saario@qt.io>
2024-11-23 08:40:35 +02:00
Alexandru Croitor
400776459b CMake: Update provisioned CMake to version 3.30.5
Pick-to: 6.8
Fixes: QTQAINFRA-6484
Change-Id: Iacccb9f43059c78080e338da6680f5c50284c057
Reviewed-by: Simo Fält <simo.falt@qt.io>
2024-10-27 10:13:54 +02:00
Alexandru Croitor
da3c68ba0c coin: Provision ninja 1.12.1 for RHEL 8.10 and 9.2
It is needed to successfully build Qt with CMake 3.30.

Pick-to: 6.8
Fixes: QTQAINFRA-6484
Change-Id: I70b7d91571f5b20a008947eb0837dd8351965665
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2024-10-19 21:17:40 +02:00
Tim Blechmann
8ba7d0c382 Provisioning: linux - install virtual video test driver vivid
The vivid kernel module emulates a v4l2 video devices like webcams. We
instantiate two devices via vivid to allow qt multimedia unit tests
requiring multiple cameras to run correctly.

Pick-to: 6.5 6.7 6.8
Change-Id: I1b87954e3c8af797f5b09dabf2d4939d8320db06
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
2024-10-14 21:31:43 +08:00