ADD week 5
This commit is contained in:
		| @@ -0,0 +1,10 @@ | ||||
| package androidx.versionedparcelable; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public abstract class CustomVersionedParcelable implements VersionedParcelable { | ||||
|     public void onPostParceling() { | ||||
|     } | ||||
|  | ||||
|     public void onPreParceling(boolean z) { | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,12 @@ | ||||
| package androidx.versionedparcelable; | ||||
|  | ||||
| import java.lang.annotation.ElementType; | ||||
| import java.lang.annotation.Retention; | ||||
| import java.lang.annotation.RetentionPolicy; | ||||
| import java.lang.annotation.Target; | ||||
|  | ||||
| @Target({ElementType.FIELD}) | ||||
| @Retention(RetentionPolicy.SOURCE) | ||||
| /* loaded from: classes.dex */ | ||||
| public @interface NonParcelField { | ||||
| } | ||||
| @@ -0,0 +1,15 @@ | ||||
| package androidx.versionedparcelable; | ||||
|  | ||||
| import java.lang.annotation.ElementType; | ||||
| import java.lang.annotation.Retention; | ||||
| import java.lang.annotation.RetentionPolicy; | ||||
| import java.lang.annotation.Target; | ||||
|  | ||||
| @Target({ElementType.FIELD}) | ||||
| @Retention(RetentionPolicy.SOURCE) | ||||
| /* loaded from: classes.dex */ | ||||
| public @interface ParcelField { | ||||
|     String defaultValue() default ""; | ||||
|  | ||||
|     int value(); | ||||
| } | ||||
| @@ -0,0 +1,44 @@ | ||||
| package androidx.versionedparcelable; | ||||
|  | ||||
| import android.os.Parcel; | ||||
| import android.os.Parcelable; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public class ParcelImpl implements Parcelable { | ||||
|     public static final Parcelable.Creator<ParcelImpl> CREATOR = new Parcelable.Creator<ParcelImpl>() { // from class: androidx.versionedparcelable.ParcelImpl.1 | ||||
|         /* JADX WARN: Can't rename method to resolve collision */ | ||||
|         @Override // android.os.Parcelable.Creator | ||||
|         public ParcelImpl createFromParcel(Parcel parcel) { | ||||
|             return new ParcelImpl(parcel); | ||||
|         } | ||||
|  | ||||
|         /* JADX WARN: Can't rename method to resolve collision */ | ||||
|         @Override // android.os.Parcelable.Creator | ||||
|         public ParcelImpl[] newArray(int i) { | ||||
|             return new ParcelImpl[i]; | ||||
|         } | ||||
|     }; | ||||
|     private final VersionedParcelable mParcel; | ||||
|  | ||||
|     @Override // android.os.Parcelable | ||||
|     public int describeContents() { | ||||
|         return 0; | ||||
|     } | ||||
|  | ||||
|     public <T extends VersionedParcelable> T getVersionedParcel() { | ||||
|         return (T) this.mParcel; | ||||
|     } | ||||
|  | ||||
|     public ParcelImpl(VersionedParcelable versionedParcelable) { | ||||
|         this.mParcel = versionedParcelable; | ||||
|     } | ||||
|  | ||||
|     protected ParcelImpl(Parcel parcel) { | ||||
|         this.mParcel = new VersionedParcelParcel(parcel).readVersionedParcelable(); | ||||
|     } | ||||
|  | ||||
|     @Override // android.os.Parcelable | ||||
|     public void writeToParcel(Parcel parcel, int i) { | ||||
|         new VersionedParcelParcel(parcel).writeVersionedParcelable(this.mParcel); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,86 @@ | ||||
| package androidx.versionedparcelable; | ||||
|  | ||||
| import android.os.Bundle; | ||||
| import android.os.Parcelable; | ||||
| import java.io.InputStream; | ||||
| import java.io.OutputStream; | ||||
| import java.util.ArrayList; | ||||
| import java.util.Iterator; | ||||
| import java.util.List; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public class ParcelUtils { | ||||
|     private static final String INNER_BUNDLE_KEY = "a"; | ||||
|  | ||||
|     private ParcelUtils() { | ||||
|     } | ||||
|  | ||||
|     public static Parcelable toParcelable(VersionedParcelable versionedParcelable) { | ||||
|         return new ParcelImpl(versionedParcelable); | ||||
|     } | ||||
|  | ||||
|     public static <T extends VersionedParcelable> T fromParcelable(Parcelable parcelable) { | ||||
|         if (!(parcelable instanceof ParcelImpl)) { | ||||
|             throw new IllegalArgumentException("Invalid parcel"); | ||||
|         } | ||||
|         return (T) ((ParcelImpl) parcelable).getVersionedParcel(); | ||||
|     } | ||||
|  | ||||
|     public static void toOutputStream(VersionedParcelable versionedParcelable, OutputStream outputStream) { | ||||
|         VersionedParcelStream versionedParcelStream = new VersionedParcelStream(null, outputStream); | ||||
|         versionedParcelStream.writeVersionedParcelable(versionedParcelable); | ||||
|         versionedParcelStream.closeField(); | ||||
|     } | ||||
|  | ||||
|     public static <T extends VersionedParcelable> T fromInputStream(InputStream inputStream) { | ||||
|         return (T) new VersionedParcelStream(inputStream, null).readVersionedParcelable(); | ||||
|     } | ||||
|  | ||||
|     public static void putVersionedParcelable(Bundle bundle, String str, VersionedParcelable versionedParcelable) { | ||||
|         if (versionedParcelable == null) { | ||||
|             return; | ||||
|         } | ||||
|         Bundle bundle2 = new Bundle(); | ||||
|         bundle2.putParcelable(INNER_BUNDLE_KEY, toParcelable(versionedParcelable)); | ||||
|         bundle.putParcelable(str, bundle2); | ||||
|     } | ||||
|  | ||||
|     public static <T extends VersionedParcelable> T getVersionedParcelable(Bundle bundle, String str) { | ||||
|         try { | ||||
|             Bundle bundle2 = (Bundle) bundle.getParcelable(str); | ||||
|             if (bundle2 == null) { | ||||
|                 return null; | ||||
|             } | ||||
|             bundle2.setClassLoader(ParcelUtils.class.getClassLoader()); | ||||
|             return (T) fromParcelable(bundle2.getParcelable(INNER_BUNDLE_KEY)); | ||||
|         } catch (RuntimeException unused) { | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public static void putVersionedParcelableList(Bundle bundle, String str, List<? extends VersionedParcelable> list) { | ||||
|         Bundle bundle2 = new Bundle(); | ||||
|         ArrayList<? extends Parcelable> arrayList = new ArrayList<>(); | ||||
|         Iterator<? extends VersionedParcelable> it = list.iterator(); | ||||
|         while (it.hasNext()) { | ||||
|             arrayList.add(toParcelable(it.next())); | ||||
|         } | ||||
|         bundle2.putParcelableArrayList(INNER_BUNDLE_KEY, arrayList); | ||||
|         bundle.putParcelable(str, bundle2); | ||||
|     } | ||||
|  | ||||
|     public static <T extends VersionedParcelable> List<T> getVersionedParcelableList(Bundle bundle, String str) { | ||||
|         ArrayList arrayList = new ArrayList(); | ||||
|         try { | ||||
|             Bundle bundle2 = (Bundle) bundle.getParcelable(str); | ||||
|             bundle2.setClassLoader(ParcelUtils.class.getClassLoader()); | ||||
|             Iterator it = bundle2.getParcelableArrayList(INNER_BUNDLE_KEY).iterator(); | ||||
|             while (it.hasNext()) { | ||||
|                 arrayList.add(fromParcelable((Parcelable) it.next())); | ||||
|             } | ||||
|             return arrayList; | ||||
|         } catch (RuntimeException unused) { | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										7
									
								
								02-Easy5/E5/sources/androidx/versionedparcelable/R.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								02-Easy5/E5/sources/androidx/versionedparcelable/R.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| package androidx.versionedparcelable; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public final class R { | ||||
|     private R() { | ||||
|     } | ||||
| } | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -0,0 +1,227 @@ | ||||
| package androidx.versionedparcelable; | ||||
|  | ||||
| import android.os.Bundle; | ||||
| import android.os.IBinder; | ||||
| import android.os.IInterface; | ||||
| import android.os.Parcel; | ||||
| import android.os.Parcelable; | ||||
| import android.text.TextUtils; | ||||
| import android.util.SparseIntArray; | ||||
| import androidx.collection.ArrayMap; | ||||
| import java.lang.reflect.Method; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| class VersionedParcelParcel extends VersionedParcel { | ||||
|     private static final boolean DEBUG = false; | ||||
|     private static final String TAG = "VersionedParcelParcel"; | ||||
|     private int mCurrentField; | ||||
|     private final int mEnd; | ||||
|     private int mFieldId; | ||||
|     private int mNextRead; | ||||
|     private final int mOffset; | ||||
|     private final Parcel mParcel; | ||||
|     private final SparseIntArray mPositionLookup; | ||||
|     private final String mPrefix; | ||||
|  | ||||
|     VersionedParcelParcel(Parcel parcel) { | ||||
|         this(parcel, parcel.dataPosition(), parcel.dataSize(), "", new ArrayMap(), new ArrayMap(), new ArrayMap()); | ||||
|     } | ||||
|  | ||||
|     private VersionedParcelParcel(Parcel parcel, int i, int i2, String str, ArrayMap<String, Method> arrayMap, ArrayMap<String, Method> arrayMap2, ArrayMap<String, Class> arrayMap3) { | ||||
|         super(arrayMap, arrayMap2, arrayMap3); | ||||
|         this.mPositionLookup = new SparseIntArray(); | ||||
|         this.mCurrentField = -1; | ||||
|         this.mFieldId = -1; | ||||
|         this.mParcel = parcel; | ||||
|         this.mOffset = i; | ||||
|         this.mEnd = i2; | ||||
|         this.mNextRead = i; | ||||
|         this.mPrefix = str; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public boolean readField(int i) { | ||||
|         while (this.mNextRead < this.mEnd) { | ||||
|             int i2 = this.mFieldId; | ||||
|             if (i2 == i) { | ||||
|                 return true; | ||||
|             } | ||||
|             if (String.valueOf(i2).compareTo(String.valueOf(i)) > 0) { | ||||
|                 return false; | ||||
|             } | ||||
|             this.mParcel.setDataPosition(this.mNextRead); | ||||
|             int readInt = this.mParcel.readInt(); | ||||
|             this.mFieldId = this.mParcel.readInt(); | ||||
|             this.mNextRead += readInt; | ||||
|         } | ||||
|         return this.mFieldId == i; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void setOutputField(int i) { | ||||
|         closeField(); | ||||
|         this.mCurrentField = i; | ||||
|         this.mPositionLookup.put(i, this.mParcel.dataPosition()); | ||||
|         writeInt(0); | ||||
|         writeInt(i); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void closeField() { | ||||
|         int i = this.mCurrentField; | ||||
|         if (i >= 0) { | ||||
|             int i2 = this.mPositionLookup.get(i); | ||||
|             int dataPosition = this.mParcel.dataPosition(); | ||||
|             this.mParcel.setDataPosition(i2); | ||||
|             this.mParcel.writeInt(dataPosition - i2); | ||||
|             this.mParcel.setDataPosition(dataPosition); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     protected VersionedParcel createSubParcel() { | ||||
|         Parcel parcel = this.mParcel; | ||||
|         int dataPosition = parcel.dataPosition(); | ||||
|         int i = this.mNextRead; | ||||
|         if (i == this.mOffset) { | ||||
|             i = this.mEnd; | ||||
|         } | ||||
|         return new VersionedParcelParcel(parcel, dataPosition, i, this.mPrefix + "  ", this.mReadCache, this.mWriteCache, this.mParcelizerCache); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeByteArray(byte[] bArr) { | ||||
|         if (bArr != null) { | ||||
|             this.mParcel.writeInt(bArr.length); | ||||
|             this.mParcel.writeByteArray(bArr); | ||||
|         } else { | ||||
|             this.mParcel.writeInt(-1); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeByteArray(byte[] bArr, int i, int i2) { | ||||
|         if (bArr != null) { | ||||
|             this.mParcel.writeInt(bArr.length); | ||||
|             this.mParcel.writeByteArray(bArr, i, i2); | ||||
|         } else { | ||||
|             this.mParcel.writeInt(-1); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeInt(int i) { | ||||
|         this.mParcel.writeInt(i); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeLong(long j) { | ||||
|         this.mParcel.writeLong(j); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeFloat(float f) { | ||||
|         this.mParcel.writeFloat(f); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeDouble(double d) { | ||||
|         this.mParcel.writeDouble(d); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeString(String str) { | ||||
|         this.mParcel.writeString(str); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeStrongBinder(IBinder iBinder) { | ||||
|         this.mParcel.writeStrongBinder(iBinder); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeParcelable(Parcelable parcelable) { | ||||
|         this.mParcel.writeParcelable(parcelable, 0); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeBoolean(boolean z) { | ||||
|         this.mParcel.writeInt(z ? 1 : 0); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeStrongInterface(IInterface iInterface) { | ||||
|         this.mParcel.writeStrongInterface(iInterface); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeBundle(Bundle bundle) { | ||||
|         this.mParcel.writeBundle(bundle); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     protected void writeCharSequence(CharSequence charSequence) { | ||||
|         TextUtils.writeToParcel(charSequence, this.mParcel, 0); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     protected CharSequence readCharSequence() { | ||||
|         return (CharSequence) TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(this.mParcel); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public int readInt() { | ||||
|         return this.mParcel.readInt(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public long readLong() { | ||||
|         return this.mParcel.readLong(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public float readFloat() { | ||||
|         return this.mParcel.readFloat(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public double readDouble() { | ||||
|         return this.mParcel.readDouble(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public String readString() { | ||||
|         return this.mParcel.readString(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public IBinder readStrongBinder() { | ||||
|         return this.mParcel.readStrongBinder(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public byte[] readByteArray() { | ||||
|         int readInt = this.mParcel.readInt(); | ||||
|         if (readInt < 0) { | ||||
|             return null; | ||||
|         } | ||||
|         byte[] bArr = new byte[readInt]; | ||||
|         this.mParcel.readByteArray(bArr); | ||||
|         return bArr; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public <T extends Parcelable> T readParcelable() { | ||||
|         return (T) this.mParcel.readParcelable(getClass().getClassLoader()); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public Bundle readBundle() { | ||||
|         return this.mParcel.readBundle(getClass().getClassLoader()); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public boolean readBoolean() { | ||||
|         return this.mParcel.readInt() != 0; | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,552 @@ | ||||
| package androidx.versionedparcelable; | ||||
|  | ||||
| import android.os.Bundle; | ||||
| import android.os.IBinder; | ||||
| import android.os.IInterface; | ||||
| import android.os.Parcelable; | ||||
| import androidx.collection.ArrayMap; | ||||
| import androidx.core.internal.view.SupportMenu; | ||||
| import androidx.versionedparcelable.VersionedParcel; | ||||
| import java.io.ByteArrayOutputStream; | ||||
| import java.io.DataInputStream; | ||||
| import java.io.DataOutputStream; | ||||
| import java.io.FilterInputStream; | ||||
| import java.io.IOException; | ||||
| import java.io.InputStream; | ||||
| import java.io.OutputStream; | ||||
| import java.lang.reflect.Method; | ||||
| import java.nio.charset.Charset; | ||||
| import java.util.Set; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| class VersionedParcelStream extends VersionedParcel { | ||||
|     private static final int TYPE_BOOLEAN = 5; | ||||
|     private static final int TYPE_BOOLEAN_ARRAY = 6; | ||||
|     private static final int TYPE_DOUBLE = 7; | ||||
|     private static final int TYPE_DOUBLE_ARRAY = 8; | ||||
|     private static final int TYPE_FLOAT = 13; | ||||
|     private static final int TYPE_FLOAT_ARRAY = 14; | ||||
|     private static final int TYPE_INT = 9; | ||||
|     private static final int TYPE_INT_ARRAY = 10; | ||||
|     private static final int TYPE_LONG = 11; | ||||
|     private static final int TYPE_LONG_ARRAY = 12; | ||||
|     private static final int TYPE_NULL = 0; | ||||
|     private static final int TYPE_STRING = 3; | ||||
|     private static final int TYPE_STRING_ARRAY = 4; | ||||
|     private static final int TYPE_SUB_BUNDLE = 1; | ||||
|     private static final int TYPE_SUB_PERSISTABLE_BUNDLE = 2; | ||||
|     private static final Charset UTF_16 = Charset.forName("UTF-16"); | ||||
|     int mCount; | ||||
|     private DataInputStream mCurrentInput; | ||||
|     private DataOutputStream mCurrentOutput; | ||||
|     private FieldBuffer mFieldBuffer; | ||||
|     private int mFieldId; | ||||
|     int mFieldSize; | ||||
|     private boolean mIgnoreParcelables; | ||||
|     private final DataInputStream mMasterInput; | ||||
|     private final DataOutputStream mMasterOutput; | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public boolean isStream() { | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     protected CharSequence readCharSequence() { | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public <T extends Parcelable> T readParcelable() { | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public IBinder readStrongBinder() { | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
|     public VersionedParcelStream(InputStream inputStream, OutputStream outputStream) { | ||||
|         this(inputStream, outputStream, new ArrayMap(), new ArrayMap(), new ArrayMap()); | ||||
|     } | ||||
|  | ||||
|     private VersionedParcelStream(InputStream inputStream, OutputStream outputStream, ArrayMap<String, Method> arrayMap, ArrayMap<String, Method> arrayMap2, ArrayMap<String, Class> arrayMap3) { | ||||
|         super(arrayMap, arrayMap2, arrayMap3); | ||||
|         this.mCount = 0; | ||||
|         this.mFieldId = -1; | ||||
|         this.mFieldSize = -1; | ||||
|         DataInputStream dataInputStream = inputStream != null ? new DataInputStream(new FilterInputStream(inputStream) { // from class: androidx.versionedparcelable.VersionedParcelStream.1 | ||||
|             @Override // java.io.FilterInputStream, java.io.InputStream | ||||
|             public int read() throws IOException { | ||||
|                 if (VersionedParcelStream.this.mFieldSize != -1 && VersionedParcelStream.this.mCount >= VersionedParcelStream.this.mFieldSize) { | ||||
|                     throw new IOException(); | ||||
|                 } | ||||
|                 int read = super.read(); | ||||
|                 VersionedParcelStream.this.mCount++; | ||||
|                 return read; | ||||
|             } | ||||
|  | ||||
|             @Override // java.io.FilterInputStream, java.io.InputStream | ||||
|             public int read(byte[] bArr, int i, int i2) throws IOException { | ||||
|                 if (VersionedParcelStream.this.mFieldSize != -1 && VersionedParcelStream.this.mCount >= VersionedParcelStream.this.mFieldSize) { | ||||
|                     throw new IOException(); | ||||
|                 } | ||||
|                 int read = super.read(bArr, i, i2); | ||||
|                 if (read > 0) { | ||||
|                     VersionedParcelStream.this.mCount += read; | ||||
|                 } | ||||
|                 return read; | ||||
|             } | ||||
|  | ||||
|             @Override // java.io.FilterInputStream, java.io.InputStream | ||||
|             public long skip(long j) throws IOException { | ||||
|                 if (VersionedParcelStream.this.mFieldSize != -1 && VersionedParcelStream.this.mCount >= VersionedParcelStream.this.mFieldSize) { | ||||
|                     throw new IOException(); | ||||
|                 } | ||||
|                 long skip = super.skip(j); | ||||
|                 if (skip > 0) { | ||||
|                     VersionedParcelStream.this.mCount += (int) skip; | ||||
|                 } | ||||
|                 return skip; | ||||
|             } | ||||
|         }) : null; | ||||
|         this.mMasterInput = dataInputStream; | ||||
|         DataOutputStream dataOutputStream = outputStream != null ? new DataOutputStream(outputStream) : null; | ||||
|         this.mMasterOutput = dataOutputStream; | ||||
|         this.mCurrentInput = dataInputStream; | ||||
|         this.mCurrentOutput = dataOutputStream; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void setSerializationFlags(boolean z, boolean z2) { | ||||
|         if (!z) { | ||||
|             throw new RuntimeException("Serialization of this object is not allowed"); | ||||
|         } | ||||
|         this.mIgnoreParcelables = z2; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void closeField() { | ||||
|         FieldBuffer fieldBuffer = this.mFieldBuffer; | ||||
|         if (fieldBuffer != null) { | ||||
|             try { | ||||
|                 if (fieldBuffer.mOutput.size() != 0) { | ||||
|                     this.mFieldBuffer.flushField(); | ||||
|                 } | ||||
|                 this.mFieldBuffer = null; | ||||
|             } catch (IOException e) { | ||||
|                 throw new VersionedParcel.ParcelException(e); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     protected VersionedParcel createSubParcel() { | ||||
|         return new VersionedParcelStream(this.mCurrentInput, this.mCurrentOutput, this.mReadCache, this.mWriteCache, this.mParcelizerCache); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public boolean readField(int i) { | ||||
|         while (true) { | ||||
|             try { | ||||
|                 int i2 = this.mFieldId; | ||||
|                 if (i2 == i) { | ||||
|                     return true; | ||||
|                 } | ||||
|                 if (String.valueOf(i2).compareTo(String.valueOf(i)) > 0) { | ||||
|                     return false; | ||||
|                 } | ||||
|                 if (this.mCount < this.mFieldSize) { | ||||
|                     this.mMasterInput.skip(r2 - r1); | ||||
|                 } | ||||
|                 this.mFieldSize = -1; | ||||
|                 int readInt = this.mMasterInput.readInt(); | ||||
|                 this.mCount = 0; | ||||
|                 int i3 = readInt & SupportMenu.USER_MASK; | ||||
|                 if (i3 == 65535) { | ||||
|                     i3 = this.mMasterInput.readInt(); | ||||
|                 } | ||||
|                 this.mFieldId = (readInt >> 16) & SupportMenu.USER_MASK; | ||||
|                 this.mFieldSize = i3; | ||||
|             } catch (IOException unused) { | ||||
|                 return false; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void setOutputField(int i) { | ||||
|         closeField(); | ||||
|         FieldBuffer fieldBuffer = new FieldBuffer(i, this.mMasterOutput); | ||||
|         this.mFieldBuffer = fieldBuffer; | ||||
|         this.mCurrentOutput = fieldBuffer.mDataStream; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeByteArray(byte[] bArr) { | ||||
|         try { | ||||
|             if (bArr != null) { | ||||
|                 this.mCurrentOutput.writeInt(bArr.length); | ||||
|                 this.mCurrentOutput.write(bArr); | ||||
|             } else { | ||||
|                 this.mCurrentOutput.writeInt(-1); | ||||
|             } | ||||
|         } catch (IOException e) { | ||||
|             throw new VersionedParcel.ParcelException(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeByteArray(byte[] bArr, int i, int i2) { | ||||
|         try { | ||||
|             if (bArr != null) { | ||||
|                 this.mCurrentOutput.writeInt(i2); | ||||
|                 this.mCurrentOutput.write(bArr, i, i2); | ||||
|             } else { | ||||
|                 this.mCurrentOutput.writeInt(-1); | ||||
|             } | ||||
|         } catch (IOException e) { | ||||
|             throw new VersionedParcel.ParcelException(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     protected void writeCharSequence(CharSequence charSequence) { | ||||
|         if (!this.mIgnoreParcelables) { | ||||
|             throw new RuntimeException("CharSequence cannot be written to an OutputStream"); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeInt(int i) { | ||||
|         try { | ||||
|             this.mCurrentOutput.writeInt(i); | ||||
|         } catch (IOException e) { | ||||
|             throw new VersionedParcel.ParcelException(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeLong(long j) { | ||||
|         try { | ||||
|             this.mCurrentOutput.writeLong(j); | ||||
|         } catch (IOException e) { | ||||
|             throw new VersionedParcel.ParcelException(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeFloat(float f) { | ||||
|         try { | ||||
|             this.mCurrentOutput.writeFloat(f); | ||||
|         } catch (IOException e) { | ||||
|             throw new VersionedParcel.ParcelException(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeDouble(double d) { | ||||
|         try { | ||||
|             this.mCurrentOutput.writeDouble(d); | ||||
|         } catch (IOException e) { | ||||
|             throw new VersionedParcel.ParcelException(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeString(String str) { | ||||
|         try { | ||||
|             if (str != null) { | ||||
|                 byte[] bytes = str.getBytes(UTF_16); | ||||
|                 this.mCurrentOutput.writeInt(bytes.length); | ||||
|                 this.mCurrentOutput.write(bytes); | ||||
|             } else { | ||||
|                 this.mCurrentOutput.writeInt(-1); | ||||
|             } | ||||
|         } catch (IOException e) { | ||||
|             throw new VersionedParcel.ParcelException(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeBoolean(boolean z) { | ||||
|         try { | ||||
|             this.mCurrentOutput.writeBoolean(z); | ||||
|         } catch (IOException e) { | ||||
|             throw new VersionedParcel.ParcelException(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeStrongBinder(IBinder iBinder) { | ||||
|         if (!this.mIgnoreParcelables) { | ||||
|             throw new RuntimeException("Binders cannot be written to an OutputStream"); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeParcelable(Parcelable parcelable) { | ||||
|         if (!this.mIgnoreParcelables) { | ||||
|             throw new RuntimeException("Parcelables cannot be written to an OutputStream"); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeStrongInterface(IInterface iInterface) { | ||||
|         if (!this.mIgnoreParcelables) { | ||||
|             throw new RuntimeException("Binders cannot be written to an OutputStream"); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public int readInt() { | ||||
|         try { | ||||
|             return this.mCurrentInput.readInt(); | ||||
|         } catch (IOException e) { | ||||
|             throw new VersionedParcel.ParcelException(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public long readLong() { | ||||
|         try { | ||||
|             return this.mCurrentInput.readLong(); | ||||
|         } catch (IOException e) { | ||||
|             throw new VersionedParcel.ParcelException(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public float readFloat() { | ||||
|         try { | ||||
|             return this.mCurrentInput.readFloat(); | ||||
|         } catch (IOException e) { | ||||
|             throw new VersionedParcel.ParcelException(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public double readDouble() { | ||||
|         try { | ||||
|             return this.mCurrentInput.readDouble(); | ||||
|         } catch (IOException e) { | ||||
|             throw new VersionedParcel.ParcelException(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public String readString() { | ||||
|         try { | ||||
|             int readInt = this.mCurrentInput.readInt(); | ||||
|             if (readInt <= 0) { | ||||
|                 return null; | ||||
|             } | ||||
|             byte[] bArr = new byte[readInt]; | ||||
|             this.mCurrentInput.readFully(bArr); | ||||
|             return new String(bArr, UTF_16); | ||||
|         } catch (IOException e) { | ||||
|             throw new VersionedParcel.ParcelException(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public byte[] readByteArray() { | ||||
|         try { | ||||
|             int readInt = this.mCurrentInput.readInt(); | ||||
|             if (readInt <= 0) { | ||||
|                 return null; | ||||
|             } | ||||
|             byte[] bArr = new byte[readInt]; | ||||
|             this.mCurrentInput.readFully(bArr); | ||||
|             return bArr; | ||||
|         } catch (IOException e) { | ||||
|             throw new VersionedParcel.ParcelException(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public boolean readBoolean() { | ||||
|         try { | ||||
|             return this.mCurrentInput.readBoolean(); | ||||
|         } catch (IOException e) { | ||||
|             throw new VersionedParcel.ParcelException(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public void writeBundle(Bundle bundle) { | ||||
|         try { | ||||
|             if (bundle != null) { | ||||
|                 Set<String> keySet = bundle.keySet(); | ||||
|                 this.mCurrentOutput.writeInt(keySet.size()); | ||||
|                 for (String str : keySet) { | ||||
|                     writeString(str); | ||||
|                     writeObject(bundle.get(str)); | ||||
|                 } | ||||
|                 return; | ||||
|             } | ||||
|             this.mCurrentOutput.writeInt(-1); | ||||
|         } catch (IOException e) { | ||||
|             throw new VersionedParcel.ParcelException(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.versionedparcelable.VersionedParcel | ||||
|     public Bundle readBundle() { | ||||
|         int readInt = readInt(); | ||||
|         if (readInt < 0) { | ||||
|             return null; | ||||
|         } | ||||
|         Bundle bundle = new Bundle(); | ||||
|         for (int i = 0; i < readInt; i++) { | ||||
|             readObject(readInt(), readString(), bundle); | ||||
|         } | ||||
|         return bundle; | ||||
|     } | ||||
|  | ||||
|     private void writeObject(Object obj) { | ||||
|         if (obj == null) { | ||||
|             writeInt(0); | ||||
|             return; | ||||
|         } | ||||
|         if (obj instanceof Bundle) { | ||||
|             writeInt(1); | ||||
|             writeBundle((Bundle) obj); | ||||
|             return; | ||||
|         } | ||||
|         if (obj instanceof String) { | ||||
|             writeInt(3); | ||||
|             writeString((String) obj); | ||||
|             return; | ||||
|         } | ||||
|         if (obj instanceof String[]) { | ||||
|             writeInt(4); | ||||
|             writeArray((String[]) obj); | ||||
|             return; | ||||
|         } | ||||
|         if (obj instanceof Boolean) { | ||||
|             writeInt(5); | ||||
|             writeBoolean(((Boolean) obj).booleanValue()); | ||||
|             return; | ||||
|         } | ||||
|         if (obj instanceof boolean[]) { | ||||
|             writeInt(6); | ||||
|             writeBooleanArray((boolean[]) obj); | ||||
|             return; | ||||
|         } | ||||
|         if (obj instanceof Double) { | ||||
|             writeInt(7); | ||||
|             writeDouble(((Double) obj).doubleValue()); | ||||
|             return; | ||||
|         } | ||||
|         if (obj instanceof double[]) { | ||||
|             writeInt(8); | ||||
|             writeDoubleArray((double[]) obj); | ||||
|             return; | ||||
|         } | ||||
|         if (obj instanceof Integer) { | ||||
|             writeInt(9); | ||||
|             writeInt(((Integer) obj).intValue()); | ||||
|             return; | ||||
|         } | ||||
|         if (obj instanceof int[]) { | ||||
|             writeInt(10); | ||||
|             writeIntArray((int[]) obj); | ||||
|             return; | ||||
|         } | ||||
|         if (obj instanceof Long) { | ||||
|             writeInt(11); | ||||
|             writeLong(((Long) obj).longValue()); | ||||
|             return; | ||||
|         } | ||||
|         if (obj instanceof long[]) { | ||||
|             writeInt(12); | ||||
|             writeLongArray((long[]) obj); | ||||
|         } else if (obj instanceof Float) { | ||||
|             writeInt(13); | ||||
|             writeFloat(((Float) obj).floatValue()); | ||||
|         } else if (obj instanceof float[]) { | ||||
|             writeInt(14); | ||||
|             writeFloatArray((float[]) obj); | ||||
|         } else { | ||||
|             throw new IllegalArgumentException("Unsupported type " + obj.getClass()); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void readObject(int i, String str, Bundle bundle) { | ||||
|         switch (i) { | ||||
|             case 0: | ||||
|                 bundle.putParcelable(str, null); | ||||
|                 return; | ||||
|             case 1: | ||||
|                 bundle.putBundle(str, readBundle()); | ||||
|                 return; | ||||
|             case 2: | ||||
|                 bundle.putBundle(str, readBundle()); | ||||
|                 return; | ||||
|             case 3: | ||||
|                 bundle.putString(str, readString()); | ||||
|                 return; | ||||
|             case 4: | ||||
|                 bundle.putStringArray(str, (String[]) readArray(new String[0])); | ||||
|                 return; | ||||
|             case 5: | ||||
|                 bundle.putBoolean(str, readBoolean()); | ||||
|                 return; | ||||
|             case 6: | ||||
|                 bundle.putBooleanArray(str, readBooleanArray()); | ||||
|                 return; | ||||
|             case 7: | ||||
|                 bundle.putDouble(str, readDouble()); | ||||
|                 return; | ||||
|             case 8: | ||||
|                 bundle.putDoubleArray(str, readDoubleArray()); | ||||
|                 return; | ||||
|             case 9: | ||||
|                 bundle.putInt(str, readInt()); | ||||
|                 return; | ||||
|             case 10: | ||||
|                 bundle.putIntArray(str, readIntArray()); | ||||
|                 return; | ||||
|             case 11: | ||||
|                 bundle.putLong(str, readLong()); | ||||
|                 return; | ||||
|             case 12: | ||||
|                 bundle.putLongArray(str, readLongArray()); | ||||
|                 return; | ||||
|             case 13: | ||||
|                 bundle.putFloat(str, readFloat()); | ||||
|                 return; | ||||
|             case 14: | ||||
|                 bundle.putFloatArray(str, readFloatArray()); | ||||
|                 return; | ||||
|             default: | ||||
|                 throw new RuntimeException("Unknown type " + i); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private static class FieldBuffer { | ||||
|         final DataOutputStream mDataStream; | ||||
|         private final int mFieldId; | ||||
|         final ByteArrayOutputStream mOutput; | ||||
|         private final DataOutputStream mTarget; | ||||
|  | ||||
|         FieldBuffer(int i, DataOutputStream dataOutputStream) { | ||||
|             ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); | ||||
|             this.mOutput = byteArrayOutputStream; | ||||
|             this.mDataStream = new DataOutputStream(byteArrayOutputStream); | ||||
|             this.mFieldId = i; | ||||
|             this.mTarget = dataOutputStream; | ||||
|         } | ||||
|  | ||||
|         void flushField() throws IOException { | ||||
|             this.mDataStream.flush(); | ||||
|             int size = this.mOutput.size(); | ||||
|             this.mTarget.writeInt((this.mFieldId << 16) | (size >= 65535 ? SupportMenu.USER_MASK : size)); | ||||
|             if (size >= 65535) { | ||||
|                 this.mTarget.writeInt(size); | ||||
|             } | ||||
|             this.mOutput.writeTo(this.mTarget); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,5 @@ | ||||
| package androidx.versionedparcelable; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public interface VersionedParcelable { | ||||
| } | ||||
| @@ -0,0 +1,23 @@ | ||||
| package androidx.versionedparcelable; | ||||
|  | ||||
| import java.lang.annotation.ElementType; | ||||
| import java.lang.annotation.Retention; | ||||
| import java.lang.annotation.RetentionPolicy; | ||||
| import java.lang.annotation.Target; | ||||
|  | ||||
| @Target({ElementType.TYPE}) | ||||
| @Retention(RetentionPolicy.SOURCE) | ||||
| /* loaded from: classes.dex */ | ||||
| public @interface VersionedParcelize { | ||||
|     boolean allowSerialization() default false; | ||||
|  | ||||
|     int[] deprecatedIds() default {}; | ||||
|  | ||||
|     Class factory() default void.class; | ||||
|  | ||||
|     boolean ignoreParcelables() default false; | ||||
|  | ||||
|     boolean isCustom() default false; | ||||
|  | ||||
|     String jetifyAs() default ""; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user