Add decompiled APK source code (JADX)

- 28,932 files
- Full Java source code
- Smali files
- Resources

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-02-18 14:52:23 -08:00
parent cc210a65ea
commit f9d20bb3fc
26991 changed files with 2541449 additions and 0 deletions

View File

@@ -0,0 +1,196 @@
package com.firemonkeys.cloudcellapi.util;
import com.applovin.exoplayer2.common.base.Ascii;
/* loaded from: classes2.dex */
public class Base64 {
static final /* synthetic */ boolean $assertionsDisabled = false;
public static final boolean DECODE = false;
public static final boolean ENCODE = true;
private static final byte NEW_LINE = 10;
private static final byte[] ALPHABET = {65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47};
private static final byte[] WEBSAFE_ALPHABET = {65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 45, 95};
private static final byte WHITE_SPACE_ENC = -5;
private static final byte EQUALS_SIGN = 61;
private static final byte EQUALS_SIGN_ENC = -1;
private static final byte[] DECODABET = {-9, -9, -9, -9, -9, -9, -9, -9, -9, WHITE_SPACE_ENC, WHITE_SPACE_ENC, -9, -9, WHITE_SPACE_ENC, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, WHITE_SPACE_ENC, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 62, -9, -9, -9, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, EQUALS_SIGN, -9, -9, -9, EQUALS_SIGN_ENC, -9, -9, -9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, Ascii.VT, Ascii.FF, Ascii.CR, Ascii.SO, Ascii.SI, Ascii.DLE, 17, Ascii.DC2, 19, Ascii.DC4, Ascii.NAK, Ascii.SYN, Ascii.ETB, Ascii.CAN, Ascii.EM, -9, -9, -9, -9, -9, -9, Ascii.SUB, Ascii.ESC, Ascii.FS, Ascii.GS, Ascii.RS, Ascii.US, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -9, -9, -9, -9, -9};
private static final byte[] WEBSAFE_DECODABET = {-9, -9, -9, -9, -9, -9, -9, -9, -9, WHITE_SPACE_ENC, WHITE_SPACE_ENC, -9, -9, WHITE_SPACE_ENC, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, WHITE_SPACE_ENC, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 62, -9, -9, 52, 53, 54, 55, 56, 57, 58, 59, 60, EQUALS_SIGN, -9, -9, -9, EQUALS_SIGN_ENC, -9, -9, -9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, Ascii.VT, Ascii.FF, Ascii.CR, Ascii.SO, Ascii.SI, Ascii.DLE, 17, Ascii.DC2, 19, Ascii.DC4, Ascii.NAK, Ascii.SYN, Ascii.ETB, Ascii.CAN, Ascii.EM, -9, -9, -9, -9, 63, -9, Ascii.SUB, Ascii.ESC, Ascii.FS, Ascii.GS, Ascii.RS, Ascii.US, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -9, -9, -9, -9, -9};
private Base64() {
}
private static byte[] encode3to4(byte[] bArr, int i, int i2, byte[] bArr2, int i3, byte[] bArr3) {
int i4 = (i2 > 0 ? (bArr[i] << Ascii.CAN) >>> 8 : 0) | (i2 > 1 ? (bArr[i + 1] << Ascii.CAN) >>> 16 : 0) | (i2 > 2 ? (bArr[i + 2] << Ascii.CAN) >>> 24 : 0);
if (i2 == 1) {
bArr2[i3] = bArr3[i4 >>> 18];
bArr2[i3 + 1] = bArr3[(i4 >>> 12) & 63];
bArr2[i3 + 2] = EQUALS_SIGN;
bArr2[i3 + 3] = EQUALS_SIGN;
return bArr2;
}
if (i2 == 2) {
bArr2[i3] = bArr3[i4 >>> 18];
bArr2[i3 + 1] = bArr3[(i4 >>> 12) & 63];
bArr2[i3 + 2] = bArr3[(i4 >>> 6) & 63];
bArr2[i3 + 3] = EQUALS_SIGN;
return bArr2;
}
if (i2 != 3) {
return bArr2;
}
bArr2[i3] = bArr3[i4 >>> 18];
bArr2[i3 + 1] = bArr3[(i4 >>> 12) & 63];
bArr2[i3 + 2] = bArr3[(i4 >>> 6) & 63];
bArr2[i3 + 3] = bArr3[i4 & 63];
return bArr2;
}
public static String encode(byte[] bArr) {
return encode(bArr, 0, bArr.length, ALPHABET, true);
}
public static String encodeWebSafe(byte[] bArr, boolean z) {
return encode(bArr, 0, bArr.length, WEBSAFE_ALPHABET, z);
}
public static String encode(byte[] bArr, int i, int i2, byte[] bArr2, boolean z) {
byte[] encode = encode(bArr, i, i2, bArr2, Integer.MAX_VALUE);
int length = encode.length;
while (!z && length > 0 && encode[length - 1] == 61) {
length--;
}
return new String(encode, 0, length);
}
public static byte[] encode(byte[] bArr, int i, int i2, byte[] bArr2, int i3) {
int i4 = ((i2 + 2) / 3) * 4;
byte[] bArr3 = new byte[i4 + (i4 / i3)];
int i5 = i2 - 2;
int i6 = 0;
int i7 = 0;
int i8 = 0;
while (i6 < i5) {
int i9 = ((bArr[i6 + i] << Ascii.CAN) >>> 8) | ((bArr[(i6 + 1) + i] << Ascii.CAN) >>> 16) | ((bArr[(i6 + 2) + i] << Ascii.CAN) >>> 24);
bArr3[i7] = bArr2[i9 >>> 18];
int i10 = i7 + 1;
bArr3[i10] = bArr2[(i9 >>> 12) & 63];
bArr3[i7 + 2] = bArr2[(i9 >>> 6) & 63];
bArr3[i7 + 3] = bArr2[i9 & 63];
i8 += 4;
if (i8 == i3) {
bArr3[i7 + 4] = 10;
i8 = 0;
i7 = i10;
}
i6 += 3;
i7 += 4;
}
if (i6 < i2) {
encode3to4(bArr, i6 + i, i2 - i6, bArr3, i7, bArr2);
if (i8 + 4 == i3) {
bArr3[i7 + 4] = 10;
}
}
return bArr3;
}
private static int decode4to3(byte[] bArr, int i, byte[] bArr2, int i2, byte[] bArr3) {
byte b = bArr[i + 2];
if (b == 61) {
bArr2[i2] = (byte) ((((bArr3[bArr[i + 1]] << Ascii.CAN) >>> 12) | ((bArr3[bArr[i]] << Ascii.CAN) >>> 6)) >>> 16);
return 1;
}
byte b2 = bArr[i + 3];
if (b2 == 61) {
int i3 = ((bArr3[bArr[i + 1]] << Ascii.CAN) >>> 12) | ((bArr3[bArr[i]] << Ascii.CAN) >>> 6) | ((bArr3[b] << Ascii.CAN) >>> 18);
bArr2[i2] = (byte) (i3 >>> 16);
bArr2[i2 + 1] = (byte) (i3 >>> 8);
return 2;
}
int i4 = ((bArr3[bArr[i + 1]] << Ascii.CAN) >>> 12) | ((bArr3[bArr[i]] << Ascii.CAN) >>> 6) | ((bArr3[b] << Ascii.CAN) >>> 18) | ((bArr3[b2] << Ascii.CAN) >>> 24);
bArr2[i2] = (byte) (i4 >> 16);
bArr2[i2 + 1] = (byte) (i4 >> 8);
bArr2[i2 + 2] = (byte) i4;
return 3;
}
public static byte[] decode(String str) throws Base64DecoderException {
byte[] bytes = str.getBytes();
return decode(bytes, 0, bytes.length);
}
public static byte[] decodeWebSafe(String str) throws Base64DecoderException {
byte[] bytes = str.getBytes();
return decodeWebSafe(bytes, 0, bytes.length);
}
public static byte[] decode(byte[] bArr) throws Base64DecoderException {
return decode(bArr, 0, bArr.length);
}
public static byte[] decodeWebSafe(byte[] bArr) throws Base64DecoderException {
return decodeWebSafe(bArr, 0, bArr.length);
}
public static byte[] decode(byte[] bArr, int i, int i2) throws Base64DecoderException {
return decode(bArr, i, i2, DECODABET);
}
public static byte[] decodeWebSafe(byte[] bArr, int i, int i2) throws Base64DecoderException {
return decode(bArr, i, i2, WEBSAFE_DECODABET);
}
public static byte[] decode(byte[] bArr, int i, int i2, byte[] bArr2) throws Base64DecoderException {
byte[] bArr3 = new byte[((i2 * 3) / 4) + 2];
byte[] bArr4 = new byte[4];
int i3 = 0;
int i4 = 0;
int i5 = 0;
while (true) {
if (i3 >= i2) {
break;
}
int i6 = i3 + i;
byte b = (byte) (bArr[i6] & Byte.MAX_VALUE);
byte b2 = bArr2[b];
if (b2 < -5) {
throw new Base64DecoderException("Bad Base64 input character at " + i3 + ": " + ((int) bArr[i6]) + "(decimal)");
}
if (b2 >= -1) {
if (b == 61) {
int i7 = i2 - i3;
byte b3 = (byte) (bArr[(i2 - 1) + i] & Byte.MAX_VALUE);
if (i4 == 0 || i4 == 1) {
throw new Base64DecoderException("invalid padding byte '=' at byte offset " + i3);
}
if ((i4 == 3 && i7 > 2) || (i4 == 4 && i7 > 1)) {
throw new Base64DecoderException("padding byte '=' falsely signals end of encoded value at offset " + i3);
}
if (b3 != 61 && b3 != 10) {
throw new Base64DecoderException("encoded value has invalid trailing byte");
}
} else {
int i8 = i4 + 1;
bArr4[i4] = b;
if (i8 == 4) {
i5 += decode4to3(bArr4, 0, bArr3, i5, bArr2);
i4 = 0;
} else {
i4 = i8;
}
}
}
i3++;
}
if (i4 != 0) {
if (i4 == 1) {
throw new Base64DecoderException("single trailing character at offset " + (i2 - 1));
}
bArr4[i4] = EQUALS_SIGN;
i5 += decode4to3(bArr4, 0, bArr3, i5, bArr2);
}
byte[] bArr5 = new byte[i5];
System.arraycopy(bArr3, 0, bArr5, 0, i5);
return bArr5;
}
}

View File

@@ -0,0 +1,13 @@
package com.firemonkeys.cloudcellapi.util;
/* loaded from: classes2.dex */
public class Base64DecoderException extends Exception {
private static final long serialVersionUID = 1;
public Base64DecoderException() {
}
public Base64DecoderException(String str) {
super(str);
}
}

View File

@@ -0,0 +1,19 @@
package com.firemonkeys.cloudcellapi.util;
import android.content.SharedPreferences;
import com.firemonkeys.cloudcellapi.CC_Component;
/* loaded from: classes2.dex */
public class FacebookAccessToken {
static final String TAG = "cloudcellapi.util.FacebookAccessToken";
public static void setFacebookAccessToken(String str) {
SharedPreferences.Editor edit = CC_Component.GetActivity().getPreferences(0).edit();
edit.putString("access_token", str);
edit.commit();
}
public static String getFacebookAccessToken() {
return CC_Component.GetActivity().getPreferences(0).getString("access_token", "");
}
}

View File

@@ -0,0 +1,315 @@
package com.firemonkeys.cloudcellapi.util;
import android.Manifest;
import android.app.Activity;
import android.app.UiModeManager;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PermissionInfo;
import android.media.AudioManager;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Environment;
import android.provider.Settings;
import com.firemonkeys.cloudcellapi.CC_Component;
import com.firemonkeys.cloudcellapi.Logging;
import com.google.android.gms.ads.identifier.AdvertisingIdClient;
import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
import com.google.android.gms.common.GooglePlayServicesRepairableException;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Locale;
import org.apache.http.conn.util.InetAddressUtils;
/* loaded from: classes2.dex */
public class GetInfo {
private static final String CLASSNAME = "GetInfo";
private static final int MAX_RETRIES = 5;
static Boolean bShouldUseLegacyExternalFilesDir = null;
protected static ArrayList<String> m_systemPermissions = null;
static boolean ms_bAdvertisingEnabled = false;
static boolean ms_bInitialized = false;
static String ms_sAdvertisingIdentifier = "";
public static boolean GetAdvertisingEnabled() {
return ms_bAdvertisingEnabled;
}
public static String GetAdvertisingID() {
return ms_sAdvertisingIdentifier;
}
public static int GetApiLevel() {
return Build.VERSION.SDK_INT;
}
public static String GetImei() {
return "";
}
public static boolean IsInitialized() {
return ms_bInitialized;
}
public static void Initialize(final Activity activity) {
if (activity == null) {
Logging.CC_ERROR(CLASSNAME, "Invalid Activity passed to GetInfo.Initialize. AdvertisingId will NOT be set!");
} else {
ms_bAdvertisingEnabled = true;
new Thread(new Runnable() { // from class: com.firemonkeys.cloudcellapi.util.GetInfo.1
@Override // java.lang.Runnable
public void run() {
Logging.CC_INFO(GetInfo.CLASSNAME, "Initialize()");
for (int i = 0; i < 5; i++) {
try {
GetInfo.ms_sAdvertisingIdentifier = AdvertisingIdClient.getAdvertisingIdInfo(activity).getId();
GetInfo.ms_bAdvertisingEnabled = !r2.isLimitAdTrackingEnabled();
break;
} catch (GooglePlayServicesNotAvailableException e) {
Logging.CC_ERROR(GetInfo.CLASSNAME, "GooglePlayServicesNotAvailableException" + e.getMessage());
try {
Thread.sleep(1000L);
} catch (InterruptedException e2) {
Logging.CC_ERROR(GetInfo.CLASSNAME, "InterruptedException" + e2.getMessage());
}
} catch (GooglePlayServicesRepairableException e3) {
Logging.CC_ERROR(GetInfo.CLASSNAME, "GooglePlayServicesRepairableException" + e3.getMessage());
Thread.sleep(1000L);
} catch (IOException e4) {
Logging.CC_ERROR(GetInfo.CLASSNAME, "IOException" + e4.getMessage());
Thread.sleep(1000L);
} catch (IllegalStateException e5) {
Logging.CC_ERROR(GetInfo.CLASSNAME, "IllegalStateException" + e5.getMessage());
Thread.sleep(1000L);
}
}
Logging.CC_INFO(GetInfo.CLASSNAME, "AdvertisingIdentifier: " + GetInfo.ms_sAdvertisingIdentifier);
Logging.CC_INFO(GetInfo.CLASSNAME, "AdvertisingEnabled: " + GetInfo.ms_bAdvertisingEnabled);
GetInfo.ms_bInitialized = true;
}
}).start();
}
}
public static boolean GetIsTablet() {
return (CC_Component.GetActivity().getApplicationContext().getResources().getConfiguration().screenLayout & 15) >= 3;
}
public static boolean GetIsRunningOnTv() {
return ((UiModeManager) CC_Component.GetActivity().getSystemService("uimode")).getCurrentModeType() == 4;
}
public static String GetDeviceCode() {
return Build.DEVICE;
}
public static String GetDeviceName() {
return Build.MANUFACTURER + " " + Build.MODEL;
}
public static String GetDeviceManufacturer() {
return Build.MANUFACTURER;
}
public static String GetDeviceModel() {
return Build.MODEL;
}
public static String GetDeviceBrand() {
return Build.BRAND;
}
public static String GetDeviceFirmwareVersion() {
return Build.VERSION.RELEASE;
}
public static String GetBuildVersion() {
try {
Activity GetActivity = CC_Component.GetActivity();
return GetActivity.getPackageManager().getPackageInfo(GetActivity.getPackageName(), 0).versionName;
} catch (Exception e) {
Logging.CC_ERROR(CLASSNAME, "GetBuildVersion() error: " + e.toString());
return "1.0.0";
}
}
public static String GetDeviceMacAddress() {
try {
return ((WifiManager) CC_Component.GetActivity().getSystemService("wifi")).getConnectionInfo().getMacAddress();
} catch (Exception e) {
Logging.CC_ERROR(CLASSNAME, "GetDeviceMacAddress() error: " + e.toString());
return "";
}
}
public static String GetPackageName() {
try {
return CC_Component.GetActivity().getPackageName();
} catch (Exception e) {
Logging.CC_ERROR(CLASSNAME, "GetPackageName() error: " + e.toString());
return "";
}
}
public static boolean GetIsAmazonDevice() {
return GetDeviceManufacturer().toLowerCase().contains("amazon");
}
public static boolean GetIsChinaBuild() {
return GetPackageName().endsWith("_cn");
}
public static String GetDeviceUID() {
return Settings.Secure.getString(CC_Component.GetActivity().getApplicationContext().getContentResolver(), "android_id");
}
public static String GetLocalIp() {
try {
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
Enumeration<InetAddress> inetAddresses = networkInterfaces.nextElement().getInetAddresses();
while (inetAddresses.hasMoreElements()) {
InetAddress nextElement = inetAddresses.nextElement();
if (nextElement.isLoopbackAddress() || (!InetAddressUtils.isIPv4Address(nextElement.getHostAddress().toString()) && !InetAddressUtils.isIPv6Address(nextElement.getHostAddress().toString()))) {
}
return nextElement.getHostAddress().toString();
}
}
return "";
} catch (Exception e) {
Logging.CC_ERROR(CLASSNAME, "GetLocalIp() error: " + e.toString());
return "";
}
}
public static String GetDeviceCountry() {
try {
return Locale.getDefault().getISO3Country();
} catch (Exception e) {
Logging.CC_ERROR(CLASSNAME, "GetDeviceCountry() error: " + e.toString());
return "";
}
}
public static String GetDeviceLanguage() {
return Locale.getDefault().getLanguage();
}
public static int GetVolume() {
return ((AudioManager) CC_Component.GetActivity().getSystemService("audio")).getStreamVolume(3);
}
public static boolean DoesPackageExist(String str) {
try {
return CC_Component.GetActivity().getPackageManager().getApplicationInfo(str, 0) != null;
} catch (Exception unused) {
return false;
}
}
public static String[] GetRequestedPermissions() {
String[] strArr = new String[0];
try {
Activity GetActivity = CC_Component.GetActivity();
return GetActivity.getPackageManager().getPackageInfo(GetActivity.getPackageName(), 4096).requestedPermissions;
} catch (Exception e) {
Logging.CC_ERROR(CLASSNAME, "GetRequestedPermissions() error: " + e.toString());
return strArr;
}
}
public static boolean IsValidPermission(String str) {
try {
PermissionInfo permissionInfo = CC_Component.GetActivity().getPackageManager().getPermissionInfo(str, 128);
if (permissionInfo == null) {
return false;
}
int i = permissionInfo.protectionLevel;
return i == 1 || i == 0;
} catch (Exception unused) {
return false;
}
}
public static ArrayList<String> GetSystemPermissions() {
String str;
try {
if (m_systemPermissions == null) {
m_systemPermissions = new ArrayList<>();
for (Field field : Manifest.permission.class.getDeclaredFields()) {
if (field.getType().isAssignableFrom(String.class) && (str = (String) field.get(null)) != null) {
m_systemPermissions.add(str);
}
}
}
} catch (Exception e) {
Logging.CC_ERROR(CLASSNAME, "Initialising System Permissions exception: " + e.toString());
}
return m_systemPermissions;
}
public static boolean IsSystemPermission(String str) {
Iterator<String> it = GetSystemPermissions().iterator();
while (it.hasNext()) {
if (it.next().equals(str)) {
return true;
}
}
return false;
}
public static boolean IsPackageEnabled(String str) {
try {
ApplicationInfo applicationInfo = CC_Component.GetActivity().getPackageManager().getApplicationInfo(str, 0);
if (applicationInfo != null) {
return applicationInfo.enabled;
}
return false;
} catch (Exception unused) {
return false;
}
}
public static long getAppInstallTime() {
try {
Context applicationContext = CC_Component.GetActivity().getApplicationContext();
return applicationContext.getPackageManager().getPackageInfo(applicationContext.getPackageName(), 0).lastUpdateTime;
} catch (PackageManager.NameNotFoundException unused) {
return 0L;
}
}
public static Boolean ShouldUseLegacyExternalFilesDir() {
if (bShouldUseLegacyExternalFilesDir == null) {
bShouldUseLegacyExternalFilesDir = Boolean.valueOf(new File(getLegacyExternalStorageDirPath() + "/.depot/").exists());
}
return bShouldUseLegacyExternalFilesDir;
}
public static String getLegacyExternalStorageDirPath() {
File externalStorageDirectory = Environment.getExternalStorageDirectory();
if (externalStorageDirectory == null) {
return "";
}
return externalStorageDirectory.getAbsolutePath() + "/Android/data/" + CC_Component.GetActivity().getApplicationContext().getPackageName();
}
public static String getExternalStorageDir() {
if (ShouldUseLegacyExternalFilesDir().booleanValue()) {
return getLegacyExternalStorageDirPath();
}
File externalFilesDir = CC_Component.GetActivity().getApplicationContext().getExternalFilesDir(null);
return externalFilesDir != null ? externalFilesDir.getAbsolutePath() : "";
}
public static void DEBUG_DoJavaException() {
throw new RuntimeException("DEBUG Throwing an exception in DEBUG_DoJavaException");
}
}

View File

@@ -0,0 +1,29 @@
package com.firemonkeys.cloudcellapi.util;
import com.firemonkeys.cloudcellapi.Consts;
/* loaded from: classes2.dex */
public class IabException extends Exception {
IabResult mResult;
public IabResult getResult() {
return this.mResult;
}
public IabException(IabResult iabResult) {
this(iabResult, (Exception) null);
}
public IabException(Consts.ResponseCode responseCode, String str) {
this(new IabResult(responseCode, str));
}
public IabException(IabResult iabResult, Exception exc) {
super(iabResult.getMessage(), exc);
this.mResult = iabResult;
}
public IabException(Consts.ResponseCode responseCode, String str, Exception exc) {
this(new IabResult(responseCode, str), exc);
}
}

View File

@@ -0,0 +1,44 @@
package com.firemonkeys.cloudcellapi.util;
import com.firemonkeys.cloudcellapi.Consts;
/* loaded from: classes2.dex */
public class IabResult {
String mMessage;
Consts.ResponseCode mResponse;
String mSku;
public String getMessage() {
return this.mMessage;
}
public Consts.ResponseCode getResponse() {
return this.mResponse;
}
public String getSku() {
return this.mSku;
}
public IabResult(Consts.ResponseCode responseCode, String str) {
this.mResponse = responseCode;
this.mMessage = str;
}
public IabResult(Consts.ResponseCode responseCode, String str, String str2) {
this(responseCode, str);
this.mSku = str2;
}
public boolean isSuccess() {
return this.mResponse == Consts.ResponseCode.RESULT_OK;
}
public boolean isFailure() {
return !isSuccess();
}
public String toString() {
return "IabResult: " + getMessage();
}
}

View File

@@ -0,0 +1,68 @@
package com.firemonkeys.cloudcellapi.util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/* loaded from: classes2.dex */
public class Inventory {
Map<String, SkuDetails> mSkuMap = new HashMap();
Map<String, Purchase> mPurchaseMap = new HashMap();
public SkuDetails getSkuDetails(String str) {
return this.mSkuMap.get(str);
}
public Purchase getPurchase(String str) {
return this.mPurchaseMap.get(str);
}
public boolean hasPurchase(String str) {
return this.mPurchaseMap.containsKey(str);
}
public boolean hasDetails(String str) {
return this.mSkuMap.containsKey(str);
}
public List<String> getAllSkus() {
return new ArrayList(this.mSkuMap.keySet());
}
public List<SkuDetails> getAllSkuDetails() {
return new ArrayList(this.mSkuMap.values());
}
public void erasePurchase(String str) {
if (this.mPurchaseMap.containsKey(str)) {
this.mPurchaseMap.remove(str);
}
}
public List<String> getAllOwnedSkus() {
return new ArrayList(this.mPurchaseMap.keySet());
}
public List<String> getAllOwnedSkus(String str) {
ArrayList arrayList = new ArrayList();
for (Purchase purchase : this.mPurchaseMap.values()) {
if (purchase.getItemType().equals(str)) {
arrayList.add(purchase.getSku());
}
}
return arrayList;
}
public List<Purchase> getAllPurchases() {
return new ArrayList(this.mPurchaseMap.values());
}
public void addSkuDetails(SkuDetails skuDetails) {
this.mSkuMap.put(skuDetails.getSku(), skuDetails);
}
public void addPurchase(Purchase purchase) {
this.mPurchaseMap.put(purchase.getSku(), purchase);
}
}

View File

@@ -0,0 +1,79 @@
package com.firemonkeys.cloudcellapi.util;
import com.facebook.gamingservices.cloudgaming.internal.SDKConstants;
import com.unity3d.ads.core.domain.HandleInvocationsFromAdViewer;
import com.unity3d.ads.metadata.InAppPurchaseMetaData;
import org.json.JSONException;
import org.json.JSONObject;
/* loaded from: classes2.dex */
public class Purchase {
String mDeveloperPayload;
String mItemType;
String mOrderId;
String mOriginalJson;
String mPackageName;
int mPurchaseState;
long mPurchaseTime;
String mSignature;
String mSku;
String mToken;
public String getDeveloperPayload() {
return this.mDeveloperPayload;
}
public String getItemType() {
return this.mItemType;
}
public String getOrderId() {
return this.mOrderId;
}
public String getOriginalJson() {
return this.mOriginalJson;
}
public String getPackageName() {
return this.mPackageName;
}
public int getPurchaseState() {
return this.mPurchaseState;
}
public long getPurchaseTime() {
return this.mPurchaseTime;
}
public String getSignature() {
return this.mSignature;
}
public String getSku() {
return this.mSku;
}
public String getToken() {
return this.mToken;
}
public Purchase(String str, String str2, String str3) throws JSONException {
this.mItemType = str;
this.mOriginalJson = str2;
JSONObject jSONObject = new JSONObject(this.mOriginalJson);
this.mOrderId = jSONObject.optString("orderId");
this.mPackageName = jSONObject.optString(HandleInvocationsFromAdViewer.KEY_PACKAGE_NAME);
this.mSku = jSONObject.optString(InAppPurchaseMetaData.KEY_PRODUCT_ID);
this.mPurchaseTime = jSONObject.optLong("purchaseTime");
this.mPurchaseState = jSONObject.optInt("purchaseState");
this.mDeveloperPayload = jSONObject.optString(SDKConstants.PARAM_DEVELOPER_PAYLOAD);
this.mToken = jSONObject.optString("token", jSONObject.optString(SDKConstants.PARAM_PURCHASE_TOKEN));
this.mSignature = str3;
}
public String toString() {
return "PurchaseInfo(type:" + this.mItemType + "):" + this.mOriginalJson;
}
}

View File

@@ -0,0 +1,70 @@
package com.firemonkeys.cloudcellapi.util;
import android.text.TextUtils;
import android.util.Log;
import java.security.InvalidKeyException;
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
import java.security.PublicKey;
import java.security.Signature;
import java.security.SignatureException;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.X509EncodedKeySpec;
/* loaded from: classes2.dex */
public class Security {
private static final String KEY_FACTORY_ALGORITHM = "RSA";
private static final String SIGNATURE_ALGORITHM = "SHA1withRSA";
private static final String TAG = "IABUtil/Security";
public static boolean verifyPurchase(String str, String str2, String str3) {
if (str2 == null) {
Log.e(TAG, "data is null");
return false;
}
if (TextUtils.isEmpty(str3) || verify(generatePublicKey(str), str2, str3)) {
return true;
}
Log.w(TAG, "signature does not match data.");
return false;
}
public static PublicKey generatePublicKey(String str) {
try {
return KeyFactory.getInstance(KEY_FACTORY_ALGORITHM).generatePublic(new X509EncodedKeySpec(Base64.decode(str)));
} catch (Base64DecoderException e) {
Log.e(TAG, "Base64 decoding failed.");
throw new IllegalArgumentException(e);
} catch (NoSuchAlgorithmException e2) {
throw new RuntimeException(e2);
} catch (InvalidKeySpecException e3) {
Log.e(TAG, "Invalid key specification.");
throw new IllegalArgumentException(e3);
}
}
public static boolean verify(PublicKey publicKey, String str, String str2) {
try {
Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);
signature.initVerify(publicKey);
signature.update(str.getBytes());
if (signature.verify(Base64.decode(str2))) {
return true;
}
Log.e(TAG, "Signature verification failed.");
return false;
} catch (Base64DecoderException unused) {
Log.e(TAG, "Base64 decoding failed.");
return false;
} catch (InvalidKeyException unused2) {
Log.e(TAG, "Invalid key specification.");
return false;
} catch (NoSuchAlgorithmException unused3) {
Log.e(TAG, "NoSuchAlgorithmException.");
return false;
} catch (SignatureException unused4) {
Log.e(TAG, "Signature exception.");
return false;
}
}
}

View File

@@ -0,0 +1,68 @@
package com.firemonkeys.cloudcellapi.util;
import com.unity3d.ads.metadata.InAppPurchaseMetaData;
import org.json.JSONException;
import org.json.JSONObject;
/* loaded from: classes2.dex */
public class SkuDetails {
public static final String ITEM_TYPE_INAPP = "inapp";
String mDescription;
String mItemType;
String mJson;
String mPrice;
String mPriceAmountMicros;
String mPriceCurrencyCode;
String mSku;
String mTitle;
String mType;
public String getDescription() {
return this.mDescription;
}
public String getPrice() {
return this.mPrice;
}
public String getPriceAmountMicros() {
return this.mPriceAmountMicros;
}
public String getPriceCurrencyCode() {
return this.mPriceCurrencyCode;
}
public String getSku() {
return this.mSku;
}
public String getTitle() {
return this.mTitle;
}
public String getType() {
return this.mType;
}
public SkuDetails(String str) throws JSONException {
this("inapp", str);
}
public SkuDetails(String str, String str2) throws JSONException {
this.mItemType = str;
this.mJson = str2;
JSONObject jSONObject = new JSONObject(this.mJson);
this.mSku = jSONObject.optString(InAppPurchaseMetaData.KEY_PRODUCT_ID);
this.mType = jSONObject.optString("type");
this.mPrice = jSONObject.optString("price");
this.mPriceAmountMicros = jSONObject.optString("price_amount_micros");
this.mPriceCurrencyCode = jSONObject.optString("price_currency_code");
this.mTitle = jSONObject.optString("title");
this.mDescription = jSONObject.optString("description");
}
public String toString() {
return "SkuDetails:" + this.mJson;
}
}