// Token: 0x060007BD RID: 1981 RVA: 0x00037EC4 File Offset: 0x000360C4
        private static List <VersionedId> GetOldMeetingMessages(MailboxSession mailboxSession, MeetingMessage item, byte[] globalObjectId, int rumSequenceNumber, out OldMessageDeletion.LatestItemInfo latestItemInfo)
        {
            SortBy[] array = new SortBy[2];
            latestItemInfo.FullUpdateDeleted      = false;
            latestItemInfo.RollingHighlight       = (int)Utils.SafeGetProperty(item, CalendarItemBaseSchema.ChangeHighlight, 0);
            latestItemInfo.LatestOldStartTime     = ExDateTime.MinValue;
            latestItemInfo.LatestOldEndTime       = ExDateTime.MinValue;
            latestItemInfo.LatestOldLocationStr   = string.Empty;
            latestItemInfo.LatestSequenceNumber   = -1;
            latestItemInfo.LatestItemId           = item.Id;
            latestItemInfo.LatestClientSubmitTime = (ExDateTime)Utils.SafeGetProperty(item, ItemSchema.SentTime, ExDateTime.MinValue);
            ExDateTime  valueOrDefault = item.GetValueOrDefault <ExDateTime>(CalendarItemBaseSchema.OwnerCriticalChangeTime, ExDateTime.MinValue);
            VersionedId id             = item.Id;

            array[0] = new SortBy(CalendarItemBaseSchema.GlobalObjectId, SortOrder.Ascending);
            array[1] = new SortBy(CalendarItemBaseSchema.AppointmentSequenceNumber, SortOrder.Descending);
            ComparisonFilter   seekFilter = new ComparisonFilter(ComparisonOperator.Equal, CalendarItemBaseSchema.GlobalObjectId, globalObjectId);
            List <VersionedId> list       = new List <VersionedId>();

            using (Folder folder = Folder.Bind(mailboxSession, item.ParentId))
            {
                using (QueryResult queryResult = folder.ItemQuery(ItemQueryType.None, null, array, OldMessageDeletion.OMDColumnsToQuery))
                {
                    queryResult.SeekToCondition(SeekReference.OriginBeginning, seekFilter);
                    bool flag = true;
                    while (flag)
                    {
                        IStorePropertyBag[] propertyBags = queryResult.GetPropertyBags(25);
                        if (propertyBags.Length <= 1)
                        {
                            break;
                        }
                        foreach (IStorePropertyBag storePropertyBag in propertyBags)
                        {
                            string valueOrDefault2 = storePropertyBag.GetValueOrDefault <string>(OldMessageDeletion.OMDColumnsToQuery[0], null);
                            if (!string.IsNullOrEmpty(valueOrDefault2) && (ObjectClass.IsMeetingRequest(valueOrDefault2) || ObjectClass.IsMeetingCancellation(valueOrDefault2)))
                            {
                                byte[] valueOrDefault3 = storePropertyBag.GetValueOrDefault <byte[]>(OldMessageDeletion.OMDColumnsToQuery[2], null);
                                if (!OldMessageDeletion.GlobalObjectIdMatches(globalObjectId, valueOrDefault3))
                                {
                                    flag = false;
                                    break;
                                }
                                VersionedId valueOrDefault4 = storePropertyBag.GetValueOrDefault <VersionedId>(OldMessageDeletion.OMDColumnsToQuery[1], null);
                                if (valueOrDefault4 != null && !id.Equals(valueOrDefault4))
                                {
                                    int valueOrDefault5 = storePropertyBag.GetValueOrDefault <int>(OldMessageDeletion.OMDColumnsToQuery[3], -1);
                                    if (valueOrDefault5 != -1)
                                    {
                                        if (valueOrDefault5 > rumSequenceNumber)
                                        {
                                            latestItemInfo.LatestSequenceNumber = valueOrDefault5;
                                            return(null);
                                        }
                                        if (valueOrDefault5 == rumSequenceNumber)
                                        {
                                            ExDateTime valueOrDefault6 = storePropertyBag.GetValueOrDefault <ExDateTime>(OldMessageDeletion.OMDColumnsToQuery[8], ExDateTime.MinValue);
                                            if (valueOrDefault6 > valueOrDefault)
                                            {
                                                latestItemInfo.LatestSequenceNumber = valueOrDefault5;
                                                return(null);
                                            }
                                        }
                                        if (latestItemInfo.LatestSequenceNumber == -1)
                                        {
                                            ExDateTime valueOrDefault7 = storePropertyBag.GetValueOrDefault <ExDateTime>(OldMessageDeletion.OMDColumnsToQuery[9], ExDateTime.MinValue);
                                            if (valueOrDefault7 != ExDateTime.MinValue)
                                            {
                                                latestItemInfo.LatestOldStartTime = valueOrDefault7;
                                            }
                                            ExDateTime valueOrDefault8 = storePropertyBag.GetValueOrDefault <ExDateTime>(OldMessageDeletion.OMDColumnsToQuery[10], ExDateTime.MinValue);
                                            if (valueOrDefault7 != ExDateTime.MinValue)
                                            {
                                                latestItemInfo.LatestOldEndTime = valueOrDefault8;
                                            }
                                            string valueOrDefault9 = storePropertyBag.GetValueOrDefault <string>(OldMessageDeletion.OMDColumnsToQuery[11], null);
                                            if (!string.IsNullOrEmpty(valueOrDefault9))
                                            {
                                                latestItemInfo.LatestOldLocationStr = valueOrDefault9;
                                            }
                                        }
                                        latestItemInfo.RollingHighlight |= storePropertyBag.GetValueOrDefault <int>(OldMessageDeletion.OMDColumnsToQuery[4], 0);
                                        MeetingMessageType valueOrDefault10 = storePropertyBag.GetValueOrDefault <MeetingMessageType>(OldMessageDeletion.OMDColumnsToQuery[13], MeetingMessageType.None);
                                        latestItemInfo.FullUpdateDeleted |= (valueOrDefault10 == MeetingMessageType.FullUpdate || valueOrDefault10 == MeetingMessageType.NewMeetingRequest);
                                        list.Add(valueOrDefault4);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(list);
        }
        // Token: 0x060007B4 RID: 1972 RVA: 0x000371A0 File Offset: 0x000353A0
        private List <VersionedId> QueryMatchingItems(MailboxSession itemStore, MeetingMessage item, byte[] itemGlobalObjId, string sentRepresenting, int itemSequenceNumber, ref OldMessageDeletion.LatestItemInfo latestInfo)
        {
            ExDateTime         utcNow = ExDateTime.UtcNow;
            List <VersionedId> list   = new List <VersionedId>();
            bool flag  = true;
            bool flag2 = (bool)Utils.SafeGetProperty(item, MessageItemSchema.MapiHasAttachment, false);
            bool flag3 = item.Body != null && item.Body.Size > 0L;
            bool flag4 = item is MeetingRequest;
            bool flag5 = item is MeetingResponse;
            bool flag6 = item is MeetingCancellation;

            SortBy[] sortColumns = new SortBy[]
            {
                new SortBy(CalendarItemBaseSchema.GlobalObjectId, SortOrder.Ascending),
                new SortBy(StoreObjectSchema.ItemClass, SortOrder.Descending)
            };
            ComparisonFilter seekFilter = new ComparisonFilter(ComparisonOperator.Equal, CalendarItemBaseSchema.GlobalObjectId, itemGlobalObjId);

            using (Folder folder = Folder.Bind(itemStore, item.ParentId))
            {
                using (QueryResult queryResult = folder.ItemQuery(ItemQueryType.None, null, sortColumns, OldMessageDeletion.OMDColumnsToQuery))
                {
                    queryResult.SeekToCondition(SeekReference.OriginBeginning, seekFilter);
                    while (flag)
                    {
                        object[][] rows = queryResult.GetRows(25);
                        if (rows.Length < 1)
                        {
                            break;
                        }
                        ExDateTime itemOwnerChangeTime = (ExDateTime)Utils.SafeGetProperty(item, CalendarItemBaseSchema.OwnerCriticalChangeTime, utcNow);
                        foreach (object[] array in rows)
                        {
                            string text = array[0] as string;
                            if (!string.IsNullOrEmpty(text))
                            {
                                if (!itemStore.IsGroupMailbox())
                                {
                                    if ((flag4 || flag6) && !ObjectClass.IsMeetingRequest(text) && !ObjectClass.IsMeetingCancellation(text))
                                    {
                                        flag = false;
                                        break;
                                    }
                                    if (flag5 && !ObjectClass.IsMeetingResponse(text))
                                    {
                                        goto IL_186;
                                    }
                                }
                                byte[] rowGlobalObjectId = (array[2] is byte[]) ? (array[2] as byte[]) : null;
                                if (!OldMessageDeletion.GlobalObjectIdMatches(itemGlobalObjId, rowGlobalObjectId))
                                {
                                    flag = false;
                                    break;
                                }
                                this.DetermineIfWeDelete(list, item, array, itemOwnerChangeTime, sentRepresenting, itemSequenceNumber, ref latestInfo, ref flag2, ref flag3);
                            }
                            IL_186 :;
                        }
                    }
                }
            }
            return(list);
        }