private static void AppendSlideSummary(this PowerPointProcessor target, ISummaryControl summary, Presentation destinationPresentation = null)
        {
            var itemsCount            = summary.ItemsCount;
            var mainFileTemplateIndex = itemsCount >= SummaryConstants.MaxOneSheetItems ? SummaryConstants.MaxOneSheetItems : itemsCount;

            var additionalFileTemplateIndex = itemsCount > SummaryConstants.MaxOneSheetItems ? itemsCount % SummaryConstants.MaxOneSheetItems : 0;

            var mainFilesCount = itemsCount / SummaryConstants.MaxOneSheetItems;

            if (mainFilesCount == 0 && itemsCount > 0)
            {
                mainFilesCount++;
            }

            try
            {
                var thread = new Thread(delegate()
                {
                    var mainPresentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetSimpleSummaryTemlateFile(String.Format(MasterWizardManager.SimpleSummarySlideTemplate, mainFileTemplateIndex));
                    MessageFilter.Register();
                    var presentation = target.PowerPointObject.Presentations.Open(mainPresentationTemplatePath, WithWindow: MsoTriState.msoFalse);
                    for (int j = 0; j < (itemsCount - additionalFileTemplateIndex); j += mainFileTemplateIndex)
                    {
                        foreach (Slide slide in presentation.Slides)
                        {
                            foreach (Shape shape in slide.Shapes)
                            {
                                for (int i = 1; i <= shape.Tags.Count; i++)
                                {
                                    switch (shape.Tags.Name(i))
                                    {
                                    case "HEADER":
                                        shape.TextFrame.TextRange.Text = summary.Title;
                                        break;

                                    case "SUMMARYDATA":
                                        shape.TextFrame.TextRange.Text = summary.SummaryData;
                                        break;

                                    case "MNTHLY1":
                                        shape.Visible = summary.ShowMonthlyHeader && summary.ShowTotalHeader ? MsoTriState.msoTrue : MsoTriState.msoFalse;
                                        shape.TextFrame.TextRange.Text = String.Format("Monthly{0}Investment", (char)13);
                                        break;

                                    case "TOTAL2":
                                        if ((summary.ShowMonthlyHeader && summary.ShowTotalHeader) || summary.ShowTotalHeader)
                                        {
                                            shape.TextFrame.TextRange.Text = "Total Investment";
                                        }
                                        else if (summary.ShowMonthlyHeader)
                                        {
                                            shape.TextFrame.TextRange.Text = "Monthly Investment";
                                        }
                                        else
                                        {
                                            shape.Visible = MsoTriState.msoFalse;
                                        }
                                        break;

                                    default:
                                        for (int k = 0; k < mainFileTemplateIndex; k++)
                                        {
                                            if (shape.Tags.Name(i).Equals(string.Format("SHAPE{0}", k)))
                                            {
                                                shape.Visible = MsoTriState.msoFalse;
                                                if (summary.ItemTitles == null)
                                                {
                                                    continue;
                                                }
                                                if ((j + k) < itemsCount)
                                                {
                                                    if (!string.IsNullOrEmpty(summary.ItemTitles[j + k]))
                                                    {
                                                        shape.Visible = MsoTriState.msoTrue;
                                                    }
                                                }
                                            }
                                            else if (shape.Tags.Name(i).Equals(string.Format("SUBHEADER{0}", k)))
                                            {
                                                shape.Visible = MsoTriState.msoFalse;
                                                if (summary.ItemTitles == null)
                                                {
                                                    continue;
                                                }
                                                if ((j + k) >= itemsCount)
                                                {
                                                    continue;
                                                }
                                                shape.TextFrame.TextRange.Text = summary.ItemTitles[j + k];
                                                shape.Visible = MsoTriState.msoTrue;
                                            }
                                            else if (shape.Tags.Name(i).Equals(string.Format("SELECT{0}", k)))
                                            {
                                                shape.Visible = MsoTriState.msoFalse;
                                                if (summary.ItemDetails == null)
                                                {
                                                    continue;
                                                }
                                                if ((j + k) >= itemsCount)
                                                {
                                                    continue;
                                                }
                                                shape.TextFrame.TextRange.Text = summary.ItemDetails[j + k];
                                                shape.Visible = MsoTriState.msoTrue;
                                            }
                                            else if (shape.Tags.Name(i).Equals(string.Format("TINVEST{0}", k)))
                                            {
                                                shape.Visible = MsoTriState.msoFalse;
                                                if (summary.MonthlyValues == null)
                                                {
                                                    continue;
                                                }
                                                if ((j + k) >= itemsCount)
                                                {
                                                    continue;
                                                }
                                                shape.TextFrame.TextRange.Text = summary.MonthlyValues[j + k];
                                                shape.Visible = MsoTriState.msoTrue;
                                            }
                                            else if (shape.Tags.Name(i).Equals(string.Format("MWINVEST{0}", k)))
                                            {
                                                shape.Visible = MsoTriState.msoFalse;
                                                if (summary.TotalValues == null)
                                                {
                                                    continue;
                                                }
                                                if ((j + k) >= itemsCount)
                                                {
                                                    continue;
                                                }
                                                shape.TextFrame.TextRange.Text = summary.TotalValues[j + k];
                                                shape.Visible = MsoTriState.msoTrue;
                                            }
                                        }
                                        break;
                                    }
                                }
                            }

                            if (summary.ContractSettings.IsConfigured &&
                                summary.ContractTemplateFolder != null &&
                                summary.ContractTemplateFolder.ExistsLocal())
                            {
                                target.FillContractInfo(slide, summary.ContractSettings, summary.ContractTemplateFolder);
                            }
                        }
                        var selectedTheme = summary.SelectedTheme;
                        if (selectedTheme != null)
                        {
                            presentation.ApplyTheme(selectedTheme.GetThemePath());
                        }
                        target.AppendSlide(presentation, -1, destinationPresentation);
                    }
                    presentation.Close();
                });
                thread.Start();

                while (thread.IsAlive)
                {
                    System.Windows.Forms.Application.DoEvents();
                }
            }
            finally
            {
                MessageFilter.Revoke();
            }

            if (additionalFileTemplateIndex == 0)
            {
                return;
            }
            try
            {
                var thread = new Thread(delegate()
                {
                    var additionalPresentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetSimpleSummaryTemlateFile(String.Format(MasterWizardManager.SimpleSummarySlideTemplate, (additionalFileTemplateIndex + mainFileTemplateIndex)));

                    MessageFilter.Register();
                    var presentation = target.PowerPointObject.Presentations.Open(additionalPresentationTemplatePath, WithWindow: MsoTriState.msoFalse);
                    foreach (Slide slide in presentation.Slides)
                    {
                        foreach (Shape shape in slide.Shapes)
                        {
                            for (int i = 1; i <= shape.Tags.Count; i++)
                            {
                                switch (shape.Tags.Name(i))
                                {
                                case "HEADER":
                                    shape.TextFrame.TextRange.Text = summary.Title;
                                    break;

                                case "SUMMARYDATA":
                                    shape.TextFrame.TextRange.Text = summary.SummaryData;
                                    break;

                                case "MNTHLY1":
                                    shape.Visible = summary.ShowMonthlyHeader && summary.ShowTotalHeader ? MsoTriState.msoTrue : MsoTriState.msoFalse;
                                    shape.TextFrame.TextRange.Text = String.Format("Monthly{0}Investment", (char)13);
                                    break;

                                case "TOTAL2":
                                    if ((summary.ShowMonthlyHeader && summary.ShowTotalHeader) || summary.ShowTotalHeader)
                                    {
                                        shape.TextFrame.TextRange.Text = "Total Investment";
                                    }
                                    else if (summary.ShowMonthlyHeader)
                                    {
                                        shape.TextFrame.TextRange.Text = "Monthly Investment";
                                    }
                                    else
                                    {
                                        shape.Visible = MsoTriState.msoFalse;
                                    }
                                    break;

                                default:
                                    int j = mainFileTemplateIndex * mainFilesCount;
                                    for (int k = 0; k < additionalFileTemplateIndex; k++)
                                    {
                                        if (shape.Tags.Name(i).Equals(string.Format("SHAPE{0}", k)))
                                        {
                                            shape.Visible = MsoTriState.msoFalse;
                                            if (summary.ItemTitles == null)
                                            {
                                                continue;
                                            }
                                            if ((j + k) < itemsCount)
                                            {
                                                if (!string.IsNullOrEmpty(summary.ItemTitles[j + k]))
                                                {
                                                    shape.Visible = MsoTriState.msoTrue;
                                                }
                                            }
                                        }
                                        else if (shape.Tags.Name(i).Equals(string.Format("SUBHEADER{0}", k)))
                                        {
                                            shape.Visible = MsoTriState.msoFalse;
                                            if (summary.ItemTitles == null)
                                            {
                                                continue;
                                            }
                                            if ((j + k) >= itemsCount)
                                            {
                                                continue;
                                            }
                                            shape.TextFrame.TextRange.Text = summary.ItemTitles[j + k];
                                            shape.Visible = MsoTriState.msoTrue;
                                        }
                                        else if (shape.Tags.Name(i).Equals(string.Format("SELECT{0}", k)))
                                        {
                                            shape.Visible = MsoTriState.msoFalse;
                                            if (summary.ItemDetails == null)
                                            {
                                                continue;
                                            }
                                            if ((j + k) >= itemsCount)
                                            {
                                                continue;
                                            }
                                            shape.TextFrame.TextRange.Text = summary.ItemDetails[j + k];
                                            shape.Visible = MsoTriState.msoTrue;
                                        }
                                        else if (shape.Tags.Name(i).Equals(string.Format("TINVEST{0}", k)))
                                        {
                                            shape.Visible = MsoTriState.msoFalse;
                                            if (summary.MonthlyValues == null)
                                            {
                                                continue;
                                            }
                                            if ((j + k) >= itemsCount)
                                            {
                                                continue;
                                            }
                                            shape.TextFrame.TextRange.Text = summary.MonthlyValues[j + k];
                                            shape.Visible = MsoTriState.msoTrue;
                                        }
                                        else if (shape.Tags.Name(i).Equals(string.Format("MWINVEST{0}", k)))
                                        {
                                            shape.Visible = MsoTriState.msoFalse;
                                            if (summary.TotalValues == null)
                                            {
                                                continue;
                                            }
                                            if ((j + k) >= itemsCount)
                                            {
                                                continue;
                                            }
                                            shape.TextFrame.TextRange.Text = summary.TotalValues[j + k];
                                            shape.Visible = MsoTriState.msoTrue;
                                        }
                                    }
                                    break;
                                }
                            }
                        }

                        if (summary.ContractSettings.IsConfigured &&
                            summary.ContractTemplateFolder != null &&
                            summary.ContractTemplateFolder.ExistsLocal())
                        {
                            target.FillContractInfo(slide, summary.ContractSettings, summary.ContractTemplateFolder);
                        }
                    }
                    var selectedTheme = summary.SelectedTheme;
                    if (selectedTheme != null)
                    {
                        presentation.ApplyTheme(selectedTheme.GetThemePath());
                    }
                    target.AppendSlide(presentation, -1, destinationPresentation);
                    presentation.Close();
                });
                thread.Start();

                while (thread.IsAlive)
                {
                    System.Windows.Forms.Application.DoEvents();
                }
            }
            finally
            {
                MessageFilter.Revoke();
            }
        }
        public static void AppendOptions(this PowerPointProcessor target, IEnumerable <IOptionsSlideData> pages, Theme selectedTheme, bool pasteToSlideMaster, Presentation destinationPresentation = null)
        {
            try
            {
                var thread = new Thread(delegate()
                {
                    MessageFilter.Register();
                    foreach (var page in pages)
                    {
                        var slideNumber = 0;
                        foreach (var pageDictionary in page.ReplacementsList)
                        {
                            var copyOfReplacementList    = new Dictionary <string, string>(pageDictionary);
                            var presentationTemplatePath = page.TemplateFilePath;
                            if (!File.Exists(presentationTemplatePath))
                            {
                                return;
                            }
                            var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse);
                            var taggedSlide  = presentation.Slides.Count > 0 ? presentation.Slides[1] : null;

                            var logoShapes = new List <Shape>();
                            if (page.Logos != null && slideNumber < page.Logos.Length)
                            {
                                var slideLogos = page.Logos[slideNumber];
                                foreach (var shape in taggedSlide.Shapes.OfType <Shape>().Where(s => s.HasTable != MsoTriState.msoTrue))
                                {
                                    for (var i = 1; i <= shape.Tags.Count; i++)
                                    {
                                        var shapeTagName = shape.Tags.Name(i);
                                        for (var j = 0; j < slideLogos.Length; j++)
                                        {
                                            if (!shapeTagName.Equals(string.Format("STATIONLOGO{0}", j + 1)))
                                            {
                                                continue;
                                            }
                                            string fileName = slideLogos[j];
                                            if (!String.IsNullOrEmpty(fileName) && File.Exists(fileName))
                                            {
                                                var newShape = taggedSlide.Shapes.AddPicture(fileName, MsoTriState.msoFalse, MsoTriState.msoCTrue, shape.Left,
                                                                                             shape.Top, shape.Width, shape.Height);
                                                newShape.Top    = shape.Top;
                                                newShape.Left   = shape.Left;
                                                newShape.Width  = shape.Width;
                                                newShape.Height = shape.Height;
                                                logoShapes.Add(newShape);
                                            }
                                            shape.Visible = MsoTriState.msoFalse;
                                        }
                                    }
                                }
                            }

                            var tableContainer = taggedSlide.Shapes.OfType <Shape>().FirstOrDefault(s => s.HasTable == MsoTriState.msoTrue);
                            if (tableContainer == null)
                            {
                                return;
                            }
                            var tableWidth     = tableContainer.Width;
                            var table          = tableContainer.Table;
                            var tableRowsCount = table.Rows.Count;
                            for (var i = 1; i <= tableRowsCount; i++)
                            {
                                for (var j = 1; j <= table.Columns.Count; j++)
                                {
                                    var tableShape = table.Cell(i, j).Shape;
                                    if (tableShape.HasTextFrame != MsoTriState.msoTrue)
                                    {
                                        continue;
                                    }
                                    var cellText = tableShape.TextFrame.TextRange.Text.Trim();
                                    var key      = copyOfReplacementList.Keys.FirstOrDefault(k => k.Trim().ToLower().Equals(cellText.ToLower()));
                                    if (String.IsNullOrEmpty(key))
                                    {
                                        continue;
                                    }
                                    tableShape.TextFrame.TextRange.Text = copyOfReplacementList[key];
                                    copyOfReplacementList.Remove(key);
                                }
                            }

                            tableRowsCount = table.Rows.Count;
                            for (var i = tableRowsCount; i >= 1; i--)
                            {
                                for (var j = 1; j < 3; j++)
                                {
                                    var tableShape = table.Cell(i, j).Shape;
                                    if (tableShape.HasTextFrame != MsoTriState.msoTrue)
                                    {
                                        continue;
                                    }
                                    var cellText = tableShape.TextFrame.TextRange.Text.Trim();
                                    if (!cellText.Equals("Delete Row"))
                                    {
                                        continue;
                                    }
                                    table.Rows[i].Delete();
                                    break;
                                }
                            }

                            tableRowsCount = table.Rows.Count;
                            for (var i = 1; i <= tableRowsCount; i++)
                            {
                                for (var j = table.Columns.Count; j >= 1; j--)
                                {
                                    var tableShape = table.Cell(i, j).Shape;
                                    if (tableShape.HasTextFrame != MsoTriState.msoTrue)
                                    {
                                        continue;
                                    }
                                    var cellText = tableShape.TextFrame.TextRange.Text.Trim();
                                    while (cellText == "Merge")
                                    {
                                        var prevColumnIndex = j - 1;
                                        tableShape.TextFrame.TextRange.Text = String.Empty;
                                        if (prevColumnIndex >= table.Columns.Count)
                                        {
                                            break;
                                        }
                                        table.Cell(i, prevColumnIndex).Merge(table.Cell(i, j));

                                        tableShape = table.Cell(i, prevColumnIndex).Shape;
                                        if (tableShape.HasTextFrame != MsoTriState.msoTrue)
                                        {
                                            break;
                                        }
                                        tableShape.TextFrame.TextRange.ParagraphFormat.Alignment = PpParagraphAlignment.ppAlignLeft;
                                        cellText = tableShape.TextFrame.TextRange.Text.Trim();
                                        if (cellText == "Merge")
                                        {
                                            j--;
                                        }
                                    }
                                }
                            }

                            var tableColumnsCount = table.Columns.Count;
                            if (page.ColumnWidths != null)
                            {
                                for (var i = 0; i < page.ColumnWidths.Length; i++)
                                {
                                    if ((i + 2) <= tableColumnsCount)
                                    {
                                        table.Columns[i + 2].Width = page.ColumnWidths[i] * 72.27f;
                                    }
                                }
                            }

                            tableColumnsCount = table.Columns.Count;
                            for (var i = tableColumnsCount - 1; i >= 0; i--)
                            {
                                var tableShape = table.Cell(4, i + 1).Shape;
                                if (tableShape.HasTextFrame != MsoTriState.msoTrue)
                                {
                                    continue;
                                }
                                var cellText = tableShape.TextFrame.TextRange.Text.Trim();
                                if (cellText.Equals("Delete Column"))
                                {
                                    table.Columns[i + 1].Delete();
                                }
                            }
                            tableContainer.Width = tableWidth;

                            if (pasteToSlideMaster)
                            {
                                var newSlide = presentation.Slides.Add(1, PpSlideLayout.ppLayoutBlank);
                                Design design;
                                if (selectedTheme != null)
                                {
                                    presentation.ApplyTheme(selectedTheme.GetThemePath());
                                    design      = presentation.Designs[presentation.Designs.Count];
                                    design.Name = DateTime.Now.ToString("MMddyy-hhmmsstt");
                                }
                                else
                                {
                                    design = presentation.Designs.Add(DateTime.Now.ToString("MMddyy-hhmmsstt"));
                                }
                                tableContainer.Copy();
                                design.SlideMaster.Shapes.Paste();
                                foreach (var logoShape in logoShapes)
                                {
                                    logoShape.Copy();
                                    design.SlideMaster.Shapes.Paste();
                                }

                                if (page.ContractSettings.IsConfigured)
                                {
                                    target.FillContractInfo(design, page.ContractSettings, BusinessObjects.Instance.OutputManager.ContractTemplateFolder);
                                }

                                newSlide.Design = design;
                            }
                            else
                            {
                                if (selectedTheme != null)
                                {
                                    presentation.ApplyTheme(selectedTheme.GetThemePath());
                                }

                                if (page.ContractSettings.IsConfigured)
                                {
                                    target.FillContractInfo(taggedSlide, page.ContractSettings, BusinessObjects.Instance.OutputManager.ContractTemplateFolder);
                                }
                            }
                            target.AppendSlide(presentation, 1, destinationPresentation);
                            presentation.Close();
                            slideNumber++;
                        }
                    }
                });
                thread.Start();
                while (thread.IsAlive)
                {
                    Application.DoEvents();
                }
            }
            catch
            {
            }
            finally
            {
                MessageFilter.Revoke();
            }
        }
        public static void AppendDigitalOneSheet(this PowerPointProcessor target, StandaloneDigitalInfoOneSheetOutputModel dataModel, Theme selectedTheme, bool pasteToSlideMaster, Presentation destinationPresentation = null)
        {
            try
            {
                var thread = new Thread(delegate()
                {
                    MessageFilter.Register();
                    var copyOfReplacementList    = new Dictionary <string, string>(dataModel.ReplacementsList);
                    var presentationTemplatePath = dataModel.TemplateFilePath;
                    if (!File.Exists(presentationTemplatePath))
                    {
                        return;
                    }
                    var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse);
                    var taggedSlide  = presentation.Slides.Count > 0 ? presentation.Slides[1] : null;

                    var logoShapes = new List <Shape>();
                    foreach (var shape in taggedSlide.Shapes.OfType <Shape>().Where(s => s.HasTable != MsoTriState.msoTrue))
                    {
                        for (var i = 1; i <= shape.Tags.Count; i++)
                        {
                            var shapeTagName = shape.Tags.Name(i);
                            for (var j = 0; j < BaseDigitalInfoOneSheetOutputModel.MaxRecords; j++)
                            {
                                if (shapeTagName.Equals(String.Format("DIGLOGO{0}", j + 1)))
                                {
                                    var fileName = dataModel.Logos.Length > j ? dataModel.Logos[j] : String.Empty;
                                    if (!String.IsNullOrEmpty(fileName) && File.Exists(fileName))
                                    {
                                        var newShape = taggedSlide.Shapes.AddPicture(fileName, MsoTriState.msoFalse, MsoTriState.msoCTrue, shape.Left,
                                                                                     shape.Top, shape.Width, shape.Height);
                                        newShape.Top    = shape.Top;
                                        newShape.Left   = shape.Left;
                                        newShape.Width  = shape.Width;
                                        newShape.Height = shape.Height;
                                        logoShapes.Add(newShape);
                                    }
                                    shape.Visible = MsoTriState.msoFalse;
                                }
                            }
                        }
                    }

                    var tableContainer = taggedSlide.Shapes.Cast <Shape>().FirstOrDefault(s => s.HasTable == MsoTriState.msoTrue);
                    if (tableContainer == null)
                    {
                        return;
                    }
                    var table             = tableContainer.Table;
                    var tableRowsCount    = table.Rows.Count;
                    var tableColumnsCount = table.Columns.Count;
                    for (var i = 1; i <= tableRowsCount; i++)
                    {
                        for (var j = 1; j <= tableColumnsCount; j++)
                        {
                            var tableShape = table.Cell(i, j).Shape;
                            if (tableShape.HasTextFrame != MsoTriState.msoTrue)
                            {
                                continue;
                            }
                            var cellText = tableShape.TextFrame.TextRange.Text.Replace(" ", "");
                            var key      = copyOfReplacementList.Keys.FirstOrDefault(k => k.Replace(" ", "").ToLower().Equals(cellText.ToLower()));
                            if (String.IsNullOrEmpty(key))
                            {
                                continue;
                            }
                            tableShape.TextFrame.TextRange.Text = copyOfReplacementList[key];
                            copyOfReplacementList.Remove(cellText);
                        }
                    }
                    tableColumnsCount = table.Columns.Count;
                    for (var i = tableColumnsCount; i >= 1; i--)
                    {
                        var tableShape = table.Cell(3, i).Shape;
                        if (tableShape.HasTextFrame != MsoTriState.msoTrue)
                        {
                            continue;
                        }
                        var cellText = tableShape.TextFrame.TextRange.Text.Trim();
                        if (!cellText.Equals("Delete Column"))
                        {
                            continue;
                        }
                        table.Columns[i].Delete();
                    }
                    tableRowsCount = table.Rows.Count;
                    for (var i = tableRowsCount; i >= 1; i--)
                    {
                        for (var j = 1; j < 3; j++)
                        {
                            var tableShape = table.Cell(i, j).Shape;
                            if (tableShape.HasTextFrame != MsoTriState.msoTrue)
                            {
                                continue;
                            }
                            var cellText = tableShape.TextFrame.TextRange.Text.Trim();
                            if (!cellText.Equals("Delete Row"))
                            {
                                continue;
                            }
                            table.Rows[i].Delete();
                            break;
                        }
                    }
                    if (pasteToSlideMaster)
                    {
                        var newSlide = presentation.Slides.Add(1, PpSlideLayout.ppLayoutBlank);
                        Design design;
                        if (selectedTheme != null)
                        {
                            presentation.ApplyTheme(selectedTheme.GetThemePath());
                            design      = presentation.Designs[presentation.Designs.Count];
                            design.Name = DateTime.Now.ToString("MMddyy-hhmmsstt");
                        }
                        else
                        {
                            design = presentation.Designs.Add(DateTime.Now.ToString("MMddyy-hhmmsstt"));
                        }
                        tableContainer.Copy();
                        design.SlideMaster.Shapes.Paste();
                        foreach (var logoShape in logoShapes)
                        {
                            logoShape.Copy();
                            design.SlideMaster.Shapes.Paste();
                        }

                        if (dataModel.ContractSettings.IsConfigured)
                        {
                            target.FillContractInfo(design, dataModel.ContractSettings, BusinessObjects.Instance.OutputManager.ContractTemplateFolder);
                        }

                        newSlide.Design = design;
                    }
                    else
                    {
                        if (selectedTheme != null)
                        {
                            presentation.ApplyTheme(selectedTheme.GetThemePath());
                        }

                        if (dataModel.ContractSettings.IsConfigured)
                        {
                            target.FillContractInfo(taggedSlide, dataModel.ContractSettings, BusinessObjects.Instance.OutputManager.ContractTemplateFolder);
                        }
                    }
                    target.AppendSlide(presentation, 1, destinationPresentation);
                    presentation.Close();
                });
                thread.Start();
                while (thread.IsAlive)
                {
                    Application.DoEvents();
                }
            }
            catch
            {
            }
            finally
            {
                MessageFilter.Revoke();
            }
        }