soul-browser/sources/java/kotlin/random/URandomKt.java
KaKi87 550ddb0413
Decompile and recreate Soul Browser v1.4.85 with APK CI builds (#1)
* Decompile and recreate Soul Browser v1.4.85 with APK CI builds

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix CI build: include bundled google.jks and remove PR trigger

The apktool build failed in CI because app/unknown/.../google.jks was
excluded by the *.jks gitignore rule. Whitelist app-bundled JKS files
and commit the missing resource.

Also remove the redundant pull_request workflow trigger.

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Change package ID to com.github.kaki87.soulbrowser

Rename the application ID so the rebuilt APK can be installed
alongside the original Soul Browser from Google Play.

- Update AndroidManifest package, permissions, providers, and actions
- Update R class references in smali (com/github/kaki87/soulbrowser/R)
- Update shortcuts.xml targetPackage
- Rename app label to "Soul Rebuild" for easy identification

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix install compatibility: remove split APK metadata and bundle native libs

The rebuilt APK still declared requiredSplitTypes and Play Store split
metadata, causing Android to reject standalone installs as incompatible.

- Remove requiredSplitTypes and split-related manifest meta-data
- Merge native libs from all ABI splits with uncompressed storage
- Page-align before signing for extractNativeLibs=false
- Add .so to apktool doNotCompress list

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix install failure: use apksigner v2/v3 and bundle arm64 native libs

Target SDK 36 requires APK Signature Scheme v2+, but jarsigner only
produces v1 signatures, causing Android to reject the install.

- Sign with apksigner (v1+v2+v3) instead of jarsigner
- Add arm64-v8a native libraries from universal Soul Browser 1.4.79
- Set extractNativeLibs=true for reliable sideload installs
- Commit stable debug keystore for consistent signatures across builds

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Add committed debug keystore for consistent APK signatures

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix startup crash: use original classes2.dex desugar libraries

Apktool recompiles smali_classes2 into a broken classes2.dex, causing
ClassNotFoundException for j$.com.android.tools.r8.a at ML Kit init.

Inject the original classes2.dex (Java 8+ desugar libs) after apktool
build instead of using the recompiled version.

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix missing drawable resources from density split APKs

The base APK is an app bundle module; density-specific drawables like
seek_thumb_nor_b live in config.xhdpi.apk and were missing after rebuild,
causing Resources$NotFoundException at runtime.

- Merge non-9-patch resources from split APKs before apktool build
- Sync public.xml IDs from R smali only when backing files exist
- Add 713 density-specific resource IDs to public.xml

Co-authored-by: KaKi87 <KaKi87@pm.me>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-08-10 16:07:14 +02:00

153 lines
10 KiB
Java

package kotlin.random;
import com.google.android.gms.ads.RequestConfiguration;
import kotlin.ExperimentalUnsignedTypes;
import kotlin.Metadata;
import kotlin.SinceKotlin;
import kotlin.UByteArray;
import kotlin.UInt;
import kotlin.ULong;
import kotlin.jvm.internal.IntCompanionObject;
import kotlin.jvm.internal.Intrinsics;
import kotlin.jvm.internal.LongCompanionObject;
import kotlin.jvm.internal.SourceDebugExtension;
import kotlin.ranges.UIntRange;
import kotlin.ranges.ULongRange;
import org.jetbrains.annotations.NotNull;
@Metadata(d1 = {"\u0000>\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\b\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0010\b\n\u0002\b\u0006\n\u0002\u0010\u0002\n\u0002\b\u0006\u001a\u0011\u0010\u0000\u001a\u00020\u0001*\u00020\u0002H\u0007¢\u0006\u0002\u0010\u0003\u001a\u001b\u0010\u0000\u001a\u00020\u0001*\u00020\u00022\u0006\u0010\u0004\u001a\u00020\u0001H\u0007¢\u0006\u0004\b\u0005\u0010\u0006\u001a#\u0010\u0000\u001a\u00020\u0001*\u00020\u00022\u0006\u0010\u0007\u001a\u00020\u00012\u0006\u0010\u0004\u001a\u00020\u0001H\u0007¢\u0006\u0004\b\b\u0010\t\u001a\u0019\u0010\u0000\u001a\u00020\u0001*\u00020\u00022\u0006\u0010\n\u001a\u00020\u000bH\u0007¢\u0006\u0002\u0010\f\u001a\u0011\u0010\r\u001a\u00020\u000e*\u00020\u0002H\u0007¢\u0006\u0002\u0010\u000f\u001a\u001b\u0010\r\u001a\u00020\u000e*\u00020\u00022\u0006\u0010\u0004\u001a\u00020\u000eH\u0007¢\u0006\u0004\b\u0010\u0010\u0011\u001a#\u0010\r\u001a\u00020\u000e*\u00020\u00022\u0006\u0010\u0007\u001a\u00020\u000e2\u0006\u0010\u0004\u001a\u00020\u000eH\u0007¢\u0006\u0004\b\u0012\u0010\u0013\u001a\u0019\u0010\r\u001a\u00020\u000e*\u00020\u00022\u0006\u0010\n\u001a\u00020\u0014H\u0007¢\u0006\u0002\u0010\u0015\u001a\u001b\u0010\u0016\u001a\u00020\u0017*\u00020\u00022\u0006\u0010\u0018\u001a\u00020\u0017H\u0007¢\u0006\u0004\b\u0019\u0010\u001a\u001a\u0019\u0010\u0016\u001a\u00020\u0017*\u00020\u00022\u0006\u0010\u001b\u001a\u00020\u001cH\u0007¢\u0006\u0002\u0010\u001d\u001a/\u0010\u0016\u001a\u00020\u0017*\u00020\u00022\u0006\u0010\u0018\u001a\u00020\u00172\b\b\u0002\u0010\u001e\u001a\u00020\u001c2\b\b\u0002\u0010\u001f\u001a\u00020\u001cH\u0007¢\u0006\u0004\b \u0010!\u001a\u001f\u0010\"\u001a\u00020#2\u0006\u0010\u0007\u001a\u00020\u00012\u0006\u0010\u0004\u001a\u00020\u0001H\u0000¢\u0006\u0004\b$\u0010%\u001a\u001f\u0010&\u001a\u00020#2\u0006\u0010\u0007\u001a\u00020\u000e2\u0006\u0010\u0004\u001a\u00020\u000eH\u0000¢\u0006\u0004\b'\u0010(¨\u0006)"}, d2 = {"nextUInt", "Lkotlin/UInt;", "Lkotlin/random/Random;", "(Lkotlin/random/Random;)I", "until", "nextUInt-qCasIEU", "(Lkotlin/random/Random;I)I", "from", "nextUInt-a8DCA5k", "(Lkotlin/random/Random;II)I", "range", "Lkotlin/ranges/UIntRange;", "(Lkotlin/random/Random;Lkotlin/ranges/UIntRange;)I", "nextULong", "Lkotlin/ULong;", "(Lkotlin/random/Random;)J", "nextULong-V1Xi4fY", "(Lkotlin/random/Random;J)J", "nextULong-jmpaW-c", "(Lkotlin/random/Random;JJ)J", "Lkotlin/ranges/ULongRange;", "(Lkotlin/random/Random;Lkotlin/ranges/ULongRange;)J", "nextUBytes", "Lkotlin/UByteArray;", "array", "nextUBytes-EVgfTAA", "(Lkotlin/random/Random;[B)[B", "size", RequestConfiguration.MAX_AD_CONTENT_RATING_UNSPECIFIED, "(Lkotlin/random/Random;I)[B", "fromIndex", "toIndex", "nextUBytes-Wvrt4B4", "(Lkotlin/random/Random;[BII)[B", "checkUIntRangeBounds", RequestConfiguration.MAX_AD_CONTENT_RATING_UNSPECIFIED, "checkUIntRangeBounds-J1ME1BU", "(II)V", "checkULongRangeBounds", "checkULongRangeBounds-eb3DHEI", "(JJ)V", "kotlin-stdlib"}, k = 2, mv = {2, 2, 0}, xi = 48)
@SourceDebugExtension({"SMAP\nURandom.kt\nKotlin\n*S Kotlin\n*F\n+ 1 URandom.kt\nkotlin/random/URandomKt\n+ 2 fake.kt\nkotlin/jvm/internal/FakeKt\n*L\n1#1,147:1\n1#2:148\n*E\n"})
/* loaded from: classes4.dex */
public final class URandomKt {
/* renamed from: checkUIntRangeBounds-J1ME1BU, reason: not valid java name */
public static final void m1247checkUIntRangeBoundsJ1ME1BU(int i, int i2) {
if (Integer.compare(i2 ^ IntCompanionObject.MIN_VALUE, Integer.MIN_VALUE ^ i) > 0) {
} else {
throw new IllegalArgumentException(RandomKt.boundsErrorMessage(UInt.m119boximpl(i), UInt.m119boximpl(i2)).toString());
}
}
/* renamed from: checkULongRangeBounds-eb3DHEI, reason: not valid java name */
public static final void m1248checkULongRangeBoundseb3DHEI(long j, long j2) {
if (Long.compare(j2 ^ Long.MIN_VALUE, Long.MIN_VALUE ^ j) > 0) {
} else {
throw new IllegalArgumentException(RandomKt.boundsErrorMessage(ULong.m198boximpl(j), ULong.m198boximpl(j2)).toString());
}
}
@SinceKotlin(version = "1.3")
@ExperimentalUnsignedTypes
@NotNull
public static final byte[] nextUBytes(@NotNull Random random, int i) {
Intrinsics.checkNotNullParameter(random, "<this>");
return UByteArray.m101constructorimpl(random.nextBytes(i));
}
@SinceKotlin(version = "1.3")
@ExperimentalUnsignedTypes
@NotNull
/* renamed from: nextUBytes-EVgfTAA, reason: not valid java name */
public static final byte[] m1249nextUBytesEVgfTAA(@NotNull Random nextUBytes, @NotNull byte[] bArr) {
Intrinsics.checkNotNullParameter(nextUBytes, "$this$nextUBytes");
Intrinsics.checkNotNullParameter(bArr, "$v$c$kotlin-UByteArray$-array$0");
nextUBytes.nextBytes(bArr);
return bArr;
}
@SinceKotlin(version = "1.3")
@ExperimentalUnsignedTypes
@NotNull
/* renamed from: nextUBytes-Wvrt4B4, reason: not valid java name */
public static final byte[] m1250nextUBytesWvrt4B4(@NotNull Random nextUBytes, @NotNull byte[] bArr, int i, int i2) {
Intrinsics.checkNotNullParameter(nextUBytes, "$this$nextUBytes");
Intrinsics.checkNotNullParameter(bArr, "$v$c$kotlin-UByteArray$-array$0");
nextUBytes.nextBytes(bArr, i, i2);
return bArr;
}
/* renamed from: nextUBytes-Wvrt4B4$default, reason: not valid java name */
public static /* synthetic */ byte[] m1251nextUBytesWvrt4B4$default(Random random, byte[] bArr, int i, int i2, int i3, Object obj) {
if ((i3 & 2) != 0) {
i = 0;
}
if ((i3 & 4) != 0) {
i2 = UByteArray.m107getSizeimpl(bArr);
}
return m1250nextUBytesWvrt4B4(random, bArr, i, i2);
}
@SinceKotlin(version = "1.5")
public static final int nextUInt(@NotNull Random random) {
Intrinsics.checkNotNullParameter(random, "<this>");
return UInt.m125constructorimpl(random.nextInt());
}
@SinceKotlin(version = "1.5")
/* renamed from: nextUInt-a8DCA5k, reason: not valid java name */
public static final int m1252nextUInta8DCA5k(@NotNull Random nextUInt, int i, int i2) {
Intrinsics.checkNotNullParameter(nextUInt, "$this$nextUInt");
m1247checkUIntRangeBoundsJ1ME1BU(i, i2);
return UInt.m125constructorimpl(nextUInt.nextInt(i ^ IntCompanionObject.MIN_VALUE, i2 ^ IntCompanionObject.MIN_VALUE) ^ IntCompanionObject.MIN_VALUE);
}
@SinceKotlin(version = "1.5")
/* renamed from: nextUInt-qCasIEU, reason: not valid java name */
public static final int m1253nextUIntqCasIEU(@NotNull Random nextUInt, int i) {
Intrinsics.checkNotNullParameter(nextUInt, "$this$nextUInt");
return m1252nextUInta8DCA5k(nextUInt, 0, i);
}
@SinceKotlin(version = "1.5")
public static final long nextULong(@NotNull Random random) {
Intrinsics.checkNotNullParameter(random, "<this>");
return ULong.m204constructorimpl(random.nextLong());
}
@SinceKotlin(version = "1.5")
/* renamed from: nextULong-V1Xi4fY, reason: not valid java name */
public static final long m1254nextULongV1Xi4fY(@NotNull Random nextULong, long j) {
Intrinsics.checkNotNullParameter(nextULong, "$this$nextULong");
return m1255nextULongjmpaWc(nextULong, 0L, j);
}
@SinceKotlin(version = "1.5")
/* renamed from: nextULong-jmpaW-c, reason: not valid java name */
public static final long m1255nextULongjmpaWc(@NotNull Random nextULong, long j, long j2) {
Intrinsics.checkNotNullParameter(nextULong, "$this$nextULong");
m1248checkULongRangeBoundseb3DHEI(j, j2);
return ULong.m204constructorimpl(nextULong.nextLong(j ^ Long.MIN_VALUE, j2 ^ Long.MIN_VALUE) ^ Long.MIN_VALUE);
}
@SinceKotlin(version = "1.5")
public static final int nextUInt(@NotNull Random random, @NotNull UIntRange range) {
Intrinsics.checkNotNullParameter(random, "<this>");
Intrinsics.checkNotNullParameter(range, "range");
if (!range.isEmpty()) {
if (Integer.compare(range.getLast() ^ IntCompanionObject.MIN_VALUE, Integer.MAX_VALUE) < 0) {
return m1252nextUInta8DCA5k(random, range.getFirst(), UInt.m125constructorimpl(range.getLast() + 1));
}
if (Integer.compare(range.getFirst() ^ IntCompanionObject.MIN_VALUE, IntCompanionObject.MIN_VALUE) > 0) {
return UInt.m125constructorimpl(m1252nextUInta8DCA5k(random, UInt.m125constructorimpl(range.getFirst() - 1), range.getLast()) + 1);
}
return nextUInt(random);
}
throw new IllegalArgumentException("Cannot get random in empty range: " + range);
}
@SinceKotlin(version = "1.5")
public static final long nextULong(@NotNull Random random, @NotNull ULongRange range) {
Intrinsics.checkNotNullParameter(random, "<this>");
Intrinsics.checkNotNullParameter(range, "range");
if (!range.isEmpty()) {
if (Long.compare(range.getLast() ^ Long.MIN_VALUE, LongCompanionObject.MAX_VALUE) < 0) {
return m1255nextULongjmpaWc(random, range.getFirst(), ULong.m204constructorimpl(ULong.m204constructorimpl(1 & 4294967295L) + range.getLast()));
}
if (Long.compare(range.getFirst() ^ Long.MIN_VALUE, Long.MIN_VALUE) > 0) {
long j = 1 & 4294967295L;
return ULong.m204constructorimpl(ULong.m204constructorimpl(j) + m1255nextULongjmpaWc(random, ULong.m204constructorimpl(range.getFirst() - ULong.m204constructorimpl(j)), range.getLast()));
}
return nextULong(random);
}
throw new IllegalArgumentException("Cannot get random in empty range: " + range);
}
}