// 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: 0x060007B5 RID: 1973 RVA: 0x0003739C File Offset: 0x0003559C
        private void DetermineIfWeDelete(List <VersionedId> itemsToDelete, MeetingMessage item, object[] rowProperties, ExDateTime itemOwnerChangeTime, string sentRepresenting, int itemSequenceNumber, ref OldMessageDeletion.LatestItemInfo latestInfo, ref bool hasAttachments, ref bool hasBody)
        {
            bool           flag      = item is MeetingRequest;
            bool           flag2     = item is MeetingResponse;
            object         obj       = rowProperties[0];
            MailboxSession itemStore = item.Session as MailboxSession;

            if (rowProperties[1] != null && !(rowProperties[1] is PropertyError))
            {
                VersionedId versionedId = (VersionedId)rowProperties[1];
                if (versionedId.Equals(latestInfo.LatestItemId))
                {
                    return;
                }
                int  num   = 0;
                bool flag3 = false;
                if (!(rowProperties[3] is PropertyError) && rowProperties[3] is int)
                {
                    num   = (int)rowProperties[3];
                    flag3 = true;
                    if (latestInfo.LatestSequenceNumber < num)
                    {
                        if (rowProperties[9] is ExDateTime)
                        {
                            latestInfo.LatestOldStartTime   = (ExDateTime)rowProperties[9];
                            latestInfo.LatestSequenceNumber = num;
                        }
                        if (rowProperties[10] is ExDateTime)
                        {
                            latestInfo.LatestOldEndTime     = (ExDateTime)rowProperties[10];
                            latestInfo.LatestSequenceNumber = num;
                        }
                        if (rowProperties[11] is string && !string.IsNullOrEmpty((string)rowProperties[11]))
                        {
                            latestInfo.LatestOldLocationStr = (string)rowProperties[11];
                            latestInfo.LatestSequenceNumber = num;
                        }
                    }
                }
                bool flag4 = false;
                bool flag5 = false;
                bool flag6 = false;
                if (flag3)
                {
                    flag4 = (num == itemSequenceNumber);
                    flag5 = (num < itemSequenceNumber);
                }
                else if (!(rowProperties[6] is PropertyError) && rowProperties[6] is ExDateTime && latestInfo.LatestClientSubmitTime >= (ExDateTime)rowProperties[6])
                {
                    flag6 = true;
                }
                if (flag5 || flag6)
                {
                    if (!flag2)
                    {
                        if (flag && !(rowProperties[4] is PropertyError) && rowProperties[4] is int)
                        {
                            latestInfo.RollingHighlight |= (int)rowProperties[4];
                        }
                        object obj2 = rowProperties[13];
                        if (obj2 is int)
                        {
                            MeetingMessageType meetingMessageType = (MeetingMessageType)obj2;
                            latestInfo.FullUpdateDeleted |= (meetingMessageType == MeetingMessageType.FullUpdate || meetingMessageType == MeetingMessageType.NewMeetingRequest);
                        }
                        itemsToDelete.Add(versionedId);
                        return;
                    }
                    if (!this.SentRepresentingMatches(sentRepresenting, rowProperties[5]))
                    {
                        return;
                    }
                    itemsToDelete.Add(versionedId);
                    return;
                }
                else if (flag4)
                {
                    if (flag2)
                    {
                        this.HandleResponsesWithSameSequenceNumber(itemStore, item, versionedId, rowProperties, sentRepresenting, ref latestInfo, itemsToDelete, ref hasAttachments, ref hasBody);
                        return;
                    }
                    if (flag && !(rowProperties[4] is PropertyError) && rowProperties[4] is int)
                    {
                        latestInfo.RollingHighlight |= (int)rowProperties[4];
                    }
                    if (!(rowProperties[8] is PropertyError) && rowProperties[8] is ExDateTime)
                    {
                        ExDateTime t = (ExDateTime)rowProperties[8];
                        if (t < itemOwnerChangeTime)
                        {
                            if (!(rowProperties[4] is PropertyError) && rowProperties[4] is int)
                            {
                                latestInfo.RollingHighlight |= (int)rowProperties[4];
                            }
                            object obj3 = rowProperties[13];
                            if (obj3 is int)
                            {
                                MeetingMessageType meetingMessageType2 = (MeetingMessageType)obj3;
                                latestInfo.FullUpdateDeleted |= (meetingMessageType2 == MeetingMessageType.FullUpdate || meetingMessageType2 == MeetingMessageType.NewMeetingRequest);
                            }
                            itemsToDelete.Add(versionedId);
                        }
                    }
                }
            }
        }