Primer paso de la investigacion. Se aportan el .apk, las carpetas con el apk extraido y el apk descompilado. El archivo API_DOCUMENTATION.md es un archivo donde se anotaran los descubrimientos del funcionamiento de la API, y los .py son scripts para probar la funcionalidad de la API con los métodos que vayamos encontrando. Finalmente, los archivos .js son scripts de Frida para extraer informacion de la APP durante la ejecucion.
This commit is contained in:
279
apk_decompiled/sources/kotlin/text/StringsKt__IndentKt.java
Normal file
279
apk_decompiled/sources/kotlin/text/StringsKt__IndentKt.java
Normal file
@@ -0,0 +1,279 @@
|
||||
package kotlin.text;
|
||||
|
||||
import C.w;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.collections.CollectionsKt;
|
||||
import kotlin.collections.CollectionsKt__IterablesKt;
|
||||
import kotlin.collections.CollectionsKt___CollectionsKt;
|
||||
import kotlin.internal.IntrinsicConstEvaluation;
|
||||
import kotlin.internal.PlatformImplementationsKt;
|
||||
import kotlin.jvm.functions.Function1;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
import kotlin.jvm.internal.SourceDebugExtension;
|
||||
import kotlin.sequences.SequencesKt;
|
||||
import kotlin.sequences.SequencesKt___SequencesKt;
|
||||
|
||||
@Metadata(d1 = {"\u0000\u001e\n\u0000\n\u0002\u0018\u0002\n\u0002\u0010\u000e\n\u0002\b\u0003\n\u0002\u0010\b\n\u0002\b\u0003\n\u0002\u0010 \n\u0002\b\u000b\u001a!\u0010\u0000\u001a\u000e\u0012\u0004\u0012\u00020\u0002\u0012\u0004\u0012\u00020\u00020\u00012\u0006\u0010\u0003\u001a\u00020\u0002H\u0002¢\u0006\u0002\b\u0004\u001a\u0011\u0010\u0005\u001a\u00020\u0006*\u00020\u0002H\u0002¢\u0006\u0002\b\u0007\u001a\u0014\u0010\b\u001a\u00020\u0002*\u00020\u00022\b\b\u0002\u0010\u0003\u001a\u00020\u0002\u001aJ\u0010\t\u001a\u00020\u0002*\b\u0012\u0004\u0012\u00020\u00020\n2\u0006\u0010\u000b\u001a\u00020\u00062\u0012\u0010\f\u001a\u000e\u0012\u0004\u0012\u00020\u0002\u0012\u0004\u0012\u00020\u00020\u00012\u0014\u0010\r\u001a\u0010\u0012\u0004\u0012\u00020\u0002\u0012\u0006\u0012\u0004\u0018\u00010\u00020\u0001H\u0082\b¢\u0006\u0002\b\u000e\u001a\u0014\u0010\u000f\u001a\u00020\u0002*\u00020\u00022\b\b\u0002\u0010\u0010\u001a\u00020\u0002\u001a\u001e\u0010\u0011\u001a\u00020\u0002*\u00020\u00022\b\b\u0002\u0010\u0010\u001a\u00020\u00022\b\b\u0002\u0010\u0012\u001a\u00020\u0002\u001a\f\u0010\u0013\u001a\u00020\u0002*\u00020\u0002H\u0007\u001a\u0016\u0010\u0014\u001a\u00020\u0002*\u00020\u00022\b\b\u0002\u0010\u0012\u001a\u00020\u0002H\u0007¨\u0006\u0015"}, d2 = {"getIndentFunction", "Lkotlin/Function1;", "", "indent", "getIndentFunction$StringsKt__IndentKt", "indentWidth", "", "indentWidth$StringsKt__IndentKt", "prependIndent", "reindent", "", "resultSizeEstimate", "indentAddFunction", "indentCutFunction", "reindent$StringsKt__IndentKt", "replaceIndent", "newIndent", "replaceIndentByMargin", "marginPrefix", "trimIndent", "trimMargin", "kotlin-stdlib"}, k = 5, mv = {1, 9, 0}, xi = 49, xs = "kotlin/text/StringsKt")
|
||||
@SourceDebugExtension({"SMAP\nIndent.kt\nKotlin\n*S Kotlin\n*F\n+ 1 Indent.kt\nkotlin/text/StringsKt__IndentKt\n+ 2 fake.kt\nkotlin/jvm/internal/FakeKt\n+ 3 _Collections.kt\nkotlin/collections/CollectionsKt___CollectionsKt\n+ 4 _Strings.kt\nkotlin/text/StringsKt___StringsKt\n*L\n1#1,123:1\n113#1,2:125\n115#1,4:140\n120#1,2:153\n113#1,2:162\n115#1,4:177\n120#1,2:184\n1#2:124\n1#2:150\n1#2:181\n1#2:205\n1569#3,11:127\n1864#3,2:138\n1866#3:151\n1580#3:152\n766#3:155\n857#3,2:156\n1549#3:158\n1620#3,3:159\n1569#3,11:164\n1864#3,2:175\n1866#3:182\n1580#3:183\n1569#3,11:192\n1864#3,2:203\n1866#3:206\n1580#3:207\n151#4,6:144\n151#4,6:186\n*S KotlinDebug\n*F\n+ 1 Indent.kt\nkotlin/text/StringsKt__IndentKt\n*L\n38#1:125,2\n38#1:140,4\n38#1:153,2\n78#1:162,2\n78#1:177,4\n78#1:184,2\n38#1:150\n78#1:181\n114#1:205\n38#1:127,11\n38#1:138,2\n38#1:151\n38#1:152\n74#1:155\n74#1:156,2\n75#1:158\n75#1:159,3\n78#1:164,11\n78#1:175,2\n78#1:182\n78#1:183\n114#1:192,11\n114#1:203,2\n114#1:206\n114#1:207\n39#1:144,6\n101#1:186,6\n*E\n"})
|
||||
/* loaded from: classes3.dex */
|
||||
public class StringsKt__IndentKt extends StringsKt__AppendableKt {
|
||||
private static final Function1<String, String> getIndentFunction$StringsKt__IndentKt(final String str) {
|
||||
return str.length() == 0 ? new Function1<String, String>() { // from class: kotlin.text.StringsKt__IndentKt$getIndentFunction$1
|
||||
@Override // kotlin.jvm.functions.Function1
|
||||
public final String invoke(String line) {
|
||||
Intrinsics.checkNotNullParameter(line, "line");
|
||||
return line;
|
||||
}
|
||||
} : new Function1<String, String>() { // from class: kotlin.text.StringsKt__IndentKt$getIndentFunction$2
|
||||
/* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */
|
||||
{
|
||||
super(1);
|
||||
}
|
||||
|
||||
@Override // kotlin.jvm.functions.Function1
|
||||
public final String invoke(String line) {
|
||||
Intrinsics.checkNotNullParameter(line, "line");
|
||||
return w.r(new StringBuilder(), str, line);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static final int indentWidth$StringsKt__IndentKt(String str) {
|
||||
int length = str.length();
|
||||
int i = 0;
|
||||
while (true) {
|
||||
if (i >= length) {
|
||||
i = -1;
|
||||
break;
|
||||
}
|
||||
if (!CharsKt__CharJVMKt.isWhitespace(str.charAt(i))) {
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return i == -1 ? str.length() : i;
|
||||
}
|
||||
|
||||
public static final String prependIndent(String str, final String indent) {
|
||||
String joinToString$default;
|
||||
Intrinsics.checkNotNullParameter(str, "<this>");
|
||||
Intrinsics.checkNotNullParameter(indent, "indent");
|
||||
joinToString$default = SequencesKt___SequencesKt.joinToString$default(SequencesKt.map(StringsKt__StringsKt.lineSequence(str), new Function1<String, String>() { // from class: kotlin.text.StringsKt__IndentKt$prependIndent$1
|
||||
/* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */
|
||||
{
|
||||
super(1);
|
||||
}
|
||||
|
||||
@Override // kotlin.jvm.functions.Function1
|
||||
public final String invoke(String it) {
|
||||
Intrinsics.checkNotNullParameter(it, "it");
|
||||
if (StringsKt__StringsJVMKt.isBlank(it)) {
|
||||
return it.length() < indent.length() ? indent : it;
|
||||
}
|
||||
return w.r(new StringBuilder(), indent, it);
|
||||
}
|
||||
}), "\n", null, null, 0, null, null, 62, null);
|
||||
return joinToString$default;
|
||||
}
|
||||
|
||||
public static /* synthetic */ String prependIndent$default(String str, String str2, int i, Object obj) {
|
||||
if ((i & 1) != 0) {
|
||||
str2 = " ";
|
||||
}
|
||||
return prependIndent(str, str2);
|
||||
}
|
||||
|
||||
private static final String reindent$StringsKt__IndentKt(List<String> list, int i, Function1<? super String, String> function1, Function1<? super String, String> function12) {
|
||||
Appendable joinTo$default;
|
||||
String invoke;
|
||||
int lastIndex = CollectionsKt.getLastIndex(list);
|
||||
ArrayList arrayList = new ArrayList();
|
||||
int i4 = 0;
|
||||
for (Object obj : list) {
|
||||
int i5 = i4 + 1;
|
||||
if (i4 < 0) {
|
||||
if (!PlatformImplementationsKt.apiVersionIsAtLeast(1, 3, 0)) {
|
||||
throw new ArithmeticException("Index overflow has happened.");
|
||||
}
|
||||
CollectionsKt.throwIndexOverflow();
|
||||
}
|
||||
String str = (String) obj;
|
||||
if ((i4 == 0 || i4 == lastIndex) && StringsKt__StringsJVMKt.isBlank(str)) {
|
||||
str = null;
|
||||
} else {
|
||||
String invoke2 = function12.invoke(str);
|
||||
if (invoke2 != null && (invoke = function1.invoke(invoke2)) != null) {
|
||||
str = invoke;
|
||||
}
|
||||
}
|
||||
if (str != null) {
|
||||
arrayList.add(str);
|
||||
}
|
||||
i4 = i5;
|
||||
}
|
||||
joinTo$default = CollectionsKt___CollectionsKt.joinTo$default(arrayList, new StringBuilder(i), "\n", null, null, 0, null, null, 124, null);
|
||||
String sb = ((StringBuilder) joinTo$default).toString();
|
||||
Intrinsics.checkNotNullExpressionValue(sb, "toString(...)");
|
||||
return sb;
|
||||
}
|
||||
|
||||
public static final String replaceIndent(String str, String newIndent) {
|
||||
int collectionSizeOrDefault;
|
||||
Comparable minOrNull;
|
||||
Appendable joinTo$default;
|
||||
String invoke;
|
||||
Intrinsics.checkNotNullParameter(str, "<this>");
|
||||
Intrinsics.checkNotNullParameter(newIndent, "newIndent");
|
||||
List<String> lines = StringsKt__StringsKt.lines(str);
|
||||
ArrayList arrayList = new ArrayList();
|
||||
for (Object obj : lines) {
|
||||
if (!StringsKt__StringsJVMKt.isBlank((String) obj)) {
|
||||
arrayList.add(obj);
|
||||
}
|
||||
}
|
||||
collectionSizeOrDefault = CollectionsKt__IterablesKt.collectionSizeOrDefault(arrayList, 10);
|
||||
ArrayList arrayList2 = new ArrayList(collectionSizeOrDefault);
|
||||
Iterator it = arrayList.iterator();
|
||||
while (it.hasNext()) {
|
||||
arrayList2.add(Integer.valueOf(indentWidth$StringsKt__IndentKt((String) it.next())));
|
||||
}
|
||||
minOrNull = CollectionsKt___CollectionsKt.minOrNull((Iterable<? extends Comparable>) ((Iterable) arrayList2));
|
||||
Integer num = (Integer) minOrNull;
|
||||
int i = 0;
|
||||
int intValue = num != null ? num.intValue() : 0;
|
||||
int size = (lines.size() * newIndent.length()) + str.length();
|
||||
Function1<String, String> indentFunction$StringsKt__IndentKt = getIndentFunction$StringsKt__IndentKt(newIndent);
|
||||
int lastIndex = CollectionsKt.getLastIndex(lines);
|
||||
ArrayList arrayList3 = new ArrayList();
|
||||
for (Object obj2 : lines) {
|
||||
int i4 = i + 1;
|
||||
if (i < 0) {
|
||||
CollectionsKt.throwIndexOverflow();
|
||||
}
|
||||
String str2 = (String) obj2;
|
||||
if ((i == 0 || i == lastIndex) && StringsKt__StringsJVMKt.isBlank(str2)) {
|
||||
str2 = null;
|
||||
} else {
|
||||
String drop = StringsKt___StringsKt.drop(str2, intValue);
|
||||
if (drop != null && (invoke = indentFunction$StringsKt__IndentKt.invoke(drop)) != null) {
|
||||
str2 = invoke;
|
||||
}
|
||||
}
|
||||
if (str2 != null) {
|
||||
arrayList3.add(str2);
|
||||
}
|
||||
i = i4;
|
||||
}
|
||||
joinTo$default = CollectionsKt___CollectionsKt.joinTo$default(arrayList3, new StringBuilder(size), "\n", null, null, 0, null, null, 124, null);
|
||||
String sb = ((StringBuilder) joinTo$default).toString();
|
||||
Intrinsics.checkNotNullExpressionValue(sb, "toString(...)");
|
||||
return sb;
|
||||
}
|
||||
|
||||
public static /* synthetic */ String replaceIndent$default(String str, String str2, int i, Object obj) {
|
||||
if ((i & 1) != 0) {
|
||||
str2 = "";
|
||||
}
|
||||
return replaceIndent(str, str2);
|
||||
}
|
||||
|
||||
public static final String replaceIndentByMargin(String str, String newIndent, String marginPrefix) {
|
||||
Appendable joinTo$default;
|
||||
String str2;
|
||||
String invoke;
|
||||
Intrinsics.checkNotNullParameter(str, "<this>");
|
||||
Intrinsics.checkNotNullParameter(newIndent, "newIndent");
|
||||
Intrinsics.checkNotNullParameter(marginPrefix, "marginPrefix");
|
||||
if (StringsKt__StringsJVMKt.isBlank(marginPrefix)) {
|
||||
throw new IllegalArgumentException("marginPrefix must be non-blank string.");
|
||||
}
|
||||
List<String> lines = StringsKt__StringsKt.lines(str);
|
||||
int size = (lines.size() * newIndent.length()) + str.length();
|
||||
Function1<String, String> indentFunction$StringsKt__IndentKt = getIndentFunction$StringsKt__IndentKt(newIndent);
|
||||
int lastIndex = CollectionsKt.getLastIndex(lines);
|
||||
ArrayList arrayList = new ArrayList();
|
||||
int i = 0;
|
||||
for (Object obj : lines) {
|
||||
int i4 = i + 1;
|
||||
if (i < 0) {
|
||||
CollectionsKt.throwIndexOverflow();
|
||||
}
|
||||
String str3 = (String) obj;
|
||||
String str4 = null;
|
||||
if ((i == 0 || i == lastIndex) && StringsKt__StringsJVMKt.isBlank(str3)) {
|
||||
str2 = marginPrefix;
|
||||
str3 = null;
|
||||
} else {
|
||||
int length = str3.length();
|
||||
int i5 = 0;
|
||||
while (true) {
|
||||
if (i5 >= length) {
|
||||
i5 = -1;
|
||||
break;
|
||||
}
|
||||
if (!CharsKt__CharJVMKt.isWhitespace(str3.charAt(i5))) {
|
||||
break;
|
||||
}
|
||||
i5++;
|
||||
}
|
||||
if (i5 == -1) {
|
||||
str2 = marginPrefix;
|
||||
} else {
|
||||
int i6 = i5;
|
||||
str2 = marginPrefix;
|
||||
if (StringsKt__StringsJVMKt.startsWith$default(str3, str2, i6, false, 4, null)) {
|
||||
int length2 = str2.length() + i6;
|
||||
Intrinsics.checkNotNull(str3, "null cannot be cast to non-null type java.lang.String");
|
||||
str4 = str3.substring(length2);
|
||||
Intrinsics.checkNotNullExpressionValue(str4, "substring(...)");
|
||||
}
|
||||
}
|
||||
if (str4 != null && (invoke = indentFunction$StringsKt__IndentKt.invoke(str4)) != null) {
|
||||
str3 = invoke;
|
||||
}
|
||||
}
|
||||
if (str3 != null) {
|
||||
arrayList.add(str3);
|
||||
}
|
||||
i = i4;
|
||||
marginPrefix = str2;
|
||||
}
|
||||
joinTo$default = CollectionsKt___CollectionsKt.joinTo$default(arrayList, new StringBuilder(size), "\n", null, null, 0, null, null, 124, null);
|
||||
String sb = ((StringBuilder) joinTo$default).toString();
|
||||
Intrinsics.checkNotNullExpressionValue(sb, "toString(...)");
|
||||
return sb;
|
||||
}
|
||||
|
||||
public static /* synthetic */ String replaceIndentByMargin$default(String str, String str2, String str3, int i, Object obj) {
|
||||
if ((i & 1) != 0) {
|
||||
str2 = "";
|
||||
}
|
||||
if ((i & 2) != 0) {
|
||||
str3 = "|";
|
||||
}
|
||||
return replaceIndentByMargin(str, str2, str3);
|
||||
}
|
||||
|
||||
@IntrinsicConstEvaluation
|
||||
public static String trimIndent(String str) {
|
||||
Intrinsics.checkNotNullParameter(str, "<this>");
|
||||
return replaceIndent(str, "");
|
||||
}
|
||||
|
||||
@IntrinsicConstEvaluation
|
||||
public static final String trimMargin(String str, String marginPrefix) {
|
||||
Intrinsics.checkNotNullParameter(str, "<this>");
|
||||
Intrinsics.checkNotNullParameter(marginPrefix, "marginPrefix");
|
||||
return replaceIndentByMargin(str, "", marginPrefix);
|
||||
}
|
||||
|
||||
public static /* synthetic */ String trimMargin$default(String str, String str2, int i, Object obj) {
|
||||
if ((i & 1) != 0) {
|
||||
str2 = "|";
|
||||
}
|
||||
return trimMargin(str, str2);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user