log for com.github.shadowsocks:5030050

== Installed Android Tools ==

2022-06-24 23:10:48,240 DEBUG: Reading 'config.yml'
2022-06-24 23:10:48,249 INFO: Using /opt/android-sdk/build-tools/29.0.3/apksigner 
2022-06-24 23:10:48,252 INFO: Creating log directory
2022-06-24 23:10:48,252 INFO: Creating temporary directory
2022-06-24 23:10:48,252 INFO: Creating output directory
2022-06-24 23:10:48,256 DEBUG: Getting git vcs interface for https://github.com/shadowsocks/shadowsocks-android.git
2022-06-24 23:10:48,256 DEBUG: > git --version
git version 2.11.0
2022-06-24 23:10:48,488 INFO: Using git version 2.11.0
2022-06-24 23:10:48,489 DEBUG: Checking 5.3.0-nightly
2022-06-24 23:10:48,489 INFO: Building version 5.3.0-nightly (5030050) of com.github.shadowsocks
2022-06-24 23:10:48,489 WARNING: Android NDK version 'r21e' could not be found!
2022-06-24 23:10:48,489 WARNING: Configured versions:
2022-06-24 23:10:48,489 WARNING:   r23b: /opt/android-sdk/ndk/23.1.7779620
2022-06-24 23:10:48,490 INFO: Downloading https://dl.google.com/android/repository/android-ndk-r21e-linux-x86_64.zip
2022-06-24 23:10:48,503 DEBUG: Starting new HTTPS connection (1): dl.google.com
2022-06-24 23:10:48,559 DEBUG: https://dl.google.com:443 "GET /android/repository/android-ndk-r21e-linux-x86_64.zip HTTP/1.1" 200 1190670072
2022-06-24 23:11:24,425 INFO: Unzipping to /opt/android-sdk/ndk
2022-06-24 23:11:51,523 INFO: Set NDK r21e (21.4.7075529) up
2022-06-24 23:11:51,530 INFO: Running 'sudo' commands in /home/vagrant
2022-06-24 23:11:51,531 DEBUG: > sudo DEBIAN_FRONTEND=noninteractive bash -x -c apt-get update || apt-get update && apt-get install openjdk-11-jdk-headless && update-alternatives --auto java
+ apt-get update
Hit:1 http://security.debian.org/debian-security stretch/updates InRelease
Ign:2 http://deb.debian.org/debian stretch InRelease
Hit:3 http://deb.debian.org/debian stretch-updates InRelease
Get:4 http://deb.debian.org/debian stretch-backports-sloppy InRelease [46.7 kB]
Get:5 http://deb.debian.org/debian stretch-backports InRelease [91.8 kB]
Get:6 http://deb.debian.org/debian testing InRelease [130 kB]
Hit:7 http://deb.debian.org/debian stretch Release
Get:8 http://deb.debian.org/debian testing/main amd64 Packages.diff/Index [63.6 kB]
Get:10 http://deb.debian.org/debian testing/main i386 Packages.diff/Index [63.6 kB]
Get:11 http://deb.debian.org/debian testing/main Translation-en.diff/Index [63.6 kB]
Get:12 http://deb.debian.org/debian testing/main amd64 Packages T-2022-06-24-2010.09-F-2022-06-24-1413.16.pdiff [1,438 B]
Get:13 http://deb.debian.org/debian testing/main i386 Packages T-2022-06-24-2010.09-F-2022-06-24-1413.16.pdiff [1,431 B]
Get:12 http://deb.debian.org/debian testing/main amd64 Packages T-2022-06-24-2010.09-F-2022-06-24-1413.16.pdiff [1,438 B]
Get:13 http://deb.debian.org/debian testing/main i386 Packages T-2022-06-24-2010.09-F-2022-06-24-1413.16.pdiff [1,431 B]
Get:14 http://deb.debian.org/debian testing/main Translation-en T-2022-06-24-1413.16-F-2022-06-24-1413.16.pdiff [85 B]
Get:14 http://deb.debian.org/debian testing/main Translation-en T-2022-06-24-1413.16-F-2022-06-24-1413.16.pdiff [85 B]
Fetched 462 kB in 5s (80.1 kB/s)
Reading package lists...
+ apt-get install openjdk-11-jdk-headless
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  libasound2 libasound2-data openjdk-11-jre-headless
Suggested packages:
  libasound2-plugins alsa-utils openjdk-11-demo openjdk-11-source libnss-mdns
  fonts-dejavu-extra fonts-ipafont-gothic fonts-ipafont-mincho
  fonts-wqy-microhei | fonts-wqy-zenhei fonts-indic
The following NEW packages will be installed:
  libasound2 libasound2-data openjdk-11-jdk-headless openjdk-11-jre-headless
0 upgraded, 4 newly installed, 0 to remove and 2 not upgraded.
Need to get 230 MB of archives.
After this operation, 374 MB of additional disk space will be used.
Get:1 http://deb.debian.org/debian stretch/main amd64 libasound2-data all 1.1.3-5 [173 kB]
Get:2 http://deb.debian.org/debian stretch/main amd64 libasound2 amd64 1.1.3-5 [497 kB]
Get:3 http://deb.debian.org/debian stretch-backports/main amd64 openjdk-11-jre-headless amd64 11.0.6+10-1~bpo9+1 [37.4 MB]
Get:4 http://deb.debian.org/debian stretch-backports/main amd64 openjdk-11-jdk-headless amd64 11.0.6+10-1~bpo9+1 [192 MB]
Fetched 230 MB in 2s (101 MB/s)
Selecting previously unselected package libasound2-data.
(Reading database ... 65038 files and directories currently installed.)
Preparing to unpack .../libasound2-data_1.1.3-5_all.deb ...
Unpacking libasound2-data (1.1.3-5) ...
Selecting previously unselected package libasound2:amd64.
Preparing to unpack .../libasound2_1.1.3-5_amd64.deb ...
Unpacking libasound2:amd64 (1.1.3-5) ...
Selecting previously unselected package openjdk-11-jre-headless:amd64.
Preparing to unpack .../openjdk-11-jre-headless_11.0.6+10-1~bpo9+1_amd64.deb ...
Unpacking openjdk-11-jre-headless:amd64 (11.0.6+10-1~bpo9+1) ...
Selecting previously unselected package openjdk-11-jdk-headless:amd64.
Preparing to unpack .../openjdk-11-jdk-headless_11.0.6+10-1~bpo9+1_amd64.deb ...
Unpacking openjdk-11-jdk-headless:amd64 (11.0.6+10-1~bpo9+1) ...
Setting up libasound2-data (1.1.3-5) ...
Setting up libasound2:amd64 (1.1.3-5) ...
Processing triggers for libc-bin (2.24-11+deb9u4) ...
Setting up openjdk-11-jre-headless:amd64 (11.0.6+10-1~bpo9+1) ...
Setting up openjdk-11-jdk-headless:amd64 (11.0.6+10-1~bpo9+1) ...
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jdeprscan to provide /usr/bin/jdeprscan (jdeprscan) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jimage to provide /usr/bin/jimage (jimage) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jlink to provide /usr/bin/jlink (jlink) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jmod to provide /usr/bin/jmod (jmod) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jshell to provide /usr/bin/jshell (jshell) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jaotc to provide /usr/bin/jaotc (jaotc) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jhsdb to provide /usr/bin/jhsdb (jhsdb) in auto mode
+ update-alternatives --auto java
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/java to provide /usr/bin/java (java) in auto mode
2022-06-24 23:13:06,227 DEBUG: > sudo passwd --lock root
passwd: password expiry information changed.
2022-06-24 23:13:06,432 DEBUG: > sudo SUDO_FORCE_REMOVE=yes dpkg --purge sudo
(Reading database ... 65695 files and directories currently installed.)
Removing sudo (1.8.19p1-2.1+deb9u3) ...
Purging configuration files for sudo (1.8.19p1-2.1+deb9u3) ...
Processing triggers for systemd (232-25+deb9u13) ...
2022-06-24 23:13:12,991 INFO: Getting source for revision 09c2290c1ba07336b11a6b7576886d202e14ac71
2022-06-24 23:13:12,992 DEBUG: Directory: build/com.github.shadowsocks
2022-06-24 23:13:12,992 DEBUG: > git rev-parse --show-toplevel
2022-06-24 23:13:13,204 DEBUG: Directory: build/com.github.shadowsocks
2022-06-24 23:13:13,204 DEBUG: > git submodule foreach --recursive git reset --hard
2022-06-24 23:13:13,813 DEBUG: Directory: build/com.github.shadowsocks
2022-06-24 23:13:13,813 DEBUG: > git reset --hard
2022-06-24 23:13:14,023 DEBUG: Directory: build/com.github.shadowsocks
2022-06-24 23:13:14,024 DEBUG: > git submodule foreach --recursive git clean -dffx
2022-06-24 23:13:14,330 DEBUG: Directory: build/com.github.shadowsocks
2022-06-24 23:13:14,330 DEBUG: > git clean -dffx
2022-06-24 23:13:14,436 DEBUG: Directory: build/com.github.shadowsocks
2022-06-24 23:13:14,436 DEBUG: > git -c core.askpass=/bin/true -c core.sshCommand=/bin/false -c url.https://.insteadOf=ssh:// -c url.https://u:p@bitbucket.org/.insteadOf=git@bitbucket.org: -c url.https://u:p@bitbucket.org.insteadOf=git://bitbucket.org -c url.https://u:p@bitbucket.org.insteadOf=https://bitbucket.org -c url.https://u:p@github.com/.insteadOf=git@github.com: -c url.https://u:p@github.com.insteadOf=git://github.com -c url.https://u:p@github.com.insteadOf=https://github.com -c url.https://u:p@gitlab.com/.insteadOf=git@gitlab.com: -c url.https://u:p@gitlab.com.insteadOf=git://gitlab.com -c url.https://u:p@gitlab.com.insteadOf=https://gitlab.com fetch origin
2022-06-24 23:13:15,145 DEBUG: Directory: build/com.github.shadowsocks
2022-06-24 23:13:15,146 DEBUG: > git -c core.askpass=/bin/true -c core.sshCommand=/bin/false -c url.https://.insteadOf=ssh:// -c url.https://u:p@bitbucket.org/.insteadOf=git@bitbucket.org: -c url.https://u:p@bitbucket.org.insteadOf=git://bitbucket.org -c url.https://u:p@bitbucket.org.insteadOf=https://bitbucket.org -c url.https://u:p@github.com/.insteadOf=git@github.com: -c url.https://u:p@github.com.insteadOf=git://github.com -c url.https://u:p@github.com.insteadOf=https://github.com -c url.https://u:p@gitlab.com/.insteadOf=git@gitlab.com: -c url.https://u:p@gitlab.com.insteadOf=git://gitlab.com -c url.https://u:p@gitlab.com.insteadOf=https://gitlab.com remote prune origin
2022-06-24 23:13:15,456 DEBUG: Directory: build/com.github.shadowsocks
2022-06-24 23:13:15,456 DEBUG: > git -c core.askpass=/bin/true -c core.sshCommand=/bin/false -c url.https://.insteadOf=ssh:// -c url.https://u:p@bitbucket.org/.insteadOf=git@bitbucket.org: -c url.https://u:p@bitbucket.org.insteadOf=git://bitbucket.org -c url.https://u:p@bitbucket.org.insteadOf=https://bitbucket.org -c url.https://u:p@github.com/.insteadOf=git@github.com: -c url.https://u:p@github.com.insteadOf=git://github.com -c url.https://u:p@github.com.insteadOf=https://github.com -c url.https://u:p@gitlab.com/.insteadOf=git@gitlab.com: -c url.https://u:p@gitlab.com.insteadOf=git://gitlab.com -c url.https://u:p@gitlab.com.insteadOf=https://gitlab.com fetch --prune --tags --force origin
2022-06-24 23:13:15,763 DEBUG: Directory: build/com.github.shadowsocks
2022-06-24 23:13:15,764 DEBUG: > git remote set-head origin --auto
2022-06-24 23:13:16,186 DEBUG: Directory: build/com.github.shadowsocks
2022-06-24 23:13:16,187 DEBUG: > git checkout -f 09c2290c1ba07336b11a6b7576886d202e14ac71
2022-06-24 23:13:16,470 DEBUG: Directory: build/com.github.shadowsocks
2022-06-24 23:13:16,470 DEBUG: > git clean -dffx
2022-06-24 23:13:16,577 INFO: Initialising submodules
2022-06-24 23:13:16,578 DEBUG: Directory: build/com.github.shadowsocks
2022-06-24 23:13:16,578 DEBUG: > git rev-parse --show-toplevel
2022-06-24 23:13:16,879 DEBUG: Directory: build/com.github.shadowsocks
2022-06-24 23:13:16,879 DEBUG: > git submodule sync
2022-06-24 23:13:17,197 DEBUG: Directory: build/com.github.shadowsocks
2022-06-24 23:13:17,198 DEBUG: > git -c core.askpass=/bin/true -c core.sshCommand=/bin/false -c url.https://.insteadOf=ssh:// -c url.https://u:p@bitbucket.org/.insteadOf=git@bitbucket.org: -c url.https://u:p@bitbucket.org.insteadOf=git://bitbucket.org -c url.https://u:p@bitbucket.org.insteadOf=https://bitbucket.org -c url.https://u:p@github.com/.insteadOf=git@github.com: -c url.https://u:p@github.com.insteadOf=git://github.com -c url.https://u:p@github.com.insteadOf=https://github.com -c url.https://u:p@gitlab.com/.insteadOf=git@gitlab.com: -c url.https://u:p@gitlab.com.insteadOf=git://gitlab.com -c url.https://u:p@gitlab.com.insteadOf=https://gitlab.com submodule update --init --force --recursive
Submodule path 'core/src/main/jni/badvpn': checked out 'fb01eb983915c9a09a690ad44c6028dd87500ec7'
Submodule path 'core/src/main/jni/libancillary': checked out '311e5d14f593f16c785bc6605220517eb1f21f6b'
Submodule path 'core/src/main/jni/libevent': checked out 'f29f07bc8c43eec96f227e6f6eede32b3af66168'
Submodule path 'core/src/main/jni/redsocks': checked out 'd9954892ba96627748efab2901f38d7e20d6d0a2'
Submodule path 'core/src/main/rust/shadowsocks-rust': checked out 'e84e76a6821abdf75b5ba393d405b42d07d2dcdd'
2022-06-24 23:13:17,708 INFO: Collecting source libraries
2022-06-24 23:13:17,726 DEBUG: Removing debuggable flags from build/srclib/rustup
2022-06-24 23:13:17,736 INFO: Creating local.properties file at build/com.github.shadowsocks/local.properties
2022-06-24 23:13:17,736 INFO: Creating local.properties file at build/com.github.shadowsocks/mobile/local.properties
2022-06-24 23:13:17,737 DEBUG: Removing debuggable flags from build/com.github.shadowsocks/mobile
2022-06-24 23:13:17,738 INFO: Removing specified files
2022-06-24 23:13:17,739 INFO: Removing tv
2022-06-24 23:13:17,740 INFO: Removing core/src/main/jni/badvpn/lwip/test/fuzz/inputs
2022-06-24 23:13:17,741 INFO: Removing mobile/src/main/java/com/github/shadowsocks/ScannerActivity.kt
2022-06-24 23:13:17,741 INFO: Removing core/src/main/jni/badvpn/lime
2022-06-24 23:13:17,756 INFO: Running 'prebuild' commands in build/com.github.shadowsocks/mobile
2022-06-24 23:13:17,756 DEBUG: Directory: build/com.github.shadowsocks/mobile
2022-06-24 23:13:17,756 DEBUG: > bash -x -c -- echo "rust.rustcCommand=$HOME/.cargo/bin/rustc" >> ../local.properties && echo "rust.cargoCommand=$HOME/.cargo/bin/cargo" >> ../local.properties && echo "rust.pythonCommand=/usr/bin/python3" >> ../local.properties && sed -i -e '/gms/d' -e '/firebase/d' ../build.gradle.kts && sed -i -e '/gms/d' -e '/firebase/d' -e '/kotlinx-coroutines-play-services/d' ../core/build.gradle.kts && sed -i -e '/gms/d' -e '/firebase/d' -e '/mlkit/d' -e '/camera/d' build.gradle.kts && pushd ../core/src/main && sed -i -e '/firebase/,/>$/d' -e '/gms/,/>$/d' AndroidManifest.xml && sed -i -E -e '/service_subscription_working/s/%d(.*)%d/%1$d\1%2$d/' res/*/strings.xml && cd java/com/github/shadowsocks && sed -i -e '/firebase/Id' Core.kt bg/BaseService.kt && popd && pushd src/main && sed -i -z -E -e 's/<activity[^<]+ScannerActivity[^>]+>//' AndroidManifest.xml && sed -i -e '/CAMERA/d' AndroidManifest.xml && sed -i -e '/"scan"/,/shortcut>/d' res/xml/shortcuts.xml && sed -i -z -E -e 's/<item[^<]+action_scan_qr_code[^>]+>//' res/menu/profile_manager_menu.xml && cd java/com/github/shadowsocks && sed -i -e '/firebase/Id' MainActivity.kt && sed -i -e '/OssLicensesMenuActivity/d' AboutFragment.kt && sed -i -e '/ScannerActivity/d' -e '/action_scan_qr_code/,/^\s\+}/d' ProfilesFragment.kt && popd && sed -i -e '/isEnable/s/true/false/' ../buildSrc/src/main/kotlin/Helpers.kt
+ echo rust.rustcCommand=/home/vagrant/.cargo/bin/rustc
+ echo rust.cargoCommand=/home/vagrant/.cargo/bin/cargo
+ echo rust.pythonCommand=/usr/bin/python3
+ sed -i -e /gms/d -e /firebase/d ../build.gradle.kts
+ sed -i -e /gms/d -e /firebase/d -e /kotlinx-coroutines-play-services/d ../core/build.gradle.kts
+ sed -i -e /gms/d -e /firebase/d -e /mlkit/d -e /camera/d build.gradle.kts
+ pushd ../core/src/main
~/build/com.github.shadowsocks/core/src/main ~/build/com.github.shadowsocks/mobile
+ sed -i -e '/firebase/,/>$/d' -e '/gms/,/>$/d' AndroidManifest.xml
+ sed -i -E -e '/service_subscription_working/s/%d(.*)%d/%1$d\1%2$d/' res/values-ar/strings.xml res/values-es/strings.xml res/values-fa/strings.xml res/values-fr/strings.xml res/values-ja/strings.xml res/values-ko/strings.xml res/values-ru/strings.xml res/values/strings.xml res/values-tr/strings.xml res/values-zh-rCN/strings.xml res/values-zh-rTW/strings.xml
+ cd java/com/github/shadowsocks
+ sed -i -e /firebase/Id Core.kt bg/BaseService.kt
+ popd
~/build/com.github.shadowsocks/mobile
+ pushd src/main
~/build/com.github.shadowsocks/mobile/src/main ~/build/com.github.shadowsocks/mobile
+ sed -i -z -E -e 's/<activity[^<]+ScannerActivity[^>]+>//' AndroidManifest.xml
+ sed -i -e /CAMERA/d AndroidManifest.xml
+ sed -i -e '/"scan"/,/shortcut>/d' res/xml/shortcuts.xml
+ sed -i -z -E -e 's/<item[^<]+action_scan_qr_code[^>]+>//' res/menu/profile_manager_menu.xml
+ cd java/com/github/shadowsocks
+ sed -i -e /firebase/Id MainActivity.kt
+ sed -i -e /OssLicensesMenuActivity/d AboutFragment.kt
+ sed -i -e /ScannerActivity/d -e '/action_scan_qr_code/,/^\s\+}/d' ProfilesFragment.kt
+ popd
~/build/com.github.shadowsocks/mobile
+ sed -i -e /isEnable/s/true/false/ ../buildSrc/src/main/kotlin/Helpers.kt
2022-06-24 23:13:17,975 INFO: Cleaning Gradle project...
2022-06-24 23:13:17,976 DEBUG: Directory: build/com.github.shadowsocks/mobile
2022-06-24 23:13:17,976 DEBUG: > /home/vagrant/fdroidserver/gradlew-fdroid clean
Found 7.2 via distributionUrl
Downloading missing gradle version 7.2
cachedir /home/vagrant/.cache/fdroidserver
/home/vagrant/.cache/fdroidserver/gradle-7.2-bin.zip: OK
Running /opt/gradle/versions/7.2/bin/gradle clean

Welcome to Gradle 7.2!

Here are the highlights of this release:
 - Toolchain support for Scala
 - More cache hits when Java source files have platform-specific line endings
 - More resilient remote HTTP build cache behavior

For more details see https://docs.gradle.org/7.2/release-notes.html

To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.2/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build 

> Task :buildSrc:compileKotlin
w: /home/vagrant/build/com.github.shadowsocks/buildSrc/src/main/kotlin/Helpers.kt: (2, 26): 'VariantOutput' is deprecated. Deprecated in Java
w: /home/vagrant/build/com.github.shadowsocks/buildSrc/src/main/kotlin/Helpers.kt: (115, 65): 'VariantOutput' is deprecated. Deprecated in Java

> Task :buildSrc:compileJava NO-SOURCE
> Task :buildSrc:compileGroovy NO-SOURCE
> Task :buildSrc:pluginDescriptors
> Task :buildSrc:processResources NO-SOURCE
> Task :buildSrc:classes UP-TO-DATE
> Task :buildSrc:inspectClassesForKotlinIC

> Task :buildSrc:jar
:jar: No valid plugin descriptors were found in META-INF/gradle-plugins

> Task :buildSrc:assemble
> Task :buildSrc:compileTestKotlin NO-SOURCE
> Task :buildSrc:pluginUnderTestMetadata
> Task :buildSrc:compileTestJava NO-SOURCE
> Task :buildSrc:compileTestGroovy NO-SOURCE
> Task :buildSrc:processTestResources NO-SOURCE
> Task :buildSrc:testClasses UP-TO-DATE
> Task :buildSrc:test NO-SOURCE
> Task :buildSrc:validatePlugins
> Task :buildSrc:check
> Task :buildSrc:build

> Configure project :core
WARNING:The option setting 'android.enableR8.fullMode=true' is experimental.
The current default is 'false'.
WARNING:The option setting 'android.enableResourceOptimizations=false' is deprecated.
The current default is 'true'.
It will be removed in version 8.0 of the Android Gradle plugin.
Warning: No match found for [DefaultTaskExecutionRequest{args=[clean],projectPath='null',rootDir='null'}]
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir

> Configure project :mobile
Warning: No match found for [DefaultTaskExecutionRequest{args=[clean],projectPath='null',rootDir='null'}]
Checking the license for package Android SDK Build-Tools 32 in /opt/android-sdk/licenses
License for package Android SDK Build-Tools 32 accepted.
Preparing "Install Android SDK Build-Tools 32 (revision: 32.0.0)".
"Install Android SDK Build-Tools 32 (revision: 32.0.0)" ready.
Installing Android SDK Build-Tools 32 in /opt/android-sdk/build-tools/32.0.0
"Install Android SDK Build-Tools 32 (revision: 32.0.0)" complete.
"Install Android SDK Build-Tools 32 (revision: 32.0.0)" finished.
Checking the license for package Android SDK Platform 31 in /opt/android-sdk/licenses
License for package Android SDK Platform 31 accepted.
Preparing "Install Android SDK Platform 31 (revision: 1)".
"Install Android SDK Platform 31 (revision: 1)" ready.
Installing Android SDK Platform 31 in /opt/android-sdk/platforms/android-31
"Install Android SDK Platform 31 (revision: 1)" complete.
"Install Android SDK Platform 31 (revision: 1)" finished.

> Task :mobile:clean UP-TO-DATE

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

See https://docs.gradle.org/7.2/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 1m 41s
7 actionable tasks: 6 executed, 1 up-to-date
2022-06-24 23:15:03,413 INFO: Scanning source for common problems...
2022-06-24 23:15:03,426 INFO: Removing gradle-wrapper.jar at gradle/wrapper/gradle-wrapper.jar
2022-06-24 23:15:03,530 INFO: Creating source tarball...
2022-06-24 23:15:04,899 INFO: Running 'build' commands in build/com.github.shadowsocks/mobile
2022-06-24 23:15:04,899 DEBUG: Directory: build/com.github.shadowsocks/mobile
2022-06-24 23:15:04,899 DEBUG: > bash -x -c /home/vagrant/build/srclib/rustup/rustup-init.sh -y && source $HOME/.cargo/env && rustup toolchain install nightly-2022-06-21 && rustup default nightly-2022-06-21 && cd ../core/src/main/rust/shadowsocks-rust && rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android
+ /home/vagrant/build/srclib/rustup/rustup-init.sh -y
info: downloading installer
info: profile set to 'default'
info: default host triple is x86_64-unknown-linux-gnu
info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
info: latest update on 2022-05-19, rust version 1.61.0 (fe5b13d68 2022-05-18)
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'rust-docs'
info: downloading component 'rust-std'
info: downloading component 'rustc'
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
info: installing component 'rust-std'
info: installing component 'rustc'
info: installing component 'rustfmt'
info: default toolchain set to 'stable-x86_64-unknown-linux-gnu'

  stable-x86_64-unknown-linux-gnu installed - rustc 1.61.0 (fe5b13d68 2022-05-18)


Rust is installed now. Great!

To get started you may need to restart your current shell.
This would reload your PATH environment variable to include
Cargo's bin directory ($HOME/.cargo/bin).

To configure your current shell, run:
source $HOME/.cargo/env
+ source /home/vagrant/.cargo/env
++ case ":${PATH}:" in
++ export PATH=/home/vagrant/.cargo/bin:/opt/android-sdk/ndk/21.4.7075529:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt/android-sdk/tools:/opt/android-sdk/platform-tools:/opt/gradle/bin
++ PATH=/home/vagrant/.cargo/bin:/opt/android-sdk/ndk/21.4.7075529:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt/android-sdk/tools:/opt/android-sdk/platform-tools:/opt/gradle/bin
+ rustup toolchain install nightly-2022-06-21
info: syncing channel updates for 'nightly-2022-06-21-x86_64-unknown-linux-gnu'
info: latest update on 2022-06-21, rust version 1.63.0-nightly (5750a6aa2 2022-06-20)
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'rust-docs'
info: downloading component 'rust-std'
info: downloading component 'rustc'
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
info: installing component 'rust-std'
info: installing component 'rustc'
info: installing component 'rustfmt'

  nightly-2022-06-21-x86_64-unknown-linux-gnu installed - rustc 1.63.0-nightly (5750a6aa2 2022-06-20)

info: checking for self-updates
+ rustup default nightly-2022-06-21
info: using existing install for 'nightly-2022-06-21-x86_64-unknown-linux-gnu'
info: default toolchain set to 'nightly-2022-06-21-x86_64-unknown-linux-gnu'

  nightly-2022-06-21-x86_64-unknown-linux-gnu unchanged - rustc 1.63.0-nightly (5750a6aa2 2022-06-20)

+ cd ../core/src/main/rust/shadowsocks-rust
+ rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android
info: downloading component 'rust-std' for 'armv7-linux-androideabi'
info: installing component 'rust-std' for 'armv7-linux-androideabi'
info: downloading component 'rust-std' for 'aarch64-linux-android'
info: installing component 'rust-std' for 'aarch64-linux-android'
info: downloading component 'rust-std' for 'i686-linux-android'
info: installing component 'rust-std' for 'i686-linux-android'
info: downloading component 'rust-std' for 'x86_64-linux-android'
info: installing component 'rust-std' for 'x86_64-linux-android'
2022-06-24 23:15:51,932 INFO: Building Gradle project...
2022-06-24 23:15:51,933 DEBUG: Directory: build/com.github.shadowsocks/mobile
2022-06-24 23:15:51,933 DEBUG: > /home/vagrant/fdroidserver/gradlew-fdroid assembleRelease
Found 7.2 via distributionUrl
Running /opt/gradle/versions/7.2/bin/gradle assembleRelease
To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.2/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build 

> Task :buildSrc:compileKotlin
w: /home/vagrant/build/com.github.shadowsocks/buildSrc/src/main/kotlin/Helpers.kt: (2, 26): 'VariantOutput' is deprecated. Deprecated in Java
w: /home/vagrant/build/com.github.shadowsocks/buildSrc/src/main/kotlin/Helpers.kt: (115, 65): 'VariantOutput' is deprecated. Deprecated in Java

> Task :buildSrc:compileJava NO-SOURCE
> Task :buildSrc:compileGroovy NO-SOURCE
> Task :buildSrc:pluginDescriptors
> Task :buildSrc:processResources NO-SOURCE
> Task :buildSrc:classes UP-TO-DATE
> Task :buildSrc:inspectClassesForKotlinIC

> Task :buildSrc:jar
:jar: No valid plugin descriptors were found in META-INF/gradle-plugins

> Task :buildSrc:assemble
> Task :buildSrc:compileTestKotlin NO-SOURCE
> Task :buildSrc:pluginUnderTestMetadata
> Task :buildSrc:compileTestJava NO-SOURCE
> Task :buildSrc:compileTestGroovy NO-SOURCE
> Task :buildSrc:processTestResources NO-SOURCE
> Task :buildSrc:testClasses UP-TO-DATE
> Task :buildSrc:test NO-SOURCE
> Task :buildSrc:validatePlugins
> Task :buildSrc:check
> Task :buildSrc:build

> Configure project :core
WARNING:The option setting 'android.enableR8.fullMode=true' is experimental.
The current default is 'false'.
WARNING:The option setting 'android.enableResourceOptimizations=false' is deprecated.
The current default is 'true'.
It will be removed in version 8.0 of the Android Gradle plugin.
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir

> Task :core:preBuild UP-TO-DATE
> Task :core:preReleaseBuild UP-TO-DATE
> Task :plugin:preBuild UP-TO-DATE
> Task :plugin:preReleaseBuild UP-TO-DATE
> Task :plugin:compileReleaseAidl NO-SOURCE
> Task :plugin:packageReleaseRenderscript NO-SOURCE
> Task :core:compileReleaseRenderscript NO-SOURCE
> Task :core:generateReleaseBuildConfig
> Task :core:generateReleaseResValues
> Task :core:generateReleaseResources
> Task :core:compileReleaseAidl
> Task :core:packageReleaseResources
> Task :plugin:compileReleaseRenderscript NO-SOURCE
> Task :plugin:generateReleaseResValues
> Task :plugin:generateReleaseResources
> Task :plugin:packageReleaseResources
> Task :plugin:generateReleaseBuildConfig
> Task :plugin:parseReleaseLocalResources
> Task :core:parseReleaseLocalResources
> Task :plugin:processReleaseManifest
> Task :core:processReleaseManifest
> Task :plugin:javaPreCompileRelease
> Task :mobile:preBuild UP-TO-DATE
> Task :mobile:preReleaseBuild UP-TO-DATE
> Task :mobile:compileReleaseAidl NO-SOURCE
> Task :core:packageReleaseRenderscript NO-SOURCE
> Task :mobile:compileReleaseRenderscript NO-SOURCE
> Task :core:javaPreCompileRelease
> Task :mobile:generateReleaseBuildConfig
> Task :mobile:generateReleaseResValues
> Task :plugin:writeReleaseAarMetadata
> Task :core:writeReleaseAarMetadata
> Task :mobile:generateReleaseResources
> Task :plugin:generateReleaseRFile
> Task :mobile:createReleaseCompatibleScreenManifests
> Task :core:extractDeepLinksRelease
> Task :mobile:extractDeepLinksRelease
> Task :plugin:extractDeepLinksRelease
> Task :mobile:processReleaseMainManifest
> Task :mobile:processReleaseManifest
> Task :mobile:javaPreCompileRelease
> Task :mobile:checkReleaseAarMetadata
> Task :mobile:mergeReleaseResources
> Task :mobile:processReleaseManifestForPackage
> Task :core:generateReleaseRFile
> Task :plugin:compileReleaseKotlin
> Task :plugin:compileReleaseJavaWithJavac
> Task :plugin:bundleLibCompileToJarRelease
> Task :core:configureNdkBuildRelease

> Task :core:buildNdkBuildRelease
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c:32:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/redsocks/redsocks.c:625:11: warning: implicit declaration of function 'pipe2' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:                 error = pipe2(&pump->request.read, O_NONBLOCK);
C/C++:                         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/libevent/evutil_rand.c:198:2: warning: implicit declaration of function 'arc4random_addrandom' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:         arc4random_addrandom((unsigned char*)buf,
C/C++:         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:            ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: place parentheses around the assignment to silence this warning
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:            (                                                          )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:                      ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:1021:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 4 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/flow/PacketPassFairQueue.c:174:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 1 warning generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.c:37:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.h:37:
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:67:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:            ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: place parentheses around the assignment to silence this warning
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:            (                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:                 ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         } while (p = p->next);
C/C++:                  ~~^~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: place parentheses around the assignment to silence this warning
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                  (          )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: use '==' to turn this assignment into an equality comparison
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                    ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1924:88: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(pbuf_copy_partial(p, client->buf + client->buf_used, p->tot_len, 0) == p->tot_len)
C/C++:                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 13 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c:32:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/redsocks/redsocks.c:625:11: warning: implicit declaration of function 'pipe2' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:                 error = pipe2(&pump->request.read, O_NONBLOCK);
C/C++:                         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/libevent/evutil_rand.c:198:2: warning: implicit declaration of function 'arc4random_addrandom' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:         arc4random_addrandom((unsigned char*)buf,
C/C++:         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:            ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: place parentheses around the assignment to silence this warning
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:            (                                                          )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:                      ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:1021:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 4 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/flow/PacketPassFairQueue.c:174:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 1 warning generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.c:37:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.h:37:
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:67:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:450:63: warning: passing 'int *' to parameter of type 'socklen_t *' (aka 'unsigned int *') converts between pointers to integer types with different sign [-Wpointer-sign]
C/C++:         if ((sock2 = accept(sock, (struct sockaddr *)&remote, &t)) == -1) {
C/C++:                                                               ^~
C/C++: /opt/android-sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/sys/socket.h:301:71: note: passing argument to parameter '__addr_length' here
C/C++: __socketcall int accept(int __fd, struct sockaddr* __addr, socklen_t* __addr_length);
C/C++:                                                                       ^
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:            ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: place parentheses around the assignment to silence this warning
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:            (                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:                 ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         } while (p = p->next);
C/C++:                  ~~^~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: place parentheses around the assignment to silence this warning
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                  (          )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: use '==' to turn this assignment into an equality comparison
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                    ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1924:88: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(pbuf_copy_partial(p, client->buf + client->buf_used, p->tot_len, 0) == p->tot_len)
C/C++:                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 14 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c:32:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/redsocks/redsocks.c:625:11: warning: implicit declaration of function 'pipe2' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:                 error = pipe2(&pump->request.read, O_NONBLOCK);
C/C++:                         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/libevent/evutil_rand.c:198:2: warning: implicit declaration of function 'arc4random_addrandom' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:         arc4random_addrandom((unsigned char*)buf,
C/C++:         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:            ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: place parentheses around the assignment to silence this warning
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:            (                                                          )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:                      ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:1021:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 4 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/flow/PacketPassFairQueue.c:174:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 1 warning generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.c:37:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.h:37:
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:67:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:            ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: place parentheses around the assignment to silence this warning
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:            (                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:                 ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         } while (p = p->next);
C/C++:                  ~~^~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: place parentheses around the assignment to silence this warning
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                  (          )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: use '==' to turn this assignment into an equality comparison
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                    ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1924:88: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(pbuf_copy_partial(p, client->buf + client->buf_used, p->tot_len, 0) == p->tot_len)
C/C++:                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 13 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c:32:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/redsocks/redsocks.c:625:11: warning: implicit declaration of function 'pipe2' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:                 error = pipe2(&pump->request.read, O_NONBLOCK);
C/C++:                         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/libevent/evutil_rand.c:198:2: warning: implicit declaration of function 'arc4random_addrandom' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:         arc4random_addrandom((unsigned char*)buf,
C/C++:         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:183:56: warning: taking address of packed member 'data' of class or structure 'epoll_event' may result in an unaligned pointer value [-Waddress-of-packed-member]
C/C++:         bfd->epoll_returned_ptr = (BFileDescriptor **)&event->data.ptr;
C/C++:                                                        ^~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:            ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: place parentheses around the assignment to silence this warning
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:            (                                                          )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:                      ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:1021:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 5 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/flow/PacketPassFairQueue.c:174:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 1 warning generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.c:37:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.h:37:
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:67:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:450:63: warning: passing 'int *' to parameter of type 'socklen_t *' (aka 'unsigned int *') converts between pointers to integer types with different sign [-Wpointer-sign]
C/C++:         if ((sock2 = accept(sock, (struct sockaddr *)&remote, &t)) == -1) {
C/C++:                                                               ^~
C/C++: /opt/android-sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/sys/socket.h:301:71: note: passing argument to parameter '__addr_length' here
C/C++: __socketcall int accept(int __fd, struct sockaddr* __addr, socklen_t* __addr_length);
C/C++:                                                                       ^
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:            ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: place parentheses around the assignment to silence this warning
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:            (                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:                 ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         } while (p = p->next);
C/C++:                  ~~^~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: place parentheses around the assignment to silence this warning
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                  (          )
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: use '==' to turn this assignment into an equality comparison
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                    ==
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1924:88: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(pbuf_copy_partial(p, client->buf + client->buf_used, p->tot_len, 0) == p->tot_len)
C/C++:                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 14 warnings generated.

> Task :plugin:mergeReleaseJniLibFolders
> Task :plugin:mergeReleaseNativeLibs NO-SOURCE
> Task :plugin:stripReleaseDebugSymbols NO-SOURCE
> Task :plugin:copyReleaseJniLibsProjectOnly
> Task :generateLinkerWrapper
warn: removing resource com.github.shadowsocks:string/advanced without required default value.
warn: removing resource com.github.shadowsocks:string/auto_connect_summary_v24 without required default value.
warn: removing resource com.github.shadowsocks:string/invalid_server without required default value.
warn: removing resource com.github.shadowsocks:string/night_mode without required default value.
warn: removing resource com.github.shadowsocks:string/night_mode_auto without required default value.
warn: removing resource com.github.shadowsocks:string/night_mode_off without required default value.
warn: removing resource com.github.shadowsocks:string/night_mode_on without required default value.
warn: removing resource com.github.shadowsocks:string/night_mode_system without required default value.
warn: removing resource com.github.shadowsocks:string/received without required default value.
warn: removing resource com.github.shadowsocks:string/sent without required default value.
warn: removing resource com.github.shadowsocks:string/tcp_fastopen_failure without required default value.
warn: removing resource com.github.shadowsocks:string/tcp_fastopen_summary without required default value.
warn: removing resource com.github.shadowsocks:string/tcp_fastopen_summary_unsupported without required default value.

> Task :mobile:processReleaseResources
> Task :core:kaptGenerateStubsReleaseKotlin
> Task :core:externalNativeBuildRelease

> Task :core:cargoBuildArm
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
    Updating crates.io index

> Task :core:kaptReleaseKotlin

> Task :core:cargoBuildArm
 Downloading crates ...
  Downloaded chacha20poly1305 v0.9.0
  Downloaded block-buffer v0.10.2
  Downloaded arrayvec v0.7.2
  Downloaded const-oid v0.7.1
  Downloaded cipher v0.4.3
  Downloaded inout v0.1.3
  Downloaded spin v0.9.3
  Downloaded md5-asm v0.5.0
  Downloaded aes-gcm-siv v0.10.3
  Downloaded byte-tools v0.3.1
  Downloaded cipher v0.3.0
  Downloaded autocfg v1.1.0
  Downloaded aes v0.8.1
  Downloaded log-mdc v0.1.0
  Downloaded futures-sink v0.3.21
  Downloaded form_urlencoded v1.0.1
  Downloaded ordered-float v2.10.0
  Downloaded indexmap v1.8.2
  Downloaded crypto-bigint v0.3.2
  Downloaded build-time v0.1.1
  Downloaded byte_string v1.0.0
  Downloaded pin-project-lite v0.2.9
  Downloaded idna v0.2.3
  Downloaded clap v3.1.18
  Downloaded ecdsa v0.13.4
  Downloaded fake-simd v0.1.2
  Downloaded futures-core v0.3.21
  Downloaded ghash v0.4.4
  Downloaded hostname v0.3.1
  Downloaded lru-cache v0.1.2
  Downloaded scopeguard v1.1.0
  Downloaded json5 v0.4.1
  Downloaded num-traits v0.2.15
  Downloaded log v0.4.17
  Downloaded termcolor v1.1.3
  Downloaded enum-as-inner v0.4.0
  Downloaded p256 v0.10.1
  Downloaded arc-swap v1.5.0
  Downloaded anyhow v1.0.57
  Downloaded aes-gcm v0.9.4
  Downloaded chrono v0.4.19
  Downloaded der v0.5.1
  Downloaded constant_time_eq v0.1.5
  Downloaded chacha20 v0.8.1
  Downloaded digest v0.8.1
  Downloaded crypto-common v0.1.3
  Downloaded crossbeam-utils v0.8.8
  Downloaded crossbeam-channel v0.5.4
  Downloaded libc v0.2.126
  Downloaded clap_lex v0.2.0
  Downloaded data-encoding v2.3.2
  Downloaded futures-io v0.3.21
  Downloaded linked-hash-map v0.5.4
  Downloaded exitcode v1.1.2
  Downloaded directories v4.0.1
  Downloaded unicode-ident v1.0.0
  Downloaded zeroize v1.3.0
  Downloaded xdg v2.4.1
  Downloaded derivative v2.2.0
  Downloaded cc v1.0.73
  Downloaded socket2 v0.4.4
  Downloaded dirs-sys v0.3.7
  Downloaded untrusted v0.7.1
  Downloaded universal-hash v0.4.1
  Downloaded version_check v0.9.4
  Downloaded yaml-rust v0.4.5
  Downloaded url v2.2.2
  Downloaded thread-id v4.0.0
  Downloaded iprange v0.6.7
  Downloaded block-padding v0.1.5
  Downloaded tinyvec_macros v0.1.0
  Downloaded tokio-macros v1.7.0
  Downloaded typemap v0.3.3
  Downloaded trust-dns-resolver v0.21.2
  Downloaded tokio-tfo v0.2.0
  Downloaded terminal_size v0.1.17
  Downloaded sha-1 v0.8.2
  Downloaded thiserror-impl v1.0.31
  Downloaded ucd-trie v0.1.3
  Downloaded opaque-debug v0.2.3
  Downloaded tokio v1.18.2
  Downloaded pest v2.1.3
  Downloaded sha1 v0.10.1
  Downloaded pin-project-internal v1.0.10
  Downloaded p384 v0.9.0
  Downloaded futures-task v0.3.21
  Downloaded mio v0.8.3
  Downloaded parking_lot_core v0.9.3
  Downloaded matches v0.1.9
  Downloaded pest_meta v2.1.3
  Downloaded subtle v2.4.1
  Downloaded signal-hook-registry v1.4.0
  Downloaded serde v1.0.137
  Downloaded signature v1.4.0
  Downloaded sha1-asm v0.5.1
  Downloaded pest_generator v2.1.3
  Downloaded serde-value v0.7.0
  Downloaded resolv-conf v0.7.0
  Downloaded strsim v0.10.0
  Downloaded syn v1.0.96
  Downloaded poly1305 v0.7.2
  Downloaded hkdf v0.12.3
  Downloaded typenum v1.15.0
  Downloaded textwrap v0.15.0
  Downloaded regex-syntax v0.6.26
  Downloaded sendfd v0.4.1
  Downloaded ring-compat v0.4.1
  Downloaded trust-dns-proto v0.21.2
  Downloaded rand_chacha v0.3.1
  Downloaded tinyvec v1.6.0
  Downloaded serde_yaml v0.8.24
  Downloaded serde_urlencoded v0.7.1
  Downloaded proc-macro2 v1.0.39
  Downloaded percent-encoding v2.1.0
  Downloaded pin-project v1.0.10
  Downloaded traitobject v0.1.0
  Downloaded smallvec v1.8.0
  Downloaded serde_derive v1.0.137
  Downloaded regex v1.5.6
  Downloaded ring v0.16.20
  Downloaded spin v0.5.2
  Downloaded slab v0.4.6
  Downloaded rand_core v0.6.3
  Downloaded quote v1.0.18
  Downloaded os_str_bytes v6.1.0
  Downloaded md-5 v0.10.1
  Downloaded parking_lot v0.12.1
  Downloaded quick-error v1.2.3
  Downloaded match_cfg v0.1.0
  Downloaded num_cpus v1.13.1
  Downloaded sec1 v0.2.1
  Downloaded serde_json v1.0.81
  Downloaded rand v0.8.5
  Downloaded ryu v1.0.10
  Downloaded pin-utils v0.1.0
  Downloaded pest_derive v2.1.0
  Downloaded once_cell v1.12.0
  Downloaded num-integer v0.1.45
  Downloaded time v0.1.43
  Downloaded thiserror v1.0.31
  Downloaded ppv-lite86 v0.2.16
  Downloaded notify v5.0.0-pre.15
  Downloaded same-file v1.0.6
  Downloaded opaque-debug v0.3.0
  Downloaded lru_time_cache v0.11.11
  Downloaded itoa v1.0.2
  Downloaded heck v0.4.0
  Downloaded ipnet v2.5.0
  Downloaded humantime v2.1.0
  Downloaded log4rs v1.1.1
  Downloaded shadowsocks-crypto v0.4.0
  Downloaded memchr v2.5.0
  Downloaded byteorder v1.4.3
  Downloaded ed25519 v1.5.2
  Downloaded block-buffer v0.7.3
  Downloaded unicode-normalization v0.1.19
  Downloaded maplit v1.0.2
  Downloaded hashbrown v0.11.2
  Downloaded polyval v0.5.3
  Downloaded lock_api v0.4.7
  Downloaded rpassword v6.0.1
  Downloaded inotify-sys v0.1.5
  Downloaded inotify v0.9.6
  Downloaded futures-macro v0.3.21
  Downloaded elliptic-curve v0.11.12
  Downloaded bitflags v1.3.2
  Downloaded unicode-bidi v0.3.8
  Downloaded filetime v0.2.16
  Downloaded digest v0.9.0
  Downloaded base64 v0.13.0
  Downloaded async-trait v0.1.56
  Downloaded walkdir v2.3.2
  Downloaded bytes v1.1.0
  Downloaded unsafe-any v0.4.2
  Downloaded generic-array v0.12.4
  Downloaded generic-array v0.14.5
  Downloaded boxfnonce v0.1.1
  Downloaded digest v0.10.3
  Downloaded cpufeatures v0.2.2
  Downloaded ccm v0.4.4
  Downloaded aho-corasick v0.7.18
  Downloaded aes v0.7.5
  Downloaded arrayref v0.3.6
  Downloaded atty v0.2.14
  Downloaded aead v0.4.3
  Downloaded getrandom v0.2.6
  Downloaded lazy_static v1.4.0
  Downloaded hmac v0.12.1
  Downloaded futures v0.3.21
  Downloaded futures-executor v0.3.21
  Downloaded fnv v1.0.7
  Downloaded dirs v4.0.0
  Downloaded daemonize v0.4.1
  Downloaded ctr v0.8.0
  Downloaded blake3 v1.3.1
  Downloaded futures-util v0.3.21
  Downloaded futures-channel v0.3.21
  Downloaded base16ct v0.1.1
  Downloaded cfg-if v1.0.0
 Downloading crates ...
  Downloaded env_logger v0.9.0
   Compiling libc v0.2.126
   Compiling proc-macro2 v1.0.39
   Compiling unicode-ident v1.0.0
   Compiling syn v1.0.96
   Compiling autocfg v1.1.0
   Compiling cfg-if v1.0.0
   Compiling version_check v0.9.4
   Compiling typenum v1.15.0
   Compiling serde_derive v1.0.137
   Compiling serde v1.0.137
   Compiling subtle v2.4.1
   Compiling memchr v2.5.0
   Compiling parking_lot_core v0.9.3
   Compiling futures-core v0.3.21
   Compiling scopeguard v1.1.0
   Compiling log v0.4.17
   Compiling pin-project-lite v0.2.9
   Compiling smallvec v1.8.0
   Compiling opaque-debug v0.3.0
   Compiling futures-channel v0.3.21
   Compiling futures-task v0.3.21
   Compiling futures-sink v0.3.21
   Compiling futures-util v0.3.21
   Compiling futures-io v0.3.21
   Compiling bytes v1.1.0
   Compiling matches v0.1.9
   Compiling pin-utils v0.1.0
   Compiling slab v0.4.6
   Compiling tinyvec_macros v0.1.0
   Compiling once_cell v1.12.0
   Compiling ryu v1.0.10
   Compiling percent-encoding v2.1.0
   Compiling linked-hash-map v0.5.4
   Compiling lazy_static v1.4.0
   Compiling ppv-lite86 v0.2.16
   Compiling ucd-trie v0.1.3
   Compiling unicode-bidi v0.3.8
   Compiling crossbeam-utils v0.8.8
   Compiling itoa v1.0.2
   Compiling async-trait v0.1.56
   Compiling serde_json v1.0.81
   Compiling cc v1.0.73
   Compiling zeroize v1.3.0
   Compiling heck v0.4.0
   Compiling maplit v1.0.2
   Compiling ipnet v2.5.0
   Compiling match_cfg v0.1.0
   Compiling data-encoding v2.3.2
   Compiling arrayvec v0.7.2
   Compiling quick-error v1.2.3
   Compiling hashbrown v0.11.2
   Compiling arrayref v0.3.6
   Compiling same-file v1.0.6
   Compiling constant_time_eq v0.1.5
   Compiling bitflags v1.3.2
   Compiling arc-swap v1.5.0
   Compiling traitobject v0.1.0
   Compiling anyhow v1.0.57
   Compiling os_str_bytes v6.1.0
   Compiling base64 v0.13.0
   Compiling regex-syntax v0.6.26
   Compiling byte_string v1.0.0
   Compiling lru_time_cache v0.11.11
   Compiling humantime v2.1.0
   Compiling termcolor v1.1.3
   Compiling strsim v0.10.0
   Compiling boxfnonce v0.1.1
   Compiling log-mdc v0.1.0
   Compiling fnv v1.0.7
   Compiling byteorder v1.4.3
   Compiling exitcode v1.1.2
   Compiling lock_api v0.4.7
   Compiling num-integer v0.1.45
   Compiling num-traits v0.2.15
   Compiling indexmap v1.8.2
   Compiling generic-array v0.14.5
   Compiling tinyvec v1.6.0
   Compiling form_urlencoded v1.0.1
   Compiling lru-cache v0.1.2
   Compiling yaml-rust v0.4.5
   Compiling pest v2.1.3
   Compiling iprange v0.6.7
   Compiling walkdir v2.3.2
   Compiling unsafe-any v0.4.2
   Compiling clap_lex v0.2.0
   Compiling blake3 v1.3.1
   Compiling typemap v0.3.3
   Compiling pest_meta v2.1.3
   Compiling unicode-normalization v0.1.19
   Compiling aho-corasick v0.7.18
   Compiling quote v1.0.18
   Compiling getrandom v0.2.6
   Compiling num_cpus v1.13.1
   Compiling socket2 v0.4.4
   Compiling signal-hook-registry v1.4.0
   Compiling hostname v0.3.1
   Compiling dirs-sys v0.3.7
   Compiling filetime v0.2.16
   Compiling time v0.1.43
   Compiling terminal_size v0.1.17
   Compiling atty v0.2.14
   Compiling thread-id v4.0.0
   Compiling daemonize v0.4.1
   Compiling crossbeam-channel v0.5.4
   Compiling idna v0.2.3
   Compiling spin v0.9.3
   Compiling regex v1.5.6
   Compiling ordered-float v2.10.0
   Compiling crypto-common v0.1.3
   Compiling cipher v0.3.0
   Compiling universal-hash v0.4.1
   Compiling block-buffer v0.10.2
   Compiling aead v0.4.3
   Compiling inout v0.1.3
   Compiling parking_lot v0.12.1
   Compiling rand_core v0.6.3
   Compiling dirs v4.0.0
   Compiling directories v4.0.1
   Compiling resolv-conf v0.7.0
   Compiling textwrap v0.15.0
   Compiling notify v5.0.0-pre.15
   Compiling chrono v0.4.19
   Compiling ctr v0.8.0
   Compiling chacha20 v0.8.1
   Compiling polyval v0.5.3
   Compiling poly1305 v0.7.2
   Compiling digest v0.10.3
   Compiling cipher v0.4.3
   Compiling xdg v2.4.1
   Compiling rand_chacha v0.3.1
   Compiling clap v3.1.18
   Compiling aes v0.7.5
   Compiling ccm v0.4.4
   Compiling ghash v0.4.4
   Compiling chacha20poly1305 v0.9.0
   Compiling hmac v0.12.1
   Compiling md-5 v0.10.1
   Compiling sha1 v0.10.1
   Compiling aes v0.8.1
   Compiling rand v0.8.5
   Compiling aes-gcm-siv v0.10.3
   Compiling aes-gcm v0.9.4
   Compiling hkdf v0.12.3
   Compiling pest_generator v2.1.3
   Compiling shadowsocks-crypto v0.4.0
   Compiling futures-macro v0.3.21
   Compiling tokio-macros v1.7.0
   Compiling thiserror-impl v1.0.31
   Compiling pin-project-internal v1.0.10
   Compiling enum-as-inner v0.4.0
   Compiling pest_derive v2.1.0
   Compiling derivative v2.2.0
   Compiling build-time v0.1.1
   Compiling thiserror v1.0.31
   Compiling pin-project v1.0.10
   Compiling futures-executor v0.3.21
   Compiling futures v0.3.21
   Compiling url v2.2.2
   Compiling serde_urlencoded v0.7.1
   Compiling json5 v0.4.1
   Compiling serde-value v0.7.0
   Compiling serde_yaml v0.8.24
   Compiling mio v0.8.3
   Compiling rpassword v6.0.1
   Compiling tokio v1.18.2
   Compiling log4rs v1.1.1
   Compiling trust-dns-proto v0.21.2
   Compiling tokio-tfo v0.2.0
   Compiling sendfd v0.4.1
   Compiling trust-dns-resolver v0.21.2
   Compiling shadowsocks v1.15.0 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust/crates/shadowsocks)
   Compiling shadowsocks-service v1.15.0 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust/crates/shadowsocks-service)
   Compiling shadowsocks-rust v1.15.0-alpha.5 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust)
    Finished release [optimized] target(s) in 3m 19s

> Task :core:compileReleaseKotlin
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/Core.kt: (144, 23): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/Core.kt: (145, 27): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/aidl/ShadowsocksConnection.kt: (72, 13): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/aidl/ShadowsocksConnection.kt: (78, 13): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/aidl/ShadowsocksConnection.kt: (82, 13): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/aidl/ShadowsocksConnection.kt: (121, 26): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/bg/BaseService.kt: (266, 13): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/bg/BaseService.kt: (343, 34): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/bg/GuardedProcessPool.kt: (82, 21): The value 'true' assigned to 'var running: Boolean defined in com.github.shadowsocks.bg.GuardedProcessPool.Guard.looper' is never used
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/bg/GuardedProcessPool.kt: (87, 17): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/bg/VpnService.kt: (196, 38): Type mismatch: inferred type is String? but String was expected
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/database/PrivateDatabase.kt: (50, 36): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/database/PublicDatabase.kt: (43, 36): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/net/DefaultNetworkListener.kt: (51, 32): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/net/DefaultNetworkListener.kt: (51, 44): This declaration is experimental and its usage should be marked with '@kotlinx.coroutines.ObsoleteCoroutinesApi' or '@OptIn(kotlinx.coroutines.ObsoleteCoroutinesApi::class)'
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/net/DefaultNetworkListener.kt: (55, 25): This declaration is experimental and its usage should be marked with '@kotlinx.coroutines.ObsoleteCoroutinesApi' or '@OptIn(kotlinx.coroutines.ObsoleteCoroutinesApi::class)'
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/net/HttpsTest.kt: (92, 19): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/net/Subnet.kt: (81, 46): Type mismatch: inferred type is String? but String was expected
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/net/Subnet.kt: (81, 71): Unsafe use of a nullable receiver of type String?
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/subscription/SubscriptionService.kt: (111, 36): This declaration is experimental and its usage should be marked with '@kotlinx.coroutines.ExperimentalCoroutinesApi' or '@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)'
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/subscription/SubscriptionService.kt: (114, 21): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/utils/Utils.kt: (86, 64): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/utils/Utils.kt: (88, 9): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.

> Task :core:compileReleaseJavaWithJavac
> Task :core:bundleLibCompileToJarRelease

> Task :core:cargoBuildArm64
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
   Compiling cfg-if v1.0.0
   Compiling subtle v2.4.1
   Compiling zeroize v1.3.0
   Compiling opaque-debug v0.3.0
   Compiling scopeguard v1.1.0
   Compiling smallvec v1.8.0
   Compiling pin-project-lite v0.2.9
   Compiling const-oid v0.7.1
   Compiling futures-sink v0.3.21
   Compiling tinyvec_macros v0.1.0
   Compiling futures-io v0.3.21
   Compiling bytes v1.1.0
   Compiling slab v0.4.6
   Compiling matches v0.1.9
   Compiling base16ct v0.1.1
   Compiling pin-utils v0.1.0
   Compiling once_cell v1.12.0
   Compiling ppv-lite86 v0.2.16
   Compiling ryu v1.0.10
   Compiling lazy_static v1.4.0
   Compiling linked-hash-map v0.5.4
   Compiling percent-encoding v2.1.0
   Compiling itoa v1.0.2
   Compiling unicode-bidi v0.3.8
   Compiling match_cfg v0.1.0
   Compiling untrusted v0.7.1
   Compiling spin v0.5.2
   Compiling ipnet v2.5.0
   Compiling data-encoding v2.3.2
   Compiling hashbrown v0.11.2
   Compiling constant_time_eq v0.1.5
   Compiling same-file v1.0.6
   Compiling arrayvec v0.7.2
   Compiling arrayref v0.3.6
   Compiling quick-error v1.2.3
   Compiling bitflags v1.3.2
   Compiling traitobject v0.1.0
   Compiling arc-swap v1.5.0
   Compiling ucd-trie v0.1.3
   Compiling lru_time_cache v0.11.11
   Compiling base64 v0.13.0
   Compiling os_str_bytes v6.1.0
   Compiling byte_string v1.0.0
   Compiling regex-syntax v0.6.26
   Compiling termcolor v1.1.3
   Compiling humantime v2.1.0
   Compiling fnv v1.0.7
   Compiling boxfnonce v0.1.1
   Compiling strsim v0.10.0
   Compiling log-mdc v0.1.0
   Compiling byteorder v1.4.3
   Compiling exitcode v1.1.2
   Compiling libc v0.2.126
   Compiling typenum v1.15.0
   Compiling serde v1.0.137
   Compiling memchr v2.5.0
   Compiling parking_lot_core v0.9.3
   Compiling log v0.4.17
   Compiling futures-core v0.3.21
   Compiling futures-channel v0.3.21
   Compiling ring v0.16.20
   Compiling futures-task v0.3.21
   Compiling futures-util v0.3.21
   Compiling tinyvec v1.6.0
   Compiling der v0.5.1
   Compiling serde_json v1.0.81
   Compiling crossbeam-utils v0.8.8
   Compiling lru-cache v0.1.2
   Compiling yaml-rust v0.4.5
   Compiling form_urlencoded v1.0.1
   Compiling walkdir v2.3.2
   Compiling iprange v0.6.7
   Compiling anyhow v1.0.57
   Compiling unsafe-any v0.4.2
   Compiling pest v2.1.3
   Compiling clap_lex v0.2.0
   Compiling generic-array v0.14.5
   Compiling lock_api v0.4.7
   Compiling num-integer v0.1.45
   Compiling num-traits v0.2.15
   Compiling indexmap v1.8.2
   Compiling blake3 v1.3.1
   Compiling unicode-normalization v0.1.19
   Compiling typemap v0.3.3
   Compiling getrandom v0.2.6
   Compiling cpufeatures v0.2.2
   Compiling socket2 v0.4.4
   Compiling num_cpus v1.13.1
   Compiling signal-hook-registry v1.4.0
   Compiling hostname v0.3.1
   Compiling dirs-sys v0.3.7
   Compiling filetime v0.2.16
   Compiling time v0.1.43
   Compiling terminal_size v0.1.17
   Compiling thread-id v4.0.0
   Compiling atty v0.2.14
   Compiling daemonize v0.4.1
   Compiling aho-corasick v0.7.18
   Compiling crossbeam-channel v0.5.4
   Compiling spin v0.9.3
   Compiling rand_core v0.6.3
   Compiling parking_lot v0.12.1
   Compiling idna v0.2.3
   Compiling resolv-conf v0.7.0
   Compiling dirs v4.0.0
   Compiling directories v4.0.1
   Compiling textwrap v0.15.0
   Compiling regex v1.5.6
   Compiling signature v1.4.0
   Compiling rand_chacha v0.3.1
   Compiling notify v5.0.0-pre.15
   Compiling crypto-common v0.1.3
   Compiling cipher v0.3.0
   Compiling block-buffer v0.10.2
   Compiling universal-hash v0.4.1
   Compiling crypto-bigint v0.3.2
   Compiling sec1 v0.2.1
   Compiling aead v0.4.3
   Compiling inout v0.1.3
   Compiling digest v0.9.0
   Compiling xdg v2.4.1
   Compiling ordered-float v2.10.0
   Compiling clap v3.1.18
   Compiling thiserror v1.0.31
   Compiling pin-project v1.0.10
   Compiling ed25519 v1.5.2
   Compiling rand v0.8.5
   Compiling ctr v0.8.0
   Compiling chacha20 v0.8.1
   Compiling digest v0.10.3
   Compiling polyval v0.5.3
   Compiling poly1305 v0.7.2
   Compiling cipher v0.4.3
   Compiling elliptic-curve v0.11.12
   Compiling chrono v0.4.19
   Compiling aes v0.7.5
   Compiling ccm v0.4.4
   Compiling hmac v0.12.1
   Compiling md-5 v0.10.1
   Compiling sha1 v0.10.1
   Compiling ghash v0.4.4
   Compiling chacha20poly1305 v0.9.0
   Compiling aes v0.8.1
   Compiling ecdsa v0.13.4
   Compiling url v2.2.2
   Compiling serde_urlencoded v0.7.1
   Compiling serde_yaml v0.8.24
   Compiling json5 v0.4.1
   Compiling serde-value v0.7.0
   Compiling futures-executor v0.3.21
   Compiling aes-gcm-siv v0.10.3
   Compiling hkdf v0.12.3
   Compiling aes-gcm v0.9.4
   Compiling p256 v0.10.1
   Compiling p384 v0.9.0
   Compiling mio v0.8.3
   Compiling rpassword v6.0.1
   Compiling log4rs v1.1.1
   Compiling futures v0.3.21
   Compiling ring-compat v0.4.1
   Compiling tokio v1.18.2
   Compiling shadowsocks-crypto v0.4.0
   Compiling trust-dns-proto v0.21.2
   Compiling tokio-tfo v0.2.0
   Compiling sendfd v0.4.1
   Compiling trust-dns-resolver v0.21.2
   Compiling shadowsocks v1.15.0 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust/crates/shadowsocks)
   Compiling shadowsocks-service v1.15.0 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust/crates/shadowsocks-service)
   Compiling shadowsocks-rust v1.15.0-alpha.5 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust)
    Finished release [optimized] target(s) in 2m 14s

> Task :core:cargoBuildX86
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
   Compiling cfg-if v1.0.0
   Compiling subtle v2.4.1
   Compiling cpufeatures v0.2.2
   Compiling scopeguard v1.1.0
   Compiling pin-project-lite v0.2.9
   Compiling smallvec v1.8.0
   Compiling opaque-debug v0.3.0
   Compiling futures-sink v0.3.21
   Compiling bytes v1.1.0
   Compiling slab v0.4.6
   Compiling tinyvec_macros v0.1.0
   Compiling futures-io v0.3.21
   Compiling matches v0.1.9
   Compiling pin-utils v0.1.0
   Compiling once_cell v1.12.0
   Compiling ryu v1.0.10
   Compiling linked-hash-map v0.5.4
   Compiling percent-encoding v2.1.0
   Compiling lazy_static v1.4.0
   Compiling ppv-lite86 v0.2.16
   Compiling unicode-bidi v0.3.8
   Compiling itoa v1.0.2
   Compiling zeroize v1.3.0
   Compiling ipnet v2.5.0
   Compiling match_cfg v0.1.0
   Compiling hashbrown v0.11.2
   Compiling same-file v1.0.6
   Compiling arrayvec v0.7.2
   Compiling data-encoding v2.3.2
   Compiling arrayref v0.3.6
   Compiling constant_time_eq v0.1.5
   Compiling bitflags v1.3.2
   Compiling quick-error v1.2.3
   Compiling ucd-trie v0.1.3
   Compiling traitobject v0.1.0
   Compiling arc-swap v1.5.0
   Compiling base64 v0.13.0
   Compiling lru_time_cache v0.11.11
   Compiling regex-syntax v0.6.26
   Compiling os_str_bytes v6.1.0
   Compiling byte_string v1.0.0
   Compiling humantime v2.1.0
   Compiling log-mdc v0.1.0
   Compiling strsim v0.10.0
   Compiling boxfnonce v0.1.1
   Compiling byteorder v1.4.3
   Compiling termcolor v1.1.3
   Compiling fnv v1.0.7
   Compiling exitcode v1.1.2
   Compiling libc v0.2.126
   Compiling typenum v1.15.0
   Compiling serde v1.0.137
   Compiling md5-asm v0.5.0
   Compiling sha1-asm v0.5.1
   Compiling memchr v2.5.0
   Compiling futures-core v0.3.21
   Compiling parking_lot_core v0.9.3
   Compiling log v0.4.17
   Compiling futures-task v0.3.21
   Compiling futures-channel v0.3.21
   Compiling futures-util v0.3.21
   Compiling tinyvec v1.6.0
   Compiling form_urlencoded v1.0.1
   Compiling lru-cache v0.1.2
   Compiling yaml-rust v0.4.5
   Compiling crossbeam-utils v0.8.8
   Compiling serde_json v1.0.81
   Compiling walkdir v2.3.2
   Compiling iprange v0.6.7
   Compiling anyhow v1.0.57
   Compiling pest v2.1.3
   Compiling unsafe-any v0.4.2
   Compiling clap_lex v0.2.0
   Compiling generic-array v0.14.5
   Compiling lock_api v0.4.7
   Compiling num-integer v0.1.45
   Compiling num-traits v0.2.15
   Compiling indexmap v1.8.2
   Compiling blake3 v1.3.1
   Compiling typemap v0.3.3
   Compiling unicode-normalization v0.1.19
   Compiling getrandom v0.2.6
   Compiling num_cpus v1.13.1
   Compiling socket2 v0.4.4
   Compiling signal-hook-registry v1.4.0
   Compiling hostname v0.3.1
   Compiling filetime v0.2.16
   Compiling dirs-sys v0.3.7
   Compiling terminal_size v0.1.17
   Compiling time v0.1.43
   Compiling atty v0.2.14
   Compiling thread-id v4.0.0
   Compiling daemonize v0.4.1
   Compiling aho-corasick v0.7.18
   Compiling crossbeam-channel v0.5.4
   Compiling spin v0.9.3
   Compiling rand_core v0.6.3
   Compiling parking_lot v0.12.1
   Compiling resolv-conf v0.7.0
   Compiling dirs v4.0.0
   Compiling directories v4.0.1
   Compiling textwrap v0.15.0
   Compiling idna v0.2.3
   Compiling crypto-common v0.1.3
   Compiling cipher v0.3.0
   Compiling block-buffer v0.10.2
   Compiling universal-hash v0.4.1
   Compiling aead v0.4.3
   Compiling inout v0.1.3
   Compiling rand_chacha v0.3.1
   Compiling xdg v2.4.1
   Compiling notify v5.0.0-pre.15
   Compiling regex v1.5.6
   Compiling thiserror v1.0.31
   Compiling pin-project v1.0.10
   Compiling ordered-float v2.10.0
   Compiling clap v3.1.18
   Compiling ctr v0.8.0
   Compiling chacha20 v0.8.1
   Compiling polyval v0.5.3
   Compiling poly1305 v0.7.2
   Compiling digest v0.10.3
   Compiling cipher v0.4.3
   Compiling rand v0.8.5
   Compiling chrono v0.4.19
   Compiling aes v0.7.5
   Compiling ccm v0.4.4
   Compiling ghash v0.4.4
   Compiling hmac v0.12.1
   Compiling sha1 v0.10.1
   Compiling md-5 v0.10.1
   Compiling chacha20poly1305 v0.9.0
   Compiling aes v0.8.1
   Compiling futures-executor v0.3.21
   Compiling aes-gcm-siv v0.10.3
   Compiling aes-gcm v0.9.4
   Compiling hkdf v0.12.3
   Compiling url v2.2.2
   Compiling serde_urlencoded v0.7.1
   Compiling serde-value v0.7.0
   Compiling json5 v0.4.1
   Compiling serde_yaml v0.8.24
   Compiling futures v0.3.21
   Compiling shadowsocks-crypto v0.4.0
   Compiling mio v0.8.3
   Compiling rpassword v6.0.1
   Compiling log4rs v1.1.1
   Compiling tokio v1.18.2
   Compiling trust-dns-proto v0.21.2
   Compiling sendfd v0.4.1
   Compiling tokio-tfo v0.2.0
   Compiling trust-dns-resolver v0.21.2
   Compiling shadowsocks v1.15.0 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust/crates/shadowsocks)
   Compiling shadowsocks-service v1.15.0 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust/crates/shadowsocks-service)
   Compiling shadowsocks-rust v1.15.0-alpha.5 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust)
    Finished release [optimized] target(s) in 2m 08s

> Task :core:cargoBuildX86_64
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
   Compiling cfg-if v1.0.0
   Compiling subtle v2.4.1
   Compiling cpufeatures v0.2.2
   Compiling zeroize v1.3.0
   Compiling scopeguard v1.1.0
   Compiling opaque-debug v0.3.0
   Compiling pin-project-lite v0.2.9
   Compiling const-oid v0.7.1
   Compiling smallvec v1.8.0
   Compiling futures-sink v0.3.21
   Compiling slab v0.4.6
   Compiling matches v0.1.9
   Compiling pin-utils v0.1.0
   Compiling base16ct v0.1.1
   Compiling bytes v1.1.0
   Compiling tinyvec_macros v0.1.0
   Compiling futures-io v0.3.21
   Compiling ppv-lite86 v0.2.16
   Compiling lazy_static v1.4.0
   Compiling ryu v1.0.10
   Compiling linked-hash-map v0.5.4
   Compiling once_cell v1.12.0
   Compiling percent-encoding v2.1.0
   Compiling unicode-bidi v0.3.8
   Compiling itoa v1.0.2
   Compiling match_cfg v0.1.0
   Compiling ipnet v2.5.0
   Compiling spin v0.5.2
   Compiling untrusted v0.7.1
   Compiling arrayref v0.3.6
   Compiling arrayvec v0.7.2
   Compiling bitflags v1.3.2
   Compiling same-file v1.0.6
   Compiling hashbrown v0.11.2
   Compiling constant_time_eq v0.1.5
   Compiling quick-error v1.2.3
   Compiling data-encoding v2.3.2
   Compiling traitobject v0.1.0
   Compiling arc-swap v1.5.0
   Compiling ucd-trie v0.1.3
   Compiling base64 v0.13.0
   Compiling os_str_bytes v6.1.0
   Compiling lru_time_cache v0.11.11
   Compiling byte_string v1.0.0
   Compiling regex-syntax v0.6.26
   Compiling log-mdc v0.1.0
   Compiling termcolor v1.1.3
   Compiling strsim v0.10.0
   Compiling byteorder v1.4.3
   Compiling fnv v1.0.7
   Compiling boxfnonce v0.1.1
   Compiling humantime v2.1.0
   Compiling exitcode v1.1.2
   Compiling libc v0.2.126
   Compiling typenum v1.15.0
   Compiling serde v1.0.137
   Compiling memchr v2.5.0
   Compiling log v0.4.17
   Compiling parking_lot_core v0.9.3
   Compiling futures-core v0.3.21
   Compiling futures-channel v0.3.21
   Compiling futures-task v0.3.21
   Compiling futures-util v0.3.21
   Compiling der v0.5.1
   Compiling tinyvec v1.6.0
   Compiling crossbeam-utils v0.8.8
   Compiling lru-cache v0.1.2
   Compiling yaml-rust v0.4.5
   Compiling serde_json v1.0.81
   Compiling form_urlencoded v1.0.1
   Compiling walkdir v2.3.2
   Compiling iprange v0.6.7
   Compiling anyhow v1.0.57
   Compiling unsafe-any v0.4.2
   Compiling pest v2.1.3
   Compiling clap_lex v0.2.0
   Compiling generic-array v0.14.5
   Compiling lock_api v0.4.7
   Compiling num-integer v0.1.45
   Compiling num-traits v0.2.15
   Compiling md5-asm v0.5.0
   Compiling sha1-asm v0.5.1
   Compiling ring v0.16.20
   Compiling blake3 v1.3.1
   Compiling indexmap v1.8.2
   Compiling unicode-normalization v0.1.19
   Compiling typemap v0.3.3
   Compiling getrandom v0.2.6
   Compiling signal-hook-registry v1.4.0
   Compiling num_cpus v1.13.1
   Compiling socket2 v0.4.4
   Compiling hostname v0.3.1
   Compiling dirs-sys v0.3.7
   Compiling filetime v0.2.16
   Compiling time v0.1.43
   Compiling terminal_size v0.1.17
   Compiling thread-id v4.0.0
   Compiling atty v0.2.14
   Compiling daemonize v0.4.1
   Compiling aho-corasick v0.7.18
   Compiling crossbeam-channel v0.5.4
   Compiling spin v0.9.3
   Compiling rand_core v0.6.3
   Compiling parking_lot v0.12.1
   Compiling idna v0.2.3
   Compiling resolv-conf v0.7.0
   Compiling dirs v4.0.0
   Compiling directories v4.0.1
   Compiling textwrap v0.15.0
   Compiling notify v5.0.0-pre.15
   Compiling regex v1.5.6
   Compiling signature v1.4.0
   Compiling rand_chacha v0.3.1
   Compiling ordered-float v2.10.0
   Compiling crypto-common v0.1.3
   Compiling cipher v0.3.0
   Compiling block-buffer v0.10.2
   Compiling universal-hash v0.4.1
   Compiling sec1 v0.2.1
   Compiling crypto-bigint v0.3.2
   Compiling aead v0.4.3
   Compiling digest v0.9.0
   Compiling inout v0.1.3
   Compiling xdg v2.4.1
   Compiling clap v3.1.18
   Compiling thiserror v1.0.31
   Compiling pin-project v1.0.10
   Compiling ed25519 v1.5.2
   Compiling rand v0.8.5
   Compiling chrono v0.4.19
   Compiling ctr v0.8.0
   Compiling chacha20 v0.8.1
   Compiling polyval v0.5.3
   Compiling poly1305 v0.7.2
   Compiling digest v0.10.3
   Compiling cipher v0.4.3
   Compiling elliptic-curve v0.11.12
   Compiling futures-executor v0.3.21
   Compiling aes v0.7.5
   Compiling ccm v0.4.4
   Compiling ghash v0.4.4
   Compiling url v2.2.2
   Compiling serde_urlencoded v0.7.1
   Compiling json5 v0.4.1
   Compiling serde_yaml v0.8.24
   Compiling serde-value v0.7.0
   Compiling chacha20poly1305 v0.9.0
   Compiling hmac v0.12.1
   Compiling sha1 v0.10.1
   Compiling md-5 v0.10.1
   Compiling aes v0.8.1
   Compiling ecdsa v0.13.4
   Compiling futures v0.3.21
   Compiling aes-gcm-siv v0.10.3
   Compiling aes-gcm v0.9.4
   Compiling mio v0.8.3
   Compiling rpassword v6.0.1
   Compiling log4rs v1.1.1
   Compiling hkdf v0.12.3
   Compiling p256 v0.10.1
   Compiling p384 v0.9.0
   Compiling tokio v1.18.2
   Compiling ring-compat v0.4.1
   Compiling shadowsocks-crypto v0.4.0
   Compiling trust-dns-proto v0.21.2
   Compiling tokio-tfo v0.2.0
   Compiling sendfd v0.4.1
   Compiling trust-dns-resolver v0.21.2
   Compiling shadowsocks v1.15.0 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust/crates/shadowsocks)
   Compiling shadowsocks-service v1.15.0 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust/crates/shadowsocks-service)
   Compiling shadowsocks-rust v1.15.0-alpha.5 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust)
    Finished release [optimized] target(s) in 2m 13s

> Task :core:cargoBuild
> Task :core:mergeReleaseJniLibFolders
> Task :core:mergeReleaseNativeLibs
> Task :core:extractReleaseAnnotations

> Task :core:stripReleaseDebugSymbols
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir

> Task :core:mergeReleaseGeneratedProguardFiles
> Task :core:mergeReleaseConsumerProguardFiles
> Task :core:mergeReleaseShaders
> Task :core:compileReleaseShaders NO-SOURCE
> Task :core:generateReleaseAssets UP-TO-DATE
> Task :core:packageReleaseAssets
> Task :core:prepareLintJarForPublish
> Task :core:copyReleaseJniLibsProjectAndLocalJars

> Task :mobile:compileReleaseKotlin
w: /home/vagrant/build/com.github.shadowsocks/mobile/src/main/java/com/github/shadowsocks/ProfileConfigFragment.kt: (166, 13): 'setTargetFragment(Fragment?, Int): Unit' is deprecated. Deprecated in Java
w: /home/vagrant/build/com.github.shadowsocks/mobile/src/main/java/com/github/shadowsocks/ProfileConfigFragment.kt: (217, 17): 'setTargetFragment(Fragment?, Int): Unit' is deprecated. Deprecated in Java
w: /home/vagrant/build/com.github.shadowsocks/mobile/src/main/java/com/github/shadowsocks/ProfilesFragment.kt: (242, 50): 'locale: Locale!' is deprecated. Deprecated in Java
w: /home/vagrant/build/com.github.shadowsocks/mobile/src/main/java/com/github/shadowsocks/ProfilesFragment.kt: (379, 40): 'getter for adapterPosition: Int' is deprecated. Deprecated in Java
w: /home/vagrant/build/com.github.shadowsocks/mobile/src/main/java/com/github/shadowsocks/ProfilesFragment.kt: (386, 49): 'getter for adapterPosition: Int' is deprecated. Deprecated in Java
w: /home/vagrant/build/com.github.shadowsocks/mobile/src/main/java/com/github/shadowsocks/ProfilesFragment.kt: (386, 73): 'getter for adapterPosition: Int' is deprecated. Deprecated in Java
w: /home/vagrant/build/com.github.shadowsocks/mobile/src/main/java/com/github/shadowsocks/acl/CustomRulesFragment.kt: (91, 34): Conditional branch result of type URL is implicitly cast to Any
w: /home/vagrant/build/com.github.shadowsocks/mobile/src/main/java/com/github/shadowsocks/acl/CustomRulesFragment.kt: (91, 49): Conditional branch result of type Comparable<{String & Subnet}> is implicitly cast to Any
w: /home/vagrant/build/com.github.shadowsocks/mobile/src/main/java/com/github/shadowsocks/acl/CustomRulesFragment.kt: (416, 47): 'getter for adapterPosition: Int' is deprecated. Deprecated in Java
w: /home/vagrant/build/com.github.shadowsocks/mobile/src/main/java/com/github/shadowsocks/subscription/SubscriptionFragment.kt: (234, 47): 'getter for adapterPosition: Int' is deprecated. Deprecated in Java

> Task :mobile:compileReleaseJavaWithJavac
> Task :mobile:compileReleaseSources
> Task :core:prepareReleaseArtProfile
> Task :core:processReleaseJavaRes NO-SOURCE
> Task :core:writeReleaseLintModelMetadata
> Task :plugin:copyReleaseJniLibsProjectAndLocalJars
> Task :plugin:extractReleaseAnnotations
> Task :plugin:mergeReleaseGeneratedProguardFiles
> Task :plugin:mergeReleaseConsumerProguardFiles
> Task :plugin:mergeReleaseShaders
> Task :plugin:compileReleaseShaders NO-SOURCE
> Task :plugin:generateReleaseAssets UP-TO-DATE
> Task :core:mergeReleaseJavaResource
> Task :plugin:packageReleaseAssets
> Task :core:syncReleaseLibJars
> Task :plugin:prepareLintJarForPublish
> Task :plugin:prepareReleaseArtProfile
> Task :plugin:processReleaseJavaRes NO-SOURCE
> Task :plugin:mergeReleaseJavaResource
> Task :core:bundleReleaseLocalLintAar
> Task :plugin:syncReleaseLibJars
> Task :plugin:writeReleaseLintModelMetadata
> Task :core:bundleLibResRelease
> Task :plugin:bundleReleaseLocalLintAar
> Task :mobile:extractProguardFiles
> Task :plugin:bundleLibResRelease
> Task :core:bundleLibRuntimeToJarRelease
> Task :mobile:bundleReleaseClasses
> Task :plugin:bundleLibRuntimeToJarRelease
> Task :core:createFullJarRelease
> Task :mobile:mergeReleaseJniLibFolders
> Task :core:exportReleaseConsumerProguardFiles
> Task :plugin:exportReleaseConsumerProguardFiles
> Task :plugin:createFullJarRelease
> Task :core:copyReleaseJniLibsProjectOnly
> Task :mobile:checkReleaseDuplicateClasses
> Task :mobile:mergeReleaseGeneratedProguardFiles
> Task :mobile:processReleaseJavaRes NO-SOURCE
> Task :mobile:mergeReleaseShaders
> Task :mobile:compileReleaseShaders NO-SOURCE
> Task :mobile:generateReleaseAssets UP-TO-DATE
> Task :mobile:mergeReleaseAssets
> Task :mobile:mergeReleaseArtProfile
> Task :mobile:compressReleaseAssets
> Task :mobile:mergeReleaseNativeLibs
> Task :mobile:collectReleaseDependencies

> Task :mobile:stripReleaseDebugSymbols
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir

> Task :mobile:mergeReleaseJavaResource

> Task :mobile:extractReleaseNativeSymbolTables
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir

> Task :mobile:sdkReleaseDependencyData
> Task :mobile:mergeReleaseNativeDebugMetadata NO-SOURCE

> Task :mobile:minifyReleaseWithR8
WARNING:/home/vagrant/build/com.github.shadowsocks/mobile/build/intermediates/merged_java_res/release/base.jar: R8: Unexpected reference to missing service class: META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor.
WARNING:Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in /home/vagrant/build/com.github.shadowsocks/mobile/build/outputs/mapping/release/missing_rules.txt.

WARNING:R8: Missing class lombok.Generated (referenced from: org.slf4j.Logger org.xbill.DNS.Compression.log and 2 other contexts)
Missing class org.slf4j.impl.StaticLoggerBinder (referenced from: void org.slf4j.LoggerFactory.bind() and 3 other contexts)
Missing class sun.net.spi.nameservice.NameServiceDescriptor (referenced from: org.xbill.DNS.spi.DNSJavaNameServiceDescriptor)

> Task :mobile:lintVitalAnalyzeRelease

> Task :mobile:lintVitalRelease
No issues found.

> Task :mobile:writeReleaseAppMetadata
> Task :mobile:writeReleaseSigningConfigVersions
> Task :mobile:shrinkReleaseRes
> Task :mobile:l8DexDesugarLibRelease
> Task :mobile:compileReleaseArtProfile
> Task :mobile:packageRelease
> Task :mobile:assembleRelease

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

See https://docs.gradle.org/7.2/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 13m 2s
116 actionable tasks: 116 executed
2022-06-24 23:28:54,871 DEBUG: Popen(['git', 'cat-file', '--batch-check'], cwd=/home/vagrant/build/com.github.shadowsocks, universal_newlines=False, shell=None)
2022-06-24 23:28:54,875 INFO: Successfully built version 5.3.0-nightly of com.github.shadowsocks from 09c2290c1ba07336b11a6b7576886d202e14ac71
2022-06-24 23:28:55,572 DEBUG: AXML contains a RESOURCE MAP
2022-06-24 23:28:55,572 DEBUG: Start of Namespace mapping: prefix 44: 'android' --> uri 135: 'http://schemas.android.com/apk/res/android'
2022-06-24 23:28:55,574 DEBUG: Checking build/com.github.shadowsocks/mobile/build/outputs/apk/release/mobile-release-unsigned.apk
2022-06-24 23:28:55,582 DEBUG: AXML contains a RESOURCE MAP
2022-06-24 23:28:55,583 DEBUG: Start of Namespace mapping: prefix 44: 'android' --> uri 135: 'http://schemas.android.com/apk/res/android'
2022-06-24 23:28:55,605 INFO: success: com.github.shadowsocks
2022-06-24 23:28:55,606 INFO: Finished
2022-06-24 23:28:55,606 INFO: 1 build succeeded