CrackMe.apk
Download file
package com.google.common.util.concurrent;
import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.FluentFuture;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import javax.annotation.CheckForNull;
@ElementTypesAreNonnullByDefault
final class TimeoutFuture<V> extends FluentFuture.TrustedFuture<V> {
/* access modifiers changed from: private */
@CheckForNull
public ListenableFuture<V> delegateRef;
/* access modifiers changed from: private */
@CheckForNull
public ScheduledFuture<?> timer;
static <V> ListenableFuture<V> create(ListenableFuture<V> listenableFuture, long j, TimeUnit timeUnit, ScheduledExecutorService scheduledExecutorService) {
TimeoutFuture timeoutFuture = new TimeoutFuture(listenableFuture);
Fire fire = new Fire(timeoutFuture);
timeoutFuture.timer = scheduledExecutorService.schedule(fire, j, timeUnit);
listenableFuture.addListener(fire, MoreExecutors.directExecutor());
return timeoutFuture;
}
private TimeoutFuture(ListenableFuture<V> listenableFuture) {
this.delegateRef = (ListenableFuture) Preconditions.checkNotNull(listenableFuture);
}
private static final class Fire<V> implements Runnable {
@CheckForNull
TimeoutFuture<V> timeoutFutureRef;
Fire(TimeoutFuture<V> timeoutFuture) {
this.timeoutFutureRef = timeoutFuture;
}
public void run() {
ListenableFuture access$000;
String str;
TimeoutFuture<V> timeoutFuture = this.timeoutFutureRef;
if (timeoutFuture != null && (access$000 = timeoutFuture.delegateRef) != null) {
this.timeoutFutureRef = null;
if (access$000.isDone()) {
timeoutFuture.setFuture(access$000);
return;
}
try {
ScheduledFuture access$100 = timeoutFuture.timer;
ScheduledFuture unused = timeoutFuture.timer = null;
str = "Timed out";
if (access$100 != null) {
long abs = Math.abs(access$100.getDelay(TimeUnit.MILLISECONDS));
if (abs > 10) {
StringBuilder sb = new StringBuilder(str.length() + 66);
sb.append(str);
sb.append(" (timeout delayed by ");
sb.append(abs);
sb.append(" ms after scheduled time)");
str = sb.toString();
}
}
String valueOf = String.valueOf(str);
String valueOf2 = String.valueOf(access$000);
StringBuilder sb2 = new StringBuilder(String.valueOf(valueOf).length() + 2 + String.valueOf(valueOf2).length());
sb2.append(valueOf);
sb2.append(": ");
sb2.append(valueOf2);
timeoutFuture.setException(new TimeoutFutureException(sb2.toString()));
access$000.cancel(true);
} catch (Throwable th) {
access$000.cancel(true);
throw th;
}
}
}
}
private static final class TimeoutFutureException extends TimeoutException {
private TimeoutFutureException(String str) {
super(str);
}
public synchronized Throwable fillInStackTrace() {
setStackTrace(new StackTraceElement[0]);
return this;
}
}
/* access modifiers changed from: protected */
@CheckForNull
public String pendingToString() {
ListenableFuture<V> listenableFuture = this.delegateRef;
ScheduledFuture<?> scheduledFuture = this.timer;
if (listenableFuture == null) {
return null;
}
String valueOf = String.valueOf(listenableFuture);
StringBuilder sb = new StringBuilder(String.valueOf(valueOf).length() + 14);
sb.append("inputFuture=[");
sb.append(valueOf);
sb.append("]");
String sb2 = sb.toString();
if (scheduledFuture == null) {
return sb2;
}
long delay = scheduledFuture.getDelay(TimeUnit.MILLISECONDS);
if (delay <= 0) {
return sb2;
}
String valueOf2 = String.valueOf(sb2);
StringBuilder sb3 = new StringBuilder(String.valueOf(valueOf2).length() + 43);
sb3.append(valueOf2);
sb3.append(", remaining delay=[");
sb3.append(delay);
sb3.append(" ms]");
return sb3.toString();
}
/* access modifiers changed from: protected */
public void afterDone() {
maybePropagateCancellationTo(this.delegateRef);
ScheduledFuture<?> scheduledFuture = this.timer;
if (scheduledFuture != null) {
scheduledFuture.cancel(false);
}
this.delegateRef = null;
this.timer = null;
}
}
Download file