﻿namespace MarkupSimplifierApp
{
    partial class Form1
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.cbRemoveContentControls = new System.Windows.Forms.CheckBox();
            this.cbRemoveSmartTags = new System.Windows.Forms.CheckBox();
            this.cbRemoveRsidInfo = new System.Windows.Forms.CheckBox();
            this.cbRemoveComments = new System.Windows.Forms.CheckBox();
            this.cbRemoveEndAndFootNotes = new System.Windows.Forms.CheckBox();
            this.cbReplaceTabsWithSpaces = new System.Windows.Forms.CheckBox();
            this.cbRemoveFieldCodes = new System.Windows.Forms.CheckBox();
            this.cbRemovePermissions = new System.Windows.Forms.CheckBox();
            this.cbRemoveProof = new System.Windows.Forms.CheckBox();
            this.cbRemoveSoftHyphens = new System.Windows.Forms.CheckBox();
            this.cbRemoveLastRenderedPageBreak = new System.Windows.Forms.CheckBox();
            this.cbRemoveBookmarks = new System.Windows.Forms.CheckBox();
            this.cbRemoveWebHidden = new System.Windows.Forms.CheckBox();
            this.cbNormalize = new System.Windows.Forms.CheckBox();
            this.btnApply = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // cbRemoveContentControls
            // 
            this.cbRemoveContentControls.AutoSize = true;
            this.cbRemoveContentControls.Location = new System.Drawing.Point(13, 13);
            this.cbRemoveContentControls.Name = "cbRemoveContentControls";
            this.cbRemoveContentControls.Size = new System.Drawing.Size(147, 17);
            this.cbRemoveContentControls.TabIndex = 0;
            this.cbRemoveContentControls.Text = "Remove Content Controls";
            this.cbRemoveContentControls.UseVisualStyleBackColor = true;
            // 
            // cbRemoveSmartTags
            // 
            this.cbRemoveSmartTags.AutoSize = true;
            this.cbRemoveSmartTags.Location = new System.Drawing.Point(13, 37);
            this.cbRemoveSmartTags.Name = "cbRemoveSmartTags";
            this.cbRemoveSmartTags.Size = new System.Drawing.Size(123, 17);
            this.cbRemoveSmartTags.TabIndex = 1;
            this.cbRemoveSmartTags.Text = "Remove Smart Tags";
            this.cbRemoveSmartTags.UseVisualStyleBackColor = true;
            // 
            // cbRemoveRsidInfo
            // 
            this.cbRemoveRsidInfo.AutoSize = true;
            this.cbRemoveRsidInfo.Location = new System.Drawing.Point(13, 61);
            this.cbRemoveRsidInfo.Name = "cbRemoveRsidInfo";
            this.cbRemoveRsidInfo.Size = new System.Drawing.Size(111, 17);
            this.cbRemoveRsidInfo.TabIndex = 2;
            this.cbRemoveRsidInfo.Text = "Remove Rsid Info";
            this.cbRemoveRsidInfo.UseVisualStyleBackColor = true;
            // 
            // cbRemoveComments
            // 
            this.cbRemoveComments.AutoSize = true;
            this.cbRemoveComments.Location = new System.Drawing.Point(13, 85);
            this.cbRemoveComments.Name = "cbRemoveComments";
            this.cbRemoveComments.Size = new System.Drawing.Size(118, 17);
            this.cbRemoveComments.TabIndex = 3;
            this.cbRemoveComments.Text = "Remove Comments";
            this.cbRemoveComments.UseVisualStyleBackColor = true;
            // 
            // cbRemoveEndAndFootNotes
            // 
            this.cbRemoveEndAndFootNotes.AutoSize = true;
            this.cbRemoveEndAndFootNotes.Location = new System.Drawing.Point(13, 109);
            this.cbRemoveEndAndFootNotes.Name = "cbRemoveEndAndFootNotes";
            this.cbRemoveEndAndFootNotes.Size = new System.Drawing.Size(164, 17);
            this.cbRemoveEndAndFootNotes.TabIndex = 4;
            this.cbRemoveEndAndFootNotes.Text = "Remove End and Foot Notes";
            this.cbRemoveEndAndFootNotes.UseVisualStyleBackColor = true;
            // 
            // cbReplaceTabsWithSpaces
            // 
            this.cbReplaceTabsWithSpaces.AutoSize = true;
            this.cbReplaceTabsWithSpaces.Location = new System.Drawing.Point(13, 133);
            this.cbReplaceTabsWithSpaces.Name = "cbReplaceTabsWithSpaces";
            this.cbReplaceTabsWithSpaces.Size = new System.Drawing.Size(154, 17);
            this.cbReplaceTabsWithSpaces.TabIndex = 5;
            this.cbReplaceTabsWithSpaces.Text = "Replace Tabs with Spaces";
            this.cbReplaceTabsWithSpaces.UseVisualStyleBackColor = true;
            // 
            // cbRemoveFieldCodes
            // 
            this.cbRemoveFieldCodes.AutoSize = true;
            this.cbRemoveFieldCodes.Location = new System.Drawing.Point(13, 157);
            this.cbRemoveFieldCodes.Name = "cbRemoveFieldCodes";
            this.cbRemoveFieldCodes.Size = new System.Drawing.Size(124, 17);
            this.cbRemoveFieldCodes.TabIndex = 6;
            this.cbRemoveFieldCodes.Text = "Remove Field Codes";
            this.cbRemoveFieldCodes.UseVisualStyleBackColor = true;
            // 
            // cbRemovePermissions
            // 
            this.cbRemovePermissions.AutoSize = true;
            this.cbRemovePermissions.Location = new System.Drawing.Point(13, 181);
            this.cbRemovePermissions.Name = "cbRemovePermissions";
            this.cbRemovePermissions.Size = new System.Drawing.Size(124, 17);
            this.cbRemovePermissions.TabIndex = 7;
            this.cbRemovePermissions.Text = "Remove Permissions";
            this.cbRemovePermissions.UseVisualStyleBackColor = true;
            // 
            // cbRemoveProof
            // 
            this.cbRemoveProof.AutoSize = true;
            this.cbRemoveProof.Location = new System.Drawing.Point(13, 205);
            this.cbRemoveProof.Name = "cbRemoveProof";
            this.cbRemoveProof.Size = new System.Drawing.Size(94, 17);
            this.cbRemoveProof.TabIndex = 8;
            this.cbRemoveProof.Text = "Remove Proof";
            this.cbRemoveProof.UseVisualStyleBackColor = true;
            // 
            // cbRemoveSoftHyphens
            // 
            this.cbRemoveSoftHyphens.AutoSize = true;
            this.cbRemoveSoftHyphens.Location = new System.Drawing.Point(13, 229);
            this.cbRemoveSoftHyphens.Name = "cbRemoveSoftHyphens";
            this.cbRemoveSoftHyphens.Size = new System.Drawing.Size(133, 17);
            this.cbRemoveSoftHyphens.TabIndex = 9;
            this.cbRemoveSoftHyphens.Text = "Remove Soft Hyphens";
            this.cbRemoveSoftHyphens.UseVisualStyleBackColor = true;
            // 
            // cbRemoveLastRenderedPageBreak
            // 
            this.cbRemoveLastRenderedPageBreak.AutoSize = true;
            this.cbRemoveLastRenderedPageBreak.Location = new System.Drawing.Point(13, 253);
            this.cbRemoveLastRenderedPageBreak.Name = "cbRemoveLastRenderedPageBreak";
            this.cbRemoveLastRenderedPageBreak.Size = new System.Drawing.Size(198, 17);
            this.cbRemoveLastRenderedPageBreak.TabIndex = 10;
            this.cbRemoveLastRenderedPageBreak.Text = "Remove Last Rendered Page Break";
            this.cbRemoveLastRenderedPageBreak.UseVisualStyleBackColor = true;
            // 
            // cbRemoveBookmarks
            // 
            this.cbRemoveBookmarks.AutoSize = true;
            this.cbRemoveBookmarks.Location = new System.Drawing.Point(13, 277);
            this.cbRemoveBookmarks.Name = "cbRemoveBookmarks";
            this.cbRemoveBookmarks.Size = new System.Drawing.Size(122, 17);
            this.cbRemoveBookmarks.TabIndex = 11;
            this.cbRemoveBookmarks.Text = "Remove Bookmarks";
            this.cbRemoveBookmarks.UseVisualStyleBackColor = true;
            // 
            // cbRemoveWebHidden
            // 
            this.cbRemoveWebHidden.AutoSize = true;
            this.cbRemoveWebHidden.Location = new System.Drawing.Point(13, 301);
            this.cbRemoveWebHidden.Name = "cbRemoveWebHidden";
            this.cbRemoveWebHidden.Size = new System.Drawing.Size(129, 17);
            this.cbRemoveWebHidden.TabIndex = 12;
            this.cbRemoveWebHidden.Text = "Remove Web Hidden";
            this.cbRemoveWebHidden.UseVisualStyleBackColor = true;
            // 
            // cbNormalize
            // 
            this.cbNormalize.AutoSize = true;
            this.cbNormalize.Location = new System.Drawing.Point(13, 325);
            this.cbNormalize.Name = "cbNormalize";
            this.cbNormalize.Size = new System.Drawing.Size(97, 17);
            this.cbNormalize.TabIndex = 13;
            this.cbNormalize.Text = "Normalize XML";
            this.cbNormalize.UseVisualStyleBackColor = true;
            // 
            // btnApply
            // 
            this.btnApply.Location = new System.Drawing.Point(256, 301);
            this.btnApply.Name = "btnApply";
            this.btnApply.Size = new System.Drawing.Size(103, 41);
            this.btnApply.TabIndex = 14;
            this.btnApply.Text = "Apply to Documents";
            this.btnApply.UseVisualStyleBackColor = true;
            this.btnApply.Click += new System.EventHandler(this.btnApply_Click);
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(378, 354);
            this.Controls.Add(this.btnApply);
            this.Controls.Add(this.cbNormalize);
            this.Controls.Add(this.cbRemoveWebHidden);
            this.Controls.Add(this.cbRemoveBookmarks);
            this.Controls.Add(this.cbRemoveLastRenderedPageBreak);
            this.Controls.Add(this.cbRemoveSoftHyphens);
            this.Controls.Add(this.cbRemoveProof);
            this.Controls.Add(this.cbRemovePermissions);
            this.Controls.Add(this.cbRemoveFieldCodes);
            this.Controls.Add(this.cbReplaceTabsWithSpaces);
            this.Controls.Add(this.cbRemoveEndAndFootNotes);
            this.Controls.Add(this.cbRemoveComments);
            this.Controls.Add(this.cbRemoveRsidInfo);
            this.Controls.Add(this.cbRemoveSmartTags);
            this.Controls.Add(this.cbRemoveContentControls);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.CheckBox cbRemoveContentControls;
        private System.Windows.Forms.CheckBox cbRemoveSmartTags;
        private System.Windows.Forms.CheckBox cbRemoveRsidInfo;
        private System.Windows.Forms.CheckBox cbRemoveComments;
        private System.Windows.Forms.CheckBox cbRemoveEndAndFootNotes;
        private System.Windows.Forms.CheckBox cbReplaceTabsWithSpaces;
        private System.Windows.Forms.CheckBox cbRemoveFieldCodes;
        private System.Windows.Forms.CheckBox cbRemovePermissions;
        private System.Windows.Forms.CheckBox cbRemoveProof;
        private System.Windows.Forms.CheckBox cbRemoveSoftHyphens;
        private System.Windows.Forms.CheckBox cbRemoveLastRenderedPageBreak;
        private System.Windows.Forms.CheckBox cbRemoveBookmarks;
        private System.Windows.Forms.CheckBox cbRemoveWebHidden;
        private System.Windows.Forms.CheckBox cbNormalize;
        private System.Windows.Forms.Button btnApply;
    }
}

