package com.google.common.collect; import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; import com.google.common.base.Predicates; import com.google.common.collect.Maps; import java.lang.Comparable; import java.util.AbstractMap; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.Map; import java.util.NavigableMap; import java.util.NoSuchElementException; import java.util.Set; /* loaded from: classes2.dex */ public final class TreeRangeMap implements RangeMap { private static final RangeMap EMPTY_SUB_RANGE_MAP = new RangeMap() { // from class: com.google.common.collect.TreeRangeMap.1 @Override // com.google.common.collect.RangeMap public void clear() { } @Override // com.google.common.collect.RangeMap public Object get(Comparable comparable) { return null; } @Override // com.google.common.collect.RangeMap public Map.Entry getEntry(Comparable comparable) { return null; } @Override // com.google.common.collect.RangeMap public Range span() { throw new NoSuchElementException(); } @Override // com.google.common.collect.RangeMap public void put(Range range, Object obj) { Preconditions.checkNotNull(range); String valueOf = String.valueOf(range); StringBuilder sb = new StringBuilder(String.valueOf(valueOf).length() + 46); sb.append("Cannot insert range "); sb.append(valueOf); sb.append(" into an empty subRangeMap"); throw new IllegalArgumentException(sb.toString()); } @Override // com.google.common.collect.RangeMap public void putCoalescing(Range range, Object obj) { Preconditions.checkNotNull(range); String valueOf = String.valueOf(range); StringBuilder sb = new StringBuilder(String.valueOf(valueOf).length() + 46); sb.append("Cannot insert range "); sb.append(valueOf); sb.append(" into an empty subRangeMap"); throw new IllegalArgumentException(sb.toString()); } @Override // com.google.common.collect.RangeMap public void putAll(RangeMap rangeMap) { if (!rangeMap.asMapOfRanges().isEmpty()) { throw new IllegalArgumentException("Cannot putAll(nonEmptyRangeMap) into an empty subRangeMap"); } } @Override // com.google.common.collect.RangeMap public void remove(Range range) { Preconditions.checkNotNull(range); } @Override // com.google.common.collect.RangeMap public Map asMapOfRanges() { return Collections.emptyMap(); } @Override // com.google.common.collect.RangeMap public Map asDescendingMapOfRanges() { return Collections.emptyMap(); } @Override // com.google.common.collect.RangeMap public RangeMap subRangeMap(Range range) { Preconditions.checkNotNull(range); return this; } }; private final NavigableMap, RangeMapEntry> entriesByLowerBound = Maps.newTreeMap(); public static TreeRangeMap create() { return new TreeRangeMap<>(); } private TreeRangeMap() { } /* JADX INFO: Access modifiers changed from: package-private */ /* loaded from: classes2.dex */ public static final class RangeMapEntry extends AbstractMapEntry, V> { private final Range range; private final V value; RangeMapEntry(Cut cut, Cut cut2, V v) { this(Range.create(cut, cut2), v); } RangeMapEntry(Range range, V v) { this.range = range; this.value = v; } public final boolean contains(K k) { return this.range.contains(k); } final Cut getLowerBound() { return this.range.lowerBound; } final Cut getUpperBound() { return this.range.upperBound; } @Override // com.google.common.collect.AbstractMapEntry, java.util.Map.Entry public final V getValue() { return this.value; } @Override // com.google.common.collect.AbstractMapEntry, java.util.Map.Entry public final Range getKey() { return this.range; } } @Override // com.google.common.collect.RangeMap public final V get(K k) { Map.Entry, V> entry = getEntry(k); if (entry == null) { return null; } return entry.getValue(); } @Override // com.google.common.collect.RangeMap public final Map.Entry, V> getEntry(K k) { Map.Entry, RangeMapEntry> floorEntry = this.entriesByLowerBound.floorEntry(Cut.belowValue(k)); if (floorEntry == null || !floorEntry.getValue().contains(k)) { return null; } return floorEntry.getValue(); } @Override // com.google.common.collect.RangeMap public final void put(Range range, V v) { if (range.isEmpty()) { return; } Preconditions.checkNotNull(v); remove(range); this.entriesByLowerBound.put(range.lowerBound, new RangeMapEntry(range, v)); } /* JADX WARN: Multi-variable type inference failed */ @Override // com.google.common.collect.RangeMap public final void putCoalescing(Range range, V v) { if (this.entriesByLowerBound.isEmpty()) { put(range, v); } else { put(coalescedRange(range, Preconditions.checkNotNull(v)), v); } } /* JADX INFO: Access modifiers changed from: private */ public Range coalescedRange(Range range, V v) { return coalesce(coalesce(range, v, this.entriesByLowerBound.lowerEntry(range.lowerBound)), v, this.entriesByLowerBound.floorEntry(range.upperBound)); } private static Range coalesce(Range range, V v, Map.Entry, RangeMapEntry> entry) { return (entry != null && entry.getValue().getKey().isConnected(range) && entry.getValue().getValue().equals(v)) ? range.span(entry.getValue().getKey()) : range; } @Override // com.google.common.collect.RangeMap public final void putAll(RangeMap rangeMap) { for (Map.Entry, V> entry : rangeMap.asMapOfRanges().entrySet()) { put(entry.getKey(), entry.getValue()); } } @Override // com.google.common.collect.RangeMap public final void clear() { this.entriesByLowerBound.clear(); } @Override // com.google.common.collect.RangeMap public final Range span() { Map.Entry, RangeMapEntry> firstEntry = this.entriesByLowerBound.firstEntry(); Map.Entry, RangeMapEntry> lastEntry = this.entriesByLowerBound.lastEntry(); if (firstEntry == null) { throw new NoSuchElementException(); } return Range.create(firstEntry.getValue().getKey().lowerBound, lastEntry.getValue().getKey().upperBound); } private void putRangeMapEntry(Cut cut, Cut cut2, V v) { this.entriesByLowerBound.put(cut, new RangeMapEntry(cut, cut2, v)); } @Override // com.google.common.collect.RangeMap public final void remove(Range range) { if (range.isEmpty()) { return; } Map.Entry, RangeMapEntry> lowerEntry = this.entriesByLowerBound.lowerEntry(range.lowerBound); if (lowerEntry != null) { RangeMapEntry value = lowerEntry.getValue(); if (value.getUpperBound().compareTo(range.lowerBound) > 0) { if (value.getUpperBound().compareTo(range.upperBound) > 0) { putRangeMapEntry(range.upperBound, value.getUpperBound(), lowerEntry.getValue().getValue()); } putRangeMapEntry(value.getLowerBound(), range.lowerBound, lowerEntry.getValue().getValue()); } } Map.Entry, RangeMapEntry> lowerEntry2 = this.entriesByLowerBound.lowerEntry(range.upperBound); if (lowerEntry2 != null) { RangeMapEntry value2 = lowerEntry2.getValue(); if (value2.getUpperBound().compareTo(range.upperBound) > 0) { putRangeMapEntry(range.upperBound, value2.getUpperBound(), lowerEntry2.getValue().getValue()); } } this.entriesByLowerBound.subMap(range.lowerBound, range.upperBound).clear(); } @Override // com.google.common.collect.RangeMap public final Map, V> asMapOfRanges() { return new AsMapOfRanges(this, this.entriesByLowerBound.values()); } @Override // com.google.common.collect.RangeMap public final Map, V> asDescendingMapOfRanges() { return new AsMapOfRanges(this, this.entriesByLowerBound.descendingMap().values()); } /* JADX INFO: Access modifiers changed from: package-private */ /* loaded from: classes2.dex */ public final class AsMapOfRanges extends Maps.IteratorBasedAbstractMap, V> { final Iterable, V>> entryIterable; final TreeRangeMap this$0; AsMapOfRanges(TreeRangeMap treeRangeMap, Iterable> iterable) { this.this$0 = treeRangeMap; this.entryIterable = iterable; } @Override // java.util.AbstractMap, java.util.Map public final boolean containsKey(Object obj) { return get(obj) != null; } @Override // java.util.AbstractMap, java.util.Map public final V get(Object obj) { if (!(obj instanceof Range)) { return null; } Range range = (Range) obj; RangeMapEntry rangeMapEntry = (RangeMapEntry) this.this$0.entriesByLowerBound.get(range.lowerBound); if (rangeMapEntry == null || !rangeMapEntry.getKey().equals(range)) { return null; } return (V) rangeMapEntry.getValue(); } @Override // com.google.common.collect.Maps.IteratorBasedAbstractMap, java.util.AbstractMap, java.util.Map public final int size() { return this.this$0.entriesByLowerBound.size(); } /* JADX INFO: Access modifiers changed from: package-private */ @Override // com.google.common.collect.Maps.IteratorBasedAbstractMap public final Iterator, V>> entryIterator() { return this.entryIterable.iterator(); } } @Override // com.google.common.collect.RangeMap public final RangeMap subRangeMap(Range range) { return range.equals(Range.all()) ? this : new SubRangeMap(this, range); } /* JADX INFO: Access modifiers changed from: package-private */ /* loaded from: classes2.dex */ public class SubRangeMap implements RangeMap { private final Range subRange; final TreeRangeMap this$0; SubRangeMap(TreeRangeMap treeRangeMap, Range range) { this.this$0 = treeRangeMap; this.subRange = range; } @Override // com.google.common.collect.RangeMap public V get(K k) { if (this.subRange.contains(k)) { return (V) this.this$0.get(k); } return null; } @Override // com.google.common.collect.RangeMap public Map.Entry, V> getEntry(K k) { Map.Entry, V> entry; if (!this.subRange.contains(k) || (entry = this.this$0.getEntry(k)) == null) { return null; } return Maps.immutableEntry(entry.getKey().intersection(this.subRange), entry.getValue()); } @Override // com.google.common.collect.RangeMap public Range span() { Cut cut; Cut upperBound; Map.Entry floorEntry = this.this$0.entriesByLowerBound.floorEntry(this.subRange.lowerBound); if (floorEntry == null || ((RangeMapEntry) floorEntry.getValue()).getUpperBound().compareTo((Cut) this.subRange.lowerBound) <= 0) { cut = (Cut) this.this$0.entriesByLowerBound.ceilingKey(this.subRange.lowerBound); if (cut == null || cut.compareTo(this.subRange.upperBound) >= 0) { throw new NoSuchElementException(); } } else { cut = this.subRange.lowerBound; } Map.Entry lowerEntry = this.this$0.entriesByLowerBound.lowerEntry(this.subRange.upperBound); if (lowerEntry == null) { throw new NoSuchElementException(); } if (((RangeMapEntry) lowerEntry.getValue()).getUpperBound().compareTo((Cut) this.subRange.upperBound) >= 0) { upperBound = this.subRange.upperBound; } else { upperBound = ((RangeMapEntry) lowerEntry.getValue()).getUpperBound(); } return Range.create(cut, upperBound); } @Override // com.google.common.collect.RangeMap public void put(Range range, V v) { Preconditions.checkArgument(this.subRange.encloses(range), "Cannot put range %s into a subRangeMap(%s)", range, this.subRange); this.this$0.put(range, v); } @Override // com.google.common.collect.RangeMap public void putCoalescing(Range range, V v) { if (this.this$0.entriesByLowerBound.isEmpty() || !this.subRange.encloses(range)) { put(range, v); } else { put(this.this$0.coalescedRange(range, Preconditions.checkNotNull(v)).intersection(this.subRange), v); } } @Override // com.google.common.collect.RangeMap public void putAll(RangeMap rangeMap) { if (rangeMap.asMapOfRanges().isEmpty()) { return; } Range span = rangeMap.span(); Preconditions.checkArgument(this.subRange.encloses(span), "Cannot putAll rangeMap with span %s into a subRangeMap(%s)", span, this.subRange); this.this$0.putAll(rangeMap); } @Override // com.google.common.collect.RangeMap public void clear() { this.this$0.remove(this.subRange); } @Override // com.google.common.collect.RangeMap public void remove(Range range) { if (range.isConnected(this.subRange)) { this.this$0.remove(range.intersection(this.subRange)); } } @Override // com.google.common.collect.RangeMap public RangeMap subRangeMap(Range range) { if (!range.isConnected(this.subRange)) { return this.this$0.emptySubRangeMap(); } return this.this$0.subRangeMap(range.intersection(this.subRange)); } @Override // com.google.common.collect.RangeMap public Map, V> asMapOfRanges() { return new SubRangeMapAsMap(this); } /* JADX INFO: Access modifiers changed from: package-private */ /* renamed from: com.google.common.collect.TreeRangeMap$SubRangeMap$1, reason: invalid class name */ /* loaded from: classes2.dex */ public class AnonymousClass1 extends SubRangeMapAsMap { final SubRangeMap this$1; /* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */ AnonymousClass1(SubRangeMap subRangeMap) { super(subRangeMap); this.this$1 = subRangeMap; } @Override // com.google.common.collect.TreeRangeMap.SubRangeMap.SubRangeMapAsMap Iterator, V>> entryIterator() { if (this.this$1.subRange.isEmpty()) { return Iterators.emptyIterator(); } return new AbstractIterator, V>>(this, this.this$1.this$0.entriesByLowerBound.headMap(this.this$1.subRange.upperBound, false).descendingMap().values().iterator()) { // from class: com.google.common.collect.TreeRangeMap.SubRangeMap.1.1 final AnonymousClass1 this$2; final Iterator val$backingItr; { this.this$2 = this; this.val$backingItr = r2; } /* JADX INFO: Access modifiers changed from: protected */ @Override // com.google.common.collect.AbstractIterator public Map.Entry, V> computeNext() { if (this.val$backingItr.hasNext()) { RangeMapEntry rangeMapEntry = (RangeMapEntry) this.val$backingItr.next(); if (rangeMapEntry.getUpperBound().compareTo((Cut) this.this$2.this$1.subRange.lowerBound) > 0) { return Maps.immutableEntry(rangeMapEntry.getKey().intersection(this.this$2.this$1.subRange), rangeMapEntry.getValue()); } return (Map.Entry) endOfData(); } return (Map.Entry) endOfData(); } }; } } @Override // com.google.common.collect.RangeMap public Map, V> asDescendingMapOfRanges() { return new AnonymousClass1(this); } @Override // com.google.common.collect.RangeMap public boolean equals(Object obj) { if (obj instanceof RangeMap) { return asMapOfRanges().equals(((RangeMap) obj).asMapOfRanges()); } return false; } @Override // com.google.common.collect.RangeMap public int hashCode() { return asMapOfRanges().hashCode(); } @Override // com.google.common.collect.RangeMap public String toString() { return asMapOfRanges().toString(); } /* JADX INFO: Access modifiers changed from: package-private */ /* loaded from: classes2.dex */ public class SubRangeMapAsMap extends AbstractMap, V> { final SubRangeMap this$1; SubRangeMapAsMap(SubRangeMap subRangeMap) { this.this$1 = subRangeMap; } @Override // java.util.AbstractMap, java.util.Map public boolean containsKey(Object obj) { return get(obj) != null; } @Override // java.util.AbstractMap, java.util.Map public V get(Object obj) { RangeMapEntry rangeMapEntry; if (obj instanceof Range) { try { Range range = (Range) obj; if (this.this$1.subRange.encloses(range) && !range.isEmpty()) { if (range.lowerBound.compareTo((Cut) this.this$1.subRange.lowerBound) == 0) { Map.Entry floorEntry = this.this$1.this$0.entriesByLowerBound.floorEntry(range.lowerBound); rangeMapEntry = floorEntry != null ? (RangeMapEntry) floorEntry.getValue() : null; } else { rangeMapEntry = (RangeMapEntry) this.this$1.this$0.entriesByLowerBound.get(range.lowerBound); } if (rangeMapEntry != null && rangeMapEntry.getKey().isConnected(this.this$1.subRange) && rangeMapEntry.getKey().intersection(this.this$1.subRange).equals(range)) { return (V) rangeMapEntry.getValue(); } } } catch (ClassCastException unused) { } } return null; } @Override // java.util.AbstractMap, java.util.Map public V remove(Object obj) { V v = get(obj); if (v == null) { return null; } this.this$1.this$0.remove((Range) obj); return v; } @Override // java.util.AbstractMap, java.util.Map public void clear() { this.this$1.clear(); } /* JADX INFO: Access modifiers changed from: private */ public boolean removeEntryIf(Predicate, V>> predicate) { ArrayList newArrayList = Lists.newArrayList(); Iterator it = entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); if (predicate.apply(entry)) { newArrayList.add(entry.getKey()); } } Iterator it2 = newArrayList.iterator(); while (it2.hasNext()) { this.this$1.this$0.remove((Range) it2.next()); } return !newArrayList.isEmpty(); } @Override // java.util.AbstractMap, java.util.Map public Set> keySet() { return new Maps.KeySet, V>(this, this) { // from class: com.google.common.collect.TreeRangeMap.SubRangeMap.SubRangeMapAsMap.1 final SubRangeMapAsMap this$2; { this.this$2 = this; } @Override // com.google.common.collect.Maps.KeySet, java.util.AbstractCollection, java.util.Collection, java.util.Set public boolean remove(Object obj) { return this.this$2.remove(obj) != null; } @Override // com.google.common.collect.Sets.ImprovedAbstractSet, java.util.AbstractCollection, java.util.Collection, java.util.Set public boolean retainAll(Collection collection) { return this.this$2.removeEntryIf(Predicates.compose(Predicates.not(Predicates.in(collection)), Maps.keyFunction())); } }; } @Override // java.util.AbstractMap, java.util.Map public Set, V>> entrySet() { return new Maps.EntrySet, V>(this) { // from class: com.google.common.collect.TreeRangeMap.SubRangeMap.SubRangeMapAsMap.2 final SubRangeMapAsMap this$2; { this.this$2 = this; } @Override // java.util.AbstractCollection, java.util.Collection, java.lang.Iterable, java.util.Set public Iterator, V>> iterator() { return this.this$2.entryIterator(); } @Override // com.google.common.collect.Maps.EntrySet, com.google.common.collect.Sets.ImprovedAbstractSet, java.util.AbstractCollection, java.util.Collection, java.util.Set public boolean retainAll(Collection collection) { return this.this$2.removeEntryIf(Predicates.not(Predicates.in(collection))); } @Override // com.google.common.collect.Maps.EntrySet, java.util.AbstractCollection, java.util.Collection, java.util.Set public int size() { return Iterators.size(iterator()); } @Override // com.google.common.collect.Maps.EntrySet, java.util.AbstractCollection, java.util.Collection, java.util.Set public boolean isEmpty() { return !iterator().hasNext(); } @Override // com.google.common.collect.Maps.EntrySet Map, V> map() { return this.this$2; } }; } Iterator, V>> entryIterator() { if (this.this$1.subRange.isEmpty()) { return Iterators.emptyIterator(); } return new AbstractIterator, V>>(this, this.this$1.this$0.entriesByLowerBound.tailMap((Cut) MoreObjects.firstNonNull(this.this$1.this$0.entriesByLowerBound.floorKey(this.this$1.subRange.lowerBound), this.this$1.subRange.lowerBound), true).values().iterator()) { // from class: com.google.common.collect.TreeRangeMap.SubRangeMap.SubRangeMapAsMap.3 final SubRangeMapAsMap this$2; final Iterator val$backingItr; { this.this$2 = this; this.val$backingItr = r2; } /* JADX INFO: Access modifiers changed from: protected */ @Override // com.google.common.collect.AbstractIterator public Map.Entry, V> computeNext() { while (this.val$backingItr.hasNext()) { RangeMapEntry rangeMapEntry = (RangeMapEntry) this.val$backingItr.next(); if (rangeMapEntry.getLowerBound().compareTo((Cut) this.this$2.this$1.subRange.upperBound) < 0) { if (rangeMapEntry.getUpperBound().compareTo((Cut) this.this$2.this$1.subRange.lowerBound) > 0) { return Maps.immutableEntry(rangeMapEntry.getKey().intersection(this.this$2.this$1.subRange), rangeMapEntry.getValue()); } } else { return (Map.Entry) endOfData(); } } return (Map.Entry) endOfData(); } }; } @Override // java.util.AbstractMap, java.util.Map public Collection values() { return new Maps.Values, V>(this, this) { // from class: com.google.common.collect.TreeRangeMap.SubRangeMap.SubRangeMapAsMap.4 final SubRangeMapAsMap this$2; { this.this$2 = this; } @Override // com.google.common.collect.Maps.Values, java.util.AbstractCollection, java.util.Collection public boolean removeAll(Collection collection) { return this.this$2.removeEntryIf(Predicates.compose(Predicates.in(collection), Maps.valueFunction())); } @Override // com.google.common.collect.Maps.Values, java.util.AbstractCollection, java.util.Collection public boolean retainAll(Collection collection) { return this.this$2.removeEntryIf(Predicates.compose(Predicates.not(Predicates.in(collection)), Maps.valueFunction())); } }; } } } @Override // com.google.common.collect.RangeMap public final boolean equals(Object obj) { if (obj instanceof RangeMap) { return asMapOfRanges().equals(((RangeMap) obj).asMapOfRanges()); } return false; } @Override // com.google.common.collect.RangeMap public final int hashCode() { return asMapOfRanges().hashCode(); } @Override // com.google.common.collect.RangeMap public final String toString() { return this.entriesByLowerBound.values().toString(); } /* JADX INFO: Access modifiers changed from: private */ public RangeMap emptySubRangeMap() { return EMPTY_SUB_RANGE_MAP; } }