private void AutoComplete(System.Xml.WriteState writeState)
 {
     if (this.writeState == System.Xml.WriteState.Element)
     {
         this.EndStartElement();
     }
     this.writeState = writeState;
 }
 static XmlWellFormedWriter()
 {
     System.Xml.WriteState[] stateArray = new System.Xml.WriteState[0x11];
     stateArray[1] = System.Xml.WriteState.Prolog;
     stateArray[2] = System.Xml.WriteState.Prolog;
     stateArray[3] = System.Xml.WriteState.Element;
     stateArray[4] = System.Xml.WriteState.Content;
     stateArray[5] = System.Xml.WriteState.Content;
     stateArray[6] = System.Xml.WriteState.Attribute;
     stateArray[7] = System.Xml.WriteState.Content;
     stateArray[8] = System.Xml.WriteState.Attribute;
     stateArray[9] = System.Xml.WriteState.Attribute;
     stateArray[10] = System.Xml.WriteState.Content;
     stateArray[11] = System.Xml.WriteState.Attribute;
     stateArray[12] = System.Xml.WriteState.Attribute;
     stateArray[13] = System.Xml.WriteState.Attribute;
     stateArray[14] = System.Xml.WriteState.Attribute;
     stateArray[15] = System.Xml.WriteState.Closed;
     stateArray[0x10] = System.Xml.WriteState.Error;
     state2WriteState = stateArray;
     StateTableDocument = new State[] { 
         State.Document, State.Error, State.Error, State.Error, State.Error, State.PostB64Cont, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.Error, State.Error, State.Error, State.Error, State.Error, State.PostB64Cont, State.Error, State.EndDocument, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.StartDoc, State.TopLevel, State.Document, State.StartContent, State.Content, State.PostB64Cont, State.PostB64Attr, State.AfterRootEle, State.EndAttrSCont, State.EndAttrSCont, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.StartDoc, State.TopLevel, State.Document, State.StartContent, State.Content, State.PostB64Cont, State.PostB64Attr, State.AfterRootEle, State.EndAttrSCont, State.EndAttrSCont, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.StartDoc, State.TopLevel, State.Document, State.Error, State.Error, State.PostB64Cont, State.PostB64Attr, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.StartDocEle, State.Element, State.Element, State.StartContentEle, State.Element, State.PostB64Cont, State.PostB64Attr, State.Error, State.EndAttrSEle, State.EndAttrSEle, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.Error, State.Error, State.Error, State.StartContent, State.Content, State.PostB64Cont, State.PostB64Attr, State.Error, State.EndAttrEEle, State.EndAttrEEle, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.Error, State.Error, State.Error, State.Attribute, State.Error, State.PostB64Cont, State.PostB64Attr, State.Error, State.EndAttrSAttr, State.EndAttrSAttr, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.Error, State.Error, State.Error, State.Error, State.Error, State.PostB64Cont, State.PostB64Attr, State.Error, State.Element, State.Element, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.Error, State.Error, State.Error, State.StartContent, State.Content, State.PostB64Cont, State.PostB64Attr, State.Error, State.Attribute, State.SpecialAttr, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.Error, State.Error, State.Error, State.StartContent, State.Content, State.PostB64Cont, State.PostB64Attr, State.Error, State.EndAttrSCont, State.EndAttrSCont, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.Error, State.Error, State.Error, State.StartContent, State.Content, State.PostB64Cont, State.PostB64Attr, State.Error, State.Attribute, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.Error, State.Error, State.Error, State.StartContentB64, State.B64Content, State.B64Content, State.B64Attribute, State.Error, State.B64Attribute, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.StartDoc, State.Error, State.Document, State.StartContent, State.Content, State.PostB64Cont, State.PostB64Attr, State.AfterRootEle, State.Attribute, State.SpecialAttr, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.StartDoc, State.TopLevel, State.Document, State.StartContent, State.Content, State.PostB64Cont, State.PostB64Attr, State.AfterRootEle, State.Attribute, State.SpecialAttr, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error
      };
     StateTableAuto = new State[] { 
         State.Document, State.Error, State.Error, State.Error, State.Error, State.PostB64Cont, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.Error, State.Error, State.Error, State.Error, State.Error, State.PostB64Cont, State.Error, State.EndDocument, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.TopLevel, State.TopLevel, State.Error, State.StartContent, State.Content, State.PostB64Cont, State.PostB64Attr, State.AfterRootEle, State.EndAttrSCont, State.EndAttrSCont, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.TopLevel, State.TopLevel, State.Error, State.StartContent, State.Content, State.PostB64Cont, State.PostB64Attr, State.AfterRootEle, State.EndAttrSCont, State.EndAttrSCont, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.StartDoc, State.TopLevel, State.Error, State.Error, State.Error, State.PostB64Cont, State.PostB64Attr, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.StartFragEle, State.Element, State.Error, State.StartContentEle, State.Element, State.PostB64Cont, State.PostB64Attr, State.Element, State.EndAttrSEle, State.EndAttrSEle, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.Error, State.Error, State.Error, State.StartContent, State.Content, State.PostB64Cont, State.PostB64Attr, State.Error, State.EndAttrEEle, State.EndAttrEEle, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.RootLevelAttr, State.Error, State.Error, State.Attribute, State.Error, State.PostB64Cont, State.PostB64Attr, State.Error, State.EndAttrSAttr, State.EndAttrSAttr, State.Error, State.StartRootLevelAttr, State.StartRootLevelAttr, State.PostB64RootAttr, State.RootLevelAttr, State.Error, 
         State.Error, State.Error, State.Error, State.Error, State.Error, State.PostB64Cont, State.PostB64Attr, State.Error, State.Element, State.Element, State.Error, State.AfterRootLevelAttr, State.AfterRootLevelAttr, State.PostB64RootAttr, State.Error, State.Error, 
         State.StartFragCont, State.StartFragCont, State.Error, State.StartContent, State.Content, State.PostB64Cont, State.PostB64Attr, State.Content, State.Attribute, State.SpecialAttr, State.Error, State.RootLevelAttr, State.RootLevelSpecAttr, State.PostB64RootAttr, State.Error, State.Error, 
         State.StartFragCont, State.StartFragCont, State.Error, State.StartContent, State.Content, State.PostB64Cont, State.PostB64Attr, State.Content, State.EndAttrSCont, State.EndAttrSCont, State.Error, State.Error, State.Error, State.Error, State.Error, State.Error, 
         State.StartFragCont, State.StartFragCont, State.Error, State.StartContent, State.Content, State.PostB64Cont, State.PostB64Attr, State.Content, State.Attribute, State.Error, State.Error, State.RootLevelAttr, State.Error, State.PostB64RootAttr, State.Error, State.Error, 
         State.StartFragB64, State.StartFragB64, State.Error, State.StartContentB64, State.B64Content, State.B64Content, State.B64Attribute, State.B64Content, State.B64Attribute, State.Error, State.Error, State.RootLevelB64Attr, State.Error, State.RootLevelB64Attr, State.Error, State.Error, 
         State.StartFragCont, State.TopLevel, State.Error, State.StartContent, State.Content, State.PostB64Cont, State.PostB64Attr, State.Content, State.Attribute, State.SpecialAttr, State.Error, State.RootLevelAttr, State.RootLevelSpecAttr, State.PostB64RootAttr, State.AfterRootLevelAttr, State.Error, 
         State.TopLevel, State.TopLevel, State.Error, State.StartContent, State.Content, State.PostB64Cont, State.PostB64Attr, State.AfterRootEle, State.Attribute, State.SpecialAttr, State.Error, State.RootLevelAttr, State.RootLevelSpecAttr, State.PostB64RootAttr, State.AfterRootLevelAttr, State.Error
      };
 }
 internal virtual void Close(System.Xml.WriteState currentState)
 {
     this.Close();
 }
 public override void WriteEndElement()
 {
     if (this.IsClosed)
     {
         this.ThrowClosed();
     }
     if (this.depth == 0)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(System.Runtime.Serialization.SR.GetString("XmlInvalidDepth", new object[] { "WriteEndElement", this.depth.ToString(CultureInfo.InvariantCulture) })));
     }
     if (this.writeState == System.Xml.WriteState.Attribute)
     {
         this.WriteEndAttribute();
     }
     this.FlushBase64();
     if (this.writeState == System.Xml.WriteState.Element)
     {
         this.nsMgr.DeclareNamespaces(this.writer);
         this.writer.WriteEndStartElement(true);
     }
     else
     {
         Element element = this.elements[this.depth];
         this.writer.WriteEndElement(element.Prefix, element.LocalName);
     }
     this.ExitScope();
     this.writeState = System.Xml.WriteState.Content;
 }
 public override void WriteEndDocument()
 {
     if (this.IsClosed)
     {
         this.ThrowClosed();
     }
     if ((this.writeState == System.Xml.WriteState.Start) || (this.writeState == System.Xml.WriteState.Prolog))
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(System.Runtime.Serialization.SR.GetString("XmlNoRootElement")));
     }
     this.FinishDocument();
     this.writeState = System.Xml.WriteState.Start;
     this.documentState = DocumentState.End;
 }
 public override void WriteEndAttribute()
 {
     if (this.IsClosed)
     {
         this.ThrowClosed();
     }
     if (this.writeState != System.Xml.WriteState.Attribute)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(System.Runtime.Serialization.SR.GetString("XmlInvalidWriteState", new object[] { "WriteEndAttribute", this.WriteState.ToString() })));
     }
     this.FlushBase64();
     try
     {
         if (this.isXmlAttribute)
         {
             if (this.attributeLocalName == "lang")
             {
                 this.nsMgr.AddLangAttribute(this.attributeValue);
             }
             else if (this.attributeLocalName == "space")
             {
                 if (this.attributeValue != "preserve")
                 {
                     if (this.attributeValue != "default")
                     {
                         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(System.Runtime.Serialization.SR.GetString("XmlInvalidXmlSpace", new object[] { this.attributeValue })));
                     }
                     this.nsMgr.AddSpaceAttribute(System.Xml.XmlSpace.Default);
                 }
                 else
                 {
                     this.nsMgr.AddSpaceAttribute(System.Xml.XmlSpace.Preserve);
                 }
             }
             this.isXmlAttribute = false;
             this.attributeLocalName = null;
             this.attributeValue = null;
         }
         if (this.isXmlnsAttribute)
         {
             this.nsMgr.AddNamespaceIfNotDeclared(this.attributeLocalName, this.attributeValue, null);
             this.isXmlnsAttribute = false;
             this.attributeLocalName = null;
             this.attributeValue = null;
         }
         else
         {
             this.writer.WriteEndAttribute();
         }
     }
     finally
     {
         this.writeState = System.Xml.WriteState.Element;
     }
 }
 private void StartAttribute(ref string prefix, string localName, string ns, XmlDictionaryString xNs)
 {
     if (this.IsClosed)
     {
         this.ThrowClosed();
     }
     if (this.writeState == System.Xml.WriteState.Attribute)
     {
         this.WriteEndAttribute();
     }
     if ((localName == null) || ((localName.Length == 0) && (prefix != "xmlns")))
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("localName"));
     }
     if (this.writeState != System.Xml.WriteState.Element)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(System.Runtime.Serialization.SR.GetString("XmlInvalidWriteState", new object[] { "WriteStartAttribute", this.WriteState.ToString() })));
     }
     if (prefix == null)
     {
         if ((ns == "http://www.w3.org/2000/xmlns/") && (localName != "xmlns"))
         {
             prefix = "xmlns";
         }
         else if (ns == "http://www.w3.org/XML/1998/namespace")
         {
             prefix = "xml";
         }
         else
         {
             prefix = string.Empty;
         }
     }
     if ((prefix.Length == 0) && (localName == "xmlns"))
     {
         prefix = "xmlns";
         localName = string.Empty;
     }
     this.isXmlnsAttribute = false;
     this.isXmlAttribute = false;
     if (prefix == "xml")
     {
         if ((ns != null) && (ns != "http://www.w3.org/XML/1998/namespace"))
         {
             throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(System.Runtime.Serialization.SR.GetString("XmlPrefixBoundToNamespace", new object[] { "xml", "http://www.w3.org/XML/1998/namespace", ns }), "ns"));
         }
         this.isXmlAttribute = true;
         this.attributeValue = string.Empty;
         this.attributeLocalName = localName;
     }
     else if (prefix == "xmlns")
     {
         if ((ns != null) && (ns != "http://www.w3.org/2000/xmlns/"))
         {
             throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(System.Runtime.Serialization.SR.GetString("XmlPrefixBoundToNamespace", new object[] { "xmlns", "http://www.w3.org/2000/xmlns/", ns }), "ns"));
         }
         this.isXmlnsAttribute = true;
         this.attributeValue = string.Empty;
         this.attributeLocalName = localName;
     }
     else if (ns == null)
     {
         if (prefix.Length != 0)
         {
             ns = this.nsMgr.LookupNamespace(prefix);
             if (ns == null)
             {
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(System.Runtime.Serialization.SR.GetString("XmlUndefinedPrefix", new object[] { prefix }), "prefix"));
             }
         }
         else
         {
             ns = string.Empty;
         }
     }
     else if (ns.Length == 0)
     {
         if (prefix.Length != 0)
         {
             throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(System.Runtime.Serialization.SR.GetString("XmlEmptyNamespaceRequiresNullPrefix"), "prefix"));
         }
     }
     else if (prefix.Length == 0)
     {
         prefix = this.nsMgr.LookupAttributePrefix(ns);
         if (prefix == null)
         {
             if ((ns.Length == "http://www.w3.org/2000/xmlns/".Length) && (ns == "http://www.w3.org/2000/xmlns/"))
             {
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(System.Runtime.Serialization.SR.GetString("XmlSpecificBindingNamespace", new object[] { "xmlns", ns })));
             }
             if ((ns.Length == "http://www.w3.org/XML/1998/namespace".Length) && (ns == "http://www.w3.org/XML/1998/namespace"))
             {
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(System.Runtime.Serialization.SR.GetString("XmlSpecificBindingNamespace", new object[] { "xml", ns })));
             }
             prefix = this.GeneratePrefix(ns, xNs);
         }
     }
     else
     {
         this.nsMgr.AddNamespaceIfNotDeclared(prefix, ns, xNs);
     }
     this.writeState = System.Xml.WriteState.Attribute;
 }
 protected void SetOutput(XmlStreamNodeWriter writer)
 {
     this.inList = false;
     this.writer = writer;
     this.nodeWriter = writer;
     this.writeState = System.Xml.WriteState.Start;
     this.documentState = DocumentState.None;
     this.nsMgr.Clear();
     if (this.depth != 0)
     {
         this.elements = null;
         this.depth = 0;
     }
     this.attributeLocalName = null;
     this.attributeValue = null;
     this.oldWriter = null;
     this.oldStream = null;
 }
 public override void WriteStartDocument()
 {
     if (this.IsClosed)
     {
         this.ThrowClosed();
     }
     if (this.writeState != System.Xml.WriteState.Start)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(System.Runtime.Serialization.SR.GetString("XmlInvalidWriteState", new object[] { "WriteStartDocument", this.WriteState.ToString() })));
     }
     this.writeState = System.Xml.WriteState.Prolog;
     this.documentState = DocumentState.Document;
     this.writer.WriteDeclaration();
 }