Initial import of ADIF API reverse-engineering toolkit

This commit is contained in:
2025-12-16 08:37:56 +01:00
commit 60388529c1
11486 changed files with 1086536 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
package com.google.firebase.remoteconfig;
import java.util.Set;
/* loaded from: classes3.dex */
final class AutoValue_ConfigUpdate extends ConfigUpdate {
private final Set<String> updatedKeys;
public AutoValue_ConfigUpdate(Set<String> set) {
if (set == null) {
throw new NullPointerException("Null updatedKeys");
}
this.updatedKeys = set;
}
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (obj instanceof ConfigUpdate) {
return this.updatedKeys.equals(((ConfigUpdate) obj).getUpdatedKeys());
}
return false;
}
@Override // com.google.firebase.remoteconfig.ConfigUpdate
public Set<String> getUpdatedKeys() {
return this.updatedKeys;
}
public int hashCode() {
return this.updatedKeys.hashCode() ^ 1000003;
}
public String toString() {
return "ConfigUpdate{updatedKeys=" + this.updatedKeys + "}";
}
}

View File

@@ -0,0 +1,9 @@
package com.google.firebase.remoteconfig;
/* loaded from: classes3.dex */
public final class BuildConfig {
public static final String BUILD_TYPE = "release";
public static final boolean DEBUG = false;
public static final String LIBRARY_PACKAGE_NAME = "com.google.firebase.remoteconfig";
public static final String VERSION_NAME = "21.6.0";
}

View File

@@ -0,0 +1,14 @@
package com.google.firebase.remoteconfig;
import com.google.auto.value.AutoValue;
import java.util.Set;
@AutoValue
/* loaded from: classes3.dex */
public abstract class ConfigUpdate {
public static ConfigUpdate create(Set<String> set) {
return new AutoValue_ConfigUpdate(set);
}
public abstract Set<String> getUpdatedKeys();
}

View File

@@ -0,0 +1,8 @@
package com.google.firebase.remoteconfig;
/* loaded from: classes3.dex */
public interface ConfigUpdateListener {
void onError(FirebaseRemoteConfigException firebaseRemoteConfigException);
void onUpdate(ConfigUpdate configUpdate);
}

View File

@@ -0,0 +1,6 @@
package com.google.firebase.remoteconfig;
/* loaded from: classes3.dex */
public interface ConfigUpdateListenerRegistration {
void remove();
}

View File

@@ -0,0 +1,288 @@
package com.google.firebase.remoteconfig;
import B0.C0031i;
import B0.w;
import I2.k;
import android.content.Context;
import android.util.Log;
import com.google.android.gms.tasks.Task;
import com.google.android.gms.tasks.Tasks;
import com.google.firebase.FirebaseApp;
import com.google.firebase.abt.AbtException;
import com.google.firebase.abt.FirebaseABTesting;
import com.google.firebase.concurrent.FirebaseExecutors;
import com.google.firebase.installations.FirebaseInstallationsApi;
import com.google.firebase.remoteconfig.internal.ConfigCacheClient;
import com.google.firebase.remoteconfig.internal.ConfigContainer;
import com.google.firebase.remoteconfig.internal.ConfigFetchHandler;
import com.google.firebase.remoteconfig.internal.ConfigGetParameterHandler;
import com.google.firebase.remoteconfig.internal.ConfigMetadataClient;
import com.google.firebase.remoteconfig.internal.ConfigRealtimeHandler;
import com.google.firebase.remoteconfig.internal.DefaultsXmlParser;
import com.google.firebase.remoteconfig.internal.rollouts.RolloutsStateSubscriptionsHandler;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Executor;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/* loaded from: classes3.dex */
public class FirebaseRemoteConfig {
public static final boolean DEFAULT_VALUE_FOR_BOOLEAN = false;
public static final byte[] DEFAULT_VALUE_FOR_BYTE_ARRAY = new byte[0];
public static final double DEFAULT_VALUE_FOR_DOUBLE = 0.0d;
public static final long DEFAULT_VALUE_FOR_LONG = 0;
public static final String DEFAULT_VALUE_FOR_STRING = "";
public static final int LAST_FETCH_STATUS_FAILURE = 1;
public static final int LAST_FETCH_STATUS_NO_FETCH_YET = 0;
public static final int LAST_FETCH_STATUS_SUCCESS = -1;
public static final int LAST_FETCH_STATUS_THROTTLED = 2;
public static final String TAG = "FirebaseRemoteConfig";
public static final int VALUE_SOURCE_DEFAULT = 1;
public static final int VALUE_SOURCE_REMOTE = 2;
public static final int VALUE_SOURCE_STATIC = 0;
private final ConfigCacheClient activatedConfigsCache;
private final ConfigRealtimeHandler configRealtimeHandler;
private final Context context;
private final ConfigCacheClient defaultConfigsCache;
private final Executor executor;
private final ConfigFetchHandler fetchHandler;
private final ConfigCacheClient fetchedConfigsCache;
private final FirebaseABTesting firebaseAbt;
private final FirebaseApp firebaseApp;
private final FirebaseInstallationsApi firebaseInstallations;
private final ConfigMetadataClient frcMetadata;
private final ConfigGetParameterHandler getHandler;
private final RolloutsStateSubscriptionsHandler rolloutsStateSubscriptionsHandler;
public FirebaseRemoteConfig(Context context, FirebaseApp firebaseApp, FirebaseInstallationsApi firebaseInstallationsApi, FirebaseABTesting firebaseABTesting, Executor executor, ConfigCacheClient configCacheClient, ConfigCacheClient configCacheClient2, ConfigCacheClient configCacheClient3, ConfigFetchHandler configFetchHandler, ConfigGetParameterHandler configGetParameterHandler, ConfigMetadataClient configMetadataClient, ConfigRealtimeHandler configRealtimeHandler, RolloutsStateSubscriptionsHandler rolloutsStateSubscriptionsHandler) {
this.context = context;
this.firebaseApp = firebaseApp;
this.firebaseInstallations = firebaseInstallationsApi;
this.firebaseAbt = firebaseABTesting;
this.executor = executor;
this.fetchedConfigsCache = configCacheClient;
this.activatedConfigsCache = configCacheClient2;
this.defaultConfigsCache = configCacheClient3;
this.fetchHandler = configFetchHandler;
this.getHandler = configGetParameterHandler;
this.frcMetadata = configMetadataClient;
this.configRealtimeHandler = configRealtimeHandler;
this.rolloutsStateSubscriptionsHandler = rolloutsStateSubscriptionsHandler;
}
public static FirebaseRemoteConfig getInstance() {
return getInstance(FirebaseApp.getInstance());
}
private static boolean isFetchedFresh(ConfigContainer configContainer, ConfigContainer configContainer2) {
return configContainer2 == null || !configContainer.getFetchTime().equals(configContainer2.getFetchTime());
}
public /* synthetic */ Task lambda$activate$2(Task task, Task task2, Task task3) throws Exception {
if (!task.isSuccessful() || task.getResult() == null) {
return Tasks.forResult(Boolean.FALSE);
}
ConfigContainer configContainer = (ConfigContainer) task.getResult();
return (!task2.isSuccessful() || isFetchedFresh(configContainer, (ConfigContainer) task2.getResult())) ? this.activatedConfigsCache.put(configContainer).continueWith(this.executor, new a(this)) : Tasks.forResult(Boolean.FALSE);
}
public static /* synthetic */ FirebaseRemoteConfigInfo lambda$ensureInitialized$0(Task task, Task task2) throws Exception {
return (FirebaseRemoteConfigInfo) task.getResult();
}
public static /* synthetic */ Task lambda$fetch$3(ConfigFetchHandler.FetchResponse fetchResponse) throws Exception {
return Tasks.forResult(null);
}
public static /* synthetic */ Task lambda$fetch$4(ConfigFetchHandler.FetchResponse fetchResponse) throws Exception {
return Tasks.forResult(null);
}
public /* synthetic */ Task lambda$fetchAndActivate$1(Void r12) throws Exception {
return activate();
}
public /* synthetic */ Void lambda$reset$6() throws Exception {
this.activatedConfigsCache.clear();
this.fetchedConfigsCache.clear();
this.defaultConfigsCache.clear();
this.frcMetadata.clear();
return null;
}
public /* synthetic */ Void lambda$setConfigSettingsAsync$5(FirebaseRemoteConfigSettings firebaseRemoteConfigSettings) throws Exception {
this.frcMetadata.setConfigSettings(firebaseRemoteConfigSettings);
return null;
}
public static /* synthetic */ Task lambda$setDefaultsWithStringsMapAsync$7(ConfigContainer configContainer) throws Exception {
return Tasks.forResult(null);
}
public boolean processActivatePutTask(Task<ConfigContainer> task) {
if (!task.isSuccessful()) {
return false;
}
this.fetchedConfigsCache.clear();
ConfigContainer result = task.getResult();
if (result == null) {
Log.e(TAG, "Activated configs written to disk are null.");
return true;
}
updateAbtWithActivatedExperiments(result.getAbtExperiments());
this.rolloutsStateSubscriptionsHandler.publishActiveRolloutsState(result);
return true;
}
private Task<Void> setDefaultsWithStringsMapAsync(Map<String, String> map) {
try {
return this.defaultConfigsCache.put(ConfigContainer.newBuilder().replaceConfigsWith(map).build()).onSuccessTask(FirebaseExecutors.directExecutor(), new w(17));
} catch (JSONException e4) {
Log.e(TAG, "The provided defaults map could not be processed.", e4);
return Tasks.forResult(null);
}
}
public static List<Map<String, String>> toExperimentInfoMaps(JSONArray jSONArray) throws JSONException {
ArrayList arrayList = new ArrayList();
for (int i = 0; i < jSONArray.length(); i++) {
HashMap hashMap = new HashMap();
JSONObject jSONObject = jSONArray.getJSONObject(i);
Iterator<String> keys = jSONObject.keys();
while (keys.hasNext()) {
String next = keys.next();
hashMap.put(next, jSONObject.getString(next));
}
arrayList.add(hashMap);
}
return arrayList;
}
public Task<Boolean> activate() {
Task<ConfigContainer> task = this.fetchedConfigsCache.get();
Task<ConfigContainer> task2 = this.activatedConfigsCache.get();
return Tasks.whenAllComplete((Task<?>[]) new Task[]{task, task2}).continueWithTask(this.executor, new C0031i(this, task, task2, 2));
}
public ConfigUpdateListenerRegistration addOnConfigUpdateListener(ConfigUpdateListener configUpdateListener) {
return this.configRealtimeHandler.addRealtimeConfigUpdateListener(configUpdateListener);
}
public Task<FirebaseRemoteConfigInfo> ensureInitialized() {
Task<ConfigContainer> task = this.activatedConfigsCache.get();
Task<ConfigContainer> task2 = this.defaultConfigsCache.get();
Task<ConfigContainer> task3 = this.fetchedConfigsCache.get();
Task call = Tasks.call(this.executor, new b(this, 1));
return Tasks.whenAllComplete((Task<?>[]) new Task[]{task, task2, task3, call, this.firebaseInstallations.getId(), this.firebaseInstallations.getToken(false)}).continueWith(this.executor, new k(call, 19));
}
public Task<Void> fetch() {
return this.fetchHandler.fetch().onSuccessTask(FirebaseExecutors.directExecutor(), new w(19));
}
public Task<Boolean> fetchAndActivate() {
return fetch().onSuccessTask(this.executor, new a(this));
}
public Map<String, FirebaseRemoteConfigValue> getAll() {
return this.getHandler.getAll();
}
public boolean getBoolean(String str) {
return this.getHandler.getBoolean(str);
}
public double getDouble(String str) {
return this.getHandler.getDouble(str);
}
public FirebaseRemoteConfigInfo getInfo() {
return this.frcMetadata.getInfo();
}
public Set<String> getKeysByPrefix(String str) {
return this.getHandler.getKeysByPrefix(str);
}
public long getLong(String str) {
return this.getHandler.getLong(str);
}
public RolloutsStateSubscriptionsHandler getRolloutsStateSubscriptionsHandler() {
return this.rolloutsStateSubscriptionsHandler;
}
public String getString(String str) {
return this.getHandler.getString(str);
}
public FirebaseRemoteConfigValue getValue(String str) {
return this.getHandler.getValue(str);
}
public Task<Void> reset() {
return Tasks.call(this.executor, new b(this, 0));
}
public void schedule(Runnable runnable) {
this.executor.execute(runnable);
}
public Task<Void> setConfigSettingsAsync(FirebaseRemoteConfigSettings firebaseRemoteConfigSettings) {
return Tasks.call(this.executor, new com.google.firebase.crashlytics.internal.metadata.a(1, this, firebaseRemoteConfigSettings));
}
public void setConfigUpdateBackgroundState(boolean z3) {
this.configRealtimeHandler.setBackgroundState(z3);
}
public Task<Void> setDefaultsAsync(Map<String, Object> map) {
HashMap hashMap = new HashMap();
for (Map.Entry<String, Object> entry : map.entrySet()) {
Object value = entry.getValue();
if (value instanceof byte[]) {
hashMap.put(entry.getKey(), new String((byte[]) value));
} else {
hashMap.put(entry.getKey(), value.toString());
}
}
return setDefaultsWithStringsMapAsync(hashMap);
}
public void startLoadingConfigsFromDisk() {
this.activatedConfigsCache.get();
this.defaultConfigsCache.get();
this.fetchedConfigsCache.get();
}
public void updateAbtWithActivatedExperiments(JSONArray jSONArray) {
if (this.firebaseAbt == null) {
return;
}
try {
this.firebaseAbt.replaceAllExperiments(toExperimentInfoMaps(jSONArray));
} catch (AbtException e4) {
Log.w(TAG, "Could not update ABT experiments.", e4);
} catch (JSONException e5) {
Log.e(TAG, "Could not parse ABT experiments from the JSON response.", e5);
}
}
public static FirebaseRemoteConfig getInstance(FirebaseApp firebaseApp) {
return ((RemoteConfigComponent) firebaseApp.get(RemoteConfigComponent.class)).getDefault();
}
public Task<Void> fetch(long j4) {
return this.fetchHandler.fetch(j4).onSuccessTask(FirebaseExecutors.directExecutor(), new w(18));
}
public Task<Void> setDefaultsAsync(int i) {
return setDefaultsWithStringsMapAsync(DefaultsXmlParser.getDefaultsFromXml(this.context, i));
}
}

View File

@@ -0,0 +1,22 @@
package com.google.firebase.remoteconfig;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigException;
/* loaded from: classes3.dex */
public class FirebaseRemoteConfigClientException extends FirebaseRemoteConfigException {
public FirebaseRemoteConfigClientException(String str) {
super(str);
}
public FirebaseRemoteConfigClientException(String str, Throwable th) {
super(str, th);
}
public FirebaseRemoteConfigClientException(String str, FirebaseRemoteConfigException.Code code) {
super(str, code);
}
public FirebaseRemoteConfigClientException(String str, Throwable th, FirebaseRemoteConfigException.Code code) {
super(str, th, code);
}
}

View File

@@ -0,0 +1,51 @@
package com.google.firebase.remoteconfig;
import com.google.firebase.FirebaseException;
/* loaded from: classes3.dex */
public class FirebaseRemoteConfigException extends FirebaseException {
private final Code code;
/* loaded from: classes3.dex */
public enum Code {
UNKNOWN(0),
CONFIG_UPDATE_STREAM_ERROR(1),
CONFIG_UPDATE_MESSAGE_INVALID(2),
CONFIG_UPDATE_NOT_FETCHED(3),
CONFIG_UPDATE_UNAVAILABLE(4);
private final int value;
Code(int i) {
this.value = i;
}
public int value() {
return this.value;
}
}
public FirebaseRemoteConfigException(String str) {
super(str);
this.code = Code.UNKNOWN;
}
public Code getCode() {
return this.code;
}
public FirebaseRemoteConfigException(String str, Throwable th) {
super(str, th);
this.code = Code.UNKNOWN;
}
public FirebaseRemoteConfigException(String str, Code code) {
super(str);
this.code = code;
}
public FirebaseRemoteConfigException(String str, Throwable th, Code code) {
super(str, th);
this.code = code;
}
}

View File

@@ -0,0 +1,19 @@
package com.google.firebase.remoteconfig;
/* loaded from: classes3.dex */
public class FirebaseRemoteConfigFetchThrottledException extends FirebaseRemoteConfigException {
private final long throttleEndTimeMillis;
public FirebaseRemoteConfigFetchThrottledException(long j4) {
this("Fetch was throttled.", j4);
}
public long getThrottleEndTimeMillis() {
return this.throttleEndTimeMillis;
}
public FirebaseRemoteConfigFetchThrottledException(String str, long j4) {
super(str);
this.throttleEndTimeMillis = j4;
}
}

View File

@@ -0,0 +1,10 @@
package com.google.firebase.remoteconfig;
/* loaded from: classes3.dex */
public interface FirebaseRemoteConfigInfo {
FirebaseRemoteConfigSettings getConfigSettings();
long getFetchTimeMillis();
int getLastFetchStatus();
}

View File

@@ -0,0 +1,18 @@
package com.google.firebase.remoteconfig;
import androidx.annotation.Keep;
import com.google.firebase.components.Component;
import com.google.firebase.components.ComponentRegistrar;
import java.util.List;
import kotlin.Metadata;
import kotlin.collections.CollectionsKt;
@Keep
@Metadata(d1 = {"\u0000\u0016\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010 \n\u0002\u0018\u0002\n\u0000\b\u0007\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002J\u0012\u0010\u0003\u001a\f\u0012\b\u0012\u0006\u0012\u0002\b\u00030\u00050\u0004H\u0016¨\u0006\u0006"}, d2 = {"Lcom/google/firebase/remoteconfig/FirebaseRemoteConfigKtxRegistrar;", "Lcom/google/firebase/components/ComponentRegistrar;", "()V", "getComponents", "", "Lcom/google/firebase/components/Component;", "com.google.firebase-firebase-config"}, k = 1, mv = {1, 7, 1}, xi = 48)
/* loaded from: classes3.dex */
public final class FirebaseRemoteConfigKtxRegistrar implements ComponentRegistrar {
@Override // com.google.firebase.components.ComponentRegistrar
public List<Component<?>> getComponents() {
return CollectionsKt.emptyList();
}
}

View File

@@ -0,0 +1,42 @@
package com.google.firebase.remoteconfig;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigException;
/* loaded from: classes3.dex */
public class FirebaseRemoteConfigServerException extends FirebaseRemoteConfigException {
private final int httpStatusCode;
public FirebaseRemoteConfigServerException(int i, String str) {
super(str);
this.httpStatusCode = i;
}
public int getHttpStatusCode() {
return this.httpStatusCode;
}
public FirebaseRemoteConfigServerException(int i, String str, Throwable th) {
super(str, th);
this.httpStatusCode = i;
}
public FirebaseRemoteConfigServerException(String str, FirebaseRemoteConfigException.Code code) {
super(str, code);
this.httpStatusCode = -1;
}
public FirebaseRemoteConfigServerException(int i, String str, FirebaseRemoteConfigException.Code code) {
super(str, code);
this.httpStatusCode = i;
}
public FirebaseRemoteConfigServerException(String str, Throwable th, FirebaseRemoteConfigException.Code code) {
super(str, th, code);
this.httpStatusCode = -1;
}
public FirebaseRemoteConfigServerException(int i, String str, Throwable th, FirebaseRemoteConfigException.Code code) {
super(str, th, code);
this.httpStatusCode = i;
}
}

View File

@@ -0,0 +1,63 @@
package com.google.firebase.remoteconfig;
import com.google.firebase.remoteconfig.internal.ConfigFetchHandler;
/* loaded from: classes3.dex */
public class FirebaseRemoteConfigSettings {
private final long fetchTimeoutInSeconds;
private final long minimumFetchInterval;
/* loaded from: classes3.dex */
public static class Builder {
private long fetchTimeoutInSeconds = 60;
private long minimumFetchInterval = ConfigFetchHandler.DEFAULT_MINIMUM_FETCH_INTERVAL_IN_SECONDS;
public FirebaseRemoteConfigSettings build() {
return new FirebaseRemoteConfigSettings(this);
}
public long getFetchTimeoutInSeconds() {
return this.fetchTimeoutInSeconds;
}
public long getMinimumFetchIntervalInSeconds() {
return this.minimumFetchInterval;
}
public Builder setFetchTimeoutInSeconds(long j4) throws IllegalArgumentException {
if (j4 < 0) {
throw new IllegalArgumentException(String.format("Fetch connection timeout has to be a non-negative number. %d is an invalid argument", Long.valueOf(j4)));
}
this.fetchTimeoutInSeconds = j4;
return this;
}
public Builder setMinimumFetchIntervalInSeconds(long j4) {
if (j4 >= 0) {
this.minimumFetchInterval = j4;
return this;
}
throw new IllegalArgumentException("Minimum interval between fetches has to be a non-negative number. " + j4 + " is an invalid argument");
}
}
public long getFetchTimeoutInSeconds() {
return this.fetchTimeoutInSeconds;
}
public long getMinimumFetchIntervalInSeconds() {
return this.minimumFetchInterval;
}
public Builder toBuilder() {
Builder builder = new Builder();
builder.setFetchTimeoutInSeconds(getFetchTimeoutInSeconds());
builder.setMinimumFetchIntervalInSeconds(getMinimumFetchIntervalInSeconds());
return builder;
}
private FirebaseRemoteConfigSettings(Builder builder) {
this.fetchTimeoutInSeconds = builder.fetchTimeoutInSeconds;
this.minimumFetchInterval = builder.minimumFetchInterval;
}
}

View File

@@ -0,0 +1,16 @@
package com.google.firebase.remoteconfig;
/* loaded from: classes3.dex */
public interface FirebaseRemoteConfigValue {
boolean asBoolean() throws IllegalArgumentException;
byte[] asByteArray();
double asDouble() throws IllegalArgumentException;
long asLong() throws IllegalArgumentException;
String asString();
int getSource();
}

View File

@@ -0,0 +1,290 @@
package com.google.firebase.remoteconfig;
/* loaded from: classes3.dex */
public final class R {
/* loaded from: classes3.dex */
public static final class attr {
public static final int alpha = 0x7f030031;
public static final int coordinatorLayoutStyle = 0x7f03016c;
public static final int font = 0x7f03022d;
public static final int fontProviderAuthority = 0x7f03022f;
public static final int fontProviderCerts = 0x7f030230;
public static final int fontProviderFetchStrategy = 0x7f030231;
public static final int fontProviderFetchTimeout = 0x7f030232;
public static final int fontProviderPackage = 0x7f030233;
public static final int fontProviderQuery = 0x7f030234;
public static final int fontStyle = 0x7f030236;
public static final int fontVariationSettings = 0x7f030237;
public static final int fontWeight = 0x7f030238;
public static final int keylines = 0x7f0302b5;
public static final int layout_anchor = 0x7f0302c6;
public static final int layout_anchorGravity = 0x7f0302c7;
public static final int layout_behavior = 0x7f0302c9;
public static final int layout_dodgeInsetEdges = 0x7f0302fa;
public static final int layout_insetEdge = 0x7f030305;
public static final int layout_keyline = 0x7f030306;
public static final int statusBarBackground = 0x7f030488;
public static final int ttcIndex = 0x7f030559;
private attr() {
}
}
/* loaded from: classes3.dex */
public static final class color {
public static final int notification_action_color_filter = 0x7f050315;
public static final int notification_icon_bg_color = 0x7f050316;
public static final int ripple_material_light = 0x7f050322;
public static final int secondary_text_default_material_light = 0x7f050324;
private color() {
}
}
/* loaded from: classes3.dex */
public static final class dimen {
public static final int compat_button_inset_horizontal_material = 0x7f06006d;
public static final int compat_button_inset_vertical_material = 0x7f06006e;
public static final int compat_button_padding_horizontal_material = 0x7f06006f;
public static final int compat_button_padding_vertical_material = 0x7f060070;
public static final int compat_control_corner_material = 0x7f060071;
public static final int compat_notification_large_icon_max_height = 0x7f060072;
public static final int compat_notification_large_icon_max_width = 0x7f060073;
public static final int notification_action_icon_size = 0x7f060385;
public static final int notification_action_text_size = 0x7f060386;
public static final int notification_big_circle_margin = 0x7f060387;
public static final int notification_content_margin_start = 0x7f060388;
public static final int notification_large_icon_height = 0x7f06038d;
public static final int notification_large_icon_width = 0x7f06038e;
public static final int notification_main_column_padding_top = 0x7f06038f;
public static final int notification_media_narrow_margin = 0x7f060391;
public static final int notification_right_icon_size = 0x7f060393;
public static final int notification_right_side_padding_top = 0x7f060394;
public static final int notification_small_icon_background_padding = 0x7f060395;
public static final int notification_small_icon_size_as_large = 0x7f060396;
public static final int notification_subtext_size = 0x7f060397;
public static final int notification_top_pad = 0x7f06039b;
public static final int notification_top_pad_large_text = 0x7f06039c;
private dimen() {
}
}
/* loaded from: classes3.dex */
public static final class drawable {
public static final int notification_action_background = 0x7f070181;
public static final int notification_bg = 0x7f070182;
public static final int notification_bg_low = 0x7f070183;
public static final int notification_bg_low_normal = 0x7f070184;
public static final int notification_bg_low_pressed = 0x7f070185;
public static final int notification_bg_normal = 0x7f070186;
public static final int notification_bg_normal_pressed = 0x7f070187;
public static final int notification_icon_background = 0x7f070188;
public static final int notification_template_icon_bg = 0x7f07018a;
public static final int notification_template_icon_low_bg = 0x7f07018b;
public static final int notification_tile_bg = 0x7f07018c;
public static final int notify_panel_notification_icon_bg = 0x7f07018d;
private drawable() {
}
}
/* loaded from: classes3.dex */
public static final class id {
public static final int accessibility_action_clickable_span = 0x7f090013;
public static final int accessibility_custom_action_0 = 0x7f090014;
public static final int accessibility_custom_action_1 = 0x7f090015;
public static final int accessibility_custom_action_10 = 0x7f090016;
public static final int accessibility_custom_action_11 = 0x7f090017;
public static final int accessibility_custom_action_12 = 0x7f090018;
public static final int accessibility_custom_action_13 = 0x7f090019;
public static final int accessibility_custom_action_14 = 0x7f09001a;
public static final int accessibility_custom_action_15 = 0x7f09001b;
public static final int accessibility_custom_action_16 = 0x7f09001c;
public static final int accessibility_custom_action_17 = 0x7f09001d;
public static final int accessibility_custom_action_18 = 0x7f09001e;
public static final int accessibility_custom_action_19 = 0x7f09001f;
public static final int accessibility_custom_action_2 = 0x7f090020;
public static final int accessibility_custom_action_20 = 0x7f090021;
public static final int accessibility_custom_action_21 = 0x7f090022;
public static final int accessibility_custom_action_22 = 0x7f090023;
public static final int accessibility_custom_action_23 = 0x7f090024;
public static final int accessibility_custom_action_24 = 0x7f090025;
public static final int accessibility_custom_action_25 = 0x7f090026;
public static final int accessibility_custom_action_26 = 0x7f090027;
public static final int accessibility_custom_action_27 = 0x7f090028;
public static final int accessibility_custom_action_28 = 0x7f090029;
public static final int accessibility_custom_action_29 = 0x7f09002a;
public static final int accessibility_custom_action_3 = 0x7f09002b;
public static final int accessibility_custom_action_30 = 0x7f09002c;
public static final int accessibility_custom_action_31 = 0x7f09002d;
public static final int accessibility_custom_action_4 = 0x7f09002e;
public static final int accessibility_custom_action_5 = 0x7f09002f;
public static final int accessibility_custom_action_6 = 0x7f090030;
public static final int accessibility_custom_action_7 = 0x7f090031;
public static final int accessibility_custom_action_8 = 0x7f090032;
public static final int accessibility_custom_action_9 = 0x7f090033;
public static final int action_container = 0x7f090045;
public static final int action_divider = 0x7f090048;
public static final int action_image = 0x7f09004a;
public static final int action_text = 0x7f090051;
public static final int actions = 0x7f090052;
public static final int async = 0x7f090071;
public static final int blocking = 0x7f090082;
public static final int bottom = 0x7f090083;
public static final int chronometer = 0x7f0900a9;
public static final int dialog_button = 0x7f09010b;
public static final int end = 0x7f090133;
public static final int forever = 0x7f090152;
public static final int icon = 0x7f090195;
public static final int icon_group = 0x7f090196;
public static final int info = 0x7f0901a9;
public static final int italic = 0x7f0901be;
public static final int left = 0x7f0901e2;
public static final int line1 = 0x7f0901e9;
public static final int line3 = 0x7f0901ea;
public static final int none = 0x7f090264;
public static final int normal = 0x7f090265;
public static final int notification_background = 0x7f090269;
public static final int notification_main_column = 0x7f09026a;
public static final int notification_main_column_container = 0x7f09026b;
public static final int right = 0x7f0902cd;
public static final int right_icon = 0x7f0902cf;
public static final int right_side = 0x7f0902d0;
public static final int start = 0x7f090322;
public static final int tag_accessibility_actions = 0x7f09035c;
public static final int tag_accessibility_clickable_spans = 0x7f09035d;
public static final int tag_accessibility_heading = 0x7f09035e;
public static final int tag_accessibility_pane_title = 0x7f09035f;
public static final int tag_screen_reader_focusable = 0x7f090363;
public static final int tag_transition_group = 0x7f090365;
public static final int tag_unhandled_key_event_manager = 0x7f090366;
public static final int tag_unhandled_key_listeners = 0x7f090367;
public static final int text = 0x7f09036d;
public static final int text2 = 0x7f09036e;
public static final int time = 0x7f09038e;
public static final int title = 0x7f090393;
public static final int top = 0x7f0903ac;
private id() {
}
}
/* loaded from: classes3.dex */
public static final class integer {
public static final int google_play_services_version = 0x7f0a0009;
public static final int status_bar_notification_info_maxnum = 0x7f0a0045;
private integer() {
}
}
/* loaded from: classes3.dex */
public static final class layout {
public static final int custom_dialog = 0x7f0c0026;
public static final int notification_action = 0x7f0c00a8;
public static final int notification_action_tombstone = 0x7f0c00a9;
public static final int notification_template_custom_big = 0x7f0c00aa;
public static final int notification_template_icon_group = 0x7f0c00ab;
public static final int notification_template_part_chronometer = 0x7f0c00ac;
public static final int notification_template_part_time = 0x7f0c00ad;
private layout() {
}
}
/* loaded from: classes3.dex */
public static final class raw {
public static final int firebase_common_keep = 0x7f120000;
private raw() {
}
}
/* loaded from: classes3.dex */
public static final class string {
public static final int common_google_play_services_unknown_issue = 0x7f1300bc;
public static final int status_bar_notification_info_overflow = 0x7f13023b;
private string() {
}
}
/* loaded from: classes3.dex */
public static final class style {
public static final int TextAppearance_Compat_Notification = 0x7f1401fb;
public static final int TextAppearance_Compat_Notification_Info = 0x7f1401fc;
public static final int TextAppearance_Compat_Notification_Line2 = 0x7f1401fd;
public static final int TextAppearance_Compat_Notification_Time = 0x7f1401fe;
public static final int TextAppearance_Compat_Notification_Title = 0x7f1401ff;
public static final int Widget_Compat_NotificationActionContainer = 0x7f1403a1;
public static final int Widget_Compat_NotificationActionText = 0x7f1403a2;
public static final int Widget_Support_CoordinatorLayout = 0x7f1404d7;
private style() {
}
}
/* loaded from: classes3.dex */
public static final class styleable {
public static final int ColorStateListItem_alpha = 0x00000003;
public static final int ColorStateListItem_android_alpha = 0x00000001;
public static final int ColorStateListItem_android_color = 0x00000000;
public static final int ColorStateListItem_android_lStar = 0x00000002;
public static final int ColorStateListItem_lStar = 0x00000004;
public static final int CoordinatorLayout_Layout_android_layout_gravity = 0x00000000;
public static final int CoordinatorLayout_Layout_layout_anchor = 0x00000001;
public static final int CoordinatorLayout_Layout_layout_anchorGravity = 0x00000002;
public static final int CoordinatorLayout_Layout_layout_behavior = 0x00000003;
public static final int CoordinatorLayout_Layout_layout_dodgeInsetEdges = 0x00000004;
public static final int CoordinatorLayout_Layout_layout_insetEdge = 0x00000005;
public static final int CoordinatorLayout_Layout_layout_keyline = 0x00000006;
public static final int CoordinatorLayout_keylines = 0x00000000;
public static final int CoordinatorLayout_statusBarBackground = 0x00000001;
public static final int FontFamilyFont_android_font = 0x00000000;
public static final int FontFamilyFont_android_fontStyle = 0x00000002;
public static final int FontFamilyFont_android_fontVariationSettings = 0x00000004;
public static final int FontFamilyFont_android_fontWeight = 0x00000001;
public static final int FontFamilyFont_android_ttcIndex = 0x00000003;
public static final int FontFamilyFont_font = 0x00000005;
public static final int FontFamilyFont_fontStyle = 0x00000006;
public static final int FontFamilyFont_fontVariationSettings = 0x00000007;
public static final int FontFamilyFont_fontWeight = 0x00000008;
public static final int FontFamilyFont_ttcIndex = 0x00000009;
public static final int FontFamily_fontProviderAuthority = 0x00000000;
public static final int FontFamily_fontProviderCerts = 0x00000001;
public static final int FontFamily_fontProviderFetchStrategy = 0x00000002;
public static final int FontFamily_fontProviderFetchTimeout = 0x00000003;
public static final int FontFamily_fontProviderPackage = 0x00000004;
public static final int FontFamily_fontProviderQuery = 0x00000005;
public static final int FontFamily_fontProviderSystemFontFamily = 0x00000006;
public static final int GradientColorItem_android_color = 0x00000000;
public static final int GradientColorItem_android_offset = 0x00000001;
public static final int GradientColor_android_centerColor = 0x00000007;
public static final int GradientColor_android_centerX = 0x00000003;
public static final int GradientColor_android_centerY = 0x00000004;
public static final int GradientColor_android_endColor = 0x00000001;
public static final int GradientColor_android_endX = 0x0000000a;
public static final int GradientColor_android_endY = 0x0000000b;
public static final int GradientColor_android_gradientRadius = 0x00000005;
public static final int GradientColor_android_startColor = 0x00000000;
public static final int GradientColor_android_startX = 0x00000008;
public static final int GradientColor_android_startY = 0x00000009;
public static final int GradientColor_android_tileMode = 0x00000006;
public static final int GradientColor_android_type = 0x00000002;
public static final int[] ColorStateListItem = {android.R.attr.color, android.R.attr.alpha, 16844359, com.adif.elcanomovil.R.attr.alpha, com.adif.elcanomovil.R.attr.lStar};
public static final int[] CoordinatorLayout = {com.adif.elcanomovil.R.attr.keylines, com.adif.elcanomovil.R.attr.statusBarBackground};
public static final int[] CoordinatorLayout_Layout = {android.R.attr.layout_gravity, com.adif.elcanomovil.R.attr.layout_anchor, com.adif.elcanomovil.R.attr.layout_anchorGravity, com.adif.elcanomovil.R.attr.layout_behavior, com.adif.elcanomovil.R.attr.layout_dodgeInsetEdges, com.adif.elcanomovil.R.attr.layout_insetEdge, com.adif.elcanomovil.R.attr.layout_keyline};
public static final int[] FontFamily = {com.adif.elcanomovil.R.attr.fontProviderAuthority, com.adif.elcanomovil.R.attr.fontProviderCerts, com.adif.elcanomovil.R.attr.fontProviderFetchStrategy, com.adif.elcanomovil.R.attr.fontProviderFetchTimeout, com.adif.elcanomovil.R.attr.fontProviderPackage, com.adif.elcanomovil.R.attr.fontProviderQuery, com.adif.elcanomovil.R.attr.fontProviderSystemFontFamily};
public static final int[] FontFamilyFont = {android.R.attr.font, android.R.attr.fontWeight, android.R.attr.fontStyle, android.R.attr.ttcIndex, android.R.attr.fontVariationSettings, com.adif.elcanomovil.R.attr.font, com.adif.elcanomovil.R.attr.fontStyle, com.adif.elcanomovil.R.attr.fontVariationSettings, com.adif.elcanomovil.R.attr.fontWeight, com.adif.elcanomovil.R.attr.ttcIndex};
public static final int[] GradientColor = {android.R.attr.startColor, android.R.attr.endColor, android.R.attr.type, android.R.attr.centerX, android.R.attr.centerY, android.R.attr.gradientRadius, android.R.attr.tileMode, android.R.attr.centerColor, android.R.attr.startX, android.R.attr.startY, android.R.attr.endX, android.R.attr.endY};
public static final int[] GradientColorItem = {android.R.attr.color, android.R.attr.offset};
private styleable() {
}
}
private R() {
}
}

View File

@@ -0,0 +1,259 @@
package com.google.firebase.remoteconfig;
import C.w;
import android.app.Application;
import android.content.Context;
import com.google.android.gms.common.annotation.KeepForSdk;
import com.google.android.gms.common.api.internal.BackgroundDetector;
import com.google.android.gms.common.util.BiConsumer;
import com.google.android.gms.common.util.Clock;
import com.google.android.gms.common.util.DefaultClock;
import com.google.android.gms.tasks.Tasks;
import com.google.firebase.FirebaseApp;
import com.google.firebase.abt.FirebaseABTesting;
import com.google.firebase.analytics.connector.AnalyticsConnector;
import com.google.firebase.annotations.concurrent.Blocking;
import com.google.firebase.concurrent.g;
import com.google.firebase.inject.Provider;
import com.google.firebase.installations.FirebaseInstallationsApi;
import com.google.firebase.remoteconfig.internal.ConfigCacheClient;
import com.google.firebase.remoteconfig.internal.ConfigContainer;
import com.google.firebase.remoteconfig.internal.ConfigFetchHandler;
import com.google.firebase.remoteconfig.internal.ConfigFetchHttpClient;
import com.google.firebase.remoteconfig.internal.ConfigGetParameterHandler;
import com.google.firebase.remoteconfig.internal.ConfigMetadataClient;
import com.google.firebase.remoteconfig.internal.ConfigRealtimeHandler;
import com.google.firebase.remoteconfig.internal.ConfigStorageClient;
import com.google.firebase.remoteconfig.internal.Personalization;
import com.google.firebase.remoteconfig.internal.rollouts.RolloutsStateFactory;
import com.google.firebase.remoteconfig.internal.rollouts.RolloutsStateSubscriptionsHandler;
import com.google.firebase.remoteconfig.interop.FirebaseRemoteConfigInterop;
import com.google.firebase.remoteconfig.interop.rollouts.RolloutsStateSubscriber;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.Executor;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.atomic.AtomicReference;
@KeepForSdk
/* loaded from: classes3.dex */
public class RemoteConfigComponent implements FirebaseRemoteConfigInterop {
public static final String ACTIVATE_FILE_NAME = "activate";
public static final long CONNECTION_TIMEOUT_IN_SECONDS = 60;
public static final String DEFAULTS_FILE_NAME = "defaults";
public static final String DEFAULT_NAMESPACE = "firebase";
public static final String FETCH_FILE_NAME = "fetch";
private static final String FIREBASE_REMOTE_CONFIG_FILE_NAME_PREFIX = "frc";
private static final String PREFERENCES_FILE_NAME = "settings";
private final Provider<AnalyticsConnector> analyticsConnector;
private final String appId;
private final Context context;
private Map<String, String> customHeaders;
private final ScheduledExecutorService executor;
private final FirebaseABTesting firebaseAbt;
private final FirebaseApp firebaseApp;
private final FirebaseInstallationsApi firebaseInstallations;
private final Map<String, FirebaseRemoteConfig> frcNamespaceInstances;
private static final Clock DEFAULT_CLOCK = DefaultClock.getInstance();
private static final Random DEFAULT_RANDOM = new Random();
private static final Map<String, FirebaseRemoteConfig> frcNamespaceInstancesStatic = new HashMap();
/* loaded from: classes3.dex */
public static class GlobalBackgroundListener implements BackgroundDetector.BackgroundStateChangeListener {
private static final AtomicReference<GlobalBackgroundListener> INSTANCE = new AtomicReference<>();
private GlobalBackgroundListener() {
}
public static void ensureBackgroundListenerIsRegistered(Context context) {
Application application = (Application) context.getApplicationContext();
AtomicReference<GlobalBackgroundListener> atomicReference = INSTANCE;
if (atomicReference.get() == null) {
GlobalBackgroundListener globalBackgroundListener = new GlobalBackgroundListener();
while (!atomicReference.compareAndSet(null, globalBackgroundListener)) {
if (atomicReference.get() != null) {
return;
}
}
BackgroundDetector.initialize(application);
BackgroundDetector.getInstance().addListener(globalBackgroundListener);
}
}
@Override // com.google.android.gms.common.api.internal.BackgroundDetector.BackgroundStateChangeListener
public void onBackgroundStateChanged(boolean z3) {
RemoteConfigComponent.notifyRCInstances(z3);
}
}
public RemoteConfigComponent(Context context, @Blocking ScheduledExecutorService scheduledExecutorService, FirebaseApp firebaseApp, FirebaseInstallationsApi firebaseInstallationsApi, FirebaseABTesting firebaseABTesting, Provider<AnalyticsConnector> provider) {
this(context, scheduledExecutorService, firebaseApp, firebaseInstallationsApi, firebaseABTesting, provider, true);
}
private ConfigCacheClient getCacheClient(String str, String str2) {
String str3 = this.appId;
StringBuilder sb = new StringBuilder("frc_");
sb.append(str3);
sb.append("_");
sb.append(str);
sb.append("_");
return ConfigCacheClient.getInstance(this.executor, ConfigStorageClient.getInstance(this.context, w.r(sb, str2, ".json")));
}
private ConfigGetParameterHandler getGetHandler(ConfigCacheClient configCacheClient, ConfigCacheClient configCacheClient2) {
return new ConfigGetParameterHandler(this.executor, configCacheClient, configCacheClient2);
}
public static ConfigMetadataClient getMetadataClient(Context context, String str, String str2) {
return new ConfigMetadataClient(context.getSharedPreferences("frc_" + str + "_" + str2 + "_settings", 0));
}
private static Personalization getPersonalization(FirebaseApp firebaseApp, String str, Provider<AnalyticsConnector> provider) {
if (isPrimaryApp(firebaseApp) && str.equals(DEFAULT_NAMESPACE)) {
return new Personalization(provider);
}
return null;
}
private RolloutsStateSubscriptionsHandler getRolloutsStateSubscriptionsHandler(ConfigCacheClient configCacheClient, ConfigGetParameterHandler configGetParameterHandler) {
return new RolloutsStateSubscriptionsHandler(configCacheClient, RolloutsStateFactory.create(configGetParameterHandler), this.executor);
}
private static boolean isAbtSupported(FirebaseApp firebaseApp, String str) {
return str.equals(DEFAULT_NAMESPACE) && isPrimaryApp(firebaseApp);
}
private static boolean isPrimaryApp(FirebaseApp firebaseApp) {
return firebaseApp.getName().equals(FirebaseApp.DEFAULT_APP_NAME);
}
public static /* synthetic */ AnalyticsConnector lambda$getFetchHandler$0() {
return null;
}
public static synchronized void notifyRCInstances(boolean z3) {
synchronized (RemoteConfigComponent.class) {
Iterator<FirebaseRemoteConfig> it = frcNamespaceInstancesStatic.values().iterator();
while (it.hasNext()) {
it.next().setConfigUpdateBackgroundState(z3);
}
}
}
@KeepForSdk
public synchronized FirebaseRemoteConfig get(String str) {
Throwable th;
RemoteConfigComponent remoteConfigComponent;
ConfigCacheClient cacheClient;
ConfigCacheClient cacheClient2;
ConfigCacheClient cacheClient3;
ConfigMetadataClient metadataClient;
ConfigGetParameterHandler getHandler;
try {
try {
cacheClient = getCacheClient(str, FETCH_FILE_NAME);
cacheClient2 = getCacheClient(str, ACTIVATE_FILE_NAME);
cacheClient3 = getCacheClient(str, DEFAULTS_FILE_NAME);
metadataClient = getMetadataClient(this.context, this.appId, str);
getHandler = getGetHandler(cacheClient2, cacheClient3);
final Personalization personalization = getPersonalization(this.firebaseApp, str, this.analyticsConnector);
if (personalization != null) {
try {
getHandler.addListener(new BiConsumer() { // from class: com.google.firebase.remoteconfig.c
@Override // com.google.android.gms.common.util.BiConsumer
public final void accept(Object obj, Object obj2) {
Personalization.this.logArmActive((String) obj, (ConfigContainer) obj2);
}
});
} catch (Throwable th2) {
th = th2;
remoteConfigComponent = this;
throw th;
}
}
} catch (Throwable th3) {
th = th3;
remoteConfigComponent = this;
th = th;
throw th;
}
} catch (Throwable th4) {
th = th4;
}
return get(this.firebaseApp, str, this.firebaseInstallations, this.firebaseAbt, this.executor, cacheClient, cacheClient2, cacheClient3, getFetchHandler(str, cacheClient, metadataClient), getHandler, metadataClient, getRolloutsStateSubscriptionsHandler(cacheClient2, getHandler));
}
public FirebaseRemoteConfig getDefault() {
return get(DEFAULT_NAMESPACE);
}
public synchronized ConfigFetchHandler getFetchHandler(String str, ConfigCacheClient configCacheClient, ConfigMetadataClient configMetadataClient) {
try {
} catch (Throwable th) {
throw th;
}
return new ConfigFetchHandler(this.firebaseInstallations, isPrimaryApp(this.firebaseApp) ? this.analyticsConnector : new g(4), this.executor, DEFAULT_CLOCK, DEFAULT_RANDOM, configCacheClient, getFrcBackendApiClient(this.firebaseApp.getOptions().getApiKey(), str, configMetadataClient), configMetadataClient, this.customHeaders);
}
public ConfigFetchHttpClient getFrcBackendApiClient(String str, String str2, ConfigMetadataClient configMetadataClient) {
return new ConfigFetchHttpClient(this.context, this.firebaseApp.getOptions().getApplicationId(), str, str2, configMetadataClient.getFetchTimeoutInSeconds(), configMetadataClient.getFetchTimeoutInSeconds());
}
public synchronized ConfigRealtimeHandler getRealtime(FirebaseApp firebaseApp, FirebaseInstallationsApi firebaseInstallationsApi, ConfigFetchHandler configFetchHandler, ConfigCacheClient configCacheClient, Context context, String str, ConfigMetadataClient configMetadataClient) {
return new ConfigRealtimeHandler(firebaseApp, firebaseInstallationsApi, configFetchHandler, configCacheClient, context, str, configMetadataClient, this.executor);
}
@Override // com.google.firebase.remoteconfig.interop.FirebaseRemoteConfigInterop
public void registerRolloutsStateSubscriber(String str, RolloutsStateSubscriber rolloutsStateSubscriber) {
get(str).getRolloutsStateSubscriptionsHandler().registerRolloutsStateSubscriber(rolloutsStateSubscriber);
}
public synchronized void setCustomHeaders(Map<String, String> map) {
this.customHeaders = map;
}
public RemoteConfigComponent(Context context, ScheduledExecutorService scheduledExecutorService, FirebaseApp firebaseApp, FirebaseInstallationsApi firebaseInstallationsApi, FirebaseABTesting firebaseABTesting, Provider<AnalyticsConnector> provider, boolean z3) {
this.frcNamespaceInstances = new HashMap();
this.customHeaders = new HashMap();
this.context = context;
this.executor = scheduledExecutorService;
this.firebaseApp = firebaseApp;
this.firebaseInstallations = firebaseInstallationsApi;
this.firebaseAbt = firebaseABTesting;
this.analyticsConnector = provider;
this.appId = firebaseApp.getOptions().getApplicationId();
GlobalBackgroundListener.ensureBackgroundListenerIsRegistered(context);
if (z3) {
Tasks.call(scheduledExecutorService, new com.google.firebase.installations.b(this, 1));
}
}
public synchronized FirebaseRemoteConfig get(FirebaseApp firebaseApp, String str, FirebaseInstallationsApi firebaseInstallationsApi, FirebaseABTesting firebaseABTesting, Executor executor, ConfigCacheClient configCacheClient, ConfigCacheClient configCacheClient2, ConfigCacheClient configCacheClient3, ConfigFetchHandler configFetchHandler, ConfigGetParameterHandler configGetParameterHandler, ConfigMetadataClient configMetadataClient, RolloutsStateSubscriptionsHandler rolloutsStateSubscriptionsHandler) {
RemoteConfigComponent remoteConfigComponent;
String str2;
try {
try {
if (this.frcNamespaceInstances.containsKey(str)) {
remoteConfigComponent = this;
str2 = str;
} else {
remoteConfigComponent = this;
str2 = str;
FirebaseRemoteConfig firebaseRemoteConfig = new FirebaseRemoteConfig(this.context, firebaseApp, firebaseInstallationsApi, isAbtSupported(firebaseApp, str) ? firebaseABTesting : null, executor, configCacheClient, configCacheClient2, configCacheClient3, configFetchHandler, configGetParameterHandler, configMetadataClient, getRealtime(firebaseApp, firebaseInstallationsApi, configFetchHandler, configCacheClient2, this.context, str, configMetadataClient), rolloutsStateSubscriptionsHandler);
firebaseRemoteConfig.startLoadingConfigsFromDisk();
remoteConfigComponent.frcNamespaceInstances.put(str2, firebaseRemoteConfig);
frcNamespaceInstancesStatic.put(str2, firebaseRemoteConfig);
}
return remoteConfigComponent.frcNamespaceInstances.get(str2);
} catch (Throwable th) {
th = th;
throw th;
}
} catch (Throwable th2) {
th = th2;
throw th;
}
}
}

View File

@@ -0,0 +1,49 @@
package com.google.firebase.remoteconfig;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/* loaded from: classes3.dex */
public final class RemoteConfigConstants {
public static final String FETCH_REGEX_URL = "https://firebaseremoteconfig.googleapis.com/v1/projects/%s/namespaces/%s:fetch";
public static final String REALTIME_REGEX_URL = "https://firebaseremoteconfigrealtime.googleapis.com/v1/projects/%s/namespaces/%s:streamFetchInvalidations";
@Retention(RetentionPolicy.SOURCE)
/* loaded from: classes3.dex */
public @interface ExperimentDescriptionFieldKey {
public static final String EXPERIMENT_ID = "experimentId";
public static final String VARIANT_ID = "variantId";
}
@Retention(RetentionPolicy.SOURCE)
/* loaded from: classes3.dex */
public @interface RequestFieldKey {
public static final String ANALYTICS_USER_PROPERTIES = "analyticsUserProperties";
public static final String APP_BUILD = "appBuild";
public static final String APP_ID = "appId";
public static final String APP_VERSION = "appVersion";
public static final String COUNTRY_CODE = "countryCode";
public static final String FIRST_OPEN_TIME = "firstOpenTime";
public static final String INSTANCE_ID = "appInstanceId";
public static final String INSTANCE_ID_TOKEN = "appInstanceIdToken";
public static final String LANGUAGE_CODE = "languageCode";
public static final String PACKAGE_NAME = "packageName";
public static final String PLATFORM_VERSION = "platformVersion";
public static final String SDK_VERSION = "sdkVersion";
public static final String TIME_ZONE = "timeZone";
}
@Retention(RetentionPolicy.SOURCE)
/* loaded from: classes3.dex */
public @interface ResponseFieldKey {
public static final String ENTRIES = "entries";
public static final String EXPERIMENT_DESCRIPTIONS = "experimentDescriptions";
public static final String PERSONALIZATION_METADATA = "personalizationMetadata";
public static final String ROLLOUT_METADATA = "rolloutMetadata";
public static final String STATE = "state";
public static final String TEMPLATE_VERSION_NUMBER = "templateVersion";
}
private RemoteConfigConstants() {
}
}

View File

@@ -0,0 +1,40 @@
package com.google.firebase.remoteconfig;
import com.google.firebase.messaging.Constants;
import kotlin.Metadata;
import kotlin.jvm.internal.Intrinsics;
import kotlinx.coroutines.CoroutineScopeKt;
import kotlinx.coroutines.channels.ChannelsKt;
import kotlinx.coroutines.channels.ProducerScope;
@Metadata(d1 = {"\u0000\u001f\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000*\u0001\u0000\b\n\u0018\u00002\u00020\u0001J\u0010\u0010\u0002\u001a\u00020\u00032\u0006\u0010\u0004\u001a\u00020\u0005H\u0016J\u0010\u0010\u0006\u001a\u00020\u00032\u0006\u0010\u0007\u001a\u00020\bH\u0016¨\u0006\t"}, d2 = {"com/google/firebase/remoteconfig/RemoteConfigKt$configUpdates$1$registration$1", "Lcom/google/firebase/remoteconfig/ConfigUpdateListener;", "onError", "", Constants.IPC_BUNDLE_KEY_SEND_ERROR, "Lcom/google/firebase/remoteconfig/FirebaseRemoteConfigException;", "onUpdate", "configUpdate", "Lcom/google/firebase/remoteconfig/ConfigUpdate;", "com.google.firebase-firebase-config"}, k = 1, mv = {1, 7, 1}, xi = 48)
/* loaded from: classes3.dex */
public final class RemoteConfigKt$configUpdates$1$registration$1 implements ConfigUpdateListener {
final /* synthetic */ ProducerScope<ConfigUpdate> $$this$callbackFlow;
final /* synthetic */ FirebaseRemoteConfig $this_configUpdates;
/* JADX WARN: Multi-variable type inference failed */
public RemoteConfigKt$configUpdates$1$registration$1(FirebaseRemoteConfig firebaseRemoteConfig, ProducerScope<? super ConfigUpdate> producerScope) {
this.$this_configUpdates = firebaseRemoteConfig;
this.$$this$callbackFlow = producerScope;
}
/* renamed from: onUpdate$lambda-0 */
public static final void m94onUpdate$lambda0(ProducerScope $this$callbackFlow, ConfigUpdate configUpdate) {
Intrinsics.checkNotNullParameter($this$callbackFlow, "$$this$callbackFlow");
Intrinsics.checkNotNullParameter(configUpdate, "$configUpdate");
ChannelsKt.trySendBlocking($this$callbackFlow, configUpdate);
}
@Override // com.google.firebase.remoteconfig.ConfigUpdateListener
public void onError(FirebaseRemoteConfigException r22) {
Intrinsics.checkNotNullParameter(r22, "error");
CoroutineScopeKt.cancel(this.$$this$callbackFlow, "Error listening for config updates.", r22);
}
@Override // com.google.firebase.remoteconfig.ConfigUpdateListener
public void onUpdate(ConfigUpdate configUpdate) {
Intrinsics.checkNotNullParameter(configUpdate, "configUpdate");
this.$this_configUpdates.schedule(new d(this.$$this$callbackFlow, configUpdate, 0));
}
}

View File

@@ -0,0 +1,80 @@
package com.google.firebase.remoteconfig;
import kotlin.Metadata;
import kotlin.ResultKt;
import kotlin.Unit;
import kotlin.coroutines.Continuation;
import kotlin.coroutines.intrinsics.IntrinsicsKt;
import kotlin.coroutines.jvm.internal.DebugMetadata;
import kotlin.coroutines.jvm.internal.SuspendLambda;
import kotlin.jvm.functions.Function0;
import kotlin.jvm.functions.Function2;
import kotlin.jvm.internal.Intrinsics;
import kotlinx.coroutines.channels.ProduceKt;
import kotlinx.coroutines.channels.ProducerScope;
@Metadata(d1 = {"\u0000\u000e\n\u0000\n\u0002\u0010\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\u0010\u0000\u001a\u00020\u0001*\b\u0012\u0004\u0012\u00020\u00030\u0002H\u008a@"}, d2 = {"<anonymous>", "", "Lkotlinx/coroutines/channels/ProducerScope;", "Lcom/google/firebase/remoteconfig/ConfigUpdate;"}, k = 3, mv = {1, 7, 1}, xi = 48)
@DebugMetadata(c = "com.google.firebase.remoteconfig.RemoteConfigKt$configUpdates$1", f = "RemoteConfig.kt", i = {}, l = {71}, m = "invokeSuspend", n = {}, s = {})
/* loaded from: classes3.dex */
public final class RemoteConfigKt$configUpdates$1 extends SuspendLambda implements Function2<ProducerScope<? super ConfigUpdate>, Continuation<? super Unit>, Object> {
final /* synthetic */ FirebaseRemoteConfig $this_configUpdates;
private /* synthetic */ Object L$0;
int label;
/* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */
public RemoteConfigKt$configUpdates$1(FirebaseRemoteConfig firebaseRemoteConfig, Continuation<? super RemoteConfigKt$configUpdates$1> continuation) {
super(2, continuation);
this.$this_configUpdates = firebaseRemoteConfig;
}
@Override // kotlin.coroutines.jvm.internal.BaseContinuationImpl
public final Continuation<Unit> create(Object obj, Continuation<?> continuation) {
RemoteConfigKt$configUpdates$1 remoteConfigKt$configUpdates$1 = new RemoteConfigKt$configUpdates$1(this.$this_configUpdates, continuation);
remoteConfigKt$configUpdates$1.L$0 = obj;
return remoteConfigKt$configUpdates$1;
}
@Override // kotlin.coroutines.jvm.internal.BaseContinuationImpl
public final Object invokeSuspend(Object obj) {
Object coroutine_suspended = IntrinsicsKt.getCOROUTINE_SUSPENDED();
int i = this.label;
if (i == 0) {
ResultKt.throwOnFailure(obj);
ProducerScope producerScope = (ProducerScope) this.L$0;
FirebaseRemoteConfig firebaseRemoteConfig = this.$this_configUpdates;
final ConfigUpdateListenerRegistration addOnConfigUpdateListener = firebaseRemoteConfig.addOnConfigUpdateListener(new RemoteConfigKt$configUpdates$1$registration$1(firebaseRemoteConfig, producerScope));
Intrinsics.checkNotNullExpressionValue(addOnConfigUpdateListener, "FirebaseRemoteConfig.con… }\n }\n )");
Function0<Unit> function0 = new Function0<Unit>() { // from class: com.google.firebase.remoteconfig.RemoteConfigKt$configUpdates$1.1
{
super(0);
}
@Override // kotlin.jvm.functions.Function0
public /* bridge */ /* synthetic */ Unit invoke() {
invoke2();
return Unit.INSTANCE;
}
/* renamed from: invoke, reason: avoid collision after fix types in other method */
public final void invoke2() {
ConfigUpdateListenerRegistration.this.remove();
}
};
this.label = 1;
if (ProduceKt.awaitClose(producerScope, function0, this) == coroutine_suspended) {
return coroutine_suspended;
}
} else {
if (i != 1) {
throw new IllegalStateException("call to 'resume' before 'invoke' with coroutine");
}
ResultKt.throwOnFailure(obj);
}
return Unit.INSTANCE;
}
@Override // kotlin.jvm.functions.Function2
public final Object invoke(ProducerScope<? super ConfigUpdate> producerScope, Continuation<? super Unit> continuation) {
return ((RemoteConfigKt$configUpdates$1) create(producerScope, continuation)).invokeSuspend(Unit.INSTANCE);
}
}

View File

@@ -0,0 +1,52 @@
package com.google.firebase.remoteconfig;
import com.google.firebase.Firebase;
import com.google.firebase.FirebaseApp;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings;
import kotlin.Metadata;
import kotlin.Unit;
import kotlin.jvm.functions.Function1;
import kotlin.jvm.internal.Intrinsics;
import kotlinx.coroutines.flow.Flow;
import kotlinx.coroutines.flow.FlowKt;
@Metadata(d1 = {"\u0000D\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0010\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000e\n\u0000\n\u0002\u0018\u0002\n\u0000\u001a\u001f\u0010\n\u001a\u00020\u000b2\u0017\u0010\f\u001a\u0013\u0012\u0004\u0012\u00020\u000e\u0012\u0004\u0012\u00020\u000f0\\u0006\u0002\b\u0010\u001a\u0015\u0010\u0011\u001a\u00020\u0012*\u00020\u00032\u0006\u0010\u0013\u001a\u00020\u0014H\u0086\u0002\u001a\u0012\u0010\u0006\u001a\u00020\u0003*\u00020\u00072\u0006\u0010\u0015\u001a\u00020\u0016\"\u001b\u0010\u0000\u001a\b\u0012\u0004\u0012\u00020\u00020\u0001*\u00020\u00038F¢\u0006\u0006\u001a\u0004\b\u0004\u0010\u0005\"\u0015\u0010\u0006\u001a\u00020\u0003*\u00020\u00078F¢\u0006\u0006\u001a\u0004\b\b\u0010\\u0006\u0017"}, d2 = {"configUpdates", "Lkotlinx/coroutines/flow/Flow;", "Lcom/google/firebase/remoteconfig/ConfigUpdate;", "Lcom/google/firebase/remoteconfig/FirebaseRemoteConfig;", "getConfigUpdates", "(Lcom/google/firebase/remoteconfig/FirebaseRemoteConfig;)Lkotlinx/coroutines/flow/Flow;", "remoteConfig", "Lcom/google/firebase/Firebase;", "getRemoteConfig", "(Lcom/google/firebase/Firebase;)Lcom/google/firebase/remoteconfig/FirebaseRemoteConfig;", "remoteConfigSettings", "Lcom/google/firebase/remoteconfig/FirebaseRemoteConfigSettings;", "init", "Lkotlin/Function1;", "Lcom/google/firebase/remoteconfig/FirebaseRemoteConfigSettings$Builder;", "", "Lkotlin/ExtensionFunctionType;", "get", "Lcom/google/firebase/remoteconfig/FirebaseRemoteConfigValue;", "key", "", "app", "Lcom/google/firebase/FirebaseApp;", "com.google.firebase-firebase-config"}, k = 2, mv = {1, 7, 1}, xi = 48)
/* loaded from: classes3.dex */
public final class RemoteConfigKt {
public static final FirebaseRemoteConfigValue get(FirebaseRemoteConfig firebaseRemoteConfig, String key) {
Intrinsics.checkNotNullParameter(firebaseRemoteConfig, "<this>");
Intrinsics.checkNotNullParameter(key, "key");
FirebaseRemoteConfigValue value = firebaseRemoteConfig.getValue(key);
Intrinsics.checkNotNullExpressionValue(value, "this.getValue(key)");
return value;
}
public static final Flow<ConfigUpdate> getConfigUpdates(FirebaseRemoteConfig firebaseRemoteConfig) {
Intrinsics.checkNotNullParameter(firebaseRemoteConfig, "<this>");
return FlowKt.callbackFlow(new RemoteConfigKt$configUpdates$1(firebaseRemoteConfig, null));
}
public static final FirebaseRemoteConfig getRemoteConfig(Firebase firebase) {
Intrinsics.checkNotNullParameter(firebase, "<this>");
FirebaseRemoteConfig firebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
Intrinsics.checkNotNullExpressionValue(firebaseRemoteConfig, "getInstance()");
return firebaseRemoteConfig;
}
public static final FirebaseRemoteConfig remoteConfig(Firebase firebase, FirebaseApp app) {
Intrinsics.checkNotNullParameter(firebase, "<this>");
Intrinsics.checkNotNullParameter(app, "app");
FirebaseRemoteConfig firebaseRemoteConfig = FirebaseRemoteConfig.getInstance(app);
Intrinsics.checkNotNullExpressionValue(firebaseRemoteConfig, "getInstance(app)");
return firebaseRemoteConfig;
}
public static final FirebaseRemoteConfigSettings remoteConfigSettings(Function1<? super FirebaseRemoteConfigSettings.Builder, Unit> init) {
Intrinsics.checkNotNullParameter(init, "init");
FirebaseRemoteConfigSettings.Builder builder = new FirebaseRemoteConfigSettings.Builder();
init.invoke(builder);
FirebaseRemoteConfigSettings build = builder.build();
Intrinsics.checkNotNullExpressionValue(build, "builder.build()");
return build;
}
}

View File

@@ -0,0 +1,36 @@
package com.google.firebase.remoteconfig;
import android.content.Context;
import androidx.annotation.Keep;
import com.google.firebase.FirebaseApp;
import com.google.firebase.abt.FirebaseABTesting;
import com.google.firebase.abt.component.AbtComponent;
import com.google.firebase.analytics.connector.AnalyticsConnector;
import com.google.firebase.annotations.concurrent.Blocking;
import com.google.firebase.components.Component;
import com.google.firebase.components.ComponentContainer;
import com.google.firebase.components.ComponentRegistrar;
import com.google.firebase.components.Dependency;
import com.google.firebase.components.Qualified;
import com.google.firebase.installations.FirebaseInstallationsApi;
import com.google.firebase.platforminfo.LibraryVersionComponent;
import com.google.firebase.remoteconfig.interop.FirebaseRemoteConfigInterop;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ScheduledExecutorService;
@Keep
/* loaded from: classes3.dex */
public class RemoteConfigRegistrar implements ComponentRegistrar {
private static final String LIBRARY_NAME = "fire-rc";
public static /* synthetic */ RemoteConfigComponent lambda$getComponents$0(Qualified qualified, ComponentContainer componentContainer) {
return new RemoteConfigComponent((Context) componentContainer.get(Context.class), (ScheduledExecutorService) componentContainer.get(qualified), (FirebaseApp) componentContainer.get(FirebaseApp.class), (FirebaseInstallationsApi) componentContainer.get(FirebaseInstallationsApi.class), ((AbtComponent) componentContainer.get(AbtComponent.class)).get(FirebaseABTesting.OriginService.REMOTE_CONFIG), componentContainer.getProvider(AnalyticsConnector.class));
}
@Override // com.google.firebase.components.ComponentRegistrar
public List<Component<?>> getComponents() {
Qualified qualified = Qualified.qualified(Blocking.class, ScheduledExecutorService.class);
return Arrays.asList(Component.builder(RemoteConfigComponent.class, FirebaseRemoteConfigInterop.class).name(LIBRARY_NAME).add(Dependency.required((Class<?>) Context.class)).add(Dependency.required((Qualified<?>) qualified)).add(Dependency.required((Class<?>) FirebaseApp.class)).add(Dependency.required((Class<?>) FirebaseInstallationsApi.class)).add(Dependency.required((Class<?>) AbtComponent.class)).add(Dependency.optionalProvider((Class<?>) AnalyticsConnector.class)).factory(new com.google.firebase.heartbeatinfo.b(qualified, 1)).eagerInDefaultApp().build(), LibraryVersionComponent.create(LIBRARY_NAME, BuildConfig.VERSION_NAME));
}
}

View File

@@ -0,0 +1,30 @@
package com.google.firebase.remoteconfig;
import com.google.android.gms.tasks.Continuation;
import com.google.android.gms.tasks.SuccessContinuation;
import com.google.android.gms.tasks.Task;
/* loaded from: classes3.dex */
public final /* synthetic */ class a implements Continuation, SuccessContinuation {
/* renamed from: a, reason: collision with root package name */
public final /* synthetic */ FirebaseRemoteConfig f6032a;
public /* synthetic */ a(FirebaseRemoteConfig firebaseRemoteConfig) {
this.f6032a = firebaseRemoteConfig;
}
@Override // com.google.android.gms.tasks.SuccessContinuation
public Task then(Object obj) {
Task lambda$fetchAndActivate$1;
lambda$fetchAndActivate$1 = this.f6032a.lambda$fetchAndActivate$1((Void) obj);
return lambda$fetchAndActivate$1;
}
@Override // com.google.android.gms.tasks.Continuation
public Object then(Task task) {
boolean processActivatePutTask;
processActivatePutTask = this.f6032a.processActivatePutTask(task);
return Boolean.valueOf(processActivatePutTask);
}
}

View File

@@ -0,0 +1,30 @@
package com.google.firebase.remoteconfig;
import java.util.concurrent.Callable;
/* loaded from: classes3.dex */
public final /* synthetic */ class b implements Callable {
/* renamed from: a, reason: collision with root package name */
public final /* synthetic */ int f6033a;
/* renamed from: b, reason: collision with root package name */
public final /* synthetic */ FirebaseRemoteConfig f6034b;
public /* synthetic */ b(FirebaseRemoteConfig firebaseRemoteConfig, int i) {
this.f6033a = i;
this.f6034b = firebaseRemoteConfig;
}
@Override // java.util.concurrent.Callable
public final Object call() {
int i = this.f6033a;
FirebaseRemoteConfig firebaseRemoteConfig = this.f6034b;
switch (i) {
case 0:
return FirebaseRemoteConfig.i(firebaseRemoteConfig);
default:
return firebaseRemoteConfig.getInfo();
}
}
}

View File

@@ -0,0 +1,34 @@
package com.google.firebase.remoteconfig;
import kotlinx.coroutines.channels.ProducerScope;
/* loaded from: classes3.dex */
public final /* synthetic */ class d implements Runnable {
/* renamed from: a, reason: collision with root package name */
public final /* synthetic */ int f6036a;
/* renamed from: b, reason: collision with root package name */
public final /* synthetic */ ProducerScope f6037b;
/* renamed from: c, reason: collision with root package name */
public final /* synthetic */ ConfigUpdate f6038c;
public /* synthetic */ d(ProducerScope producerScope, ConfigUpdate configUpdate, int i) {
this.f6036a = i;
this.f6037b = producerScope;
this.f6038c = configUpdate;
}
@Override // java.lang.Runnable
public final void run() {
switch (this.f6036a) {
case 0:
RemoteConfigKt$configUpdates$1$registration$1.a(this.f6037b, this.f6038c);
return;
default:
com.google.firebase.remoteconfig.ktx.RemoteConfigKt$configUpdates$1$registration$1.a(this.f6037b, this.f6038c);
return;
}
}
}

View File

@@ -0,0 +1,26 @@
package com.google.firebase.remoteconfig.internal;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.SOURCE)
/* loaded from: classes3.dex */
public @interface Code {
public static final int ABORTED = 10;
public static final int ALREADY_EXISTS = 6;
public static final int CANCELLED = 1;
public static final int DATA_LOSS = 15;
public static final int DEADLINE_EXCEEDED = 4;
public static final int FAILED_PRECONDITION = 9;
public static final int INTERNAL = 13;
public static final int INVALID_ARGUMENT = 3;
public static final int NOT_FOUND = 5;
public static final int OK = 0;
public static final int OUT_OF_RANGE = 11;
public static final int PERMISSION_DENIED = 7;
public static final int RESOURCE_EXHAUSTED = 8;
public static final int UNAUTHENTICATED = 16;
public static final int UNAVAILABLE = 14;
public static final int UNIMPLEMENTED = 12;
public static final int UNKNOWN = 2;
}

View File

@@ -0,0 +1,275 @@
package com.google.firebase.remoteconfig.internal;
import android.util.Log;
import com.google.android.gms.tasks.Continuation;
import com.google.android.gms.tasks.Task;
import com.google.android.gms.tasks.Tasks;
import com.google.firebase.remoteconfig.ConfigUpdate;
import com.google.firebase.remoteconfig.ConfigUpdateListener;
import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigClientException;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigException;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigServerException;
import com.google.firebase.remoteconfig.internal.ConfigFetchHandler;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/* loaded from: classes3.dex */
public class ConfigAutoFetch {
private static final int MAXIMUM_FETCH_ATTEMPTS = 3;
private static final String REALTIME_DISABLED_KEY = "featureDisabled";
private static final String TEMPLATE_VERSION_KEY = "latestTemplateVersionNumber";
private final ConfigCacheClient activatedCache;
private final ConfigFetchHandler configFetchHandler;
private final Set<ConfigUpdateListener> eventListeners;
private final HttpURLConnection httpURLConnection;
private final Random random = new Random();
private final ConfigUpdateListener retryCallback;
private final ScheduledExecutorService scheduledExecutorService;
public ConfigAutoFetch(HttpURLConnection httpURLConnection, ConfigFetchHandler configFetchHandler, ConfigCacheClient configCacheClient, Set<ConfigUpdateListener> set, ConfigUpdateListener configUpdateListener, ScheduledExecutorService scheduledExecutorService) {
this.httpURLConnection = httpURLConnection;
this.configFetchHandler = configFetchHandler;
this.activatedCache = configCacheClient;
this.eventListeners = set;
this.retryCallback = configUpdateListener;
this.scheduledExecutorService = scheduledExecutorService;
}
private void autoFetch(final int i, final long j4) {
if (i == 0) {
propagateErrors(new FirebaseRemoteConfigServerException("Unable to fetch the latest version of the template.", FirebaseRemoteConfigException.Code.CONFIG_UPDATE_NOT_FETCHED));
} else {
this.scheduledExecutorService.schedule(new Runnable() { // from class: com.google.firebase.remoteconfig.internal.ConfigAutoFetch.1
@Override // java.lang.Runnable
public void run() {
ConfigAutoFetch.this.fetchLatestConfig(i, j4);
}
}, this.random.nextInt(4), TimeUnit.SECONDS);
}
}
private synchronized void executeAllListenerCallbacks(ConfigUpdate configUpdate) {
Iterator<ConfigUpdateListener> it = this.eventListeners.iterator();
while (it.hasNext()) {
it.next().onUpdate(configUpdate);
}
}
private static Boolean fetchResponseIsUpToDate(ConfigFetchHandler.FetchResponse fetchResponse, long j4) {
if (fetchResponse.getFetchedConfigs() != null) {
return Boolean.valueOf(fetchResponse.getFetchedConfigs().getTemplateVersionNumber() >= j4);
}
return Boolean.valueOf(fetchResponse.getStatus() == 1);
}
/* JADX WARN: Code restructure failed: missing block: B:11:0x0030, code lost:
r5 = new org.json.JSONObject(r4);
*/
/* JADX WARN: Code restructure failed: missing block: B:12:0x0039, code lost:
if (r5.has(com.google.firebase.remoteconfig.internal.ConfigAutoFetch.REALTIME_DISABLED_KEY) == false) goto L38;
*/
/* JADX WARN: Code restructure failed: missing block: B:14:0x003f, code lost:
if (r5.getBoolean(com.google.firebase.remoteconfig.internal.ConfigAutoFetch.REALTIME_DISABLED_KEY) == false) goto L39;
*/
/* JADX WARN: Code restructure failed: missing block: B:16:0x0041, code lost:
r9.retryCallback.onError(new com.google.firebase.remoteconfig.FirebaseRemoteConfigServerException("The server is temporarily unavailable. Try again in a few minutes.", com.google.firebase.remoteconfig.FirebaseRemoteConfigException.Code.CONFIG_UPDATE_UNAVAILABLE));
*/
/* JADX WARN: Code restructure failed: missing block: B:24:0x0056, code lost:
if (isEventListenersEmpty() == false) goto L21;
*/
/* JADX WARN: Code restructure failed: missing block: B:26:0x005d, code lost:
if (r5.has(com.google.firebase.remoteconfig.internal.ConfigAutoFetch.TEMPLATE_VERSION_KEY) == false) goto L41;
*/
/* JADX WARN: Code restructure failed: missing block: B:28:0x005f, code lost:
r6 = r9.configFetchHandler.getTemplateVersionNumber();
r4 = r5.getLong(com.google.firebase.remoteconfig.internal.ConfigAutoFetch.TEMPLATE_VERSION_KEY);
*/
/* JADX WARN: Code restructure failed: missing block: B:29:0x006b, code lost:
if (r4 <= r6) goto L42;
*/
/* JADX WARN: Code restructure failed: missing block: B:31:0x006d, code lost:
autoFetch(3, r4);
*/
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
private void handleNotifications(java.io.InputStream r10) throws java.io.IOException {
/*
r9 = this;
java.lang.String r0 = "latestTemplateVersionNumber"
java.lang.String r1 = "featureDisabled"
java.io.BufferedReader r2 = new java.io.BufferedReader
java.io.InputStreamReader r3 = new java.io.InputStreamReader
java.lang.String r4 = "utf-8"
r3.<init>(r10, r4)
r2.<init>(r3)
java.lang.String r3 = ""
L12:
r4 = r3
L13:
java.lang.String r5 = r2.readLine()
if (r5 == 0) goto L8a
java.lang.String r4 = C.w.n(r4, r5)
java.lang.String r6 = "}"
boolean r5 = r5.contains(r6)
if (r5 == 0) goto L13
java.lang.String r4 = r9.parseAndValidateConfigUpdateMessage(r4)
boolean r5 = r4.isEmpty()
if (r5 == 0) goto L30
goto L13
L30:
org.json.JSONObject r5 = new org.json.JSONObject // Catch: org.json.JSONException -> L50
r5.<init>(r4) // Catch: org.json.JSONException -> L50
boolean r4 = r5.has(r1) // Catch: org.json.JSONException -> L50
if (r4 == 0) goto L52
boolean r4 = r5.getBoolean(r1) // Catch: org.json.JSONException -> L50
if (r4 == 0) goto L52
com.google.firebase.remoteconfig.ConfigUpdateListener r4 = r9.retryCallback // Catch: org.json.JSONException -> L50
com.google.firebase.remoteconfig.FirebaseRemoteConfigServerException r5 = new com.google.firebase.remoteconfig.FirebaseRemoteConfigServerException // Catch: org.json.JSONException -> L50
java.lang.String r6 = "The server is temporarily unavailable. Try again in a few minutes."
com.google.firebase.remoteconfig.FirebaseRemoteConfigException$Code r7 = com.google.firebase.remoteconfig.FirebaseRemoteConfigException.Code.CONFIG_UPDATE_UNAVAILABLE // Catch: org.json.JSONException -> L50
r5.<init>(r6, r7) // Catch: org.json.JSONException -> L50
r4.onError(r5) // Catch: org.json.JSONException -> L50
goto L8a
L50:
r4 = move-exception
goto L72
L52:
boolean r4 = r9.isEventListenersEmpty() // Catch: org.json.JSONException -> L50
if (r4 == 0) goto L59
goto L8a
L59:
boolean r4 = r5.has(r0) // Catch: org.json.JSONException -> L50
if (r4 == 0) goto L12
com.google.firebase.remoteconfig.internal.ConfigFetchHandler r4 = r9.configFetchHandler // Catch: org.json.JSONException -> L50
long r6 = r4.getTemplateVersionNumber() // Catch: org.json.JSONException -> L50
long r4 = r5.getLong(r0) // Catch: org.json.JSONException -> L50
int r6 = (r4 > r6 ? 1 : (r4 == r6 ? 0 : -1))
if (r6 <= 0) goto L12
r6 = 3
r9.autoFetch(r6, r4) // Catch: org.json.JSONException -> L50
goto L12
L72:
com.google.firebase.remoteconfig.FirebaseRemoteConfigClientException r5 = new com.google.firebase.remoteconfig.FirebaseRemoteConfigClientException
java.lang.Throwable r6 = r4.getCause()
com.google.firebase.remoteconfig.FirebaseRemoteConfigException$Code r7 = com.google.firebase.remoteconfig.FirebaseRemoteConfigException.Code.CONFIG_UPDATE_MESSAGE_INVALID
java.lang.String r8 = "Unable to parse config update message."
r5.<init>(r8, r6, r7)
r9.propagateErrors(r5)
java.lang.String r5 = "FirebaseRemoteConfig"
java.lang.String r6 = "Unable to parse latest config update message."
android.util.Log.e(r5, r6, r4)
goto L12
L8a:
r2.close()
r10.close()
return
*/
throw new UnsupportedOperationException("Method not decompiled: com.google.firebase.remoteconfig.internal.ConfigAutoFetch.handleNotifications(java.io.InputStream):void");
}
private synchronized boolean isEventListenersEmpty() {
return this.eventListeners.isEmpty();
}
/* JADX INFO: Access modifiers changed from: private */
public /* synthetic */ Task lambda$fetchLatestConfig$0(Task task, Task task2, long j4, int i, Task task3) throws Exception {
if (!task.isSuccessful()) {
return Tasks.forException(new FirebaseRemoteConfigClientException("Failed to auto-fetch config update.", task.getException()));
}
if (!task2.isSuccessful()) {
return Tasks.forException(new FirebaseRemoteConfigClientException("Failed to get activated config for auto-fetch", task2.getException()));
}
ConfigFetchHandler.FetchResponse fetchResponse = (ConfigFetchHandler.FetchResponse) task.getResult();
ConfigContainer configContainer = (ConfigContainer) task2.getResult();
if (!fetchResponseIsUpToDate(fetchResponse, j4).booleanValue()) {
Log.d(FirebaseRemoteConfig.TAG, "Fetched template version is the same as SDK's current version. Retrying fetch.");
autoFetch(i, j4);
return Tasks.forResult(null);
}
if (fetchResponse.getFetchedConfigs() == null) {
Log.d(FirebaseRemoteConfig.TAG, "The fetch succeeded, but the backend had no updates.");
return Tasks.forResult(null);
}
if (configContainer == null) {
configContainer = ConfigContainer.newBuilder().build();
}
Set<String> changedParams = configContainer.getChangedParams(fetchResponse.getFetchedConfigs());
if (changedParams.isEmpty()) {
Log.d(FirebaseRemoteConfig.TAG, "Config was fetched, but no params changed.");
return Tasks.forResult(null);
}
executeAllListenerCallbacks(ConfigUpdate.create(changedParams));
return Tasks.forResult(null);
}
private String parseAndValidateConfigUpdateMessage(String str) {
int indexOf = str.indexOf(123);
int lastIndexOf = str.lastIndexOf(125);
return (indexOf < 0 || lastIndexOf < 0 || indexOf >= lastIndexOf) ? "" : str.substring(indexOf, lastIndexOf + 1);
}
private synchronized void propagateErrors(FirebaseRemoteConfigException firebaseRemoteConfigException) {
Iterator<ConfigUpdateListener> it = this.eventListeners.iterator();
while (it.hasNext()) {
it.next().onError(firebaseRemoteConfigException);
}
}
public synchronized Task<Void> fetchLatestConfig(int i, final long j4) {
final int i4 = i - 1;
try {
try {
final Task<ConfigFetchHandler.FetchResponse> fetchNowWithTypeAndAttemptNumber = this.configFetchHandler.fetchNowWithTypeAndAttemptNumber(ConfigFetchHandler.FetchType.REALTIME, 3 - i4);
final Task<ConfigContainer> task = this.activatedCache.get();
return Tasks.whenAllComplete((Task<?>[]) new Task[]{fetchNowWithTypeAndAttemptNumber, task}).continueWithTask(this.scheduledExecutorService, new Continuation() { // from class: com.google.firebase.remoteconfig.internal.a
@Override // com.google.android.gms.tasks.Continuation
public final Object then(Task task2) {
Task lambda$fetchLatestConfig$0;
lambda$fetchLatestConfig$0 = ConfigAutoFetch.this.lambda$fetchLatestConfig$0(fetchNowWithTypeAndAttemptNumber, task, j4, i4, task2);
return lambda$fetchLatestConfig$0;
}
});
} catch (Throwable th) {
th = th;
throw th;
}
} catch (Throwable th2) {
th = th2;
throw th;
}
}
public void listenForNotifications() {
HttpURLConnection httpURLConnection = this.httpURLConnection;
if (httpURLConnection == null) {
return;
}
try {
InputStream inputStream = httpURLConnection.getInputStream();
handleNotifications(inputStream);
inputStream.close();
} catch (IOException e4) {
Log.d(FirebaseRemoteConfig.TAG, "Stream was cancelled due to an exception. Retrying the connection...", e4);
} finally {
this.httpURLConnection.disconnect();
}
}
}

View File

@@ -0,0 +1,189 @@
package com.google.firebase.remoteconfig.internal;
import android.util.Log;
import com.google.android.gms.tasks.OnCanceledListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.SuccessContinuation;
import com.google.android.gms.tasks.Task;
import com.google.android.gms.tasks.Tasks;
import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import n.ExecutorC0507a;
/* loaded from: classes3.dex */
public class ConfigCacheClient {
static final long DISK_READ_TIMEOUT_IN_SECONDS = 5;
private Task<ConfigContainer> cachedContainerTask = null;
private final Executor executor;
private final ConfigStorageClient storageClient;
private static final Map<String, ConfigCacheClient> clientInstances = new HashMap();
private static final Executor DIRECT_EXECUTOR = new ExecutorC0507a(1);
/* loaded from: classes3.dex */
public static class AwaitListener<TResult> implements OnSuccessListener<TResult>, OnFailureListener, OnCanceledListener {
private final CountDownLatch latch;
private AwaitListener() {
this.latch = new CountDownLatch(1);
}
public void await() throws InterruptedException {
this.latch.await();
}
@Override // com.google.android.gms.tasks.OnCanceledListener
public void onCanceled() {
this.latch.countDown();
}
@Override // com.google.android.gms.tasks.OnFailureListener
public void onFailure(Exception exc) {
this.latch.countDown();
}
@Override // com.google.android.gms.tasks.OnSuccessListener
public void onSuccess(TResult tresult) {
this.latch.countDown();
}
public boolean await(long j4, TimeUnit timeUnit) throws InterruptedException {
return this.latch.await(j4, timeUnit);
}
public /* synthetic */ AwaitListener(AnonymousClass1 anonymousClass1) {
this();
}
}
private ConfigCacheClient(Executor executor, ConfigStorageClient configStorageClient) {
this.executor = executor;
this.storageClient = configStorageClient;
}
private static <TResult> TResult await(Task<TResult> task, long j4, TimeUnit timeUnit) throws ExecutionException, InterruptedException, TimeoutException {
AwaitListener awaitListener = new AwaitListener();
Executor executor = DIRECT_EXECUTOR;
task.addOnSuccessListener(executor, awaitListener);
task.addOnFailureListener(executor, awaitListener);
task.addOnCanceledListener(executor, awaitListener);
if (!awaitListener.await(j4, timeUnit)) {
throw new TimeoutException("Task await timed out.");
}
if (task.isSuccessful()) {
return task.getResult();
}
throw new ExecutionException(task.getException());
}
public static synchronized void clearInstancesForTest() {
synchronized (ConfigCacheClient.class) {
clientInstances.clear();
}
}
public static synchronized ConfigCacheClient getInstance(Executor executor, ConfigStorageClient configStorageClient) {
ConfigCacheClient configCacheClient;
synchronized (ConfigCacheClient.class) {
try {
String fileName = configStorageClient.getFileName();
Map<String, ConfigCacheClient> map = clientInstances;
if (!map.containsKey(fileName)) {
map.put(fileName, new ConfigCacheClient(executor, configStorageClient));
}
configCacheClient = map.get(fileName);
} catch (Throwable th) {
throw th;
}
}
return configCacheClient;
}
public /* synthetic */ Void lambda$put$0(ConfigContainer configContainer) throws Exception {
return this.storageClient.write(configContainer);
}
public /* synthetic */ Task lambda$put$1(boolean z3, ConfigContainer configContainer, Void r32) throws Exception {
if (z3) {
updateInMemoryConfigContainer(configContainer);
}
return Tasks.forResult(configContainer);
}
private synchronized void updateInMemoryConfigContainer(ConfigContainer configContainer) {
this.cachedContainerTask = Tasks.forResult(configContainer);
}
public void clear() {
synchronized (this) {
this.cachedContainerTask = Tasks.forResult(null);
}
this.storageClient.clear();
}
public synchronized Task<ConfigContainer> get() {
try {
Task<ConfigContainer> task = this.cachedContainerTask;
if (task != null) {
if (task.isComplete() && !this.cachedContainerTask.isSuccessful()) {
}
}
Executor executor = this.executor;
ConfigStorageClient configStorageClient = this.storageClient;
Objects.requireNonNull(configStorageClient);
this.cachedContainerTask = Tasks.call(executor, new com.google.firebase.installations.b(configStorageClient, 2));
} catch (Throwable th) {
throw th;
}
return this.cachedContainerTask;
}
public ConfigContainer getBlocking() {
return getBlocking(DISK_READ_TIMEOUT_IN_SECONDS);
}
public synchronized Task<ConfigContainer> getCachedContainerTask() {
return this.cachedContainerTask;
}
public Task<ConfigContainer> put(ConfigContainer configContainer) {
return put(configContainer, true);
}
public ConfigContainer getBlocking(long j4) {
synchronized (this) {
try {
Task<ConfigContainer> task = this.cachedContainerTask;
if (task != null && task.isSuccessful()) {
return this.cachedContainerTask.getResult();
}
try {
return (ConfigContainer) await(get(), j4, TimeUnit.SECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e4) {
Log.d(FirebaseRemoteConfig.TAG, "Reading from storage file failed.", e4);
return null;
}
} catch (Throwable th) {
throw th;
}
}
}
public Task<ConfigContainer> put(final ConfigContainer configContainer, final boolean z3) {
return Tasks.call(this.executor, new com.google.firebase.crashlytics.internal.metadata.a(2, this, configContainer)).onSuccessTask(this.executor, new SuccessContinuation() { // from class: com.google.firebase.remoteconfig.internal.b
@Override // com.google.android.gms.tasks.SuccessContinuation
public final Task then(Object obj) {
Task lambda$put$1;
lambda$put$1 = ConfigCacheClient.this.lambda$put$1(z3, configContainer, (Void) obj);
return lambda$put$1;
}
});
}
}

View File

@@ -0,0 +1,247 @@
package com.google.firebase.remoteconfig.internal;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/* loaded from: classes3.dex */
public class ConfigContainer {
static final String ABT_EXPERIMENTS_KEY = "abt_experiments_key";
static final String CONFIGS_KEY = "configs_key";
private static final Date DEFAULTS_FETCH_TIME = new Date(0);
static final String FETCH_TIME_KEY = "fetch_time_key";
static final String PERSONALIZATION_METADATA_KEY = "personalization_metadata_key";
public static final String ROLLOUT_METADATA_AFFECTED_KEYS = "affectedParameterKeys";
public static final String ROLLOUT_METADATA_ID = "rolloutId";
static final String ROLLOUT_METADATA_KEY = "rollout_metadata_key";
public static final String ROLLOUT_METADATA_VARIANT_ID = "variantId";
static final String TEMPLATE_VERSION_NUMBER_KEY = "template_version_number_key";
private JSONArray abtExperiments;
private JSONObject configsJson;
private JSONObject containerJson;
private Date fetchTime;
private JSONObject personalizationMetadata;
private JSONArray rolloutMetadata;
private long templateVersionNumber;
/* loaded from: classes3.dex */
public static class Builder {
private JSONArray builderAbtExperiments;
private JSONObject builderConfigsJson;
private Date builderFetchTime;
private JSONObject builderPersonalizationMetadata;
private JSONArray builderRolloutMetadata;
private long builderTemplateVersionNumber;
public ConfigContainer build() throws JSONException {
return new ConfigContainer(this.builderConfigsJson, this.builderFetchTime, this.builderAbtExperiments, this.builderPersonalizationMetadata, this.builderTemplateVersionNumber, this.builderRolloutMetadata);
}
public Builder replaceConfigsWith(Map<String, String> map) {
this.builderConfigsJson = new JSONObject(map);
return this;
}
public Builder withAbtExperiments(JSONArray jSONArray) {
try {
this.builderAbtExperiments = new JSONArray(jSONArray.toString());
} catch (JSONException unused) {
}
return this;
}
public Builder withFetchTime(Date date) {
this.builderFetchTime = date;
return this;
}
public Builder withPersonalizationMetadata(JSONObject jSONObject) {
try {
this.builderPersonalizationMetadata = new JSONObject(jSONObject.toString());
} catch (JSONException unused) {
}
return this;
}
public Builder withRolloutMetadata(JSONArray jSONArray) {
try {
this.builderRolloutMetadata = new JSONArray(jSONArray.toString());
} catch (JSONException unused) {
}
return this;
}
public Builder withTemplateVersionNumber(long j4) {
this.builderTemplateVersionNumber = j4;
return this;
}
private Builder() {
this.builderConfigsJson = new JSONObject();
this.builderFetchTime = ConfigContainer.DEFAULTS_FETCH_TIME;
this.builderAbtExperiments = new JSONArray();
this.builderPersonalizationMetadata = new JSONObject();
this.builderTemplateVersionNumber = 0L;
this.builderRolloutMetadata = new JSONArray();
}
public Builder replaceConfigsWith(JSONObject jSONObject) {
try {
this.builderConfigsJson = new JSONObject(jSONObject.toString());
} catch (JSONException unused) {
}
return this;
}
public Builder(ConfigContainer configContainer) {
this.builderConfigsJson = configContainer.getConfigs();
this.builderFetchTime = configContainer.getFetchTime();
this.builderAbtExperiments = configContainer.getAbtExperiments();
this.builderPersonalizationMetadata = configContainer.getPersonalizationMetadata();
this.builderTemplateVersionNumber = configContainer.getTemplateVersionNumber();
this.builderRolloutMetadata = configContainer.getRolloutMetadata();
}
}
public static ConfigContainer copyOf(JSONObject jSONObject) throws JSONException {
JSONObject optJSONObject = jSONObject.optJSONObject(PERSONALIZATION_METADATA_KEY);
if (optJSONObject == null) {
optJSONObject = new JSONObject();
}
JSONObject jSONObject2 = optJSONObject;
JSONArray optJSONArray = jSONObject.optJSONArray(ROLLOUT_METADATA_KEY);
if (optJSONArray == null) {
optJSONArray = new JSONArray();
}
return new ConfigContainer(jSONObject.getJSONObject(CONFIGS_KEY), new Date(jSONObject.getLong(FETCH_TIME_KEY)), jSONObject.getJSONArray(ABT_EXPERIMENTS_KEY), jSONObject2, jSONObject.optLong(TEMPLATE_VERSION_NUMBER_KEY), optJSONArray);
}
private Map<String, Map<String, String>> createRolloutParameterKeyMap() throws JSONException {
HashMap hashMap = new HashMap();
for (int i = 0; i < getRolloutMetadata().length(); i++) {
JSONObject jSONObject = getRolloutMetadata().getJSONObject(i);
String string = jSONObject.getString(ROLLOUT_METADATA_ID);
String string2 = jSONObject.getString("variantId");
JSONArray jSONArray = jSONObject.getJSONArray(ROLLOUT_METADATA_AFFECTED_KEYS);
for (int i4 = 0; i4 < jSONArray.length(); i4++) {
String string3 = jSONArray.getString(i4);
if (!hashMap.containsKey(string3)) {
hashMap.put(string3, new HashMap());
}
Map map = (Map) hashMap.get(string3);
if (map != null) {
map.put(string, string2);
}
}
}
return hashMap;
}
private static ConfigContainer deepCopyOf(JSONObject jSONObject) throws JSONException {
return copyOf(new JSONObject(jSONObject.toString()));
}
public static Builder newBuilder() {
return new Builder();
}
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj instanceof ConfigContainer) {
return this.containerJson.toString().equals(((ConfigContainer) obj).toString());
}
return false;
}
public JSONArray getAbtExperiments() {
return this.abtExperiments;
}
public Set<String> getChangedParams(ConfigContainer configContainer) throws JSONException {
JSONObject configs = deepCopyOf(configContainer.containerJson).getConfigs();
Map<String, Map<String, String>> createRolloutParameterKeyMap = createRolloutParameterKeyMap();
Map<String, Map<String, String>> createRolloutParameterKeyMap2 = configContainer.createRolloutParameterKeyMap();
HashSet hashSet = new HashSet();
Iterator<String> keys = getConfigs().keys();
while (keys.hasNext()) {
String next = keys.next();
if (!configContainer.getConfigs().has(next)) {
hashSet.add(next);
} else if (!getConfigs().get(next).equals(configContainer.getConfigs().get(next))) {
hashSet.add(next);
} else if ((getPersonalizationMetadata().has(next) && !configContainer.getPersonalizationMetadata().has(next)) || (!getPersonalizationMetadata().has(next) && configContainer.getPersonalizationMetadata().has(next))) {
hashSet.add(next);
} else if (getPersonalizationMetadata().has(next) && configContainer.getPersonalizationMetadata().has(next) && !getPersonalizationMetadata().getJSONObject(next).toString().equals(configContainer.getPersonalizationMetadata().getJSONObject(next).toString())) {
hashSet.add(next);
} else if (createRolloutParameterKeyMap.containsKey(next) != createRolloutParameterKeyMap2.containsKey(next)) {
hashSet.add(next);
} else if (createRolloutParameterKeyMap.containsKey(next) && createRolloutParameterKeyMap2.containsKey(next) && !createRolloutParameterKeyMap.get(next).equals(createRolloutParameterKeyMap2.get(next))) {
hashSet.add(next);
} else {
configs.remove(next);
}
}
Iterator<String> keys2 = configs.keys();
while (keys2.hasNext()) {
hashSet.add(keys2.next());
}
return hashSet;
}
public JSONObject getConfigs() {
return this.configsJson;
}
public Date getFetchTime() {
return this.fetchTime;
}
public JSONObject getPersonalizationMetadata() {
return this.personalizationMetadata;
}
public JSONArray getRolloutMetadata() {
return this.rolloutMetadata;
}
public long getTemplateVersionNumber() {
return this.templateVersionNumber;
}
public int hashCode() {
return this.containerJson.hashCode();
}
public String toString() {
return this.containerJson.toString();
}
private ConfigContainer(JSONObject jSONObject, Date date, JSONArray jSONArray, JSONObject jSONObject2, long j4, JSONArray jSONArray2) throws JSONException {
JSONObject jSONObject3 = new JSONObject();
jSONObject3.put(CONFIGS_KEY, jSONObject);
jSONObject3.put(FETCH_TIME_KEY, date.getTime());
jSONObject3.put(ABT_EXPERIMENTS_KEY, jSONArray);
jSONObject3.put(PERSONALIZATION_METADATA_KEY, jSONObject2);
jSONObject3.put(TEMPLATE_VERSION_NUMBER_KEY, j4);
jSONObject3.put(ROLLOUT_METADATA_KEY, jSONArray2);
this.configsJson = jSONObject;
this.fetchTime = date;
this.abtExperiments = jSONArray;
this.personalizationMetadata = jSONObject2;
this.templateVersionNumber = j4;
this.rolloutMetadata = jSONArray2;
this.containerJson = jSONObject3;
}
public static Builder newBuilder(ConfigContainer configContainer) {
return new Builder(configContainer);
}
}

View File

@@ -0,0 +1,343 @@
package com.google.firebase.remoteconfig.internal;
import C.w;
import I2.k;
import android.text.format.DateUtils;
import c2.i;
import c2.j;
import com.google.android.gms.common.util.Clock;
import com.google.android.gms.tasks.Continuation;
import com.google.android.gms.tasks.Task;
import com.google.android.gms.tasks.Tasks;
import com.google.firebase.analytics.connector.AnalyticsConnector;
import com.google.firebase.inject.Provider;
import com.google.firebase.installations.FirebaseInstallationsApi;
import com.google.firebase.installations.InstallationTokenResult;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigClientException;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigException;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigFetchThrottledException;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigServerException;
import com.google.firebase.remoteconfig.internal.ConfigMetadataClient;
import com.google.firebase.sessions.settings.RemoteSettings;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;
/* loaded from: classes3.dex */
public class ConfigFetchHandler {
static final String FIRST_OPEN_TIME_KEY = "_fot";
static final int HTTP_TOO_MANY_REQUESTS = 429;
private static final String X_FIREBASE_RC_FETCH_TYPE = "X-Firebase-RC-Fetch-Type";
private final Provider<AnalyticsConnector> analyticsConnector;
private final Clock clock;
private final Map<String, String> customHttpHeaders;
private final Executor executor;
private final ConfigCacheClient fetchedConfigsCache;
private final FirebaseInstallationsApi firebaseInstallations;
private final ConfigFetchHttpClient frcBackendApiClient;
private final ConfigMetadataClient frcMetadata;
private final Random randomGenerator;
public static final long DEFAULT_MINIMUM_FETCH_INTERVAL_IN_SECONDS = TimeUnit.HOURS.toSeconds(12);
static final int[] BACKOFF_TIME_DURATIONS_IN_MINUTES = {2, 4, 8, 16, 32, 64, 128, 256};
/* loaded from: classes3.dex */
public static class FetchResponse {
private final Date fetchTime;
private final ConfigContainer fetchedConfigs;
private final String lastFetchETag;
private final int status;
@Retention(RetentionPolicy.SOURCE)
/* loaded from: classes3.dex */
public @interface Status {
public static final int BACKEND_HAS_NO_UPDATES = 1;
public static final int BACKEND_UPDATES_FETCHED = 0;
public static final int LOCAL_STORAGE_USED = 2;
}
private FetchResponse(Date date, int i, ConfigContainer configContainer, String str) {
this.fetchTime = date;
this.status = i;
this.fetchedConfigs = configContainer;
this.lastFetchETag = str;
}
public static FetchResponse forBackendHasNoUpdates(Date date, ConfigContainer configContainer) {
return new FetchResponse(date, 1, configContainer, null);
}
public static FetchResponse forBackendUpdatesFetched(ConfigContainer configContainer, String str) {
return new FetchResponse(configContainer.getFetchTime(), 0, configContainer, str);
}
public static FetchResponse forLocalStorageUsed(Date date) {
return new FetchResponse(date, 2, null, null);
}
public Date getFetchTime() {
return this.fetchTime;
}
public ConfigContainer getFetchedConfigs() {
return this.fetchedConfigs;
}
public String getLastFetchETag() {
return this.lastFetchETag;
}
public int getStatus() {
return this.status;
}
}
/* loaded from: classes3.dex */
public enum FetchType {
BASE("BASE"),
REALTIME("REALTIME");
private final String value;
FetchType(String str) {
this.value = str;
}
public String getValue() {
return this.value;
}
}
public ConfigFetchHandler(FirebaseInstallationsApi firebaseInstallationsApi, Provider<AnalyticsConnector> provider, Executor executor, Clock clock, Random random, ConfigCacheClient configCacheClient, ConfigFetchHttpClient configFetchHttpClient, ConfigMetadataClient configMetadataClient, Map<String, String> map) {
this.firebaseInstallations = firebaseInstallationsApi;
this.analyticsConnector = provider;
this.executor = executor;
this.clock = clock;
this.randomGenerator = random;
this.fetchedConfigsCache = configCacheClient;
this.frcBackendApiClient = configFetchHttpClient;
this.frcMetadata = configMetadataClient;
this.customHttpHeaders = map;
}
private boolean areCachedFetchConfigsValid(long j4, Date date) {
Date lastSuccessfulFetchTime = this.frcMetadata.getLastSuccessfulFetchTime();
if (lastSuccessfulFetchTime.equals(ConfigMetadataClient.LAST_FETCH_TIME_NO_FETCH_YET)) {
return false;
}
return date.before(new Date(TimeUnit.SECONDS.toMillis(j4) + lastSuccessfulFetchTime.getTime()));
}
private FirebaseRemoteConfigServerException createExceptionWithGenericMessage(FirebaseRemoteConfigServerException firebaseRemoteConfigServerException) throws FirebaseRemoteConfigClientException {
String str;
int httpStatusCode = firebaseRemoteConfigServerException.getHttpStatusCode();
if (httpStatusCode == 401) {
str = "The request did not have the required credentials. Please make sure your google-services.json is valid.";
} else if (httpStatusCode == 403) {
str = "The user is not authorized to access the project. Please make sure you are using the API key that corresponds to your Firebase project.";
} else {
if (httpStatusCode == HTTP_TOO_MANY_REQUESTS) {
throw new FirebaseRemoteConfigClientException("The throttled response from the server was not handled correctly by the FRC SDK.");
}
if (httpStatusCode != 500) {
switch (httpStatusCode) {
case 502:
case 503:
case 504:
str = "The server is unavailable. Please try again later.";
break;
default:
str = "The server returned an unexpected error.";
break;
}
} else {
str = "There was an internal server error.";
}
}
return new FirebaseRemoteConfigServerException(firebaseRemoteConfigServerException.getHttpStatusCode(), "Fetch failed: ".concat(str), firebaseRemoteConfigServerException);
}
private String createThrottledMessage(long j4) {
return w.z("Fetch is throttled. Please wait before calling fetch again: ", DateUtils.formatElapsedTime(TimeUnit.MILLISECONDS.toSeconds(j4)));
}
private FetchResponse fetchFromBackend(String str, String str2, Date date, Map<String, String> map) throws FirebaseRemoteConfigException {
Date date2;
try {
date2 = date;
} catch (FirebaseRemoteConfigServerException e4) {
e = e4;
date2 = date;
}
try {
FetchResponse fetch = this.frcBackendApiClient.fetch(this.frcBackendApiClient.createHttpURLConnection(), str, str2, getUserProperties(), this.frcMetadata.getLastFetchETag(), map, getFirstOpenTime(), date2);
if (fetch.getFetchedConfigs() != null) {
this.frcMetadata.setLastTemplateVersion(fetch.getFetchedConfigs().getTemplateVersionNumber());
}
if (fetch.getLastFetchETag() != null) {
this.frcMetadata.setLastFetchETag(fetch.getLastFetchETag());
}
this.frcMetadata.resetBackoff();
return fetch;
} catch (FirebaseRemoteConfigServerException e5) {
e = e5;
FirebaseRemoteConfigServerException firebaseRemoteConfigServerException = e;
ConfigMetadataClient.BackoffMetadata updateAndReturnBackoffMetadata = updateAndReturnBackoffMetadata(firebaseRemoteConfigServerException.getHttpStatusCode(), date2);
if (shouldThrottle(updateAndReturnBackoffMetadata, firebaseRemoteConfigServerException.getHttpStatusCode())) {
throw new FirebaseRemoteConfigFetchThrottledException(updateAndReturnBackoffMetadata.getBackoffEndTime().getTime());
}
throw createExceptionWithGenericMessage(firebaseRemoteConfigServerException);
}
}
private Task<FetchResponse> fetchFromBackendAndCacheResponse(String str, String str2, Date date, Map<String, String> map) {
try {
FetchResponse fetchFromBackend = fetchFromBackend(str, str2, date, map);
return fetchFromBackend.getStatus() != 0 ? Tasks.forResult(fetchFromBackend) : this.fetchedConfigsCache.put(fetchFromBackend.getFetchedConfigs()).onSuccessTask(this.executor, new k(fetchFromBackend, 20));
} catch (FirebaseRemoteConfigException e4) {
return Tasks.forException(e4);
}
}
/* JADX INFO: Access modifiers changed from: private */
/* renamed from: fetchIfCacheExpiredAndNotThrottled, reason: merged with bridge method [inline-methods] */
public Task<FetchResponse> lambda$fetch$0(Task<ConfigContainer> task, long j4, final Map<String, String> map) {
final ConfigFetchHandler configFetchHandler;
Task continueWithTask;
final Date date = new Date(this.clock.currentTimeMillis());
if (task.isSuccessful() && areCachedFetchConfigsValid(j4, date)) {
return Tasks.forResult(FetchResponse.forLocalStorageUsed(date));
}
Date backoffEndTimeInMillis = getBackoffEndTimeInMillis(date);
if (backoffEndTimeInMillis != null) {
continueWithTask = Tasks.forException(new FirebaseRemoteConfigFetchThrottledException(createThrottledMessage(backoffEndTimeInMillis.getTime() - date.getTime()), backoffEndTimeInMillis.getTime()));
configFetchHandler = this;
} else {
final Task<String> id = this.firebaseInstallations.getId();
final Task<InstallationTokenResult> token = this.firebaseInstallations.getToken(false);
configFetchHandler = this;
continueWithTask = Tasks.whenAllComplete((Task<?>[]) new Task[]{id, token}).continueWithTask(this.executor, new Continuation() { // from class: com.google.firebase.remoteconfig.internal.c
@Override // com.google.android.gms.tasks.Continuation
public final Object then(Task task2) {
Task lambda$fetchIfCacheExpiredAndNotThrottled$2;
lambda$fetchIfCacheExpiredAndNotThrottled$2 = ConfigFetchHandler.this.lambda$fetchIfCacheExpiredAndNotThrottled$2(id, token, date, map, task2);
return lambda$fetchIfCacheExpiredAndNotThrottled$2;
}
});
}
return continueWithTask.continueWithTask(configFetchHandler.executor, new i(2, configFetchHandler, date));
}
private Date getBackoffEndTimeInMillis(Date date) {
Date backoffEndTime = this.frcMetadata.getBackoffMetadata().getBackoffEndTime();
if (date.before(backoffEndTime)) {
return backoffEndTime;
}
return null;
}
private Long getFirstOpenTime() {
AnalyticsConnector analyticsConnector = this.analyticsConnector.get();
if (analyticsConnector == null) {
return null;
}
return (Long) analyticsConnector.getUserProperties(true).get(FIRST_OPEN_TIME_KEY);
}
private long getRandomizedBackoffDurationInMillis(int i) {
TimeUnit timeUnit = TimeUnit.MINUTES;
int[] iArr = BACKOFF_TIME_DURATIONS_IN_MINUTES;
return (timeUnit.toMillis(iArr[Math.min(i, iArr.length) - 1]) / 2) + this.randomGenerator.nextInt((int) r0);
}
private Map<String, String> getUserProperties() {
HashMap hashMap = new HashMap();
AnalyticsConnector analyticsConnector = this.analyticsConnector.get();
if (analyticsConnector != null) {
for (Map.Entry<String, Object> entry : analyticsConnector.getUserProperties(false).entrySet()) {
hashMap.put(entry.getKey(), entry.getValue().toString());
}
}
return hashMap;
}
private boolean isThrottleableServerError(int i) {
return i == HTTP_TOO_MANY_REQUESTS || i == 502 || i == 503 || i == 504;
}
/* JADX INFO: Access modifiers changed from: private */
public /* synthetic */ Task lambda$fetchIfCacheExpiredAndNotThrottled$2(Task task, Task task2, Date date, Map map, Task task3) throws Exception {
return !task.isSuccessful() ? Tasks.forException(new FirebaseRemoteConfigClientException("Firebase Installations failed to get installation ID for fetch.", task.getException())) : !task2.isSuccessful() ? Tasks.forException(new FirebaseRemoteConfigClientException("Firebase Installations failed to get installation auth token for fetch.", task2.getException())) : fetchFromBackendAndCacheResponse((String) task.getResult(), ((InstallationTokenResult) task2.getResult()).getToken(), date, map);
}
/* JADX INFO: Access modifiers changed from: private */
public /* synthetic */ Task lambda$fetchIfCacheExpiredAndNotThrottled$3(Date date, Task task) throws Exception {
updateLastFetchStatusAndTime(task, date);
return task;
}
/* JADX INFO: Access modifiers changed from: private */
public /* synthetic */ Task lambda$fetchNowWithTypeAndAttemptNumber$1(Map map, Task task) throws Exception {
return lambda$fetch$0(task, 0L, map);
}
private boolean shouldThrottle(ConfigMetadataClient.BackoffMetadata backoffMetadata, int i) {
return backoffMetadata.getNumFailedFetches() > 1 || i == HTTP_TOO_MANY_REQUESTS;
}
private ConfigMetadataClient.BackoffMetadata updateAndReturnBackoffMetadata(int i, Date date) {
if (isThrottleableServerError(i)) {
updateBackoffMetadataWithLastFailedFetchTime(date);
}
return this.frcMetadata.getBackoffMetadata();
}
private void updateBackoffMetadataWithLastFailedFetchTime(Date date) {
int numFailedFetches = this.frcMetadata.getBackoffMetadata().getNumFailedFetches() + 1;
this.frcMetadata.setBackoffMetadata(numFailedFetches, new Date(date.getTime() + getRandomizedBackoffDurationInMillis(numFailedFetches)));
}
private void updateLastFetchStatusAndTime(Task<FetchResponse> task, Date date) {
if (task.isSuccessful()) {
this.frcMetadata.updateLastFetchAsSuccessfulAt(date);
return;
}
Exception exception = task.getException();
if (exception == null) {
return;
}
if (exception instanceof FirebaseRemoteConfigFetchThrottledException) {
this.frcMetadata.updateLastFetchAsThrottled();
} else {
this.frcMetadata.updateLastFetchAsFailed();
}
}
public Task<FetchResponse> fetch() {
return fetch(this.frcMetadata.getMinimumFetchIntervalInSeconds());
}
public Task<FetchResponse> fetchNowWithTypeAndAttemptNumber(FetchType fetchType, int i) {
HashMap hashMap = new HashMap(this.customHttpHeaders);
hashMap.put(X_FIREBASE_RC_FETCH_TYPE, fetchType.getValue() + RemoteSettings.FORWARD_SLASH_STRING + i);
return this.fetchedConfigsCache.get().continueWithTask(this.executor, new i(3, this, hashMap));
}
public Provider<AnalyticsConnector> getAnalyticsConnector() {
return this.analyticsConnector;
}
public long getTemplateVersionNumber() {
return this.frcMetadata.getLastTemplateVersion();
}
public Task<FetchResponse> fetch(long j4) {
HashMap hashMap = new HashMap(this.customHttpHeaders);
hashMap.put(X_FIREBASE_RC_FETCH_TYPE, FetchType.BASE.getValue() + "/1");
return this.fetchedConfigsCache.get().continueWithTask(this.executor, new j(this, j4, hashMap));
}
}

View File

@@ -0,0 +1,280 @@
package com.google.firebase.remoteconfig.internal;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Build;
import android.util.Log;
import androidx.annotation.Keep;
import com.google.android.gms.common.util.AndroidUtilsLight;
import com.google.android.gms.common.util.Hex;
import com.google.firebase.remoteconfig.BuildConfig;
import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigClientException;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigException;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigServerException;
import com.google.firebase.remoteconfig.RemoteConfigConstants;
import com.google.firebase.remoteconfig.internal.ConfigContainer;
import com.google.firebase.remoteconfig.internal.ConfigFetchHandler;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.TimeZone;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/* loaded from: classes3.dex */
public class ConfigFetchHttpClient {
private static final String API_KEY_HEADER = "X-Goog-Api-Key";
private static final String ETAG_HEADER = "ETag";
private static final Pattern GMP_APP_ID_PATTERN = Pattern.compile("^[^:]+:([0-9]+):(android|ios|web):([0-9a-f]+)");
private static final String IF_NONE_MATCH_HEADER = "If-None-Match";
private static final String INSTALLATIONS_AUTH_TOKEN_HEADER = "X-Goog-Firebase-Installations-Auth";
private static final String ISO_DATE_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
private static final String X_ANDROID_CERT_HEADER = "X-Android-Cert";
private static final String X_ANDROID_PACKAGE_HEADER = "X-Android-Package";
private static final String X_GOOGLE_GFE_CAN_RETRY = "X-Google-GFE-Can-Retry";
private final String apiKey;
private final String appId;
private final long connectTimeoutInSeconds;
private final Context context;
private final String namespace;
private final String projectNumber;
private final long readTimeoutInSeconds;
public ConfigFetchHttpClient(Context context, String str, String str2, String str3, long j4, long j5) {
this.context = context;
this.appId = str;
this.apiKey = str2;
this.projectNumber = extractProjectNumberFromAppId(str);
this.namespace = str3;
this.connectTimeoutInSeconds = j4;
this.readTimeoutInSeconds = j5;
}
private boolean backendHasUpdates(JSONObject jSONObject) {
try {
return true ^ jSONObject.get(RemoteConfigConstants.ResponseFieldKey.STATE).equals("NO_CHANGE");
} catch (JSONException unused) {
return true;
}
}
private String convertToISOString(long j4) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(ISO_DATE_PATTERN, Locale.US);
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
return simpleDateFormat.format(Long.valueOf(j4));
}
private JSONObject createFetchRequestBody(String str, String str2, Map<String, String> map, Long l4) throws FirebaseRemoteConfigClientException {
HashMap hashMap = new HashMap();
if (str == null) {
throw new FirebaseRemoteConfigClientException("Fetch failed: Firebase installation id is null.");
}
hashMap.put(RemoteConfigConstants.RequestFieldKey.INSTANCE_ID, str);
hashMap.put(RemoteConfigConstants.RequestFieldKey.INSTANCE_ID_TOKEN, str2);
hashMap.put(RemoteConfigConstants.RequestFieldKey.APP_ID, this.appId);
Locale locale = this.context.getResources().getConfiguration().locale;
hashMap.put(RemoteConfigConstants.RequestFieldKey.COUNTRY_CODE, locale.getCountry());
int i = Build.VERSION.SDK_INT;
hashMap.put(RemoteConfigConstants.RequestFieldKey.LANGUAGE_CODE, locale.toLanguageTag());
hashMap.put(RemoteConfigConstants.RequestFieldKey.PLATFORM_VERSION, Integer.toString(i));
hashMap.put(RemoteConfigConstants.RequestFieldKey.TIME_ZONE, TimeZone.getDefault().getID());
try {
PackageInfo packageInfo = this.context.getPackageManager().getPackageInfo(this.context.getPackageName(), 0);
if (packageInfo != null) {
hashMap.put(RemoteConfigConstants.RequestFieldKey.APP_VERSION, packageInfo.versionName);
hashMap.put(RemoteConfigConstants.RequestFieldKey.APP_BUILD, Long.toString(E.a.b(packageInfo)));
}
} catch (PackageManager.NameNotFoundException unused) {
}
hashMap.put(RemoteConfigConstants.RequestFieldKey.PACKAGE_NAME, this.context.getPackageName());
hashMap.put(RemoteConfigConstants.RequestFieldKey.SDK_VERSION, BuildConfig.VERSION_NAME);
hashMap.put(RemoteConfigConstants.RequestFieldKey.ANALYTICS_USER_PROPERTIES, new JSONObject(map));
if (l4 != null) {
hashMap.put(RemoteConfigConstants.RequestFieldKey.FIRST_OPEN_TIME, convertToISOString(l4.longValue()));
}
return new JSONObject(hashMap);
}
private static ConfigContainer extractConfigs(JSONObject jSONObject, Date date) throws FirebaseRemoteConfigClientException {
JSONObject jSONObject2;
JSONArray jSONArray;
JSONObject jSONObject3;
try {
ConfigContainer.Builder withFetchTime = ConfigContainer.newBuilder().withFetchTime(date);
JSONArray jSONArray2 = null;
try {
jSONObject2 = jSONObject.getJSONObject(RemoteConfigConstants.ResponseFieldKey.ENTRIES);
} catch (JSONException unused) {
jSONObject2 = null;
}
if (jSONObject2 != null) {
withFetchTime = withFetchTime.replaceConfigsWith(jSONObject2);
}
try {
jSONArray = jSONObject.getJSONArray(RemoteConfigConstants.ResponseFieldKey.EXPERIMENT_DESCRIPTIONS);
} catch (JSONException unused2) {
jSONArray = null;
}
if (jSONArray != null) {
withFetchTime = withFetchTime.withAbtExperiments(jSONArray);
}
try {
jSONObject3 = jSONObject.getJSONObject(RemoteConfigConstants.ResponseFieldKey.PERSONALIZATION_METADATA);
} catch (JSONException unused3) {
jSONObject3 = null;
}
if (jSONObject3 != null) {
withFetchTime = withFetchTime.withPersonalizationMetadata(jSONObject3);
}
String string = jSONObject.has(RemoteConfigConstants.ResponseFieldKey.TEMPLATE_VERSION_NUMBER) ? jSONObject.getString(RemoteConfigConstants.ResponseFieldKey.TEMPLATE_VERSION_NUMBER) : null;
if (string != null) {
withFetchTime.withTemplateVersionNumber(Long.parseLong(string));
}
try {
jSONArray2 = jSONObject.getJSONArray(RemoteConfigConstants.ResponseFieldKey.ROLLOUT_METADATA);
} catch (JSONException unused4) {
}
if (jSONArray2 != null) {
withFetchTime = withFetchTime.withRolloutMetadata(jSONArray2);
}
return withFetchTime.build();
} catch (JSONException e4) {
throw new FirebaseRemoteConfigClientException("Fetch failed: fetch response could not be parsed.", e4);
}
}
private static String extractProjectNumberFromAppId(String str) {
Matcher matcher = GMP_APP_ID_PATTERN.matcher(str);
if (matcher.matches()) {
return matcher.group(1);
}
return null;
}
private JSONObject getFetchResponseBody(URLConnection uRLConnection) throws IOException, JSONException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(uRLConnection.getInputStream(), "utf-8"));
StringBuilder sb = new StringBuilder();
while (true) {
int read = bufferedReader.read();
if (read == -1) {
return new JSONObject(sb.toString());
}
sb.append((char) read);
}
}
private String getFetchUrl(String str, String str2) {
return "https://firebaseremoteconfig.googleapis.com/v1/projects/" + str + "/namespaces/" + str2 + ":fetch";
}
private String getFingerprintHashForPackage() {
try {
Context context = this.context;
byte[] packageCertificateHashBytes = AndroidUtilsLight.getPackageCertificateHashBytes(context, context.getPackageName());
if (packageCertificateHashBytes != null) {
return Hex.bytesToStringUppercase(packageCertificateHashBytes, false);
}
Log.e(FirebaseRemoteConfig.TAG, "Could not get fingerprint hash for package: " + this.context.getPackageName());
return null;
} catch (PackageManager.NameNotFoundException e4) {
Log.e(FirebaseRemoteConfig.TAG, "No such package: " + this.context.getPackageName(), e4);
return null;
}
}
private void setCommonRequestHeaders(HttpURLConnection httpURLConnection, String str) {
httpURLConnection.setRequestProperty(API_KEY_HEADER, this.apiKey);
httpURLConnection.setRequestProperty(X_ANDROID_PACKAGE_HEADER, this.context.getPackageName());
httpURLConnection.setRequestProperty(X_ANDROID_CERT_HEADER, getFingerprintHashForPackage());
httpURLConnection.setRequestProperty(X_GOOGLE_GFE_CAN_RETRY, "yes");
httpURLConnection.setRequestProperty(INSTALLATIONS_AUTH_TOKEN_HEADER, str);
httpURLConnection.setRequestProperty("Content-Type", "application/json");
httpURLConnection.setRequestProperty("Accept", "application/json");
}
private void setCustomRequestHeaders(HttpURLConnection httpURLConnection, Map<String, String> map) {
for (Map.Entry<String, String> entry : map.entrySet()) {
httpURLConnection.setRequestProperty(entry.getKey(), entry.getValue());
}
}
private void setFetchRequestBody(HttpURLConnection httpURLConnection, byte[] bArr) throws IOException {
httpURLConnection.setFixedLengthStreamingMode(bArr.length);
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(httpURLConnection.getOutputStream());
bufferedOutputStream.write(bArr);
bufferedOutputStream.flush();
bufferedOutputStream.close();
}
private void setUpUrlConnection(HttpURLConnection httpURLConnection, String str, String str2, Map<String, String> map) {
httpURLConnection.setDoOutput(true);
TimeUnit timeUnit = TimeUnit.SECONDS;
httpURLConnection.setConnectTimeout((int) timeUnit.toMillis(this.connectTimeoutInSeconds));
httpURLConnection.setReadTimeout((int) timeUnit.toMillis(this.readTimeoutInSeconds));
httpURLConnection.setRequestProperty(IF_NONE_MATCH_HEADER, str);
setCommonRequestHeaders(httpURLConnection, str2);
setCustomRequestHeaders(httpURLConnection, map);
}
public HttpURLConnection createHttpURLConnection() throws FirebaseRemoteConfigException {
try {
return (HttpURLConnection) new URL(getFetchUrl(this.projectNumber, this.namespace)).openConnection();
} catch (IOException e4) {
throw new FirebaseRemoteConfigException(e4.getMessage());
}
}
@Keep
public ConfigFetchHandler.FetchResponse fetch(HttpURLConnection httpURLConnection, String str, String str2, Map<String, String> map, String str3, Map<String, String> map2, Long l4, Date date) throws FirebaseRemoteConfigException {
setUpUrlConnection(httpURLConnection, str3, str2, map2);
try {
try {
setFetchRequestBody(httpURLConnection, createFetchRequestBody(str, str2, map, l4).toString().getBytes("utf-8"));
httpURLConnection.connect();
int responseCode = httpURLConnection.getResponseCode();
if (responseCode != 200) {
throw new FirebaseRemoteConfigServerException(responseCode, httpURLConnection.getResponseMessage());
}
String headerField = httpURLConnection.getHeaderField(ETAG_HEADER);
JSONObject fetchResponseBody = getFetchResponseBody(httpURLConnection);
try {
httpURLConnection.getInputStream().close();
} catch (IOException unused) {
}
ConfigContainer extractConfigs = extractConfigs(fetchResponseBody, date);
return !backendHasUpdates(fetchResponseBody) ? ConfigFetchHandler.FetchResponse.forBackendHasNoUpdates(date, extractConfigs) : ConfigFetchHandler.FetchResponse.forBackendUpdatesFetched(extractConfigs, headerField);
} catch (IOException | JSONException e4) {
throw new FirebaseRemoteConfigClientException("The client had an error while calling the backend!", e4);
}
} finally {
httpURLConnection.disconnect();
try {
httpURLConnection.getInputStream().close();
} catch (IOException unused2) {
}
}
}
public long getConnectTimeoutInSeconds() {
return this.connectTimeoutInSeconds;
}
public long getReadTimeoutInSeconds() {
return this.readTimeoutInSeconds;
}
}

View File

@@ -0,0 +1,252 @@
package com.google.firebase.remoteconfig.internal;
import android.util.Log;
import androidx.fragment.app.RunnableC0143e;
import com.google.android.gms.common.util.BiConsumer;
import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigValue;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.concurrent.Executor;
import java.util.regex.Pattern;
import org.json.JSONException;
/* loaded from: classes3.dex */
public class ConfigGetParameterHandler {
private final ConfigCacheClient activatedConfigsCache;
private final ConfigCacheClient defaultConfigsCache;
private final Executor executor;
private final Set<BiConsumer<String, ConfigContainer>> listeners = new HashSet();
public static final Charset FRC_BYTE_ARRAY_ENCODING = Charset.forName("UTF-8");
static final Pattern TRUE_REGEX = Pattern.compile("^(1|true|t|yes|y|on)$", 2);
static final Pattern FALSE_REGEX = Pattern.compile("^(0|false|f|no|n|off|)$", 2);
public ConfigGetParameterHandler(Executor executor, ConfigCacheClient configCacheClient, ConfigCacheClient configCacheClient2) {
this.executor = executor;
this.activatedConfigsCache = configCacheClient;
this.defaultConfigsCache = configCacheClient2;
}
public static /* synthetic */ void a(BiConsumer biConsumer, String str, ConfigContainer configContainer) {
biConsumer.accept(str, configContainer);
}
private void callListeners(String str, ConfigContainer configContainer) {
if (configContainer == null) {
return;
}
synchronized (this.listeners) {
try {
Iterator<BiConsumer<String, ConfigContainer>> it = this.listeners.iterator();
while (it.hasNext()) {
this.executor.execute(new RunnableC0143e(it.next(), str, configContainer, 4));
}
} catch (Throwable th) {
throw th;
}
}
}
private static ConfigContainer getConfigsFromCache(ConfigCacheClient configCacheClient) {
return configCacheClient.getBlocking();
}
private static Double getDoubleFromCache(ConfigCacheClient configCacheClient, String str) {
ConfigContainer configsFromCache = getConfigsFromCache(configCacheClient);
if (configsFromCache == null) {
return null;
}
try {
return Double.valueOf(configsFromCache.getConfigs().getDouble(str));
} catch (JSONException unused) {
return null;
}
}
private static Set<String> getKeySetFromCache(ConfigCacheClient configCacheClient) {
HashSet hashSet = new HashSet();
ConfigContainer configsFromCache = getConfigsFromCache(configCacheClient);
if (configsFromCache != null) {
Iterator<String> keys = configsFromCache.getConfigs().keys();
while (keys.hasNext()) {
hashSet.add(keys.next());
}
}
return hashSet;
}
private static Long getLongFromCache(ConfigCacheClient configCacheClient, String str) {
ConfigContainer configsFromCache = getConfigsFromCache(configCacheClient);
if (configsFromCache == null) {
return null;
}
try {
return Long.valueOf(configsFromCache.getConfigs().getLong(str));
} catch (JSONException unused) {
return null;
}
}
private static String getStringFromCache(ConfigCacheClient configCacheClient, String str) {
ConfigContainer configsFromCache = getConfigsFromCache(configCacheClient);
if (configsFromCache == null) {
return null;
}
try {
return configsFromCache.getConfigs().getString(str);
} catch (JSONException unused) {
return null;
}
}
private static void logParameterValueDoesNotExist(String str, String str2) {
Log.w(FirebaseRemoteConfig.TAG, "No value of type '" + str2 + "' exists for parameter key '" + str + "'.");
}
public void addListener(BiConsumer<String, ConfigContainer> biConsumer) {
synchronized (this.listeners) {
this.listeners.add(biConsumer);
}
}
public Map<String, FirebaseRemoteConfigValue> getAll() {
HashSet hashSet = new HashSet();
hashSet.addAll(getKeySetFromCache(this.activatedConfigsCache));
hashSet.addAll(getKeySetFromCache(this.defaultConfigsCache));
HashMap hashMap = new HashMap();
Iterator it = hashSet.iterator();
while (it.hasNext()) {
String str = (String) it.next();
hashMap.put(str, getValue(str));
}
return hashMap;
}
public boolean getBoolean(String str) {
String stringFromCache = getStringFromCache(this.activatedConfigsCache, str);
if (stringFromCache != null) {
if (TRUE_REGEX.matcher(stringFromCache).matches()) {
callListeners(str, getConfigsFromCache(this.activatedConfigsCache));
return true;
}
if (FALSE_REGEX.matcher(stringFromCache).matches()) {
callListeners(str, getConfigsFromCache(this.activatedConfigsCache));
return false;
}
}
String stringFromCache2 = getStringFromCache(this.defaultConfigsCache, str);
if (stringFromCache2 != null) {
if (TRUE_REGEX.matcher(stringFromCache2).matches()) {
return true;
}
if (FALSE_REGEX.matcher(stringFromCache2).matches()) {
return false;
}
}
logParameterValueDoesNotExist(str, "Boolean");
return false;
}
public byte[] getByteArray(String str) {
String stringFromCache = getStringFromCache(this.activatedConfigsCache, str);
if (stringFromCache != null) {
callListeners(str, getConfigsFromCache(this.activatedConfigsCache));
return stringFromCache.getBytes(FRC_BYTE_ARRAY_ENCODING);
}
String stringFromCache2 = getStringFromCache(this.defaultConfigsCache, str);
if (stringFromCache2 != null) {
return stringFromCache2.getBytes(FRC_BYTE_ARRAY_ENCODING);
}
logParameterValueDoesNotExist(str, "ByteArray");
return FirebaseRemoteConfig.DEFAULT_VALUE_FOR_BYTE_ARRAY;
}
public double getDouble(String str) {
Double doubleFromCache = getDoubleFromCache(this.activatedConfigsCache, str);
if (doubleFromCache != null) {
callListeners(str, getConfigsFromCache(this.activatedConfigsCache));
return doubleFromCache.doubleValue();
}
Double doubleFromCache2 = getDoubleFromCache(this.defaultConfigsCache, str);
if (doubleFromCache2 != null) {
return doubleFromCache2.doubleValue();
}
logParameterValueDoesNotExist(str, "Double");
return FirebaseRemoteConfig.DEFAULT_VALUE_FOR_DOUBLE;
}
public Set<String> getKeysByPrefix(String str) {
if (str == null) {
str = "";
}
TreeSet treeSet = new TreeSet();
ConfigContainer configsFromCache = getConfigsFromCache(this.activatedConfigsCache);
if (configsFromCache != null) {
treeSet.addAll(getKeysByPrefix(str, configsFromCache));
}
ConfigContainer configsFromCache2 = getConfigsFromCache(this.defaultConfigsCache);
if (configsFromCache2 != null) {
treeSet.addAll(getKeysByPrefix(str, configsFromCache2));
}
return treeSet;
}
public long getLong(String str) {
Long longFromCache = getLongFromCache(this.activatedConfigsCache, str);
if (longFromCache != null) {
callListeners(str, getConfigsFromCache(this.activatedConfigsCache));
return longFromCache.longValue();
}
Long longFromCache2 = getLongFromCache(this.defaultConfigsCache, str);
if (longFromCache2 != null) {
return longFromCache2.longValue();
}
logParameterValueDoesNotExist(str, "Long");
return 0L;
}
public String getString(String str) {
String stringFromCache = getStringFromCache(this.activatedConfigsCache, str);
if (stringFromCache != null) {
callListeners(str, getConfigsFromCache(this.activatedConfigsCache));
return stringFromCache;
}
String stringFromCache2 = getStringFromCache(this.defaultConfigsCache, str);
if (stringFromCache2 != null) {
return stringFromCache2;
}
logParameterValueDoesNotExist(str, "String");
return "";
}
public FirebaseRemoteConfigValue getValue(String str) {
String stringFromCache = getStringFromCache(this.activatedConfigsCache, str);
if (stringFromCache != null) {
callListeners(str, getConfigsFromCache(this.activatedConfigsCache));
return new FirebaseRemoteConfigValueImpl(stringFromCache, 2);
}
String stringFromCache2 = getStringFromCache(this.defaultConfigsCache, str);
if (stringFromCache2 != null) {
return new FirebaseRemoteConfigValueImpl(stringFromCache2, 1);
}
logParameterValueDoesNotExist(str, "FirebaseRemoteConfigValue");
return new FirebaseRemoteConfigValueImpl("", 0);
}
private static TreeSet<String> getKeysByPrefix(String str, ConfigContainer configContainer) {
TreeSet<String> treeSet = new TreeSet<>();
Iterator<String> keys = configContainer.getConfigs().keys();
while (keys.hasNext()) {
String next = keys.next();
if (next.startsWith(str)) {
treeSet.add(next);
}
}
return treeSet;
}
}

View File

@@ -0,0 +1,190 @@
package com.google.firebase.remoteconfig.internal;
import android.content.SharedPreferences;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigInfo;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings;
import java.util.Date;
/* loaded from: classes3.dex */
public class ConfigMetadataClient {
private static final String BACKOFF_END_TIME_IN_MILLIS_KEY = "backoff_end_time_in_millis";
private static final String FETCH_TIMEOUT_IN_SECONDS_KEY = "fetch_timeout_in_seconds";
private static final String LAST_FETCH_ETAG_KEY = "last_fetch_etag";
private static final String LAST_FETCH_STATUS_KEY = "last_fetch_status";
public static final long LAST_FETCH_TIME_IN_MILLIS_NO_FETCH_YET = -1;
private static final String LAST_SUCCESSFUL_FETCH_TIME_IN_MILLIS_KEY = "last_fetch_time_in_millis";
private static final String LAST_TEMPLATE_VERSION = "last_template_version";
private static final String MINIMUM_FETCH_INTERVAL_IN_SECONDS_KEY = "minimum_fetch_interval_in_seconds";
private static final long NO_BACKOFF_TIME_IN_MILLIS = -1;
static final int NO_FAILED_FETCHES = 0;
static final int NO_FAILED_REALTIME_STREAMS = 0;
private static final String NUM_FAILED_FETCHES_KEY = "num_failed_fetches";
private static final String NUM_FAILED_REALTIME_STREAMS_KEY = "num_failed_realtime_streams";
private static final String REALTIME_BACKOFF_END_TIME_IN_MILLIS_KEY = "realtime_backoff_end_time_in_millis";
private final SharedPreferences frcMetadata;
static final Date LAST_FETCH_TIME_NO_FETCH_YET = new Date(-1);
static final Date NO_BACKOFF_TIME = new Date(-1);
private final Object frcInfoLock = new Object();
private final Object backoffMetadataLock = new Object();
private final Object realtimeBackoffMetadataLock = new Object();
/* loaded from: classes3.dex */
public static class BackoffMetadata {
private Date backoffEndTime;
private int numFailedFetches;
public BackoffMetadata(int i, Date date) {
this.numFailedFetches = i;
this.backoffEndTime = date;
}
public Date getBackoffEndTime() {
return this.backoffEndTime;
}
public int getNumFailedFetches() {
return this.numFailedFetches;
}
}
/* loaded from: classes3.dex */
public static class RealtimeBackoffMetadata {
private Date backoffEndTime;
private int numFailedStreams;
public RealtimeBackoffMetadata(int i, Date date) {
this.numFailedStreams = i;
this.backoffEndTime = date;
}
public Date getBackoffEndTime() {
return this.backoffEndTime;
}
public int getNumFailedStreams() {
return this.numFailedStreams;
}
}
public ConfigMetadataClient(SharedPreferences sharedPreferences) {
this.frcMetadata = sharedPreferences;
}
public void clear() {
synchronized (this.frcInfoLock) {
this.frcMetadata.edit().clear().commit();
}
}
public BackoffMetadata getBackoffMetadata() {
BackoffMetadata backoffMetadata;
synchronized (this.backoffMetadataLock) {
backoffMetadata = new BackoffMetadata(this.frcMetadata.getInt(NUM_FAILED_FETCHES_KEY, 0), new Date(this.frcMetadata.getLong(BACKOFF_END_TIME_IN_MILLIS_KEY, -1L)));
}
return backoffMetadata;
}
public long getFetchTimeoutInSeconds() {
return this.frcMetadata.getLong(FETCH_TIMEOUT_IN_SECONDS_KEY, 60L);
}
public FirebaseRemoteConfigInfo getInfo() {
FirebaseRemoteConfigInfoImpl build;
synchronized (this.frcInfoLock) {
long j4 = this.frcMetadata.getLong(LAST_SUCCESSFUL_FETCH_TIME_IN_MILLIS_KEY, -1L);
int i = this.frcMetadata.getInt(LAST_FETCH_STATUS_KEY, 0);
build = FirebaseRemoteConfigInfoImpl.newBuilder().withLastFetchStatus(i).withLastSuccessfulFetchTimeInMillis(j4).withConfigSettings(new FirebaseRemoteConfigSettings.Builder().setFetchTimeoutInSeconds(this.frcMetadata.getLong(FETCH_TIMEOUT_IN_SECONDS_KEY, 60L)).setMinimumFetchIntervalInSeconds(this.frcMetadata.getLong(MINIMUM_FETCH_INTERVAL_IN_SECONDS_KEY, ConfigFetchHandler.DEFAULT_MINIMUM_FETCH_INTERVAL_IN_SECONDS)).build()).build();
}
return build;
}
public String getLastFetchETag() {
return this.frcMetadata.getString(LAST_FETCH_ETAG_KEY, null);
}
public int getLastFetchStatus() {
return this.frcMetadata.getInt(LAST_FETCH_STATUS_KEY, 0);
}
public Date getLastSuccessfulFetchTime() {
return new Date(this.frcMetadata.getLong(LAST_SUCCESSFUL_FETCH_TIME_IN_MILLIS_KEY, -1L));
}
public long getLastTemplateVersion() {
return this.frcMetadata.getLong(LAST_TEMPLATE_VERSION, 0L);
}
public long getMinimumFetchIntervalInSeconds() {
return this.frcMetadata.getLong(MINIMUM_FETCH_INTERVAL_IN_SECONDS_KEY, ConfigFetchHandler.DEFAULT_MINIMUM_FETCH_INTERVAL_IN_SECONDS);
}
public RealtimeBackoffMetadata getRealtimeBackoffMetadata() {
RealtimeBackoffMetadata realtimeBackoffMetadata;
synchronized (this.realtimeBackoffMetadataLock) {
realtimeBackoffMetadata = new RealtimeBackoffMetadata(this.frcMetadata.getInt(NUM_FAILED_REALTIME_STREAMS_KEY, 0), new Date(this.frcMetadata.getLong(REALTIME_BACKOFF_END_TIME_IN_MILLIS_KEY, -1L)));
}
return realtimeBackoffMetadata;
}
public void resetBackoff() {
setBackoffMetadata(0, NO_BACKOFF_TIME);
}
public void resetRealtimeBackoff() {
setRealtimeBackoffMetadata(0, NO_BACKOFF_TIME);
}
public void setBackoffMetadata(int i, Date date) {
synchronized (this.backoffMetadataLock) {
this.frcMetadata.edit().putInt(NUM_FAILED_FETCHES_KEY, i).putLong(BACKOFF_END_TIME_IN_MILLIS_KEY, date.getTime()).apply();
}
}
public void setConfigSettings(FirebaseRemoteConfigSettings firebaseRemoteConfigSettings) {
synchronized (this.frcInfoLock) {
this.frcMetadata.edit().putLong(FETCH_TIMEOUT_IN_SECONDS_KEY, firebaseRemoteConfigSettings.getFetchTimeoutInSeconds()).putLong(MINIMUM_FETCH_INTERVAL_IN_SECONDS_KEY, firebaseRemoteConfigSettings.getMinimumFetchIntervalInSeconds()).commit();
}
}
public void setConfigSettingsWithoutWaitingOnDiskWrite(FirebaseRemoteConfigSettings firebaseRemoteConfigSettings) {
synchronized (this.frcInfoLock) {
this.frcMetadata.edit().putLong(FETCH_TIMEOUT_IN_SECONDS_KEY, firebaseRemoteConfigSettings.getFetchTimeoutInSeconds()).putLong(MINIMUM_FETCH_INTERVAL_IN_SECONDS_KEY, firebaseRemoteConfigSettings.getMinimumFetchIntervalInSeconds()).apply();
}
}
public void setLastFetchETag(String str) {
synchronized (this.frcInfoLock) {
this.frcMetadata.edit().putString(LAST_FETCH_ETAG_KEY, str).apply();
}
}
public void setLastTemplateVersion(long j4) {
synchronized (this.frcInfoLock) {
this.frcMetadata.edit().putLong(LAST_TEMPLATE_VERSION, j4).apply();
}
}
public void setRealtimeBackoffMetadata(int i, Date date) {
synchronized (this.realtimeBackoffMetadataLock) {
this.frcMetadata.edit().putInt(NUM_FAILED_REALTIME_STREAMS_KEY, i).putLong(REALTIME_BACKOFF_END_TIME_IN_MILLIS_KEY, date.getTime()).apply();
}
}
public void updateLastFetchAsFailed() {
synchronized (this.frcInfoLock) {
this.frcMetadata.edit().putInt(LAST_FETCH_STATUS_KEY, 1).apply();
}
}
public void updateLastFetchAsSuccessfulAt(Date date) {
synchronized (this.frcInfoLock) {
this.frcMetadata.edit().putInt(LAST_FETCH_STATUS_KEY, -1).putLong(LAST_SUCCESSFUL_FETCH_TIME_IN_MILLIS_KEY, date.getTime()).apply();
}
}
public void updateLastFetchAsThrottled() {
synchronized (this.frcInfoLock) {
this.frcMetadata.edit().putInt(LAST_FETCH_STATUS_KEY, 2).apply();
}
}
}

View File

@@ -0,0 +1,76 @@
package com.google.firebase.remoteconfig.internal;
import android.content.Context;
import com.google.firebase.FirebaseApp;
import com.google.firebase.installations.FirebaseInstallationsApi;
import com.google.firebase.remoteconfig.ConfigUpdateListener;
import com.google.firebase.remoteconfig.ConfigUpdateListenerRegistration;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.concurrent.ScheduledExecutorService;
/* loaded from: classes3.dex */
public class ConfigRealtimeHandler {
private final ConfigCacheClient activatedCacheClient;
private final ConfigFetchHandler configFetchHandler;
private final ConfigRealtimeHttpClient configRealtimeHttpClient;
private final Context context;
private final FirebaseApp firebaseApp;
private final FirebaseInstallationsApi firebaseInstallations;
private final Set<ConfigUpdateListener> listeners;
private final ConfigMetadataClient metadataClient;
private final String namespace;
private final ScheduledExecutorService scheduledExecutorService;
/* loaded from: classes3.dex */
public class ConfigUpdateListenerRegistrationInternal implements ConfigUpdateListenerRegistration {
private final ConfigUpdateListener listener;
public ConfigUpdateListenerRegistrationInternal(ConfigUpdateListener configUpdateListener) {
this.listener = configUpdateListener;
}
@Override // com.google.firebase.remoteconfig.ConfigUpdateListenerRegistration
public void remove() {
ConfigRealtimeHandler.this.removeRealtimeConfigUpdateListener(this.listener);
}
}
public ConfigRealtimeHandler(FirebaseApp firebaseApp, FirebaseInstallationsApi firebaseInstallationsApi, ConfigFetchHandler configFetchHandler, ConfigCacheClient configCacheClient, Context context, String str, ConfigMetadataClient configMetadataClient, ScheduledExecutorService scheduledExecutorService) {
LinkedHashSet linkedHashSet = new LinkedHashSet();
this.listeners = linkedHashSet;
this.configRealtimeHttpClient = new ConfigRealtimeHttpClient(firebaseApp, firebaseInstallationsApi, configFetchHandler, configCacheClient, context, str, linkedHashSet, configMetadataClient, scheduledExecutorService);
this.firebaseApp = firebaseApp;
this.configFetchHandler = configFetchHandler;
this.firebaseInstallations = firebaseInstallationsApi;
this.activatedCacheClient = configCacheClient;
this.context = context;
this.namespace = str;
this.metadataClient = configMetadataClient;
this.scheduledExecutorService = scheduledExecutorService;
}
private synchronized void beginRealtime() {
if (!this.listeners.isEmpty()) {
this.configRealtimeHttpClient.startHttpConnection();
}
}
/* JADX INFO: Access modifiers changed from: private */
public synchronized void removeRealtimeConfigUpdateListener(ConfigUpdateListener configUpdateListener) {
this.listeners.remove(configUpdateListener);
}
public synchronized ConfigUpdateListenerRegistration addRealtimeConfigUpdateListener(ConfigUpdateListener configUpdateListener) {
this.listeners.add(configUpdateListener);
beginRealtime();
return new ConfigUpdateListenerRegistrationInternal(configUpdateListener);
}
public synchronized void setBackgroundState(boolean z3) {
this.configRealtimeHttpClient.setRealtimeBackgroundState(z3);
if (!z3) {
beginRealtime();
}
}
}

View File

@@ -0,0 +1,469 @@
package com.google.firebase.remoteconfig.internal;
import B0.C0031i;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.pm.PackageManager;
import android.util.Log;
import c2.i;
import com.google.android.gms.common.util.AndroidUtilsLight;
import com.google.android.gms.common.util.Clock;
import com.google.android.gms.common.util.DefaultClock;
import com.google.android.gms.common.util.Hex;
import com.google.android.gms.tasks.Task;
import com.google.android.gms.tasks.Tasks;
import com.google.firebase.FirebaseApp;
import com.google.firebase.installations.FirebaseInstallationsApi;
import com.google.firebase.installations.InstallationTokenResult;
import com.google.firebase.remoteconfig.BuildConfig;
import com.google.firebase.remoteconfig.ConfigUpdate;
import com.google.firebase.remoteconfig.ConfigUpdateListener;
import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigClientException;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigException;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigServerException;
import com.google.firebase.remoteconfig.RemoteConfigConstants;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.json.JSONObject;
/* loaded from: classes3.dex */
public class ConfigRealtimeHttpClient {
private static final String API_KEY_HEADER = "X-Goog-Api-Key";
static final int[] BACKOFF_TIME_DURATIONS_IN_MINUTES = {2, 4, 8, 16, 32, 64, 128, 256};
private static final Pattern GMP_APP_ID_PATTERN = Pattern.compile("^[^:]+:([0-9]+):(android|ios|web):([0-9a-f]+)");
private static final String INSTALLATIONS_AUTH_TOKEN_HEADER = "X-Goog-Firebase-Installations-Auth";
private static final String X_ACCEPT_RESPONSE_STREAMING = "X-Accept-Response-Streaming";
private static final String X_ANDROID_CERT_HEADER = "X-Android-Cert";
private static final String X_ANDROID_PACKAGE_HEADER = "X-Android-Package";
private static final String X_GOOGLE_GFE_CAN_RETRY = "X-Google-GFE-Can-Retry";
ConfigCacheClient activatedCache;
private final ConfigFetchHandler configFetchHandler;
private final Context context;
private final FirebaseApp firebaseApp;
private final FirebaseInstallationsApi firebaseInstallations;
private int httpRetriesRemaining;
private final Set<ConfigUpdateListener> listeners;
private final ConfigMetadataClient metadataClient;
private final String namespace;
private final ScheduledExecutorService scheduledExecutorService;
private final int ORIGINAL_RETRIES = 8;
private boolean isHttpConnectionRunning = false;
private final Random random = new Random();
private final Clock clock = DefaultClock.getInstance();
private boolean isRealtimeDisabled = false;
private boolean isInBackground = false;
/* renamed from: com.google.firebase.remoteconfig.internal.ConfigRealtimeHttpClient$1 */
/* loaded from: classes3.dex */
public class AnonymousClass1 implements Runnable {
public AnonymousClass1() {
}
@Override // java.lang.Runnable
public void run() {
ConfigRealtimeHttpClient.this.beginRealtimeHttpStream();
}
}
/* renamed from: com.google.firebase.remoteconfig.internal.ConfigRealtimeHttpClient$2 */
/* loaded from: classes3.dex */
public class AnonymousClass2 implements ConfigUpdateListener {
public AnonymousClass2() {
}
@Override // com.google.firebase.remoteconfig.ConfigUpdateListener
public void onError(FirebaseRemoteConfigException firebaseRemoteConfigException) {
ConfigRealtimeHttpClient.this.enableBackoff();
ConfigRealtimeHttpClient.this.propagateErrors(firebaseRemoteConfigException);
}
@Override // com.google.firebase.remoteconfig.ConfigUpdateListener
public void onUpdate(ConfigUpdate configUpdate) {
}
}
public ConfigRealtimeHttpClient(FirebaseApp firebaseApp, FirebaseInstallationsApi firebaseInstallationsApi, ConfigFetchHandler configFetchHandler, ConfigCacheClient configCacheClient, Context context, String str, Set<ConfigUpdateListener> set, ConfigMetadataClient configMetadataClient, ScheduledExecutorService scheduledExecutorService) {
this.listeners = set;
this.scheduledExecutorService = scheduledExecutorService;
this.httpRetriesRemaining = Math.max(8 - configMetadataClient.getRealtimeBackoffMetadata().getNumFailedStreams(), 1);
this.firebaseApp = firebaseApp;
this.configFetchHandler = configFetchHandler;
this.firebaseInstallations = firebaseInstallationsApi;
this.activatedCache = configCacheClient;
this.context = context;
this.namespace = str;
this.metadataClient = configMetadataClient;
}
private synchronized boolean canMakeHttpStreamConnection() {
boolean z3;
if (!this.listeners.isEmpty() && !this.isHttpConnectionRunning && !this.isRealtimeDisabled) {
z3 = this.isInBackground ? false : true;
}
return z3;
}
private JSONObject createRequestBody(String str) {
HashMap hashMap = new HashMap();
hashMap.put("project", extractProjectNumberFromAppId(this.firebaseApp.getOptions().getApplicationId()));
hashMap.put("namespace", this.namespace);
hashMap.put("lastKnownVersionNumber", Long.toString(this.configFetchHandler.getTemplateVersionNumber()));
hashMap.put(RemoteConfigConstants.RequestFieldKey.APP_ID, this.firebaseApp.getOptions().getApplicationId());
hashMap.put(RemoteConfigConstants.RequestFieldKey.SDK_VERSION, BuildConfig.VERSION_NAME);
hashMap.put(RemoteConfigConstants.RequestFieldKey.INSTANCE_ID, str);
return new JSONObject(hashMap);
}
public synchronized void enableBackoff() {
this.isRealtimeDisabled = true;
}
private static String extractProjectNumberFromAppId(String str) {
Matcher matcher = GMP_APP_ID_PATTERN.matcher(str);
if (matcher.matches()) {
return matcher.group(1);
}
return null;
}
private String getFingerprintHashForPackage() {
try {
Context context = this.context;
byte[] packageCertificateHashBytes = AndroidUtilsLight.getPackageCertificateHashBytes(context, context.getPackageName());
if (packageCertificateHashBytes != null) {
return Hex.bytesToStringUppercase(packageCertificateHashBytes, false);
}
Log.e(FirebaseRemoteConfig.TAG, "Could not get fingerprint hash for package: " + this.context.getPackageName());
return null;
} catch (PackageManager.NameNotFoundException unused) {
Log.i(FirebaseRemoteConfig.TAG, "No such package: " + this.context.getPackageName());
return null;
}
}
private long getRandomizedBackoffDurationInMillis(int i) {
int length = BACKOFF_TIME_DURATIONS_IN_MINUTES.length;
if (i >= length) {
i = length;
}
return (TimeUnit.MINUTES.toMillis(r0[i - 1]) / 2) + this.random.nextInt((int) r0);
}
private String getRealtimeURL(String str) {
return "https://firebaseremoteconfigrealtime.googleapis.com/v1/projects/" + extractProjectNumberFromAppId(this.firebaseApp.getOptions().getApplicationId()) + "/namespaces/" + str + ":streamFetchInvalidations";
}
private URL getUrl() {
try {
return new URL(getRealtimeURL(this.namespace));
} catch (MalformedURLException unused) {
Log.e(FirebaseRemoteConfig.TAG, "URL is malformed");
return null;
}
}
private boolean isStatusCodeRetryable(int i) {
return i == 408 || i == 429 || i == 502 || i == 503 || i == 504;
}
/* JADX WARN: Multi-variable type inference failed */
/* JADX WARN: Type inference failed for: r10v0, types: [com.google.android.gms.tasks.Task] */
/* JADX WARN: Type inference failed for: r10v13, types: [java.net.HttpURLConnection] */
/* JADX WARN: Type inference failed for: r10v2 */
/* JADX WARN: Type inference failed for: r10v3 */
/* JADX WARN: Type inference failed for: r10v4, types: [java.net.HttpURLConnection] */
/* JADX WARN: Type inference failed for: r10v7, types: [java.net.HttpURLConnection] */
/* JADX WARN: Type inference failed for: r9v0, types: [com.google.firebase.remoteconfig.internal.ConfigRealtimeHttpClient] */
public /* synthetic */ Task lambda$beginRealtimeHttpStream$1(Task task, Task task2) throws Exception {
Integer num;
Throwable th;
Integer num2;
FirebaseRemoteConfigServerException firebaseRemoteConfigServerException;
int responseCode;
boolean isStatusCodeRetryable;
boolean z3 = true;
try {
try {
} catch (Throwable th2) {
th = th2;
}
} catch (IOException e4) {
e = e4;
task = 0;
num2 = null;
} catch (Throwable th3) {
num = null;
th = th3;
task = 0;
}
if (!task.isSuccessful()) {
throw new IOException(task.getException());
}
setIsHttpConnectionRunning(true);
task = (HttpURLConnection) task.getResult();
try {
responseCode = task.getResponseCode();
num2 = Integer.valueOf(responseCode);
if (responseCode == 200) {
try {
resetRetryCount();
this.metadataClient.resetRealtimeBackoff();
startAutoFetch(task).listenForNotifications();
} catch (IOException e5) {
e = e5;
Log.d(FirebaseRemoteConfig.TAG, "Exception connecting to real-time RC backend. Retrying the connection...", e);
closeRealtimeHttpStream(task);
setIsHttpConnectionRunning(false);
if (num2 != null && !isStatusCodeRetryable(num2.intValue())) {
z3 = false;
}
if (z3) {
updateBackoffMetadataWithLastFailedStreamConnectionTime(new Date(this.clock.currentTimeMillis()));
}
if (!z3 && num2.intValue() != 200) {
String format = String.format("Unable to connect to the server. Try again in a few minutes. HTTP status code: %d", num2);
if (num2.intValue() == 403) {
format = parseForbiddenErrorResponseMessage(task.getErrorStream());
}
firebaseRemoteConfigServerException = new FirebaseRemoteConfigServerException(num2.intValue(), format, FirebaseRemoteConfigException.Code.CONFIG_UPDATE_STREAM_ERROR);
propagateErrors(firebaseRemoteConfigServerException);
return Tasks.forResult(null);
}
retryHttpConnectionWhenBackoffEnds();
return Tasks.forResult(null);
}
}
closeRealtimeHttpStream(task);
setIsHttpConnectionRunning(false);
isStatusCodeRetryable = isStatusCodeRetryable(responseCode);
if (isStatusCodeRetryable) {
updateBackoffMetadataWithLastFailedStreamConnectionTime(new Date(this.clock.currentTimeMillis()));
}
} catch (IOException e6) {
e = e6;
num2 = null;
} catch (Throwable th4) {
num = null;
th = th4;
closeRealtimeHttpStream(task);
setIsHttpConnectionRunning(false);
if (num != null && !isStatusCodeRetryable(num.intValue())) {
z3 = false;
}
if (z3) {
updateBackoffMetadataWithLastFailedStreamConnectionTime(new Date(this.clock.currentTimeMillis()));
}
if (z3 || num.intValue() == 200) {
retryHttpConnectionWhenBackoffEnds();
} else {
String format2 = String.format("Unable to connect to the server. Try again in a few minutes. HTTP status code: %d", num);
if (num.intValue() == 403) {
format2 = parseForbiddenErrorResponseMessage(task.getErrorStream());
}
propagateErrors(new FirebaseRemoteConfigServerException(num.intValue(), format2, FirebaseRemoteConfigException.Code.CONFIG_UPDATE_STREAM_ERROR));
}
throw th;
}
if (!isStatusCodeRetryable && responseCode != 200) {
String format3 = String.format("Unable to connect to the server. Try again in a few minutes. HTTP status code: %d", num2);
if (responseCode == 403) {
format3 = parseForbiddenErrorResponseMessage(task.getErrorStream());
}
firebaseRemoteConfigServerException = new FirebaseRemoteConfigServerException(responseCode, format3, FirebaseRemoteConfigException.Code.CONFIG_UPDATE_STREAM_ERROR);
propagateErrors(firebaseRemoteConfigServerException);
return Tasks.forResult(null);
}
retryHttpConnectionWhenBackoffEnds();
return Tasks.forResult(null);
}
public /* synthetic */ Task lambda$createRealtimeConnection$0(Task task, Task task2, Task task3) throws Exception {
if (!task.isSuccessful()) {
return Tasks.forException(new FirebaseRemoteConfigClientException("Firebase Installations failed to get installation auth token for config update listener connection.", task.getException()));
}
if (!task2.isSuccessful()) {
return Tasks.forException(new FirebaseRemoteConfigClientException("Firebase Installations failed to get installation ID for config update listener connection.", task2.getException()));
}
try {
HttpURLConnection httpURLConnection = (HttpURLConnection) getUrl().openConnection();
setRequestParams(httpURLConnection, (String) task2.getResult(), ((InstallationTokenResult) task.getResult()).getToken());
return Tasks.forResult(httpURLConnection);
} catch (IOException e4) {
return Tasks.forException(new FirebaseRemoteConfigClientException("Failed to open HTTP stream connection", e4));
}
}
private synchronized void makeRealtimeHttpConnection(long j4) {
try {
if (canMakeHttpStreamConnection()) {
int i = this.httpRetriesRemaining;
if (i > 0) {
this.httpRetriesRemaining = i - 1;
this.scheduledExecutorService.schedule(new Runnable() { // from class: com.google.firebase.remoteconfig.internal.ConfigRealtimeHttpClient.1
public AnonymousClass1() {
}
@Override // java.lang.Runnable
public void run() {
ConfigRealtimeHttpClient.this.beginRealtimeHttpStream();
}
}, j4, TimeUnit.MILLISECONDS);
} else if (!this.isInBackground) {
propagateErrors(new FirebaseRemoteConfigClientException("Unable to connect to the server. Check your connection and try again.", FirebaseRemoteConfigException.Code.CONFIG_UPDATE_STREAM_ERROR));
}
}
} catch (Throwable th) {
throw th;
}
}
private String parseForbiddenErrorResponseMessage(InputStream inputStream) {
StringBuilder sb = new StringBuilder();
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
while (true) {
String readLine = bufferedReader.readLine();
if (readLine == null) {
break;
}
sb.append(readLine);
}
} catch (IOException unused) {
if (sb.length() == 0) {
return "Unable to connect to the server, access is forbidden. HTTP status code: 403";
}
}
return sb.toString();
}
public synchronized void propagateErrors(FirebaseRemoteConfigException firebaseRemoteConfigException) {
Iterator<ConfigUpdateListener> it = this.listeners.iterator();
while (it.hasNext()) {
it.next().onError(firebaseRemoteConfigException);
}
}
private synchronized void resetRetryCount() {
this.httpRetriesRemaining = 8;
}
private void setCommonRequestHeaders(HttpURLConnection httpURLConnection, String str) {
httpURLConnection.setRequestProperty(INSTALLATIONS_AUTH_TOKEN_HEADER, str);
httpURLConnection.setRequestProperty(API_KEY_HEADER, this.firebaseApp.getOptions().getApiKey());
httpURLConnection.setRequestProperty(X_ANDROID_PACKAGE_HEADER, this.context.getPackageName());
httpURLConnection.setRequestProperty(X_ANDROID_CERT_HEADER, getFingerprintHashForPackage());
httpURLConnection.setRequestProperty(X_GOOGLE_GFE_CAN_RETRY, "yes");
httpURLConnection.setRequestProperty(X_ACCEPT_RESPONSE_STREAMING, "true");
httpURLConnection.setRequestProperty("Content-Type", "application/json");
httpURLConnection.setRequestProperty("Accept", "application/json");
}
private synchronized void setIsHttpConnectionRunning(boolean z3) {
this.isHttpConnectionRunning = z3;
}
private void updateBackoffMetadataWithLastFailedStreamConnectionTime(Date date) {
int numFailedStreams = this.metadataClient.getRealtimeBackoffMetadata().getNumFailedStreams() + 1;
this.metadataClient.setRealtimeBackoffMetadata(numFailedStreams, new Date(date.getTime() + getRandomizedBackoffDurationInMillis(numFailedStreams)));
}
@SuppressLint({"VisibleForTests", "DefaultLocale"})
public void beginRealtimeHttpStream() {
if (canMakeHttpStreamConnection()) {
if (new Date(this.clock.currentTimeMillis()).before(this.metadataClient.getRealtimeBackoffMetadata().getBackoffEndTime())) {
retryHttpConnectionWhenBackoffEnds();
} else {
Task<HttpURLConnection> createRealtimeConnection = createRealtimeConnection();
Tasks.whenAllComplete((Task<?>[]) new Task[]{createRealtimeConnection}).continueWith(this.scheduledExecutorService, new i(4, this, createRealtimeConnection));
}
}
}
public void closeRealtimeHttpStream(HttpURLConnection httpURLConnection) {
if (httpURLConnection != null) {
httpURLConnection.disconnect();
try {
httpURLConnection.getInputStream().close();
if (httpURLConnection.getErrorStream() != null) {
httpURLConnection.getErrorStream().close();
}
} catch (IOException unused) {
}
}
}
@SuppressLint({"VisibleForTests"})
public Task<HttpURLConnection> createRealtimeConnection() {
Task<InstallationTokenResult> token = this.firebaseInstallations.getToken(false);
Task<String> id = this.firebaseInstallations.getId();
return Tasks.whenAllComplete((Task<?>[]) new Task[]{token, id}).continueWithTask(this.scheduledExecutorService, new C0031i(this, token, id, 3));
}
@SuppressLint({"VisibleForTests"})
public Date getBackoffEndTime() {
return this.metadataClient.getRealtimeBackoffMetadata().getBackoffEndTime();
}
@SuppressLint({"VisibleForTests"})
public int getNumberOfFailedStreams() {
return this.metadataClient.getRealtimeBackoffMetadata().getNumFailedStreams();
}
@SuppressLint({"VisibleForTests"})
public synchronized void retryHttpConnectionWhenBackoffEnds() {
makeRealtimeHttpConnection(Math.max(0L, this.metadataClient.getRealtimeBackoffMetadata().getBackoffEndTime().getTime() - new Date(this.clock.currentTimeMillis()).getTime()));
}
public void setRealtimeBackgroundState(boolean z3) {
this.isInBackground = z3;
}
@SuppressLint({"VisibleForTests"})
public void setRequestParams(HttpURLConnection httpURLConnection, String str, String str2) throws IOException {
httpURLConnection.setRequestMethod("POST");
setCommonRequestHeaders(httpURLConnection, str2);
byte[] bytes = createRequestBody(str).toString().getBytes("utf-8");
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(httpURLConnection.getOutputStream());
bufferedOutputStream.write(bytes);
bufferedOutputStream.flush();
bufferedOutputStream.close();
}
@SuppressLint({"VisibleForTests"})
public synchronized ConfigAutoFetch startAutoFetch(HttpURLConnection httpURLConnection) {
return new ConfigAutoFetch(httpURLConnection, this.configFetchHandler, this.activatedCache, this.listeners, new ConfigUpdateListener() { // from class: com.google.firebase.remoteconfig.internal.ConfigRealtimeHttpClient.2
public AnonymousClass2() {
}
@Override // com.google.firebase.remoteconfig.ConfigUpdateListener
public void onError(FirebaseRemoteConfigException firebaseRemoteConfigException) {
ConfigRealtimeHttpClient.this.enableBackoff();
ConfigRealtimeHttpClient.this.propagateErrors(firebaseRemoteConfigException);
}
@Override // com.google.firebase.remoteconfig.ConfigUpdateListener
public void onUpdate(ConfigUpdate configUpdate) {
}
}, this.scheduledExecutorService);
}
public void startHttpConnection() {
makeRealtimeHttpConnection(0L);
}
}

View File

@@ -0,0 +1,97 @@
package com.google.firebase.remoteconfig.internal;
import android.content.Context;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONException;
import org.json.JSONObject;
/* loaded from: classes3.dex */
public class ConfigStorageClient {
private static final String JSON_STRING_ENCODING = "UTF-8";
private static final Map<String, ConfigStorageClient> clientInstances = new HashMap();
private final Context context;
private final String fileName;
private ConfigStorageClient(Context context, String str) {
this.context = context;
this.fileName = str;
}
public static synchronized void clearInstancesForTest() {
synchronized (ConfigStorageClient.class) {
clientInstances.clear();
}
}
public static synchronized ConfigStorageClient getInstance(Context context, String str) {
ConfigStorageClient configStorageClient;
synchronized (ConfigStorageClient.class) {
try {
Map<String, ConfigStorageClient> map = clientInstances;
if (!map.containsKey(str)) {
map.put(str, new ConfigStorageClient(context, str));
}
configStorageClient = map.get(str);
} catch (Throwable th) {
throw th;
}
}
return configStorageClient;
}
public synchronized Void clear() {
this.context.deleteFile(this.fileName);
return null;
}
public String getFileName() {
return this.fileName;
}
public synchronized ConfigContainer read() throws IOException {
FileInputStream fileInputStream;
Throwable th;
try {
fileInputStream = this.context.openFileInput(this.fileName);
} catch (FileNotFoundException | JSONException unused) {
fileInputStream = null;
} catch (Throwable th2) {
fileInputStream = null;
th = th2;
}
try {
int available = fileInputStream.available();
byte[] bArr = new byte[available];
fileInputStream.read(bArr, 0, available);
ConfigContainer copyOf = ConfigContainer.copyOf(new JSONObject(new String(bArr, JSON_STRING_ENCODING)));
fileInputStream.close();
return copyOf;
} catch (FileNotFoundException | JSONException unused2) {
if (fileInputStream != null) {
fileInputStream.close();
}
return null;
} catch (Throwable th3) {
th = th3;
if (fileInputStream != null) {
fileInputStream.close();
}
throw th;
}
}
public synchronized Void write(ConfigContainer configContainer) throws IOException {
FileOutputStream openFileOutput = this.context.openFileOutput(this.fileName, 0);
try {
openFileOutput.write(configContainer.toString().getBytes(JSON_STRING_ENCODING));
} finally {
openFileOutput.close();
}
return null;
}
}

View File

@@ -0,0 +1,108 @@
package com.google.firebase.remoteconfig.internal;
/* loaded from: classes3.dex */
public class DefaultsXmlParser {
private static final String XML_TAG_ENTRY = "entry";
private static final String XML_TAG_KEY = "key";
private static final String XML_TAG_VALUE = "value";
/* JADX WARN: Removed duplicated region for block: B:37:0x0079 */
/* JADX WARN: Removed duplicated region for block: B:42:0x0086 A[Catch: IOException | XmlPullParserException -> 0x0013, TryCatch #0 {IOException | XmlPullParserException -> 0x0013, blocks: (B:3:0x0007, B:5:0x000d, B:8:0x0016, B:13:0x0028, B:15:0x008a, B:18:0x0031, B:22:0x0041, B:24:0x0045, B:30:0x0053, B:38:0x007b, B:40:0x0081, B:42:0x0086, B:44:0x0062, B:47:0x006c), top: B:2:0x0007 }] */
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public static java.util.Map<java.lang.String, java.lang.String> getDefaultsFromXml(android.content.Context r8, int r9) {
/*
java.lang.String r0 = "FirebaseRemoteConfig"
java.util.HashMap r1 = new java.util.HashMap
r1.<init>()
android.content.res.Resources r8 = r8.getResources() // Catch: java.lang.Throwable -> L13
if (r8 != 0) goto L16
java.lang.String r8 = "Could not find the resources of the current context while trying to set defaults from an XML."
android.util.Log.e(r0, r8) // Catch: java.lang.Throwable -> L13
return r1
L13:
r8 = move-exception
goto L8f
L16:
android.content.res.XmlResourceParser r8 = r8.getXml(r9) // Catch: java.lang.Throwable -> L13
int r9 = r8.getEventType() // Catch: java.lang.Throwable -> L13
r2 = 0
r3 = r2
r4 = r3
r5 = r4
L22:
r6 = 1
if (r9 == r6) goto L94
r7 = 2
if (r9 != r7) goto L2e
java.lang.String r3 = r8.getName() // Catch: java.lang.Throwable -> L13
goto L8a
L2e:
r7 = 3
if (r9 != r7) goto L4e
java.lang.String r9 = r8.getName() // Catch: java.lang.Throwable -> L13
java.lang.String r3 = "entry"
boolean r9 = r9.equals(r3) // Catch: java.lang.Throwable -> L13
if (r9 == 0) goto L4c
if (r4 == 0) goto L45
if (r5 == 0) goto L45
r1.put(r4, r5) // Catch: java.lang.Throwable -> L13
goto L4a
L45:
java.lang.String r9 = "An entry in the defaults XML has an invalid key and/or value tag."
android.util.Log.w(r0, r9) // Catch: java.lang.Throwable -> L13
L4a:
r4 = r2
r5 = r4
L4c:
r3 = r2
goto L8a
L4e:
r7 = 4
if (r9 != r7) goto L8a
if (r3 == 0) goto L8a
int r9 = r3.hashCode() // Catch: java.lang.Throwable -> L13
r7 = 106079(0x19e5f, float:1.48648E-40)
if (r9 == r7) goto L6c
r7 = 111972721(0x6ac9171, float:6.4912916E-35)
if (r9 == r7) goto L62
goto L76
L62:
java.lang.String r9 = "value"
boolean r9 = r3.equals(r9) // Catch: java.lang.Throwable -> L13
if (r9 == 0) goto L76
r9 = r6
goto L77
L6c:
java.lang.String r9 = "key"
boolean r9 = r3.equals(r9) // Catch: java.lang.Throwable -> L13
if (r9 == 0) goto L76
r9 = 0
goto L77
L76:
r9 = -1
L77:
if (r9 == 0) goto L86
if (r9 == r6) goto L81
java.lang.String r9 = "Encountered an unexpected tag while parsing the defaults XML."
android.util.Log.w(r0, r9) // Catch: java.lang.Throwable -> L13
goto L8a
L81:
java.lang.String r5 = r8.getText() // Catch: java.lang.Throwable -> L13
goto L8a
L86:
java.lang.String r4 = r8.getText() // Catch: java.lang.Throwable -> L13
L8a:
int r9 = r8.next() // Catch: java.lang.Throwable -> L13
goto L22
L8f:
java.lang.String r9 = "Encountered an error while parsing the defaults XML file."
android.util.Log.e(r0, r9, r8)
L94:
return r1
*/
throw new UnsupportedOperationException("Method not decompiled: com.google.firebase.remoteconfig.internal.DefaultsXmlParser.getDefaultsFromXml(android.content.Context, int):java.util.Map");
}
}

View File

@@ -0,0 +1,65 @@
package com.google.firebase.remoteconfig.internal;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigInfo;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings;
/* loaded from: classes3.dex */
public class FirebaseRemoteConfigInfoImpl implements FirebaseRemoteConfigInfo {
private final FirebaseRemoteConfigSettings configSettings;
private final int lastFetchStatus;
private final long lastSuccessfulFetchTimeInMillis;
/* loaded from: classes3.dex */
public static class Builder {
private FirebaseRemoteConfigSettings builderConfigSettings;
private int builderLastFetchStatus;
private long builderLastSuccessfulFetchTimeInMillis;
public FirebaseRemoteConfigInfoImpl build() {
return new FirebaseRemoteConfigInfoImpl(this.builderLastSuccessfulFetchTimeInMillis, this.builderLastFetchStatus, this.builderConfigSettings);
}
public Builder withConfigSettings(FirebaseRemoteConfigSettings firebaseRemoteConfigSettings) {
this.builderConfigSettings = firebaseRemoteConfigSettings;
return this;
}
public Builder withLastFetchStatus(int i) {
this.builderLastFetchStatus = i;
return this;
}
public Builder withLastSuccessfulFetchTimeInMillis(long j4) {
this.builderLastSuccessfulFetchTimeInMillis = j4;
return this;
}
private Builder() {
}
}
public static Builder newBuilder() {
return new Builder();
}
@Override // com.google.firebase.remoteconfig.FirebaseRemoteConfigInfo
public FirebaseRemoteConfigSettings getConfigSettings() {
return this.configSettings;
}
@Override // com.google.firebase.remoteconfig.FirebaseRemoteConfigInfo
public long getFetchTimeMillis() {
return this.lastSuccessfulFetchTimeInMillis;
}
@Override // com.google.firebase.remoteconfig.FirebaseRemoteConfigInfo
public int getLastFetchStatus() {
return this.lastFetchStatus;
}
private FirebaseRemoteConfigInfoImpl(long j4, int i, FirebaseRemoteConfigSettings firebaseRemoteConfigSettings) {
this.lastSuccessfulFetchTimeInMillis = j4;
this.lastFetchStatus = i;
this.configSettings = firebaseRemoteConfigSettings;
}
}

View File

@@ -0,0 +1,87 @@
package com.google.firebase.remoteconfig.internal;
import C.w;
import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigValue;
/* loaded from: classes3.dex */
public class FirebaseRemoteConfigValueImpl implements FirebaseRemoteConfigValue {
private static final String ILLEGAL_ARGUMENT_STRING_FORMAT = "[Value: %s] cannot be converted to a %s.";
private final int source;
private final String value;
public FirebaseRemoteConfigValueImpl(String str, int i) {
this.value = str;
this.source = i;
}
private String asTrimmedString() {
return asString().trim();
}
private void throwIfNullValue() {
if (this.value == null) {
throw new IllegalArgumentException("Value is null, and cannot be converted to the desired type.");
}
}
@Override // com.google.firebase.remoteconfig.FirebaseRemoteConfigValue
public boolean asBoolean() throws IllegalArgumentException {
if (this.source == 0) {
return false;
}
String asTrimmedString = asTrimmedString();
if (ConfigGetParameterHandler.TRUE_REGEX.matcher(asTrimmedString).matches()) {
return true;
}
if (ConfigGetParameterHandler.FALSE_REGEX.matcher(asTrimmedString).matches()) {
return false;
}
throw new IllegalArgumentException(w.o("[Value: ", asTrimmedString, "] cannot be converted to a boolean."));
}
@Override // com.google.firebase.remoteconfig.FirebaseRemoteConfigValue
public byte[] asByteArray() {
return this.source == 0 ? FirebaseRemoteConfig.DEFAULT_VALUE_FOR_BYTE_ARRAY : this.value.getBytes(ConfigGetParameterHandler.FRC_BYTE_ARRAY_ENCODING);
}
@Override // com.google.firebase.remoteconfig.FirebaseRemoteConfigValue
public double asDouble() {
if (this.source == 0) {
return FirebaseRemoteConfig.DEFAULT_VALUE_FOR_DOUBLE;
}
String asTrimmedString = asTrimmedString();
try {
return Double.valueOf(asTrimmedString).doubleValue();
} catch (NumberFormatException e4) {
throw new IllegalArgumentException(w.o("[Value: ", asTrimmedString, "] cannot be converted to a double."), e4);
}
}
@Override // com.google.firebase.remoteconfig.FirebaseRemoteConfigValue
public long asLong() {
if (this.source == 0) {
return 0L;
}
String asTrimmedString = asTrimmedString();
try {
return Long.valueOf(asTrimmedString).longValue();
} catch (NumberFormatException e4) {
throw new IllegalArgumentException(w.o("[Value: ", asTrimmedString, "] cannot be converted to a long."), e4);
}
}
@Override // com.google.firebase.remoteconfig.FirebaseRemoteConfigValue
public String asString() {
if (this.source == 0) {
return "";
}
throwIfNullValue();
return this.value;
}
@Override // com.google.firebase.remoteconfig.FirebaseRemoteConfigValue
public int getSource() {
return this.source;
}
}

View File

@@ -0,0 +1,71 @@
package com.google.firebase.remoteconfig.internal;
import android.os.Bundle;
import com.google.firebase.analytics.connector.AnalyticsConnector;
import com.google.firebase.inject.Provider;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONObject;
/* loaded from: classes3.dex */
public class Personalization {
public static final String ANALYTICS_ORIGIN_PERSONALIZATION = "fp";
public static final String ARM_INDEX = "armIndex";
public static final String CHOICE_ID = "choiceId";
public static final String EXTERNAL_ARM_INDEX_PARAM = "arm_index";
public static final String EXTERNAL_ARM_VALUE_PARAM = "arm_value";
public static final String EXTERNAL_EVENT = "personalization_assignment";
public static final String EXTERNAL_GROUP_PARAM = "group";
public static final String EXTERNAL_PERSONALIZATION_ID_PARAM = "personalization_id";
public static final String EXTERNAL_RC_PARAMETER_PARAM = "arm_key";
public static final String GROUP = "group";
public static final String INTERNAL_CHOICE_ID_PARAM = "_fpid";
public static final String INTERNAL_EVENT = "_fpc";
public static final String PERSONALIZATION_ID = "personalizationId";
private final Provider<AnalyticsConnector> analyticsConnector;
private final Map<String, String> loggedChoiceIds = Collections.synchronizedMap(new HashMap());
public Personalization(Provider<AnalyticsConnector> provider) {
this.analyticsConnector = provider;
}
public void logArmActive(String str, ConfigContainer configContainer) {
JSONObject optJSONObject;
AnalyticsConnector analyticsConnector = this.analyticsConnector.get();
if (analyticsConnector == null) {
return;
}
JSONObject personalizationMetadata = configContainer.getPersonalizationMetadata();
if (personalizationMetadata.length() < 1) {
return;
}
JSONObject configs = configContainer.getConfigs();
if (configs.length() >= 1 && (optJSONObject = personalizationMetadata.optJSONObject(str)) != null) {
String optString = optJSONObject.optString(CHOICE_ID);
if (optString.isEmpty()) {
return;
}
synchronized (this.loggedChoiceIds) {
try {
if (optString.equals(this.loggedChoiceIds.get(str))) {
return;
}
this.loggedChoiceIds.put(str, optString);
Bundle bundle = new Bundle();
bundle.putString(EXTERNAL_RC_PARAMETER_PARAM, str);
bundle.putString(EXTERNAL_ARM_VALUE_PARAM, configs.optString(str));
bundle.putString(EXTERNAL_PERSONALIZATION_ID_PARAM, optJSONObject.optString(PERSONALIZATION_ID));
bundle.putInt(EXTERNAL_ARM_INDEX_PARAM, optJSONObject.optInt(ARM_INDEX, -1));
bundle.putString("group", optJSONObject.optString("group"));
analyticsConnector.logEvent(ANALYTICS_ORIGIN_PERSONALIZATION, EXTERNAL_EVENT, bundle);
Bundle bundle2 = new Bundle();
bundle2.putString(INTERNAL_CHOICE_ID_PARAM, optString);
analyticsConnector.logEvent(ANALYTICS_ORIGIN_PERSONALIZATION, INTERNAL_EVENT, bundle2);
} catch (Throwable th) {
throw th;
}
}
}
}
}

View File

@@ -0,0 +1,47 @@
package com.google.firebase.remoteconfig.internal.rollouts;
import android.util.Log;
import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigClientException;
import com.google.firebase.remoteconfig.internal.ConfigContainer;
import com.google.firebase.remoteconfig.internal.ConfigGetParameterHandler;
import com.google.firebase.remoteconfig.interop.rollouts.RolloutAssignment;
import com.google.firebase.remoteconfig.interop.rollouts.RolloutsState;
import java.util.HashSet;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/* loaded from: classes3.dex */
public class RolloutsStateFactory {
ConfigGetParameterHandler getParameterHandler;
public RolloutsStateFactory(ConfigGetParameterHandler configGetParameterHandler) {
this.getParameterHandler = configGetParameterHandler;
}
public static RolloutsStateFactory create(ConfigGetParameterHandler configGetParameterHandler) {
return new RolloutsStateFactory(configGetParameterHandler);
}
public RolloutsState getActiveRolloutsState(ConfigContainer configContainer) throws FirebaseRemoteConfigClientException {
JSONArray rolloutMetadata = configContainer.getRolloutMetadata();
long templateVersionNumber = configContainer.getTemplateVersionNumber();
HashSet hashSet = new HashSet();
for (int i = 0; i < rolloutMetadata.length(); i++) {
try {
JSONObject jSONObject = rolloutMetadata.getJSONObject(i);
String string = jSONObject.getString(ConfigContainer.ROLLOUT_METADATA_ID);
JSONArray jSONArray = jSONObject.getJSONArray(ConfigContainer.ROLLOUT_METADATA_AFFECTED_KEYS);
if (jSONArray.length() > 1) {
Log.w(FirebaseRemoteConfig.TAG, String.format("Rollout has multiple affected parameter keys.Only the first key will be included in RolloutsState. rolloutId: %s, affectedParameterKeys: %s", string, jSONArray));
}
String optString = jSONArray.optString(0, "");
hashSet.add(RolloutAssignment.builder().setRolloutId(string).setVariantId(jSONObject.getString("variantId")).setParameterKey(optString).setParameterValue(this.getParameterHandler.getString(optString)).setTemplateVersion(templateVersionNumber).build());
} catch (JSONException e4) {
throw new FirebaseRemoteConfigClientException("Exception parsing rollouts metadata to create RolloutsState.", e4);
}
}
return RolloutsState.create(hashSet);
}
}

View File

@@ -0,0 +1,64 @@
package com.google.firebase.remoteconfig.internal.rollouts;
import android.util.Log;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigException;
import com.google.firebase.remoteconfig.internal.ConfigCacheClient;
import com.google.firebase.remoteconfig.internal.ConfigContainer;
import com.google.firebase.remoteconfig.interop.rollouts.RolloutsState;
import com.google.firebase.remoteconfig.interop.rollouts.RolloutsStateSubscriber;
import java.util.Collections;
import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executor;
/* loaded from: classes3.dex */
public class RolloutsStateSubscriptionsHandler {
private ConfigCacheClient activatedConfigsCache;
private Executor executor;
private RolloutsStateFactory rolloutsStateFactory;
private Set<RolloutsStateSubscriber> subscribers = Collections.newSetFromMap(new ConcurrentHashMap());
public RolloutsStateSubscriptionsHandler(ConfigCacheClient configCacheClient, RolloutsStateFactory rolloutsStateFactory, Executor executor) {
this.activatedConfigsCache = configCacheClient;
this.rolloutsStateFactory = rolloutsStateFactory;
this.executor = executor;
}
public /* synthetic */ void lambda$registerRolloutsStateSubscriber$1(Task task, RolloutsStateSubscriber rolloutsStateSubscriber, ConfigContainer configContainer) {
try {
ConfigContainer configContainer2 = (ConfigContainer) task.getResult();
if (configContainer2 != null) {
this.executor.execute(new b(rolloutsStateSubscriber, this.rolloutsStateFactory.getActiveRolloutsState(configContainer2), 0));
}
} catch (FirebaseRemoteConfigException e4) {
Log.w(FirebaseRemoteConfig.TAG, "Exception publishing RolloutsState to subscriber. Continuing to listen for changes.", e4);
}
}
public void publishActiveRolloutsState(ConfigContainer configContainer) {
try {
RolloutsState activeRolloutsState = this.rolloutsStateFactory.getActiveRolloutsState(configContainer);
Iterator<RolloutsStateSubscriber> it = this.subscribers.iterator();
while (it.hasNext()) {
this.executor.execute(new b(it.next(), activeRolloutsState, 1));
}
} catch (FirebaseRemoteConfigException e4) {
Log.w(FirebaseRemoteConfig.TAG, "Exception publishing RolloutsState to subscribers. Continuing to listen for changes.", e4);
}
}
public void registerRolloutsStateSubscriber(final RolloutsStateSubscriber rolloutsStateSubscriber) {
this.subscribers.add(rolloutsStateSubscriber);
final Task<ConfigContainer> task = this.activatedConfigsCache.get();
task.addOnSuccessListener(this.executor, new OnSuccessListener() { // from class: com.google.firebase.remoteconfig.internal.rollouts.a
@Override // com.google.android.gms.tasks.OnSuccessListener
public final void onSuccess(Object obj) {
RolloutsStateSubscriptionsHandler.this.lambda$registerRolloutsStateSubscriber$1(task, rolloutsStateSubscriber, (ConfigContainer) obj);
}
});
}
}

View File

@@ -0,0 +1,35 @@
package com.google.firebase.remoteconfig.internal.rollouts;
import com.google.firebase.remoteconfig.interop.rollouts.RolloutsState;
import com.google.firebase.remoteconfig.interop.rollouts.RolloutsStateSubscriber;
/* loaded from: classes3.dex */
public final /* synthetic */ class b implements Runnable {
/* renamed from: a, reason: collision with root package name */
public final /* synthetic */ int f6055a;
/* renamed from: b, reason: collision with root package name */
public final /* synthetic */ RolloutsStateSubscriber f6056b;
/* renamed from: c, reason: collision with root package name */
public final /* synthetic */ RolloutsState f6057c;
public /* synthetic */ b(RolloutsStateSubscriber rolloutsStateSubscriber, RolloutsState rolloutsState, int i) {
this.f6055a = i;
this.f6056b = rolloutsStateSubscriber;
this.f6057c = rolloutsState;
}
@Override // java.lang.Runnable
public final void run() {
switch (this.f6055a) {
case 0:
RolloutsStateSubscriptionsHandler.b(this.f6056b, this.f6057c);
return;
default:
RolloutsStateSubscriptionsHandler.c(this.f6056b, this.f6057c);
return;
}
}
}

View File

@@ -0,0 +1,8 @@
package com.google.firebase.remoteconfig.interop;
import com.google.firebase.remoteconfig.interop.rollouts.RolloutsStateSubscriber;
/* loaded from: classes3.dex */
public interface FirebaseRemoteConfigInterop {
void registerRolloutsStateSubscriber(String str, RolloutsStateSubscriber rolloutsStateSubscriber);
}

View File

@@ -0,0 +1,48 @@
package com.google.firebase.remoteconfig.interop.rollouts;
import com.google.firebase.encoders.FieldDescriptor;
import com.google.firebase.encoders.ObjectEncoder;
import com.google.firebase.encoders.ObjectEncoderContext;
import com.google.firebase.encoders.config.Configurator;
import com.google.firebase.encoders.config.EncoderConfig;
import com.google.firebase.remoteconfig.RemoteConfigConstants;
import com.google.firebase.remoteconfig.internal.ConfigContainer;
import java.io.IOException;
/* loaded from: classes3.dex */
public final class AutoRolloutAssignmentEncoder implements Configurator {
public static final int CODEGEN_VERSION = 2;
public static final Configurator CONFIG = new AutoRolloutAssignmentEncoder();
/* loaded from: classes3.dex */
public static final class RolloutAssignmentEncoder implements ObjectEncoder<RolloutAssignment> {
static final RolloutAssignmentEncoder INSTANCE = new RolloutAssignmentEncoder();
private static final FieldDescriptor ROLLOUTID_DESCRIPTOR = FieldDescriptor.of(ConfigContainer.ROLLOUT_METADATA_ID);
private static final FieldDescriptor VARIANTID_DESCRIPTOR = FieldDescriptor.of("variantId");
private static final FieldDescriptor PARAMETERKEY_DESCRIPTOR = FieldDescriptor.of("parameterKey");
private static final FieldDescriptor PARAMETERVALUE_DESCRIPTOR = FieldDescriptor.of("parameterValue");
private static final FieldDescriptor TEMPLATEVERSION_DESCRIPTOR = FieldDescriptor.of(RemoteConfigConstants.ResponseFieldKey.TEMPLATE_VERSION_NUMBER);
private RolloutAssignmentEncoder() {
}
@Override // com.google.firebase.encoders.Encoder
public void encode(RolloutAssignment rolloutAssignment, ObjectEncoderContext objectEncoderContext) throws IOException {
objectEncoderContext.add(ROLLOUTID_DESCRIPTOR, rolloutAssignment.getRolloutId());
objectEncoderContext.add(VARIANTID_DESCRIPTOR, rolloutAssignment.getVariantId());
objectEncoderContext.add(PARAMETERKEY_DESCRIPTOR, rolloutAssignment.getParameterKey());
objectEncoderContext.add(PARAMETERVALUE_DESCRIPTOR, rolloutAssignment.getParameterValue());
objectEncoderContext.add(TEMPLATEVERSION_DESCRIPTOR, rolloutAssignment.getTemplateVersion());
}
}
private AutoRolloutAssignmentEncoder() {
}
@Override // com.google.firebase.encoders.config.Configurator
public void configure(EncoderConfig<?> encoderConfig) {
RolloutAssignmentEncoder rolloutAssignmentEncoder = RolloutAssignmentEncoder.INSTANCE;
encoderConfig.registerEncoder(RolloutAssignment.class, rolloutAssignmentEncoder);
encoderConfig.registerEncoder(AutoValue_RolloutAssignment.class, rolloutAssignmentEncoder);
}
}

View File

@@ -0,0 +1,155 @@
package com.google.firebase.remoteconfig.interop.rollouts;
import C.w;
import com.google.firebase.remoteconfig.interop.rollouts.RolloutAssignment;
/* loaded from: classes3.dex */
final class AutoValue_RolloutAssignment extends RolloutAssignment {
private final String parameterKey;
private final String parameterValue;
private final String rolloutId;
private final long templateVersion;
private final String variantId;
/* loaded from: classes3.dex */
public static final class Builder extends RolloutAssignment.Builder {
private String parameterKey;
private String parameterValue;
private String rolloutId;
private byte set$0;
private long templateVersion;
private String variantId;
@Override // com.google.firebase.remoteconfig.interop.rollouts.RolloutAssignment.Builder
public RolloutAssignment build() {
if (this.set$0 == 1 && this.rolloutId != null && this.variantId != null && this.parameterKey != null && this.parameterValue != null) {
return new AutoValue_RolloutAssignment(this.rolloutId, this.variantId, this.parameterKey, this.parameterValue, this.templateVersion);
}
StringBuilder sb = new StringBuilder();
if (this.rolloutId == null) {
sb.append(" rolloutId");
}
if (this.variantId == null) {
sb.append(" variantId");
}
if (this.parameterKey == null) {
sb.append(" parameterKey");
}
if (this.parameterValue == null) {
sb.append(" parameterValue");
}
if ((this.set$0 & 1) == 0) {
sb.append(" templateVersion");
}
throw new IllegalStateException("Missing required properties:" + ((Object) sb));
}
@Override // com.google.firebase.remoteconfig.interop.rollouts.RolloutAssignment.Builder
public RolloutAssignment.Builder setParameterKey(String str) {
if (str == null) {
throw new NullPointerException("Null parameterKey");
}
this.parameterKey = str;
return this;
}
@Override // com.google.firebase.remoteconfig.interop.rollouts.RolloutAssignment.Builder
public RolloutAssignment.Builder setParameterValue(String str) {
if (str == null) {
throw new NullPointerException("Null parameterValue");
}
this.parameterValue = str;
return this;
}
@Override // com.google.firebase.remoteconfig.interop.rollouts.RolloutAssignment.Builder
public RolloutAssignment.Builder setRolloutId(String str) {
if (str == null) {
throw new NullPointerException("Null rolloutId");
}
this.rolloutId = str;
return this;
}
@Override // com.google.firebase.remoteconfig.interop.rollouts.RolloutAssignment.Builder
public RolloutAssignment.Builder setTemplateVersion(long j4) {
this.templateVersion = j4;
this.set$0 = (byte) (this.set$0 | 1);
return this;
}
@Override // com.google.firebase.remoteconfig.interop.rollouts.RolloutAssignment.Builder
public RolloutAssignment.Builder setVariantId(String str) {
if (str == null) {
throw new NullPointerException("Null variantId");
}
this.variantId = str;
return this;
}
}
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (obj instanceof RolloutAssignment) {
RolloutAssignment rolloutAssignment = (RolloutAssignment) obj;
if (this.rolloutId.equals(rolloutAssignment.getRolloutId()) && this.variantId.equals(rolloutAssignment.getVariantId()) && this.parameterKey.equals(rolloutAssignment.getParameterKey()) && this.parameterValue.equals(rolloutAssignment.getParameterValue()) && this.templateVersion == rolloutAssignment.getTemplateVersion()) {
return true;
}
}
return false;
}
@Override // com.google.firebase.remoteconfig.interop.rollouts.RolloutAssignment
public String getParameterKey() {
return this.parameterKey;
}
@Override // com.google.firebase.remoteconfig.interop.rollouts.RolloutAssignment
public String getParameterValue() {
return this.parameterValue;
}
@Override // com.google.firebase.remoteconfig.interop.rollouts.RolloutAssignment
public String getRolloutId() {
return this.rolloutId;
}
@Override // com.google.firebase.remoteconfig.interop.rollouts.RolloutAssignment
public long getTemplateVersion() {
return this.templateVersion;
}
@Override // com.google.firebase.remoteconfig.interop.rollouts.RolloutAssignment
public String getVariantId() {
return this.variantId;
}
public int hashCode() {
int hashCode = (((((((this.rolloutId.hashCode() ^ 1000003) * 1000003) ^ this.variantId.hashCode()) * 1000003) ^ this.parameterKey.hashCode()) * 1000003) ^ this.parameterValue.hashCode()) * 1000003;
long j4 = this.templateVersion;
return ((int) (j4 ^ (j4 >>> 32))) ^ hashCode;
}
public String toString() {
StringBuilder sb = new StringBuilder("RolloutAssignment{rolloutId=");
sb.append(this.rolloutId);
sb.append(", variantId=");
sb.append(this.variantId);
sb.append(", parameterKey=");
sb.append(this.parameterKey);
sb.append(", parameterValue=");
sb.append(this.parameterValue);
sb.append(", templateVersion=");
return w.q(sb, this.templateVersion, "}");
}
private AutoValue_RolloutAssignment(String str, String str2, String str3, String str4, long j4) {
this.rolloutId = str;
this.variantId = str2;
this.parameterKey = str3;
this.parameterValue = str4;
this.templateVersion = j4;
}
}

View File

@@ -0,0 +1,39 @@
package com.google.firebase.remoteconfig.interop.rollouts;
import java.util.Set;
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes3.dex */
public final class AutoValue_RolloutsState extends RolloutsState {
private final Set<RolloutAssignment> rolloutAssignments;
public AutoValue_RolloutsState(Set<RolloutAssignment> set) {
if (set == null) {
throw new NullPointerException("Null rolloutAssignments");
}
this.rolloutAssignments = set;
}
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (obj instanceof RolloutsState) {
return this.rolloutAssignments.equals(((RolloutsState) obj).getRolloutAssignments());
}
return false;
}
@Override // com.google.firebase.remoteconfig.interop.rollouts.RolloutsState
public Set<RolloutAssignment> getRolloutAssignments() {
return this.rolloutAssignments;
}
public int hashCode() {
return this.rolloutAssignments.hashCode() ^ 1000003;
}
public String toString() {
return "RolloutsState{rolloutAssignments=" + this.rolloutAssignments + "}";
}
}

View File

@@ -0,0 +1,59 @@
package com.google.firebase.remoteconfig.interop.rollouts;
import com.google.auto.value.AutoValue;
import com.google.firebase.encoders.DataEncoder;
import com.google.firebase.encoders.annotations.Encodable;
import com.google.firebase.encoders.json.JsonDataEncoderBuilder;
import com.google.firebase.remoteconfig.interop.rollouts.AutoValue_RolloutAssignment;
import org.json.JSONException;
import org.json.JSONObject;
@AutoValue
@Encodable
/* loaded from: classes3.dex */
public abstract class RolloutAssignment {
private static final String PARAMETER_KEY = "parameterKey";
private static final String PARAMETER_VALUE = "parameterValue";
public static final DataEncoder ROLLOUT_ASSIGNMENT_JSON_ENCODER = new JsonDataEncoderBuilder().configureWith(AutoRolloutAssignmentEncoder.CONFIG).build();
private static final String ROLLOUT_ID = "rolloutId";
private static final String TEMPLATE_VERSION = "templateVersion";
private static final String VARIANT_ID = "variantId";
@AutoValue.Builder
/* loaded from: classes3.dex */
public static abstract class Builder {
public abstract RolloutAssignment build();
public abstract Builder setParameterKey(String str);
public abstract Builder setParameterValue(String str);
public abstract Builder setRolloutId(String str);
public abstract Builder setTemplateVersion(long j4);
public abstract Builder setVariantId(String str);
}
public static Builder builder() {
return new AutoValue_RolloutAssignment.Builder();
}
public static RolloutAssignment create(JSONObject jSONObject) throws JSONException {
return builder().setRolloutId(jSONObject.getString("rolloutId")).setVariantId(jSONObject.getString("variantId")).setParameterKey(jSONObject.getString(PARAMETER_KEY)).setParameterValue(jSONObject.getString(PARAMETER_VALUE)).setTemplateVersion(jSONObject.getLong("templateVersion")).build();
}
public abstract String getParameterKey();
public abstract String getParameterValue();
public abstract String getRolloutId();
public abstract long getTemplateVersion();
public abstract String getVariantId();
public static RolloutAssignment create(String str) throws JSONException {
return create(new JSONObject(str));
}
}

View File

@@ -0,0 +1,14 @@
package com.google.firebase.remoteconfig.interop.rollouts;
import com.google.auto.value.AutoValue;
import java.util.Set;
@AutoValue
/* loaded from: classes3.dex */
public abstract class RolloutsState {
public static RolloutsState create(Set<RolloutAssignment> set) {
return new AutoValue_RolloutsState(set);
}
public abstract Set<RolloutAssignment> getRolloutAssignments();
}

View File

@@ -0,0 +1,6 @@
package com.google.firebase.remoteconfig.interop.rollouts;
/* loaded from: classes3.dex */
public interface RolloutsStateSubscriber {
void onRolloutsStateChanged(RolloutsState rolloutsState);
}

View File

@@ -0,0 +1,9 @@
package com.google.firebase.remoteconfig.ktx;
/* loaded from: classes3.dex */
public final class BuildConfig {
public static final String BUILD_TYPE = "release";
public static final boolean DEBUG = false;
public static final String LIBRARY_PACKAGE_NAME = "com.google.firebase.remoteconfig.ktx";
public static final String VERSION_NAME = "unspecified";
}

View File

@@ -0,0 +1,19 @@
package com.google.firebase.remoteconfig.ktx;
import androidx.annotation.Keep;
import com.google.firebase.components.Component;
import com.google.firebase.components.ComponentRegistrar;
import com.google.firebase.platforminfo.LibraryVersionComponent;
import java.util.List;
import kotlin.Metadata;
import kotlin.collections.CollectionsKt;
@Keep
@Metadata(d1 = {"\u0000\u0016\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010 \n\u0002\u0018\u0002\n\u0000\b\u0007\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002J\u0012\u0010\u0003\u001a\f\u0012\b\u0012\u0006\u0012\u0002\b\u00030\u00050\u0004H\u0016¨\u0006\u0006"}, d2 = {"Lcom/google/firebase/remoteconfig/ktx/FirebaseConfigLegacyRegistrar;", "Lcom/google/firebase/components/ComponentRegistrar;", "()V", "getComponents", "", "Lcom/google/firebase/components/Component;", "com.google.firebase-firebase-config-ktx"}, k = 1, mv = {1, 7, 1}, xi = 48)
/* loaded from: classes3.dex */
public final class FirebaseConfigLegacyRegistrar implements ComponentRegistrar {
@Override // com.google.firebase.components.ComponentRegistrar
public List<Component<?>> getComponents() {
return CollectionsKt.listOf(LibraryVersionComponent.create(LoggingKt.LIBRARY_NAME, com.google.firebase.remoteconfig.BuildConfig.VERSION_NAME));
}
}

View File

@@ -0,0 +1,21 @@
package com.google.firebase.remoteconfig.ktx;
import androidx.annotation.Keep;
import com.google.firebase.components.Component;
import com.google.firebase.components.ComponentRegistrar;
import java.util.List;
import kotlin.Deprecated;
import kotlin.Metadata;
import kotlin.ReplaceWith;
import kotlin.collections.CollectionsKt;
@Deprecated(message = "Migrate to use the KTX API from the main module: https://firebase.google.com/docs/android/kotlin-migration.", replaceWith = @ReplaceWith(expression = "", imports = {}))
@Keep
@Metadata(d1 = {"\u0000\u0016\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010 \n\u0002\u0018\u0002\n\u0000\b\u0007\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002J\u0012\u0010\u0003\u001a\f\u0012\b\u0012\u0006\u0012\u0002\b\u00030\u00050\u0004H\u0016¨\u0006\u0006"}, d2 = {"Lcom/google/firebase/remoteconfig/ktx/FirebaseRemoteConfigKtxRegistrar;", "Lcom/google/firebase/components/ComponentRegistrar;", "()V", "getComponents", "", "Lcom/google/firebase/components/Component;", "com.google.firebase-firebase-config"}, k = 1, mv = {1, 7, 1}, xi = 48)
/* loaded from: classes3.dex */
public final class FirebaseRemoteConfigKtxRegistrar implements ComponentRegistrar {
@Override // com.google.firebase.components.ComponentRegistrar
public List<Component<?>> getComponents() {
return CollectionsKt.emptyList();
}
}

View File

@@ -0,0 +1,9 @@
package com.google.firebase.remoteconfig.ktx;
import kotlin.Metadata;
@Metadata(d1 = {"\u0000\b\n\u0000\n\u0002\u0010\u000e\n\u0000\"\u000e\u0010\u0000\u001a\u00020\u0001X\u0080T¢\u0006\u0002\n\u0000¨\u0006\u0002"}, d2 = {"LIBRARY_NAME", "", "com.google.firebase-firebase-config-ktx"}, k = 2, mv = {1, 7, 1}, xi = 48)
/* loaded from: classes3.dex */
public final class LoggingKt {
public static final String LIBRARY_NAME = "fire-cfg-ktx";
}

View File

@@ -0,0 +1,290 @@
package com.google.firebase.remoteconfig.ktx;
/* loaded from: classes3.dex */
public final class R {
/* loaded from: classes3.dex */
public static final class attr {
public static final int alpha = 0x7f030031;
public static final int coordinatorLayoutStyle = 0x7f03016c;
public static final int font = 0x7f03022d;
public static final int fontProviderAuthority = 0x7f03022f;
public static final int fontProviderCerts = 0x7f030230;
public static final int fontProviderFetchStrategy = 0x7f030231;
public static final int fontProviderFetchTimeout = 0x7f030232;
public static final int fontProviderPackage = 0x7f030233;
public static final int fontProviderQuery = 0x7f030234;
public static final int fontStyle = 0x7f030236;
public static final int fontVariationSettings = 0x7f030237;
public static final int fontWeight = 0x7f030238;
public static final int keylines = 0x7f0302b5;
public static final int layout_anchor = 0x7f0302c6;
public static final int layout_anchorGravity = 0x7f0302c7;
public static final int layout_behavior = 0x7f0302c9;
public static final int layout_dodgeInsetEdges = 0x7f0302fa;
public static final int layout_insetEdge = 0x7f030305;
public static final int layout_keyline = 0x7f030306;
public static final int statusBarBackground = 0x7f030488;
public static final int ttcIndex = 0x7f030559;
private attr() {
}
}
/* loaded from: classes3.dex */
public static final class color {
public static final int notification_action_color_filter = 0x7f050315;
public static final int notification_icon_bg_color = 0x7f050316;
public static final int ripple_material_light = 0x7f050322;
public static final int secondary_text_default_material_light = 0x7f050324;
private color() {
}
}
/* loaded from: classes3.dex */
public static final class dimen {
public static final int compat_button_inset_horizontal_material = 0x7f06006d;
public static final int compat_button_inset_vertical_material = 0x7f06006e;
public static final int compat_button_padding_horizontal_material = 0x7f06006f;
public static final int compat_button_padding_vertical_material = 0x7f060070;
public static final int compat_control_corner_material = 0x7f060071;
public static final int compat_notification_large_icon_max_height = 0x7f060072;
public static final int compat_notification_large_icon_max_width = 0x7f060073;
public static final int notification_action_icon_size = 0x7f060385;
public static final int notification_action_text_size = 0x7f060386;
public static final int notification_big_circle_margin = 0x7f060387;
public static final int notification_content_margin_start = 0x7f060388;
public static final int notification_large_icon_height = 0x7f06038d;
public static final int notification_large_icon_width = 0x7f06038e;
public static final int notification_main_column_padding_top = 0x7f06038f;
public static final int notification_media_narrow_margin = 0x7f060391;
public static final int notification_right_icon_size = 0x7f060393;
public static final int notification_right_side_padding_top = 0x7f060394;
public static final int notification_small_icon_background_padding = 0x7f060395;
public static final int notification_small_icon_size_as_large = 0x7f060396;
public static final int notification_subtext_size = 0x7f060397;
public static final int notification_top_pad = 0x7f06039b;
public static final int notification_top_pad_large_text = 0x7f06039c;
private dimen() {
}
}
/* loaded from: classes3.dex */
public static final class drawable {
public static final int notification_action_background = 0x7f070181;
public static final int notification_bg = 0x7f070182;
public static final int notification_bg_low = 0x7f070183;
public static final int notification_bg_low_normal = 0x7f070184;
public static final int notification_bg_low_pressed = 0x7f070185;
public static final int notification_bg_normal = 0x7f070186;
public static final int notification_bg_normal_pressed = 0x7f070187;
public static final int notification_icon_background = 0x7f070188;
public static final int notification_template_icon_bg = 0x7f07018a;
public static final int notification_template_icon_low_bg = 0x7f07018b;
public static final int notification_tile_bg = 0x7f07018c;
public static final int notify_panel_notification_icon_bg = 0x7f07018d;
private drawable() {
}
}
/* loaded from: classes3.dex */
public static final class id {
public static final int accessibility_action_clickable_span = 0x7f090013;
public static final int accessibility_custom_action_0 = 0x7f090014;
public static final int accessibility_custom_action_1 = 0x7f090015;
public static final int accessibility_custom_action_10 = 0x7f090016;
public static final int accessibility_custom_action_11 = 0x7f090017;
public static final int accessibility_custom_action_12 = 0x7f090018;
public static final int accessibility_custom_action_13 = 0x7f090019;
public static final int accessibility_custom_action_14 = 0x7f09001a;
public static final int accessibility_custom_action_15 = 0x7f09001b;
public static final int accessibility_custom_action_16 = 0x7f09001c;
public static final int accessibility_custom_action_17 = 0x7f09001d;
public static final int accessibility_custom_action_18 = 0x7f09001e;
public static final int accessibility_custom_action_19 = 0x7f09001f;
public static final int accessibility_custom_action_2 = 0x7f090020;
public static final int accessibility_custom_action_20 = 0x7f090021;
public static final int accessibility_custom_action_21 = 0x7f090022;
public static final int accessibility_custom_action_22 = 0x7f090023;
public static final int accessibility_custom_action_23 = 0x7f090024;
public static final int accessibility_custom_action_24 = 0x7f090025;
public static final int accessibility_custom_action_25 = 0x7f090026;
public static final int accessibility_custom_action_26 = 0x7f090027;
public static final int accessibility_custom_action_27 = 0x7f090028;
public static final int accessibility_custom_action_28 = 0x7f090029;
public static final int accessibility_custom_action_29 = 0x7f09002a;
public static final int accessibility_custom_action_3 = 0x7f09002b;
public static final int accessibility_custom_action_30 = 0x7f09002c;
public static final int accessibility_custom_action_31 = 0x7f09002d;
public static final int accessibility_custom_action_4 = 0x7f09002e;
public static final int accessibility_custom_action_5 = 0x7f09002f;
public static final int accessibility_custom_action_6 = 0x7f090030;
public static final int accessibility_custom_action_7 = 0x7f090031;
public static final int accessibility_custom_action_8 = 0x7f090032;
public static final int accessibility_custom_action_9 = 0x7f090033;
public static final int action_container = 0x7f090045;
public static final int action_divider = 0x7f090048;
public static final int action_image = 0x7f09004a;
public static final int action_text = 0x7f090051;
public static final int actions = 0x7f090052;
public static final int async = 0x7f090071;
public static final int blocking = 0x7f090082;
public static final int bottom = 0x7f090083;
public static final int chronometer = 0x7f0900a9;
public static final int dialog_button = 0x7f09010b;
public static final int end = 0x7f090133;
public static final int forever = 0x7f090152;
public static final int icon = 0x7f090195;
public static final int icon_group = 0x7f090196;
public static final int info = 0x7f0901a9;
public static final int italic = 0x7f0901be;
public static final int left = 0x7f0901e2;
public static final int line1 = 0x7f0901e9;
public static final int line3 = 0x7f0901ea;
public static final int none = 0x7f090264;
public static final int normal = 0x7f090265;
public static final int notification_background = 0x7f090269;
public static final int notification_main_column = 0x7f09026a;
public static final int notification_main_column_container = 0x7f09026b;
public static final int right = 0x7f0902cd;
public static final int right_icon = 0x7f0902cf;
public static final int right_side = 0x7f0902d0;
public static final int start = 0x7f090322;
public static final int tag_accessibility_actions = 0x7f09035c;
public static final int tag_accessibility_clickable_spans = 0x7f09035d;
public static final int tag_accessibility_heading = 0x7f09035e;
public static final int tag_accessibility_pane_title = 0x7f09035f;
public static final int tag_screen_reader_focusable = 0x7f090363;
public static final int tag_transition_group = 0x7f090365;
public static final int tag_unhandled_key_event_manager = 0x7f090366;
public static final int tag_unhandled_key_listeners = 0x7f090367;
public static final int text = 0x7f09036d;
public static final int text2 = 0x7f09036e;
public static final int time = 0x7f09038e;
public static final int title = 0x7f090393;
public static final int top = 0x7f0903ac;
private id() {
}
}
/* loaded from: classes3.dex */
public static final class integer {
public static final int google_play_services_version = 0x7f0a0009;
public static final int status_bar_notification_info_maxnum = 0x7f0a0045;
private integer() {
}
}
/* loaded from: classes3.dex */
public static final class layout {
public static final int custom_dialog = 0x7f0c0026;
public static final int notification_action = 0x7f0c00a8;
public static final int notification_action_tombstone = 0x7f0c00a9;
public static final int notification_template_custom_big = 0x7f0c00aa;
public static final int notification_template_icon_group = 0x7f0c00ab;
public static final int notification_template_part_chronometer = 0x7f0c00ac;
public static final int notification_template_part_time = 0x7f0c00ad;
private layout() {
}
}
/* loaded from: classes3.dex */
public static final class raw {
public static final int firebase_common_keep = 0x7f120000;
private raw() {
}
}
/* loaded from: classes3.dex */
public static final class string {
public static final int common_google_play_services_unknown_issue = 0x7f1300bc;
public static final int status_bar_notification_info_overflow = 0x7f13023b;
private string() {
}
}
/* loaded from: classes3.dex */
public static final class style {
public static final int TextAppearance_Compat_Notification = 0x7f1401fb;
public static final int TextAppearance_Compat_Notification_Info = 0x7f1401fc;
public static final int TextAppearance_Compat_Notification_Line2 = 0x7f1401fd;
public static final int TextAppearance_Compat_Notification_Time = 0x7f1401fe;
public static final int TextAppearance_Compat_Notification_Title = 0x7f1401ff;
public static final int Widget_Compat_NotificationActionContainer = 0x7f1403a1;
public static final int Widget_Compat_NotificationActionText = 0x7f1403a2;
public static final int Widget_Support_CoordinatorLayout = 0x7f1404d7;
private style() {
}
}
/* loaded from: classes3.dex */
public static final class styleable {
public static final int ColorStateListItem_alpha = 0x00000003;
public static final int ColorStateListItem_android_alpha = 0x00000001;
public static final int ColorStateListItem_android_color = 0x00000000;
public static final int ColorStateListItem_android_lStar = 0x00000002;
public static final int ColorStateListItem_lStar = 0x00000004;
public static final int CoordinatorLayout_Layout_android_layout_gravity = 0x00000000;
public static final int CoordinatorLayout_Layout_layout_anchor = 0x00000001;
public static final int CoordinatorLayout_Layout_layout_anchorGravity = 0x00000002;
public static final int CoordinatorLayout_Layout_layout_behavior = 0x00000003;
public static final int CoordinatorLayout_Layout_layout_dodgeInsetEdges = 0x00000004;
public static final int CoordinatorLayout_Layout_layout_insetEdge = 0x00000005;
public static final int CoordinatorLayout_Layout_layout_keyline = 0x00000006;
public static final int CoordinatorLayout_keylines = 0x00000000;
public static final int CoordinatorLayout_statusBarBackground = 0x00000001;
public static final int FontFamilyFont_android_font = 0x00000000;
public static final int FontFamilyFont_android_fontStyle = 0x00000002;
public static final int FontFamilyFont_android_fontVariationSettings = 0x00000004;
public static final int FontFamilyFont_android_fontWeight = 0x00000001;
public static final int FontFamilyFont_android_ttcIndex = 0x00000003;
public static final int FontFamilyFont_font = 0x00000005;
public static final int FontFamilyFont_fontStyle = 0x00000006;
public static final int FontFamilyFont_fontVariationSettings = 0x00000007;
public static final int FontFamilyFont_fontWeight = 0x00000008;
public static final int FontFamilyFont_ttcIndex = 0x00000009;
public static final int FontFamily_fontProviderAuthority = 0x00000000;
public static final int FontFamily_fontProviderCerts = 0x00000001;
public static final int FontFamily_fontProviderFetchStrategy = 0x00000002;
public static final int FontFamily_fontProviderFetchTimeout = 0x00000003;
public static final int FontFamily_fontProviderPackage = 0x00000004;
public static final int FontFamily_fontProviderQuery = 0x00000005;
public static final int FontFamily_fontProviderSystemFontFamily = 0x00000006;
public static final int GradientColorItem_android_color = 0x00000000;
public static final int GradientColorItem_android_offset = 0x00000001;
public static final int GradientColor_android_centerColor = 0x00000007;
public static final int GradientColor_android_centerX = 0x00000003;
public static final int GradientColor_android_centerY = 0x00000004;
public static final int GradientColor_android_endColor = 0x00000001;
public static final int GradientColor_android_endX = 0x0000000a;
public static final int GradientColor_android_endY = 0x0000000b;
public static final int GradientColor_android_gradientRadius = 0x00000005;
public static final int GradientColor_android_startColor = 0x00000000;
public static final int GradientColor_android_startX = 0x00000008;
public static final int GradientColor_android_startY = 0x00000009;
public static final int GradientColor_android_tileMode = 0x00000006;
public static final int GradientColor_android_type = 0x00000002;
public static final int[] ColorStateListItem = {android.R.attr.color, android.R.attr.alpha, 16844359, com.adif.elcanomovil.R.attr.alpha, com.adif.elcanomovil.R.attr.lStar};
public static final int[] CoordinatorLayout = {com.adif.elcanomovil.R.attr.keylines, com.adif.elcanomovil.R.attr.statusBarBackground};
public static final int[] CoordinatorLayout_Layout = {android.R.attr.layout_gravity, com.adif.elcanomovil.R.attr.layout_anchor, com.adif.elcanomovil.R.attr.layout_anchorGravity, com.adif.elcanomovil.R.attr.layout_behavior, com.adif.elcanomovil.R.attr.layout_dodgeInsetEdges, com.adif.elcanomovil.R.attr.layout_insetEdge, com.adif.elcanomovil.R.attr.layout_keyline};
public static final int[] FontFamily = {com.adif.elcanomovil.R.attr.fontProviderAuthority, com.adif.elcanomovil.R.attr.fontProviderCerts, com.adif.elcanomovil.R.attr.fontProviderFetchStrategy, com.adif.elcanomovil.R.attr.fontProviderFetchTimeout, com.adif.elcanomovil.R.attr.fontProviderPackage, com.adif.elcanomovil.R.attr.fontProviderQuery, com.adif.elcanomovil.R.attr.fontProviderSystemFontFamily};
public static final int[] FontFamilyFont = {android.R.attr.font, android.R.attr.fontWeight, android.R.attr.fontStyle, android.R.attr.ttcIndex, android.R.attr.fontVariationSettings, com.adif.elcanomovil.R.attr.font, com.adif.elcanomovil.R.attr.fontStyle, com.adif.elcanomovil.R.attr.fontVariationSettings, com.adif.elcanomovil.R.attr.fontWeight, com.adif.elcanomovil.R.attr.ttcIndex};
public static final int[] GradientColor = {android.R.attr.startColor, android.R.attr.endColor, android.R.attr.type, android.R.attr.centerX, android.R.attr.centerY, android.R.attr.gradientRadius, android.R.attr.tileMode, android.R.attr.centerColor, android.R.attr.startX, android.R.attr.startY, android.R.attr.endX, android.R.attr.endY};
public static final int[] GradientColorItem = {android.R.attr.color, android.R.attr.offset};
private styleable() {
}
}
private R() {
}
}

View File

@@ -0,0 +1,45 @@
package com.google.firebase.remoteconfig.ktx;
import com.google.firebase.messaging.Constants;
import com.google.firebase.remoteconfig.ConfigUpdate;
import com.google.firebase.remoteconfig.ConfigUpdateListener;
import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigException;
import com.google.firebase.remoteconfig.d;
import kotlin.Metadata;
import kotlin.jvm.internal.Intrinsics;
import kotlinx.coroutines.CoroutineScopeKt;
import kotlinx.coroutines.channels.ChannelsKt;
import kotlinx.coroutines.channels.ProducerScope;
@Metadata(d1 = {"\u0000\u001f\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000*\u0001\u0000\b\n\u0018\u00002\u00020\u0001J\u0010\u0010\u0002\u001a\u00020\u00032\u0006\u0010\u0004\u001a\u00020\u0005H\u0016J\u0010\u0010\u0006\u001a\u00020\u00032\u0006\u0010\u0007\u001a\u00020\bH\u0016¨\u0006\t"}, d2 = {"com/google/firebase/remoteconfig/ktx/RemoteConfigKt$configUpdates$1$registration$1", "Lcom/google/firebase/remoteconfig/ConfigUpdateListener;", "onError", "", Constants.IPC_BUNDLE_KEY_SEND_ERROR, "Lcom/google/firebase/remoteconfig/FirebaseRemoteConfigException;", "onUpdate", "configUpdate", "Lcom/google/firebase/remoteconfig/ConfigUpdate;", "com.google.firebase-firebase-config"}, k = 1, mv = {1, 7, 1}, xi = 48)
/* loaded from: classes3.dex */
public final class RemoteConfigKt$configUpdates$1$registration$1 implements ConfigUpdateListener {
final /* synthetic */ ProducerScope<ConfigUpdate> $$this$callbackFlow;
final /* synthetic */ FirebaseRemoteConfig $this_configUpdates;
/* JADX WARN: Multi-variable type inference failed */
public RemoteConfigKt$configUpdates$1$registration$1(FirebaseRemoteConfig firebaseRemoteConfig, ProducerScope<? super ConfigUpdate> producerScope) {
this.$this_configUpdates = firebaseRemoteConfig;
this.$$this$callbackFlow = producerScope;
}
/* renamed from: onUpdate$lambda-0 */
public static final void m95onUpdate$lambda0(ProducerScope $this$callbackFlow, ConfigUpdate configUpdate) {
Intrinsics.checkNotNullParameter($this$callbackFlow, "$$this$callbackFlow");
Intrinsics.checkNotNullParameter(configUpdate, "$configUpdate");
ChannelsKt.trySendBlocking($this$callbackFlow, configUpdate);
}
@Override // com.google.firebase.remoteconfig.ConfigUpdateListener
public void onError(FirebaseRemoteConfigException r22) {
Intrinsics.checkNotNullParameter(r22, "error");
CoroutineScopeKt.cancel(this.$$this$callbackFlow, "Error listening for config updates.", r22);
}
@Override // com.google.firebase.remoteconfig.ConfigUpdateListener
public void onUpdate(ConfigUpdate configUpdate) {
Intrinsics.checkNotNullParameter(configUpdate, "configUpdate");
this.$this_configUpdates.schedule(new d(this.$$this$callbackFlow, configUpdate, 1));
}
}

View File

@@ -0,0 +1,83 @@
package com.google.firebase.remoteconfig.ktx;
import com.google.firebase.remoteconfig.ConfigUpdate;
import com.google.firebase.remoteconfig.ConfigUpdateListenerRegistration;
import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
import kotlin.Metadata;
import kotlin.ResultKt;
import kotlin.Unit;
import kotlin.coroutines.Continuation;
import kotlin.coroutines.intrinsics.IntrinsicsKt;
import kotlin.coroutines.jvm.internal.DebugMetadata;
import kotlin.coroutines.jvm.internal.SuspendLambda;
import kotlin.jvm.functions.Function0;
import kotlin.jvm.functions.Function2;
import kotlin.jvm.internal.Intrinsics;
import kotlinx.coroutines.channels.ProduceKt;
import kotlinx.coroutines.channels.ProducerScope;
@Metadata(d1 = {"\u0000\u000e\n\u0000\n\u0002\u0010\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\u0010\u0000\u001a\u00020\u0001*\b\u0012\u0004\u0012\u00020\u00030\u0002H\u008a@"}, d2 = {"<anonymous>", "", "Lkotlinx/coroutines/channels/ProducerScope;", "Lcom/google/firebase/remoteconfig/ConfigUpdate;"}, k = 3, mv = {1, 7, 1}, xi = 48)
@DebugMetadata(c = "com.google.firebase.remoteconfig.ktx.RemoteConfigKt$configUpdates$1", f = "RemoteConfig.kt", i = {}, l = {117}, m = "invokeSuspend", n = {}, s = {})
/* loaded from: classes3.dex */
public final class RemoteConfigKt$configUpdates$1 extends SuspendLambda implements Function2<ProducerScope<? super ConfigUpdate>, Continuation<? super Unit>, Object> {
final /* synthetic */ FirebaseRemoteConfig $this_configUpdates;
private /* synthetic */ Object L$0;
int label;
/* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */
public RemoteConfigKt$configUpdates$1(FirebaseRemoteConfig firebaseRemoteConfig, Continuation<? super RemoteConfigKt$configUpdates$1> continuation) {
super(2, continuation);
this.$this_configUpdates = firebaseRemoteConfig;
}
@Override // kotlin.coroutines.jvm.internal.BaseContinuationImpl
public final Continuation<Unit> create(Object obj, Continuation<?> continuation) {
RemoteConfigKt$configUpdates$1 remoteConfigKt$configUpdates$1 = new RemoteConfigKt$configUpdates$1(this.$this_configUpdates, continuation);
remoteConfigKt$configUpdates$1.L$0 = obj;
return remoteConfigKt$configUpdates$1;
}
@Override // kotlin.coroutines.jvm.internal.BaseContinuationImpl
public final Object invokeSuspend(Object obj) {
Object coroutine_suspended = IntrinsicsKt.getCOROUTINE_SUSPENDED();
int i = this.label;
if (i == 0) {
ResultKt.throwOnFailure(obj);
ProducerScope producerScope = (ProducerScope) this.L$0;
FirebaseRemoteConfig firebaseRemoteConfig = this.$this_configUpdates;
final ConfigUpdateListenerRegistration addOnConfigUpdateListener = firebaseRemoteConfig.addOnConfigUpdateListener(new RemoteConfigKt$configUpdates$1$registration$1(firebaseRemoteConfig, producerScope));
Intrinsics.checkNotNullExpressionValue(addOnConfigUpdateListener, "FirebaseRemoteConfig.con… }\n }\n )");
Function0<Unit> function0 = new Function0<Unit>() { // from class: com.google.firebase.remoteconfig.ktx.RemoteConfigKt$configUpdates$1.1
{
super(0);
}
@Override // kotlin.jvm.functions.Function0
public /* bridge */ /* synthetic */ Unit invoke() {
invoke2();
return Unit.INSTANCE;
}
/* renamed from: invoke, reason: avoid collision after fix types in other method */
public final void invoke2() {
ConfigUpdateListenerRegistration.this.remove();
}
};
this.label = 1;
if (ProduceKt.awaitClose(producerScope, function0, this) == coroutine_suspended) {
return coroutine_suspended;
}
} else {
if (i != 1) {
throw new IllegalStateException("call to 'resume' before 'invoke' with coroutine");
}
ResultKt.throwOnFailure(obj);
}
return Unit.INSTANCE;
}
@Override // kotlin.jvm.functions.Function2
public final Object invoke(ProducerScope<? super ConfigUpdate> producerScope, Continuation<? super Unit> continuation) {
return ((RemoteConfigKt$configUpdates$1) create(producerScope, continuation)).invokeSuspend(Unit.INSTANCE);
}
}

View File

@@ -0,0 +1,62 @@
package com.google.firebase.remoteconfig.ktx;
import com.google.firebase.FirebaseApp;
import com.google.firebase.ktx.Firebase;
import com.google.firebase.remoteconfig.ConfigUpdate;
import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigValue;
import kotlin.Deprecated;
import kotlin.Metadata;
import kotlin.ReplaceWith;
import kotlin.Unit;
import kotlin.jvm.functions.Function1;
import kotlin.jvm.internal.Intrinsics;
import kotlinx.coroutines.flow.Flow;
import kotlinx.coroutines.flow.FlowKt;
@Metadata(d1 = {"\u0000D\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0010\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000e\n\u0000\n\u0002\u0018\u0002\n\u0000\u001a\u001f\u0010\f\u001a\u00020\r2\u0017\u0010\u000e\u001a\u0013\u0012\u0004\u0012\u00020\u0010\u0012\u0004\u0012\u00020\u00110\u000f¢\u0006\u0002\b\u0012\u001a\u0015\u0010\u0013\u001a\u00020\u0014*\u00020\u00032\u0006\u0010\u0015\u001a\u00020\u0016H\u0087\u0002\u001a\u0012\u0010\b\u001a\u00020\u0003*\u00020\t2\u0006\u0010\u0017\u001a\u00020\u0018\"$\u0010\u0000\u001a\b\u0012\u0004\u0012\u00020\u00020\u0001*\u00020\u00038FX\u0087\u0004¢\u0006\f\u0012\u0004\b\u0004\u0010\u0005\u001a\u0004\b\u0006\u0010\u0007\"\u0015\u0010\b\u001a\u00020\u0003*\u00020\t8F¢\u0006\u0006\u001a\u0004\b\n\u0010\u000b¨\u0006\u0019"}, d2 = {"configUpdates", "Lkotlinx/coroutines/flow/Flow;", "Lcom/google/firebase/remoteconfig/ConfigUpdate;", "Lcom/google/firebase/remoteconfig/FirebaseRemoteConfig;", "getConfigUpdates$annotations", "(Lcom/google/firebase/remoteconfig/FirebaseRemoteConfig;)V", "getConfigUpdates", "(Lcom/google/firebase/remoteconfig/FirebaseRemoteConfig;)Lkotlinx/coroutines/flow/Flow;", "remoteConfig", "Lcom/google/firebase/ktx/Firebase;", "getRemoteConfig", "(Lcom/google/firebase/ktx/Firebase;)Lcom/google/firebase/remoteconfig/FirebaseRemoteConfig;", "remoteConfigSettings", "Lcom/google/firebase/remoteconfig/FirebaseRemoteConfigSettings;", "init", "Lkotlin/Function1;", "Lcom/google/firebase/remoteconfig/FirebaseRemoteConfigSettings$Builder;", "", "Lkotlin/ExtensionFunctionType;", "get", "Lcom/google/firebase/remoteconfig/FirebaseRemoteConfigValue;", "key", "", "app", "Lcom/google/firebase/FirebaseApp;", "com.google.firebase-firebase-config"}, k = 2, mv = {1, 7, 1}, xi = 48)
/* loaded from: classes3.dex */
public final class RemoteConfigKt {
@Deprecated(message = "Migrate to use the KTX API from the main module: https://firebase.google.com/docs/android/kotlin-migration.", replaceWith = @ReplaceWith(expression = "", imports = {}))
public static final FirebaseRemoteConfigValue get(FirebaseRemoteConfig firebaseRemoteConfig, String key) {
Intrinsics.checkNotNullParameter(firebaseRemoteConfig, "<this>");
Intrinsics.checkNotNullParameter(key, "key");
FirebaseRemoteConfigValue value = firebaseRemoteConfig.getValue(key);
Intrinsics.checkNotNullExpressionValue(value, "this.getValue(key)");
return value;
}
public static final Flow<ConfigUpdate> getConfigUpdates(FirebaseRemoteConfig firebaseRemoteConfig) {
Intrinsics.checkNotNullParameter(firebaseRemoteConfig, "<this>");
return FlowKt.callbackFlow(new RemoteConfigKt$configUpdates$1(firebaseRemoteConfig, null));
}
@Deprecated(message = "Migrate to use the KTX API from the main module: https://firebase.google.com/docs/android/kotlin-migration.", replaceWith = @ReplaceWith(expression = "", imports = {}))
public static /* synthetic */ void getConfigUpdates$annotations(FirebaseRemoteConfig firebaseRemoteConfig) {
}
public static final FirebaseRemoteConfig getRemoteConfig(Firebase firebase) {
Intrinsics.checkNotNullParameter(firebase, "<this>");
FirebaseRemoteConfig firebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
Intrinsics.checkNotNullExpressionValue(firebaseRemoteConfig, "getInstance()");
return firebaseRemoteConfig;
}
public static final FirebaseRemoteConfig remoteConfig(Firebase firebase, FirebaseApp app) {
Intrinsics.checkNotNullParameter(firebase, "<this>");
Intrinsics.checkNotNullParameter(app, "app");
FirebaseRemoteConfig firebaseRemoteConfig = FirebaseRemoteConfig.getInstance(app);
Intrinsics.checkNotNullExpressionValue(firebaseRemoteConfig, "getInstance(app)");
return firebaseRemoteConfig;
}
public static final FirebaseRemoteConfigSettings remoteConfigSettings(Function1<? super FirebaseRemoteConfigSettings.Builder, Unit> init) {
Intrinsics.checkNotNullParameter(init, "init");
FirebaseRemoteConfigSettings.Builder builder = new FirebaseRemoteConfigSettings.Builder();
init.invoke(builder);
FirebaseRemoteConfigSettings build = builder.build();
Intrinsics.checkNotNullExpressionValue(build, "builder.build()");
return build;
}
}