package kotlin.collections; import java.util.Collection; import java.util.Iterator; import java.util.NoSuchElementException; import kotlin.jvm.internal.DefaultConstructorMarker; import kotlin.jvm.internal.Intrinsics; import kotlin.ranges.RangesKt___RangesKt; /* loaded from: classes5.dex */ public final class ArrayDeque extends AbstractMutableList { public static final Companion Companion = new Companion(null); public static final Object[] emptyElementData = new Object[0]; public Object[] elementData = emptyElementData; public int head; public int size; @Override // kotlin.collections.AbstractMutableList public int getSize() { return this.size; } private final void ensureCapacity(int i) { int coerceAtLeast; if (i < 0) { throw new IllegalStateException("Deque is too big."); } Object[] objArr = this.elementData; if (i <= objArr.length) { return; } if (objArr == emptyElementData) { coerceAtLeast = RangesKt___RangesKt.coerceAtLeast(i, 10); this.elementData = new Object[coerceAtLeast]; } else { copyElements(AbstractList.Companion.newCapacity$kotlin_stdlib(objArr.length, i)); } } public final void copyElements(int i) { Object[] objArr = new Object[i]; Object[] objArr2 = this.elementData; ArraysKt___ArraysJvmKt.copyInto(objArr2, objArr, 0, this.head, objArr2.length); Object[] objArr3 = this.elementData; int length = objArr3.length; int i2 = this.head; ArraysKt___ArraysJvmKt.copyInto(objArr3, objArr, length - i2, 0, i2); this.head = 0; this.elementData = objArr; } public final int positiveMod(int i) { Object[] objArr = this.elementData; return i >= objArr.length ? i - objArr.length : i; } public final int negativeMod(int i) { return i < 0 ? i + this.elementData.length : i; } public final int incremented(int i) { if (i == ArraysKt___ArraysKt.getLastIndex(this.elementData)) { return 0; } return i + 1; } public final int decremented(int i) { return i == 0 ? ArraysKt___ArraysKt.getLastIndex(this.elementData) : i - 1; } @Override // java.util.AbstractCollection, java.util.Collection, java.util.List public boolean isEmpty() { return size() == 0; } public final void addFirst(Object obj) { ensureCapacity(size() + 1); int decremented = decremented(this.head); this.head = decremented; this.elementData[decremented] = obj; this.size = size() + 1; } public final void addLast(Object obj) { ensureCapacity(size() + 1); this.elementData[positiveMod(this.head + size())] = obj; this.size = size() + 1; } public final Object removeFirst() { if (isEmpty()) { throw new NoSuchElementException("ArrayDeque is empty."); } Object[] objArr = this.elementData; int i = this.head; Object obj = objArr[i]; objArr[i] = null; this.head = incremented(i); this.size = size() - 1; return obj; } public final Object removeFirstOrNull() { if (isEmpty()) { return null; } return removeFirst(); } public final Object removeLast() { if (isEmpty()) { throw new NoSuchElementException("ArrayDeque is empty."); } int positiveMod = positiveMod(this.head + CollectionsKt__CollectionsKt.getLastIndex(this)); Object[] objArr = this.elementData; Object obj = objArr[positiveMod]; objArr[positiveMod] = null; this.size = size() - 1; return obj; } @Override // java.util.AbstractList, java.util.AbstractCollection, java.util.Collection, java.util.List public boolean add(Object obj) { addLast(obj); return true; } @Override // java.util.AbstractList, java.util.List public void add(int i, Object obj) { AbstractList.Companion.checkPositionIndex$kotlin_stdlib(i, size()); if (i == size()) { addLast(obj); return; } if (i == 0) { addFirst(obj); return; } ensureCapacity(size() + 1); int positiveMod = positiveMod(this.head + i); if (i < ((size() + 1) >> 1)) { int decremented = decremented(positiveMod); int decremented2 = decremented(this.head); int i2 = this.head; if (decremented >= i2) { Object[] objArr = this.elementData; objArr[decremented2] = objArr[i2]; ArraysKt___ArraysJvmKt.copyInto(objArr, objArr, i2, i2 + 1, decremented + 1); } else { Object[] objArr2 = this.elementData; ArraysKt___ArraysJvmKt.copyInto(objArr2, objArr2, i2 - 1, i2, objArr2.length); Object[] objArr3 = this.elementData; objArr3[objArr3.length - 1] = objArr3[0]; ArraysKt___ArraysJvmKt.copyInto(objArr3, objArr3, 0, 1, decremented + 1); } this.elementData[decremented] = obj; this.head = decremented2; } else { int positiveMod2 = positiveMod(this.head + size()); if (positiveMod < positiveMod2) { Object[] objArr4 = this.elementData; ArraysKt___ArraysJvmKt.copyInto(objArr4, objArr4, positiveMod + 1, positiveMod, positiveMod2); } else { Object[] objArr5 = this.elementData; ArraysKt___ArraysJvmKt.copyInto(objArr5, objArr5, 1, 0, positiveMod2); Object[] objArr6 = this.elementData; objArr6[0] = objArr6[objArr6.length - 1]; ArraysKt___ArraysJvmKt.copyInto(objArr6, objArr6, positiveMod + 1, positiveMod, objArr6.length - 1); } this.elementData[positiveMod] = obj; } this.size = size() + 1; } public final void copyCollectionElements(int i, Collection collection) { Iterator it = collection.iterator(); int length = this.elementData.length; while (i < length && it.hasNext()) { this.elementData[i] = it.next(); i++; } int i2 = this.head; for (int i3 = 0; i3 < i2 && it.hasNext(); i3++) { this.elementData[i3] = it.next(); } this.size = size() + collection.size(); } @Override // java.util.AbstractCollection, java.util.Collection, java.util.List public boolean addAll(Collection elements) { Intrinsics.checkNotNullParameter(elements, "elements"); if (elements.isEmpty()) { return false; } ensureCapacity(size() + elements.size()); copyCollectionElements(positiveMod(this.head + size()), elements); return true; } @Override // java.util.AbstractList, java.util.List public boolean addAll(int i, Collection elements) { Intrinsics.checkNotNullParameter(elements, "elements"); AbstractList.Companion.checkPositionIndex$kotlin_stdlib(i, size()); if (elements.isEmpty()) { return false; } if (i == size()) { return addAll(elements); } ensureCapacity(size() + elements.size()); int positiveMod = positiveMod(this.head + size()); int positiveMod2 = positiveMod(this.head + i); int size = elements.size(); if (i < ((size() + 1) >> 1)) { int i2 = this.head; int i3 = i2 - size; if (positiveMod2 < i2) { Object[] objArr = this.elementData; ArraysKt___ArraysJvmKt.copyInto(objArr, objArr, i3, i2, objArr.length); if (size >= positiveMod2) { Object[] objArr2 = this.elementData; ArraysKt___ArraysJvmKt.copyInto(objArr2, objArr2, objArr2.length - size, 0, positiveMod2); } else { Object[] objArr3 = this.elementData; ArraysKt___ArraysJvmKt.copyInto(objArr3, objArr3, objArr3.length - size, 0, size); Object[] objArr4 = this.elementData; ArraysKt___ArraysJvmKt.copyInto(objArr4, objArr4, 0, size, positiveMod2); } } else if (i3 >= 0) { Object[] objArr5 = this.elementData; ArraysKt___ArraysJvmKt.copyInto(objArr5, objArr5, i3, i2, positiveMod2); } else { Object[] objArr6 = this.elementData; i3 += objArr6.length; int i4 = positiveMod2 - i2; int length = objArr6.length - i3; if (length >= i4) { ArraysKt___ArraysJvmKt.copyInto(objArr6, objArr6, i3, i2, positiveMod2); } else { ArraysKt___ArraysJvmKt.copyInto(objArr6, objArr6, i3, i2, i2 + length); Object[] objArr7 = this.elementData; ArraysKt___ArraysJvmKt.copyInto(objArr7, objArr7, 0, this.head + length, positiveMod2); } } this.head = i3; copyCollectionElements(negativeMod(positiveMod2 - size), elements); } else { int i5 = positiveMod2 + size; if (positiveMod2 < positiveMod) { int i6 = size + positiveMod; Object[] objArr8 = this.elementData; if (i6 <= objArr8.length) { ArraysKt___ArraysJvmKt.copyInto(objArr8, objArr8, i5, positiveMod2, positiveMod); } else if (i5 >= objArr8.length) { ArraysKt___ArraysJvmKt.copyInto(objArr8, objArr8, i5 - objArr8.length, positiveMod2, positiveMod); } else { int length2 = positiveMod - (i6 - objArr8.length); ArraysKt___ArraysJvmKt.copyInto(objArr8, objArr8, 0, length2, positiveMod); Object[] objArr9 = this.elementData; ArraysKt___ArraysJvmKt.copyInto(objArr9, objArr9, i5, positiveMod2, length2); } } else { Object[] objArr10 = this.elementData; ArraysKt___ArraysJvmKt.copyInto(objArr10, objArr10, size, 0, positiveMod); Object[] objArr11 = this.elementData; if (i5 >= objArr11.length) { ArraysKt___ArraysJvmKt.copyInto(objArr11, objArr11, i5 - objArr11.length, positiveMod2, objArr11.length); } else { ArraysKt___ArraysJvmKt.copyInto(objArr11, objArr11, 0, objArr11.length - size, objArr11.length); Object[] objArr12 = this.elementData; ArraysKt___ArraysJvmKt.copyInto(objArr12, objArr12, i5, positiveMod2, objArr12.length - size); } } copyCollectionElements(positiveMod2, elements); } return true; } @Override // java.util.AbstractList, java.util.List public Object get(int i) { AbstractList.Companion.checkElementIndex$kotlin_stdlib(i, size()); return this.elementData[positiveMod(this.head + i)]; } @Override // java.util.AbstractList, java.util.List public Object set(int i, Object obj) { AbstractList.Companion.checkElementIndex$kotlin_stdlib(i, size()); int positiveMod = positiveMod(this.head + i); Object[] objArr = this.elementData; Object obj2 = objArr[positiveMod]; objArr[positiveMod] = obj; return obj2; } @Override // java.util.AbstractCollection, java.util.Collection, java.util.List public boolean contains(Object obj) { return indexOf(obj) != -1; } @Override // java.util.AbstractList, java.util.List public int indexOf(Object obj) { int i; int positiveMod = positiveMod(this.head + size()); int i2 = this.head; if (i2 < positiveMod) { while (i2 < positiveMod) { if (Intrinsics.areEqual(obj, this.elementData[i2])) { i = this.head; } else { i2++; } } return -1; } if (i2 < positiveMod) { return -1; } int length = this.elementData.length; while (true) { if (i2 >= length) { for (int i3 = 0; i3 < positiveMod; i3++) { if (Intrinsics.areEqual(obj, this.elementData[i3])) { i2 = i3 + this.elementData.length; i = this.head; } } return -1; } if (Intrinsics.areEqual(obj, this.elementData[i2])) { i = this.head; break; } i2++; } return i2 - i; } @Override // java.util.AbstractList, java.util.List public int lastIndexOf(Object obj) { int lastIndex; int i; int positiveMod = positiveMod(this.head + size()); int i2 = this.head; if (i2 < positiveMod) { lastIndex = positiveMod - 1; if (i2 <= lastIndex) { while (!Intrinsics.areEqual(obj, this.elementData[lastIndex])) { if (lastIndex != i2) { lastIndex--; } } i = this.head; return lastIndex - i; } return -1; } if (i2 > positiveMod) { int i3 = positiveMod - 1; while (true) { if (-1 < i3) { if (Intrinsics.areEqual(obj, this.elementData[i3])) { lastIndex = i3 + this.elementData.length; i = this.head; break; } i3--; } else { lastIndex = ArraysKt___ArraysKt.getLastIndex(this.elementData); int i4 = this.head; if (i4 <= lastIndex) { while (!Intrinsics.areEqual(obj, this.elementData[lastIndex])) { if (lastIndex != i4) { lastIndex--; } } i = this.head; } } } } return -1; } @Override // java.util.AbstractCollection, java.util.Collection, java.util.List public boolean remove(Object obj) { int indexOf = indexOf(obj); if (indexOf == -1) { return false; } remove(indexOf); return true; } @Override // kotlin.collections.AbstractMutableList public Object removeAt(int i) { AbstractList.Companion.checkElementIndex$kotlin_stdlib(i, size()); if (i == CollectionsKt__CollectionsKt.getLastIndex(this)) { return removeLast(); } if (i == 0) { return removeFirst(); } int positiveMod = positiveMod(this.head + i); Object obj = this.elementData[positiveMod]; if (i < (size() >> 1)) { int i2 = this.head; if (positiveMod >= i2) { Object[] objArr = this.elementData; ArraysKt___ArraysJvmKt.copyInto(objArr, objArr, i2 + 1, i2, positiveMod); } else { Object[] objArr2 = this.elementData; ArraysKt___ArraysJvmKt.copyInto(objArr2, objArr2, 1, 0, positiveMod); Object[] objArr3 = this.elementData; objArr3[0] = objArr3[objArr3.length - 1]; int i3 = this.head; ArraysKt___ArraysJvmKt.copyInto(objArr3, objArr3, i3 + 1, i3, objArr3.length - 1); } Object[] objArr4 = this.elementData; int i4 = this.head; objArr4[i4] = null; this.head = incremented(i4); } else { int positiveMod2 = positiveMod(this.head + CollectionsKt__CollectionsKt.getLastIndex(this)); if (positiveMod <= positiveMod2) { Object[] objArr5 = this.elementData; ArraysKt___ArraysJvmKt.copyInto(objArr5, objArr5, positiveMod, positiveMod + 1, positiveMod2 + 1); } else { Object[] objArr6 = this.elementData; ArraysKt___ArraysJvmKt.copyInto(objArr6, objArr6, positiveMod, positiveMod + 1, objArr6.length); Object[] objArr7 = this.elementData; objArr7[objArr7.length - 1] = objArr7[0]; ArraysKt___ArraysJvmKt.copyInto(objArr7, objArr7, 0, 1, positiveMod2 + 1); } this.elementData[positiveMod2] = null; } this.size = size() - 1; return obj; } @Override // java.util.AbstractCollection, java.util.Collection, java.util.List public boolean removeAll(Collection elements) { int positiveMod; Intrinsics.checkNotNullParameter(elements, "elements"); boolean z = false; z = false; z = false; if (!isEmpty() && this.elementData.length != 0) { int positiveMod2 = positiveMod(this.head + size()); int i = this.head; if (i < positiveMod2) { positiveMod = i; while (i < positiveMod2) { Object obj = this.elementData[i]; if (!elements.contains(obj)) { this.elementData[positiveMod] = obj; positiveMod++; } else { z = true; } i++; } ArraysKt___ArraysJvmKt.fill(this.elementData, (Object) null, positiveMod, positiveMod2); } else { int length = this.elementData.length; boolean z2 = false; int i2 = i; while (i < length) { Object[] objArr = this.elementData; Object obj2 = objArr[i]; objArr[i] = null; if (!elements.contains(obj2)) { this.elementData[i2] = obj2; i2++; } else { z2 = true; } i++; } positiveMod = positiveMod(i2); for (int i3 = 0; i3 < positiveMod2; i3++) { Object[] objArr2 = this.elementData; Object obj3 = objArr2[i3]; objArr2[i3] = null; if (!elements.contains(obj3)) { this.elementData[positiveMod] = obj3; positiveMod = incremented(positiveMod); } else { z2 = true; } } z = z2; } if (z) { this.size = negativeMod(positiveMod - this.head); } } return z; } @Override // java.util.AbstractCollection, java.util.Collection, java.util.List public boolean retainAll(Collection elements) { int positiveMod; Intrinsics.checkNotNullParameter(elements, "elements"); boolean z = false; z = false; z = false; if (!isEmpty() && this.elementData.length != 0) { int positiveMod2 = positiveMod(this.head + size()); int i = this.head; if (i < positiveMod2) { positiveMod = i; while (i < positiveMod2) { Object obj = this.elementData[i]; if (elements.contains(obj)) { this.elementData[positiveMod] = obj; positiveMod++; } else { z = true; } i++; } ArraysKt___ArraysJvmKt.fill(this.elementData, (Object) null, positiveMod, positiveMod2); } else { int length = this.elementData.length; boolean z2 = false; int i2 = i; while (i < length) { Object[] objArr = this.elementData; Object obj2 = objArr[i]; objArr[i] = null; if (elements.contains(obj2)) { this.elementData[i2] = obj2; i2++; } else { z2 = true; } i++; } positiveMod = positiveMod(i2); for (int i3 = 0; i3 < positiveMod2; i3++) { Object[] objArr2 = this.elementData; Object obj3 = objArr2[i3]; objArr2[i3] = null; if (elements.contains(obj3)) { this.elementData[positiveMod] = obj3; positiveMod = incremented(positiveMod); } else { z2 = true; } } z = z2; } if (z) { this.size = negativeMod(positiveMod - this.head); } } return z; } @Override // java.util.AbstractList, java.util.AbstractCollection, java.util.Collection, java.util.List public void clear() { int positiveMod = positiveMod(this.head + size()); int i = this.head; if (i < positiveMod) { ArraysKt___ArraysJvmKt.fill(this.elementData, (Object) null, i, positiveMod); } else if (!isEmpty()) { Object[] objArr = this.elementData; ArraysKt___ArraysJvmKt.fill(objArr, (Object) null, this.head, objArr.length); ArraysKt___ArraysJvmKt.fill(this.elementData, (Object) null, 0, positiveMod); } this.head = 0; this.size = 0; } @Override // java.util.AbstractCollection, java.util.Collection, java.util.List public Object[] toArray(Object[] array) { Object[] terminateCollectionToArray; Intrinsics.checkNotNullParameter(array, "array"); if (array.length < size()) { array = ArraysKt__ArraysJVMKt.arrayOfNulls(array, size()); } int positiveMod = positiveMod(this.head + size()); int i = this.head; if (i < positiveMod) { ArraysKt___ArraysJvmKt.copyInto$default(this.elementData, array, 0, i, positiveMod, 2, (Object) null); } else if (!isEmpty()) { Object[] objArr = this.elementData; ArraysKt___ArraysJvmKt.copyInto(objArr, array, 0, this.head, objArr.length); Object[] objArr2 = this.elementData; ArraysKt___ArraysJvmKt.copyInto(objArr2, array, objArr2.length - this.head, 0, positiveMod); } terminateCollectionToArray = CollectionsKt__CollectionsJVMKt.terminateCollectionToArray(size(), array); return terminateCollectionToArray; } @Override // java.util.AbstractCollection, java.util.Collection, java.util.List public Object[] toArray() { return toArray(new Object[size()]); } public static final class Companion { public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) { this(); } public Companion() { } } }