{"version":3,"file":"server-BPmC12ZL.mjs","sources":["../../../../../../external/npm/node_modules/domino/lib/Event.js","../../../../../../external/npm/node_modules/domino/lib/UIEvent.js","../../../../../../external/npm/node_modules/domino/lib/MouseEvent.js","../../../../../../external/npm/node_modules/domino/lib/DOMException.js","../../../../../../external/npm/node_modules/domino/lib/config.js","../../../../../../external/npm/node_modules/domino/lib/utils.js","../../../../../../external/npm/node_modules/domino/lib/EventTarget.js","../../../../../../external/npm/node_modules/domino/lib/LinkedList.js","../../../../../../external/npm/node_modules/domino/lib/NodeUtils.js","../../../../../../external/npm/node_modules/domino/lib/Node.js","../../../../../../external/npm/node_modules/domino/lib/NodeList.es6.js","../../../../../../external/npm/node_modules/domino/lib/NodeList.es5.js","../../../../../../external/npm/node_modules/domino/lib/NodeList.js","../../../../../../external/npm/node_modules/domino/lib/ContainerNode.js","../../../../../../external/npm/node_modules/domino/lib/xmlnames.js","../../../../../../external/npm/node_modules/domino/lib/attributes.js","../../../../../../external/npm/node_modules/domino/lib/FilteredElementList.js","../../../../../../external/npm/node_modules/domino/lib/DOMTokenList.js","../../../../../../external/npm/node_modules/domino/lib/select.js","../../../../../../external/npm/node_modules/domino/lib/ChildNode.js","../../../../../../external/npm/node_modules/domino/lib/NonDocumentTypeChildNode.js","../../../../../../external/npm/node_modules/domino/lib/NamedNodeMap.js","../../../../../../external/npm/node_modules/domino/lib/Element.js","../../../../../../external/npm/node_modules/domino/lib/Leaf.js","../../../../../../external/npm/node_modules/domino/lib/CharacterData.js","../../../../../../external/npm/node_modules/domino/lib/Text.js","../../../../../../external/npm/node_modules/domino/lib/Comment.js","../../../../../../external/npm/node_modules/domino/lib/DocumentFragment.js","../../../../../../external/npm/node_modules/domino/lib/ProcessingInstruction.js","../../../../../../external/npm/node_modules/domino/lib/NodeFilter.js","../../../../../../external/npm/node_modules/domino/lib/NodeTraversal.js","../../../../../../external/npm/node_modules/domino/lib/TreeWalker.js","../../../../../../external/npm/node_modules/domino/lib/NodeIterator.js","../../../../../../external/npm/node_modules/domino/lib/URL.js","../../../../../../external/npm/node_modules/domino/lib/CustomEvent.js","../../../../../../external/npm/node_modules/domino/lib/events.js","../../../../../../external/npm/node_modules/domino/lib/style_parser.js","../../../../../../external/npm/node_modules/domino/lib/CSSStyleDeclaration.js","../../../../../../external/npm/node_modules/domino/lib/URLUtils.js","../../../../../../external/npm/node_modules/domino/lib/defineElement.js","../../../../../../external/npm/node_modules/domino/lib/htmlelts.js","../../../../../../external/npm/node_modules/domino/lib/svg.js","../../../../../../external/npm/node_modules/domino/lib/MutationConstants.js","../../../../../../external/npm/node_modules/domino/lib/Document.js","../../../../../../external/npm/node_modules/domino/lib/DocumentType.js","../../../../../../external/npm/node_modules/domino/lib/HTMLParser.js","../../../../../../external/npm/node_modules/domino/lib/DOMImplementation.js","../../../../../../external/npm/node_modules/domino/lib/Location.js","../../../../../../external/npm/node_modules/domino/lib/NavigatorID.js","../../../../../../external/npm/node_modules/domino/lib/WindowTimers.js","../../../../../../external/npm/node_modules/domino/lib/impl.js","../../../../../../external/npm/node_modules/domino/lib/Window.js","../../../../../../external/npm/node_modules/domino/lib/index.js","../../../../../../packages/platform-server/src/domino_adapter.ts","../../../../../../packages/platform-server/src/tokens.ts","../../../../../../packages/platform-server/src/platform_state.ts","../../../../../../packages/platform-server/src/http.ts","../../../../../../packages/platform-server/src/location.ts","../../../../../../packages/platform-server/src/server_events.ts","../../../../../../packages/platform-server/src/transfer_state.ts","../../../../../../packages/platform-server/src/server.ts"],"sourcesContent":["\"use strict\";\nmodule.exports = Event;\n\nEvent.CAPTURING_PHASE = 1;\nEvent.AT_TARGET = 2;\nEvent.BUBBLING_PHASE = 3;\n\nfunction Event(type, dictionary) {\n  // Initialize basic event properties\n  this.type = '';\n  this.target = null;\n  this.currentTarget = null;\n  this.eventPhase = Event.AT_TARGET;\n  this.bubbles = false;\n  this.cancelable = false;\n  this.isTrusted = false;\n  this.defaultPrevented = false;\n  this.timeStamp = Date.now();\n\n  // Initialize internal flags\n  // XXX: Would it be better to inherit these defaults from the prototype?\n  this._propagationStopped = false;\n  this._immediatePropagationStopped = false;\n  this._initialized = true;\n  this._dispatching = false;\n\n  // Now initialize based on the constructor arguments (if any)\n  if (type) this.type = type;\n  if (dictionary) {\n    for(var p in dictionary) {\n      this[p] = dictionary[p];\n    }\n  }\n}\n\nEvent.prototype = Object.create(Object.prototype, {\n  constructor: { value: Event },\n  stopPropagation: { value: function stopPropagation() {\n    this._propagationStopped = true;\n  }},\n\n  stopImmediatePropagation: { value: function stopImmediatePropagation() {\n    this._propagationStopped = true;\n    this._immediatePropagationStopped = true;\n  }},\n\n  preventDefault: { value: function preventDefault() {\n    if (this.cancelable) this.defaultPrevented = true;\n  }},\n\n  initEvent: { value: function initEvent(type, bubbles, cancelable) {\n    this._initialized = true;\n    if (this._dispatching) return;\n\n    this._propagationStopped = false;\n    this._immediatePropagationStopped = false;\n    this.defaultPrevented = false;\n    this.isTrusted = false;\n\n    this.target = null;\n    this.type = type;\n    this.bubbles = bubbles;\n    this.cancelable = cancelable;\n  }},\n\n});\n","\"use strict\";\nvar Event = require('./Event');\n\nmodule.exports = UIEvent;\n\nfunction UIEvent() {\n  // Just use the superclass constructor to initialize\n  Event.call(this);\n  this.view = null; // FF uses the current window\n  this.detail = 0;\n}\nUIEvent.prototype = Object.create(Event.prototype, {\n  constructor: { value: UIEvent },\n  initUIEvent: { value: function(type, bubbles, cancelable, view, detail) {\n    this.initEvent(type, bubbles, cancelable);\n    this.view = view;\n    this.detail = detail;\n  }}\n});\n","\"use strict\";\nvar UIEvent = require('./UIEvent');\n\nmodule.exports = MouseEvent;\n\nfunction MouseEvent() {\n  // Just use the superclass constructor to initialize\n  UIEvent.call(this);\n\n  this.screenX = this.screenY = this.clientX = this.clientY = 0;\n  this.ctrlKey = this.altKey = this.shiftKey = this.metaKey = false;\n  this.button = 0;\n  this.buttons = 1;\n  this.relatedTarget = null;\n}\nMouseEvent.prototype = Object.create(UIEvent.prototype, {\n  constructor: { value: MouseEvent },\n  initMouseEvent: { value: function(type, bubbles, cancelable,\n    view, detail,\n    screenX, screenY, clientX, clientY,\n    ctrlKey, altKey, shiftKey, metaKey,\n    button, relatedTarget) {\n\n    this.initEvent(type, bubbles, cancelable, view, detail);\n    this.screenX = screenX;\n    this.screenY = screenY;\n    this.clientX = clientX;\n    this.clientY = clientY;\n    this.ctrlKey = ctrlKey;\n    this.altKey = altKey;\n    this.shiftKey = shiftKey;\n    this.metaKey = metaKey;\n    this.button = button;\n    switch(button) {\n    case 0: this.buttons = 1; break;\n    case 1: this.buttons = 4; break;\n    case 2: this.buttons = 2; break;\n    default: this.buttons = 0; break;\n    }\n    this.relatedTarget = relatedTarget;\n  }},\n\n  getModifierState: { value: function(key) {\n    switch(key) {\n    case \"Alt\": return this.altKey;\n    case \"Control\": return this.ctrlKey;\n    case \"Shift\": return this.shiftKey;\n    case \"Meta\": return this.metaKey;\n    default: return false;\n    }\n  }}\n});\n","\"use strict\";\nmodule.exports = DOMException;\n\nvar INDEX_SIZE_ERR = 1;\nvar HIERARCHY_REQUEST_ERR = 3;\nvar WRONG_DOCUMENT_ERR = 4;\nvar INVALID_CHARACTER_ERR = 5;\nvar NO_MODIFICATION_ALLOWED_ERR = 7;\nvar NOT_FOUND_ERR = 8;\nvar NOT_SUPPORTED_ERR = 9;\nvar INVALID_STATE_ERR = 11;\nvar SYNTAX_ERR = 12;\nvar INVALID_MODIFICATION_ERR = 13;\nvar NAMESPACE_ERR = 14;\nvar INVALID_ACCESS_ERR = 15;\nvar TYPE_MISMATCH_ERR = 17;\nvar SECURITY_ERR = 18;\nvar NETWORK_ERR = 19;\nvar ABORT_ERR = 20;\nvar URL_MISMATCH_ERR = 21;\nvar QUOTA_EXCEEDED_ERR = 22;\nvar TIMEOUT_ERR = 23;\nvar INVALID_NODE_TYPE_ERR = 24;\nvar DATA_CLONE_ERR = 25;\n\n// Code to name\nvar names = [\n  null,  // No error with code 0\n  'INDEX_SIZE_ERR',\n  null, // historical\n  'HIERARCHY_REQUEST_ERR',\n  'WRONG_DOCUMENT_ERR',\n  'INVALID_CHARACTER_ERR',\n  null, // historical\n  'NO_MODIFICATION_ALLOWED_ERR',\n  'NOT_FOUND_ERR',\n  'NOT_SUPPORTED_ERR',\n  'INUSE_ATTRIBUTE_ERR', // historical\n  'INVALID_STATE_ERR',\n  'SYNTAX_ERR',\n  'INVALID_MODIFICATION_ERR',\n  'NAMESPACE_ERR',\n  'INVALID_ACCESS_ERR',\n  null, // historical\n  'TYPE_MISMATCH_ERR',\n  'SECURITY_ERR',\n  'NETWORK_ERR',\n  'ABORT_ERR',\n  'URL_MISMATCH_ERR',\n  'QUOTA_EXCEEDED_ERR',\n  'TIMEOUT_ERR',\n  'INVALID_NODE_TYPE_ERR',\n  'DATA_CLONE_ERR',\n];\n\n// Code to message\n// These strings are from the 13 May 2011 Editor's Draft of DOM Core.\n// http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html\n// Copyright © 2011 W3C® (MIT, ERCIM, Keio), All Rights Reserved.\n// Used under the terms of the W3C Document License:\n// http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231\nvar messages = [\n  null,  // No error with code 0\n  'INDEX_SIZE_ERR (1): the index is not in the allowed range',\n  null,\n  'HIERARCHY_REQUEST_ERR (3): the operation would yield an incorrect nodes model',\n  'WRONG_DOCUMENT_ERR (4): the object is in the wrong Document, a call to importNode is required',\n  'INVALID_CHARACTER_ERR (5): the string contains invalid characters',\n  null,\n  'NO_MODIFICATION_ALLOWED_ERR (7): the object can not be modified',\n  'NOT_FOUND_ERR (8): the object can not be found here',\n  'NOT_SUPPORTED_ERR (9): this operation is not supported',\n  'INUSE_ATTRIBUTE_ERR (10): setAttributeNode called on owned Attribute',\n  'INVALID_STATE_ERR (11): the object is in an invalid state',\n  'SYNTAX_ERR (12): the string did not match the expected pattern',\n  'INVALID_MODIFICATION_ERR (13): the object can not be modified in this way',\n  'NAMESPACE_ERR (14): the operation is not allowed by Namespaces in XML',\n  'INVALID_ACCESS_ERR (15): the object does not support the operation or argument',\n  null,\n  'TYPE_MISMATCH_ERR (17): the type of the object does not match the expected type',\n  'SECURITY_ERR (18): the operation is insecure',\n  'NETWORK_ERR (19): a network error occurred',\n  'ABORT_ERR (20): the user aborted an operation',\n  'URL_MISMATCH_ERR (21): the given URL does not match another URL',\n  'QUOTA_EXCEEDED_ERR (22): the quota has been exceeded',\n  'TIMEOUT_ERR (23): a timeout occurred',\n  'INVALID_NODE_TYPE_ERR (24): the supplied node is invalid or has an invalid ancestor for this operation',\n  'DATA_CLONE_ERR (25): the object can not be cloned.'\n];\n\n// Name to code\nvar constants = {\n  INDEX_SIZE_ERR: INDEX_SIZE_ERR,\n  DOMSTRING_SIZE_ERR: 2, // historical\n  HIERARCHY_REQUEST_ERR: HIERARCHY_REQUEST_ERR,\n  WRONG_DOCUMENT_ERR: WRONG_DOCUMENT_ERR,\n  INVALID_CHARACTER_ERR: INVALID_CHARACTER_ERR,\n  NO_DATA_ALLOWED_ERR: 6, // historical\n  NO_MODIFICATION_ALLOWED_ERR: NO_MODIFICATION_ALLOWED_ERR,\n  NOT_FOUND_ERR: NOT_FOUND_ERR,\n  NOT_SUPPORTED_ERR: NOT_SUPPORTED_ERR,\n  INUSE_ATTRIBUTE_ERR: 10, // historical\n  INVALID_STATE_ERR: INVALID_STATE_ERR,\n  SYNTAX_ERR: SYNTAX_ERR,\n  INVALID_MODIFICATION_ERR: INVALID_MODIFICATION_ERR,\n  NAMESPACE_ERR: NAMESPACE_ERR,\n  INVALID_ACCESS_ERR: INVALID_ACCESS_ERR,\n  VALIDATION_ERR: 16, // historical\n  TYPE_MISMATCH_ERR: TYPE_MISMATCH_ERR,\n  SECURITY_ERR: SECURITY_ERR,\n  NETWORK_ERR: NETWORK_ERR,\n  ABORT_ERR: ABORT_ERR,\n  URL_MISMATCH_ERR: URL_MISMATCH_ERR,\n  QUOTA_EXCEEDED_ERR: QUOTA_EXCEEDED_ERR,\n  TIMEOUT_ERR: TIMEOUT_ERR,\n  INVALID_NODE_TYPE_ERR: INVALID_NODE_TYPE_ERR,\n  DATA_CLONE_ERR: DATA_CLONE_ERR\n};\n\nfunction DOMException(code) {\n  Error.call(this);\n  Error.captureStackTrace(this, this.constructor);\n  this.code = code;\n  this.message = messages[code];\n  this.name = names[code];\n}\nDOMException.prototype.__proto__ = Error.prototype;\n\n// Initialize the constants on DOMException and DOMException.prototype\nfor(var c in constants) {\n  var v = { value: constants[c] };\n  Object.defineProperty(DOMException, c, v);\n  Object.defineProperty(DOMException.prototype, c, v);\n}\n","/*\n * This file defines Domino behaviour that can be externally configured.\n * To change these settings, set the relevant global property *before*\n * you call `require(\"domino\")`.\n */\n\nexports.isApiWritable = !globalThis.__domino_frozen__;\n","\"use strict\";\nvar DOMException = require('./DOMException');\nvar ERR = DOMException;\nvar isApiWritable = require(\"./config\").isApiWritable;\n\nexports.NAMESPACE = {\n  HTML: 'http://www.w3.org/1999/xhtml',\n  XML: 'http://www.w3.org/XML/1998/namespace',\n  XMLNS: 'http://www.w3.org/2000/xmlns/',\n  MATHML: 'http://www.w3.org/1998/Math/MathML',\n  SVG: 'http://www.w3.org/2000/svg',\n  XLINK: 'http://www.w3.org/1999/xlink'\n};\n\n//\n// Shortcut functions for throwing errors of various types.\n//\nexports.IndexSizeError = function() { throw new DOMException(ERR.INDEX_SIZE_ERR); };\nexports.HierarchyRequestError = function() { throw new DOMException(ERR.HIERARCHY_REQUEST_ERR); };\nexports.WrongDocumentError = function() { throw new DOMException(ERR.WRONG_DOCUMENT_ERR); };\nexports.InvalidCharacterError = function() { throw new DOMException(ERR.INVALID_CHARACTER_ERR); };\nexports.NoModificationAllowedError = function() { throw new DOMException(ERR.NO_MODIFICATION_ALLOWED_ERR); };\nexports.NotFoundError = function() { throw new DOMException(ERR.NOT_FOUND_ERR); };\nexports.NotSupportedError = function() { throw new DOMException(ERR.NOT_SUPPORTED_ERR); };\nexports.InvalidStateError = function() { throw new DOMException(ERR.INVALID_STATE_ERR); };\nexports.SyntaxError = function() { throw new DOMException(ERR.SYNTAX_ERR); };\nexports.InvalidModificationError = function() { throw new DOMException(ERR.INVALID_MODIFICATION_ERR); };\nexports.NamespaceError = function() { throw new DOMException(ERR.NAMESPACE_ERR); };\nexports.InvalidAccessError = function() { throw new DOMException(ERR.INVALID_ACCESS_ERR); };\nexports.TypeMismatchError = function() { throw new DOMException(ERR.TYPE_MISMATCH_ERR); };\nexports.SecurityError = function() { throw new DOMException(ERR.SECURITY_ERR); };\nexports.NetworkError = function() { throw new DOMException(ERR.NETWORK_ERR); };\nexports.AbortError = function() { throw new DOMException(ERR.ABORT_ERR); };\nexports.UrlMismatchError = function() { throw new DOMException(ERR.URL_MISMATCH_ERR); };\nexports.QuotaExceededError = function() { throw new DOMException(ERR.QUOTA_EXCEEDED_ERR); };\nexports.TimeoutError = function() { throw new DOMException(ERR.TIMEOUT_ERR); };\nexports.InvalidNodeTypeError = function() { throw new DOMException(ERR.INVALID_NODE_TYPE_ERR); };\nexports.DataCloneError = function() { throw new DOMException(ERR.DATA_CLONE_ERR); };\n\nexports.nyi = function() {\n  throw new Error(\"NotYetImplemented\");\n};\n\nexports.shouldOverride = function() {\n  throw new Error(\"Abstract function; should be overriding in subclass.\");\n};\n\nexports.assert = function(expr, msg) {\n  if (!expr) {\n    throw new Error(\"Assertion failed: \" + (msg || \"\") + \"\\n\" + new Error().stack);\n  }\n};\n\nexports.expose = function(src, c) {\n  for (var n in src) {\n    Object.defineProperty(c.prototype, n, { value: src[n], writable: isApiWritable });\n  }\n};\n\nexports.merge = function(a, b) {\n  for (var n in b) {\n    a[n] = b[n];\n  }\n};\n\n// Compare two nodes based on their document order. This function is intended\n// to be passed to sort(). Assumes that the array being sorted does not\n// contain duplicates.  And that all nodes are connected and comparable.\n// Clever code by ppk via jeresig.\nexports.documentOrder = function(n,m) {\n  /* jshint bitwise: false */\n  return 3 - (n.compareDocumentPosition(m) & 6);\n};\n\nexports.toASCIILowerCase = function(s) {\n  return s.replace(/[A-Z]+/g, function(c) {\n    return c.toLowerCase();\n  });\n};\n\nexports.toASCIIUpperCase = function(s) {\n  return s.replace(/[a-z]+/g, function(c) {\n    return c.toUpperCase();\n  });\n};\n","\"use strict\";\nvar Event = require('./Event');\nvar MouseEvent = require('./MouseEvent');\nvar utils = require('./utils');\n\nmodule.exports = EventTarget;\n\nfunction EventTarget() {}\n\nEventTarget.prototype = {\n  // XXX\n  // See WebIDL §4.8 for details on object event handlers\n  // and how they should behave.  We actually have to accept\n  // any object to addEventListener... Can't type check it.\n  // on registration.\n\n  // XXX:\n  // Capturing event listeners are sort of rare.  I think I can optimize\n  // them so that dispatchEvent can skip the capturing phase (or much of\n  // it).  Each time a capturing listener is added, increment a flag on\n  // the target node and each of its ancestors.  Decrement when removed.\n  // And update the counter when nodes are added and removed from the\n  // tree as well.  Then, in dispatch event, the capturing phase can\n  // abort if it sees any node with a zero count.\n  addEventListener: function addEventListener(type, listener, capture) {\n    if (!listener) return;\n    if (capture === undefined) capture = false;\n    if (!this._listeners) this._listeners = Object.create(null);\n    if (!this._listeners[type]) this._listeners[type] = [];\n    var list = this._listeners[type];\n\n    // If this listener has already been registered, just return\n    for(var i = 0, n = list.length; i < n; i++) {\n      var l = list[i];\n      if (l.listener === listener && l.capture === capture)\n        return;\n    }\n\n    // Add an object to the list of listeners\n    var obj = { listener: listener, capture: capture };\n    if (typeof listener === 'function') obj.f = listener;\n    list.push(obj);\n  },\n\n  removeEventListener: function removeEventListener(type,\n                            listener,\n                            capture) {\n    if (capture === undefined) capture = false;\n    if (this._listeners) {\n      var list = this._listeners[type];\n      if (list) {\n        // Find the listener in the list and remove it\n        for(var i = 0, n = list.length; i < n; i++) {\n          var l = list[i];\n          if (l.listener === listener && l.capture === capture) {\n            if (list.length === 1) {\n              this._listeners[type] = undefined;\n            }\n            else {\n              list.splice(i, 1);\n            }\n            return;\n          }\n        }\n      }\n    }\n  },\n\n  // This is the public API for dispatching untrusted public events.\n  // See _dispatchEvent for the implementation\n  dispatchEvent: function dispatchEvent(event) {\n    // Dispatch an untrusted event\n    return this._dispatchEvent(event, false);\n  },\n\n  //\n  // See DOMCore §4.4\n  // XXX: I'll probably need another version of this method for\n  // internal use, one that does not set isTrusted to false.\n  // XXX: see Document._dispatchEvent: perhaps that and this could\n  // call a common internal function with different settings of\n  // a trusted boolean argument\n  //\n  // XXX:\n  // The spec has changed in how to deal with handlers registered\n  // on idl or content attributes rather than with addEventListener.\n  // Used to say that they always ran first.  That's how webkit does it\n  // Spec now says that they run in a position determined by\n  // when they were first set.  FF does it that way.  See:\n  // http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#event-handlers\n  //\n  _dispatchEvent: function _dispatchEvent(event, trusted) {\n    if (typeof trusted !== 'boolean') trusted = false;\n    function invoke(target, event) {\n      var type = event.type, phase = event.eventPhase;\n      event.currentTarget = target;\n\n      // If there was an individual handler defined, invoke it first\n      // XXX: see comment above: this shouldn't always be first.\n      if (phase !== Event.CAPTURING_PHASE &&\n        target._handlers && target._handlers[type])\n      {\n        var handler = target._handlers[type];\n        var rv;\n        if (typeof handler === 'function') {\n          rv=handler.call(event.currentTarget, event);\n        }\n        else {\n          var f = handler.handleEvent;\n          if (typeof f !== 'function')\n            throw new TypeError('handleEvent property of ' +\n                                'event handler object is' +\n                                'not a function.');\n          rv=f.call(handler, event);\n        }\n\n        switch(event.type) {\n        case 'mouseover':\n          if (rv === true)  // Historical baggage\n            event.preventDefault();\n          break;\n        case 'beforeunload':\n          // XXX: eventually we need a special case here\n          /* falls through */\n        default:\n          if (rv === false)\n            event.preventDefault();\n          break;\n        }\n      }\n\n      // Now invoke list list of listeners for this target and type\n      var list = target._listeners && target._listeners[type];\n      if (!list) return;\n      list = list.slice();\n      for(var i = 0, n = list.length; i < n; i++) {\n        if (event._immediatePropagationStopped) return;\n        var l = list[i];\n        if ((phase === Event.CAPTURING_PHASE && !l.capture) ||\n          (phase === Event.BUBBLING_PHASE && l.capture))\n          continue;\n        if (l.f) {\n          l.f.call(event.currentTarget, event);\n        }\n        else {\n          var fn = l.listener.handleEvent;\n          if (typeof fn !== 'function')\n            throw new TypeError('handleEvent property of event listener object is not a function.');\n          fn.call(l.listener, event);\n        }\n      }\n    }\n\n    if (!event._initialized || event._dispatching) utils.InvalidStateError();\n    event.isTrusted = trusted;\n\n    // Begin dispatching the event now\n    event._dispatching = true;\n    event.target = this;\n\n    // Build the list of targets for the capturing and bubbling phases\n    // XXX: we'll eventually have to add Window to this list.\n    var ancestors = [];\n    for(var n = this.parentNode; n; n = n.parentNode)\n      ancestors.push(n);\n\n    // Capturing phase\n    event.eventPhase = Event.CAPTURING_PHASE;\n    for(var i = ancestors.length-1; i >= 0; i--) {\n      invoke(ancestors[i], event);\n      if (event._propagationStopped) break;\n    }\n\n    // At target phase\n    if (!event._propagationStopped) {\n      event.eventPhase = Event.AT_TARGET;\n      invoke(this, event);\n    }\n\n    // Bubbling phase\n    if (event.bubbles && !event._propagationStopped) {\n      event.eventPhase = Event.BUBBLING_PHASE;\n      for(var ii = 0, nn = ancestors.length; ii < nn; ii++) {\n        invoke(ancestors[ii], event);\n        if (event._propagationStopped) break;\n      }\n    }\n\n    event._dispatching = false;\n    event.eventPhase = Event.AT_TARGET;\n    event.currentTarget = null;\n\n    // Deal with mouse events and figure out when\n    // a click has happened\n    if (trusted && !event.defaultPrevented && event instanceof MouseEvent) {\n      switch(event.type) {\n      case 'mousedown':\n        this._armed = {\n          x: event.clientX,\n          y: event.clientY,\n          t: event.timeStamp\n        };\n        break;\n      case 'mouseout':\n      case 'mouseover':\n        this._armed = null;\n        break;\n      case 'mouseup':\n        if (this._isClick(event)) this._doClick(event);\n        this._armed = null;\n        break;\n      }\n    }\n\n\n\n    return !event.defaultPrevented;\n  },\n\n  // Determine whether a click occurred\n  // XXX We don't support double clicks for now\n  _isClick: function(event) {\n    return (this._armed !== null &&\n        event.type === 'mouseup' &&\n        event.isTrusted &&\n        event.button === 0 &&\n        event.timeStamp - this._armed.t < 1000 &&\n        Math.abs(event.clientX - this._armed.x) < 10 &&\n        Math.abs(event.clientY - this._armed.Y) < 10);\n  },\n\n  // Clicks are handled like this:\n  // http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#interactive-content-0\n  //\n  // Note that this method is similar to the HTMLElement.click() method\n  // The event argument must be the trusted mouseup event\n  _doClick: function(event) {\n    if (this._click_in_progress) return;\n    this._click_in_progress = true;\n\n    // Find the nearest enclosing element that is activatable\n    // An element is activatable if it has a\n    // _post_click_activation_steps hook\n    var activated = this;\n    while(activated && !activated._post_click_activation_steps)\n      activated = activated.parentNode;\n\n    if (activated && activated._pre_click_activation_steps) {\n      activated._pre_click_activation_steps();\n    }\n\n    var click = this.ownerDocument.createEvent('MouseEvent');\n    click.initMouseEvent('click', true, true,\n      this.ownerDocument.defaultView, 1,\n      event.screenX, event.screenY,\n      event.clientX, event.clientY,\n      event.ctrlKey, event.altKey,\n      event.shiftKey, event.metaKey,\n      event.button, null);\n\n    var result = this._dispatchEvent(click, true);\n\n    if (activated) {\n      if (result) {\n        // This is where hyperlinks get followed, for example.\n        if (activated._post_click_activation_steps)\n          activated._post_click_activation_steps(click);\n      }\n      else {\n        if (activated._cancelled_activation_steps)\n          activated._cancelled_activation_steps();\n      }\n    }\n  },\n\n  //\n  // An event handler is like an event listener, but it registered\n  // by setting an IDL or content attribute like onload or onclick.\n  // There can only be one of these at a time for any event type.\n  // This is an internal method for the attribute accessors and\n  // content attribute handlers that need to register events handlers.\n  // The type argument is the same as in addEventListener().\n  // The handler argument is the same as listeners in addEventListener:\n  // it can be a function or an object. Pass null to remove any existing\n  // handler.  Handlers are always invoked before any listeners of\n  // the same type.  They are not invoked during the capturing phase\n  // of event dispatch.\n  //\n  _setEventHandler: function _setEventHandler(type, handler) {\n    if (!this._handlers) this._handlers = Object.create(null);\n    this._handlers[type] = handler;\n  },\n\n  _getEventHandler: function _getEventHandler(type) {\n    return (this._handlers && this._handlers[type]) || null;\n  }\n\n};\n","\"use strict\";\nvar utils = require('./utils');\n\nvar LinkedList = module.exports = {\n    // basic validity tests on a circular linked list a\n    valid: function(a) {\n        utils.assert(a, \"list falsy\");\n        utils.assert(a._previousSibling, \"previous falsy\");\n        utils.assert(a._nextSibling, \"next falsy\");\n        // xxx check that list is actually circular\n        return true;\n    },\n    // insert a before b\n    insertBefore: function(a, b) {\n        utils.assert(LinkedList.valid(a) && LinkedList.valid(b));\n        var a_first = a, a_last = a._previousSibling;\n        var b_first = b, b_last = b._previousSibling;\n        a_first._previousSibling = b_last;\n        a_last._nextSibling = b_first;\n        b_last._nextSibling = a_first;\n        b_first._previousSibling = a_last;\n        utils.assert(LinkedList.valid(a) && LinkedList.valid(b));\n    },\n    // replace a single node a with a list b (which could be null)\n    replace: function(a, b) {\n        utils.assert(LinkedList.valid(a) && (b===null || LinkedList.valid(b)));\n        if (b!==null) {\n            LinkedList.insertBefore(b, a);\n        }\n        LinkedList.remove(a);\n        utils.assert(LinkedList.valid(a) && (b===null || LinkedList.valid(b)));\n    },\n    // remove single node a from its list\n    remove: function(a) {\n        utils.assert(LinkedList.valid(a));\n        var prev = a._previousSibling;\n        if (prev === a) { return; }\n        var next = a._nextSibling;\n        prev._nextSibling = next;\n        next._previousSibling = prev;\n        a._previousSibling = a._nextSibling = a;\n        utils.assert(LinkedList.valid(a));\n    }\n};\n","\"use strict\";\nmodule.exports = {\n  // NOTE: The `serializeOne()` function used to live on the `Node.prototype`\n  // as a private method `Node#_serializeOne(child)`, however that requires\n  // a megamorphic property access `this._serializeOne` just to get to the\n  // method, and this is being done on lots of different `Node` subclasses,\n  // which puts a lot of pressure on V8's megamorphic stub cache. So by\n  // moving the helper off of the `Node.prototype` and into a separate\n  // function in this helper module, we get a monomorphic property access\n  // `NodeUtils.serializeOne` to get to the function and reduce pressure\n  // on the megamorphic stub cache.\n  // See https://github.com/fgnass/domino/pull/142 for more information.\n  serializeOne: serializeOne,\n\n  // Export util functions so that we can run extra test for them.\n  // Note: we prefix function names with `ɵ`, similar to what we do\n  // with internal functions in Angular packages.\n  ɵescapeMatchingClosingTag: escapeMatchingClosingTag,\n  ɵescapeClosingCommentTag: escapeClosingCommentTag,\n  ɵescapeProcessingInstructionContent: escapeProcessingInstructionContent\n};\n\nvar utils = require('./utils');\nvar NAMESPACE = utils.NAMESPACE;\n\nvar hasRawContent = {\n  STYLE: true,\n  SCRIPT: true,\n  XMP: true,\n  IFRAME: true,\n  NOEMBED: true,\n  NOFRAMES: true,\n  PLAINTEXT: true\n};\n\nvar emptyElements = {\n  area: true,\n  base: true,\n  basefont: true,\n  bgsound: true,\n  br: true,\n  col: true,\n  embed: true,\n  frame: true,\n  hr: true,\n  img: true,\n  input: true,\n  keygen: true,\n  link: true,\n  meta: true,\n  param: true,\n  source: true,\n  track: true,\n  wbr: true\n};\n\nvar extraNewLine = {\n  /* Removed in https://github.com/whatwg/html/issues/944\n  pre: true,\n  textarea: true,\n  listing: true\n  */\n};\n\nconst ESCAPE_REGEXP = /[&<>\\u00A0]/g;\nconst ESCAPE_ATTR_REGEXP = /[&\"<>\\u00A0]/g;\n\nfunction escape(s) {\n  if (!ESCAPE_REGEXP.test(s)) {\n    // nothing to do, fast path\n    return s;\n  }\n\n  return s.replace(ESCAPE_REGEXP, (c) => {\n    switch (c) {\n      case \"&\":\n        return \"&amp;\";\n      case \"<\":\n        return \"&lt;\";\n      case \">\":\n        return \"&gt;\";\n      case \"\\u00A0\":\n        return \"&nbsp;\";\n    }\n  });\n}\n\nfunction escapeAttr(s) {\n  if (!ESCAPE_ATTR_REGEXP.test(s)) {\n    // nothing to do, fast path\n    return s;\n  }\n\n  return s.replace(ESCAPE_ATTR_REGEXP, (c) => {\n    switch (c) {\n      case \"<\":\n        return \"&lt;\";\n      case \">\":\n        return \"&gt;\";\n      case \"&\":\n        return \"&amp;\";\n      case '\"':\n        return \"&quot;\";\n      case \"\\u00A0\":\n        return \"&nbsp;\";\n    }\n  });\n}\n\nfunction attrname(a) {\n  var ns = a.namespaceURI;\n  if (!ns)\n    return a.localName;\n  if (ns === NAMESPACE.XML)\n    return 'xml:' + a.localName;\n  if (ns === NAMESPACE.XLINK)\n    return 'xlink:' + a.localName;\n\n  if (ns === NAMESPACE.XMLNS) {\n    if (a.localName === 'xmlns') return 'xmlns';\n    else return 'xmlns:' + a.localName;\n  }\n  return a.name;\n}\n\n/**\n * Escapes matching closing tag in a raw text.\n *\n * For example, given `<style>#text(</style><script></script>)</style>`,\n * the parent tag would by \"style\" and the raw text is\n * \"</style><script></script>\". If we come across a matching closing tag\n * (in out case `</style>`) - replace `<` with `&lt;` to avoid unexpected\n * and unsafe behavior after de-serialization.\n */\nfunction escapeMatchingClosingTag(rawText, parentTag) {\n  const parentClosingTag = '</' + parentTag;\n  if (!rawText.toLowerCase().includes(parentClosingTag)) {\n    return rawText; // fast path\n  }\n  const result = [...rawText];\n  const matches = rawText.matchAll(new RegExp(parentClosingTag, 'ig'));\n  for (const match of matches) {\n    result[match.index] = '&lt;';\n  }\n  return result.join('');\n}\n\nconst CLOSING_COMMENT_REGEXP = /--!?>/;\n\n/**\n * Escapes closing comment tag in a comment content.\n *\n * For example, given `#comment('-->')`, the content of a comment would be\n * updated to `--&gt;` to avoid unexpected and unsafe behavior after\n * de-serialization.\n */\nfunction escapeClosingCommentTag(rawContent) {\n  if (!CLOSING_COMMENT_REGEXP.test(rawContent)) {\n    return rawContent; // fast path\n  }\n  return rawContent.replace(/(--\\!?)>/g, '$1&gt;');\n}\n\n/**\n * Escapes processing instruction content by replacing `>` with `&gt`.\n */\nfunction escapeProcessingInstructionContent(rawContent) {\n  return rawContent.includes('>')\n    ? rawContent.replaceAll('>', '&gt;')\n    : rawContent;\n}\n\nfunction serializeOne(kid, parent) {\n  var s = '';\n  switch(kid.nodeType) {\n    case 1: //ELEMENT_NODE\n      var ns = kid.namespaceURI;\n      var html = ns === NAMESPACE.HTML;\n      var tagname = (html || ns === NAMESPACE.SVG || ns === NAMESPACE.MATHML) ? kid.localName : kid.tagName;\n\n      s += '<' + tagname;\n\n      for(var j = 0, k = kid._numattrs; j < k; j++) {\n        var a = kid._attr(j);\n        s += ' ' + attrname(a);\n        if (a.value !== undefined) s += '=\"' + escapeAttr(a.value) + '\"';\n      }\n      s += '>';\n\n      if (!(html && emptyElements[tagname])) {\n        var ss = kid.serialize();\n        // If an element can have raw content, this content may\n        // potentially require escaping to avoid XSS.\n        if (hasRawContent[tagname.toUpperCase()]) {\n          ss = escapeMatchingClosingTag(ss, tagname);\n        }\n        if (html && extraNewLine[tagname] && ss.charAt(0)==='\\n') s += '\\n';\n        // Serialize children and add end tag for all others\n        s += ss;\n        s += '</' + tagname + '>';\n      }\n      break;\n    case 3: //TEXT_NODE\n    case 4: //CDATA_SECTION_NODE\n      var parenttag;\n      if (parent.nodeType === 1 /*ELEMENT_NODE*/ &&\n        parent.namespaceURI === NAMESPACE.HTML)\n        parenttag = parent.tagName;\n      else\n        parenttag = '';\n\n      if (hasRawContent[parenttag] ||\n          (parenttag==='NOSCRIPT' && parent.ownerDocument._scripting_enabled)) {\n        s += kid.data;\n      } else {\n        s += escape(kid.data);\n      }\n      break;\n    case 8: //COMMENT_NODE\n      s += '<!--' + escapeClosingCommentTag(kid.data) + '-->';\n      break;\n    case 7: //PROCESSING_INSTRUCTION_NODE\n      const content = escapeProcessingInstructionContent(kid.data);\n      s += '<?' + kid.target + ' ' + content + '?>';\n      break;\n    case 10: //DOCUMENT_TYPE_NODE\n      s += '<!DOCTYPE ' + kid.name;\n\n      if (false) {\n        // Latest HTML serialization spec omits the public/system ID\n        if (kid.publicID) {\n          s += ' PUBLIC \"' + kid.publicId + '\"';\n        }\n\n        if (kid.systemId) {\n          s += ' \"' + kid.systemId + '\"';\n        }\n      }\n\n      s += '>';\n      break;\n    default:\n      utils.InvalidStateError();\n  }\n  return s;\n}\n","\"use strict\";\nmodule.exports = Node;\n\nvar EventTarget = require('./EventTarget');\nvar LinkedList = require('./LinkedList');\nvar NodeUtils = require('./NodeUtils');\nvar utils = require('./utils');\n\n// All nodes have a nodeType and an ownerDocument.\n// Once inserted, they also have a parentNode.\n// This is an abstract class; all nodes in a document are instances\n// of a subtype, so all the properties are defined by more specific\n// constructors.\nfunction Node() {\n  EventTarget.call(this);\n  this.parentNode = null;\n  this._nextSibling = this._previousSibling = this;\n  this._index = undefined;\n}\n\nvar ELEMENT_NODE                = Node.ELEMENT_NODE = 1;\nvar ATTRIBUTE_NODE              = Node.ATTRIBUTE_NODE = 2;\nvar TEXT_NODE                   = Node.TEXT_NODE = 3;\nvar CDATA_SECTION_NODE          = Node.CDATA_SECTION_NODE = 4;\nvar ENTITY_REFERENCE_NODE       = Node.ENTITY_REFERENCE_NODE = 5;\nvar ENTITY_NODE                 = Node.ENTITY_NODE = 6;\nvar PROCESSING_INSTRUCTION_NODE = Node.PROCESSING_INSTRUCTION_NODE = 7;\nvar COMMENT_NODE                = Node.COMMENT_NODE = 8;\nvar DOCUMENT_NODE               = Node.DOCUMENT_NODE = 9;\nvar DOCUMENT_TYPE_NODE          = Node.DOCUMENT_TYPE_NODE = 10;\nvar DOCUMENT_FRAGMENT_NODE      = Node.DOCUMENT_FRAGMENT_NODE = 11;\nvar NOTATION_NODE               = Node.NOTATION_NODE = 12;\n\nvar DOCUMENT_POSITION_DISCONNECTED            = Node.DOCUMENT_POSITION_DISCONNECTED = 0x01;\nvar DOCUMENT_POSITION_PRECEDING               = Node.DOCUMENT_POSITION_PRECEDING = 0x02;\nvar DOCUMENT_POSITION_FOLLOWING               = Node.DOCUMENT_POSITION_FOLLOWING = 0x04;\nvar DOCUMENT_POSITION_CONTAINS                = Node.DOCUMENT_POSITION_CONTAINS = 0x08;\nvar DOCUMENT_POSITION_CONTAINED_BY            = Node.DOCUMENT_POSITION_CONTAINED_BY = 0x10;\nvar DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;\n\nNode.prototype = Object.create(EventTarget.prototype, {\n\n  // Node that are not inserted into the tree inherit a null parent\n\n  // XXX: the baseURI attribute is defined by dom core, but\n  // a correct implementation of it requires HTML features, so\n  // we'll come back to this later.\n  baseURI: { get: utils.nyi },\n\n  parentElement: { get: function() {\n    return (this.parentNode && this.parentNode.nodeType===ELEMENT_NODE) ? this.parentNode : null;\n  }},\n\n  hasChildNodes: { value: utils.shouldOverride },\n\n  firstChild: { get: utils.shouldOverride },\n\n  lastChild: { get: utils.shouldOverride },\n\n  isConnected: {\n    get: function () {\n      let node = this;\n      while (node != null) {\n        if (node.nodeType === Node.DOCUMENT_NODE) {\n          return true;\n        }\n\n        node = node.parentNode;\n        if (node != null && node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n          node = node.host;\n        }\n      }\n      return false;\n    },\n  },\n\n  previousSibling: { get: function() {\n    var parent = this.parentNode;\n    if (!parent) return null;\n    if (this === parent.firstChild) return null;\n    return this._previousSibling;\n  }},\n\n  nextSibling: { get: function() {\n    var parent = this.parentNode, next = this._nextSibling;\n    if (!parent) return null;\n    if (next === parent.firstChild) return null;\n    return next;\n  }},\n\n  textContent: {\n    // Should override for DocumentFragment/Element/Attr/Text/PI/Comment\n    get: function() { return null; },\n    set: function(v) { /* do nothing */ },\n  },\n\n  innerText: {\n    // Should override for DocumentFragment/Element/Attr/Text/PI/Comment\n    get: function() { return null; },\n    set: function(v) { /* do nothing */ },\n  },\n\n  _countChildrenOfType: { value: function(type) {\n    var sum = 0;\n    for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\n      if (kid.nodeType === type) sum++;\n    }\n    return sum;\n  }},\n\n  _ensureInsertValid: { value: function _ensureInsertValid(node, child, isPreinsert) {\n    var parent = this, i, kid;\n    if (!node.nodeType) throw new TypeError('not a node');\n    // 1. If parent is not a Document, DocumentFragment, or Element\n    // node, throw a HierarchyRequestError.\n    switch (parent.nodeType) {\n    case DOCUMENT_NODE:\n    case DOCUMENT_FRAGMENT_NODE:\n    case ELEMENT_NODE:\n      break;\n    default: utils.HierarchyRequestError();\n    }\n    // 2. If node is a host-including inclusive ancestor of parent,\n    // throw a HierarchyRequestError.\n    if (node.isAncestor(parent)) utils.HierarchyRequestError();\n    // 3. If child is not null and its parent is not parent, then\n    // throw a NotFoundError. (replaceChild omits the 'child is not null'\n    // and throws a TypeError here if child is null.)\n    if (child !== null || !isPreinsert) {\n      if (child.parentNode !== parent) utils.NotFoundError();\n    }\n    // 4. If node is not a DocumentFragment, DocumentType, Element,\n    // Text, ProcessingInstruction, or Comment node, throw a\n    // HierarchyRequestError.\n    switch (node.nodeType) {\n    case DOCUMENT_FRAGMENT_NODE:\n    case DOCUMENT_TYPE_NODE:\n    case ELEMENT_NODE:\n    case TEXT_NODE:\n    case PROCESSING_INSTRUCTION_NODE:\n    case COMMENT_NODE:\n      break;\n    default: utils.HierarchyRequestError();\n    }\n    // 5. If either node is a Text node and parent is a document, or\n    // node is a doctype and parent is not a document, throw a\n    // HierarchyRequestError.\n    // 6. If parent is a document, and any of the statements below, switched\n    // on node, are true, throw a HierarchyRequestError.\n    if (parent.nodeType === DOCUMENT_NODE) {\n      switch (node.nodeType) {\n      case TEXT_NODE:\n        utils.HierarchyRequestError();\n        break;\n      case DOCUMENT_FRAGMENT_NODE:\n        // 6a1. If node has more than one element child or has a Text\n        // node child.\n        if (node._countChildrenOfType(TEXT_NODE) > 0)\n          utils.HierarchyRequestError();\n        switch (node._countChildrenOfType(ELEMENT_NODE)) {\n        case 0:\n          break;\n        case 1:\n          // 6a2. Otherwise, if node has one element child and either\n          // parent has an element child, child is a doctype, or child\n          // is not null and a doctype is following child. [preinsert]\n          // 6a2. Otherwise, if node has one element child and either\n          // parent has an element child that is not child or a\n          // doctype is following child. [replaceWith]\n          if (child !== null /* always true here for replaceWith */) {\n            if (isPreinsert && child.nodeType === DOCUMENT_TYPE_NODE)\n              utils.HierarchyRequestError();\n            for (kid = child.nextSibling; kid !== null; kid = kid.nextSibling) {\n              if (kid.nodeType === DOCUMENT_TYPE_NODE)\n                utils.HierarchyRequestError();\n            }\n          }\n          i = parent._countChildrenOfType(ELEMENT_NODE);\n          if (isPreinsert) {\n            // \"parent has an element child\"\n            if (i > 0)\n              utils.HierarchyRequestError();\n          } else {\n            // \"parent has an element child that is not child\"\n            if (i > 1 || (i === 1 && child.nodeType !== ELEMENT_NODE))\n              utils.HierarchyRequestError();\n          }\n          break;\n        default: // 6a1, continued. (more than one Element child)\n          utils.HierarchyRequestError();\n        }\n        break;\n      case ELEMENT_NODE:\n        // 6b. parent has an element child, child is a doctype, or\n        // child is not null and a doctype is following child. [preinsert]\n        // 6b. parent has an element child that is not child or a\n        // doctype is following child. [replaceWith]\n        if (child !== null /* always true here for replaceWith */) {\n          if (isPreinsert && child.nodeType === DOCUMENT_TYPE_NODE)\n            utils.HierarchyRequestError();\n          for (kid = child.nextSibling; kid !== null; kid = kid.nextSibling) {\n            if (kid.nodeType === DOCUMENT_TYPE_NODE)\n              utils.HierarchyRequestError();\n          }\n        }\n        i = parent._countChildrenOfType(ELEMENT_NODE);\n        if (isPreinsert) {\n          // \"parent has an element child\"\n          if (i > 0)\n            utils.HierarchyRequestError();\n        } else {\n          // \"parent has an element child that is not child\"\n          if (i > 1 || (i === 1 && child.nodeType !== ELEMENT_NODE))\n            utils.HierarchyRequestError();\n        }\n        break;\n      case DOCUMENT_TYPE_NODE:\n        // 6c. parent has a doctype child, child is non-null and an\n        // element is preceding child, or child is null and parent has\n        // an element child. [preinsert]\n        // 6c. parent has a doctype child that is not child, or an\n        // element is preceding child. [replaceWith]\n        if (child === null) {\n          if (parent._countChildrenOfType(ELEMENT_NODE))\n            utils.HierarchyRequestError();\n        } else {\n          // child is always non-null for [replaceWith] case\n          for (kid = parent.firstChild; kid !== null; kid = kid.nextSibling) {\n            if (kid === child) break;\n            if (kid.nodeType === ELEMENT_NODE)\n              utils.HierarchyRequestError();\n          }\n        }\n        i = parent._countChildrenOfType(DOCUMENT_TYPE_NODE);\n        if (isPreinsert) {\n          // \"parent has an doctype child\"\n          if (i > 0)\n            utils.HierarchyRequestError();\n        } else {\n          // \"parent has an doctype child that is not child\"\n          if (i > 1 || (i === 1 && child.nodeType !== DOCUMENT_TYPE_NODE))\n            utils.HierarchyRequestError();\n        }\n        break;\n      }\n    } else {\n      // 5, continued: (parent is not a document)\n      if (node.nodeType === DOCUMENT_TYPE_NODE) utils.HierarchyRequestError();\n    }\n  }},\n\n  insertBefore: { value: function insertBefore(node, child) {\n    var parent = this;\n    // 1. Ensure pre-insertion validity\n    parent._ensureInsertValid(node, child, true);\n    // 2. Let reference child be child.\n    var refChild = child;\n    // 3. If reference child is node, set it to node's next sibling\n    if (refChild === node) { refChild = node.nextSibling; }\n    // 4. Adopt node into parent's node document.\n    parent.doc.adoptNode(node);\n    // 5. Insert node into parent before reference child.\n    node._insertOrReplace(parent, refChild, false);\n    // 6. Return node\n    return node;\n  }},\n\n\n  appendChild: { value: function(child) {\n    // This invokes _appendChild after doing validity checks.\n    return this.insertBefore(child, null);\n  }},\n\n  _appendChild: { value: function(child) {\n    child._insertOrReplace(this, null, false);\n  }},\n\n  removeChild: { value: function removeChild(child) {\n    var parent = this;\n    if (!child.nodeType) throw new TypeError('not a node');\n    if (child.parentNode !== parent) utils.NotFoundError();\n    child.remove();\n    return child;\n  }},\n\n  // To replace a `child` with `node` within a `parent` (this)\n  replaceChild: { value: function replaceChild(node, child) {\n    var parent = this;\n    // Ensure validity (slight differences from pre-insertion check)\n    parent._ensureInsertValid(node, child, false);\n    // Adopt node into parent's node document.\n    if (node.doc !== parent.doc) {\n      // XXX adoptNode has side-effect of removing node from its parent\n      // and generating a mutation event, thus causing the _insertOrReplace\n      // to generate two deletes and an insert instead of a 'move'\n      // event.  It looks like the new MutationObserver stuff avoids\n      // this problem, but for now let's only adopt (ie, remove `node`\n      // from its parent) here if we need to.\n      parent.doc.adoptNode(node);\n    }\n    // Do the replace.\n    node._insertOrReplace(parent, child, true);\n    return child;\n  }},\n\n  // See: http://ejohn.org/blog/comparing-document-position/\n  contains: { value: function contains(node) {\n    if (node === null) { return false; }\n    if (this === node) { return true; /* inclusive descendant */ }\n    /* jshint bitwise: false */\n    return (this.compareDocumentPosition(node) &\n            DOCUMENT_POSITION_CONTAINED_BY) !== 0;\n  }},\n\n  compareDocumentPosition: { value: function compareDocumentPosition(that){\n    // Basic algorithm for finding the relative position of two nodes.\n    // Make a list the ancestors of each node, starting with the\n    // document element and proceeding down to the nodes themselves.\n    // Then, loop through the lists, looking for the first element\n    // that differs.  The order of those two elements give the\n    // order of their descendant nodes.  Or, if one list is a prefix\n    // of the other one, then that node contains the other.\n\n    if (this === that) return 0;\n\n    // If they're not owned by the same document or if one is rooted\n    // and one is not, then they're disconnected.\n    if (this.doc !== that.doc ||\n      this.rooted !== that.rooted)\n      return (DOCUMENT_POSITION_DISCONNECTED +\n          DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC);\n\n    // Get arrays of ancestors for this and that\n    var these = [], those = [];\n    for(var n = this; n !== null; n = n.parentNode) these.push(n);\n    for(n = that; n !== null; n = n.parentNode) those.push(n);\n    these.reverse();  // So we start with the outermost\n    those.reverse();\n\n    if (these[0] !== those[0]) // No common ancestor\n      return (DOCUMENT_POSITION_DISCONNECTED +\n          DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC);\n\n    n = Math.min(these.length, those.length);\n    for(var i = 1; i < n; i++) {\n      if (these[i] !== those[i]) {\n        // We found two different ancestors, so compare\n        // their positions\n        if (these[i].index < those[i].index)\n          return DOCUMENT_POSITION_FOLLOWING;\n        else\n          return DOCUMENT_POSITION_PRECEDING;\n      }\n    }\n\n    // If we get to here, then one of the nodes (the one with the\n    // shorter list of ancestors) contains the other one.\n    if (these.length < those.length)\n      return (DOCUMENT_POSITION_FOLLOWING +\n          DOCUMENT_POSITION_CONTAINED_BY);\n    else\n      return (DOCUMENT_POSITION_PRECEDING +\n          DOCUMENT_POSITION_CONTAINS);\n  }},\n\n  isSameNode: {value : function isSameNode(node) {\n    return this === node;\n  }},\n\n\n  // This method implements the generic parts of node equality testing\n  // and defers to the (non-recursive) type-specific isEqual() method\n  // defined by subclasses\n  isEqualNode: { value: function isEqualNode(node) {\n    if (!node) return false;\n    if (node.nodeType !== this.nodeType) return false;\n\n    // Check type-specific properties for equality\n    if (!this.isEqual(node)) return false;\n\n    // Now check children for number and equality\n    for (var c1 = this.firstChild, c2 = node.firstChild;\n         c1 && c2;\n         c1 = c1.nextSibling, c2 = c2.nextSibling) {\n      if (!c1.isEqualNode(c2)) return false;\n    }\n    return c1 === null && c2 === null;\n  }},\n\n  // This method delegates shallow cloning to a clone() method\n  // that each concrete subclass must implement\n  cloneNode: { value: function(deep) {\n    // Clone this node\n    var clone = this.clone();\n\n    // Handle the recursive case if necessary\n    if (deep) {\n      for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\n        clone._appendChild(kid.cloneNode(true));\n      }\n    }\n\n    return clone;\n  }},\n\n  lookupPrefix: { value: function lookupPrefix(ns) {\n    var e;\n    if (ns === '' || ns === null || ns === undefined) return null;\n    switch(this.nodeType) {\n    case ELEMENT_NODE:\n      return this._lookupNamespacePrefix(ns, this);\n    case DOCUMENT_NODE:\n      e = this.documentElement;\n      return e ? e.lookupPrefix(ns) : null;\n    case ENTITY_NODE:\n    case NOTATION_NODE:\n    case DOCUMENT_FRAGMENT_NODE:\n    case DOCUMENT_TYPE_NODE:\n      return null;\n    case ATTRIBUTE_NODE:\n      e = this.ownerElement;\n      return e ? e.lookupPrefix(ns) : null;\n    default:\n      e = this.parentElement;\n      return e ? e.lookupPrefix(ns) : null;\n    }\n  }},\n\n\n  lookupNamespaceURI: {value: function lookupNamespaceURI(prefix) {\n    if (prefix === '' || prefix === undefined) { prefix = null; }\n    var e;\n    switch(this.nodeType) {\n    case ELEMENT_NODE:\n      return utils.shouldOverride();\n    case DOCUMENT_NODE:\n      e = this.documentElement;\n      return e ? e.lookupNamespaceURI(prefix) : null;\n    case ENTITY_NODE:\n    case NOTATION_NODE:\n    case DOCUMENT_TYPE_NODE:\n    case DOCUMENT_FRAGMENT_NODE:\n      return null;\n    case ATTRIBUTE_NODE:\n      e = this.ownerElement;\n      return e ? e.lookupNamespaceURI(prefix) : null;\n    default:\n      e = this.parentElement;\n      return e ? e.lookupNamespaceURI(prefix) : null;\n    }\n  }},\n\n  isDefaultNamespace: { value: function isDefaultNamespace(ns) {\n    if (ns === '' || ns === undefined) { ns = null; }\n    var defaultNamespace = this.lookupNamespaceURI(null);\n    return (defaultNamespace === ns);\n  }},\n\n  // Utility methods for nodes.  Not part of the DOM\n\n  // Return the index of this node in its parent.\n  // Throw if no parent, or if this node is not a child of its parent\n  index: { get: function() {\n    var parent = this.parentNode;\n    if (this === parent.firstChild) return 0; // fast case\n    var kids = parent.childNodes;\n    if (this._index === undefined || kids[this._index] !== this) {\n      // Ensure that we don't have an O(N^2) blowup if none of the\n      // kids have defined indices yet and we're traversing via\n      // nextSibling or previousSibling\n      for (var i=0; i<kids.length; i++) {\n        kids[i]._index = i;\n      }\n      utils.assert(kids[this._index] === this);\n    }\n    return this._index;\n  }},\n\n  // Return true if this node is equal to or is an ancestor of that node\n  // Note that nodes are considered to be ancestors of themselves\n  isAncestor: { value: function(that) {\n    // If they belong to different documents, then they're unrelated.\n    if (this.doc !== that.doc) return false;\n    // If one is rooted and one isn't then they're not related\n    if (this.rooted !== that.rooted) return false;\n\n    // Otherwise check by traversing the parentNode chain\n    for(var e = that; e; e = e.parentNode) {\n      if (e === this) return true;\n    }\n    return false;\n  }},\n\n  // DOMINO Changed the behavior to conform with the specs. See:\n  // https://groups.google.com/d/topic/mozilla.dev.platform/77sIYcpdDmc/discussion\n  ensureSameDoc: { value: function(that) {\n    if (that.ownerDocument === null) {\n      that.ownerDocument = this.doc;\n    }\n    else if(that.ownerDocument !== this.doc) {\n      utils.WrongDocumentError();\n    }\n  }},\n\n  removeChildren: { value: utils.shouldOverride },\n\n  // Insert this node as a child of parent before the specified child,\n  // or insert as the last child of parent if specified child is null,\n  // or replace the specified child with this node, firing mutation events as\n  // necessary\n  _insertOrReplace: { value: function _insertOrReplace(parent, before, isReplace) {\n    var child = this, before_index, i;\n\n    if (child.nodeType === DOCUMENT_FRAGMENT_NODE && child.rooted) {\n      utils.HierarchyRequestError();\n    }\n\n    /* Ensure index of `before` is cached before we (possibly) remove it. */\n    if (parent._childNodes) {\n      before_index = (before === null) ? parent._childNodes.length :\n        before.index; /* ensure _index is cached */\n\n      // If we are already a child of the specified parent, then\n      // the index may have to be adjusted.\n      if (child.parentNode === parent) {\n        var child_index = child.index;\n        // If the child is before the spot it is to be inserted at,\n        // then when it is removed, the index of that spot will be\n        // reduced.\n        if (child_index < before_index) {\n          before_index--;\n        }\n      }\n    }\n\n    // Delete the old child\n    if (isReplace) {\n      if (before.rooted) before.doc.mutateRemove(before);\n      before.parentNode = null;\n    }\n\n    var n = before;\n    if (n === null) { n = parent.firstChild; }\n\n    // If both the child and the parent are rooted, then we want to\n    // transplant the child without uprooting and rerooting it.\n    var bothRooted = child.rooted && parent.rooted;\n    if (child.nodeType === DOCUMENT_FRAGMENT_NODE) {\n      var spliceArgs = [0, isReplace ? 1 : 0], next;\n      for (var kid = child.firstChild; kid !== null; kid = next) {\n        next = kid.nextSibling;\n        spliceArgs.push(kid);\n        kid.parentNode = parent;\n      }\n      var len = spliceArgs.length;\n      // Add all nodes to the new parent, overwriting the old child\n      if (isReplace) {\n        LinkedList.replace(n, len > 2 ? spliceArgs[2] : null);\n      } else if (len > 2 && n !== null) {\n        LinkedList.insertBefore(spliceArgs[2], n);\n      }\n      if (parent._childNodes) {\n        spliceArgs[0] = (before === null) ?\n          parent._childNodes.length : before._index;\n        parent._childNodes.splice.apply(parent._childNodes, spliceArgs);\n        for (i=2; i<len; i++) {\n          spliceArgs[i]._index = spliceArgs[0] + (i - 2);\n        }\n      } else if (parent._firstChild === before) {\n        if (len > 2) {\n          parent._firstChild = spliceArgs[2];\n        } else if (isReplace) {\n          parent._firstChild = null;\n        }\n      }\n      // Remove all nodes from the document fragment\n      if (child._childNodes) {\n        child._childNodes.length = 0;\n      } else {\n        child._firstChild = null;\n      }\n      // Call the mutation handlers\n      // Use spliceArgs since the original array has been destroyed. The\n      // liveness guarantee requires us to clone the array so that\n      // references to the childNodes of the DocumentFragment will be empty\n      // when the insertion handlers are called.\n      if (parent.rooted) {\n        parent.modify();\n        for (i = 2; i < len; i++) {\n          parent.doc.mutateInsert(spliceArgs[i]);\n        }\n      }\n    } else {\n      if (before === child) { return; }\n      if (bothRooted) {\n        // Remove the child from its current position in the tree\n        // without calling remove(), since we don't want to uproot it.\n        child._remove();\n      } else if (child.parentNode) {\n        child.remove();\n      }\n\n      // Insert it as a child of its new parent\n      child.parentNode = parent;\n      if (isReplace) {\n        LinkedList.replace(n, child);\n        if (parent._childNodes) {\n          child._index = before_index;\n          parent._childNodes[before_index] = child;\n        } else if (parent._firstChild === before) {\n          parent._firstChild = child;\n        }\n      } else {\n        if (n !== null) {\n          LinkedList.insertBefore(child, n);\n        }\n        if (parent._childNodes) {\n          child._index = before_index;\n          parent._childNodes.splice(before_index, 0, child);\n        } else if (parent._firstChild === before) {\n          parent._firstChild = child;\n        }\n      }\n      if (bothRooted) {\n        parent.modify();\n        // Generate a move mutation event\n        parent.doc.mutateMove(child);\n      } else if (parent.rooted) {\n        parent.modify();\n        parent.doc.mutateInsert(child);\n      }\n    }\n  }},\n\n\n  // Return the lastModTime value for this node. (For use as a\n  // cache invalidation mechanism. If the node does not already\n  // have one, initialize it from the owner document's modclock\n  // property. (Note that modclock does not return the actual\n  // time; it is simply a counter incremented on each document\n  // modification)\n  lastModTime: { get: function() {\n    if (!this._lastModTime) {\n      this._lastModTime = this.doc.modclock;\n    }\n    return this._lastModTime;\n  }},\n\n  // Increment the owner document's modclock and use the new\n  // value to update the lastModTime value for this node and\n  // all of its ancestors. Nodes that have never had their\n  // lastModTime value queried do not need to have a\n  // lastModTime property set on them since there is no\n  // previously queried value to ever compare the new value\n  // against, so only update nodes that already have a\n  // _lastModTime property.\n  modify: { value: function() {\n    if (this.doc.modclock) { // Skip while doc.modclock == 0\n      var time = ++this.doc.modclock;\n      for(var n = this; n; n = n.parentElement) {\n        if (n._lastModTime) {\n          n._lastModTime = time;\n        }\n      }\n    }\n  }},\n\n  // This attribute is not part of the DOM but is quite helpful.\n  // It returns the document with which a node is associated.  Usually\n  // this is the ownerDocument. But ownerDocument is null for the\n  // document object itself, so this is a handy way to get the document\n  // regardless of the node type\n  doc: { get: function() {\n    return this.ownerDocument || this;\n  }},\n\n\n  // If the node has a nid (node id), then it is rooted in a document\n  rooted: { get: function() {\n    return !!this._nid;\n  }},\n\n  normalize: { value: function() {\n    var next;\n    for (var child=this.firstChild; child !== null; child=next) {\n      next = child.nextSibling;\n\n      if (child.normalize) {\n        child.normalize();\n      }\n\n      if (child.nodeType !== Node.TEXT_NODE) {\n        continue;\n      }\n\n      if (child.nodeValue === \"\") {\n        this.removeChild(child);\n        continue;\n      }\n\n      var prevChild = child.previousSibling;\n      if (prevChild === null) {\n        continue;\n      } else if (prevChild.nodeType === Node.TEXT_NODE) {\n        // merge this with previous and remove the child\n        prevChild.appendData(child.nodeValue);\n        this.removeChild(child);\n      }\n    }\n  }},\n\n  // Convert the children of a node to an HTML string.\n  // This is used by the innerHTML getter\n  // The serialization spec is at:\n  // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#serializing-html-fragments\n  //\n  // The serialization logic is intentionally implemented in a separate\n  // `NodeUtils` helper instead of the more obvious choice of a private\n  // `_serializeOne()` method on the `Node.prototype` in order to avoid\n  // the megamorphic `this._serializeOne` property access, which reduces\n  // performance unnecessarily. If you need specialized behavior for a\n  // certain subclass, you'll need to implement that in `NodeUtils`.\n  // See https://github.com/fgnass/domino/pull/142 for more information.\n  serialize: { value: function() {\n    if (this._innerHTML) {\n      return this._innerHTML;\n    }\n    var s = '';\n    for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\n      s += NodeUtils.serializeOne(kid, this);\n    }\n    return s;\n  }},\n\n  // Non-standard, but often useful for debugging.\n  outerHTML: {\n    get: function() {\n      return NodeUtils.serializeOne(this, { nodeType: 0 });\n    },\n    set: utils.nyi,\n  },\n\n  // mirror node type properties in the prototype, so they are present\n  // in instances of Node (and subclasses)\n  ELEMENT_NODE:                { value: ELEMENT_NODE },\n  ATTRIBUTE_NODE:              { value: ATTRIBUTE_NODE },\n  TEXT_NODE:                   { value: TEXT_NODE },\n  CDATA_SECTION_NODE:          { value: CDATA_SECTION_NODE },\n  ENTITY_REFERENCE_NODE:       { value: ENTITY_REFERENCE_NODE },\n  ENTITY_NODE:                 { value: ENTITY_NODE },\n  PROCESSING_INSTRUCTION_NODE: { value: PROCESSING_INSTRUCTION_NODE },\n  COMMENT_NODE:                { value: COMMENT_NODE },\n  DOCUMENT_NODE:               { value: DOCUMENT_NODE },\n  DOCUMENT_TYPE_NODE:          { value: DOCUMENT_TYPE_NODE },\n  DOCUMENT_FRAGMENT_NODE:      { value: DOCUMENT_FRAGMENT_NODE },\n  NOTATION_NODE:               { value: NOTATION_NODE },\n\n  DOCUMENT_POSITION_DISCONNECTED: { value: DOCUMENT_POSITION_DISCONNECTED },\n  DOCUMENT_POSITION_PRECEDING:    { value: DOCUMENT_POSITION_PRECEDING },\n  DOCUMENT_POSITION_FOLLOWING:    { value: DOCUMENT_POSITION_FOLLOWING },\n  DOCUMENT_POSITION_CONTAINS:     { value: DOCUMENT_POSITION_CONTAINS },\n  DOCUMENT_POSITION_CONTAINED_BY: { value: DOCUMENT_POSITION_CONTAINED_BY },\n  DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: { value: DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC },\n});\n","/* jshint esversion: 6 */\n\"use strict\";\n\nmodule.exports = class NodeList extends Array {\n    constructor(a) {\n        super((a && a.length) || 0);\n        if (a) {\n            for (var idx in a) { this[idx] = a[idx]; }\n        }\n    }\n    item(i) { return this[i] || null; }\n};\n","\"use strict\";\n\n// No support for subclassing array, return an actual Array object.\nfunction item(i) {\n    /* jshint validthis: true */\n    return this[i] || null;\n}\n\nfunction NodeList(a) {\n    if (!a) a = [];\n    a.item = item;\n    return a;\n}\n\nmodule.exports = NodeList;\n","\"use strict\";\n\nvar NodeList;\n\ntry {\n    // Attempt to use ES6-style Array subclass if possible.\n    NodeList = require('./NodeList.es6.js');\n} catch (e) {\n    // No support for subclassing array, return an actual Array object.\n    NodeList = require('./NodeList.es5.js');\n}\n\nmodule.exports = NodeList;\n","\"use strict\";\nmodule.exports = ContainerNode;\n\nvar Node = require('./Node');\nvar NodeList = require('./NodeList');\n\n// This class defines common functionality for node subtypes that\n// can have children\n\nfunction ContainerNode() {\n  Node.call(this);\n  this._firstChild = this._childNodes = null;\n}\n\n// Primary representation is a circular linked list of siblings\nContainerNode.prototype = Object.create(Node.prototype, {\n\n  hasChildNodes: { value: function() {\n    if (this._childNodes) {\n      return this._childNodes.length > 0;\n    }\n    return this._firstChild !== null;\n  }},\n\n  childNodes: { get: function() {\n    this._ensureChildNodes();\n    return this._childNodes;\n  }},\n\n  firstChild: { get: function() {\n    if (this._childNodes) {\n      return this._childNodes.length === 0 ? null : this._childNodes[0];\n    }\n    return this._firstChild;\n  }},\n\n  lastChild: { get: function() {\n    var kids = this._childNodes, first;\n    if (kids) {\n      return kids.length === 0 ? null: kids[kids.length-1];\n    }\n    first = this._firstChild;\n    if (first === null) { return null; }\n    return first._previousSibling; // circular linked list\n  }},\n\n  _ensureChildNodes: { value: function() {\n    if (this._childNodes) { return; }\n    var first = this._firstChild,\n        kid = first,\n        childNodes = this._childNodes = new NodeList();\n    if (first) do {\n      childNodes.push(kid);\n      kid = kid._nextSibling;\n    } while (kid !== first); // circular linked list\n    this._firstChild = null; // free memory\n  }},\n\n  // Remove all of this node's children.  This is a minor\n  // optimization that only calls modify() once.\n  removeChildren: { value: function removeChildren() {\n    var root = this.rooted ? this.ownerDocument : null,\n        next = this.firstChild,\n        kid;\n    while (next !== null) {\n      kid = next;\n      next = kid.nextSibling;\n\n      if (root) root.mutateRemove(kid);\n      kid.parentNode = null;\n    }\n    if (this._childNodes) {\n      this._childNodes.length = 0;\n    } else {\n      this._firstChild = null;\n    }\n    this.modify(); // Update last modified type once only\n  }},\n\n});\n","\"use strict\";\n// This grammar is from the XML and XML Namespace specs. It specifies whether\n// a string (such as an element or attribute name) is a valid Name or QName.\n//\n// Name           ::= NameStartChar (NameChar)*\n// NameStartChar  ::= \":\" | [A-Z] | \"_\" | [a-z] |\n//                    [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] |\n//                    [#x370-#x37D] | [#x37F-#x1FFF] |\n//                    [#x200C-#x200D] | [#x2070-#x218F] |\n//                    [#x2C00-#x2FEF] | [#x3001-#xD7FF] |\n//                    [#xF900-#xFDCF] | [#xFDF0-#xFFFD] |\n//                    [#x10000-#xEFFFF]\n//\n// NameChar       ::= NameStartChar | \"-\" | \".\" | [0-9] |\n//                    #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//\n// QName          ::= PrefixedName| UnprefixedName\n// PrefixedName   ::= Prefix ':' LocalPart\n// UnprefixedName ::= LocalPart\n// Prefix         ::= NCName\n// LocalPart      ::= NCName\n// NCName         ::= Name - (Char* ':' Char*)\n//                    # An XML Name, minus the \":\"\n//\n\nexports.isValidName = isValidName;\nexports.isValidQName = isValidQName;\n\n// Most names will be ASCII only. Try matching against simple regexps first\nvar simplename = /^[_:A-Za-z][-.:\\w]+$/;\nvar simpleqname = /^([_A-Za-z][-.\\w]+|[_A-Za-z][-.\\w]+:[_A-Za-z][-.\\w]+)$/;\n\n// If the regular expressions above fail, try more complex ones that work\n// for any identifiers using codepoints from the Unicode BMP\nvar ncnamestartchars = \"_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02ff\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\";\nvar ncnamechars = \"-._A-Za-z0-9\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02ff\\u0300-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u203f\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\";\n\nvar ncname = \"[\" + ncnamestartchars + \"][\" + ncnamechars + \"]*\";\nvar namestartchars = ncnamestartchars + \":\";\nvar namechars = ncnamechars + \":\";\nvar name = new RegExp(\"^[\" + namestartchars + \"]\" + \"[\" + namechars + \"]*$\");\nvar qname = new RegExp(\"^(\" + ncname + \"|\" + ncname + \":\" + ncname + \")$\");\n\n// XML says that these characters are also legal:\n// [#x10000-#xEFFFF].  So if the patterns above fail, and the\n// target string includes surrogates, then try the following\n// patterns that allow surrogates and then run an extra validation\n// step to make sure that the surrogates are in valid pairs and in\n// the right range.  Note that since the characters \\uf0000 to \\u1f0000\n// are not allowed, it means that the high surrogate can only go up to\n// \\uDB7f instead of \\uDBFF.\nvar hassurrogates = /[\\uD800-\\uDB7F\\uDC00-\\uDFFF]/;\nvar surrogatechars = /[\\uD800-\\uDB7F\\uDC00-\\uDFFF]/g;\nvar surrogatepairs = /[\\uD800-\\uDB7F][\\uDC00-\\uDFFF]/g;\n\n// Modify the variables above to allow surrogates\nncnamestartchars += \"\\uD800-\\uDB7F\\uDC00-\\uDFFF\";\nncnamechars += \"\\uD800-\\uDB7F\\uDC00-\\uDFFF\";\nncname = \"[\" + ncnamestartchars + \"][\" + ncnamechars + \"]*\";\nnamestartchars = ncnamestartchars + \":\";\nnamechars = ncnamechars + \":\";\n\n// Build another set of regexps that include surrogates\nvar surrogatename = new RegExp(\"^[\" + namestartchars + \"]\" + \"[\" + namechars + \"]*$\");\nvar surrogateqname = new RegExp(\"^(\" + ncname + \"|\" + ncname + \":\" + ncname + \")$\");\n\nfunction isValidName(s) {\n  if (simplename.test(s)) return true; // Plain ASCII\n  if (name.test(s)) return true; // Unicode BMP\n\n  // Maybe the tests above failed because s includes surrogate pairs\n  // Most likely, though, they failed for some more basic syntax problem\n  if (!hassurrogates.test(s)) return false;\n\n  // Is the string a valid name if we allow surrogates?\n  if (!surrogatename.test(s)) return false;\n\n  // Finally, are the surrogates all correctly paired up?\n  var chars = s.match(surrogatechars), pairs = s.match(surrogatepairs);\n  return pairs !== null && 2*pairs.length === chars.length;\n}\n\nfunction isValidQName(s) {\n  if (simpleqname.test(s)) return true; // Plain ASCII\n  if (qname.test(s)) return true; // Unicode BMP\n\n  if (!hassurrogates.test(s)) return false;\n  if (!surrogateqname.test(s)) return false;\n  var chars = s.match(surrogatechars), pairs = s.match(surrogatepairs);\n  return pairs !== null && 2*pairs.length === chars.length;\n}\n","\"use strict\";\nvar utils = require('./utils');\n\nexports.property = function(attr) {\n  if (Array.isArray(attr.type)) {\n    var valid = Object.create(null);\n    attr.type.forEach(function(val) {\n      valid[val.value || val] = val.alias || val;\n    });\n    var missingValueDefault = attr.missing;\n    if (missingValueDefault===undefined) { missingValueDefault = null; }\n    var invalidValueDefault = attr.invalid;\n    if (invalidValueDefault===undefined) { invalidValueDefault = missingValueDefault; }\n    return {\n      get: function() {\n        var v = this._getattr(attr.name);\n        if (v === null) return missingValueDefault;\n\n        v = valid[v.toLowerCase()];\n        if (v !== undefined) return v;\n        if (invalidValueDefault !== null) return invalidValueDefault;\n        return v;\n      },\n      set: function(v) {\n        this._setattr(attr.name, v);\n      }\n    };\n  }\n  else if (attr.type === Boolean) {\n    return {\n      get: function() {\n        return this.hasAttribute(attr.name);\n      },\n      set: function(v) {\n        if (v) {\n          this._setattr(attr.name, '');\n        }\n        else {\n          this.removeAttribute(attr.name);\n        }\n      }\n    };\n  }\n  else if (attr.type === Number ||\n           attr.type === \"long\" ||\n           attr.type === \"unsigned long\" ||\n           attr.type === \"limited unsigned long with fallback\") {\n    return numberPropDesc(attr);\n  }\n  else if (!attr.type || attr.type === String) {\n    return {\n      get: function() { return this._getattr(attr.name) || ''; },\n      set: function(v) {\n        if (attr.treatNullAsEmptyString && v === null) { v = ''; }\n        this._setattr(attr.name, v);\n      }\n    };\n  }\n  else if (typeof attr.type === 'function') {\n    return attr.type(attr.name, attr);\n  }\n  throw new Error('Invalid attribute definition');\n};\n\n// See http://www.whatwg.org/specs/web-apps/current-work/#reflect\n//\n// defval is the default value. If it is a function, then that function\n// will be invoked as a method of the element to obtain the default.\n// If no default is specified for a given attribute, then the default\n// depends on the type of the attribute, but since this function handles\n// 4 integer cases, you must specify the default value in each call\n//\n// min and max define a valid range for getting the attribute.\n//\n// setmin defines a minimum value when setting.  If the value is less\n// than that, then throw INDEX_SIZE_ERR.\n//\n// Conveniently, JavaScript's parseInt function appears to be\n// compatible with HTML's 'rules for parsing integers'\nfunction numberPropDesc(a) {\n  var def;\n  if(typeof a.default === 'function') {\n    def = a.default;\n  }\n  else if(typeof a.default === 'number') {\n    def = function() { return a.default; };\n  }\n  else {\n    def = function() { utils.assert(false, typeof a.default); };\n  }\n  var unsigned_long = (a.type === 'unsigned long');\n  var signed_long = (a.type === 'long');\n  var unsigned_fallback = (a.type === 'limited unsigned long with fallback');\n  var min = a.min, max = a.max, setmin = a.setmin;\n  if (min === undefined) {\n    if (unsigned_long) min = 0;\n    if (signed_long) min = -0x80000000;\n    if (unsigned_fallback) min = 1;\n  }\n  if (max === undefined) {\n    if (unsigned_long || signed_long || unsigned_fallback) max = 0x7FFFFFFF;\n  }\n\n  return {\n    get: function() {\n      var v = this._getattr(a.name);\n      var n = a.float ? parseFloat(v) : parseInt(v, 10);\n      if (v === null || !isFinite(n) || (min !== undefined && n < min) || (max !== undefined && n > max)) {\n        return def.call(this);\n      }\n      if (unsigned_long || signed_long || unsigned_fallback) {\n        if (!/^[ \\t\\n\\f\\r]*[-+]?[0-9]/.test(v)) { return def.call(this); }\n        n = n|0; // jshint ignore:line\n      }\n      return n;\n    },\n    set: function(v) {\n      if (!a.float) { v = Math.floor(v); }\n      if (setmin !== undefined && v < setmin) {\n        utils.IndexSizeError(a.name + ' set to ' + v);\n      }\n      if (unsigned_long) {\n        v = (v < 0 || v > 0x7FFFFFFF) ? def.call(this) :\n          (v|0);  // jshint ignore:line\n      } else if (unsigned_fallback) {\n        v = (v < 1 || v > 0x7FFFFFFF) ? def.call(this) :\n          (v|0); // jshint ignore:line\n      } else if (signed_long) {\n        v = (v < -0x80000000 || v > 0x7FFFFFFF) ? def.call(this) :\n          (v|0); // jshint ignore:line\n      }\n      this._setattr(a.name, String(v));\n    }\n  };\n}\n\n// This is a utility function for setting up change handler functions\n// for attributes like 'id' that require special handling when they change.\nexports.registerChangeHandler = function(c, name, handler) {\n  var p = c.prototype;\n\n  // If p does not already have its own _attributeChangeHandlers\n  // then create one for it, inheriting from the inherited\n  // _attributeChangeHandlers. At the top (for the Element class) the\n  // _attributeChangeHandlers object will be created with a null prototype.\n  if (!Object.prototype.hasOwnProperty.call(p, '_attributeChangeHandlers')) {\n    p._attributeChangeHandlers =\n      Object.create(p._attributeChangeHandlers || null);\n  }\n\n  p._attributeChangeHandlers[name] = handler;\n};\n","\"use strict\";\nmodule.exports = FilteredElementList;\n\nvar Node = require('./Node');\n\n//\n// This file defines node list implementation that lazily traverses\n// the document tree (or a subtree rooted at any element) and includes\n// only those elements for which a specified filter function returns true.\n// It is used to implement the\n// {Document,Element}.getElementsBy{TagName,ClassName}{,NS} methods.\n//\n// XXX this should inherit from NodeList\n\nfunction FilteredElementList(root, filter) {\n  this.root = root;\n  this.filter = filter;\n  this.lastModTime = root.lastModTime;\n  this.done = false;\n  this.cache = [];\n  this.traverse();\n}\n\nFilteredElementList.prototype = Object.create(Object.prototype, {\n  length: { get: function() {\n    this.checkcache();\n    if (!this.done) this.traverse();\n    return this.cache.length;\n  } },\n\n  item: { value: function(n) {\n    this.checkcache();\n    if (!this.done && n >= this.cache.length) {\n      // This can lead to O(N^2) behavior if we stop when we get to n\n      // and the caller is iterating through the items in order; so\n      // be sure to do the full traverse here.\n      this.traverse(/*n*/);\n    }\n    return this.cache[n];\n  } },\n\n  checkcache: { value: function() {\n    if (this.lastModTime !== this.root.lastModTime) {\n      // subtree has changed, so invalidate cache\n      for (var i = this.cache.length-1; i>=0; i--) {\n        this[i] = undefined;\n      }\n      this.cache.length = 0;\n      this.done = false;\n      this.lastModTime = this.root.lastModTime;\n    }\n  } },\n\n  // If n is specified, then traverse the tree until we've found the nth\n  // item (or until we've found all items).  If n is not specified,\n  // traverse until we've found all items.\n  traverse: { value: function(n) {\n    // increment n so we can compare to length, and so it is never falsy\n    if (n !== undefined) n++;\n\n    var elt;\n    while ((elt = this.next()) !== null) {\n      this[this.cache.length] = elt; //XXX Use proxy instead\n      this.cache.push(elt);\n      if (n && this.cache.length === n) return;\n    }\n\n    // no next element, so we've found everything\n    this.done = true;\n  } },\n\n  // Return the next element under root that matches filter\n  next: { value: function() {\n    var start = (this.cache.length === 0) ? this.root // Start at the root or at\n      : this.cache[this.cache.length-1]; // the last element we found\n\n    var elt;\n    if (start.nodeType === Node.DOCUMENT_NODE)\n      elt = start.documentElement;\n    else\n      elt = start.nextElement(this.root);\n\n    while(elt) {\n      if (this.filter(elt)) {\n        return elt;\n      }\n\n      elt = elt.nextElement(this.root);\n    }\n    return null;\n  } },\n});\n","\"use strict\";\n// DOMTokenList implementation based on https://github.com/Raynos/DOM-shim\nvar utils = require('./utils');\n\nmodule.exports = DOMTokenList;\n\nfunction DOMTokenList(getter, setter) {\n  this._getString = getter;\n  this._setString = setter;\n  this._length = 0;\n  this._lastStringValue = '';\n  this._update();\n}\n\nObject.defineProperties(DOMTokenList.prototype, {\n  length: { get: function() { return this._length; } },\n  item: { value: function(index) {\n    var list = getList(this);\n    if (index < 0 || index >= list.length) {\n      return null;\n    }\n    return list[index];\n  }},\n\n  contains: { value: function(token) {\n    token = String(token); // no error checking for contains()\n    var list = getList(this);\n    return list.indexOf(token) > -1;\n  }},\n\n  add: { value: function() {\n    var list = getList(this);\n    for (var i = 0, len = arguments.length; i < len; i++) {\n      var token = handleErrors(arguments[i]);\n      if (list.indexOf(token) < 0) {\n        list.push(token);\n      }\n    }\n    // Note: as per spec, if handleErrors() throws any errors, we never\n    // make it here and none of the changes take effect.\n    // Also per spec: we run the \"update steps\" even if no change was\n    // made (ie, if the token already existed)\n    this._update(list);\n  }},\n\n  remove: { value: function() {\n    var list = getList(this);\n    for (var i = 0, len = arguments.length; i < len; i++) {\n      var token = handleErrors(arguments[i]);\n      var index = list.indexOf(token);\n      if (index > -1) {\n        list.splice(index, 1);\n      }\n    }\n    // Note: as per spec, if handleErrors() throws any errors, we never\n    // make it here and none of the changes take effect.\n    // Also per spec: we run the \"update steps\" even if no change was\n    // made (ie, if the token wasn't previously present)\n    this._update(list);\n  }},\n\n  toggle: { value: function toggle(token, force) {\n    token = handleErrors(token);\n    if (this.contains(token)) {\n      if (force === undefined || force === false) {\n        this.remove(token);\n        return false;\n      }\n      return true;\n    } else {\n      if (force === undefined || force === true) {\n        this.add(token);\n        return true;\n      }\n      return false;\n    }\n  }},\n\n  replace: { value: function replace(token, newToken) {\n    // weird corner case of spec: if `token` contains whitespace, but\n    // `newToken` is the empty string, we must throw SyntaxError not\n    // InvalidCharacterError (sigh)\n    if (String(newToken)==='') { utils.SyntaxError(); }\n    token = handleErrors(token);\n    newToken = handleErrors(newToken);\n    var list = getList(this);\n    var idx = list.indexOf(token);\n    if (idx < 0) {\n      // Note that, per spec, we do not run the update steps on this path.\n      return false;\n    }\n    var idx2 = list.indexOf(newToken);\n    if (idx2 < 0) {\n      list[idx] = newToken;\n    } else {\n      // \"replace the first instance of either `token` or `newToken` with\n      // `newToken` and remove all other instances\"\n      if (idx < idx2) {\n        list[idx] = newToken;\n        list.splice(idx2, 1);\n      } else {\n        // idx2 is already `newToken`\n        list.splice(idx, 1);\n      }\n    }\n    this._update(list);\n    return true;\n  }},\n\n  toString: { value: function() {\n    return this._getString();\n  }},\n\n  value: {\n    get: function() {\n      return this._getString();\n    },\n    set: function(v) {\n      this._setString(v);\n      this._update();\n    }\n  },\n\n  // Called when the setter is called from outside this interface.\n  _update: { value: function(list) {\n    if (list) {\n      fixIndex(this, list);\n      this._setString(list.join(\" \").trim());\n    } else {\n      fixIndex(this, getList(this));\n    }\n    this._lastStringValue = this._getString();\n  } },\n});\n\nfunction fixIndex(clist, list) {\n  var oldLength = clist._length;\n  var i;\n  clist._length = list.length;\n  for (i = 0; i < list.length; i++) {\n    clist[i] = list[i];\n  }\n  // Clear/free old entries.\n  for (; i < oldLength; i++) {\n    clist[i] = undefined;\n  }\n}\n\nfunction handleErrors(token) {\n  token = String(token);\n  if (token === \"\") {\n    utils.SyntaxError();\n  }\n  if (/[ \\t\\r\\n\\f]/.test(token)) {\n    utils.InvalidCharacterError();\n  }\n  return token;\n}\n\nfunction toArray(clist) {\n  var length = clist._length;\n  var arr = Array(length);\n  for (var i = 0; i < length; i++) {\n    arr[i] = clist[i];\n  }\n  return arr;\n}\n\nfunction getList(clist) {\n  var strProp = clist._getString();\n  if (strProp === clist._lastStringValue) {\n    return toArray(clist);\n  }\n  var str = strProp.replace(/(^[ \\t\\r\\n\\f]+)|([ \\t\\r\\n\\f]+$)/g, '');\n  if (str === \"\") {\n    return [];\n  } else {\n    var seen = Object.create(null);\n    return str.split(/[ \\t\\r\\n\\f]+/g).filter(function(n) {\n      var key = '$' + n;\n      if (seen[key]) { return false; }\n      seen[key] = true;\n      return true;\n    });\n  }\n}\n","\"use strict\";\n/* jshint eqnull: true */\n/**\n * Zest (https://github.com/chjj/zest)\n * A css selector engine.\n * Copyright (c) 2011-2012, Christopher Jeffrey. (MIT Licensed)\n * Domino version based on Zest v0.1.3 with bugfixes applied.\n */\n\n/**\n * Helpers\n */\n\nvar window = Object.create(null, {\n  location: { get: function() {\n    throw new Error('window.location is not supported.');\n  } }\n});\n\nvar compareDocumentPosition = function(a, b) {\n      return a.compareDocumentPosition(b);\n};\n\nvar order = function(a, b) {\n  /* jshint bitwise: false */\n  return compareDocumentPosition(a, b) & 2 ? 1 : -1;\n};\n\nvar next = function(el) {\n  while ((el = el.nextSibling)\n         && el.nodeType !== 1);\n  return el;\n};\n\nvar prev = function(el) {\n  while ((el = el.previousSibling)\n         && el.nodeType !== 1);\n  return el;\n};\n\nvar child = function(el) {\n  /*jshint -W084 */\n  if (el = el.firstChild) {\n    while (el.nodeType !== 1\n           && (el = el.nextSibling));\n  }\n  return el;\n};\n\nvar lastChild = function(el) {\n  /*jshint -W084 */\n  if (el = el.lastChild) {\n    while (el.nodeType !== 1\n           && (el = el.previousSibling));\n  }\n  return el;\n};\n\nvar parentIsElement = function(n) {\n  if (!n.parentNode) { return false; }\n  var nodeType = n.parentNode.nodeType;\n  // The root `html` element can be a first- or last-child, too.\n  return nodeType === 1 || nodeType === 9;\n};\n\nvar unquote = function(str) {\n  if (!str) return str;\n  var ch = str[0];\n  if (ch === '\"' || ch === '\\'') {\n    if (str[str.length-1] === ch) {\n      str = str.slice(1, -1);\n    } else {\n      // bad string.\n      str = str.slice(1);\n    }\n    return str.replace(rules.str_escape, function(s) {\n      var m = /^\\\\(?:([0-9A-Fa-f]+)|([\\r\\n\\f]+))/.exec(s);\n      if (!m) { return s.slice(1); }\n      if (m[2]) { return ''; /* escaped newlines are ignored in strings. */ }\n      var cp = parseInt(m[1], 16);\n      return String.fromCodePoint ? String.fromCodePoint(cp) :\n        // Not all JavaScript implementations have String.fromCodePoint yet.\n        String.fromCharCode(cp);\n    });\n  } else if (rules.ident.test(str)) {\n    return decodeid(str);\n  } else {\n    // NUMBER, PERCENTAGE, DIMENSION, etc\n    return str;\n  }\n};\n\nvar decodeid = function(str) {\n  return str.replace(rules.escape, function(s) {\n    var m = /^\\\\([0-9A-Fa-f]+)/.exec(s);\n    if (!m) { return s[1]; }\n    var cp = parseInt(m[1], 16);\n    return String.fromCodePoint ? String.fromCodePoint(cp) :\n      // Not all JavaScript implementations have String.fromCodePoint yet.\n      String.fromCharCode(cp);\n  });\n};\n\nvar indexOf = (function() {\n  if (Array.prototype.indexOf) {\n    return Array.prototype.indexOf;\n  }\n  return function(obj, item) {\n    var i = this.length;\n    while (i--) {\n      if (this[i] === item) return i;\n    }\n    return -1;\n  };\n})();\n\nvar makeInside = function(start, end) {\n  var regex = rules.inside.source\n    .replace(/</g, start)\n    .replace(/>/g, end);\n\n  return new RegExp(regex);\n};\n\nvar replace = function(regex, name, val) {\n  regex = regex.source;\n  regex = regex.replace(name, val.source || val);\n  return new RegExp(regex);\n};\n\nvar truncateUrl = function(url, num) {\n  return url\n    .replace(/^(?:\\w+:\\/\\/|\\/+)/, '')\n    .replace(/(?:\\/+|\\/*#.*?)$/, '')\n    .split('/', num)\n    .join('/');\n};\n\n/**\n * Handle `nth` Selectors\n */\n\nvar parseNth = function(param_, test) {\n  var param = param_.replace(/\\s+/g, '')\n    , cap;\n\n  if (param === 'even') {\n    param = '2n+0';\n  } else if (param === 'odd') {\n    param = '2n+1';\n  } else if (param.indexOf('n') === -1) {\n    param = '0n' + param;\n  }\n\n  cap = /^([+-])?(\\d+)?n([+-])?(\\d+)?$/.exec(param);\n\n  return {\n    group: cap[1] === '-'\n      ? -(cap[2] || 1)\n      : +(cap[2] || 1),\n    offset: cap[4]\n      ? (cap[3] === '-' ? -cap[4] : +cap[4])\n      : 0\n  };\n};\n\nvar nth = function(param_, test, last) {\n  var param = parseNth(param_)\n    , group = param.group\n    , offset = param.offset\n    , find = !last ? child : lastChild\n    , advance = !last ? next : prev;\n\n  return function(el) {\n    if (!parentIsElement(el)) return;\n\n    var rel = find(el.parentNode)\n      , pos = 0;\n\n    while (rel) {\n      if (test(rel, el)) pos++;\n      if (rel === el) {\n        pos -= offset;\n        return group && pos\n          ? (pos % group) === 0 && (pos < 0 === group < 0)\n          : !pos;\n      }\n      rel = advance(rel);\n    }\n  };\n};\n\n/**\n * Simple Selectors\n */\n\nvar selectors = {\n  '*': (function() {\n    if (false/*function() {\n      var el = document.createElement('div');\n      el.appendChild(document.createComment(''));\n      return !!el.getElementsByTagName('*')[0];\n    }()*/) {\n      return function(el) {\n        if (el.nodeType === 1) return true;\n      };\n    }\n    return function() {\n      return true;\n    };\n  })(),\n  'type': function(type) {\n    type = type.toLowerCase();\n    return function(el) {\n      return el.nodeName.toLowerCase() === type;\n    };\n  },\n  'attr': function(key, op, val, i) {\n    op = operators[op];\n    return function(el) {\n      var attr;\n      switch (key) {\n        case 'for':\n          attr = el.htmlFor;\n          break;\n        case 'class':\n          // className is '' when non-existent\n          // getAttribute('class') is null\n          attr = el.className;\n          if (attr === '' && el.getAttribute('class') == null) {\n            attr = null;\n          }\n          break;\n        case 'href':\n        case 'src':\n          attr = el.getAttribute(key, 2);\n          break;\n        case 'title':\n          // getAttribute('title') can be '' when non-existent sometimes?\n          attr = el.getAttribute('title') || null;\n          break;\n        // careful with attributes with special getter functions\n        case 'id':\n        case 'lang':\n        case 'dir':\n        case 'accessKey':\n        case 'hidden':\n        case 'tabIndex':\n        case 'style':\n          if (el.getAttribute) {\n            attr = el.getAttribute(key);\n            break;\n          }\n        /* falls through */\n        default:\n          if (el.hasAttribute && !el.hasAttribute(key)) {\n            break;\n          }\n          attr = el[key] != null\n            ? el[key]\n            : el.getAttribute && el.getAttribute(key);\n          break;\n      }\n      if (attr == null) return;\n      attr = attr + '';\n      if (i) {\n        attr = attr.toLowerCase();\n        val = val.toLowerCase();\n      }\n      return op(attr, val);\n    };\n  },\n  ':first-child': function(el) {\n    return !prev(el) && parentIsElement(el);\n  },\n  ':last-child': function(el) {\n    return !next(el) && parentIsElement(el);\n  },\n  ':only-child': function(el) {\n    return !prev(el) && !next(el) && parentIsElement(el);\n  },\n  ':nth-child': function(param, last) {\n    return nth(param, function() {\n      return true;\n    }, last);\n  },\n  ':nth-last-child': function(param) {\n    return selectors[':nth-child'](param, true);\n  },\n  ':root': function(el) {\n    return el.ownerDocument.documentElement === el;\n  },\n  ':empty': function(el) {\n    return !el.firstChild;\n  },\n  ':not': function(sel) {\n    var test = compileGroup(sel);\n    return function(el) {\n      return !test(el);\n    };\n  },\n  ':first-of-type': function(el) {\n    if (!parentIsElement(el)) return;\n    var type = el.nodeName;\n    /*jshint -W084 */\n    while (el = prev(el)) {\n      if (el.nodeName === type) return;\n    }\n    return true;\n  },\n  ':last-of-type': function(el) {\n    if (!parentIsElement(el)) return;\n    var type = el.nodeName;\n    /*jshint -W084 */\n    while (el = next(el)) {\n      if (el.nodeName === type) return;\n    }\n    return true;\n  },\n  ':only-of-type': function(el) {\n    return selectors[':first-of-type'](el)\n        && selectors[':last-of-type'](el);\n  },\n  ':nth-of-type': function(param, last) {\n    return nth(param, function(rel, el) {\n      return rel.nodeName === el.nodeName;\n    }, last);\n  },\n  ':nth-last-of-type': function(param) {\n    return selectors[':nth-of-type'](param, true);\n  },\n  ':checked': function(el) {\n    return !!(el.checked || el.selected);\n  },\n  ':indeterminate': function(el) {\n    return !selectors[':checked'](el);\n  },\n  ':enabled': function(el) {\n    return !el.disabled && el.type !== 'hidden';\n  },\n  ':disabled': function(el) {\n    return !!el.disabled;\n  },\n  ':target': function(el) {\n    return el.id === window.location.hash.substring(1);\n  },\n  ':focus': function(el) {\n    return el === el.ownerDocument.activeElement;\n  },\n  ':is': function(sel) {\n    return compileGroup(sel);\n  },\n  // :matches is an older name for :is; see\n  // https://github.com/w3c/csswg-drafts/issues/3258\n  ':matches': function(sel) {\n    return selectors[':is'](sel);\n  },\n  ':nth-match': function(param, last) {\n    var args = param.split(/\\s*,\\s*/)\n      , arg = args.shift()\n      , test = compileGroup(args.join(','));\n\n    return nth(arg, test, last);\n  },\n  ':nth-last-match': function(param) {\n    return selectors[':nth-match'](param, true);\n  },\n  ':links-here': function(el) {\n    return el + '' === window.location + '';\n  },\n  ':lang': function(param) {\n    return function(el) {\n      while (el) {\n        if (el.lang) return el.lang.indexOf(param) === 0;\n        el = el.parentNode;\n      }\n    };\n  },\n  ':dir': function(param) {\n    return function(el) {\n      while (el) {\n        if (el.dir) return el.dir === param;\n        el = el.parentNode;\n      }\n    };\n  },\n  ':scope': function(el, con) {\n    var context = con || el.ownerDocument;\n    if (context.nodeType === 9) {\n      return el === context.documentElement;\n    }\n    return el === context;\n  },\n  ':any-link': function(el) {\n    return typeof el.href === 'string';\n  },\n  ':local-link': function(el) {\n    if (el.nodeName) {\n      return el.href && el.host === window.location.host;\n    }\n    var param = +el + 1;\n    return function(el) {\n      if (!el.href) return;\n\n      var url = window.location + ''\n        , href = el + '';\n\n      return truncateUrl(url, param) === truncateUrl(href, param);\n    };\n  },\n  ':default': function(el) {\n    return !!el.defaultSelected;\n  },\n  ':valid': function(el) {\n    return el.willValidate || (el.validity && el.validity.valid);\n  },\n  ':invalid': function(el) {\n    return !selectors[':valid'](el);\n  },\n  ':in-range': function(el) {\n    return el.value > el.min && el.value <= el.max;\n  },\n  ':out-of-range': function(el) {\n    return !selectors[':in-range'](el);\n  },\n  ':required': function(el) {\n    return !!el.required;\n  },\n  ':optional': function(el) {\n    return !el.required;\n  },\n  ':read-only': function(el) {\n    if (el.readOnly) return true;\n\n    var attr = el.getAttribute('contenteditable')\n      , prop = el.contentEditable\n      , name = el.nodeName.toLowerCase();\n\n    name = name !== 'input' && name !== 'textarea';\n\n    return (name || el.disabled) && attr == null && prop !== 'true';\n  },\n  ':read-write': function(el) {\n    return !selectors[':read-only'](el);\n  },\n  ':hover': function() {\n    throw new Error(':hover is not supported.');\n  },\n  ':active': function() {\n    throw new Error(':active is not supported.');\n  },\n  ':link': function() {\n    throw new Error(':link is not supported.');\n  },\n  ':visited': function() {\n    throw new Error(':visited is not supported.');\n  },\n  ':column': function() {\n    throw new Error(':column is not supported.');\n  },\n  ':nth-column': function() {\n    throw new Error(':nth-column is not supported.');\n  },\n  ':nth-last-column': function() {\n    throw new Error(':nth-last-column is not supported.');\n  },\n  ':current': function() {\n    throw new Error(':current is not supported.');\n  },\n  ':past': function() {\n    throw new Error(':past is not supported.');\n  },\n  ':future': function() {\n    throw new Error(':future is not supported.');\n  },\n  // Non-standard, for compatibility purposes.\n  ':contains': function(param) {\n    return function(el) {\n      var text = el.innerText || el.textContent || el.value || '';\n      return text.indexOf(param) !== -1;\n    };\n  },\n  ':has': function(param) {\n    return function(el) {\n      return find(param, el).length > 0;\n    };\n  }\n  // Potentially add more pseudo selectors for\n  // compatibility with sizzle and most other\n  // selector engines (?).\n};\n\n/**\n * Attribute Operators\n */\n\nvar operators = {\n  '-': function() {\n    return true;\n  },\n  '=': function(attr, val) {\n    return attr === val;\n  },\n  '*=': function(attr, val) {\n    return attr.indexOf(val) !== -1;\n  },\n  '~=': function(attr, val) {\n    var i\n      , s\n      , f\n      , l;\n\n    for (s = 0; true; s = i + 1) {\n      i = attr.indexOf(val, s);\n      if (i === -1) return false;\n      f = attr[i - 1];\n      l = attr[i + val.length];\n      if ((!f || f === ' ') && (!l || l === ' ')) return true;\n    }\n  },\n  '|=': function(attr, val) {\n    var i = attr.indexOf(val)\n      , l;\n\n    if (i !== 0) return;\n    l = attr[i + val.length];\n\n    return l === '-' || !l;\n  },\n  '^=': function(attr, val) {\n    return attr.indexOf(val) === 0;\n  },\n  '$=': function(attr, val) {\n    var i = attr.lastIndexOf(val);\n    return i !== -1 && i + val.length === attr.length;\n  },\n  // non-standard\n  '!=': function(attr, val) {\n    return attr !== val;\n  }\n};\n\n/**\n * Combinator Logic\n */\n\nvar combinators = {\n  ' ': function(test) {\n    return function(el) {\n      /*jshint -W084 */\n      while (el = el.parentNode) {\n        if (test(el)) return el;\n      }\n    };\n  },\n  '>': function(test) {\n    return function(el) {\n      /*jshint -W084 */\n      if (el = el.parentNode) {\n        return test(el) && el;\n      }\n    };\n  },\n  '+': function(test) {\n    return function(el) {\n      /*jshint -W084 */\n      if (el = prev(el)) {\n        return test(el) && el;\n      }\n    };\n  },\n  '~': function(test) {\n    return function(el) {\n      /*jshint -W084 */\n      while (el = prev(el)) {\n        if (test(el)) return el;\n      }\n    };\n  },\n  'noop': function(test) {\n    return function(el) {\n      return test(el) && el;\n    };\n  },\n  'ref': function(test, name) {\n    var node;\n\n    function ref(el) {\n      var doc = el.ownerDocument\n        , nodes = doc.getElementsByTagName('*')\n        , i = nodes.length;\n\n      while (i--) {\n        node = nodes[i];\n        if (ref.test(el)) {\n          node = null;\n          return true;\n        }\n      }\n\n      node = null;\n    }\n\n    ref.combinator = function(el) {\n      if (!node || !node.getAttribute) return;\n\n      var attr = node.getAttribute(name) || '';\n      if (attr[0] === '#') attr = attr.substring(1);\n\n      if (attr === el.id && test(node)) {\n        return node;\n      }\n    };\n\n    return ref;\n  }\n};\n\n/**\n * Grammar\n */\n\nvar rules = {\n  escape: /\\\\(?:[^0-9A-Fa-f\\r\\n]|[0-9A-Fa-f]{1,6}[\\r\\n\\t ]?)/g,\n  str_escape: /(escape)|\\\\(\\n|\\r\\n?|\\f)/g,\n  nonascii: /[\\u00A0-\\uFFFF]/,\n  cssid: /(?:(?!-?[0-9])(?:escape|nonascii|[-_a-zA-Z0-9])+)/,\n  qname: /^ *(cssid|\\*)/,\n  simple: /^(?:([.#]cssid)|pseudo|attr)/,\n  ref: /^ *\\/(cssid)\\/ */,\n  combinator: /^(?: +([^ \\w*.#\\\\]) +|( )+|([^ \\w*.#\\\\]))(?! *$)/,\n  attr: /^\\[(cssid)(?:([^\\w]?=)(inside))?\\]/,\n  pseudo: /^(:cssid)(?:\\((inside)\\))?/,\n  inside: /(?:\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|<[^\"'>]*>|\\\\[\"'>]|[^\"'>])*/,\n  ident: /^(cssid)$/\n};\n\nrules.cssid = replace(rules.cssid, 'nonascii', rules.nonascii);\nrules.cssid = replace(rules.cssid, 'escape', rules.escape);\nrules.qname = replace(rules.qname, 'cssid', rules.cssid);\nrules.simple = replace(rules.simple, 'cssid', rules.cssid);\nrules.ref = replace(rules.ref, 'cssid', rules.cssid);\nrules.attr = replace(rules.attr, 'cssid', rules.cssid);\nrules.pseudo = replace(rules.pseudo, 'cssid', rules.cssid);\nrules.inside = replace(rules.inside, '[^\"\\'>]*', rules.inside);\nrules.attr = replace(rules.attr, 'inside', makeInside('\\\\[', '\\\\]'));\nrules.pseudo = replace(rules.pseudo, 'inside', makeInside('\\\\(', '\\\\)'));\nrules.simple = replace(rules.simple, 'pseudo', rules.pseudo);\nrules.simple = replace(rules.simple, 'attr', rules.attr);\nrules.ident = replace(rules.ident, 'cssid', rules.cssid);\nrules.str_escape = replace(rules.str_escape, 'escape', rules.escape);\n\n/**\n * Compiling\n */\n\nvar compile = function(sel_) {\n  var sel = sel_.replace(/^\\s+|\\s+$/g, '')\n    , test\n    , filter = []\n    , buff = []\n    , subject\n    , qname\n    , cap\n    , op\n    , ref;\n\n  /*jshint -W084 */\n  while (sel) {\n    if (cap = rules.qname.exec(sel)) {\n      sel = sel.substring(cap[0].length);\n      qname = decodeid(cap[1]);\n      buff.push(tok(qname, true));\n    } else if (cap = rules.simple.exec(sel)) {\n      sel = sel.substring(cap[0].length);\n      qname = '*';\n      buff.push(tok(qname, true));\n      buff.push(tok(cap));\n    } else {\n      throw new SyntaxError('Invalid selector.');\n    }\n\n    while (cap = rules.simple.exec(sel)) {\n      sel = sel.substring(cap[0].length);\n      buff.push(tok(cap));\n    }\n\n    if (sel[0] === '!') {\n      sel = sel.substring(1);\n      subject = makeSubject();\n      subject.qname = qname;\n      buff.push(subject.simple);\n    }\n\n    if (cap = rules.ref.exec(sel)) {\n      sel = sel.substring(cap[0].length);\n      ref = combinators.ref(makeSimple(buff), decodeid(cap[1]));\n      filter.push(ref.combinator);\n      buff = [];\n      continue;\n    }\n\n    if (cap = rules.combinator.exec(sel)) {\n      sel = sel.substring(cap[0].length);\n      op = cap[1] || cap[2] || cap[3];\n      if (op === ',') {\n        filter.push(combinators.noop(makeSimple(buff)));\n        break;\n      }\n    } else {\n      op = 'noop';\n    }\n\n    if (!combinators[op]) { throw new SyntaxError('Bad combinator.'); }\n    filter.push(combinators[op](makeSimple(buff)));\n    buff = [];\n  }\n\n  test = makeTest(filter);\n  test.qname = qname;\n  test.sel = sel;\n\n  if (subject) {\n    subject.lname = test.qname;\n\n    subject.test = test;\n    subject.qname = subject.qname;\n    subject.sel = test.sel;\n    test = subject;\n  }\n\n  if (ref) {\n    ref.test = test;\n    ref.qname = test.qname;\n    ref.sel = test.sel;\n    test = ref;\n  }\n\n  return test;\n};\n\nvar tok = function(cap, qname) {\n  // qname\n  if (qname) {\n    return cap === '*'\n      ? selectors['*']\n      : selectors.type(cap);\n  }\n\n  // class/id\n  if (cap[1]) {\n    return cap[1][0] === '.'\n\t  // XXX unescape here?  or in attr?\n      ? selectors.attr('class', '~=', decodeid(cap[1].substring(1)), false)\n      : selectors.attr('id', '=', decodeid(cap[1].substring(1)), false);\n  }\n\n  // pseudo-name\n  // inside-pseudo\n  if (cap[2]) {\n    return cap[3]\n      ? selectors[decodeid(cap[2])](unquote(cap[3]))\n      : selectors[decodeid(cap[2])];\n  }\n\n  // attr name\n  // attr op\n  // attr value\n  if (cap[4]) {\n    var value = cap[6];\n    var i = /[\"'\\s]\\s*I$/i.test(value);\n    if (i) {\n      value = value.replace(/\\s*I$/i, '');\n    }\n    return selectors.attr(decodeid(cap[4]), cap[5] || '-', unquote(value), i);\n  }\n\n  throw new SyntaxError('Unknown Selector.');\n};\n\nvar makeSimple = function(func) {\n  var l = func.length\n    , i;\n\n  // Potentially make sure\n  // `el` is truthy.\n  if (l < 2) return func[0];\n\n  return function(el) {\n    if (!el) return;\n    for (i = 0; i < l; i++) {\n      if (!func[i](el)) return;\n    }\n    return true;\n  };\n};\n\nvar makeTest = function(func) {\n  if (func.length < 2) {\n    return function(el) {\n      return !!func[0](el);\n    };\n  }\n  return function(el) {\n    var i = func.length;\n    while (i--) {\n      if (!(el = func[i](el))) return;\n    }\n    return true;\n  };\n};\n\nvar makeSubject = function() {\n  var target;\n\n  function subject(el) {\n    var node = el.ownerDocument\n      , scope = node.getElementsByTagName(subject.lname)\n      , i = scope.length;\n\n    while (i--) {\n      if (subject.test(scope[i]) && target === el) {\n        target = null;\n        return true;\n      }\n    }\n\n    target = null;\n  }\n\n  subject.simple = function(el) {\n    target = el;\n    return true;\n  };\n\n  return subject;\n};\n\nvar compileGroup = function(sel) {\n  var test = compile(sel)\n    , tests = [ test ];\n\n  while (test.sel) {\n    test = compile(test.sel);\n    tests.push(test);\n  }\n\n  if (tests.length < 2) return test;\n\n  return function(el) {\n    var l = tests.length\n      , i = 0;\n\n    for (; i < l; i++) {\n      if (tests[i](el)) return true;\n    }\n  };\n};\n\n/**\n * Selection\n */\n\nvar find = function(sel, node) {\n  var results = []\n    , test = compile(sel)\n    , scope = node.getElementsByTagName(test.qname)\n    , i = 0\n    , el;\n\n  /*jshint -W084 */\n  while (el = scope[i++]) {\n    if (test(el)) results.push(el);\n  }\n\n  if (test.sel) {\n    while (test.sel) {\n      test = compile(test.sel);\n      scope = node.getElementsByTagName(test.qname);\n      i = 0;\n      /*jshint -W084 */\n      while (el = scope[i++]) {\n        if (test(el) && indexOf.call(results, el) === -1) {\n          results.push(el);\n        }\n      }\n    }\n    results.sort(order);\n  }\n\n  return results;\n};\n\n/**\n * Expose\n */\n\nmodule.exports = exports = function(sel, context) {\n  /* when context isn't a DocumentFragment and the selector is simple: */\n  var id, r;\n  if (context.nodeType !== 11 && sel.indexOf(' ') === -1) {\n    if (sel[0] === '#' && context.rooted && /^#[A-Z_][-A-Z0-9_]*$/i.test(sel)) {\n      if (context.doc._hasMultipleElementsWithId) {\n        id = sel.substring(1);\n        if (!context.doc._hasMultipleElementsWithId(id)) {\n          r = context.doc.getElementById(id);\n          return r ? [r] : [];\n        }\n      }\n    }\n    if (sel[0] === '.' && /^\\.\\w+$/.test(sel)) {\n      return context.getElementsByClassName(sel.substring(1));\n    }\n    if (/^\\w+$/.test(sel)) {\n      return context.getElementsByTagName(sel);\n    }\n  }\n  /* do things the hard/slow way */\n  return find(sel, context);\n};\n\nexports.selectors = selectors;\nexports.operators = operators;\nexports.combinators = combinators;\n\nexports.matches = function(el, sel) {\n  var test = { sel: sel };\n  do {\n    test = compile(test.sel);\n    if (test(el)) { return true; }\n  } while (test.sel);\n  return false;\n};\n","\"use strict\";\n\nvar Node = require('./Node');\nvar LinkedList = require('./LinkedList');\n\nvar createDocumentFragmentFromArguments = function(document, args) {\n  var docFrag = document.createDocumentFragment();\n\n  for (var i=0; i<args.length; i++) {\n    var argItem = args[i];\n    var isNode = argItem instanceof Node;\n    docFrag.appendChild(isNode ? argItem :\n                        document.createTextNode(String(argItem)));\n  }\n\n  return docFrag;\n};\n\n// The ChildNode interface contains methods that are particular to `Node`\n// objects that can have a parent.  It is implemented by `Element`,\n// `DocumentType`, and `CharacterData` objects.\nvar ChildNode = {\n\n  // Inserts a set of Node or String objects in the children list of this\n  // ChildNode's parent, just after this ChildNode.  String objects are\n  // inserted as the equivalent Text nodes.\n  after: { value: function after() {\n    var argArr = Array.prototype.slice.call(arguments);\n    var parentNode = this.parentNode, nextSibling = this.nextSibling;\n    if (parentNode === null) { return; }\n    // Find \"viable next sibling\"; that is, next one not in argArr\n    while (nextSibling && argArr.some(function(v) { return v===nextSibling; }))\n      nextSibling = nextSibling.nextSibling;\n    // ok, parent and sibling are saved away since this node could itself\n    // appear in argArr and we're about to move argArr to a document fragment.\n    var docFrag = createDocumentFragmentFromArguments(this.doc, argArr);\n\n    parentNode.insertBefore(docFrag, nextSibling);\n  }},\n\n  // Inserts a set of Node or String objects in the children list of this\n  // ChildNode's parent, just before this ChildNode.  String objects are\n  // inserted as the equivalent Text nodes.\n  before: { value: function before() {\n    var argArr = Array.prototype.slice.call(arguments);\n    var parentNode = this.parentNode, prevSibling = this.previousSibling;\n    if (parentNode === null) { return; }\n    // Find \"viable prev sibling\"; that is, prev one not in argArr\n    while (prevSibling && argArr.some(function(v) { return v===prevSibling; }))\n      prevSibling = prevSibling.previousSibling;\n    // ok, parent and sibling are saved away since this node could itself\n    // appear in argArr and we're about to move argArr to a document fragment.\n    var docFrag = createDocumentFragmentFromArguments(this.doc, argArr);\n\n    var nextSibling =\n        prevSibling ? prevSibling.nextSibling : parentNode.firstChild;\n    parentNode.insertBefore(docFrag, nextSibling);\n  }},\n\n  // Remove this node from its parent\n  remove: { value: function remove() {\n    if (this.parentNode === null) return;\n\n    // Send mutation events if necessary\n    if (this.doc) {\n      this.doc._preremoveNodeIterators(this);\n      if (this.rooted) {\n        this.doc.mutateRemove(this);\n      }\n    }\n\n    // Remove this node from its parents array of children\n    // and update the structure id for all ancestors\n    this._remove();\n\n    // Forget this node's parent\n    this.parentNode = null;\n  }},\n\n  // Remove this node w/o uprooting or sending mutation events\n  // (But do update the structure id for all ancestors)\n  _remove: { value: function _remove() {\n    var parent = this.parentNode;\n    if (parent === null) return;\n    if (parent._childNodes) {\n      parent._childNodes.splice(this.index, 1);\n    } else if (parent._firstChild === this) {\n      if (this._nextSibling === this) {\n        parent._firstChild = null;\n      } else {\n        parent._firstChild = this._nextSibling;\n      }\n    }\n    LinkedList.remove(this);\n    parent.modify();\n  }},\n\n  // Replace this node with the nodes or strings provided as arguments.\n  replaceWith: { value: function replaceWith() {\n    var argArr = Array.prototype.slice.call(arguments);\n    var parentNode = this.parentNode, nextSibling = this.nextSibling;\n    if (parentNode === null) { return; }\n    // Find \"viable next sibling\"; that is, next one not in argArr\n    while (nextSibling && argArr.some(function(v) { return v===nextSibling; }))\n      nextSibling = nextSibling.nextSibling;\n    // ok, parent and sibling are saved away since this node could itself\n    // appear in argArr and we're about to move argArr to a document fragment.\n    var docFrag = createDocumentFragmentFromArguments(this.doc, argArr);\n    if (this.parentNode === parentNode) {\n      parentNode.replaceChild(docFrag, this);\n    } else {\n      // `this` was inserted into docFrag\n      parentNode.insertBefore(docFrag, nextSibling);\n    }\n  }},\n\n};\n\nmodule.exports = ChildNode;\n","\"use strict\";\nvar Node = require('./Node');\n\nvar NonDocumentTypeChildNode = {\n\n  nextElementSibling: { get: function() {\n    if (this.parentNode) {\n      for (var kid = this.nextSibling; kid !== null; kid = kid.nextSibling) {\n        if (kid.nodeType === Node.ELEMENT_NODE) return kid;\n      }\n    }\n    return null;\n  }},\n\n  previousElementSibling: { get: function() {\n    if (this.parentNode) {\n      for (var kid = this.previousSibling; kid !== null; kid = kid.previousSibling) {\n        if (kid.nodeType === Node.ELEMENT_NODE) return kid;\n      }\n    }\n    return null;\n  }}\n\n};\n\nmodule.exports = NonDocumentTypeChildNode;\n","\"use strict\";\nmodule.exports = NamedNodeMap;\n\nvar utils = require('./utils');\n\n/* This is a hacky implementation of NamedNodeMap, intended primarily to\n * satisfy clients (like dompurify and the web-platform-tests) which check\n * to ensure that Node#attributes instanceof NamedNodeMap. */\n\nfunction NamedNodeMap(element) {\n  this.element = element;\n}\nObject.defineProperties(NamedNodeMap.prototype, {\n  length: { get: utils.shouldOverride },\n  item: { value: utils.shouldOverride },\n\n  getNamedItem: { value: function getNamedItem(qualifiedName) {\n    return this.element.getAttributeNode(qualifiedName);\n  } },\n  getNamedItemNS: { value: function getNamedItemNS(namespace, localName) {\n    return this.element.getAttributeNodeNS(namespace, localName);\n  } },\n  setNamedItem: { value: utils.nyi },\n  setNamedItemNS: { value: utils.nyi },\n  removeNamedItem: { value: function removeNamedItem(qualifiedName) {\n    var attr = this.element.getAttributeNode(qualifiedName);\n    if (attr) {\n      this.element.removeAttribute(qualifiedName);\n      return attr;\n    }\n    utils.NotFoundError();\n  } },\n  removeNamedItemNS: { value: function removeNamedItemNS(ns, lname) {\n    var attr = this.element.getAttributeNodeNS(ns, lname);\n    if (attr) {\n      this.element.removeAttributeNS(ns, lname);\n      return attr;\n    }\n    utils.NotFoundError();\n  } },\n});\n","\"use strict\";\nmodule.exports = Element;\n\nvar xml = require('./xmlnames');\nvar utils = require('./utils');\nvar NAMESPACE = utils.NAMESPACE;\nvar attributes = require('./attributes');\nvar Node = require('./Node');\nvar NodeList = require('./NodeList');\nvar NodeUtils = require('./NodeUtils');\nvar FilteredElementList = require('./FilteredElementList');\nvar DOMException = require('./DOMException');\nvar DOMTokenList = require('./DOMTokenList');\nvar select = require('./select');\nvar ContainerNode = require('./ContainerNode');\nvar ChildNode = require('./ChildNode');\nvar NonDocumentTypeChildNode = require('./NonDocumentTypeChildNode');\nvar NamedNodeMap = require('./NamedNodeMap');\n\nvar uppercaseCache = Object.create(null);\n\nfunction Element(doc, localName, namespaceURI, prefix) {\n  ContainerNode.call(this);\n  this.nodeType = Node.ELEMENT_NODE;\n  this.ownerDocument = doc;\n  this.localName = localName;\n  this.namespaceURI = namespaceURI;\n  this.prefix = prefix;\n  this._tagName = undefined;\n\n  // These properties maintain the set of attributes\n  this._attrsByQName = Object.create(null); // The qname->Attr map\n  this._attrsByLName = Object.create(null); // The ns|lname->Attr map\n  this._attrKeys = [];     // attr index -> ns|lname\n}\n\nfunction recursiveGetText(node, a) {\n  if (node.nodeType === Node.TEXT_NODE) {\n    a.push(node._data);\n  }\n  else {\n    for(var i = 0, n = node.childNodes.length;  i < n; i++)\n      recursiveGetText(node.childNodes[i], a);\n  }\n}\n\nElement.prototype = Object.create(ContainerNode.prototype, {\n  isHTML: { get: function isHTML() {\n    return this.namespaceURI === NAMESPACE.HTML && this.ownerDocument.isHTML;\n  }},\n  tagName: { get: function tagName() {\n    if (this._tagName === undefined) {\n      var tn;\n      if (this.prefix === null) {\n        tn = this.localName;\n      } else {\n        tn = this.prefix + ':' + this.localName;\n      }\n      if (this.isHTML) {\n        var up = uppercaseCache[tn];\n        if (!up) {\n          // Converting to uppercase can be slow, so cache the conversion.\n          uppercaseCache[tn] = up = utils.toASCIIUpperCase(tn);\n        }\n        tn = up;\n      }\n      this._tagName = tn;\n    }\n    return this._tagName;\n  }},\n  nodeName: { get: function() { return this.tagName; }},\n  nodeValue: {\n    get: function() {\n      return null;\n    },\n    set: function() {}\n  },\n  textContent: {\n    get: function() {\n      var strings = [];\n      recursiveGetText(this, strings);\n      return strings.join('');\n    },\n    set: function(newtext) {\n      this.removeChildren();\n      if (newtext !== null && newtext !== undefined && newtext !== '') {\n        this._appendChild(this.ownerDocument.createTextNode(newtext));\n      }\n    }\n  },\n  innerText: {\n    get: function() {\n      var strings = [];\n      recursiveGetText(this, strings);\n      // Strip and collapse whitespace\n      // This doesn't 100% match the browser behavior,\n      // but should cover most of the cases. This is also similar to\n      // how Angular's renderer used to work: the `textContent` and `innerText`\n      // were almost equivalent from the renderer perspective.\n      // See: https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent#differences_from_innertext\n      return strings.join('').replace(/[ \\t\\n\\f\\r]+/g, ' ').trim();\n    },\n    set: function(newtext) {\n      this.removeChildren();\n      if (newtext !== null && newtext !== undefined && newtext !== '') {\n        this._appendChild(this.ownerDocument.createTextNode(newtext));\n      }\n    }\n  },\n  innerHTML: {\n    get: function() {\n      return this.serialize();\n    },\n    set: utils.nyi\n  },\n  outerHTML: {\n    get: function() {\n      // \"the attribute must return the result of running the HTML fragment\n      // serialization algorithm on a fictional node whose only child is\n      // the context object\"\n      //\n      // The serialization logic is intentionally implemented in a separate\n      // `NodeUtils` helper instead of the more obvious choice of a private\n      // `_serializeOne()` method on the `Node.prototype` in order to avoid\n      // the megamorphic `this._serializeOne` property access, which reduces\n      // performance unnecessarily. If you need specialized behavior for a\n      // certain subclass, you'll need to implement that in `NodeUtils`.\n      // See https://github.com/fgnass/domino/pull/142 for more information.\n      return NodeUtils.serializeOne(this, { nodeType: 0 });\n    },\n    set: function(v) {\n      var document = this.ownerDocument;\n      var parent = this.parentNode;\n      if (parent === null) { return; }\n      if (parent.nodeType === Node.DOCUMENT_NODE) {\n        utils.NoModificationAllowedError();\n      }\n      if (parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n        parent = parent.ownerDocument.createElement(\"body\");\n      }\n      var parser = document.implementation.mozHTMLParser(\n        document._address,\n        parent\n      );\n      parser.parse(v===null?'':String(v), true);\n      this.replaceWith(parser._asDocumentFragment());\n    },\n  },\n\n  _insertAdjacent: { value: function _insertAdjacent(position, node) {\n    var first = false;\n    switch(position) {\n    case 'beforebegin':\n      first = true;\n      /* falls through */\n    case 'afterend':\n      var parent = this.parentNode;\n      if (parent === null) { return null; }\n      return parent.insertBefore(node, first ? this : this.nextSibling);\n    case 'afterbegin':\n      first = true;\n      /* falls through */\n    case 'beforeend':\n      return this.insertBefore(node, first ? this.firstChild : null);\n    default:\n      return utils.SyntaxError();\n    }\n  }},\n\n  insertAdjacentElement: { value: function insertAdjacentElement(position, element) {\n    if (element.nodeType !== Node.ELEMENT_NODE) {\n      throw new TypeError('not an element');\n    }\n    position = utils.toASCIILowerCase(String(position));\n    return this._insertAdjacent(position, element);\n  }},\n\n  insertAdjacentText: { value: function insertAdjacentText(position, data) {\n    var textNode = this.ownerDocument.createTextNode(data);\n    position = utils.toASCIILowerCase(String(position));\n    this._insertAdjacent(position, textNode);\n    // \"This method returns nothing because it existed before we had a chance\n    // to design it.\"\n  }},\n\n  insertAdjacentHTML: { value: function insertAdjacentHTML(position, text) {\n    position = utils.toASCIILowerCase(String(position));\n    text = String(text);\n    var context;\n    switch(position) {\n    case 'beforebegin':\n    case 'afterend':\n      context = this.parentNode;\n      if (context === null || context.nodeType === Node.DOCUMENT_NODE) {\n        utils.NoModificationAllowedError();\n      }\n      break;\n    case 'afterbegin':\n    case 'beforeend':\n      context = this;\n      break;\n    default:\n      utils.SyntaxError();\n    }\n    if ( (!(context instanceof Element)) || (\n      context.ownerDocument.isHTML &&\n      context.localName === 'html' &&\n      context.namespaceURI === NAMESPACE.HTML\n    ) ) {\n      context = context.ownerDocument.createElementNS(NAMESPACE.HTML, 'body');\n    }\n    var parser = this.ownerDocument.implementation.mozHTMLParser(\n      this.ownerDocument._address, context\n    );\n    parser.parse(text, true);\n    this._insertAdjacent(position, parser._asDocumentFragment());\n  }},\n\n  children: { get: function() {\n    if (!this._children) {\n      this._children = new ChildrenCollection(this);\n    }\n    return this._children;\n  }},\n\n  attributes: { get: function() {\n    if (!this._attributes) {\n      this._attributes = new AttributesArray(this);\n    }\n    return this._attributes;\n  }},\n\n\n  firstElementChild: { get: function() {\n    for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\n      if (kid.nodeType === Node.ELEMENT_NODE) return kid;\n    }\n    return null;\n  }},\n\n  lastElementChild: { get: function() {\n    for (var kid = this.lastChild; kid !== null; kid = kid.previousSibling) {\n      if (kid.nodeType === Node.ELEMENT_NODE) return kid;\n    }\n    return null;\n  }},\n\n  childElementCount: { get: function() {\n    return this.children.length;\n  }},\n\n\n  // Return the next element, in source order, after this one or\n  // null if there are no more.  If root element is specified,\n  // then don't traverse beyond its subtree.\n  //\n  // This is not a DOM method, but is convenient for\n  // lazy traversals of the tree.\n  nextElement: { value: function(root) {\n    if (!root) root = this.ownerDocument.documentElement;\n    var next = this.firstElementChild;\n    if (!next) {\n      // don't use sibling if we're at root\n      if (this===root) return null;\n      next = this.nextElementSibling;\n    }\n    if (next) return next;\n\n    // If we can't go down or across, then we have to go up\n    // and across to the parent sibling or another ancestor's\n    // sibling.  Be careful, though: if we reach the root\n    // element, or if we reach the documentElement, then\n    // the traversal ends.\n    for(var parent = this.parentElement;\n      parent && parent !== root;\n      parent = parent.parentElement) {\n\n      next = parent.nextElementSibling;\n      if (next) return next;\n    }\n\n    return null;\n  }},\n\n  // XXX:\n  // Tests are currently failing for this function.\n  // Awaiting resolution of:\n  // http://lists.w3.org/Archives/Public/www-dom/2011JulSep/0016.html\n  getElementsByTagName: { value: function getElementsByTagName(lname) {\n    var filter;\n    if (!lname) return new NodeList();\n    if (lname === '*')\n      filter = function() { return true; };\n    else if (this.isHTML)\n      filter = htmlLocalNameElementFilter(lname);\n    else\n      filter = localNameElementFilter(lname);\n\n    return new FilteredElementList(this, filter);\n  }},\n\n  getElementsByTagNameNS: { value: function getElementsByTagNameNS(ns, lname){\n    var filter;\n    if (ns === '*' && lname === '*')\n      filter = function() { return true; };\n    else if (ns === '*')\n      filter = localNameElementFilter(lname);\n    else if (lname === '*')\n      filter = namespaceElementFilter(ns);\n    else\n      filter = namespaceLocalNameElementFilter(ns, lname);\n\n    return new FilteredElementList(this, filter);\n  }},\n\n  getElementsByClassName: { value: function getElementsByClassName(names){\n    names = String(names).trim();\n    if (names === '') {\n      var result = new NodeList(); // Empty node list\n      return result;\n    }\n    names = names.split(/[ \\t\\r\\n\\f]+/);  // Split on ASCII whitespace\n    return new FilteredElementList(this, classNamesElementFilter(names));\n  }},\n\n  getElementsByName: { value: function getElementsByName(name) {\n    return new FilteredElementList(this, elementNameFilter(String(name)));\n  }},\n\n  // Utility methods used by the public API methods above\n  clone: { value: function clone() {\n    var e;\n\n    // XXX:\n    // Modify this to use the constructor directly or\n    // avoid error checking in some other way. In case we try\n    // to clone an invalid node that the parser inserted.\n    //\n    if (this.namespaceURI !== NAMESPACE.HTML || this.prefix || !this.ownerDocument.isHTML) {\n      e = this.ownerDocument.createElementNS(\n        this.namespaceURI, (this.prefix !== null) ?\n          (this.prefix + ':' + this.localName) : this.localName\n      );\n    } else {\n      e = this.ownerDocument.createElement(this.localName);\n    }\n\n    for(var i = 0, n = this._attrKeys.length; i < n; i++) {\n      var lname = this._attrKeys[i];\n      var a = this._attrsByLName[lname];\n      var b = a.cloneNode();\n      b._setOwnerElement(e);\n      e._attrsByLName[lname] = b;\n      e._addQName(b);\n    }\n    e._attrKeys = this._attrKeys.concat();\n\n    return e;\n  }},\n\n  isEqual: { value: function isEqual(that) {\n    if (this.localName !== that.localName ||\n      this.namespaceURI !== that.namespaceURI ||\n      this.prefix !== that.prefix ||\n      this._numattrs !== that._numattrs)\n      return false;\n\n    // Compare the sets of attributes, ignoring order\n    // and ignoring attribute prefixes.\n    for(var i = 0, n = this._numattrs; i < n; i++) {\n      var a = this._attr(i);\n      if (!that.hasAttributeNS(a.namespaceURI, a.localName))\n        return false;\n      if (that.getAttributeNS(a.namespaceURI,a.localName) !== a.value)\n        return false;\n    }\n\n    return true;\n  }},\n\n  // This is the 'locate a namespace prefix' algorithm from the\n  // DOM specification.  It is used by Node.lookupPrefix()\n  // (Be sure to compare DOM3 and DOM4 versions of spec.)\n  _lookupNamespacePrefix: { value: function _lookupNamespacePrefix(ns, originalElement) {\n    if (\n      this.namespaceURI &&\n      this.namespaceURI === ns &&\n      this.prefix !== null &&\n      originalElement.lookupNamespaceURI(this.prefix) === ns\n    ) {\n      return this.prefix;\n    }\n\n    for(var i = 0, n = this._numattrs; i < n; i++) {\n      var a = this._attr(i);\n      if (\n        a.prefix === 'xmlns' &&\n        a.value === ns &&\n        originalElement.lookupNamespaceURI(a.localName) === ns\n      ) {\n        return a.localName;\n      }\n    }\n\n    var parent = this.parentElement;\n    return parent ? parent._lookupNamespacePrefix(ns, originalElement) : null;\n  }},\n\n  // This is the 'locate a namespace' algorithm for Element nodes\n  // from the DOM Core spec.  It is used by Node#lookupNamespaceURI()\n  lookupNamespaceURI: { value: function lookupNamespaceURI(prefix) {\n    if (prefix === '' || prefix === undefined) { prefix = null; }\n    if (this.namespaceURI !== null && this.prefix === prefix)\n      return this.namespaceURI;\n\n    for(var i = 0, n = this._numattrs; i < n; i++) {\n      var a = this._attr(i);\n      if (a.namespaceURI === NAMESPACE.XMLNS) {\n        if (\n          (a.prefix === 'xmlns' && a.localName === prefix) ||\n          (prefix === null && a.prefix === null && a.localName === 'xmlns')\n        ) {\n          return a.value || null;\n        }\n      }\n    }\n\n    var parent = this.parentElement;\n    return parent ? parent.lookupNamespaceURI(prefix) : null;\n  }},\n\n  //\n  // Attribute handling methods and utilities\n  //\n\n  /*\n   * Attributes in the DOM are tricky:\n   *\n   * - there are the 8 basic get/set/has/removeAttribute{NS} methods\n   *\n   * - but many HTML attributes are also 'reflected' through IDL\n   *   attributes which means that they can be queried and set through\n   *   regular properties of the element.  There is just one attribute\n   *   value, but two ways to get and set it.\n   *\n   * - Different HTML element types have different sets of reflected\n     attributes.\n   *\n   * - attributes can also be queried and set through the .attributes\n   *   property of an element.  This property behaves like an array of\n   *   Attr objects.  The value property of each Attr is writeable, so\n   *   this is a third way to read and write attributes.\n   *\n   * - for efficiency, we really want to store attributes in some kind\n   *   of name->attr map.  But the attributes[] array is an array, not a\n   *   map, which is kind of unnatural.\n   *\n   * - When using namespaces and prefixes, and mixing the NS methods\n   *   with the non-NS methods, it is apparently actually possible for\n   *   an attributes[] array to have more than one attribute with the\n   *   same qualified name.  And certain methods must operate on only\n   *   the first attribute with such a name.  So for these methods, an\n   *   inefficient array-like data structure would be easier to\n   *   implement.\n   *\n   * - The attributes[] array is live, not a snapshot, so changes to the\n   *   attributes must be immediately visible through existing arrays.\n   *\n   * - When attributes are queried and set through IDL properties\n   *   (instead of the get/setAttributes() method or the attributes[]\n   *   array) they may be subject to type conversions, URL\n   *   normalization, etc., so some extra processing is required in that\n   *   case.\n   *\n   * - But access through IDL properties is probably the most common\n   *   case, so we'd like that to be as fast as possible.\n   *\n   * - We can't just store attribute values in their parsed idl form,\n   *   because setAttribute() has to return whatever string is passed to\n   *   getAttribute even if it is not a legal, parseable value. So\n   *   attribute values must be stored in unparsed string form.\n   *\n   * - We need to be able to send change notifications or mutation\n   *   events of some sort to the renderer whenever an attribute value\n   *   changes, regardless of the way in which it changes.\n   *\n   * - Some attributes, such as id and class affect other parts of the\n   *   DOM API, like getElementById and getElementsByClassName and so\n   *   for efficiency, we need to specially track changes to these\n   *   special attributes.\n   *\n   * - Some attributes like class have different names (className) when\n   *   reflected.\n   *\n   * - Attributes whose names begin with the string 'data-' are treated\n     specially.\n   *\n   * - Reflected attributes that have a boolean type in IDL have special\n   *   behavior: setting them to false (in IDL) is the same as removing\n   *   them with removeAttribute()\n   *\n   * - numeric attributes (like HTMLElement.tabIndex) can have default\n   *   values that must be returned by the idl getter even if the\n   *   content attribute does not exist. (The default tabIndex value\n   *   actually varies based on the type of the element, so that is a\n   *   tricky one).\n   *\n   * See\n   * http://www.whatwg.org/specs/web-apps/current-work/multipage/urls.html#reflect\n   * for rules on how attributes are reflected.\n   *\n   */\n\n  getAttribute: { value: function getAttribute(qname) {\n    var attr = this.getAttributeNode(qname);\n    return attr ? attr.value : null;\n  }},\n\n  getAttributeNS: { value: function getAttributeNS(ns, lname) {\n    var attr = this.getAttributeNodeNS(ns, lname);\n    return attr ? attr.value : null;\n  }},\n\n  getAttributeNode: { value: function getAttributeNode(qname) {\n    qname = String(qname);\n    if (/[A-Z]/.test(qname) && this.isHTML)\n      qname = utils.toASCIILowerCase(qname);\n    var attr = this._attrsByQName[qname];\n    if (!attr) return null;\n\n    if (Array.isArray(attr))  // If there is more than one\n      attr = attr[0];         // use the first\n\n    return attr;\n  }},\n\n  getAttributeNodeNS: { value: function getAttributeNodeNS(ns, lname) {\n    ns = (ns === undefined || ns === null) ? '' : String(ns);\n    lname = String(lname);\n    var attr = this._attrsByLName[ns + '|' + lname];\n    return attr ? attr : null;\n  }},\n\n  hasAttribute: { value: function hasAttribute(qname) {\n    qname = String(qname);\n    if (/[A-Z]/.test(qname) && this.isHTML)\n      qname = utils.toASCIILowerCase(qname);\n    return this._attrsByQName[qname] !== undefined;\n  }},\n\n  hasAttributeNS: { value: function hasAttributeNS(ns, lname) {\n    ns = (ns === undefined || ns === null) ? '' : String(ns);\n    lname = String(lname);\n    var key = ns + '|' + lname;\n    return this._attrsByLName[key] !== undefined;\n  }},\n\n  hasAttributes: { value: function hasAttributes() {\n    return this._numattrs > 0;\n  }},\n\n  toggleAttribute: { value: function toggleAttribute(qname, force) {\n    qname = String(qname);\n    if (!xml.isValidName(qname)) utils.InvalidCharacterError();\n    if (/[A-Z]/.test(qname) && this.isHTML)\n      qname = utils.toASCIILowerCase(qname);\n    var a = this._attrsByQName[qname];\n    if (a === undefined) {\n      if (force === undefined || force === true) {\n        this._setAttribute(qname, '');\n        return true;\n      }\n      return false;\n    } else {\n      if (force === undefined || force === false) {\n        this.removeAttribute(qname);\n        return false;\n      }\n      return true;\n    }\n  }},\n\n  // Set the attribute without error checking. The parser uses this.\n  _setAttribute: { value: function _setAttribute(qname, value) {\n    // XXX: the spec says that this next search should be done\n    // on the local name, but I think that is an error.\n    // email pending on www-dom about it.\n    var attr = this._attrsByQName[qname];\n    var isnew;\n    if (!attr) {\n      attr = this._newattr(qname);\n      isnew = true;\n    }\n    else {\n      if (Array.isArray(attr)) attr = attr[0];\n    }\n\n    // Now set the attribute value on the new or existing Attr object.\n    // The Attr.value setter method handles mutation events, etc.\n    attr.value = value;\n    if (this._attributes) this._attributes[qname] = attr;\n    if (isnew && this._newattrhook) this._newattrhook(qname, value);\n  }},\n\n  // Check for errors, and then set the attribute\n  setAttribute: { value: function setAttribute(qname, value) {\n    qname = String(qname);\n    if (!xml.isValidName(qname)) utils.InvalidCharacterError();\n    if (/[A-Z]/.test(qname) && this.isHTML)\n      qname = utils.toASCIILowerCase(qname);\n    this._setAttribute(qname, String(value));\n  }},\n\n\n  // The version with no error checking used by the parser\n  _setAttributeNS: { value: function _setAttributeNS(ns, qname, value) {\n    var pos = qname.indexOf(':'), prefix, lname;\n    if (pos < 0) {\n      prefix = null;\n      lname = qname;\n    }\n    else {\n      prefix = qname.substring(0, pos);\n      lname = qname.substring(pos+1);\n    }\n\n    if (ns === '' || ns === undefined) ns = null;\n    var key = (ns === null ? '' : ns) + '|' + lname;\n\n    var attr = this._attrsByLName[key];\n    var isnew;\n    if (!attr) {\n      attr = new Attr(this, lname, prefix, ns);\n      isnew = true;\n      this._attrsByLName[key] = attr;\n      if (this._attributes) {\n        this._attributes[this._attrKeys.length] = attr;\n      }\n      this._attrKeys.push(key);\n\n      // We also have to make the attr searchable by qname.\n      // But we have to be careful because there may already\n      // be an attr with this qname.\n      this._addQName(attr);\n    }\n    else if (false /* changed in DOM 4 */) {\n      // Calling setAttributeNS() can change the prefix of an\n      // existing attribute in DOM 2/3.\n      if (attr.prefix !== prefix) {\n        // Unbind the old qname\n        this._removeQName(attr);\n        // Update the prefix\n        attr.prefix = prefix;\n        // Bind the new qname\n        this._addQName(attr);\n      }\n\n    }\n    attr.value = value; // Automatically sends mutation event\n    if (isnew && this._newattrhook) this._newattrhook(qname, value);\n  }},\n\n  // Do error checking then call _setAttributeNS\n  setAttributeNS: { value: function setAttributeNS(ns, qname, value) {\n    // Convert parameter types according to WebIDL\n    ns = (ns === null || ns === undefined || ns === '') ? null : String(ns);\n    qname = String(qname);\n    if (!xml.isValidQName(qname)) utils.InvalidCharacterError();\n\n    var pos = qname.indexOf(':');\n    var prefix = (pos < 0) ? null : qname.substring(0, pos);\n\n    if ((prefix !== null && ns === null) ||\n      (prefix === 'xml' && ns !== NAMESPACE.XML) ||\n      ((qname === 'xmlns' || prefix === 'xmlns') &&\n       (ns !== NAMESPACE.XMLNS)) ||\n      (ns === NAMESPACE.XMLNS &&\n       !(qname === 'xmlns' || prefix === 'xmlns')))\n      utils.NamespaceError();\n\n    this._setAttributeNS(ns, qname, String(value));\n  }},\n\n  setAttributeNode: { value: function setAttributeNode(attr) {\n    if (attr.ownerElement !== null && attr.ownerElement !== this) {\n      throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR);\n    }\n    var result = null;\n    var oldAttrs = this._attrsByQName[attr.name];\n    if (oldAttrs) {\n      if (!Array.isArray(oldAttrs)) { oldAttrs = [ oldAttrs ]; }\n      if (oldAttrs.some(function(a) { return a===attr; })) {\n        return attr;\n      } else if (attr.ownerElement !== null) {\n        throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR);\n      }\n      oldAttrs.forEach(function(a) { this.removeAttributeNode(a); }, this);\n      result = oldAttrs[0];\n    }\n    this.setAttributeNodeNS(attr);\n    return result;\n  }},\n\n  setAttributeNodeNS: { value: function setAttributeNodeNS(attr) {\n    if (attr.ownerElement !== null) {\n      throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR);\n    }\n    var ns = attr.namespaceURI;\n    var key = (ns === null ? '' : ns) + '|' + attr.localName;\n    var oldAttr = this._attrsByLName[key];\n    if (oldAttr) { this.removeAttributeNode(oldAttr); }\n    attr._setOwnerElement(this);\n    this._attrsByLName[key] = attr;\n    if (this._attributes) {\n      this._attributes[this._attrKeys.length] = attr;\n    }\n    this._attrKeys.push(key);\n    this._addQName(attr);\n    if (this._newattrhook) this._newattrhook(attr.name, attr.value);\n    return oldAttr || null;\n  }},\n\n  removeAttribute: { value: function removeAttribute(qname) {\n    qname = String(qname);\n    if (/[A-Z]/.test(qname) && this.isHTML)\n      qname = utils.toASCIILowerCase(qname);\n\n    var attr = this._attrsByQName[qname];\n    if (!attr) return;\n\n    // If there is more than one match for this qname\n    // so don't delete the qname mapping, just remove the first\n    // element from it.\n    if (Array.isArray(attr)) {\n      if (attr.length > 2) {\n        attr = attr.shift();  // remove it from the array\n      }\n      else {\n        this._attrsByQName[qname] = attr[1];\n        attr = attr[0];\n      }\n    }\n    else {\n      // only a single match, so remove the qname mapping\n      this._attrsByQName[qname] = undefined;\n    }\n\n    var ns = attr.namespaceURI;\n    // Now attr is the removed attribute.  Figure out its\n    // ns+lname key and remove it from the other mapping as well.\n    var key = (ns === null ? '' : ns) + '|' + attr.localName;\n    this._attrsByLName[key] = undefined;\n\n    var i = this._attrKeys.indexOf(key);\n    if (this._attributes) {\n      Array.prototype.splice.call(this._attributes, i, 1);\n      this._attributes[qname] = undefined;\n    }\n    this._attrKeys.splice(i, 1);\n\n    // Onchange handler for the attribute\n    var onchange = attr.onchange;\n    attr._setOwnerElement(null);\n    if (onchange) {\n      onchange.call(attr, this, attr.localName, attr.value, null);\n    }\n    // Mutation event\n    if (this.rooted) this.ownerDocument.mutateRemoveAttr(attr);\n  }},\n\n  removeAttributeNS: { value: function removeAttributeNS(ns, lname) {\n    ns = (ns === undefined || ns === null) ? '' : String(ns);\n    lname = String(lname);\n    var key = ns + '|' + lname;\n    var attr = this._attrsByLName[key];\n    if (!attr) return;\n\n    this._attrsByLName[key] = undefined;\n\n    var i = this._attrKeys.indexOf(key);\n    if (this._attributes) {\n      Array.prototype.splice.call(this._attributes, i, 1);\n    }\n    this._attrKeys.splice(i, 1);\n\n    // Now find the same Attr object in the qname mapping and remove it\n    // But be careful because there may be more than one match.\n    this._removeQName(attr);\n\n    // Onchange handler for the attribute\n    var onchange = attr.onchange;\n    attr._setOwnerElement(null);\n    if (onchange) {\n      onchange.call(attr, this, attr.localName, attr.value, null);\n    }\n    // Mutation event\n    if (this.rooted) this.ownerDocument.mutateRemoveAttr(attr);\n  }},\n\n  removeAttributeNode: { value: function removeAttributeNode(attr) {\n    var ns = attr.namespaceURI;\n    var key = (ns === null ? '' : ns) + '|' + attr.localName;\n    if (this._attrsByLName[key] !== attr) {\n      utils.NotFoundError();\n    }\n    this.removeAttributeNS(ns, attr.localName);\n    return attr;\n  }},\n\n  getAttributeNames: { value: function getAttributeNames() {\n    var elt = this;\n    return this._attrKeys.map(function(key) {\n      return elt._attrsByLName[key].name;\n    });\n  }},\n\n  // This 'raw' version of getAttribute is used by the getter functions\n  // of reflected attributes. It skips some error checking and\n  // namespace steps\n  _getattr: { value: function _getattr(qname) {\n    // Assume that qname is already lowercased, so don't do it here.\n    // Also don't check whether attr is an array: a qname with no\n    // prefix will never have two matching Attr objects (because\n    // setAttributeNS doesn't allow a non-null namespace with a\n    // null prefix.\n    var attr = this._attrsByQName[qname];\n    return attr ? attr.value : null;\n  }},\n\n  // The raw version of setAttribute for reflected idl attributes.\n  _setattr: { value: function _setattr(qname, value) {\n    var attr = this._attrsByQName[qname];\n    var isnew;\n    if (!attr) {\n      attr = this._newattr(qname);\n      isnew = true;\n    }\n    attr.value = String(value);\n    if (this._attributes) this._attributes[qname] = attr;\n    if (isnew && this._newattrhook) this._newattrhook(qname, value);\n  }},\n\n  // Create a new Attr object, insert it, and return it.\n  // Used by setAttribute() and by set()\n  _newattr: { value: function _newattr(qname) {\n    var attr = new Attr(this, qname, null, null);\n    var key = '|' + qname;\n    this._attrsByQName[qname] = attr;\n    this._attrsByLName[key] = attr;\n    if (this._attributes) {\n      this._attributes[this._attrKeys.length] = attr;\n    }\n    this._attrKeys.push(key);\n    return attr;\n  }},\n\n  // Add a qname->Attr mapping to the _attrsByQName object, taking into\n  // account that there may be more than one attr object with the\n  // same qname\n  _addQName: { value: function(attr) {\n    var qname = attr.name;\n    var existing = this._attrsByQName[qname];\n    if (!existing) {\n      this._attrsByQName[qname] = attr;\n    }\n    else if (Array.isArray(existing)) {\n      existing.push(attr);\n    }\n    else {\n      this._attrsByQName[qname] = [existing, attr];\n    }\n    if (this._attributes) this._attributes[qname] = attr;\n  }},\n\n  // Remove a qname->Attr mapping to the _attrsByQName object, taking into\n  // account that there may be more than one attr object with the\n  // same qname\n  _removeQName: { value: function(attr) {\n    var qname = attr.name;\n    var target = this._attrsByQName[qname];\n\n    if (Array.isArray(target)) {\n      var idx = target.indexOf(attr);\n      utils.assert(idx !== -1); // It must be here somewhere\n      if (target.length === 2) {\n        this._attrsByQName[qname] = target[1-idx];\n        if (this._attributes) {\n          this._attributes[qname] = this._attrsByQName[qname];\n        }\n      } else {\n        target.splice(idx, 1);\n        if (this._attributes && this._attributes[qname] === attr) {\n          this._attributes[qname] = target[0];\n        }\n      }\n    }\n    else {\n      utils.assert(target === attr);  // If only one, it must match\n      this._attrsByQName[qname] = undefined;\n      if (this._attributes) {\n        this._attributes[qname] = undefined;\n      }\n    }\n  }},\n\n  // Return the number of attributes\n  _numattrs: { get: function() { return this._attrKeys.length; }},\n  // Return the nth Attr object\n  _attr: { value: function(n) {\n    return this._attrsByLName[this._attrKeys[n]];\n  }},\n\n  // Define getters and setters for an 'id' property that reflects\n  // the content attribute 'id'.\n  id: attributes.property({name: 'id'}),\n\n  // Define getters and setters for a 'className' property that reflects\n  // the content attribute 'class'.\n  className: attributes.property({name: 'class'}),\n\n  classList: { get: function() {\n    var self = this;\n    if (this._classList) {\n      return this._classList;\n    }\n    var dtlist = new DOMTokenList(\n      function() {\n        return self.className || \"\";\n      },\n      function(v) {\n        self.className = v;\n      }\n    );\n    this._classList = dtlist;\n    return dtlist;\n  }, set: function(v) { this.className = v; }},\n\n  matches: { value: function(selector) {\n    return select.matches(this, selector);\n  }},\n\n  closest: { value: function(selector) {\n    var el = this;\n\tdo {\n\t  if (el.matches && el.matches(selector)) { return el; }\n\t  el = el.parentElement || el.parentNode;\n\t} while (el !== null && el.nodeType === Node.ELEMENT_NODE);\n\treturn null;\n  }},\n\n  querySelector: { value: function(selector) {\n    return select(selector, this)[0];\n  }},\n\n  querySelectorAll: { value: function(selector) {\n    var nodes = select(selector, this);\n    return nodes.item ? nodes : new NodeList(nodes);\n  }}\n\n});\n\nObject.defineProperties(Element.prototype, ChildNode);\nObject.defineProperties(Element.prototype, NonDocumentTypeChildNode);\n\n// Register special handling for the id attribute\nattributes.registerChangeHandler(Element, 'id',\n function(element, lname, oldval, newval) {\n   if (element.rooted) {\n     if (oldval) {\n       element.ownerDocument.delId(oldval, element);\n     }\n     if (newval) {\n       element.ownerDocument.addId(newval, element);\n     }\n   }\n }\n);\nattributes.registerChangeHandler(Element, 'class',\n function(element, lname, oldval, newval) {\n   if (element._classList) { element._classList._update(); }\n }\n);\n\n// The Attr class represents a single attribute.  The values in\n// _attrsByQName and _attrsByLName are instances of this class.\nfunction Attr(elt, lname, prefix, namespace, value) {\n  // localName and namespace are constant for any attr object.\n  // But value may change.  And so can prefix, and so, therefore can name.\n  this.localName = lname;\n  this.prefix = (prefix===null || prefix==='') ? null : ('' + prefix);\n  this.namespaceURI = (namespace===null || namespace==='') ? null : ('' + namespace);\n  this.data = value;\n  // Set ownerElement last to ensure it is hooked up to onchange handler\n  this._setOwnerElement(elt);\n}\n\n// In DOM 3 Attr was supposed to extend Node; in DOM 4 that was abandoned.\nAttr.prototype = Object.create(Object.prototype, {\n  ownerElement: {\n    get: function() { return this._ownerElement; },\n  },\n  _setOwnerElement: { value: function _setOwnerElement(elt) {\n    this._ownerElement = elt;\n    if (this.prefix === null && this.namespaceURI === null && elt) {\n      this.onchange = elt._attributeChangeHandlers[this.localName];\n    } else {\n      this.onchange = null;\n    }\n  }},\n\n  name: { get: function() {\n    return this.prefix ? this.prefix + ':' + this.localName : this.localName;\n  }},\n\n  specified: { get: function() {\n    // Deprecated\n    return true;\n  }},\n\n  value: {\n    get: function() {\n      return this.data;\n    },\n    set: function(value) {\n      var oldval = this.data;\n      value = (value === undefined) ? '' : value + '';\n      if (value === oldval) return;\n\n      this.data = value;\n\n      // Run the onchange hook for the attribute\n      // if there is one.\n      if (this.ownerElement) {\n        if (this.onchange)\n          this.onchange(this.ownerElement,this.localName, oldval, value);\n\n        // Generate a mutation event if the element is rooted\n        if (this.ownerElement.rooted)\n          this.ownerElement.ownerDocument.mutateAttr(this, oldval);\n      }\n    },\n  },\n\n  cloneNode: { value: function cloneNode(deep) {\n    // Both this method and Document#createAttribute*() create unowned Attrs\n    return new Attr(\n      null, this.localName, this.prefix, this.namespaceURI, this.data\n    );\n  }},\n\n  // Legacy aliases (see gh#70 and https://dom.spec.whatwg.org/#interface-attr)\n  nodeType: { get: function() { return Node.ATTRIBUTE_NODE; } },\n  nodeName: { get: function() { return this.name; } },\n  nodeValue: {\n    get: function() { return this.value; },\n    set: function(v) { this.value = v; },\n  },\n  textContent: {\n    get: function() { return this.value; },\n    set: function(v) {\n      if (v === null || v === undefined) { v = ''; }\n      this.value = v;\n    },\n  },\n  innerText: {\n    get: function() { return this.value; },\n    set: function(v) {\n      if (v === null || v === undefined) { v = ''; }\n      this.value = v;\n    },\n  },\n});\n// Sneakily export this class for use by Document.createAttribute()\nElement._Attr = Attr;\n\n// The attributes property of an Element will be an instance of this class.\n// This class is really just a dummy, though. It only defines a length\n// property and an item() method. The AttrArrayProxy that\n// defines the public API just uses the Element object itself.\nfunction AttributesArray(elt) {\n  NamedNodeMap.call(this, elt);\n  for (var name in elt._attrsByQName) {\n    this[name] = elt._attrsByQName[name];\n  }\n  for (var i = 0; i < elt._attrKeys.length; i++) {\n    this[i] = elt._attrsByLName[elt._attrKeys[i]];\n  }\n}\nAttributesArray.prototype = Object.create(NamedNodeMap.prototype, {\n  length: { get: function() {\n    return this.element._attrKeys.length;\n  }, set: function() { /* ignore */ } },\n  item: { value: function(n) {\n    /* jshint bitwise: false */\n    n = n >>> 0;\n    if (n >= this.length) { return null; }\n    return this.element._attrsByLName[this.element._attrKeys[n]];\n    /* jshint bitwise: true */\n  } },\n});\n\n// We can't make direct array access work (without Proxies, node >=6)\n// but we can make `Array.from(node.attributes)` and for-of loops work.\nif (globalThis.Symbol?.iterator) {\n    AttributesArray.prototype[globalThis.Symbol.iterator] = function() {\n        var i=0, n=this.length, self=this;\n        return {\n            next: function() {\n                if (i<n) return { value: self.item(i++) };\n                return { done: true };\n            }\n        };\n    };\n}\n\n\n// The children property of an Element will be an instance of this class.\n// It defines length, item() and namedItem() and will be wrapped by an\n// HTMLCollection when exposed through the DOM.\nfunction ChildrenCollection(e) {\n  this.element = e;\n  this.updateCache();\n}\n\nChildrenCollection.prototype = Object.create(Object.prototype, {\n  length: { get: function() {\n    this.updateCache();\n    return this.childrenByNumber.length;\n  } },\n  item: { value: function item(n) {\n    this.updateCache();\n    return this.childrenByNumber[n] || null;\n  } },\n\n  namedItem: { value: function namedItem(name) {\n    this.updateCache();\n    return this.childrenByName[name] || null;\n  } },\n\n  // This attribute returns the entire name->element map.\n  // It is not part of the HTMLCollection API, but we need it in\n  // src/HTMLCollectionProxy\n  namedItems: { get: function() {\n    this.updateCache();\n    return this.childrenByName;\n  } },\n\n  updateCache: { value: function updateCache() {\n    var namedElts = /^(a|applet|area|embed|form|frame|frameset|iframe|img|object)$/;\n    if (this.lastModTime !== this.element.lastModTime) {\n      this.lastModTime = this.element.lastModTime;\n\n      var n = this.childrenByNumber && this.childrenByNumber.length || 0;\n      for(var i = 0; i < n; i++) {\n        this[i] = undefined;\n      }\n\n      this.childrenByNumber = [];\n      this.childrenByName = Object.create(null);\n\n      for (var c = this.element.firstChild; c !== null; c = c.nextSibling) {\n        if (c.nodeType === Node.ELEMENT_NODE) {\n\n          this[this.childrenByNumber.length] = c;\n          this.childrenByNumber.push(c);\n\n          // XXX Are there any requirements about the namespace\n          // of the id property?\n          var id = c.getAttribute('id');\n\n          // If there is an id that is not already in use...\n          if (id && !this.childrenByName[id])\n            this.childrenByName[id] = c;\n\n          // For certain HTML elements we check the name attribute\n          var name = c.getAttribute('name');\n          if (name &&\n            this.element.namespaceURI === NAMESPACE.HTML &&\n            namedElts.test(this.element.localName) &&\n            !this.childrenByName[name])\n            this.childrenByName[id] = c;\n        }\n      }\n    }\n  } },\n});\n\n// These functions return predicates for filtering elements.\n// They're used by the Document and Element classes for methods like\n// getElementsByTagName and getElementsByClassName\n\nfunction localNameElementFilter(lname) {\n  return function(e) { return e.localName === lname; };\n}\n\nfunction htmlLocalNameElementFilter(lname) {\n  var lclname = utils.toASCIILowerCase(lname);\n  if (lclname === lname)\n    return localNameElementFilter(lname);\n\n  return function(e) {\n    return e.isHTML ? e.localName === lclname : e.localName === lname;\n  };\n}\n\nfunction namespaceElementFilter(ns) {\n  return function(e) { return e.namespaceURI === ns; };\n}\n\nfunction namespaceLocalNameElementFilter(ns, lname) {\n  return function(e) {\n    return e.namespaceURI === ns && e.localName === lname;\n  };\n}\n\nfunction classNamesElementFilter(names) {\n  return function(e) {\n    return names.every(function(n) { return e.classList.contains(n); });\n  };\n}\n\nfunction elementNameFilter(name) {\n  return function(e) {\n    // All the *HTML elements* in the document with the given name attribute\n    if (e.namespaceURI !== NAMESPACE.HTML) { return false; }\n    return e.getAttribute('name') === name;\n  };\n}\n","\"use strict\";\nmodule.exports = Leaf;\n\nvar Node = require('./Node');\nvar NodeList = require('./NodeList');\nvar utils = require('./utils');\nvar HierarchyRequestError = utils.HierarchyRequestError;\nvar NotFoundError = utils.NotFoundError;\n\n// This class defines common functionality for node subtypes that\n// can never have children\nfunction Leaf() {\n  Node.call(this);\n}\n\nLeaf.prototype = Object.create(Node.prototype, {\n  hasChildNodes: { value: function() { return false; }},\n  firstChild: { value: null },\n  lastChild: { value: null },\n  insertBefore: { value: function(node, child) {\n    if (!node.nodeType) throw new TypeError('not a node');\n    HierarchyRequestError();\n  }},\n  replaceChild: { value: function(node, child) {\n    if (!node.nodeType) throw new TypeError('not a node');\n    HierarchyRequestError();\n  }},\n  removeChild: { value: function(node) {\n    if (!node.nodeType) throw new TypeError('not a node');\n    NotFoundError();\n  }},\n  removeChildren: { value: function() { /* no op */ }},\n  childNodes: { get: function() {\n    if (!this._childNodes) this._childNodes = new NodeList();\n    return this._childNodes;\n  }}\n});\n","/* jshint bitwise: false */\n\"use strict\";\nmodule.exports = CharacterData;\n\nvar Leaf = require('./Leaf');\nvar utils = require('./utils');\nvar ChildNode = require('./ChildNode');\nvar NonDocumentTypeChildNode = require('./NonDocumentTypeChildNode');\n\nfunction CharacterData() {\n  Leaf.call(this);\n}\n\nCharacterData.prototype = Object.create(Leaf.prototype, {\n  // DOMString substringData(unsigned long offset,\n  //               unsigned long count);\n  // The substringData(offset, count) method must run these steps:\n  //\n  //     If offset is greater than the context object's\n  //     length, throw an INDEX_SIZE_ERR exception and\n  //     terminate these steps.\n  //\n  //     If offset+count is greater than the context\n  //     object's length, return a DOMString whose value is\n  //     the UTF-16 code units from the offsetth UTF-16 code\n  //     unit to the end of data.\n  //\n  //     Return a DOMString whose value is the UTF-16 code\n  //     units from the offsetth UTF-16 code unit to the\n  //     offset+countth UTF-16 code unit in data.\n  substringData: { value: function substringData(offset, count) {\n    if (arguments.length < 2) { throw new TypeError(\"Not enough arguments\"); }\n    // Convert arguments to WebIDL \"unsigned long\"\n    offset = offset >>> 0;\n    count = count >>> 0;\n    if (offset > this.data.length || offset < 0 || count < 0) {\n      utils.IndexSizeError();\n    }\n    return this.data.substring(offset, offset+count);\n  }},\n\n  // void appendData(DOMString data);\n  // The appendData(data) method must append data to the context\n  // object's data.\n  appendData: { value: function appendData(data) {\n    if (arguments.length < 1) { throw new TypeError(\"Not enough arguments\"); }\n    this.data += String(data);\n  }},\n\n  // void insertData(unsigned long offset, DOMString data);\n  // The insertData(offset, data) method must run these steps:\n  //\n  //     If offset is greater than the context object's\n  //     length, throw an INDEX_SIZE_ERR exception and\n  //     terminate these steps.\n  //\n  //     Insert data into the context object's data after\n  //     offset UTF-16 code units.\n  //\n  insertData: { value: function insertData(offset, data) {\n    return this.replaceData(offset, 0, data);\n  }},\n\n\n  // void deleteData(unsigned long offset, unsigned long count);\n  // The deleteData(offset, count) method must run these steps:\n  //\n  //     If offset is greater than the context object's\n  //     length, throw an INDEX_SIZE_ERR exception and\n  //     terminate these steps.\n  //\n  //     If offset+count is greater than the context\n  //     object's length var count be length-offset.\n  //\n  //     Starting from offset UTF-16 code units remove count\n  //     UTF-16 code units from the context object's data.\n  deleteData: { value: function deleteData(offset, count) {\n    return this.replaceData(offset, count, '');\n  }},\n\n\n  // void replaceData(unsigned long offset, unsigned long count,\n  //          DOMString data);\n  //\n  // The replaceData(offset, count, data) method must act as\n  // if the deleteData() method is invoked with offset and\n  // count as arguments followed by the insertData() method\n  // with offset and data as arguments and re-throw any\n  // exceptions these methods might have thrown.\n  replaceData: { value: function replaceData(offset, count, data) {\n    var curtext = this.data, len = curtext.length;\n    // Convert arguments to correct WebIDL type\n    offset = offset >>> 0;\n    count = count >>> 0;\n    data = String(data);\n\n    if (offset > len || offset < 0) utils.IndexSizeError();\n\n    if (offset+count > len)\n      count = len - offset;\n\n    var prefix = curtext.substring(0, offset),\n    suffix = curtext.substring(offset+count);\n\n    this.data = prefix + data + suffix;\n  }},\n\n  // Utility method that Node.isEqualNode() calls to test Text and\n  // Comment nodes for equality.  It is okay to put it here, since\n  // Node will have already verified that nodeType is equal\n  isEqual: { value: function isEqual(n) {\n    return this._data === n._data;\n  }},\n\n  length: { get: function() { return this.data.length; }}\n\n});\n\nObject.defineProperties(CharacterData.prototype, ChildNode);\nObject.defineProperties(CharacterData.prototype, NonDocumentTypeChildNode);\n","\"use strict\";\nmodule.exports = Text;\n\nvar utils = require('./utils');\nvar Node = require('./Node');\nvar CharacterData = require('./CharacterData');\n\nfunction Text(doc, data) {\n  CharacterData.call(this);\n  this.nodeType = Node.TEXT_NODE;\n  this.ownerDocument = doc;\n  this._data = data;\n  this._index = undefined;\n}\n\nvar nodeValue = {\n  get: function() { return this._data; },\n  set: function(v) {\n    if (v === null || v === undefined) { v = ''; } else { v = String(v); }\n    if (v === this._data) return;\n    this._data = v;\n    if (this.rooted)\n      this.ownerDocument.mutateValue(this);\n    if (this.parentNode &&\n      this.parentNode._textchangehook)\n      this.parentNode._textchangehook(this);\n  }\n};\n\nText.prototype = Object.create(CharacterData.prototype, {\n  nodeName: { value: \"#text\" },\n  // These three attributes are all the same.\n  // The data attribute has a [TreatNullAs=EmptyString] but we'll\n  // implement that at the interface level\n  nodeValue: nodeValue,\n  textContent: nodeValue,\n  innerText: nodeValue,\n  data: {\n    get: nodeValue.get,\n    set: function(v) {\n      nodeValue.set.call(this, v===null ? '' : String(v));\n    },\n  },\n\n  splitText: { value: function splitText(offset) {\n    if (offset > this._data.length || offset < 0) utils.IndexSizeError();\n\n    var newdata = this._data.substring(offset),\n      newnode = this.ownerDocument.createTextNode(newdata);\n    this.data = this.data.substring(0, offset);\n\n    var parent = this.parentNode;\n    if (parent !== null)\n      parent.insertBefore(newnode, this.nextSibling);\n\n    return newnode;\n  }},\n\n  wholeText: { get: function wholeText() {\n    var result = this.textContent;\n    for (var next = this.nextSibling; next; next = next.nextSibling) {\n      if (next.nodeType !== Node.TEXT_NODE) { break; }\n      result += next.textContent;\n    }\n    return result;\n  }},\n  // Obsolete, removed from spec.\n  replaceWholeText: { value: utils.nyi },\n\n  // Utility methods\n  clone: { value: function clone() {\n    return new Text(this.ownerDocument, this._data);\n  }},\n\n});\n","\"use strict\";\nmodule.exports = Comment;\n\nvar Node = require('./Node');\nvar CharacterData = require('./CharacterData');\n\nfunction Comment(doc, data) {\n  CharacterData.call(this);\n  this.nodeType = Node.COMMENT_NODE;\n  this.ownerDocument = doc;\n  this._data = data;\n}\n\nvar nodeValue = {\n  get: function() { return this._data; },\n  set: function(v) {\n    if (v === null || v === undefined) { v = ''; } else { v = String(v); }\n    this._data = v;\n    if (this.rooted)\n      this.ownerDocument.mutateValue(this);\n  }\n};\n\nComment.prototype = Object.create(CharacterData.prototype, {\n  nodeName: { value: '#comment' },\n  nodeValue: nodeValue,\n  textContent: nodeValue,\n  innerText: nodeValue,\n  data: {\n    get: nodeValue.get,\n    set: function(v) {\n      nodeValue.set.call(this, v===null ? '' : String(v));\n    },\n  },\n\n  // Utility methods\n  clone: { value: function clone() {\n    return new Comment(this.ownerDocument, this._data);\n  }},\n});\n","\"use strict\";\nmodule.exports =  DocumentFragment;\n\nvar Node = require('./Node');\nvar NodeList = require('./NodeList');\nvar ContainerNode = require('./ContainerNode');\nvar Element = require('./Element');\nvar select = require('./select');\nvar utils = require('./utils');\n\nfunction DocumentFragment(doc) {\n  ContainerNode.call(this);\n  this.nodeType = Node.DOCUMENT_FRAGMENT_NODE;\n  this.ownerDocument = doc;\n}\n\nDocumentFragment.prototype = Object.create(ContainerNode.prototype, {\n  nodeName: { value: '#document-fragment' },\n  nodeValue: {\n    get: function() {\n      return null;\n    },\n    set: function() {}\n  },\n  // Copy the text content getter/setter from Element\n  textContent: Object.getOwnPropertyDescriptor(Element.prototype, 'textContent'),\n\n  // Copy the text content getter/setter from Element\n  innerText: Object.getOwnPropertyDescriptor(Element.prototype, 'innerText'),\n\n  querySelector: { value: function(selector) {\n    // implement in terms of querySelectorAll\n    var nodes = this.querySelectorAll(selector);\n    return nodes.length ? nodes[0] : null;\n  }},\n  querySelectorAll: { value: function(selector) {\n    // create a context\n    var context = Object.create(this);\n    // add some methods to the context for zest implementation, without\n    // adding them to the public DocumentFragment API\n    context.isHTML = true; // in HTML namespace (case-insensitive match)\n    context.getElementsByTagName = Element.prototype.getElementsByTagName;\n    context.nextElement =\n      Object.getOwnPropertyDescriptor(Element.prototype, 'firstElementChild').\n      get;\n    // invoke zest\n    var nodes = select(selector, context);\n    return nodes.item ? nodes : new NodeList(nodes);\n  }},\n\n  // Utility methods\n  clone: { value: function clone() {\n      return new DocumentFragment(this.ownerDocument);\n  }},\n  isEqual: { value: function isEqual(n) {\n      // Any two document fragments are shallowly equal.\n      // Node.isEqualNode() will test their children for equality\n      return true;\n  }},\n\n  // Non-standard, but useful (github issue #73)\n  innerHTML: {\n    get: function() { return this.serialize(); },\n    set: utils.nyi\n  },\n  outerHTML: {\n    get: function() { return this.serialize(); },\n    set: utils.nyi\n  },\n\n});\n","\"use strict\";\nmodule.exports = ProcessingInstruction;\n\nvar Node = require('./Node');\nvar CharacterData = require('./CharacterData');\n\nfunction ProcessingInstruction(doc, target, data) {\n  CharacterData.call(this);\n  this.nodeType = Node.PROCESSING_INSTRUCTION_NODE;\n  this.ownerDocument = doc;\n  this.target = target;\n  this._data = data;\n}\n\nvar nodeValue = {\n  get: function() { return this._data; },\n  set: function(v) {\n    if (v === null || v === undefined) { v = ''; } else { v = String(v); }\n    this._data = v;\n    if (this.rooted) this.ownerDocument.mutateValue(this);\n  }\n};\n\nProcessingInstruction.prototype = Object.create(CharacterData.prototype, {\n  nodeName: { get: function() { return this.target; }},\n  nodeValue: nodeValue,\n  textContent: nodeValue,\n  innerText: nodeValue,\n  data: {\n    get: nodeValue.get,\n    set: function(v) {\n      nodeValue.set.call(this, v===null ? '' : String(v));\n    },\n  },\n\n  // Utility methods\n  clone: { value: function clone() {\n      return new ProcessingInstruction(this.ownerDocument, this.target, this._data);\n  }},\n  isEqual: { value: function isEqual(n) {\n      return this.target === n.target && this._data === n._data;\n  }}\n\n});\n","\"use strict\";\nvar NodeFilter = {\n  // Constants for acceptNode()\n  FILTER_ACCEPT: 1,\n  FILTER_REJECT: 2,\n  FILTER_SKIP: 3,\n\n  // Constants for whatToShow\n  SHOW_ALL: 0xFFFFFFFF,\n  SHOW_ELEMENT: 0x1,\n  SHOW_ATTRIBUTE: 0x2, // historical\n  SHOW_TEXT: 0x4,\n  SHOW_CDATA_SECTION: 0x8, // historical\n  SHOW_ENTITY_REFERENCE: 0x10, // historical\n  SHOW_ENTITY: 0x20, // historical\n  SHOW_PROCESSING_INSTRUCTION: 0x40,\n  SHOW_COMMENT: 0x80,\n  SHOW_DOCUMENT: 0x100,\n  SHOW_DOCUMENT_TYPE: 0x200,\n  SHOW_DOCUMENT_FRAGMENT: 0x400,\n  SHOW_NOTATION: 0x800 // historical\n};\n\nmodule.exports = (NodeFilter.constructor = NodeFilter.prototype = NodeFilter);\n","\"use strict\";\n/* exported NodeTraversal */\nvar NodeTraversal = module.exports = {\n  nextSkippingChildren: nextSkippingChildren,\n  nextAncestorSibling: nextAncestorSibling,\n  next: next,\n  previous: previous,\n  deepLastChild: deepLastChild\n};\n\n/**\n * @based on WebKit's NodeTraversal::nextSkippingChildren\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L109\n */\nfunction nextSkippingChildren(node, stayWithin) {\n  if (node === stayWithin) {\n    return null;\n  }\n  if (node.nextSibling !== null) {\n    return node.nextSibling;\n  }\n  return nextAncestorSibling(node, stayWithin);\n}\n\n/**\n * @based on WebKit's NodeTraversal::nextAncestorSibling\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.cpp?rev=179143#L93\n */\nfunction nextAncestorSibling(node, stayWithin) {\n  for (node = node.parentNode; node !== null; node = node.parentNode) {\n    if (node === stayWithin) {\n      return null;\n    }\n    if (node.nextSibling !== null) {\n      return node.nextSibling;\n    }\n  }\n  return null;\n}\n\n/**\n * @based on WebKit's NodeTraversal::next\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L99\n */\nfunction next(node, stayWithin) {\n  var n;\n  n = node.firstChild;\n  if (n !== null) {\n    return n;\n  }\n  if (node === stayWithin) {\n    return null;\n  }\n  n = node.nextSibling;\n  if (n !== null) {\n    return n;\n  }\n  return nextAncestorSibling(node, stayWithin);\n}\n\n/**\n * @based on WebKit's NodeTraversal::deepLastChild\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.cpp?rev=179143#L116\n */\nfunction deepLastChild(node) {\n  while (node.lastChild) {\n    node = node.lastChild;\n  }\n  return node;\n}\n\n/**\n * @based on WebKit's NodeTraversal::previous\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L121\n */\nfunction previous(node, stayWithin) {\n  var p;\n  p = node.previousSibling;\n  if (p !== null) {\n    return deepLastChild(p);\n  }\n  p = node.parentNode;\n  if (p === stayWithin) {\n    return null;\n  }\n  return p;\n}\n","\"use strict\";\nmodule.exports = TreeWalker;\n\nvar Node = require('./Node');\nvar NodeFilter = require('./NodeFilter');\nvar NodeTraversal = require('./NodeTraversal');\nvar utils = require('./utils');\n\nvar mapChild = {\n  first: 'firstChild',\n  last: 'lastChild',\n  next: 'firstChild',\n  previous: 'lastChild'\n};\n\nvar mapSibling = {\n  first: 'nextSibling',\n  last: 'previousSibling',\n  next: 'nextSibling',\n  previous: 'previousSibling'\n};\n\n/* Private methods and helpers */\n\n/**\n * @spec https://dom.spec.whatwg.org/#concept-traverse-children\n * @method\n * @access private\n * @param {TreeWalker} tw\n * @param {string} type One of 'first' or 'last'.\n * @return {Node|null}\n */\nfunction traverseChildren(tw, type) {\n  var child, node, parent, result, sibling;\n  node = tw._currentNode[mapChild[type]];\n  while (node !== null) {\n    result = tw._internalFilter(node);\n    if (result === NodeFilter.FILTER_ACCEPT) {\n      tw._currentNode = node;\n      return node;\n    }\n    if (result === NodeFilter.FILTER_SKIP) {\n      child = node[mapChild[type]];\n      if (child !== null) {\n        node = child;\n        continue;\n      }\n    }\n    while (node !== null) {\n      sibling = node[mapSibling[type]];\n      if (sibling !== null) {\n        node = sibling;\n        break;\n      }\n      parent = node.parentNode;\n      if (parent === null || parent === tw.root || parent === tw._currentNode) {\n        return null;\n      } else {\n        node = parent;\n      }\n    }\n  }\n  return null;\n}\n\n/**\n * @spec https://dom.spec.whatwg.org/#concept-traverse-siblings\n * @method\n * @access private\n * @param {TreeWalker} tw\n * @param {TreeWalker} type One of 'next' or 'previous'.\n * @return {Node|nul}\n */\nfunction traverseSiblings(tw, type) {\n  var node, result, sibling;\n  node = tw._currentNode;\n  if (node === tw.root) {\n    return null;\n  }\n  while (true) {\n    sibling = node[mapSibling[type]];\n    while (sibling !== null) {\n      node = sibling;\n      result = tw._internalFilter(node);\n      if (result === NodeFilter.FILTER_ACCEPT) {\n        tw._currentNode = node;\n        return node;\n      }\n      sibling = node[mapChild[type]];\n      if (result === NodeFilter.FILTER_REJECT || sibling === null) {\n        sibling = node[mapSibling[type]];\n      }\n    }\n    node = node.parentNode;\n    if (node === null || node === tw.root) {\n      return null;\n    }\n    if (tw._internalFilter(node) === NodeFilter.FILTER_ACCEPT) {\n      return null;\n    }\n  }\n}\n\n\n/* Public API */\n\n/**\n * Latest version: https://dom.spec.whatwg.org/#treewalker\n *\n * @constructor\n * @param {Node} root\n * @param {number} whatToShow [optional]\n * @param {Function|NodeFilter} filter [optional]\n * @throws Error\n */\nfunction TreeWalker(root, whatToShow, filter) {\n  if (!root || !root.nodeType) {\n    utils.NotSupportedError();\n  }\n\n  // Read-only properties\n  this._root = root;\n  this._whatToShow = Number(whatToShow) || 0;\n  this._filter = filter || null;\n  this._active = false;\n  // Read-write property\n  this._currentNode = root;\n}\n\nObject.defineProperties(TreeWalker.prototype, {\n  root: { get: function() { return this._root; } },\n  whatToShow: { get: function() { return this._whatToShow; } },\n  filter: { get: function() { return this._filter; } },\n\n  currentNode: {\n    get: function currentNode() {\n      return this._currentNode;\n    },\n    set: function setCurrentNode(v) {\n      if (!(v instanceof Node)) {\n        throw new TypeError(\"Not a Node\"); // `null` is also not a node\n      }\n      this._currentNode = v;\n    },\n  },\n\n  /**\n   * @method\n   * @param {Node} node\n   * @return {Number} Constant NodeFilter.FILTER_ACCEPT,\n   *  NodeFilter.FILTER_REJECT or NodeFilter.FILTER_SKIP.\n   */\n  _internalFilter: { value: function _internalFilter(node) {\n    /* jshint bitwise: false */\n    var result, filter;\n    if (this._active) {\n      utils.InvalidStateError();\n    }\n\n    // Maps nodeType to whatToShow\n    if (!(((1 << (node.nodeType - 1)) & this._whatToShow))) {\n      return NodeFilter.FILTER_SKIP;\n    }\n\n    filter = this._filter;\n    if (filter === null) {\n      result = NodeFilter.FILTER_ACCEPT;\n    } else {\n      this._active = true;\n      try {\n        if (typeof filter === 'function') {\n          result = filter(node);\n        } else {\n          result = filter.acceptNode(node);\n        }\n      } finally {\n        this._active = false;\n      }\n    }\n\n    // Note that coercing to a number means that\n    //  `true` becomes `1` (which is NodeFilter.FILTER_ACCEPT)\n    //  `false` becomes `0` (neither accept, reject, or skip)\n    return (+result);\n  }},\n\n  /**\n   * @spec https://dom.spec.whatwg.org/#dom-treewalker-parentnode\n   * @based on WebKit's TreeWalker::parentNode\n   * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L50\n   * @method\n   * @return {Node|null}\n   */\n  parentNode: { value: function parentNode() {\n    var node = this._currentNode;\n    while (node !== this.root) {\n      node = node.parentNode;\n      if (node === null) {\n        return null;\n      }\n      if (this._internalFilter(node) === NodeFilter.FILTER_ACCEPT) {\n        this._currentNode = node;\n        return node;\n      }\n    }\n    return null;\n  }},\n\n  /**\n   * @spec https://dom.spec.whatwg.org/#dom-treewalker-firstchild\n   * @method\n   * @return {Node|null}\n   */\n  firstChild: { value: function firstChild() {\n    return traverseChildren(this, 'first');\n  }},\n\n  /**\n   * @spec https://dom.spec.whatwg.org/#dom-treewalker-lastchild\n   * @method\n   * @return {Node|null}\n   */\n  lastChild: { value: function lastChild() {\n    return traverseChildren(this, 'last');\n  }},\n\n  /**\n   * @spec http://www.w3.org/TR/dom/#dom-treewalker-previoussibling\n   * @method\n   * @return {Node|null}\n   */\n  previousSibling: { value: function previousSibling() {\n    return traverseSiblings(this, 'previous');\n  }},\n\n  /**\n   * @spec http://www.w3.org/TR/dom/#dom-treewalker-nextsibling\n   * @method\n   * @return {Node|null}\n   */\n  nextSibling: { value: function nextSibling() {\n    return traverseSiblings(this, 'next');\n  }},\n\n  /**\n   * @spec https://dom.spec.whatwg.org/#dom-treewalker-previousnode\n   * @based on WebKit's TreeWalker::previousNode\n   * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L181\n   * @method\n   * @return {Node|null}\n   */\n  previousNode: { value: function previousNode() {\n    var node, result, previousSibling, lastChild;\n    node = this._currentNode;\n    while (node !== this._root) {\n      for (previousSibling = node.previousSibling;\n           previousSibling;\n           previousSibling = node.previousSibling) {\n        node = previousSibling;\n        result = this._internalFilter(node);\n        if (result === NodeFilter.FILTER_REJECT) {\n          continue;\n        }\n        for (lastChild = node.lastChild;\n             lastChild;\n             lastChild = node.lastChild) {\n          node = lastChild;\n          result = this._internalFilter(node);\n          if (result === NodeFilter.FILTER_REJECT) {\n            break;\n          }\n        }\n        if (result === NodeFilter.FILTER_ACCEPT) {\n          this._currentNode = node;\n          return node;\n        }\n      }\n      if (node === this.root || node.parentNode === null) {\n        return null;\n      }\n      node = node.parentNode;\n      if (this._internalFilter(node) === NodeFilter.FILTER_ACCEPT) {\n        this._currentNode = node;\n        return node;\n      }\n    }\n    return null;\n  }},\n\n  /**\n   * @spec https://dom.spec.whatwg.org/#dom-treewalker-nextnode\n   * @based on WebKit's TreeWalker::nextNode\n   * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L228\n   * @method\n   * @return {Node|null}\n   */\n  nextNode: { value: function nextNode() {\n    var node, result, firstChild, nextSibling;\n    node = this._currentNode;\n    result = NodeFilter.FILTER_ACCEPT;\n\n    CHILDREN:\n    while (true) {\n      for (firstChild = node.firstChild;\n           firstChild;\n           firstChild = node.firstChild) {\n        node = firstChild;\n        result = this._internalFilter(node);\n        if (result === NodeFilter.FILTER_ACCEPT) {\n          this._currentNode = node;\n          return node;\n        } else if (result === NodeFilter.FILTER_REJECT) {\n          break;\n        }\n      }\n      for (nextSibling = NodeTraversal.nextSkippingChildren(node, this.root);\n           nextSibling;\n           nextSibling = NodeTraversal.nextSkippingChildren(node, this.root)) {\n        node = nextSibling;\n        result = this._internalFilter(node);\n        if (result === NodeFilter.FILTER_ACCEPT) {\n          this._currentNode = node;\n          return node;\n        } else if (result === NodeFilter.FILTER_SKIP) {\n          continue CHILDREN;\n        }\n      }\n      return null;\n    }\n  }},\n\n  /** For compatibility with web-platform-tests. */\n  toString: { value: function toString() {\n    return \"[object TreeWalker]\";\n  }},\n});\n","\"use strict\";\nmodule.exports = NodeIterator;\n\nvar NodeFilter = require('./NodeFilter');\nvar NodeTraversal = require('./NodeTraversal');\nvar utils = require('./utils');\n\n/* Private methods and helpers */\n\n/**\n * @based on WebKit's NodeIterator::moveToNext and NodeIterator::moveToPrevious\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeIterator.cpp?rev=186279#L51\n */\nfunction move(node, stayWithin, directionIsNext) {\n  if (directionIsNext) {\n    return NodeTraversal.next(node, stayWithin);\n  } else {\n    if (node === stayWithin) {\n      return null;\n    }\n    return NodeTraversal.previous(node, null);\n  }\n}\n\nfunction isInclusiveAncestor(node, possibleChild) {\n  for ( ; possibleChild; possibleChild = possibleChild.parentNode) {\n    if (node === possibleChild) { return true; }\n  }\n  return false;\n}\n\n/**\n * @spec http://www.w3.org/TR/dom/#concept-nodeiterator-traverse\n * @method\n * @access private\n * @param {NodeIterator} ni\n * @param {string} direction One of 'next' or 'previous'.\n * @return {Node|null}\n */\nfunction traverse(ni, directionIsNext) {\n  var node, beforeNode;\n  node = ni._referenceNode;\n  beforeNode = ni._pointerBeforeReferenceNode;\n  while (true) {\n    if (beforeNode === directionIsNext) {\n      beforeNode = !beforeNode;\n    } else {\n      node = move(node, ni._root, directionIsNext);\n      if (node === null) {\n        return null;\n      }\n    }\n    var result = ni._internalFilter(node);\n    if (result === NodeFilter.FILTER_ACCEPT) {\n      break;\n    }\n  }\n  ni._referenceNode = node;\n  ni._pointerBeforeReferenceNode = beforeNode;\n  return node;\n}\n\n/* Public API */\n\n/**\n * Implemented version: http://www.w3.org/TR/2015/WD-dom-20150618/#nodeiterator\n * Latest version: http://www.w3.org/TR/dom/#nodeiterator\n *\n * @constructor\n * @param {Node} root\n * @param {number} whatToShow [optional]\n * @param {Function|NodeFilter} filter [optional]\n * @throws Error\n */\nfunction NodeIterator(root, whatToShow, filter) {\n  if (!root || !root.nodeType) {\n    utils.NotSupportedError();\n  }\n\n  // Read-only properties\n  this._root = root;\n  this._referenceNode = root;\n  this._pointerBeforeReferenceNode = true;\n  this._whatToShow = Number(whatToShow) || 0;\n  this._filter = filter || null;\n  this._active = false;\n  // Record active node iterators in the document, in order to perform\n  // \"node iterator pre-removal steps\".\n  root.doc._attachNodeIterator(this);\n}\n\nObject.defineProperties(NodeIterator.prototype, {\n  root: { get: function root() {\n    return this._root;\n  } },\n  referenceNode: { get: function referenceNode() {\n    return this._referenceNode;\n  } },\n  pointerBeforeReferenceNode: { get: function pointerBeforeReferenceNode() {\n    return this._pointerBeforeReferenceNode;\n  } },\n  whatToShow: { get: function whatToShow() {\n    return this._whatToShow;\n  } },\n  filter: { get: function filter() {\n    return this._filter;\n  } },\n\n  /**\n   * @method\n   * @param {Node} node\n   * @return {Number} Constant NodeFilter.FILTER_ACCEPT,\n   *  NodeFilter.FILTER_REJECT or NodeFilter.FILTER_SKIP.\n   */\n  _internalFilter: { value: function _internalFilter(node) {\n    /* jshint bitwise: false */\n    var result, filter;\n    if (this._active) {\n      utils.InvalidStateError();\n    }\n\n    // Maps nodeType to whatToShow\n    if (!(((1 << (node.nodeType - 1)) & this._whatToShow))) {\n      return NodeFilter.FILTER_SKIP;\n    }\n\n    filter = this._filter;\n    if (filter === null) {\n      result = NodeFilter.FILTER_ACCEPT;\n    } else {\n      this._active = true;\n      try {\n        if (typeof filter === 'function') {\n          result = filter(node);\n        } else {\n          result = filter.acceptNode(node);\n        }\n      } finally {\n        this._active = false;\n      }\n    }\n\n    // Note that coercing to a number means that\n    //  `true` becomes `1` (which is NodeFilter.FILTER_ACCEPT)\n    //  `false` becomes `0` (neither accept, reject, or skip)\n    return (+result);\n  } },\n\n  /**\n   * @spec https://dom.spec.whatwg.org/#nodeiterator-pre-removing-steps\n   * @method\n   * @return void\n   */\n  _preremove: { value: function _preremove(toBeRemovedNode) {\n    if (isInclusiveAncestor(toBeRemovedNode, this._root)) { return; }\n    if (!isInclusiveAncestor(toBeRemovedNode, this._referenceNode)) { return; }\n    if (this._pointerBeforeReferenceNode) {\n      var next = toBeRemovedNode;\n      while (next.lastChild) {\n        next = next.lastChild;\n      }\n      next = NodeTraversal.next(next, this.root);\n      if (next) {\n        this._referenceNode = next;\n        return;\n      }\n      this._pointerBeforeReferenceNode = false;\n      // fall through\n    }\n    if (toBeRemovedNode.previousSibling === null) {\n      this._referenceNode = toBeRemovedNode.parentNode;\n    } else {\n      this._referenceNode = toBeRemovedNode.previousSibling;\n      var lastChild;\n      for (lastChild = this._referenceNode.lastChild;\n           lastChild;\n           lastChild = this._referenceNode.lastChild) {\n        this._referenceNode = lastChild;\n      }\n    }\n  } },\n\n  /**\n   * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-nextnode\n   * @method\n   * @return {Node|null}\n   */\n  nextNode: { value: function nextNode() {\n    return traverse(this, true);\n  } },\n\n  /**\n   * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-previousnode\n   * @method\n   * @return {Node|null}\n   */\n  previousNode: { value: function previousNode() {\n    return traverse(this, false);\n  } },\n\n  /**\n   * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-detach\n   * @method\n   * @return void\n   */\n  detach: { value: function detach() {\n    /* \"The detach() method must do nothing.\n     * Its functionality (disabling a NodeIterator object) was removed,\n     * but the method itself is preserved for compatibility.\n     */\n  } },\n\n  /** For compatibility with web-platform-tests. */\n  toString: { value: function toString() {\n    return \"[object NodeIterator]\";\n  } },\n});\n","\"use strict\";\nmodule.exports = URL;\n\nfunction URL(url) {\n  if (!url) return Object.create(URL.prototype);\n  // Can't use String.trim() since it defines whitespace differently than HTML\n  this.url = url.replace(/^[ \\t\\n\\r\\f]+|[ \\t\\n\\r\\f]+$/g, \"\");\n\n  // See http://tools.ietf.org/html/rfc3986#appendix-B\n  // and https://url.spec.whatwg.org/#parsing\n  var match = URL.pattern.exec(this.url);\n  if (match) {\n    if (match[2]) this.scheme = match[2];\n    if (match[4]) {\n      // parse username/password\n      var userinfo = match[4].match(URL.userinfoPattern);\n      if (userinfo) {\n        this.username = userinfo[1];\n        this.password = userinfo[3];\n        match[4] = match[4].substring(userinfo[0].length);\n      }\n      if (match[4].match(URL.portPattern)) {\n        var pos = match[4].lastIndexOf(':');\n        this.host = match[4].substring(0, pos);\n        this.port = match[4].substring(pos+1);\n      }\n      else {\n        this.host = match[4];\n      }\n    }\n    if (match[5]) this.path = match[5];\n    if (match[6]) this.query = match[7];\n    if (match[8]) this.fragment = match[9];\n  }\n}\n\nURL.pattern = /^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/;\nURL.userinfoPattern = /^([^@:]*)(:([^@]*))?@/;\nURL.portPattern = /:\\d+$/;\nURL.authorityPattern = /^[^:\\/?#]+:\\/\\//;\nURL.hierarchyPattern = /^[^:\\/?#]+:\\//;\n\n// Return a percentEncoded version of s.\n// S should be a single-character string\n// XXX: needs to do utf-8 encoding?\nURL.percentEncode = function percentEncode(s) {\n  var c = s.charCodeAt(0);\n  if (c < 256) return \"%\" + c.toString(16);\n  else throw Error(\"can't percent-encode codepoints > 255 yet\");\n};\n\nURL.prototype = {\n  constructor: URL,\n\n  // XXX: not sure if this is the precise definition of absolute\n  isAbsolute: function() { return !!this.scheme; },\n  isAuthorityBased: function() {\n    return URL.authorityPattern.test(this.url);\n  },\n  isHierarchical: function() {\n    return URL.hierarchyPattern.test(this.url);\n  },\n\n  toString: function() {\n    var s = \"\";\n    if (this.scheme !== undefined) s += this.scheme + \":\";\n    if (this.isAbsolute()) {\n      s += '//';\n      if (this.username || this.password) {\n        s += this.username || '';\n        if (this.password) {\n          s += ':' + this.password;\n        }\n        s += '@';\n      }\n      if (this.host) {\n        s += this.host;\n      }\n    }\n    if (this.port !== undefined) s += \":\" + this.port;\n    if (this.path !== undefined) s += this.path;\n    if (this.query !== undefined) s += \"?\" + this.query;\n    if (this.fragment !== undefined) s += \"#\" + this.fragment;\n    return s;\n  },\n\n  // See: http://tools.ietf.org/html/rfc3986#section-5.2\n  // and https://url.spec.whatwg.org/#constructors\n  resolve: function(relative) {\n    var base = this;           // The base url we're resolving against\n    var r = new URL(relative); // The relative reference url to resolve\n    var t = new URL();         // The absolute target url we will return\n\n    if (r.scheme !== undefined) {\n      t.scheme = r.scheme;\n      t.username = r.username;\n      t.password = r.password;\n      t.host = r.host;\n      t.port = r.port;\n      t.path = remove_dot_segments(r.path);\n      t.query = r.query;\n    }\n    else {\n      t.scheme = base.scheme;\n      if (r.host !== undefined) {\n        t.username = r.username;\n        t.password = r.password;\n        t.host = r.host;\n        t.port = r.port;\n        t.path = remove_dot_segments(r.path);\n        t.query = r.query;\n      }\n      else {\n        t.username = base.username;\n        t.password = base.password;\n        t.host = base.host;\n        t.port = base.port;\n        if (!r.path) { // undefined or empty\n          t.path = base.path;\n          if (r.query !== undefined)\n            t.query = r.query;\n          else\n            t.query = base.query;\n        }\n        else {\n          if (r.path.charAt(0) === \"/\") {\n            t.path = remove_dot_segments(r.path);\n          }\n          else {\n            t.path = merge(base.path, r.path);\n            t.path = remove_dot_segments(t.path);\n          }\n          t.query = r.query;\n        }\n      }\n    }\n    t.fragment = r.fragment;\n\n    return t.toString();\n\n\n    function merge(basepath, refpath) {\n      if (base.host !== undefined && !base.path)\n        return \"/\" + refpath;\n\n      var lastslash = basepath.lastIndexOf(\"/\");\n      if (lastslash === -1)\n        return refpath;\n      else\n        return basepath.substring(0, lastslash+1) + refpath;\n    }\n\n    function remove_dot_segments(path) {\n      if (!path) return path; // For \"\" or undefined\n\n      var output = \"\";\n      while(path.length > 0) {\n        if (path === \".\" || path === \"..\") {\n          path = \"\";\n          break;\n        }\n\n        var twochars = path.substring(0,2);\n        var threechars = path.substring(0,3);\n        var fourchars = path.substring(0,4);\n        if (threechars === \"../\") {\n          path = path.substring(3);\n        }\n        else if (twochars === \"./\") {\n          path = path.substring(2);\n        }\n        else if (threechars === \"/./\") {\n          path = \"/\" + path.substring(3);\n        }\n        else if (twochars === \"/.\" && path.length === 2) {\n          path = \"/\";\n        }\n        else if (fourchars === \"/../\" ||\n             (threechars === \"/..\" && path.length === 3)) {\n          path = \"/\" + path.substring(4);\n\n          output = output.replace(/\\/?[^\\/]*$/, \"\");\n        }\n        else {\n          var segment = path.match(/(\\/?([^\\/]*))/)[0];\n          output += segment;\n          path = path.substring(segment.length);\n        }\n      }\n\n      return output;\n    }\n  },\n};\n","\"use strict\";\nmodule.exports = CustomEvent;\n\nvar Event = require('./Event');\n\nfunction CustomEvent(type, dictionary) {\n  // Just use the superclass constructor to initialize\n  Event.call(this, type, dictionary);\n}\nCustomEvent.prototype = Object.create(Event.prototype, {\n  constructor: { value: CustomEvent }\n});\n","\"use strict\";\nmodule.exports = {\n  Event: require('./Event'),\n  UIEvent: require('./UIEvent'),\n  MouseEvent: require('./MouseEvent'),\n  CustomEvent: require('./CustomEvent')\n};\n","\"use strict\";\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// The below is a compiled copy of https://github.com/angular/angular/blob/92e41e9cb417223d9888a4c23b4c0e73188f87d0/packages/compiler/src/render3/view/style_parser.ts\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hyphenate = exports.parse = void 0;\n/**\n * Parses string representation of a style and converts it into object literal.\n *\n * @param value string representation of style as used in the `style` attribute in HTML.\n *   Example: `color: red; height: auto`.\n * @returns An array of style property name and value pairs, e.g. `['color', 'red', 'height',\n * 'auto']`\n */\nfunction parse(value) {\n  // we use a string array here instead of a string map\n  // because a string-map is not guaranteed to retain the\n  // order of the entries whereas a string array can be\n  // constructed in a [key, value, key, value] format.\n  const styles = [];\n  let i = 0;\n  let parenDepth = 0;\n  let quote = 0; /* Char.QuoteNone */\n  let valueStart = 0;\n  let propStart = 0;\n  let currentProp = null;\n  while (i < value.length) {\n    const token = value.charCodeAt(i++);\n    switch (token) {\n      case 40 /* Char.OpenParen */:\n        parenDepth++;\n        break;\n      case 41 /* Char.CloseParen */:\n        parenDepth--;\n        break;\n      case 39 /* Char.QuoteSingle */:\n        // valueStart needs to be there since prop values don't\n        // have quotes in CSS\n        if (quote === 0 /* Char.QuoteNone */) {\n          quote = 39 /* Char.QuoteSingle */;\n        } else if (\n          quote === 39 /* Char.QuoteSingle */ &&\n          value.charCodeAt(i - 1) !== 92 /* Char.BackSlash */\n        ) {\n          quote = 0 /* Char.QuoteNone */;\n        }\n        break;\n      case 34 /* Char.QuoteDouble */:\n        // same logic as above\n        if (quote === 0 /* Char.QuoteNone */) {\n          quote = 34 /* Char.QuoteDouble */;\n        } else if (\n          quote === 34 /* Char.QuoteDouble */ &&\n          value.charCodeAt(i - 1) !== 92 /* Char.BackSlash */\n        ) {\n          quote = 0 /* Char.QuoteNone */;\n        }\n        break;\n      case 58 /* Char.Colon */:\n        if (\n          !currentProp &&\n          parenDepth === 0 &&\n          quote === 0 /* Char.QuoteNone */\n        ) {\n          currentProp = hyphenate(value.substring(propStart, i - 1).trim());\n          valueStart = i;\n        }\n        break;\n      case 59 /* Char.Semicolon */:\n        if (\n          currentProp &&\n          valueStart > 0 &&\n          parenDepth === 0 &&\n          quote === 0 /* Char.QuoteNone */\n        ) {\n          const styleVal = value.substring(valueStart, i - 1).trim();\n          styles.push(currentProp, styleVal);\n          propStart = i;\n          valueStart = 0;\n          currentProp = null;\n        }\n        break;\n    }\n  }\n  if (currentProp && valueStart) {\n    const styleVal = value.slice(valueStart).trim();\n    styles.push(currentProp, styleVal);\n  }\n  return styles;\n}\nexports.parse = parse;\nfunction hyphenate(value) {\n  return value\n    .replace(/[a-z][A-Z]/g, (v) => {\n      return v.charAt(0) + \"-\" + v.charAt(1);\n    })\n    .toLowerCase();\n}\nexports.hyphenate = hyphenate;\n","\"use strict\";\n\nconst { parse } = require('./style_parser');\n\nmodule.exports = function (elt) {\n  const style = new CSSStyleDeclaration(elt)\n  const handler = {\n    get: function(target, property) {\n      return property in target ? target[property] : target.getPropertyValue(dasherizeProperty(property));\n    },\n    has: function(target, key) {\n      return true;\n    },\n    set: function(target, property, value) {\n      if (property in target) {\n        target[property] = value;\n      } else {\n        target.setProperty(dasherizeProperty(property), value ?? undefined);\n      }\n\n      return true;\n    }\n  };\n\n  return new Proxy(style, handler);\n};\n\nfunction dasherizeProperty(property) {\n  return property.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\n\nfunction CSSStyleDeclaration(elt) {\n  this._element = elt;\n}\n\nconst IMPORTANT_BANG = '!important';\n\n// Utility function for parsing style declarations\n// Pass in a string like \"margin-left: 5px; border-style: solid\"\n// and this function returns an object like\n// {\"margin-left\":\"5px\", \"border-style\":\"solid\"}\nfunction parseStyles(value) {\n  const result = {\n    property: {},\n    priority: {},\n  }\n\n  if (!value) {\n    return result;\n  }\n\n  const styleValues = parse(value);\n  if (styleValues.length < 2) {\n    return result;\n  }\n\n  for (let i = 0; i < styleValues.length; i += 2) {\n    const name = styleValues[i];\n    let value = styleValues[i+1];\n\n    if (value.endsWith(IMPORTANT_BANG)) {\n      result.priority[name] = 'important';\n      value = value.slice(0, -IMPORTANT_BANG.length).trim();\n    }\n\n    result.property[name] = value;\n  }\n\n  return result;\n}\n\nvar NO_CHANGE = {}; // Private marker object\n\nCSSStyleDeclaration.prototype = Object.create(Object.prototype, {\n\n  // Return the parsed form of the element's style attribute.\n  // If the element's style attribute has never been parsed\n  // or if it has changed since the last parse, then reparse it\n  // Note that the styles don't get parsed until they're actually needed\n  _parsed: { get: function() {\n    if (!this._parsedStyles || this.cssText !== this._lastParsedText) {\n      var text = this.cssText;\n      this._parsedStyles = parseStyles(text);\n      this._lastParsedText = text;\n      delete this._names;\n    }\n    return this._parsedStyles;\n  }},\n\n  // Call this method any time the parsed representation of the\n  // style changes.  It converts the style properties to a string and\n  // sets cssText and the element's style attribute\n  _serialize: { value: function() {\n    var styles = this._parsed;\n    var s = \"\";\n\n    for(var name in styles.property) {\n      if (s) s += \" \";\n      s += name + \": \" + styles.property[name];\n      if (styles.priority[name]) {\n        s += \" !\" + styles.priority[name];\n      }\n      s += \";\";\n    }\n\n    this.cssText = s;      // also sets the style attribute\n    this._lastParsedText = s;  // so we don't reparse\n    delete this._names;\n  }},\n\n  cssText: {\n    get: function() {\n      // XXX: this is a CSSStyleDeclaration for an element.\n      // A different impl might be necessary for a set of styles\n      // associated returned by getComputedStyle(), e.g.\n      return this._element.getAttribute(\"style\");\n    },\n    set: function(value) {\n      // XXX: I should parse and serialize the value to\n      // normalize it and remove errors. FF and chrome do that.\n      this._element.setAttribute(\"style\", value);\n    }\n  },\n\n  length: { get: function() {\n    if (!this._names)\n      this._names = Object.getOwnPropertyNames(this._parsed.property);\n    return this._names.length;\n  }},\n\n  item: { value: function(n) {\n    if (!this._names)\n      this._names = Object.getOwnPropertyNames(this._parsed.property);\n    return this._names[n];\n  }},\n\n  getPropertyValue: { value: function(property) {\n    property = property.toLowerCase();\n    return this._parsed.property[property] || \"\";\n  }},\n\n  getPropertyPriority: { value: function(property) {\n    property = property.toLowerCase();\n    return this._parsed.priority[property] || \"\";\n  }},\n\n  setProperty: { value: function(property, value, priority) {\n    property = property.toLowerCase();\n    if (value === null || value === undefined) {\n      value = \"\";\n    }\n    if (priority === null || priority === undefined) {\n      priority = \"\";\n    }\n\n    // String coercion\n    if (value !== NO_CHANGE) {\n      value = \"\" + value;\n    }\n\n    value = value.trim();\n    if (value === \"\") {\n      this.removeProperty(property);\n      return;\n    }\n\n    if (priority !== \"\" && priority !== NO_CHANGE &&\n        !/^important$/i.test(priority)) {\n      return;\n    }\n\n    var styles = this._parsed;\n    if (value === NO_CHANGE) {\n      if (!styles.property[property]) {\n        return; // Not a valid property name.\n      }\n      if (priority !== \"\") {\n        styles.priority[property] = \"important\";\n      } else {\n        delete styles.priority[property];\n      }\n    } else {\n      // We don't just accept the property value.  Instead\n      // we parse it to ensure that it is something valid.\n      // If it contains a semicolon it is invalid, except  base64-encoded\n      // URLs (e.g. `background-image: url(data:image/png;base64,...`)\n      if (value.includes(\";\") && !value.includes(\"data:\")) return;\n\n      var newprops = parseStyles(property + \":\" + value);\n      if (Object.getOwnPropertyNames(newprops.property).length === 0) {\n        return; // no valid property found\n      }\n      if (Object.getOwnPropertyNames(newprops.priority).length !== 0) {\n        return; // if the value included '!important' it wasn't valid.\n      }\n\n      // XXX handle shorthand properties\n\n      for (var p in newprops.property) {\n        styles.property[p] = newprops.property[p];\n        if (priority === NO_CHANGE) {\n          continue;\n        } else if (priority !== \"\") {\n          styles.priority[p] = \"important\";\n        } else if (styles.priority[p]) {\n          delete styles.priority[p];\n        }\n      }\n    }\n\n    // Serialize and update cssText and element.style!\n    this._serialize();\n  }},\n\n  setPropertyValue: { value: function(property, value) {\n    return this.setProperty(property, value, NO_CHANGE);\n  }},\n\n  setPropertyPriority: { value: function(property, priority) {\n    return this.setProperty(property, NO_CHANGE, priority);\n  }},\n\n  removeProperty: { value: function(property) {\n    property = property.toLowerCase();\n    var styles = this._parsed;\n    if (property in styles.property) {\n      delete styles.property[property];\n      delete styles.priority[property];\n\n      // Serialize and update cssText and element.style!\n      this._serialize();\n    }\n  }},\n});\n","\"use strict\";\nvar URL = require('./URL');\n\nmodule.exports = URLUtils;\n\n// Allow the `x == null` pattern.  This is eslint's \"null: 'ignore'\" option,\n// but jshint doesn't support this.\n/* jshint eqeqeq: false */\n\n// This is an abstract superclass for Location, HTMLAnchorElement and\n// other types that have the standard complement of \"URL decomposition\n// IDL attributes\".  This is now standardized as URLUtils, see:\n// https://url.spec.whatwg.org/#urlutils\n// Subclasses must define a getter/setter on href.\n// The getter and setter methods parse and rebuild the URL on each\n// invocation; there is no attempt to cache the value and be more efficient\nfunction URLUtils() {}\nURLUtils.prototype = Object.create(Object.prototype, {\n\n  _url: { get: function() {\n    // XXX: this should do the \"Reinitialize url\" steps, and \"null\" should\n    // be a valid return value.\n    return new URL(this.href);\n  } },\n\n  protocol: {\n    get: function() {\n      var url = this._url;\n      if (url && url.scheme) return url.scheme + \":\";\n      else return \":\";\n    },\n    set: function(v) {\n      var output = this.href;\n      var url = new URL(output);\n      if (url.isAbsolute()) {\n        v = v.replace(/:+$/, \"\");\n        v = v.replace(/[^-+\\.a-zA-Z0-9]/g, URL.percentEncode);\n        if (v.length > 0) {\n          url.scheme = v;\n          output = url.toString();\n        }\n      }\n      this.href = output;\n    },\n  },\n\n  host: {\n    get: function() {\n      var url = this._url;\n      if (url.isAbsolute() && url.isAuthorityBased())\n        return url.host + (url.port ? (\":\" + url.port) : \"\");\n      else\n        return \"\";\n    },\n    set: function(v) {\n      var output = this.href;\n      var url = new URL(output);\n      if (url.isAbsolute() && url.isAuthorityBased()) {\n        v = v.replace(/[^-+\\._~!$&'()*,;:=a-zA-Z0-9]/g, URL.percentEncode);\n        if (v.length > 0) {\n          url.host = v;\n          delete url.port;\n          output = url.toString();\n        }\n      }\n      this.href = output;\n    },\n  },\n\n  hostname: {\n    get: function() {\n      var url = this._url;\n      if (url.isAbsolute() && url.isAuthorityBased())\n        return url.host;\n      else\n        return \"\";\n    },\n    set: function(v) {\n      var output = this.href;\n      var url = new URL(output);\n      if (url.isAbsolute() && url.isAuthorityBased()) {\n        v = v.replace(/^\\/+/, \"\");\n        v = v.replace(/[^-+\\._~!$&'()*,;:=a-zA-Z0-9]/g, URL.percentEncode);\n        if (v.length > 0) {\n          url.host = v;\n          output = url.toString();\n        }\n      }\n      this.href = output;\n    },\n  },\n\n  port: {\n    get: function() {\n      var url = this._url;\n      if (url.isAbsolute() && url.isAuthorityBased() && url.port!==undefined)\n        return url.port;\n      else\n        return \"\";\n    },\n    set: function(v) {\n      var output = this.href;\n      var url = new URL(output);\n      if (url.isAbsolute() && url.isAuthorityBased()) {\n        v = '' + v;\n        v = v.replace(/[^0-9].*$/, \"\");\n        v = v.replace(/^0+/, \"\");\n        if (v.length === 0) v = \"0\";\n        if (parseInt(v, 10) <= 65535) {\n          url.port = v;\n          output = url.toString();\n        }\n      }\n      this.href = output;\n    },\n  },\n\n  pathname: {\n    get: function() {\n      var url = this._url;\n      if (url.isAbsolute() && url.isHierarchical())\n        return url.path;\n      else\n        return \"\";\n    },\n    set: function(v) {\n      var output = this.href;\n      var url = new URL(output);\n      if (url.isAbsolute() && url.isHierarchical()) {\n        if (v.charAt(0) !== \"/\")\n          v = \"/\" + v;\n        v = v.replace(/[^-+\\._~!$&'()*,;:=@\\/a-zA-Z0-9]/g, URL.percentEncode);\n        url.path = v;\n        output = url.toString();\n      }\n      this.href = output;\n    },\n  },\n\n  search: {\n    get: function() {\n      var url = this._url;\n      if (url.isAbsolute() && url.isHierarchical() && url.query!==undefined)\n        return \"?\" + url.query;\n      else\n        return \"\";\n    },\n    set: function(v) {\n      var output = this.href;\n      var url = new URL(output);\n      if (url.isAbsolute() && url.isHierarchical()) {\n        if (v.charAt(0) === \"?\") v = v.substring(1);\n        v = v.replace(/[^-+\\._~!$&'()*,;:=@\\/?a-zA-Z0-9]/g, URL.percentEncode);\n        url.query = v;\n        output = url.toString();\n      }\n      this.href = output;\n    },\n  },\n\n  hash: {\n    get: function() {\n      var url = this._url;\n      if (url == null || url.fragment == null || url.fragment === '') {\n        return \"\";\n      } else {\n        return \"#\" + url.fragment;\n      }\n    },\n    set: function(v) {\n      var output = this.href;\n      var url = new URL(output);\n\n      if (v.charAt(0) === \"#\") v = v.substring(1);\n      v = v.replace(/[^-+\\._~!$&'()*,;:=@\\/?a-zA-Z0-9]/g, URL.percentEncode);\n      url.fragment = v;\n      output = url.toString();\n\n      this.href = output;\n    },\n  },\n\n  username: {\n    get: function() {\n      var url = this._url;\n      return url.username || '';\n    },\n    set: function(v) {\n      var output = this.href;\n      var url = new URL(output);\n      if (url.isAbsolute()) {\n        v = v.replace(/[\\x00-\\x1F\\x7F-\\uFFFF \"#<>?`\\/@\\\\:]/g, URL.percentEncode);\n        url.username = v;\n        output = url.toString();\n      }\n      this.href = output;\n    },\n  },\n\n  password: {\n    get: function() {\n      var url = this._url;\n      return url.password || '';\n    },\n    set: function(v) {\n      var output = this.href;\n      var url = new URL(output);\n      if (url.isAbsolute()) {\n        if (v==='') {\n          url.password = null;\n        } else {\n          v = v.replace(/[\\x00-\\x1F\\x7F-\\uFFFF \"#<>?`\\/@\\\\]/g, URL.percentEncode);\n          url.password = v;\n        }\n        output = url.toString();\n      }\n      this.href = output;\n    },\n  },\n\n  origin: { get: function() {\n    var url = this._url;\n    if (url == null) { return ''; }\n    var originForPort = function(defaultPort) {\n      var origin = [url.scheme, url.host, +url.port || defaultPort];\n      // XXX should be \"unicode serialization\"\n      return origin[0] + '://' + origin[1] +\n        (origin[2] === defaultPort ? '' : (':' + origin[2]));\n    };\n    switch (url.scheme) {\n    case 'ftp':\n      return originForPort(21);\n    case 'gopher':\n      return originForPort(70);\n    case 'http':\n    case 'ws':\n      return originForPort(80);\n    case 'https':\n    case 'wss':\n      return originForPort(443);\n    default:\n      // this is what chrome does\n      return url.scheme + '://';\n    }\n  } },\n\n  /*\n  searchParams: {\n    get: function() {\n      var url = this._url;\n      // XXX\n    },\n    set: function(v) {\n      var output = this.href;\n      var url = new URL(output);\n      // XXX\n      this.href = output;\n    },\n  },\n  */\n});\n\nURLUtils._inherit = function(proto) {\n  // copy getters/setters from URLUtils to o.\n  Object.getOwnPropertyNames(URLUtils.prototype).forEach(function(p) {\n    if (p==='constructor' || p==='href') { return; }\n    var desc = Object.getOwnPropertyDescriptor(URLUtils.prototype, p);\n    Object.defineProperty(proto, p, desc);\n  });\n};\n","\"use strict\";\n\nvar attributes = require('./attributes');\nvar isApiWritable = require(\"./config\").isApiWritable;\n\nmodule.exports = function(spec, defaultConstructor, tagList, tagNameToImpl) {\n  var c = spec.ctor;\n  if (c) {\n    var props = spec.props || {};\n\n    if (spec.attributes) {\n      for (var n in spec.attributes) {\n        var attr = spec.attributes[n];\n        if (typeof attr !== 'object' || Array.isArray(attr)) attr = {type: attr};\n        if (!attr.name) attr.name = n.toLowerCase();\n        props[n] = attributes.property(attr);\n      }\n    }\n\n    props.constructor = { value : c, writable: isApiWritable };\n    c.prototype = Object.create((spec.superclass || defaultConstructor).prototype, props);\n    if (spec.events) {\n      addEventHandlers(c, spec.events);\n    }\n    tagList[spec.name] = c;\n  }\n  else {\n    c = defaultConstructor;\n  }\n\n  (spec.tags || spec.tag && [spec.tag] || []).forEach(function(tag) {\n    tagNameToImpl[tag] = c;\n  });\n\n  return c;\n};\n\nfunction EventHandlerBuilder(body, document, form, element) {\n  this.body = body;\n  this.document = document;\n  this.form = form;\n  this.element = element;\n}\n\nEventHandlerBuilder.prototype.build = function () {\n  return () => {};\n};\n\nfunction EventHandlerChangeHandler(elt, name, oldval, newval) {\n  var doc = elt.ownerDocument || Object.create(null);\n  var form = elt.form || Object.create(null);\n  elt[name] = new EventHandlerBuilder(newval, doc, form, elt).build();\n}\n\nfunction addEventHandlers(c, eventHandlerTypes) {\n  var p = c.prototype;\n  eventHandlerTypes.forEach(function(type) {\n    // Define the event handler registration IDL attribute for this type\n    Object.defineProperty(p, \"on\" + type, {\n      get: function() {\n        return this._getEventHandler(type);\n      },\n      set: function(v) {\n        this._setEventHandler(type, v);\n      },\n    });\n\n    // Define special behavior for the content attribute as well\n    attributes.registerChangeHandler(c, \"on\" + type, EventHandlerChangeHandler);\n  });\n}\n","\"use strict\";\nvar Node = require('./Node');\nvar Element = require('./Element');\nvar CSSStyleDeclaration = require('./CSSStyleDeclaration');\nvar utils = require('./utils');\nvar URLUtils = require('./URLUtils');\nvar defineElement = require('./defineElement');\n\nvar htmlElements = exports.elements = {};\nvar htmlNameToImpl = Object.create(null);\n\nexports.createElement = function(doc, localName, prefix) {\n  var impl = htmlNameToImpl[localName] || HTMLUnknownElement;\n  return new impl(doc, localName, prefix);\n};\n\nfunction define(spec) {\n  return defineElement(spec, HTMLElement, htmlElements, htmlNameToImpl);\n}\n\nfunction URL(attr) {\n  return {\n    get: function() {\n      var v = this._getattr(attr);\n      if (v === null) { return ''; }\n      var url = this.doc._resolve(v);\n      return (url === null) ? v : url;\n    },\n    set: function(value) {\n      this._setattr(attr, value);\n    }\n  };\n}\n\nfunction CORS(attr) {\n  return {\n    get: function() {\n      var v = this._getattr(attr);\n      if (v === null) { return null; }\n      if (v.toLowerCase() === 'use-credentials') { return 'use-credentials'; }\n      return 'anonymous';\n    },\n    set: function(value) {\n      if (value===null || value===undefined) {\n        this.removeAttribute(attr);\n      } else {\n        this._setattr(attr, value);\n      }\n    }\n  };\n}\n\nconst REFERRER = {\n  type: [\"\", \"no-referrer\", \"no-referrer-when-downgrade\", \"same-origin\", \"origin\", \"strict-origin\", \"origin-when-cross-origin\", \"strict-origin-when-cross-origin\", \"unsafe-url\"],\n  missing: '',\n};\n\n\n// XXX: the default value for tabIndex should be 0 if the element is\n// focusable and -1 if it is not.  But the full definition of focusable\n// is actually hard to compute, so for now, I'll follow Firefox and\n// just base the default value on the type of the element.\nvar focusableElements = {\n  \"A\":true, \"LINK\":true, \"BUTTON\":true, \"INPUT\":true,\n  \"SELECT\":true, \"TEXTAREA\":true, \"COMMAND\":true\n};\n\nvar HTMLFormElement = function(doc, localName, prefix) {\n  HTMLElement.call(this, doc, localName, prefix);\n  this._form = null; // Prevent later deoptimization\n};\n\nvar HTMLElement = exports.HTMLElement = define({\n  superclass: Element,\n  name: 'HTMLElement',\n  ctor: function HTMLElement(doc, localName, prefix) {\n    Element.call(this, doc, localName, utils.NAMESPACE.HTML, prefix);\n  },\n  props: {\n    dangerouslySetInnerHTML: {\n      set: function (v) {\n        this._innerHTML = v;\n      },\n    },\n    innerHTML: {\n      get: function() {\n        return this.serialize();\n      },\n      set: function(v) {\n        var parser = this.ownerDocument.implementation.mozHTMLParser(\n          this.ownerDocument._address,\n          this);\n        parser.parse(v===null ? '' : String(v), true);\n\n        // Remove any existing children of this node\n        var target = (this instanceof htmlNameToImpl.template) ?\n            this.content : this;\n        while(target.hasChildNodes())\n          target.removeChild(target.firstChild);\n\n        // Now copy newly parsed children to this node\n        target.appendChild(parser._asDocumentFragment());\n      }\n    },\n    style: { get: function() {\n      if (!this._style)\n        this._style = new CSSStyleDeclaration(this);\n      return this._style;\n    }, set: function(v) {\n        if (v===null||v===undefined) { v = ''; }\n        this._setattr('style', String(v));\n    }},\n\n    // These can't really be implemented server-side in a reasonable way.\n    blur: { value: function() {}},\n    focus: { value: function() {}},\n    forceSpellCheck: { value: function() {}},\n\n    click: { value: function() {\n      if (this._click_in_progress) return;\n      this._click_in_progress = true;\n      try {\n        if (this._pre_click_activation_steps)\n          this._pre_click_activation_steps();\n\n        var event = this.ownerDocument.createEvent(\"MouseEvent\");\n        event.initMouseEvent(\"click\", true, true,\n          this.ownerDocument.defaultView, 1,\n          0, 0, 0, 0,\n          // These 4 should be initialized with\n          // the actually current keyboard state\n          // somehow...\n          false, false, false, false,\n          0, null\n        );\n\n        // Dispatch this as an untrusted event since it is synthetic\n        var success = this.dispatchEvent(event);\n\n        if (success) {\n          if (this._post_click_activation_steps)\n            this._post_click_activation_steps(event);\n        }\n        else {\n          if (this._cancelled_activation_steps)\n            this._cancelled_activation_steps();\n        }\n      }\n      finally {\n        this._click_in_progress = false;\n      }\n    }},\n    submit: { value: utils.nyi },\n  },\n  attributes: {\n    title: String,\n    lang: String,\n    dir: {type: [\"ltr\", \"rtl\", \"auto\"], missing: ''},\n    draggable: {type: [\"true\", \"false\"], treatNullAsEmptyString: true },\n    spellcheck: {type: [\"true\", \"false\"], missing: ''},\n    enterKeyHint: {type: [\"enter\", \"done\", \"go\", \"next\", \"previous\", \"search\", \"send\"], missing: ''},\n    autoCapitalize: {type: [\"off\", \"on\", \"none\", \"sentences\", \"words\", \"characters\"], missing: '' },\n    autoFocus: Boolean,\n    accessKey: String,\n    nonce: String,\n    hidden: Boolean,\n    translate: {type: [\"no\", \"yes\"], missing: '' },\n    tabIndex: {type: \"long\", default: function() {\n      if (this.tagName in focusableElements ||\n        this.contentEditable)\n        return 0;\n      else\n        return -1;\n    }}\n  },\n  events: [\n    \"abort\", \"canplay\", \"canplaythrough\", \"change\", \"click\", \"contextmenu\",\n    \"cuechange\", \"dblclick\", \"drag\", \"dragend\", \"dragenter\", \"dragleave\",\n    \"dragover\", \"dragstart\", \"drop\", \"durationchange\", \"emptied\", \"ended\",\n    \"input\", \"invalid\", \"keydown\", \"keypress\", \"keyup\", \"loadeddata\",\n    \"loadedmetadata\", \"loadstart\", \"mousedown\", \"mousemove\", \"mouseout\",\n    \"mouseover\", \"mouseup\", \"mousewheel\", \"pause\", \"play\", \"playing\",\n    \"progress\", \"ratechange\", \"readystatechange\", \"reset\", \"seeked\",\n    \"seeking\", \"select\", \"show\", \"stalled\", \"submit\", \"suspend\",\n    \"timeupdate\", \"volumechange\", \"waiting\",\n\n    // These last 5 event types will be overriden by HTMLBodyElement\n    \"blur\", \"error\", \"focus\", \"load\", \"scroll\"\n  ]\n});\n\n\n// XXX: reflect contextmenu as contextMenu, with element type\n\n\n// style: the spec doesn't call this a reflected attribute.\n//   may want to handle it manually.\n\n// contentEditable: enumerated, not clear if it is actually\n// reflected or requires custom getter/setter. Not listed as\n// \"limited to known values\".  Raises syntax_err on bad setting,\n// so I think this is custom.\n\n// contextmenu: content is element id, idl type is an element\n// draggable: boolean, but not a reflected attribute\n// dropzone: reflected SettableTokenList, experimental, so don't\n//   implement it right away.\n\n// data-* attributes: need special handling in setAttribute?\n// Or maybe that isn't necessary. Can I just scan the attribute list\n// when building the dataset?  Liveness and caching issues?\n\n// microdata attributes: many are simple reflected attributes, but\n// I'm not going to implement this now.\n\n\nvar HTMLUnknownElement = define({\n  name: 'HTMLUnknownElement',\n  ctor: function HTMLUnknownElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  }\n});\n\n\nvar formAssociatedProps = {\n  // See http://www.w3.org/TR/html5/association-of-controls-and-forms.html#form-owner\n  form: { get: function() {\n    return this._form;\n  }}\n};\n\ndefine({\n  tag: 'a',\n  name: 'HTMLAnchorElement',\n  ctor: function HTMLAnchorElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    _post_click_activation_steps: { value: function(e) {\n      if (this.href) {\n        // Follow the link\n        // XXX: this is just a quick hack\n        // XXX: the HTML spec probably requires more than this\n        this.ownerDocument.defaultView.location = this.href;\n      }\n    }},\n  },\n  attributes: {\n    href: URL,\n    ping: String,\n    download: String,\n    target: String,\n    rel: String,\n    media: String,\n    hreflang: String,\n    type: String,\n    referrerPolicy: REFERRER,\n    // Obsolete\n    coords: String,\n    charset: String,\n    name: String,\n    rev: String,\n    shape: String,\n  }\n});\n// Latest WhatWG spec says these methods come via HTMLHyperlinkElementUtils\nURLUtils._inherit(htmlNameToImpl.a.prototype);\n\ndefine({\n  tag: 'area',\n  name: 'HTMLAreaElement',\n  ctor: function HTMLAreaElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    alt: String,\n    target: String,\n    download: String,\n    rel: String,\n    media: String,\n    href: URL,\n    hreflang: String,\n    type: String,\n    shape: String,\n    coords: String,\n    ping: String,\n    // XXX: also reflect relList\n    referrerPolicy: REFERRER,\n    // Obsolete\n    noHref: Boolean,\n  }\n});\n// Latest WhatWG spec says these methods come via HTMLHyperlinkElementUtils\nURLUtils._inherit(htmlNameToImpl.area.prototype);\n\ndefine({\n  tag: 'br',\n  name: 'HTMLBRElement',\n  ctor: function HTMLBRElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // Obsolete\n    clear: String\n  },\n});\n\ndefine({\n  tag: 'base',\n  name: 'HTMLBaseElement',\n  ctor: function HTMLBaseElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    \"target\": String\n  }\n});\n\n\ndefine({\n  tag: 'body',\n  name: 'HTMLBodyElement',\n  ctor: function HTMLBodyElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  // Certain event handler attributes on a <body> tag actually set\n  // handlers for the window rather than just that element.  Define\n  // getters and setters for those here.  Note that some of these override\n  // properties on HTMLElement.prototype.\n  // XXX: If I add support for <frameset>, these have to go there, too\n  // XXX\n  // When the Window object is implemented, these attribute will have\n  // to work with the same-named attributes on the Window.\n  events: [\n    \"afterprint\", \"beforeprint\", \"beforeunload\", \"blur\", \"error\",\n    \"focus\",\"hashchange\", \"load\", \"message\", \"offline\", \"online\",\n    \"pagehide\", \"pageshow\",\"popstate\",\"resize\",\"scroll\",\"storage\",\"unload\",\n  ],\n  attributes: {\n    // Obsolete\n    text: { type: String, treatNullAsEmptyString: true },\n    link: { type: String, treatNullAsEmptyString: true },\n    vLink: { type: String, treatNullAsEmptyString: true },\n    aLink: { type: String, treatNullAsEmptyString: true },\n    bgColor: { type: String, treatNullAsEmptyString: true },\n    background: String,\n  }\n});\n\ndefine({\n  tag: 'button',\n  name: 'HTMLButtonElement',\n  ctor: function HTMLButtonElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: formAssociatedProps,\n  attributes: {\n    name: String,\n    value: String,\n    disabled: Boolean,\n    autofocus: Boolean,\n    type: { type:[\"submit\", \"reset\", \"button\", \"menu\"], missing: 'submit' },\n    formTarget: String,\n    formAction: URL,\n    formNoValidate: Boolean,\n    formMethod: { type: [\"get\", \"post\", \"dialog\"], invalid: 'get', missing: '' },\n    formEnctype: { type: [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"], invalid: \"application/x-www-form-urlencoded\", missing: '' },\n  }\n});\n\ndefine({\n  tag: 'dl',\n  name: 'HTMLDListElement',\n  ctor: function HTMLDListElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // Obsolete\n    compact: Boolean,\n  }\n});\n\ndefine({\n  tag: 'data',\n  name: 'HTMLDataElement',\n  ctor: function HTMLDataElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    value: String,\n  }\n});\n\ndefine({\n  tag: 'datalist',\n  name: 'HTMLDataListElement',\n  ctor: function HTMLDataListElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  }\n});\n\ndefine({\n  tag: 'details',\n  name: 'HTMLDetailsElement',\n  ctor: function HTMLDetailsElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    \"open\": Boolean\n  }\n});\n\ndefine({\n  tag: 'div',\n  name: 'HTMLDivElement',\n  ctor: function HTMLDivElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // Obsolete\n    align: String\n  }\n});\n\ndefine({\n  tag: 'embed',\n  name: 'HTMLEmbedElement',\n  ctor: function HTMLEmbedElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    src: URL,\n    type: String,\n    width: String,\n    height: String,\n    // Obsolete\n    align: String,\n    name: String,\n  }\n});\n\ndefine({\n  tag: 'fieldset',\n  name: 'HTMLFieldSetElement',\n  ctor: function HTMLFieldSetElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: formAssociatedProps,\n  attributes: {\n    disabled: Boolean,\n    name: String\n  }\n});\n\ndefine({\n  tag: 'form',\n  name: 'HTMLFormElement',\n  ctor: function HTMLFormElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    action: String,\n    autocomplete: {type:['on', 'off'], missing: 'on'},\n    name: String,\n    acceptCharset: {name: \"accept-charset\"},\n    target: String,\n    noValidate: Boolean,\n    method: { type: [\"get\", \"post\", \"dialog\"], invalid: 'get', missing: 'get' },\n    // Both enctype and encoding reflect the enctype content attribute\n    enctype: { type: [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"], invalid: \"application/x-www-form-urlencoded\", missing: \"application/x-www-form-urlencoded\" },\n    encoding: {name: 'enctype', type: [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"], invalid: \"application/x-www-form-urlencoded\", missing: \"application/x-www-form-urlencoded\" },\n  }\n});\n\ndefine({\n  tag: 'hr',\n  name: 'HTMLHRElement',\n  ctor: function HTMLHRElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // Obsolete\n    align: String,\n    color: String,\n    noShade: Boolean,\n    size: String,\n    width: String,\n  },\n});\n\ndefine({\n  tag: 'head',\n  name: 'HTMLHeadElement',\n  ctor: function HTMLHeadElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  }\n});\n\ndefine({\n  tags: ['h1','h2','h3','h4','h5','h6'],\n  name: 'HTMLHeadingElement',\n  ctor: function HTMLHeadingElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // Obsolete\n    align: String,\n  },\n});\n\ndefine({\n  tag: 'html',\n  name: 'HTMLHtmlElement',\n  ctor: function HTMLHtmlElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    xmlns: URL,\n    // Obsolete\n    version: String\n  }\n});\n\ndefine({\n  tag: 'iframe',\n  name: 'HTMLIFrameElement',\n  ctor: function HTMLIFrameElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    src: URL,\n    srcdoc: String,\n    name: String,\n    width: String,\n    height: String,\n    // XXX: sandbox is a reflected settable token list\n    seamless: Boolean,\n    allow: Boolean,\n    allowFullscreen: Boolean,\n    allowUserMedia: Boolean,\n    allowPaymentRequest: Boolean,\n    referrerPolicy: REFERRER,\n    loading: { type:['eager','lazy'], treatNullAsEmptyString: true },\n    // Obsolete\n    align: String,\n    scrolling: String,\n    frameBorder: String,\n    longDesc: URL,\n    marginHeight: { type: String, treatNullAsEmptyString: true },\n    marginWidth: { type: String, treatNullAsEmptyString: true },\n  }\n});\n\ndefine({\n  tag: 'img',\n  name: 'HTMLImageElement',\n  ctor: function HTMLImageElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    alt: String,\n    src: URL,\n    srcset: String,\n    crossOrigin: CORS,\n    useMap: String,\n    isMap: Boolean,\n    sizes: String,\n    height: { type: \"unsigned long\", default: 0 },\n    width: { type: \"unsigned long\", default: 0 },\n    referrerPolicy: REFERRER,\n    loading: { type:['eager','lazy'], missing: '' },\n    // Obsolete:\n    name: String,\n    lowsrc: URL,\n    align: String,\n    hspace: { type: \"unsigned long\", default: 0 },\n    vspace: { type: \"unsigned long\", default: 0 },\n    longDesc: URL,\n    border: { type: String, treatNullAsEmptyString: true },\n  }\n});\n\ndefine({\n  tag: 'input',\n  name: 'HTMLInputElement',\n  ctor: function HTMLInputElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    form: formAssociatedProps.form,\n    _post_click_activation_steps: { value: function(e) {\n      if (this.type === 'checkbox') {\n        this.checked = !this.checked;\n      }\n      else if (this.type === 'radio') {\n        var group = this.form.getElementsByName(this.name);\n        for (var i=group.length-1; i >= 0; i--) {\n          var el = group[i];\n          el.checked = (el === this);\n        }\n      }\n    }},\n  },\n  attributes: {\n    name: String,\n    disabled: Boolean,\n    autofocus: Boolean,\n    accept: String,\n    alt: String,\n    max: String,\n    min: String,\n    pattern: String,\n    placeholder: String,\n    step: String,\n    dirName: String,\n    defaultValue: {name: 'value'},\n    multiple: Boolean,\n    required: Boolean,\n    readOnly: Boolean,\n    checked: Boolean,\n    value: String,\n    src: URL,\n    defaultChecked: {name: 'checked', type: Boolean},\n    size: {type: 'unsigned long', default: 20, min: 1, setmin: 1},\n    width: {type: 'unsigned long', min: 0, setmin: 0, default: 0},\n    height: {type: 'unsigned long', min: 0, setmin: 0, default: 0},\n    minLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1},\n    maxLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1},\n    autocomplete: String, // It's complicated\n    type: { type:\n            [\"text\", \"hidden\", \"search\", \"tel\", \"url\", \"email\", \"password\",\n             \"datetime\", \"date\", \"month\", \"week\", \"time\", \"datetime-local\",\n             \"number\", \"range\", \"color\", \"checkbox\", \"radio\", \"file\", \"submit\",\n             \"image\", \"reset\", \"button\"],\n            missing: 'text' },\n    formTarget: String,\n    formNoValidate: Boolean,\n    formMethod: { type: [\"get\", \"post\"], invalid: 'get', missing: '' },\n    formEnctype: { type: [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"], invalid: \"application/x-www-form-urlencoded\", missing: '' },\n    inputMode: { type: [ \"verbatim\", \"latin\", \"latin-name\", \"latin-prose\", \"full-width-latin\", \"kana\", \"kana-name\", \"katakana\", \"numeric\", \"tel\", \"email\", \"url\" ], missing: '' },\n    // Obsolete\n    align: String,\n    useMap: String,\n  }\n});\n\ndefine({\n  tag: 'keygen',\n  name: 'HTMLKeygenElement',\n  ctor: function HTMLKeygenElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: formAssociatedProps,\n  attributes: {\n    name: String,\n    disabled: Boolean,\n    autofocus: Boolean,\n    challenge: String,\n    keytype: { type:[\"rsa\"], missing: '' },\n  }\n});\n\ndefine({\n  tag: 'li',\n  name: 'HTMLLIElement',\n  ctor: function HTMLLIElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    value: {type: \"long\", default: 0},\n    // Obsolete\n    type: String,\n  }\n});\n\ndefine({\n  tag: 'label',\n  name: 'HTMLLabelElement',\n  ctor: function HTMLLabelElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: formAssociatedProps,\n  attributes: {\n    htmlFor: {name: 'for', type: String}\n  }\n});\n\ndefine({\n  tag: 'legend',\n  name: 'HTMLLegendElement',\n  ctor: function HTMLLegendElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // Obsolete\n    align: String\n  },\n});\n\ndefine({\n  tag: 'link',\n  name: 'HTMLLinkElement',\n  ctor: function HTMLLinkElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // XXX Reflect DOMSettableTokenList sizes also DOMTokenList relList\n    href: URL,\n    rel: String,\n    media: String,\n    hreflang: String,\n    type: String,\n    crossOrigin: CORS,\n    nonce: String,\n    integrity: String,\n    referrerPolicy: REFERRER,\n    imageSizes: String,\n    imageSrcset: String,\n    // Obsolete\n    charset: String,\n    rev: String,\n    target: String,\n  }\n});\n\ndefine({\n  tag: 'map',\n  name: 'HTMLMapElement',\n  ctor: function HTMLMapElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    name: String\n  }\n});\n\ndefine({\n  tag: 'menu',\n  name: 'HTMLMenuElement',\n  ctor: function HTMLMenuElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // XXX: not quite right, default should be popup if parent element is\n    // popup.\n    type: { type: [ 'context', 'popup', 'toolbar' ], missing: 'toolbar' },\n    label: String,\n    // Obsolete\n    compact: Boolean,\n  }\n});\n\ndefine({\n  tag: 'meta',\n  name: 'HTMLMetaElement',\n  ctor: function HTMLMetaElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    name: String,\n    content: String,\n    httpEquiv: {name: 'http-equiv', type: String},\n    // Obsolete\n    scheme: String,\n  }\n});\n\ndefine({\n  tag: 'meter',\n  name: 'HTMLMeterElement',\n  ctor: function HTMLMeterElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: formAssociatedProps\n});\n\ndefine({\n  tags: ['ins', 'del'],\n  name: 'HTMLModElement',\n  ctor: function HTMLModElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    cite: URL,\n    dateTime: String\n  }\n});\n\ndefine({\n  tag: 'ol',\n  name: 'HTMLOListElement',\n  ctor: function HTMLOListElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    // Utility function (see the start attribute default value). Returns\n    // the number of <li> children of this element\n    _numitems: { get: function() {\n      var items = 0;\n      this.childNodes.forEach(function(n) {\n        if (n.nodeType === Node.ELEMENT_NODE && n.tagName === \"LI\")\n          items++;\n      });\n      return items;\n    }}\n  },\n  attributes: {\n    type: String,\n    reversed: Boolean,\n    start: {\n      type: \"long\",\n      default: function() {\n       // The default value of the start attribute is 1 unless the list is\n       // reversed. Then it is the # of li children\n       if (this.reversed)\n         return this._numitems;\n       else\n         return 1;\n      }\n    },\n    // Obsolete\n    compact: Boolean,\n  }\n});\n\ndefine({\n  tag: 'object',\n  name: 'HTMLObjectElement',\n  ctor: function HTMLObjectElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: formAssociatedProps,\n  attributes: {\n    data: URL,\n    type: String,\n    name: String,\n    useMap: String,\n    typeMustMatch: Boolean,\n    width: String,\n    height: String,\n    // Obsolete\n    align: String,\n    archive: String,\n    code: String,\n    declare: Boolean,\n    hspace: { type: \"unsigned long\", default: 0 },\n    standby: String,\n    vspace: { type: \"unsigned long\", default: 0 },\n    codeBase: URL,\n    codeType: String,\n    border: { type: String, treatNullAsEmptyString: true },\n  }\n});\n\ndefine({\n  tag: 'optgroup',\n  name: 'HTMLOptGroupElement',\n  ctor: function HTMLOptGroupElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    disabled: Boolean,\n    label: String\n  }\n});\n\ndefine({\n  tag: 'option',\n  name: 'HTMLOptionElement',\n  ctor: function HTMLOptionElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    form: { get: function() {\n      var p = this.parentNode;\n      while (p && p.nodeType === Node.ELEMENT_NODE) {\n        if (p.localName === 'select') return p.form;\n        p = p.parentNode;\n      }\n    }},\n    value: {\n      get: function() { return this._getattr('value') || this.text; },\n      set: function(v) { this._setattr('value', v); },\n    },\n    text: {\n      get: function() {\n        // Strip and collapse whitespace\n        return this.textContent.replace(/[ \\t\\n\\f\\r]+/g, ' ').trim();\n      },\n      set: function(v) { this.textContent = v; },\n    },\n    // missing: index\n  },\n  attributes: {\n    disabled: Boolean,\n    defaultSelected: {name: 'selected', type: Boolean},\n    label: String,\n  }\n});\n\ndefine({\n  tag: 'output',\n  name: 'HTMLOutputElement',\n  ctor: function HTMLOutputElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: formAssociatedProps,\n  attributes: {\n    // XXX Reflect for/htmlFor as a settable token list\n    name: String\n  }\n});\n\ndefine({\n  tag: 'p',\n  name: 'HTMLParagraphElement',\n  ctor: function HTMLParagraphElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // Obsolete\n    align: String\n  }\n});\n\ndefine({\n  tag: 'param',\n  name: 'HTMLParamElement',\n  ctor: function HTMLParamElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    name: String,\n    value: String,\n    // Obsolete\n    type: String,\n    valueType: String,\n  }\n});\n\ndefine({\n  tags: ['pre',/*legacy elements:*/'listing','xmp'],\n  name: 'HTMLPreElement',\n  ctor: function HTMLPreElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // Obsolete\n    width: { type: \"long\", default: 0 },\n  }\n});\n\ndefine({\n  tag: 'progress',\n  name: 'HTMLProgressElement',\n  ctor: function HTMLProgressElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: formAssociatedProps,\n  attributes: {\n    max: {type: Number, float: true, default: 1.0, min: 0}\n  }\n});\n\ndefine({\n  tags: ['q', 'blockquote'],\n  name: 'HTMLQuoteElement',\n  ctor: function HTMLQuoteElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    cite: URL\n  }\n});\n\ndefine({\n  tag: 'script',\n  name: 'HTMLScriptElement',\n  ctor: function HTMLScriptElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    text: {\n      get: function() {\n        var s = \"\";\n        for(var i = 0, n = this.childNodes.length; i < n; i++) {\n          var child = this.childNodes[i];\n          if (child.nodeType === Node.TEXT_NODE)\n            s += child._data;\n        }\n        return s;\n      },\n      set: function(value) {\n        this.removeChildren();\n        if (value !== null && value !== \"\") {\n          this.appendChild(this.ownerDocument.createTextNode(value));\n        }\n      }\n    }\n  },\n  attributes: {\n    src: URL,\n    type: String,\n    charset: String,\n    referrerPolicy: REFERRER,\n    defer: Boolean,\n    async: Boolean,\n    nomodule: Boolean,\n    crossOrigin: CORS,\n    nonce: String,\n    integrity: String,\n  }\n});\n\ndefine({\n  tag: 'select',\n  name: 'HTMLSelectElement',\n  ctor: function HTMLSelectElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    form: formAssociatedProps.form,\n    options: { get: function() {\n      return this.getElementsByTagName('option');\n    }}\n  },\n  attributes: {\n    autocomplete: String, // It's complicated\n    name: String,\n    disabled: Boolean,\n    autofocus: Boolean,\n    multiple: Boolean,\n    required: Boolean,\n    size: {type: \"unsigned long\", default: 0}\n  }\n});\n\ndefine({\n  tag: 'span',\n  name: 'HTMLSpanElement',\n  ctor: function HTMLSpanElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  }\n});\n\ndefine({\n  tag: 'style',\n  name: 'HTMLStyleElement',\n  ctor: function HTMLStyleElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    media: String,\n    type: String,\n    scoped: Boolean\n  }\n});\n\ndefine({\n  tag: 'caption',\n  name: 'HTMLTableCaptionElement',\n  ctor: function HTMLTableCaptionElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // Obsolete\n    align: String,\n  }\n});\n\n\ndefine({\n  name: 'HTMLTableCellElement',\n  ctor: function HTMLTableCellElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    colSpan: {type: \"unsigned long\", default: 1},\n    rowSpan: {type: \"unsigned long\", default: 1},\n    //XXX Also reflect settable token list headers\n    scope: { type: ['row','col','rowgroup','colgroup'], missing: '' },\n    abbr: String,\n    // Obsolete\n    align: String,\n    axis: String,\n    height: String,\n    width: String,\n    ch: { name: 'char', type: String },\n    chOff: { name: 'charoff', type: String },\n    noWrap: Boolean,\n    vAlign: String,\n    bgColor: { type: String, treatNullAsEmptyString: true },\n  }\n});\n\ndefine({\n  tags: ['col', 'colgroup'],\n  name: 'HTMLTableColElement',\n  ctor: function HTMLTableColElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    span: {type: 'limited unsigned long with fallback', default: 1, min: 1},\n    // Obsolete\n    align: String,\n    ch: { name: 'char', type: String },\n    chOff: { name: 'charoff', type: String },\n    vAlign: String,\n    width: String,\n  }\n});\n\ndefine({\n  tag: 'table',\n  name: 'HTMLTableElement',\n  ctor: function HTMLTableElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    rows: { get: function() {\n      return this.getElementsByTagName('tr');\n    }}\n  },\n  attributes: {\n    // Obsolete\n    align: String,\n    border: String,\n    frame: String,\n    rules: String,\n    summary: String,\n    width: String,\n    bgColor: { type: String, treatNullAsEmptyString: true },\n    cellPadding: { type: String, treatNullAsEmptyString: true },\n    cellSpacing: { type: String, treatNullAsEmptyString: true },\n  }\n});\n\ndefine({\n  tag: 'template',\n  name: 'HTMLTemplateElement',\n  ctor: function HTMLTemplateElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n    this._contentFragment = doc._templateDoc.createDocumentFragment();\n  },\n  props: {\n    content: { get: function() { return this._contentFragment; } },\n    serialize: { value: function() { return this.content.serialize(); } }\n  }\n});\n\ndefine({\n  tag: 'tr',\n  name: 'HTMLTableRowElement',\n  ctor: function HTMLTableRowElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    cells: { get: function() {\n      return this.querySelectorAll('td,th');\n    }}\n  },\n  attributes: {\n    // Obsolete\n    align: String,\n    ch: { name: 'char', type: String },\n    chOff: { name: 'charoff', type: String },\n    vAlign: String,\n    bgColor: { type: String, treatNullAsEmptyString: true },\n  },\n});\n\ndefine({\n  tags: ['thead', 'tfoot', 'tbody'],\n  name: 'HTMLTableSectionElement',\n  ctor: function HTMLTableSectionElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    rows: { get: function() {\n      return this.getElementsByTagName('tr');\n    }}\n  },\n  attributes: {\n    // Obsolete\n    align: String,\n    ch: { name: 'char', type: String },\n    chOff: { name: 'charoff', type: String },\n    vAlign: String,\n  }\n});\n\ndefine({\n  tag: 'textarea',\n  name: 'HTMLTextAreaElement',\n  ctor: function HTMLTextAreaElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    form: formAssociatedProps.form,\n    type: { get: function() { return 'textarea'; } },\n    defaultValue: {\n      get: function() { return this.textContent; },\n      set: function(v) { this.textContent = v; },\n    },\n    value: {\n      get: function() { return this.defaultValue; /* never dirty */ },\n      set: function(v) {\n        // This isn't completely correct: according to the spec, this\n        // should \"dirty\" the API value, and result in\n        // `this.value !== this.defaultValue`.  But for most of what\n        // folks want to do, this implementation should be fine:\n        this.defaultValue = v;\n      },\n    },\n    textLength: { get: function() { return this.value.length; } },\n  },\n  attributes: {\n    autocomplete: String, // It's complicated\n    name: String,\n    disabled: Boolean,\n    autofocus: Boolean,\n    placeholder: String,\n    wrap: String,\n    dirName: String,\n    required: Boolean,\n    readOnly: Boolean,\n    rows: {type: 'limited unsigned long with fallback', default: 2 },\n    cols: {type: 'limited unsigned long with fallback', default: 20 },\n    maxLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1},\n    minLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1},\n    inputMode: { type: [ \"verbatim\", \"latin\", \"latin-name\", \"latin-prose\", \"full-width-latin\", \"kana\", \"kana-name\", \"katakana\", \"numeric\", \"tel\", \"email\", \"url\" ], missing: '' },\n  }\n});\n\ndefine({\n  tag: 'time',\n  name: 'HTMLTimeElement',\n  ctor: function HTMLTimeElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    dateTime: String,\n    pubDate: Boolean\n  }\n});\n\ndefine({\n  tag: 'title',\n  name: 'HTMLTitleElement',\n  ctor: function HTMLTitleElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    text: { get: function() {\n      return this.textContent;\n    }}\n  }\n});\n\ndefine({\n  tag: 'ul',\n  name: 'HTMLUListElement',\n  ctor: function HTMLUListElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    type: String,\n    // Obsolete\n    compact: Boolean,\n  }\n});\n\ndefine({\n  name: 'HTMLMediaElement',\n  ctor: function HTMLMediaElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    src: URL,\n    crossOrigin: CORS,\n    preload: { type:[\"metadata\", \"none\", \"auto\", {value: \"\", alias: \"auto\"}], missing: 'auto' },\n    loop: Boolean,\n    autoplay: Boolean,\n    mediaGroup: String,\n    controls: Boolean,\n    defaultMuted: {name: \"muted\", type: Boolean}\n  }\n});\n\ndefine({\n  name: 'HTMLAudioElement',\n  tag: 'audio',\n  superclass: htmlElements.HTMLMediaElement,\n  ctor: function HTMLAudioElement(doc, localName, prefix) {\n    htmlElements.HTMLMediaElement.call(this, doc, localName, prefix);\n  }\n});\n\ndefine({\n  name: 'HTMLVideoElement',\n  tag: 'video',\n  superclass: htmlElements.HTMLMediaElement,\n  ctor: function HTMLVideoElement(doc, localName, prefix) {\n    htmlElements.HTMLMediaElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    poster: URL,\n    width: {type: \"unsigned long\", min: 0, default: 0 },\n    height: {type: \"unsigned long\", min: 0, default: 0 }\n  }\n});\n\ndefine({\n  tag: 'td',\n  name: 'HTMLTableDataCellElement',\n  superclass: htmlElements.HTMLTableCellElement,\n  ctor: function HTMLTableDataCellElement(doc, localName, prefix) {\n    htmlElements.HTMLTableCellElement.call(this, doc, localName, prefix);\n  }\n});\n\ndefine({\n  tag: 'th',\n  name: 'HTMLTableHeaderCellElement',\n  superclass: htmlElements.HTMLTableCellElement,\n  ctor: function HTMLTableHeaderCellElement(doc, localName, prefix) {\n    htmlElements.HTMLTableCellElement.call(this, doc, localName, prefix);\n  },\n});\n\ndefine({\n  tag: 'frameset',\n  name: 'HTMLFrameSetElement',\n  ctor: function HTMLFrameSetElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  }\n});\n\ndefine({\n  tag: 'frame',\n  name: 'HTMLFrameElement',\n  ctor: function HTMLFrameElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  }\n});\n\ndefine({\n  tag: 'canvas',\n  name: 'HTMLCanvasElement',\n  ctor: function HTMLCanvasElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    getContext: { value: utils.nyi },\n    probablySupportsContext: { value: utils.nyi },\n    setContext: { value: utils.nyi },\n    transferControlToProxy: { value: utils.nyi },\n    toDataURL: { value: utils.nyi },\n    toBlob: { value: utils.nyi }\n  },\n  attributes: {\n    width: { type: \"unsigned long\", default: 300},\n    height: { type: \"unsigned long\", default: 150}\n  }\n});\n\ndefine({\n  tag: 'dialog',\n  name: 'HTMLDialogElement',\n  ctor: function HTMLDialogElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    show: { value: utils.nyi },\n    showModal: { value: utils.nyi },\n    close: { value: utils.nyi }\n  },\n  attributes: {\n    open: Boolean,\n    returnValue: String\n  }\n});\n\ndefine({\n  tag: 'menuitem',\n  name: 'HTMLMenuItemElement',\n  ctor: function HTMLMenuItemElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    // The menuitem's label\n    _label: {\n      get: function() {\n        var val = this._getattr('label');\n        if (val !== null && val !== '') { return val; }\n        val = this.textContent;\n        // Strip and collapse whitespace\n        return val.replace(/[ \\t\\n\\f\\r]+/g, ' ').trim();\n      }\n    },\n    // The menuitem label IDL attribute\n    label: {\n      get: function() {\n        var val = this._getattr('label');\n        if (val !== null) { return val; }\n        return this._label;\n      },\n      set: function(v) {\n        this._setattr('label', v);\n      },\n    }\n  },\n  attributes: {\n    type: { type: [\"command\",\"checkbox\",\"radio\"], missing: 'command' },\n    icon: URL,\n    disabled: Boolean,\n    checked: Boolean,\n    radiogroup: String,\n    default: Boolean\n  }\n});\n\ndefine({\n  tag: 'source',\n  name: 'HTMLSourceElement',\n  ctor: function HTMLSourceElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    srcset: String,\n    sizes: String,\n    media: String,\n    src: URL,\n    type: String,\n    width: String,\n    height: String,\n  }\n});\n\ndefine({\n  tag: 'track',\n  name: 'HTMLTrackElement',\n  ctor: function HTMLTrackElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    src: URL,\n    srclang: String,\n    label: String,\n    default: Boolean,\n    kind: { type: [\"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\"], missing: 'subtitles', invalid: 'metadata' },\n  },\n  props: {\n    NONE: { get: function() { return 0; } },\n    LOADING: { get: function() { return 1; } },\n    LOADED: { get: function() { return 2; } },\n    ERROR: { get: function() { return 3; } },\n    readyState: { get: utils.nyi },\n    track: { get: utils.nyi }\n  }\n});\n\ndefine({\n  // obsolete\n  tag: 'font',\n  name: 'HTMLFontElement',\n  ctor: function HTMLFontElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    color: { type: String, treatNullAsEmptyString: true },\n    face: { type: String },\n    size: { type: String },\n  },\n});\n\ndefine({\n  // obsolete\n  tag: 'dir',\n  name: 'HTMLDirectoryElement',\n  ctor: function HTMLDirectoryElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    compact: Boolean,\n  },\n});\n\ndefine({\n  tags: [\n    \"abbr\", \"address\", \"article\", \"aside\", \"b\", \"bdi\", \"bdo\", \"cite\", \"content\", \"code\",\n    \"dd\", \"dfn\", \"dt\", \"em\", \"figcaption\", \"figure\", \"footer\", \"header\", \"hgroup\", \"i\", \"kbd\",\n    \"main\", \"mark\", \"nav\", \"noscript\", \"rb\", \"rp\", \"rt\", \"rtc\",\n    \"ruby\", \"s\", \"samp\", \"section\", \"small\", \"strong\", \"sub\", \"summary\", \"sup\", \"u\", \"var\", \"wbr\",\n    // Legacy elements\n    \"acronym\", \"basefont\", \"big\", \"center\", \"nobr\", \"noembed\", \"noframes\",\n    \"plaintext\", \"strike\", \"tt\"\n  ]\n});\n","\"use strict\";\nvar Element = require('./Element');\nvar defineElement = require('./defineElement');\nvar utils = require('./utils');\nvar CSSStyleDeclaration = require('./CSSStyleDeclaration');\n\nvar svgElements = exports.elements = {};\nvar svgNameToImpl = Object.create(null);\n\nexports.createElement = function(doc, localName, prefix) {\n  var impl = svgNameToImpl[localName] || SVGElement;\n  return new impl(doc, localName, prefix);\n};\n\nfunction define(spec) {\n  return defineElement(spec, SVGElement, svgElements, svgNameToImpl);\n}\n\nvar SVGElement = define({\n  superclass: Element,\n  name: 'SVGElement',\n  ctor: function SVGElement(doc, localName, prefix) {\n    Element.call(this, doc, localName, utils.NAMESPACE.SVG, prefix);\n  },\n  props: {\n    style: { get: function() {\n      if (!this._style)\n        this._style = new CSSStyleDeclaration(this);\n      return this._style;\n    }}\n  }\n});\n\ndefine({\n  name: 'SVGSVGElement',\n  ctor: function SVGSVGElement(doc, localName, prefix) {\n    SVGElement.call(this, doc, localName, prefix);\n  },\n  tag: 'svg',\n  props: {\n    createSVGRect: { value: function () {\n      return exports.createElement(this.ownerDocument, 'rect', null);\n    } }\n  }\n});\n\ndefine({\n  tags: [\n    'a', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', 'animateMotion', 'animateTransform',\n    'circle', 'clipPath', 'color-profile', 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColorMatrix',\n    'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight',\n    'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode',\n    'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter',\n    'font', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignObject', 'g',\n    'glyph', 'glyphRef', 'hkern', 'image', 'line', 'linearGradient', 'marker', 'mask', 'metadata', 'missing-glyph',\n    'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'script', 'set', 'stop',  'style',\n    'switch', 'symbol', 'text', 'textPath', 'title', 'tref', 'tspan', 'use', 'view', 'vkern'\n  ]\n});\n","\"use strict\";\nmodule.exports = {\n  VALUE: 1, // The value of a Text, Comment or PI node changed\n  ATTR: 2, // A new attribute was added or an attribute value and/or prefix changed\n  REMOVE_ATTR: 3, // An attribute was removed\n  REMOVE: 4, // A node was removed\n  MOVE: 5, // A node was moved\n  INSERT: 6 // A node (or a subtree of nodes) was inserted\n};","\"use strict\";\nmodule.exports = Document;\n\nvar Node = require('./Node');\nvar NodeList = require('./NodeList');\nvar ContainerNode = require('./ContainerNode');\nvar Element = require('./Element');\nvar Text = require('./Text');\nvar Comment = require('./Comment');\nvar Event = require('./Event');\nvar DocumentFragment = require('./DocumentFragment');\nvar ProcessingInstruction = require('./ProcessingInstruction');\nvar DOMImplementation = require('./DOMImplementation');\nvar TreeWalker = require('./TreeWalker');\nvar NodeIterator = require('./NodeIterator');\nvar NodeFilter = require('./NodeFilter');\nvar URL = require('./URL');\nvar select = require('./select');\nvar events = require('./events');\nvar xml = require('./xmlnames');\nvar html = require('./htmlelts');\nvar svg = require('./svg');\nvar utils = require('./utils');\nvar MUTATE = require('./MutationConstants');\nvar NAMESPACE = utils.NAMESPACE;\nvar isApiWritable = require(\"./config\").isApiWritable;\n\nfunction Document(isHTML, address) {\n  ContainerNode.call(this);\n  this.nodeType = Node.DOCUMENT_NODE;\n  this.isHTML = isHTML;\n  this._address = address || 'about:blank';\n  this.readyState = 'loading';\n  this.implementation = new DOMImplementation(this);\n\n  // DOMCore says that documents are always associated with themselves\n  this.ownerDocument = null; // ... but W3C tests expect null\n  this._contentType = isHTML ? 'text/html' : 'application/xml';\n\n  // These will be initialized by our custom versions of\n  // appendChild and insertBefore that override the inherited\n  // Node methods.\n  // XXX: override those methods!\n  this.doctype = null;\n  this.documentElement = null;\n\n  // \"Associated inert template document\"\n  this._templateDocCache = null;\n  // List of active NodeIterators, see NodeIterator#_preremove()\n  this._nodeIterators = null;\n\n  // Documents are always rooted, by definition\n  this._nid = 1;\n  this._nextnid = 2; // For numbering children of the document\n  this._nodes = [null, this];  // nid to node map\n\n  // This maintains the mapping from element ids to element nodes.\n  // We may need to update this mapping every time a node is rooted\n  // or uprooted, and any time an attribute is added, removed or changed\n  // on a rooted element.\n  this.byId = Object.create(null);\n\n  // This property holds a monotonically increasing value akin to\n  // a timestamp used to record the last modification time of nodes\n  // and their subtrees. See the lastModTime attribute and modify()\n  // method of the Node class. And see FilteredElementList for an example\n  // of the use of lastModTime\n  this.modclock = 0;\n}\n\n// Map from lowercase event category names (used as arguments to\n// createEvent()) to the property name in the impl object of the\n// event constructor.\nvar supportedEvents = {\n  event: 'Event',\n  customevent: 'CustomEvent',\n  uievent: 'UIEvent',\n  mouseevent: 'MouseEvent'\n};\n\n// Certain arguments to document.createEvent() must be treated specially\nvar replacementEvent = {\n  events: 'event',\n  htmlevents: 'event',\n  mouseevents: 'mouseevent',\n  mutationevents: 'mutationevent',\n  uievents: 'uievent'\n};\n\nvar mirrorAttr = function(f, name, defaultValue) {\n  return {\n    get: function() {\n      var o = f.call(this);\n      if (o) { return o[name]; }\n      return defaultValue;\n    },\n    set: function(value) {\n      var o = f.call(this);\n      if (o) { o[name] = value; }\n    },\n  };\n};\n\n/** @spec https://dom.spec.whatwg.org/#validate-and-extract */\nfunction validateAndExtract(namespace, qualifiedName) {\n  var prefix, localName, pos;\n  if (namespace==='') { namespace = null; }\n  // See https://github.com/whatwg/dom/issues/671\n  // and https://github.com/whatwg/dom/issues/319\n  if (!xml.isValidQName(qualifiedName)) {\n    utils.InvalidCharacterError();\n  }\n  prefix = null;\n  localName = qualifiedName;\n\n  pos = qualifiedName.indexOf(':');\n  if (pos >= 0) {\n    prefix = qualifiedName.substring(0, pos);\n    localName = qualifiedName.substring(pos+1);\n  }\n  if (prefix !== null && namespace === null) {\n    utils.NamespaceError();\n  }\n  if (prefix === 'xml' && namespace !== NAMESPACE.XML) {\n    utils.NamespaceError();\n  }\n  if ((prefix === 'xmlns' || qualifiedName === 'xmlns') &&\n      namespace !== NAMESPACE.XMLNS) {\n    utils.NamespaceError();\n  }\n  if (namespace === NAMESPACE.XMLNS && !(prefix==='xmlns' || qualifiedName==='xmlns')) {\n    utils.NamespaceError();\n  }\n  return { namespace: namespace, prefix: prefix, localName: localName };\n}\n\nDocument.prototype = Object.create(ContainerNode.prototype, {\n  // This method allows dom.js to communicate with a renderer\n  // that displays the document in some way\n  // XXX: I should probably move this to the window object\n  _setMutationHandler: { value: function(handler) {\n    this.mutationHandler = handler;\n  }},\n\n  // This method allows dom.js to receive event notifications\n  // from the renderer.\n  // XXX: I should probably move this to the window object\n  _dispatchRendererEvent: { value: function(targetNid, type, details) {\n    var target = this._nodes[targetNid];\n    if (!target) return;\n    target._dispatchEvent(new Event(type, details), true);\n  }},\n\n  nodeName: { value: '#document'},\n  nodeValue: {\n    get: function() {\n      return null;\n    },\n    set: function() {}\n  },\n\n  // XXX: DOMCore may remove documentURI, so it is NYI for now\n  documentURI: { get: function() { return this._address; }, set: utils.nyi },\n  compatMode: { get: function() {\n    // The _quirks property is set by the HTML parser\n    return this._quirks ? 'BackCompat' : 'CSS1Compat';\n  }},\n\n  createTextNode: { value: function(data) {\n    return new Text(this, String(data));\n  }},\n  createComment: { value: function(data) {\n    return new Comment(this, data);\n  }},\n  createDocumentFragment: { value: function() {\n    return new DocumentFragment(this);\n  }},\n  createProcessingInstruction: { value: function(target, data) {\n    if (!xml.isValidName(target) || data.indexOf('?>') !== -1)\n      utils.InvalidCharacterError();\n    return new ProcessingInstruction(this, target, data);\n  }},\n\n  createAttribute: { value: function(localName) {\n    localName = String(localName);\n    if (!xml.isValidName(localName)) utils.InvalidCharacterError();\n    if (this.isHTML) {\n      localName = utils.toASCIILowerCase(localName);\n    }\n    return new Element._Attr(null, localName, null, null, '');\n  }},\n  createAttributeNS: { value: function(namespace, qualifiedName) {\n    // Convert parameter types according to WebIDL\n    namespace =\n      (namespace === null || namespace === undefined || namespace === '') ? null :\n      String(namespace);\n    qualifiedName = String(qualifiedName);\n    var ve = validateAndExtract(namespace, qualifiedName);\n    return new Element._Attr(null, ve.localName, ve.prefix, ve.namespace, '');\n  }},\n\n  createElement: { value: function(localName) {\n    localName = String(localName);\n    if (!xml.isValidName(localName)) utils.InvalidCharacterError();\n    // Per spec, namespace should be HTML namespace if \"context object is\n    // an HTML document or context object's content type is\n    // \"application/xhtml+xml\", and null otherwise.\n    if (this.isHTML) {\n      if (/[A-Z]/.test(localName))\n        localName = utils.toASCIILowerCase(localName);\n      return html.createElement(this, localName, null);\n    } else if (this.contentType === 'application/xhtml+xml') {\n      return html.createElement(this, localName, null);\n    } else {\n      return new Element(this, localName, null, null);\n    }\n  }, writable: isApiWritable },\n\n  createElementNS: { value: function(namespace, qualifiedName) {\n    // Convert parameter types according to WebIDL\n    namespace =\n      (namespace === null || namespace === undefined || namespace === '') ? null :\n      String(namespace);\n    qualifiedName = String(qualifiedName);\n    var ve = validateAndExtract(namespace, qualifiedName);\n    return this._createElementNS(ve.localName, ve.namespace, ve.prefix);\n  }, writable: isApiWritable },\n\n  // This is used directly by HTML parser, which allows it to create\n  // elements with localNames containing ':' and non-default namespaces\n  _createElementNS: { value: function(localName, namespace, prefix) {\n    if (namespace === NAMESPACE.HTML) {\n      return html.createElement(this, localName, prefix);\n    }\n    else if (namespace === NAMESPACE.SVG) {\n      return svg.createElement(this, localName, prefix);\n    }\n\n    return new Element(this, localName, namespace, prefix);\n  }},\n\n  createEvent: { value: function createEvent(interfaceName) {\n    interfaceName = interfaceName.toLowerCase();\n    var name = replacementEvent[interfaceName] || interfaceName;\n    var constructor = events[supportedEvents[name]];\n\n    if (constructor) {\n      var e = new constructor();\n      e._initialized = false;\n      return e;\n    }\n    else {\n      utils.NotSupportedError();\n    }\n  }},\n\n  // See: http://www.w3.org/TR/dom/#dom-document-createtreewalker\n  createTreeWalker: {value: function (root, whatToShow, filter) {\n    if (!root) { throw new TypeError(\"root argument is required\"); }\n    if (!(root instanceof Node)) { throw new TypeError(\"root not a node\"); }\n    whatToShow = whatToShow === undefined ? NodeFilter.SHOW_ALL : (+whatToShow);\n    filter = filter === undefined ? null : filter;\n\n    return new TreeWalker(root, whatToShow, filter);\n  }},\n\n  // See: http://www.w3.org/TR/dom/#dom-document-createnodeiterator\n  createNodeIterator: {value: function (root, whatToShow, filter) {\n    if (!root) { throw new TypeError(\"root argument is required\"); }\n    if (!(root instanceof Node)) { throw new TypeError(\"root not a node\"); }\n    whatToShow = whatToShow === undefined ? NodeFilter.SHOW_ALL : (+whatToShow);\n    filter = filter === undefined ? null : filter;\n\n    return new NodeIterator(root, whatToShow, filter);\n  }},\n\n  _attachNodeIterator: { value: function(ni) {\n    // XXX ideally this should be a weak reference from Document to NodeIterator\n    if (!this._nodeIterators) { this._nodeIterators = []; }\n    this._nodeIterators.push(ni);\n  }},\n\n  _detachNodeIterator: { value: function(ni) {\n    // ni should always be in list of node iterators\n    var idx = this._nodeIterators.indexOf(ni);\n    this._nodeIterators.splice(idx, 1);\n  }},\n\n  _preremoveNodeIterators: { value: function(toBeRemoved) {\n    if (this._nodeIterators) {\n      this._nodeIterators.forEach(function(ni) { ni._preremove(toBeRemoved); });\n    }\n  }},\n\n  // Maintain the documentElement and\n  // doctype properties of the document.  Each of the following\n  // methods chains to the Node implementation of the method\n  // to do the actual inserting, removal or replacement.\n\n  _updateDocTypeElement: { value: function _updateDocTypeElement() {\n    this.doctype = this.documentElement = null;\n    for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\n      if (kid.nodeType === Node.DOCUMENT_TYPE_NODE)\n        this.doctype = kid;\n      else if (kid.nodeType === Node.ELEMENT_NODE)\n        this.documentElement = kid;\n    }\n  }},\n\n  insertBefore: { value: function insertBefore(child, refChild) {\n    Node.prototype.insertBefore.call(this, child, refChild);\n    this._updateDocTypeElement();\n    return child;\n  }},\n\n  replaceChild: { value: function replaceChild(node, child) {\n    Node.prototype.replaceChild.call(this, node, child);\n    this._updateDocTypeElement();\n    return child;\n  }},\n\n  removeChild: { value: function removeChild(child) {\n    Node.prototype.removeChild.call(this, child);\n    this._updateDocTypeElement();\n    return child;\n  }},\n\n  getElementById: { value: function(id) {\n    var n = this.byId[id];\n    if (!n) return null;\n    if (n instanceof MultiId) { // there was more than one element with this id\n      return n.getFirst();\n    }\n    return n;\n  }},\n\n  _hasMultipleElementsWithId: { value: function(id) {\n    // Used internally by querySelectorAll optimization\n    return (this.byId[id] instanceof MultiId);\n  }},\n\n  // Just copy this method from the Element prototype\n  getElementsByName: { value: Element.prototype.getElementsByName },\n  getElementsByTagName: { value: Element.prototype.getElementsByTagName },\n  getElementsByTagNameNS: { value: Element.prototype.getElementsByTagNameNS },\n  getElementsByClassName: { value: Element.prototype.getElementsByClassName },\n\n  adoptNode: { value: function adoptNode(node) {\n    if (node.nodeType === Node.DOCUMENT_NODE) utils.NotSupportedError();\n    if (node.nodeType === Node.ATTRIBUTE_NODE) { return node; }\n\n    if (node.parentNode) node.parentNode.removeChild(node);\n\n    if (node.ownerDocument !== this)\n      recursivelySetOwner(node, this);\n\n    return node;\n  }},\n\n  importNode: { value: function importNode(node, deep) {\n    return this.adoptNode(node.cloneNode(deep));\n  }, writable: isApiWritable },\n\n  // The following attributes and methods are from the HTML spec\n  origin: { get: function origin() { return null; } },\n  characterSet: { get: function characterSet() { return \"UTF-8\"; } },\n  contentType: { get: function contentType() { return this._contentType; } },\n  URL: { get: function URL() { return this._address; } },\n  domain: { get: utils.nyi, set: utils.nyi },\n  referrer: { get: utils.nyi },\n  cookie: { get: utils.nyi, set: utils.nyi },\n  lastModified: { get: utils.nyi },\n  location: {\n\tget: function() {\n\t  return this.defaultView ? this.defaultView.location : null; // gh #75\n\t},\n\tset: utils.nyi\n  },\n  _titleElement: {\n    get: function() {\n      // The title element of a document is the first title element in the\n      // document in tree order, if there is one, or null otherwise.\n      return this.getElementsByTagName('title').item(0) || null;\n    }\n  },\n  title: {\n    get: function() {\n      var elt = this._titleElement;\n      // The child text content of the title element, or '' if null.\n      var value = elt ? elt.textContent : '';\n      // Strip and collapse whitespace in value\n      return value.replace(/[ \\t\\n\\r\\f]+/g, ' ').replace(/(^ )|( $)/g, '');\n    },\n    set: function(value) {\n      var elt = this._titleElement;\n      var head = this.head;\n      if (!elt && !head) { return; /* according to spec */ }\n      if (!elt) {\n        elt = this.createElement('title');\n        head.appendChild(elt);\n      }\n      elt.textContent = value;\n    }\n  },\n  dir: mirrorAttr(function() {\n    var htmlElement = this.documentElement;\n    if (htmlElement && htmlElement.tagName === 'HTML') { return htmlElement; }\n  }, 'dir', ''),\n  fgColor: mirrorAttr(function() { return this.body; }, 'text', ''),\n  linkColor: mirrorAttr(function() { return this.body; }, 'link', ''),\n  vlinkColor: mirrorAttr(function() { return this.body; }, 'vLink', ''),\n  alinkColor: mirrorAttr(function() { return this.body; }, 'aLink', ''),\n  bgColor: mirrorAttr(function() { return this.body; }, 'bgColor', ''),\n\n  // Historical aliases of Document#characterSet\n  charset: { get: function() { return this.characterSet; } },\n  inputEncoding: { get: function() { return this.characterSet; } },\n\n  scrollingElement: {\n    get: function() {\n      return this._quirks ? this.body : this.documentElement;\n    }\n  },\n\n  // Return the first <body> child of the document element.\n  // XXX For now, setting this attribute is not implemented.\n  body: {\n    get: function() {\n      return namedHTMLChild(this.documentElement, 'body');\n    },\n    set: utils.nyi\n  },\n  // Return the first <head> child of the document element.\n  head: { get: function() {\n    return namedHTMLChild(this.documentElement, 'head');\n  }},\n  images: { get: utils.nyi },\n  embeds: { get: utils.nyi },\n  plugins: { get: utils.nyi },\n  links: { get: utils.nyi },\n  forms: { get: utils.nyi },\n  scripts: { get: utils.nyi },\n  applets: { get: function() { return []; } },\n  activeElement: { get: function() { return null; } },\n  innerHTML: {\n    get: function() { return this.serialize(); },\n    set: utils.nyi\n  },\n  outerHTML: {\n    get: function() { return this.serialize(); },\n    set: utils.nyi\n  },\n\n  write: { value: function(args) {\n    if (!this.isHTML) utils.InvalidStateError();\n\n    // XXX: still have to implement the ignore part\n    if (!this._parser /* && this._ignore_destructive_writes > 0 */ )\n      return;\n\n    if (!this._parser) {\n      // XXX call document.open, etc.\n    }\n\n    var s = arguments.join('');\n\n    // If the Document object's reload override flag is set, then\n    // append the string consisting of the concatenation of all the\n    // arguments to the method to the Document's reload override\n    // buffer.\n    // XXX: don't know what this is about.  Still have to do it\n\n    // If there is no pending parsing-blocking script, have the\n    // tokenizer process the characters that were inserted, one at a\n    // time, processing resulting tokens as they are emitted, and\n    // stopping when the tokenizer reaches the insertion point or when\n    // the processing of the tokenizer is aborted by the tree\n    // construction stage (this can happen if a script end tag token is\n    // emitted by the tokenizer).\n\n    // XXX: still have to do the above. Sounds as if we don't\n    // always call parse() here.  If we're blocked, then we just\n    // insert the text into the stream but don't parse it reentrantly...\n\n    // Invoke the parser reentrantly\n    this._parser.parse(s);\n  }},\n\n  writeln: { value: function writeln(args) {\n    this.write(Array.prototype.join.call(arguments, '') + '\\n');\n  }},\n\n  open: { value: function() {\n    this.documentElement = null;\n  }},\n\n  close: { value: function() {\n    this.readyState = 'interactive';\n    this._dispatchEvent(new Event('readystatechange'), true);\n    this._dispatchEvent(new Event('DOMContentLoaded'), true);\n    this.readyState = 'complete';\n    this._dispatchEvent(new Event('readystatechange'), true);\n    if (this.defaultView) {\n      this.defaultView._dispatchEvent(new Event('load'), true);\n    }\n  }},\n\n  // Utility methods\n  clone: { value: function clone() {\n    var d = new Document(this.isHTML, this._address);\n    d._quirks = this._quirks;\n    d._contentType = this._contentType;\n    return d;\n  }},\n\n  // We need to adopt the nodes if we do a deep clone\n  cloneNode: { value: function cloneNode(deep) {\n    var clone = Node.prototype.cloneNode.call(this, false);\n    if (deep) {\n      for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\n        clone._appendChild(clone.importNode(kid, true));\n      }\n    }\n    clone._updateDocTypeElement();\n    return clone;\n  }},\n\n  isEqual: { value: function isEqual(n) {\n    // Any two documents are shallowly equal.\n    // Node.isEqualNode will also test the children\n    return true;\n  }},\n\n  // Implementation-specific function.  Called when a text, comment,\n  // or pi value changes.\n  mutateValue: { value: function(node) {\n    if (this.mutationHandler) {\n      this.mutationHandler({\n        type: MUTATE.VALUE,\n        target: node,\n        data: node.data\n      });\n    }\n  }},\n\n  // Invoked when an attribute's value changes. Attr holds the new\n  // value.  oldval is the old value.  Attribute mutations can also\n  // involve changes to the prefix (and therefore the qualified name)\n  mutateAttr: { value: function(attr, oldval) {\n    // Manage id->element mapping for getElementsById()\n    // XXX: this special case id handling should not go here,\n    // but in the attribute declaration for the id attribute\n    /*\n    if (attr.localName === 'id' && attr.namespaceURI === null) {\n      if (oldval) delId(oldval, attr.ownerElement);\n      addId(attr.value, attr.ownerElement);\n    }\n    */\n    if (this.mutationHandler) {\n      this.mutationHandler({\n        type: MUTATE.ATTR,\n        target: attr.ownerElement,\n        attr: attr\n      });\n    }\n  }},\n\n  // Used by removeAttribute and removeAttributeNS for attributes.\n  mutateRemoveAttr: { value: function(attr) {\n/*\n* This is now handled in Attributes.js\n    // Manage id to element mapping\n    if (attr.localName === 'id' && attr.namespaceURI === null) {\n      this.delId(attr.value, attr.ownerElement);\n    }\n*/\n    if (this.mutationHandler) {\n      this.mutationHandler({\n        type: MUTATE.REMOVE_ATTR,\n        target: attr.ownerElement,\n        attr: attr\n      });\n    }\n  }},\n\n  // Called by Node.removeChild, etc. to remove a rooted element from\n  // the tree. Only needs to generate a single mutation event when a\n  // node is removed, but must recursively mark all descendants as not\n  // rooted.\n  mutateRemove: { value: function(node) {\n    // Send a single mutation event\n    if (this.mutationHandler) {\n      this.mutationHandler({\n        type: MUTATE.REMOVE,\n        target: node.parentNode,\n        node: node\n      });\n    }\n\n    // Mark this and all descendants as not rooted\n    recursivelyUproot(node);\n  }},\n\n  // Called when a new element becomes rooted.  It must recursively\n  // generate mutation events for each of the children, and mark them all\n  // as rooted.\n  mutateInsert: { value: function(node) {\n    // Mark node and its descendants as rooted\n    recursivelyRoot(node);\n\n    // Send a single mutation event\n    if (this.mutationHandler) {\n      this.mutationHandler({\n        type: MUTATE.INSERT,\n        target: node.parentNode,\n        node: node\n      });\n    }\n  }},\n\n  // Called when a rooted element is moved within the document\n  mutateMove: { value: function(node) {\n    if (this.mutationHandler) {\n      this.mutationHandler({\n        type: MUTATE.MOVE,\n        target: node\n      });\n    }\n  }},\n\n\n  // Add a mapping from  id to n for n.ownerDocument\n  addId: { value: function addId(id, n) {\n    var val = this.byId[id];\n    if (!val) {\n      this.byId[id] = n;\n    }\n    else {\n      // TODO: Add a way to opt-out console warnings\n      //console.warn('Duplicate element id ' + id);\n      if (!(val instanceof MultiId)) {\n        val = new MultiId(val);\n        this.byId[id] = val;\n      }\n      val.add(n);\n    }\n  }},\n\n  // Delete the mapping from id to n for n.ownerDocument\n  delId: { value: function delId(id, n) {\n    var val = this.byId[id];\n    utils.assert(val);\n\n    if (val instanceof MultiId) {\n      val.del(n);\n      if (val.length === 1) { // convert back to a single node\n        this.byId[id] = val.downgrade();\n      }\n    }\n    else {\n      this.byId[id] = undefined;\n    }\n  }},\n\n  _resolve: { value: function(href) {\n    //XXX: Cache the URL\n    return new URL(this._documentBaseURL).resolve(href);\n  }},\n\n  _documentBaseURL: { get: function() {\n    // XXX: This is not implemented correctly yet\n    var url = this._address;\n    if (url === 'about:blank') url = '/';\n\n    var base = this.querySelector('base[href]');\n    if (base) {\n      return new URL(url).resolve(base.getAttribute('href'));\n    }\n    return url;\n\n    // The document base URL of a Document object is the\n    // absolute URL obtained by running these substeps:\n\n    //     Let fallback base url be the document's address.\n\n    //     If fallback base url is about:blank, and the\n    //     Document's browsing context has a creator browsing\n    //     context, then let fallback base url be the document\n    //     base URL of the creator Document instead.\n\n    //     If the Document is an iframe srcdoc document, then\n    //     let fallback base url be the document base URL of\n    //     the Document's browsing context's browsing context\n    //     container's Document instead.\n\n    //     If there is no base element that has an href\n    //     attribute, then the document base URL is fallback\n    //     base url; abort these steps. Otherwise, let url be\n    //     the value of the href attribute of the first such\n    //     element.\n\n    //     Resolve url relative to fallback base url (thus,\n    //     the base href attribute isn't affected by xml:base\n    //     attributes).\n\n    //     The document base URL is the result of the previous\n    //     step if it was successful; otherwise it is fallback\n    //     base url.\n  }},\n\n  _templateDoc: { get: function() {\n    if (!this._templateDocCache) {\n      // \"associated inert template document\"\n      var newDoc = new Document(this.isHTML, this._address);\n      this._templateDocCache = newDoc._templateDocCache = newDoc;\n    }\n    return this._templateDocCache;\n  }},\n\n  querySelector: { value: function(selector) {\n    return select(selector, this)[0];\n  }},\n\n  querySelectorAll: { value: function(selector) {\n    var nodes = select(selector, this);\n    return nodes.item ? nodes : new NodeList(nodes);\n  }}\n\n});\n\n\nvar eventHandlerTypes = [\n  'abort', 'canplay', 'canplaythrough', 'change', 'click', 'contextmenu',\n  'cuechange', 'dblclick', 'drag', 'dragend', 'dragenter', 'dragleave',\n  'dragover', 'dragstart', 'drop', 'durationchange', 'emptied', 'ended',\n  'input', 'invalid', 'keydown', 'keypress', 'keyup', 'loadeddata',\n  'loadedmetadata', 'loadstart', 'mousedown', 'mousemove', 'mouseout',\n  'mouseover', 'mouseup', 'mousewheel', 'pause', 'play', 'playing',\n  'progress', 'ratechange', 'readystatechange', 'reset', 'seeked',\n  'seeking', 'select', 'show', 'stalled', 'submit', 'suspend',\n  'timeupdate', 'volumechange', 'waiting',\n\n  'blur', 'error', 'focus', 'load', 'scroll'\n];\n\n// Add event handler idl attribute getters and setters to Document\neventHandlerTypes.forEach(function(type) {\n  // Define the event handler registration IDL attribute for this type\n  Object.defineProperty(Document.prototype, 'on' + type, {\n    get: function() {\n      return this._getEventHandler(type);\n    },\n    set: function(v) {\n      this._setEventHandler(type, v);\n    }\n  });\n});\n\nfunction namedHTMLChild(parent, name) {\n  if (parent && parent.isHTML) {\n    for (var kid = parent.firstChild; kid !== null; kid = kid.nextSibling) {\n      if (kid.nodeType === Node.ELEMENT_NODE &&\n        kid.localName === name &&\n        kid.namespaceURI === NAMESPACE.HTML) {\n        return kid;\n      }\n    }\n  }\n  return null;\n}\n\nfunction root(n) {\n  n._nid = n.ownerDocument._nextnid++;\n  n.ownerDocument._nodes[n._nid] = n;\n  // Manage id to element mapping\n  if (n.nodeType === Node.ELEMENT_NODE) {\n    var id = n.getAttribute('id');\n    if (id) n.ownerDocument.addId(id, n);\n\n    // Script elements need to know when they're inserted\n    // into the document\n    if (n._roothook) n._roothook();\n  }\n}\n\nfunction uproot(n) {\n  // Manage id to element mapping\n  if (n.nodeType === Node.ELEMENT_NODE) {\n    var id = n.getAttribute('id');\n    if (id) n.ownerDocument.delId(id, n);\n  }\n  n.ownerDocument._nodes[n._nid] = undefined;\n  n._nid = undefined;\n}\n\nfunction recursivelyRoot(node) {\n  root(node);\n  // XXX:\n  // accessing childNodes on a leaf node creates a new array the\n  // first time, so be careful to write this loop so that it\n  // doesn't do that. node is polymorphic, so maybe this is hard to\n  // optimize?  Try switching on nodeType?\n/*\n  if (node.hasChildNodes()) {\n    var kids = node.childNodes;\n    for(var i = 0, n = kids.length;  i < n; i++)\n      recursivelyRoot(kids[i]);\n  }\n*/\n  if (node.nodeType === Node.ELEMENT_NODE) {\n    for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling)\n      recursivelyRoot(kid);\n  }\n}\n\nfunction recursivelyUproot(node) {\n  uproot(node);\n  for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling)\n      recursivelyUproot(kid);\n}\n\nfunction recursivelySetOwner(node, owner) {\n  node.ownerDocument = owner;\n  node._lastModTime = undefined; // mod times are document-based\n  if (Object.prototype.hasOwnProperty.call(node, '_tagName')) {\n    node._tagName = undefined; // Element subclasses might need to change case\n  }\n  for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling)\n    recursivelySetOwner(kid, owner);\n}\n\n// A class for storing multiple nodes with the same ID\nfunction MultiId(node) {\n  this.nodes = Object.create(null);\n  this.nodes[node._nid] = node;\n  this.length = 1;\n  this.firstNode = undefined;\n}\n\n// Add a node to the list, with O(1) time\nMultiId.prototype.add = function(node) {\n  if (!this.nodes[node._nid]) {\n    this.nodes[node._nid] = node;\n    this.length++;\n    this.firstNode = undefined;\n  }\n};\n\n// Remove a node from the list, with O(1) time\nMultiId.prototype.del = function(node) {\n  if (this.nodes[node._nid]) {\n    delete this.nodes[node._nid];\n    this.length--;\n    this.firstNode = undefined;\n  }\n};\n\n// Get the first node from the list, in the document order\n// Takes O(N) time in the size of the list, with a cache that is invalidated\n// when the list is modified.\nMultiId.prototype.getFirst = function() {\n  /* jshint bitwise: false */\n  if (!this.firstNode) {\n    var nid;\n    for (nid in this.nodes) {\n      if (this.firstNode === undefined ||\n        this.firstNode.compareDocumentPosition(this.nodes[nid]) & Node.DOCUMENT_POSITION_PRECEDING) {\n        this.firstNode = this.nodes[nid];\n      }\n    }\n  }\n  return this.firstNode;\n};\n\n// If there is only one node left, return it. Otherwise return \"this\".\nMultiId.prototype.downgrade = function() {\n  if (this.length === 1) {\n    var nid;\n    for (nid in this.nodes) {\n      return this.nodes[nid];\n    }\n  }\n  return this;\n};\n","\"use strict\";\nmodule.exports = DocumentType;\n\nvar Node = require('./Node');\nvar Leaf = require('./Leaf');\nvar ChildNode = require('./ChildNode');\n\nfunction DocumentType(ownerDocument, name, publicId, systemId) {\n  Leaf.call(this);\n  this.nodeType = Node.DOCUMENT_TYPE_NODE;\n  this.ownerDocument = ownerDocument || null;\n  this.name = name;\n  this.publicId = publicId || \"\";\n  this.systemId = systemId || \"\";\n}\n\nDocumentType.prototype = Object.create(Leaf.prototype, {\n  nodeName: { get: function() { return this.name; }},\n  nodeValue: {\n    get: function() { return null; },\n    set: function() {}\n  },\n\n  // Utility methods\n  clone: { value: function clone() {\n    return new DocumentType(this.ownerDocument, this.name, this.publicId, this.systemId);\n  }},\n\n  isEqual: { value: function isEqual(n) {\n    return this.name === n.name &&\n      this.publicId === n.publicId &&\n      this.systemId === n.systemId;\n  }}\n});\n\nObject.defineProperties(DocumentType.prototype, ChildNode);\n","\"use strict\";\nmodule.exports = HTMLParser;\n\nvar Document = require('./Document');\nvar DocumentType = require('./DocumentType');\nvar Node = require('./Node');\nvar NAMESPACE = require('./utils').NAMESPACE;\nvar html = require('./htmlelts');\nvar impl = html.elements;\n\nvar pushAll = Function.prototype.apply.bind(Array.prototype.push);\n\n/*\n * This file contains an implementation of the HTML parsing algorithm.\n * The algorithm and the implementation are complex because HTML\n * explicitly defines how the parser should behave for all possible\n * valid and invalid inputs.\n *\n * Usage:\n *\n * The file defines a single HTMLParser() function, which dom.js exposes\n * publicly as document.implementation.mozHTMLParser(). This is a\n * factory function, not a constructor.\n *\n * When you call document.implementation.mozHTMLParser(), it returns\n * an object that has parse() and document() methods. To parse HTML text,\n * pass the text (in one or more chunks) to the parse() method.  When\n * you've passed all the text (on the last chunk, or afterward) pass\n * true as the second argument to parse() to tell the parser that there\n * is no more coming. Call document() to get the document object that\n * the parser is parsing into.  You can call this at any time, before\n * or after calling parse().\n *\n * The first argument to mozHTMLParser is the absolute URL of the document.\n *\n * The second argument is optional and is for internal use only.  Pass an\n * element as the fragmentContext to do innerHTML parsing for the\n * element.  To do innerHTML parsing on a document, pass null. Otherwise,\n * omit the 2nd argument. See HTMLElement.innerHTML for an example.  Note\n * that if you pass a context element, the end() method will return an\n * unwrapped document instead of a wrapped one.\n *\n * Implementation details:\n *\n * This is a long file of almost 7000 lines. It is structured as one\n * big function nested within another big function.  The outer\n * function defines a bunch of constant data, utility functions\n * that use that data, and a couple of classes used by the parser.\n * The outer function also defines and returns the\n * inner function. This inner function is the HTMLParser factory\n * function that implements the parser and holds all the parser state\n * as local variables.  The HTMLParser function is quite big because\n * it defines many nested functions that use those local variables.\n *\n * There are three tightly coupled parser stages: a scanner, a\n * tokenizer and a tree builder. In a (possibly misguided) attempt at\n * efficiency, the stages are not implemented as separate classes:\n * everything shares state and is (mostly) implemented in imperative\n * (rather than OO) style.\n *\n * The stages of the parser work like this: When the client code calls\n * the parser's parse() method, the specified string is passed to\n * scanChars(). The scanner loops through that string and passes characters\n * (sometimes one at a time, sometimes in chunks) to the tokenizer stage.\n * The tokenizer groups the characters into tokens: tags, endtags, runs\n * of text, comments, doctype declarations, and the end-of-file (EOF)\n * token.  These tokens are then passed to the tree building stage via\n * the insertToken() function.  The tree building stage builds up the\n * document tree.\n *\n * The tokenizer stage is a finite state machine.  Each state is\n * implemented as a function with a name that ends in \"_state\".  The\n * initial state is data_state(). The current tokenizer state is stored\n * in the variable 'tokenizer'.  Most state functions expect a single\n * integer argument which represents a single UTF-16 codepoint.  Some\n * states want more characters and set a lookahead property on\n * themselves.  The scanChars() function in the scanner checks for this\n * lookahead property.  If it doesn't exist, then scanChars() just passes\n * the next input character to the current tokenizer state function.\n * Otherwise, scanChars() looks ahead (a given # of characters, or for a\n * matching string, or for a matching regexp) and passes a string of\n * characters to the current tokenizer state function.\n *\n * As a shortcut, certain states of the tokenizer use regular expressions\n * to look ahead in the scanner's input buffer for runs of text, simple\n * tags and attributes.  For well-formed input, these shortcuts skip a\n * lot of state transitions and speed things up a bit.\n *\n * When a tokenizer state function has consumed a complete token, it\n * emits that token, by calling insertToken(), or by calling a utility\n * function that itself calls insertToken().  These tokens are passed to\n * the tree building stage, which is also a state machine.  Like the\n * tokenizer, the tree building states are implemented as functions, and\n * these functions have names that end with _mode (because the HTML spec\n * refers to them as insertion modes). The current insertion mode is held\n * by the 'parser' variable.  Each insertion mode function takes up to 4\n * arguments.  The first is a token type, represented by the constants\n * TAG, ENDTAG, TEXT, COMMENT, DOCTYPE and EOF.  The second argument is\n * the value of the token: the text or comment data, or tagname or\n * doctype.  For tags, the 3rd argument is an array of attributes.  For\n * DOCTYPES it is the optional public id.  For tags, the 4th argument is\n * true if the tag is self-closing. For doctypes, the 4th argument is the\n * optional system id.\n *\n * Search for \"***\" to find the major sub-divisions in the code.\n */\n\n\n/***\n * Data prolog.  Lots of constants declared here, including some\n * very large objects.  They're used throughout the code that follows\n */\n// Token types for the tree builder.\nvar EOF = -1;\nvar TEXT = 1;\nvar TAG = 2;\nvar ENDTAG = 3;\nvar COMMENT = 4;\nvar DOCTYPE = 5;\n\n// A re-usable empty array\nvar NOATTRS = [];\n\n// These DTD public ids put the browser in quirks mode\nvar quirkyPublicIds = /^HTML$|^-\\/\\/W3O\\/\\/DTD W3 HTML Strict 3\\.0\\/\\/EN\\/\\/$|^-\\/W3C\\/DTD HTML 4\\.0 Transitional\\/EN$|^\\+\\/\\/Silmaril\\/\\/dtd html Pro v0r11 19970101\\/\\/|^-\\/\\/AdvaSoft Ltd\\/\\/DTD HTML 3\\.0 asWedit \\+ extensions\\/\\/|^-\\/\\/AS\\/\\/DTD HTML 3\\.0 asWedit \\+ extensions\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0 Level 1\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0 Level 2\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0 Strict Level 1\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0 Strict Level 2\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0 Strict\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.1E\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 3\\.0\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 3\\.2 Final\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 3\\.2\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 3\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Level 0\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Level 1\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Level 2\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Level 3\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Strict Level 0\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Strict Level 1\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Strict Level 2\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Strict Level 3\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Strict\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML\\/\\/|^-\\/\\/Metrius\\/\\/DTD Metrius Presentational\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 2\\.0 HTML Strict\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 2\\.0 HTML\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 2\\.0 Tables\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 3\\.0 HTML Strict\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 3\\.0 HTML\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 3\\.0 Tables\\/\\/|^-\\/\\/Netscape Comm\\. Corp\\.\\/\\/DTD HTML\\/\\/|^-\\/\\/Netscape Comm\\. Corp\\.\\/\\/DTD Strict HTML\\/\\/|^-\\/\\/O'Reilly and Associates\\/\\/DTD HTML 2\\.0\\/\\/|^-\\/\\/O'Reilly and Associates\\/\\/DTD HTML Extended 1\\.0\\/\\/|^-\\/\\/O'Reilly and Associates\\/\\/DTD HTML Extended Relaxed 1\\.0\\/\\/|^-\\/\\/SoftQuad Software\\/\\/DTD HoTMetaL PRO 6\\.0::19990601::extensions to HTML 4\\.0\\/\\/|^-\\/\\/SoftQuad\\/\\/DTD HoTMetaL PRO 4\\.0::19971010::extensions to HTML 4\\.0\\/\\/|^-\\/\\/Spyglass\\/\\/DTD HTML 2\\.0 Extended\\/\\/|^-\\/\\/SQ\\/\\/DTD HTML 2\\.0 HoTMetaL \\+ extensions\\/\\/|^-\\/\\/Sun Microsystems Corp\\.\\/\\/DTD HotJava HTML\\/\\/|^-\\/\\/Sun Microsystems Corp\\.\\/\\/DTD HotJava Strict HTML\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 3 1995-03-24\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 3\\.2 Draft\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 3\\.2 Final\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 3\\.2\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 3\\.2S Draft\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 4\\.0 Frameset\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 4\\.0 Transitional\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML Experimental 19960712\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML Experimental 970421\\/\\/|^-\\/\\/W3C\\/\\/DTD W3 HTML\\/\\/|^-\\/\\/W3O\\/\\/DTD W3 HTML 3\\.0\\/\\/|^-\\/\\/WebTechs\\/\\/DTD Mozilla HTML 2\\.0\\/\\/|^-\\/\\/WebTechs\\/\\/DTD Mozilla HTML\\/\\//i;\n\nvar quirkySystemId = \"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd\";\n\nvar conditionallyQuirkyPublicIds = /^-\\/\\/W3C\\/\\/DTD HTML 4\\.01 Frameset\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 4\\.01 Transitional\\/\\//i;\n\n// These DTD public ids put the browser in limited quirks mode\nvar limitedQuirkyPublicIds = /^-\\/\\/W3C\\/\\/DTD XHTML 1\\.0 Frameset\\/\\/|^-\\/\\/W3C\\/\\/DTD XHTML 1\\.0 Transitional\\/\\//i;\n\n\n// Element sets below. See the isA() function for a way to test\n// whether an element is a member of a set\nvar specialSet = Object.create(null);\nspecialSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"address\":true, \"applet\":true, \"area\":true, \"article\":true,\n  \"aside\":true, \"base\":true, \"basefont\":true, \"bgsound\":true,\n  \"blockquote\":true, \"body\":true, \"br\":true, \"button\":true,\n  \"caption\":true, \"center\":true, \"col\":true, \"colgroup\":true,\n  \"dd\":true, \"details\":true, \"dir\":true,\n  \"div\":true, \"dl\":true, \"dt\":true, \"embed\":true,\n  \"fieldset\":true, \"figcaption\":true, \"figure\":true, \"footer\":true,\n  \"form\":true, \"frame\":true, \"frameset\":true, \"h1\":true,\n  \"h2\":true, \"h3\":true, \"h4\":true, \"h5\":true,\n  \"h6\":true, \"head\":true, \"header\":true, \"hgroup\":true,\n  \"hr\":true, \"html\":true, \"iframe\":true, \"img\":true,\n  \"input\":true, \"li\":true, \"link\":true,\n  \"listing\":true, \"main\":true, \"marquee\":true, \"menu\":true, \"meta\":true,\n  \"nav\":true, \"noembed\":true, \"noframes\":true, \"noscript\":true,\n  \"object\":true, \"ol\":true, \"p\":true, \"param\":true,\n  \"plaintext\":true, \"pre\":true, \"script\":true, \"section\":true,\n  \"select\":true, \"source\":true, \"style\":true, \"summary\":true, \"table\":true,\n  \"tbody\":true, \"td\":true, \"template\":true, \"textarea\":true, \"tfoot\":true,\n  \"th\":true, \"thead\":true, \"title\":true, \"tr\":true, \"track\":true,\n  // Note that \"xmp\" was removed from the \"special\" set in the latest\n  // spec, apparently by accident; see\n  // https://github.com/whatwg/html/pull/1919\n  \"ul\":true, \"wbr\":true, \"xmp\":true\n};\nspecialSet[NAMESPACE.SVG] = {\n  __proto__: null,\n  \"foreignObject\": true, \"desc\": true, \"title\": true\n};\nspecialSet[NAMESPACE.MATHML] = {\n  __proto__: null,\n  \"mi\":true, \"mo\":true, \"mn\":true, \"ms\":true,\n  \"mtext\":true, \"annotation-xml\":true\n};\n\n// The set of address, div, and p HTML tags\nvar addressdivpSet = Object.create(null);\naddressdivpSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"address\":true, \"div\":true, \"p\":true\n};\n\nvar dddtSet = Object.create(null);\ndddtSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"dd\":true, \"dt\":true\n};\n\nvar tablesectionrowSet = Object.create(null);\ntablesectionrowSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"table\":true, \"thead\":true, \"tbody\":true, \"tfoot\":true, \"tr\":true\n};\n\nvar impliedEndTagsSet = Object.create(null);\nimpliedEndTagsSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"dd\": true, \"dt\": true, \"li\": true, \"menuitem\": true, \"optgroup\": true,\n  \"option\": true, \"p\": true, \"rb\": true, \"rp\": true, \"rt\": true, \"rtc\": true\n};\n\nvar thoroughImpliedEndTagsSet = Object.create(null);\nthoroughImpliedEndTagsSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"caption\": true, \"colgroup\": true, \"dd\": true, \"dt\": true, \"li\": true,\n  \"optgroup\": true, \"option\": true, \"p\": true, \"rb\": true, \"rp\": true,\n  \"rt\": true, \"rtc\": true, \"tbody\": true, \"td\": true, \"tfoot\": true,\n  \"th\": true, \"thead\": true, \"tr\": true\n};\n\nvar tableContextSet = Object.create(null);\ntableContextSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"table\": true, \"template\": true, \"html\": true\n};\n\nvar tableBodyContextSet = Object.create(null);\ntableBodyContextSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"tbody\": true, \"tfoot\": true, \"thead\": true, \"template\": true, \"html\": true\n};\n\nvar tableRowContextSet = Object.create(null);\ntableRowContextSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"tr\": true, \"template\": true, \"html\": true\n};\n\n// See http://www.w3.org/TR/html5/forms.html#form-associated-element\nvar formassociatedSet = Object.create(null);\nformassociatedSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"button\": true, \"fieldset\": true, \"input\": true, \"keygen\": true,\n  \"object\": true, \"output\": true, \"select\": true, \"textarea\": true,\n  \"img\": true\n};\n\nvar inScopeSet = Object.create(null);\ninScopeSet[NAMESPACE.HTML]= {\n  __proto__: null,\n  \"applet\":true, \"caption\":true, \"html\":true, \"table\":true,\n  \"td\":true, \"th\":true, \"marquee\":true, \"object\":true,\n  \"template\":true\n};\ninScopeSet[NAMESPACE.MATHML] = {\n  __proto__: null,\n  \"mi\":true, \"mo\":true, \"mn\":true, \"ms\":true,\n  \"mtext\":true, \"annotation-xml\":true\n};\ninScopeSet[NAMESPACE.SVG] = {\n  __proto__: null,\n  \"foreignObject\":true, \"desc\":true, \"title\":true\n};\n\nvar inListItemScopeSet = Object.create(inScopeSet);\ninListItemScopeSet[NAMESPACE.HTML] =\n  Object.create(inScopeSet[NAMESPACE.HTML]);\ninListItemScopeSet[NAMESPACE.HTML].ol = true;\ninListItemScopeSet[NAMESPACE.HTML].ul = true;\n\nvar inButtonScopeSet = Object.create(inScopeSet);\ninButtonScopeSet[NAMESPACE.HTML] =\n  Object.create(inScopeSet[NAMESPACE.HTML]);\ninButtonScopeSet[NAMESPACE.HTML].button = true;\n\nvar inTableScopeSet = Object.create(null);\ninTableScopeSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"html\":true, \"table\":true, \"template\":true\n};\n\n// The set of elements for select scope is the everything *except* these\nvar invertedSelectScopeSet = Object.create(null);\ninvertedSelectScopeSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"optgroup\":true, \"option\":true\n};\n\nvar mathmlTextIntegrationPointSet = Object.create(null);\nmathmlTextIntegrationPointSet[NAMESPACE.MATHML] = {\n  __proto__: null,\n  mi: true,\n  mo: true,\n  mn: true,\n  ms: true,\n  mtext: true\n};\n\nvar htmlIntegrationPointSet = Object.create(null);\nhtmlIntegrationPointSet[NAMESPACE.SVG] = {\n  __proto__: null,\n  foreignObject: true,\n  desc: true,\n  title: true\n};\n\nvar foreignAttributes = {\n  __proto__: null,\n  \"xlink:actuate\": NAMESPACE.XLINK, \"xlink:arcrole\": NAMESPACE.XLINK,\n  \"xlink:href\":   NAMESPACE.XLINK,  \"xlink:role\":    NAMESPACE.XLINK,\n  \"xlink:show\":   NAMESPACE.XLINK,  \"xlink:title\":   NAMESPACE.XLINK,\n  \"xlink:type\":   NAMESPACE.XLINK,  \"xml:base\":      NAMESPACE.XML,\n  \"xml:lang\":     NAMESPACE.XML,    \"xml:space\":     NAMESPACE.XML,\n  \"xmlns\":        NAMESPACE.XMLNS,  \"xmlns:xlink\":   NAMESPACE.XMLNS\n};\n\n\n// Lowercase to mixed case mapping for SVG attributes and tagnames\nvar svgAttrAdjustments = {\n  __proto__: null,\n  attributename: \"attributeName\", attributetype: \"attributeType\",\n  basefrequency: \"baseFrequency\", baseprofile: \"baseProfile\",\n  calcmode: \"calcMode\", clippathunits: \"clipPathUnits\",\n  diffuseconstant: \"diffuseConstant\",\n  edgemode: \"edgeMode\",\n  filterunits: \"filterUnits\",\n  glyphref: \"glyphRef\", gradienttransform: \"gradientTransform\",\n  gradientunits: \"gradientUnits\", kernelmatrix: \"kernelMatrix\",\n  kernelunitlength: \"kernelUnitLength\", keypoints: \"keyPoints\",\n  keysplines: \"keySplines\", keytimes: \"keyTimes\",\n  lengthadjust: \"lengthAdjust\", limitingconeangle: \"limitingConeAngle\",\n  markerheight: \"markerHeight\", markerunits: \"markerUnits\",\n  markerwidth: \"markerWidth\", maskcontentunits: \"maskContentUnits\",\n  maskunits: \"maskUnits\", numoctaves: \"numOctaves\",\n  pathlength: \"pathLength\", patterncontentunits: \"patternContentUnits\",\n  patterntransform: \"patternTransform\", patternunits: \"patternUnits\",\n  pointsatx: \"pointsAtX\", pointsaty: \"pointsAtY\",\n  pointsatz: \"pointsAtZ\", preservealpha: \"preserveAlpha\",\n  preserveaspectratio: \"preserveAspectRatio\",\n  primitiveunits: \"primitiveUnits\", refx: \"refX\",\n  refy: \"refY\", repeatcount: \"repeatCount\",\n  repeatdur: \"repeatDur\", requiredextensions: \"requiredExtensions\",\n  requiredfeatures: \"requiredFeatures\",\n  specularconstant: \"specularConstant\",\n  specularexponent: \"specularExponent\", spreadmethod: \"spreadMethod\",\n  startoffset: \"startOffset\", stddeviation: \"stdDeviation\",\n  stitchtiles: \"stitchTiles\", surfacescale: \"surfaceScale\",\n  systemlanguage: \"systemLanguage\", tablevalues: \"tableValues\",\n  targetx: \"targetX\", targety: \"targetY\",\n  textlength: \"textLength\", viewbox: \"viewBox\",\n  viewtarget: \"viewTarget\", xchannelselector: \"xChannelSelector\",\n  ychannelselector: \"yChannelSelector\", zoomandpan: \"zoomAndPan\"\n};\n\nvar svgTagNameAdjustments = {\n  __proto__: null,\n  altglyph: \"altGlyph\", altglyphdef: \"altGlyphDef\",\n  altglyphitem: \"altGlyphItem\", animatecolor: \"animateColor\",\n  animatemotion: \"animateMotion\", animatetransform: \"animateTransform\",\n  clippath: \"clipPath\", feblend: \"feBlend\",\n  fecolormatrix: \"feColorMatrix\",\n  fecomponenttransfer: \"feComponentTransfer\", fecomposite: \"feComposite\",\n  feconvolvematrix: \"feConvolveMatrix\",\n  fediffuselighting: \"feDiffuseLighting\",\n  fedisplacementmap: \"feDisplacementMap\",\n  fedistantlight: \"feDistantLight\", feflood: \"feFlood\",\n  fefunca: \"feFuncA\", fefuncb: \"feFuncB\",\n  fefuncg: \"feFuncG\", fefuncr: \"feFuncR\",\n  fegaussianblur: \"feGaussianBlur\", feimage: \"feImage\",\n  femerge: \"feMerge\", femergenode: \"feMergeNode\",\n  femorphology: \"feMorphology\", feoffset: \"feOffset\",\n  fepointlight: \"fePointLight\", fespecularlighting: \"feSpecularLighting\",\n  fespotlight: \"feSpotLight\", fetile: \"feTile\",\n  feturbulence: \"feTurbulence\", foreignobject: \"foreignObject\",\n  glyphref: \"glyphRef\", lineargradient: \"linearGradient\",\n  radialgradient: \"radialGradient\", textpath: \"textPath\"\n};\n\n\n// Data for parsing numeric and named character references\n// These next 3 objects are direct translations of tables\n// in the HTML spec into JavaScript object format\nvar numericCharRefReplacements = {\n  __proto__: null,\n  0x00:0xFFFD, 0x80:0x20AC, 0x82:0x201A, 0x83:0x0192, 0x84:0x201E,\n  0x85:0x2026, 0x86:0x2020, 0x87:0x2021, 0x88:0x02C6, 0x89:0x2030,\n  0x8A:0x0160, 0x8B:0x2039, 0x8C:0x0152, 0x8E:0x017D, 0x91:0x2018,\n  0x92:0x2019, 0x93:0x201C, 0x94:0x201D, 0x95:0x2022, 0x96:0x2013,\n  0x97:0x2014, 0x98:0x02DC, 0x99:0x2122, 0x9A:0x0161, 0x9B:0x203A,\n  0x9C:0x0153, 0x9E:0x017E, 0x9F:0x0178\n};\n\n/*\n * This table is generated with test/tools/update-entities.js\n */\nvar namedCharRefs = {\n  __proto__: null,\n  \"AElig\":0xc6, \"AElig;\":0xc6,\n  \"AMP\":0x26, \"AMP;\":0x26,\n  \"Aacute\":0xc1, \"Aacute;\":0xc1,\n  \"Abreve;\":0x102, \"Acirc\":0xc2,\n  \"Acirc;\":0xc2, \"Acy;\":0x410,\n  \"Afr;\":[0xd835,0xdd04], \"Agrave\":0xc0,\n  \"Agrave;\":0xc0, \"Alpha;\":0x391,\n  \"Amacr;\":0x100, \"And;\":0x2a53,\n  \"Aogon;\":0x104, \"Aopf;\":[0xd835,0xdd38],\n  \"ApplyFunction;\":0x2061, \"Aring\":0xc5,\n  \"Aring;\":0xc5, \"Ascr;\":[0xd835,0xdc9c],\n  \"Assign;\":0x2254, \"Atilde\":0xc3,\n  \"Atilde;\":0xc3, \"Auml\":0xc4,\n  \"Auml;\":0xc4, \"Backslash;\":0x2216,\n  \"Barv;\":0x2ae7, \"Barwed;\":0x2306,\n  \"Bcy;\":0x411, \"Because;\":0x2235,\n  \"Bernoullis;\":0x212c, \"Beta;\":0x392,\n  \"Bfr;\":[0xd835,0xdd05], \"Bopf;\":[0xd835,0xdd39],\n  \"Breve;\":0x2d8, \"Bscr;\":0x212c,\n  \"Bumpeq;\":0x224e, \"CHcy;\":0x427,\n  \"COPY\":0xa9, \"COPY;\":0xa9,\n  \"Cacute;\":0x106, \"Cap;\":0x22d2,\n  \"CapitalDifferentialD;\":0x2145, \"Cayleys;\":0x212d,\n  \"Ccaron;\":0x10c, \"Ccedil\":0xc7,\n  \"Ccedil;\":0xc7, \"Ccirc;\":0x108,\n  \"Cconint;\":0x2230, \"Cdot;\":0x10a,\n  \"Cedilla;\":0xb8, \"CenterDot;\":0xb7,\n  \"Cfr;\":0x212d, \"Chi;\":0x3a7,\n  \"CircleDot;\":0x2299, \"CircleMinus;\":0x2296,\n  \"CirclePlus;\":0x2295, \"CircleTimes;\":0x2297,\n  \"ClockwiseContourIntegral;\":0x2232, \"CloseCurlyDoubleQuote;\":0x201d,\n  \"CloseCurlyQuote;\":0x2019, \"Colon;\":0x2237,\n  \"Colone;\":0x2a74, \"Congruent;\":0x2261,\n  \"Conint;\":0x222f, \"ContourIntegral;\":0x222e,\n  \"Copf;\":0x2102, \"Coproduct;\":0x2210,\n  \"CounterClockwiseContourIntegral;\":0x2233, \"Cross;\":0x2a2f,\n  \"Cscr;\":[0xd835,0xdc9e], \"Cup;\":0x22d3,\n  \"CupCap;\":0x224d, \"DD;\":0x2145,\n  \"DDotrahd;\":0x2911, \"DJcy;\":0x402,\n  \"DScy;\":0x405, \"DZcy;\":0x40f,\n  \"Dagger;\":0x2021, \"Darr;\":0x21a1,\n  \"Dashv;\":0x2ae4, \"Dcaron;\":0x10e,\n  \"Dcy;\":0x414, \"Del;\":0x2207,\n  \"Delta;\":0x394, \"Dfr;\":[0xd835,0xdd07],\n  \"DiacriticalAcute;\":0xb4, \"DiacriticalDot;\":0x2d9,\n  \"DiacriticalDoubleAcute;\":0x2dd, \"DiacriticalGrave;\":0x60,\n  \"DiacriticalTilde;\":0x2dc, \"Diamond;\":0x22c4,\n  \"DifferentialD;\":0x2146, \"Dopf;\":[0xd835,0xdd3b],\n  \"Dot;\":0xa8, \"DotDot;\":0x20dc,\n  \"DotEqual;\":0x2250, \"DoubleContourIntegral;\":0x222f,\n  \"DoubleDot;\":0xa8, \"DoubleDownArrow;\":0x21d3,\n  \"DoubleLeftArrow;\":0x21d0, \"DoubleLeftRightArrow;\":0x21d4,\n  \"DoubleLeftTee;\":0x2ae4, \"DoubleLongLeftArrow;\":0x27f8,\n  \"DoubleLongLeftRightArrow;\":0x27fa, \"DoubleLongRightArrow;\":0x27f9,\n  \"DoubleRightArrow;\":0x21d2, \"DoubleRightTee;\":0x22a8,\n  \"DoubleUpArrow;\":0x21d1, \"DoubleUpDownArrow;\":0x21d5,\n  \"DoubleVerticalBar;\":0x2225, \"DownArrow;\":0x2193,\n  \"DownArrowBar;\":0x2913, \"DownArrowUpArrow;\":0x21f5,\n  \"DownBreve;\":0x311, \"DownLeftRightVector;\":0x2950,\n  \"DownLeftTeeVector;\":0x295e, \"DownLeftVector;\":0x21bd,\n  \"DownLeftVectorBar;\":0x2956, \"DownRightTeeVector;\":0x295f,\n  \"DownRightVector;\":0x21c1, \"DownRightVectorBar;\":0x2957,\n  \"DownTee;\":0x22a4, \"DownTeeArrow;\":0x21a7,\n  \"Downarrow;\":0x21d3, \"Dscr;\":[0xd835,0xdc9f],\n  \"Dstrok;\":0x110, \"ENG;\":0x14a,\n  \"ETH\":0xd0, \"ETH;\":0xd0,\n  \"Eacute\":0xc9, \"Eacute;\":0xc9,\n  \"Ecaron;\":0x11a, \"Ecirc\":0xca,\n  \"Ecirc;\":0xca, \"Ecy;\":0x42d,\n  \"Edot;\":0x116, \"Efr;\":[0xd835,0xdd08],\n  \"Egrave\":0xc8, \"Egrave;\":0xc8,\n  \"Element;\":0x2208, \"Emacr;\":0x112,\n  \"EmptySmallSquare;\":0x25fb, \"EmptyVerySmallSquare;\":0x25ab,\n  \"Eogon;\":0x118, \"Eopf;\":[0xd835,0xdd3c],\n  \"Epsilon;\":0x395, \"Equal;\":0x2a75,\n  \"EqualTilde;\":0x2242, \"Equilibrium;\":0x21cc,\n  \"Escr;\":0x2130, \"Esim;\":0x2a73,\n  \"Eta;\":0x397, \"Euml\":0xcb,\n  \"Euml;\":0xcb, \"Exists;\":0x2203,\n  \"ExponentialE;\":0x2147, \"Fcy;\":0x424,\n  \"Ffr;\":[0xd835,0xdd09], \"FilledSmallSquare;\":0x25fc,\n  \"FilledVerySmallSquare;\":0x25aa, \"Fopf;\":[0xd835,0xdd3d],\n  \"ForAll;\":0x2200, \"Fouriertrf;\":0x2131,\n  \"Fscr;\":0x2131, \"GJcy;\":0x403,\n  \"GT\":0x3e, \"GT;\":0x3e,\n  \"Gamma;\":0x393, \"Gammad;\":0x3dc,\n  \"Gbreve;\":0x11e, \"Gcedil;\":0x122,\n  \"Gcirc;\":0x11c, \"Gcy;\":0x413,\n  \"Gdot;\":0x120, \"Gfr;\":[0xd835,0xdd0a],\n  \"Gg;\":0x22d9, \"Gopf;\":[0xd835,0xdd3e],\n  \"GreaterEqual;\":0x2265, \"GreaterEqualLess;\":0x22db,\n  \"GreaterFullEqual;\":0x2267, \"GreaterGreater;\":0x2aa2,\n  \"GreaterLess;\":0x2277, \"GreaterSlantEqual;\":0x2a7e,\n  \"GreaterTilde;\":0x2273, \"Gscr;\":[0xd835,0xdca2],\n  \"Gt;\":0x226b, \"HARDcy;\":0x42a,\n  \"Hacek;\":0x2c7, \"Hat;\":0x5e,\n  \"Hcirc;\":0x124, \"Hfr;\":0x210c,\n  \"HilbertSpace;\":0x210b, \"Hopf;\":0x210d,\n  \"HorizontalLine;\":0x2500, \"Hscr;\":0x210b,\n  \"Hstrok;\":0x126, \"HumpDownHump;\":0x224e,\n  \"HumpEqual;\":0x224f, \"IEcy;\":0x415,\n  \"IJlig;\":0x132, \"IOcy;\":0x401,\n  \"Iacute\":0xcd, \"Iacute;\":0xcd,\n  \"Icirc\":0xce, \"Icirc;\":0xce,\n  \"Icy;\":0x418, \"Idot;\":0x130,\n  \"Ifr;\":0x2111, \"Igrave\":0xcc,\n  \"Igrave;\":0xcc, \"Im;\":0x2111,\n  \"Imacr;\":0x12a, \"ImaginaryI;\":0x2148,\n  \"Implies;\":0x21d2, \"Int;\":0x222c,\n  \"Integral;\":0x222b, \"Intersection;\":0x22c2,\n  \"InvisibleComma;\":0x2063, \"InvisibleTimes;\":0x2062,\n  \"Iogon;\":0x12e, \"Iopf;\":[0xd835,0xdd40],\n  \"Iota;\":0x399, \"Iscr;\":0x2110,\n  \"Itilde;\":0x128, \"Iukcy;\":0x406,\n  \"Iuml\":0xcf, \"Iuml;\":0xcf,\n  \"Jcirc;\":0x134, \"Jcy;\":0x419,\n  \"Jfr;\":[0xd835,0xdd0d], \"Jopf;\":[0xd835,0xdd41],\n  \"Jscr;\":[0xd835,0xdca5], \"Jsercy;\":0x408,\n  \"Jukcy;\":0x404, \"KHcy;\":0x425,\n  \"KJcy;\":0x40c, \"Kappa;\":0x39a,\n  \"Kcedil;\":0x136, \"Kcy;\":0x41a,\n  \"Kfr;\":[0xd835,0xdd0e], \"Kopf;\":[0xd835,0xdd42],\n  \"Kscr;\":[0xd835,0xdca6], \"LJcy;\":0x409,\n  \"LT\":0x3c, \"LT;\":0x3c,\n  \"Lacute;\":0x139, \"Lambda;\":0x39b,\n  \"Lang;\":0x27ea, \"Laplacetrf;\":0x2112,\n  \"Larr;\":0x219e, \"Lcaron;\":0x13d,\n  \"Lcedil;\":0x13b, \"Lcy;\":0x41b,\n  \"LeftAngleBracket;\":0x27e8, \"LeftArrow;\":0x2190,\n  \"LeftArrowBar;\":0x21e4, \"LeftArrowRightArrow;\":0x21c6,\n  \"LeftCeiling;\":0x2308, \"LeftDoubleBracket;\":0x27e6,\n  \"LeftDownTeeVector;\":0x2961, \"LeftDownVector;\":0x21c3,\n  \"LeftDownVectorBar;\":0x2959, \"LeftFloor;\":0x230a,\n  \"LeftRightArrow;\":0x2194, \"LeftRightVector;\":0x294e,\n  \"LeftTee;\":0x22a3, \"LeftTeeArrow;\":0x21a4,\n  \"LeftTeeVector;\":0x295a, \"LeftTriangle;\":0x22b2,\n  \"LeftTriangleBar;\":0x29cf, \"LeftTriangleEqual;\":0x22b4,\n  \"LeftUpDownVector;\":0x2951, \"LeftUpTeeVector;\":0x2960,\n  \"LeftUpVector;\":0x21bf, \"LeftUpVectorBar;\":0x2958,\n  \"LeftVector;\":0x21bc, \"LeftVectorBar;\":0x2952,\n  \"Leftarrow;\":0x21d0, \"Leftrightarrow;\":0x21d4,\n  \"LessEqualGreater;\":0x22da, \"LessFullEqual;\":0x2266,\n  \"LessGreater;\":0x2276, \"LessLess;\":0x2aa1,\n  \"LessSlantEqual;\":0x2a7d, \"LessTilde;\":0x2272,\n  \"Lfr;\":[0xd835,0xdd0f], \"Ll;\":0x22d8,\n  \"Lleftarrow;\":0x21da, \"Lmidot;\":0x13f,\n  \"LongLeftArrow;\":0x27f5, \"LongLeftRightArrow;\":0x27f7,\n  \"LongRightArrow;\":0x27f6, \"Longleftarrow;\":0x27f8,\n  \"Longleftrightarrow;\":0x27fa, \"Longrightarrow;\":0x27f9,\n  \"Lopf;\":[0xd835,0xdd43], \"LowerLeftArrow;\":0x2199,\n  \"LowerRightArrow;\":0x2198, \"Lscr;\":0x2112,\n  \"Lsh;\":0x21b0, \"Lstrok;\":0x141,\n  \"Lt;\":0x226a, \"Map;\":0x2905,\n  \"Mcy;\":0x41c, \"MediumSpace;\":0x205f,\n  \"Mellintrf;\":0x2133, \"Mfr;\":[0xd835,0xdd10],\n  \"MinusPlus;\":0x2213, \"Mopf;\":[0xd835,0xdd44],\n  \"Mscr;\":0x2133, \"Mu;\":0x39c,\n  \"NJcy;\":0x40a, \"Nacute;\":0x143,\n  \"Ncaron;\":0x147, \"Ncedil;\":0x145,\n  \"Ncy;\":0x41d, \"NegativeMediumSpace;\":0x200b,\n  \"NegativeThickSpace;\":0x200b, \"NegativeThinSpace;\":0x200b,\n  \"NegativeVeryThinSpace;\":0x200b, \"NestedGreaterGreater;\":0x226b,\n  \"NestedLessLess;\":0x226a, \"NewLine;\":0xa,\n  \"Nfr;\":[0xd835,0xdd11], \"NoBreak;\":0x2060,\n  \"NonBreakingSpace;\":0xa0, \"Nopf;\":0x2115,\n  \"Not;\":0x2aec, \"NotCongruent;\":0x2262,\n  \"NotCupCap;\":0x226d, \"NotDoubleVerticalBar;\":0x2226,\n  \"NotElement;\":0x2209, \"NotEqual;\":0x2260,\n  \"NotEqualTilde;\":[0x2242,0x338], \"NotExists;\":0x2204,\n  \"NotGreater;\":0x226f, \"NotGreaterEqual;\":0x2271,\n  \"NotGreaterFullEqual;\":[0x2267,0x338], \"NotGreaterGreater;\":[0x226b,0x338],\n  \"NotGreaterLess;\":0x2279, \"NotGreaterSlantEqual;\":[0x2a7e,0x338],\n  \"NotGreaterTilde;\":0x2275, \"NotHumpDownHump;\":[0x224e,0x338],\n  \"NotHumpEqual;\":[0x224f,0x338], \"NotLeftTriangle;\":0x22ea,\n  \"NotLeftTriangleBar;\":[0x29cf,0x338], \"NotLeftTriangleEqual;\":0x22ec,\n  \"NotLess;\":0x226e, \"NotLessEqual;\":0x2270,\n  \"NotLessGreater;\":0x2278, \"NotLessLess;\":[0x226a,0x338],\n  \"NotLessSlantEqual;\":[0x2a7d,0x338], \"NotLessTilde;\":0x2274,\n  \"NotNestedGreaterGreater;\":[0x2aa2,0x338], \"NotNestedLessLess;\":[0x2aa1,0x338],\n  \"NotPrecedes;\":0x2280, \"NotPrecedesEqual;\":[0x2aaf,0x338],\n  \"NotPrecedesSlantEqual;\":0x22e0, \"NotReverseElement;\":0x220c,\n  \"NotRightTriangle;\":0x22eb, \"NotRightTriangleBar;\":[0x29d0,0x338],\n  \"NotRightTriangleEqual;\":0x22ed, \"NotSquareSubset;\":[0x228f,0x338],\n  \"NotSquareSubsetEqual;\":0x22e2, \"NotSquareSuperset;\":[0x2290,0x338],\n  \"NotSquareSupersetEqual;\":0x22e3, \"NotSubset;\":[0x2282,0x20d2],\n  \"NotSubsetEqual;\":0x2288, \"NotSucceeds;\":0x2281,\n  \"NotSucceedsEqual;\":[0x2ab0,0x338], \"NotSucceedsSlantEqual;\":0x22e1,\n  \"NotSucceedsTilde;\":[0x227f,0x338], \"NotSuperset;\":[0x2283,0x20d2],\n  \"NotSupersetEqual;\":0x2289, \"NotTilde;\":0x2241,\n  \"NotTildeEqual;\":0x2244, \"NotTildeFullEqual;\":0x2247,\n  \"NotTildeTilde;\":0x2249, \"NotVerticalBar;\":0x2224,\n  \"Nscr;\":[0xd835,0xdca9], \"Ntilde\":0xd1,\n  \"Ntilde;\":0xd1, \"Nu;\":0x39d,\n  \"OElig;\":0x152, \"Oacute\":0xd3,\n  \"Oacute;\":0xd3, \"Ocirc\":0xd4,\n  \"Ocirc;\":0xd4, \"Ocy;\":0x41e,\n  \"Odblac;\":0x150, \"Ofr;\":[0xd835,0xdd12],\n  \"Ograve\":0xd2, \"Ograve;\":0xd2,\n  \"Omacr;\":0x14c, \"Omega;\":0x3a9,\n  \"Omicron;\":0x39f, \"Oopf;\":[0xd835,0xdd46],\n  \"OpenCurlyDoubleQuote;\":0x201c, \"OpenCurlyQuote;\":0x2018,\n  \"Or;\":0x2a54, \"Oscr;\":[0xd835,0xdcaa],\n  \"Oslash\":0xd8, \"Oslash;\":0xd8,\n  \"Otilde\":0xd5, \"Otilde;\":0xd5,\n  \"Otimes;\":0x2a37, \"Ouml\":0xd6,\n  \"Ouml;\":0xd6, \"OverBar;\":0x203e,\n  \"OverBrace;\":0x23de, \"OverBracket;\":0x23b4,\n  \"OverParenthesis;\":0x23dc, \"PartialD;\":0x2202,\n  \"Pcy;\":0x41f, \"Pfr;\":[0xd835,0xdd13],\n  \"Phi;\":0x3a6, \"Pi;\":0x3a0,\n  \"PlusMinus;\":0xb1, \"Poincareplane;\":0x210c,\n  \"Popf;\":0x2119, \"Pr;\":0x2abb,\n  \"Precedes;\":0x227a, \"PrecedesEqual;\":0x2aaf,\n  \"PrecedesSlantEqual;\":0x227c, \"PrecedesTilde;\":0x227e,\n  \"Prime;\":0x2033, \"Product;\":0x220f,\n  \"Proportion;\":0x2237, \"Proportional;\":0x221d,\n  \"Pscr;\":[0xd835,0xdcab], \"Psi;\":0x3a8,\n  \"QUOT\":0x22, \"QUOT;\":0x22,\n  \"Qfr;\":[0xd835,0xdd14], \"Qopf;\":0x211a,\n  \"Qscr;\":[0xd835,0xdcac], \"RBarr;\":0x2910,\n  \"REG\":0xae, \"REG;\":0xae,\n  \"Racute;\":0x154, \"Rang;\":0x27eb,\n  \"Rarr;\":0x21a0, \"Rarrtl;\":0x2916,\n  \"Rcaron;\":0x158, \"Rcedil;\":0x156,\n  \"Rcy;\":0x420, \"Re;\":0x211c,\n  \"ReverseElement;\":0x220b, \"ReverseEquilibrium;\":0x21cb,\n  \"ReverseUpEquilibrium;\":0x296f, \"Rfr;\":0x211c,\n  \"Rho;\":0x3a1, \"RightAngleBracket;\":0x27e9,\n  \"RightArrow;\":0x2192, \"RightArrowBar;\":0x21e5,\n  \"RightArrowLeftArrow;\":0x21c4, \"RightCeiling;\":0x2309,\n  \"RightDoubleBracket;\":0x27e7, \"RightDownTeeVector;\":0x295d,\n  \"RightDownVector;\":0x21c2, \"RightDownVectorBar;\":0x2955,\n  \"RightFloor;\":0x230b, \"RightTee;\":0x22a2,\n  \"RightTeeArrow;\":0x21a6, \"RightTeeVector;\":0x295b,\n  \"RightTriangle;\":0x22b3, \"RightTriangleBar;\":0x29d0,\n  \"RightTriangleEqual;\":0x22b5, \"RightUpDownVector;\":0x294f,\n  \"RightUpTeeVector;\":0x295c, \"RightUpVector;\":0x21be,\n  \"RightUpVectorBar;\":0x2954, \"RightVector;\":0x21c0,\n  \"RightVectorBar;\":0x2953, \"Rightarrow;\":0x21d2,\n  \"Ropf;\":0x211d, \"RoundImplies;\":0x2970,\n  \"Rrightarrow;\":0x21db, \"Rscr;\":0x211b,\n  \"Rsh;\":0x21b1, \"RuleDelayed;\":0x29f4,\n  \"SHCHcy;\":0x429, \"SHcy;\":0x428,\n  \"SOFTcy;\":0x42c, \"Sacute;\":0x15a,\n  \"Sc;\":0x2abc, \"Scaron;\":0x160,\n  \"Scedil;\":0x15e, \"Scirc;\":0x15c,\n  \"Scy;\":0x421, \"Sfr;\":[0xd835,0xdd16],\n  \"ShortDownArrow;\":0x2193, \"ShortLeftArrow;\":0x2190,\n  \"ShortRightArrow;\":0x2192, \"ShortUpArrow;\":0x2191,\n  \"Sigma;\":0x3a3, \"SmallCircle;\":0x2218,\n  \"Sopf;\":[0xd835,0xdd4a], \"Sqrt;\":0x221a,\n  \"Square;\":0x25a1, \"SquareIntersection;\":0x2293,\n  \"SquareSubset;\":0x228f, \"SquareSubsetEqual;\":0x2291,\n  \"SquareSuperset;\":0x2290, \"SquareSupersetEqual;\":0x2292,\n  \"SquareUnion;\":0x2294, \"Sscr;\":[0xd835,0xdcae],\n  \"Star;\":0x22c6, \"Sub;\":0x22d0,\n  \"Subset;\":0x22d0, \"SubsetEqual;\":0x2286,\n  \"Succeeds;\":0x227b, \"SucceedsEqual;\":0x2ab0,\n  \"SucceedsSlantEqual;\":0x227d, \"SucceedsTilde;\":0x227f,\n  \"SuchThat;\":0x220b, \"Sum;\":0x2211,\n  \"Sup;\":0x22d1, \"Superset;\":0x2283,\n  \"SupersetEqual;\":0x2287, \"Supset;\":0x22d1,\n  \"THORN\":0xde, \"THORN;\":0xde,\n  \"TRADE;\":0x2122, \"TSHcy;\":0x40b,\n  \"TScy;\":0x426, \"Tab;\":0x9,\n  \"Tau;\":0x3a4, \"Tcaron;\":0x164,\n  \"Tcedil;\":0x162, \"Tcy;\":0x422,\n  \"Tfr;\":[0xd835,0xdd17], \"Therefore;\":0x2234,\n  \"Theta;\":0x398, \"ThickSpace;\":[0x205f,0x200a],\n  \"ThinSpace;\":0x2009, \"Tilde;\":0x223c,\n  \"TildeEqual;\":0x2243, \"TildeFullEqual;\":0x2245,\n  \"TildeTilde;\":0x2248, \"Topf;\":[0xd835,0xdd4b],\n  \"TripleDot;\":0x20db, \"Tscr;\":[0xd835,0xdcaf],\n  \"Tstrok;\":0x166, \"Uacute\":0xda,\n  \"Uacute;\":0xda, \"Uarr;\":0x219f,\n  \"Uarrocir;\":0x2949, \"Ubrcy;\":0x40e,\n  \"Ubreve;\":0x16c, \"Ucirc\":0xdb,\n  \"Ucirc;\":0xdb, \"Ucy;\":0x423,\n  \"Udblac;\":0x170, \"Ufr;\":[0xd835,0xdd18],\n  \"Ugrave\":0xd9, \"Ugrave;\":0xd9,\n  \"Umacr;\":0x16a, \"UnderBar;\":0x5f,\n  \"UnderBrace;\":0x23df, \"UnderBracket;\":0x23b5,\n  \"UnderParenthesis;\":0x23dd, \"Union;\":0x22c3,\n  \"UnionPlus;\":0x228e, \"Uogon;\":0x172,\n  \"Uopf;\":[0xd835,0xdd4c], \"UpArrow;\":0x2191,\n  \"UpArrowBar;\":0x2912, \"UpArrowDownArrow;\":0x21c5,\n  \"UpDownArrow;\":0x2195, \"UpEquilibrium;\":0x296e,\n  \"UpTee;\":0x22a5, \"UpTeeArrow;\":0x21a5,\n  \"Uparrow;\":0x21d1, \"Updownarrow;\":0x21d5,\n  \"UpperLeftArrow;\":0x2196, \"UpperRightArrow;\":0x2197,\n  \"Upsi;\":0x3d2, \"Upsilon;\":0x3a5,\n  \"Uring;\":0x16e, \"Uscr;\":[0xd835,0xdcb0],\n  \"Utilde;\":0x168, \"Uuml\":0xdc,\n  \"Uuml;\":0xdc, \"VDash;\":0x22ab,\n  \"Vbar;\":0x2aeb, \"Vcy;\":0x412,\n  \"Vdash;\":0x22a9, \"Vdashl;\":0x2ae6,\n  \"Vee;\":0x22c1, \"Verbar;\":0x2016,\n  \"Vert;\":0x2016, \"VerticalBar;\":0x2223,\n  \"VerticalLine;\":0x7c, \"VerticalSeparator;\":0x2758,\n  \"VerticalTilde;\":0x2240, \"VeryThinSpace;\":0x200a,\n  \"Vfr;\":[0xd835,0xdd19], \"Vopf;\":[0xd835,0xdd4d],\n  \"Vscr;\":[0xd835,0xdcb1], \"Vvdash;\":0x22aa,\n  \"Wcirc;\":0x174, \"Wedge;\":0x22c0,\n  \"Wfr;\":[0xd835,0xdd1a], \"Wopf;\":[0xd835,0xdd4e],\n  \"Wscr;\":[0xd835,0xdcb2], \"Xfr;\":[0xd835,0xdd1b],\n  \"Xi;\":0x39e, \"Xopf;\":[0xd835,0xdd4f],\n  \"Xscr;\":[0xd835,0xdcb3], \"YAcy;\":0x42f,\n  \"YIcy;\":0x407, \"YUcy;\":0x42e,\n  \"Yacute\":0xdd, \"Yacute;\":0xdd,\n  \"Ycirc;\":0x176, \"Ycy;\":0x42b,\n  \"Yfr;\":[0xd835,0xdd1c], \"Yopf;\":[0xd835,0xdd50],\n  \"Yscr;\":[0xd835,0xdcb4], \"Yuml;\":0x178,\n  \"ZHcy;\":0x416, \"Zacute;\":0x179,\n  \"Zcaron;\":0x17d, \"Zcy;\":0x417,\n  \"Zdot;\":0x17b, \"ZeroWidthSpace;\":0x200b,\n  \"Zeta;\":0x396, \"Zfr;\":0x2128,\n  \"Zopf;\":0x2124, \"Zscr;\":[0xd835,0xdcb5],\n  \"aacute\":0xe1, \"aacute;\":0xe1,\n  \"abreve;\":0x103, \"ac;\":0x223e,\n  \"acE;\":[0x223e,0x333], \"acd;\":0x223f,\n  \"acirc\":0xe2, \"acirc;\":0xe2,\n  \"acute\":0xb4, \"acute;\":0xb4,\n  \"acy;\":0x430, \"aelig\":0xe6,\n  \"aelig;\":0xe6, \"af;\":0x2061,\n  \"afr;\":[0xd835,0xdd1e], \"agrave\":0xe0,\n  \"agrave;\":0xe0, \"alefsym;\":0x2135,\n  \"aleph;\":0x2135, \"alpha;\":0x3b1,\n  \"amacr;\":0x101, \"amalg;\":0x2a3f,\n  \"amp\":0x26, \"amp;\":0x26,\n  \"and;\":0x2227, \"andand;\":0x2a55,\n  \"andd;\":0x2a5c, \"andslope;\":0x2a58,\n  \"andv;\":0x2a5a, \"ang;\":0x2220,\n  \"ange;\":0x29a4, \"angle;\":0x2220,\n  \"angmsd;\":0x2221, \"angmsdaa;\":0x29a8,\n  \"angmsdab;\":0x29a9, \"angmsdac;\":0x29aa,\n  \"angmsdad;\":0x29ab, \"angmsdae;\":0x29ac,\n  \"angmsdaf;\":0x29ad, \"angmsdag;\":0x29ae,\n  \"angmsdah;\":0x29af, \"angrt;\":0x221f,\n  \"angrtvb;\":0x22be, \"angrtvbd;\":0x299d,\n  \"angsph;\":0x2222, \"angst;\":0xc5,\n  \"angzarr;\":0x237c, \"aogon;\":0x105,\n  \"aopf;\":[0xd835,0xdd52], \"ap;\":0x2248,\n  \"apE;\":0x2a70, \"apacir;\":0x2a6f,\n  \"ape;\":0x224a, \"apid;\":0x224b,\n  \"apos;\":0x27, \"approx;\":0x2248,\n  \"approxeq;\":0x224a, \"aring\":0xe5,\n  \"aring;\":0xe5, \"ascr;\":[0xd835,0xdcb6],\n  \"ast;\":0x2a, \"asymp;\":0x2248,\n  \"asympeq;\":0x224d, \"atilde\":0xe3,\n  \"atilde;\":0xe3, \"auml\":0xe4,\n  \"auml;\":0xe4, \"awconint;\":0x2233,\n  \"awint;\":0x2a11, \"bNot;\":0x2aed,\n  \"backcong;\":0x224c, \"backepsilon;\":0x3f6,\n  \"backprime;\":0x2035, \"backsim;\":0x223d,\n  \"backsimeq;\":0x22cd, \"barvee;\":0x22bd,\n  \"barwed;\":0x2305, \"barwedge;\":0x2305,\n  \"bbrk;\":0x23b5, \"bbrktbrk;\":0x23b6,\n  \"bcong;\":0x224c, \"bcy;\":0x431,\n  \"bdquo;\":0x201e, \"becaus;\":0x2235,\n  \"because;\":0x2235, \"bemptyv;\":0x29b0,\n  \"bepsi;\":0x3f6, \"bernou;\":0x212c,\n  \"beta;\":0x3b2, \"beth;\":0x2136,\n  \"between;\":0x226c, \"bfr;\":[0xd835,0xdd1f],\n  \"bigcap;\":0x22c2, \"bigcirc;\":0x25ef,\n  \"bigcup;\":0x22c3, \"bigodot;\":0x2a00,\n  \"bigoplus;\":0x2a01, \"bigotimes;\":0x2a02,\n  \"bigsqcup;\":0x2a06, \"bigstar;\":0x2605,\n  \"bigtriangledown;\":0x25bd, \"bigtriangleup;\":0x25b3,\n  \"biguplus;\":0x2a04, \"bigvee;\":0x22c1,\n  \"bigwedge;\":0x22c0, \"bkarow;\":0x290d,\n  \"blacklozenge;\":0x29eb, \"blacksquare;\":0x25aa,\n  \"blacktriangle;\":0x25b4, \"blacktriangledown;\":0x25be,\n  \"blacktriangleleft;\":0x25c2, \"blacktriangleright;\":0x25b8,\n  \"blank;\":0x2423, \"blk12;\":0x2592,\n  \"blk14;\":0x2591, \"blk34;\":0x2593,\n  \"block;\":0x2588, \"bne;\":[0x3d,0x20e5],\n  \"bnequiv;\":[0x2261,0x20e5], \"bnot;\":0x2310,\n  \"bopf;\":[0xd835,0xdd53], \"bot;\":0x22a5,\n  \"bottom;\":0x22a5, \"bowtie;\":0x22c8,\n  \"boxDL;\":0x2557, \"boxDR;\":0x2554,\n  \"boxDl;\":0x2556, \"boxDr;\":0x2553,\n  \"boxH;\":0x2550, \"boxHD;\":0x2566,\n  \"boxHU;\":0x2569, \"boxHd;\":0x2564,\n  \"boxHu;\":0x2567, \"boxUL;\":0x255d,\n  \"boxUR;\":0x255a, \"boxUl;\":0x255c,\n  \"boxUr;\":0x2559, \"boxV;\":0x2551,\n  \"boxVH;\":0x256c, \"boxVL;\":0x2563,\n  \"boxVR;\":0x2560, \"boxVh;\":0x256b,\n  \"boxVl;\":0x2562, \"boxVr;\":0x255f,\n  \"boxbox;\":0x29c9, \"boxdL;\":0x2555,\n  \"boxdR;\":0x2552, \"boxdl;\":0x2510,\n  \"boxdr;\":0x250c, \"boxh;\":0x2500,\n  \"boxhD;\":0x2565, \"boxhU;\":0x2568,\n  \"boxhd;\":0x252c, \"boxhu;\":0x2534,\n  \"boxminus;\":0x229f, \"boxplus;\":0x229e,\n  \"boxtimes;\":0x22a0, \"boxuL;\":0x255b,\n  \"boxuR;\":0x2558, \"boxul;\":0x2518,\n  \"boxur;\":0x2514, \"boxv;\":0x2502,\n  \"boxvH;\":0x256a, \"boxvL;\":0x2561,\n  \"boxvR;\":0x255e, \"boxvh;\":0x253c,\n  \"boxvl;\":0x2524, \"boxvr;\":0x251c,\n  \"bprime;\":0x2035, \"breve;\":0x2d8,\n  \"brvbar\":0xa6, \"brvbar;\":0xa6,\n  \"bscr;\":[0xd835,0xdcb7], \"bsemi;\":0x204f,\n  \"bsim;\":0x223d, \"bsime;\":0x22cd,\n  \"bsol;\":0x5c, \"bsolb;\":0x29c5,\n  \"bsolhsub;\":0x27c8, \"bull;\":0x2022,\n  \"bullet;\":0x2022, \"bump;\":0x224e,\n  \"bumpE;\":0x2aae, \"bumpe;\":0x224f,\n  \"bumpeq;\":0x224f, \"cacute;\":0x107,\n  \"cap;\":0x2229, \"capand;\":0x2a44,\n  \"capbrcup;\":0x2a49, \"capcap;\":0x2a4b,\n  \"capcup;\":0x2a47, \"capdot;\":0x2a40,\n  \"caps;\":[0x2229,0xfe00], \"caret;\":0x2041,\n  \"caron;\":0x2c7, \"ccaps;\":0x2a4d,\n  \"ccaron;\":0x10d, \"ccedil\":0xe7,\n  \"ccedil;\":0xe7, \"ccirc;\":0x109,\n  \"ccups;\":0x2a4c, \"ccupssm;\":0x2a50,\n  \"cdot;\":0x10b, \"cedil\":0xb8,\n  \"cedil;\":0xb8, \"cemptyv;\":0x29b2,\n  \"cent\":0xa2, \"cent;\":0xa2,\n  \"centerdot;\":0xb7, \"cfr;\":[0xd835,0xdd20],\n  \"chcy;\":0x447, \"check;\":0x2713,\n  \"checkmark;\":0x2713, \"chi;\":0x3c7,\n  \"cir;\":0x25cb, \"cirE;\":0x29c3,\n  \"circ;\":0x2c6, \"circeq;\":0x2257,\n  \"circlearrowleft;\":0x21ba, \"circlearrowright;\":0x21bb,\n  \"circledR;\":0xae, \"circledS;\":0x24c8,\n  \"circledast;\":0x229b, \"circledcirc;\":0x229a,\n  \"circleddash;\":0x229d, \"cire;\":0x2257,\n  \"cirfnint;\":0x2a10, \"cirmid;\":0x2aef,\n  \"cirscir;\":0x29c2, \"clubs;\":0x2663,\n  \"clubsuit;\":0x2663, \"colon;\":0x3a,\n  \"colone;\":0x2254, \"coloneq;\":0x2254,\n  \"comma;\":0x2c, \"commat;\":0x40,\n  \"comp;\":0x2201, \"compfn;\":0x2218,\n  \"complement;\":0x2201, \"complexes;\":0x2102,\n  \"cong;\":0x2245, \"congdot;\":0x2a6d,\n  \"conint;\":0x222e, \"copf;\":[0xd835,0xdd54],\n  \"coprod;\":0x2210, \"copy\":0xa9,\n  \"copy;\":0xa9, \"copysr;\":0x2117,\n  \"crarr;\":0x21b5, \"cross;\":0x2717,\n  \"cscr;\":[0xd835,0xdcb8], \"csub;\":0x2acf,\n  \"csube;\":0x2ad1, \"csup;\":0x2ad0,\n  \"csupe;\":0x2ad2, \"ctdot;\":0x22ef,\n  \"cudarrl;\":0x2938, \"cudarrr;\":0x2935,\n  \"cuepr;\":0x22de, \"cuesc;\":0x22df,\n  \"cularr;\":0x21b6, \"cularrp;\":0x293d,\n  \"cup;\":0x222a, \"cupbrcap;\":0x2a48,\n  \"cupcap;\":0x2a46, \"cupcup;\":0x2a4a,\n  \"cupdot;\":0x228d, \"cupor;\":0x2a45,\n  \"cups;\":[0x222a,0xfe00], \"curarr;\":0x21b7,\n  \"curarrm;\":0x293c, \"curlyeqprec;\":0x22de,\n  \"curlyeqsucc;\":0x22df, \"curlyvee;\":0x22ce,\n  \"curlywedge;\":0x22cf, \"curren\":0xa4,\n  \"curren;\":0xa4, \"curvearrowleft;\":0x21b6,\n  \"curvearrowright;\":0x21b7, \"cuvee;\":0x22ce,\n  \"cuwed;\":0x22cf, \"cwconint;\":0x2232,\n  \"cwint;\":0x2231, \"cylcty;\":0x232d,\n  \"dArr;\":0x21d3, \"dHar;\":0x2965,\n  \"dagger;\":0x2020, \"daleth;\":0x2138,\n  \"darr;\":0x2193, \"dash;\":0x2010,\n  \"dashv;\":0x22a3, \"dbkarow;\":0x290f,\n  \"dblac;\":0x2dd, \"dcaron;\":0x10f,\n  \"dcy;\":0x434, \"dd;\":0x2146,\n  \"ddagger;\":0x2021, \"ddarr;\":0x21ca,\n  \"ddotseq;\":0x2a77, \"deg\":0xb0,\n  \"deg;\":0xb0, \"delta;\":0x3b4,\n  \"demptyv;\":0x29b1, \"dfisht;\":0x297f,\n  \"dfr;\":[0xd835,0xdd21], \"dharl;\":0x21c3,\n  \"dharr;\":0x21c2, \"diam;\":0x22c4,\n  \"diamond;\":0x22c4, \"diamondsuit;\":0x2666,\n  \"diams;\":0x2666, \"die;\":0xa8,\n  \"digamma;\":0x3dd, \"disin;\":0x22f2,\n  \"div;\":0xf7, \"divide\":0xf7,\n  \"divide;\":0xf7, \"divideontimes;\":0x22c7,\n  \"divonx;\":0x22c7, \"djcy;\":0x452,\n  \"dlcorn;\":0x231e, \"dlcrop;\":0x230d,\n  \"dollar;\":0x24, \"dopf;\":[0xd835,0xdd55],\n  \"dot;\":0x2d9, \"doteq;\":0x2250,\n  \"doteqdot;\":0x2251, \"dotminus;\":0x2238,\n  \"dotplus;\":0x2214, \"dotsquare;\":0x22a1,\n  \"doublebarwedge;\":0x2306, \"downarrow;\":0x2193,\n  \"downdownarrows;\":0x21ca, \"downharpoonleft;\":0x21c3,\n  \"downharpoonright;\":0x21c2, \"drbkarow;\":0x2910,\n  \"drcorn;\":0x231f, \"drcrop;\":0x230c,\n  \"dscr;\":[0xd835,0xdcb9], \"dscy;\":0x455,\n  \"dsol;\":0x29f6, \"dstrok;\":0x111,\n  \"dtdot;\":0x22f1, \"dtri;\":0x25bf,\n  \"dtrif;\":0x25be, \"duarr;\":0x21f5,\n  \"duhar;\":0x296f, \"dwangle;\":0x29a6,\n  \"dzcy;\":0x45f, \"dzigrarr;\":0x27ff,\n  \"eDDot;\":0x2a77, \"eDot;\":0x2251,\n  \"eacute\":0xe9, \"eacute;\":0xe9,\n  \"easter;\":0x2a6e, \"ecaron;\":0x11b,\n  \"ecir;\":0x2256, \"ecirc\":0xea,\n  \"ecirc;\":0xea, \"ecolon;\":0x2255,\n  \"ecy;\":0x44d, \"edot;\":0x117,\n  \"ee;\":0x2147, \"efDot;\":0x2252,\n  \"efr;\":[0xd835,0xdd22], \"eg;\":0x2a9a,\n  \"egrave\":0xe8, \"egrave;\":0xe8,\n  \"egs;\":0x2a96, \"egsdot;\":0x2a98,\n  \"el;\":0x2a99, \"elinters;\":0x23e7,\n  \"ell;\":0x2113, \"els;\":0x2a95,\n  \"elsdot;\":0x2a97, \"emacr;\":0x113,\n  \"empty;\":0x2205, \"emptyset;\":0x2205,\n  \"emptyv;\":0x2205, \"emsp13;\":0x2004,\n  \"emsp14;\":0x2005, \"emsp;\":0x2003,\n  \"eng;\":0x14b, \"ensp;\":0x2002,\n  \"eogon;\":0x119, \"eopf;\":[0xd835,0xdd56],\n  \"epar;\":0x22d5, \"eparsl;\":0x29e3,\n  \"eplus;\":0x2a71, \"epsi;\":0x3b5,\n  \"epsilon;\":0x3b5, \"epsiv;\":0x3f5,\n  \"eqcirc;\":0x2256, \"eqcolon;\":0x2255,\n  \"eqsim;\":0x2242, \"eqslantgtr;\":0x2a96,\n  \"eqslantless;\":0x2a95, \"equals;\":0x3d,\n  \"equest;\":0x225f, \"equiv;\":0x2261,\n  \"equivDD;\":0x2a78, \"eqvparsl;\":0x29e5,\n  \"erDot;\":0x2253, \"erarr;\":0x2971,\n  \"escr;\":0x212f, \"esdot;\":0x2250,\n  \"esim;\":0x2242, \"eta;\":0x3b7,\n  \"eth\":0xf0, \"eth;\":0xf0,\n  \"euml\":0xeb, \"euml;\":0xeb,\n  \"euro;\":0x20ac, \"excl;\":0x21,\n  \"exist;\":0x2203, \"expectation;\":0x2130,\n  \"exponentiale;\":0x2147, \"fallingdotseq;\":0x2252,\n  \"fcy;\":0x444, \"female;\":0x2640,\n  \"ffilig;\":0xfb03, \"fflig;\":0xfb00,\n  \"ffllig;\":0xfb04, \"ffr;\":[0xd835,0xdd23],\n  \"filig;\":0xfb01, \"fjlig;\":[0x66,0x6a],\n  \"flat;\":0x266d, \"fllig;\":0xfb02,\n  \"fltns;\":0x25b1, \"fnof;\":0x192,\n  \"fopf;\":[0xd835,0xdd57], \"forall;\":0x2200,\n  \"fork;\":0x22d4, \"forkv;\":0x2ad9,\n  \"fpartint;\":0x2a0d, \"frac12\":0xbd,\n  \"frac12;\":0xbd, \"frac13;\":0x2153,\n  \"frac14\":0xbc, \"frac14;\":0xbc,\n  \"frac15;\":0x2155, \"frac16;\":0x2159,\n  \"frac18;\":0x215b, \"frac23;\":0x2154,\n  \"frac25;\":0x2156, \"frac34\":0xbe,\n  \"frac34;\":0xbe, \"frac35;\":0x2157,\n  \"frac38;\":0x215c, \"frac45;\":0x2158,\n  \"frac56;\":0x215a, \"frac58;\":0x215d,\n  \"frac78;\":0x215e, \"frasl;\":0x2044,\n  \"frown;\":0x2322, \"fscr;\":[0xd835,0xdcbb],\n  \"gE;\":0x2267, \"gEl;\":0x2a8c,\n  \"gacute;\":0x1f5, \"gamma;\":0x3b3,\n  \"gammad;\":0x3dd, \"gap;\":0x2a86,\n  \"gbreve;\":0x11f, \"gcirc;\":0x11d,\n  \"gcy;\":0x433, \"gdot;\":0x121,\n  \"ge;\":0x2265, \"gel;\":0x22db,\n  \"geq;\":0x2265, \"geqq;\":0x2267,\n  \"geqslant;\":0x2a7e, \"ges;\":0x2a7e,\n  \"gescc;\":0x2aa9, \"gesdot;\":0x2a80,\n  \"gesdoto;\":0x2a82, \"gesdotol;\":0x2a84,\n  \"gesl;\":[0x22db,0xfe00], \"gesles;\":0x2a94,\n  \"gfr;\":[0xd835,0xdd24], \"gg;\":0x226b,\n  \"ggg;\":0x22d9, \"gimel;\":0x2137,\n  \"gjcy;\":0x453, \"gl;\":0x2277,\n  \"glE;\":0x2a92, \"gla;\":0x2aa5,\n  \"glj;\":0x2aa4, \"gnE;\":0x2269,\n  \"gnap;\":0x2a8a, \"gnapprox;\":0x2a8a,\n  \"gne;\":0x2a88, \"gneq;\":0x2a88,\n  \"gneqq;\":0x2269, \"gnsim;\":0x22e7,\n  \"gopf;\":[0xd835,0xdd58], \"grave;\":0x60,\n  \"gscr;\":0x210a, \"gsim;\":0x2273,\n  \"gsime;\":0x2a8e, \"gsiml;\":0x2a90,\n  \"gt\":0x3e, \"gt;\":0x3e,\n  \"gtcc;\":0x2aa7, \"gtcir;\":0x2a7a,\n  \"gtdot;\":0x22d7, \"gtlPar;\":0x2995,\n  \"gtquest;\":0x2a7c, \"gtrapprox;\":0x2a86,\n  \"gtrarr;\":0x2978, \"gtrdot;\":0x22d7,\n  \"gtreqless;\":0x22db, \"gtreqqless;\":0x2a8c,\n  \"gtrless;\":0x2277, \"gtrsim;\":0x2273,\n  \"gvertneqq;\":[0x2269,0xfe00], \"gvnE;\":[0x2269,0xfe00],\n  \"hArr;\":0x21d4, \"hairsp;\":0x200a,\n  \"half;\":0xbd, \"hamilt;\":0x210b,\n  \"hardcy;\":0x44a, \"harr;\":0x2194,\n  \"harrcir;\":0x2948, \"harrw;\":0x21ad,\n  \"hbar;\":0x210f, \"hcirc;\":0x125,\n  \"hearts;\":0x2665, \"heartsuit;\":0x2665,\n  \"hellip;\":0x2026, \"hercon;\":0x22b9,\n  \"hfr;\":[0xd835,0xdd25], \"hksearow;\":0x2925,\n  \"hkswarow;\":0x2926, \"hoarr;\":0x21ff,\n  \"homtht;\":0x223b, \"hookleftarrow;\":0x21a9,\n  \"hookrightarrow;\":0x21aa, \"hopf;\":[0xd835,0xdd59],\n  \"horbar;\":0x2015, \"hscr;\":[0xd835,0xdcbd],\n  \"hslash;\":0x210f, \"hstrok;\":0x127,\n  \"hybull;\":0x2043, \"hyphen;\":0x2010,\n  \"iacute\":0xed, \"iacute;\":0xed,\n  \"ic;\":0x2063, \"icirc\":0xee,\n  \"icirc;\":0xee, \"icy;\":0x438,\n  \"iecy;\":0x435, \"iexcl\":0xa1,\n  \"iexcl;\":0xa1, \"iff;\":0x21d4,\n  \"ifr;\":[0xd835,0xdd26], \"igrave\":0xec,\n  \"igrave;\":0xec, \"ii;\":0x2148,\n  \"iiiint;\":0x2a0c, \"iiint;\":0x222d,\n  \"iinfin;\":0x29dc, \"iiota;\":0x2129,\n  \"ijlig;\":0x133, \"imacr;\":0x12b,\n  \"image;\":0x2111, \"imagline;\":0x2110,\n  \"imagpart;\":0x2111, \"imath;\":0x131,\n  \"imof;\":0x22b7, \"imped;\":0x1b5,\n  \"in;\":0x2208, \"incare;\":0x2105,\n  \"infin;\":0x221e, \"infintie;\":0x29dd,\n  \"inodot;\":0x131, \"int;\":0x222b,\n  \"intcal;\":0x22ba, \"integers;\":0x2124,\n  \"intercal;\":0x22ba, \"intlarhk;\":0x2a17,\n  \"intprod;\":0x2a3c, \"iocy;\":0x451,\n  \"iogon;\":0x12f, \"iopf;\":[0xd835,0xdd5a],\n  \"iota;\":0x3b9, \"iprod;\":0x2a3c,\n  \"iquest\":0xbf, \"iquest;\":0xbf,\n  \"iscr;\":[0xd835,0xdcbe], \"isin;\":0x2208,\n  \"isinE;\":0x22f9, \"isindot;\":0x22f5,\n  \"isins;\":0x22f4, \"isinsv;\":0x22f3,\n  \"isinv;\":0x2208, \"it;\":0x2062,\n  \"itilde;\":0x129, \"iukcy;\":0x456,\n  \"iuml\":0xef, \"iuml;\":0xef,\n  \"jcirc;\":0x135, \"jcy;\":0x439,\n  \"jfr;\":[0xd835,0xdd27], \"jmath;\":0x237,\n  \"jopf;\":[0xd835,0xdd5b], \"jscr;\":[0xd835,0xdcbf],\n  \"jsercy;\":0x458, \"jukcy;\":0x454,\n  \"kappa;\":0x3ba, \"kappav;\":0x3f0,\n  \"kcedil;\":0x137, \"kcy;\":0x43a,\n  \"kfr;\":[0xd835,0xdd28], \"kgreen;\":0x138,\n  \"khcy;\":0x445, \"kjcy;\":0x45c,\n  \"kopf;\":[0xd835,0xdd5c], \"kscr;\":[0xd835,0xdcc0],\n  \"lAarr;\":0x21da, \"lArr;\":0x21d0,\n  \"lAtail;\":0x291b, \"lBarr;\":0x290e,\n  \"lE;\":0x2266, \"lEg;\":0x2a8b,\n  \"lHar;\":0x2962, \"lacute;\":0x13a,\n  \"laemptyv;\":0x29b4, \"lagran;\":0x2112,\n  \"lambda;\":0x3bb, \"lang;\":0x27e8,\n  \"langd;\":0x2991, \"langle;\":0x27e8,\n  \"lap;\":0x2a85, \"laquo\":0xab,\n  \"laquo;\":0xab, \"larr;\":0x2190,\n  \"larrb;\":0x21e4, \"larrbfs;\":0x291f,\n  \"larrfs;\":0x291d, \"larrhk;\":0x21a9,\n  \"larrlp;\":0x21ab, \"larrpl;\":0x2939,\n  \"larrsim;\":0x2973, \"larrtl;\":0x21a2,\n  \"lat;\":0x2aab, \"latail;\":0x2919,\n  \"late;\":0x2aad, \"lates;\":[0x2aad,0xfe00],\n  \"lbarr;\":0x290c, \"lbbrk;\":0x2772,\n  \"lbrace;\":0x7b, \"lbrack;\":0x5b,\n  \"lbrke;\":0x298b, \"lbrksld;\":0x298f,\n  \"lbrkslu;\":0x298d, \"lcaron;\":0x13e,\n  \"lcedil;\":0x13c, \"lceil;\":0x2308,\n  \"lcub;\":0x7b, \"lcy;\":0x43b,\n  \"ldca;\":0x2936, \"ldquo;\":0x201c,\n  \"ldquor;\":0x201e, \"ldrdhar;\":0x2967,\n  \"ldrushar;\":0x294b, \"ldsh;\":0x21b2,\n  \"le;\":0x2264, \"leftarrow;\":0x2190,\n  \"leftarrowtail;\":0x21a2, \"leftharpoondown;\":0x21bd,\n  \"leftharpoonup;\":0x21bc, \"leftleftarrows;\":0x21c7,\n  \"leftrightarrow;\":0x2194, \"leftrightarrows;\":0x21c6,\n  \"leftrightharpoons;\":0x21cb, \"leftrightsquigarrow;\":0x21ad,\n  \"leftthreetimes;\":0x22cb, \"leg;\":0x22da,\n  \"leq;\":0x2264, \"leqq;\":0x2266,\n  \"leqslant;\":0x2a7d, \"les;\":0x2a7d,\n  \"lescc;\":0x2aa8, \"lesdot;\":0x2a7f,\n  \"lesdoto;\":0x2a81, \"lesdotor;\":0x2a83,\n  \"lesg;\":[0x22da,0xfe00], \"lesges;\":0x2a93,\n  \"lessapprox;\":0x2a85, \"lessdot;\":0x22d6,\n  \"lesseqgtr;\":0x22da, \"lesseqqgtr;\":0x2a8b,\n  \"lessgtr;\":0x2276, \"lesssim;\":0x2272,\n  \"lfisht;\":0x297c, \"lfloor;\":0x230a,\n  \"lfr;\":[0xd835,0xdd29], \"lg;\":0x2276,\n  \"lgE;\":0x2a91, \"lhard;\":0x21bd,\n  \"lharu;\":0x21bc, \"lharul;\":0x296a,\n  \"lhblk;\":0x2584, \"ljcy;\":0x459,\n  \"ll;\":0x226a, \"llarr;\":0x21c7,\n  \"llcorner;\":0x231e, \"llhard;\":0x296b,\n  \"lltri;\":0x25fa, \"lmidot;\":0x140,\n  \"lmoust;\":0x23b0, \"lmoustache;\":0x23b0,\n  \"lnE;\":0x2268, \"lnap;\":0x2a89,\n  \"lnapprox;\":0x2a89, \"lne;\":0x2a87,\n  \"lneq;\":0x2a87, \"lneqq;\":0x2268,\n  \"lnsim;\":0x22e6, \"loang;\":0x27ec,\n  \"loarr;\":0x21fd, \"lobrk;\":0x27e6,\n  \"longleftarrow;\":0x27f5, \"longleftrightarrow;\":0x27f7,\n  \"longmapsto;\":0x27fc, \"longrightarrow;\":0x27f6,\n  \"looparrowleft;\":0x21ab, \"looparrowright;\":0x21ac,\n  \"lopar;\":0x2985, \"lopf;\":[0xd835,0xdd5d],\n  \"loplus;\":0x2a2d, \"lotimes;\":0x2a34,\n  \"lowast;\":0x2217, \"lowbar;\":0x5f,\n  \"loz;\":0x25ca, \"lozenge;\":0x25ca,\n  \"lozf;\":0x29eb, \"lpar;\":0x28,\n  \"lparlt;\":0x2993, \"lrarr;\":0x21c6,\n  \"lrcorner;\":0x231f, \"lrhar;\":0x21cb,\n  \"lrhard;\":0x296d, \"lrm;\":0x200e,\n  \"lrtri;\":0x22bf, \"lsaquo;\":0x2039,\n  \"lscr;\":[0xd835,0xdcc1], \"lsh;\":0x21b0,\n  \"lsim;\":0x2272, \"lsime;\":0x2a8d,\n  \"lsimg;\":0x2a8f, \"lsqb;\":0x5b,\n  \"lsquo;\":0x2018, \"lsquor;\":0x201a,\n  \"lstrok;\":0x142, \"lt\":0x3c,\n  \"lt;\":0x3c, \"ltcc;\":0x2aa6,\n  \"ltcir;\":0x2a79, \"ltdot;\":0x22d6,\n  \"lthree;\":0x22cb, \"ltimes;\":0x22c9,\n  \"ltlarr;\":0x2976, \"ltquest;\":0x2a7b,\n  \"ltrPar;\":0x2996, \"ltri;\":0x25c3,\n  \"ltrie;\":0x22b4, \"ltrif;\":0x25c2,\n  \"lurdshar;\":0x294a, \"luruhar;\":0x2966,\n  \"lvertneqq;\":[0x2268,0xfe00], \"lvnE;\":[0x2268,0xfe00],\n  \"mDDot;\":0x223a, \"macr\":0xaf,\n  \"macr;\":0xaf, \"male;\":0x2642,\n  \"malt;\":0x2720, \"maltese;\":0x2720,\n  \"map;\":0x21a6, \"mapsto;\":0x21a6,\n  \"mapstodown;\":0x21a7, \"mapstoleft;\":0x21a4,\n  \"mapstoup;\":0x21a5, \"marker;\":0x25ae,\n  \"mcomma;\":0x2a29, \"mcy;\":0x43c,\n  \"mdash;\":0x2014, \"measuredangle;\":0x2221,\n  \"mfr;\":[0xd835,0xdd2a], \"mho;\":0x2127,\n  \"micro\":0xb5, \"micro;\":0xb5,\n  \"mid;\":0x2223, \"midast;\":0x2a,\n  \"midcir;\":0x2af0, \"middot\":0xb7,\n  \"middot;\":0xb7, \"minus;\":0x2212,\n  \"minusb;\":0x229f, \"minusd;\":0x2238,\n  \"minusdu;\":0x2a2a, \"mlcp;\":0x2adb,\n  \"mldr;\":0x2026, \"mnplus;\":0x2213,\n  \"models;\":0x22a7, \"mopf;\":[0xd835,0xdd5e],\n  \"mp;\":0x2213, \"mscr;\":[0xd835,0xdcc2],\n  \"mstpos;\":0x223e, \"mu;\":0x3bc,\n  \"multimap;\":0x22b8, \"mumap;\":0x22b8,\n  \"nGg;\":[0x22d9,0x338], \"nGt;\":[0x226b,0x20d2],\n  \"nGtv;\":[0x226b,0x338], \"nLeftarrow;\":0x21cd,\n  \"nLeftrightarrow;\":0x21ce, \"nLl;\":[0x22d8,0x338],\n  \"nLt;\":[0x226a,0x20d2], \"nLtv;\":[0x226a,0x338],\n  \"nRightarrow;\":0x21cf, \"nVDash;\":0x22af,\n  \"nVdash;\":0x22ae, \"nabla;\":0x2207,\n  \"nacute;\":0x144, \"nang;\":[0x2220,0x20d2],\n  \"nap;\":0x2249, \"napE;\":[0x2a70,0x338],\n  \"napid;\":[0x224b,0x338], \"napos;\":0x149,\n  \"napprox;\":0x2249, \"natur;\":0x266e,\n  \"natural;\":0x266e, \"naturals;\":0x2115,\n  \"nbsp\":0xa0, \"nbsp;\":0xa0,\n  \"nbump;\":[0x224e,0x338], \"nbumpe;\":[0x224f,0x338],\n  \"ncap;\":0x2a43, \"ncaron;\":0x148,\n  \"ncedil;\":0x146, \"ncong;\":0x2247,\n  \"ncongdot;\":[0x2a6d,0x338], \"ncup;\":0x2a42,\n  \"ncy;\":0x43d, \"ndash;\":0x2013,\n  \"ne;\":0x2260, \"neArr;\":0x21d7,\n  \"nearhk;\":0x2924, \"nearr;\":0x2197,\n  \"nearrow;\":0x2197, \"nedot;\":[0x2250,0x338],\n  \"nequiv;\":0x2262, \"nesear;\":0x2928,\n  \"nesim;\":[0x2242,0x338], \"nexist;\":0x2204,\n  \"nexists;\":0x2204, \"nfr;\":[0xd835,0xdd2b],\n  \"ngE;\":[0x2267,0x338], \"nge;\":0x2271,\n  \"ngeq;\":0x2271, \"ngeqq;\":[0x2267,0x338],\n  \"ngeqslant;\":[0x2a7e,0x338], \"nges;\":[0x2a7e,0x338],\n  \"ngsim;\":0x2275, \"ngt;\":0x226f,\n  \"ngtr;\":0x226f, \"nhArr;\":0x21ce,\n  \"nharr;\":0x21ae, \"nhpar;\":0x2af2,\n  \"ni;\":0x220b, \"nis;\":0x22fc,\n  \"nisd;\":0x22fa, \"niv;\":0x220b,\n  \"njcy;\":0x45a, \"nlArr;\":0x21cd,\n  \"nlE;\":[0x2266,0x338], \"nlarr;\":0x219a,\n  \"nldr;\":0x2025, \"nle;\":0x2270,\n  \"nleftarrow;\":0x219a, \"nleftrightarrow;\":0x21ae,\n  \"nleq;\":0x2270, \"nleqq;\":[0x2266,0x338],\n  \"nleqslant;\":[0x2a7d,0x338], \"nles;\":[0x2a7d,0x338],\n  \"nless;\":0x226e, \"nlsim;\":0x2274,\n  \"nlt;\":0x226e, \"nltri;\":0x22ea,\n  \"nltrie;\":0x22ec, \"nmid;\":0x2224,\n  \"nopf;\":[0xd835,0xdd5f], \"not\":0xac,\n  \"not;\":0xac, \"notin;\":0x2209,\n  \"notinE;\":[0x22f9,0x338], \"notindot;\":[0x22f5,0x338],\n  \"notinva;\":0x2209, \"notinvb;\":0x22f7,\n  \"notinvc;\":0x22f6, \"notni;\":0x220c,\n  \"notniva;\":0x220c, \"notnivb;\":0x22fe,\n  \"notnivc;\":0x22fd, \"npar;\":0x2226,\n  \"nparallel;\":0x2226, \"nparsl;\":[0x2afd,0x20e5],\n  \"npart;\":[0x2202,0x338], \"npolint;\":0x2a14,\n  \"npr;\":0x2280, \"nprcue;\":0x22e0,\n  \"npre;\":[0x2aaf,0x338], \"nprec;\":0x2280,\n  \"npreceq;\":[0x2aaf,0x338], \"nrArr;\":0x21cf,\n  \"nrarr;\":0x219b, \"nrarrc;\":[0x2933,0x338],\n  \"nrarrw;\":[0x219d,0x338], \"nrightarrow;\":0x219b,\n  \"nrtri;\":0x22eb, \"nrtrie;\":0x22ed,\n  \"nsc;\":0x2281, \"nsccue;\":0x22e1,\n  \"nsce;\":[0x2ab0,0x338], \"nscr;\":[0xd835,0xdcc3],\n  \"nshortmid;\":0x2224, \"nshortparallel;\":0x2226,\n  \"nsim;\":0x2241, \"nsime;\":0x2244,\n  \"nsimeq;\":0x2244, \"nsmid;\":0x2224,\n  \"nspar;\":0x2226, \"nsqsube;\":0x22e2,\n  \"nsqsupe;\":0x22e3, \"nsub;\":0x2284,\n  \"nsubE;\":[0x2ac5,0x338], \"nsube;\":0x2288,\n  \"nsubset;\":[0x2282,0x20d2], \"nsubseteq;\":0x2288,\n  \"nsubseteqq;\":[0x2ac5,0x338], \"nsucc;\":0x2281,\n  \"nsucceq;\":[0x2ab0,0x338], \"nsup;\":0x2285,\n  \"nsupE;\":[0x2ac6,0x338], \"nsupe;\":0x2289,\n  \"nsupset;\":[0x2283,0x20d2], \"nsupseteq;\":0x2289,\n  \"nsupseteqq;\":[0x2ac6,0x338], \"ntgl;\":0x2279,\n  \"ntilde\":0xf1, \"ntilde;\":0xf1,\n  \"ntlg;\":0x2278, \"ntriangleleft;\":0x22ea,\n  \"ntrianglelefteq;\":0x22ec, \"ntriangleright;\":0x22eb,\n  \"ntrianglerighteq;\":0x22ed, \"nu;\":0x3bd,\n  \"num;\":0x23, \"numero;\":0x2116,\n  \"numsp;\":0x2007, \"nvDash;\":0x22ad,\n  \"nvHarr;\":0x2904, \"nvap;\":[0x224d,0x20d2],\n  \"nvdash;\":0x22ac, \"nvge;\":[0x2265,0x20d2],\n  \"nvgt;\":[0x3e,0x20d2], \"nvinfin;\":0x29de,\n  \"nvlArr;\":0x2902, \"nvle;\":[0x2264,0x20d2],\n  \"nvlt;\":[0x3c,0x20d2], \"nvltrie;\":[0x22b4,0x20d2],\n  \"nvrArr;\":0x2903, \"nvrtrie;\":[0x22b5,0x20d2],\n  \"nvsim;\":[0x223c,0x20d2], \"nwArr;\":0x21d6,\n  \"nwarhk;\":0x2923, \"nwarr;\":0x2196,\n  \"nwarrow;\":0x2196, \"nwnear;\":0x2927,\n  \"oS;\":0x24c8, \"oacute\":0xf3,\n  \"oacute;\":0xf3, \"oast;\":0x229b,\n  \"ocir;\":0x229a, \"ocirc\":0xf4,\n  \"ocirc;\":0xf4, \"ocy;\":0x43e,\n  \"odash;\":0x229d, \"odblac;\":0x151,\n  \"odiv;\":0x2a38, \"odot;\":0x2299,\n  \"odsold;\":0x29bc, \"oelig;\":0x153,\n  \"ofcir;\":0x29bf, \"ofr;\":[0xd835,0xdd2c],\n  \"ogon;\":0x2db, \"ograve\":0xf2,\n  \"ograve;\":0xf2, \"ogt;\":0x29c1,\n  \"ohbar;\":0x29b5, \"ohm;\":0x3a9,\n  \"oint;\":0x222e, \"olarr;\":0x21ba,\n  \"olcir;\":0x29be, \"olcross;\":0x29bb,\n  \"oline;\":0x203e, \"olt;\":0x29c0,\n  \"omacr;\":0x14d, \"omega;\":0x3c9,\n  \"omicron;\":0x3bf, \"omid;\":0x29b6,\n  \"ominus;\":0x2296, \"oopf;\":[0xd835,0xdd60],\n  \"opar;\":0x29b7, \"operp;\":0x29b9,\n  \"oplus;\":0x2295, \"or;\":0x2228,\n  \"orarr;\":0x21bb, \"ord;\":0x2a5d,\n  \"order;\":0x2134, \"orderof;\":0x2134,\n  \"ordf\":0xaa, \"ordf;\":0xaa,\n  \"ordm\":0xba, \"ordm;\":0xba,\n  \"origof;\":0x22b6, \"oror;\":0x2a56,\n  \"orslope;\":0x2a57, \"orv;\":0x2a5b,\n  \"oscr;\":0x2134, \"oslash\":0xf8,\n  \"oslash;\":0xf8, \"osol;\":0x2298,\n  \"otilde\":0xf5, \"otilde;\":0xf5,\n  \"otimes;\":0x2297, \"otimesas;\":0x2a36,\n  \"ouml\":0xf6, \"ouml;\":0xf6,\n  \"ovbar;\":0x233d, \"par;\":0x2225,\n  \"para\":0xb6, \"para;\":0xb6,\n  \"parallel;\":0x2225, \"parsim;\":0x2af3,\n  \"parsl;\":0x2afd, \"part;\":0x2202,\n  \"pcy;\":0x43f, \"percnt;\":0x25,\n  \"period;\":0x2e, \"permil;\":0x2030,\n  \"perp;\":0x22a5, \"pertenk;\":0x2031,\n  \"pfr;\":[0xd835,0xdd2d], \"phi;\":0x3c6,\n  \"phiv;\":0x3d5, \"phmmat;\":0x2133,\n  \"phone;\":0x260e, \"pi;\":0x3c0,\n  \"pitchfork;\":0x22d4, \"piv;\":0x3d6,\n  \"planck;\":0x210f, \"planckh;\":0x210e,\n  \"plankv;\":0x210f, \"plus;\":0x2b,\n  \"plusacir;\":0x2a23, \"plusb;\":0x229e,\n  \"pluscir;\":0x2a22, \"plusdo;\":0x2214,\n  \"plusdu;\":0x2a25, \"pluse;\":0x2a72,\n  \"plusmn\":0xb1, \"plusmn;\":0xb1,\n  \"plussim;\":0x2a26, \"plustwo;\":0x2a27,\n  \"pm;\":0xb1, \"pointint;\":0x2a15,\n  \"popf;\":[0xd835,0xdd61], \"pound\":0xa3,\n  \"pound;\":0xa3, \"pr;\":0x227a,\n  \"prE;\":0x2ab3, \"prap;\":0x2ab7,\n  \"prcue;\":0x227c, \"pre;\":0x2aaf,\n  \"prec;\":0x227a, \"precapprox;\":0x2ab7,\n  \"preccurlyeq;\":0x227c, \"preceq;\":0x2aaf,\n  \"precnapprox;\":0x2ab9, \"precneqq;\":0x2ab5,\n  \"precnsim;\":0x22e8, \"precsim;\":0x227e,\n  \"prime;\":0x2032, \"primes;\":0x2119,\n  \"prnE;\":0x2ab5, \"prnap;\":0x2ab9,\n  \"prnsim;\":0x22e8, \"prod;\":0x220f,\n  \"profalar;\":0x232e, \"profline;\":0x2312,\n  \"profsurf;\":0x2313, \"prop;\":0x221d,\n  \"propto;\":0x221d, \"prsim;\":0x227e,\n  \"prurel;\":0x22b0, \"pscr;\":[0xd835,0xdcc5],\n  \"psi;\":0x3c8, \"puncsp;\":0x2008,\n  \"qfr;\":[0xd835,0xdd2e], \"qint;\":0x2a0c,\n  \"qopf;\":[0xd835,0xdd62], \"qprime;\":0x2057,\n  \"qscr;\":[0xd835,0xdcc6], \"quaternions;\":0x210d,\n  \"quatint;\":0x2a16, \"quest;\":0x3f,\n  \"questeq;\":0x225f, \"quot\":0x22,\n  \"quot;\":0x22, \"rAarr;\":0x21db,\n  \"rArr;\":0x21d2, \"rAtail;\":0x291c,\n  \"rBarr;\":0x290f, \"rHar;\":0x2964,\n  \"race;\":[0x223d,0x331], \"racute;\":0x155,\n  \"radic;\":0x221a, \"raemptyv;\":0x29b3,\n  \"rang;\":0x27e9, \"rangd;\":0x2992,\n  \"range;\":0x29a5, \"rangle;\":0x27e9,\n  \"raquo\":0xbb, \"raquo;\":0xbb,\n  \"rarr;\":0x2192, \"rarrap;\":0x2975,\n  \"rarrb;\":0x21e5, \"rarrbfs;\":0x2920,\n  \"rarrc;\":0x2933, \"rarrfs;\":0x291e,\n  \"rarrhk;\":0x21aa, \"rarrlp;\":0x21ac,\n  \"rarrpl;\":0x2945, \"rarrsim;\":0x2974,\n  \"rarrtl;\":0x21a3, \"rarrw;\":0x219d,\n  \"ratail;\":0x291a, \"ratio;\":0x2236,\n  \"rationals;\":0x211a, \"rbarr;\":0x290d,\n  \"rbbrk;\":0x2773, \"rbrace;\":0x7d,\n  \"rbrack;\":0x5d, \"rbrke;\":0x298c,\n  \"rbrksld;\":0x298e, \"rbrkslu;\":0x2990,\n  \"rcaron;\":0x159, \"rcedil;\":0x157,\n  \"rceil;\":0x2309, \"rcub;\":0x7d,\n  \"rcy;\":0x440, \"rdca;\":0x2937,\n  \"rdldhar;\":0x2969, \"rdquo;\":0x201d,\n  \"rdquor;\":0x201d, \"rdsh;\":0x21b3,\n  \"real;\":0x211c, \"realine;\":0x211b,\n  \"realpart;\":0x211c, \"reals;\":0x211d,\n  \"rect;\":0x25ad, \"reg\":0xae,\n  \"reg;\":0xae, \"rfisht;\":0x297d,\n  \"rfloor;\":0x230b, \"rfr;\":[0xd835,0xdd2f],\n  \"rhard;\":0x21c1, \"rharu;\":0x21c0,\n  \"rharul;\":0x296c, \"rho;\":0x3c1,\n  \"rhov;\":0x3f1, \"rightarrow;\":0x2192,\n  \"rightarrowtail;\":0x21a3, \"rightharpoondown;\":0x21c1,\n  \"rightharpoonup;\":0x21c0, \"rightleftarrows;\":0x21c4,\n  \"rightleftharpoons;\":0x21cc, \"rightrightarrows;\":0x21c9,\n  \"rightsquigarrow;\":0x219d, \"rightthreetimes;\":0x22cc,\n  \"ring;\":0x2da, \"risingdotseq;\":0x2253,\n  \"rlarr;\":0x21c4, \"rlhar;\":0x21cc,\n  \"rlm;\":0x200f, \"rmoust;\":0x23b1,\n  \"rmoustache;\":0x23b1, \"rnmid;\":0x2aee,\n  \"roang;\":0x27ed, \"roarr;\":0x21fe,\n  \"robrk;\":0x27e7, \"ropar;\":0x2986,\n  \"ropf;\":[0xd835,0xdd63], \"roplus;\":0x2a2e,\n  \"rotimes;\":0x2a35, \"rpar;\":0x29,\n  \"rpargt;\":0x2994, \"rppolint;\":0x2a12,\n  \"rrarr;\":0x21c9, \"rsaquo;\":0x203a,\n  \"rscr;\":[0xd835,0xdcc7], \"rsh;\":0x21b1,\n  \"rsqb;\":0x5d, \"rsquo;\":0x2019,\n  \"rsquor;\":0x2019, \"rthree;\":0x22cc,\n  \"rtimes;\":0x22ca, \"rtri;\":0x25b9,\n  \"rtrie;\":0x22b5, \"rtrif;\":0x25b8,\n  \"rtriltri;\":0x29ce, \"ruluhar;\":0x2968,\n  \"rx;\":0x211e, \"sacute;\":0x15b,\n  \"sbquo;\":0x201a, \"sc;\":0x227b,\n  \"scE;\":0x2ab4, \"scap;\":0x2ab8,\n  \"scaron;\":0x161, \"sccue;\":0x227d,\n  \"sce;\":0x2ab0, \"scedil;\":0x15f,\n  \"scirc;\":0x15d, \"scnE;\":0x2ab6,\n  \"scnap;\":0x2aba, \"scnsim;\":0x22e9,\n  \"scpolint;\":0x2a13, \"scsim;\":0x227f,\n  \"scy;\":0x441, \"sdot;\":0x22c5,\n  \"sdotb;\":0x22a1, \"sdote;\":0x2a66,\n  \"seArr;\":0x21d8, \"searhk;\":0x2925,\n  \"searr;\":0x2198, \"searrow;\":0x2198,\n  \"sect\":0xa7, \"sect;\":0xa7,\n  \"semi;\":0x3b, \"seswar;\":0x2929,\n  \"setminus;\":0x2216, \"setmn;\":0x2216,\n  \"sext;\":0x2736, \"sfr;\":[0xd835,0xdd30],\n  \"sfrown;\":0x2322, \"sharp;\":0x266f,\n  \"shchcy;\":0x449, \"shcy;\":0x448,\n  \"shortmid;\":0x2223, \"shortparallel;\":0x2225,\n  \"shy\":0xad, \"shy;\":0xad,\n  \"sigma;\":0x3c3, \"sigmaf;\":0x3c2,\n  \"sigmav;\":0x3c2, \"sim;\":0x223c,\n  \"simdot;\":0x2a6a, \"sime;\":0x2243,\n  \"simeq;\":0x2243, \"simg;\":0x2a9e,\n  \"simgE;\":0x2aa0, \"siml;\":0x2a9d,\n  \"simlE;\":0x2a9f, \"simne;\":0x2246,\n  \"simplus;\":0x2a24, \"simrarr;\":0x2972,\n  \"slarr;\":0x2190, \"smallsetminus;\":0x2216,\n  \"smashp;\":0x2a33, \"smeparsl;\":0x29e4,\n  \"smid;\":0x2223, \"smile;\":0x2323,\n  \"smt;\":0x2aaa, \"smte;\":0x2aac,\n  \"smtes;\":[0x2aac,0xfe00], \"softcy;\":0x44c,\n  \"sol;\":0x2f, \"solb;\":0x29c4,\n  \"solbar;\":0x233f, \"sopf;\":[0xd835,0xdd64],\n  \"spades;\":0x2660, \"spadesuit;\":0x2660,\n  \"spar;\":0x2225, \"sqcap;\":0x2293,\n  \"sqcaps;\":[0x2293,0xfe00], \"sqcup;\":0x2294,\n  \"sqcups;\":[0x2294,0xfe00], \"sqsub;\":0x228f,\n  \"sqsube;\":0x2291, \"sqsubset;\":0x228f,\n  \"sqsubseteq;\":0x2291, \"sqsup;\":0x2290,\n  \"sqsupe;\":0x2292, \"sqsupset;\":0x2290,\n  \"sqsupseteq;\":0x2292, \"squ;\":0x25a1,\n  \"square;\":0x25a1, \"squarf;\":0x25aa,\n  \"squf;\":0x25aa, \"srarr;\":0x2192,\n  \"sscr;\":[0xd835,0xdcc8], \"ssetmn;\":0x2216,\n  \"ssmile;\":0x2323, \"sstarf;\":0x22c6,\n  \"star;\":0x2606, \"starf;\":0x2605,\n  \"straightepsilon;\":0x3f5, \"straightphi;\":0x3d5,\n  \"strns;\":0xaf, \"sub;\":0x2282,\n  \"subE;\":0x2ac5, \"subdot;\":0x2abd,\n  \"sube;\":0x2286, \"subedot;\":0x2ac3,\n  \"submult;\":0x2ac1, \"subnE;\":0x2acb,\n  \"subne;\":0x228a, \"subplus;\":0x2abf,\n  \"subrarr;\":0x2979, \"subset;\":0x2282,\n  \"subseteq;\":0x2286, \"subseteqq;\":0x2ac5,\n  \"subsetneq;\":0x228a, \"subsetneqq;\":0x2acb,\n  \"subsim;\":0x2ac7, \"subsub;\":0x2ad5,\n  \"subsup;\":0x2ad3, \"succ;\":0x227b,\n  \"succapprox;\":0x2ab8, \"succcurlyeq;\":0x227d,\n  \"succeq;\":0x2ab0, \"succnapprox;\":0x2aba,\n  \"succneqq;\":0x2ab6, \"succnsim;\":0x22e9,\n  \"succsim;\":0x227f, \"sum;\":0x2211,\n  \"sung;\":0x266a, \"sup1\":0xb9,\n  \"sup1;\":0xb9, \"sup2\":0xb2,\n  \"sup2;\":0xb2, \"sup3\":0xb3,\n  \"sup3;\":0xb3, \"sup;\":0x2283,\n  \"supE;\":0x2ac6, \"supdot;\":0x2abe,\n  \"supdsub;\":0x2ad8, \"supe;\":0x2287,\n  \"supedot;\":0x2ac4, \"suphsol;\":0x27c9,\n  \"suphsub;\":0x2ad7, \"suplarr;\":0x297b,\n  \"supmult;\":0x2ac2, \"supnE;\":0x2acc,\n  \"supne;\":0x228b, \"supplus;\":0x2ac0,\n  \"supset;\":0x2283, \"supseteq;\":0x2287,\n  \"supseteqq;\":0x2ac6, \"supsetneq;\":0x228b,\n  \"supsetneqq;\":0x2acc, \"supsim;\":0x2ac8,\n  \"supsub;\":0x2ad4, \"supsup;\":0x2ad6,\n  \"swArr;\":0x21d9, \"swarhk;\":0x2926,\n  \"swarr;\":0x2199, \"swarrow;\":0x2199,\n  \"swnwar;\":0x292a, \"szlig\":0xdf,\n  \"szlig;\":0xdf, \"target;\":0x2316,\n  \"tau;\":0x3c4, \"tbrk;\":0x23b4,\n  \"tcaron;\":0x165, \"tcedil;\":0x163,\n  \"tcy;\":0x442, \"tdot;\":0x20db,\n  \"telrec;\":0x2315, \"tfr;\":[0xd835,0xdd31],\n  \"there4;\":0x2234, \"therefore;\":0x2234,\n  \"theta;\":0x3b8, \"thetasym;\":0x3d1,\n  \"thetav;\":0x3d1, \"thickapprox;\":0x2248,\n  \"thicksim;\":0x223c, \"thinsp;\":0x2009,\n  \"thkap;\":0x2248, \"thksim;\":0x223c,\n  \"thorn\":0xfe, \"thorn;\":0xfe,\n  \"tilde;\":0x2dc, \"times\":0xd7,\n  \"times;\":0xd7, \"timesb;\":0x22a0,\n  \"timesbar;\":0x2a31, \"timesd;\":0x2a30,\n  \"tint;\":0x222d, \"toea;\":0x2928,\n  \"top;\":0x22a4, \"topbot;\":0x2336,\n  \"topcir;\":0x2af1, \"topf;\":[0xd835,0xdd65],\n  \"topfork;\":0x2ada, \"tosa;\":0x2929,\n  \"tprime;\":0x2034, \"trade;\":0x2122,\n  \"triangle;\":0x25b5, \"triangledown;\":0x25bf,\n  \"triangleleft;\":0x25c3, \"trianglelefteq;\":0x22b4,\n  \"triangleq;\":0x225c, \"triangleright;\":0x25b9,\n  \"trianglerighteq;\":0x22b5, \"tridot;\":0x25ec,\n  \"trie;\":0x225c, \"triminus;\":0x2a3a,\n  \"triplus;\":0x2a39, \"trisb;\":0x29cd,\n  \"tritime;\":0x2a3b, \"trpezium;\":0x23e2,\n  \"tscr;\":[0xd835,0xdcc9], \"tscy;\":0x446,\n  \"tshcy;\":0x45b, \"tstrok;\":0x167,\n  \"twixt;\":0x226c, \"twoheadleftarrow;\":0x219e,\n  \"twoheadrightarrow;\":0x21a0, \"uArr;\":0x21d1,\n  \"uHar;\":0x2963, \"uacute\":0xfa,\n  \"uacute;\":0xfa, \"uarr;\":0x2191,\n  \"ubrcy;\":0x45e, \"ubreve;\":0x16d,\n  \"ucirc\":0xfb, \"ucirc;\":0xfb,\n  \"ucy;\":0x443, \"udarr;\":0x21c5,\n  \"udblac;\":0x171, \"udhar;\":0x296e,\n  \"ufisht;\":0x297e, \"ufr;\":[0xd835,0xdd32],\n  \"ugrave\":0xf9, \"ugrave;\":0xf9,\n  \"uharl;\":0x21bf, \"uharr;\":0x21be,\n  \"uhblk;\":0x2580, \"ulcorn;\":0x231c,\n  \"ulcorner;\":0x231c, \"ulcrop;\":0x230f,\n  \"ultri;\":0x25f8, \"umacr;\":0x16b,\n  \"uml\":0xa8, \"uml;\":0xa8,\n  \"uogon;\":0x173, \"uopf;\":[0xd835,0xdd66],\n  \"uparrow;\":0x2191, \"updownarrow;\":0x2195,\n  \"upharpoonleft;\":0x21bf, \"upharpoonright;\":0x21be,\n  \"uplus;\":0x228e, \"upsi;\":0x3c5,\n  \"upsih;\":0x3d2, \"upsilon;\":0x3c5,\n  \"upuparrows;\":0x21c8, \"urcorn;\":0x231d,\n  \"urcorner;\":0x231d, \"urcrop;\":0x230e,\n  \"uring;\":0x16f, \"urtri;\":0x25f9,\n  \"uscr;\":[0xd835,0xdcca], \"utdot;\":0x22f0,\n  \"utilde;\":0x169, \"utri;\":0x25b5,\n  \"utrif;\":0x25b4, \"uuarr;\":0x21c8,\n  \"uuml\":0xfc, \"uuml;\":0xfc,\n  \"uwangle;\":0x29a7, \"vArr;\":0x21d5,\n  \"vBar;\":0x2ae8, \"vBarv;\":0x2ae9,\n  \"vDash;\":0x22a8, \"vangrt;\":0x299c,\n  \"varepsilon;\":0x3f5, \"varkappa;\":0x3f0,\n  \"varnothing;\":0x2205, \"varphi;\":0x3d5,\n  \"varpi;\":0x3d6, \"varpropto;\":0x221d,\n  \"varr;\":0x2195, \"varrho;\":0x3f1,\n  \"varsigma;\":0x3c2, \"varsubsetneq;\":[0x228a,0xfe00],\n  \"varsubsetneqq;\":[0x2acb,0xfe00], \"varsupsetneq;\":[0x228b,0xfe00],\n  \"varsupsetneqq;\":[0x2acc,0xfe00], \"vartheta;\":0x3d1,\n  \"vartriangleleft;\":0x22b2, \"vartriangleright;\":0x22b3,\n  \"vcy;\":0x432, \"vdash;\":0x22a2,\n  \"vee;\":0x2228, \"veebar;\":0x22bb,\n  \"veeeq;\":0x225a, \"vellip;\":0x22ee,\n  \"verbar;\":0x7c, \"vert;\":0x7c,\n  \"vfr;\":[0xd835,0xdd33], \"vltri;\":0x22b2,\n  \"vnsub;\":[0x2282,0x20d2], \"vnsup;\":[0x2283,0x20d2],\n  \"vopf;\":[0xd835,0xdd67], \"vprop;\":0x221d,\n  \"vrtri;\":0x22b3, \"vscr;\":[0xd835,0xdccb],\n  \"vsubnE;\":[0x2acb,0xfe00], \"vsubne;\":[0x228a,0xfe00],\n  \"vsupnE;\":[0x2acc,0xfe00], \"vsupne;\":[0x228b,0xfe00],\n  \"vzigzag;\":0x299a, \"wcirc;\":0x175,\n  \"wedbar;\":0x2a5f, \"wedge;\":0x2227,\n  \"wedgeq;\":0x2259, \"weierp;\":0x2118,\n  \"wfr;\":[0xd835,0xdd34], \"wopf;\":[0xd835,0xdd68],\n  \"wp;\":0x2118, \"wr;\":0x2240,\n  \"wreath;\":0x2240, \"wscr;\":[0xd835,0xdccc],\n  \"xcap;\":0x22c2, \"xcirc;\":0x25ef,\n  \"xcup;\":0x22c3, \"xdtri;\":0x25bd,\n  \"xfr;\":[0xd835,0xdd35], \"xhArr;\":0x27fa,\n  \"xharr;\":0x27f7, \"xi;\":0x3be,\n  \"xlArr;\":0x27f8, \"xlarr;\":0x27f5,\n  \"xmap;\":0x27fc, \"xnis;\":0x22fb,\n  \"xodot;\":0x2a00, \"xopf;\":[0xd835,0xdd69],\n  \"xoplus;\":0x2a01, \"xotime;\":0x2a02,\n  \"xrArr;\":0x27f9, \"xrarr;\":0x27f6,\n  \"xscr;\":[0xd835,0xdccd], \"xsqcup;\":0x2a06,\n  \"xuplus;\":0x2a04, \"xutri;\":0x25b3,\n  \"xvee;\":0x22c1, \"xwedge;\":0x22c0,\n  \"yacute\":0xfd, \"yacute;\":0xfd,\n  \"yacy;\":0x44f, \"ycirc;\":0x177,\n  \"ycy;\":0x44b, \"yen\":0xa5,\n  \"yen;\":0xa5, \"yfr;\":[0xd835,0xdd36],\n  \"yicy;\":0x457, \"yopf;\":[0xd835,0xdd6a],\n  \"yscr;\":[0xd835,0xdcce], \"yucy;\":0x44e,\n  \"yuml\":0xff, \"yuml;\":0xff,\n  \"zacute;\":0x17a, \"zcaron;\":0x17e,\n  \"zcy;\":0x437, \"zdot;\":0x17c,\n  \"zeetrf;\":0x2128, \"zeta;\":0x3b6,\n  \"zfr;\":[0xd835,0xdd37], \"zhcy;\":0x436,\n  \"zigrarr;\":0x21dd, \"zopf;\":[0xd835,0xdd6b],\n  \"zscr;\":[0xd835,0xdccf], \"zwj;\":0x200d,\n  \"zwnj;\":0x200c,\n};\n/*\n * This regexp is generated with test/tools/update-entities.js\n * It will always match at least one character -- but note that there\n * are no entities whose names are a single character long.\n */\nvar NAMEDCHARREF = /(A(?:Elig;?|MP;?|acute;?|breve;|c(?:irc;?|y;)|fr;|grave;?|lpha;|macr;|nd;|o(?:gon;|pf;)|pplyFunction;|ring;?|s(?:cr;|sign;)|tilde;?|uml;?)|B(?:a(?:ckslash;|r(?:v;|wed;))|cy;|e(?:cause;|rnoullis;|ta;)|fr;|opf;|reve;|scr;|umpeq;)|C(?:Hcy;|OPY;?|a(?:cute;|p(?:;|italDifferentialD;)|yleys;)|c(?:aron;|edil;?|irc;|onint;)|dot;|e(?:dilla;|nterDot;)|fr;|hi;|ircle(?:Dot;|Minus;|Plus;|Times;)|lo(?:ckwiseContourIntegral;|seCurly(?:DoubleQuote;|Quote;))|o(?:lon(?:;|e;)|n(?:gruent;|int;|tourIntegral;)|p(?:f;|roduct;)|unterClockwiseContourIntegral;)|ross;|scr;|up(?:;|Cap;))|D(?:D(?:;|otrahd;)|Jcy;|Scy;|Zcy;|a(?:gger;|rr;|shv;)|c(?:aron;|y;)|el(?:;|ta;)|fr;|i(?:a(?:critical(?:Acute;|Do(?:t;|ubleAcute;)|Grave;|Tilde;)|mond;)|fferentialD;)|o(?:pf;|t(?:;|Dot;|Equal;)|uble(?:ContourIntegral;|Do(?:t;|wnArrow;)|L(?:eft(?:Arrow;|RightArrow;|Tee;)|ong(?:Left(?:Arrow;|RightArrow;)|RightArrow;))|Right(?:Arrow;|Tee;)|Up(?:Arrow;|DownArrow;)|VerticalBar;)|wn(?:Arrow(?:;|Bar;|UpArrow;)|Breve;|Left(?:RightVector;|TeeVector;|Vector(?:;|Bar;))|Right(?:TeeVector;|Vector(?:;|Bar;))|Tee(?:;|Arrow;)|arrow;))|s(?:cr;|trok;))|E(?:NG;|TH;?|acute;?|c(?:aron;|irc;?|y;)|dot;|fr;|grave;?|lement;|m(?:acr;|pty(?:SmallSquare;|VerySmallSquare;))|o(?:gon;|pf;)|psilon;|qu(?:al(?:;|Tilde;)|ilibrium;)|s(?:cr;|im;)|ta;|uml;?|x(?:ists;|ponentialE;))|F(?:cy;|fr;|illed(?:SmallSquare;|VerySmallSquare;)|o(?:pf;|rAll;|uriertrf;)|scr;)|G(?:Jcy;|T;?|amma(?:;|d;)|breve;|c(?:edil;|irc;|y;)|dot;|fr;|g;|opf;|reater(?:Equal(?:;|Less;)|FullEqual;|Greater;|Less;|SlantEqual;|Tilde;)|scr;|t;)|H(?:ARDcy;|a(?:cek;|t;)|circ;|fr;|ilbertSpace;|o(?:pf;|rizontalLine;)|s(?:cr;|trok;)|ump(?:DownHump;|Equal;))|I(?:Ecy;|Jlig;|Ocy;|acute;?|c(?:irc;?|y;)|dot;|fr;|grave;?|m(?:;|a(?:cr;|ginaryI;)|plies;)|n(?:t(?:;|e(?:gral;|rsection;))|visible(?:Comma;|Times;))|o(?:gon;|pf;|ta;)|scr;|tilde;|u(?:kcy;|ml;?))|J(?:c(?:irc;|y;)|fr;|opf;|s(?:cr;|ercy;)|ukcy;)|K(?:Hcy;|Jcy;|appa;|c(?:edil;|y;)|fr;|opf;|scr;)|L(?:Jcy;|T;?|a(?:cute;|mbda;|ng;|placetrf;|rr;)|c(?:aron;|edil;|y;)|e(?:ft(?:A(?:ngleBracket;|rrow(?:;|Bar;|RightArrow;))|Ceiling;|Do(?:ubleBracket;|wn(?:TeeVector;|Vector(?:;|Bar;)))|Floor;|Right(?:Arrow;|Vector;)|T(?:ee(?:;|Arrow;|Vector;)|riangle(?:;|Bar;|Equal;))|Up(?:DownVector;|TeeVector;|Vector(?:;|Bar;))|Vector(?:;|Bar;)|arrow;|rightarrow;)|ss(?:EqualGreater;|FullEqual;|Greater;|Less;|SlantEqual;|Tilde;))|fr;|l(?:;|eftarrow;)|midot;|o(?:ng(?:Left(?:Arrow;|RightArrow;)|RightArrow;|left(?:arrow;|rightarrow;)|rightarrow;)|pf;|wer(?:LeftArrow;|RightArrow;))|s(?:cr;|h;|trok;)|t;)|M(?:ap;|cy;|e(?:diumSpace;|llintrf;)|fr;|inusPlus;|opf;|scr;|u;)|N(?:Jcy;|acute;|c(?:aron;|edil;|y;)|e(?:gative(?:MediumSpace;|Thi(?:ckSpace;|nSpace;)|VeryThinSpace;)|sted(?:GreaterGreater;|LessLess;)|wLine;)|fr;|o(?:Break;|nBreakingSpace;|pf;|t(?:;|C(?:ongruent;|upCap;)|DoubleVerticalBar;|E(?:lement;|qual(?:;|Tilde;)|xists;)|Greater(?:;|Equal;|FullEqual;|Greater;|Less;|SlantEqual;|Tilde;)|Hump(?:DownHump;|Equal;)|Le(?:ftTriangle(?:;|Bar;|Equal;)|ss(?:;|Equal;|Greater;|Less;|SlantEqual;|Tilde;))|Nested(?:GreaterGreater;|LessLess;)|Precedes(?:;|Equal;|SlantEqual;)|R(?:everseElement;|ightTriangle(?:;|Bar;|Equal;))|S(?:quareSu(?:bset(?:;|Equal;)|perset(?:;|Equal;))|u(?:bset(?:;|Equal;)|cceeds(?:;|Equal;|SlantEqual;|Tilde;)|perset(?:;|Equal;)))|Tilde(?:;|Equal;|FullEqual;|Tilde;)|VerticalBar;))|scr;|tilde;?|u;)|O(?:Elig;|acute;?|c(?:irc;?|y;)|dblac;|fr;|grave;?|m(?:acr;|ega;|icron;)|opf;|penCurly(?:DoubleQuote;|Quote;)|r;|s(?:cr;|lash;?)|ti(?:lde;?|mes;)|uml;?|ver(?:B(?:ar;|rac(?:e;|ket;))|Parenthesis;))|P(?:artialD;|cy;|fr;|hi;|i;|lusMinus;|o(?:incareplane;|pf;)|r(?:;|ecedes(?:;|Equal;|SlantEqual;|Tilde;)|ime;|o(?:duct;|portion(?:;|al;)))|s(?:cr;|i;))|Q(?:UOT;?|fr;|opf;|scr;)|R(?:Barr;|EG;?|a(?:cute;|ng;|rr(?:;|tl;))|c(?:aron;|edil;|y;)|e(?:;|verse(?:E(?:lement;|quilibrium;)|UpEquilibrium;))|fr;|ho;|ight(?:A(?:ngleBracket;|rrow(?:;|Bar;|LeftArrow;))|Ceiling;|Do(?:ubleBracket;|wn(?:TeeVector;|Vector(?:;|Bar;)))|Floor;|T(?:ee(?:;|Arrow;|Vector;)|riangle(?:;|Bar;|Equal;))|Up(?:DownVector;|TeeVector;|Vector(?:;|Bar;))|Vector(?:;|Bar;)|arrow;)|o(?:pf;|undImplies;)|rightarrow;|s(?:cr;|h;)|uleDelayed;)|S(?:H(?:CHcy;|cy;)|OFTcy;|acute;|c(?:;|aron;|edil;|irc;|y;)|fr;|hort(?:DownArrow;|LeftArrow;|RightArrow;|UpArrow;)|igma;|mallCircle;|opf;|q(?:rt;|uare(?:;|Intersection;|Su(?:bset(?:;|Equal;)|perset(?:;|Equal;))|Union;))|scr;|tar;|u(?:b(?:;|set(?:;|Equal;))|c(?:ceeds(?:;|Equal;|SlantEqual;|Tilde;)|hThat;)|m;|p(?:;|erset(?:;|Equal;)|set;)))|T(?:HORN;?|RADE;|S(?:Hcy;|cy;)|a(?:b;|u;)|c(?:aron;|edil;|y;)|fr;|h(?:e(?:refore;|ta;)|i(?:ckSpace;|nSpace;))|ilde(?:;|Equal;|FullEqual;|Tilde;)|opf;|ripleDot;|s(?:cr;|trok;))|U(?:a(?:cute;?|rr(?:;|ocir;))|br(?:cy;|eve;)|c(?:irc;?|y;)|dblac;|fr;|grave;?|macr;|n(?:der(?:B(?:ar;|rac(?:e;|ket;))|Parenthesis;)|ion(?:;|Plus;))|o(?:gon;|pf;)|p(?:Arrow(?:;|Bar;|DownArrow;)|DownArrow;|Equilibrium;|Tee(?:;|Arrow;)|arrow;|downarrow;|per(?:LeftArrow;|RightArrow;)|si(?:;|lon;))|ring;|scr;|tilde;|uml;?)|V(?:Dash;|bar;|cy;|dash(?:;|l;)|e(?:e;|r(?:bar;|t(?:;|ical(?:Bar;|Line;|Separator;|Tilde;))|yThinSpace;))|fr;|opf;|scr;|vdash;)|W(?:circ;|edge;|fr;|opf;|scr;)|X(?:fr;|i;|opf;|scr;)|Y(?:Acy;|Icy;|Ucy;|acute;?|c(?:irc;|y;)|fr;|opf;|scr;|uml;)|Z(?:Hcy;|acute;|c(?:aron;|y;)|dot;|e(?:roWidthSpace;|ta;)|fr;|opf;|scr;)|a(?:acute;?|breve;|c(?:;|E;|d;|irc;?|ute;?|y;)|elig;?|f(?:;|r;)|grave;?|l(?:e(?:fsym;|ph;)|pha;)|m(?:a(?:cr;|lg;)|p;?)|n(?:d(?:;|and;|d;|slope;|v;)|g(?:;|e;|le;|msd(?:;|a(?:a;|b;|c;|d;|e;|f;|g;|h;))|rt(?:;|vb(?:;|d;))|s(?:ph;|t;)|zarr;))|o(?:gon;|pf;)|p(?:;|E;|acir;|e;|id;|os;|prox(?:;|eq;))|ring;?|s(?:cr;|t;|ymp(?:;|eq;))|tilde;?|uml;?|w(?:conint;|int;))|b(?:Not;|a(?:ck(?:cong;|epsilon;|prime;|sim(?:;|eq;))|r(?:vee;|wed(?:;|ge;)))|brk(?:;|tbrk;)|c(?:ong;|y;)|dquo;|e(?:caus(?:;|e;)|mptyv;|psi;|rnou;|t(?:a;|h;|ween;))|fr;|ig(?:c(?:ap;|irc;|up;)|o(?:dot;|plus;|times;)|s(?:qcup;|tar;)|triangle(?:down;|up;)|uplus;|vee;|wedge;)|karow;|l(?:a(?:ck(?:lozenge;|square;|triangle(?:;|down;|left;|right;))|nk;)|k(?:1(?:2;|4;)|34;)|ock;)|n(?:e(?:;|quiv;)|ot;)|o(?:pf;|t(?:;|tom;)|wtie;|x(?:D(?:L;|R;|l;|r;)|H(?:;|D;|U;|d;|u;)|U(?:L;|R;|l;|r;)|V(?:;|H;|L;|R;|h;|l;|r;)|box;|d(?:L;|R;|l;|r;)|h(?:;|D;|U;|d;|u;)|minus;|plus;|times;|u(?:L;|R;|l;|r;)|v(?:;|H;|L;|R;|h;|l;|r;)))|prime;|r(?:eve;|vbar;?)|s(?:cr;|emi;|im(?:;|e;)|ol(?:;|b;|hsub;))|u(?:ll(?:;|et;)|mp(?:;|E;|e(?:;|q;))))|c(?:a(?:cute;|p(?:;|and;|brcup;|c(?:ap;|up;)|dot;|s;)|r(?:et;|on;))|c(?:a(?:ps;|ron;)|edil;?|irc;|ups(?:;|sm;))|dot;|e(?:dil;?|mptyv;|nt(?:;|erdot;|))|fr;|h(?:cy;|eck(?:;|mark;)|i;)|ir(?:;|E;|c(?:;|eq;|le(?:arrow(?:left;|right;)|d(?:R;|S;|ast;|circ;|dash;)))|e;|fnint;|mid;|scir;)|lubs(?:;|uit;)|o(?:lon(?:;|e(?:;|q;))|m(?:ma(?:;|t;)|p(?:;|fn;|le(?:ment;|xes;)))|n(?:g(?:;|dot;)|int;)|p(?:f;|rod;|y(?:;|sr;|)))|r(?:arr;|oss;)|s(?:cr;|u(?:b(?:;|e;)|p(?:;|e;)))|tdot;|u(?:darr(?:l;|r;)|e(?:pr;|sc;)|larr(?:;|p;)|p(?:;|brcap;|c(?:ap;|up;)|dot;|or;|s;)|r(?:arr(?:;|m;)|ly(?:eq(?:prec;|succ;)|vee;|wedge;)|ren;?|vearrow(?:left;|right;))|vee;|wed;)|w(?:conint;|int;)|ylcty;)|d(?:Arr;|Har;|a(?:gger;|leth;|rr;|sh(?:;|v;))|b(?:karow;|lac;)|c(?:aron;|y;)|d(?:;|a(?:gger;|rr;)|otseq;)|e(?:g;?|lta;|mptyv;)|f(?:isht;|r;)|har(?:l;|r;)|i(?:am(?:;|ond(?:;|suit;)|s;)|e;|gamma;|sin;|v(?:;|ide(?:;|ontimes;|)|onx;))|jcy;|lc(?:orn;|rop;)|o(?:llar;|pf;|t(?:;|eq(?:;|dot;)|minus;|plus;|square;)|ublebarwedge;|wn(?:arrow;|downarrows;|harpoon(?:left;|right;)))|r(?:bkarow;|c(?:orn;|rop;))|s(?:c(?:r;|y;)|ol;|trok;)|t(?:dot;|ri(?:;|f;))|u(?:arr;|har;)|wangle;|z(?:cy;|igrarr;))|e(?:D(?:Dot;|ot;)|a(?:cute;?|ster;)|c(?:aron;|ir(?:;|c;?)|olon;|y;)|dot;|e;|f(?:Dot;|r;)|g(?:;|rave;?|s(?:;|dot;))|l(?:;|inters;|l;|s(?:;|dot;))|m(?:acr;|pty(?:;|set;|v;)|sp(?:1(?:3;|4;)|;))|n(?:g;|sp;)|o(?:gon;|pf;)|p(?:ar(?:;|sl;)|lus;|si(?:;|lon;|v;))|q(?:c(?:irc;|olon;)|s(?:im;|lant(?:gtr;|less;))|u(?:als;|est;|iv(?:;|DD;))|vparsl;)|r(?:Dot;|arr;)|s(?:cr;|dot;|im;)|t(?:a;|h;?)|u(?:ml;?|ro;)|x(?:cl;|ist;|p(?:ectation;|onentiale;)))|f(?:allingdotseq;|cy;|emale;|f(?:ilig;|l(?:ig;|lig;)|r;)|ilig;|jlig;|l(?:at;|lig;|tns;)|nof;|o(?:pf;|r(?:all;|k(?:;|v;)))|partint;|r(?:a(?:c(?:1(?:2;?|3;|4;?|5;|6;|8;)|2(?:3;|5;)|3(?:4;?|5;|8;)|45;|5(?:6;|8;)|78;)|sl;)|own;)|scr;)|g(?:E(?:;|l;)|a(?:cute;|mma(?:;|d;)|p;)|breve;|c(?:irc;|y;)|dot;|e(?:;|l;|q(?:;|q;|slant;)|s(?:;|cc;|dot(?:;|o(?:;|l;))|l(?:;|es;)))|fr;|g(?:;|g;)|imel;|jcy;|l(?:;|E;|a;|j;)|n(?:E;|ap(?:;|prox;)|e(?:;|q(?:;|q;))|sim;)|opf;|rave;|s(?:cr;|im(?:;|e;|l;))|t(?:;|c(?:c;|ir;)|dot;|lPar;|quest;|r(?:a(?:pprox;|rr;)|dot;|eq(?:less;|qless;)|less;|sim;)|)|v(?:ertneqq;|nE;))|h(?:Arr;|a(?:irsp;|lf;|milt;|r(?:dcy;|r(?:;|cir;|w;)))|bar;|circ;|e(?:arts(?:;|uit;)|llip;|rcon;)|fr;|ks(?:earow;|warow;)|o(?:arr;|mtht;|ok(?:leftarrow;|rightarrow;)|pf;|rbar;)|s(?:cr;|lash;|trok;)|y(?:bull;|phen;))|i(?:acute;?|c(?:;|irc;?|y;)|e(?:cy;|xcl;?)|f(?:f;|r;)|grave;?|i(?:;|i(?:int;|nt;)|nfin;|ota;)|jlig;|m(?:a(?:cr;|g(?:e;|line;|part;)|th;)|of;|ped;)|n(?:;|care;|fin(?:;|tie;)|odot;|t(?:;|cal;|e(?:gers;|rcal;)|larhk;|prod;))|o(?:cy;|gon;|pf;|ta;)|prod;|quest;?|s(?:cr;|in(?:;|E;|dot;|s(?:;|v;)|v;))|t(?:;|ilde;)|u(?:kcy;|ml;?))|j(?:c(?:irc;|y;)|fr;|math;|opf;|s(?:cr;|ercy;)|ukcy;)|k(?:appa(?:;|v;)|c(?:edil;|y;)|fr;|green;|hcy;|jcy;|opf;|scr;)|l(?:A(?:arr;|rr;|tail;)|Barr;|E(?:;|g;)|Har;|a(?:cute;|emptyv;|gran;|mbda;|ng(?:;|d;|le;)|p;|quo;?|rr(?:;|b(?:;|fs;)|fs;|hk;|lp;|pl;|sim;|tl;)|t(?:;|ail;|e(?:;|s;)))|b(?:arr;|brk;|r(?:ac(?:e;|k;)|k(?:e;|sl(?:d;|u;))))|c(?:aron;|e(?:dil;|il;)|ub;|y;)|d(?:ca;|quo(?:;|r;)|r(?:dhar;|ushar;)|sh;)|e(?:;|ft(?:arrow(?:;|tail;)|harpoon(?:down;|up;)|leftarrows;|right(?:arrow(?:;|s;)|harpoons;|squigarrow;)|threetimes;)|g;|q(?:;|q;|slant;)|s(?:;|cc;|dot(?:;|o(?:;|r;))|g(?:;|es;)|s(?:approx;|dot;|eq(?:gtr;|qgtr;)|gtr;|sim;)))|f(?:isht;|loor;|r;)|g(?:;|E;)|h(?:ar(?:d;|u(?:;|l;))|blk;)|jcy;|l(?:;|arr;|corner;|hard;|tri;)|m(?:idot;|oust(?:;|ache;))|n(?:E;|ap(?:;|prox;)|e(?:;|q(?:;|q;))|sim;)|o(?:a(?:ng;|rr;)|brk;|ng(?:left(?:arrow;|rightarrow;)|mapsto;|rightarrow;)|oparrow(?:left;|right;)|p(?:ar;|f;|lus;)|times;|w(?:ast;|bar;)|z(?:;|enge;|f;))|par(?:;|lt;)|r(?:arr;|corner;|har(?:;|d;)|m;|tri;)|s(?:aquo;|cr;|h;|im(?:;|e;|g;)|q(?:b;|uo(?:;|r;))|trok;)|t(?:;|c(?:c;|ir;)|dot;|hree;|imes;|larr;|quest;|r(?:Par;|i(?:;|e;|f;))|)|ur(?:dshar;|uhar;)|v(?:ertneqq;|nE;))|m(?:DDot;|a(?:cr;?|l(?:e;|t(?:;|ese;))|p(?:;|sto(?:;|down;|left;|up;))|rker;)|c(?:omma;|y;)|dash;|easuredangle;|fr;|ho;|i(?:cro;?|d(?:;|ast;|cir;|dot;?)|nus(?:;|b;|d(?:;|u;)))|l(?:cp;|dr;)|nplus;|o(?:dels;|pf;)|p;|s(?:cr;|tpos;)|u(?:;|ltimap;|map;))|n(?:G(?:g;|t(?:;|v;))|L(?:eft(?:arrow;|rightarrow;)|l;|t(?:;|v;))|Rightarrow;|V(?:Dash;|dash;)|a(?:bla;|cute;|ng;|p(?:;|E;|id;|os;|prox;)|tur(?:;|al(?:;|s;)))|b(?:sp;?|ump(?:;|e;))|c(?:a(?:p;|ron;)|edil;|ong(?:;|dot;)|up;|y;)|dash;|e(?:;|Arr;|ar(?:hk;|r(?:;|ow;))|dot;|quiv;|s(?:ear;|im;)|xist(?:;|s;))|fr;|g(?:E;|e(?:;|q(?:;|q;|slant;)|s;)|sim;|t(?:;|r;))|h(?:Arr;|arr;|par;)|i(?:;|s(?:;|d;)|v;)|jcy;|l(?:Arr;|E;|arr;|dr;|e(?:;|ft(?:arrow;|rightarrow;)|q(?:;|q;|slant;)|s(?:;|s;))|sim;|t(?:;|ri(?:;|e;)))|mid;|o(?:pf;|t(?:;|in(?:;|E;|dot;|v(?:a;|b;|c;))|ni(?:;|v(?:a;|b;|c;))|))|p(?:ar(?:;|allel;|sl;|t;)|olint;|r(?:;|cue;|e(?:;|c(?:;|eq;))))|r(?:Arr;|arr(?:;|c;|w;)|ightarrow;|tri(?:;|e;))|s(?:c(?:;|cue;|e;|r;)|hort(?:mid;|parallel;)|im(?:;|e(?:;|q;))|mid;|par;|qsu(?:be;|pe;)|u(?:b(?:;|E;|e;|set(?:;|eq(?:;|q;)))|cc(?:;|eq;)|p(?:;|E;|e;|set(?:;|eq(?:;|q;)))))|t(?:gl;|ilde;?|lg;|riangle(?:left(?:;|eq;)|right(?:;|eq;)))|u(?:;|m(?:;|ero;|sp;))|v(?:Dash;|Harr;|ap;|dash;|g(?:e;|t;)|infin;|l(?:Arr;|e;|t(?:;|rie;))|r(?:Arr;|trie;)|sim;)|w(?:Arr;|ar(?:hk;|r(?:;|ow;))|near;))|o(?:S;|a(?:cute;?|st;)|c(?:ir(?:;|c;?)|y;)|d(?:ash;|blac;|iv;|ot;|sold;)|elig;|f(?:cir;|r;)|g(?:on;|rave;?|t;)|h(?:bar;|m;)|int;|l(?:arr;|c(?:ir;|ross;)|ine;|t;)|m(?:acr;|ega;|i(?:cron;|d;|nus;))|opf;|p(?:ar;|erp;|lus;)|r(?:;|arr;|d(?:;|er(?:;|of;)|f;?|m;?)|igof;|or;|slope;|v;)|s(?:cr;|lash;?|ol;)|ti(?:lde;?|mes(?:;|as;))|uml;?|vbar;)|p(?:ar(?:;|a(?:;|llel;|)|s(?:im;|l;)|t;)|cy;|er(?:cnt;|iod;|mil;|p;|tenk;)|fr;|h(?:i(?:;|v;)|mmat;|one;)|i(?:;|tchfork;|v;)|l(?:an(?:ck(?:;|h;)|kv;)|us(?:;|acir;|b;|cir;|d(?:o;|u;)|e;|mn;?|sim;|two;))|m;|o(?:intint;|pf;|und;?)|r(?:;|E;|ap;|cue;|e(?:;|c(?:;|approx;|curlyeq;|eq;|n(?:approx;|eqq;|sim;)|sim;))|ime(?:;|s;)|n(?:E;|ap;|sim;)|o(?:d;|f(?:alar;|line;|surf;)|p(?:;|to;))|sim;|urel;)|s(?:cr;|i;)|uncsp;)|q(?:fr;|int;|opf;|prime;|scr;|u(?:at(?:ernions;|int;)|est(?:;|eq;)|ot;?))|r(?:A(?:arr;|rr;|tail;)|Barr;|Har;|a(?:c(?:e;|ute;)|dic;|emptyv;|ng(?:;|d;|e;|le;)|quo;?|rr(?:;|ap;|b(?:;|fs;)|c;|fs;|hk;|lp;|pl;|sim;|tl;|w;)|t(?:ail;|io(?:;|nals;)))|b(?:arr;|brk;|r(?:ac(?:e;|k;)|k(?:e;|sl(?:d;|u;))))|c(?:aron;|e(?:dil;|il;)|ub;|y;)|d(?:ca;|ldhar;|quo(?:;|r;)|sh;)|e(?:al(?:;|ine;|part;|s;)|ct;|g;?)|f(?:isht;|loor;|r;)|h(?:ar(?:d;|u(?:;|l;))|o(?:;|v;))|i(?:ght(?:arrow(?:;|tail;)|harpoon(?:down;|up;)|left(?:arrows;|harpoons;)|rightarrows;|squigarrow;|threetimes;)|ng;|singdotseq;)|l(?:arr;|har;|m;)|moust(?:;|ache;)|nmid;|o(?:a(?:ng;|rr;)|brk;|p(?:ar;|f;|lus;)|times;)|p(?:ar(?:;|gt;)|polint;)|rarr;|s(?:aquo;|cr;|h;|q(?:b;|uo(?:;|r;)))|t(?:hree;|imes;|ri(?:;|e;|f;|ltri;))|uluhar;|x;)|s(?:acute;|bquo;|c(?:;|E;|a(?:p;|ron;)|cue;|e(?:;|dil;)|irc;|n(?:E;|ap;|sim;)|polint;|sim;|y;)|dot(?:;|b;|e;)|e(?:Arr;|ar(?:hk;|r(?:;|ow;))|ct;?|mi;|swar;|tm(?:inus;|n;)|xt;)|fr(?:;|own;)|h(?:arp;|c(?:hcy;|y;)|ort(?:mid;|parallel;)|y;?)|i(?:gma(?:;|f;|v;)|m(?:;|dot;|e(?:;|q;)|g(?:;|E;)|l(?:;|E;)|ne;|plus;|rarr;))|larr;|m(?:a(?:llsetminus;|shp;)|eparsl;|i(?:d;|le;)|t(?:;|e(?:;|s;)))|o(?:ftcy;|l(?:;|b(?:;|ar;))|pf;)|pa(?:des(?:;|uit;)|r;)|q(?:c(?:ap(?:;|s;)|up(?:;|s;))|su(?:b(?:;|e;|set(?:;|eq;))|p(?:;|e;|set(?:;|eq;)))|u(?:;|ar(?:e;|f;)|f;))|rarr;|s(?:cr;|etmn;|mile;|tarf;)|t(?:ar(?:;|f;)|r(?:aight(?:epsilon;|phi;)|ns;))|u(?:b(?:;|E;|dot;|e(?:;|dot;)|mult;|n(?:E;|e;)|plus;|rarr;|s(?:et(?:;|eq(?:;|q;)|neq(?:;|q;))|im;|u(?:b;|p;)))|cc(?:;|approx;|curlyeq;|eq;|n(?:approx;|eqq;|sim;)|sim;)|m;|ng;|p(?:1;?|2;?|3;?|;|E;|d(?:ot;|sub;)|e(?:;|dot;)|hs(?:ol;|ub;)|larr;|mult;|n(?:E;|e;)|plus;|s(?:et(?:;|eq(?:;|q;)|neq(?:;|q;))|im;|u(?:b;|p;))))|w(?:Arr;|ar(?:hk;|r(?:;|ow;))|nwar;)|zlig;?)|t(?:a(?:rget;|u;)|brk;|c(?:aron;|edil;|y;)|dot;|elrec;|fr;|h(?:e(?:re(?:4;|fore;)|ta(?:;|sym;|v;))|i(?:ck(?:approx;|sim;)|nsp;)|k(?:ap;|sim;)|orn;?)|i(?:lde;|mes(?:;|b(?:;|ar;)|d;|)|nt;)|o(?:ea;|p(?:;|bot;|cir;|f(?:;|ork;))|sa;)|prime;|r(?:ade;|i(?:angle(?:;|down;|left(?:;|eq;)|q;|right(?:;|eq;))|dot;|e;|minus;|plus;|sb;|time;)|pezium;)|s(?:c(?:r;|y;)|hcy;|trok;)|w(?:ixt;|ohead(?:leftarrow;|rightarrow;)))|u(?:Arr;|Har;|a(?:cute;?|rr;)|br(?:cy;|eve;)|c(?:irc;?|y;)|d(?:arr;|blac;|har;)|f(?:isht;|r;)|grave;?|h(?:ar(?:l;|r;)|blk;)|l(?:c(?:orn(?:;|er;)|rop;)|tri;)|m(?:acr;|l;?)|o(?:gon;|pf;)|p(?:arrow;|downarrow;|harpoon(?:left;|right;)|lus;|si(?:;|h;|lon;)|uparrows;)|r(?:c(?:orn(?:;|er;)|rop;)|ing;|tri;)|scr;|t(?:dot;|ilde;|ri(?:;|f;))|u(?:arr;|ml;?)|wangle;)|v(?:Arr;|Bar(?:;|v;)|Dash;|a(?:ngrt;|r(?:epsilon;|kappa;|nothing;|p(?:hi;|i;|ropto;)|r(?:;|ho;)|s(?:igma;|u(?:bsetneq(?:;|q;)|psetneq(?:;|q;)))|t(?:heta;|riangle(?:left;|right;))))|cy;|dash;|e(?:e(?:;|bar;|eq;)|llip;|r(?:bar;|t;))|fr;|ltri;|nsu(?:b;|p;)|opf;|prop;|rtri;|s(?:cr;|u(?:bn(?:E;|e;)|pn(?:E;|e;)))|zigzag;)|w(?:circ;|e(?:d(?:bar;|ge(?:;|q;))|ierp;)|fr;|opf;|p;|r(?:;|eath;)|scr;)|x(?:c(?:ap;|irc;|up;)|dtri;|fr;|h(?:Arr;|arr;)|i;|l(?:Arr;|arr;)|map;|nis;|o(?:dot;|p(?:f;|lus;)|time;)|r(?:Arr;|arr;)|s(?:cr;|qcup;)|u(?:plus;|tri;)|vee;|wedge;)|y(?:ac(?:ute;?|y;)|c(?:irc;|y;)|en;?|fr;|icy;|opf;|scr;|u(?:cy;|ml;?))|z(?:acute;|c(?:aron;|y;)|dot;|e(?:etrf;|ta;)|fr;|hcy;|igrarr;|opf;|scr;|w(?:j;|nj;)))|[\\s\\S]/g;\n\nvar NAMEDCHARREF_MAXLEN = 32;\n\n// Regular expression constants used by the tokenizer and parser\n\n// Note that \\r is included in all of these regexps because it will need\n// to be converted to LF by the scanChars() function.\nvar DBLQUOTEATTRVAL = /[^\\r\"&\\u0000]+/g;\nvar SINGLEQUOTEATTRVAL = /[^\\r'&\\u0000]+/g;\nvar UNQUOTEDATTRVAL = /[^\\r\\t\\n\\f &>\\u0000]+/g;\nvar TAGNAME = /[^\\r\\t\\n\\f \\/>A-Z\\u0000]+/g;\nvar ATTRNAME = /[^\\r\\t\\n\\f \\/=>A-Z\\u0000]+/g;\n\nvar CDATATEXT = /[^\\]\\r\\u0000\\uffff]*/g;\nvar DATATEXT = /[^&<\\r\\u0000\\uffff]*/g;\nvar RAWTEXT = /[^<\\r\\u0000\\uffff]*/g;\nvar PLAINTEXT = /[^\\r\\u0000\\uffff]*/g;\n// Since we don't have the 'sticky tag', add '|.' to the end of SIMPLETAG\n// and SIMPLEATTR so that we are guaranteed to always match.  This prevents\n// us from scanning past the lastIndex set. (Note that the desired matches\n// are always greater than 1 char long, so longest-match will ensure that .\n// is not matched unless the desired match fails.)\nvar SIMPLETAG = /(?:(\\/)?([a-z]+)>)|[\\s\\S]/g;\nvar SIMPLEATTR = /(?:([-a-z]+)[ \\t\\n\\f]*=[ \\t\\n\\f]*('[^'&\\r\\u0000]*'|\"[^\"&\\r\\u0000]*\"|[^\\t\\n\\r\\f \"&'\\u0000>][^&> \\t\\n\\r\\f\\u0000]*[ \\t\\n\\f]))|[\\s\\S]/g;\n\nvar NONWS = /[^\\x09\\x0A\\x0C\\x0D\\x20]/;\nvar ALLNONWS = /[^\\x09\\x0A\\x0C\\x0D\\x20]/g; // like above, with g flag\nvar NONWSNONNUL = /[^\\x00\\x09\\x0A\\x0C\\x0D\\x20]/; // don't allow NUL either\nvar LEADINGWS = /^[\\x09\\x0A\\x0C\\x0D\\x20]+/;\nvar NULCHARS = /\\x00/g;\n\n/***\n * These are utility functions that don't use any of the parser's\n * internal state.\n */\nfunction buf2str(buf) {\n  var CHUNKSIZE=16384;\n  if (buf.length < CHUNKSIZE) {\n    return String.fromCharCode.apply(String, buf);\n  }\n  // special case for large strings, to avoid busting the stack.\n  var result = '';\n  for (var i = 0; i < buf.length; i += CHUNKSIZE) {\n    result += String.fromCharCode.apply(String, buf.slice(i, i+CHUNKSIZE));\n  }\n  return result;\n}\n\nfunction str2buf(s) {\n  var result = [];\n  for (var i=0; i<s.length; i++) {\n    result[i] = s.charCodeAt(i);\n  }\n  return result;\n}\n\n// Determine whether the element is a member of the set.\n// The set is an object that maps namespaces to objects. The objects\n// then map local tagnames to the value true if that tag is part of the set\nfunction isA(elt, set) {\n  if (typeof set === 'string') {\n    // convenience case for testing a particular HTML element\n    return elt.namespaceURI === NAMESPACE.HTML &&\n      elt.localName === set;\n  }\n  var tagnames = set[elt.namespaceURI];\n  return tagnames && tagnames[elt.localName];\n}\n\nfunction isMathmlTextIntegrationPoint(n) {\n  return isA(n, mathmlTextIntegrationPointSet);\n}\n\nfunction isHTMLIntegrationPoint(n) {\n  if (isA(n, htmlIntegrationPointSet)) return true;\n  if (n.namespaceURI === NAMESPACE.MATHML &&\n    n.localName === \"annotation-xml\") {\n    var encoding = n.getAttribute(\"encoding\");\n    if (encoding) encoding = encoding.toLowerCase();\n    if (encoding === \"text/html\" ||\n      encoding === \"application/xhtml+xml\")\n      return true;\n  }\n  return false;\n}\n\nfunction adjustSVGTagName(name) {\n  if (name in svgTagNameAdjustments)\n    return svgTagNameAdjustments[name];\n  else\n    return name;\n}\n\nfunction adjustSVGAttributes(attrs) {\n  for(var i = 0, n = attrs.length; i < n; i++) {\n    if (attrs[i][0] in svgAttrAdjustments) {\n      attrs[i][0] = svgAttrAdjustments[attrs[i][0]];\n    }\n  }\n}\n\nfunction adjustMathMLAttributes(attrs) {\n  for(var i = 0, n = attrs.length; i < n; i++) {\n    if (attrs[i][0] === \"definitionurl\") {\n      attrs[i][0] = \"definitionURL\";\n      break;\n    }\n  }\n}\n\nfunction adjustForeignAttributes(attrs) {\n  for(var i = 0, n = attrs.length; i < n; i++) {\n    if (attrs[i][0] in foreignAttributes) {\n      // Attributes with namespaces get a 3rd element:\n      // [Qname, value, namespace]\n      attrs[i].push(foreignAttributes[attrs[i][0]]);\n    }\n  }\n}\n\n// For each attribute in attrs, if elt doesn't have an attribute\n// by that name, add the attribute to elt\n// XXX: I'm ignoring namespaces for now\nfunction transferAttributes(attrs, elt) {\n  for(var i = 0, n = attrs.length; i < n; i++) {\n    var name = attrs[i][0], value = attrs[i][1];\n    if (elt.hasAttribute(name)) continue;\n    elt._setAttribute(name, value);\n  }\n}\n\n/***\n * The ElementStack class\n */\nHTMLParser.ElementStack = function ElementStack() {\n  this.elements = [];\n  this.top = null; // stack.top is the \"current node\" in the spec\n};\n\n/*\n// This is for debugging only\nHTMLParser.ElementStack.prototype.toString = function(e) {\n  return \"STACK: \" +\n  this.elements.map(function(e) {return e.localName;}).join(\"-\");\n}\n*/\n\nHTMLParser.ElementStack.prototype.push = function(e) {\n  this.elements.push(e);\n  this.top = e;\n};\n\nHTMLParser.ElementStack.prototype.pop = function(e) {\n  this.elements.pop();\n  this.top = this.elements[this.elements.length-1];\n};\n\n// Pop elements off the stack up to and including the first\n// element with the specified (HTML) tagname\nHTMLParser.ElementStack.prototype.popTag = function(tag) {\n  for(var i = this.elements.length-1; i > 0; i--) {\n    var e = this.elements[i];\n    if (isA(e, tag)) break;\n  }\n  this.elements.length = i;\n  this.top = this.elements[i-1];\n};\n\n// Pop elements off the stack up to and including the first\n// element that is an instance of the specified type\nHTMLParser.ElementStack.prototype.popElementType = function(type) {\n  for(var i = this.elements.length-1; i > 0; i--) {\n    if (this.elements[i] instanceof type) break;\n  }\n  this.elements.length = i;\n  this.top = this.elements[i-1];\n};\n\n// Pop elements off the stack up to and including the element e.\n// Note that this is very different from removeElement()\n// This requires that e is on the stack.\nHTMLParser.ElementStack.prototype.popElement = function(e) {\n  for(var i = this.elements.length-1; i > 0; i--) {\n    if (this.elements[i] === e) break;\n  }\n  this.elements.length = i;\n  this.top = this.elements[i-1];\n};\n\n// Remove a specific element from the stack.\n// Do nothing if the element is not on the stack\nHTMLParser.ElementStack.prototype.removeElement = function(e) {\n  if (this.top === e) this.pop();\n  else {\n    var idx = this.elements.lastIndexOf(e);\n    if (idx !== -1)\n      this.elements.splice(idx, 1);\n  }\n};\n\nHTMLParser.ElementStack.prototype.clearToContext = function(set) {\n  // Note that we don't loop to 0. Never pop the <html> elt off.\n  for(var i = this.elements.length-1; i > 0; i--) {\n    if (isA(this.elements[i], set)) break;\n  }\n  this.elements.length = i+1;\n  this.top = this.elements[i];\n};\n\nHTMLParser.ElementStack.prototype.contains = function(tag) {\n  return this.inSpecificScope(tag, Object.create(null));\n};\n\nHTMLParser.ElementStack.prototype.inSpecificScope = function(tag, set) {\n  for(var i = this.elements.length-1; i >= 0; i--) {\n    var elt = this.elements[i];\n    if (isA(elt, tag)) return true;\n    if (isA(elt, set)) return false;\n  }\n  return false;\n};\n\n// Like the above, but for a specific element, not a tagname\nHTMLParser.ElementStack.prototype.elementInSpecificScope = function(target, set) {\n  for(var i = this.elements.length-1; i >= 0; i--) {\n    var elt = this.elements[i];\n    if (elt === target) return true;\n    if (isA(elt, set)) return false;\n  }\n  return false;\n};\n\n// Like the above, but for an element interface, not a tagname\nHTMLParser.ElementStack.prototype.elementTypeInSpecificScope = function(target, set) {\n  for(var i = this.elements.length-1; i >= 0; i--) {\n    var elt = this.elements[i];\n    if (elt instanceof target) return true;\n    if (isA(elt, set)) return false;\n  }\n  return false;\n};\n\nHTMLParser.ElementStack.prototype.inScope = function(tag) {\n  return this.inSpecificScope(tag, inScopeSet);\n};\n\nHTMLParser.ElementStack.prototype.elementInScope = function(e) {\n  return this.elementInSpecificScope(e, inScopeSet);\n};\n\nHTMLParser.ElementStack.prototype.elementTypeInScope = function(type) {\n  return this.elementTypeInSpecificScope(type, inScopeSet);\n};\n\nHTMLParser.ElementStack.prototype.inButtonScope = function(tag) {\n  return this.inSpecificScope(tag, inButtonScopeSet);\n};\n\nHTMLParser.ElementStack.prototype.inListItemScope = function(tag) {\n  return this.inSpecificScope(tag, inListItemScopeSet);\n};\n\nHTMLParser.ElementStack.prototype.inTableScope = function(tag) {\n  return this.inSpecificScope(tag, inTableScopeSet);\n};\n\nHTMLParser.ElementStack.prototype.inSelectScope = function(tag) {\n  // Can't implement this one with inSpecificScope, since it involves\n  // a set defined by inverting another set. So implement manually.\n  for(var i = this.elements.length-1; i >= 0; i--) {\n    var elt = this.elements[i];\n    if (elt.namespaceURI !== NAMESPACE.HTML) return false;\n    var localname = elt.localName;\n    if (localname === tag) return true;\n    if (localname !== \"optgroup\" && localname !== \"option\")\n      return false;\n  }\n  return false;\n};\n\nHTMLParser.ElementStack.prototype.generateImpliedEndTags = function(butnot, thorough) {\n  var endTagSet = thorough ? thoroughImpliedEndTagsSet : impliedEndTagsSet;\n  for(var i = this.elements.length-1; i >= 0; i--) {\n    var e = this.elements[i];\n    if (butnot && isA(e, butnot)) break;\n    if (!isA(this.elements[i], endTagSet)) break;\n  }\n\n  this.elements.length = i+1;\n  this.top = this.elements[i];\n};\n\n/***\n * The ActiveFormattingElements class\n */\nHTMLParser.ActiveFormattingElements = function AFE() {\n  this.list = []; // elements\n  this.attrs = []; // attribute tokens for cloning\n};\n\nHTMLParser.ActiveFormattingElements.prototype.MARKER = { localName: \"|\" };\n\n/*\n// For debugging\nHTMLParser.ActiveFormattingElements.prototype.toString = function() {\n  return \"AFE: \" +\n  this.list.map(function(e) { return e.localName; }).join(\"-\");\n}\n*/\n\nHTMLParser.ActiveFormattingElements.prototype.insertMarker = function() {\n  this.list.push(this.MARKER);\n  this.attrs.push(this.MARKER);\n};\n\nHTMLParser.ActiveFormattingElements.prototype.push = function(elt, attrs) {\n  // Scan backwards: if there are already 3 copies of this element\n  // before we encounter a marker, then drop the last one\n  var count = 0;\n  for(var i = this.list.length-1; i >= 0; i--) {\n    if (this.list[i] === this.MARKER) break;\n    // equal() is defined below\n    if (equal(elt, this.list[i], this.attrs[i])) {\n      count++;\n      if (count === 3) {\n        this.list.splice(i, 1);\n        this.attrs.splice(i, 1);\n        break;\n      }\n    }\n  }\n\n\n  // Now push the element onto the list\n  this.list.push(elt);\n\n  // Copy the attributes and push those on, too\n  var attrcopy = [];\n  for(var ii = 0; ii < attrs.length; ii++) {\n    attrcopy[ii] = attrs[ii];\n  }\n\n  this.attrs.push(attrcopy);\n\n  // This function defines equality of two elements for the purposes\n  // of the AFE list.  Note that it compares the new elements\n  // attributes to the saved array of attributes associated with\n  // the old element because a script could have changed the\n  // old element's set of attributes\n  function equal(newelt, oldelt, oldattrs) {\n    if (newelt.localName !== oldelt.localName) return false;\n    if (newelt._numattrs !== oldattrs.length) return false;\n    for(var i = 0, n = oldattrs.length; i < n; i++) {\n      var oldname = oldattrs[i][0];\n      var oldval = oldattrs[i][1];\n      if (!newelt.hasAttribute(oldname)) return false;\n      if (newelt.getAttribute(oldname) !== oldval) return false;\n    }\n    return true;\n  }\n};\n\nHTMLParser.ActiveFormattingElements.prototype.clearToMarker = function() {\n  for(var i = this.list.length-1; i >= 0; i--) {\n    if (this.list[i] === this.MARKER) break;\n  }\n  if (i < 0) i = 0;\n  this.list.length = i;\n  this.attrs.length = i;\n};\n\n// Find and return the last element with the specified tag between the\n// end of the list and the last marker on the list.\n// Used when parsing <a> in_body_mode()\nHTMLParser.ActiveFormattingElements.prototype.findElementByTag = function(tag) {\n  for(var i = this.list.length-1; i >= 0; i--) {\n    var elt = this.list[i];\n    if (elt === this.MARKER) break;\n    if (elt.localName === tag) return elt;\n  }\n  return null;\n};\n\nHTMLParser.ActiveFormattingElements.prototype.indexOf = function(e) {\n  return this.list.lastIndexOf(e);\n};\n\n// Find the element e in the list and remove it\n// Used when parsing <a> in_body()\nHTMLParser.ActiveFormattingElements.prototype.remove = function(e) {\n  var idx = this.list.lastIndexOf(e);\n  if (idx !== -1) {\n    this.list.splice(idx, 1);\n    this.attrs.splice(idx, 1);\n  }\n};\n\n// Find element a in the list and replace it with element b\n// XXX: Do I need to handle attributes here?\nHTMLParser.ActiveFormattingElements.prototype.replace = function(a, b, attrs) {\n  var idx = this.list.lastIndexOf(a);\n  if (idx !== -1) {\n    this.list[idx] = b;\n    this.attrs[idx] = attrs;\n  }\n};\n\n// Find a in the list and insert b after it\n// This is only used for insert a bookmark object, so the\n// attrs array doesn't really matter\nHTMLParser.ActiveFormattingElements.prototype.insertAfter = function(a,b) {\n  var idx = this.list.lastIndexOf(a);\n  if (idx !== -1) {\n    this.list.splice(idx, 0, b);\n    this.attrs.splice(idx, 0, b);\n  }\n};\n\n\n\n\n/***\n * This is the parser factory function. It is the return value of\n * the outer closure that it is defined within.  Most of the parser\n * implementation details are inside this function.\n */\nfunction HTMLParser(address, fragmentContext, options) {\n  /***\n   * These are the parser's state variables\n   */\n  // Scanner state\n  var chars = null;\n  var numchars = 0; // Length of chars\n  var nextchar = 0; // Index of next char\n  var input_complete = false; // Becomes true when end() called.\n  var scanner_skip_newline = false; // If previous char was CR\n  var reentrant_invocations = 0;\n  var saved_scanner_state = [];\n  var leftovers = \"\";\n  var first_batch = true;\n  var paused = 0; // Becomes non-zero while loading scripts\n\n\n  // Tokenizer state\n  var tokenizer = data_state; // Current tokenizer state\n  var return_state;\n  var character_reference_code;\n  var tagnamebuf = \"\";\n  var lasttagname = \"\"; // holds the target end tag for text states\n  var tempbuf = [];\n  var attrnamebuf = \"\";\n  var attrvaluebuf = \"\";\n  var commentbuf = [];\n  var doctypenamebuf = [];\n  var doctypepublicbuf = [];\n  var doctypesystembuf = [];\n  var attributes = [];\n  var is_end_tag = false;\n\n  // Tree builder state\n  var parser = initial_mode; // Current insertion mode\n  var originalInsertionMode = null; // A saved insertion mode\n  var templateInsertionModes = []; // Stack of template insertion modes.\n  var stack = new HTMLParser.ElementStack(); // Stack of open elements\n  var afe = new HTMLParser.ActiveFormattingElements(); // mis-nested tags\n  var fragment = (fragmentContext!==undefined); // For innerHTML, etc.\n  var head_element_pointer = null;\n  var form_element_pointer = null;\n  var scripting_enabled = true;\n  if (fragmentContext) {\n\tscripting_enabled = fragmentContext.ownerDocument._scripting_enabled;\n  }\n  if (options && options.scripting_enabled === false)\n    scripting_enabled = false;\n  var frameset_ok = true;\n  var force_quirks = false;\n  var pending_table_text;\n  var text_integration_mode; // XXX a spec bug workaround?\n\n  // A single run of characters, buffered up to be sent to\n  // the parser as a single string.\n  var textrun = [];\n  var textIncludesNUL = false;\n  var ignore_linefeed = false;\n\n  /***\n   * This is the parser object that will be the return value of this\n   * factory function, which is some 5000 lines below.\n   * Note that the variable \"parser\" is the current state of the\n   * parser's state machine.  This variable \"htmlparser\" is the\n   * return value and defines the public API of the parser\n   */\n  var htmlparser = {\n    document: function() {\n      return doc;\n    },\n\n    // Convenience function for internal use. Can only be called once,\n    // as it removes the nodes from `doc` to add them to fragment.\n    _asDocumentFragment: function() {\n      var frag = doc.createDocumentFragment();\n      var root = doc.firstChild;\n      while(root.hasChildNodes()) {\n        frag.appendChild(root.firstChild);\n      }\n      return frag;\n    },\n\n    // Internal function used from HTMLScriptElement to pause the\n    // parser while a script is being loaded from the network\n    pause: function() {\n      // print(\"pausing parser\");\n      paused++;\n    },\n\n    // Called when a script finishes loading\n    resume: function() {\n      // print(\"resuming parser\");\n      paused--;\n      // XXX: added this to force a resumption.\n      // Is this the right thing to do?\n      this.parse(\"\");\n    },\n\n    // Parse the HTML text s.\n    // The second argument should be true if there is no more\n    // text to be parsed, and should be false or omitted otherwise.\n    // The second argument must not be set for recursive invocations\n    // from document.write()\n    parse: function(s, end, shouldPauseFunc) {\n      var moreToDo;\n\n      // If we're paused, remember the text to parse, but\n      // don't parse it now.\n      // (Don't invoke shouldPauseFunc because we haven't handled 'end' yet.)\n      if (paused > 0) {\n        leftovers += s;\n        return true; // more to do\n      }\n\n\n      if (reentrant_invocations === 0) {\n        // A normal, top-level invocation\n        if (leftovers) {\n          s = leftovers + s;\n          leftovers = \"\";\n        }\n\n        // Add a special marker character to the end of\n        // the buffer.  If the scanner is at the end of\n        // the buffer and input_complete is set, then this\n        // character will transform into an EOF token.\n        // Having an actual character that represents EOF\n        // in the character buffer makes lookahead regexp\n        // matching work more easily, and this is\n        // important for character references.\n        if (end) {\n          s += \"\\uFFFF\";\n          input_complete = true; // Makes scanChars() send EOF\n        }\n\n        chars = s;\n        numchars = s.length;\n        nextchar = 0;\n\n        if (first_batch) {\n          // We skip a leading Byte Order Mark (\\uFEFF)\n          // on first batch of text we're given\n          first_batch = false;\n          if (chars.charCodeAt(0) === 0xFEFF) nextchar = 1;\n        }\n\n        reentrant_invocations++;\n        moreToDo = scanChars(shouldPauseFunc);\n        leftovers = chars.substring(nextchar, numchars);\n        reentrant_invocations--;\n      }\n      else {\n        // This is the re-entrant case, which we have to\n        // handle a little differently.\n        reentrant_invocations++;\n\n        // Save current scanner state\n        saved_scanner_state.push(chars, numchars, nextchar);\n\n        // Set new scanner state\n        chars = s;\n        numchars = s.length;\n        nextchar = 0;\n\n        // Now scan as many of these new chars as we can\n        scanChars();\n        moreToDo = false;\n\n        leftovers = chars.substring(nextchar, numchars);\n\n        // restore old scanner state\n        nextchar = saved_scanner_state.pop();\n        numchars = saved_scanner_state.pop();\n        chars = saved_scanner_state.pop();\n\n        // If there were leftover chars from this invocation\n        // insert them into the pending invocation's buffer\n        // and trim already processed chars at the same time\n        if (leftovers) {\n          chars = leftovers + chars.substring(nextchar);\n          numchars = chars.length;\n          nextchar = 0;\n          leftovers = \"\";\n        }\n\n        // Decrement the counter\n        reentrant_invocations--;\n      }\n      return moreToDo;\n    }\n  };\n\n\n  // This is the document we'll be building up\n  var doc = new Document(true, address);\n\n  // The document needs to know about the parser, for document.write().\n  // This _parser property will be deleted when we're done parsing.\n  doc._parser = htmlparser;\n\n  // XXX I think that any document we use this parser on should support\n  // scripts. But I may need to configure that through a parser parameter\n  // Only documents with windows (\"browsing contexts\" to be precise)\n  // allow scripting.\n  doc._scripting_enabled = scripting_enabled;\n\n\n  /***\n   * The actual code of the HTMLParser() factory function begins here.\n   */\n\n  if (fragmentContext) { // for innerHTML parsing\n    if (fragmentContext.ownerDocument._quirks)\n      doc._quirks = true;\n    if (fragmentContext.ownerDocument._limitedQuirks)\n      doc._limitedQuirks = true;\n\n    // Set the initial tokenizer state\n    if (fragmentContext.namespaceURI === NAMESPACE.HTML) {\n      switch(fragmentContext.localName) {\n      case \"title\":\n      case \"textarea\":\n        tokenizer = rcdata_state;\n        break;\n      case \"style\":\n      case \"xmp\":\n      case \"iframe\":\n      case \"noembed\":\n      case \"noframes\":\n      case \"script\":\n      case \"plaintext\":\n        tokenizer = plaintext_state;\n        break;\n      }\n    }\n\n    var root = doc.createElement(\"html\");\n    doc._appendChild(root);\n    stack.push(root);\n    if (fragmentContext instanceof impl.HTMLTemplateElement) {\n      templateInsertionModes.push(in_template_mode);\n    }\n    resetInsertionMode();\n\n    for(var e = fragmentContext; e !== null; e = e.parentElement) {\n      if (e instanceof impl.HTMLFormElement) {\n        form_element_pointer = e;\n        break;\n      }\n    }\n  }\n\n  /***\n   * Scanner functions\n   */\n  // Loop through the characters in chars, and pass them one at a time\n  // to the tokenizer FSM. Return when no more characters can be processed\n  // (This may leave 1 or more characters in the buffer: like a CR\n  // waiting to see if the next char is LF, or for states that require\n  // lookahead...)\n  function scanChars(shouldPauseFunc) {\n    var codepoint, s, pattern, eof;\n\n    while(nextchar < numchars) {\n\n      // If we just tokenized a </script> tag, then the paused flag\n      // may have been set to tell us to stop tokenizing while\n      // the script is loading\n      if (paused > 0 || (shouldPauseFunc && shouldPauseFunc())) {\n        return true;\n      }\n\n\n      switch(typeof tokenizer.lookahead) {\n      case 'undefined':\n        codepoint = chars.charCodeAt(nextchar++);\n        if (scanner_skip_newline) {\n          scanner_skip_newline = false;\n          if (codepoint === 0x000A) {\n            nextchar++;\n            continue;\n          }\n        }\n        switch(codepoint) {\n        case 0x000D:\n          // CR always turns into LF, but if the next character\n          // is LF, then that second LF is skipped.\n          if (nextchar < numchars) {\n            if (chars.charCodeAt(nextchar) === 0x000A)\n              nextchar++;\n          }\n          else {\n            // We don't know the next char right now, so we\n            // can't check if it is a LF.  So set a flag\n            scanner_skip_newline = true;\n          }\n\n          // In either case, emit a LF\n          tokenizer(0x000A);\n\n          break;\n        case 0xFFFF:\n          if (input_complete && nextchar === numchars) {\n            tokenizer(EOF); // codepoint will be 0xFFFF here\n            break;\n          }\n          /* falls through */\n        default:\n          tokenizer(codepoint);\n          break;\n        }\n        break;\n\n      case 'number':\n        codepoint = chars.charCodeAt(nextchar);\n\n        // The only tokenizer states that require fixed lookahead\n        // only consume alphanum characters, so we don't have\n        // to worry about CR and LF in this case\n\n        // tokenizer wants n chars of lookahead\n        var n = tokenizer.lookahead;\n        var needsString = true;\n        if (n < 0) {\n          needsString = false;\n          n = -n;\n        }\n\n        if (n < numchars - nextchar) {\n          // If we can look ahead that far\n          s = needsString ? chars.substring(nextchar, nextchar+n) : null;\n          eof = false;\n        }\n        else { // if we don't have that many characters\n          if (input_complete) { // If no more are coming\n            // Just return what we have\n            s = needsString ? chars.substring(nextchar, numchars) : null;\n            eof = true;\n            if (codepoint === 0xFFFF && nextchar === numchars-1)\n              codepoint = EOF;\n          }\n          else {\n            // Return now and wait for more chars later\n            return true;\n          }\n        }\n        tokenizer(codepoint, s, eof);\n        break;\n      case 'string':\n        codepoint = chars.charCodeAt(nextchar);\n\n        // tokenizer wants characters up to a matching string\n        pattern = tokenizer.lookahead;\n        var pos = chars.indexOf(pattern, nextchar);\n        if (pos !== -1) {\n          s = chars.substring(nextchar, pos + pattern.length);\n          eof = false;\n        }\n        else {  // No match\n          // If more characters coming, wait for them\n          if (!input_complete) return true;\n\n          // Otherwise, we've got to return what we've got\n          s = chars.substring(nextchar, numchars);\n          if (codepoint === 0xFFFF && nextchar === numchars-1)\n            codepoint = EOF;\n          eof = true;\n        }\n\n        // The tokenizer states that require this kind of\n        // lookahead have to be careful to handle CR characters\n        // correctly\n        tokenizer(codepoint, s, eof);\n        break;\n      }\n    }\n    return false; // no more characters to scan!\n  }\n\n\n  /***\n   * Tokenizer utility functions\n   */\n  function addAttribute(name,value) {\n    // Make sure there isn't already an attribute with this name\n    // If there is, ignore this one.\n    for(var i = 0; i < attributes.length; i++) {\n      if (attributes[i][0] === name) return;\n    }\n\n    if (value !== undefined) {\n      attributes.push([name, value]);\n    }\n    else {\n      attributes.push([name]);\n    }\n  }\n\n  // Shortcut for simple attributes\n  function handleSimpleAttribute() {\n    SIMPLEATTR.lastIndex = nextchar-1;\n    var matched = SIMPLEATTR.exec(chars);\n    if (!matched) throw new Error(\"should never happen\");\n    var name = matched[1];\n    if (!name) return false;\n    var value = matched[2];\n    var len = value.length;\n    switch(value[0]) {\n    case '\"':\n    case \"'\":\n      value = value.substring(1, len-1);\n      nextchar += (matched[0].length-1);\n      tokenizer = after_attribute_value_quoted_state;\n      break;\n    default:\n      tokenizer = before_attribute_name_state;\n      nextchar += (matched[0].length-1);\n      value = value.substring(0, len-1);\n      break;\n    }\n\n    // Make sure there isn't already an attribute with this name\n    // If there is, ignore this one.\n    for(var i = 0; i < attributes.length; i++) {\n      if (attributes[i][0] === name) return true;\n    }\n\n    attributes.push([name, value]);\n    return true;\n  }\n\n  function beginTagName() {\n    is_end_tag = false;\n    tagnamebuf = \"\";\n    attributes.length = 0;\n  }\n  function beginEndTagName() {\n    is_end_tag = true;\n    tagnamebuf = \"\";\n    attributes.length = 0;\n  }\n\n  function beginTempBuf() { tempbuf.length = 0; }\n  function beginAttrName() { attrnamebuf = \"\"; }\n  function beginAttrValue() { attrvaluebuf = \"\"; }\n  function beginComment() { commentbuf.length = 0; }\n  function beginDoctype() {\n    doctypenamebuf.length = 0;\n    doctypepublicbuf = null;\n    doctypesystembuf = null;\n  }\n  function beginDoctypePublicId() { doctypepublicbuf = []; }\n  function beginDoctypeSystemId() { doctypesystembuf = []; }\n  function forcequirks() { force_quirks = true; }\n  function cdataAllowed() {\n    return stack.top &&\n      stack.top.namespaceURI !== \"http://www.w3.org/1999/xhtml\";\n  }\n\n  // Return true if the codepoints in the specified buffer match the\n  // characters of lasttagname\n  function appropriateEndTag(buf) {\n    return lasttagname === buf;\n  }\n\n  function flushText() {\n    if (textrun.length > 0) {\n      var s = buf2str(textrun);\n      textrun.length = 0;\n\n      if (ignore_linefeed) {\n        ignore_linefeed = false;\n        if (s[0] === \"\\n\") s = s.substring(1);\n        if (s.length === 0) return;\n      }\n\n      insertToken(TEXT, s);\n      textIncludesNUL = false;\n    }\n    ignore_linefeed = false;\n  }\n\n  // Consume chars matched by the pattern and return them as a string. Starts\n  // matching at the current position, so users should drop the current char\n  // otherwise.\n  function getMatchingChars(pattern) {\n    pattern.lastIndex = nextchar - 1;\n    var match = pattern.exec(chars);\n    if (match && match.index === nextchar - 1) {\n      match = match[0];\n      nextchar += match.length - 1;\n      /* Careful!  Make sure we haven't matched the EOF character! */\n      if (input_complete && nextchar === numchars) {\n        // Oops, backup one.\n        match = match.slice(0, -1);\n        nextchar--;\n      }\n      return match;\n    } else {\n      throw new Error(\"should never happen\");\n    }\n  }\n\n  // emit a string of chars that match a regexp\n  // Returns false if no chars matched.\n  function emitCharsWhile(pattern) {\n    pattern.lastIndex = nextchar-1;\n    var match = pattern.exec(chars)[0];\n    if (!match) return false;\n    emitCharString(match);\n    nextchar += match.length - 1;\n    return true;\n  }\n\n  // This is used by CDATA sections\n  function emitCharString(s) {\n    if (textrun.length > 0) flushText();\n\n    if (ignore_linefeed) {\n      ignore_linefeed = false;\n      if (s[0] === \"\\n\") s = s.substring(1);\n      if (s.length === 0) return;\n    }\n\n    insertToken(TEXT, s);\n  }\n\n  function emitTag() {\n    if (is_end_tag) insertToken(ENDTAG, tagnamebuf);\n    else {\n      // Remember the last open tag we emitted\n      var tagname = tagnamebuf;\n      tagnamebuf = \"\";\n      lasttagname = tagname;\n      insertToken(TAG, tagname, attributes);\n    }\n  }\n\n\n  // A shortcut: look ahead and if this is a open or close tag\n  // in lowercase with no spaces and no attributes, just emit it now.\n  function emitSimpleTag() {\n    if (nextchar === numchars) { return false; /* not even 1 char left */ }\n    SIMPLETAG.lastIndex = nextchar;\n    var matched = SIMPLETAG.exec(chars);\n    if (!matched) throw new Error(\"should never happen\");\n    var tagname = matched[2];\n    if (!tagname) return false;\n    var endtag = matched[1];\n    if (endtag) {\n      nextchar += (tagname.length+2);\n      insertToken(ENDTAG, tagname);\n    }\n    else {\n      nextchar += (tagname.length+1);\n      lasttagname = tagname;\n      insertToken(TAG, tagname, NOATTRS);\n    }\n    return true;\n  }\n\n  function emitSelfClosingTag() {\n    if (is_end_tag) insertToken(ENDTAG, tagnamebuf, null, true);\n    else {\n      insertToken(TAG, tagnamebuf, attributes, true);\n    }\n  }\n\n  function emitDoctype() {\n    insertToken(DOCTYPE,\n          buf2str(doctypenamebuf),\n          doctypepublicbuf ? buf2str(doctypepublicbuf) : undefined,\n          doctypesystembuf ? buf2str(doctypesystembuf) : undefined);\n  }\n\n  function emitEOF() {\n    flushText();\n    parser(EOF); // EOF never goes to insertForeignContent()\n    doc.modclock = 1; // Start tracking modifications\n  }\n\n  // Insert a token, either using the current parser insertion mode\n  // (for HTML stuff) or using the insertForeignToken() method.\n  var insertToken = htmlparser.insertToken = function insertToken(t, value, arg3, arg4) {\n    flushText();\n    var current = stack.top;\n\n    if (!current || current.namespaceURI === NAMESPACE.HTML) {\n      // This is the common case\n      parser(t, value, arg3, arg4);\n    }\n    else {\n      // Otherwise we may need to insert this token as foreign content\n      if (t !== TAG && t !== TEXT) {\n        insertForeignToken(t, value, arg3, arg4);\n      }\n      else {\n        // But in some cases we treat it as regular content\n        if ((isMathmlTextIntegrationPoint(current) &&\n           (t === TEXT ||\n            (t === TAG &&\n             value !== \"mglyph\" && value !== \"malignmark\"))) ||\n          (t === TAG &&\n           value === \"svg\" &&\n           current.namespaceURI === NAMESPACE.MATHML &&\n           current.localName === \"annotation-xml\") ||\n          isHTMLIntegrationPoint(current)) {\n\n          // XXX: the text_integration_mode stuff is an\n          // attempted bug workaround of mine\n          text_integration_mode = true;\n          parser(t, value, arg3, arg4);\n          text_integration_mode = false;\n        }\n        // Otherwise it is foreign content\n        else {\n          insertForeignToken(t, value, arg3, arg4);\n        }\n      }\n    }\n  };\n\n\n  /***\n   * Tree building utility functions\n   */\n  function insertComment(data) {\n    var parent = stack.top;\n    if (foster_parent_mode && isA(parent, tablesectionrowSet)) {\n      fosterParent(function(doc) { return doc.createComment(data); });\n    } else {\n      // \"If the adjusted insertion location is inside a template element,\n      // let it instead be inside the template element's template contents\"\n      if (parent instanceof impl.HTMLTemplateElement) {\n        parent = parent.content;\n      }\n      parent._appendChild(parent.ownerDocument.createComment(data));\n    }\n  }\n\n  function insertText(s) {\n    var parent = stack.top;\n    if (foster_parent_mode && isA(parent, tablesectionrowSet)) {\n      fosterParent(function(doc) { return doc.createTextNode(s); });\n    } else {\n      // \"If the adjusted insertion location is inside a template element,\n      // let it instead be inside the template element's template contents\"\n      if (parent instanceof impl.HTMLTemplateElement) {\n        parent = parent.content;\n      }\n      // \"If there is a Text node immediately before the adjusted insertion\n      // location, then append data to that Text node's data.\"\n      var lastChild = parent.lastChild;\n      if (lastChild && lastChild.nodeType === Node.TEXT_NODE) {\n        lastChild.appendData(s);\n      } else {\n        parent._appendChild(parent.ownerDocument.createTextNode(s));\n      }\n    }\n  }\n\n  function createHTMLElt(doc, name, attrs) {\n    // Create the element this way, rather than with\n    // doc.createElement because createElement() does error\n    // checking on the element name that we need to avoid here.\n    var elt = html.createElement(doc, name, null);\n\n    if (attrs) {\n      for(var i = 0, n = attrs.length; i < n; i++) {\n        // Use the _ version to avoid testing the validity\n        // of the attribute name\n        elt._setAttribute(attrs[i][0], attrs[i][1]);\n      }\n    }\n    // XXX\n    // If the element is a resettable form element,\n    // run its reset algorithm now\n    // XXX\n    // handle case where form-element-pointer is not null\n    return elt;\n  }\n\n  // The in_table insertion mode turns on this flag, and that makes\n  // insertHTMLElement use the foster parenting algorithm for elements\n  // tags inside a table\n  var foster_parent_mode = false;\n\n  function insertHTMLElement(name, attrs) {\n    var elt = insertElement(function(doc) {\n      return createHTMLElt(doc, name, attrs);\n    });\n\n    // XXX\n    // If this is a form element, set its form attribute property here\n    if (isA(elt, formassociatedSet)) {\n      elt._form = form_element_pointer;\n    }\n\n    return elt;\n  }\n\n  // Insert the element into the open element or foster parent it\n  function insertElement(eltFunc) {\n    var elt;\n    if (foster_parent_mode && isA(stack.top, tablesectionrowSet)) {\n      elt = fosterParent(eltFunc);\n    }\n    else if (stack.top instanceof impl.HTMLTemplateElement) {\n      // \"If the adjusted insertion location is inside a template element,\n      // let it instead be inside the template element's template contents\"\n      elt = eltFunc(stack.top.content.ownerDocument);\n      stack.top.content._appendChild(elt);\n    } else {\n      elt = eltFunc(stack.top.ownerDocument);\n      stack.top._appendChild(elt);\n    }\n\n    stack.push(elt);\n    return elt;\n  }\n\n  function insertForeignElement(name, attrs, ns) {\n    return insertElement(function(doc) {\n      // We need to prevent createElementNS from trying to parse `name` as a\n      // `qname`, so use an internal Document#_createElementNS() interface.\n      var elt = doc._createElementNS(name, ns, null);\n      if (attrs) {\n        for(var i = 0, n = attrs.length; i < n; i++) {\n          var attr = attrs[i];\n          if (attr.length === 2)\n            elt._setAttribute(attr[0], attr[1]);\n          else {\n            elt._setAttributeNS(attr[2], attr[0], attr[1]);\n          }\n        }\n      }\n      return elt;\n    });\n  }\n\n  function lastElementOfType(type) {\n    for(var i = stack.elements.length-1; i >= 0; i--) {\n      if (stack.elements[i] instanceof type) {\n        return i;\n      }\n    }\n    return -1;\n  }\n\n  function fosterParent(eltFunc) {\n    var parent, before, lastTable = -1, lastTemplate = -1, elt;\n\n    lastTable = lastElementOfType(impl.HTMLTableElement);\n    lastTemplate = lastElementOfType(impl.HTMLTemplateElement);\n\n    if (lastTemplate >= 0 && (lastTable < 0 || lastTemplate > lastTable)) {\n      parent = stack.elements[lastTemplate];\n    } else if (lastTable >= 0) {\n      parent = stack.elements[lastTable].parentNode;\n      if (parent) {\n        before = stack.elements[lastTable];\n      } else {\n        parent = stack.elements[lastTable - 1];\n      }\n    }\n    if (!parent) parent = stack.elements[0]; // the `html` element.\n\n    // \"If the adjusted insertion location is inside a template element,\n    // let it instead be inside the template element's template contents\"\n    if (parent instanceof impl.HTMLTemplateElement) {\n      parent = parent.content;\n    }\n    // Create element in the appropriate document.\n    elt = eltFunc(parent.ownerDocument);\n\n    if (elt.nodeType === Node.TEXT_NODE) {\n      var prev;\n      if (before) prev = before.previousSibling;\n      else prev = parent.lastChild;\n      if (prev && prev.nodeType === Node.TEXT_NODE) {\n        prev.appendData(elt.data);\n        return elt;\n      }\n    }\n    if (before)\n      parent.insertBefore(elt, before);\n    else\n      parent._appendChild(elt);\n    return elt;\n  }\n\n\n  function resetInsertionMode() {\n    var last = false;\n    for(var i = stack.elements.length-1; i >= 0; i--) {\n      var node = stack.elements[i];\n      if (i === 0) {\n        last = true;\n        if (fragment) {\n          node = fragmentContext;\n        }\n      }\n      if (node.namespaceURI === NAMESPACE.HTML) {\n        var tag = node.localName;\n        switch(tag) {\n        case \"select\":\n          for(var j = i; j > 0; ) {\n            var ancestor = stack.elements[--j];\n            if (ancestor instanceof impl.HTMLTemplateElement) {\n              break;\n            } else if (ancestor instanceof impl.HTMLTableElement) {\n              parser = in_select_in_table_mode;\n              return;\n            }\n          }\n          parser = in_select_mode;\n          return;\n        case \"tr\":\n          parser = in_row_mode;\n          return;\n        case \"tbody\":\n        case \"tfoot\":\n        case \"thead\":\n          parser = in_table_body_mode;\n          return;\n        case \"caption\":\n          parser = in_caption_mode;\n          return;\n        case \"colgroup\":\n          parser = in_column_group_mode;\n          return;\n        case \"table\":\n          parser = in_table_mode;\n          return;\n        case \"template\":\n          parser = templateInsertionModes[templateInsertionModes.length-1];\n          return;\n        case \"body\":\n          parser = in_body_mode;\n          return;\n        case \"frameset\":\n          parser = in_frameset_mode;\n          return;\n        case \"html\":\n          if (head_element_pointer === null) {\n            parser = before_head_mode;\n          } else {\n            parser = after_head_mode;\n          }\n          return;\n        default:\n          if (!last) {\n            if (tag === \"head\") {\n              parser = in_head_mode;\n              return;\n            }\n            if (tag === \"td\" || tag === \"th\") {\n              parser = in_cell_mode;\n              return;\n            }\n          }\n        }\n      }\n      if (last) {\n        parser = in_body_mode;\n        return;\n      }\n    }\n  }\n\n\n  function parseRawText(name, attrs) {\n    insertHTMLElement(name, attrs);\n    tokenizer = rawtext_state;\n    originalInsertionMode = parser;\n    parser = text_mode;\n  }\n\n  function parseRCDATA(name, attrs) {\n    insertHTMLElement(name, attrs);\n    tokenizer = rcdata_state;\n    originalInsertionMode = parser;\n    parser = text_mode;\n  }\n\n  // Make a copy of element i on the list of active formatting\n  // elements, using its original attributes, not current\n  // attributes (which may have been modified by a script)\n  function afeclone(doc, i) {\n    return {\n      elt: createHTMLElt(doc, afe.list[i].localName, afe.attrs[i]),\n      attrs: afe.attrs[i],\n    };\n  }\n\n\n  function afereconstruct() {\n    if (afe.list.length === 0) return;\n    var entry = afe.list[afe.list.length-1];\n    // If the last is a marker , do nothing\n    if (entry === afe.MARKER) return;\n    // Or if it is an open element, do nothing\n    if (stack.elements.lastIndexOf(entry) !== -1) return;\n\n    // Loop backward through the list until we find a marker or an\n    // open element, and then move forward one from there.\n    for(var i = afe.list.length-2; i >= 0; i--) {\n      entry = afe.list[i];\n      if (entry === afe.MARKER) break;\n      if (stack.elements.lastIndexOf(entry) !== -1) break;\n    }\n\n    // Now loop forward, starting from the element after the current\n    // one, recreating formatting elements and pushing them back onto\n    // the list of open elements\n    for(i = i+1; i < afe.list.length; i++) {\n      var newelt = insertElement(function(doc) { return afeclone(doc, i).elt; });\n      afe.list[i] = newelt;\n    }\n  }\n\n  // Used by the adoptionAgency() function\n  var BOOKMARK = {localName:\"BM\"};\n\n  function adoptionAgency(tag) {\n    // If the current node is an HTML element whose tag name is subject,\n    // and the current node is not in the list of active formatting\n    // elements, then pop the current node off the stack of open\n    // elements and abort these steps.\n    if (isA(stack.top, tag) && afe.indexOf(stack.top) === -1) {\n      stack.pop();\n      return true; // no more handling required\n    }\n\n    // Let outer loop counter be zero.\n    var outer = 0;\n\n    // Outer loop: If outer loop counter is greater than or\n    // equal to eight, then abort these steps.\n    while(outer < 8) {\n      // Increment outer loop counter by one.\n      outer++;\n\n      // Let the formatting element be the last element in the list\n      // of active formatting elements that: is between the end of\n      // the list and the last scope marker in the list, if any, or\n      // the start of the list otherwise, and has the same tag name\n      // as the token.\n      var fmtelt = afe.findElementByTag(tag);\n\n      // If there is no such node, then abort these steps and instead\n      // act as described in the \"any other end tag\" entry below.\n      if (!fmtelt) {\n        return false; // false means handle by the default case\n      }\n\n      // Otherwise, if there is such a node, but that node is not in\n      // the stack of open elements, then this is a parse error;\n      // remove the element from the list, and abort these steps.\n      var index = stack.elements.lastIndexOf(fmtelt);\n      if (index === -1) {\n        afe.remove(fmtelt);\n        return true;   // true means no more handling required\n      }\n\n      // Otherwise, if there is such a node, and that node is also in\n      // the stack of open elements, but the element is not in scope,\n      // then this is a parse error; ignore the token, and abort\n      // these steps.\n      if (!stack.elementInScope(fmtelt)) {\n        return true;\n      }\n\n      // Let the furthest block be the topmost node in the stack of\n      // open elements that is lower in the stack than the formatting\n      // element, and is an element in the special category. There\n      // might not be one.\n      var furthestblock = null, furthestblockindex;\n      for(var i = index+1; i < stack.elements.length; i++) {\n        if (isA(stack.elements[i], specialSet)) {\n          furthestblock = stack.elements[i];\n          furthestblockindex = i;\n          break;\n        }\n      }\n\n      // If there is no furthest block, then the UA must skip the\n      // subsequent steps and instead just pop all the nodes from the\n      // bottom of the stack of open elements, from the current node\n      // up to and including the formatting element, and remove the\n      // formatting element from the list of active formatting\n      // elements.\n      if (!furthestblock) {\n        stack.popElement(fmtelt);\n        afe.remove(fmtelt);\n        return true;\n      }\n      else {\n        // Let the common ancestor be the element immediately above\n        // the formatting element in the stack of open elements.\n        var ancestor = stack.elements[index-1];\n\n        // Let a bookmark note the position of the formatting\n        // element in the list of active formatting elements\n        // relative to the elements on either side of it in the\n        // list.\n        afe.insertAfter(fmtelt, BOOKMARK);\n\n        // Let node and last node be the furthest block.\n        var node = furthestblock;\n        var lastnode = furthestblock;\n        var nodeindex = furthestblockindex;\n        var nodeafeindex;\n\n        // Let inner loop counter be zero.\n        var inner = 0;\n\n        while (true) {\n\n          // Increment inner loop counter by one.\n          inner++;\n\n          // Let node be the element immediately above node in\n          // the stack of open elements, or if node is no longer\n          // in the stack of open elements (e.g. because it got\n          // removed by this algorithm), the element that was\n          // immediately above node in the stack of open elements\n          // before node was removed.\n          node = stack.elements[--nodeindex];\n\n          // If node is the formatting element, then go\n          // to the next step in the overall algorithm.\n          if (node === fmtelt) break;\n\n          // If the inner loop counter is greater than three and node\n          // is in the list of active formatting elements, then remove\n          // node from the list of active formatting elements.\n          nodeafeindex = afe.indexOf(node);\n          if (inner > 3 && nodeafeindex !== -1) {\n            afe.remove(node);\n            nodeafeindex = -1;\n          }\n\n          // If node is not in the list of active formatting\n          // elements, then remove node from the stack of open\n          // elements and then go back to the step labeled inner\n          // loop.\n          if (nodeafeindex === -1) {\n            stack.removeElement(node);\n            continue;\n          }\n\n          // Create an element for the token for which the\n          // element node was created with common ancestor as\n          // the intended parent, replace the entry for node\n          // in the list of active formatting elements with an\n          // entry for the new element, replace the entry for\n          // node in the stack of open elements with an entry for\n          // the new element, and let node be the new element.\n          var newelt = afeclone(ancestor.ownerDocument, nodeafeindex);\n          afe.replace(node, newelt.elt, newelt.attrs);\n          stack.elements[nodeindex] = newelt.elt;\n          node = newelt.elt;\n\n          // If last node is the furthest block, then move the\n          // aforementioned bookmark to be immediately after the\n          // new node in the list of active formatting elements.\n          if (lastnode === furthestblock) {\n            afe.remove(BOOKMARK);\n            afe.insertAfter(newelt.elt, BOOKMARK);\n          }\n\n          // Insert last node into node, first removing it from\n          // its previous parent node if any.\n          node._appendChild(lastnode);\n\n          // Let last node be node.\n          lastnode = node;\n        }\n\n        // If the common ancestor node is a table, tbody, tfoot,\n        // thead, or tr element, then, foster parent whatever last\n        // node ended up being in the previous step, first removing\n        // it from its previous parent node if any.\n        if (foster_parent_mode && isA(ancestor, tablesectionrowSet)) {\n          fosterParent(function() { return lastnode; });\n        }\n        // Otherwise, append whatever last node ended up being in\n        // the previous step to the common ancestor node, first\n        // removing it from its previous parent node if any.\n        else if (ancestor instanceof impl.HTMLTemplateElement) {\n          ancestor.content._appendChild(lastnode);\n        } else {\n          ancestor._appendChild(lastnode);\n        }\n\n        // Create an element for the token for which the\n        // formatting element was created, with furthest block\n        // as the intended parent.\n        var newelt2 = afeclone(furthestblock.ownerDocument, afe.indexOf(fmtelt));\n\n        // Take all of the child nodes of the furthest block and\n        // append them to the element created in the last step.\n        while(furthestblock.hasChildNodes()) {\n          newelt2.elt._appendChild(furthestblock.firstChild);\n        }\n\n        // Append that new element to the furthest block.\n        furthestblock._appendChild(newelt2.elt);\n\n        // Remove the formatting element from the list of active\n        // formatting elements, and insert the new element into the\n        // list of active formatting elements at the position of\n        // the aforementioned bookmark.\n        afe.remove(fmtelt);\n        afe.replace(BOOKMARK, newelt2.elt, newelt2.attrs);\n\n        // Remove the formatting element from the stack of open\n        // elements, and insert the new element into the stack of\n        // open elements immediately below the position of the\n        // furthest block in that stack.\n        stack.removeElement(fmtelt);\n        var pos = stack.elements.lastIndexOf(furthestblock);\n        stack.elements.splice(pos+1, 0, newelt2.elt);\n      }\n    }\n\n    return true;\n  }\n\n  // We do this when we get /script in in_text_mode\n  function handleScriptEnd() {\n    // XXX:\n    // This is just a stub implementation right now and doesn't run scripts.\n    // Getting this method right involves the event loop, URL resolution\n    // script fetching etc. For now I just want to be able to parse\n    // documents and test the parser.\n\n    //var script = stack.top;\n    stack.pop();\n    parser = originalInsertionMode;\n    //script._prepare();\n    return;\n\n    // XXX: here is what this method is supposed to do\n\n    // Provide a stable state.\n\n    // Let script be the current node (which will be a script\n    // element).\n\n    // Pop the current node off the stack of open elements.\n\n    // Switch the insertion mode to the original insertion mode.\n\n    // Let the old insertion point have the same value as the current\n    // insertion point. Let the insertion point be just before the\n    // next input character.\n\n    // Increment the parser's script nesting level by one.\n\n    // Prepare the script. This might cause some script to execute,\n    // which might cause new characters to be inserted into the\n    // tokenizer, and might cause the tokenizer to output more tokens,\n    // resulting in a reentrant invocation of the parser.\n\n    // Decrement the parser's script nesting level by one. If the\n    // parser's script nesting level is zero, then set the parser\n    // pause flag to false.\n\n    // Let the insertion point have the value of the old insertion\n    // point. (In other words, restore the insertion point to its\n    // previous value. This value might be the \"undefined\" value.)\n\n    // At this stage, if there is a pending parsing-blocking script,\n    // then:\n\n    // If the script nesting level is not zero:\n\n    //   Set the parser pause flag to true, and abort the processing\n    //   of any nested invocations of the tokenizer, yielding\n    //   control back to the caller. (Tokenization will resume when\n    //   the caller returns to the \"outer\" tree construction stage.)\n\n    //   The tree construction stage of this particular parser is\n    //   being called reentrantly, say from a call to\n    //   document.write().\n\n    // Otherwise:\n\n    //     Run these steps:\n\n    //       Let the script be the pending parsing-blocking\n    //       script. There is no longer a pending\n    //       parsing-blocking script.\n\n    //       Block the tokenizer for this instance of the HTML\n    //       parser, such that the event loop will not run tasks\n    //       that invoke the tokenizer.\n\n    //       If the parser's Document has a style sheet that is\n    //       blocking scripts or the script's \"ready to be\n    //       parser-executed\" flag is not set: spin the event\n    //       loop until the parser's Document has no style sheet\n    //       that is blocking scripts and the script's \"ready to\n    //       be parser-executed\" flag is set.\n\n    //       Unblock the tokenizer for this instance of the HTML\n    //       parser, such that tasks that invoke the tokenizer\n    //       can again be run.\n\n    //       Let the insertion point be just before the next\n    //       input character.\n\n    //       Increment the parser's script nesting level by one\n    //       (it should be zero before this step, so this sets\n    //       it to one).\n\n    //       Execute the script.\n\n    //       Decrement the parser's script nesting level by\n    //       one. If the parser's script nesting level is zero\n    //       (which it always should be at this point), then set\n    //       the parser pause flag to false.\n\n    //       Let the insertion point be undefined again.\n\n    //       If there is once again a pending parsing-blocking\n    //       script, then repeat these steps from step 1.\n\n\n  }\n\n  function stopParsing() {\n    // XXX This is just a temporary implementation to get the parser working.\n    // A full implementation involves scripts and events and the event loop.\n\n    // Remove the link from document to parser.\n    // This is instead of \"set the insertion point to undefined\".\n    // It means that document.write() can't write into the doc anymore.\n    delete doc._parser;\n\n    stack.elements.length = 0; // pop everything off\n\n    // If there is a window object associated with the document\n    // then trigger an load event on it\n    if (doc.defaultView) {\n      doc.defaultView.dispatchEvent(new impl.Event(\"load\",{}));\n    }\n\n  }\n\n  /****\n   * Tokenizer states\n   */\n\n  /**\n   * This file was partially mechanically generated from\n   * http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html\n   *\n   * After mechanical conversion, it was further converted from\n   * prose to JS by hand, but the intent is that it is a very\n   * faithful rendering of the HTML tokenization spec in\n   * JavaScript.\n   *\n   * It is not a goal of this tokenizer to detect or report\n   * parse errors.\n   *\n   * XXX The tokenizer is supposed to work with straight UTF32\n   * codepoints. But I don't think it has any dependencies on\n   * any character outside of the BMP so I think it is safe to\n   * pass it UTF16 characters. I don't think it will ever change\n   * state in the middle of a surrogate pair.\n   */\n\n  /*\n   * Each state is represented by a function.  For most states, the\n   * scanner simply passes the next character (as an integer\n   * codepoint) to the current state function and automatically\n   * consumes the character.  If the state function can't process\n   * the character it can call pushback() to push it back to the\n   * scanner.\n   *\n   * Some states require lookahead, though.  If a state function has\n   * a lookahead property, then it is invoked differently.  In this\n   * case, the scanner invokes the function with 3 arguments: 1) the\n   * next codepoint 2) a string of lookahead text 3) a boolean that\n   * is true if the lookahead goes all the way to the EOF. (XXX\n   * actually maybe this third is not necessary... the lookahead\n   * could just include \\uFFFF?)\n   *\n   * If the lookahead property of a state function is an integer, it\n   * specifies the number of characters required. If it is a string,\n   * then the scanner will scan for that string and return all\n   * characters up to and including that sequence, or up to EOF.  If\n   * the lookahead property is a regexp, then the scanner will match\n   * the regexp at the current point and return the matching string.\n   *\n   * States that require lookahead are responsible for explicitly\n   * consuming the characters they process. They do this by\n   * incrementing nextchar by the number of processed characters.\n   */\n  function reconsume(c, new_state) {\n    tokenizer = new_state;\n    nextchar--; // pushback\n  }\n\n  function data_state(c) {\n    switch(c) {\n    case 0x0026: // AMPERSAND\n      return_state = data_state;\n      tokenizer = character_reference_state;\n      break;\n    case 0x003C: // LESS-THAN SIGN\n      if (emitSimpleTag()) // Shortcut for <p>, <dl>, </div> etc.\n        break;\n      tokenizer = tag_open_state;\n      break;\n    case 0x0000: // NULL\n      // Usually null characters emitted by the tokenizer will be\n      // ignored by the tree builder, but sometimes they'll be\n      // converted to \\uFFFD.  I don't want to have the search every\n      // string emitted to replace NULs, so I'll set a flag\n      // if I've emitted a NUL.\n      textrun.push(c);\n      textIncludesNUL = true;\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      // Instead of just pushing a single character and then\n      // coming back to the very same place, lookahead and\n      // emit everything we can at once.\n      /*jshint -W030 */\n      emitCharsWhile(DATATEXT) || textrun.push(c);\n      break;\n    }\n  }\n\n  function rcdata_state(c) {\n    // Save the open tag so we can find a matching close tag\n    switch(c) {\n    case 0x0026: // AMPERSAND\n      return_state = rcdata_state;\n      tokenizer = character_reference_state;\n      break;\n    case 0x003C: // LESS-THAN SIGN\n      tokenizer = rcdata_less_than_sign_state;\n      break;\n    case 0x0000: // NULL\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n      textIncludesNUL = true;\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      textrun.push(c);\n      break;\n    }\n  }\n\n  function rawtext_state(c) {\n    switch(c) {\n    case 0x003C: // LESS-THAN SIGN\n      tokenizer = rawtext_less_than_sign_state;\n      break;\n    case 0x0000: // NULL\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      /*jshint -W030 */\n      emitCharsWhile(RAWTEXT) || textrun.push(c);\n      break;\n    }\n  }\n\n  function script_data_state(c) {\n    switch(c) {\n    case 0x003C: // LESS-THAN SIGN\n      tokenizer = script_data_less_than_sign_state;\n      break;\n    case 0x0000: // NULL\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      /*jshint -W030 */\n      emitCharsWhile(RAWTEXT) || textrun.push(c);\n      break;\n    }\n  }\n\n  function plaintext_state(c) {\n    switch(c) {\n    case 0x0000: // NULL\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      /*jshint -W030 */\n      emitCharsWhile(PLAINTEXT) || textrun.push(c);\n      break;\n    }\n  }\n\n  function tag_open_state(c) {\n    switch(c) {\n    case 0x0021: // EXCLAMATION MARK\n      tokenizer = markup_declaration_open_state;\n      break;\n    case 0x002F: // SOLIDUS\n      tokenizer = end_tag_open_state;\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      beginTagName();\n      reconsume(c, tag_name_state);\n      break;\n    case 0x003F: // QUESTION MARK\n      reconsume(c, bogus_comment_state);\n      break;\n    default:\n      textrun.push(0x003C); // LESS-THAN SIGN\n      reconsume(c, data_state);\n      break;\n    }\n  }\n\n  function end_tag_open_state(c) {\n    switch(c) {\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      beginEndTagName();\n      reconsume(c, tag_name_state);\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      break;\n    case -1: // EOF\n      textrun.push(0x003C); // LESS-THAN SIGN\n      textrun.push(0x002F); // SOLIDUS\n      emitEOF();\n      break;\n    default:\n      reconsume(c, bogus_comment_state);\n      break;\n    }\n  }\n\n  function tag_name_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      tokenizer = before_attribute_name_state;\n      break;\n    case 0x002F: // SOLIDUS\n      tokenizer = self_closing_start_tag_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      emitTag();\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n      tagnamebuf += String.fromCharCode(c + 0x0020);\n      break;\n    case 0x0000: // NULL\n      tagnamebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      tagnamebuf += getMatchingChars(TAGNAME);\n      break;\n    }\n  }\n\n  function rcdata_less_than_sign_state(c) {\n    /* identical to the RAWTEXT less-than sign state, except s/RAWTEXT/RCDATA/g */\n    if (c === 0x002F) {  // SOLIDUS\n      beginTempBuf();\n      tokenizer = rcdata_end_tag_open_state;\n    }\n    else {\n      textrun.push(0x003C); // LESS-THAN SIGN\n      reconsume(c, rcdata_state);\n    }\n  }\n\n  function rcdata_end_tag_open_state(c) {\n    /* identical to the RAWTEXT (and Script data) end tag open state, except s/RAWTEXT/RCDATA/g */\n    switch(c) {\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      beginEndTagName();\n      reconsume(c, rcdata_end_tag_name_state);\n      break;\n    default:\n      textrun.push(0x003C); // LESS-THAN SIGN\n      textrun.push(0x002F); // SOLIDUS\n      reconsume(c, rcdata_state);\n      break;\n    }\n  }\n\n  function rcdata_end_tag_name_state(c) {\n    /* identical to the RAWTEXT (and Script data) end tag name state, except s/RAWTEXT/RCDATA/g */\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = before_attribute_name_state;\n        return;\n      }\n      break;\n    case 0x002F: // SOLIDUS\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = self_closing_start_tag_state;\n        return;\n      }\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = data_state;\n        emitTag();\n        return;\n      }\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n\n      tagnamebuf += String.fromCharCode(c + 0x0020);\n      tempbuf.push(c);\n      return;\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n\n      tagnamebuf += String.fromCharCode(c);\n      tempbuf.push(c);\n      return;\n    default:\n      break;\n    }\n\n    // If we don't return in one of the cases above, then this was not\n    // an appropriately matching close tag, so back out by emitting all\n    // the characters as text\n    textrun.push(0x003C); // LESS-THAN SIGN\n    textrun.push(0x002F); // SOLIDUS\n    pushAll(textrun, tempbuf);\n    reconsume(c, rcdata_state);\n  }\n\n  function rawtext_less_than_sign_state(c) {\n    /* identical to the RCDATA less-than sign state, except s/RCDATA/RAWTEXT/g\n     */\n    if (c === 0x002F) { // SOLIDUS\n      beginTempBuf();\n      tokenizer = rawtext_end_tag_open_state;\n    }\n    else {\n      textrun.push(0x003C); // LESS-THAN SIGN\n      reconsume(c, rawtext_state);\n    }\n  }\n\n  function rawtext_end_tag_open_state(c) {\n    /* identical to the RCDATA (and Script data) end tag open state, except s/RCDATA/RAWTEXT/g */\n    switch(c) {\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      beginEndTagName();\n      reconsume(c, rawtext_end_tag_name_state);\n      break;\n    default:\n      textrun.push(0x003C); // LESS-THAN SIGN\n      textrun.push(0x002F); // SOLIDUS\n      reconsume(c, rawtext_state);\n      break;\n    }\n  }\n\n  function rawtext_end_tag_name_state(c) {\n    /* identical to the RCDATA (and Script data) end tag name state, except s/RCDATA/RAWTEXT/g */\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = before_attribute_name_state;\n        return;\n      }\n      break;\n    case 0x002F: // SOLIDUS\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = self_closing_start_tag_state;\n        return;\n      }\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = data_state;\n        emitTag();\n        return;\n      }\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n      tagnamebuf += String.fromCharCode(c + 0x0020);\n      tempbuf.push(c);\n      return;\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      tagnamebuf += String.fromCharCode(c);\n      tempbuf.push(c);\n      return;\n    default:\n      break;\n    }\n\n    // If we don't return in one of the cases above, then this was not\n    // an appropriately matching close tag, so back out by emitting all\n    // the characters as text\n    textrun.push(0x003C); // LESS-THAN SIGN\n    textrun.push(0x002F); // SOLIDUS\n    pushAll(textrun,tempbuf);\n    reconsume(c, rawtext_state);\n  }\n\n  function script_data_less_than_sign_state(c) {\n    switch(c) {\n    case 0x002F: // SOLIDUS\n      beginTempBuf();\n      tokenizer = script_data_end_tag_open_state;\n      break;\n    case 0x0021: // EXCLAMATION MARK\n      tokenizer = script_data_escape_start_state;\n      textrun.push(0x003C); // LESS-THAN SIGN\n      textrun.push(0x0021); // EXCLAMATION MARK\n      break;\n    default:\n      textrun.push(0x003C); // LESS-THAN SIGN\n      reconsume(c, script_data_state);\n      break;\n    }\n  }\n\n  function script_data_end_tag_open_state(c) {\n    /* identical to the RCDATA (and RAWTEXT) end tag open state, except s/RCDATA/Script data/g */\n    switch(c) {\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      beginEndTagName();\n      reconsume(c, script_data_end_tag_name_state);\n      break;\n    default:\n      textrun.push(0x003C); // LESS-THAN SIGN\n      textrun.push(0x002F); // SOLIDUS\n      reconsume(c, script_data_state);\n      break;\n    }\n  }\n\n  function script_data_end_tag_name_state(c) {\n    /* identical to the RCDATA (and RAWTEXT) end tag name state, except s/RCDATA/Script data/g */\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = before_attribute_name_state;\n        return;\n      }\n      break;\n    case 0x002F: // SOLIDUS\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = self_closing_start_tag_state;\n        return;\n      }\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = data_state;\n        emitTag();\n        return;\n      }\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n\n      tagnamebuf += String.fromCharCode(c + 0x0020);\n      tempbuf.push(c);\n      return;\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n\n      tagnamebuf += String.fromCharCode(c);\n      tempbuf.push(c);\n      return;\n    default:\n      break;\n    }\n\n    // If we don't return in one of the cases above, then this was not\n    // an appropriately matching close tag, so back out by emitting all\n    // the characters as text\n    textrun.push(0x003C); // LESS-THAN SIGN\n    textrun.push(0x002F); // SOLIDUS\n    pushAll(textrun,tempbuf);\n    reconsume(c, script_data_state);\n  }\n\n  function script_data_escape_start_state(c) {\n    if (c === 0x002D) { // HYPHEN-MINUS\n      tokenizer = script_data_escape_start_dash_state;\n      textrun.push(0x002D); // HYPHEN-MINUS\n    }\n    else {\n      reconsume(c, script_data_state);\n    }\n  }\n\n  function script_data_escape_start_dash_state(c) {\n    if (c === 0x002D) { // HYPHEN-MINUS\n      tokenizer = script_data_escaped_dash_dash_state;\n      textrun.push(0x002D); // HYPHEN-MINUS\n    }\n    else {\n      reconsume(c, script_data_state);\n    }\n  }\n\n  function script_data_escaped_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      tokenizer = script_data_escaped_dash_state;\n      textrun.push(0x002D); // HYPHEN-MINUS\n      break;\n    case 0x003C: // LESS-THAN SIGN\n      tokenizer = script_data_escaped_less_than_sign_state;\n      break;\n    case 0x0000: // NULL\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      textrun.push(c);\n      break;\n    }\n  }\n\n  function script_data_escaped_dash_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      tokenizer = script_data_escaped_dash_dash_state;\n      textrun.push(0x002D); // HYPHEN-MINUS\n      break;\n    case 0x003C: // LESS-THAN SIGN\n      tokenizer = script_data_escaped_less_than_sign_state;\n      break;\n    case 0x0000: // NULL\n      tokenizer = script_data_escaped_state;\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      tokenizer = script_data_escaped_state;\n      textrun.push(c);\n      break;\n    }\n  }\n\n  function script_data_escaped_dash_dash_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      textrun.push(0x002D); // HYPHEN-MINUS\n      break;\n    case 0x003C: // LESS-THAN SIGN\n      tokenizer = script_data_escaped_less_than_sign_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = script_data_state;\n      textrun.push(0x003E); // GREATER-THAN SIGN\n      break;\n    case 0x0000: // NULL\n      tokenizer = script_data_escaped_state;\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      tokenizer = script_data_escaped_state;\n      textrun.push(c);\n      break;\n    }\n  }\n\n  function script_data_escaped_less_than_sign_state(c) {\n    switch(c) {\n    case 0x002F: // SOLIDUS\n      beginTempBuf();\n      tokenizer = script_data_escaped_end_tag_open_state;\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      beginTempBuf();\n      textrun.push(0x003C); // LESS-THAN SIGN\n      reconsume(c, script_data_double_escape_start_state);\n      break;\n    default:\n      textrun.push(0x003C); // LESS-THAN SIGN\n      reconsume(c, script_data_escaped_state);\n      break;\n    }\n  }\n\n  function script_data_escaped_end_tag_open_state(c) {\n    switch(c) {\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      beginEndTagName();\n      reconsume(c, script_data_escaped_end_tag_name_state);\n      break;\n    default:\n      textrun.push(0x003C); // LESS-THAN SIGN\n      textrun.push(0x002F); // SOLIDUS\n      reconsume(c, script_data_escaped_state);\n      break;\n    }\n  }\n\n  function script_data_escaped_end_tag_name_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = before_attribute_name_state;\n        return;\n      }\n      break;\n    case 0x002F: // SOLIDUS\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = self_closing_start_tag_state;\n        return;\n      }\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = data_state;\n        emitTag();\n        return;\n      }\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n      tagnamebuf += String.fromCharCode(c + 0x0020);\n      tempbuf.push(c);\n      return;\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      tagnamebuf += String.fromCharCode(c);\n      tempbuf.push(c);\n      return;\n    default:\n      break;\n    }\n\n    // We get here in the default case, and if the closing tagname\n    // is not an appropriate tagname.\n    textrun.push(0x003C); // LESS-THAN SIGN\n    textrun.push(0x002F); // SOLIDUS\n    pushAll(textrun,tempbuf);\n    reconsume(c, script_data_escaped_state);\n  }\n\n  function script_data_double_escape_start_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n    case 0x002F: // SOLIDUS\n    case 0x003E: // GREATER-THAN SIGN\n      if (buf2str(tempbuf) === \"script\") {\n        tokenizer = script_data_double_escaped_state;\n      }\n      else {\n        tokenizer = script_data_escaped_state;\n      }\n      textrun.push(c);\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n      tempbuf.push(c + 0x0020);\n      textrun.push(c);\n      break;\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      tempbuf.push(c);\n      textrun.push(c);\n      break;\n    default:\n      reconsume(c, script_data_escaped_state);\n      break;\n    }\n  }\n\n  function script_data_double_escaped_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      tokenizer = script_data_double_escaped_dash_state;\n      textrun.push(0x002D); // HYPHEN-MINUS\n      break;\n    case 0x003C: // LESS-THAN SIGN\n      tokenizer = script_data_double_escaped_less_than_sign_state;\n      textrun.push(0x003C); // LESS-THAN SIGN\n      break;\n    case 0x0000: // NULL\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      textrun.push(c);\n      break;\n    }\n  }\n\n  function script_data_double_escaped_dash_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      tokenizer = script_data_double_escaped_dash_dash_state;\n      textrun.push(0x002D); // HYPHEN-MINUS\n      break;\n    case 0x003C: // LESS-THAN SIGN\n      tokenizer = script_data_double_escaped_less_than_sign_state;\n      textrun.push(0x003C); // LESS-THAN SIGN\n      break;\n    case 0x0000: // NULL\n      tokenizer = script_data_double_escaped_state;\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      tokenizer = script_data_double_escaped_state;\n      textrun.push(c);\n      break;\n    }\n  }\n\n  function script_data_double_escaped_dash_dash_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      textrun.push(0x002D); // HYPHEN-MINUS\n      break;\n    case 0x003C: // LESS-THAN SIGN\n      tokenizer = script_data_double_escaped_less_than_sign_state;\n      textrun.push(0x003C); // LESS-THAN SIGN\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = script_data_state;\n      textrun.push(0x003E); // GREATER-THAN SIGN\n      break;\n    case 0x0000: // NULL\n      tokenizer = script_data_double_escaped_state;\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      tokenizer = script_data_double_escaped_state;\n      textrun.push(c);\n      break;\n    }\n  }\n\n  function script_data_double_escaped_less_than_sign_state(c) {\n    if (c === 0x002F) { // SOLIDUS\n      beginTempBuf();\n      tokenizer = script_data_double_escape_end_state;\n      textrun.push(0x002F); // SOLIDUS\n    }\n    else {\n      reconsume(c, script_data_double_escaped_state);\n    }\n  }\n\n  function script_data_double_escape_end_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n    case 0x002F: // SOLIDUS\n    case 0x003E: // GREATER-THAN SIGN\n      if (buf2str(tempbuf) === \"script\") {\n        tokenizer = script_data_escaped_state;\n      }\n      else {\n        tokenizer = script_data_double_escaped_state;\n      }\n      textrun.push(c);\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n      tempbuf.push(c + 0x0020);\n      textrun.push(c);\n      break;\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      tempbuf.push(c);\n      textrun.push(c);\n      break;\n    default:\n      reconsume(c, script_data_double_escaped_state);\n      break;\n    }\n  }\n\n  function before_attribute_name_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      /* Ignore the character. */\n      break;\n    // For SOLIDUS, GREATER-THAN SIGN, and EOF, spec says \"reconsume in\n    // the after attribute name state\", but in our implementation that\n    // state always has an active attribute in attrnamebuf.  Just clone\n    // the rules here, without the addAttribute business.\n    case 0x002F: // SOLIDUS\n      tokenizer = self_closing_start_tag_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      emitTag();\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    case 0x003D: // EQUALS SIGN\n      beginAttrName();\n      attrnamebuf += String.fromCharCode(c);\n      tokenizer = attribute_name_state;\n      break;\n    default:\n      if (handleSimpleAttribute()) break;\n      beginAttrName();\n      reconsume(c, attribute_name_state);\n      break;\n    }\n  }\n\n  // beginAttrName() must have been called before this point\n  // There is an active attribute in attrnamebuf (but not attrvaluebuf)\n  function attribute_name_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n    case 0x002F: // SOLIDUS\n    case 0x003E: // GREATER-THAN SIGN\n    case -1: // EOF\n      reconsume(c, after_attribute_name_state);\n      break;\n    case 0x003D: // EQUALS SIGN\n      tokenizer = before_attribute_value_state;\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n      attrnamebuf += String.fromCharCode(c + 0x0020);\n      break;\n    case 0x0000: // NULL\n      attrnamebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case 0x0022: // QUOTATION MARK\n    case 0x0027: // APOSTROPHE\n    case 0x003C: // LESS-THAN SIGN\n      /* falls through */\n    default:\n      attrnamebuf += getMatchingChars(ATTRNAME);\n      break;\n    }\n  }\n\n  // There is an active attribute in attrnamebuf, but not yet in attrvaluebuf.\n  function after_attribute_name_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      /* Ignore the character. */\n      break;\n    case 0x002F: // SOLIDUS\n      // Keep in sync with before_attribute_name_state.\n      addAttribute(attrnamebuf);\n      tokenizer = self_closing_start_tag_state;\n      break;\n    case 0x003D: // EQUALS SIGN\n      tokenizer = before_attribute_value_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      // Keep in sync with before_attribute_name_state.\n      tokenizer = data_state;\n      addAttribute(attrnamebuf);\n      emitTag();\n      break;\n    case -1: // EOF\n      // Keep in sync with before_attribute_name_state.\n      addAttribute(attrnamebuf);\n      emitEOF();\n      break;\n    default:\n      addAttribute(attrnamebuf);\n      beginAttrName();\n      reconsume(c, attribute_name_state);\n      break;\n    }\n  }\n\n  function before_attribute_value_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      /* Ignore the character. */\n      break;\n    case 0x0022: // QUOTATION MARK\n      beginAttrValue();\n      tokenizer = attribute_value_double_quoted_state;\n      break;\n    case 0x0027: // APOSTROPHE\n      beginAttrValue();\n      tokenizer = attribute_value_single_quoted_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      /* falls through */\n    default:\n      beginAttrValue();\n      reconsume(c, attribute_value_unquoted_state);\n      break;\n    }\n  }\n\n  function attribute_value_double_quoted_state(c) {\n    switch(c) {\n    case 0x0022: // QUOTATION MARK\n      addAttribute(attrnamebuf, attrvaluebuf);\n      tokenizer = after_attribute_value_quoted_state;\n      break;\n    case 0x0026: // AMPERSAND\n      return_state = attribute_value_double_quoted_state;\n      tokenizer = character_reference_state;\n      break;\n    case 0x0000: // NULL\n      attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    case 0x000A: // LF\n      // this could be a converted \\r, so don't use getMatchingChars\n      attrvaluebuf += String.fromCharCode(c);\n      break;\n    default:\n      attrvaluebuf += getMatchingChars(DBLQUOTEATTRVAL);\n      break;\n    }\n  }\n\n  function attribute_value_single_quoted_state(c) {\n    switch(c) {\n    case 0x0027: // APOSTROPHE\n      addAttribute(attrnamebuf, attrvaluebuf);\n      tokenizer = after_attribute_value_quoted_state;\n      break;\n    case 0x0026: // AMPERSAND\n      return_state = attribute_value_single_quoted_state;\n      tokenizer = character_reference_state;\n      break;\n    case 0x0000: // NULL\n      attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    case 0x000A: // LF\n      // this could be a converted \\r, so don't use getMatchingChars\n      attrvaluebuf += String.fromCharCode(c);\n      break;\n    default:\n      attrvaluebuf += getMatchingChars(SINGLEQUOTEATTRVAL);\n      break;\n    }\n  }\n\n  function attribute_value_unquoted_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      addAttribute(attrnamebuf, attrvaluebuf);\n      tokenizer = before_attribute_name_state;\n      break;\n    case 0x0026: // AMPERSAND\n      return_state = attribute_value_unquoted_state;\n      tokenizer = character_reference_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      addAttribute(attrnamebuf, attrvaluebuf);\n      tokenizer = data_state;\n      emitTag();\n      break;\n    case 0x0000: // NULL\n      attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case -1: // EOF\n      nextchar--; // pushback\n      tokenizer = data_state;\n      break;\n    case 0x0022: // QUOTATION MARK\n    case 0x0027: // APOSTROPHE\n    case 0x003C: // LESS-THAN SIGN\n    case 0x003D: // EQUALS SIGN\n    case 0x0060: // GRAVE ACCENT\n      /* falls through */\n    default:\n      attrvaluebuf += getMatchingChars(UNQUOTEDATTRVAL);\n      break;\n    }\n  }\n\n  function after_attribute_value_quoted_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      tokenizer = before_attribute_name_state;\n      break;\n    case 0x002F: // SOLIDUS\n      tokenizer = self_closing_start_tag_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      emitTag();\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      reconsume(c, before_attribute_name_state);\n      break;\n    }\n  }\n\n  function self_closing_start_tag_state(c) {\n    switch(c) {\n    case 0x003E: // GREATER-THAN SIGN\n      // Set the <i>self-closing flag</i> of the current tag token.\n      tokenizer = data_state;\n      emitSelfClosingTag(true);\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      reconsume(c, before_attribute_name_state);\n      break;\n    }\n  }\n\n  function bogus_comment_state(c, lookahead, eof) {\n    var len = lookahead.length;\n\n    if (eof) {\n      nextchar += len-1; // don't consume the eof\n    }\n    else {\n      nextchar += len;\n    }\n\n    var comment = lookahead.substring(0, len-1);\n\n    comment = comment.replace(/\\u0000/g,\"\\uFFFD\");\n    comment = comment.replace(/\\u000D\\u000A/g,\"\\u000A\");\n    comment = comment.replace(/\\u000D/g,\"\\u000A\");\n\n    insertToken(COMMENT, comment);\n    tokenizer = data_state;\n  }\n  bogus_comment_state.lookahead = \">\";\n\n  function markup_declaration_open_state(c, lookahead, eof) {\n    if (lookahead[0] === \"-\" && lookahead[1] === \"-\") {\n      nextchar += 2;\n      beginComment();\n      tokenizer = comment_start_state;\n      return;\n    }\n\n    if (lookahead.toUpperCase() === \"DOCTYPE\") {\n      nextchar += 7;\n      tokenizer = doctype_state;\n    }\n    else if (lookahead === \"[CDATA[\" && cdataAllowed()) {\n      nextchar += 7;\n      tokenizer = cdata_section_state;\n    }\n    else {\n      tokenizer = bogus_comment_state;\n    }\n  }\n  markup_declaration_open_state.lookahead = 7;\n\n  function comment_start_state(c) {\n    beginComment();\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      tokenizer = comment_start_dash_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      insertToken(COMMENT, buf2str(commentbuf));\n      break; /* see comment in comment end state */\n    default:\n      reconsume(c, comment_state);\n      break;\n    }\n  }\n\n  function comment_start_dash_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      tokenizer = comment_end_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      insertToken(COMMENT, buf2str(commentbuf));\n      break;\n    case -1: // EOF\n      insertToken(COMMENT, buf2str(commentbuf));\n      emitEOF();\n      break; /* see comment in comment end state */\n    default:\n      commentbuf.push(0x002D /* HYPHEN-MINUS */);\n      reconsume(c, comment_state);\n      break;\n    }\n  }\n\n  function comment_state(c) {\n    switch(c) {\n    case 0x003C: // LESS-THAN SIGN\n      commentbuf.push(c);\n      tokenizer = comment_less_than_sign_state;\n      break;\n    case 0x002D: // HYPHEN-MINUS\n      tokenizer = comment_end_dash_state;\n      break;\n    case 0x0000: // NULL\n      commentbuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case -1: // EOF\n      insertToken(COMMENT, buf2str(commentbuf));\n      emitEOF();\n      break; /* see comment in comment end state */\n    default:\n      commentbuf.push(c);\n      break;\n    }\n  }\n\n  function comment_less_than_sign_state(c) {\n    switch(c) {\n    case 0x0021: // EXCLAMATION MARK\n      commentbuf.push(c);\n      tokenizer = comment_less_than_sign_bang_state;\n      break;\n    case 0x003C: // LESS-THAN SIGN\n      commentbuf.push(c);\n      break;\n    default:\n      reconsume(c, comment_state);\n      break;\n    }\n  }\n\n  function comment_less_than_sign_bang_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      tokenizer = comment_less_than_sign_bang_dash_state;\n      break;\n    default:\n      reconsume(c, comment_state);\n      break;\n    }\n  }\n\n  function comment_less_than_sign_bang_dash_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      tokenizer = comment_less_than_sign_bang_dash_dash_state;\n      break;\n    default:\n      reconsume(c, comment_end_dash_state);\n      break;\n    }\n  }\n\n  function comment_less_than_sign_bang_dash_dash_state(c) {\n    switch(c) {\n    case 0x003E: // GREATER-THAN SIGN\n    case -1: // EOF\n      reconsume(c, comment_end_state);\n      break;\n    default:\n      // parse error\n      reconsume(c, comment_end_state);\n      break;\n    }\n  }\n\n  function comment_end_dash_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      tokenizer = comment_end_state;\n      break;\n    case -1: // EOF\n      insertToken(COMMENT, buf2str(commentbuf));\n      emitEOF();\n      break; /* see comment in comment end state */\n    default:\n      commentbuf.push(0x002D /* HYPHEN-MINUS */);\n      reconsume(c, comment_state);\n      break;\n    }\n  }\n\n  function comment_end_state(c) {\n    switch(c) {\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      insertToken(COMMENT, buf2str(commentbuf));\n      break;\n    case 0x0021: // EXCLAMATION MARK\n      tokenizer = comment_end_bang_state;\n      break;\n    case 0x002D: // HYPHEN-MINUS\n      commentbuf.push(0x002D);\n      break;\n    case -1: // EOF\n      insertToken(COMMENT, buf2str(commentbuf));\n      emitEOF();\n      break; /* For security reasons: otherwise, hostile user could put a script in a comment e.g. in a blog comment and then DOS the server so that the end tag isn't read, and then the commented script tag would be treated as live code */\n    default:\n      commentbuf.push(0x002D);\n      commentbuf.push(0x002D);\n      reconsume(c, comment_state);\n      break;\n    }\n  }\n\n  function comment_end_bang_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      commentbuf.push(0x002D);\n      commentbuf.push(0x002D);\n      commentbuf.push(0x0021);\n      tokenizer = comment_end_dash_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      insertToken(COMMENT, buf2str(commentbuf));\n      break;\n    case -1: // EOF\n      insertToken(COMMENT, buf2str(commentbuf));\n      emitEOF();\n      break; /* see comment in comment end state */\n    default:\n      commentbuf.push(0x002D);\n      commentbuf.push(0x002D);\n      commentbuf.push(0x0021);\n      reconsume(c, comment_state);\n      break;\n    }\n  }\n\n  function doctype_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      tokenizer = before_doctype_name_state;\n      break;\n    case -1: // EOF\n      beginDoctype();\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      reconsume(c, before_doctype_name_state);\n      break;\n    }\n  }\n\n  function before_doctype_name_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      /* Ignore the character. */\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n      beginDoctype();\n      doctypenamebuf.push(c + 0x0020);\n      tokenizer = doctype_name_state;\n      break;\n    case 0x0000: // NULL\n      beginDoctype();\n      doctypenamebuf.push(0xFFFD);\n      tokenizer = doctype_name_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      beginDoctype();\n      forcequirks();\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      beginDoctype();\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      beginDoctype();\n      doctypenamebuf.push(c);\n      tokenizer = doctype_name_state;\n      break;\n    }\n  }\n\n  function doctype_name_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      tokenizer = after_doctype_name_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n      doctypenamebuf.push(c + 0x0020);\n      break;\n    case 0x0000: // NULL\n      doctypenamebuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      doctypenamebuf.push(c);\n      break;\n    }\n  }\n\n  function after_doctype_name_state(c, lookahead, eof) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      /* Ignore the character. */\n      nextchar += 1;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      nextchar += 1;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      lookahead = lookahead.toUpperCase();\n      if (lookahead === \"PUBLIC\") {\n        nextchar += 6;\n        tokenizer = after_doctype_public_keyword_state;\n      }\n      else if (lookahead === \"SYSTEM\") {\n        nextchar += 6;\n        tokenizer = after_doctype_system_keyword_state;\n      }\n      else {\n        forcequirks();\n        tokenizer = bogus_doctype_state;\n      }\n      break;\n    }\n  }\n  after_doctype_name_state.lookahead = 6;\n\n  function after_doctype_public_keyword_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      tokenizer = before_doctype_public_identifier_state;\n      break;\n    case 0x0022: // QUOTATION MARK\n      beginDoctypePublicId();\n      tokenizer = doctype_public_identifier_double_quoted_state;\n      break;\n    case 0x0027: // APOSTROPHE\n      beginDoctypePublicId();\n      tokenizer = doctype_public_identifier_single_quoted_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      forcequirks();\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      forcequirks();\n      tokenizer = bogus_doctype_state;\n      break;\n    }\n  }\n\n  function before_doctype_public_identifier_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      /* Ignore the character. */\n      break;\n    case 0x0022: // QUOTATION MARK\n      beginDoctypePublicId();\n      tokenizer = doctype_public_identifier_double_quoted_state;\n      break;\n    case 0x0027: // APOSTROPHE\n      beginDoctypePublicId();\n      tokenizer = doctype_public_identifier_single_quoted_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      forcequirks();\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      forcequirks();\n      tokenizer = bogus_doctype_state;\n      break;\n    }\n  }\n\n  function doctype_public_identifier_double_quoted_state(c) {\n    switch(c) {\n    case 0x0022: // QUOTATION MARK\n      tokenizer = after_doctype_public_identifier_state;\n      break;\n    case 0x0000: // NULL\n      doctypepublicbuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      forcequirks();\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      doctypepublicbuf.push(c);\n      break;\n    }\n  }\n\n  function doctype_public_identifier_single_quoted_state(c) {\n    switch(c) {\n    case 0x0027: // APOSTROPHE\n      tokenizer = after_doctype_public_identifier_state;\n      break;\n    case 0x0000: // NULL\n      doctypepublicbuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      forcequirks();\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      doctypepublicbuf.push(c);\n      break;\n    }\n  }\n\n  function after_doctype_public_identifier_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      tokenizer = between_doctype_public_and_system_identifiers_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case 0x0022: // QUOTATION MARK\n      beginDoctypeSystemId();\n      tokenizer = doctype_system_identifier_double_quoted_state;\n      break;\n    case 0x0027: // APOSTROPHE\n      beginDoctypeSystemId();\n      tokenizer = doctype_system_identifier_single_quoted_state;\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      forcequirks();\n      tokenizer = bogus_doctype_state;\n      break;\n    }\n  }\n\n  function between_doctype_public_and_system_identifiers_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE Ignore the character.\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case 0x0022: // QUOTATION MARK\n      beginDoctypeSystemId();\n      tokenizer = doctype_system_identifier_double_quoted_state;\n      break;\n    case 0x0027: // APOSTROPHE\n      beginDoctypeSystemId();\n      tokenizer = doctype_system_identifier_single_quoted_state;\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      forcequirks();\n      tokenizer = bogus_doctype_state;\n      break;\n    }\n  }\n\n  function after_doctype_system_keyword_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      tokenizer = before_doctype_system_identifier_state;\n      break;\n    case 0x0022: // QUOTATION MARK\n      beginDoctypeSystemId();\n      tokenizer = doctype_system_identifier_double_quoted_state;\n      break;\n    case 0x0027: // APOSTROPHE\n      beginDoctypeSystemId();\n      tokenizer = doctype_system_identifier_single_quoted_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      forcequirks();\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      forcequirks();\n      tokenizer = bogus_doctype_state;\n      break;\n    }\n  }\n\n  function before_doctype_system_identifier_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE Ignore the character.\n      break;\n    case 0x0022: // QUOTATION MARK\n      beginDoctypeSystemId();\n      tokenizer = doctype_system_identifier_double_quoted_state;\n      break;\n    case 0x0027: // APOSTROPHE\n      beginDoctypeSystemId();\n      tokenizer = doctype_system_identifier_single_quoted_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      forcequirks();\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      forcequirks();\n      tokenizer = bogus_doctype_state;\n      break;\n    }\n  }\n\n  function doctype_system_identifier_double_quoted_state(c) {\n    switch(c) {\n    case 0x0022: // QUOTATION MARK\n      tokenizer = after_doctype_system_identifier_state;\n      break;\n    case 0x0000: // NULL\n      doctypesystembuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      forcequirks();\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      doctypesystembuf.push(c);\n      break;\n    }\n  }\n\n  function doctype_system_identifier_single_quoted_state(c) {\n    switch(c) {\n    case 0x0027: // APOSTROPHE\n      tokenizer = after_doctype_system_identifier_state;\n      break;\n    case 0x0000: // NULL\n      doctypesystembuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      forcequirks();\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      doctypesystembuf.push(c);\n      break;\n    }\n  }\n\n  function after_doctype_system_identifier_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      /* Ignore the character. */\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      tokenizer = bogus_doctype_state;\n      /* This does *not* set the DOCTYPE token's force-quirks flag. */\n      break;\n    }\n  }\n\n  function bogus_doctype_state(c) {\n    switch(c) {\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      /* Ignore the character. */\n      break;\n    }\n  }\n\n  function cdata_section_state(c) {\n    switch(c) {\n    case 0x005D: // RIGHT SQUARE BRACKET\n      tokenizer = cdata_section_bracket_state;\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    case 0x0000: // NULL\n      textIncludesNUL = true;\n      /* fall through */\n    default:\n      // Instead of just pushing a single character and then\n      // coming back to the very same place, lookahead and\n      // emit everything we can at once.\n      /*jshint -W030 */\n      emitCharsWhile(CDATATEXT) || textrun.push(c);\n      break;\n    }\n  }\n\n  function cdata_section_bracket_state(c) {\n    switch(c) {\n    case 0x005D: // RIGHT SQUARE BRACKET\n      tokenizer = cdata_section_end_state;\n      break;\n    default:\n      textrun.push(0x005D);\n      reconsume(c, cdata_section_state);\n      break;\n    }\n  }\n\n  function cdata_section_end_state(c) {\n    switch(c) {\n    case 0x005D: // RIGHT SQUARE BRACKET\n      textrun.push(0x005D);\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      flushText();\n      tokenizer = data_state;\n      break;\n    default:\n      textrun.push(0x005D);\n      textrun.push(0x005D);\n      reconsume(c, cdata_section_state);\n      break;\n    }\n  }\n\n  function character_reference_state(c) {\n    beginTempBuf();\n    tempbuf.push(0x0026);\n    switch(c) {\n    case 0x0009: // TAB\n    case 0x000A: // LINE FEED\n    case 0x000C: // FORM FEED\n    case 0x0020: // SPACE\n    case 0x003C: // LESS-THAN SIGN\n    case 0x0026: // AMPERSAND\n    case -1: // EOF\n      reconsume(c, character_reference_end_state);\n      break;\n    case 0x0023: // NUMBER SIGN\n      tempbuf.push(c);\n      tokenizer = numeric_character_reference_state;\n      break;\n    default:\n      reconsume(c, named_character_reference_state);\n      break;\n    }\n  }\n\n  function named_character_reference_state(c) {\n    NAMEDCHARREF.lastIndex = nextchar; // w/ lookahead no char has been consumed\n    var matched = NAMEDCHARREF.exec(chars);\n    if (!matched) throw new Error(\"should never happen\");\n    var name = matched[1];\n    if (!name) {\n      // If no match can be made, switch to the character reference end state\n      tokenizer = character_reference_end_state;\n      return;\n    }\n\n    // Consume the matched characters and append them to temporary buffer\n    nextchar += name.length;\n    pushAll(tempbuf, str2buf(name));\n\n    switch(return_state) {\n    case attribute_value_double_quoted_state:\n    case attribute_value_single_quoted_state:\n    case attribute_value_unquoted_state:\n      // If the character reference was consumed as part of an attribute...\n      if (name[name.length-1] !== ';') { // ...and the last char is not ;\n        if (/[=A-Za-z0-9]/.test(chars[nextchar])) {\n          tokenizer = character_reference_end_state;\n          return;\n        }\n      }\n      break;\n    default:\n      break;\n    }\n\n    beginTempBuf();\n    var rv = namedCharRefs[name];\n    if (typeof rv === 'number') {\n      tempbuf.push(rv);\n    } else {\n      pushAll(tempbuf, rv);\n    }\n    tokenizer = character_reference_end_state;\n  }\n  // We might need to pause tokenization until we have enough characters\n  // in the buffer for longest possible character reference.\n  named_character_reference_state.lookahead = -NAMEDCHARREF_MAXLEN;\n\n  function numeric_character_reference_state(c) {\n    character_reference_code = 0;\n    switch(c) {\n    case 0x0078: // x\n    case 0x0058: // X\n      tempbuf.push(c);\n      tokenizer = hexadecimal_character_reference_start_state;\n      break;\n    default:\n      reconsume(c, decimal_character_reference_start_state);\n      break;\n    }\n  }\n\n  function hexadecimal_character_reference_start_state(c) {\n    switch(c) {\n    case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034:\n    case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9]\n    case 0x0041: case 0x0042: case 0x0043: case 0x0044: case 0x0045:\n    case 0x0046: // [A-F]\n    case 0x0061: case 0x0062: case 0x0063: case 0x0064: case 0x0065:\n    case 0x0066: // [a-f]\n      reconsume(c, hexadecimal_character_reference_state);\n      break;\n    default:\n      reconsume(c, character_reference_end_state);\n      break;\n    }\n  }\n\n  function decimal_character_reference_start_state(c) {\n    switch(c) {\n    case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034:\n    case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9]\n      reconsume(c, decimal_character_reference_state);\n      break;\n    default:\n      reconsume(c, character_reference_end_state);\n      break;\n    }\n  }\n\n  function hexadecimal_character_reference_state(c) {\n    switch(c) {\n    case 0x0041: case 0x0042: case 0x0043: case 0x0044: case 0x0045:\n    case 0x0046: // [A-F]\n      character_reference_code *= 16;\n      character_reference_code += (c - 0x0037);\n      break;\n    case 0x0061: case 0x0062: case 0x0063: case 0x0064: case 0x0065:\n    case 0x0066: // [a-f]\n      character_reference_code *= 16;\n      character_reference_code += (c - 0x0057);\n      break;\n    case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034:\n    case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9]\n      character_reference_code *= 16;\n      character_reference_code += (c - 0x0030);\n      break;\n    case 0x003B: // SEMICOLON\n      tokenizer = numeric_character_reference_end_state;\n      break;\n    default:\n      reconsume(c, numeric_character_reference_end_state);\n      break;\n    }\n  }\n\n  function decimal_character_reference_state(c) {\n    switch(c) {\n    case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034:\n    case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9]\n      character_reference_code *= 10;\n      character_reference_code += (c - 0x0030);\n      break;\n    case 0x003B: // SEMICOLON\n      tokenizer = numeric_character_reference_end_state;\n      break;\n    default:\n      reconsume(c, numeric_character_reference_end_state);\n      break;\n    }\n  }\n\n  function numeric_character_reference_end_state(c) {\n    if (character_reference_code in numericCharRefReplacements) {\n      character_reference_code = numericCharRefReplacements[character_reference_code];\n    } else if (character_reference_code > 0x10FFFF || (character_reference_code >= 0xD800 && character_reference_code < 0xE000)) {\n      character_reference_code = 0xFFFD;\n    }\n\n    beginTempBuf();\n    if (character_reference_code <= 0xFFFF) {\n      tempbuf.push(character_reference_code);\n    } else {\n      character_reference_code = character_reference_code - 0x10000;\n      /* jshint bitwise: false */\n      tempbuf.push(0xD800 + (character_reference_code >> 10));\n      tempbuf.push(0xDC00 + (character_reference_code & 0x03FF));\n    }\n    reconsume(c, character_reference_end_state);\n  }\n\n  function character_reference_end_state(c) {\n    switch(return_state) {\n    case attribute_value_double_quoted_state:\n    case attribute_value_single_quoted_state:\n    case attribute_value_unquoted_state:\n      // append each character to the current attribute's value\n      attrvaluebuf += buf2str(tempbuf);\n      break;\n    default:\n      pushAll(textrun, tempbuf);\n      break;\n    }\n    reconsume(c, return_state);\n  }\n\n  /***\n   * The tree builder insertion modes\n   */\n\n  // 11.2.5.4.1 The \"initial\" insertion mode\n  function initial_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      value = value.replace(LEADINGWS, \"\"); // Ignore spaces\n      if (value.length === 0) return; // Are we done?\n      break; // Handle anything non-space text below\n    case 4: // COMMENT\n      doc._appendChild(doc.createComment(value));\n      return;\n    case 5: // DOCTYPE\n      var name = value;\n      var publicid = arg3;\n      var systemid = arg4;\n      // Use the constructor directly instead of\n      // implementation.createDocumentType because the create\n      // function throws errors on invalid characters, and\n      // we don't want the parser to throw them.\n      doc.appendChild(new DocumentType(doc, name, publicid, systemid));\n\n      // Note that there is no public API for setting quirks mode We can\n      // do this here because we have access to implementation details\n      if (force_quirks ||\n        name.toLowerCase() !== \"html\" ||\n        quirkyPublicIds.test(publicid) ||\n        (systemid && systemid.toLowerCase() === quirkySystemId) ||\n        (systemid === undefined &&\n         conditionallyQuirkyPublicIds.test(publicid)))\n        doc._quirks = true;\n      else if (limitedQuirkyPublicIds.test(publicid) ||\n           (systemid !== undefined &&\n            conditionallyQuirkyPublicIds.test(publicid)))\n        doc._limitedQuirks = true;\n      parser = before_html_mode;\n      return;\n    }\n\n    // tags or non-whitespace text\n    doc._quirks = true;\n    parser = before_html_mode;\n    parser(t,value,arg3,arg4);\n  }\n\n  // 11.2.5.4.2 The \"before html\" insertion mode\n  function before_html_mode(t,value,arg3,arg4) {\n    var elt;\n    switch(t) {\n    case 1: // TEXT\n      value = value.replace(LEADINGWS, \"\"); // Ignore spaces\n      if (value.length === 0) return; // Are we done?\n      break; // Handle anything non-space text below\n    case 5: // DOCTYPE\n      /* ignore the token */\n      return;\n    case 4: // COMMENT\n      doc._appendChild(doc.createComment(value));\n      return;\n    case 2: // TAG\n      if (value === \"html\") {\n        elt = createHTMLElt(doc, value, arg3);\n        stack.push(elt);\n        doc.appendChild(elt);\n        // XXX: handle application cache here\n        parser = before_head_mode;\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"html\":\n      case \"head\":\n      case \"body\":\n      case \"br\":\n        break;  // fall through on these\n      default:\n        return; // ignore most end tags\n      }\n    }\n\n    // Anything that didn't get handled above is handled like this:\n    elt = createHTMLElt(doc, \"html\", null);\n    stack.push(elt);\n    doc.appendChild(elt);\n    // XXX: handle application cache here\n    parser = before_head_mode;\n    parser(t,value,arg3,arg4);\n  }\n\n  // 11.2.5.4.3 The \"before head\" insertion mode\n  function before_head_mode(t,value,arg3,arg4) {\n    switch(t) {\n    case 1: // TEXT\n      value = value.replace(LEADINGWS, \"\");  // Ignore spaces\n      if (value.length === 0) return; // Are we done?\n      break;  // Handle anything non-space text below\n    case 5: // DOCTYPE\n      /* ignore the token */\n      return;\n    case 4: // COMMENT\n      insertComment(value);\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"html\":\n        in_body_mode(t,value,arg3,arg4);\n        return;\n      case \"head\":\n        var elt = insertHTMLElement(value, arg3);\n        head_element_pointer = elt;\n        parser = in_head_mode;\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"html\":\n      case \"head\":\n      case \"body\":\n      case \"br\":\n        break;\n      default:\n        return; // ignore most end tags\n      }\n    }\n\n    // If not handled explicitly above\n    before_head_mode(TAG, \"head\", null); // create a head tag\n    parser(t, value, arg3, arg4); // then try again with this token\n  }\n\n  function in_head_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      var ws = value.match(LEADINGWS);\n      if (ws) {\n        insertText(ws[0]);\n        value = value.substring(ws[0].length);\n      }\n      if (value.length === 0) return;\n      break; // Handle non-whitespace below\n    case 4: // COMMENT\n      insertComment(value);\n      return;\n    case 5: // DOCTYPE\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"html\":\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      case \"meta\":\n        // XXX:\n        // May need to change the encoding based on this tag\n        /* falls through */\n      case \"base\":\n      case \"basefont\":\n      case \"bgsound\":\n      case \"link\":\n        insertHTMLElement(value, arg3);\n        stack.pop();\n        return;\n      case \"title\":\n        parseRCDATA(value, arg3);\n        return;\n      case \"noscript\":\n        if (!scripting_enabled) {\n          insertHTMLElement(value, arg3);\n          parser = in_head_noscript_mode;\n          return;\n        }\n        // Otherwise, if scripting is enabled...\n        /* falls through */\n      case \"noframes\":\n      case \"style\":\n        parseRawText(value,arg3);\n        return;\n      case \"script\":\n        insertElement(function(doc) {\n          var elt = createHTMLElt(doc, value, arg3);\n          elt._parser_inserted = true;\n          elt._force_async = false;\n          if (fragment) elt._already_started = true;\n          flushText();\n          return elt;\n        });\n        tokenizer = script_data_state;\n        originalInsertionMode = parser;\n        parser = text_mode;\n        return;\n      case \"template\":\n        insertHTMLElement(value, arg3);\n        afe.insertMarker();\n        frameset_ok = false;\n        parser = in_template_mode;\n        templateInsertionModes.push(parser);\n        return;\n      case \"head\":\n        return; // ignore it\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"head\":\n        stack.pop();\n        parser = after_head_mode;\n        return;\n      case \"body\":\n      case \"html\":\n      case \"br\":\n        break; // handle these at the bottom of the function\n      case \"template\":\n        if (!stack.contains(\"template\")) {\n          return;\n        }\n        stack.generateImpliedEndTags(null, \"thorough\");\n        stack.popTag(\"template\");\n        afe.clearToMarker();\n        templateInsertionModes.pop();\n        resetInsertionMode();\n        return;\n      default:\n        // ignore any other end tag\n        return;\n      }\n      break;\n    }\n\n    // If not handled above\n    in_head_mode(ENDTAG, \"head\", null);   // synthetic </head>\n    parser(t, value, arg3, arg4);   // Then redo this one\n  }\n\n  // 13.2.5.4.5 The \"in head noscript\" insertion mode\n  function in_head_noscript_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 5: // DOCTYPE\n      return;\n    case 4: // COMMENT\n      in_head_mode(t, value);\n      return;\n    case 1: // TEXT\n      var ws = value.match(LEADINGWS);\n      if (ws) {\n        in_head_mode(t, ws[0]);\n        value = value.substring(ws[0].length);\n      }\n      if (value.length === 0) return; // no more text\n      break; // Handle non-whitespace below\n    case 2: // TAG\n      switch(value) {\n      case \"html\":\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      case \"basefont\":\n      case \"bgsound\":\n      case \"link\":\n      case \"meta\":\n      case \"noframes\":\n      case \"style\":\n        in_head_mode(t, value, arg3);\n        return;\n      case \"head\":\n      case \"noscript\":\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"noscript\":\n        stack.pop();\n        parser = in_head_mode;\n        return;\n      case \"br\":\n        break;  // goes to the outer default\n      default:\n        return; // ignore other end tags\n      }\n      break;\n    }\n\n    // If not handled above\n    in_head_noscript_mode(ENDTAG, \"noscript\", null);\n    parser(t, value, arg3, arg4);\n  }\n\n  function after_head_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      var ws = value.match(LEADINGWS);\n      if (ws) {\n        insertText(ws[0]);\n        value = value.substring(ws[0].length);\n      }\n      if (value.length === 0) return;\n      break; // Handle non-whitespace below\n    case 4: // COMMENT\n      insertComment(value);\n      return;\n    case 5: // DOCTYPE\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"html\":\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      case \"body\":\n        insertHTMLElement(value, arg3);\n        frameset_ok = false;\n        parser = in_body_mode;\n        return;\n      case \"frameset\":\n        insertHTMLElement(value, arg3);\n        parser = in_frameset_mode;\n        return;\n      case \"base\":\n      case \"basefont\":\n      case \"bgsound\":\n      case \"link\":\n      case \"meta\":\n      case \"noframes\":\n      case \"script\":\n      case \"style\":\n      case \"template\":\n      case \"title\":\n        stack.push(head_element_pointer);\n        in_head_mode(TAG, value, arg3);\n        stack.removeElement(head_element_pointer);\n        return;\n      case \"head\":\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"template\":\n        return in_head_mode(t, value, arg3, arg4);\n      case \"body\":\n      case \"html\":\n      case \"br\":\n        break;\n      default:\n        return;  // ignore any other end tag\n      }\n      break;\n    }\n\n    after_head_mode(TAG, \"body\", null);\n    frameset_ok = true;\n    parser(t, value, arg3, arg4);\n  }\n\n  // 13.2.5.4.7 The \"in body\" insertion mode\n  function in_body_mode(t,value,arg3,arg4) {\n    var body, i, node, elt;\n    switch(t) {\n    case 1: // TEXT\n      if (textIncludesNUL) {\n        value = value.replace(NULCHARS, \"\");\n        if (value.length === 0) return;\n      }\n      // If any non-space characters\n      if (frameset_ok && NONWS.test(value))\n        frameset_ok = false;\n      afereconstruct();\n      insertText(value);\n      return;\n    case 5: // DOCTYPE\n      return;\n    case 4: // COMMENT\n      insertComment(value);\n      return;\n    case -1: // EOF\n      if (templateInsertionModes.length) {\n        return in_template_mode(t);\n      }\n      stopParsing();\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"html\":\n        if (stack.contains(\"template\")) {\n          return;\n        }\n        transferAttributes(arg3, stack.elements[0]);\n        return;\n      case \"base\":\n      case \"basefont\":\n      case \"bgsound\":\n      case \"link\":\n      case \"meta\":\n      case \"noframes\":\n      case \"script\":\n      case \"style\":\n      case \"template\":\n      case \"title\":\n        in_head_mode(TAG, value, arg3);\n        return;\n      case \"body\":\n        body = stack.elements[1];\n        if (!body || !(body instanceof impl.HTMLBodyElement) ||\n            stack.contains(\"template\"))\n          return;\n        frameset_ok = false;\n        transferAttributes(arg3, body);\n        return;\n      case \"frameset\":\n        if (!frameset_ok) return;\n        body = stack.elements[1];\n        if (!body || !(body instanceof impl.HTMLBodyElement))\n          return;\n        if (body.parentNode) body.parentNode.removeChild(body);\n        while(!(stack.top instanceof impl.HTMLHtmlElement))\n          stack.pop();\n        insertHTMLElement(value, arg3);\n        parser = in_frameset_mode;\n        return;\n\n      case \"address\":\n      case \"article\":\n      case \"aside\":\n      case \"blockquote\":\n      case \"center\":\n      case \"details\":\n      case \"dialog\":\n      case \"dir\":\n      case \"div\":\n      case \"dl\":\n      case \"fieldset\":\n      case \"figcaption\":\n      case \"figure\":\n      case \"footer\":\n      case \"header\":\n      case \"hgroup\":\n      case \"main\":\n      case \"nav\":\n      case \"ol\":\n      case \"p\":\n      case \"section\":\n      case \"summary\":\n      case \"ul\":\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n        insertHTMLElement(value, arg3);\n        return;\n\n      case \"menu\":\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n        if (isA(stack.top, 'menuitem')) {\n          stack.pop();\n        }\n        insertHTMLElement(value, arg3);\n        return;\n\n      case \"h1\":\n      case \"h2\":\n      case \"h3\":\n      case \"h4\":\n      case \"h5\":\n      case \"h6\":\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n        if (stack.top instanceof impl.HTMLHeadingElement)\n          stack.pop();\n        insertHTMLElement(value, arg3);\n        return;\n\n      case \"pre\":\n      case \"listing\":\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n        insertHTMLElement(value, arg3);\n        ignore_linefeed = true;\n        frameset_ok = false;\n        return;\n\n      case \"form\":\n        if (form_element_pointer && !stack.contains(\"template\")) return;\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n        elt = insertHTMLElement(value, arg3);\n        if (!stack.contains(\"template\"))\n          form_element_pointer = elt;\n        return;\n\n      case \"li\":\n        frameset_ok = false;\n        for(i = stack.elements.length-1; i >= 0; i--) {\n          node = stack.elements[i];\n          if (node instanceof impl.HTMLLIElement) {\n            in_body_mode(ENDTAG, \"li\");\n            break;\n          }\n          if (isA(node, specialSet) && !isA(node, addressdivpSet))\n            break;\n        }\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n        insertHTMLElement(value, arg3);\n        return;\n\n      case \"dd\":\n      case \"dt\":\n        frameset_ok = false;\n        for(i = stack.elements.length-1; i >= 0; i--) {\n          node = stack.elements[i];\n          if (isA(node, dddtSet)) {\n            in_body_mode(ENDTAG, node.localName);\n            break;\n          }\n          if (isA(node, specialSet) && !isA(node, addressdivpSet))\n            break;\n        }\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n        insertHTMLElement(value, arg3);\n        return;\n\n      case \"plaintext\":\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n        insertHTMLElement(value, arg3);\n        tokenizer = plaintext_state;\n        return;\n\n      case \"button\":\n        if (stack.inScope(\"button\")) {\n          in_body_mode(ENDTAG, \"button\");\n          parser(t, value, arg3, arg4);\n        }\n        else {\n          afereconstruct();\n          insertHTMLElement(value, arg3);\n          frameset_ok = false;\n        }\n        return;\n\n      case \"a\":\n        var activeElement = afe.findElementByTag(\"a\");\n        if (activeElement) {\n          in_body_mode(ENDTAG, value);\n          afe.remove(activeElement);\n          stack.removeElement(activeElement);\n        }\n        /* falls through */\n      case \"b\":\n      case \"big\":\n      case \"code\":\n      case \"em\":\n      case \"font\":\n      case \"i\":\n      case \"s\":\n      case \"small\":\n      case \"strike\":\n      case \"strong\":\n      case \"tt\":\n      case \"u\":\n        afereconstruct();\n        afe.push(insertHTMLElement(value,arg3), arg3);\n        return;\n\n      case \"nobr\":\n        afereconstruct();\n\n        if (stack.inScope(value)) {\n          in_body_mode(ENDTAG, value);\n          afereconstruct();\n        }\n        afe.push(insertHTMLElement(value,arg3), arg3);\n        return;\n\n      case \"applet\":\n      case \"marquee\":\n      case \"object\":\n        afereconstruct();\n        insertHTMLElement(value,arg3);\n        afe.insertMarker();\n        frameset_ok = false;\n        return;\n\n      case \"table\":\n        if (!doc._quirks && stack.inButtonScope(\"p\")) {\n          in_body_mode(ENDTAG, \"p\");\n        }\n        insertHTMLElement(value,arg3);\n        frameset_ok = false;\n        parser = in_table_mode;\n        return;\n\n      case \"area\":\n      case \"br\":\n      case \"embed\":\n      case \"img\":\n      case \"keygen\":\n      case \"wbr\":\n        afereconstruct();\n        insertHTMLElement(value,arg3);\n        stack.pop();\n        frameset_ok = false;\n        return;\n\n      case \"input\":\n        afereconstruct();\n        elt = insertHTMLElement(value,arg3);\n        stack.pop();\n        var type = elt.getAttribute(\"type\");\n        if (!type || type.toLowerCase() !== \"hidden\")\n          frameset_ok = false;\n        return;\n\n      case \"param\":\n      case \"source\":\n      case \"track\":\n        insertHTMLElement(value,arg3);\n        stack.pop();\n        return;\n\n      case \"hr\":\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n        if (isA(stack.top, 'menuitem')) {\n          stack.pop();\n        }\n        insertHTMLElement(value,arg3);\n        stack.pop();\n        frameset_ok = false;\n        return;\n\n      case \"image\":\n        in_body_mode(TAG, \"img\", arg3, arg4);\n        return;\n\n      case \"textarea\":\n        insertHTMLElement(value,arg3);\n        ignore_linefeed = true;\n        frameset_ok = false;\n        tokenizer = rcdata_state;\n        originalInsertionMode = parser;\n        parser = text_mode;\n        return;\n\n      case \"xmp\":\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n        afereconstruct();\n        frameset_ok = false;\n        parseRawText(value, arg3);\n        return;\n\n      case \"iframe\":\n        frameset_ok = false;\n        parseRawText(value, arg3);\n        return;\n\n      case \"noembed\":\n        parseRawText(value,arg3);\n        return;\n\n      case \"select\":\n        afereconstruct();\n        insertHTMLElement(value,arg3);\n        frameset_ok = false;\n        if (parser === in_table_mode ||\n          parser === in_caption_mode ||\n          parser === in_table_body_mode ||\n          parser === in_row_mode ||\n          parser === in_cell_mode)\n          parser = in_select_in_table_mode;\n        else\n          parser = in_select_mode;\n        return;\n\n      case \"optgroup\":\n      case \"option\":\n        if (stack.top instanceof impl.HTMLOptionElement) {\n          in_body_mode(ENDTAG, \"option\");\n        }\n        afereconstruct();\n        insertHTMLElement(value,arg3);\n        return;\n\n      case \"menuitem\":\n        if (isA(stack.top, 'menuitem')) {\n          stack.pop();\n        }\n        afereconstruct();\n        insertHTMLElement(value, arg3);\n        return;\n\n      case \"rb\":\n      case \"rtc\":\n        if (stack.inScope(\"ruby\")) {\n          stack.generateImpliedEndTags();\n        }\n        insertHTMLElement(value,arg3);\n        return;\n\n      case \"rp\":\n      case \"rt\":\n        if (stack.inScope(\"ruby\")) {\n          stack.generateImpliedEndTags(\"rtc\");\n        }\n        insertHTMLElement(value,arg3);\n        return;\n\n      case \"math\":\n        afereconstruct();\n        adjustMathMLAttributes(arg3);\n        adjustForeignAttributes(arg3);\n        insertForeignElement(value, arg3, NAMESPACE.MATHML);\n        if (arg4) // self-closing flag\n          stack.pop();\n        return;\n\n      case \"svg\":\n        afereconstruct();\n        adjustSVGAttributes(arg3);\n        adjustForeignAttributes(arg3);\n        insertForeignElement(value, arg3, NAMESPACE.SVG);\n        if (arg4) // self-closing flag\n          stack.pop();\n        return;\n\n      case \"caption\":\n      case \"col\":\n      case \"colgroup\":\n      case \"frame\":\n      case \"head\":\n      case \"tbody\":\n      case \"td\":\n      case \"tfoot\":\n      case \"th\":\n      case \"thead\":\n      case \"tr\":\n        // Ignore table tags if we're not in_table mode\n        return;\n      }\n\n      // Handle any other start tag here\n      // (and also noscript tags when scripting is disabled)\n      afereconstruct();\n      insertHTMLElement(value,arg3);\n      return;\n\n    case 3: // ENDTAG\n      switch(value) {\n      case \"template\":\n        in_head_mode(ENDTAG, value, arg3);\n        return;\n      case \"body\":\n        if (!stack.inScope(\"body\")) return;\n        parser = after_body_mode;\n        return;\n      case \"html\":\n        if (!stack.inScope(\"body\")) return;\n        parser = after_body_mode;\n        parser(t, value, arg3);\n        return;\n\n      case \"address\":\n      case \"article\":\n      case \"aside\":\n      case \"blockquote\":\n      case \"button\":\n      case \"center\":\n      case \"details\":\n      case \"dialog\":\n      case \"dir\":\n      case \"div\":\n      case \"dl\":\n      case \"fieldset\":\n      case \"figcaption\":\n      case \"figure\":\n      case \"footer\":\n      case \"header\":\n      case \"hgroup\":\n      case \"listing\":\n      case \"main\":\n      case \"menu\":\n      case \"nav\":\n      case \"ol\":\n      case \"pre\":\n      case \"section\":\n      case \"summary\":\n      case \"ul\":\n        // Ignore if there is not a matching open tag\n        if (!stack.inScope(value)) return;\n        stack.generateImpliedEndTags();\n        stack.popTag(value);\n        return;\n\n      case \"form\":\n        if (!stack.contains(\"template\")) {\n          var openform = form_element_pointer;\n          form_element_pointer = null;\n          if (!openform || !stack.elementInScope(openform)) return;\n          stack.generateImpliedEndTags();\n          stack.removeElement(openform);\n        } else {\n          if (!stack.inScope(\"form\")) return;\n          stack.generateImpliedEndTags();\n          stack.popTag(\"form\");\n        }\n        return;\n\n      case \"p\":\n        if (!stack.inButtonScope(value)) {\n          in_body_mode(TAG, value, null);\n          parser(t, value, arg3, arg4);\n        }\n        else {\n          stack.generateImpliedEndTags(value);\n          stack.popTag(value);\n        }\n        return;\n\n      case \"li\":\n        if (!stack.inListItemScope(value)) return;\n        stack.generateImpliedEndTags(value);\n        stack.popTag(value);\n        return;\n\n      case \"dd\":\n      case \"dt\":\n        if (!stack.inScope(value)) return;\n        stack.generateImpliedEndTags(value);\n        stack.popTag(value);\n        return;\n\n      case \"h1\":\n      case \"h2\":\n      case \"h3\":\n      case \"h4\":\n      case \"h5\":\n      case \"h6\":\n        if (!stack.elementTypeInScope(impl.HTMLHeadingElement)) return;\n        stack.generateImpliedEndTags();\n        stack.popElementType(impl.HTMLHeadingElement);\n        return;\n\n      case \"sarcasm\":\n        // Take a deep breath, and then:\n        break;\n\n      case \"a\":\n      case \"b\":\n      case \"big\":\n      case \"code\":\n      case \"em\":\n      case \"font\":\n      case \"i\":\n      case \"nobr\":\n      case \"s\":\n      case \"small\":\n      case \"strike\":\n      case \"strong\":\n      case \"tt\":\n      case \"u\":\n        var result = adoptionAgency(value);\n        if (result) return;  // If we did something we're done\n        break;         // Go to the \"any other end tag\" case\n\n      case \"applet\":\n      case \"marquee\":\n      case \"object\":\n        if (!stack.inScope(value)) return;\n        stack.generateImpliedEndTags();\n        stack.popTag(value);\n        afe.clearToMarker();\n        return;\n\n      case \"br\":\n        in_body_mode(TAG, value, null);  // Turn </br> into <br>\n        return;\n      }\n\n      // Any other end tag goes here\n      for(i = stack.elements.length-1; i >= 0; i--) {\n        node = stack.elements[i];\n        if (isA(node, value)) {\n          stack.generateImpliedEndTags(value);\n          stack.popElement(node);\n          break;\n        }\n        else if (isA(node, specialSet)) {\n          return;\n        }\n      }\n\n      return;\n    }\n  }\n\n  function text_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      insertText(value);\n      return;\n    case -1: // EOF\n      if (stack.top instanceof impl.HTMLScriptElement)\n        stack.top._already_started = true;\n      stack.pop();\n      parser = originalInsertionMode;\n      parser(t);\n      return;\n    case 3: // ENDTAG\n      if (value === \"script\") {\n        handleScriptEnd();\n      }\n      else {\n        stack.pop();\n        parser = originalInsertionMode;\n      }\n      return;\n    default:\n      // We should never get any other token types\n      return;\n    }\n  }\n\n  function in_table_mode(t, value, arg3, arg4) {\n    function getTypeAttr(attrs) {\n      for(var i = 0, n = attrs.length; i < n; i++) {\n        if (attrs[i][0] === \"type\")\n          return attrs[i][1].toLowerCase();\n      }\n      return null;\n    }\n\n    switch(t) {\n    case 1: // TEXT\n      // XXX the text_integration_mode stuff is\n      // just a hack I made up\n      if (text_integration_mode) {\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      }\n      else if (isA(stack.top, tablesectionrowSet)) {\n        pending_table_text = [];\n        originalInsertionMode = parser;\n        parser = in_table_text_mode;\n        parser(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    case 4: // COMMENT\n      insertComment(value);\n      return;\n    case 5: // DOCTYPE\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"caption\":\n        stack.clearToContext(tableContextSet);\n        afe.insertMarker();\n        insertHTMLElement(value,arg3);\n        parser = in_caption_mode;\n        return;\n      case \"colgroup\":\n        stack.clearToContext(tableContextSet);\n        insertHTMLElement(value,arg3);\n        parser = in_column_group_mode;\n        return;\n      case \"col\":\n        in_table_mode(TAG, \"colgroup\", null);\n        parser(t, value, arg3, arg4);\n        return;\n      case \"tbody\":\n      case \"tfoot\":\n      case \"thead\":\n        stack.clearToContext(tableContextSet);\n        insertHTMLElement(value,arg3);\n        parser = in_table_body_mode;\n        return;\n      case \"td\":\n      case \"th\":\n      case \"tr\":\n        in_table_mode(TAG, \"tbody\", null);\n        parser(t, value, arg3, arg4);\n        return;\n\n      case \"table\":\n        if (!stack.inTableScope(value)) {\n          return; // Ignore the token\n        }\n        in_table_mode(ENDTAG, value);\n        parser(t, value, arg3, arg4);\n        return;\n\n      case \"style\":\n      case \"script\":\n      case \"template\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n\n      case \"input\":\n        var type = getTypeAttr(arg3);\n        if (type !== \"hidden\") break;  // to the anything else case\n        insertHTMLElement(value,arg3);\n        stack.pop();\n        return;\n\n      case \"form\":\n        if (form_element_pointer || stack.contains(\"template\")) return;\n        form_element_pointer = insertHTMLElement(value, arg3);\n        stack.popElement(form_element_pointer);\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"table\":\n        if (!stack.inTableScope(value)) return;\n        stack.popTag(value);\n        resetInsertionMode();\n        return;\n      case \"body\":\n      case \"caption\":\n      case \"col\":\n      case \"colgroup\":\n      case \"html\":\n      case \"tbody\":\n      case \"td\":\n      case \"tfoot\":\n      case \"th\":\n      case \"thead\":\n      case \"tr\":\n        return;\n      case \"template\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n      }\n\n      break;\n    case -1: // EOF\n      in_body_mode(t, value, arg3, arg4);\n      return;\n    }\n\n    // This is the anything else case\n    foster_parent_mode = true;\n    in_body_mode(t, value, arg3, arg4);\n    foster_parent_mode = false;\n  }\n\n  function in_table_text_mode(t, value, arg3, arg4) {\n    if (t === TEXT) {\n      if (textIncludesNUL) {\n        value = value.replace(NULCHARS, \"\");\n        if (value.length === 0) return;\n      }\n      pending_table_text.push(value);\n    }\n    else {\n      var s = pending_table_text.join(\"\");\n      pending_table_text.length = 0;\n      if (NONWS.test(s)) { // If any non-whitespace characters\n        // This must be the same code as the \"anything else\"\n        // case of the in_table mode above.\n        foster_parent_mode = true;\n        in_body_mode(TEXT, s);\n        foster_parent_mode = false;\n      }\n      else {\n        insertText(s);\n      }\n      parser = originalInsertionMode;\n      parser(t, value, arg3, arg4);\n    }\n  }\n\n\n  function in_caption_mode(t, value, arg3, arg4) {\n    function end_caption() {\n      if (!stack.inTableScope(\"caption\")) return false;\n      stack.generateImpliedEndTags();\n      stack.popTag(\"caption\");\n      afe.clearToMarker();\n      parser = in_table_mode;\n      return true;\n    }\n\n    switch(t) {\n    case 2: // TAG\n      switch(value) {\n      case \"caption\":\n      case \"col\":\n      case \"colgroup\":\n      case \"tbody\":\n      case \"td\":\n      case \"tfoot\":\n      case \"th\":\n      case \"thead\":\n      case \"tr\":\n        if (end_caption()) parser(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"caption\":\n        end_caption();\n        return;\n      case \"table\":\n        if (end_caption()) parser(t, value, arg3, arg4);\n        return;\n      case \"body\":\n      case \"col\":\n      case \"colgroup\":\n      case \"html\":\n      case \"tbody\":\n      case \"td\":\n      case \"tfoot\":\n      case \"th\":\n      case \"thead\":\n      case \"tr\":\n        return;\n      }\n      break;\n    }\n\n    // The Anything Else case\n    in_body_mode(t, value, arg3, arg4);\n  }\n\n  function in_column_group_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      var ws = value.match(LEADINGWS);\n      if (ws) {\n        insertText(ws[0]);\n        value = value.substring(ws[0].length);\n      }\n      if (value.length === 0) return;\n      break; // Handle non-whitespace below\n\n    case 4: // COMMENT\n      insertComment(value);\n      return;\n    case 5: // DOCTYPE\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"html\":\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      case \"col\":\n        insertHTMLElement(value, arg3);\n        stack.pop();\n        return;\n      case \"template\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"colgroup\":\n        if (!isA(stack.top, 'colgroup')) {\n          return; // Ignore the token.\n        }\n        stack.pop();\n        parser = in_table_mode;\n        return;\n      case \"col\":\n        return;\n      case \"template\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    case -1: // EOF\n      in_body_mode(t, value, arg3, arg4);\n      return;\n    }\n\n    // Anything else\n    if (!isA(stack.top, 'colgroup')) {\n      return; // Ignore the token.\n    }\n    in_column_group_mode(ENDTAG, \"colgroup\");\n    parser(t, value, arg3, arg4);\n  }\n\n  function in_table_body_mode(t, value, arg3, arg4) {\n    function endsect() {\n      if (!stack.inTableScope(\"tbody\") &&\n        !stack.inTableScope(\"thead\") &&\n        !stack.inTableScope(\"tfoot\"))\n        return;\n      stack.clearToContext(tableBodyContextSet);\n      in_table_body_mode(ENDTAG, stack.top.localName, null);\n      parser(t, value, arg3, arg4);\n    }\n\n    switch(t) {\n    case 2: // TAG\n      switch(value) {\n      case \"tr\":\n        stack.clearToContext(tableBodyContextSet);\n        insertHTMLElement(value, arg3);\n        parser = in_row_mode;\n        return;\n      case \"th\":\n      case \"td\":\n        in_table_body_mode(TAG, \"tr\", null);\n        parser(t, value, arg3, arg4);\n        return;\n      case \"caption\":\n      case \"col\":\n      case \"colgroup\":\n      case \"tbody\":\n      case \"tfoot\":\n      case \"thead\":\n        endsect();\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"table\":\n        endsect();\n        return;\n      case \"tbody\":\n      case \"tfoot\":\n      case \"thead\":\n        if (stack.inTableScope(value)) {\n          stack.clearToContext(tableBodyContextSet);\n          stack.pop();\n          parser = in_table_mode;\n        }\n        return;\n      case \"body\":\n      case \"caption\":\n      case \"col\":\n      case \"colgroup\":\n      case \"html\":\n      case \"td\":\n      case \"th\":\n      case \"tr\":\n        return;\n      }\n      break;\n    }\n\n    // Anything else:\n    in_table_mode(t, value, arg3, arg4);\n  }\n\n  function in_row_mode(t, value, arg3, arg4) {\n    function endrow() {\n      if (!stack.inTableScope(\"tr\")) return false;\n      stack.clearToContext(tableRowContextSet);\n      stack.pop();\n      parser = in_table_body_mode;\n      return true;\n    }\n\n    switch(t) {\n    case 2: // TAG\n      switch(value) {\n      case \"th\":\n      case \"td\":\n        stack.clearToContext(tableRowContextSet);\n        insertHTMLElement(value, arg3);\n        parser = in_cell_mode;\n        afe.insertMarker();\n        return;\n      case \"caption\":\n      case \"col\":\n      case \"colgroup\":\n      case \"tbody\":\n      case \"tfoot\":\n      case \"thead\":\n      case \"tr\":\n        if (endrow()) parser(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"tr\":\n        endrow();\n        return;\n      case \"table\":\n        if (endrow()) parser(t, value, arg3, arg4);\n        return;\n      case \"tbody\":\n      case \"tfoot\":\n      case \"thead\":\n        if (stack.inTableScope(value)) {\n          if (endrow()) parser(t, value, arg3, arg4);\n        }\n        return;\n      case \"body\":\n      case \"caption\":\n      case \"col\":\n      case \"colgroup\":\n      case \"html\":\n      case \"td\":\n      case \"th\":\n        return;\n      }\n      break;\n    }\n\n    // anything else\n    in_table_mode(t, value, arg3, arg4);\n  }\n\n  function in_cell_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 2: // TAG\n      switch(value) {\n      case \"caption\":\n      case \"col\":\n      case \"colgroup\":\n      case \"tbody\":\n      case \"td\":\n      case \"tfoot\":\n      case \"th\":\n      case \"thead\":\n      case \"tr\":\n        if (stack.inTableScope(\"td\")) {\n          in_cell_mode(ENDTAG, \"td\");\n          parser(t, value, arg3, arg4);\n        }\n        else if (stack.inTableScope(\"th\")) {\n          in_cell_mode(ENDTAG, \"th\");\n          parser(t, value, arg3, arg4);\n        }\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"td\":\n      case \"th\":\n        if (!stack.inTableScope(value)) return;\n        stack.generateImpliedEndTags();\n        stack.popTag(value);\n        afe.clearToMarker();\n        parser = in_row_mode;\n        return;\n\n      case \"body\":\n      case \"caption\":\n      case \"col\":\n      case \"colgroup\":\n      case \"html\":\n        return;\n\n      case \"table\":\n      case \"tbody\":\n      case \"tfoot\":\n      case \"thead\":\n      case \"tr\":\n        if (!stack.inTableScope(value)) return;\n        in_cell_mode(ENDTAG, stack.inTableScope(\"td\") ? \"td\" : \"th\");\n        parser(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    }\n\n    // anything else\n    in_body_mode(t, value, arg3, arg4);\n  }\n\n  function in_select_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      if (textIncludesNUL) {\n        value = value.replace(NULCHARS, \"\");\n        if (value.length === 0) return;\n      }\n      insertText(value);\n      return;\n    case 4: // COMMENT\n      insertComment(value);\n      return;\n    case 5: // DOCTYPE\n      return;\n    case -1: // EOF\n      in_body_mode(t, value, arg3, arg4);\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"html\":\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      case \"option\":\n        if (stack.top instanceof impl.HTMLOptionElement)\n          in_select_mode(ENDTAG, value);\n        insertHTMLElement(value, arg3);\n        return;\n      case \"optgroup\":\n        if (stack.top instanceof impl.HTMLOptionElement)\n          in_select_mode(ENDTAG, \"option\");\n        if (stack.top instanceof impl.HTMLOptGroupElement)\n          in_select_mode(ENDTAG, value);\n        insertHTMLElement(value, arg3);\n        return;\n      case \"select\":\n        in_select_mode(ENDTAG, value); // treat it as a close tag\n        return;\n\n      case \"input\":\n      case \"keygen\":\n      case \"textarea\":\n        if (!stack.inSelectScope(\"select\")) return;\n        in_select_mode(ENDTAG, \"select\");\n        parser(t, value, arg3, arg4);\n        return;\n\n      case \"script\":\n      case \"template\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"optgroup\":\n        if (stack.top instanceof impl.HTMLOptionElement &&\n          stack.elements[stack.elements.length-2] instanceof\n          impl.HTMLOptGroupElement) {\n          in_select_mode(ENDTAG, \"option\");\n        }\n        if (stack.top instanceof impl.HTMLOptGroupElement)\n          stack.pop();\n\n        return;\n\n      case \"option\":\n        if (stack.top instanceof impl.HTMLOptionElement)\n          stack.pop();\n        return;\n\n      case \"select\":\n        if (!stack.inSelectScope(value)) return;\n        stack.popTag(value);\n        resetInsertionMode();\n        return;\n\n      case \"template\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n      }\n\n      break;\n    }\n\n    // anything else: just ignore the token\n  }\n\n  function in_select_in_table_mode(t, value, arg3, arg4) {\n    switch(value) {\n    case \"caption\":\n    case \"table\":\n    case \"tbody\":\n    case \"tfoot\":\n    case \"thead\":\n    case \"tr\":\n    case \"td\":\n    case \"th\":\n      switch(t) {\n      case 2: // TAG\n        in_select_in_table_mode(ENDTAG, \"select\");\n        parser(t, value, arg3, arg4);\n        return;\n      case 3: // ENDTAG\n        if (stack.inTableScope(value)) {\n          in_select_in_table_mode(ENDTAG, \"select\");\n          parser(t, value, arg3, arg4);\n        }\n        return;\n      }\n    }\n\n    // anything else\n    in_select_mode(t, value, arg3, arg4);\n  }\n\n  function in_template_mode(t, value, arg3, arg4) {\n    function switchModeAndReprocess(mode) {\n      parser = mode;\n      templateInsertionModes[templateInsertionModes.length-1] = parser;\n      parser(t, value, arg3, arg4);\n    }\n    switch(t) {\n    case 1: // TEXT\n    case 4: // COMMENT\n    case 5: // DOCTYPE\n      in_body_mode(t, value, arg3, arg4);\n      return;\n    case -1: // EOF\n      if (!stack.contains(\"template\")) {\n        stopParsing();\n      } else {\n        stack.popTag(\"template\");\n        afe.clearToMarker();\n        templateInsertionModes.pop();\n        resetInsertionMode();\n        parser(t, value, arg3, arg4);\n      }\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"base\":\n      case \"basefont\":\n      case \"bgsound\":\n      case \"link\":\n      case \"meta\":\n      case \"noframes\":\n      case \"script\":\n      case \"style\":\n      case \"template\":\n      case \"title\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n      case \"caption\":\n      case \"colgroup\":\n      case \"tbody\":\n      case \"tfoot\":\n      case \"thead\":\n        switchModeAndReprocess(in_table_mode);\n        return;\n      case \"col\":\n        switchModeAndReprocess(in_column_group_mode);\n        return;\n      case \"tr\":\n        switchModeAndReprocess(in_table_body_mode);\n        return;\n      case \"td\":\n      case \"th\":\n        switchModeAndReprocess(in_row_mode);\n        return;\n      }\n      switchModeAndReprocess(in_body_mode);\n      return;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"template\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n      default:\n        return;\n      }\n    }\n  }\n\n  function after_body_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      // If any non-space chars, handle below\n      if (NONWS.test(value)) break;\n      in_body_mode(t, value);\n      return;\n    case 4: // COMMENT\n      // Append it to the <html> element\n      stack.elements[0]._appendChild(doc.createComment(value));\n      return;\n    case 5: // DOCTYPE\n      return;\n    case -1: // EOF\n      stopParsing();\n      return;\n    case 2: // TAG\n      if (value === \"html\") {\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      }\n      break; // for any other tags\n    case 3: // ENDTAG\n      if (value === \"html\") {\n        if (fragment) return;\n        parser = after_after_body_mode;\n        return;\n      }\n      break; // for any other tags\n    }\n\n    // anything else\n    parser = in_body_mode;\n    parser(t, value, arg3, arg4);\n  }\n\n  function in_frameset_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      // Ignore any non-space characters\n      value = value.replace(ALLNONWS, \"\");\n      if (value.length > 0) insertText(value);\n      return;\n    case 4: // COMMENT\n      insertComment(value);\n      return;\n    case 5: // DOCTYPE\n      return;\n    case -1: // EOF\n      stopParsing();\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"html\":\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      case \"frameset\":\n        insertHTMLElement(value, arg3);\n        return;\n      case \"frame\":\n        insertHTMLElement(value, arg3);\n        stack.pop();\n        return;\n      case \"noframes\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      if (value === \"frameset\") {\n        if (fragment && stack.top instanceof impl.HTMLHtmlElement)\n          return;\n        stack.pop();\n        if (!fragment &&\n          !(stack.top instanceof impl.HTMLFrameSetElement))\n          parser = after_frameset_mode;\n        return;\n      }\n      break;\n    }\n\n    // ignore anything else\n  }\n\n  function after_frameset_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      // Ignore any non-space characters\n      value = value.replace(ALLNONWS, \"\");\n      if (value.length > 0) insertText(value);\n      return;\n    case 4: // COMMENT\n      insertComment(value);\n      return;\n    case 5: // DOCTYPE\n      return;\n    case -1: // EOF\n      stopParsing();\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"html\":\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      case \"noframes\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      if (value === \"html\") {\n        parser = after_after_frameset_mode;\n        return;\n      }\n      break;\n    }\n\n    // ignore anything else\n  }\n\n  function after_after_body_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      // If any non-space chars, handle below\n      if (NONWS.test(value)) break;\n      in_body_mode(t, value, arg3, arg4);\n      return;\n    case 4: // COMMENT\n      doc._appendChild(doc.createComment(value));\n      return;\n    case 5: // DOCTYPE\n      in_body_mode(t, value, arg3, arg4);\n      return;\n    case -1: // EOF\n      stopParsing();\n      return;\n    case 2: // TAG\n      if (value === \"html\") {\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    }\n\n    // anything else\n    parser = in_body_mode;\n    parser(t, value, arg3, arg4);\n  }\n\n  function after_after_frameset_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      // Ignore any non-space characters\n      value = value.replace(ALLNONWS, \"\");\n      if (value.length > 0)\n        in_body_mode(t, value, arg3, arg4);\n      return;\n    case 4: // COMMENT\n      doc._appendChild(doc.createComment(value));\n      return;\n    case 5: // DOCTYPE\n      in_body_mode(t, value, arg3, arg4);\n      return;\n    case -1: // EOF\n      stopParsing();\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"html\":\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      case \"noframes\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    }\n\n    // ignore anything else\n  }\n\n\n  // 13.2.5.5 The rules for parsing tokens in foreign content\n  //\n  // This is like one of the insertion modes above, but is\n  // invoked somewhat differently when the current token is not HTML.\n  // See the insertToken() function.\n  function insertForeignToken(t, value, arg3, arg4) {\n    // A <font> tag is an HTML font tag if it has a color, font, or size\n    // attribute.  Otherwise we assume it is foreign content\n    function isHTMLFont(attrs) {\n      for(var i = 0, n = attrs.length; i < n; i++) {\n        switch(attrs[i][0]) {\n        case \"color\":\n        case \"face\":\n        case \"size\":\n          return true;\n        }\n      }\n      return false;\n    }\n\n    var current;\n\n    switch(t) {\n    case 1: // TEXT\n      // If any non-space, non-nul characters\n      if (frameset_ok && NONWSNONNUL.test(value))\n        frameset_ok = false;\n      if (textIncludesNUL) {\n        value = value.replace(NULCHARS, \"\\uFFFD\");\n      }\n      insertText(value);\n      return;\n    case 4: // COMMENT\n      insertComment(value);\n      return;\n    case 5: // DOCTYPE\n      // ignore it\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"font\":\n        if (!isHTMLFont(arg3)) break;\n        /* falls through */\n      case \"b\":\n      case \"big\":\n      case \"blockquote\":\n      case \"body\":\n      case \"br\":\n      case \"center\":\n      case \"code\":\n      case \"dd\":\n      case \"div\":\n      case \"dl\":\n      case \"dt\":\n      case \"em\":\n      case \"embed\":\n      case \"h1\":\n      case \"h2\":\n      case \"h3\":\n      case \"h4\":\n      case \"h5\":\n      case \"h6\":\n      case \"head\":\n      case \"hr\":\n      case \"i\":\n      case \"img\":\n      case \"li\":\n      case \"listing\":\n      case \"menu\":\n      case \"meta\":\n      case \"nobr\":\n      case \"ol\":\n      case \"p\":\n      case \"pre\":\n      case \"ruby\":\n      case \"s\":\n      case \"small\":\n      case \"span\":\n      case \"strong\":\n      case \"strike\":\n      case \"sub\":\n      case \"sup\":\n      case \"table\":\n      case \"tt\":\n      case \"u\":\n      case \"ul\":\n      case \"var\":\n        if (fragment) {\n          break;\n        }\n        do {\n          stack.pop();\n          current = stack.top;\n        } while(current.namespaceURI !== NAMESPACE.HTML &&\n            !isMathmlTextIntegrationPoint(current) &&\n            !isHTMLIntegrationPoint(current));\n\n        insertToken(t, value, arg3, arg4);  // reprocess\n        return;\n      }\n\n      // Any other start tag case goes here\n      current = (stack.elements.length===1 && fragment) ? fragmentContext :\n        stack.top;\n      if (current.namespaceURI === NAMESPACE.MATHML) {\n        adjustMathMLAttributes(arg3);\n      }\n      else if (current.namespaceURI === NAMESPACE.SVG) {\n        value = adjustSVGTagName(value);\n        adjustSVGAttributes(arg3);\n      }\n      adjustForeignAttributes(arg3);\n\n      insertForeignElement(value, arg3, current.namespaceURI);\n      if (arg4) { // the self-closing flag\n        if (value === 'script' && current.namespaceURI === NAMESPACE.SVG) {\n          // XXX deal with SVG scripts here\n        }\n        stack.pop();\n      }\n      return;\n\n    case 3: // ENDTAG\n      current = stack.top;\n      if (value === \"script\" &&\n        current.namespaceURI === NAMESPACE.SVG &&\n        current.localName === \"script\") {\n\n        stack.pop();\n\n        // XXX\n        // Deal with SVG scripts here\n      }\n      else {\n        // The any other end tag case\n        var i = stack.elements.length-1;\n        var node = stack.elements[i];\n        for(;;) {\n          if (node.localName.toLowerCase() === value) {\n            stack.popElement(node);\n            break;\n          }\n          node = stack.elements[--i];\n          // If non-html, keep looping\n          if (node.namespaceURI !== NAMESPACE.HTML)\n            continue;\n          // Otherwise process the end tag as html\n          parser(t, value, arg3, arg4);\n          break;\n        }\n      }\n      return;\n    }\n  }\n\n  /***\n   * Finally, this is the end of the HTMLParser() factory function.\n   * It returns the htmlparser object with the append() and end() methods.\n   */\n\n  // Sneak another method into the htmlparser object to allow us to run\n  // tokenizer tests.  This can be commented out in production code.\n  // This is a hook for testing the tokenizer. It has to be here\n  // because the tokenizer details are all hidden away within the closure.\n  // It should return an array of tokens generated while parsing the\n  // input string.\n  htmlparser.testTokenizer = function(input, initialState, lastStartTag, charbychar) {\n    var tokens = [];\n\n    switch(initialState) {\n    case \"PCDATA state\":\n      tokenizer = data_state;\n      break;\n    case \"RCDATA state\":\n      tokenizer = rcdata_state;\n      break;\n    case \"RAWTEXT state\":\n      tokenizer = rawtext_state;\n      break;\n    case \"PLAINTEXT state\":\n      tokenizer = plaintext_state;\n      break;\n    }\n\n    if (lastStartTag) {\n      lasttagname = lastStartTag;\n    }\n\n    insertToken = function(t, value, arg3, arg4) {\n      flushText();\n      switch(t) {\n      case 1: // TEXT\n        if (tokens.length > 0 &&\n          tokens[tokens.length-1][0] === \"Character\") {\n          tokens[tokens.length-1][1] += value;\n        }\n        else tokens.push([\"Character\", value]);\n        break;\n      case 4: // COMMENT\n        tokens.push([\"Comment\", value]);\n        break;\n      case 5: // DOCTYPE\n        tokens.push([\"DOCTYPE\", value,\n               arg3 === undefined ? null : arg3,\n               arg4 === undefined ? null : arg4,\n               !force_quirks]);\n        break;\n      case 2: // TAG\n        var attrs = Object.create(null);\n        for(var i = 0; i < arg3.length; i++) {\n          // XXX: does attribute order matter?\n          var a = arg3[i];\n          if (a.length === 1) {\n            attrs[a[0]] = \"\";\n          }\n          else {\n            attrs[a[0]] = a[1];\n          }\n        }\n        var token = [\"StartTag\", value, attrs];\n        if (arg4) token.push(true);\n        tokens.push(token);\n        break;\n      case 3: // ENDTAG\n        tokens.push([\"EndTag\", value]);\n        break;\n      case -1: // EOF\n        break;\n      }\n    };\n\n    if (!charbychar) {\n      this.parse(input, true);\n    }\n    else {\n      for(var i = 0; i < input.length; i++) {\n        this.parse(input[i]);\n      }\n      this.parse(\"\", true);\n    }\n    return tokens;\n  };\n\n  // Return the parser object from the HTMLParser() factory function\n  return htmlparser;\n}\n","\"use strict\";\nmodule.exports = DOMImplementation;\n\nvar Document = require('./Document');\nvar DocumentType = require('./DocumentType');\nvar HTMLParser = require('./HTMLParser');\nvar utils = require('./utils');\nvar xml = require('./xmlnames');\n\n// Each document must have its own instance of the domimplementation object\nfunction DOMImplementation(contextObject) {\n  this.contextObject = contextObject;\n}\n\n\n// Feature/version pairs that DOMImplementation.hasFeature() returns\n// true for.  It returns false for anything else.\nvar supportedFeatures = {\n  'xml': { '': true, '1.0': true, '2.0': true },   // DOM Core\n  'core': { '': true, '2.0': true },               // DOM Core\n  'html': { '': true, '1.0': true, '2.0': true} ,  // HTML\n  'xhtml': { '': true, '1.0': true, '2.0': true} , // HTML\n};\n\nDOMImplementation.prototype = {\n  hasFeature: function hasFeature(feature, version) {\n    var f = supportedFeatures[(feature || '').toLowerCase()];\n    return (f && f[version || '']) || false;\n  },\n\n  createDocumentType: function createDocumentType(qualifiedName, publicId, systemId) {\n    if (!xml.isValidQName(qualifiedName)) utils.InvalidCharacterError();\n\n    return new DocumentType(this.contextObject, qualifiedName, publicId, systemId);\n  },\n\n  createDocument: function createDocument(namespace, qualifiedName, doctype) {\n    //\n    // Note that the current DOMCore spec makes it impossible to\n    // create an HTML document with this function, even if the\n    // namespace and doctype are propertly set.  See this thread:\n    // http://lists.w3.org/Archives/Public/www-dom/2011AprJun/0132.html\n    //\n    var d = new Document(false, null);\n    var e;\n\n    if (qualifiedName)\n      e = d.createElementNS(namespace, qualifiedName);\n    else\n      e = null;\n\n    if (doctype) {\n      d.appendChild(doctype);\n    }\n\n    if (e) d.appendChild(e);\n    if (namespace === utils.NAMESPACE.HTML) {\n      d._contentType = 'application/xhtml+xml';\n    } else if (namespace === utils.NAMESPACE.SVG) {\n      d._contentType = 'image/svg+xml';\n    } else {\n      d._contentType = 'application/xml';\n    }\n\n    return d;\n  },\n\n  createHTMLDocument: function createHTMLDocument(titleText) {\n    var d = new Document(true, null);\n    d.appendChild(new DocumentType(d, 'html'));\n    var html = d.createElement('html');\n    d.appendChild(html);\n    var head = d.createElement('head');\n    html.appendChild(head);\n    if (titleText !== undefined) {\n      var title = d.createElement('title');\n      head.appendChild(title);\n      title.appendChild(d.createTextNode(titleText));\n    }\n    html.appendChild(d.createElement('body'));\n    d.modclock = 1; // Start tracking modifications\n    return d;\n  },\n\n  mozSetOutputMutationHandler: function(doc, handler) {\n    doc.mutationHandler = handler;\n  },\n\n  mozGetInputMutationHandler: function(doc) {\n    utils.nyi();\n  },\n\n  mozHTMLParser: HTMLParser,\n};\n","\"use strict\";\nvar URL = require('./URL');\nvar URLUtils = require('./URLUtils');\n\nmodule.exports = Location;\n\nfunction Location(window, href) {\n  this._window = window;\n  this._href = href;\n}\n\nLocation.prototype = Object.create(URLUtils.prototype, {\n  constructor: { value: Location },\n\n  // Special behavior when href is set\n  href: {\n    get: function() { return this._href; },\n    set: function(v) { this.assign(v); }\n  },\n\n  assign: { value: function(url) {\n    // Resolve the new url against the current one\n    // XXX:\n    // This is not actually correct. It should be resolved against\n    // the URL of the document of the script. For now, though, I only\n    // support a single window and there is only one base url.\n    // So this is good enough for now.\n    var current = new URL(this._href);\n    var newurl = current.resolve(url);\n\n    // Save the new url\n    this._href = newurl;\n\n    // Start loading the new document!\n    // XXX\n    // This is just something hacked together.\n    // The real algorithm is: http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#navigate\n  }},\n\n  replace: { value: function(url) {\n    // XXX\n    // Since we aren't tracking history yet, replace is the same as assign\n    this.assign(url);\n  }},\n\n  reload: { value: function() {\n    // XXX:\n    // Actually, the spec is a lot more complicated than this\n    this.assign(this.href);\n  }},\n\n  toString: { value: function() {\n    return this.href;\n  }}\n\n});\n","\"use strict\";\n\n// https://html.spec.whatwg.org/multipage/webappapis.html#navigatorid\nvar NavigatorID = Object.create(null, {\n  appCodeName: { value: \"Mozilla\" },\n  appName: { value: \"Netscape\" },\n  appVersion: { value: \"4.0\" },\n  platform: { value: \"\" },\n  product: { value: \"Gecko\" },\n  productSub: { value: \"20100101\" },\n  userAgent: { value: \"\" },\n  vendor: { value: \"\" },\n  vendorSub: { value: \"\" },\n  taintEnabled: { value: function() { return false; } }\n});\n\nmodule.exports = NavigatorID;\n","\"use strict\";\n\n// https://html.spec.whatwg.org/multipage/webappapis.html#windowtimers\nvar WindowTimers = {\n  setTimeout: setTimeout,\n  clearTimeout: clearTimeout,\n  setInterval: setInterval,\n  clearInterval: clearInterval\n};\n\nmodule.exports = WindowTimers;\n","\"use strict\";\nvar utils = require('./utils');\n\nexports = module.exports = {\n  CSSStyleDeclaration: require('./CSSStyleDeclaration'),\n  CharacterData: require('./CharacterData'),\n  Comment: require('./Comment'),\n  DOMException: require('./DOMException'),\n  DOMImplementation: require('./DOMImplementation'),\n  DOMTokenList: require('./DOMTokenList'),\n  Document: require('./Document'),\n  DocumentFragment: require('./DocumentFragment'),\n  DocumentType: require('./DocumentType'),\n  Element: require('./Element'),\n  HTMLParser: require('./HTMLParser'),\n  NamedNodeMap: require('./NamedNodeMap'),\n  Node: require('./Node'),\n  NodeList: require('./NodeList'),\n  NodeFilter: require('./NodeFilter'),\n  ProcessingInstruction: require('./ProcessingInstruction'),\n  Text: require('./Text'),\n  Window: require('./Window')\n};\n\nutils.merge(exports, require('./events'));\nutils.merge(exports, require('./htmlelts').elements);\nutils.merge(exports, require('./svg').elements);\n","\"use strict\";\nvar DOMImplementation = require('./DOMImplementation');\nvar EventTarget = require('./EventTarget');\nvar Location = require('./Location');\nvar utils = require('./utils');\n\nmodule.exports = Window;\n\nfunction Window(document) {\n  this.document = document || new DOMImplementation(null).createHTMLDocument(\"\");\n  this.document._scripting_enabled = true;\n  this.document.defaultView = this;\n  this.location = new Location(this, this.document._address || 'about:blank');\n}\n\nWindow.prototype = Object.create(EventTarget.prototype, {\n  console: { value: console },\n  history: { value: {\n    back: utils.nyi,\n    forward: utils.nyi,\n    go: utils.nyi\n  }},\n  navigator: { value: require(\"./NavigatorID\") },\n\n  // Self-referential properties\n  window: { get: function() { return this; }},\n  self: { get: function() { return this; }},\n  frames: { get: function() { return this; }},\n\n  // Self-referential properties for a top-level window\n  parent: { get: function() { return this; }},\n  top: { get: function() { return this; }},\n\n  // We don't support any other windows for now\n  length: { value: 0 },           // no frames\n  frameElement: { value: null },  // not part of a frame\n  opener: { value: null },        // not opened by another window\n\n  // The onload event handler.\n  // XXX: need to support a bunch of other event types, too,\n  // and have them interoperate with document.body.\n\n  onload: {\n    get: function() {\n      return this._getEventHandler(\"load\");\n    },\n    set: function(v) {\n      this._setEventHandler(\"load\", v);\n    }\n  },\n\n  // XXX This is a completely broken implementation\n  getComputedStyle: { value: function getComputedStyle(elt) {\n    return elt.style;\n  }}\n\n});\n\nutils.expose(require('./WindowTimers'), Window);\nutils.expose(require('./impl'), Window);\n","\"use strict\";\nvar DOMImplementation = require('./DOMImplementation');\nvar HTMLParser = require('./HTMLParser');\nvar Window = require('./Window');\nvar impl = require('./impl');\n\nexports.createDOMImplementation = function() {\n  return new DOMImplementation(null);\n};\n\nexports.createDocument = function(html, force) {\n  // Previous API couldn't let you pass '' as a document, and that\n  // yields a slightly different document than createHTMLDocument('')\n  // does.  The new `force` parameter lets you pass '' if you want to.\n  if (html || force) {\n    var parser = new HTMLParser();\n    parser.parse(html || '', true);\n    return parser.document();\n  }\n  return new DOMImplementation(null).createHTMLDocument(\"\");\n};\n\nexports.createIncrementalHTMLParser = function() {\n    var parser = new HTMLParser();\n    /** API for incremental parser. */\n    return {\n        /** Provide an additional chunk of text to be parsed. */\n        write: function(s) {\n          if (s.length > 0) {\n            parser.parse(s, false, function() { return true; });\n          }\n        },\n        /**\n         * Signal that we are done providing input text, optionally\n         * providing one last chunk as a parameter.\n         */\n        end: function(s) {\n          parser.parse(s || '', true, function() { return true; });\n        },\n        /**\n         * Performs a chunk of parsing work, returning at the end of\n         * the next token as soon as shouldPauseFunc() returns true.\n         * Returns true iff there is more work to do.\n         *\n         * For example:\n         * ```\n         *  var incrParser = domino.createIncrementalHTMLParser();\n         *  incrParser.end('...long html document...');\n         *  while (true) {\n         *    // Pause every 10ms\n         *    var start = Date.now();\n         *    var pauseIn10 = function() { return (Date.now() - start) >= 10; };\n         *    if (!incrParser.process(pauseIn10)) {\n         *      break;\n         *    }\n         *    ...yield to other tasks, do other housekeeping, etc...\n         *  }\n         * ```\n         */\n        process: function(shouldPauseFunc) {\n          return parser.parse('', false, shouldPauseFunc);\n        },\n        /**\n         * Returns the result of the incremental parse.  Valid after\n         * `this.end()` has been called and `this.process()` has returned\n         * false.\n         */\n        document: function() {\n          return parser.document();\n        },\n    };  \n};\n\nexports.createWindow = function(html, address) {\n  var document = exports.createDocument(html);\n  if (address !== undefined) { document._address = address; }\n  return new impl.Window(document);\n};\n\nexports.impl = impl;","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ɵsetRootDomAdapter as setRootDomAdapter} from '@angular/common';\nimport {ɵBrowserDomAdapter as BrowserDomAdapter} from '@angular/platform-browser';\n\nimport domino from './bundled-domino';\n\nexport function setDomTypes() {\n  // Make all Domino types available in the global env.\n  // NB: Any changes here should also be done in `packages/platform-server/init/src/shims.ts`.\n  Object.assign(globalThis, domino.impl);\n  (globalThis as any)['KeyboardEvent'] = domino.impl.Event;\n}\n\n/**\n * Parses a document string to a Document object.\n */\nexport function parseDocument(html: string, url = '/') {\n  let window = domino.createWindow(html, url);\n  let doc = window.document;\n  return doc;\n}\n\n/**\n * Serializes a document to string.\n */\nexport function serializeDocument(doc: Document): string {\n  return (doc as any).serialize();\n}\n\n/**\n * DOM Adapter for the server platform based on https://github.com/fgnass/domino.\n */\nexport class DominoAdapter extends BrowserDomAdapter {\n  static override makeCurrent() {\n    setDomTypes();\n    setRootDomAdapter(new DominoAdapter());\n  }\n\n  override readonly supportsDOMEvents = false;\n  private static defaultDoc: Document;\n\n  override createHtmlDocument(): Document {\n    return parseDocument('<html><head><title>fakeTitle</title></head><body></body></html>');\n  }\n\n  override getDefaultDocument(): Document {\n    if (!DominoAdapter.defaultDoc) {\n      DominoAdapter.defaultDoc = domino.createDocument();\n    }\n    return DominoAdapter.defaultDoc;\n  }\n\n  override isElementNode(node: any): boolean {\n    return node ? node.nodeType === DominoAdapter.defaultDoc.ELEMENT_NODE : false;\n  }\n  override isShadowRoot(node: any): boolean {\n    return node.shadowRoot == node;\n  }\n\n  /** @deprecated No longer being used in Ivy code. To be removed in version 14. */\n  override getGlobalEventTarget(doc: Document, target: string): EventTarget | null {\n    if (target === 'window') {\n      return doc.defaultView;\n    }\n    if (target === 'document') {\n      return doc;\n    }\n    if (target === 'body') {\n      return doc.body;\n    }\n    return null;\n  }\n\n  override getBaseHref(doc: Document): string {\n    // TODO(alxhub): Need relative path logic from BrowserDomAdapter here?\n    return doc.documentElement!.querySelector('base')?.getAttribute('href') || '';\n  }\n\n  override dispatchEvent(el: Node, evt: any) {\n    el.dispatchEvent(evt);\n\n    // Dispatch the event to the window also.\n    const doc = el.ownerDocument || el;\n    const win = (doc as any).defaultView;\n    if (win) {\n      win.dispatchEvent(evt);\n    }\n  }\n\n  override getUserAgent(): string {\n    return 'Fake user agent';\n  }\n\n  override getCookie(name: string): string {\n    throw new Error('getCookie has not been implemented');\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\n\n/**\n * Config object passed to initialize the platform.\n *\n * @publicApi\n */\nexport interface PlatformConfig {\n  /**\n   * The initial DOM to use to bootstrap the server application.\n   * @default create a new DOM using Domino\n   */\n  document?: string;\n  /**\n   * The URL for the current application state. This is used for initializing\n   * the platform's location. `protocol`, `hostname`, and `port` will be\n   * overridden if `baseUrl` is set.\n   * @default none\n   */\n  url?: string;\n}\n\n/**\n * The DI token for setting the initial config for the platform.\n *\n * @publicApi\n */\nexport const INITIAL_CONFIG = new InjectionToken<PlatformConfig>('Server.INITIAL_CONFIG');\n\n/**\n * A function that will be executed when calling `renderApplication` or\n * `renderModule` just before current platform state is rendered to string.\n *\n * @publicApi\n */\nexport const BEFORE_APP_SERIALIZED = new InjectionToken<ReadonlyArray<() => void | Promise<void>>>(\n  'Server.RENDER_MODULE_HOOK',\n);\n\nexport const ENABLE_DOM_EMULATION = new InjectionToken<boolean>('ENABLE_DOM_EMULATION');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {DOCUMENT} from '@angular/common';\nimport {\n  inject,\n  Inject,\n  Injectable,\n  Injector,\n  ɵstartMeasuring as startMeasuring,\n  ɵstopMeasuring as stopMeasuring,\n} from '@angular/core';\n\nimport {serializeDocument} from './domino_adapter';\nimport {ENABLE_DOM_EMULATION} from './tokens';\n\n/**\n * Representation of the current platform state.\n *\n * @publicApi\n */\n@Injectable()\nexport class PlatformState {\n  /* @internal */\n  _enableDomEmulation = enableDomEmulation(inject(Injector));\n\n  constructor(@Inject(DOCUMENT) private _doc: any) {}\n\n  /**\n   * Renders the current state of the platform to string.\n   */\n  renderToString(): string {\n    if (ngDevMode && !this._enableDomEmulation && !window?.document) {\n      throw new Error('Disabled DOM emulation should only run in browser environments');\n    }\n\n    const measuringLabel = 'renderToString';\n    startMeasuring(measuringLabel);\n    const rendered = this._enableDomEmulation\n      ? serializeDocument(this._doc)\n      : // In the case we run/test the platform-server in a browser environment\n        this._doc.documentElement.outerHTML;\n    stopMeasuring(measuringLabel);\n    return rendered;\n  }\n\n  /**\n   * Returns the current DOM state.\n   */\n  getDocument(): any {\n    return this._doc;\n  }\n}\n\nexport function enableDomEmulation(injector: Injector): boolean {\n  return injector.get(ENABLE_DOM_EMULATION, true);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {PlatformLocation, XhrFactory} from '@angular/common';\nimport {\n  HttpEvent,\n  HttpHandlerFn,\n  HttpRequest,\n  ɵHTTP_ROOT_INTERCEPTOR_FNS as HTTP_ROOT_INTERCEPTOR_FNS,\n} from '@angular/common/http';\nimport {inject, Injectable, Provider} from '@angular/core';\nimport {Observable} from 'rxjs';\n\n@Injectable()\nexport class ServerXhr implements XhrFactory {\n  private xhrImpl: typeof import('xhr2') | undefined;\n\n  // The `xhr2` dependency has a side-effect of accessing and modifying a\n  // global scope. Loading `xhr2` dynamically allows us to delay the loading\n  // and start the process once the global scope is established by the underlying\n  // server platform (via shims, etc).\n  private async ɵloadImpl(): Promise<void> {\n    if (!this.xhrImpl) {\n      const {default: xhr} = await import('xhr2');\n      this.xhrImpl = xhr;\n    }\n  }\n\n  build(): XMLHttpRequest {\n    const impl = this.xhrImpl;\n    if (!impl) {\n      throw new Error('Unexpected state in ServerXhr: XHR implementation is not loaded.');\n    }\n\n    return new impl.XMLHttpRequest();\n  }\n}\n\nfunction relativeUrlsTransformerInterceptorFn(\n  request: HttpRequest<unknown>,\n  next: HttpHandlerFn,\n): Observable<HttpEvent<unknown>> {\n  const platformLocation = inject(PlatformLocation);\n  const {href, protocol, hostname, port} = platformLocation;\n  if (!protocol.startsWith('http')) {\n    return next(request);\n  }\n\n  let urlPrefix = `${protocol}//${hostname}`;\n  if (port) {\n    urlPrefix += `:${port}`;\n  }\n\n  const baseHref = platformLocation.getBaseHrefFromDOM() || href;\n  const baseUrl = new URL(baseHref, urlPrefix);\n  const newUrl = new URL(request.url, baseUrl).toString();\n\n  return next(request.clone({url: newUrl}));\n}\n\nexport const SERVER_HTTP_PROVIDERS: Provider[] = [\n  {provide: XhrFactory, useClass: ServerXhr},\n  {\n    provide: HTTP_ROOT_INTERCEPTOR_FNS,\n    useValue: relativeUrlsTransformerInterceptorFn,\n    multi: true,\n  },\n];\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n  DOCUMENT,\n  LocationChangeEvent,\n  LocationChangeListener,\n  PlatformLocation,\n  ɵgetDOM as getDOM,\n} from '@angular/common';\nimport {Inject, Injectable, Optional, ɵWritable as Writable} from '@angular/core';\nimport {Subject} from 'rxjs';\n\nimport {INITIAL_CONFIG, PlatformConfig} from './tokens';\n\nconst RESOLVE_PROTOCOL = 'resolve:';\n\nfunction parseUrl(urlStr: string): {\n  hostname: string;\n  protocol: string;\n  port: string;\n  pathname: string;\n  search: string;\n  hash: string;\n} {\n  const {hostname, protocol, port, pathname, search, hash} = new URL(\n    urlStr,\n    RESOLVE_PROTOCOL + '//',\n  );\n\n  return {\n    hostname,\n    protocol: protocol === RESOLVE_PROTOCOL ? '' : protocol,\n    port,\n    pathname,\n    search,\n    hash,\n  };\n}\n\n/**\n * Server-side implementation of URL state. Implements `pathname`, `search`, and `hash`\n * but not the state stack.\n */\n@Injectable()\nexport class ServerPlatformLocation implements PlatformLocation {\n  public readonly href: string = '/';\n  public readonly hostname: string = '/';\n  public readonly protocol: string = '/';\n  public readonly port: string = '/';\n  public readonly pathname: string = '/';\n  public readonly search: string = '';\n  public readonly hash: string = '';\n  private _hashUpdate = new Subject<LocationChangeEvent>();\n\n  constructor(\n    @Inject(DOCUMENT) private _doc: any,\n    @Optional() @Inject(INITIAL_CONFIG) _config: any,\n  ) {\n    const config = _config as PlatformConfig | null;\n    if (!config) {\n      return;\n    }\n    if (config.url) {\n      const url = parseUrl(config.url);\n      this.protocol = url.protocol;\n      this.hostname = url.hostname;\n      this.port = url.port;\n      this.pathname = url.pathname;\n      this.search = url.search;\n      this.hash = url.hash;\n      this.href = _doc.location.href;\n    }\n  }\n\n  getBaseHrefFromDOM(): string {\n    return getDOM().getBaseHref(this._doc)!;\n  }\n\n  onPopState(fn: LocationChangeListener): VoidFunction {\n    // No-op: a state stack is not implemented, so\n    // no events will ever come.\n    return () => {};\n  }\n\n  onHashChange(fn: LocationChangeListener): VoidFunction {\n    const subscription = this._hashUpdate.subscribe(fn);\n    return () => subscription.unsubscribe();\n  }\n\n  get url(): string {\n    return `${this.pathname}${this.search}${this.hash}`;\n  }\n\n  private setHash(value: string, oldUrl: string) {\n    if (this.hash === value) {\n      // Don't fire events if the hash has not changed.\n      return;\n    }\n    (this as Writable<this>).hash = value;\n    const newUrl = this.url;\n    queueMicrotask(() =>\n      this._hashUpdate.next({\n        type: 'hashchange',\n        state: null,\n        oldUrl,\n        newUrl,\n      } as LocationChangeEvent),\n    );\n  }\n\n  replaceState(state: any, title: string, newUrl: string): void {\n    const oldUrl = this.url;\n    const parsedUrl = parseUrl(newUrl);\n    (this as Writable<this>).pathname = parsedUrl.pathname;\n    (this as Writable<this>).search = parsedUrl.search;\n    this.setHash(parsedUrl.hash, oldUrl);\n  }\n\n  pushState(state: any, title: string, newUrl: string): void {\n    this.replaceState(state, title, newUrl);\n  }\n\n  forward(): void {\n    throw new Error('Not implemented');\n  }\n\n  back(): void {\n    throw new Error('Not implemented');\n  }\n\n  // History API isn't available on server, therefore return undefined\n  getState(): unknown {\n    return undefined;\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {DOCUMENT, ɵgetDOM as getDOM} from '@angular/common';\nimport {Inject, Injectable, type ListenerOptions} from '@angular/core';\nimport {EventManagerPlugin} from '@angular/platform-browser';\n\n@Injectable()\nexport class ServerEventManagerPlugin extends EventManagerPlugin {\n  constructor(@Inject(DOCUMENT) private doc: any) {\n    super(doc);\n  }\n\n  // Handle all events on the server.\n  override supports(eventName: string) {\n    return true;\n  }\n\n  override addEventListener(\n    element: HTMLElement,\n    eventName: string,\n    handler: Function,\n    options?: ListenerOptions,\n  ): Function {\n    return getDOM().onAndCancel(element, eventName, handler, options);\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {DOCUMENT} from '@angular/common';\nimport {\n  APP_ID,\n  inject,\n  InjectionToken,\n  Injector,\n  Provider,\n  TransferState,\n  ɵstartMeasuring as startMeasuring,\n  ɵstopMeasuring as stopMeasuring,\n} from '@angular/core';\n\nimport {BEFORE_APP_SERIALIZED} from './tokens';\n\n// Tracks whether the server-side application state for a given app ID has been serialized already.\nexport const TRANSFER_STATE_SERIALIZED_FOR_APPID = new InjectionToken<Set<string>>(\n  typeof ngDevMode === 'undefined' || ngDevMode ? 'TRANSFER_STATE_SERIALIZED_FOR_APPID' : '',\n  {\n    providedIn: 'platform',\n    factory: () => new Set(),\n  },\n);\n\nexport const TRANSFER_STATE_SERIALIZATION_PROVIDERS: Provider[] = [\n  {\n    provide: BEFORE_APP_SERIALIZED,\n    useFactory: serializeTransferStateFactory,\n    multi: true,\n  },\n];\n\n/** TODO: Move this to a utils folder and convert to use SafeValues. */\nexport function createScript(\n  doc: Document,\n  textContent: string,\n  nonce: string | null,\n): HTMLScriptElement {\n  const script = doc.createElement('script');\n  script.textContent = textContent;\n  if (nonce) {\n    script.setAttribute('nonce', nonce);\n  }\n\n  return script;\n}\n\nexport function warnIfStateTransferHappened(injector: Injector): void {\n  const appId = injector.get(APP_ID);\n  const appIdsWithTransferStateSerialized = injector.get(TRANSFER_STATE_SERIALIZED_FOR_APPID);\n\n  if (appIdsWithTransferStateSerialized.has(appId)) {\n    console.warn(\n      `Angular detected an incompatible configuration, which causes duplicate serialization of the server-side application state.\\n\\n` +\n        `This can happen if the server providers have been provided more than once using different mechanisms. For example:\\n\\n` +\n        `  imports: [ServerModule], // Registers server providers\\n` +\n        `  providers: [provideServerRendering()] // Also registers server providers\\n\\n` +\n        `To fix this, ensure that the \\`provideServerRendering()\\` function is the only provider used and remove the other(s).`,\n    );\n  }\n  appIdsWithTransferStateSerialized.add(appId);\n}\n\nfunction serializeTransferStateFactory() {\n  const doc = inject(DOCUMENT);\n  const appId = inject(APP_ID);\n  const transferStore = inject(TransferState);\n  const injector = inject(Injector);\n\n  return () => {\n    const measuringLabel = 'serializeTransferStateFactory';\n    startMeasuring(measuringLabel);\n    // The `.toJSON` here causes the `onSerialize` callbacks to be called.\n    // These callbacks can be used to provide the value for a given key.\n    const content = transferStore.toJson();\n\n    if (transferStore.isEmpty) {\n      // The state is empty, nothing to transfer,\n      // avoid creating an extra `<script>` tag in this case.\n      return;\n    }\n\n    if (typeof ngDevMode !== 'undefined' && ngDevMode) {\n      warnIfStateTransferHappened(injector);\n    }\n\n    const script = createScript(\n      doc,\n      content,\n      /**\n       * `nonce` is not required for 'application/json'\n       * See: https://html.spec.whatwg.org/multipage/scripting.html#attr-script-type\n       */\n      null,\n    );\n    script.id = appId + '-state';\n    script.setAttribute('type', 'application/json');\n\n    // It is intentional that we add the script at the very bottom. Angular CLI script tags for\n    // bundles are always `type=\"module\"`. These are deferred by default and cause the\n    // transfer data to be queried only after the browser has finished parsing the DOM.\n    doc.body.appendChild(script);\n    stopMeasuring(measuringLabel);\n  };\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n  DOCUMENT,\n  PlatformLocation,\n  ViewportScroller,\n  ɵgetDOM as getDOM,\n  ɵNullViewportScroller as NullViewportScroller,\n  ɵPLATFORM_SERVER_ID as PLATFORM_SERVER_ID,\n} from '@angular/common';\nimport {\n  createPlatformFactory,\n  Injector,\n  NgModule,\n  Optional,\n  PLATFORM_ID,\n  PLATFORM_INITIALIZER,\n  platformCore,\n  PlatformRef,\n  Provider,\n  StaticProvider,\n  Testability,\n  ɵALLOW_MULTIPLE_PLATFORMS as ALLOW_MULTIPLE_PLATFORMS,\n  ɵsetDocument,\n  ɵTESTABILITY as TESTABILITY,\n} from '@angular/core';\nimport {\n  BrowserModule,\n  EVENT_MANAGER_PLUGINS,\n  ɵBrowserDomAdapter as BrowserDomAdapter,\n} from '@angular/platform-browser';\n\nimport {DominoAdapter, parseDocument} from './domino_adapter';\nimport {SERVER_HTTP_PROVIDERS} from './http';\nimport {ServerPlatformLocation} from './location';\nimport {enableDomEmulation, PlatformState} from './platform_state';\nimport {ServerEventManagerPlugin} from './server_events';\nimport {INITIAL_CONFIG, PlatformConfig} from './tokens';\nimport {TRANSFER_STATE_SERIALIZATION_PROVIDERS} from './transfer_state';\n\nexport const INTERNAL_SERVER_PLATFORM_PROVIDERS: StaticProvider[] = [\n  {provide: DOCUMENT, useFactory: _document, deps: [Injector]},\n  {provide: PLATFORM_ID, useValue: PLATFORM_SERVER_ID},\n  {provide: PLATFORM_INITIALIZER, useFactory: initDominoAdapter, multi: true, deps: [Injector]},\n  {\n    provide: PlatformLocation,\n    useClass: ServerPlatformLocation,\n    deps: [DOCUMENT, [Optional, INITIAL_CONFIG]],\n  },\n  {provide: PlatformState, deps: [DOCUMENT]},\n  // Add special provider that allows multiple instances of platformServer* to be created.\n  {provide: ALLOW_MULTIPLE_PLATFORMS, useValue: true},\n];\n\nfunction initDominoAdapter(injector: Injector) {\n  const _enableDomEmulation = enableDomEmulation(injector);\n  return () => {\n    if (_enableDomEmulation) {\n      DominoAdapter.makeCurrent();\n    } else {\n      BrowserDomAdapter.makeCurrent();\n    }\n  };\n}\n\nexport const SERVER_RENDER_PROVIDERS: Provider[] = [\n  {provide: EVENT_MANAGER_PLUGINS, multi: true, useClass: ServerEventManagerPlugin},\n];\n\nexport const PLATFORM_SERVER_PROVIDERS: Provider[] = [\n  TRANSFER_STATE_SERIALIZATION_PROVIDERS,\n  SERVER_RENDER_PROVIDERS,\n  SERVER_HTTP_PROVIDERS,\n  {provide: Testability, useValue: null}, // Keep for backwards-compatibility.\n  {provide: TESTABILITY, useValue: null},\n  {provide: ViewportScroller, useClass: NullViewportScroller},\n];\n\n/**\n * The ng module for the server.\n *\n * @publicApi\n */\n@NgModule({\n  exports: [BrowserModule],\n  providers: PLATFORM_SERVER_PROVIDERS,\n})\nexport class ServerModule {}\n\nfunction _document(injector: Injector) {\n  const config: PlatformConfig | null = injector.get(INITIAL_CONFIG, null);\n  const _enableDomEmulation = enableDomEmulation(injector);\n  let document: Document;\n  if (config && config.document) {\n    document =\n      typeof config.document === 'string'\n        ? _enableDomEmulation\n          ? parseDocument(config.document, config.url)\n          : window.document\n        : config.document;\n  } else {\n    document = getDOM().createHtmlDocument();\n  }\n  // Tell ivy about the global document\n  ɵsetDocument(document);\n  return document;\n}\n\n/**\n * @publicApi\n */\nexport function platformServer(extraProviders?: StaticProvider[] | undefined): PlatformRef {\n  if (typeof ngServerMode === 'undefined') {\n    globalThis['ngServerMode'] = true;\n  }\n\n  const platform = createPlatformFactory(\n    platformCore,\n    'server',\n    INTERNAL_SERVER_PLATFORM_PROVIDERS,\n  )(extraProviders);\n\n  platform.onDestroy(() => {\n    globalThis['ngServerMode'] = undefined;\n  });\n\n  return platform;\n}\n"],"names":["event","i","n","find","el","value","HTMLElement","HTMLUnknownElement","HTMLFormElement","SVGElement","root","URL","insertToken","doc","BrowserDomAdapter","setRootDomAdapter","startMeasuring","stopMeasuring","HTTP_ROOT_INTERCEPTOR_FNS","getDOM","PLATFORM_SERVER_ID","ALLOW_MULTIPLE_PLATFORMS","TESTABILITY","NullViewportScroller","ɵsetDocument"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52]}